{
    "$schema": "../../node_modules/@angular-devkit/schematics/collection-schema.json",
    "schematics": {
        "migrate-dynamic-form": {
            "description": "Migra DynamicForm v18→v19: construtores → plain objects, enums → string literals, [fields] → [configs], Editor → provideEditorField(), estilos → angular.json",
            "factory": "./migrations/migrate-dynamic-form-v19/index#migrate"
        },
        "migrate-steps-to-stepper": {
            "description": "Migra Steps para Stepper: <s-steps> → <s-stepper>, import '@seniorsistemas/angular-components/steps' → 'stepper', StepsComponent → StepperComponent, e remove StepsModule (standalone) substituindo por StepperComponent",
            "factory": "./migrations/migrate-steps-to-stepper/index#migrate"
        },
        "migrate-s-chips-outputs": {
            "description": "Renomeia outputs legados do s-chips: onAdd→added, onRemove→removed, onChipClick→chipClicked, onFocus→focused, onBlur→focusLost",
            "factory": "./migrations/migrate-s-chips-outputs/index#migrate"
        },
        "migrate-p-datepicker": {
            "description": "Migra p-datepicker (PrimeNG) para s-datepicker (@seniorsistemas/angular-components)",
            "factory": "./migrations/migrate-p-datepicker/index#migrate"
        },
        "migrate-p-editor": {
            "description": "Migra p-editor (PrimeNG/Quill) para s-editor (@seniorsistemas/angular-components): renomeia tag e eventos, remove atributos sem equivalente, limpa configs legadas do DynamicForm e atualiza dependências do package.json",
            "factory": "./migrations/migrate-p-editor/index#migrate"
        },
        "migrate-fieldset-body-template": {
            "description": "Envolve o conteúdo projetado do s-fieldset em <ng-template sTemplate=\"body\">, mantendo templates de slot como sTemplate=\"header\" fora do body, e garante o TemplateDirective no escopo do componente (standalone ou via NgModule)",
            "factory": "./migrations/migrate-fieldset-body-template/index#migrate"
        },
        "migrate-deprecated-selectors": {
            "description": "Troca os selectors depreciados (removidos na v20) pelos novos em templates e estilos: s-sidebar→s-drawer, s-slide-panel→s-slide-in-bar, s-steps→s-stepper, s-product-header→s-topbar, s-ia-insight→s-insights, s-file-upload→s-file-picker, s-text-area-ia→s-content-generator, s-breadcrumb→s-dynamic-breadcrumb",
            "factory": "./migrations/migrate-deprecated-selectors/index#migrate",
            "schema": "./schema/scope.schema.json"
        },
        "migrate-deprecated-imports": {
            "description": "Troca os pacotes alias depreciados (removidos na v20) e seus símbolos pelos novos: sidebar→drawer, slide-panel→slide-in-bar, steps→stepper, product-header→topbar, ia-insight→insights, text-area-ia→content-generator, file-upload→file-picker",
            "factory": "./migrations/migrate-deprecated-imports/index#migrate",
            "schema": "./schema/scope.schema.json"
        },
        "migrate-deprecated-apis": {
            "description": "Migra APIs depreciadas com substituto direto: (onCodeChange)→(codeChange), (changedImage)→(imageChange), sNumberInput/sBignumberInput/sLocalizedNumberInput (e as respectivas *Directive/*Module)→sNumericMask/NumericMaskDirective com os defaults antigos explícitos, [scale]→[minDecimalPlaces]/[maxDecimalPlaces], [thousandsSeparator]→[thousandSeparator], remoção de [alignTo], NumberAlignmentOption→'left'/'right', pipes localizedNumber/localizedCurrency→localizedBignumber, icon→selectedIcon/unselectedIcon no rating-scale e BreadcrumbModule→DynamicBreadcrumbComponent. Avisa o que não dá para converter com segurança.",
            "factory": "./migrations/migrate-deprecated-apis/index#migrate",
            "schema": "./schema/scope.schema.json"
        },
        "migrate-deprecated-dynamic-form": {
            "description": "Migra os tipos de campo e propriedades depreciados do dynamic-form: integer vira number (scale 0, sem negativos nem autoClear), textAreaIA vira contentGenerator, calendarLocaleOptions vira dateFormat/hourFormat, remove priority/appendTo e troca [fields] por [configs] (DynamicStructure[]). O tipo money é estável e não é migrado. Execute depois de migrate-dynamic-form.",
            "factory": "./migrations/migrate-deprecated-dynamic-form/index#migrate",
            "schema": "./schema/scope.schema.json"
        },
        "migrate-deprecated-datepicker": {
            "description": "Remove o uso das diretivas depreciadas sCalendarMask (CalendarMaskDirective) e sDatepickerNoPeriodTab (DatepickerNoPeriodTabDirective) dos templates e dos imports, e avisa a troca de p-calendar por s-datepicker.",
            "factory": "./migrations/migrate-deprecated-datepicker/index#migrate",
            "schema": "./schema/scope.schema.json"
        },
        "migrate-modules-to-standalone": {
            "description": "Troca os NgModules da biblioteca (ButtonModule, TableModule, LocaleModule etc.) pelos componentes, diretivas e pipes standalone que eles reexportam, e converte forRoot() em provideAngularComponents()/provideLocale().",
            "factory": "./migrations/migrate-modules-to-standalone/index#migrate",
            "schema": "./schema/scope.schema.json"
        },
        "migrate-app-to-standalone": {
            "description": "Wrapper do schematic oficial do Angular (@angular/core:standalone): converte o app para standalone (convert-to-standalone, prune-ng-modules e standalone-bootstrap, nessa ordem). A migração é feita pelo Angular, não pelo angular-components.",
            "factory": "./migrations/migrate-app-to-standalone/index#migrate",
            "schema": "./schema/app-standalone.schema.json"
        },
        "migrate-v20": {
            "description": "Prepara o projeto para a v20: pergunta quais migrações executar (com \"Marcar todos\") e roda seletores, pacotes alias, APIs depreciadas, dynamic-form, datepicker e módulos → standalone. Não pergunta sobre o app standalone: ao final avisa que existe o schematic migrate-app-to-standalone (migrações nativas do Angular, feitas pelo Angular). Aceita --all, --items, --skip, --path e --project para uso sem terminal interativo. Pelo ng generate, atualize a lib antes: o código migrado usa APIs novas (provideLocale, provideAngularComponents).",
            "factory": "./migrations/migrate-v20/index#migrate",
            "schema": "./schema/migrate-v20.schema.json"
        }
    }
}
