@nikkory/vibe-engine 4.0.2 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/cli/batch-command.d.ts.map +1 -0
- package/dist/cli/generate-command.d.ts.map +1 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/logo.d.ts.map +1 -0
- package/dist/constants/ComponentTypes.d.ts.map +1 -0
- package/dist/constants/DesignSystems.d.ts.map +1 -0
- package/dist/constants/Frameworks.d.ts.map +1 -0
- package/dist/constants/Tiers.d.ts.map +1 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/converters/index.d.ts.map +1 -0
- package/dist/converters/section-converter.d.ts.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/resolution/basic/groups-basic.d.ts.map +1 -0
- package/dist/resolution/basic/index.d.ts.map +1 -0
- package/dist/resolution/basic/intents-basic.d.ts.map +1 -0
- package/dist/resolution/basic/presets-basic.d.ts.map +1 -0
- package/dist/resolution/basic/resolver-basic.d.ts.map +1 -0
- package/dist/resolution/basic/shorthands-basic.d.ts.map +1 -0
- package/dist/resolution/core/groups-core.d.ts.map +1 -0
- package/dist/resolution/core/index.d.ts.map +1 -0
- package/dist/resolution/core/intents-core.d.ts.map +1 -0
- package/dist/resolution/core/presets-core.d.ts.map +1 -0
- package/dist/resolution/core/resolver-core.d.ts.map +1 -0
- package/dist/resolution/core/shorthands-core.d.ts.map +1 -0
- package/dist/resolution/core/types-core.d.ts.map +1 -0
- package/dist/resolution/debugger.d.ts.map +1 -0
- package/dist/resolution/demo.d.ts.map +1 -0
- package/dist/resolution/enterprise/index.d.ts.map +1 -0
- package/dist/resolution/enterprise/metrics.d.ts.map +1 -0
- package/dist/resolution/enterprise/resolver-enterprise.d.ts.map +1 -0
- package/dist/resolution/examples.d.ts.map +1 -0
- package/dist/resolution/groups/experience-group.d.ts.map +1 -0
- package/dist/resolution/groups/index.d.ts.map +1 -0
- package/dist/resolution/groups/layout-group.d.ts.map +1 -0
- package/dist/resolution/groups/motion-group.d.ts.map +1 -0
- package/dist/resolution/groups/visual-group.d.ts.map +1 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/intents/button-intents.d.ts.map +1 -0
- package/dist/resolution/intents/card-intents.d.ts.map +1 -0
- package/dist/resolution/intents/feedback-intents.d.ts.map +1 -0
- package/dist/resolution/intents/index.d.ts.map +1 -0
- package/dist/resolution/intents/input-intents.d.ts.map +1 -0
- package/dist/resolution/intents/mood-modifiers.d.ts.map +1 -0
- package/dist/resolution/performance.d.ts.map +1 -0
- package/dist/resolution/presets/button-presets.d.ts.map +1 -0
- package/dist/resolution/presets/card-presets.d.ts.map +1 -0
- package/dist/resolution/presets/data-display-presets.d.ts.map +1 -0
- package/dist/resolution/presets/feedback-presets.d.ts.map +1 -0
- package/dist/resolution/presets/form-presets.d.ts.map +1 -0
- package/dist/resolution/presets/index.d.ts.map +1 -0
- package/dist/resolution/presets/input-presets.d.ts.map +1 -0
- package/dist/resolution/presets/nav-presets.d.ts.map +1 -0
- package/dist/resolution/presets/overlay-presets.d.ts.map +1 -0
- package/dist/resolution/presets/preset-registry.d.ts.map +1 -0
- package/dist/resolution/resolveProps.d.ts.map +1 -0
- package/dist/resolution/shorthand/feel-mappings.d.ts.map +1 -0
- package/dist/resolution/shorthand/index.d.ts.map +1 -0
- package/dist/resolution/shorthand/look-mappings.d.ts.map +1 -0
- package/dist/resolution/shorthand/spacing-mappings.d.ts.map +1 -0
- package/dist/resolution/shorthand/surface-mappings.d.ts.map +1 -0
- package/dist/resolution/standard/groups-standard.d.ts.map +1 -0
- package/dist/resolution/standard/index.d.ts.map +1 -0
- package/dist/resolution/standard/intents-standard.d.ts.map +1 -0
- package/dist/resolution/standard/presets-standard.d.ts.map +1 -0
- package/dist/resolution/standard/resolver-standard.d.ts.map +1 -0
- package/dist/resolution/standard/shorthands-standard.d.ts.map +1 -0
- package/dist/resolution/standard/validators.d.ts.map +1 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/validators/factor24-validator.d.ts.map +1 -0
- package/dist/resolution/validators/index.d.ts.map +1 -0
- package/dist/scripts/generate-react-library.d.ts.map +1 -0
- package/dist/scripts/write-react-library.d.ts.map +1 -0
- package/dist/storage/cloud-sync.d.ts.map +1 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/local-storage.d.ts.map +1 -0
- package/dist/storage/section-storage.d.ts.map +1 -0
- package/dist/styling/StyleGenerator.d.ts.map +1 -0
- package/dist/styling/TokenStyleResolver.d.ts.map +1 -0
- package/dist/styling/factor-migration.d.ts.map +1 -0
- package/dist/styling/factor-validators.d.ts.map +1 -0
- package/dist/styling/factors-1-6.d.ts.map +1 -0
- package/dist/styling/factors-12-16.d.ts.map +1 -0
- package/dist/styling/factors-17-24.d.ts.map +1 -0
- package/dist/styling/factors-all.d.ts.map +1 -0
- package/dist/styling/factors.d.ts.map +1 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/types.d.ts.map +1 -0
- package/dist/tokens/schema.d.ts.map +1 -0
- package/dist/types/Option.d.ts.map +1 -0
- package/dist/types/Result.d.ts.map +1 -0
- package/dist/types/algorithm-engine.types.d.ts.map +1 -0
- package/dist/types/granularity/base.types.d.ts.map +1 -0
- package/dist/types/granularity/config.types.d.ts.map +1 -0
- package/dist/types/granularity/factors.types.d.ts.map +1 -0
- package/dist/types/granularity/index.d.ts.map +1 -0
- package/dist/types/granularity/slot.types.d.ts.map +1 -0
- package/dist/types/granularity/template.types.d.ts.map +1 -0
- package/dist/types/granularity-levels/atom.config.d.ts.map +1 -0
- package/dist/types/granularity-levels/component.config.d.ts.map +1 -0
- package/dist/types/granularity-levels/index.d.ts.map +1 -0
- package/dist/types/granularity-levels/layout.config.d.ts.map +1 -0
- package/dist/types/granularity-levels/page.config.d.ts.map +1 -0
- package/dist/types/granularity-levels/section.config.d.ts.map +1 -0
- package/dist/types/granularity-levels/template.config.d.ts.map +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/section-slot.types.d.ts.map +1 -0
- package/dist/types/section-storage.types.d.ts.map +1 -0
- package/dist/types/section-template.types.d.ts.map +1 -0
- package/dist/types/section.types.d.ts.map +1 -0
- package/dist/ui-studio/ComponentGenerator.d.ts.map +1 -0
- package/dist/ui-studio/composition/FactorPropagator.d.ts.map +1 -0
- package/dist/ui-studio/composition/PageGenerator.d.ts.map +1 -0
- package/dist/ui-studio/composition/SectionGenerator.d.ts.map +1 -0
- package/dist/ui-studio/composition/SlotResolver.d.ts.map +1 -0
- package/dist/ui-studio/composition/section-orchestrator.d.ts.map +1 -0
- package/dist/ui-studio/granularity/FactorCascade.d.ts.map +1 -0
- package/dist/ui-studio/granularity/GranularityGenerator.d.ts.map +1 -0
- package/dist/ui-studio/granularity/RecursiveGenerator.d.ts.map +1 -0
- package/dist/ui-studio/index.d.ts.map +1 -0
- package/dist/ui-studio/matrix/ClassMapper.d.ts.map +1 -0
- package/dist/ui-studio/matrix/MatrixResolver.d.ts.map +1 -0
- package/dist/ui-studio/matrix/types.d.ts.map +1 -0
- package/dist/ui-studio/presets/IndustryDetector.d.ts.map +1 -0
- package/dist/ui-studio/presets/component-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/factor-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/granularity-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/index.d.ts.map +1 -0
- package/dist/ui-studio/presets/industries.d.ts.map +1 -0
- package/dist/ui-studio/presets/layout-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/matrix-groups.d.ts.map +1 -0
- package/dist/ui-studio/presets/page-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/registry.constants.d.ts.map +1 -0
- package/dist/ui-studio/presets/registry.types.d.ts.map +1 -0
- package/dist/ui-studio/presets/section-defaults.d.ts.map +1 -0
- package/dist/ui-studio/presets/section-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/section-registry.defaults.d.ts.map +1 -0
- package/dist/ui-studio/presets/section-registry.helpers.d.ts.map +1 -0
- package/dist/ui-studio/presets/section-registry.types.d.ts.map +1 -0
- package/dist/ui-studio/presets/template-registry.d.ts.map +1 -0
- package/dist/ui-studio/presets/variants.d.ts.map +1 -0
- package/dist/ui-studio/registries/components-registry.d.ts.map +1 -0
- package/dist/ui-studio/registries/design-systems-registry.d.ts.map +1 -0
- package/dist/ui-studio/registries/factors-registry.d.ts.map +1 -0
- package/dist/ui-studio/registries/tiers-registry.d.ts.map +1 -0
- package/dist/ui-studio/resolution/FactorResolver.d.ts.map +1 -0
- package/dist/ui-studio/templates/TestGenerator.d.ts.map +1 -0
- package/dist/ui-studio/templates/TierGenerator.d.ts.map +1 -0
- package/dist/ui-studio/templates/TypesGenerator.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity/base.types.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity/config.types.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity/factors.types.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity/index.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity/slot.types.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity/template.types.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/atom.config.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/component.config.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/index.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/layout.config.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/page.config.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/section.config.d.ts.map +1 -0
- package/dist/ui-studio/types/granularity-levels/template.config.d.ts.map +1 -0
- package/dist/ui-studio/types.d.ts.map +1 -0
- package/dist/utils/CodeUtils.d.ts.map +1 -0
- package/dist/utils/GenerateComponentValidator.d.ts.map +1 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/StringUtils.d.ts.map +1 -0
- package/dist/utils/ValidationUtils.d.ts.map +1 -0
- package/dist/utils/errors/BaseError.d.ts.map +1 -0
- package/dist/utils/errors/GenerationError.d.ts.map +1 -0
- package/dist/utils/errors/TemplateNotFoundError.d.ts.map +1 -0
- package/dist/utils/errors/ValidationError.d.ts.map +1 -0
- package/dist/utils/errors/index.d.ts.map +1 -0
- package/dist/utils/factor-resolver.d.ts.map +1 -0
- package/dist/utils/granularity-helpers.d.ts.map +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/performance.d.ts.map +1 -0
- package/dist/utils/stringify.d.ts.map +1 -0
- package/dist/validators/component-validator.d.ts.map +1 -0
- package/dist/validators/design-system-validator.d.ts.map +1 -0
- package/dist/validators/factor-validator.d.ts.map +1 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/section-validator.d.ts.map +1 -0
- package/dist/validators/slot-validator.d.ts.map +1 -0
- package/dist/validators/tier-validator.d.ts.map +1 -0
- package/package.json +8 -1
- package/PUBLISH-GUIDE.md +0 -250
- package/PUBLISH-SUCCESS.md +0 -370
- package/tests/16-factor-integration.test.d.ts +0 -14
- package/tests/16-factor-visual.test.d.ts +0 -14
- package/tests/5-level-integration.test.d.ts +0 -14
- package/tests/CodeUtils.test.d.ts +0 -7
- package/tests/DesignSystems.test.d.ts +0 -7
- package/tests/GenerateComponentValidator.test.d.ts +0 -7
- package/tests/Logger.test.d.ts +0 -7
- package/tests/StringUtils.test.d.ts +0 -7
- package/tests/StyleGenerator.test.d.ts +0 -13
- package/tests/Tiers.test.d.ts +0 -7
- package/tests/TokenRegistry.test.d.ts +0 -14
- package/tests/TokenStyleResolver.test.d.ts +0 -13
- package/tests/ValidationUtils.test.d.ts +0 -7
- package/tests/_pending_fix/Accordion.test.d.ts +0 -13
- package/tests/_pending_fix/Alert.test.d.ts +0 -13
- package/tests/_pending_fix/AlertDialog.test.d.ts +0 -13
- package/tests/_pending_fix/AspectRatio.test.d.ts +0 -13
- package/tests/_pending_fix/Autocomplete.test.d.ts +0 -13
- package/tests/_pending_fix/Avatar.test.d.ts +0 -13
- package/tests/_pending_fix/Badge.test.d.ts +0 -13
- package/tests/_pending_fix/Banner.test.d.ts +0 -13
- package/tests/_pending_fix/Box.test.d.ts +0 -13
- package/tests/_pending_fix/Breadcrumb.test.d.ts +0 -13
- package/tests/_pending_fix/Callout.test.d.ts +0 -13
- package/tests/_pending_fix/Card.test.d.ts +0 -13
- package/tests/_pending_fix/Center.test.d.ts +0 -13
- package/tests/_pending_fix/Checkbox.test.d.ts +0 -13
- package/tests/_pending_fix/Chip.test.d.ts +0 -13
- package/tests/_pending_fix/ColorPicker.test.d.ts +0 -13
- package/tests/_pending_fix/Combobox.test.d.ts +0 -13
- package/tests/_pending_fix/CommandPalette.test.d.ts +0 -13
- package/tests/_pending_fix/ConfirmationModal.test.d.ts +0 -13
- package/tests/_pending_fix/Container.test.d.ts +0 -13
- package/tests/_pending_fix/DataTable.test.d.ts +0 -13
- package/tests/_pending_fix/DatePicker.test.d.ts +0 -13
- package/tests/_pending_fix/DateRangePicker.test.d.ts +0 -13
- package/tests/_pending_fix/DateTimePicker.test.d.ts +0 -13
- package/tests/_pending_fix/Divider.test.d.ts +0 -13
- package/tests/_pending_fix/Drawer.test.d.ts +0 -13
- package/tests/_pending_fix/Dropdown.test.d.ts +0 -13
- package/tests/_pending_fix/EmptyState.test.d.ts +0 -13
- package/tests/_pending_fix/ErrorState.test.d.ts +0 -13
- package/tests/_pending_fix/FileDropzone.test.d.ts +0 -13
- package/tests/_pending_fix/FileUpload.test.d.ts +0 -13
- package/tests/_pending_fix/Flex.test.d.ts +0 -13
- package/tests/_pending_fix/Grid.test.d.ts +0 -13
- package/tests/_pending_fix/GridItem.test.d.ts +0 -13
- package/tests/_pending_fix/HStack.test.d.ts +0 -13
- package/tests/_pending_fix/Input.test.d.ts +0 -13
- package/tests/_pending_fix/InputCurrency.test.d.ts +0 -13
- package/tests/_pending_fix/InputGroup.test.d.ts +0 -13
- package/tests/_pending_fix/InputOTP.test.d.ts +0 -13
- package/tests/_pending_fix/InputPassword.test.d.ts +0 -13
- package/tests/_pending_fix/InputPhone.test.d.ts +0 -13
- package/tests/_pending_fix/InputSearch.test.d.ts +0 -13
- package/tests/_pending_fix/Link.test.d.ts +0 -13
- package/tests/_pending_fix/List.test.d.ts +0 -13
- package/tests/_pending_fix/LoadingOverlay.test.d.ts +0 -13
- package/tests/_pending_fix/Menu.test.d.ts +0 -13
- package/tests/_pending_fix/Modal.test.d.ts +0 -13
- package/tests/_pending_fix/MultiSelect.test.d.ts +0 -13
- package/tests/_pending_fix/NavGroup.test.d.ts +0 -13
- package/tests/_pending_fix/NavItem.test.d.ts +0 -13
- package/tests/_pending_fix/NavLink.test.d.ts +0 -13
- package/tests/_pending_fix/Navbar.test.d.ts +0 -13
- package/tests/_pending_fix/Notification.test.d.ts +0 -13
- package/tests/_pending_fix/NotificationBadge.test.d.ts +0 -13
- package/tests/_pending_fix/NumberInput.test.d.ts +0 -13
- package/tests/_pending_fix/Pagination.test.d.ts +0 -13
- package/tests/_pending_fix/Popover.test.d.ts +0 -13
- package/tests/_pending_fix/Progress.test.d.ts +0 -13
- package/tests/_pending_fix/ProgressCircle.test.d.ts +0 -13
- package/tests/_pending_fix/ProgressSteps.test.d.ts +0 -13
- package/tests/_pending_fix/Radio.test.d.ts +0 -13
- package/tests/_pending_fix/RangeSlider.test.d.ts +0 -13
- package/tests/_pending_fix/ResizablePanel.test.d.ts +0 -13
- package/tests/_pending_fix/ResultState.test.d.ts +0 -13
- package/tests/_pending_fix/ScrollArea.test.d.ts +0 -13
- package/tests/_pending_fix/Select.test.d.ts +0 -14
- package/tests/_pending_fix/Sheet.test.d.ts +0 -13
- package/tests/_pending_fix/Sidebar.test.d.ts +0 -13
- package/tests/_pending_fix/SimpleGrid.test.d.ts +0 -13
- package/tests/_pending_fix/Skeleton.test.d.ts +0 -13
- package/tests/_pending_fix/Slider.test.d.ts +0 -13
- package/tests/_pending_fix/Spacer.test.d.ts +0 -13
- package/tests/_pending_fix/Spinner.test.d.ts +0 -13
- package/tests/_pending_fix/Stack.test.d.ts +0 -13
- package/tests/_pending_fix/Stat.test.d.ts +0 -13
- package/tests/_pending_fix/Stepper.test.d.ts +0 -14
- package/tests/_pending_fix/Switch.test.d.ts +0 -13
- package/tests/_pending_fix/Table.test.d.ts +0 -13
- package/tests/_pending_fix/Tabs.test.d.ts +0 -13
- package/tests/_pending_fix/Textarea.test.d.ts +0 -13
- package/tests/_pending_fix/Timeline.test.d.ts +0 -13
- package/tests/_pending_fix/Toast.test.d.ts +0 -14
- package/tests/_pending_fix/Tooltip.test.d.ts +0 -14
- package/tests/_pending_fix/VStack.test.d.ts +0 -13
- package/tests/alert.test.d.ts +0 -13
- package/tests/badge.test.d.ts +0 -13
- package/tests/benchmarks/factor-resolution.bench.d.ts +0 -41
- package/tests/button.test.d.ts +0 -16
- package/tests/card.test.d.ts +0 -19
- package/tests/checkbox.test.d.ts +0 -13
- package/tests/component-16-factor-types.test.d.ts +0 -13
- package/tests/component-5level-integration.test.d.ts +0 -14
- package/tests/component-registry-ui.test.d.ts +0 -13
- package/tests/e2e/16-factor-visual.test.d.ts +0 -14
- package/tests/edge-cases.test.d.ts +0 -14
- package/tests/factor-17-24-integration.test.d.ts +0 -14
- package/tests/factor-17-24-performance.test.d.ts +0 -14
- package/tests/factor-validators.test.d.ts +0 -13
- package/tests/factors-1-6.test.d.ts +0 -13
- package/tests/factors-12-16.test.d.ts +0 -13
- package/tests/factors-17-24.test.d.ts +0 -21
- package/tests/factors-all.test.d.ts +0 -13
- package/tests/factors-registry.test.d.ts +0 -11
- package/tests/factors.test.d.ts +0 -13
- package/tests/granularity-types.test.d.ts +0 -18
- package/tests/groups.test.d.ts +0 -14
- package/tests/input.test.d.ts +0 -16
- package/tests/intents.test.d.ts +0 -14
- package/tests/memory-leak.test.d.ts +0 -14
- package/tests/modal.test.d.ts +0 -19
- package/tests/presets.test.d.ts +0 -14
- package/tests/radio.test.d.ts +0 -13
- package/tests/resolution-intents.test.d.ts +0 -13
- package/tests/resolution-presets.test.d.ts +0 -13
- package/tests/resolveProps.test.d.ts +0 -14
- package/tests/section-integration.test.d.ts +0 -16
- package/tests/section-types.test.d.ts +0 -11
- package/tests/setup.d.ts +0 -13
- package/tests/shorthands.test.d.ts +0 -14
- package/tests/switch.test.d.ts +0 -13
- package/tests/tabs.test.d.ts +0 -13
- package/tests/tiers-registry.test.d.ts +0 -11
- package/tests/useComponentStyles.test.d.ts +0 -11
- package/tests/useFactors.test.d.ts +0 -13
- package/tests/validators-invalid-input.test.d.ts +0 -13
- package/tsup.config.d.ts +0 -11
- package/vitest.config.d.ts +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/styling/factors-1-6.ts","../src/styling/factors-12-16.ts","../src/styling/factors-17-24.ts","../src/styling/StyleGenerator.ts","../src/ui-studio/presets/variants.ts","../src/ui-studio/registries/components-registry.ts","../src/ui-studio/registries/design-systems-registry.ts","../src/ui-studio/registries/tiers-registry.ts","../src/ui-studio/registries/factors-registry.ts","../src/ui-studio/resolution/FactorResolver.ts","../src/ui-studio/presets/factor-registry.ts","../src/ui-studio/matrix/ClassMapper.ts","../src/ui-studio/matrix/MatrixResolver.ts","../src/ui-studio/types.ts","../src/ui-studio/templates/TierGenerator.ts","../src/ui-studio/templates/TypesGenerator.ts","../src/ui-studio/templates/TestGenerator.ts","../src/ui-studio/ComponentGenerator.ts","../src/ui-studio/composition/FactorPropagator.ts","../src/ui-studio/composition/section-orchestrator.ts","../src/ui-studio/composition/SectionGenerator.ts","../src/ui-studio/composition/PageGenerator.ts","../src/ui-studio/composition/SlotResolver.ts","../src/types/granularity/base.types.ts","../src/ui-studio/presets/layout-registry.ts","../src/ui-studio/presets/page-registry.ts","../src/ui-studio/presets/section-registry.defaults.ts","../src/ui-studio/presets/section-registry.helpers.ts","../src/ui-studio/presets/section-registry.ts","../src/ui-studio/presets/template-registry.ts","../src/ui-studio/presets/component-registry.ts","../src/ui-studio/presets/registry.constants.ts","../src/ui-studio/presets/section-defaults.ts","../src/converters/section-converter.ts","../src/validators/tier-validator.ts","../src/validators/factor-validator.ts","../src/validators/component-validator.ts","../src/validators/design-system-validator.ts","../src/validators/section-validator.ts","../src/validators/slot-validator.ts","../src/cli/batch-command.ts","../src/cli/generate-command.ts","../src/cli/logo.ts","../src/cli/index.ts","../src/types/Result.ts","../src/types/Option.ts","../src/constants/ComponentTypes.ts","../src/constants/DesignSystems.ts","../src/constants/Tiers.ts","../src/constants/Frameworks.ts","../src/utils/StringUtils.ts","../src/utils/CodeUtils.ts","../src/utils/errors/BaseError.ts","../src/utils/errors/ValidationError.ts","../src/utils/ValidationUtils.ts","../src/utils/Logger.ts","../src/utils/GenerateComponentValidator.ts","../src/utils/performance.ts","../src/utils/stringify.ts","../src/utils/factor-resolver.ts","../src/utils/granularity-helpers.ts","../src/adapters/index.ts"],"names":["COLORS","colorVariants","SIZES","sizeVariants","VARIANTS","SHAPES","POSITIONS","positionVariants","ICON_POSITIONS","STATES","stateVariants","ANIMATIONS","enterAnimations","ELEVATIONS","A11Y_LEVELS","a11yVariants","ALIGNMENTS","alignmentVariants","buildAlignmentClasses","ORIENTATIONS","orientationVariants","buildOrientationClasses","densityVariants","loadingStateVariants","buildResponsiveClasses","DENSITIES","buildDensityClasses","LOADING_STATES","buildLoadingStateClasses","THEMES","themeVariants","buildThemeClasses","FACTOR_REGISTRY","capitalize","SectionGenerator","createSectionGenerator","ALL_DESIGN_SYSTEMS","ALL_TIERS","isValidFactorId","getAllComponentCategories","getAllDesignSystems","VALID_DESIGN_SYSTEMS","VALID_TIERS","VALID_A11Y_LEVELS","validateSectionConfig","isValidDesignSystem","isValidTier","VALID_COMPONENT_TYPES","getProp","fs2","CURRENT_DESIGN_SYSTEMS","TIERS","validateDesignSystem","validateTier","getFactorDefinition","getAllFactorIds"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * 16-Factor Variant System - Factors 1-6\r\n *\r\n * Factor 1: Color - Color scheme options\r\n * Factor 2: Size - Component size options\r\n * Factor 3: Variant - Visual style variants\r\n * Factor 4: Shape - Border radius and shape options\r\n * Factor 5: Position - Layout position options\r\n * Factor 6: IconPosition - Icon placement options\r\n *\r\n * @packageDocumentation\r\n * @module generator/factors-1-6\r\n * @since 2.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n// =============================================================================\r\n// FACTOR 1: COLOR\r\n// =============================================================================\r\n\r\n/**\r\n * Color scheme options for components.\r\n * Maps to semantic color tokens in design systems.\r\n */\r\nexport const COLORS = {\r\n primary: 'primary',\r\n secondary: 'secondary',\r\n accent: 'accent',\r\n success: 'success',\r\n warning: 'warning',\r\n error: 'error',\r\n info: 'info',\r\n neutral: 'neutral',\r\n} as const;\r\n\r\nexport type Color = keyof typeof COLORS;\r\n\r\n/**\r\n * Color-specific Tailwind class prefixes.\r\n * These are used with shade values (e.g., bg-primary-500).\r\n */\r\nexport const colorVariants = {\r\n primary: {\r\n bg: 'bg-primary',\r\n text: 'text-primary',\r\n border: 'border-primary',\r\n ring: 'ring-primary',\r\n },\r\n secondary: {\r\n bg: 'bg-secondary',\r\n text: 'text-secondary',\r\n border: 'border-secondary',\r\n ring: 'ring-secondary',\r\n },\r\n accent: {\r\n bg: 'bg-accent',\r\n text: 'text-accent',\r\n border: 'border-accent',\r\n ring: 'ring-accent',\r\n },\r\n success: {\r\n bg: 'bg-success',\r\n text: 'text-success',\r\n border: 'border-success',\r\n ring: 'ring-success',\r\n },\r\n warning: {\r\n bg: 'bg-warning',\r\n text: 'text-warning',\r\n border: 'border-warning',\r\n ring: 'ring-warning',\r\n },\r\n error: {\r\n bg: 'bg-error',\r\n text: 'text-error',\r\n border: 'border-error',\r\n ring: 'ring-error',\r\n },\r\n info: {\r\n bg: 'bg-info',\r\n text: 'text-info',\r\n border: 'border-info',\r\n ring: 'ring-info',\r\n },\r\n neutral: {\r\n bg: 'bg-neutral',\r\n text: 'text-neutral',\r\n border: 'border-neutral',\r\n ring: 'ring-neutral',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Build color classes for a given color and shade.\r\n *\r\n * @param color - Color scheme\r\n * @param shade - Color shade (50-900)\r\n * @param property - CSS property (bg, text, border, ring)\r\n * @returns Tailwind class string\r\n */\r\nexport function buildColorClass(\r\n color: Color,\r\n shade: 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900,\r\n property: 'bg' | 'text' | 'border' | 'ring'\r\n): string {\r\n return `${property}-${color}-${shade}`;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 2: SIZE\r\n// =============================================================================\r\n\r\n/**\r\n * Component size options.\r\n */\r\nexport const SIZES = {\r\n xs: 'xs',\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n xl: 'xl',\r\n '2xl': '2xl',\r\n full: 'full',\r\n} as const;\r\n\r\nexport type Size = keyof typeof SIZES;\r\n\r\n/**\r\n * Size-specific Tailwind classes for common properties.\r\n */\r\nexport const sizeVariants = {\r\n xs: {\r\n height: 'h-6',\r\n padding: 'px-2 py-0.5',\r\n text: 'text-xs',\r\n gap: 'gap-1',\r\n icon: 'w-3 h-3',\r\n },\r\n sm: {\r\n height: 'h-8',\r\n padding: 'px-3 py-1',\r\n text: 'text-sm',\r\n gap: 'gap-1.5',\r\n icon: 'w-4 h-4',\r\n },\r\n md: {\r\n height: 'h-10',\r\n padding: 'px-4 py-2',\r\n text: 'text-sm',\r\n gap: 'gap-2',\r\n icon: 'w-5 h-5',\r\n },\r\n lg: {\r\n height: 'h-11',\r\n padding: 'px-5 py-2.5',\r\n text: 'text-base',\r\n gap: 'gap-2.5',\r\n icon: 'w-5 h-5',\r\n },\r\n xl: {\r\n height: 'h-12',\r\n padding: 'px-6 py-3',\r\n text: 'text-base',\r\n gap: 'gap-3',\r\n icon: 'w-6 h-6',\r\n },\r\n '2xl': {\r\n height: 'h-14',\r\n padding: 'px-8 py-4',\r\n text: 'text-lg',\r\n gap: 'gap-4',\r\n icon: 'w-7 h-7',\r\n },\r\n full: {\r\n height: 'h-full',\r\n padding: 'p-0',\r\n text: 'text-base',\r\n gap: 'gap-0',\r\n icon: 'w-full h-full',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Build size classes for a component.\r\n *\r\n * @param size - Size option\r\n * @param includeHeight - Whether to include height class\r\n * @returns Combined size classes\r\n */\r\nexport function buildSizeClasses(size: Size, includeHeight = true): string {\r\n const classes = sizeVariants[size];\r\n const parts: string[] = includeHeight\r\n ? [classes.height, classes.padding, classes.text, classes.gap]\r\n : [classes.padding, classes.text, classes.gap];\r\n return parts.join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 3: VARIANT\r\n// =============================================================================\r\n\r\n/**\r\n * Visual style variants.\r\n */\r\nexport const VARIANTS = {\r\n solid: 'solid',\r\n outline: 'outline',\r\n ghost: 'ghost',\r\n soft: 'soft',\r\n link: 'link',\r\n} as const;\r\n\r\nexport type Variant = keyof typeof VARIANTS;\r\n\r\n/**\r\n * Variant-specific Tailwind classes.\r\n * These define the visual style without color.\r\n */\r\nexport const variantClasses = {\r\n solid: {\r\n base: 'border-transparent',\r\n interactive: 'hover:brightness-95 active:brightness-90',\r\n },\r\n outline: {\r\n base: 'bg-transparent border-2',\r\n interactive: 'hover:bg-opacity-10 active:bg-opacity-20',\r\n },\r\n ghost: {\r\n base: 'bg-transparent border-transparent',\r\n interactive: 'hover:bg-opacity-10 active:bg-opacity-20',\r\n },\r\n soft: {\r\n base: 'border-transparent',\r\n interactive: 'hover:brightness-95 active:brightness-90',\r\n },\r\n link: {\r\n base: 'bg-transparent border-transparent underline-offset-4',\r\n interactive: 'hover:underline',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Build variant classes for a component.\r\n *\r\n * @param variant - Variant option\r\n * @param includeInteractive - Whether to include hover/active states\r\n * @returns Combined variant classes\r\n */\r\nexport function buildVariantClasses(variant: Variant, includeInteractive = true): string {\r\n const classes = variantClasses[variant];\r\n return includeInteractive ? `${classes.base} ${classes.interactive}` : classes.base;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 4: SHAPE\r\n// =============================================================================\r\n\r\n/**\r\n * Shape/border radius options.\r\n */\r\nexport const SHAPES = {\r\n none: 'none',\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n xl: 'xl',\r\n full: 'full',\r\n pill: 'pill',\r\n square: 'square',\r\n circle: 'circle',\r\n} as const;\r\n\r\nexport type Shape = keyof typeof SHAPES;\r\n\r\n/**\r\n * Shape-specific Tailwind classes.\r\n */\r\nexport const shapeVariants = {\r\n none: 'rounded-none',\r\n sm: 'rounded-sm',\r\n md: 'rounded-md',\r\n lg: 'rounded-lg',\r\n xl: 'rounded-xl',\r\n full: 'rounded-full',\r\n pill: 'rounded-full',\r\n square: 'rounded-none aspect-square',\r\n circle: 'rounded-full aspect-square',\r\n} as const;\r\n\r\n/**\r\n * Get shape class for a given shape option.\r\n *\r\n * @param shape - Shape option\r\n * @returns Tailwind class string\r\n */\r\nexport function getShapeClass(shape: Shape): string {\r\n return shapeVariants[shape];\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 5: POSITION\r\n// =============================================================================\r\n\r\n/**\r\n * Layout position options.\r\n */\r\nexport const POSITIONS = {\r\n left: 'left',\r\n center: 'center',\r\n right: 'right',\r\n top: 'top',\r\n bottom: 'bottom',\r\n topLeft: 'topLeft',\r\n topRight: 'topRight',\r\n bottomLeft: 'bottomLeft',\r\n bottomRight: 'bottomRight',\r\n relative: 'relative',\r\n absolute: 'absolute',\r\n fixed: 'fixed',\r\n sticky: 'sticky',\r\n} as const;\r\n\r\nexport type Position = keyof typeof POSITIONS;\r\n\r\n/**\r\n * Position-specific Tailwind classes for absolute positioning.\r\n */\r\nexport const positionVariants = {\r\n left: 'left-0',\r\n center: 'left-1/2 -translate-x-1/2',\r\n right: 'right-0',\r\n top: 'top-0',\r\n bottom: 'bottom-0',\r\n topLeft: 'top-0 left-0',\r\n topRight: 'top-0 right-0',\r\n bottomLeft: 'bottom-0 left-0',\r\n bottomRight: 'bottom-0 right-0',\r\n relative: 'relative',\r\n absolute: 'absolute',\r\n fixed: 'fixed',\r\n sticky: 'sticky',\r\n} as const;\r\n\r\n/**\r\n * Position classes for flex/grid layout alignment.\r\n */\r\nexport const layoutPositionVariants = {\r\n left: 'justify-start',\r\n center: 'justify-center',\r\n right: 'justify-end',\r\n top: 'items-start',\r\n bottom: 'items-end',\r\n topLeft: 'items-start justify-start',\r\n topRight: 'items-start justify-end',\r\n bottomLeft: 'items-end justify-start',\r\n bottomRight: 'items-end justify-end',\r\n relative: 'relative',\r\n absolute: 'absolute',\r\n fixed: 'fixed',\r\n sticky: 'sticky',\r\n} as const;\r\n\r\n/**\r\n * Get position class for a given position option.\r\n *\r\n * @param position - Position option\r\n * @param absolute - Whether to use absolute positioning classes\r\n * @returns Tailwind class string\r\n */\r\nexport function getPositionClass(position: Position, absolute = false): string {\r\n return absolute ? positionVariants[position] : layoutPositionVariants[position];\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 6: ICON POSITION\r\n// =============================================================================\r\n\r\n/**\r\n * Icon placement options.\r\n */\r\nexport const ICON_POSITIONS = {\r\n left: 'left',\r\n right: 'right',\r\n top: 'top',\r\n bottom: 'bottom',\r\n only: 'only',\r\n start: 'start',\r\n end: 'end',\r\n} as const;\r\n\r\nexport type IconPosition = keyof typeof ICON_POSITIONS;\r\n\r\n/**\r\n * Icon position-specific flex classes.\r\n */\r\nexport const iconPositionVariants = {\r\n left: {\r\n container: 'flex-row',\r\n iconOrder: 'order-first',\r\n textOrder: 'order-last',\r\n },\r\n right: {\r\n container: 'flex-row',\r\n iconOrder: 'order-last',\r\n textOrder: 'order-first',\r\n },\r\n top: {\r\n container: 'flex-col',\r\n iconOrder: 'order-first',\r\n textOrder: 'order-last',\r\n },\r\n bottom: {\r\n container: 'flex-col',\r\n iconOrder: 'order-last',\r\n textOrder: 'order-first',\r\n },\r\n only: {\r\n container: 'flex-row',\r\n iconOrder: '',\r\n textOrder: 'sr-only',\r\n },\r\n start: {\r\n container: 'flex-row',\r\n iconOrder: 'order-first',\r\n textOrder: 'order-last',\r\n },\r\n end: {\r\n container: 'flex-row',\r\n iconOrder: 'order-last',\r\n textOrder: 'order-first',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Build icon position classes.\r\n *\r\n * @param position - Icon position option\r\n * @returns Object with container, icon, and text classes\r\n */\r\nexport function buildIconPositionClasses(position: IconPosition): {\r\n container: string;\r\n iconClass: string;\r\n textClass: string;\r\n} {\r\n const variant = iconPositionVariants[position];\r\n return {\r\n container: `flex ${variant.container} items-center`,\r\n iconClass: variant.iconOrder,\r\n textClass: variant.textOrder,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// COMBINED FACTOR UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * Factor 1-6 configuration.\r\n */\r\nexport interface Factors1to6Config {\r\n /** Factor 1: Color scheme */\r\n color?: Color;\r\n /** Factor 2: Size */\r\n size?: Size;\r\n /** Factor 3: Variant */\r\n variant?: Variant;\r\n /** Factor 4: Shape */\r\n shape?: Shape;\r\n /** Factor 5: Position */\r\n position?: Position;\r\n /** Factor 6: Icon position */\r\n iconPosition?: IconPosition;\r\n}\r\n\r\n/**\r\n * Apply all Factor 1-6 configurations to generate classes.\r\n *\r\n * @param config - Factor configuration\r\n * @returns Combined class string\r\n */\r\nexport function applyFactors1to6(config: Factors1to6Config): string {\r\n const classes: string[] = [];\r\n\r\n // Factor 2: Size (applied first as base sizing)\r\n if (config.size !== undefined) {\r\n classes.push(buildSizeClasses(config.size));\r\n }\r\n\r\n // Factor 3: Variant\r\n if (config.variant !== undefined) {\r\n classes.push(buildVariantClasses(config.variant));\r\n }\r\n\r\n // Factor 4: Shape\r\n if (config.shape !== undefined) {\r\n classes.push(getShapeClass(config.shape));\r\n }\r\n\r\n // Factor 5: Position (for layout, not absolute)\r\n if (config.position !== undefined) {\r\n classes.push(getPositionClass(config.position, false));\r\n }\r\n\r\n // Factor 6: Icon position container class\r\n if (config.iconPosition !== undefined) {\r\n const iconClasses = buildIconPositionClasses(config.iconPosition);\r\n classes.push(iconClasses.container);\r\n }\r\n\r\n // Note: Factor 1 (Color) is typically applied via tokens, not directly here\r\n // Colors require shade information which comes from the token system\r\n\r\n return classes.filter(Boolean).join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const Factors1to6 = {\r\n // Factor 1: Color\r\n COLORS,\r\n colorVariants,\r\n buildColorClass,\r\n // Factor 2: Size\r\n SIZES,\r\n sizeVariants,\r\n buildSizeClasses,\r\n // Factor 3: Variant\r\n VARIANTS,\r\n variantClasses,\r\n buildVariantClasses,\r\n // Factor 4: Shape\r\n SHAPES,\r\n shapeVariants,\r\n getShapeClass,\r\n // Factor 5: Position\r\n POSITIONS,\r\n positionVariants,\r\n layoutPositionVariants,\r\n getPositionClass,\r\n // Factor 6: Icon Position\r\n ICON_POSITIONS,\r\n iconPositionVariants,\r\n buildIconPositionClasses,\r\n // Combined\r\n applyFactors1to6,\r\n};\r\n\r\nexport default Factors1to6;\r\n","/**\r\n * 16-Factor Variant System - Factors 12-16\r\n *\r\n * Factor 12: Orientation - Layout direction options\r\n * Factor 13: Density - Spacing and padding density\r\n * Factor 14: LoadingState - Visual loading feedback\r\n * Factor 15: Responsive - Breakpoint-based configuration\r\n * Factor 16: Theme - Light/dark mode appearance\r\n *\r\n * @packageDocumentation\r\n * @module generator/factors-12-16\r\n * @since 2.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n FactorOrientation,\r\n FactorDensity,\r\n FactorLoadingState,\r\n FactorResponsiveConfig,\r\n FactorResponsiveBreakpoint,\r\n FactorTheme,\r\n} from './types';\r\n\r\n// =============================================================================\r\n// FACTOR 12: ORIENTATION\r\n// =============================================================================\r\n\r\n/**\r\n * Orientation options constant.\r\n * @since 2.0.0\r\n */\r\nexport const ORIENTATIONS = {\r\n horizontal: 'horizontal',\r\n vertical: 'vertical',\r\n} as const;\r\n\r\n/**\r\n * Orientation-specific Tailwind classes for different component contexts.\r\n * @since 2.0.0\r\n */\r\nexport const orientationVariants = {\r\n /** Flex container orientation */\r\n flex: {\r\n horizontal: 'flex-row',\r\n vertical: 'flex-col',\r\n },\r\n /** Tabs component orientation */\r\n tabs: {\r\n horizontal: 'flex-row border-b',\r\n vertical: 'flex-col border-r',\r\n },\r\n /** Divider orientation */\r\n divider: {\r\n horizontal: 'w-full h-px',\r\n vertical: 'h-full w-px',\r\n },\r\n /** Stepper orientation */\r\n stepper: {\r\n horizontal: 'flex-row space-x-4',\r\n vertical: 'flex-col space-y-4',\r\n },\r\n /** Button group orientation */\r\n buttonGroup: {\r\n horizontal: 'flex-row',\r\n vertical: 'flex-col',\r\n },\r\n /** List orientation */\r\n list: {\r\n horizontal: 'flex-row flex-wrap gap-2',\r\n vertical: 'flex-col gap-1',\r\n },\r\n /** Slider orientation */\r\n slider: {\r\n horizontal: 'w-full h-2',\r\n vertical: 'h-full w-2',\r\n },\r\n /** Stack orientation */\r\n stack: {\r\n horizontal: 'flex-row',\r\n vertical: 'flex-col',\r\n },\r\n /** Radio/Checkbox group */\r\n radioGroup: {\r\n horizontal: 'flex-row gap-4',\r\n vertical: 'flex-col gap-2',\r\n },\r\n} as const;\r\n\r\nexport type OrientationVariantKey = keyof typeof orientationVariants;\r\n\r\n/**\r\n * Build orientation classes for a specific component context.\r\n *\r\n * @param context - Component context (flex, tabs, divider, etc.)\r\n * @param orientation - Orientation value\r\n * @returns Tailwind classes for orientation\r\n *\r\n * @example\r\n * ```typescript\r\n * buildOrientationClasses('tabs', 'vertical')\r\n * // => \"flex-col border-r\"\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function buildOrientationClasses(\r\n context: OrientationVariantKey,\r\n orientation: FactorOrientation\r\n): string {\r\n const variant = orientationVariants[context];\r\n return variant[orientation] ?? orientationVariants.flex[orientation];\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 13: DENSITY\r\n// =============================================================================\r\n\r\n/**\r\n * Density options constant.\r\n * @since 2.0.0\r\n */\r\nexport const DENSITIES = {\r\n compact: 'compact',\r\n default: 'default',\r\n comfortable: 'comfortable',\r\n spacious: 'spacious',\r\n} as const;\r\n\r\n/**\r\n * Density-specific Tailwind classes for different component contexts.\r\n * @since 2.0.0\r\n */\r\nexport const densityVariants = {\r\n /** Generic padding density */\r\n padding: {\r\n compact: 'p-1',\r\n default: 'p-2',\r\n comfortable: 'p-4',\r\n spacious: 'p-6',\r\n },\r\n /** Button density */\r\n button: {\r\n compact: 'px-2 py-0.5 text-xs',\r\n default: 'px-4 py-2 text-sm',\r\n comfortable: 'px-6 py-3 text-base',\r\n spacious: 'px-8 py-4 text-lg',\r\n },\r\n /** Input density */\r\n input: {\r\n compact: 'px-2 py-1 text-xs h-7',\r\n default: 'px-3 py-2 text-sm h-10',\r\n comfortable: 'px-4 py-3 text-base h-12',\r\n spacious: 'px-5 py-4 text-lg h-14',\r\n },\r\n /** Table row density */\r\n tableRow: {\r\n compact: 'py-1 px-2',\r\n default: 'py-2 px-4',\r\n comfortable: 'py-3 px-6',\r\n spacious: 'py-4 px-8',\r\n },\r\n /** List item density */\r\n listItem: {\r\n compact: 'py-1 px-2',\r\n default: 'py-2 px-3',\r\n comfortable: 'py-3 px-4',\r\n spacious: 'py-4 px-6',\r\n },\r\n /** Card density */\r\n card: {\r\n compact: 'p-2',\r\n default: 'p-4',\r\n comfortable: 'p-6',\r\n spacious: 'p-8',\r\n },\r\n /** Menu item density */\r\n menu: {\r\n compact: 'px-2 py-1 text-xs',\r\n default: 'px-3 py-2 text-sm',\r\n comfortable: 'px-4 py-3 text-base',\r\n spacious: 'px-6 py-4 text-lg',\r\n },\r\n /** Gap/spacing density */\r\n gap: {\r\n compact: 'gap-1',\r\n default: 'gap-2',\r\n comfortable: 'gap-4',\r\n spacious: 'gap-6',\r\n },\r\n /** Icon size density */\r\n icon: {\r\n compact: 'w-3 h-3',\r\n default: 'w-4 h-4',\r\n comfortable: 'w-5 h-5',\r\n spacious: 'w-6 h-6',\r\n },\r\n} as const;\r\n\r\nexport type DensityVariantKey = keyof typeof densityVariants;\r\n\r\n/**\r\n * Build density classes for a specific component context.\r\n *\r\n * @param context - Component context (button, input, card, etc.)\r\n * @param density - Density value\r\n * @returns Tailwind classes for density\r\n *\r\n * @example\r\n * ```typescript\r\n * buildDensityClasses('button', 'compact')\r\n * // => \"px-2 py-0.5 text-xs\"\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function buildDensityClasses(\r\n context: DensityVariantKey,\r\n density: FactorDensity\r\n): string {\r\n const variant = densityVariants[context];\r\n return variant[density] ?? densityVariants.padding[density];\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 14: LOADING STATE\r\n// =============================================================================\r\n\r\n/**\r\n * Loading state options constant.\r\n * @since 2.0.0\r\n */\r\nexport const LOADING_STATES = {\r\n idle: 'idle',\r\n loading: 'loading',\r\n success: 'success',\r\n error: 'error',\r\n} as const;\r\n\r\n/**\r\n * Loading state-specific Tailwind classes for different contexts.\r\n * @since 2.0.0\r\n */\r\nexport const loadingStateVariants = {\r\n /** Visual indicator classes */\r\n visual: {\r\n idle: '',\r\n loading: 'opacity-70 cursor-wait',\r\n success: 'border-success-500 bg-success-50',\r\n error: 'border-error-500 bg-error-50',\r\n },\r\n /** Button loading states */\r\n button: {\r\n idle: '',\r\n loading: 'opacity-70 cursor-wait pointer-events-none',\r\n success: 'bg-success-500 text-white',\r\n error: 'bg-error-500 text-white',\r\n },\r\n /** Input loading states */\r\n input: {\r\n idle: '',\r\n loading: 'bg-neutral-50 cursor-wait',\r\n success: 'border-success-500 focus:ring-success-500',\r\n error: 'border-error-500 focus:ring-error-500',\r\n },\r\n /** Card loading states */\r\n card: {\r\n idle: '',\r\n loading: 'animate-pulse',\r\n success: 'ring-2 ring-success-500',\r\n error: 'ring-2 ring-error-500',\r\n },\r\n /** Form loading states */\r\n form: {\r\n idle: '',\r\n loading: 'pointer-events-none opacity-60',\r\n success: '',\r\n error: '',\r\n },\r\n} as const;\r\n\r\nexport type LoadingStateVariantKey = keyof typeof loadingStateVariants;\r\n\r\n/**\r\n * Build loading state classes for a specific component context.\r\n *\r\n * @param context - Component context (button, input, card, etc.)\r\n * @param state - Loading state value\r\n * @returns Tailwind classes for loading state\r\n *\r\n * @example\r\n * ```typescript\r\n * buildLoadingStateClasses('button', 'loading')\r\n * // => \"opacity-70 cursor-wait pointer-events-none\"\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function buildLoadingStateClasses(\r\n context: LoadingStateVariantKey,\r\n state: FactorLoadingState\r\n): string {\r\n const variant = loadingStateVariants[context];\r\n return variant[state] ?? loadingStateVariants.visual[state];\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 15: RESPONSIVE\r\n// =============================================================================\r\n\r\n/**\r\n * Responsive breakpoint options constant.\r\n * @since 2.0.0\r\n */\r\nexport const RESPONSIVE_BREAKPOINTS = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n xl: 'xl',\r\n '2xl': '2xl',\r\n} as const;\r\n\r\n/**\r\n * Breakpoint pixel values for reference.\r\n * @since 2.0.0\r\n */\r\nexport const BREAKPOINT_VALUES: Record<FactorResponsiveBreakpoint, number> = {\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n '2xl': 1536,\r\n};\r\n\r\n/**\r\n * Responsive visibility classes.\r\n * @since 2.0.0\r\n */\r\nexport const responsiveVisibility = {\r\n /** Hide at breakpoint and above */\r\n hideUp: {\r\n sm: 'sm:hidden',\r\n md: 'md:hidden',\r\n lg: 'lg:hidden',\r\n xl: 'xl:hidden',\r\n '2xl': '2xl:hidden',\r\n },\r\n /** Show at breakpoint and above */\r\n showUp: {\r\n sm: 'hidden sm:block',\r\n md: 'hidden md:block',\r\n lg: 'hidden lg:block',\r\n xl: 'hidden xl:block',\r\n '2xl': 'hidden 2xl:block',\r\n },\r\n /** Hide below breakpoint */\r\n hideDown: {\r\n sm: 'max-sm:hidden',\r\n md: 'max-md:hidden',\r\n lg: 'max-lg:hidden',\r\n xl: 'max-xl:hidden',\r\n '2xl': 'max-2xl:hidden',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Apply responsive prefix to a class.\r\n *\r\n * @param breakpoint - Responsive breakpoint\r\n * @param className - Class to prefix\r\n * @returns Prefixed class string\r\n *\r\n * @example\r\n * ```typescript\r\n * applyResponsivePrefix('md', 'text-lg')\r\n * // => \"md:text-lg\"\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function applyResponsivePrefix(\r\n breakpoint: FactorResponsiveBreakpoint,\r\n className: string\r\n): string {\r\n return `${breakpoint}:${className}`;\r\n}\r\n\r\n/**\r\n * Build responsive classes from configuration.\r\n *\r\n * @param config - Responsive configuration object\r\n * @returns Combined responsive classes\r\n *\r\n * @example\r\n * ```typescript\r\n * buildResponsiveClasses({ sm: 'hidden', md: 'block', lg: 'flex' })\r\n * // => \"sm:hidden md:block lg:flex\"\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function buildResponsiveClasses(config: FactorResponsiveConfig): string {\r\n const classes: string[] = [];\r\n\r\n const breakpoints: FactorResponsiveBreakpoint[] = ['sm', 'md', 'lg', 'xl', '2xl'];\r\n\r\n for (const bp of breakpoints) {\r\n const value = config[bp];\r\n if (value === undefined) continue;\r\n\r\n if (typeof value === 'boolean') {\r\n // Handle visibility\r\n classes.push(value ? responsiveVisibility.showUp[bp] : responsiveVisibility.hideUp[bp]);\r\n } else if (typeof value === 'string') {\r\n // Handle custom class\r\n classes.push(applyResponsivePrefix(bp, value));\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 16: THEME\r\n// =============================================================================\r\n\r\n/**\r\n * Theme options constant.\r\n * @since 2.0.0\r\n */\r\nexport const THEMES = {\r\n light: 'light',\r\n dark: 'dark',\r\n system: 'system',\r\n} as const;\r\n\r\n/**\r\n * Theme-specific Tailwind classes for different properties.\r\n * @since 2.0.0\r\n */\r\nexport const themeVariants = {\r\n /** Background colors */\r\n background: {\r\n light: 'bg-white',\r\n dark: 'dark:bg-neutral-900',\r\n system: 'bg-white dark:bg-neutral-900',\r\n },\r\n /** Primary text colors */\r\n textPrimary: {\r\n light: 'text-neutral-900',\r\n dark: 'dark:text-white',\r\n system: 'text-neutral-900 dark:text-white',\r\n },\r\n /** Secondary text colors */\r\n textSecondary: {\r\n light: 'text-neutral-600',\r\n dark: 'dark:text-neutral-400',\r\n system: 'text-neutral-600 dark:text-neutral-400',\r\n },\r\n /** Border colors */\r\n border: {\r\n light: 'border-neutral-200',\r\n dark: 'dark:border-neutral-700',\r\n system: 'border-neutral-200 dark:border-neutral-700',\r\n },\r\n /** Surface/card backgrounds */\r\n surface: {\r\n light: 'bg-neutral-50',\r\n dark: 'dark:bg-neutral-800',\r\n system: 'bg-neutral-50 dark:bg-neutral-800',\r\n },\r\n /** Hover backgrounds */\r\n hoverBg: {\r\n light: 'hover:bg-neutral-100',\r\n dark: 'dark:hover:bg-neutral-700',\r\n system: 'hover:bg-neutral-100 dark:hover:bg-neutral-700',\r\n },\r\n} as const;\r\n\r\nexport type ThemeVariantKey = keyof typeof themeVariants;\r\n\r\n/**\r\n * Build theme classes for a specific property.\r\n *\r\n * @param property - Property to theme (background, text, border, etc.)\r\n * @param theme - Theme value\r\n * @returns Tailwind classes for theme\r\n *\r\n * @example\r\n * ```typescript\r\n * buildThemeClasses('background', 'system')\r\n * // => \"bg-white dark:bg-neutral-900\"\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function buildThemeClasses(\r\n property: ThemeVariantKey,\r\n theme: FactorTheme\r\n): string {\r\n const variant = themeVariants[property];\r\n return variant[theme] ?? '';\r\n}\r\n\r\n/**\r\n * Get all theme classes for a complete component theme.\r\n *\r\n * @param theme - Theme value\r\n * @returns Object with all themed property classes\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function getThemeClasses(theme: FactorTheme): Record<ThemeVariantKey, string> {\r\n return {\r\n background: themeVariants.background[theme],\r\n textPrimary: themeVariants.textPrimary[theme],\r\n textSecondary: themeVariants.textSecondary[theme],\r\n border: themeVariants.border[theme],\r\n surface: themeVariants.surface[theme],\r\n hoverBg: themeVariants.hoverBg[theme],\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 12-16 CONFIG TYPE\r\n// =============================================================================\r\n\r\n/**\r\n * Factor 12-16 configuration interface.\r\n * @since 2.0.0\r\n */\r\nexport interface Factors12to16Config {\r\n /** Factor 12: Orientation */\r\n orientation?: FactorOrientation;\r\n /** Factor 13: Density */\r\n density?: FactorDensity;\r\n /** Factor 14: Loading state */\r\n loadingState?: FactorLoadingState;\r\n /** Factor 15: Responsive config */\r\n responsive?: FactorResponsiveConfig;\r\n /** Factor 16: Theme */\r\n theme?: FactorTheme;\r\n}\r\n\r\n/**\r\n * Apply all Factor 12-16 configurations to generate classes.\r\n *\r\n * @param componentType - Type of component for context-aware classes\r\n * @param config - Factor 12-16 configuration\r\n * @returns Combined class string\r\n *\r\n * @example\r\n * ```typescript\r\n * applyFactors12to16('button', {\r\n * orientation: 'horizontal',\r\n * density: 'compact',\r\n * loadingState: 'loading',\r\n * theme: 'system'\r\n * })\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function applyFactors12to16(\r\n componentType: string,\r\n config: Factors12to16Config\r\n): string {\r\n const classes: string[] = [];\r\n\r\n // Factor 12: Orientation\r\n if (config.orientation !== undefined) {\r\n const orientationContext = getOrientationContext(componentType);\r\n classes.push(buildOrientationClasses(orientationContext, config.orientation));\r\n }\r\n\r\n // Factor 13: Density\r\n if (config.density !== undefined) {\r\n const densityContext = getDensityContext(componentType);\r\n classes.push(buildDensityClasses(densityContext, config.density));\r\n }\r\n\r\n // Factor 14: Loading State\r\n if (config.loadingState !== undefined && config.loadingState !== 'idle') {\r\n const loadingContext = getLoadingStateContext(componentType);\r\n classes.push(buildLoadingStateClasses(loadingContext, config.loadingState));\r\n }\r\n\r\n // Factor 15: Responsive\r\n if (config.responsive !== undefined) {\r\n classes.push(buildResponsiveClasses(config.responsive));\r\n }\r\n\r\n // Factor 16: Theme\r\n if (config.theme !== undefined) {\r\n classes.push(buildThemeClasses('background', config.theme));\r\n classes.push(buildThemeClasses('textPrimary', config.theme));\r\n classes.push(buildThemeClasses('border', config.theme));\r\n }\r\n\r\n return classes.filter(Boolean).join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// CONTEXT HELPERS\r\n// =============================================================================\r\n\r\n/**\r\n * Get orientation context for a component type.\r\n * @internal\r\n */\r\nfunction getOrientationContext(componentType: string): OrientationVariantKey {\r\n const contextMap: Record<string, OrientationVariantKey> = {\r\n tabs: 'tabs',\r\n divider: 'divider',\r\n stepper: 'stepper',\r\n buttonGroup: 'buttonGroup',\r\n list: 'list',\r\n slider: 'slider',\r\n stack: 'stack',\r\n hstack: 'stack',\r\n vstack: 'stack',\r\n radioGroup: 'radioGroup',\r\n checkboxGroup: 'radioGroup',\r\n };\r\n return contextMap[componentType] ?? 'flex';\r\n}\r\n\r\n/**\r\n * Get density context for a component type.\r\n * @internal\r\n */\r\nfunction getDensityContext(componentType: string): DensityVariantKey {\r\n const contextMap: Record<string, DensityVariantKey> = {\r\n button: 'button',\r\n input: 'input',\r\n textarea: 'input',\r\n select: 'input',\r\n table: 'tableRow',\r\n list: 'listItem',\r\n card: 'card',\r\n menu: 'menu',\r\n dropdown: 'menu',\r\n };\r\n return contextMap[componentType] ?? 'padding';\r\n}\r\n\r\n/**\r\n * Get loading state context for a component type.\r\n * @internal\r\n */\r\nfunction getLoadingStateContext(componentType: string): LoadingStateVariantKey {\r\n const contextMap: Record<string, LoadingStateVariantKey> = {\r\n button: 'button',\r\n input: 'input',\r\n textarea: 'input',\r\n select: 'input',\r\n card: 'card',\r\n form: 'form',\r\n };\r\n return contextMap[componentType] ?? 'visual';\r\n}\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const Factors12to16 = {\r\n // Factor 12: Orientation\r\n ORIENTATIONS,\r\n orientationVariants,\r\n buildOrientationClasses,\r\n // Factor 13: Density\r\n DENSITIES,\r\n densityVariants,\r\n buildDensityClasses,\r\n // Factor 14: Loading State\r\n LOADING_STATES,\r\n loadingStateVariants,\r\n buildLoadingStateClasses,\r\n // Factor 15: Responsive\r\n RESPONSIVE_BREAKPOINTS,\r\n BREAKPOINT_VALUES,\r\n responsiveVisibility,\r\n applyResponsivePrefix,\r\n buildResponsiveClasses,\r\n // Factor 16: Theme\r\n THEMES,\r\n themeVariants,\r\n buildThemeClasses,\r\n getThemeClasses,\r\n // Combined\r\n applyFactors12to16,\r\n};\r\n\r\nexport default Factors12to16;\r\n","/**\r\n * 24-Factor Variant System - Factors 17-24\r\n *\r\n * Factor 17: Spacing - Internal spacing and margins\r\n * Factor 18: Typography - Text styling presets\r\n * Factor 19: Border - Border style and width\r\n * Factor 20: Opacity - Transparency levels\r\n * Factor 21: Overflow - Content overflow behavior\r\n * Factor 22: Cursor - Cursor style on hover\r\n * Factor 23: ZIndex - Stacking order\r\n * Factor 24: Transition - Transition timing and duration\r\n *\r\n * @packageDocumentation\r\n * @module generator/factors-17-24\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n// =============================================================================\r\n// MEMOIZATION CACHE\r\n// =============================================================================\r\n\r\n/**\r\n * LRU-style cache for memoized factor calculations.\r\n * Uses a Map for O(1) lookups with size limiting.\r\n *\r\n * @since 2.1.0\r\n */\r\nconst factorCache = new Map<string, string>();\r\nconst CACHE_MAX_SIZE = 1000;\r\n\r\n/**\r\n * Clear the factor memoization cache.\r\n * Useful for testing or memory management.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function clearFactorCache(): void {\r\n factorCache.clear();\r\n}\r\n\r\n/**\r\n * Get current cache statistics.\r\n *\r\n * @returns Cache size and max size\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getFactorCacheStats(): { size: number; maxSize: number } {\r\n return {\r\n size: factorCache.size,\r\n maxSize: CACHE_MAX_SIZE,\r\n };\r\n}\r\n\r\nimport type {\r\n FactorSpacing,\r\n FactorTypography,\r\n FactorBorder,\r\n FactorOpacity,\r\n FactorOverflow,\r\n FactorCursor,\r\n FactorZIndex,\r\n FactorTransition,\r\n} from './types';\r\n\r\n// =============================================================================\r\n// FACTOR 17: SPACING\r\n// =============================================================================\r\n\r\n/**\r\n * Spacing options constant.\r\n * @since 2.1.0\r\n */\r\nexport const SPACINGS = {\r\n none: 'none',\r\n xs: 'xs',\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n xl: 'xl',\r\n '2xl': '2xl',\r\n '3xl': '3xl',\r\n} as const;\r\n\r\n/**\r\n * Spacing-specific Tailwind classes for different contexts.\r\n * @since 2.1.0\r\n */\r\nexport const spacingVariants = {\r\n /** Padding all sides */\r\n padding: {\r\n none: 'p-0',\r\n xs: 'p-1',\r\n sm: 'p-2',\r\n md: 'p-4',\r\n lg: 'p-6',\r\n xl: 'p-8',\r\n '2xl': 'p-12',\r\n '3xl': 'p-16',\r\n },\r\n /** Padding horizontal */\r\n paddingX: {\r\n none: 'px-0',\r\n xs: 'px-1',\r\n sm: 'px-2',\r\n md: 'px-4',\r\n lg: 'px-6',\r\n xl: 'px-8',\r\n '2xl': 'px-12',\r\n '3xl': 'px-16',\r\n },\r\n /** Padding vertical */\r\n paddingY: {\r\n none: 'py-0',\r\n xs: 'py-1',\r\n sm: 'py-2',\r\n md: 'py-4',\r\n lg: 'py-6',\r\n xl: 'py-8',\r\n '2xl': 'py-12',\r\n '3xl': 'py-16',\r\n },\r\n /** Margin all sides */\r\n margin: {\r\n none: 'm-0',\r\n xs: 'm-1',\r\n sm: 'm-2',\r\n md: 'm-4',\r\n lg: 'm-6',\r\n xl: 'm-8',\r\n '2xl': 'm-12',\r\n '3xl': 'm-16',\r\n },\r\n /** Gap spacing */\r\n gap: {\r\n none: 'gap-0',\r\n xs: 'gap-1',\r\n sm: 'gap-2',\r\n md: 'gap-4',\r\n lg: 'gap-6',\r\n xl: 'gap-8',\r\n '2xl': 'gap-12',\r\n '3xl': 'gap-16',\r\n },\r\n /** Space between children */\r\n space: {\r\n none: 'space-y-0',\r\n xs: 'space-y-1',\r\n sm: 'space-y-2',\r\n md: 'space-y-4',\r\n lg: 'space-y-6',\r\n xl: 'space-y-8',\r\n '2xl': 'space-y-12',\r\n '3xl': 'space-y-16',\r\n },\r\n} as const;\r\n\r\nexport type SpacingVariantKey = keyof typeof spacingVariants;\r\n\r\n/**\r\n * Build spacing classes for a specific context.\r\n *\r\n * @param context - Context (padding, margin, gap, etc.)\r\n * @param spacing - Spacing value\r\n * @returns Tailwind classes for spacing\r\n *\r\n * @example\r\n * ```typescript\r\n * buildSpacingClasses('padding', 'md')\r\n * // => \"p-4\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function buildSpacingClasses(context: SpacingVariantKey, spacing: FactorSpacing): string {\r\n const variant = spacingVariants[context];\r\n return variant[spacing] ?? spacingVariants.padding[spacing];\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 18: TYPOGRAPHY\r\n// =============================================================================\r\n\r\n/**\r\n * Typography options constant.\r\n * @since 2.1.0\r\n */\r\nexport const TYPOGRAPHIES = {\r\n body: 'body',\r\n bodyLarge: 'bodyLarge',\r\n bodySm: 'bodySm',\r\n heading: 'heading',\r\n headingLg: 'headingLg',\r\n headingSm: 'headingSm',\r\n display: 'display',\r\n displayLg: 'displayLg',\r\n displaySm: 'displaySm',\r\n caption: 'caption',\r\n overline: 'overline',\r\n mono: 'mono',\r\n label: 'label',\r\n labelLg: 'labelLg',\r\n labelSm: 'labelSm',\r\n} as const;\r\n\r\n/**\r\n * Typography-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const typographyVariants: Record<FactorTypography, string> = {\r\n body: 'text-base font-normal leading-relaxed',\r\n bodyLarge: 'text-lg font-normal leading-relaxed',\r\n bodySm: 'text-sm font-normal leading-relaxed',\r\n heading: 'text-2xl font-bold leading-tight tracking-tight',\r\n headingLg: 'text-4xl font-bold leading-tight tracking-tight',\r\n headingSm: 'text-xl font-bold leading-tight tracking-tight',\r\n display: 'text-5xl font-extrabold leading-none tracking-tighter',\r\n displayLg: 'text-7xl font-extrabold leading-none tracking-tighter',\r\n displaySm: 'text-4xl font-extrabold leading-none tracking-tighter',\r\n caption: 'text-xs font-normal leading-normal text-neutral-500',\r\n overline: 'text-xs font-semibold uppercase tracking-widest',\r\n mono: 'font-mono text-sm',\r\n label: 'text-sm font-medium leading-none',\r\n labelLg: 'text-base font-medium leading-none',\r\n labelSm: 'text-xs font-medium leading-none',\r\n};\r\n\r\n/**\r\n * Get typography classes for a specific preset.\r\n *\r\n * @param typography - Typography preset\r\n * @returns Tailwind classes for typography\r\n *\r\n * @example\r\n * ```typescript\r\n * getTypographyClasses('heading')\r\n * // => \"text-2xl font-bold leading-tight tracking-tight\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getTypographyClasses(typography: FactorTypography): string {\r\n return typographyVariants[typography] ?? typographyVariants.body;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 19: BORDER\r\n// =============================================================================\r\n\r\n/**\r\n * Border options constant.\r\n * @since 2.1.0\r\n */\r\nexport const BORDERS = {\r\n none: 'none',\r\n subtle: 'subtle',\r\n solid: 'solid',\r\n bold: 'bold',\r\n dashed: 'dashed',\r\n dotted: 'dotted',\r\n double: 'double',\r\n ring: 'ring',\r\n ringBold: 'ringBold',\r\n} as const;\r\n\r\n/**\r\n * Border-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const borderVariants: Record<FactorBorder, string> = {\r\n none: 'border-0',\r\n subtle: 'border border-neutral-200 dark:border-neutral-700',\r\n solid: 'border-2 border-neutral-300 dark:border-neutral-600',\r\n bold: 'border-4 border-neutral-400 dark:border-neutral-500',\r\n dashed: 'border-2 border-dashed border-neutral-300 dark:border-neutral-600',\r\n dotted: 'border-2 border-dotted border-neutral-300 dark:border-neutral-600',\r\n double: 'border-4 border-double border-neutral-300 dark:border-neutral-600',\r\n ring: 'ring-1 ring-neutral-200 dark:ring-neutral-700',\r\n ringBold: 'ring-2 ring-neutral-300 dark:ring-neutral-600',\r\n};\r\n\r\n/**\r\n * Get border classes for a specific style.\r\n *\r\n * @param border - Border style\r\n * @returns Tailwind classes for border\r\n *\r\n * @example\r\n * ```typescript\r\n * getBorderClasses('dashed')\r\n * // => \"border-2 border-dashed border-neutral-300 dark:border-neutral-600\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getBorderClasses(border: FactorBorder): string {\r\n return borderVariants[border] ?? borderVariants.none;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 20: OPACITY\r\n// =============================================================================\r\n\r\n/**\r\n * Opacity options constant.\r\n * @since 2.1.0\r\n */\r\nexport const OPACITIES = {\r\n transparent: 'transparent',\r\n dim: 'dim',\r\n light: 'light',\r\n medium: 'medium',\r\n high: 'high',\r\n full: 'full',\r\n} as const;\r\n\r\n/**\r\n * Opacity-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const opacityVariants: Record<FactorOpacity, string> = {\r\n transparent: 'opacity-0',\r\n dim: 'opacity-25',\r\n light: 'opacity-50',\r\n low: 'opacity-30',\r\n medium: 'opacity-75',\r\n high: 'opacity-90',\r\n full: 'opacity-100',\r\n};\r\n\r\n/**\r\n * Get opacity classes for a specific level.\r\n *\r\n * @param opacity - Opacity level\r\n * @returns Tailwind classes for opacity\r\n *\r\n * @example\r\n * ```typescript\r\n * getOpacityClasses('medium')\r\n * // => \"opacity-75\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getOpacityClasses(opacity: FactorOpacity): string {\r\n return opacityVariants[opacity] ?? opacityVariants.full;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 21: OVERFLOW\r\n// =============================================================================\r\n\r\n/**\r\n * Overflow options constant.\r\n * @since 2.1.0\r\n */\r\nexport const OVERFLOWS = {\r\n visible: 'visible',\r\n hidden: 'hidden',\r\n scroll: 'scroll',\r\n auto: 'auto',\r\n clip: 'clip',\r\n scrollX: 'scrollX',\r\n scrollY: 'scrollY',\r\n hiddenX: 'hiddenX',\r\n hiddenY: 'hiddenY',\r\n} as const;\r\n\r\n/**\r\n * Overflow-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const overflowVariants: Record<FactorOverflow, string> = {\r\n visible: 'overflow-visible',\r\n hidden: 'overflow-hidden',\r\n scroll: 'overflow-scroll',\r\n auto: 'overflow-auto',\r\n clip: 'overflow-clip',\r\n scrollX: 'overflow-x-scroll overflow-y-hidden',\r\n scrollY: 'overflow-y-scroll overflow-x-hidden',\r\n hiddenX: 'overflow-x-hidden',\r\n hiddenY: 'overflow-y-hidden',\r\n};\r\n\r\n/**\r\n * Get overflow classes for a specific behavior.\r\n *\r\n * @param overflow - Overflow behavior\r\n * @returns Tailwind classes for overflow\r\n *\r\n * @example\r\n * ```typescript\r\n * getOverflowClasses('scrollY')\r\n * // => \"overflow-y-scroll overflow-x-hidden\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getOverflowClasses(overflow: FactorOverflow): string {\r\n return overflowVariants[overflow] ?? overflowVariants.visible;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 22: CURSOR\r\n// =============================================================================\r\n\r\n/**\r\n * Cursor options constant.\r\n * @since 2.1.0\r\n */\r\nexport const CURSORS = {\r\n default: 'default',\r\n pointer: 'pointer',\r\n grab: 'grab',\r\n grabbing: 'grabbing',\r\n move: 'move',\r\n notAllowed: 'notAllowed',\r\n wait: 'wait',\r\n progress: 'progress',\r\n text: 'text',\r\n crosshair: 'crosshair',\r\n help: 'help',\r\n zoomIn: 'zoomIn',\r\n zoomOut: 'zoomOut',\r\n none: 'none',\r\n} as const;\r\n\r\n/**\r\n * Cursor-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const cursorVariants: Record<FactorCursor, string> = {\r\n default: 'cursor-default',\r\n pointer: 'cursor-pointer',\r\n grab: 'cursor-grab',\r\n grabbing: 'cursor-grabbing',\r\n move: 'cursor-move',\r\n notAllowed: 'cursor-not-allowed',\r\n wait: 'cursor-wait',\r\n progress: 'cursor-progress',\r\n text: 'cursor-text',\r\n crosshair: 'cursor-crosshair',\r\n help: 'cursor-help',\r\n zoomIn: 'cursor-zoom-in',\r\n zoomOut: 'cursor-zoom-out',\r\n none: 'cursor-none',\r\n};\r\n\r\n/**\r\n * Get cursor classes for a specific style.\r\n *\r\n * @param cursor - Cursor style\r\n * @returns Tailwind classes for cursor\r\n *\r\n * @example\r\n * ```typescript\r\n * getCursorClasses('pointer')\r\n * // => \"cursor-pointer\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getCursorClasses(cursor: FactorCursor): string {\r\n return cursorVariants[cursor] ?? cursorVariants.default;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 23: Z-INDEX\r\n// =============================================================================\r\n\r\n/**\r\n * Z-Index options constant.\r\n * @since 2.1.0\r\n */\r\nexport const Z_INDICES = {\r\n auto: 'auto',\r\n base: 'base',\r\n docked: 'docked',\r\n dropdown: 'dropdown',\r\n sticky: 'sticky',\r\n banner: 'banner',\r\n overlay: 'overlay',\r\n modal: 'modal',\r\n popover: 'popover',\r\n skipLink: 'skipLink',\r\n toast: 'toast',\r\n tooltip: 'tooltip',\r\n max: 'max',\r\n} as const;\r\n\r\n/**\r\n * Z-Index numeric values (Chakra UI-inspired).\r\n * @since 2.1.0\r\n */\r\nexport const zIndexValues: Record<FactorZIndex, number | 'auto'> = {\r\n auto: 'auto',\r\n base: 0,\r\n docked: 10,\r\n dropdown: 1000,\r\n sticky: 1100,\r\n banner: 1200,\r\n overlay: 1300,\r\n modal: 1400,\r\n drawer: 1350,\r\n popover: 1500,\r\n skipLink: 1600,\r\n toast: 1700,\r\n tooltip: 1800,\r\n max: 9999,\r\n};\r\n\r\n/**\r\n * Z-Index-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const zIndexVariants: Record<FactorZIndex, string> = {\r\n auto: 'z-auto',\r\n base: 'z-0',\r\n docked: 'z-10',\r\n dropdown: 'z-[1000]',\r\n sticky: 'z-[1100]',\r\n banner: 'z-[1200]',\r\n overlay: 'z-[1300]',\r\n modal: 'z-[1400]',\r\n drawer: 'z-[1350]',\r\n popover: 'z-[1500]',\r\n skipLink: 'z-[1600]',\r\n toast: 'z-[1700]',\r\n tooltip: 'z-[1800]',\r\n max: 'z-[9999]',\r\n};\r\n\r\n/**\r\n * Get z-index classes for a specific layer.\r\n *\r\n * @param zIndex - Z-Index layer\r\n * @returns Tailwind classes for z-index\r\n *\r\n * @example\r\n * ```typescript\r\n * getZIndexClasses('modal')\r\n * // => \"z-[1400]\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getZIndexClasses(zIndex: FactorZIndex): string {\r\n return zIndexVariants[zIndex] ?? zIndexVariants.auto;\r\n}\r\n\r\n/**\r\n * Get numeric z-index value for a layer.\r\n *\r\n * @param zIndex - Z-Index layer\r\n * @returns Numeric z-index value\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getZIndexValue(zIndex: FactorZIndex): number | 'auto' {\r\n return zIndexValues[zIndex] ?? 'auto';\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 24: TRANSITION\r\n// =============================================================================\r\n\r\n/**\r\n * Transition options constant.\r\n * @since 2.1.0\r\n */\r\nexport const TRANSITIONS = {\r\n none: 'none',\r\n instant: 'instant',\r\n fast: 'fast',\r\n default: 'default',\r\n slow: 'slow',\r\n slower: 'slower',\r\n smooth: 'smooth',\r\n spring: 'spring',\r\n bounce: 'bounce',\r\n easeIn: 'easeIn',\r\n easeOut: 'easeOut',\r\n easeInOut: 'easeInOut',\r\n} as const;\r\n\r\n/**\r\n * Transition-specific Tailwind classes.\r\n * @since 2.1.0\r\n */\r\nexport const transitionVariants: Record<FactorTransition, string> = {\r\n none: 'transition-none',\r\n instant: 'transition-all duration-0',\r\n fast: 'transition-all duration-100 ease-out',\r\n default: 'transition-all duration-200 ease-in-out',\r\n slow: 'transition-all duration-300 ease-in-out',\r\n slower: 'transition-all duration-500 ease-in-out',\r\n smooth: 'transition-all duration-400 ease-out',\r\n spring: 'transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)]',\r\n bounce: 'transition-all duration-500 ease-[cubic-bezier(0.68,-0.55,0.265,1.55)]',\r\n easeIn: 'transition-all duration-200 ease-in',\r\n easeOut: 'transition-all duration-200 ease-out',\r\n easeInOut: 'transition-all duration-200 ease-in-out',\r\n};\r\n\r\n/**\r\n * Get transition classes for a specific timing.\r\n *\r\n * @param transition - Transition timing\r\n * @returns Tailwind classes for transition\r\n *\r\n * @example\r\n * ```typescript\r\n * getTransitionClasses('spring')\r\n * // => \"transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)]\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getTransitionClasses(transition: FactorTransition): string {\r\n return transitionVariants[transition] ?? transitionVariants.default;\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 17-24 CONFIG TYPE\r\n// =============================================================================\r\n\r\n/**\r\n * Factor 17-24 configuration interface.\r\n * @since 2.1.0\r\n */\r\nexport interface Factors17to24Config {\r\n /** Factor 17: Spacing */\r\n spacing?: FactorSpacing;\r\n /** Factor 18: Typography */\r\n typography?: FactorTypography;\r\n /** Factor 19: Border */\r\n border?: FactorBorder;\r\n /** Factor 20: Opacity */\r\n opacity?: FactorOpacity;\r\n /** Factor 21: Overflow */\r\n overflow?: FactorOverflow;\r\n /** Factor 22: Cursor */\r\n cursor?: FactorCursor;\r\n /** Factor 23: Z-Index */\r\n zIndex?: FactorZIndex;\r\n /** Factor 24: Transition */\r\n transition?: FactorTransition;\r\n}\r\n\r\n/**\r\n * Generate a stable cache key for a Factor 17-24 config.\r\n *\r\n * @param config - Factor configuration\r\n * @param spacingContext - Spacing context\r\n * @returns Stable cache key string\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateConfigCacheKey(\r\n config: Factors17to24Config,\r\n spacingContext: SpacingVariantKey\r\n): string {\r\n return `${spacingContext}|${config.spacing ?? ''}|${config.typography ?? ''}|${config.border ?? ''}|${config.opacity ?? ''}|${config.overflow ?? ''}|${config.cursor ?? ''}|${config.zIndex ?? ''}|${config.transition ?? ''}`;\r\n}\r\n\r\n/**\r\n * Internal implementation of applyFactors17to24 without caching.\r\n */\r\nfunction applyFactors17to24Internal(\r\n config: Factors17to24Config,\r\n spacingContext: SpacingVariantKey\r\n): string {\r\n const classes: string[] = [];\r\n\r\n // Factor 17: Spacing\r\n if (config.spacing !== undefined) {\r\n classes.push(buildSpacingClasses(spacingContext, config.spacing));\r\n }\r\n\r\n // Factor 18: Typography\r\n if (config.typography !== undefined) {\r\n classes.push(getTypographyClasses(config.typography));\r\n }\r\n\r\n // Factor 19: Border\r\n if (config.border !== undefined) {\r\n classes.push(getBorderClasses(config.border));\r\n }\r\n\r\n // Factor 20: Opacity\r\n if (config.opacity !== undefined && config.opacity !== 'full') {\r\n classes.push(getOpacityClasses(config.opacity));\r\n }\r\n\r\n // Factor 21: Overflow\r\n if (config.overflow !== undefined && config.overflow !== 'visible') {\r\n classes.push(getOverflowClasses(config.overflow));\r\n }\r\n\r\n // Factor 22: Cursor\r\n if (config.cursor !== undefined && config.cursor !== 'default') {\r\n classes.push(getCursorClasses(config.cursor));\r\n }\r\n\r\n // Factor 23: Z-Index\r\n if (config.zIndex !== undefined && config.zIndex !== 'auto') {\r\n classes.push(getZIndexClasses(config.zIndex));\r\n }\r\n\r\n // Factor 24: Transition\r\n if (config.transition !== undefined && config.transition !== 'none') {\r\n classes.push(getTransitionClasses(config.transition));\r\n }\r\n\r\n return classes.filter(Boolean).join(' ');\r\n}\r\n\r\n/**\r\n * Apply all Factor 17-24 configurations to generate classes.\r\n * Results are memoized for performance.\r\n *\r\n * @param config - Factor 17-24 configuration\r\n * @param spacingContext - Context for spacing (padding, margin, gap)\r\n * @returns Combined class string\r\n *\r\n * @example\r\n * ```typescript\r\n * applyFactors17to24({\r\n * spacing: 'md',\r\n * typography: 'heading',\r\n * border: 'solid',\r\n * transition: 'spring'\r\n * })\r\n * // => \"p-4 text-2xl font-bold leading-tight tracking-tight border-2 ...\"\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function applyFactors17to24(\r\n config: Factors17to24Config,\r\n spacingContext: SpacingVariantKey = 'padding'\r\n): string {\r\n // Generate cache key\r\n const cacheKey = `apply17to24:${generateConfigCacheKey(config, spacingContext)}`;\r\n\r\n // Check cache\r\n const cached = factorCache.get(cacheKey);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n\r\n // Compute result\r\n const result = applyFactors17to24Internal(config, spacingContext);\r\n\r\n // Store in cache with LRU eviction\r\n if (factorCache.size >= CACHE_MAX_SIZE) {\r\n const firstKey = factorCache.keys().next().value as string;\r\n factorCache.delete(firstKey);\r\n }\r\n factorCache.set(cacheKey, result);\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// DEFAULTS\r\n// =============================================================================\r\n\r\n/**\r\n * Default values for Factor 17-24.\r\n * @since 2.1.0\r\n */\r\nexport const FACTOR_17_24_DEFAULTS: Required<Factors17to24Config> = {\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n zIndex: 'auto',\r\n transition: 'default',\r\n};\r\n\r\n/**\r\n * Get default value for a specific factor.\r\n *\r\n * @param factor - Factor name\r\n * @returns Default value for the factor\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function getFactor17to24Default<K extends keyof Factors17to24Config>(\r\n factor: K\r\n): NonNullable<Factors17to24Config[K]> {\r\n return FACTOR_17_24_DEFAULTS[factor];\r\n}\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const Factors17to24 = {\r\n // Factor 17: Spacing\r\n SPACINGS,\r\n spacingVariants,\r\n buildSpacingClasses,\r\n // Factor 18: Typography\r\n TYPOGRAPHIES,\r\n typographyVariants,\r\n getTypographyClasses,\r\n // Factor 19: Border\r\n BORDERS,\r\n borderVariants,\r\n getBorderClasses,\r\n // Factor 20: Opacity\r\n OPACITIES,\r\n opacityVariants,\r\n getOpacityClasses,\r\n // Factor 21: Overflow\r\n OVERFLOWS,\r\n overflowVariants,\r\n getOverflowClasses,\r\n // Factor 22: Cursor\r\n CURSORS,\r\n cursorVariants,\r\n getCursorClasses,\r\n // Factor 23: Z-Index\r\n Z_INDICES,\r\n zIndexValues,\r\n zIndexVariants,\r\n getZIndexClasses,\r\n getZIndexValue,\r\n // Factor 24: Transition\r\n TRANSITIONS,\r\n transitionVariants,\r\n getTransitionClasses,\r\n // Combined\r\n FACTOR_17_24_DEFAULTS,\r\n getFactor17to24Default,\r\n applyFactors17to24,\r\n // Cache utilities\r\n clearFactorCache,\r\n getFactorCacheStats,\r\n};\r\n\r\nexport default Factors17to24;\r\n","/**\r\n * Style Generator\r\n *\r\n * Core style generation engine that creates component styles from design tokens.\r\n * This module provides the main API for generating component-specific CSS classes.\r\n *\r\n * @packageDocumentation\r\n * @module generator/StyleGenerator\r\n * @since 2.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n\r\nimport { getShapeClass, getPositionClass, buildIconPositionClasses } from './factors-1-6';\r\nimport {\r\n buildOrientationClasses,\r\n buildDensityClasses,\r\n buildLoadingStateClasses,\r\n buildResponsiveClasses,\r\n buildThemeClasses,\r\n type OrientationVariantKey,\r\n type DensityVariantKey,\r\n type LoadingStateVariantKey,\r\n} from './factors-12-16';\r\nimport {\r\n buildSpacingClasses,\r\n getTypographyClasses,\r\n getBorderClasses,\r\n getOpacityClasses,\r\n getOverflowClasses,\r\n getCursorClasses,\r\n getZIndexClasses,\r\n getTransitionClasses,\r\n type SpacingVariantKey,\r\n} from './factors-17-24';\r\n\r\nimport type { ComponentType, StyleConfig, GeneratedStyles, StyleGeneratorFn } from './types';\r\nimport type { DesignTokens } from '../tokens/schema';\r\n\r\n// =============================================================================\r\n// UTILITY FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Combine class names, filtering out falsy values.\r\n *\r\n * @param classes - Class names to combine\r\n * @returns Combined class string\r\n *\r\n * @example\r\n * ```typescript\r\n * cn('btn', isActive && 'btn-active', size === 'lg' && 'btn-lg')\r\n * // => \"btn btn-active btn-lg\" or \"btn\" depending on conditions\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function cn(...classes: (string | undefined | null | false)[]): string {\r\n return classes.filter(Boolean).join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// COMPONENT STYLE GENERATORS\r\n// =============================================================================\r\n\r\n/**\r\n * Generate button styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Button style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateButtonStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const {\r\n variant = 'filled',\r\n size = 'md',\r\n colorScheme = 'primary',\r\n disabled = false,\r\n loading = false,\r\n fullWidth = false,\r\n } = config;\r\n const iconOnly = config['iconOnly'] === true;\r\n\r\n // Base styles\r\n const base = cn(\r\n 'inline-flex items-center justify-center font-medium',\r\n 'transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\r\n 'select-none whitespace-nowrap',\r\n fullWidth && 'w-full'\r\n );\r\n\r\n // Variant styles\r\n const variantStyles: Record<string, string> = {\r\n filled: cn(\r\n 'bg-primary-500 text-white',\r\n 'hover:bg-primary-600',\r\n 'active:bg-primary-700',\r\n 'shadow-sm hover:shadow-md'\r\n ),\r\n outlined: cn(\r\n 'bg-transparent border-2 border-primary-500 text-primary-500',\r\n 'hover:bg-primary-50',\r\n 'active:bg-primary-100'\r\n ),\r\n ghost: cn('bg-transparent text-primary-500', 'hover:bg-primary-50', 'active:bg-primary-100'),\r\n soft: cn('bg-primary-100 text-primary-700', 'hover:bg-primary-200', 'active:bg-primary-300'),\r\n link: cn(\r\n 'bg-transparent text-primary-500 underline-offset-4',\r\n 'hover:underline',\r\n 'active:text-primary-700'\r\n ),\r\n };\r\n\r\n // Size styles\r\n const sizeStyles: Record<string, string> = {\r\n xs: iconOnly ? 'h-6 w-6 text-xs' : 'h-6 px-2 text-xs gap-1',\r\n sm: iconOnly ? 'h-8 w-8 text-sm' : 'h-8 px-3 text-sm gap-1.5',\r\n md: iconOnly ? 'h-10 w-10 text-base' : 'h-10 px-4 text-sm gap-2',\r\n lg: iconOnly ? 'h-11 w-11 text-lg' : 'h-11 px-5 text-base gap-2',\r\n xl: iconOnly ? 'h-12 w-12 text-xl' : 'h-12 px-6 text-base gap-2.5',\r\n };\r\n\r\n // State styles\r\n const stateStyles = cn(\r\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\r\n loading && 'relative cursor-wait'\r\n );\r\n\r\n // Color scheme\r\n const colorSchemeStyles = cn(\r\n colorScheme === 'primary' && '',\r\n colorScheme === 'secondary' && 'text-secondary-500',\r\n colorScheme === 'success' && 'text-success-500',\r\n colorScheme === 'error' && 'text-error-500'\r\n );\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['filled'] ?? '',\r\n size: sizeStyles[size ?? 'md'] ?? sizeStyles['md'] ?? '',\r\n state: stateStyles,\r\n colorScheme: colorSchemeStyles,\r\n };\r\n}\r\n\r\n/**\r\n * Generate input styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Input style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateInputStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'outlined', size = 'md', disabled = false } = config;\r\n const hasError = config['hasError'] === true;\r\n const hasSuccess = config['hasSuccess'] === true;\r\n const hasPrefix = config['hasPrefix'] === true;\r\n const hasSuffix = config['hasSuffix'] === true;\r\n\r\n const base = cn(\r\n 'w-full transition-all',\r\n 'focus:outline-none focus:ring-2 focus:ring-offset-0',\r\n hasPrefix && 'pl-10',\r\n hasSuffix && 'pr-10'\r\n );\r\n\r\n const variantStyles: Record<string, string> = {\r\n outlined: cn(\r\n 'bg-transparent border rounded-md',\r\n 'border-neutral-300',\r\n 'hover:border-neutral-400',\r\n 'focus:border-primary-500 focus:ring-primary-500/20'\r\n ),\r\n filled: cn(\r\n 'bg-neutral-100 border-0 rounded-md',\r\n 'hover:bg-neutral-200',\r\n 'focus:bg-white focus:ring-primary-500/20'\r\n ),\r\n underlined: cn(\r\n 'bg-transparent border-0 border-b-2 rounded-none',\r\n 'border-neutral-300',\r\n 'hover:border-neutral-400',\r\n 'focus:border-primary-500'\r\n ),\r\n unstyled: 'bg-transparent border-0 p-0',\r\n };\r\n\r\n const sizeStyles: Record<string, string> = {\r\n xs: 'h-7 px-2 text-xs',\r\n sm: 'h-8 px-2.5 text-sm',\r\n md: 'h-10 px-3 text-sm',\r\n lg: 'h-11 px-4 text-base',\r\n xl: 'h-12 px-4 text-base',\r\n };\r\n\r\n const stateStyles = cn(\r\n disabled && 'opacity-50 cursor-not-allowed bg-neutral-100',\r\n hasError && 'border-error-500 focus:border-error-500 focus:ring-error-500/20',\r\n hasSuccess && 'border-success-500 focus:border-success-500 focus:ring-success-500/20'\r\n );\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['outlined'] ?? '',\r\n size: sizeStyles[size ?? 'md'] ?? sizeStyles['md'] ?? '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate card styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Card style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateCardStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'elevated', size = 'md' } = config;\r\n const hoverable = config['hoverable'] === true;\r\n const clickable = config['clickable'] === true;\r\n const noPadding = config['noPadding'] === true;\r\n\r\n const base = cn(\r\n 'rounded-lg overflow-hidden',\r\n !noPadding && 'p-4',\r\n hoverable && 'transition-shadow hover:shadow-lg',\r\n clickable && 'cursor-pointer'\r\n );\r\n\r\n const variantStyles: Record<string, string> = {\r\n elevated: 'bg-white shadow-md',\r\n outlined: 'bg-white border border-neutral-200',\r\n filled: 'bg-neutral-50',\r\n ghost: 'bg-transparent',\r\n };\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: !noPadding ? 'p-3' : '',\r\n md: !noPadding ? 'p-4' : '',\r\n lg: !noPadding ? 'p-6' : '',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['elevated'] ?? '',\r\n size: sizeStyles[size ?? 'md'] ?? '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate alert styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Alert style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateAlertStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'soft', colorScheme = 'info' } = config;\r\n const dismissible = config['dismissible'] === true;\r\n const hasIcon = config['hasIcon'] !== false;\r\n\r\n const base = cn('relative rounded-lg p-4', hasIcon && 'pl-12', dismissible && 'pr-10');\r\n\r\n const variantStyles: Record<string, string> = {\r\n filled: 'text-white',\r\n outlined: 'bg-transparent border',\r\n soft: '',\r\n ghost: 'bg-transparent',\r\n };\r\n\r\n const colorSchemeStyles: Record<string, string> = {\r\n info:\r\n variant === 'filled'\r\n ? 'bg-info-500'\r\n : variant === 'soft'\r\n ? 'bg-info-50 text-info-800 border-info-200'\r\n : '',\r\n success:\r\n variant === 'filled'\r\n ? 'bg-success-500'\r\n : variant === 'soft'\r\n ? 'bg-success-50 text-success-800 border-success-200'\r\n : '',\r\n warning:\r\n variant === 'filled'\r\n ? 'bg-warning-500'\r\n : variant === 'soft'\r\n ? 'bg-warning-50 text-warning-800 border-warning-200'\r\n : '',\r\n error:\r\n variant === 'filled'\r\n ? 'bg-error-500'\r\n : variant === 'soft'\r\n ? 'bg-error-50 text-error-800 border-error-200'\r\n : '',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['soft'] ?? '',\r\n size: '',\r\n state: '',\r\n colorScheme: colorSchemeStyles[colorScheme ?? 'info'] ?? colorSchemeStyles['info'] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate badge styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Badge style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateBadgeStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'solid', size = 'md', colorScheme = 'primary' } = config;\r\n const dot = config['dot'] === true;\r\n const pill = config['pill'] === true;\r\n\r\n const base = cn(\r\n 'inline-flex items-center justify-center font-medium',\r\n pill ? 'rounded-full' : 'rounded-md',\r\n dot && 'p-0'\r\n );\r\n\r\n const variantStyles: Record<string, string> = {\r\n solid: 'text-white',\r\n soft: '',\r\n outlined: 'bg-transparent border',\r\n ghost: 'bg-transparent',\r\n };\r\n\r\n const sizeStyles: Record<string, string> = {\r\n xs: dot ? 'h-1.5 w-1.5' : 'h-4 px-1 text-[10px]',\r\n sm: dot ? 'h-2 w-2' : 'h-5 px-1.5 text-xs',\r\n md: dot ? 'h-2.5 w-2.5' : 'h-6 px-2 text-xs',\r\n lg: dot ? 'h-3 w-3' : 'h-7 px-2.5 text-sm',\r\n };\r\n\r\n const colorSchemeStyles: Record<string, string> = {\r\n primary:\r\n variant === 'solid'\r\n ? 'bg-primary-500'\r\n : variant === 'soft'\r\n ? 'bg-primary-100 text-primary-700'\r\n : 'border-primary-500 text-primary-500',\r\n secondary:\r\n variant === 'solid'\r\n ? 'bg-secondary-500'\r\n : variant === 'soft'\r\n ? 'bg-secondary-100 text-secondary-700'\r\n : 'border-secondary-500 text-secondary-500',\r\n success:\r\n variant === 'solid'\r\n ? 'bg-success-500'\r\n : variant === 'soft'\r\n ? 'bg-success-100 text-success-700'\r\n : 'border-success-500 text-success-500',\r\n error:\r\n variant === 'solid'\r\n ? 'bg-error-500'\r\n : variant === 'soft'\r\n ? 'bg-error-100 text-error-700'\r\n : 'border-error-500 text-error-500',\r\n warning:\r\n variant === 'solid'\r\n ? 'bg-warning-500'\r\n : variant === 'soft'\r\n ? 'bg-warning-100 text-warning-700'\r\n : 'border-warning-500 text-warning-500',\r\n info:\r\n variant === 'solid'\r\n ? 'bg-info-500'\r\n : variant === 'soft'\r\n ? 'bg-info-100 text-info-700'\r\n : 'border-info-500 text-info-500',\r\n neutral:\r\n variant === 'solid'\r\n ? 'bg-neutral-500'\r\n : variant === 'soft'\r\n ? 'bg-neutral-100 text-neutral-700'\r\n : 'border-neutral-500 text-neutral-500',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['solid'] ?? '',\r\n size: sizeStyles[size ?? 'md'] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: colorSchemeStyles[colorScheme ?? 'primary'] ?? colorSchemeStyles['primary'] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate modal styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Modal style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateModalStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n const centered = config['centered'] !== false;\r\n const scrollBehavior = config['scrollBehavior'] ?? 'inside';\r\n\r\n const base = cn(\r\n 'relative bg-white rounded-lg shadow-xl',\r\n 'max-h-[90vh]',\r\n scrollBehavior === 'inside' && 'overflow-hidden',\r\n scrollBehavior === 'outside' && 'overflow-visible'\r\n );\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'w-full max-w-sm',\r\n md: 'w-full max-w-md',\r\n lg: 'w-full max-w-lg',\r\n xl: 'w-full max-w-xl',\r\n full: 'w-full max-w-none mx-4',\r\n };\r\n\r\n return {\r\n base,\r\n variant: centered ? 'flex items-center justify-center' : '',\r\n size: sizeStyles[size ?? 'md'] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate tabs styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Tabs style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateTabsStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'line' } = config;\r\n const orientation = config['orientation'] ?? 'horizontal';\r\n const fitted = config['fitted'] === true;\r\n\r\n const base = cn(\r\n 'flex',\r\n orientation === 'horizontal' ? 'flex-row' : 'flex-col',\r\n fitted && 'w-full'\r\n );\r\n\r\n const variantStyles: Record<string, string> = {\r\n line: 'border-b border-neutral-200',\r\n enclosed: 'border border-neutral-200 rounded-lg p-1 bg-neutral-50',\r\n soft: 'bg-neutral-100 rounded-lg p-1',\r\n solid: '',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['line'] ?? '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate progress styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Progress style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.0.0\r\n */\r\nfunction generateProgressStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'linear', size = 'md', colorScheme = 'primary' } = config;\r\n const indeterminate = config['indeterminate'] === true;\r\n const striped = config['striped'] === true;\r\n const animated = config['animated'] === true;\r\n\r\n const base = cn(\r\n variant === 'linear' ? 'w-full overflow-hidden rounded-full bg-neutral-200' : 'inline-block',\r\n striped && 'bg-stripes',\r\n animated && 'animate-progress'\r\n );\r\n\r\n const sizeStyles: Record<string, string> = {\r\n xs: variant === 'linear' ? 'h-1' : 'h-4 w-4',\r\n sm: variant === 'linear' ? 'h-2' : 'h-6 w-6',\r\n md: variant === 'linear' ? 'h-3' : 'h-8 w-8',\r\n lg: variant === 'linear' ? 'h-4' : 'h-12 w-12',\r\n xl: variant === 'linear' ? 'h-5' : 'h-16 w-16',\r\n };\r\n\r\n const colorSchemeStyles: Record<string, string> = {\r\n primary: 'bg-primary-500',\r\n secondary: 'bg-secondary-500',\r\n success: 'bg-success-500',\r\n error: 'bg-error-500',\r\n };\r\n\r\n return {\r\n base,\r\n variant: indeterminate ? 'animate-indeterminate' : '',\r\n size: sizeStyles[size ?? 'md'] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: colorSchemeStyles[colorScheme ?? 'primary'] ?? colorSchemeStyles['primary'] ?? '',\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// SIMPLE STYLE GENERATORS\r\n// =============================================================================\r\n\r\nfunction generateTextareaStyles(\r\n tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(tokens, config);\r\n}\r\n\r\nfunction generateSelectStyles(\r\n tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(tokens, config);\r\n}\r\n\r\nfunction generateCheckboxStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'h-4 w-4 rounded border-neutral-300',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateRadioStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'h-4 w-4 rounded-full border-neutral-300',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateRadioGroupStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex flex-col gap-2',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateSwitchStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative inline-flex h-6 w-11 rounded-full',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateSliderStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative w-full h-2 rounded-full bg-neutral-200',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateDrawerStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'fixed bg-white shadow-xl',\r\n variant: '',\r\n size: 'w-80',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generatePopoverStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'bg-white rounded-lg shadow-lg border p-4',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateTooltipStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'bg-neutral-900 text-white text-sm px-2 py-1 rounded',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateSheetStyles(\r\n tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateDrawerStyles(tokens, config);\r\n}\r\n\r\nfunction generateToastStyles(\r\n tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateAlertStyles(tokens, config);\r\n}\r\n\r\nfunction generateChipStyles(\r\n tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateBadgeStyles(tokens, { ...config, pill: true });\r\n}\r\n\r\nfunction generateSpinnerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const size = config.size ?? 'md';\r\n const sizes: Record<string, string> = {\r\n xs: 'h-3 w-3',\r\n sm: 'h-4 w-4',\r\n md: 'h-6 w-6',\r\n lg: 'h-8 w-8',\r\n xl: 'h-12 w-12',\r\n };\r\n return {\r\n base: cn('animate-spin', sizes[size] ?? sizes['md']),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: 'text-primary-500',\r\n };\r\n}\r\n\r\nfunction generateSkeletonStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'animate-pulse bg-neutral-200 rounded',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateMenuStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'bg-white rounded-lg shadow-lg border py-1',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateDropdownStyles(\r\n tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateMenuStyles(tokens, config);\r\n}\r\n\r\nfunction generateAccordionStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'border rounded-lg divide-y', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\nfunction generateBreadcrumbStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex items-center space-x-2 text-sm',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generatePaginationStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'flex items-center space-x-1', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\nfunction generateStepperStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'flex items-center', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\nfunction generateAvatarStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const size = config.size ?? 'md';\r\n const sizes: Record<string, string> = {\r\n xs: 'h-6 w-6',\r\n sm: 'h-8 w-8',\r\n md: 'h-10 w-10',\r\n lg: 'h-12 w-12',\r\n xl: 'h-16 w-16',\r\n };\r\n return {\r\n base: cn('rounded-full overflow-hidden bg-neutral-200', sizes[size] ?? sizes['md']),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\nfunction generateTableStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'w-full border-collapse', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\nfunction generateListStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'divide-y divide-neutral-200', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\nfunction generateDividerStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'border-t border-neutral-200', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate link styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - Link style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateLinkStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'default', colorScheme = 'primary', disabled = false } = config;\r\n\r\n const base = cn(\r\n 'inline-flex items-center gap-1 cursor-pointer',\r\n 'transition-colors duration-200',\r\n 'outline-none focus-visible:ring-2 focus-visible:ring-offset-2'\r\n );\r\n\r\n const variantStyles: Record<string, string> = {\r\n default: 'hover:underline',\r\n underline: 'underline underline-offset-2 hover:no-underline',\r\n subtle: 'hover:opacity-80',\r\n nav: 'no-underline hover:bg-neutral-100 dark:hover:bg-neutral-800 px-3 py-2 rounded-md',\r\n };\r\n\r\n const colorSchemeStyles: Record<string, string> = {\r\n primary: 'text-primary-600 hover:text-primary-700 focus-visible:ring-primary-500',\r\n secondary: 'text-neutral-600 hover:text-neutral-900 focus-visible:ring-neutral-500',\r\n success: 'text-success-600 hover:text-success-700 focus-visible:ring-success-500',\r\n warning: 'text-warning-600 hover:text-warning-700 focus-visible:ring-warning-500',\r\n error: 'text-error-600 hover:text-error-700 focus-visible:ring-error-500',\r\n info: 'text-info-600 hover:text-info-700 focus-visible:ring-info-500',\r\n inherit: 'text-inherit',\r\n };\r\n\r\n const stateStyles = disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : '';\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['default'] ?? '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: colorSchemeStyles[colorScheme ?? 'primary'] ?? colorSchemeStyles['primary'] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate nav link styles.\r\n *\r\n * @param _tokens - Design tokens (reserved for future token-based styling)\r\n * @param config - NavLink style configuration\r\n * @returns Generated styles\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNavLinkStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { disabled = false } = config;\r\n const isActive = config['isActive'] === true;\r\n\r\n const base = cn(\r\n 'flex items-center gap-2 px-3 py-2 rounded-md',\r\n 'text-neutral-700 dark:text-neutral-300',\r\n 'transition-colors duration-200',\r\n 'hover:bg-neutral-100 dark:hover:bg-neutral-800'\r\n );\r\n\r\n const activeStyles = isActive\r\n ? 'bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300 font-medium'\r\n : '';\r\n\r\n const stateStyles = disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : '';\r\n\r\n return {\r\n base,\r\n variant: activeStyles,\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// GENERIC STYLE GENERATORS\r\n// =============================================================================\r\n\r\n/**\r\n * Generate generic date/time picker styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateDateTimeStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'outline', size = 'md', disabled = false } = config;\r\n\r\n const base = cn('relative inline-block w-full', 'transition-colors');\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'text-sm',\r\n md: 'text-base',\r\n lg: 'text-lg',\r\n };\r\n\r\n const variantStyles: Record<string, string> = {\r\n outline: 'border border-gray-300 rounded-md',\r\n filled: 'bg-gray-100 border-transparent rounded-md',\r\n flushed: 'border-b border-gray-300',\r\n };\r\n\r\n const stateStyles = disabled ? 'opacity-50 cursor-not-allowed' : '';\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['outline'] ?? '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate box styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateBoxStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: '', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate flex container styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateFlexStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const direction = config['direction'] as string | undefined;\r\n const wrap = config['wrap'] as string | undefined;\r\n const gap = config['gap'] as string | undefined;\r\n\r\n const base = cn(\r\n 'flex',\r\n direction === 'column' && 'flex-col',\r\n direction === 'row-reverse' && 'flex-row-reverse',\r\n direction === 'column-reverse' && 'flex-col-reverse',\r\n wrap === 'wrap' && 'flex-wrap',\r\n gap !== undefined && gap !== '' ? `gap-${gap}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate grid styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateGridStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const columns = config['columns'] as number | undefined;\r\n const gap = config['gap'] as string | undefined;\r\n\r\n const base = cn(\r\n 'grid',\r\n columns !== undefined && columns > 0 ? `grid-cols-${columns}` : undefined,\r\n gap !== undefined && gap !== '' ? `gap-${gap}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate stack (vertical) styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateStackStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const spacing = config['spacing'] as string | undefined;\r\n\r\n const base = cn(\r\n 'flex flex-col',\r\n spacing !== undefined && spacing !== '' ? `gap-${spacing}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate horizontal stack styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateHStackStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const spacing = config['spacing'] as string | undefined;\r\n\r\n const base = cn(\r\n 'flex flex-row items-center',\r\n spacing !== undefined && spacing !== '' ? `gap-${spacing}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate vertical stack styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateVStackStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const spacing = config['spacing'] as string | undefined;\r\n\r\n const base = cn(\r\n 'flex flex-col items-center',\r\n spacing !== undefined && spacing !== '' ? `gap-${spacing}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate center layout styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateCenterStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex items-center justify-center',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate container styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateContainerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const maxW = config['maxW'] as string | undefined;\r\n const centerContent = config['centerContent'] !== false;\r\n\r\n const maxWidthStyles: Record<string, string> = {\r\n sm: 'max-w-screen-sm',\r\n md: 'max-w-screen-md',\r\n lg: 'max-w-screen-lg',\r\n xl: 'max-w-screen-xl',\r\n '2xl': 'max-w-screen-2xl',\r\n full: 'max-w-full',\r\n prose: 'max-w-prose',\r\n };\r\n\r\n const base = cn(\r\n 'w-full px-4',\r\n centerContent && 'mx-auto',\r\n maxWidthStyles[maxW ?? 'lg'] ?? maxWidthStyles['lg']\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate simple grid styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateSimpleGridStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const columns = config['columns'] as number | undefined;\r\n const spacing = config['spacing'] as string | undefined;\r\n\r\n const base = cn(\r\n 'grid',\r\n columns !== undefined && columns > 0 ? `grid-cols-${columns}` : undefined,\r\n spacing !== undefined && spacing !== '' ? `gap-${spacing}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate wrap container styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateWrapStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const spacing = config['spacing'] as string | undefined;\r\n\r\n const base = cn(\r\n 'flex flex-wrap',\r\n spacing !== undefined && spacing !== '' ? `gap-${spacing}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate aspect ratio container styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateAspectRatioStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const ratio = config['ratio'] as string | undefined;\r\n\r\n const ratioStyles: Record<string, string> = {\r\n square: 'aspect-square',\r\n video: 'aspect-video',\r\n '16/9': 'aspect-video',\r\n '4/3': 'aspect-[4/3]',\r\n '1/1': 'aspect-square',\r\n };\r\n\r\n const base = ratioStyles[ratio ?? 'square'] ?? 'aspect-square';\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate spacer styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateSpacerStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'flex-1', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate resizable panel styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateResizablePanelStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative overflow-hidden',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate grid item styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateGridItemStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const colSpan = config['colSpan'] as number | undefined;\r\n const rowSpan = config['rowSpan'] as number | undefined;\r\n\r\n const base = cn(\r\n colSpan !== undefined && colSpan > 0 ? `col-span-${colSpan}` : undefined,\r\n rowSpan !== undefined && rowSpan > 0 ? `row-span-${rowSpan}` : undefined\r\n );\r\n\r\n return { base, variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate notification styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNotificationStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'info', size = 'md' } = config;\r\n\r\n const base = cn(\r\n 'flex items-start p-4 rounded-lg shadow-lg',\r\n 'bg-white dark:bg-neutral-800',\r\n 'border border-neutral-200 dark:border-neutral-700'\r\n );\r\n\r\n const variantStyles: Record<string, string> = {\r\n info: 'border-l-4 border-l-info-500',\r\n success: 'border-l-4 border-l-success-500',\r\n warning: 'border-l-4 border-l-warning-500',\r\n error: 'border-l-4 border-l-error-500',\r\n };\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'p-3 text-sm',\r\n md: 'p-4 text-base',\r\n lg: 'p-5 text-lg',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate notification badge styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNotificationBadgeStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { colorScheme = 'error', size = 'md' } = config;\r\n\r\n const base = 'absolute inline-flex items-center justify-center rounded-full font-medium';\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'h-4 min-w-4 text-xs px-1',\r\n md: 'h-5 min-w-5 text-xs px-1.5',\r\n lg: 'h-6 min-w-6 text-sm px-2',\r\n };\r\n\r\n const colorStyles: Record<string, string> = {\r\n primary: 'bg-primary-500 text-white',\r\n error: 'bg-error-500 text-white',\r\n warning: 'bg-warning-500 text-white',\r\n success: 'bg-success-500 text-white',\r\n };\r\n\r\n return {\r\n base,\r\n variant: '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: colorStyles[colorScheme] ?? colorStyles['error'] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate loading overlay styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateLoadingOverlayStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: cn(\r\n 'absolute inset-0 flex items-center justify-center',\r\n 'bg-white/80 dark:bg-neutral-900/80',\r\n 'backdrop-blur-sm z-50'\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate loading state styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateLoadingStateStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex flex-col items-center justify-center gap-4',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate empty state styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateEmptyStateStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'p-4 gap-2',\r\n md: 'p-8 gap-4',\r\n lg: 'p-12 gap-6',\r\n };\r\n\r\n return {\r\n base: cn('flex flex-col items-center justify-center text-center', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate error state styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateErrorStateStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex flex-col items-center justify-center gap-4 p-8 text-center text-error-600',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate result state styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateResultStateStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const status = config['status'] as string | undefined;\r\n\r\n const statusStyles: Record<string, string> = {\r\n success: 'text-success-600',\r\n error: 'text-error-600',\r\n warning: 'text-warning-600',\r\n info: 'text-info-600',\r\n };\r\n\r\n return {\r\n base: cn(\r\n 'flex flex-col items-center justify-center gap-4 p-8 text-center',\r\n statusStyles[status ?? 'success']\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate callout styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateCalloutStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'info' } = config;\r\n\r\n const base = cn('flex gap-3 p-4 rounded-lg', 'border border-current/10');\r\n\r\n const variantStyles: Record<string, string> = {\r\n info: 'bg-info-50 text-info-800 dark:bg-info-900/20 dark:text-info-200',\r\n success: 'bg-success-50 text-success-800 dark:bg-success-900/20 dark:text-success-200',\r\n warning: 'bg-warning-50 text-warning-800 dark:bg-warning-900/20 dark:text-warning-200',\r\n error: 'bg-error-50 text-error-800 dark:bg-error-900/20 dark:text-error-200',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['info'] ?? '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate banner styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateBannerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'info' } = config;\r\n\r\n const base = 'flex items-center justify-between gap-4 px-4 py-3';\r\n\r\n const variantStyles: Record<string, string> = {\r\n info: 'bg-info-500 text-white',\r\n success: 'bg-success-500 text-white',\r\n warning: 'bg-warning-500 text-white',\r\n error: 'bg-error-500 text-white',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['info'] ?? '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate meter styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateMeterStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'h-2',\r\n md: 'h-3',\r\n lg: 'h-4',\r\n };\r\n\r\n return {\r\n base: cn('w-full rounded-full bg-neutral-200 dark:bg-neutral-700', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate status badge styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateStatusBadgeStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'default', size = 'md' } = config;\r\n\r\n const base = 'inline-flex items-center gap-1.5 rounded-full font-medium';\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'px-2 py-0.5 text-xs',\r\n md: 'px-2.5 py-1 text-sm',\r\n lg: 'px-3 py-1.5 text-base',\r\n };\r\n\r\n const variantStyles: Record<string, string> = {\r\n default: 'bg-neutral-100 text-neutral-700',\r\n success: 'bg-success-100 text-success-700',\r\n warning: 'bg-warning-100 text-warning-700',\r\n error: 'bg-error-100 text-error-700',\r\n info: 'bg-info-100 text-info-700',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['default'] ?? '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate status dot styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateStatusDotStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'default', size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'h-2 w-2',\r\n md: 'h-2.5 w-2.5',\r\n lg: 'h-3 w-3',\r\n };\r\n\r\n const variantStyles: Record<string, string> = {\r\n default: 'bg-neutral-400',\r\n success: 'bg-success-500',\r\n warning: 'bg-warning-500',\r\n error: 'bg-error-500',\r\n info: 'bg-info-500',\r\n };\r\n\r\n return {\r\n base: 'inline-block rounded-full',\r\n variant: variantStyles[variant] ?? variantStyles['default'] ?? '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate progress circle styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateProgressCircleStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md', colorScheme = 'primary' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'h-8 w-8',\r\n md: 'h-12 w-12',\r\n lg: 'h-16 w-16',\r\n };\r\n\r\n const colorStyles: Record<string, string> = {\r\n primary: 'text-primary-500',\r\n success: 'text-success-500',\r\n warning: 'text-warning-500',\r\n error: 'text-error-500',\r\n };\r\n\r\n return {\r\n base: 'relative inline-flex items-center justify-center',\r\n variant: '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: colorStyles[colorScheme] ?? colorStyles['primary'] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate progress steps styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateProgressStepsStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const orientation = config['orientation'] as string | undefined;\r\n\r\n return {\r\n base: cn('flex', orientation === 'vertical' ? 'flex-col' : 'flex-row items-center'),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate navbar styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNavbarStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const position = config['position'] as string | undefined;\r\n\r\n const positionStyles: Record<string, string> = {\r\n fixed: 'fixed top-0 left-0 right-0 z-50',\r\n sticky: 'sticky top-0 z-50',\r\n static: '',\r\n };\r\n\r\n return {\r\n base: cn(\r\n 'flex items-center justify-between px-4 py-3',\r\n 'bg-white dark:bg-neutral-900',\r\n 'border-b border-neutral-200 dark:border-neutral-700',\r\n positionStyles[position ?? 'static']\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate nav group styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNavGroupStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex flex-col gap-1',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate nav item styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNavItemStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { disabled = false } = config;\r\n const isActive = config['isActive'] === true;\r\n\r\n const base = cn(\r\n 'flex items-center gap-2 px-3 py-2 rounded-md',\r\n 'transition-colors cursor-pointer',\r\n 'hover:bg-neutral-100 dark:hover:bg-neutral-800'\r\n );\r\n\r\n const activeStyles = isActive\r\n ? 'bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300 font-medium'\r\n : 'text-neutral-700 dark:text-neutral-300';\r\n\r\n const stateStyles = disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : '';\r\n\r\n return {\r\n base,\r\n variant: activeStyles,\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate sidebar styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateSidebarStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'w-56',\r\n md: 'w-64',\r\n lg: 'w-72',\r\n };\r\n\r\n return {\r\n base: cn(\r\n 'flex flex-col h-full',\r\n 'bg-white dark:bg-neutral-900',\r\n 'border-r border-neutral-200 dark:border-neutral-700',\r\n sizeStyles[size]\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate sidebar group styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateSidebarGroupStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'flex flex-col gap-1 py-2',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate sidebar item styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateSidebarItemStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { disabled = false } = config;\r\n const isActive = config['isActive'] === true;\r\n\r\n const base = cn(\r\n 'flex items-center gap-3 px-3 py-2 rounded-md',\r\n 'transition-colors cursor-pointer',\r\n 'hover:bg-neutral-100 dark:hover:bg-neutral-800'\r\n );\r\n\r\n const activeStyles = isActive\r\n ? 'bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300 font-medium'\r\n : 'text-neutral-700 dark:text-neutral-300';\r\n\r\n const stateStyles = disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : '';\r\n\r\n return {\r\n base,\r\n variant: activeStyles,\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate command palette styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateCommandPaletteStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'max-w-md',\r\n md: 'max-w-lg',\r\n lg: 'max-w-2xl',\r\n };\r\n\r\n return {\r\n base: cn(\r\n 'w-full rounded-lg shadow-2xl',\r\n 'bg-white dark:bg-neutral-800',\r\n 'border border-neutral-200 dark:border-neutral-700',\r\n sizeStyles[size]\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate data table styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateDataTableStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'simple', size = 'md' } = config;\r\n\r\n const base = 'w-full border-collapse';\r\n\r\n const variantStyles: Record<string, string> = {\r\n simple: '',\r\n striped:\r\n '[&_tbody_tr:nth-child(odd)]:bg-neutral-50 dark:[&_tbody_tr:nth-child(odd)]:bg-neutral-800/50',\r\n bordered: '[&_th]:border [&_td]:border border-neutral-200 dark:border-neutral-700',\r\n };\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: '[&_th]:px-3 [&_th]:py-2 [&_td]:px-3 [&_td]:py-2 text-sm',\r\n md: '[&_th]:px-4 [&_th]:py-3 [&_td]:px-4 [&_td]:py-3 text-base',\r\n lg: '[&_th]:px-6 [&_th]:py-4 [&_td]:px-6 [&_td]:py-4 text-lg',\r\n };\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate stat styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateStatStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'p-3',\r\n md: 'p-4',\r\n lg: 'p-6',\r\n };\r\n\r\n return {\r\n base: cn('flex flex-col gap-1', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate timeline styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateTimelineStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const orientation = config['orientation'] as string | undefined;\r\n\r\n return {\r\n base: cn('relative', orientation === 'horizontal' ? 'flex flex-row' : 'flex flex-col'),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate virtual list styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateVirtualListStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative overflow-auto',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate infinite scroll styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInfiniteScrollStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate confirmation modal styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateConfirmationModalStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'default', size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n };\r\n\r\n const variantStyles: Record<string, string> = {\r\n default: '',\r\n danger: '[&_[data-confirm-button]]:bg-error-600 [&_[data-confirm-button]]:hover:bg-error-700',\r\n warning:\r\n '[&_[data-confirm-button]]:bg-warning-600 [&_[data-confirm-button]]:hover:bg-warning-700',\r\n };\r\n\r\n return {\r\n base: cn('w-full p-6 rounded-lg shadow-xl', 'bg-white dark:bg-neutral-800', sizeStyles[size]),\r\n variant: variantStyles[variant] ?? '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate alert dialog styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateAlertDialogStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n };\r\n\r\n return {\r\n base: cn('w-full p-6 rounded-lg shadow-xl', 'bg-white dark:bg-neutral-800', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate portal styles (no visual styles needed).\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generatePortalStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: '', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate focus trap styles (no visual styles needed).\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateFocusTrapStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: '', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate close button styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateCloseButtonStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md', disabled = false } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'h-6 w-6',\r\n md: 'h-8 w-8',\r\n lg: 'h-10 w-10',\r\n };\r\n\r\n const stateStyles = disabled\r\n ? 'opacity-50 cursor-not-allowed'\r\n : 'hover:bg-neutral-100 dark:hover:bg-neutral-700';\r\n\r\n return {\r\n base: cn(\r\n 'inline-flex items-center justify-center rounded-md',\r\n 'text-neutral-500 hover:text-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-200',\r\n 'transition-colors focus:outline-none focus-visible:ring-2',\r\n sizeStyles[size]\r\n ),\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate icon button styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateIconButtonStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { variant = 'ghost', size = 'md', disabled = false, colorScheme = 'neutral' } = config;\r\n\r\n const base = cn(\r\n 'inline-flex items-center justify-center rounded-md',\r\n 'transition-all focus:outline-none focus-visible:ring-2',\r\n 'select-none'\r\n );\r\n\r\n const sizeStyles: Record<string, string> = {\r\n xs: 'h-6 w-6',\r\n sm: 'h-8 w-8',\r\n md: 'h-10 w-10',\r\n lg: 'h-12 w-12',\r\n xl: 'h-14 w-14',\r\n };\r\n\r\n const variantStyles: Record<string, string> = {\r\n solid: 'bg-neutral-900 text-white hover:bg-neutral-800',\r\n ghost: 'hover:bg-neutral-100 dark:hover:bg-neutral-800',\r\n outline: 'border border-neutral-300 hover:bg-neutral-50',\r\n link: 'hover:underline',\r\n };\r\n\r\n const colorStyles: Record<string, string> = {\r\n neutral: '',\r\n primary: 'text-primary-600 hover:text-primary-700',\r\n success: 'text-success-600 hover:text-success-700',\r\n warning: 'text-warning-600 hover:text-warning-700',\r\n error: 'text-error-600 hover:text-error-700',\r\n };\r\n\r\n const stateStyles = disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : '';\r\n\r\n return {\r\n base,\r\n variant: variantStyles[variant] ?? variantStyles['ghost'] ?? '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: stateStyles,\r\n colorScheme: colorStyles[colorScheme] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate link overlay styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateLinkOverlayStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative [&>a]:after:absolute [&>a]:after:inset-0',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate icon styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateIconStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md', colorScheme = 'currentColor' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n xs: 'h-3 w-3',\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6',\r\n xl: 'h-8 w-8',\r\n };\r\n\r\n const colorStyles: Record<string, string> = {\r\n currentColor: 'text-current',\r\n primary: 'text-primary-600',\r\n success: 'text-success-600',\r\n warning: 'text-warning-600',\r\n error: 'text-error-600',\r\n neutral: 'text-neutral-600',\r\n };\r\n\r\n return {\r\n base: 'inline-block flex-shrink-0',\r\n variant: '',\r\n size: sizeStyles[size] ?? sizeStyles['md'] ?? '',\r\n state: '',\r\n colorScheme: colorStyles[colorScheme] ?? colorStyles['currentColor'] ?? '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate color picker styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateColorPickerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md', disabled = false } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'w-48',\r\n md: 'w-64',\r\n lg: 'w-80',\r\n };\r\n\r\n const stateStyles = disabled ? 'opacity-50 pointer-events-none' : '';\r\n\r\n return {\r\n base: cn(\r\n 'inline-block rounded-lg shadow-lg',\r\n 'bg-white dark:bg-neutral-800',\r\n 'border border-neutral-200 dark:border-neutral-700',\r\n 'p-4',\r\n sizeStyles[size]\r\n ),\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate color swatch styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateColorSwatchStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md', disabled = false } = config;\r\n const shape = config['shape'] as string | undefined;\r\n const isSelected = config['isSelected'] === true;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n xs: 'h-4 w-4',\r\n sm: 'h-6 w-6',\r\n md: 'h-8 w-8',\r\n lg: 'h-10 w-10',\r\n xl: 'h-12 w-12',\r\n };\r\n\r\n const shapeStyles: Record<string, string> = {\r\n square: 'rounded-none',\r\n rounded: 'rounded-md',\r\n circle: 'rounded-full',\r\n };\r\n\r\n const stateStyles = cn(\r\n disabled && 'opacity-50 cursor-not-allowed',\r\n isSelected && 'ring-2 ring-offset-2 ring-primary-500'\r\n );\r\n\r\n return {\r\n base: cn(\r\n 'inline-block cursor-pointer',\r\n 'transition-transform hover:scale-110',\r\n sizeStyles[size],\r\n shapeStyles[shape ?? 'rounded']\r\n ),\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate collapse styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateCollapseStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'overflow-hidden transition-all duration-200',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate scroll area styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateScrollAreaStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'relative overflow-auto',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate scroll to top styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateScrollToTopStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'h-8 w-8',\r\n md: 'h-10 w-10',\r\n lg: 'h-12 w-12',\r\n };\r\n\r\n return {\r\n base: cn(\r\n 'fixed bottom-4 right-4 z-50',\r\n 'inline-flex items-center justify-center rounded-full',\r\n 'bg-primary-600 text-white shadow-lg',\r\n 'hover:bg-primary-700 transition-all',\r\n sizeStyles[size]\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate show/hide styles (no visual styles needed).\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateShowStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: '', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate hide styles (no visual styles needed).\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateHideStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return { base: 'hidden', variant: '', size: '', state: '', colorScheme: '' };\r\n}\r\n\r\n/**\r\n * Generate visually hidden styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateVisuallyHiddenStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'sr-only',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate transition styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateTransitionStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const type = config['type'] as string | undefined;\r\n\r\n const typeStyles: Record<string, string> = {\r\n fade: 'transition-opacity duration-200',\r\n scale: 'transition-transform duration-200',\r\n slide: 'transition-transform duration-200',\r\n all: 'transition-all duration-200',\r\n };\r\n\r\n return {\r\n base: typeStyles[type ?? 'all'] ?? typeStyles['all'] ?? '',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate scale fade styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateScaleFadeStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'transition-all duration-200 ease-out',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate slide fade styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateSlideFadeStyles(\r\n _tokens: DesignTokens,\r\n _config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return {\r\n base: 'transition-all duration-200 ease-out',\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate form control styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateFormControlStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { disabled = false } = config;\r\n const isInvalid = config['isInvalid'] === true;\r\n const isRequired = config['isRequired'] === true;\r\n\r\n const stateStyles = cn(\r\n disabled && 'opacity-50 pointer-events-none',\r\n isInvalid && '[&_input]:border-error-500 [&_label]:text-error-500',\r\n isRequired &&\r\n '[&_label]:after:content-[\"*\"] [&_label]:after:ml-0.5 [&_label]:after:text-error-500'\r\n );\r\n\r\n return {\r\n base: 'flex flex-col gap-1.5',\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate textarea autosize styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateTextareaAutosizeStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateTextareaStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate combobox styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateComboboxStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateSelectStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate autocomplete styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateAutocompleteStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateSelectStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate multi-select styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateMultiSelectStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateSelectStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate number input styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateNumberInputStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate range slider styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateRangeSliderStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateSliderStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate rating styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateRatingStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md', disabled = false } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'text-lg gap-0.5',\r\n md: 'text-xl gap-1',\r\n lg: 'text-2xl gap-1.5',\r\n };\r\n\r\n const stateStyles = disabled ? 'opacity-50 pointer-events-none' : '';\r\n\r\n return {\r\n base: cn('inline-flex items-center', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: 'text-warning-400',\r\n };\r\n}\r\n\r\n/**\r\n * Generate pin input styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generatePinInputStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: '[&_input]:h-8 [&_input]:w-8 [&_input]:text-sm gap-2',\r\n md: '[&_input]:h-10 [&_input]:w-10 [&_input]:text-base gap-2',\r\n lg: '[&_input]:h-12 [&_input]:w-12 [&_input]:text-lg gap-3',\r\n };\r\n\r\n return {\r\n base: cn('inline-flex items-center', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate input otp styles (alias for pin input).\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInputOtpStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generatePinInputStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate input password styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInputPasswordStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate input search styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInputSearchStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate input phone styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInputPhoneStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate input currency styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInputCurrencyStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateInputStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate input group styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateInputGroupStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: '[&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md [&>*:not(:first-child):not(:last-child)]:rounded-none',\r\n md: '[&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md [&>*:not(:first-child):not(:last-child)]:rounded-none',\r\n lg: '[&>*:first-child]:rounded-l-lg [&>*:last-child]:rounded-r-lg [&>*:not(:first-child):not(:last-child)]:rounded-none',\r\n };\r\n\r\n return {\r\n base: cn('flex [&>*:not(:first-child)]:-ml-px', sizeStyles[size]),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate tag input styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateTagInputStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const styles = generateInputStyles(_tokens, config);\r\n return {\r\n ...styles,\r\n base: cn(styles.base, 'flex flex-wrap gap-1 min-h-[40px]'),\r\n };\r\n}\r\n\r\n/**\r\n * Generate rich text editor styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateRichTextEditorStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { disabled = false } = config;\r\n\r\n const stateStyles = disabled ? 'opacity-50 pointer-events-none' : '';\r\n\r\n return {\r\n base: cn(\r\n 'border border-neutral-300 rounded-lg overflow-hidden',\r\n 'bg-white dark:bg-neutral-800'\r\n ),\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate date picker styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateDatePickerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateDateTimeStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate date range picker styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateDateRangePickerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateDateTimeStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate date time picker styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateDateTimePickerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateDateTimeStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate time picker styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateTimePickerStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateDateTimeStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate calendar styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateCalendarStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { size = 'md' } = config;\r\n\r\n const sizeStyles: Record<string, string> = {\r\n sm: 'p-2 text-sm',\r\n md: 'p-3 text-base',\r\n lg: 'p-4 text-lg',\r\n };\r\n\r\n return {\r\n base: cn(\r\n 'inline-block rounded-lg',\r\n 'bg-white dark:bg-neutral-800',\r\n 'border border-neutral-200 dark:border-neutral-700',\r\n sizeStyles[size]\r\n ),\r\n variant: '',\r\n size: '',\r\n state: '',\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate file upload styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateFileUploadStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n const { disabled = false } = config;\r\n\r\n const stateStyles = disabled ? 'opacity-50 pointer-events-none' : '';\r\n\r\n return {\r\n base: cn(\r\n 'relative w-full',\r\n 'border-2 border-dashed border-neutral-300 dark:border-neutral-600',\r\n 'rounded-lg p-6',\r\n 'transition-colors hover:border-primary-500'\r\n ),\r\n variant: '',\r\n size: '',\r\n state: stateStyles,\r\n colorScheme: '',\r\n };\r\n}\r\n\r\n/**\r\n * Generate file dropzone styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateFileDropzoneStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateFileUploadStyles(_tokens, config);\r\n}\r\n\r\n/**\r\n * Generate image upload styles.\r\n *\r\n * @since 2.1.0\r\n */\r\nfunction generateImageUploadStyles(\r\n _tokens: DesignTokens,\r\n config: StyleConfig\r\n): Omit<GeneratedStyles, 'className'> {\r\n return generateFileUploadStyles(_tokens, config);\r\n}\r\n\r\n// =============================================================================\r\n// STYLE GENERATOR REGISTRY\r\n// =============================================================================\r\n\r\n/**\r\n * Registry of all component style generators.\r\n *\r\n * @internal\r\n * @since 2.0.0\r\n */\r\nconst styleGenerators: Record<ComponentType, StyleGeneratorFn<DesignTokens>> = {\r\n // Form Controls\r\n button: generateButtonStyles,\r\n input: generateInputStyles,\r\n textarea: generateTextareaStyles,\r\n select: generateSelectStyles,\r\n checkbox: generateCheckboxStyles,\r\n radio: generateRadioStyles,\r\n radioGroup: generateRadioGroupStyles,\r\n switch: generateSwitchStyles,\r\n slider: generateSliderStyles,\r\n numberInput: generateNumberInputStyles,\r\n rangeSlider: generateRangeSliderStyles,\r\n rating: generateRatingStyles,\r\n pinInput: generatePinInputStyles,\r\n inputOtp: generateInputOtpStyles,\r\n inputPassword: generateInputPasswordStyles,\r\n inputSearch: generateInputSearchStyles,\r\n inputPhone: generateInputPhoneStyles,\r\n inputCurrency: generateInputCurrencyStyles,\r\n inputGroup: generateInputGroupStyles,\r\n tagInput: generateTagInputStyles,\r\n multiSelect: generateMultiSelectStyles,\r\n combobox: generateComboboxStyles,\r\n autocomplete: generateAutocompleteStyles,\r\n richTextEditor: generateRichTextEditorStyles,\r\n\r\n // Date & Time\r\n datePicker: generateDatePickerStyles,\r\n dateRangePicker: generateDateRangePickerStyles,\r\n dateTimePicker: generateDateTimePickerStyles,\r\n timePicker: generateTimePickerStyles,\r\n calendar: generateCalendarStyles,\r\n\r\n // File\r\n fileUpload: generateFileUploadStyles,\r\n fileDropzone: generateFileDropzoneStyles,\r\n imageUpload: generateImageUploadStyles,\r\n\r\n // Layout\r\n card: generateCardStyles,\r\n modal: generateModalStyles,\r\n drawer: generateDrawerStyles,\r\n popover: generatePopoverStyles,\r\n tooltip: generateTooltipStyles,\r\n sheet: generateSheetStyles,\r\n box: generateBoxStyles,\r\n flex: generateFlexStyles,\r\n grid: generateGridStyles,\r\n gridItem: generateGridItemStyles,\r\n stack: generateStackStyles,\r\n hstack: generateHStackStyles,\r\n vstack: generateVStackStyles,\r\n center: generateCenterStyles,\r\n container: generateContainerStyles,\r\n simpleGrid: generateSimpleGridStyles,\r\n wrap: generateWrapStyles,\r\n aspectRatio: generateAspectRatioStyles,\r\n spacer: generateSpacerStyles,\r\n resizablePanel: generateResizablePanelStyles,\r\n\r\n // Feedback\r\n alert: generateAlertStyles,\r\n toast: generateToastStyles,\r\n badge: generateBadgeStyles,\r\n chip: generateChipStyles,\r\n progress: generateProgressStyles,\r\n progressCircle: generateProgressCircleStyles,\r\n progressSteps: generateProgressStepsStyles,\r\n spinner: generateSpinnerStyles,\r\n skeleton: generateSkeletonStyles,\r\n notification: generateNotificationStyles,\r\n notificationBadge: generateNotificationBadgeStyles,\r\n loadingOverlay: generateLoadingOverlayStyles,\r\n loadingState: generateLoadingStateStyles,\r\n emptyState: generateEmptyStateStyles,\r\n errorState: generateErrorStateStyles,\r\n resultState: generateResultStateStyles,\r\n callout: generateCalloutStyles,\r\n banner: generateBannerStyles,\r\n meter: generateMeterStyles,\r\n statusBadge: generateStatusBadgeStyles,\r\n statusDot: generateStatusDotStyles,\r\n\r\n // Navigation\r\n tabs: generateTabsStyles,\r\n menu: generateMenuStyles,\r\n dropdown: generateDropdownStyles,\r\n accordion: generateAccordionStyles,\r\n breadcrumb: generateBreadcrumbStyles,\r\n pagination: generatePaginationStyles,\r\n stepper: generateStepperStyles,\r\n link: generateLinkStyles,\r\n navLink: generateNavLinkStyles,\r\n navbar: generateNavbarStyles,\r\n navGroup: generateNavGroupStyles,\r\n navItem: generateNavItemStyles,\r\n sidebar: generateSidebarStyles,\r\n sidebarGroup: generateSidebarGroupStyles,\r\n sidebarItem: generateSidebarItemStyles,\r\n commandPalette: generateCommandPaletteStyles,\r\n\r\n // Data Display\r\n avatar: generateAvatarStyles,\r\n table: generateTableStyles,\r\n dataTable: generateDataTableStyles,\r\n list: generateListStyles,\r\n divider: generateDividerStyles,\r\n stat: generateStatStyles,\r\n timeline: generateTimelineStyles,\r\n virtualList: generateVirtualListStyles,\r\n infiniteScroll: generateInfiniteScrollStyles,\r\n\r\n // Overlay\r\n confirmationModal: generateConfirmationModalStyles,\r\n alertDialog: generateAlertDialogStyles,\r\n portal: generatePortalStyles,\r\n focusTrap: generateFocusTrapStyles,\r\n\r\n // Utility\r\n closeButton: generateCloseButtonStyles,\r\n iconButton: generateIconButtonStyles,\r\n linkOverlay: generateLinkOverlayStyles,\r\n icon: generateIconStyles,\r\n colorPicker: generateColorPickerStyles,\r\n colorSwatch: generateColorSwatchStyles,\r\n collapse: generateCollapseStyles,\r\n scrollArea: generateScrollAreaStyles,\r\n scrollToTop: generateScrollToTopStyles,\r\n show: generateShowStyles,\r\n hide: generateHideStyles,\r\n visuallyHidden: generateVisuallyHiddenStyles,\r\n\r\n // Animation\r\n transition: generateTransitionStyles,\r\n scaleFade: generateScaleFadeStyles,\r\n slideFade: generateSlideFadeStyles,\r\n\r\n // Form Layout\r\n formControl: generateFormControlStyles,\r\n textareaAutosize: generateTextareaAutosizeStyles,\r\n};\r\n\r\n// =============================================================================\r\n// MAIN API\r\n// =============================================================================\r\n\r\n/**\r\n * Generate component styles from design tokens.\r\n *\r\n * @param component - Component type\r\n * @param tokens - Design tokens from the token system\r\n * @param config - Style configuration\r\n * @returns Generated styles with combined className\r\n *\r\n * @example\r\n * ```typescript\r\n * const styles = generateStyles('button', tokens, {\r\n * variant: 'filled',\r\n * size: 'md',\r\n * colorScheme: 'primary',\r\n * });\r\n *\r\n * return <button className={styles.className}>Click me</button>;\r\n * ```\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function generateStyles(\r\n component: ComponentType,\r\n tokens: DesignTokens,\r\n config: StyleConfig = {}\r\n): GeneratedStyles {\r\n const generator = styleGenerators[component];\r\n\r\n if (generator === undefined) {\r\n throw new Error(`[StyleGenerator] Unknown component type: ${component}`);\r\n }\r\n\r\n const styles = generator(tokens, config);\r\n\r\n // Build base className from component-specific styles\r\n let baseClassName = cn(\r\n styles.base,\r\n styles.variant,\r\n styles.size,\r\n styles.state,\r\n styles.colorScheme\r\n );\r\n\r\n // Apply 24-Factor enhancements if provided (Factors 4-16)\r\n\r\n // Factor 4: Shape\r\n if (config.factorShape !== undefined) {\r\n baseClassName = cn(baseClassName, getShapeClass(config.factorShape));\r\n }\r\n\r\n // Factor 5: Position\r\n if (config.factorPosition !== undefined) {\r\n baseClassName = cn(baseClassName, getPositionClass(config.factorPosition, false));\r\n }\r\n\r\n // Factor 6: IconPosition\r\n if (config.factorIconPosition !== undefined) {\r\n const iconClasses = buildIconPositionClasses(config.factorIconPosition);\r\n baseClassName = cn(baseClassName, iconClasses.container);\r\n }\r\n\r\n // Factor 7: State\r\n if (config.factorState !== undefined && config.factorState !== 'default') {\r\n baseClassName = cn(baseClassName, getStateClasses(config.factorState));\r\n }\r\n\r\n // Factor 8: Animation\r\n if (config.factorAnimation !== undefined && config.factorAnimation !== 'none') {\r\n baseClassName = cn(baseClassName, getAnimationClasses(config.factorAnimation));\r\n }\r\n\r\n // Factor 9: Elevation\r\n if (config.factorElevation !== undefined && config.factorElevation !== 'none') {\r\n baseClassName = cn(baseClassName, getElevationClasses(config.factorElevation));\r\n }\r\n\r\n // Factor 10: A11y\r\n if (config.factorA11y !== undefined) {\r\n baseClassName = cn(baseClassName, getA11yClasses(config.factorA11y));\r\n }\r\n\r\n // Factor 11: Alignment\r\n if (config.factorJustify !== undefined || config.factorAlign !== undefined) {\r\n baseClassName = cn(\r\n baseClassName,\r\n getAlignmentClasses(config.factorJustify, config.factorAlign)\r\n );\r\n }\r\n\r\n // Factor 12: Orientation\r\n if (config.factorOrientation !== undefined) {\r\n const orientationContext = getOrientationContext(component);\r\n baseClassName = cn(\r\n baseClassName,\r\n buildOrientationClasses(orientationContext, config.factorOrientation)\r\n );\r\n }\r\n\r\n // Factor 13: Density\r\n if (config.factorDensity !== undefined) {\r\n const densityContext = getDensityContext(component);\r\n baseClassName = cn(baseClassName, buildDensityClasses(densityContext, config.factorDensity));\r\n }\r\n\r\n // Factor 14: LoadingState\r\n if (config.factorLoadingState !== undefined && config.factorLoadingState !== 'idle') {\r\n const loadingContext = getLoadingStateContext(component);\r\n baseClassName = cn(\r\n baseClassName,\r\n buildLoadingStateClasses(loadingContext, config.factorLoadingState)\r\n );\r\n }\r\n\r\n // Factor 15: Responsive\r\n if (config.factorResponsive !== undefined) {\r\n baseClassName = cn(baseClassName, buildResponsiveClasses(config.factorResponsive));\r\n }\r\n\r\n // Factor 16: Theme\r\n if (config.factorTheme !== undefined) {\r\n baseClassName = cn(\r\n baseClassName,\r\n buildThemeClasses('background', config.factorTheme),\r\n buildThemeClasses('textPrimary', config.factorTheme),\r\n buildThemeClasses('border', config.factorTheme)\r\n );\r\n }\r\n\r\n // Apply 24-Factor enhancements if provided (Factors 17-24)\r\n\r\n // Factor 17: Spacing\r\n if (config.factorSpacing !== undefined) {\r\n const spacingContext = getSpacingContext(component);\r\n baseClassName = cn(baseClassName, buildSpacingClasses(spacingContext, config.factorSpacing));\r\n }\r\n\r\n // Factor 18: Typography\r\n if (config.factorTypography !== undefined) {\r\n baseClassName = cn(baseClassName, getTypographyClasses(config.factorTypography));\r\n }\r\n\r\n // Factor 19: Border\r\n if (config.factorBorder !== undefined && config.factorBorder !== 'none') {\r\n baseClassName = cn(baseClassName, getBorderClasses(config.factorBorder));\r\n }\r\n\r\n // Factor 20: Opacity\r\n if (config.factorOpacity !== undefined && config.factorOpacity !== 'full') {\r\n baseClassName = cn(baseClassName, getOpacityClasses(config.factorOpacity));\r\n }\r\n\r\n // Factor 21: Overflow\r\n if (config.factorOverflow !== undefined && config.factorOverflow !== 'visible') {\r\n baseClassName = cn(baseClassName, getOverflowClasses(config.factorOverflow));\r\n }\r\n\r\n // Factor 22: Cursor\r\n if (config.factorCursor !== undefined && config.factorCursor !== 'default') {\r\n baseClassName = cn(baseClassName, getCursorClasses(config.factorCursor));\r\n }\r\n\r\n // Factor 23: ZIndex\r\n if (config.factorZIndex !== undefined && config.factorZIndex !== 'auto') {\r\n baseClassName = cn(baseClassName, getZIndexClasses(config.factorZIndex));\r\n }\r\n\r\n // Factor 24: Transition\r\n if (config.factorTransition !== undefined && config.factorTransition !== 'none') {\r\n baseClassName = cn(baseClassName, getTransitionClasses(config.factorTransition));\r\n }\r\n\r\n return {\r\n ...styles,\r\n className: cn(baseClassName, config.className),\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// 16-FACTOR CONTEXT HELPERS (Factors 12-16)\r\n// =============================================================================\r\n\r\n/**\r\n * Get orientation context for a component type (Factor 12).\r\n * @internal\r\n */\r\nfunction getOrientationContext(componentType: ComponentType): OrientationVariantKey {\r\n const contextMap: Partial<Record<ComponentType, OrientationVariantKey>> = {\r\n tabs: 'tabs',\r\n divider: 'divider',\r\n stepper: 'stepper',\r\n list: 'list',\r\n slider: 'slider',\r\n };\r\n return contextMap[componentType] ?? 'flex';\r\n}\r\n\r\n/**\r\n * Get density context for a component type (Factor 13).\r\n * @internal\r\n */\r\nfunction getDensityContext(componentType: ComponentType): DensityVariantKey {\r\n const contextMap: Partial<Record<ComponentType, DensityVariantKey>> = {\r\n button: 'button',\r\n input: 'input',\r\n textarea: 'input',\r\n select: 'input',\r\n table: 'tableRow',\r\n list: 'listItem',\r\n card: 'card',\r\n menu: 'menu',\r\n dropdown: 'menu',\r\n };\r\n return contextMap[componentType] ?? 'padding';\r\n}\r\n\r\n/**\r\n * Get loading state context for a component type (Factor 14).\r\n * @internal\r\n */\r\nfunction getLoadingStateContext(componentType: ComponentType): LoadingStateVariantKey {\r\n const contextMap: Partial<Record<ComponentType, LoadingStateVariantKey>> = {\r\n button: 'button',\r\n input: 'input',\r\n textarea: 'input',\r\n select: 'input',\r\n card: 'card',\r\n };\r\n return contextMap[componentType] ?? 'visual';\r\n}\r\n\r\n// =============================================================================\r\n// 24-FACTOR CONTEXT HELPERS (Factors 17-24)\r\n// =============================================================================\r\n\r\n/**\r\n * Get spacing context for a component type (Factor 17).\r\n * Determines the appropriate spacing type based on component.\r\n * @internal\r\n */\r\nfunction getSpacingContext(componentType: ComponentType): SpacingVariantKey {\r\n const contextMap: Partial<Record<ComponentType, SpacingVariantKey>> = {\r\n button: 'padding',\r\n input: 'padding',\r\n textarea: 'padding',\r\n select: 'padding',\r\n card: 'padding',\r\n modal: 'padding',\r\n alert: 'padding',\r\n list: 'gap',\r\n menu: 'gap',\r\n tabs: 'gap',\r\n stepper: 'gap',\r\n breadcrumb: 'gap',\r\n };\r\n return contextMap[componentType] ?? 'padding';\r\n}\r\n\r\n// =============================================================================\r\n// 16-FACTOR HELPER FUNCTIONS (Factors 7-11)\r\n// =============================================================================\r\n\r\n/**\r\n * Get state-specific classes (Factor 7).\r\n */\r\nfunction getStateClasses(state: string): string {\r\n const stateMap: Record<string, string> = {\r\n hover: 'hover:brightness-95',\r\n focus: 'focus-within:ring-2 focus-within:ring-offset-1',\r\n active: 'active:scale-[0.98]',\r\n disabled: 'opacity-50 cursor-not-allowed pointer-events-none',\r\n loading: 'cursor-wait relative',\r\n error: 'border-error-500 focus:ring-error-500',\r\n success: 'border-success-500 focus:ring-success-500',\r\n };\r\n return stateMap[state] ?? '';\r\n}\r\n\r\n/**\r\n * Get animation-specific classes (Factor 8).\r\n */\r\nfunction getAnimationClasses(animation: string): string {\r\n const animMap: Record<string, string> = {\r\n subtle: 'transition-all duration-150 ease-out',\r\n standard: 'transition-all duration-200 ease-in-out',\r\n smooth: 'transition-all duration-300 ease-out',\r\n bounce: 'transition-all duration-200 ease-out hover:scale-105 active:scale-95',\r\n pulse: 'animate-pulse',\r\n spin: 'animate-spin',\r\n ping: 'animate-ping',\r\n };\r\n return animMap[animation] ?? '';\r\n}\r\n\r\n/**\r\n * Get elevation-specific classes (Factor 9).\r\n */\r\nfunction getElevationClasses(elevation: string): string {\r\n const elevMap: Record<string, string> = {\r\n xs: 'shadow-xs',\r\n sm: 'shadow-sm',\r\n md: 'shadow-md',\r\n lg: 'shadow-lg',\r\n xl: 'shadow-xl',\r\n '2xl': 'shadow-2xl',\r\n inner: 'shadow-inner',\r\n };\r\n return elevMap[elevation] ?? '';\r\n}\r\n\r\n/**\r\n * Get accessibility-specific classes (Factor 10).\r\n */\r\nfunction getA11yClasses(level: string): string {\r\n const focusMap: Record<string, string> = {\r\n standard: 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500',\r\n enhanced:\r\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 focus-visible:ring-4',\r\n maximum: 'focus:outline-none focus:ring-4 focus:ring-offset-4 focus:ring-primary-500',\r\n };\r\n const motionMap: Record<string, string> = {\r\n standard: '',\r\n enhanced: 'motion-reduce:transition-none',\r\n maximum: 'motion-reduce:transition-none motion-reduce:animate-none',\r\n };\r\n return cn(focusMap[level] ?? '', motionMap[level] ?? '');\r\n}\r\n\r\n/**\r\n * Get alignment-specific classes (Factor 11).\r\n */\r\nfunction getAlignmentClasses(justify?: string, items?: string): string {\r\n const justifyMap: Record<string, string> = {\r\n start: 'justify-start',\r\n center: 'justify-center',\r\n end: 'justify-end',\r\n between: 'justify-between',\r\n around: 'justify-around',\r\n evenly: 'justify-evenly',\r\n };\r\n const itemsMap: Record<string, string> = {\r\n start: 'items-start',\r\n center: 'items-center',\r\n end: 'items-end',\r\n stretch: 'items-stretch',\r\n baseline: 'items-baseline',\r\n };\r\n return cn(\r\n justify !== undefined && justify !== '' ? (justifyMap[justify] ?? '') : '',\r\n items !== undefined && items !== '' ? (itemsMap[items] ?? '') : ''\r\n );\r\n}\r\n\r\n/**\r\n * Check if a component type is supported.\r\n *\r\n * @param component - Component type to check\r\n * @returns true if supported\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function isComponentSupported(component: string): component is ComponentType {\r\n return component in styleGenerators;\r\n}\r\n\r\n/**\r\n * Get all supported component types.\r\n *\r\n * @returns Array of supported component types\r\n *\r\n * @since 2.0.0\r\n */\r\nexport function getSupportedComponents(): ComponentType[] {\r\n return Object.keys(styleGenerators) as ComponentType[];\r\n}\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport const StyleGenerator = {\r\n generate: generateStyles,\r\n isSupported: isComponentSupported,\r\n getSupported: getSupportedComponents,\r\n cn,\r\n};\r\n\r\nexport default StyleGenerator;\r\n","/**\r\n * Nikkory Vibe - 16-Factor Variant System\r\n *\r\n * Each component is built from a base structure + 16 customizable factors.\r\n * Change any factor → instant new UI variation.\r\n *\r\n * Factors 1-10: Original system\r\n * Factors 11-16: Extended system (Position+, Alignment, Orientation, Density, Loading, Responsive)\r\n *\r\n * @packageDocumentation\r\n * Powered by Nikkory\r\n */\r\n\r\n// =============================================================================\r\n// FACTOR 1: COLOR/THEME\r\n// =============================================================================\r\n\r\nexport const COLORS = {\r\n // Semantic\r\n primary: 'blue',\r\n secondary: 'purple',\r\n success: 'green',\r\n warning: 'yellow',\r\n error: 'red',\r\n info: 'cyan',\r\n\r\n // Palette\r\n red: 'red',\r\n orange: 'orange',\r\n amber: 'amber',\r\n yellow: 'yellow',\r\n lime: 'lime',\r\n green: 'green',\r\n emerald: 'emerald',\r\n teal: 'teal',\r\n cyan: 'cyan',\r\n sky: 'sky',\r\n blue: 'blue',\r\n indigo: 'indigo',\r\n violet: 'violet',\r\n purple: 'purple',\r\n fuchsia: 'fuchsia',\r\n pink: 'pink',\r\n rose: 'rose',\r\n\r\n // Neutral\r\n slate: 'slate',\r\n gray: 'gray',\r\n zinc: 'zinc',\r\n neutral: 'neutral',\r\n stone: 'stone',\r\n} as const;\r\n\r\nexport type Color = keyof typeof COLORS;\r\n\r\nexport const colorVariants = {\r\n solid: (color: Color): string => `bg-${color}-600 hover:bg-${color}-700 text-white`,\r\n outline: (color: Color): string =>\r\n `border-2 border-${color}-600 text-${color}-600 hover:bg-${color}-50`,\r\n ghost: (color: Color): string => `text-${color}-600 hover:bg-${color}-50`,\r\n soft: (color: Color): string => `bg-${color}-100 text-${color}-700 hover:bg-${color}-200`,\r\n link: (color: Color): string =>\r\n `text-${color}-600 hover:text-${color}-700 underline-offset-4 hover:underline`,\r\n};\r\n\r\n// =============================================================================\r\n// FACTOR 2: SIZE\r\n// =============================================================================\r\n\r\nexport const SIZES = {\r\n xs: 'xs',\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n xl: 'xl',\r\n '2xl': '2xl',\r\n} as const;\r\n\r\nexport type Size = keyof typeof SIZES;\r\n\r\nexport const sizeVariants = {\r\n button: {\r\n xs: 'h-6 px-2 text-xs gap-1',\r\n sm: 'h-8 px-3 text-sm gap-1.5',\r\n md: 'h-10 px-4 text-sm gap-2',\r\n lg: 'h-12 px-6 text-base gap-2',\r\n xl: 'h-14 px-8 text-lg gap-3',\r\n '2xl': 'h-16 px-10 text-xl gap-3',\r\n },\r\n input: {\r\n xs: 'h-6 px-2 text-xs',\r\n sm: 'h-8 px-3 text-sm',\r\n md: 'h-10 px-3 text-sm',\r\n lg: 'h-12 px-4 text-base',\r\n xl: 'h-14 px-5 text-lg',\r\n '2xl': 'h-16 px-6 text-xl',\r\n },\r\n icon: {\r\n xs: 'w-3 h-3',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-8 h-8',\r\n '2xl': 'w-10 h-10',\r\n },\r\n avatar: {\r\n xs: 'w-6 h-6 text-xs',\r\n sm: 'w-8 h-8 text-sm',\r\n md: 'w-10 h-10 text-base',\r\n lg: 'w-12 h-12 text-lg',\r\n xl: 'w-16 h-16 text-xl',\r\n '2xl': 'w-20 h-20 text-2xl',\r\n },\r\n padding: {\r\n xs: 'p-1',\r\n sm: 'p-2',\r\n md: 'p-4',\r\n lg: 'p-6',\r\n xl: 'p-8',\r\n '2xl': 'p-10',\r\n },\r\n gap: {\r\n xs: 'gap-1',\r\n sm: 'gap-2',\r\n md: 'gap-3',\r\n lg: 'gap-4',\r\n xl: 'gap-6',\r\n '2xl': 'gap-8',\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// FACTOR 3: VARIANT/STYLE\r\n// =============================================================================\r\n\r\nexport const VARIANTS = {\r\n solid: 'solid',\r\n outline: 'outline',\r\n ghost: 'ghost',\r\n soft: 'soft',\r\n link: 'link',\r\n} as const;\r\n\r\nexport type Variant = keyof typeof VARIANTS;\r\n\r\n// =============================================================================\r\n// FACTOR 4: SHAPE\r\n// =============================================================================\r\n\r\nexport const SHAPES = {\r\n square: 'rounded-none',\r\n rounded: 'rounded-md',\r\n pill: 'rounded-full',\r\n circle: 'rounded-full aspect-square',\r\n} as const;\r\n\r\nexport type Shape = keyof typeof SHAPES;\r\n\r\n// =============================================================================\r\n// FACTOR 5: POSITION (Extended - 18 positions)\r\n// Dev A: Extended from 12 to 18 positions with start/end variants\r\n// =============================================================================\r\n\r\nexport const POSITIONS = {\r\n // Basic horizontal\r\n left: 'left',\r\n center: 'center',\r\n right: 'right',\r\n\r\n // Basic vertical\r\n top: 'top',\r\n middle: 'middle',\r\n bottom: 'bottom',\r\n\r\n // Corners (6 positions)\r\n 'top-left': 'top-left',\r\n 'top-center': 'top-center',\r\n 'top-right': 'top-right',\r\n 'bottom-left': 'bottom-left',\r\n 'bottom-center': 'bottom-center',\r\n 'bottom-right': 'bottom-right',\r\n\r\n // Left/Right with vertical alignment (6 positions) - NEW\r\n 'left-start': 'left-start',\r\n 'left-center': 'left-center',\r\n 'left-end': 'left-end',\r\n 'right-start': 'right-start',\r\n 'right-center': 'right-center',\r\n 'right-end': 'right-end',\r\n\r\n // Top/Bottom with horizontal alignment (aliases for tooltip/popover) - NEW\r\n 'top-start': 'top-start',\r\n 'top-end': 'top-end',\r\n 'bottom-start': 'bottom-start',\r\n 'bottom-end': 'bottom-end',\r\n} as const;\r\n\r\nexport type Position = keyof typeof POSITIONS;\r\n\r\n/**\r\n * Position-specific classes for different component types.\r\n * Each component type uses positions differently based on its layout needs.\r\n */\r\nexport const positionVariants = {\r\n /** Tooltip positioning relative to trigger element */\r\n tooltip: {\r\n // Top positions\r\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\r\n 'top-start': 'bottom-full left-0 mb-2',\r\n 'top-center': 'bottom-full left-1/2 -translate-x-1/2 mb-2',\r\n 'top-end': 'bottom-full right-0 mb-2',\r\n // Bottom positions\r\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\r\n 'bottom-start': 'top-full left-0 mt-2',\r\n 'bottom-center': 'top-full left-1/2 -translate-x-1/2 mt-2',\r\n 'bottom-end': 'top-full right-0 mt-2',\r\n // Left positions\r\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\r\n 'left-start': 'right-full top-0 mr-2',\r\n 'left-center': 'right-full top-1/2 -translate-y-1/2 mr-2',\r\n 'left-end': 'right-full bottom-0 mr-2',\r\n // Right positions\r\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\r\n 'right-start': 'left-full top-0 ml-2',\r\n 'right-center': 'left-full top-1/2 -translate-y-1/2 ml-2',\r\n 'right-end': 'left-full bottom-0 ml-2',\r\n },\r\n /** Popover positioning (similar to tooltip but larger content) */\r\n popover: {\r\n // Top positions\r\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\r\n 'top-start': 'bottom-full left-0 mb-2',\r\n 'top-center': 'bottom-full left-1/2 -translate-x-1/2 mb-2',\r\n 'top-end': 'bottom-full right-0 mb-2',\r\n // Bottom positions\r\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\r\n 'bottom-start': 'top-full left-0 mt-2',\r\n 'bottom-center': 'top-full left-1/2 -translate-x-1/2 mt-2',\r\n 'bottom-end': 'top-full right-0 mt-2',\r\n // Left positions\r\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\r\n 'left-start': 'right-full top-0 mr-2',\r\n 'left-center': 'right-full top-1/2 -translate-y-1/2 mr-2',\r\n 'left-end': 'right-full bottom-0 mr-2',\r\n // Right positions\r\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\r\n 'right-start': 'left-full top-0 ml-2',\r\n 'right-center': 'left-full top-1/2 -translate-y-1/2 ml-2',\r\n 'right-end': 'left-full bottom-0 ml-2',\r\n },\r\n /** Dropdown menu positioning */\r\n dropdown: {\r\n 'bottom-start': 'top-full left-0 mt-1',\r\n 'bottom-end': 'top-full right-0 mt-1',\r\n 'bottom-center': 'top-full left-1/2 -translate-x-1/2 mt-1',\r\n 'top-start': 'bottom-full left-0 mb-1',\r\n 'top-end': 'bottom-full right-0 mb-1',\r\n 'top-center': 'bottom-full left-1/2 -translate-x-1/2 mb-1',\r\n },\r\n /** Toast notification positioning (fixed to viewport) */\r\n toast: {\r\n 'top-left': 'fixed top-4 left-4',\r\n 'top-center': 'fixed top-4 left-1/2 -translate-x-1/2',\r\n 'top-right': 'fixed top-4 right-4',\r\n 'bottom-left': 'fixed bottom-4 left-4',\r\n 'bottom-center': 'fixed bottom-4 left-1/2 -translate-x-1/2',\r\n 'bottom-right': 'fixed bottom-4 right-4',\r\n },\r\n /** Modal dialog positioning */\r\n modal: {\r\n center: 'fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\r\n top: 'fixed top-20 left-1/2 -translate-x-1/2',\r\n bottom: 'fixed bottom-0 left-0 right-0',\r\n },\r\n /** Drawer/Sidebar positioning */\r\n drawer: {\r\n left: 'fixed left-0 top-0 bottom-0 w-80',\r\n right: 'fixed right-0 top-0 bottom-0 w-80',\r\n top: 'fixed top-0 left-0 right-0 h-auto',\r\n bottom: 'fixed bottom-0 left-0 right-0 h-auto',\r\n },\r\n /** Text/content alignment */\r\n align: {\r\n left: 'text-left justify-start',\r\n center: 'text-center justify-center',\r\n right: 'text-right justify-end',\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// FACTOR 6: ICON/MEDIA\r\n// =============================================================================\r\n\r\nexport const ICON_POSITIONS = {\r\n none: 'none',\r\n left: 'left',\r\n right: 'right',\r\n both: 'both',\r\n only: 'only',\r\n} as const;\r\n\r\nexport type IconPosition = keyof typeof ICON_POSITIONS;\r\n\r\n// =============================================================================\r\n// FACTOR 7: STATE\r\n// =============================================================================\r\n\r\nexport const STATES = {\r\n default: 'default',\r\n hover: 'hover',\r\n focus: 'focus',\r\n active: 'active',\r\n disabled: 'disabled',\r\n loading: 'loading',\r\n error: 'error',\r\n success: 'success',\r\n} as const;\r\n\r\nexport type State = keyof typeof STATES;\r\n\r\nexport const stateVariants = {\r\n disabled: 'opacity-50 cursor-not-allowed pointer-events-none',\r\n loading: 'cursor-wait',\r\n error: 'border-red-500 focus:ring-red-500',\r\n success: 'border-green-500 focus:ring-green-500',\r\n};\r\n\r\n// =============================================================================\r\n// FACTOR 8: ANIMATION\r\n// =============================================================================\r\n\r\nexport const ANIMATIONS = {\r\n none: '',\r\n subtle: 'transition-all duration-150 ease-out',\r\n standard: 'transition-all duration-200 ease-in-out',\r\n smooth: 'transition-all duration-300 ease-out',\r\n bounce: 'transition-all duration-200 ease-out hover:scale-105 active:scale-95',\r\n pulse: 'animate-pulse',\r\n spin: 'animate-spin',\r\n ping: 'animate-ping',\r\n} as const;\r\n\r\nexport type Animation = keyof typeof ANIMATIONS;\r\n\r\nexport const enterAnimations = {\r\n fade: {\r\n initial: 'opacity-0',\r\n animate: 'opacity-100',\r\n },\r\n scale: {\r\n initial: 'opacity-0 scale-95',\r\n animate: 'opacity-100 scale-100',\r\n },\r\n slideUp: {\r\n initial: 'opacity-0 translate-y-4',\r\n animate: 'opacity-100 translate-y-0',\r\n },\r\n slideDown: {\r\n initial: 'opacity-0 -translate-y-4',\r\n animate: 'opacity-100 translate-y-0',\r\n },\r\n slideLeft: {\r\n initial: 'opacity-0 translate-x-4',\r\n animate: 'opacity-100 translate-x-0',\r\n },\r\n slideRight: {\r\n initial: 'opacity-0 -translate-x-4',\r\n animate: 'opacity-100 translate-x-0',\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// FACTOR 9: ELEVATION/SHADOW\r\n// =============================================================================\r\n\r\nexport const ELEVATIONS = {\r\n none: '',\r\n xs: 'shadow-xs',\r\n sm: 'shadow-sm',\r\n md: 'shadow-md',\r\n lg: 'shadow-lg',\r\n xl: 'shadow-xl',\r\n '2xl': 'shadow-2xl',\r\n inner: 'shadow-inner',\r\n glow: (color: Color) => `shadow-lg shadow-${color}-500/25`,\r\n} as const;\r\n\r\nexport type Elevation = keyof Omit<typeof ELEVATIONS, 'glow'> | 'glow';\r\n\r\n// =============================================================================\r\n// FACTOR 10: ACCESSIBILITY\r\n// =============================================================================\r\n\r\nexport const A11Y_LEVELS = {\r\n standard: 'standard',\r\n enhanced: 'enhanced',\r\n maximum: 'maximum',\r\n} as const;\r\n\r\nexport type A11yLevel = keyof typeof A11Y_LEVELS;\r\n\r\nexport const a11yVariants = {\r\n focusRing: {\r\n standard: 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500',\r\n enhanced:\r\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 focus-visible:ring-4',\r\n maximum: 'focus:outline-none focus:ring-4 focus:ring-offset-4 focus:ring-blue-500',\r\n },\r\n contrast: {\r\n standard: '', // WCAG AA\r\n enhanced: '', // WCAG AA with larger text\r\n maximum: 'contrast-more:border-2 contrast-more:border-current', // WCAG AAA\r\n },\r\n motion: {\r\n standard: '',\r\n enhanced: 'motion-reduce:transition-none',\r\n maximum: 'motion-reduce:transition-none motion-reduce:animate-none',\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// FACTOR 11: ALIGNMENT (Dev A)\r\n// =============================================================================\r\n\r\n/**\r\n * Alignment values for flex/grid layouts.\r\n * Used for both main axis (justify) and cross axis (items) alignment.\r\n */\r\nexport const ALIGNMENTS = {\r\n // Main axis (justify-content)\r\n start: 'start',\r\n center: 'center',\r\n end: 'end',\r\n between: 'between',\r\n around: 'around',\r\n evenly: 'evenly',\r\n\r\n // Cross axis (align-items)\r\n stretch: 'stretch',\r\n baseline: 'baseline',\r\n} as const;\r\n\r\nexport type Alignment = keyof typeof ALIGNMENTS;\r\n\r\n/**\r\n * Alignment classes for different layout contexts.\r\n */\r\nexport const alignmentVariants = {\r\n /** Flex justify-content */\r\n justify: {\r\n start: 'justify-start',\r\n center: 'justify-center',\r\n end: 'justify-end',\r\n between: 'justify-between',\r\n around: 'justify-around',\r\n evenly: 'justify-evenly',\r\n },\r\n /** Flex align-items */\r\n items: {\r\n start: 'items-start',\r\n center: 'items-center',\r\n end: 'items-end',\r\n stretch: 'items-stretch',\r\n baseline: 'items-baseline',\r\n },\r\n /** Text alignment */\r\n text: {\r\n start: 'text-left',\r\n center: 'text-center',\r\n end: 'text-right',\r\n },\r\n /** Self alignment (for individual flex/grid items) */\r\n self: {\r\n start: 'self-start',\r\n center: 'self-center',\r\n end: 'self-end',\r\n stretch: 'self-stretch',\r\n },\r\n /** Content alignment (for multi-line flex containers) */\r\n content: {\r\n start: 'content-start',\r\n center: 'content-center',\r\n end: 'content-end',\r\n between: 'content-between',\r\n around: 'content-around',\r\n evenly: 'content-evenly',\r\n stretch: 'content-stretch',\r\n },\r\n /** Place alignment (combined justify + items) */\r\n place: {\r\n start: 'place-items-start',\r\n center: 'place-items-center',\r\n end: 'place-items-end',\r\n stretch: 'place-items-stretch',\r\n },\r\n};\r\n\r\n/**\r\n * Build alignment classes for flex/grid layouts.\r\n *\r\n * @param justify - Main axis alignment (justify-content)\r\n * @param items - Cross axis alignment (align-items)\r\n * @returns Combined Tailwind classes\r\n *\r\n * @example\r\n * ```typescript\r\n * buildAlignmentClasses('center', 'center')\r\n * // Returns: 'justify-center items-center'\r\n *\r\n * buildAlignmentClasses('between')\r\n * // Returns: 'justify-between'\r\n * ```\r\n */\r\nexport function buildAlignmentClasses(justify?: Alignment, items?: Alignment): string {\r\n const classes: string[] = [];\r\n\r\n if (justify !== undefined && justify !== null) {\r\n const justifyClass =\r\n alignmentVariants.justify[justify as keyof typeof alignmentVariants.justify];\r\n if (justifyClass !== undefined) {\r\n classes.push(justifyClass);\r\n }\r\n }\r\n\r\n if (items !== undefined && items !== null) {\r\n const itemsClass = alignmentVariants.items[items as keyof typeof alignmentVariants.items];\r\n if (itemsClass !== undefined) {\r\n classes.push(itemsClass);\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 12: ORIENTATION (Dev A)\r\n// =============================================================================\r\n\r\n/**\r\n * Layout orientation for directional components.\r\n */\r\nexport const ORIENTATIONS = {\r\n horizontal: 'horizontal',\r\n vertical: 'vertical',\r\n} as const;\r\n\r\nexport type Orientation = keyof typeof ORIENTATIONS;\r\n\r\n/**\r\n * Orientation-specific classes for different component types.\r\n */\r\nexport const orientationVariants = {\r\n /** Basic flex direction */\r\n flex: {\r\n horizontal: 'flex-row',\r\n vertical: 'flex-col',\r\n },\r\n /** Stack components (flex with explicit display) */\r\n stack: {\r\n horizontal: 'flex flex-row',\r\n vertical: 'flex flex-col',\r\n },\r\n /** Tabs component orientation */\r\n tabs: {\r\n horizontal: 'flex-row border-b',\r\n vertical: 'flex-col border-r',\r\n },\r\n /** Divider/separator orientation */\r\n divider: {\r\n horizontal: 'w-full h-px',\r\n vertical: 'h-full w-px',\r\n },\r\n /** Stepper component orientation */\r\n stepper: {\r\n horizontal: 'flex flex-row items-center',\r\n vertical: 'flex flex-col items-start',\r\n },\r\n /** Button group orientation */\r\n buttonGroup: {\r\n horizontal:\r\n 'flex flex-row [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none [&>*:not(:first-child):not(:last-child)]:rounded-none',\r\n vertical:\r\n 'flex flex-col [&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none [&>*:not(:first-child):not(:last-child)]:rounded-none',\r\n },\r\n /** Radio/Checkbox group orientation */\r\n group: {\r\n horizontal: 'flex flex-row gap-4',\r\n vertical: 'flex flex-col gap-2',\r\n },\r\n /** List orientation */\r\n list: {\r\n horizontal: 'flex flex-row flex-wrap gap-2',\r\n vertical: 'flex flex-col gap-1',\r\n },\r\n /** Slider/range orientation */\r\n slider: {\r\n horizontal: 'w-full h-2',\r\n vertical: 'w-2 h-full',\r\n },\r\n /** Toolbar orientation */\r\n toolbar: {\r\n horizontal: 'flex flex-row items-center gap-2',\r\n vertical: 'flex flex-col items-stretch gap-2',\r\n },\r\n /** Navigation menu orientation */\r\n nav: {\r\n horizontal: 'flex flex-row items-center gap-6',\r\n vertical: 'flex flex-col gap-1',\r\n },\r\n};\r\n\r\n/**\r\n * Build orientation classes for a specific component type.\r\n *\r\n * @param component - The component type\r\n * @param orientation - The orientation ('horizontal' or 'vertical')\r\n * @returns Tailwind classes for the specified orientation\r\n *\r\n * @example\r\n * ```typescript\r\n * buildOrientationClasses('tabs', 'vertical')\r\n * // Returns: 'flex-col border-r'\r\n *\r\n * buildOrientationClasses('buttonGroup', 'horizontal')\r\n * // Returns: 'flex flex-row [&>*:first-child]:rounded-r-none ...'\r\n * ```\r\n */\r\nexport function buildOrientationClasses(\r\n component: keyof typeof orientationVariants,\r\n orientation: Orientation = 'horizontal'\r\n): string {\r\n const componentVariants = orientationVariants[component];\r\n if (componentVariants === undefined || componentVariants === null) return '';\r\n return componentVariants[orientation] ?? '';\r\n}\r\n\r\n// =============================================================================\r\n// COMBINED VARIANT BUILDER\r\n// =============================================================================\r\n\r\nexport interface VariantConfig {\r\n // Factors 1-10 (Original)\r\n color?: Color;\r\n size?: Size;\r\n variant?: Variant;\r\n shape?: Shape;\r\n position?: Position;\r\n iconPosition?: IconPosition;\r\n state?: State;\r\n animation?: Animation;\r\n elevation?: Elevation;\r\n a11y?: A11yLevel;\r\n\r\n // Factors 11-16 (Extended - Dev A + Dev B)\r\n alignment?: Alignment;\r\n justifyContent?: Alignment;\r\n alignItems?: Alignment;\r\n orientation?: Orientation;\r\n density?: Density;\r\n loadingState?: LoadingState;\r\n responsive?: ResponsiveConfig;\r\n}\r\n\r\n/**\r\n * Build component classes from variant config.\r\n * Supports all 16 factors for maximum customization.\r\n *\r\n * @param component - The component type ('button', 'input', 'avatar')\r\n * @param config - Configuration object with any of the 16 factors\r\n * @returns Combined Tailwind class string\r\n *\r\n * @example\r\n * ```typescript\r\n * const classes = buildVariants('button', {\r\n * color: 'blue',\r\n * size: 'md',\r\n * variant: 'solid',\r\n * shape: 'rounded',\r\n * animation: 'bounce',\r\n * density: 'comfortable',\r\n * loadingState: 'idle',\r\n * });\r\n * ```\r\n */\r\nexport function buildVariants(\r\n component: 'button' | 'input' | 'avatar',\r\n config: VariantConfig\r\n): string {\r\n const classes: string[] = [];\r\n\r\n // Factor 1: Color + Factor 3: Variant (combined for color variants)\r\n if (\r\n config.color !== undefined &&\r\n config.color !== null &&\r\n config.variant !== undefined &&\r\n config.variant !== null\r\n ) {\r\n const colorFn = colorVariants[config.variant];\r\n if (colorFn !== undefined && colorFn !== null) {\r\n classes.push(colorFn(config.color));\r\n }\r\n }\r\n\r\n // Factor 2: Size\r\n if (config.size !== undefined && config.size !== null) {\r\n const sizeMap = sizeVariants[component];\r\n if (sizeMap !== undefined && sizeMap !== null && config.size in sizeMap) {\r\n classes.push(sizeMap[config.size]);\r\n }\r\n }\r\n\r\n // Factor 4: Shape\r\n if (config.shape !== undefined && config.shape !== null) {\r\n classes.push(SHAPES[config.shape]);\r\n }\r\n\r\n // Factor 8: Animation\r\n if (config.animation !== undefined && config.animation !== null) {\r\n classes.push(ANIMATIONS[config.animation]);\r\n }\r\n\r\n // Factor 9: Elevation\r\n if (config.elevation !== undefined && config.elevation !== null && config.elevation !== 'glow') {\r\n const elevation = ELEVATIONS[config.elevation];\r\n if (typeof elevation === 'string') classes.push(elevation);\r\n }\r\n\r\n // Factor 7: State\r\n if (config.state === 'disabled') {\r\n classes.push(stateVariants.disabled);\r\n } else if (config.state === 'loading') {\r\n classes.push(stateVariants.loading);\r\n }\r\n\r\n // Factor 10: Accessibility\r\n if (config.a11y !== undefined) {\r\n classes.push(a11yVariants.focusRing[config.a11y]);\r\n classes.push(a11yVariants.motion[config.a11y]);\r\n }\r\n\r\n // Factor 11: Alignment (Dev A)\r\n if (config.justifyContent !== undefined || config.alignItems !== undefined) {\r\n const alignClasses = buildAlignmentClasses(config.justifyContent, config.alignItems);\r\n if (alignClasses !== '') classes.push(alignClasses);\r\n }\r\n\r\n // Factor 12: Orientation (Dev A)\r\n if (config.orientation !== undefined) {\r\n // For components that support orientation\r\n if (component === 'button') {\r\n // Button groups use orientation for layout\r\n const orientClasses = orientationVariants.flex[config.orientation];\r\n if (orientClasses !== undefined && orientClasses !== '') classes.push(orientClasses);\r\n }\r\n }\r\n\r\n // Factor 14: Density (Dev B)\r\n if (config.density !== undefined) {\r\n const densityMap = densityVariants[component as keyof typeof densityVariants];\r\n if (densityMap !== undefined && config.density in densityMap) {\r\n classes.push(densityMap[config.density]);\r\n }\r\n }\r\n\r\n // Factor 15: Loading State (Dev B)\r\n if (config.loadingState !== undefined && config.loadingState !== 'idle') {\r\n const loadingMap = loadingStateVariants[component as keyof typeof loadingStateVariants];\r\n if (loadingMap !== undefined && config.loadingState in loadingMap) {\r\n classes.push(loadingMap[config.loadingState as keyof typeof loadingMap]);\r\n }\r\n }\r\n\r\n // Factor 16: Responsive (Dev B)\r\n if (config.responsive !== undefined) {\r\n const responsiveClasses = buildResponsiveClasses(config.responsive);\r\n if (responsiveClasses !== undefined && responsiveClasses !== '')\r\n classes.push(responsiveClasses);\r\n }\r\n\r\n return classes.filter(Boolean).join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// PRESET COMBINATIONS\r\n// =============================================================================\r\n\r\nexport const PRESETS = {\r\n // Button presets\r\n 'button-primary': {\r\n color: 'blue' as Color,\r\n size: 'md' as Size,\r\n variant: 'solid' as Variant,\r\n shape: 'rounded' as Shape,\r\n animation: 'standard' as Animation,\r\n elevation: 'sm' as Elevation,\r\n a11y: 'standard' as A11yLevel,\r\n },\r\n 'button-secondary': {\r\n color: 'gray' as Color,\r\n size: 'md' as Size,\r\n variant: 'outline' as Variant,\r\n shape: 'rounded' as Shape,\r\n animation: 'standard' as Animation,\r\n elevation: 'none' as Elevation,\r\n a11y: 'standard' as A11yLevel,\r\n },\r\n 'button-danger': {\r\n color: 'red' as Color,\r\n size: 'md' as Size,\r\n variant: 'solid' as Variant,\r\n shape: 'rounded' as Shape,\r\n animation: 'standard' as Animation,\r\n elevation: 'sm' as Elevation,\r\n a11y: 'standard' as A11yLevel,\r\n },\r\n 'button-ghost': {\r\n color: 'gray' as Color,\r\n size: 'md' as Size,\r\n variant: 'ghost' as Variant,\r\n shape: 'rounded' as Shape,\r\n animation: 'subtle' as Animation,\r\n elevation: 'none' as Elevation,\r\n a11y: 'standard' as A11yLevel,\r\n },\r\n 'button-pill': {\r\n color: 'blue' as Color,\r\n size: 'md' as Size,\r\n variant: 'solid' as Variant,\r\n shape: 'pill' as Shape,\r\n animation: 'bounce' as Animation,\r\n elevation: 'md' as Elevation,\r\n a11y: 'standard' as A11yLevel,\r\n },\r\n\r\n // Toast presets\r\n 'toast-success': {\r\n color: 'green' as Color,\r\n position: 'top-right' as Position,\r\n animation: 'slideLeft' as Animation,\r\n elevation: 'lg' as Elevation,\r\n },\r\n 'toast-error': {\r\n color: 'red' as Color,\r\n position: 'top-right' as Position,\r\n animation: 'slideLeft' as Animation,\r\n elevation: 'lg' as Elevation,\r\n },\r\n 'toast-center': {\r\n color: 'blue' as Color,\r\n position: 'top-center' as Position,\r\n animation: 'slideDown' as Animation,\r\n elevation: 'xl' as Elevation,\r\n },\r\n};\r\n\r\nexport type PresetName = keyof typeof PRESETS;\r\n\r\n// =============================================================================\r\n// FACTOR 11: DENSITY (Dev B)\r\n// =============================================================================\r\n\r\n/**\r\n * Density levels control spacing and padding throughout components.\r\n * Use compact for data-dense UIs, spacious for marketing/landing pages.\r\n */\r\nexport const DENSITIES = {\r\n compact: 'compact',\r\n default: 'default',\r\n comfortable: 'comfortable',\r\n spacious: 'spacious',\r\n} as const;\r\n\r\nexport type Density = keyof typeof DENSITIES;\r\n\r\n/**\r\n * Density-specific classes for different component types.\r\n * Each component type has tailored spacing for each density level.\r\n */\r\nexport const densityVariants = {\r\n /** Padding scale for general containers */\r\n padding: {\r\n compact: 'p-1',\r\n default: 'p-2',\r\n comfortable: 'p-4',\r\n spacious: 'p-6',\r\n },\r\n /** Gap scale for flex/grid layouts */\r\n gap: {\r\n compact: 'gap-1',\r\n default: 'gap-2',\r\n comfortable: 'gap-4',\r\n spacious: 'gap-6',\r\n },\r\n /** Table row density */\r\n tableRow: {\r\n compact: 'h-8 px-2 py-1 text-xs',\r\n default: 'h-10 px-3 py-2 text-sm',\r\n comfortable: 'h-12 px-4 py-3 text-sm',\r\n spacious: 'h-14 px-6 py-4 text-base',\r\n },\r\n /** List item density */\r\n listItem: {\r\n compact: 'py-1 px-2',\r\n default: 'py-2 px-3',\r\n comfortable: 'py-3 px-4',\r\n spacious: 'py-4 px-6',\r\n },\r\n /** Form field vertical spacing */\r\n formField: {\r\n compact: 'space-y-1',\r\n default: 'space-y-2',\r\n comfortable: 'space-y-4',\r\n spacious: 'space-y-6',\r\n },\r\n /** Card content density */\r\n card: {\r\n compact: 'p-2 space-y-1',\r\n default: 'p-4 space-y-2',\r\n comfortable: 'p-6 space-y-4',\r\n spacious: 'p-8 space-y-6',\r\n },\r\n /** Menu item density */\r\n menu: {\r\n compact: 'py-1 px-2 text-xs',\r\n default: 'py-2 px-3 text-sm',\r\n comfortable: 'py-2.5 px-4 text-sm',\r\n spacious: 'py-3 px-5 text-base',\r\n },\r\n /** Button density (affects height and padding) */\r\n button: {\r\n compact: 'h-7 px-2 text-xs',\r\n default: 'h-9 px-3 text-sm',\r\n comfortable: 'h-11 px-5 text-sm',\r\n spacious: 'h-13 px-7 text-base',\r\n },\r\n /** Input density */\r\n input: {\r\n compact: 'h-7 px-2 text-xs',\r\n default: 'h-9 px-3 text-sm',\r\n comfortable: 'h-11 px-4 text-sm',\r\n spacious: 'h-13 px-5 text-base',\r\n },\r\n};\r\n\r\n/**\r\n * Build density classes for a specific component type.\r\n *\r\n * @param component - The component type to get density classes for\r\n * @param density - The density level (defaults to 'default')\r\n * @returns Tailwind classes for the specified density\r\n *\r\n * @example\r\n * ```typescript\r\n * buildDensityClasses('tableRow', 'compact')\r\n * // Returns: 'h-8 px-2 py-1 text-xs'\r\n * ```\r\n */\r\nexport function buildDensityClasses(\r\n component: keyof typeof densityVariants,\r\n density: Density = 'default'\r\n): string {\r\n const componentVariants = densityVariants[component];\r\n if (componentVariants === undefined) return '';\r\n return componentVariants[density] ?? '';\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 12: LOADING STATE (Dev B)\r\n// =============================================================================\r\n\r\n/**\r\n * Loading states for async operations.\r\n * Components can show different visual feedback based on operation status.\r\n */\r\nexport const LOADING_STATES = {\r\n idle: 'idle',\r\n loading: 'loading',\r\n success: 'success',\r\n error: 'error',\r\n} as const;\r\n\r\nexport type LoadingState = keyof typeof LOADING_STATES;\r\n\r\n/**\r\n * Visual classes for different loading states.\r\n */\r\nexport const loadingStateVariants = {\r\n /** Base visual indicators */\r\n visual: {\r\n idle: '',\r\n loading: 'opacity-70 cursor-wait',\r\n success: 'border-green-500',\r\n error: 'border-red-500',\r\n },\r\n /** Background colors for states */\r\n background: {\r\n idle: '',\r\n loading: 'bg-gray-100',\r\n success: 'bg-green-50',\r\n error: 'bg-red-50',\r\n },\r\n /** Text colors for states */\r\n text: {\r\n idle: '',\r\n loading: 'text-gray-400',\r\n success: 'text-green-600',\r\n error: 'text-red-600',\r\n },\r\n /** Icon display classes */\r\n icon: {\r\n idle: 'hidden',\r\n loading: 'animate-spin',\r\n success: 'text-green-500',\r\n error: 'text-red-500',\r\n },\r\n /** Button-specific state classes */\r\n button: {\r\n idle: '',\r\n loading: 'relative pointer-events-none',\r\n success: 'bg-green-600 hover:bg-green-700',\r\n error: 'bg-red-600 hover:bg-red-700',\r\n },\r\n /** Input-specific state classes */\r\n input: {\r\n idle: 'border-gray-300 focus:border-blue-500',\r\n loading: 'border-gray-300 bg-gray-50 pointer-events-none',\r\n success: 'border-green-500 focus:border-green-500 focus:ring-green-500',\r\n error: 'border-red-500 focus:border-red-500 focus:ring-red-500',\r\n },\r\n /** Card-specific state classes */\r\n card: {\r\n idle: '',\r\n loading: 'animate-pulse',\r\n success: 'ring-2 ring-green-500',\r\n error: 'ring-2 ring-red-500',\r\n },\r\n};\r\n\r\n/**\r\n * Loading spinner utility classes.\r\n */\r\nexport const loadingSpinner = {\r\n /** Wrapper for centering spinner */\r\n wrapper: 'absolute inset-0 flex items-center justify-center',\r\n /** Spinner animation */\r\n spinner: 'animate-spin h-5 w-5',\r\n /** Semi-transparent overlay */\r\n overlay: 'absolute inset-0 bg-white/50 flex items-center justify-center',\r\n /** Spinner sizes */\r\n sizes: {\r\n xs: 'h-3 w-3',\r\n sm: 'h-4 w-4',\r\n md: 'h-5 w-5',\r\n lg: 'h-6 w-6',\r\n xl: 'h-8 w-8',\r\n },\r\n};\r\n\r\n/**\r\n * Build loading state classes for a specific component type.\r\n *\r\n * @param component - The component type\r\n * @param state - The loading state (defaults to 'idle')\r\n * @returns Tailwind classes for the specified state\r\n *\r\n * @example\r\n * ```typescript\r\n * buildLoadingStateClasses('button', 'loading')\r\n * // Returns: 'relative pointer-events-none'\r\n *\r\n * buildLoadingStateClasses('input', 'error')\r\n * // Returns: 'border-red-500 focus:border-red-500 focus:ring-red-500'\r\n * ```\r\n */\r\nexport function buildLoadingStateClasses(\r\n component: keyof typeof loadingStateVariants,\r\n state: LoadingState = 'idle'\r\n): string {\r\n const componentVariants = loadingStateVariants[component];\r\n if (componentVariants === undefined) return '';\r\n return componentVariants[state] ?? '';\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 13: RESPONSIVE (Dev B)\r\n// =============================================================================\r\n\r\n/**\r\n * Tailwind breakpoints for responsive design.\r\n */\r\nexport const BREAKPOINTS = {\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n '2xl': '1536px',\r\n} as const;\r\n\r\nexport type Breakpoint = keyof typeof BREAKPOINTS;\r\n\r\n/**\r\n * Configuration for responsive classes.\r\n * Each breakpoint can have its own class string.\r\n */\r\nexport interface ResponsiveConfig {\r\n /** Base classes (no breakpoint prefix) */\r\n base?: string;\r\n /** Small screens (640px+) */\r\n sm?: string;\r\n /** Medium screens (768px+) */\r\n md?: string;\r\n /** Large screens (1024px+) */\r\n lg?: string;\r\n /** Extra large screens (1280px+) */\r\n xl?: string;\r\n /** 2X large screens (1536px+) */\r\n '2xl'?: string;\r\n}\r\n\r\n/**\r\n * Pre-built responsive patterns for common use cases.\r\n */\r\nexport const responsiveVariants = {\r\n /** Visibility utilities */\r\n visibility: {\r\n hiddenOnMobile: 'hidden sm:block',\r\n hiddenOnDesktop: 'block lg:hidden',\r\n showOnlyMobile: 'block sm:hidden',\r\n showOnlyDesktop: 'hidden lg:block',\r\n showOnlyTablet: 'hidden sm:block lg:hidden',\r\n },\r\n /** Stack direction changes */\r\n stack: {\r\n mobileVertical: 'flex-col sm:flex-row',\r\n mobileHorizontal: 'flex-row sm:flex-col',\r\n tabletVertical: 'flex-col md:flex-row',\r\n },\r\n /** Grid column patterns */\r\n gridCols: {\r\n responsive: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\r\n responsiveTwo: 'grid-cols-1 md:grid-cols-2',\r\n responsiveThree: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\r\n responsiveSidebar: 'grid-cols-1 lg:grid-cols-[250px_1fr]',\r\n },\r\n /** Text size scaling */\r\n textSize: {\r\n responsive: 'text-sm sm:text-base lg:text-lg',\r\n heading: 'text-xl sm:text-2xl lg:text-3xl xl:text-4xl',\r\n subheading: 'text-lg sm:text-xl lg:text-2xl',\r\n caption: 'text-xs sm:text-sm',\r\n },\r\n /** Padding scaling */\r\n padding: {\r\n responsive: 'p-2 sm:p-4 lg:p-6 xl:p-8',\r\n responsiveX: 'px-2 sm:px-4 lg:px-6 xl:px-8',\r\n responsiveY: 'py-2 sm:py-4 lg:py-6 xl:py-8',\r\n },\r\n /** Width utilities */\r\n width: {\r\n container: 'w-full max-w-7xl mx-auto px-4 sm:px-6 lg:px-8',\r\n modal: 'w-full sm:max-w-md lg:max-w-lg',\r\n modalWide: 'w-full sm:max-w-lg lg:max-w-2xl xl:max-w-4xl',\r\n drawer: 'w-full sm:w-80 lg:w-96',\r\n sidebar: 'w-full md:w-64 lg:w-72',\r\n },\r\n /** Gap scaling */\r\n gap: {\r\n responsive: 'gap-2 sm:gap-4 lg:gap-6',\r\n responsiveLarge: 'gap-4 sm:gap-6 lg:gap-8 xl:gap-10',\r\n },\r\n};\r\n\r\n/**\r\n * Build responsive class string from configuration.\r\n *\r\n * @param config - Responsive configuration with classes for each breakpoint\r\n * @returns Combined class string with breakpoint prefixes\r\n *\r\n * @example\r\n * ```typescript\r\n * buildResponsiveClasses({\r\n * base: 'text-sm',\r\n * md: 'text-base',\r\n * lg: 'text-lg',\r\n * })\r\n * // Returns: 'text-sm md:text-base lg:text-lg'\r\n * ```\r\n */\r\nexport function buildResponsiveClasses(config: ResponsiveConfig): string {\r\n const classes: string[] = [];\r\n\r\n if (config.base !== undefined && config.base !== null) classes.push(config.base);\r\n if (config.sm !== undefined && config.sm !== null) classes.push(`sm:${config.sm}`);\r\n if (config.md !== undefined && config.md !== null) classes.push(`md:${config.md}`);\r\n if (config.lg !== undefined && config.lg !== null) classes.push(`lg:${config.lg}`);\r\n if (config.xl !== undefined && config.xl !== null) classes.push(`xl:${config.xl}`);\r\n if (config['2xl'] !== undefined && config['2xl'] !== null) classes.push(`2xl:${config['2xl']}`);\r\n\r\n return classes.join(' ');\r\n}\r\n\r\n/**\r\n * Build responsive size classes for components.\r\n * Applies different sizes at different breakpoints.\r\n *\r\n * @param component - The component type ('button', 'input', 'avatar')\r\n * @param sizes - Object mapping breakpoints to size values\r\n * @returns Combined class string with responsive size classes\r\n *\r\n * @example\r\n * ```typescript\r\n * buildResponsiveSize('button', { base: 'sm', lg: 'md', xl: 'lg' })\r\n * // Returns size classes that change based on screen width\r\n * ```\r\n */\r\nexport function buildResponsiveSize(\r\n component: 'button' | 'input' | 'avatar',\r\n sizes: Partial<Record<Breakpoint | 'base', Size>>\r\n): string {\r\n const classes: string[] = [];\r\n const sizeMap = sizeVariants[component];\r\n\r\n if (sizeMap === undefined) return '';\r\n\r\n // Base size (no prefix)\r\n if (sizes.base !== undefined && sizes.base !== null && sizeMap[sizes.base] !== undefined) {\r\n classes.push(sizeMap[sizes.base]);\r\n }\r\n\r\n // Breakpoint sizes\r\n const breakpoints: Breakpoint[] = ['sm', 'md', 'lg', 'xl', '2xl'];\r\n for (const bp of breakpoints) {\r\n const size = sizes[bp];\r\n if (size !== undefined && size !== null) {\r\n const bpClass = sizeMap[size];\r\n if (bpClass !== undefined) {\r\n // Add breakpoint prefix to each class\r\n const sizeClasses = bpClass.split(' ');\r\n classes.push(...sizeClasses.map((c: string) => `${bp}:${c}`));\r\n }\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n}\r\n\r\n// =============================================================================\r\n// FACTOR 16: THEME (Dev C)\r\n// =============================================================================\r\n\r\n/**\r\n * Theme modes for components.\r\n * Components adapt their styling based on light/dark/system preference.\r\n */\r\nexport const THEMES = {\r\n light: 'light',\r\n dark: 'dark',\r\n system: 'system',\r\n} as const;\r\n\r\nexport type Theme = keyof typeof THEMES;\r\n\r\n/**\r\n * Theme-specific class patterns for different component aspects.\r\n * These classes use Tailwind's dark: prefix for dark mode.\r\n */\r\nexport const themeVariants = {\r\n /** Background colors */\r\n background: {\r\n light: 'bg-white',\r\n dark: 'bg-gray-900 dark:bg-gray-900',\r\n system: 'bg-white dark:bg-gray-900',\r\n },\r\n /** Surface/card backgrounds */\r\n surface: {\r\n light: 'bg-gray-50',\r\n dark: 'bg-gray-800 dark:bg-gray-800',\r\n system: 'bg-gray-50 dark:bg-gray-800',\r\n },\r\n /** Primary text colors */\r\n textPrimary: {\r\n light: 'text-gray-900',\r\n dark: 'text-gray-100 dark:text-gray-100',\r\n system: 'text-gray-900 dark:text-gray-100',\r\n },\r\n /** Secondary text colors */\r\n textSecondary: {\r\n light: 'text-gray-600',\r\n dark: 'text-gray-400 dark:text-gray-400',\r\n system: 'text-gray-600 dark:text-gray-400',\r\n },\r\n /** Border colors */\r\n border: {\r\n light: 'border-gray-200',\r\n dark: 'border-gray-700 dark:border-gray-700',\r\n system: 'border-gray-200 dark:border-gray-700',\r\n },\r\n /** Divider colors */\r\n divider: {\r\n light: 'divide-gray-200',\r\n dark: 'divide-gray-700 dark:divide-gray-700',\r\n system: 'divide-gray-200 dark:divide-gray-700',\r\n },\r\n /** Input backgrounds */\r\n input: {\r\n light: 'bg-white border-gray-300',\r\n dark: 'bg-gray-800 border-gray-600 dark:bg-gray-800 dark:border-gray-600',\r\n system: 'bg-white dark:bg-gray-800 border-gray-300 dark:border-gray-600',\r\n },\r\n /** Hover states */\r\n hover: {\r\n light: 'hover:bg-gray-100',\r\n dark: 'hover:bg-gray-700 dark:hover:bg-gray-700',\r\n system: 'hover:bg-gray-100 dark:hover:bg-gray-700',\r\n },\r\n /** Active states */\r\n active: {\r\n light: 'active:bg-gray-200',\r\n dark: 'active:bg-gray-600 dark:active:bg-gray-600',\r\n system: 'active:bg-gray-200 dark:active:bg-gray-600',\r\n },\r\n /** Ring/focus colors */\r\n ring: {\r\n light: 'ring-gray-300',\r\n dark: 'ring-gray-600 dark:ring-gray-600',\r\n system: 'ring-gray-300 dark:ring-gray-600',\r\n },\r\n /** Shadow styles */\r\n shadow: {\r\n light: 'shadow-gray-200/50',\r\n dark: 'shadow-black/30 dark:shadow-black/30',\r\n system: 'shadow-gray-200/50 dark:shadow-black/30',\r\n },\r\n};\r\n\r\n/**\r\n * Build theme classes for a specific component aspect.\r\n *\r\n * @param aspect - The aspect to get theme classes for (background, text, border, etc.)\r\n * @param theme - The theme mode ('light', 'dark', or 'system')\r\n * @returns Tailwind classes for the specified theme aspect\r\n *\r\n * @example\r\n * ```typescript\r\n * buildThemeClasses('background', 'system')\r\n * // Returns: 'bg-white dark:bg-gray-900'\r\n *\r\n * buildThemeClasses('textPrimary', 'dark')\r\n * // Returns: 'text-gray-100 dark:text-gray-100'\r\n * ```\r\n */\r\nexport function buildThemeClasses(\r\n aspect: keyof typeof themeVariants,\r\n theme: Theme = 'system'\r\n): string {\r\n const aspectVariants = themeVariants[aspect];\r\n if (aspectVariants === undefined) return '';\r\n return aspectVariants[theme] ?? '';\r\n}\r\n\r\n/**\r\n * Build complete theme class set for a component.\r\n * Combines multiple theme aspects into a single class string.\r\n *\r\n * @param options - Theme options specifying which aspects to include\r\n * @returns Combined Tailwind classes for all specified theme aspects\r\n *\r\n * @example\r\n * ```typescript\r\n * buildComponentTheme({\r\n * theme: 'system',\r\n * background: true,\r\n * text: true,\r\n * border: true,\r\n * })\r\n * // Returns combined classes for system theme\r\n * ```\r\n */\r\nexport function buildComponentTheme(options: {\r\n theme?: Theme;\r\n background?: boolean;\r\n surface?: boolean;\r\n text?: boolean;\r\n border?: boolean;\r\n input?: boolean;\r\n hover?: boolean;\r\n}): string {\r\n const { theme = 'system' } = options;\r\n const classes: string[] = [];\r\n\r\n if (options.background === true) classes.push(buildThemeClasses('background', theme));\r\n if (options.surface === true) classes.push(buildThemeClasses('surface', theme));\r\n if (options.text === true) classes.push(buildThemeClasses('textPrimary', theme));\r\n if (options.border === true) classes.push(buildThemeClasses('border', theme));\r\n if (options.input === true) classes.push(buildThemeClasses('input', theme));\r\n if (options.hover === true) classes.push(buildThemeClasses('hover', theme));\r\n\r\n return classes.filter(Boolean).join(' ');\r\n}\r\n","/**\r\n * Components Registry\r\n * Maps components to their factor applicability (24-Factor system)\r\n *\r\n * @packageDocumentation\r\n * @module registries/components-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { ComponentType, DesignSystem, Tier } from '../types';\r\nimport type {\r\n ComponentRegistryEntry,\r\n FactorApplicability,\r\n FactorId,\r\n} from '../../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEMS CONSTANT\r\n// ============================================================================\r\n\r\n/**\r\n * All supported design systems\r\n */\r\nconst ALL_DESIGN_SYSTEMS: readonly DesignSystem[] = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n 'cyberpunk',\r\n 'flat-design',\r\n 'retro-vintage',\r\n 'fluent-design',\r\n 'carbon-design',\r\n 'ant-design',\r\n] as const;\r\n\r\n/**\r\n * All supported tiers\r\n */\r\nconst ALL_TIERS: readonly Tier[] = ['basic', 'standard', 'enterprise'] as const;\r\n\r\n// ============================================================================\r\n// FACTOR APPLICABILITY HELPERS\r\n// ============================================================================\r\n\r\n/**\r\n * Standard factor applicability for interactive components (buttons, inputs, etc.)\r\n * These components support most factors\r\n */\r\nconst INTERACTIVE_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: null, // Position - not applicable to inline interactive\r\n 6: true, // IconPosition\r\n 7: true, // State\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: null, // Alignment - handled by parent\r\n 12: null, // Orientation - not applicable to single elements\r\n 13: true, // Density\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: true, // Typography\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: null, // Overflow - not applicable to buttons\r\n 22: true, // Cursor\r\n 23: null, // ZIndex - context dependent\r\n 24: true, // Transition\r\n};\r\n\r\n/**\r\n * Factor applicability for container components (cards, modals, etc.)\r\n * These components support layout and container factors\r\n */\r\nconst CONTAINER_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: true, // Position\r\n 6: null, // IconPosition - not applicable to containers\r\n 7: true, // State\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: true, // Alignment\r\n 12: true, // Orientation\r\n 13: true, // Density\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: null, // Typography - handled by children\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: true, // Overflow\r\n 22: null, // Cursor - not typically changed\r\n 23: true, // ZIndex\r\n 24: true, // Transition\r\n};\r\n\r\n/**\r\n * Factor applicability for feedback components (alerts, badges, etc.)\r\n * These components have limited interactivity\r\n */\r\nconst FEEDBACK_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: true, // Position\r\n 6: true, // IconPosition\r\n 7: 'default', // State - limited states\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: true, // Alignment\r\n 12: null, // Orientation - not applicable\r\n 13: true, // Density\r\n 14: null, // LoadingState - not applicable\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: true, // Typography\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: null, // Overflow - not applicable\r\n 22: null, // Cursor - not interactive\r\n 23: true, // ZIndex\r\n 24: true, // Transition\r\n};\r\n\r\n/**\r\n * Factor applicability for navigation components (tabs, menus, etc.)\r\n * These components have specific navigation patterns\r\n */\r\nconst NAVIGATION_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: null, // Position - part of navigation context\r\n 6: true, // IconPosition\r\n 7: true, // State\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: true, // Alignment\r\n 12: true, // Orientation\r\n 13: true, // Density\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: true, // Typography\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: true, // Overflow\r\n 22: true, // Cursor\r\n 23: null, // ZIndex - context dependent\r\n 24: true, // Transition\r\n};\r\n\r\n/**\r\n * Factor applicability for media components (images, videos, etc.)\r\n * These components have specific media handling requirements\r\n */\r\nconst MEDIA_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: null, // Color - not applicable to media\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: true, // Position\r\n 6: null, // IconPosition - not applicable\r\n 7: true, // State\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: true, // Alignment\r\n 12: null, // Orientation - media handles own orientation\r\n 13: null, // Density - not applicable\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: null, // Typography - not applicable\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: true, // Overflow\r\n 22: true, // Cursor\r\n 23: true, // ZIndex\r\n 24: true, // Transition\r\n};\r\n\r\n/**\r\n * Factor applicability for overlay components (modals, drawers, etc.)\r\n * These components require specific z-index and positioning\r\n */\r\nconst OVERLAY_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: 'fixed', // Position - typically fixed\r\n 6: null, // IconPosition - handled by content\r\n 7: true, // State\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: true, // Alignment\r\n 12: null, // Orientation - handled by content\r\n 13: true, // Density\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: null, // Typography - handled by content\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: true, // Overflow\r\n 22: null, // Cursor - default\r\n 23: 'modal', // ZIndex - high z-index required\r\n 24: true, // Transition\r\n};\r\n\r\n/**\r\n * Factor applicability for form input components (inputs, textareas, selects)\r\n * Extended interactive factors with form-specific considerations\r\n */\r\nconst FORM_INPUT_FACTORS: Partial<Record<FactorId, FactorApplicability>> = {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: null, // Position - flows with form layout\r\n 6: true, // IconPosition\r\n 7: true, // State\r\n 8: true, // Animation\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: null, // Alignment - handled by form\r\n 12: null, // Orientation - single element\r\n 13: true, // Density\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: true, // Spacing\r\n 18: true, // Typography\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: true, // Overflow (for textarea)\r\n 22: true, // Cursor\r\n 23: null, // ZIndex - inline\r\n 24: true, // Transition\r\n};\r\n\r\n// ============================================================================\r\n// COMPONENT REGISTRY\r\n// ============================================================================\r\n\r\n/**\r\n * Component Registry\r\n * Maps each component type to its factor applicability and metadata\r\n *\r\n * @remarks\r\n * - Each component defines which of the 24 factors apply\r\n * - null = factor not applicable (skip)\r\n * - true = factor applicable with design system default\r\n * - string = factor applicable with specific override value\r\n */\r\nexport const COMPONENT_REGISTRY: Record<ComponentType, ComponentRegistryEntry> = {\r\n // ========================================================================\r\n // BASIC COMPONENTS\r\n // ========================================================================\r\n\r\n button: {\r\n id: 'button',\r\n name: 'Button',\r\n category: 'basic',\r\n elementType: 'button',\r\n factorApplicability: INTERACTIVE_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n input: {\r\n id: 'input',\r\n name: 'Input',\r\n category: 'basic',\r\n elementType: 'input',\r\n factorApplicability: FORM_INPUT_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n textarea: {\r\n id: 'textarea',\r\n name: 'Textarea',\r\n category: 'basic',\r\n elementType: 'textarea',\r\n factorApplicability: {\r\n ...FORM_INPUT_FACTORS,\r\n 21: true, // Overflow - important for textarea\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n checkbox: {\r\n id: 'checkbox',\r\n name: 'Checkbox',\r\n category: 'basic',\r\n elementType: 'input',\r\n factorApplicability: {\r\n ...INTERACTIVE_FACTORS,\r\n 4: 'sm', // Shape - checkboxes are typically small rounded\r\n 6: true, // IconPosition - for label placement\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n 'radio-group': {\r\n id: 'radio-group',\r\n name: 'Radio Group',\r\n category: 'basic',\r\n elementType: 'fieldset',\r\n factorApplicability: {\r\n ...INTERACTIVE_FACTORS,\r\n 12: true, // Orientation - horizontal or vertical layout\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n switch: {\r\n id: 'switch',\r\n name: 'Switch',\r\n category: 'basic',\r\n elementType: 'button',\r\n factorApplicability: {\r\n ...INTERACTIVE_FACTORS,\r\n 4: 'full', // Shape - switches are typically pill-shaped\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n select: {\r\n id: 'select',\r\n name: 'Select',\r\n category: 'basic',\r\n elementType: 'select',\r\n factorApplicability: {\r\n ...FORM_INPUT_FACTORS,\r\n 23: true, // ZIndex - dropdown needs z-index\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n slider: {\r\n id: 'slider',\r\n name: 'Slider',\r\n category: 'basic',\r\n elementType: 'input',\r\n factorApplicability: {\r\n ...INTERACTIVE_FACTORS,\r\n 12: true, // Orientation - horizontal or vertical\r\n 21: null, // Overflow - not applicable\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ========================================================================\r\n // FEEDBACK COMPONENTS\r\n // ========================================================================\r\n\r\n alert: {\r\n id: 'alert',\r\n name: 'Alert',\r\n category: 'feedback',\r\n elementType: 'div',\r\n factorApplicability: FEEDBACK_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n badge: {\r\n id: 'badge',\r\n name: 'Badge',\r\n category: 'feedback',\r\n elementType: 'span',\r\n factorApplicability: {\r\n ...FEEDBACK_FACTORS,\r\n 2: 'sm', // Size - badges are typically small\r\n 17: 'xs', // Spacing - compact\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n chip: {\r\n id: 'chip',\r\n name: 'Chip',\r\n category: 'feedback',\r\n elementType: 'span',\r\n factorApplicability: {\r\n ...FEEDBACK_FACTORS,\r\n 6: true, // IconPosition - chips can have icons\r\n 22: true, // Cursor - chips can be interactive\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n progress: {\r\n id: 'progress',\r\n name: 'Progress',\r\n category: 'feedback',\r\n elementType: 'div',\r\n factorApplicability: {\r\n ...FEEDBACK_FACTORS,\r\n 8: true, // Animation - progress animation\r\n 12: true, // Orientation - horizontal or vertical\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n spinner: {\r\n id: 'spinner',\r\n name: 'Spinner',\r\n category: 'feedback',\r\n elementType: 'div',\r\n factorApplicability: {\r\n 1: true, // Color\r\n 2: true, // Size\r\n 3: null, // Variant - spinners are single style\r\n 4: null, // Shape - circular\r\n 5: null, // Position - inline\r\n 6: null, // IconPosition - not applicable\r\n 7: null, // State - always spinning\r\n 8: 'spin', // Animation - spin animation\r\n 9: null, // Elevation - flat\r\n 10: true, // Accessibility\r\n 11: null, // Alignment - inline\r\n 12: null, // Orientation - not applicable\r\n 13: null, // Density - not applicable\r\n 14: null, // LoadingState - it IS the loading state\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: null, // Spacing - compact\r\n 18: null, // Typography - no text\r\n 19: null, // Border - not applicable\r\n 20: true, // Opacity\r\n 21: null, // Overflow - not applicable\r\n 22: null, // Cursor - not interactive\r\n 23: null, // ZIndex - inline\r\n 24: true, // Transition\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n skeleton: {\r\n id: 'skeleton',\r\n name: 'Skeleton',\r\n category: 'feedback',\r\n elementType: 'div',\r\n factorApplicability: {\r\n 1: null, // Color - predefined loading color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: true, // Shape\r\n 5: null, // Position - flows with content\r\n 6: null, // IconPosition - not applicable\r\n 7: null, // State - always loading\r\n 8: 'pulse', // Animation - pulse animation\r\n 9: null, // Elevation - flat\r\n 10: true, // Accessibility\r\n 11: null, // Alignment - flows with content\r\n 12: null, // Orientation - not applicable\r\n 13: null, // Density - matches content\r\n 14: null, // LoadingState - it IS the loading state\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: null, // Spacing - matches content\r\n 18: null, // Typography - no text\r\n 19: null, // Border - not applicable\r\n 20: true, // Opacity\r\n 21: null, // Overflow - not applicable\r\n 22: null, // Cursor - not interactive\r\n 23: null, // ZIndex - inline\r\n 24: true, // Transition\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n tooltip: {\r\n id: 'tooltip',\r\n name: 'Tooltip',\r\n category: 'feedback',\r\n elementType: 'div',\r\n factorApplicability: {\r\n ...FEEDBACK_FACTORS,\r\n 5: true, // Position - tooltip placement\r\n 23: 'tooltip', // ZIndex - high z-index\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ========================================================================\r\n // NAVIGATION COMPONENTS\r\n // ========================================================================\r\n\r\n tabs: {\r\n id: 'tabs',\r\n name: 'Tabs',\r\n category: 'navigation',\r\n elementType: 'div',\r\n factorApplicability: NAVIGATION_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n menu: {\r\n id: 'menu',\r\n name: 'Menu',\r\n category: 'navigation',\r\n elementType: 'nav',\r\n factorApplicability: {\r\n ...NAVIGATION_FACTORS,\r\n 23: 'dropdown', // ZIndex - dropdown needs z-index\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n breadcrumb: {\r\n id: 'breadcrumb',\r\n name: 'Breadcrumb',\r\n category: 'navigation',\r\n elementType: 'nav',\r\n factorApplicability: {\r\n ...NAVIGATION_FACTORS,\r\n 9: null, // Elevation - flat navigation\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n pagination: {\r\n id: 'pagination',\r\n name: 'Pagination',\r\n category: 'navigation',\r\n elementType: 'nav',\r\n factorApplicability: NAVIGATION_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n stepper: {\r\n id: 'stepper',\r\n name: 'Stepper',\r\n category: 'navigation',\r\n elementType: 'div',\r\n factorApplicability: {\r\n ...NAVIGATION_FACTORS,\r\n 12: true, // Orientation - horizontal or vertical\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ========================================================================\r\n // DATA DISPLAY COMPONENTS\r\n // ========================================================================\r\n\r\n card: {\r\n id: 'card',\r\n name: 'Card',\r\n category: 'data-display',\r\n elementType: 'article',\r\n factorApplicability: CONTAINER_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n table: {\r\n id: 'table',\r\n name: 'Table',\r\n category: 'data-display',\r\n elementType: 'table',\r\n factorApplicability: {\r\n ...CONTAINER_FACTORS,\r\n 12: null, // Orientation - tables have fixed orientation\r\n 21: true, // Overflow - scrollable tables\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n list: {\r\n id: 'list',\r\n name: 'List',\r\n category: 'data-display',\r\n elementType: 'ul',\r\n factorApplicability: {\r\n ...CONTAINER_FACTORS,\r\n 12: true, // Orientation - vertical or horizontal list\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n accordion: {\r\n id: 'accordion',\r\n name: 'Accordion',\r\n category: 'data-display',\r\n elementType: 'div',\r\n factorApplicability: {\r\n ...CONTAINER_FACTORS,\r\n 8: true, // Animation - expand/collapse animation\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n avatar: {\r\n id: 'avatar',\r\n name: 'Avatar',\r\n category: 'data-display',\r\n elementType: 'div',\r\n factorApplicability: {\r\n 1: true, // Color - fallback color\r\n 2: true, // Size\r\n 3: true, // Variant\r\n 4: 'circle', // Shape - typically circular\r\n 5: null, // Position - inline\r\n 6: null, // IconPosition - not applicable\r\n 7: true, // State\r\n 8: null, // Animation - not typically animated\r\n 9: true, // Elevation\r\n 10: true, // Accessibility\r\n 11: null, // Alignment - inline\r\n 12: null, // Orientation - not applicable\r\n 13: null, // Density - not applicable\r\n 14: true, // LoadingState\r\n 15: true, // Responsive\r\n 16: true, // Theme\r\n 17: null, // Spacing - fixed\r\n 18: null, // Typography - single letter fallback\r\n 19: true, // Border\r\n 20: true, // Opacity\r\n 21: 'hidden', // Overflow - clip to shape\r\n 22: null, // Cursor - not typically interactive\r\n 23: null, // ZIndex - inline\r\n 24: true, // Transition\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ========================================================================\r\n // OVERLAY COMPONENTS\r\n // ========================================================================\r\n\r\n modal: {\r\n id: 'modal',\r\n name: 'Modal',\r\n category: 'overlay',\r\n elementType: 'dialog',\r\n factorApplicability: OVERLAY_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n drawer: {\r\n id: 'drawer',\r\n name: 'Drawer',\r\n category: 'overlay',\r\n elementType: 'aside',\r\n factorApplicability: {\r\n ...OVERLAY_FACTORS,\r\n 5: 'fixed', // Position - fixed positioning\r\n 12: true, // Orientation - left, right, top, bottom\r\n 23: 'drawer', // ZIndex - drawer level\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n popover: {\r\n id: 'popover',\r\n name: 'Popover',\r\n category: 'overlay',\r\n elementType: 'div',\r\n factorApplicability: {\r\n ...OVERLAY_FACTORS,\r\n 5: 'absolute', // Position - absolute to trigger\r\n 23: 'popover', // ZIndex - popover level\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ========================================================================\r\n // DATE/TIME COMPONENTS\r\n // ========================================================================\r\n\r\n 'date-picker': {\r\n id: 'date-picker',\r\n name: 'Date Picker',\r\n category: 'date-time',\r\n elementType: 'div',\r\n factorApplicability: {\r\n ...FORM_INPUT_FACTORS,\r\n 23: 'dropdown', // ZIndex - calendar dropdown\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n calendar: {\r\n id: 'calendar',\r\n name: 'Calendar',\r\n category: 'date-time',\r\n elementType: 'div',\r\n factorApplicability: CONTAINER_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ========================================================================\r\n // MEDIA COMPONENTS\r\n // ========================================================================\r\n\r\n audio: {\r\n id: 'audio',\r\n name: 'Audio',\r\n category: 'media',\r\n elementType: 'audio',\r\n factorApplicability: MEDIA_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n video: {\r\n id: 'video',\r\n name: 'Video',\r\n category: 'media',\r\n elementType: 'video',\r\n factorApplicability: MEDIA_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n image: {\r\n id: 'image',\r\n name: 'Image',\r\n category: 'media',\r\n elementType: 'img',\r\n factorApplicability: MEDIA_FACTORS,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n file: {\r\n id: 'file',\r\n name: 'File',\r\n category: 'media',\r\n elementType: 'input',\r\n factorApplicability: {\r\n ...FORM_INPUT_FACTORS,\r\n 21: null, // Overflow - not applicable\r\n },\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n};\r\n\r\n// ============================================================================\r\n// COMPONENT REGISTRY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get component registry entry\r\n *\r\n * @param componentType - Component type to get entry for\r\n * @returns Component registry entry\r\n *\r\n * @example\r\n * ```typescript\r\n * const entry = getComponentEntry('button');\r\n * // entry.elementType = 'button'\r\n * // entry.category = 'basic'\r\n * ```\r\n */\r\nexport function getComponentEntry(componentType: ComponentType): ComponentRegistryEntry {\r\n return COMPONENT_REGISTRY[componentType];\r\n}\r\n\r\n/**\r\n * Get all component types\r\n *\r\n * @returns Array of all component type IDs\r\n */\r\nexport function getAllComponentTypes(): ComponentType[] {\r\n return Object.keys(COMPONENT_REGISTRY) as ComponentType[];\r\n}\r\n\r\n/**\r\n * Get components by category\r\n *\r\n * @param category - Category to filter by\r\n * @returns Array of component entries in the category\r\n *\r\n * @example\r\n * ```typescript\r\n * const basicComponents = getComponentsByCategory('basic');\r\n * // Returns button, input, textarea, checkbox, etc.\r\n * ```\r\n */\r\nexport function getComponentsByCategory(category: string): ComponentRegistryEntry[] {\r\n return Object.values(COMPONENT_REGISTRY).filter((component) => component.category === category);\r\n}\r\n\r\n/**\r\n * Get component IDs by category\r\n *\r\n * @param category - Category to filter by\r\n * @returns Array of component type IDs\r\n */\r\nexport function getComponentIdsByCategory(category: string): ComponentType[] {\r\n return Object.values(COMPONENT_REGISTRY)\r\n .filter((component) => component.category === category)\r\n .map((component) => component.id as ComponentType);\r\n}\r\n\r\n/**\r\n * Get all component categories\r\n *\r\n * @returns Array of unique category names\r\n */\r\nexport function getAllComponentCategories(): string[] {\r\n const categories = new Set<string>();\r\n for (const component of Object.values(COMPONENT_REGISTRY)) {\r\n categories.add(component.category);\r\n }\r\n return Array.from(categories);\r\n}\r\n\r\n/**\r\n * Get component count by category\r\n *\r\n * @returns Map of category to component count\r\n */\r\nexport function getComponentCountByCategory(): Record<string, number> {\r\n const counts: Record<string, number> = {};\r\n for (const component of Object.values(COMPONENT_REGISTRY)) {\r\n counts[component.category] = (counts[component.category] ?? 0) + 1;\r\n }\r\n return counts;\r\n}\r\n\r\n/**\r\n * Get applicable factors for a component\r\n * Returns factor IDs where applicability is not null\r\n *\r\n * @param componentType - Component type to check\r\n * @returns Array of applicable factor IDs\r\n *\r\n * @example\r\n * ```typescript\r\n * const factors = getApplicableFactors('button');\r\n * // Returns [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, ...]\r\n * ```\r\n */\r\nexport function getApplicableFactors(componentType: ComponentType): FactorId[] {\r\n const entry = COMPONENT_REGISTRY[componentType];\r\n const factors: FactorId[] = [];\r\n\r\n for (let i = 1; i <= 24; i++) {\r\n const factorId = i as FactorId;\r\n const applicability = entry.factorApplicability[factorId];\r\n if (applicability !== null && applicability !== undefined) {\r\n factors.push(factorId);\r\n }\r\n }\r\n\r\n return factors;\r\n}\r\n\r\n/**\r\n * Get skipped factors for a component\r\n * Returns factor IDs where applicability is null\r\n *\r\n * @param componentType - Component type to check\r\n * @returns Array of skipped factor IDs\r\n */\r\nexport function getSkippedFactors(componentType: ComponentType): FactorId[] {\r\n const entry = COMPONENT_REGISTRY[componentType];\r\n const factors: FactorId[] = [];\r\n\r\n for (let i = 1; i <= 24; i++) {\r\n const factorId = i as FactorId;\r\n const applicability = entry.factorApplicability[factorId];\r\n if (applicability === null || applicability === undefined) {\r\n factors.push(factorId);\r\n }\r\n }\r\n\r\n return factors;\r\n}\r\n\r\n/**\r\n * Get factor applicability for a component\r\n *\r\n * @param componentType - Component type to check\r\n * @param factorId - Factor ID to check\r\n * @returns Factor applicability (null, true, or override string)\r\n *\r\n * @example\r\n * ```typescript\r\n * getFactorApplicability('button', 1) // true\r\n * getFactorApplicability('button', 5) // null\r\n * getFactorApplicability('avatar', 4) // 'circle'\r\n * ```\r\n */\r\nexport function getFactorApplicability(\r\n componentType: ComponentType,\r\n factorId: FactorId\r\n): FactorApplicability {\r\n const entry = COMPONENT_REGISTRY[componentType];\r\n return entry.factorApplicability[factorId] ?? null;\r\n}\r\n\r\n/**\r\n * Check if factor is applicable for a component\r\n *\r\n * @param componentType - Component type to check\r\n * @param factorId - Factor ID to check\r\n * @returns True if factor is applicable (not null)\r\n */\r\nexport function isFactorApplicable(componentType: ComponentType, factorId: FactorId): boolean {\r\n const applicability = getFactorApplicability(componentType, factorId);\r\n return applicability !== null;\r\n}\r\n\r\n/**\r\n * Get factor override value for a component\r\n * Returns the override string if one exists, undefined otherwise\r\n *\r\n * @param componentType - Component type to check\r\n * @param factorId - Factor ID to check\r\n * @returns Override value or undefined\r\n *\r\n * @example\r\n * ```typescript\r\n * getFactorOverride('avatar', 4) // 'circle'\r\n * getFactorOverride('button', 1) // undefined (uses default)\r\n * ```\r\n */\r\nexport function getFactorOverride(\r\n componentType: ComponentType,\r\n factorId: FactorId\r\n): string | undefined {\r\n const applicability = getFactorApplicability(componentType, factorId);\r\n return typeof applicability === 'string' ? applicability : undefined;\r\n}\r\n\r\n/**\r\n * Get components that support a specific factor\r\n *\r\n * @param factorId - Factor ID to check\r\n * @returns Array of component types that support the factor\r\n */\r\nexport function getComponentsSupportingFactor(factorId: FactorId): ComponentType[] {\r\n return Object.values(COMPONENT_REGISTRY)\r\n .filter((component) => {\r\n const applicability = component.factorApplicability[factorId];\r\n return applicability !== null && applicability !== undefined;\r\n })\r\n .map((component) => component.id as ComponentType);\r\n}\r\n\r\n/**\r\n * Get components that support a design system\r\n *\r\n * @param designSystem - Design system to check\r\n * @returns Array of component entries that support the design system\r\n */\r\nexport function getComponentsForDesignSystem(designSystem: DesignSystem): ComponentRegistryEntry[] {\r\n return Object.values(COMPONENT_REGISTRY).filter((component) =>\r\n component.designSystems.includes(designSystem)\r\n );\r\n}\r\n\r\n/**\r\n * Get components that support a tier\r\n *\r\n * @param tier - Tier to check\r\n * @returns Array of component entries that support the tier\r\n */\r\nexport function getComponentsForTier(tier: Tier): ComponentRegistryEntry[] {\r\n return Object.values(COMPONENT_REGISTRY).filter((component) => component.tiers.includes(tier));\r\n}\r\n\r\n/**\r\n * Check if a component supports a specific design system\r\n *\r\n * @param componentType - Component type to check\r\n * @param designSystem - Design system to check\r\n * @returns True if component supports the design system\r\n */\r\nexport function componentSupportsDesignSystem(\r\n componentType: ComponentType,\r\n designSystem: DesignSystem\r\n): boolean {\r\n const entry = COMPONENT_REGISTRY[componentType];\r\n return entry.designSystems.includes(designSystem);\r\n}\r\n\r\n/**\r\n * Check if a component supports a specific tier\r\n *\r\n * @param componentType - Component type to check\r\n * @param tier - Tier to check\r\n * @returns True if component supports the tier\r\n */\r\nexport function componentSupportsTier(componentType: ComponentType, tier: Tier): boolean {\r\n const entry = COMPONENT_REGISTRY[componentType];\r\n return entry.tiers.includes(tier);\r\n}\r\n\r\n/**\r\n * Search components by name or category\r\n *\r\n * @param query - Search query\r\n * @returns Array of matching component entries\r\n */\r\nexport function searchComponents(query: string): ComponentRegistryEntry[] {\r\n const lowerQuery = query.toLowerCase();\r\n return Object.values(COMPONENT_REGISTRY).filter(\r\n (component) =>\r\n component.name.toLowerCase().includes(lowerQuery) ||\r\n component.id.toLowerCase().includes(lowerQuery) ||\r\n component.category.toLowerCase().includes(lowerQuery)\r\n );\r\n}\r\n\r\n/**\r\n * Get total component count\r\n *\r\n * @returns Total number of registered components\r\n */\r\nexport function getTotalComponentCount(): number {\r\n return Object.keys(COMPONENT_REGISTRY).length;\r\n}\r\n\r\n/**\r\n * Get component element type\r\n *\r\n * @param componentType - Component type\r\n * @returns Base HTML element type\r\n */\r\nexport function getComponentElementType(componentType: ComponentType): string {\r\n return COMPONENT_REGISTRY[componentType].elementType;\r\n}\r\n","/**\r\n * Design Systems Registry\r\n * Maps design systems to their factor values (24-Factor system with Tailwind CSS v4)\r\n *\r\n * @packageDocumentation\r\n * @module registries/design-systems-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { DesignSystem } from '../types';\r\nimport type {\r\n DesignSystemRegistryEntry,\r\n FactorValue,\r\n FactorId,\r\n} from '../../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// FACTOR VALUE HELPERS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a factor value with Tailwind classes and CSS variables\r\n */\r\nfunction createFactorValue(\r\n factorId: FactorId,\r\n value: string,\r\n tailwindClasses: string,\r\n cssVariables?: Record<string, string>\r\n): FactorValue {\r\n return {\r\n factorId,\r\n value,\r\n tailwindClasses,\r\n cssVariables,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: MATERIAL DESIGN\r\n// ============================================================================\r\n\r\nconst MATERIAL_DESIGN_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-blue-500 text-white hover:bg-blue-600', {\r\n '--md-color-primary': '#2196f3',\r\n '--md-color-on-primary': '#ffffff',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-10 px-6 text-sm', {\r\n '--md-size-md': '2.5rem',\r\n }),\r\n 3: createFactorValue(3, 'filled', 'bg-blue-500 text-white', {\r\n '--md-variant': 'filled',\r\n }),\r\n 4: createFactorValue(4, 'md', 'rounded-lg', {\r\n '--md-radius-md': '0.5rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'data-[state=default]:opacity-100', {\r\n '--md-state-layer-opacity': '0',\r\n }),\r\n 8: createFactorValue(8, 'standard', 'transition-all duration-200 ease-out', {\r\n '--md-motion-duration': '200ms',\r\n '--md-motion-easing': 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n }),\r\n 9: createFactorValue(9, 'md', 'shadow-md hover:shadow-lg', {\r\n '--md-elevation-md': '0 2px 4px -1px rgba(0,0,0,0.2)',\r\n }),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:outline-2 focus-visible:outline-offset-2'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'default', 'px-4 py-2', {\r\n '--md-density-scale': '0',\r\n }),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-surface text-on-surface'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-4', {\r\n '--md-spacing-md': '1rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-base font-normal leading-normal', {\r\n '--md-typography-body': '1rem/1.5',\r\n }),\r\n 19: createFactorValue(19, 'none', 'border-0'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'default', 'transition-all duration-200', {\r\n '--md-transition-duration': '200ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: iOS HIG\r\n// ============================================================================\r\n\r\nconst IOS_HIG_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-blue-500 text-white', {\r\n '--ios-tint-color': '#007aff',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-11 px-4 text-[17px]', {\r\n '--ios-control-size': '44px',\r\n }),\r\n 3: createFactorValue(3, 'filled', 'bg-blue-500 text-white'),\r\n 4: createFactorValue(4, 'lg', 'rounded-xl', {\r\n '--ios-corner-radius': '0.75rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'active:opacity-80'),\r\n 8: createFactorValue(8, 'smooth', 'transition-all duration-300 ease-in-out', {\r\n '--ios-spring-duration': '300ms',\r\n }),\r\n 9: createFactorValue(9, 'sm', 'shadow-sm', {\r\n '--ios-shadow': '0 1px 3px rgba(0,0,0,0.12)',\r\n }),\r\n 10: createFactorValue(10, 'enhanced', 'focus-visible:ring-2 focus-visible:ring-blue-500'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'comfortable', 'px-5 py-3', {\r\n '--ios-content-margins': '20px',\r\n }),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-white dark:bg-black'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-3', {\r\n '--ios-spacing': '16px',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-[17px] font-normal tracking-tight', {\r\n '--ios-font-body': '-apple-system, BlinkMacSystemFont',\r\n }),\r\n 19: createFactorValue(19, 'subtle', 'border border-gray-200'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'hidden', 'overflow-hidden'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'smooth', 'transition-all duration-300 ease-in-out', {\r\n '--ios-transition': '300ms ease-in-out',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: GLASSMORPHISM\r\n// ============================================================================\r\n\r\nconst GLASSMORPHISM_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-white/20 text-white', {\r\n '--glass-bg-opacity': '0.2',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-10 px-6 text-sm'),\r\n 3: createFactorValue(3, 'glass', 'bg-white/10 backdrop-blur-lg border border-white/20', {\r\n '--glass-blur': '16px',\r\n }),\r\n 4: createFactorValue(4, 'xl', 'rounded-2xl', {\r\n '--glass-radius': '1rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:bg-white/30'),\r\n 8: createFactorValue(8, 'smooth', 'transition-all duration-300 ease-out', {\r\n '--glass-transition': '300ms',\r\n }),\r\n 9: createFactorValue(9, 'lg', 'shadow-lg shadow-black/10', {\r\n '--glass-shadow': '0 8px 32px rgba(0,0,0,0.1)',\r\n }),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:ring-2 focus-visible:ring-white/50'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'comfortable', 'px-6 py-3'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'dark', 'bg-gray-900/80'),\r\n 17: createFactorValue(17, 'lg', 'p-6 gap-4', {\r\n '--glass-spacing': '1.5rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-base font-medium'),\r\n 19: createFactorValue(19, 'subtle', 'border border-white/20'),\r\n 20: createFactorValue(20, 'high', 'opacity-90'),\r\n 21: createFactorValue(21, 'hidden', 'overflow-hidden'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'smooth', 'transition-all duration-300', {\r\n '--glass-transition-duration': '300ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: NEUMORPHISM\r\n// ============================================================================\r\n\r\nconst NEUMORPHISM_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'neutral', 'bg-gray-200 text-gray-700', {\r\n '--neu-bg': '#e0e0e0',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-12 px-6 text-sm'),\r\n 3: createFactorValue(3, 'soft', 'shadow-[8px_8px_16px_#bebebe,-8px_-8px_16px_#ffffff]', {\r\n '--neu-shadow-dark': '#bebebe',\r\n '--neu-shadow-light': '#ffffff',\r\n }),\r\n 4: createFactorValue(4, 'xl', 'rounded-2xl', {\r\n '--neu-radius': '1rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(\r\n 7,\r\n 'default',\r\n 'active:shadow-[inset_8px_8px_16px_#bebebe,inset_-8px_-8px_16px_#ffffff]'\r\n ),\r\n 8: createFactorValue(8, 'smooth', 'transition-all duration-200 ease-in-out', {\r\n '--neu-transition': '200ms',\r\n }),\r\n 9: createFactorValue(9, 'neumorphic', 'shadow-[8px_8px_16px_#bebebe,-8px_-8px_16px_#ffffff]'),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:ring-2 focus-visible:ring-gray-400'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'comfortable', 'px-6 py-3'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'light', 'bg-gray-200'),\r\n 17: createFactorValue(17, 'lg', 'p-6 gap-4', {\r\n '--neu-spacing': '1.5rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-base font-medium'),\r\n 19: createFactorValue(19, 'none', 'border-0'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'smooth', 'transition-shadow duration-200', {\r\n '--neu-transition-duration': '200ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: BRUTALISM\r\n// ============================================================================\r\n\r\nconst BRUTALISM_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-black text-white', {\r\n '--brutal-color': '#000000',\r\n }),\r\n 2: createFactorValue(2, 'lg', 'h-14 px-8 text-lg font-bold'),\r\n 3: createFactorValue(3, 'solid', 'bg-black text-white border-4 border-black', {\r\n '--brutal-border-width': '4px',\r\n }),\r\n 4: createFactorValue(4, 'none', 'rounded-none', {\r\n '--brutal-radius': '0',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(\r\n 7,\r\n 'default',\r\n 'hover:translate-x-1 hover:-translate-y-1 active:translate-x-0 active:translate-y-0'\r\n ),\r\n 8: createFactorValue(8, 'none', 'transition-transform duration-100', {\r\n '--brutal-transition': '100ms',\r\n }),\r\n 9: createFactorValue(9, 'bold', 'shadow-[4px_4px_0_0_#000]', {\r\n '--brutal-shadow': '4px 4px 0 0 #000',\r\n }),\r\n 10: createFactorValue(\r\n 10,\r\n 'standard',\r\n 'focus-visible:outline-4 focus-visible:outline-offset-2 focus-visible:outline-black'\r\n ),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'spacious', 'px-8 py-4'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'light', 'bg-white'),\r\n 17: createFactorValue(17, 'lg', 'p-6 gap-6', {\r\n '--brutal-spacing': '1.5rem',\r\n }),\r\n 18: createFactorValue(18, 'heading', 'text-xl font-black uppercase tracking-wide', {\r\n '--brutal-font-weight': '900',\r\n }),\r\n 19: createFactorValue(19, 'bold', 'border-4 border-black'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'instant', 'transition-transform duration-100', {\r\n '--brutal-transition-duration': '100ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: MINIMALISM\r\n// ============================================================================\r\n\r\nconst MINIMALISM_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'neutral', 'bg-gray-900 text-white', {\r\n '--min-color': '#111111',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-10 px-4 text-sm'),\r\n 3: createFactorValue(3, 'ghost', 'bg-transparent hover:bg-gray-100 text-gray-900', {\r\n '--min-hover-bg': 'rgba(0,0,0,0.05)',\r\n }),\r\n 4: createFactorValue(4, 'sm', 'rounded-md', {\r\n '--min-radius': '0.375rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:opacity-80'),\r\n 8: createFactorValue(8, 'subtle', 'transition-opacity duration-150', {\r\n '--min-transition': '150ms',\r\n }),\r\n 9: createFactorValue(9, 'none', 'shadow-none'),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:ring-1 focus-visible:ring-gray-400'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'compact', 'px-3 py-1.5'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-white dark:bg-gray-900'),\r\n 17: createFactorValue(17, 'sm', 'p-3 gap-2', {\r\n '--min-spacing': '0.75rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-sm font-normal', {\r\n '--min-font-size': '0.875rem',\r\n }),\r\n 19: createFactorValue(19, 'subtle', 'border border-gray-200'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'subtle', 'transition-opacity duration-150', {\r\n '--min-transition-duration': '150ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: CYBERPUNK\r\n// ============================================================================\r\n\r\nconst CYBERPUNK_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'accent', 'bg-cyan-500 text-black', {\r\n '--cyber-neon': '#00ffff',\r\n '--cyber-pink': '#ff00ff',\r\n }),\r\n 2: createFactorValue(2, 'lg', 'h-12 px-6 text-base'),\r\n 3: createFactorValue(\r\n 3,\r\n 'neon',\r\n 'bg-black border-2 border-cyan-500 text-cyan-500 shadow-[0_0_10px_#00ffff]',\r\n {\r\n '--cyber-glow': '0 0 10px #00ffff',\r\n }\r\n ),\r\n 4: createFactorValue(4, 'sm', 'rounded-sm', {\r\n '--cyber-radius': '0.125rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:shadow-[0_0_20px_#00ffff] hover:text-white'),\r\n 8: createFactorValue(8, 'bounce', 'transition-all duration-200 ease-out', {\r\n '--cyber-transition': '200ms',\r\n }),\r\n 9: createFactorValue(9, 'lg', 'shadow-[0_0_20px_rgba(0,255,255,0.5)]', {\r\n '--cyber-shadow': '0 0 20px rgba(0,255,255,0.5)',\r\n }),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:ring-2 focus-visible:ring-cyan-500'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'default', 'px-4 py-2'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'dark', 'bg-gray-950'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-4', {\r\n '--cyber-spacing': '1rem',\r\n }),\r\n 18: createFactorValue(18, 'mono', 'font-mono text-sm uppercase tracking-wider', {\r\n '--cyber-font': 'monospace',\r\n }),\r\n 19: createFactorValue(19, 'solid', 'border-2 border-cyan-500'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'hidden', 'overflow-hidden'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'default', 'transition-all duration-200', {\r\n '--cyber-transition-duration': '200ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: FLAT DESIGN\r\n// ============================================================================\r\n\r\nconst FLAT_DESIGN_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-blue-500 text-white', {\r\n '--flat-primary': '#3498db',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-10 px-5 text-sm'),\r\n 3: createFactorValue(3, 'solid', 'bg-blue-500 text-white'),\r\n 4: createFactorValue(4, 'md', 'rounded-md', {\r\n '--flat-radius': '0.375rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:bg-blue-600 active:bg-blue-700'),\r\n 8: createFactorValue(8, 'standard', 'transition-colors duration-150', {\r\n '--flat-transition': '150ms',\r\n }),\r\n 9: createFactorValue(9, 'none', 'shadow-none'),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:ring-2 focus-visible:ring-blue-300'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'default', 'px-4 py-2'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-white dark:bg-gray-800'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-4', {\r\n '--flat-spacing': '1rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-base font-normal'),\r\n 19: createFactorValue(19, 'none', 'border-0'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'fast', 'transition-colors duration-150', {\r\n '--flat-transition-duration': '150ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: RETRO VINTAGE\r\n// ============================================================================\r\n\r\nconst RETRO_VINTAGE_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'warm', 'bg-amber-600 text-amber-50', {\r\n '--retro-primary': '#d97706',\r\n '--retro-cream': '#fef3c7',\r\n }),\r\n 2: createFactorValue(2, 'lg', 'h-12 px-6 text-base'),\r\n 3: createFactorValue(3, 'retro', 'bg-amber-600 text-amber-50 border-2 border-amber-800', {\r\n '--retro-border': '#92400e',\r\n }),\r\n 4: createFactorValue(4, 'lg', 'rounded-lg', {\r\n '--retro-radius': '0.5rem',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:bg-amber-700 active:bg-amber-800'),\r\n 8: createFactorValue(8, 'standard', 'transition-all duration-200', {\r\n '--retro-transition': '200ms',\r\n }),\r\n 9: createFactorValue(9, 'md', 'shadow-md', {\r\n '--retro-shadow': '0 4px 6px -1px rgba(0,0,0,0.1)',\r\n }),\r\n 10: createFactorValue(10, 'standard', 'focus-visible:ring-2 focus-visible:ring-amber-400'),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'comfortable', 'px-5 py-2.5'),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'light', 'bg-amber-50'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-4', {\r\n '--retro-spacing': '1rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-base font-serif', {\r\n '--retro-font': 'Georgia, serif',\r\n }),\r\n 19: createFactorValue(19, 'solid', 'border-2 border-amber-800'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'default', 'transition-all duration-200', {\r\n '--retro-transition-duration': '200ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: FLUENT DESIGN\r\n// ============================================================================\r\n\r\nconst FLUENT_DESIGN_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-blue-600 text-white', {\r\n '--fluent-accent': '#0078d4',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-8 px-3 text-sm', {\r\n '--fluent-control-height': '32px',\r\n }),\r\n 3: createFactorValue(3, 'filled', 'bg-blue-600 text-white'),\r\n 4: createFactorValue(4, 'sm', 'rounded', {\r\n '--fluent-radius': '4px',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:bg-blue-700 active:bg-blue-800'),\r\n 8: createFactorValue(8, 'standard', 'transition-all duration-100 ease-out', {\r\n '--fluent-duration': '100ms',\r\n }),\r\n 9: createFactorValue(9, 'sm', 'shadow-sm', {\r\n '--fluent-shadow': '0 1px 2px rgba(0,0,0,0.14)',\r\n }),\r\n 10: createFactorValue(\r\n 10,\r\n 'enhanced',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black'\r\n ),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'compact', 'px-3 py-1', {\r\n '--fluent-density': 'compact',\r\n }),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-white dark:bg-gray-900'),\r\n 17: createFactorValue(17, 'sm', 'p-3 gap-2', {\r\n '--fluent-spacing': '8px',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-sm font-normal', {\r\n '--fluent-font': 'Segoe UI, sans-serif',\r\n }),\r\n 19: createFactorValue(19, 'subtle', 'border border-gray-300'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'fast', 'transition-all duration-100', {\r\n '--fluent-transition-duration': '100ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: CARBON DESIGN\r\n// ============================================================================\r\n\r\nconst CARBON_DESIGN_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-blue-600 text-white', {\r\n '--carbon-blue-60': '#0f62fe',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-12 px-4 text-sm', {\r\n '--carbon-field-height': '48px',\r\n }),\r\n 3: createFactorValue(3, 'primary', 'bg-blue-600 text-white'),\r\n 4: createFactorValue(4, 'none', 'rounded-none', {\r\n '--carbon-radius': '0',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:bg-blue-700 active:bg-blue-800'),\r\n 8: createFactorValue(8, 'standard', 'transition-all duration-150', {\r\n '--carbon-transition': '150ms',\r\n }),\r\n 9: createFactorValue(9, 'none', 'shadow-none'),\r\n 10: createFactorValue(\r\n 10,\r\n 'maximum',\r\n 'focus:outline-2 focus:outline-offset-2 focus:outline-blue-600'\r\n ),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'default', 'px-4 py-3', {\r\n '--carbon-spacing': '16px',\r\n }),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-gray-100 dark:bg-gray-900'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-4', {\r\n '--carbon-layout-spacing': '1rem',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-sm font-normal', {\r\n '--carbon-font': 'IBM Plex Sans, sans-serif',\r\n }),\r\n 19: createFactorValue(19, 'none', 'border-0'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'default', 'transition-all duration-150', {\r\n '--carbon-transition-duration': '150ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM: ANT DESIGN\r\n// ============================================================================\r\n\r\nconst ANT_DESIGN_FACTORS: Partial<Record<FactorId, FactorValue>> = {\r\n 1: createFactorValue(1, 'primary', 'bg-blue-500 text-white', {\r\n '--ant-primary': '#1677ff',\r\n }),\r\n 2: createFactorValue(2, 'md', 'h-8 px-4 text-sm', {\r\n '--ant-control-height': '32px',\r\n }),\r\n 3: createFactorValue(\r\n 3,\r\n 'default',\r\n 'bg-white border border-gray-300 text-gray-700 hover:border-blue-500 hover:text-blue-500'\r\n ),\r\n 4: createFactorValue(4, 'sm', 'rounded-md', {\r\n '--ant-radius': '6px',\r\n }),\r\n 5: createFactorValue(5, 'relative', 'relative'),\r\n 6: createFactorValue(6, 'left', 'flex-row'),\r\n 7: createFactorValue(7, 'default', 'hover:border-blue-400 active:border-blue-600'),\r\n 8: createFactorValue(8, 'standard', 'transition-all duration-200 ease-in-out', {\r\n '--ant-transition': '200ms',\r\n }),\r\n 9: createFactorValue(9, 'xs', 'shadow-sm', {\r\n '--ant-shadow': '0 2px 0 rgba(0,0,0,0.02)',\r\n }),\r\n 10: createFactorValue(\r\n 10,\r\n 'standard',\r\n 'focus-visible:ring-2 focus-visible:ring-blue-300 focus-visible:ring-offset-1'\r\n ),\r\n 11: createFactorValue(11, 'center', 'items-center justify-center'),\r\n 12: createFactorValue(12, 'horizontal', 'flex-row'),\r\n 13: createFactorValue(13, 'default', 'px-4 py-1', {\r\n '--ant-padding': '4px 15px',\r\n }),\r\n 14: createFactorValue(14, 'idle', 'data-[loading=false]:opacity-100'),\r\n 15: createFactorValue(15, 'all', 'w-full sm:w-auto'),\r\n 16: createFactorValue(16, 'system', 'bg-white dark:bg-gray-800'),\r\n 17: createFactorValue(17, 'md', 'p-4 gap-3', {\r\n '--ant-spacing': '16px',\r\n }),\r\n 18: createFactorValue(18, 'body', 'text-sm font-normal leading-normal', {\r\n '--ant-font': '-apple-system, BlinkMacSystemFont, Segoe UI',\r\n }),\r\n 19: createFactorValue(19, 'subtle', 'border border-gray-300'),\r\n 20: createFactorValue(20, 'full', 'opacity-100'),\r\n 21: createFactorValue(21, 'visible', 'overflow-visible'),\r\n 22: createFactorValue(22, 'pointer', 'cursor-pointer'),\r\n 23: createFactorValue(23, 'auto', 'z-auto'),\r\n 24: createFactorValue(24, 'default', 'transition-all duration-200', {\r\n '--ant-transition-duration': '200ms',\r\n }),\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM REGISTRY\r\n// ============================================================================\r\n\r\n/**\r\n * Design System Registry\r\n * Maps each design system to its factor values and CSS variables\r\n *\r\n * @remarks\r\n * - Each design system defines values for all 24 factors\r\n * - Values include Tailwind CSS classes for direct styling\r\n * - CSS variables are provided for Tailwind v4 @theme integration\r\n */\r\nexport const DESIGN_SYSTEM_REGISTRY: Record<DesignSystem, DesignSystemRegistryEntry> = {\r\n 'material-design': {\r\n id: 'material-design',\r\n name: 'Material Design',\r\n description: 'Google Material Design 3 with dynamic color and motion',\r\n factorValues: MATERIAL_DESIGN_FACTORS,\r\n cssVariables: {\r\n '--md-color-primary': '#2196f3',\r\n '--md-color-secondary': '#9c27b0',\r\n '--md-color-tertiary': '#009688',\r\n '--md-color-error': '#f44336',\r\n '--md-color-surface': '#ffffff',\r\n '--md-color-on-surface': '#1c1b1f',\r\n '--md-shape-corner-small': '4px',\r\n '--md-shape-corner-medium': '8px',\r\n '--md-shape-corner-large': '16px',\r\n '--md-motion-duration-short': '100ms',\r\n '--md-motion-duration-medium': '200ms',\r\n '--md-motion-duration-long': '500ms',\r\n },\r\n },\r\n\r\n 'ios-hig': {\r\n id: 'ios-hig',\r\n name: 'iOS Human Interface Guidelines',\r\n description: 'Apple iOS design with SF symbols and spring animations',\r\n factorValues: IOS_HIG_FACTORS,\r\n cssVariables: {\r\n '--ios-tint-color': '#007aff',\r\n '--ios-system-red': '#ff3b30',\r\n '--ios-system-green': '#34c759',\r\n '--ios-system-orange': '#ff9500',\r\n '--ios-background': '#f2f2f7',\r\n '--ios-grouped-background': '#ffffff',\r\n '--ios-separator': '#c6c6c8',\r\n '--ios-corner-radius-small': '8px',\r\n '--ios-corner-radius-medium': '12px',\r\n '--ios-corner-radius-large': '20px',\r\n '--ios-spring-stiffness': '500',\r\n '--ios-spring-damping': '25',\r\n },\r\n },\r\n\r\n glassmorphism: {\r\n id: 'glassmorphism',\r\n name: 'Glassmorphism',\r\n description: 'Frosted glass effect with blur and transparency',\r\n factorValues: GLASSMORPHISM_FACTORS,\r\n cssVariables: {\r\n '--glass-blur': '16px',\r\n '--glass-saturation': '180%',\r\n '--glass-opacity': '0.7',\r\n '--glass-border-opacity': '0.2',\r\n '--glass-shadow': '0 8px 32px rgba(0, 0, 0, 0.1)',\r\n '--glass-background-light': 'rgba(255, 255, 255, 0.2)',\r\n '--glass-background-dark': 'rgba(0, 0, 0, 0.2)',\r\n '--glass-border-color': 'rgba(255, 255, 255, 0.18)',\r\n },\r\n },\r\n\r\n neumorphism: {\r\n id: 'neumorphism',\r\n name: 'Neumorphism',\r\n description: 'Soft UI with inset and outset shadows',\r\n factorValues: NEUMORPHISM_FACTORS,\r\n cssVariables: {\r\n '--neu-background': '#e0e0e0',\r\n '--neu-shadow-light': '#ffffff',\r\n '--neu-shadow-dark': '#bebebe',\r\n '--neu-shadow-distance': '8px',\r\n '--neu-shadow-blur': '16px',\r\n '--neu-border-radius': '16px',\r\n '--neu-intensity': '0.15',\r\n },\r\n },\r\n\r\n brutalism: {\r\n id: 'brutalism',\r\n name: 'Brutalism',\r\n description: 'Bold, raw design with hard edges and stark contrast',\r\n factorValues: BRUTALISM_FACTORS,\r\n cssVariables: {\r\n '--brutal-black': '#000000',\r\n '--brutal-white': '#ffffff',\r\n '--brutal-accent': '#ff0000',\r\n '--brutal-border-width': '4px',\r\n '--brutal-shadow-offset': '4px',\r\n '--brutal-font-weight': '900',\r\n '--brutal-letter-spacing': '0.05em',\r\n },\r\n },\r\n\r\n minimalism: {\r\n id: 'minimalism',\r\n name: 'Minimalism',\r\n description: 'Clean, simple design with ample whitespace',\r\n factorValues: MINIMALISM_FACTORS,\r\n cssVariables: {\r\n '--min-primary': '#111111',\r\n '--min-secondary': '#666666',\r\n '--min-muted': '#999999',\r\n '--min-background': '#ffffff',\r\n '--min-border': '#e5e5e5',\r\n '--min-spacing-unit': '4px',\r\n '--min-max-width': '640px',\r\n },\r\n },\r\n\r\n cyberpunk: {\r\n id: 'cyberpunk',\r\n name: 'Cyberpunk',\r\n description: 'Neon colors with glowing effects and dark backgrounds',\r\n factorValues: CYBERPUNK_FACTORS,\r\n cssVariables: {\r\n '--cyber-neon-cyan': '#00ffff',\r\n '--cyber-neon-magenta': '#ff00ff',\r\n '--cyber-neon-yellow': '#ffff00',\r\n '--cyber-dark': '#0a0a0f',\r\n '--cyber-glow-intensity': '10px',\r\n '--cyber-glow-spread': '20px',\r\n '--cyber-scanline-opacity': '0.1',\r\n },\r\n },\r\n\r\n 'flat-design': {\r\n id: 'flat-design',\r\n name: 'Flat Design',\r\n description: 'Simple, colorful design without shadows or textures',\r\n factorValues: FLAT_DESIGN_FACTORS,\r\n cssVariables: {\r\n '--flat-primary': '#3498db',\r\n '--flat-secondary': '#2ecc71',\r\n '--flat-danger': '#e74c3c',\r\n '--flat-warning': '#f39c12',\r\n '--flat-dark': '#2c3e50',\r\n '--flat-light': '#ecf0f1',\r\n '--flat-border-radius': '4px',\r\n },\r\n },\r\n\r\n 'retro-vintage': {\r\n id: 'retro-vintage',\r\n name: 'Retro Vintage',\r\n description: 'Warm colors with nostalgic typography and textures',\r\n factorValues: RETRO_VINTAGE_FACTORS,\r\n cssVariables: {\r\n '--retro-cream': '#fef3c7',\r\n '--retro-brown': '#92400e',\r\n '--retro-orange': '#d97706',\r\n '--retro-rust': '#b45309',\r\n '--retro-olive': '#65a30d',\r\n '--retro-font-display': 'Georgia, serif',\r\n '--retro-font-body': 'Palatino, serif',\r\n },\r\n },\r\n\r\n 'fluent-design': {\r\n id: 'fluent-design',\r\n name: 'Fluent Design',\r\n description: 'Microsoft Fluent with depth, motion, and material',\r\n factorValues: FLUENT_DESIGN_FACTORS,\r\n cssVariables: {\r\n '--fluent-accent': '#0078d4',\r\n '--fluent-accent-dark': '#106ebe',\r\n '--fluent-accent-light': '#2899f5',\r\n '--fluent-neutral-primary': '#323130',\r\n '--fluent-neutral-secondary': '#605e5c',\r\n '--fluent-background': '#ffffff',\r\n '--fluent-border-radius': '4px',\r\n '--fluent-reveal-highlight': 'radial-gradient(circle, rgba(0,0,0,0.1) 0%, transparent 100%)',\r\n },\r\n },\r\n\r\n 'carbon-design': {\r\n id: 'carbon-design',\r\n name: 'Carbon Design',\r\n description: 'IBM Carbon with accessibility and enterprise patterns',\r\n factorValues: CARBON_DESIGN_FACTORS,\r\n cssVariables: {\r\n '--carbon-blue-60': '#0f62fe',\r\n '--carbon-blue-70': '#0043ce',\r\n '--carbon-gray-10': '#f4f4f4',\r\n '--carbon-gray-100': '#161616',\r\n '--carbon-red-60': '#da1e28',\r\n '--carbon-green-60': '#198038',\r\n '--carbon-spacing-05': '16px',\r\n '--carbon-spacing-07': '32px',\r\n },\r\n },\r\n\r\n 'ant-design': {\r\n id: 'ant-design',\r\n name: 'Ant Design',\r\n description: 'Alibaba Ant Design with comprehensive components',\r\n factorValues: ANT_DESIGN_FACTORS,\r\n cssVariables: {\r\n '--ant-primary': '#1677ff',\r\n '--ant-success': '#52c41a',\r\n '--ant-warning': '#faad14',\r\n '--ant-error': '#ff4d4f',\r\n '--ant-info': '#1677ff',\r\n '--ant-text-primary': 'rgba(0, 0, 0, 0.88)',\r\n '--ant-text-secondary': 'rgba(0, 0, 0, 0.65)',\r\n '--ant-border-radius': '6px',\r\n '--ant-control-height': '32px',\r\n },\r\n },\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM REGISTRY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get design system registry entry\r\n *\r\n * @param designSystem - Design system to get entry for\r\n * @returns Design system registry entry\r\n *\r\n * @example\r\n * ```typescript\r\n * const entry = getDesignSystemEntry('material-design');\r\n * // entry.name = 'Material Design'\r\n * // entry.description = 'Google Material Design 3...'\r\n * ```\r\n */\r\nexport function getDesignSystemEntry(designSystem: DesignSystem): DesignSystemRegistryEntry {\r\n return DESIGN_SYSTEM_REGISTRY[designSystem];\r\n}\r\n\r\n/**\r\n * Get all design system IDs\r\n *\r\n * @returns Array of all design system IDs\r\n */\r\nexport function getAllDesignSystems(): DesignSystem[] {\r\n return Object.keys(DESIGN_SYSTEM_REGISTRY) as DesignSystem[];\r\n}\r\n\r\n/**\r\n * Get factor value for a design system\r\n *\r\n * @param designSystem - Design system to check\r\n * @param factorId - Factor ID to get value for\r\n * @returns Factor value or undefined if not defined\r\n *\r\n * @example\r\n * ```typescript\r\n * const value = getFactorValue('material-design', 1);\r\n * // value.tailwindClasses = 'bg-blue-500 text-white hover:bg-blue-600'\r\n * ```\r\n */\r\nexport function getFactorValue(\r\n designSystem: DesignSystem,\r\n factorId: FactorId\r\n): FactorValue | undefined {\r\n const entry = DESIGN_SYSTEM_REGISTRY[designSystem];\r\n return entry.factorValues[factorId];\r\n}\r\n\r\n/**\r\n * Get all factor values for a design system\r\n *\r\n * @param designSystem - Design system to get values for\r\n * @returns Map of factor ID to factor value\r\n */\r\nexport function getAllFactorValues(\r\n designSystem: DesignSystem\r\n): Partial<Record<FactorId, FactorValue>> {\r\n return DESIGN_SYSTEM_REGISTRY[designSystem].factorValues;\r\n}\r\n\r\n/**\r\n * Get Tailwind classes for a factor in a design system\r\n *\r\n * @param designSystem - Design system to check\r\n * @param factorId - Factor ID to get classes for\r\n * @returns Tailwind classes or empty string if not defined\r\n */\r\nexport function getFactorTailwindClasses(designSystem: DesignSystem, factorId: FactorId): string {\r\n const value = getFactorValue(designSystem, factorId);\r\n return value?.tailwindClasses ?? '';\r\n}\r\n\r\n/**\r\n * Get CSS variables for a factor in a design system\r\n *\r\n * @param designSystem - Design system to check\r\n * @param factorId - Factor ID to get variables for\r\n * @returns CSS variables object or empty object if not defined\r\n */\r\nexport function getFactorCssVariables(\r\n designSystem: DesignSystem,\r\n factorId: FactorId\r\n): Record<string, string> {\r\n const value = getFactorValue(designSystem, factorId);\r\n return value?.cssVariables ?? {};\r\n}\r\n\r\n/**\r\n * Get all CSS variables for a design system\r\n *\r\n * @param designSystem - Design system to get variables for\r\n * @returns All CSS variables for the design system\r\n */\r\nexport function getDesignSystemCssVariables(designSystem: DesignSystem): Record<string, string> {\r\n return DESIGN_SYSTEM_REGISTRY[designSystem].cssVariables;\r\n}\r\n\r\n/**\r\n * Get design system name\r\n *\r\n * @param designSystem - Design system ID\r\n * @returns Human-readable name\r\n */\r\nexport function getDesignSystemName(designSystem: DesignSystem): string {\r\n return DESIGN_SYSTEM_REGISTRY[designSystem].name;\r\n}\r\n\r\n/**\r\n * Get design system description\r\n *\r\n * @param designSystem - Design system ID\r\n * @returns Description of the design system\r\n */\r\nexport function getDesignSystemDescription(designSystem: DesignSystem): string {\r\n return DESIGN_SYSTEM_REGISTRY[designSystem].description;\r\n}\r\n\r\n/**\r\n * Search design systems by name or description\r\n *\r\n * @param query - Search query\r\n * @returns Array of matching design system entries\r\n */\r\nexport function searchDesignSystems(query: string): DesignSystemRegistryEntry[] {\r\n const lowerQuery = query.toLowerCase();\r\n return Object.values(DESIGN_SYSTEM_REGISTRY).filter(\r\n (ds) =>\r\n ds.name.toLowerCase().includes(lowerQuery) ||\r\n ds.description.toLowerCase().includes(lowerQuery) ||\r\n ds.id.toLowerCase().includes(lowerQuery)\r\n );\r\n}\r\n\r\n/**\r\n * Get total design system count\r\n *\r\n * @returns Total number of registered design systems\r\n */\r\nexport function getTotalDesignSystemCount(): number {\r\n return Object.keys(DESIGN_SYSTEM_REGISTRY).length;\r\n}\r\n\r\n/**\r\n * Check if a design system has a specific factor value\r\n *\r\n * @param designSystem - Design system to check\r\n * @param factorId - Factor ID to check\r\n * @returns True if factor value is defined\r\n */\r\nexport function hasFactorValue(designSystem: DesignSystem, factorId: FactorId): boolean {\r\n const entry = DESIGN_SYSTEM_REGISTRY[designSystem];\r\n return entry.factorValues[factorId] !== undefined;\r\n}\r\n\r\n/**\r\n * Get design systems that define a specific factor\r\n *\r\n * @param factorId - Factor ID to check\r\n * @returns Array of design system IDs that define the factor\r\n */\r\nexport function getDesignSystemsWithFactor(factorId: FactorId): DesignSystem[] {\r\n return Object.values(DESIGN_SYSTEM_REGISTRY)\r\n .filter((ds) => ds.factorValues[factorId] !== undefined)\r\n .map((ds) => ds.id);\r\n}\r\n\r\n/**\r\n * Generate @theme CSS block for a design system (Tailwind v4)\r\n *\r\n * @param designSystem - Design system to generate theme for\r\n * @returns CSS string with @theme block\r\n *\r\n * @example\r\n * ```typescript\r\n * const css = generateThemeCss('material-design');\r\n * // @theme {\r\n * // --md-color-primary: #2196f3;\r\n * // ...\r\n * // }\r\n * ```\r\n */\r\nexport function generateThemeCss(designSystem: DesignSystem): string {\r\n const entry = DESIGN_SYSTEM_REGISTRY[designSystem];\r\n const variables = Object.entries(entry.cssVariables)\r\n .map(([key, value]) => ` ${key}: ${value};`)\r\n .join('\\n');\r\n\r\n return `@theme {\\n${variables}\\n}`;\r\n}\r\n\r\n/**\r\n * Merge factor values from design system with overrides\r\n *\r\n * @param designSystem - Base design system\r\n * @param overrides - Factor value overrides\r\n * @returns Merged factor values map\r\n */\r\nexport function mergeFactorValues(\r\n designSystem: DesignSystem,\r\n overrides: Partial<Record<FactorId, FactorValue>>\r\n): Map<FactorId, FactorValue> {\r\n const result = new Map<FactorId, FactorValue>();\r\n const baseValues = DESIGN_SYSTEM_REGISTRY[designSystem].factorValues;\r\n\r\n // Add base values\r\n for (const [id, value] of Object.entries(baseValues)) {\r\n if (value !== undefined) {\r\n result.set(Number(id) as FactorId, value);\r\n }\r\n }\r\n\r\n // Apply overrides\r\n for (const [id, value] of Object.entries(overrides)) {\r\n if (value !== undefined) {\r\n result.set(Number(id) as FactorId, value);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","/**\r\n * Tier Registry\r\n * Maps tiers to factor ranges and code features (Option C: Registry-based)\r\n *\r\n * @packageDocumentation\r\n * @module registries/tiers-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { Tier } from '../types';\r\nimport type { TierRegistryEntry, FactorId } from '../../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// TIER REGISTRY\r\n// ============================================================================\r\n\r\n/**\r\n * Tier Registry\r\n * Maps each tier to its factor range, code features, and LOC range\r\n *\r\n * @remarks\r\n * - Basic: Factors 1-6, minimal code features, 30-50 LOC\r\n * - Standard: Factors 1-14, forwardRef + displayName, 50-150 LOC\r\n * - Enterprise: Factors 1-24, full features, 150-300 LOC\r\n */\r\nexport const TIER_REGISTRY: Record<Tier, TierRegistryEntry> = {\r\n basic: {\r\n tier: 'basic',\r\n factorRange: { start: 1, end: 6 },\r\n codeFeatures: {\r\n useForwardRef: false,\r\n useMemo: false,\r\n useCallback: false,\r\n setDisplayName: false,\r\n includeAnalytics: false,\r\n includeAria: false,\r\n },\r\n locRange: { min: 30, max: 50 },\r\n },\r\n standard: {\r\n tier: 'standard',\r\n factorRange: { start: 1, end: 14 },\r\n codeFeatures: {\r\n useForwardRef: true,\r\n useMemo: false,\r\n useCallback: false,\r\n setDisplayName: true,\r\n includeAnalytics: false,\r\n includeAria: true,\r\n },\r\n locRange: { min: 50, max: 150 },\r\n },\r\n enterprise: {\r\n tier: 'enterprise',\r\n factorRange: { start: 1, end: 24 },\r\n codeFeatures: {\r\n useForwardRef: true,\r\n useMemo: true,\r\n useCallback: true,\r\n setDisplayName: true,\r\n includeAnalytics: true,\r\n includeAria: true,\r\n },\r\n locRange: { min: 150, max: 300 },\r\n },\r\n};\r\n\r\n// ============================================================================\r\n// TIER REGISTRY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get tier registry entry\r\n *\r\n * @param tier - Tier to get entry for\r\n * @returns Tier registry entry with factor range and code features\r\n *\r\n * @example\r\n * ```typescript\r\n * const entry = getTierEntry('enterprise');\r\n * // entry.factorRange = { start: 1, end: 24 }\r\n * // entry.codeFeatures.useMemo = true\r\n * ```\r\n */\r\nexport function getTierEntry(tier: Tier): TierRegistryEntry {\r\n return TIER_REGISTRY[tier];\r\n}\r\n\r\n/**\r\n * Get factors for a tier\r\n * Returns array of factor IDs enabled for the specified tier\r\n *\r\n * @param tier - Tier to get factors for\r\n * @returns Array of factor IDs (1-6, 1-14, or 1-24)\r\n *\r\n * @example\r\n * ```typescript\r\n * getFactorsForTier('basic') // [1, 2, 3, 4, 5, 6]\r\n * getFactorsForTier('standard') // [1, 2, ..., 14]\r\n * getFactorsForTier('enterprise') // [1, 2, ..., 24]\r\n * ```\r\n */\r\nexport function getFactorsForTier(tier: Tier): FactorId[] {\r\n const entry = TIER_REGISTRY[tier];\r\n const factors: FactorId[] = [];\r\n for (let i: number = entry.factorRange.start; i <= entry.factorRange.end; i++) {\r\n // i is guaranteed to be 1-24 by tier factor ranges\r\n const factorId: FactorId = i as FactorId;\r\n factors.push(factorId);\r\n }\r\n return factors;\r\n}\r\n\r\n/**\r\n * Get code features for a tier\r\n *\r\n * @param tier - Tier to get code features for\r\n * @returns Code features configuration\r\n *\r\n * @example\r\n * ```typescript\r\n * const features = getCodeFeaturesForTier('enterprise');\r\n * // features.useMemo = true\r\n * // features.includeAnalytics = true\r\n * ```\r\n */\r\nexport function getCodeFeaturesForTier(tier: Tier): TierRegistryEntry['codeFeatures'] {\r\n return TIER_REGISTRY[tier].codeFeatures;\r\n}\r\n\r\n/**\r\n * Get LOC range for a tier\r\n *\r\n * @param tier - Tier to get LOC range for\r\n * @returns Object with min and max LOC\r\n *\r\n * @example\r\n * ```typescript\r\n * const range = getLocRangeForTier('standard');\r\n * // range = { min: 50, max: 150 }\r\n * ```\r\n */\r\nexport function getLocRangeForTier(tier: Tier): TierRegistryEntry['locRange'] {\r\n return TIER_REGISTRY[tier].locRange;\r\n}\r\n\r\n/**\r\n * Check if a factor is enabled for a tier\r\n *\r\n * @param tier - Tier to check\r\n * @param factorId - Factor ID to check\r\n * @returns True if factor is enabled for tier\r\n *\r\n * @example\r\n * ```typescript\r\n * isFactorEnabledForTier('basic', 1) // true\r\n * isFactorEnabledForTier('basic', 10) // false\r\n * isFactorEnabledForTier('enterprise', 24) // true\r\n * ```\r\n */\r\nexport function isFactorEnabledForTier(tier: Tier, factorId: FactorId): boolean {\r\n const entry = TIER_REGISTRY[tier];\r\n return factorId >= entry.factorRange.start && factorId <= entry.factorRange.end;\r\n}\r\n\r\n/**\r\n * Get the minimum tier required for a factor\r\n *\r\n * @param factorId - Factor ID to check\r\n * @returns Minimum tier that supports this factor\r\n *\r\n * @example\r\n * ```typescript\r\n * getMinimumTierForFactor(5) // 'basic'\r\n * getMinimumTierForFactor(10) // 'standard'\r\n * getMinimumTierForFactor(20) // 'enterprise'\r\n * ```\r\n */\r\nexport function getMinimumTierForFactor(factorId: FactorId): Tier {\r\n if (factorId <= 6) {\r\n return 'basic';\r\n }\r\n if (factorId <= 14) {\r\n return 'standard';\r\n }\r\n return 'enterprise';\r\n}\r\n\r\n/**\r\n * Get all tiers that support a factor\r\n *\r\n * @param factorId - Factor ID to check\r\n * @returns Array of tiers that support this factor\r\n *\r\n * @example\r\n * ```typescript\r\n * getTiersSupportingFactor(5) // ['basic', 'standard', 'enterprise']\r\n * getTiersSupportingFactor(10) // ['standard', 'enterprise']\r\n * getTiersSupportingFactor(20) // ['enterprise']\r\n * ```\r\n */\r\nexport function getTiersSupportingFactor(factorId: FactorId): Tier[] {\r\n const tiers: Tier[] = [];\r\n if (factorId <= 6) {\r\n tiers.push('basic');\r\n }\r\n if (factorId <= 14) {\r\n tiers.push('standard');\r\n }\r\n if (factorId <= 24) {\r\n tiers.push('enterprise');\r\n }\r\n return tiers;\r\n}\r\n\r\n/**\r\n * Compare tier levels\r\n *\r\n * @param a - First tier\r\n * @param b - Second tier\r\n * @returns -1 if a < b, 0 if a === b, 1 if a > b\r\n *\r\n * @example\r\n * ```typescript\r\n * compareTierLevels('basic', 'enterprise') // -1\r\n * compareTierLevels('standard', 'standard') // 0\r\n * compareTierLevels('enterprise', 'basic') // 1\r\n * ```\r\n */\r\nexport function compareTierLevels(a: Tier, b: Tier): -1 | 0 | 1 {\r\n const order: Record<Tier, number> = {\r\n basic: 0,\r\n standard: 1,\r\n enterprise: 2,\r\n };\r\n const diff = order[a] - order[b];\r\n if (diff < 0) return -1;\r\n if (diff > 0) return 1;\r\n return 0;\r\n}\r\n\r\n/**\r\n * Get all tier IDs\r\n *\r\n * @returns Array of all tier IDs in order\r\n */\r\nexport function getAllTiers(): Tier[] {\r\n return ['basic', 'standard', 'enterprise'];\r\n}\r\n\r\n/**\r\n * Get tier display name\r\n *\r\n * @param tier - Tier to get display name for\r\n * @returns Capitalized tier name\r\n */\r\nexport function getTierDisplayName(tier: Tier): string {\r\n return tier.charAt(0).toUpperCase() + tier.slice(1);\r\n}\r\n","/**\r\n * Factors Registry\r\n * Consolidated 24-Factor definitions with metadata\r\n *\r\n * @packageDocumentation\r\n * @module registries/factors-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { FactorDefinition, FactorId, FactorGroup } from '../../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// FACTOR DEFINITIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Complete 24-Factor Registry\r\n * Defines all factors with their metadata, default values, and possible values\r\n *\r\n * @remarks\r\n * Factors are grouped by tier availability:\r\n * - Factors 1-6: Basic tier (visual foundations)\r\n * - Factors 7-14: Standard tier (interaction + layout)\r\n * - Factors 15-24: Enterprise tier (advanced features)\r\n */\r\nexport const FACTOR_REGISTRY: Record<FactorId, FactorDefinition> = {\r\n // ========================================================================\r\n // BASIC TIER FACTORS (1-6) - Visual Foundations\r\n // ========================================================================\r\n\r\n 1: {\r\n id: 1,\r\n name: 'Color',\r\n description: 'Color scheme options for components',\r\n group: 'visual',\r\n cssProperty: 'color',\r\n dataAttribute: 'data-color',\r\n defaultValue: 'primary',\r\n possibleValues: [\r\n 'primary',\r\n 'secondary',\r\n 'accent',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n 'neutral',\r\n ],\r\n },\r\n\r\n 2: {\r\n id: 2,\r\n name: 'Size',\r\n description: 'Component size options',\r\n group: 'visual',\r\n cssProperty: 'font-size',\r\n dataAttribute: 'data-size',\r\n defaultValue: 'md',\r\n possibleValues: ['xs', 'sm', 'md', 'lg', 'xl', '2xl', 'full'],\r\n },\r\n\r\n 3: {\r\n id: 3,\r\n name: 'Variant',\r\n description: 'Visual style variants',\r\n group: 'visual',\r\n dataAttribute: 'data-variant',\r\n defaultValue: 'solid',\r\n possibleValues: ['solid', 'outline', 'ghost', 'soft', 'link'],\r\n },\r\n\r\n 4: {\r\n id: 4,\r\n name: 'Shape',\r\n description: 'Border radius and shape options',\r\n group: 'visual',\r\n cssProperty: 'border-radius',\r\n dataAttribute: 'data-shape',\r\n defaultValue: 'md',\r\n possibleValues: ['none', 'sm', 'md', 'lg', 'xl', 'full', 'pill', 'square', 'circle'],\r\n },\r\n\r\n 5: {\r\n id: 5,\r\n name: 'Position',\r\n description: 'Layout position options',\r\n group: 'layout',\r\n cssProperty: 'position',\r\n dataAttribute: 'data-position',\r\n defaultValue: 'relative',\r\n possibleValues: [\r\n 'left',\r\n 'center',\r\n 'right',\r\n 'top',\r\n 'bottom',\r\n 'topLeft',\r\n 'topRight',\r\n 'bottomLeft',\r\n 'bottomRight',\r\n 'relative',\r\n 'absolute',\r\n 'fixed',\r\n 'sticky',\r\n ],\r\n },\r\n\r\n 6: {\r\n id: 6,\r\n name: 'IconPosition',\r\n description: 'Icon placement options',\r\n group: 'layout',\r\n dataAttribute: 'data-icon-position',\r\n defaultValue: 'left',\r\n possibleValues: ['left', 'right', 'top', 'bottom', 'only', 'start', 'end'],\r\n },\r\n\r\n // ========================================================================\r\n // STANDARD TIER FACTORS (7-14) - Interaction + Layout\r\n // ========================================================================\r\n\r\n 7: {\r\n id: 7,\r\n name: 'State',\r\n description: 'Component interaction states',\r\n group: 'experience',\r\n dataAttribute: 'data-state',\r\n defaultValue: 'default',\r\n possibleValues: [\r\n 'default',\r\n 'hover',\r\n 'focus',\r\n 'active',\r\n 'disabled',\r\n 'loading',\r\n 'error',\r\n 'success',\r\n ],\r\n },\r\n\r\n 8: {\r\n id: 8,\r\n name: 'Animation',\r\n description: 'Transition and animation effects',\r\n group: 'motion',\r\n cssProperty: 'animation',\r\n dataAttribute: 'data-animation',\r\n defaultValue: 'standard',\r\n possibleValues: ['none', 'subtle', 'standard', 'smooth', 'bounce', 'pulse', 'spin', 'ping'],\r\n },\r\n\r\n 9: {\r\n id: 9,\r\n name: 'Elevation',\r\n description: 'Shadow and depth levels',\r\n group: 'visual',\r\n cssProperty: 'box-shadow',\r\n dataAttribute: 'data-elevation',\r\n defaultValue: 'md',\r\n possibleValues: ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', 'inner', 'neumorphic'],\r\n },\r\n\r\n 10: {\r\n id: 10,\r\n name: 'Accessibility',\r\n description: 'Accessibility enhancement levels',\r\n group: 'experience',\r\n dataAttribute: 'data-a11y',\r\n defaultValue: 'standard',\r\n possibleValues: ['standard', 'enhanced', 'maximum'],\r\n },\r\n\r\n 11: {\r\n id: 11,\r\n name: 'Alignment',\r\n description: 'Layout alignment options',\r\n group: 'layout',\r\n cssProperty: 'align-items',\r\n dataAttribute: 'data-alignment',\r\n defaultValue: 'center',\r\n possibleValues: [\r\n 'start',\r\n 'center',\r\n 'end',\r\n 'between',\r\n 'around',\r\n 'evenly',\r\n 'stretch',\r\n 'baseline',\r\n ],\r\n },\r\n\r\n 12: {\r\n id: 12,\r\n name: 'Orientation',\r\n description: 'Layout direction options',\r\n group: 'layout',\r\n cssProperty: 'flex-direction',\r\n dataAttribute: 'data-orientation',\r\n defaultValue: 'horizontal',\r\n possibleValues: ['horizontal', 'vertical'],\r\n },\r\n\r\n 13: {\r\n id: 13,\r\n name: 'Density',\r\n description: 'Spacing and padding density',\r\n group: 'layout',\r\n dataAttribute: 'data-density',\r\n defaultValue: 'default',\r\n possibleValues: ['compact', 'default', 'comfortable', 'spacious'],\r\n },\r\n\r\n 14: {\r\n id: 14,\r\n name: 'LoadingState',\r\n description: 'Visual loading feedback',\r\n group: 'experience',\r\n dataAttribute: 'data-loading-state',\r\n defaultValue: 'idle',\r\n possibleValues: ['idle', 'loading', 'success', 'error'],\r\n },\r\n\r\n // ========================================================================\r\n // ENTERPRISE TIER FACTORS (15-24) - Advanced Features\r\n // ========================================================================\r\n\r\n 15: {\r\n id: 15,\r\n name: 'Responsive',\r\n description: 'Breakpoint-based configuration',\r\n group: 'layout',\r\n dataAttribute: 'data-responsive',\r\n defaultValue: 'all',\r\n possibleValues: ['all', 'sm', 'md', 'lg', 'xl', '2xl'],\r\n },\r\n\r\n 16: {\r\n id: 16,\r\n name: 'Theme',\r\n description: 'Light/dark mode appearance',\r\n group: 'visual',\r\n dataAttribute: 'data-theme',\r\n defaultValue: 'system',\r\n possibleValues: ['light', 'dark', 'system'],\r\n },\r\n\r\n 17: {\r\n id: 17,\r\n name: 'Spacing',\r\n description: 'Internal spacing and margins',\r\n group: 'layout',\r\n cssProperty: 'padding',\r\n dataAttribute: 'data-spacing',\r\n defaultValue: 'md',\r\n possibleValues: ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'],\r\n },\r\n\r\n 18: {\r\n id: 18,\r\n name: 'Typography',\r\n description: 'Text styling presets',\r\n group: 'visual',\r\n cssProperty: 'font-size',\r\n dataAttribute: 'data-typography',\r\n defaultValue: 'body',\r\n possibleValues: [\r\n 'body',\r\n 'bodyLarge',\r\n 'bodySm',\r\n 'heading',\r\n 'headingLg',\r\n 'headingSm',\r\n 'display',\r\n 'displayLg',\r\n 'displaySm',\r\n 'caption',\r\n 'overline',\r\n 'mono',\r\n 'label',\r\n 'labelLg',\r\n 'labelSm',\r\n ],\r\n },\r\n\r\n 19: {\r\n id: 19,\r\n name: 'Border',\r\n description: 'Border style and width',\r\n group: 'visual',\r\n cssProperty: 'border',\r\n dataAttribute: 'data-border',\r\n defaultValue: 'subtle',\r\n possibleValues: [\r\n 'none',\r\n 'subtle',\r\n 'solid',\r\n 'bold',\r\n 'dashed',\r\n 'dotted',\r\n 'double',\r\n 'ring',\r\n 'ringBold',\r\n ],\r\n },\r\n\r\n 20: {\r\n id: 20,\r\n name: 'Opacity',\r\n description: 'Transparency levels',\r\n group: 'visual',\r\n cssProperty: 'opacity',\r\n dataAttribute: 'data-opacity',\r\n defaultValue: 'full',\r\n possibleValues: ['transparent', 'dim', 'light', 'low', 'medium', 'high', 'full'],\r\n },\r\n\r\n 21: {\r\n id: 21,\r\n name: 'Overflow',\r\n description: 'Content overflow behavior',\r\n group: 'layout',\r\n cssProperty: 'overflow',\r\n dataAttribute: 'data-overflow',\r\n defaultValue: 'visible',\r\n possibleValues: [\r\n 'visible',\r\n 'hidden',\r\n 'scroll',\r\n 'auto',\r\n 'clip',\r\n 'scrollX',\r\n 'scrollY',\r\n 'hiddenX',\r\n 'hiddenY',\r\n ],\r\n },\r\n\r\n 22: {\r\n id: 22,\r\n name: 'Cursor',\r\n description: 'Cursor style on hover',\r\n group: 'experience',\r\n cssProperty: 'cursor',\r\n dataAttribute: 'data-cursor',\r\n defaultValue: 'pointer',\r\n possibleValues: [\r\n 'default',\r\n 'pointer',\r\n 'grab',\r\n 'grabbing',\r\n 'move',\r\n 'notAllowed',\r\n 'wait',\r\n 'progress',\r\n 'text',\r\n 'crosshair',\r\n 'help',\r\n 'zoomIn',\r\n 'zoomOut',\r\n 'none',\r\n ],\r\n },\r\n\r\n 23: {\r\n id: 23,\r\n name: 'ZIndex',\r\n description: 'Stacking order',\r\n group: 'layout',\r\n cssProperty: 'z-index',\r\n dataAttribute: 'data-z-index',\r\n defaultValue: 'auto',\r\n possibleValues: [\r\n 'auto',\r\n 'base',\r\n 'docked',\r\n 'dropdown',\r\n 'sticky',\r\n 'banner',\r\n 'overlay',\r\n 'modal',\r\n 'drawer',\r\n 'popover',\r\n 'skipLink',\r\n 'toast',\r\n 'tooltip',\r\n 'max',\r\n ],\r\n },\r\n\r\n 24: {\r\n id: 24,\r\n name: 'Transition',\r\n description: 'Transition timing and duration',\r\n group: 'motion',\r\n cssProperty: 'transition',\r\n dataAttribute: 'data-transition',\r\n defaultValue: 'default',\r\n possibleValues: [\r\n 'none',\r\n 'instant',\r\n 'fast',\r\n 'default',\r\n 'slow',\r\n 'slower',\r\n 'smooth',\r\n 'spring',\r\n 'bounce',\r\n 'easeIn',\r\n 'easeOut',\r\n 'easeInOut',\r\n ],\r\n },\r\n};\r\n\r\n// ============================================================================\r\n// FACTOR REGISTRY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get factor definition by ID\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns Factor definition\r\n *\r\n * @example\r\n * ```typescript\r\n * const factor = getFactorDefinition(1);\r\n * // factor.name = 'Color'\r\n * // factor.group = 'visual'\r\n * ```\r\n */\r\nexport function getFactorDefinition(factorId: FactorId): FactorDefinition {\r\n return FACTOR_REGISTRY[factorId];\r\n}\r\n\r\n/**\r\n * Get all factor definitions\r\n *\r\n * @returns Array of all 24 factor definitions\r\n */\r\nexport function getAllFactorDefinitions(): FactorDefinition[] {\r\n return Object.values(FACTOR_REGISTRY);\r\n}\r\n\r\n/**\r\n * Get factors by group\r\n *\r\n * @param group - Factor group to filter by\r\n * @returns Array of factor definitions in the group\r\n *\r\n * @example\r\n * ```typescript\r\n * const visualFactors = getFactorsByGroup('visual');\r\n * // Returns factors 1-4, 9, 16, 18-20\r\n * ```\r\n */\r\nexport function getFactorsByGroup(group: FactorGroup): FactorDefinition[] {\r\n return Object.values(FACTOR_REGISTRY).filter((factor) => factor.group === group);\r\n}\r\n\r\n/**\r\n * Get factor IDs by group\r\n *\r\n * @param group - Factor group to filter by\r\n * @returns Array of factor IDs in the group\r\n */\r\nexport function getFactorIdsByGroup(group: FactorGroup): FactorId[] {\r\n return Object.values(FACTOR_REGISTRY)\r\n .filter((factor) => factor.group === group)\r\n .map((factor) => factor.id);\r\n}\r\n\r\n/**\r\n * Get factor name by ID\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns Factor name\r\n */\r\nexport function getFactorName(factorId: FactorId): string {\r\n return FACTOR_REGISTRY[factorId].name;\r\n}\r\n\r\n/**\r\n * Get default value for a factor\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns Default value for the factor\r\n */\r\nexport function getFactorDefaultValue(factorId: FactorId): string {\r\n return FACTOR_REGISTRY[factorId].defaultValue;\r\n}\r\n\r\n/**\r\n * Get possible values for a factor\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns Array of possible values\r\n */\r\nexport function getFactorPossibleValues(factorId: FactorId): readonly string[] {\r\n return FACTOR_REGISTRY[factorId].possibleValues;\r\n}\r\n\r\n/**\r\n * Check if a value is valid for a factor\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @param value - Value to check\r\n * @returns True if value is valid\r\n *\r\n * @example\r\n * ```typescript\r\n * isValidFactorValue(1, 'primary') // true\r\n * isValidFactorValue(1, 'invalid') // false\r\n * ```\r\n */\r\nexport function isValidFactorValue(factorId: FactorId, value: string): boolean {\r\n const factor = FACTOR_REGISTRY[factorId];\r\n return factor.possibleValues.includes(value);\r\n}\r\n\r\n/**\r\n * Get CSS property for a factor\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns CSS property or undefined if not applicable\r\n */\r\nexport function getFactorCssProperty(factorId: FactorId): string | undefined {\r\n return FACTOR_REGISTRY[factorId].cssProperty;\r\n}\r\n\r\n/**\r\n * Get data attribute for a factor\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns Data attribute name\r\n */\r\nexport function getFactorDataAttribute(factorId: FactorId): string | undefined {\r\n return FACTOR_REGISTRY[factorId].dataAttribute;\r\n}\r\n\r\n/**\r\n * Get all factor groups\r\n *\r\n * @returns Array of unique factor groups\r\n */\r\nexport function getAllFactorGroups(): FactorGroup[] {\r\n return ['visual', 'layout', 'motion', 'experience'];\r\n}\r\n\r\n/**\r\n * Get factor count by group\r\n *\r\n * @returns Map of group to factor count\r\n */\r\nexport function getFactorCountByGroup(): Record<FactorGroup, number> {\r\n const groups = getAllFactorGroups();\r\n const counts = {} as Record<FactorGroup, number>;\r\n for (const group of groups) {\r\n counts[group] = getFactorsByGroup(group).length;\r\n }\r\n return counts;\r\n}\r\n\r\n/**\r\n * Get factors in a range\r\n *\r\n * @param start - Starting factor ID\r\n * @param end - Ending factor ID\r\n * @returns Array of factor definitions in the range\r\n *\r\n * @example\r\n * ```typescript\r\n * getFactorsInRange(1, 6) // Basic tier factors\r\n * getFactorsInRange(7, 14) // Standard tier additions\r\n * ```\r\n */\r\nexport function getFactorsInRange(start: FactorId, end: FactorId): FactorDefinition[] {\r\n const factors: FactorDefinition[] = [];\r\n for (let i: number = start; i <= end; i++) {\r\n // i is guaranteed to be a valid FactorId within the range\r\n const factorId: FactorId = i as FactorId;\r\n factors.push(FACTOR_REGISTRY[factorId]);\r\n }\r\n return factors;\r\n}\r\n\r\n/**\r\n * Search factors by name or description\r\n *\r\n * @param query - Search query\r\n * @returns Array of matching factor definitions\r\n */\r\nexport function searchFactors(query: string): FactorDefinition[] {\r\n const lowerQuery = query.toLowerCase();\r\n return Object.values(FACTOR_REGISTRY).filter(\r\n (factor) =>\r\n factor.name.toLowerCase().includes(lowerQuery) ||\r\n factor.description.toLowerCase().includes(lowerQuery)\r\n );\r\n}\r\n","/**\r\n * Factor Resolver\r\n * 3-Layer resolution engine: Tier → Component → Design System\r\n *\r\n * @packageDocumentation\r\n * @module generators/FactorResolver\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getFactorsForTier } from '../registries/tiers-registry';\r\nimport {\r\n getApplicableFactors,\r\n getFactorApplicability,\r\n getFactorOverride,\r\n} from '../registries/components-registry';\r\nimport { getFactorValue } from '../registries/design-systems-registry';\r\nimport { getFactorDefinition } from '../registries/factors-registry';\r\n\r\nimport type { DesignSystem, ComponentType } from '../types';\r\nimport type {\r\n FactorId,\r\n FactorValue,\r\n ResolvedFactors,\r\n FactorResolverInput,\r\n} from '../../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// FACTOR VALUE MAPPING\r\n// ============================================================================\r\n\r\n/**\r\n * Tailwind class mappings for common factor values\r\n * Used when creating override values\r\n */\r\nconst FACTOR_TAILWIND_MAPPINGS: Record<FactorId, Record<string, string>> = {\r\n // Factor 1: Color\r\n 1: {\r\n primary: 'bg-blue-500 text-white',\r\n secondary: 'bg-gray-500 text-white',\r\n success: 'bg-green-500 text-white',\r\n warning: 'bg-yellow-500 text-black',\r\n danger: 'bg-red-500 text-white',\r\n neutral: 'bg-gray-200 text-gray-800',\r\n },\r\n // Factor 2: Size\r\n 2: {\r\n xs: 'h-6 px-2 text-xs',\r\n sm: 'h-8 px-3 text-sm',\r\n md: 'h-10 px-4 text-sm',\r\n lg: 'h-12 px-6 text-base',\r\n xl: 'h-14 px-8 text-lg',\r\n },\r\n // Factor 3: Variant\r\n 3: {\r\n filled: 'bg-current text-white',\r\n outlined: 'bg-transparent border-2 border-current',\r\n ghost: 'bg-transparent hover:bg-gray-100',\r\n soft: 'bg-gray-100 text-gray-700',\r\n link: 'bg-transparent underline',\r\n },\r\n // Factor 4: Shape\r\n 4: {\r\n none: 'rounded-none',\r\n sm: 'rounded-sm',\r\n md: 'rounded-md',\r\n lg: 'rounded-lg',\r\n xl: 'rounded-xl',\r\n '2xl': 'rounded-2xl',\r\n full: 'rounded-full',\r\n circle: 'rounded-full aspect-square',\r\n },\r\n // Factor 5: Position\r\n 5: {\r\n static: 'static',\r\n relative: 'relative',\r\n absolute: 'absolute',\r\n fixed: 'fixed',\r\n sticky: 'sticky',\r\n },\r\n // Factor 6: Icon Position\r\n 6: {\r\n left: 'flex-row',\r\n right: 'flex-row-reverse',\r\n top: 'flex-col',\r\n bottom: 'flex-col-reverse',\r\n only: 'p-2',\r\n },\r\n // Factor 7: State\r\n 7: {\r\n default: 'data-[state=default]:opacity-100',\r\n hover: 'hover:opacity-90',\r\n active: 'active:opacity-80',\r\n focus: 'focus:ring-2',\r\n disabled: 'disabled:opacity-50 disabled:cursor-not-allowed',\r\n },\r\n // Factor 8: Animation\r\n 8: {\r\n none: 'transition-none',\r\n standard: 'transition-all duration-200 ease-out',\r\n smooth: 'transition-all duration-300 ease-in-out',\r\n bounce: 'transition-all duration-200 ease-bounce',\r\n spin: 'animate-spin',\r\n pulse: 'animate-pulse',\r\n },\r\n // Factor 9: Elevation\r\n 9: {\r\n none: 'shadow-none',\r\n xs: 'shadow-xs',\r\n sm: 'shadow-sm',\r\n md: 'shadow-md',\r\n lg: 'shadow-lg',\r\n xl: 'shadow-xl',\r\n '2xl': 'shadow-2xl',\r\n },\r\n // Factor 10: Accessibility\r\n 10: {\r\n minimal: 'focus:outline-none',\r\n standard: 'focus-visible:ring-2 focus-visible:ring-offset-2',\r\n enhanced: 'focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500',\r\n maximum: 'focus:outline-2 focus:outline-offset-2 focus:outline-current',\r\n },\r\n // Factor 11: Alignment\r\n 11: {\r\n start: 'items-start justify-start',\r\n center: 'items-center justify-center',\r\n end: 'items-end justify-end',\r\n between: 'items-center justify-between',\r\n around: 'items-center justify-around',\r\n evenly: 'items-center justify-evenly',\r\n },\r\n // Factor 12: Orientation\r\n 12: {\r\n horizontal: 'flex-row',\r\n vertical: 'flex-col',\r\n },\r\n // Factor 13: Density\r\n 13: {\r\n compact: 'px-2 py-1',\r\n default: 'px-4 py-2',\r\n comfortable: 'px-6 py-3',\r\n spacious: 'px-8 py-4',\r\n },\r\n // Factor 14: Loading State\r\n 14: {\r\n idle: 'data-[loading=false]:opacity-100',\r\n loading: 'data-[loading=true]:opacity-70 data-[loading=true]:cursor-wait',\r\n success: 'data-[loading=success]:bg-green-50',\r\n error: 'data-[loading=error]:bg-red-50',\r\n },\r\n // Factor 15: Responsive\r\n 15: {\r\n none: '',\r\n mobile: 'w-full',\r\n tablet: 'w-full md:w-auto',\r\n desktop: 'w-full lg:w-auto',\r\n all: 'w-full sm:w-auto',\r\n },\r\n // Factor 16: Theme\r\n 16: {\r\n light: 'bg-white text-gray-900',\r\n dark: 'bg-gray-900 text-white',\r\n system: 'bg-white dark:bg-gray-900 text-gray-900 dark:text-white',\r\n },\r\n // Factor 17: Spacing\r\n 17: {\r\n xs: 'p-1 gap-1',\r\n sm: 'p-2 gap-2',\r\n md: 'p-4 gap-4',\r\n lg: 'p-6 gap-6',\r\n xl: 'p-8 gap-8',\r\n },\r\n // Factor 18: Typography\r\n 18: {\r\n xs: 'text-xs',\r\n sm: 'text-sm',\r\n body: 'text-base font-normal',\r\n heading: 'text-lg font-semibold',\r\n display: 'text-xl font-bold',\r\n mono: 'font-mono text-sm',\r\n },\r\n // Factor 19: Border\r\n 19: {\r\n none: 'border-0',\r\n subtle: 'border border-gray-200',\r\n solid: 'border-2 border-gray-300',\r\n bold: 'border-4 border-gray-400',\r\n },\r\n // Factor 20: Opacity\r\n 20: {\r\n low: 'opacity-25',\r\n medium: 'opacity-50',\r\n high: 'opacity-75',\r\n full: 'opacity-100',\r\n },\r\n // Factor 21: Overflow\r\n 21: {\r\n visible: 'overflow-visible',\r\n hidden: 'overflow-hidden',\r\n scroll: 'overflow-scroll',\r\n auto: 'overflow-auto',\r\n },\r\n // Factor 22: Cursor\r\n 22: {\r\n default: 'cursor-default',\r\n pointer: 'cursor-pointer',\r\n text: 'cursor-text',\r\n move: 'cursor-move',\r\n notAllowed: 'cursor-not-allowed',\r\n wait: 'cursor-wait',\r\n },\r\n // Factor 23: Z-Index\r\n 23: {\r\n auto: 'z-auto',\r\n base: 'z-0',\r\n dropdown: 'z-10',\r\n sticky: 'z-20',\r\n popover: 'z-30',\r\n modal: 'z-40',\r\n tooltip: 'z-50',\r\n toast: 'z-[100]',\r\n },\r\n // Factor 24: Transition\r\n 24: {\r\n none: 'transition-none',\r\n instant: 'transition-all duration-75',\r\n fast: 'transition-all duration-100',\r\n default: 'transition-all duration-200',\r\n smooth: 'transition-all duration-300',\r\n slow: 'transition-all duration-500',\r\n },\r\n};\r\n\r\n// ============================================================================\r\n// FACTOR RESOLVER CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Factor Resolver\r\n *\r\n * Resolves factors through a 3-layer system:\r\n * - Layer 1: Tier defines factor RANGE (1-6, 1-14, 1-24)\r\n * - Layer 2: Component defines factor APPLICABILITY (null = skip)\r\n * - Layer 3: Design System defines factor VALUES (Tailwind classes)\r\n *\r\n * @example\r\n * ```typescript\r\n * const resolver = new FactorResolver();\r\n * const resolved = resolver.resolve({\r\n * componentType: 'button',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * factorOverrides: { 2: 'lg' }, // Override size to large\r\n * });\r\n *\r\n * // resolved.appliedFactors contains Map of FactorId -> FactorValue\r\n * // resolved.skippedFactors contains FactorIds that don't apply to button\r\n * // resolved.overriddenFactors contains FactorIds that were overridden\r\n * ```\r\n */\r\nexport class FactorResolver {\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Resolve factors through 3-layer system\r\n *\r\n * @param input - Resolution input with component, design system, tier, and overrides\r\n * @returns Resolved factors with applied, skipped, and overridden lists\r\n *\r\n * @remarks\r\n * Resolution flow:\r\n * 1. Get factors enabled for the tier (1-6, 1-14, or 1-24)\r\n * 2. Filter by component applicability (null factors are skipped)\r\n * 3. Get values from design system registry\r\n * 4. Apply any user overrides\r\n */\r\n public resolve(input: FactorResolverInput): ResolvedFactors {\r\n const { componentType, designSystem, tier, factorOverrides = {} } = input;\r\n\r\n const appliedFactors = new Map<FactorId, FactorValue>();\r\n const skippedFactors: FactorId[] = [];\r\n const overriddenFactors: FactorId[] = [];\r\n\r\n // Layer 1: Get factors enabled for this tier\r\n const tierFactors = getFactorsForTier(tier);\r\n\r\n // Layer 2: Get applicable factors for this component\r\n const applicableFactors = getApplicableFactors(componentType);\r\n\r\n for (const factorId of tierFactors) {\r\n // Layer 2: Check if factor is applicable for this component\r\n if (!applicableFactors.includes(factorId)) {\r\n skippedFactors.push(factorId);\r\n continue;\r\n }\r\n\r\n // Check for component-specific override from registry\r\n const componentOverride = getFactorOverride(componentType, factorId);\r\n\r\n // Check for user override\r\n const userOverride = factorOverrides[factorId];\r\n\r\n // Determine which value to use\r\n let factorValue: FactorValue | undefined;\r\n\r\n if (userOverride !== undefined) {\r\n // User override takes highest priority\r\n factorValue = this.createOverrideValue(factorId, userOverride);\r\n overriddenFactors.push(factorId);\r\n } else if (componentOverride !== undefined) {\r\n // Component-specific override from registry\r\n factorValue = this.createOverrideValue(factorId, componentOverride);\r\n } else {\r\n // Layer 3: Get value from design system\r\n factorValue = getFactorValue(designSystem, factorId);\r\n }\r\n\r\n // Add to applied factors if we have a value\r\n if (factorValue !== undefined) {\r\n appliedFactors.set(factorId, factorValue);\r\n }\r\n }\r\n\r\n return {\r\n tier,\r\n appliedFactors,\r\n skippedFactors,\r\n overriddenFactors,\r\n };\r\n }\r\n\r\n /**\r\n * Resolve a single factor for a design system\r\n *\r\n * @param designSystem - Design system to get value from\r\n * @param factorId - Factor ID to resolve\r\n * @returns Factor value or undefined\r\n */\r\n public resolveSingleFactor(\r\n designSystem: DesignSystem,\r\n factorId: FactorId\r\n ): FactorValue | undefined {\r\n return getFactorValue(designSystem, factorId);\r\n }\r\n\r\n /**\r\n * Check if a factor is applicable for a component\r\n *\r\n * @param componentType - Component type to check\r\n * @param factorId - Factor ID to check\r\n * @returns True if factor is applicable\r\n */\r\n public isFactorApplicableForComponent(componentType: ComponentType, factorId: FactorId): boolean {\r\n const applicability = getFactorApplicability(componentType, factorId);\r\n return applicability !== null;\r\n }\r\n\r\n /**\r\n * Get the applicability type for a factor on a component\r\n *\r\n * @param componentType - Component type to check\r\n * @param factorId - Factor ID to check\r\n * @returns 'not-applicable', 'default', or 'override'\r\n */\r\n public getApplicabilityType(\r\n componentType: ComponentType,\r\n factorId: FactorId\r\n ): 'not-applicable' | 'default' | 'override' {\r\n const applicability = getFactorApplicability(componentType, factorId);\r\n\r\n if (applicability === null) {\r\n return 'not-applicable';\r\n }\r\n if (applicability === true) {\r\n return 'default';\r\n }\r\n return 'override';\r\n }\r\n\r\n /**\r\n * Get all factors that will be applied for a given configuration\r\n *\r\n * @param input - Resolution input\r\n * @returns Array of factor IDs that will be applied\r\n */\r\n public getApplicableFactorIds(input: Omit<FactorResolverInput, 'factorOverrides'>): FactorId[] {\r\n const { componentType, tier } = input;\r\n\r\n const tierFactors = getFactorsForTier(tier);\r\n const applicableFactors = getApplicableFactors(componentType);\r\n\r\n return tierFactors.filter((factorId) => applicableFactors.includes(factorId));\r\n }\r\n\r\n /**\r\n * Validate that all overrides are valid\r\n *\r\n * @param factorOverrides - Overrides to validate\r\n * @returns Object with valid flag and any error messages\r\n */\r\n public validateOverrides(factorOverrides: Partial<Record<FactorId, string>>): {\r\n valid: boolean;\r\n errors: string[];\r\n } {\r\n const errors: string[] = [];\r\n\r\n for (const [idStr, value] of Object.entries(factorOverrides)) {\r\n const factorId = Number(idStr) as FactorId;\r\n\r\n // Check if factor ID is valid (1-24)\r\n if (factorId < 1 || factorId > 24) {\r\n errors.push(`Invalid factor ID: ${idStr}. Must be between 1 and 24.`);\r\n continue;\r\n }\r\n\r\n // Check if value is valid for this factor\r\n if (typeof value !== 'string') {\r\n errors.push(`Invalid value type for factor ${factorId}. Expected string, got ${typeof value}.`);\r\n continue;\r\n }\r\n\r\n const factorDef = getFactorDefinition(factorId);\r\n if (factorDef !== undefined && !factorDef.possibleValues.includes(value)) {\r\n errors.push(\r\n `Invalid value \"${value}\" for factor ${factorId} (${factorDef.name}). ` +\r\n `Valid values: ${factorDef.possibleValues.join(', ')}`\r\n );\r\n }\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n };\r\n }\r\n\r\n /**\r\n * Create a summary of resolved factors\r\n *\r\n * @param resolved - Resolved factors from resolve()\r\n * @returns Summary object with counts and lists\r\n */\r\n public createResolutionSummary(resolved: ResolvedFactors): {\r\n totalFactors: number;\r\n appliedCount: number;\r\n skippedCount: number;\r\n overriddenCount: number;\r\n appliedFactorNames: string[];\r\n skippedFactorNames: string[];\r\n } {\r\n const appliedFactorNames: string[] = [];\r\n const skippedFactorNames: string[] = [];\r\n\r\n // Get names for applied factors\r\n for (const factorId of resolved.appliedFactors.keys()) {\r\n const def = getFactorDefinition(factorId);\r\n if (def !== undefined) {\r\n appliedFactorNames.push(def.name);\r\n }\r\n }\r\n\r\n // Get names for skipped factors\r\n for (const factorId of resolved.skippedFactors) {\r\n const def = getFactorDefinition(factorId);\r\n if (def !== undefined) {\r\n skippedFactorNames.push(def.name);\r\n }\r\n }\r\n\r\n return {\r\n totalFactors: resolved.appliedFactors.size + resolved.skippedFactors.length,\r\n appliedCount: resolved.appliedFactors.size,\r\n skippedCount: resolved.skippedFactors.length,\r\n overriddenCount: resolved.overriddenFactors.length,\r\n appliedFactorNames,\r\n skippedFactorNames,\r\n };\r\n }\r\n\r\n /**\r\n * Generate combined Tailwind classes from resolved factors\r\n *\r\n * @param resolved - Resolved factors from resolve()\r\n * @returns Combined Tailwind class string\r\n */\r\n public generateTailwindClasses(resolved: ResolvedFactors): string {\r\n const classes: string[] = [];\r\n\r\n for (const factorValue of resolved.appliedFactors.values()) {\r\n if (factorValue.tailwindClasses !== '') {\r\n classes.push(factorValue.tailwindClasses);\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n /**\r\n * Generate combined CSS variables from resolved factors\r\n *\r\n * @param resolved - Resolved factors from resolve()\r\n * @returns Combined CSS variables object\r\n */\r\n public generateCssVariables(resolved: ResolvedFactors): Record<string, string> {\r\n const variables: Record<string, string> = {};\r\n\r\n for (const factorValue of resolved.appliedFactors.values()) {\r\n if (factorValue.cssVariables !== undefined) {\r\n Object.assign(variables, factorValue.cssVariables);\r\n }\r\n }\r\n\r\n return variables;\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Create a FactorValue from an override value string\r\n *\r\n * @param factorId - Factor ID\r\n * @param value - Override value\r\n * @returns FactorValue with mapped Tailwind classes\r\n */\r\n private createOverrideValue(factorId: FactorId, value: string): FactorValue {\r\n const tailwindClasses = this.mapValueToTailwind(factorId, value);\r\n const cssVariables = this.generateCssVariablesForOverride(factorId, value);\r\n\r\n return {\r\n factorId,\r\n value,\r\n tailwindClasses,\r\n cssVariables: Object.keys(cssVariables).length > 0 ? cssVariables : undefined,\r\n };\r\n }\r\n\r\n /**\r\n * Map a factor value to Tailwind classes\r\n *\r\n * @param factorId - Factor ID\r\n * @param value - Value to map\r\n * @returns Tailwind class string\r\n */\r\n private mapValueToTailwind(factorId: FactorId, value: string): string {\r\n const mapping = FACTOR_TAILWIND_MAPPINGS[factorId];\r\n const tailwindClass = mapping?.[value];\r\n if (tailwindClass !== undefined) {\r\n return tailwindClass;\r\n }\r\n\r\n // If no mapping found, return empty string\r\n // The design system value should be used as fallback by the generator\r\n return '';\r\n }\r\n\r\n /**\r\n * Generate CSS variables for an override value\r\n *\r\n * @param factorId - Factor ID\r\n * @param value - Override value\r\n * @returns CSS variables object\r\n */\r\n private generateCssVariablesForOverride(\r\n factorId: FactorId,\r\n value: string\r\n ): Record<string, string> {\r\n const factorDef = getFactorDefinition(factorId);\r\n if (factorDef === undefined) {\r\n return {};\r\n }\r\n\r\n // Generate a CSS variable based on the factor name\r\n const varName = `--nk-${factorDef.name.toLowerCase().replace(/\\s+/g, '-')}`;\r\n return { [varName]: value };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTION\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new FactorResolver instance\r\n *\r\n * @returns New FactorResolver instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const resolver = createFactorResolver();\r\n * const resolved = resolver.resolve({\r\n * componentType: 'button',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * });\r\n * ```\r\n */\r\nexport function createFactorResolver(): FactorResolver {\r\n return new FactorResolver();\r\n}\r\n\r\n// ============================================================================\r\n// UTILITY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Resolve factors with a single function call (convenience wrapper)\r\n *\r\n * @param input - Resolution input\r\n * @returns Resolved factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const resolved = resolveFactors({\r\n * componentType: 'card',\r\n * designSystem: 'glassmorphism',\r\n * tier: 'standard',\r\n * });\r\n * ```\r\n */\r\nexport function resolveFactors(input: FactorResolverInput): ResolvedFactors {\r\n const resolver = new FactorResolver();\r\n return resolver.resolve(input);\r\n}\r\n\r\n/**\r\n * Get Tailwind classes for a component configuration\r\n *\r\n * @param input - Resolution input\r\n * @returns Tailwind class string\r\n *\r\n * @example\r\n * ```typescript\r\n * const classes = getTailwindClassesForComponent({\r\n * componentType: 'button',\r\n * designSystem: 'brutalism',\r\n * tier: 'enterprise',\r\n * });\r\n * // Returns combined Tailwind classes for all applied factors\r\n * ```\r\n */\r\nexport function getTailwindClassesForComponent(input: FactorResolverInput): string {\r\n const resolver = new FactorResolver();\r\n const resolved = resolver.resolve(input);\r\n return resolver.generateTailwindClasses(resolved);\r\n}\r\n\r\n/**\r\n * Get CSS variables for a component configuration\r\n *\r\n * @param input - Resolution input\r\n * @returns CSS variables object\r\n */\r\nexport function getCssVariablesForComponent(input: FactorResolverInput): Record<string, string> {\r\n const resolver = new FactorResolver();\r\n const resolved = resolver.resolve(input);\r\n return resolver.generateCssVariables(resolved);\r\n}\r\n","/**\r\n * Factor Registry - Unified Granularity Architecture\r\n *\r\n * This file defines the 24 factors with level and cascadeDown fields,\r\n * replacing hardcoded 8/13/24 factor arrays with a dynamic registry-based approach.\r\n *\r\n * Each factor specifies:\r\n * - `level`: Minimum granularity level where this factor applies\r\n * - `cascadeDown`: Whether factor cascades DOWN to child granularities\r\n *\r\n * Factor Distribution by Level:\r\n * - Template (level 6): 8 factors - cascadeDown=true\r\n * - Page (level 4): 5 additional factors\r\n * - Section (level 3): 5 additional factors\r\n * - Component (level 2): 6 additional factors\r\n * - Total: 24 factors\r\n *\r\n * @packageDocumentation\r\n * @module presets/factor-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { GranularityFactorDefinition, GranularityFactorCategory } from '../types/granularity';\r\n\r\n// ============================================================================\r\n// VISUAL FACTORS (8 factors)\r\n// ============================================================================\r\n\r\n/**\r\n * Color Primary - Primary brand color\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const colorPrimaryFactor: GranularityFactorDefinition = {\r\n id: 'colorPrimary',\r\n name: 'Primary Color',\r\n category: 'visual',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': '#1976D2',\r\n 'ios-hig': '#007AFF',\r\n glassmorphism: '#3B82F6',\r\n neumorphism: '#6366F1',\r\n brutalism: '#000000',\r\n minimalism: '#18181B',\r\n },\r\n options: undefined,\r\n description: 'Primary brand color used throughout the design system',\r\n};\r\n\r\n/**\r\n * Color Secondary - Secondary accent color\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const colorSecondaryFactor: GranularityFactorDefinition = {\r\n id: 'colorSecondary',\r\n name: 'Secondary Color',\r\n category: 'visual',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': '#9C27B0',\r\n 'ios-hig': '#5856D6',\r\n glassmorphism: '#8B5CF6',\r\n neumorphism: '#EC4899',\r\n brutalism: '#FF0000',\r\n minimalism: '#71717A',\r\n },\r\n options: undefined,\r\n description: 'Secondary accent color for highlights and accents',\r\n};\r\n\r\n/**\r\n * Typography Scale - Font sizing scale\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const typographyScaleFactor: GranularityFactorDefinition = {\r\n id: 'typographyScale',\r\n name: 'Typography Scale',\r\n category: 'visual',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'roboto',\r\n 'ios-hig': 'sf-pro',\r\n glassmorphism: 'inter',\r\n neumorphism: 'poppins',\r\n brutalism: 'space-grotesk',\r\n minimalism: 'inter',\r\n },\r\n options: ['roboto', 'sf-pro', 'inter', 'poppins', 'space-grotesk', 'geist'] as const,\r\n description: 'Typography scale and font family for consistent text styling',\r\n};\r\n\r\n/**\r\n * Border Radius - Corner rounding style\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const borderRadiusFactor: GranularityFactorDefinition = {\r\n id: 'borderRadius',\r\n name: 'Border Radius',\r\n category: 'visual',\r\n level: 'component',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'md',\r\n 'ios-hig': 'lg',\r\n glassmorphism: 'xl',\r\n neumorphism: '2xl',\r\n brutalism: 'none',\r\n minimalism: 'sm',\r\n },\r\n options: ['none', 'sm', 'md', 'lg', 'xl', '2xl', 'full'] as const,\r\n description: 'Border radius for rounded corners',\r\n};\r\n\r\n/**\r\n * Shadow Style - Box shadow intensity\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const shadowStyleFactor: GranularityFactorDefinition = {\r\n id: 'shadowStyle',\r\n name: 'Shadow Style',\r\n category: 'visual',\r\n level: 'component',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'md',\r\n 'ios-hig': 'sm',\r\n glassmorphism: 'lg',\r\n neumorphism: 'xl',\r\n brutalism: 'none',\r\n minimalism: 'sm',\r\n },\r\n options: ['none', 'sm', 'md', 'lg', 'xl', '2xl'] as const,\r\n description: 'Shadow style for depth and elevation',\r\n};\r\n\r\n/**\r\n * Theme Mode - Light/dark mode preference\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const themeModeFactor: GranularityFactorDefinition = {\r\n id: 'themeMode',\r\n name: 'Theme Mode',\r\n category: 'visual',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'light',\r\n 'ios-hig': 'light',\r\n glassmorphism: 'dark',\r\n neumorphism: 'light',\r\n brutalism: 'light',\r\n minimalism: 'light',\r\n },\r\n options: ['light', 'dark', 'system'] as const,\r\n description: 'Theme mode for light/dark appearance',\r\n};\r\n\r\n/**\r\n * Icon Style - Icon set and style\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const iconStyleFactor: GranularityFactorDefinition = {\r\n id: 'iconStyle',\r\n name: 'Icon Style',\r\n category: 'visual',\r\n level: 'component',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'filled',\r\n 'ios-hig': 'sf-symbols',\r\n glassmorphism: 'outline',\r\n neumorphism: 'duotone',\r\n brutalism: 'solid',\r\n minimalism: 'outline',\r\n },\r\n options: ['filled', 'outline', 'duotone', 'solid', 'sf-symbols'] as const,\r\n description: 'Icon style for consistent iconography',\r\n};\r\n\r\n/**\r\n * Surface Style - Background surface treatment\r\n *\r\n * @category visual\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const surfaceStyleFactor: GranularityFactorDefinition = {\r\n id: 'surfaceStyle',\r\n name: 'Surface Style',\r\n category: 'visual',\r\n level: 'section',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'elevated',\r\n 'ios-hig': 'flat',\r\n glassmorphism: 'glass',\r\n neumorphism: 'soft',\r\n brutalism: 'flat',\r\n minimalism: 'flat',\r\n },\r\n options: ['flat', 'elevated', 'glass', 'soft', 'gradient'] as const,\r\n description: 'Surface style for background treatment',\r\n};\r\n\r\n// ============================================================================\r\n// LAYOUT FACTORS (7 factors)\r\n// ============================================================================\r\n\r\n/**\r\n * Spacing Scale - Global spacing scale\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const spacingScaleFactor: GranularityFactorDefinition = {\r\n id: 'spacingScale',\r\n name: 'Spacing Scale',\r\n category: 'layout',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'md',\r\n 'ios-hig': 'md',\r\n glassmorphism: 'lg',\r\n neumorphism: 'lg',\r\n brutalism: 'xl',\r\n minimalism: 'md',\r\n },\r\n options: ['xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const,\r\n description: 'Spacing scale for consistent margins and padding',\r\n};\r\n\r\n/**\r\n * Container Width - Max container width\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const containerWidthFactor: GranularityFactorDefinition = {\r\n id: 'containerWidth',\r\n name: 'Container Width',\r\n category: 'layout',\r\n level: 'page',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': '1280',\r\n 'ios-hig': '1024',\r\n glassmorphism: '1440',\r\n neumorphism: '1280',\r\n brutalism: 'full',\r\n minimalism: '1024',\r\n },\r\n options: ['768', '1024', '1280', '1440', '1536', 'full'] as const,\r\n description: 'Maximum container width in pixels',\r\n};\r\n\r\n/**\r\n * Grid Columns - Default grid column count\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const gridColumnsFactor: GranularityFactorDefinition = {\r\n id: 'gridColumns',\r\n name: 'Grid Columns',\r\n category: 'layout',\r\n level: 'section',\r\n cascadeDown: false,\r\n defaults: {\r\n 'material-design': 12,\r\n 'ios-hig': 12,\r\n glassmorphism: 12,\r\n neumorphism: 12,\r\n brutalism: 6,\r\n minimalism: 12,\r\n },\r\n options: [1, 2, 3, 4, 6, 12] as const,\r\n description: 'Number of grid columns for layout',\r\n};\r\n\r\n/**\r\n * Gap Size - Gap between grid/flex items\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const gapSizeFactor: GranularityFactorDefinition = {\r\n id: 'gapSize',\r\n name: 'Gap Size',\r\n category: 'layout',\r\n level: 'section',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'md',\r\n 'ios-hig': 'md',\r\n glassmorphism: 'lg',\r\n neumorphism: 'lg',\r\n brutalism: 'xl',\r\n minimalism: 'sm',\r\n },\r\n options: ['none', 'xs', 'sm', 'md', 'lg', 'xl'] as const,\r\n description: 'Gap size between grid or flex items',\r\n};\r\n\r\n/**\r\n * Alignment - Default content alignment\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const alignmentFactor: GranularityFactorDefinition = {\r\n id: 'alignment',\r\n name: 'Alignment',\r\n category: 'layout',\r\n level: 'section',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'start',\r\n 'ios-hig': 'center',\r\n glassmorphism: 'center',\r\n neumorphism: 'center',\r\n brutalism: 'start',\r\n minimalism: 'start',\r\n },\r\n options: ['start', 'center', 'end', 'stretch', 'between'] as const,\r\n description: 'Default content alignment',\r\n};\r\n\r\n/**\r\n * Layout Type - Default layout structure\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const layoutTypeFactor: GranularityFactorDefinition = {\r\n id: 'layoutType',\r\n name: 'Layout Type',\r\n category: 'layout',\r\n level: 'page',\r\n cascadeDown: false,\r\n defaults: {\r\n 'material-design': 'sidebar',\r\n 'ios-hig': 'tabs',\r\n glassmorphism: 'centered',\r\n neumorphism: 'centered',\r\n brutalism: 'full-width',\r\n minimalism: 'single-column',\r\n },\r\n options: ['sidebar', 'tabs', 'centered', 'full-width', 'single-column', 'split'] as const,\r\n description: 'Default layout type for pages',\r\n};\r\n\r\n/**\r\n * Aspect Ratio - Default media aspect ratio\r\n *\r\n * @category layout\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const aspectRatioFactor: GranularityFactorDefinition = {\r\n id: 'aspectRatio',\r\n name: 'Aspect Ratio',\r\n category: 'layout',\r\n level: 'component',\r\n cascadeDown: false,\r\n defaults: {\r\n 'material-design': '16:9',\r\n 'ios-hig': '16:9',\r\n glassmorphism: '16:9',\r\n neumorphism: '1:1',\r\n brutalism: '4:3',\r\n minimalism: '16:9',\r\n },\r\n options: ['1:1', '4:3', '16:9', '21:9', 'auto'] as const,\r\n description: 'Default aspect ratio for media elements',\r\n};\r\n\r\n// ============================================================================\r\n// BEHAVIOR FACTORS (4 factors)\r\n// ============================================================================\r\n\r\n/**\r\n * Animation Duration - Default animation timing\r\n *\r\n * @category behavior\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const animationDurationFactor: GranularityFactorDefinition = {\r\n id: 'animationDuration',\r\n name: 'Animation Duration',\r\n category: 'behavior',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'fast',\r\n 'ios-hig': 'normal',\r\n glassmorphism: 'slow',\r\n neumorphism: 'normal',\r\n brutalism: 'none',\r\n minimalism: 'fast',\r\n },\r\n options: ['none', 'fast', 'normal', 'slow'] as const,\r\n description: 'Default animation duration',\r\n};\r\n\r\n/**\r\n * Animation Easing - Default easing function\r\n *\r\n * @category behavior\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const animationEasingFactor: GranularityFactorDefinition = {\r\n id: 'animationEasing',\r\n name: 'Animation Easing',\r\n category: 'behavior',\r\n level: 'component',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'ease-out',\r\n 'ios-hig': 'spring',\r\n glassmorphism: 'ease-in-out',\r\n neumorphism: 'ease-out',\r\n brutalism: 'linear',\r\n minimalism: 'ease-out',\r\n },\r\n options: ['linear', 'ease-in', 'ease-out', 'ease-in-out', 'spring'] as const,\r\n description: 'Default animation easing function',\r\n};\r\n\r\n/**\r\n * Hover Effect - Default hover interaction\r\n *\r\n * @category behavior\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const hoverEffectFactor: GranularityFactorDefinition = {\r\n id: 'hoverEffect',\r\n name: 'Hover Effect',\r\n category: 'behavior',\r\n level: 'component',\r\n cascadeDown: false,\r\n defaults: {\r\n 'material-design': 'ripple',\r\n 'ios-hig': 'highlight',\r\n glassmorphism: 'glow',\r\n neumorphism: 'pressed',\r\n brutalism: 'invert',\r\n minimalism: 'opacity',\r\n },\r\n options: [\r\n 'none',\r\n 'ripple',\r\n 'highlight',\r\n 'glow',\r\n 'pressed',\r\n 'invert',\r\n 'opacity',\r\n 'scale',\r\n ] as const,\r\n description: 'Default hover effect style',\r\n};\r\n\r\n/**\r\n * Loading Style - Default loading indicator\r\n *\r\n * @category behavior\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const loadingStyleFactor: GranularityFactorDefinition = {\r\n id: 'loadingStyle',\r\n name: 'Loading Style',\r\n category: 'behavior',\r\n level: 'page',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'circular',\r\n 'ios-hig': 'spinner',\r\n glassmorphism: 'shimmer',\r\n neumorphism: 'pulse',\r\n brutalism: 'bar',\r\n minimalism: 'dots',\r\n },\r\n options: ['spinner', 'circular', 'bar', 'dots', 'shimmer', 'pulse', 'skeleton'] as const,\r\n description: 'Default loading indicator style',\r\n};\r\n\r\n// ============================================================================\r\n// RESPONSIVE FACTORS (3 factors)\r\n// ============================================================================\r\n\r\n/**\r\n * Breakpoint Strategy - Responsive breakpoint approach\r\n *\r\n * @category responsive\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const breakpointStrategyFactor: GranularityFactorDefinition = {\r\n id: 'breakpointStrategy',\r\n name: 'Breakpoint Strategy',\r\n category: 'responsive',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'mobile-first',\r\n 'ios-hig': 'device-specific',\r\n glassmorphism: 'mobile-first',\r\n neumorphism: 'mobile-first',\r\n brutalism: 'desktop-first',\r\n minimalism: 'mobile-first',\r\n },\r\n options: ['mobile-first', 'desktop-first', 'device-specific'] as const,\r\n description: 'Responsive breakpoint strategy',\r\n};\r\n\r\n/**\r\n * Mobile Behavior - Mobile-specific adaptations\r\n *\r\n * @category responsive\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const mobileBehaviorFactor: GranularityFactorDefinition = {\r\n id: 'mobileBehavior',\r\n name: 'Mobile Behavior',\r\n category: 'responsive',\r\n level: 'page',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'bottom-nav',\r\n 'ios-hig': 'tab-bar',\r\n glassmorphism: 'hamburger',\r\n neumorphism: 'hamburger',\r\n brutalism: 'hamburger',\r\n minimalism: 'hamburger',\r\n },\r\n options: ['hamburger', 'bottom-nav', 'tab-bar', 'drawer', 'none'] as const,\r\n description: 'Mobile navigation behavior',\r\n};\r\n\r\n/**\r\n * Touch Target Size - Minimum touch target\r\n *\r\n * @category responsive\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const touchTargetSizeFactor: GranularityFactorDefinition = {\r\n id: 'touchTargetSize',\r\n name: 'Touch Target Size',\r\n category: 'responsive',\r\n level: 'component',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 48,\r\n 'ios-hig': 44,\r\n glassmorphism: 44,\r\n neumorphism: 48,\r\n brutalism: 56,\r\n minimalism: 40,\r\n },\r\n options: [32, 40, 44, 48, 56] as const,\r\n description: 'Minimum touch target size in pixels',\r\n};\r\n\r\n// ============================================================================\r\n// ACCESSIBILITY FACTORS (2 factors)\r\n// ============================================================================\r\n\r\n/**\r\n * Focus Style - Focus indicator style\r\n *\r\n * @category a11y\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const focusStyleFactor: GranularityFactorDefinition = {\r\n id: 'focusStyle',\r\n name: 'Focus Style',\r\n category: 'a11y',\r\n level: 'component',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'ring',\r\n 'ios-hig': 'outline',\r\n glassmorphism: 'glow',\r\n neumorphism: 'ring',\r\n brutalism: 'outline-thick',\r\n minimalism: 'ring',\r\n },\r\n options: ['ring', 'outline', 'outline-thick', 'glow', 'none'] as const,\r\n description: 'Focus indicator style for accessibility',\r\n};\r\n\r\n/**\r\n * Reduced Motion - Motion preference handling\r\n *\r\n * @category a11y\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const reducedMotionFactor: GranularityFactorDefinition = {\r\n id: 'reducedMotion',\r\n name: 'Reduced Motion',\r\n category: 'a11y',\r\n level: 'template',\r\n cascadeDown: true,\r\n defaults: {\r\n 'material-design': 'respect',\r\n 'ios-hig': 'respect',\r\n glassmorphism: 'respect',\r\n neumorphism: 'respect',\r\n brutalism: 'respect',\r\n minimalism: 'respect',\r\n },\r\n options: ['respect', 'always', 'never'] as const,\r\n description: 'How to handle reduced motion preference',\r\n};\r\n\r\n// ============================================================================\r\n// FACTOR REGISTRY - All 24 Factors\r\n// ============================================================================\r\n\r\n/**\r\n * Factor Registry - All 24 factors with level and cascadeDown\r\n *\r\n * This array replaces hardcoded PAGE_FACTORS, SECTION_FACTORS arrays.\r\n * Use `getFactorsForLevel()` to dynamically query applicable factors.\r\n *\r\n * @category constants\r\n * @since 4.0.0\r\n *\r\n * @example\r\n * ```typescript\r\n * // Get all factors\r\n * console.log(FACTOR_REGISTRY.length); // 24\r\n *\r\n * // Filter by category\r\n * const visualFactors = FACTOR_REGISTRY.filter(f => f.category === 'visual');\r\n *\r\n * // Use getFactorsForLevel() instead of hardcoded arrays\r\n * import { getFactorsForLevel } from '../utils/factor-resolver';\r\n * const pageFactors = getFactorsForLevel('page');\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport const FACTOR_REGISTRY: readonly GranularityFactorDefinition[] = [\r\n // Visual (8)\r\n colorPrimaryFactor,\r\n colorSecondaryFactor,\r\n typographyScaleFactor,\r\n borderRadiusFactor,\r\n shadowStyleFactor,\r\n themeModeFactor,\r\n iconStyleFactor,\r\n surfaceStyleFactor,\r\n // Layout (7)\r\n spacingScaleFactor,\r\n containerWidthFactor,\r\n gridColumnsFactor,\r\n gapSizeFactor,\r\n alignmentFactor,\r\n layoutTypeFactor,\r\n aspectRatioFactor,\r\n // Behavior (4)\r\n animationDurationFactor,\r\n animationEasingFactor,\r\n hoverEffectFactor,\r\n loadingStyleFactor,\r\n // Responsive (3)\r\n breakpointStrategyFactor,\r\n mobileBehaviorFactor,\r\n touchTargetSizeFactor,\r\n // A11y (2)\r\n focusStyleFactor,\r\n reducedMotionFactor,\r\n] as const;\r\n\r\n// ============================================================================\r\n// HELPER FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get factor by ID\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param factorId - The factor ID to look up\r\n * @returns The factor definition or undefined if not found\r\n *\r\n * @example\r\n * ```typescript\r\n * const factor = getFactorById('spacing');\r\n * if (factor) {\r\n * console.log(factor.name); // 'Spacing Scale'\r\n * }\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorById(factorId: string): GranularityFactorDefinition | undefined {\r\n return FACTOR_REGISTRY.find((f) => f.id === factorId);\r\n}\r\n\r\n/**\r\n * Get factors by category\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param category - The category to filter by\r\n * @returns Array of factors in the specified category\r\n *\r\n * @example\r\n * ```typescript\r\n * const visualFactors = getFactorsByCategory('visual');\r\n * console.log(visualFactors.length); // 8\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorsByCategory(\r\n category: GranularityFactorCategory\r\n): readonly GranularityFactorDefinition[] {\r\n return FACTOR_REGISTRY.filter((f) => f.category === category);\r\n}\r\n\r\n/**\r\n * Get all factor IDs\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @returns Array of all factor IDs\r\n *\r\n * @example\r\n * ```typescript\r\n * const ids = getAllFactorIds();\r\n * console.log(ids); // ['colorPrimary', 'colorSecondary', ...]\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getAllFactorIds(): readonly string[] {\r\n return FACTOR_REGISTRY.map((f) => f.id);\r\n}\r\n\r\n/**\r\n * Check if a factor ID is valid\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param factorId - The factor ID to check\r\n * @returns True if the factor exists in the registry\r\n *\r\n * @example\r\n * ```typescript\r\n * isValidFactorId('spacing'); // true\r\n * isValidFactorId('invalid'); // false\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function isValidFactorId(factorId: string): boolean {\r\n return FACTOR_REGISTRY.some((f) => f.id === factorId);\r\n}\r\n\r\n/**\r\n * Get registry statistics\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @returns Statistics about the factor registry\r\n *\r\n * @example\r\n * ```typescript\r\n * const stats = getFactorRegistryStats();\r\n * console.log(stats.total); // 24\r\n * console.log(stats.byCategory.visual); // 8\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorRegistryStats(): {\r\n readonly total: number;\r\n readonly byCategory: Record<GranularityFactorCategory, number>;\r\n readonly byCascadeDown: { cascading: number; nonCascading: number };\r\n} {\r\n const byCategory = {\r\n visual: 0,\r\n layout: 0,\r\n behavior: 0,\r\n responsive: 0,\r\n a11y: 0,\r\n };\r\n\r\n let cascading = 0;\r\n let nonCascading = 0;\r\n\r\n for (const factor of FACTOR_REGISTRY) {\r\n byCategory[factor.category]++;\r\n if (factor.cascadeDown) {\r\n cascading++;\r\n } else {\r\n nonCascading++;\r\n }\r\n }\r\n\r\n return {\r\n total: FACTOR_REGISTRY.length,\r\n byCategory,\r\n byCascadeDown: { cascading, nonCascading },\r\n };\r\n}\r\n","/**\r\n * ClassMapper - Maps factor VALUES to Tailwind CSS classes\r\n *\r\n * **Role in Architecture**: Handles USER OVERRIDES (non-default values)\r\n *\r\n * This class complements design-systems-registry by providing value-specific mappings:\r\n *\r\n * - **Registry**: Stores DEFAULT values per design system\r\n * - Example: Material Design Factor 2 (Size) = 'md' → 'h-10 px-6 text-sm'\r\n *\r\n * - **ClassMapper**: Maps ALL POSSIBLE VALUES to Tailwind classes\r\n * - Example: Factor 2 (Size):\r\n * - 'xs' → 'h-6 px-2 text-xs'\r\n * - 'sm' → 'h-8 px-4 text-sm'\r\n * - 'md' → 'h-10 px-6 text-sm'\r\n * - 'lg' → 'h-12 px-8 text-base'\r\n * - 'xl' → 'h-14 px-10 text-lg'\r\n *\r\n * **Implementation Status**: 3/24 factors (incremental)\r\n *\r\n * Part of the Matrix Multiplication system (Matrix 2 × Matrix 4).\r\n * Maps resolved factor values to corresponding Tailwind CSS classes.\r\n *\r\n * @packageDocumentation\r\n * @module matrix/class-mapper\r\n * @category matrix\r\n * @since 1.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { IClassMapper, FactorId, FactorValue } from './types';\r\n\r\n/**\r\n * ClassMapper - Maps factor values to Tailwind CSS classes\r\n *\r\n * This class implements Matrix 2 × Matrix 4 multiplication by:\r\n * 1. Taking resolved factor values (from FACTOR_REGISTRY + overrides)\r\n * 2. Mapping each value to its corresponding Tailwind class\r\n * 3. Filtering based on factor applicability (Matrix 4)\r\n *\r\n * @category matrix\r\n * @since 1.0.0\r\n *\r\n * @example\r\n * ```typescript\r\n * const mapper = new ClassMapper();\r\n * const className = mapper.mapToClass(4, 'md'); // Factor 4 = borderRadius\r\n * console.log(className); // → 'rounded-md'\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport class ClassMapper implements IClassMapper {\r\n /**\r\n * Map factor 4 (borderRadius) to Tailwind class\r\n *\r\n * @param value - Border radius value ('none', 'sm', 'md', 'lg', 'xl', '2xl', 'full')\r\n * @returns Tailwind class string or null if not mapped\r\n *\r\n * @example\r\n * ```typescript\r\n * mapBorderRadius('md') // → 'rounded-md'\r\n * mapBorderRadius('none') // → 'rounded-none'\r\n * mapBorderRadius('full') // → 'rounded-full'\r\n * ```\r\n */\r\n private mapBorderRadius(value: FactorValue): string | null {\r\n if (typeof value !== 'string') return null;\r\n\r\n const map: Record<string, string> = {\r\n none: 'rounded-none',\r\n sm: 'rounded-sm',\r\n md: 'rounded-md',\r\n lg: 'rounded-lg',\r\n xl: 'rounded-xl',\r\n '2xl': 'rounded-2xl',\r\n full: 'rounded-full',\r\n };\r\n\r\n return map[value] ?? null;\r\n }\r\n\r\n /**\r\n * Map factor 5 (shadowStyle) to Tailwind class\r\n *\r\n * @param value - Shadow style value ('none', 'sm', 'md', 'lg', 'xl', '2xl')\r\n * @returns Tailwind class string or null if not mapped\r\n *\r\n * @example\r\n * ```typescript\r\n * mapShadowStyle('md') // → 'shadow-md'\r\n * mapShadowStyle('none') // → 'shadow-none'\r\n * mapShadowStyle('2xl') // → 'shadow-2xl'\r\n * ```\r\n */\r\n private mapShadowStyle(value: FactorValue): string | null {\r\n if (typeof value !== 'string') return null;\r\n\r\n const map: Record<string, string> = {\r\n none: 'shadow-none',\r\n sm: 'shadow-sm',\r\n md: 'shadow-md',\r\n lg: 'shadow-lg',\r\n xl: 'shadow-xl',\r\n '2xl': 'shadow-2xl',\r\n };\r\n\r\n return map[value] ?? null;\r\n }\r\n\r\n /**\r\n * Map factor 17 (spacing) to Tailwind class\r\n *\r\n * @param value - Spacing value ('none', 'sm', 'md', 'lg', 'xl')\r\n * @returns Tailwind class string or null if not mapped\r\n *\r\n * @example\r\n * ```typescript\r\n * mapSpacing('md') // → 'px-4 py-2'\r\n * mapSpacing('none') // → 'p-0'\r\n * mapSpacing('xl') // → 'px-8 py-4'\r\n * ```\r\n */\r\n private mapSpacing(value: FactorValue): string | null {\r\n if (typeof value !== 'string') return null;\r\n\r\n // Maps spacing values to px/py classes\r\n const map: Record<string, string> = {\r\n none: 'p-0',\r\n sm: 'px-2 py-1',\r\n md: 'px-4 py-2',\r\n lg: 'px-6 py-3',\r\n xl: 'px-8 py-4',\r\n };\r\n\r\n return map[value] ?? null;\r\n }\r\n\r\n /**\r\n * Map factor value to Tailwind class\r\n *\r\n * This is the main entry point for the ClassMapper.\r\n * It dispatches to the appropriate mapper function based on factor ID.\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @param value - Factor value from design system or override\r\n * @returns Tailwind class string or null if not mapped\r\n *\r\n * @example\r\n * ```typescript\r\n * const mapper = new ClassMapper();\r\n *\r\n * // Factor 4 = borderRadius\r\n * mapper.mapToClass(4, 'md'); // → 'rounded-md'\r\n *\r\n * // Factor 5 = shadowStyle\r\n * mapper.mapToClass(5, 'lg'); // → 'shadow-lg'\r\n *\r\n * // Factor 17 = spacing\r\n * mapper.mapToClass(17, 'sm'); // → 'px-2 py-1'\r\n *\r\n * // Unknown factor\r\n * mapper.mapToClass(999, 'value'); // → null\r\n * ```\r\n */\r\n public mapToClass(factorId: FactorId, value: FactorValue): string | null {\r\n switch (factorId) {\r\n case 4:\r\n return this.mapBorderRadius(value);\r\n case 5:\r\n return this.mapShadowStyle(value);\r\n case 17:\r\n return this.mapSpacing(value);\r\n // Additional factor mappings will be added incrementally\r\n default:\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Export ClassMapper for use in matrix-resolver\r\n */\r\nexport { ClassMapper as default };\r\n","/**\r\n * MatrixResolver - Orchestrates matrix multiplication for code generation\r\n *\r\n * Formula: Component = Matrix1 × Matrix2 × Matrix3 × Matrix4 + Override\r\n *\r\n * This module implements the core matrix multiplication algorithm:\r\n * - Matrix 1: Component → HTML Element (from COMPONENT_REGISTRY)\r\n * - Matrix 2: Factor → Design System Default Value (from FACTOR_REGISTRY)\r\n * - Matrix 3: Tier → React Patterns (basic/standard/enterprise)\r\n * - Matrix 4: Factor Applicability (Component × 24 Factors)\r\n *\r\n * **Tailwind Class Resolution Strategy** (Hybrid Approach):\r\n *\r\n * This resolver uses a two-tier approach to avoid duplicate mappings:\r\n *\r\n * 1. **User Overrides** (factor.source === 'override'):\r\n * → ClassMapper.mapToClass(factorId, value)\r\n * → Supports ALL possible values (xs, sm, md, lg, xl, etc.)\r\n * → Example: User sets size='lg' → 'h-12 px-8 text-base'\r\n *\r\n * 2. **Design System Defaults** (factor.source === 'default'):\r\n * → design-systems-registry.getFactorValue(designSystem, factorId)\r\n * → 288 pre-defined mappings (12 design systems × 24 factors)\r\n * → Example: Material Design size default → 'h-10 px-6 text-sm'\r\n *\r\n * This approach achieves:\r\n * - ✅ No duplicate mappings (each system handles its domain)\r\n * - ✅ Easy updates (defaults in registry, value mappings in ClassMapper)\r\n * - ✅ Extensibility (add new possible values without touching registry)\r\n *\r\n * @packageDocumentation\r\n * @module matrix/matrix-resolver\r\n * @category matrix\r\n * @since 1.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { COMPONENT_REGISTRY } from '../registries/components-registry';\r\nimport { FACTOR_REGISTRY } from '../presets/factor-registry';\r\nimport { getFactorValue } from '../registries/design-systems-registry';\r\nimport { ClassMapper } from './ClassMapper';\r\n\r\nimport type { ComponentType, DesignSystem } from '../types';\r\nimport type { FactorApplicability, FactorId as StrictFactorId } from '../../types/algorithm-engine.types';\r\nimport type {\r\n IMatrixResolver,\r\n MatrixResolverInput,\r\n ResolvedComponentConfig,\r\n Matrix1Result,\r\n Matrix2Result,\r\n Matrix3Result,\r\n Matrix4Result,\r\n FactorId,\r\n FactorValue,\r\n} from './types';\r\n\r\n/**\r\n * MatrixResolver - Orchestrates matrix multiplication for code generation\r\n *\r\n * @category matrix\r\n * @since 1.0.0\r\n *\r\n * @example\r\n * ```typescript\r\n * const resolver = new MatrixResolver();\r\n * const config = resolver.resolve({\r\n * componentId: 'button',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * factor24Config: { 4: 'lg', 5: 'md' }\r\n * });\r\n * console.log(config.componentName); // → 'ButtonMaterialDesignEnterprise'\r\n * console.log(config.classNames); // → ['rounded-lg', 'shadow-md', ...]\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport class MatrixResolver implements IMatrixResolver {\r\n private classMapper: ClassMapper;\r\n\r\n constructor() {\r\n this.classMapper = new ClassMapper();\r\n }\r\n\r\n /**\r\n * Matrix 1: Component → HTML Element\r\n * Source: COMPONENT_REGISTRY\r\n *\r\n * @param componentId - Component identifier (e.g., 'button', 'input')\r\n * @returns Element type and category\r\n *\r\n * @example\r\n * ```typescript\r\n * resolveMatrix1('button') // → { elementType: 'button', category: 'Interactive' }\r\n * resolveMatrix1('input') // → { elementType: 'input', category: 'Interactive' }\r\n * resolveMatrix1('card') // → { elementType: 'div', category: 'Container' }\r\n * ```\r\n */\r\n private resolveMatrix1(componentId: string): Matrix1Result {\r\n const entry = COMPONENT_REGISTRY[componentId as ComponentType];\r\n\r\n if (entry == null) {\r\n throw new Error(`Component \"${componentId}\" not found in COMPONENT_REGISTRY`);\r\n }\r\n\r\n return {\r\n elementType: entry.elementType,\r\n category: entry.category,\r\n };\r\n }\r\n\r\n /**\r\n * Matrix 2: Factor → Design System Default Value\r\n * Source: FACTOR_REGISTRY with user overrides\r\n *\r\n * @param designSystem - Design system identifier\r\n * @param factor24Config - User overrides (dto.factor24Config)\r\n * @returns Array of resolved factor values with sources\r\n *\r\n * @example\r\n * ```typescript\r\n * // No overrides\r\n * resolveMatrix2('material-design', undefined)\r\n * // → [{ factorId: 1, value: '#1976D2', source: 'default' }, ...]\r\n *\r\n * // With overrides\r\n * resolveMatrix2('material-design', { 4: 'lg' })\r\n * // → [\r\n * // { factorId: 4, value: 'lg', source: 'override' },\r\n * // { factorId: 1, value: '#1976D2', source: 'default' },\r\n * // ...\r\n * // ]\r\n * ```\r\n */\r\n private resolveMatrix2(\r\n designSystem: DesignSystem,\r\n factor24Config?: Record<number, FactorValue>\r\n ): Matrix2Result[] {\r\n const results: Matrix2Result[] = [];\r\n\r\n // Iterate through all factors in FACTOR_REGISTRY\r\n for (const factor of FACTOR_REGISTRY) {\r\n // Extract factor ID from factor.id (e.g., 'colorPrimary' → 1)\r\n // For now, use index + 1 as factor ID\r\n const factorId = FACTOR_REGISTRY.indexOf(factor) + 1;\r\n\r\n let value: FactorValue;\r\n let source: 'override' | 'parent' | 'default';\r\n\r\n // Check user override first (dto.factor24Config)\r\n if (factor24Config?.[factorId] !== undefined) {\r\n value = factor24Config[factorId];\r\n source = 'override';\r\n } else {\r\n // Use design system default\r\n const defaultValue = factor.defaults[designSystem];\r\n value = (defaultValue ?? null) as FactorValue;\r\n source = 'default';\r\n }\r\n\r\n results.push({\r\n factorId: factorId as FactorId,\r\n value,\r\n source,\r\n });\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Matrix 3: Tier → React Patterns\r\n *\r\n * Maps tier to corresponding React patterns (imports, wrappers, features).\r\n *\r\n * @param tier - Quality tier (basic/standard/enterprise)\r\n * @returns React patterns for the tier\r\n *\r\n * @example\r\n * ```typescript\r\n * resolveMatrix3('basic')\r\n * // → {\r\n * // tier: 'basic',\r\n * // imports: [\"import * as React from 'react';\"],\r\n * // wrappers: ['React.FC'],\r\n * // features: []\r\n * // }\r\n *\r\n * resolveMatrix3('enterprise')\r\n * // → {\r\n * // tier: 'enterprise',\r\n * // imports: [\"import * as React from 'react';\", ...],\r\n * // wrappers: ['memo', 'forwardRef'],\r\n * // features: ['displayName', 'analytics']\r\n * // }\r\n * ```\r\n */\r\n private resolveMatrix3(tier: string): Matrix3Result {\r\n const patterns = {\r\n basic: {\r\n imports: [\"import * as React from 'react';\"],\r\n wrappers: ['React.FC'],\r\n features: [],\r\n },\r\n standard: {\r\n imports: [\"import * as React from 'react';\", \"import { forwardRef } from 'react';\"],\r\n wrappers: ['forwardRef'],\r\n features: ['displayName'],\r\n },\r\n enterprise: {\r\n imports: [\r\n \"import * as React from 'react';\",\r\n \"import { forwardRef, memo, useCallback } from 'react';\",\r\n ],\r\n wrappers: ['memo', 'forwardRef'],\r\n features: ['displayName', 'analytics'],\r\n },\r\n };\r\n\r\n const result = patterns[tier as keyof typeof patterns] ?? patterns.basic;\r\n\r\n return {\r\n tier: tier as 'basic' | 'standard' | 'enterprise',\r\n imports: result.imports,\r\n wrappers: result.wrappers,\r\n features: result.features,\r\n };\r\n }\r\n\r\n /**\r\n * Matrix 4: Factor Applicability (Component × Factor)\r\n * Source: COMPONENT_REGISTRY.factorApplicability\r\n *\r\n * @param componentId - Component identifier\r\n * @returns Applicable factor IDs for this component\r\n *\r\n * @example\r\n * ```typescript\r\n * resolveMatrix4('button')\r\n * // → { applicableFactors: [1, 2, 3, 4, 6, 7, 8, ...] }\r\n *\r\n * resolveMatrix4('input')\r\n * // → { applicableFactors: [1, 2, 3, 4, 7, 10, ...] }\r\n * ```\r\n */\r\n private resolveMatrix4(componentId: string): Matrix4Result {\r\n const entry = COMPONENT_REGISTRY[componentId as ComponentType];\r\n\r\n if (entry == null) {\r\n return { applicableFactors: [] };\r\n }\r\n\r\n const applicableFactors: FactorId[] = [];\r\n\r\n // Check each factor for applicability\r\n const factorApplicability = entry.factorApplicability as Record<FactorId, FactorApplicability | undefined>;\r\n\r\n for (let factorId = 1; factorId <= 24; factorId++) {\r\n const fid = factorId as FactorId;\r\n const applicability = factorApplicability[fid];\r\n\r\n // Include factor if applicability is true or a string override\r\n if (applicability === true || typeof applicability === 'string') {\r\n applicableFactors.push(fid);\r\n }\r\n }\r\n\r\n return { applicableFactors };\r\n }\r\n\r\n /**\r\n * Format component name (PascalCase)\r\n *\r\n * @param componentId - Component identifier (kebab-case)\r\n * @param designSystem - Design system identifier (kebab-case)\r\n * @param tier - Quality tier\r\n * @returns Formatted component name\r\n *\r\n * @example\r\n * ```typescript\r\n * formatComponentName('button', 'material-design', 'enterprise')\r\n * // → 'ButtonMaterialDesignEnterprise'\r\n *\r\n * formatComponentName('radio-group', 'ios-hig', 'standard')\r\n * // → 'RadioGroupIosHigStandard'\r\n * ```\r\n */\r\n private formatComponentName(\r\n componentId: string,\r\n designSystem: string,\r\n tier: string\r\n ): string {\r\n // Convert component-id to ComponentId\r\n const componentParts = componentId.split('-').map((part) => part.charAt(0).toUpperCase() + part.slice(1));\r\n\r\n // Convert design-system to DesignSystem (shorter names)\r\n const designSystemNames: Record<string, string> = {\r\n 'material-design': 'Material',\r\n 'ios-hig': 'IosHig',\r\n glassmorphism: 'Glass',\r\n neumorphism: 'Neu',\r\n brutalism: 'Brutal',\r\n minimalism: 'Minimal',\r\n fluent: 'Fluent',\r\n carbon: 'Carbon',\r\n 'ant-design': 'Ant',\r\n chakra: 'Chakra',\r\n atlassian: 'Atlassian',\r\n blueprint: 'Blueprint',\r\n };\r\n\r\n const dsName = designSystemNames[designSystem] ??\r\n designSystem.split('-').map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join('');\r\n\r\n // Convert tier to Tier\r\n const tierPart = tier.charAt(0).toUpperCase() + tier.slice(1);\r\n\r\n // Format: DesignSystem + Component + Tier (easier to read)\r\n return `${dsName}${componentParts.join('')}${tierPart}`;\r\n }\r\n\r\n /**\r\n * Resolve complete component configuration using matrix multiplication\r\n *\r\n * Formula: Component = Matrix1 × Matrix2 × Matrix3 × Matrix4 + Override\r\n *\r\n * @param input - Matrix resolver input\r\n * @returns Resolved component configuration ready for template generation\r\n *\r\n * @example\r\n * ```typescript\r\n * const resolver = new MatrixResolver();\r\n *\r\n * const config = resolver.resolve({\r\n * componentId: 'button',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * factor24Config: { 4: 'lg', 5: 'md' }\r\n * });\r\n *\r\n * console.log(config);\r\n * // {\r\n * // componentName: 'ButtonMaterialDesignEnterprise',\r\n * // elementType: 'button',\r\n * // tier: 'enterprise',\r\n * // designSystem: 'material-design',\r\n * // classNames: ['rounded-lg', 'shadow-md', 'px-4', 'py-2', ...],\r\n * // imports: [\"import * as React from 'react';\", ...],\r\n * // wrappers: ['memo', 'forwardRef'],\r\n * // features: ['displayName', 'analytics']\r\n * // }\r\n * ```\r\n */\r\n public resolve(input: MatrixResolverInput): ResolvedComponentConfig {\r\n // Matrix 1: Component → Element\r\n const m1 = this.resolveMatrix1(input.componentId);\r\n\r\n // Matrix 2: Factor → Value\r\n const m2 = this.resolveMatrix2(input.designSystem, input.factor24Config);\r\n\r\n // Matrix 3: Tier → Patterns\r\n const m3 = this.resolveMatrix3(input.tier);\r\n\r\n // Matrix 4: Factor Applicability\r\n const m4 = this.resolveMatrix4(input.componentId);\r\n\r\n // Filter M2 by M4 (only applicable factors)\r\n const applicableFactors = m2.filter((f) => m4.applicableFactors.includes(f.factorId));\r\n\r\n // Map factor values to Tailwind classes (Hybrid approach)\r\n const classNames: string[] = [];\r\n for (const factor of applicableFactors) {\r\n let className: string | null = null;\r\n\r\n // Priority 1: User override → ClassMapper (supports all possible values)\r\n if (factor.source === 'override') {\r\n className = this.classMapper.mapToClass(factor.factorId, factor.value);\r\n }\r\n\r\n // Priority 2: Default → design-systems-registry (288 pre-defined mappings)\r\n if (!className) {\r\n const factorValue = getFactorValue(input.designSystem, factor.factorId as StrictFactorId);\r\n className = factorValue?.tailwindClasses ?? null;\r\n }\r\n\r\n if (className != null && className !== '') {\r\n classNames.push(className);\r\n }\r\n }\r\n\r\n // Format component name\r\n const componentName = this.formatComponentName(\r\n input.componentId,\r\n input.designSystem,\r\n input.tier\r\n );\r\n\r\n return {\r\n componentName,\r\n elementType: m1.elementType,\r\n tier: input.tier,\r\n designSystem: input.designSystem,\r\n classNames,\r\n imports: m3.imports,\r\n wrappers: m3.wrappers,\r\n features: m3.features,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Export MatrixResolver as default\r\n */\r\nexport { MatrixResolver as default };\r\n","/**\r\n * Generator Types - Shared type definitions for TierGenerator and CompositionGenerator\r\n * @packageDocumentation\r\n * @module generators/generator-types\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n BaseRegistryDefinition,\r\n RegistrySectionDefinition,\r\n RegistryPageDefinition,\r\n RegistryLayoutDefinition,\r\n RegistryTemplateDefinition,\r\n} from './presets/registry.types';\r\nimport type { DesignSystem, Tier, ComponentType } from '../types';\r\nimport type {\r\n SectionCategory,\r\n SlotConfig,\r\n SlotPosition,\r\n SectionConfig,\r\n SectionFactors,\r\n SectionWithFactors,\r\n LayoutType,\r\n SpacingLevel,\r\n AlignmentType,\r\n StoredComponentInSlot,\r\n StyleOverrides,\r\n} from '../types/section.types';\r\n\r\n// Re-export base types for convenience\r\nexport type { DesignSystem, Tier, ComponentType };\r\n\r\n// Re-export section types for ui-studio modules\r\nexport type {\r\n SectionCategory,\r\n SlotConfig,\r\n SlotPosition,\r\n SectionConfig,\r\n SectionFactors,\r\n SectionWithFactors,\r\n LayoutType,\r\n SpacingLevel,\r\n AlignmentType,\r\n StoredComponentInSlot,\r\n StyleOverrides,\r\n};\r\n\r\n/**\r\n * Options for component generation\r\n */\r\nexport interface GenerationOptions {\r\n /**\r\n * Whether to include TypeScript types file\r\n * @default true\r\n */\r\n readonly includeTypes?: boolean;\r\n\r\n /**\r\n * Whether to include test file\r\n * @default true\r\n */\r\n readonly includeTests?: boolean;\r\n\r\n /**\r\n * Whether to include Storybook stories\r\n * @default false\r\n */\r\n readonly includeStories?: boolean;\r\n\r\n /**\r\n * Custom template overrides\r\n */\r\n readonly templateOverrides?: Record<string, string>;\r\n\r\n /**\r\n * Additional props to inject into component\r\n */\r\n readonly additionalProps?: Record<string, string>;\r\n\r\n /**\r\n * Whether to use CSS Modules instead of Tailwind\r\n * @default false\r\n */\r\n readonly useCSSModules?: boolean;\r\n}\r\n\r\n/**\r\n * Configuration for generating a single component (TierGenerator)\r\n */\r\nexport interface TierGenerationConfig {\r\n /**\r\n * Registry definition to generate from\r\n */\r\n readonly definition: BaseRegistryDefinition;\r\n\r\n /**\r\n * Design system to apply\r\n */\r\n readonly designSystem: DesignSystem;\r\n\r\n /**\r\n * Quality tier to generate\r\n */\r\n readonly tier: Tier;\r\n\r\n /**\r\n * Output directory for generated files\r\n */\r\n readonly outputDir: string;\r\n\r\n /**\r\n * Optional generation settings\r\n */\r\n readonly options?: GenerationOptions;\r\n}\r\n\r\n/**\r\n * Result of a single component generation\r\n */\r\nexport interface GenerationResult {\r\n /**\r\n * File path of generated component\r\n */\r\n readonly componentPath: string;\r\n\r\n /**\r\n * File path of generated types (if includeTypes=true)\r\n */\r\n readonly typesPath?: string;\r\n\r\n /**\r\n * File path of generated test (if includeTests=true)\r\n */\r\n readonly testPath?: string;\r\n\r\n /**\r\n * File path of generated story (if includeStories=true)\r\n */\r\n readonly storyPath?: string;\r\n\r\n /**\r\n * Lines of code in component file\r\n */\r\n readonly linesOfCode: number;\r\n\r\n /**\r\n * Generated component display name\r\n */\r\n readonly displayName: string;\r\n\r\n /**\r\n * Whether generation succeeded\r\n */\r\n readonly success: boolean;\r\n\r\n /**\r\n * Error message if generation failed\r\n */\r\n readonly error?: string;\r\n}\r\n\r\n/**\r\n * Configuration for batch generation\r\n */\r\nexport interface BatchGenerationConfig {\r\n /**\r\n * Registry definitions to generate from\r\n */\r\n readonly definitions: BaseRegistryDefinition[];\r\n\r\n /**\r\n * Design systems to generate for each definition\r\n * @default All design systems from definition\r\n */\r\n readonly designSystems?: DesignSystem[];\r\n\r\n /**\r\n * Tiers to generate for each definition\r\n * @default All tiers from definition\r\n */\r\n readonly tiers?: Tier[];\r\n\r\n /**\r\n * Base output directory\r\n */\r\n readonly outputDir: string;\r\n\r\n /**\r\n * Optional generation settings\r\n */\r\n readonly options?: GenerationOptions;\r\n\r\n /**\r\n * Maximum parallel generations\r\n * @default 4\r\n */\r\n readonly maxParallel?: number;\r\n}\r\n\r\n/**\r\n * Result of batch generation\r\n */\r\nexport interface BatchGenerationResult {\r\n /**\r\n * Total number of components attempted\r\n */\r\n readonly total: number;\r\n\r\n /**\r\n * Number of successful generations\r\n */\r\n readonly successful: number;\r\n\r\n /**\r\n * Number of failed generations\r\n */\r\n readonly failed: number;\r\n\r\n /**\r\n * Individual generation results\r\n */\r\n readonly results: GenerationResult[];\r\n\r\n /**\r\n * Total lines of code generated\r\n */\r\n readonly totalLinesOfCode: number;\r\n\r\n /**\r\n * Generation duration in milliseconds\r\n */\r\n readonly durationMs: number;\r\n}\r\n\r\n/**\r\n * Component template data for rendering\r\n */\r\nexport interface ComponentTemplateData {\r\n /**\r\n * Component name in PascalCase\r\n */\r\n readonly componentName: string;\r\n\r\n /**\r\n * Display name for React DevTools\r\n */\r\n readonly displayName: string;\r\n\r\n /**\r\n * Component description\r\n */\r\n readonly description: string;\r\n\r\n /**\r\n * Design system identifier\r\n */\r\n readonly designSystem: DesignSystem;\r\n\r\n /**\r\n * Quality tier\r\n */\r\n readonly tier: Tier;\r\n\r\n /**\r\n * Props interface name\r\n */\r\n readonly propsInterface: string;\r\n\r\n /**\r\n * HTML element type for ref\r\n */\r\n readonly elementType: string;\r\n\r\n /**\r\n * Base CSS classes\r\n */\r\n readonly baseClasses: string;\r\n\r\n /**\r\n * Variant definitions\r\n */\r\n readonly variants?: Record<string, Record<string, string>>;\r\n\r\n /**\r\n * Default prop values\r\n */\r\n readonly defaults?: Record<string, string>;\r\n\r\n /**\r\n * Additional imports\r\n */\r\n readonly imports?: string[];\r\n\r\n /**\r\n * Analytics event name (Enterprise tier)\r\n */\r\n readonly analyticsEvent?: string;\r\n\r\n /**\r\n * ARIA attributes (Enterprise tier)\r\n */\r\n readonly ariaAttributes?: Record<string, string>;\r\n}\r\n\r\n/**\r\n * Section generation configuration (for CompositionGenerator)\r\n */\r\nexport interface SectionGenerationConfig extends TierGenerationConfig {\r\n readonly definition: RegistrySectionDefinition;\r\n}\r\n\r\n/**\r\n * Page generation configuration (for CompositionGenerator)\r\n */\r\nexport interface PageGenerationConfig extends TierGenerationConfig {\r\n readonly definition: RegistryPageDefinition;\r\n}\r\n\r\n/**\r\n * Layout generation configuration (for CompositionGenerator)\r\n */\r\nexport interface LayoutGenerationConfig extends TierGenerationConfig {\r\n readonly definition: RegistryLayoutDefinition;\r\n}\r\n\r\n/**\r\n * Template generation configuration (for CompositionGenerator)\r\n */\r\nexport interface TemplateGenerationConfig extends TierGenerationConfig {\r\n readonly definition: RegistryTemplateDefinition;\r\n}\r\n\r\n/**\r\n * Tier-specific features to include in generated component\r\n */\r\nexport interface TierFeatures {\r\n /**\r\n * Use React.memo wrapper\r\n */\r\n readonly useMemo: boolean;\r\n\r\n /**\r\n * Use forwardRef\r\n */\r\n readonly useForwardRef: boolean;\r\n\r\n /**\r\n * Set displayName\r\n */\r\n readonly setDisplayName: boolean;\r\n\r\n /**\r\n * Include analytics tracking\r\n */\r\n readonly includeAnalytics: boolean;\r\n\r\n /**\r\n * Include ARIA attributes\r\n */\r\n readonly includeAria: boolean;\r\n\r\n /**\r\n * Use useCallback for event handlers\r\n */\r\n readonly useCallback: boolean;\r\n\r\n /**\r\n * Include variants system\r\n */\r\n readonly includeVariants: boolean;\r\n\r\n /**\r\n * Include size variants\r\n */\r\n readonly includeSizes: boolean;\r\n}\r\n\r\n/**\r\n * Get tier-specific features based on tier level\r\n * @param tier - Quality tier\r\n * @returns Tier features configuration\r\n */\r\nexport function getTierFeatures(tier: Tier): TierFeatures {\r\n switch (tier) {\r\n case 'basic':\r\n return {\r\n useMemo: false,\r\n useForwardRef: false,\r\n setDisplayName: false,\r\n includeAnalytics: false,\r\n includeAria: false,\r\n useCallback: false,\r\n includeVariants: false,\r\n includeSizes: false,\r\n };\r\n\r\n case 'standard':\r\n return {\r\n useMemo: false,\r\n useForwardRef: true,\r\n setDisplayName: true,\r\n includeAnalytics: false,\r\n includeAria: false,\r\n useCallback: false,\r\n includeVariants: true,\r\n includeSizes: true,\r\n };\r\n\r\n case 'enterprise':\r\n return {\r\n useMemo: true,\r\n useForwardRef: true,\r\n setDisplayName: true,\r\n includeAnalytics: true,\r\n includeAria: true,\r\n useCallback: true,\r\n includeVariants: true,\r\n includeSizes: true,\r\n };\r\n\r\n default: {\r\n const exhaustiveCheck: never = tier;\r\n throw new Error(`Unknown tier: ${exhaustiveCheck as string}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Generator statistics\r\n */\r\nexport interface GeneratorStats {\r\n /**\r\n * Total components generated\r\n */\r\n readonly totalGenerated: number;\r\n\r\n /**\r\n * Components by tier\r\n */\r\n readonly byTier: Record<Tier, number>;\r\n\r\n /**\r\n * Components by design system\r\n */\r\n readonly byDesignSystem: Record<DesignSystem, number>;\r\n\r\n /**\r\n * Total lines of code\r\n */\r\n readonly totalLOC: number;\r\n\r\n /**\r\n * Average LOC per tier\r\n */\r\n readonly avgLOCByTier: Record<Tier, number>;\r\n\r\n /**\r\n * Total generation time (ms)\r\n */\r\n readonly totalTimeMs: number;\r\n}\r\n","/**\r\n * TierGenerator - Generates React components with A+a+b incremental pattern\r\n * @packageDocumentation\r\n * @module generators/TierGenerator\r\n * @since 4.0.0\r\n *\r\n * Pattern:\r\n * - Basic (A): Core functionality (30-50 LOC)\r\n * - Standard (A+a): + forwardRef, displayName, variants (50-150 LOC)\r\n * - Enterprise (A+a+b): + memo, useCallback, analytics, ARIA (150-300 LOC)\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getTierFeatures } from '../types';\r\n\r\nimport type {\r\n TierGenerationConfig,\r\n GenerationResult,\r\n BatchGenerationConfig,\r\n BatchGenerationResult,\r\n ComponentTemplateData,\r\n TierFeatures,\r\n} from '../types';\r\nimport type { BaseRegistryDefinition } from '../presets/registry.types';\r\nimport type { DesignSystem, Tier } from '../../types';\r\n\r\n/**\r\n * TierGenerator - Main component generation engine\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = new TierGenerator();\r\n * const result = await generator.generate({\r\n * definition: BUTTON_DEFINITION,\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * outputDir: './src/components',\r\n * });\r\n * ```\r\n */\r\nexport class TierGenerator {\r\n /**\r\n * Generate a single component\r\n *\r\n * @param config - Generation configuration\r\n * @returns Generation result with file paths and metadata\r\n */\r\n public generate(config: TierGenerationConfig): GenerationResult {\r\n const { definition, designSystem, tier, outputDir, options } = config;\r\n\r\n try {\r\n // Get tier-specific features\r\n const features = getTierFeatures(tier);\r\n\r\n // Build template data\r\n const templateData = this.buildTemplateData(definition, designSystem, tier, features);\r\n\r\n // Generate component code based on tier\r\n const componentCode = this.generateComponentCode(templateData, features);\r\n\r\n // Build file paths\r\n const componentName = this.getComponentFileName(definition.id, designSystem, tier);\r\n const componentPath = `${outputDir}/${componentName}.tsx`;\r\n\r\n // Calculate LOC\r\n const linesOfCode = componentCode.split('\\n').length;\r\n\r\n // Build result\r\n const result: GenerationResult = {\r\n componentPath,\r\n linesOfCode,\r\n displayName: templateData.displayName,\r\n success: true,\r\n };\r\n\r\n // Generate types file if requested\r\n if (options?.includeTypes !== false) {\r\n void this.generateTypesFile(templateData);\r\n Object.assign(result, {\r\n typesPath: `${outputDir}/${componentName}.types.ts`,\r\n });\r\n }\r\n\r\n // Generate test file if requested\r\n if (options?.includeTests !== false) {\r\n void this.generateTestFile(templateData, features);\r\n Object.assign(result, {\r\n testPath: `${outputDir}/${componentName}.test.tsx`,\r\n });\r\n }\r\n\r\n // Generate story file if requested\r\n if (options?.includeStories === true) {\r\n void this.generateStoryFile(templateData);\r\n Object.assign(result, {\r\n storyPath: `${outputDir}/${componentName}.stories.tsx`,\r\n });\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n return {\r\n componentPath: '',\r\n linesOfCode: 0,\r\n displayName: '',\r\n success: false,\r\n error: error instanceof Error ? error.message : 'Unknown error',\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Generate multiple components in batch\r\n *\r\n * @param config - Batch generation configuration\r\n * @returns Batch generation result with statistics\r\n */\r\n public generateBatch(config: BatchGenerationConfig): BatchGenerationResult {\r\n const startTime = Date.now();\r\n const results: GenerationResult[] = [];\r\n\r\n const { definitions, outputDir, options } = config;\r\n\r\n // Get design systems and tiers to generate\r\n const designSystems = config.designSystems ?? [];\r\n const tiers = config.tiers ?? [];\r\n\r\n // Generate all combinations\r\n for (const definition of definitions) {\r\n const defsDesignSystems = designSystems.length > 0 ? designSystems : definition.designSystems;\r\n const defsTiers = tiers.length > 0 ? tiers : definition.tiers;\r\n\r\n for (const designSystem of defsDesignSystems) {\r\n for (const tier of defsTiers) {\r\n const result = this.generate({\r\n definition,\r\n designSystem,\r\n tier,\r\n outputDir,\r\n options,\r\n });\r\n results.push(result);\r\n }\r\n }\r\n }\r\n\r\n const durationMs = Date.now() - startTime;\r\n const successful = results.filter((r) => r.success).length;\r\n const failed = results.filter((r) => !r.success).length;\r\n const totalLinesOfCode = results.reduce((sum, r) => sum + r.linesOfCode, 0);\r\n\r\n return {\r\n total: results.length,\r\n successful,\r\n failed,\r\n results,\r\n totalLinesOfCode,\r\n durationMs,\r\n };\r\n }\r\n\r\n /**\r\n * Build template data from registry definition\r\n */\r\n private buildTemplateData(\r\n definition: BaseRegistryDefinition,\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n features: TierFeatures\r\n ): ComponentTemplateData {\r\n const componentName = this.getComponentName(definition.id, designSystem, tier);\r\n const displayName = `${componentName}`;\r\n\r\n return {\r\n componentName,\r\n displayName,\r\n description: definition.description,\r\n designSystem,\r\n tier,\r\n propsInterface: `${componentName}Props`,\r\n elementType: this.getElementType(definition),\r\n baseClasses: this.getBaseClasses(definition, designSystem),\r\n variants: features.includeVariants === true ? this.getVariants(definition) : undefined,\r\n defaults: this.getDefaults(definition),\r\n imports: this.getImports(features),\r\n analyticsEvent: features.includeAnalytics === true ? `${definition.id}_click` : undefined,\r\n ariaAttributes:\r\n features.includeAria === true ? this.getAriaAttributes(definition) : undefined,\r\n };\r\n }\r\n\r\n /**\r\n * Generate component code from ResolvedComponentConfig (for ComponentGenerator)\r\n *\r\n * @param config - Resolved component configuration from MatrixResolver\r\n * @returns Generated TypeScript component code\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = new TierGenerator();\r\n * const code = generator.generateFromResolvedConfig({\r\n * componentName: 'MaterialButtonEnterprise',\r\n * elementType: 'button',\r\n * tier: 'enterprise',\r\n * designSystem: 'material-design',\r\n * classNames: ['rounded-lg', 'shadow-md'],\r\n * imports: [\"import { memo, forwardRef } from 'react';\"],\r\n * wrappers: ['memo', 'forwardRef'],\r\n * features: ['displayName', 'analytics']\r\n * });\r\n * ```\r\n */\r\n public generateFromResolvedConfig(config: {\r\n readonly componentName: string;\r\n readonly elementType: string;\r\n readonly tier: string;\r\n readonly designSystem: string;\r\n readonly classNames: readonly string[];\r\n readonly imports: readonly string[];\r\n readonly wrappers: readonly string[];\r\n readonly features: readonly string[];\r\n }): string {\r\n // Get tier features\r\n const tierFeatures = getTierFeatures(config.tier as Tier);\r\n\r\n // Build template data from resolved config\r\n const templateData: ComponentTemplateData = {\r\n componentName: config.componentName,\r\n displayName: config.componentName,\r\n description: `${config.componentName} component`,\r\n designSystem: config.designSystem as DesignSystem,\r\n tier: config.tier as Tier,\r\n propsInterface: `${config.componentName}Props`,\r\n elementType: config.elementType,\r\n baseClasses: config.classNames.join(' '),\r\n variants: tierFeatures.includeVariants === true ? {\r\n primary: { bg: 'bg-blue-500', text: 'text-white' },\r\n secondary: { bg: 'bg-gray-500', text: 'text-white' },\r\n outline: { bg: 'bg-transparent', text: 'text-blue-500', border: 'border border-blue-500' },\r\n } : undefined,\r\n defaults: { variant: 'primary', size: 'md' },\r\n imports: config.imports as string[],\r\n analyticsEvent: config.features.includes('analytics') ? 'component_click' : undefined,\r\n ariaAttributes: tierFeatures.includeAria === true ? { 'aria-label': config.componentName } : undefined,\r\n };\r\n\r\n // Generate code using tier pattern\r\n return this.generateComponentCode(templateData, tierFeatures);\r\n }\r\n\r\n /**\r\n * Generate component code based on tier (A, A+a, A+a+b pattern)\r\n */\r\n private generateComponentCode(data: ComponentTemplateData, features: TierFeatures): string {\r\n if (data.tier === 'enterprise') {\r\n return this.generateEnterpriseTier(data, features);\r\n } else if (data.tier === 'standard') {\r\n return this.generateStandardTier(data, features);\r\n } else {\r\n return this.generateBasicTier(data, features);\r\n }\r\n }\r\n\r\n /**\r\n * Generate Basic tier component (A pattern)\r\n * - Core functionality only\r\n * - React.FC with basic props\r\n * - 30-50 LOC\r\n */\r\n private generateBasicTier(data: ComponentTemplateData, _features: TierFeatures): string {\r\n const code: string[] = [];\r\n\r\n // Header comment\r\n code.push('/**');\r\n code.push(` * ${data.componentName} - Basic tier`);\r\n code.push(` * ${data.description}`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n\r\n // Imports\r\n code.push(`import React from 'react';`);\r\n code.push('');\r\n\r\n // Props interface\r\n code.push(`interface ${data.propsInterface} {`);\r\n code.push(' readonly children?: React.ReactNode;');\r\n code.push(' readonly className?: string;');\r\n code.push('}');\r\n code.push('');\r\n\r\n // Component\r\n code.push(`export const ${data.componentName}: React.FC<${data.propsInterface}> = ({`);\r\n code.push(' children,');\r\n code.push(' className,');\r\n code.push('}) => {');\r\n code.push(` return (`);\r\n code.push(` <${data.elementType} className={\\`${data.baseClasses} \\${className ?? ''}\\`.trim()}>`);\r\n code.push(' {children}');\r\n code.push(` </${data.elementType}>`);\r\n code.push(' );');\r\n code.push('};');\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate Standard tier component (A+a pattern)\r\n * - Basic functionality + enhancements\r\n * - forwardRef, displayName, variants\r\n * - 50-150 LOC\r\n */\r\n private generateStandardTier(data: ComponentTemplateData, _features: TierFeatures): string {\r\n const imports = ['forwardRef'];\r\n const code: string[] = [];\r\n\r\n // Header comment\r\n code.push('/**');\r\n code.push(` * ${data.componentName} - Standard tier`);\r\n code.push(` * ${data.description}`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n\r\n // Imports\r\n code.push(`import React, { ${imports.join(', ')} } from 'react';`);\r\n code.push('');\r\n\r\n // Props interface\r\n code.push(`interface ${data.propsInterface} {`);\r\n code.push(' readonly children?: React.ReactNode;');\r\n code.push(' readonly className?: string;');\r\n if (data.variants !== undefined) {\r\n code.push(\" readonly variant?: 'primary' | 'secondary' | 'outline';\");\r\n code.push(\" readonly size?: 'sm' | 'md' | 'lg';\");\r\n }\r\n code.push('}');\r\n code.push('');\r\n\r\n // Component\r\n code.push(\r\n `export const ${data.componentName} = forwardRef<HTML${this.capitalizeFirst(data.elementType)}Element, ${data.propsInterface}>(`\r\n );\r\n code.push(' ({ children, className, variant = \"primary\", size = \"md\", ...props }, ref) => {');\r\n code.push(' return (');\r\n code.push(` <${data.elementType}`);\r\n code.push(' ref={ref}');\r\n code.push(` className={\\\\\\`${data.baseClasses} \\\\\\${className ?? ''}\\\\\\`.trim()}`);\r\n code.push(' {...props}');\r\n code.push(' >');\r\n code.push(' {children}');\r\n code.push(` </${data.elementType}>`);\r\n code.push(' );');\r\n code.push(' }');\r\n code.push(');');\r\n code.push('');\r\n\r\n // displayName\r\n code.push(`${data.componentName}.displayName = '${data.displayName}';`);\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate Enterprise tier component (A+a+b pattern)\r\n * - Standard functionality + advanced features\r\n * - memo, useCallback, analytics, ARIA\r\n * - 150-300 LOC\r\n */\r\n private generateEnterpriseTier(data: ComponentTemplateData, _features: TierFeatures): string {\r\n const imports = ['memo', 'forwardRef', 'useCallback'];\r\n const code: string[] = [];\r\n\r\n // Header comment\r\n code.push('/**');\r\n code.push(` * ${data.componentName} - Enterprise tier`);\r\n code.push(` * ${data.description}`);\r\n code.push(' *');\r\n code.push(' * Features:');\r\n code.push(' * - React.memo for performance optimization');\r\n code.push(' * - useCallback for event handler memoization');\r\n code.push(' * - Analytics tracking integration');\r\n code.push(' * - Full ARIA accessibility support');\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n\r\n // Imports\r\n code.push(`import React, { ${imports.join(', ')} } from 'react';`);\r\n code.push('');\r\n\r\n // Props interface\r\n code.push(`interface ${data.propsInterface} {`);\r\n code.push(' readonly children?: React.ReactNode;');\r\n code.push(' readonly className?: string;');\r\n if (data.variants !== undefined) {\r\n code.push(\" readonly variant?: 'primary' | 'secondary' | 'outline';\");\r\n code.push(\" readonly size?: 'sm' | 'md' | 'lg';\");\r\n }\r\n code.push(' readonly analyticsEvent?: string;');\r\n code.push(\r\n ` readonly onClick?: (e: React.MouseEvent<HTML${this.capitalizeFirst(data.elementType)}Element>) => void;`\r\n );\r\n code.push(\" readonly 'aria-label'?: string;\");\r\n code.push('}');\r\n code.push('');\r\n\r\n // Component\r\n code.push(`export const ${data.componentName} = memo(`);\r\n code.push(\r\n ` forwardRef<HTML${this.capitalizeFirst(data.elementType)}Element, ${data.propsInterface}>(`\r\n );\r\n code.push(\r\n ' ({ children, className, variant = \"primary\", size = \"md\", analyticsEvent, onClick, ...props }, ref) => {'\r\n );\r\n code.push(' const handleClick = useCallback(');\r\n code.push(\r\n ` (e: React.MouseEvent<HTML${this.capitalizeFirst(data.elementType)}Element>): void => {`\r\n );\r\n code.push(' if (analyticsEvent && typeof window !== \"undefined\") {');\r\n code.push(' (window as unknown as { dataLayer?: unknown[] }).dataLayer?.push({');\r\n code.push(' event: analyticsEvent,');\r\n code.push(\" category: 'component',\");\r\n code.push(\" action: 'click',\");\r\n code.push(' });');\r\n code.push(' }');\r\n code.push(' onClick?.(e);');\r\n code.push(' },');\r\n code.push(' [analyticsEvent, onClick]');\r\n code.push(' );');\r\n code.push('');\r\n code.push(' return (');\r\n code.push(` <${data.elementType}`);\r\n code.push(' ref={ref}');\r\n code.push(' onClick={handleClick}');\r\n code.push(` className={\\\\\\`${data.baseClasses} \\\\\\${className ?? ''}\\\\\\`.trim()}`);\r\n code.push(' aria-label={props[\"aria-label\"]}');\r\n code.push(' {...props}');\r\n code.push(' >');\r\n code.push(' {children}');\r\n code.push(` </${data.elementType}>`);\r\n code.push(' );');\r\n code.push(' }');\r\n code.push(' )');\r\n code.push(');');\r\n code.push('');\r\n\r\n // displayName\r\n code.push(`${data.componentName}.displayName = '${data.displayName}';`);\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate TypeScript types file\r\n */\r\n private generateTypesFile(data: ComponentTemplateData): string {\r\n const code: string[] = [];\r\n\r\n code.push('/**');\r\n code.push(` * ${data.componentName} Types`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n code.push(`export interface ${data.propsInterface} {`);\r\n code.push(' readonly children?: React.ReactNode;');\r\n code.push(' readonly className?: string;');\r\n code.push('}');\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate test file\r\n */\r\n private generateTestFile(data: ComponentTemplateData, features: TierFeatures): string {\r\n const code: string[] = [];\r\n\r\n code.push('/**');\r\n code.push(` * ${data.componentName} Tests`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n code.push(\"import { describe, it, expect } from 'vitest';\");\r\n code.push(\"import { render } from '@testing-library/react';\");\r\n code.push(`import { ${data.componentName} } from './${data.componentName}';`);\r\n code.push('');\r\n code.push(`describe('${data.componentName}', () => {`);\r\n code.push(\" it('renders children', () => {\");\r\n code.push(\r\n ` const { getByText } = render(<${data.componentName}>Test</${data.componentName}>);`\r\n );\r\n code.push(\" expect(getByText('Test')).toBeInTheDocument();\");\r\n code.push(' });');\r\n\r\n if (features.setDisplayName) {\r\n code.push('');\r\n code.push(\" it('has displayName', () => {\");\r\n code.push(` expect(${data.componentName}.displayName).toBe('${data.displayName}');`);\r\n code.push(' });');\r\n }\r\n\r\n code.push('});');\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate Storybook story file\r\n */\r\n private generateStoryFile(data: ComponentTemplateData): string {\r\n const code: string[] = [];\r\n\r\n code.push('/**');\r\n code.push(` * ${data.componentName} Stories`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n code.push(\"import type { Meta, StoryObj } from '@storybook/react';\");\r\n code.push(`import { ${data.componentName} } from './${data.componentName}';`);\r\n code.push('');\r\n code.push(`const meta: Meta<typeof ${data.componentName}> = {`);\r\n code.push(` title: 'Components/${data.componentName}',`);\r\n code.push(` component: ${data.componentName},`);\r\n code.push('};');\r\n code.push('');\r\n code.push('export default meta;');\r\n code.push(`type Story = StoryObj<typeof ${data.componentName}>;`);\r\n code.push('');\r\n code.push('export const Default: Story = {');\r\n code.push(' args: {');\r\n code.push(\" children: 'Example',\");\r\n code.push(' },');\r\n code.push('};');\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Get component name from definition ID, design system, and tier\r\n */\r\n private getComponentName(id: string, designSystem: DesignSystem, tier: Tier): string {\r\n const capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1);\r\n const parts = id.split('-');\r\n const base = parts.map(capitalize).join('');\r\n const ds = designSystem.split('-').map(capitalize).join('');\r\n const t = capitalize(tier);\r\n return `${ds}${base}${t}`;\r\n }\r\n\r\n /**\r\n * Get component file name\r\n */\r\n private getComponentFileName(id: string, designSystem: DesignSystem, tier: Tier): string {\r\n return `${designSystem}-${id}-${tier}`;\r\n }\r\n\r\n /**\r\n * Get HTML element type from definition\r\n */\r\n private getElementType(_definition: BaseRegistryDefinition): string {\r\n return 'div';\r\n }\r\n\r\n /**\r\n * Get base CSS classes\r\n */\r\n private getBaseClasses(_definition: BaseRegistryDefinition, _designSystem: DesignSystem): string {\r\n return '';\r\n }\r\n\r\n /**\r\n * Get variant definitions\r\n */\r\n private getVariants(\r\n this: TierGenerator,\r\n _definition: BaseRegistryDefinition\r\n ): Record<string, Record<string, string>> {\r\n return {\r\n variant: {\r\n primary: 'bg-blue-500 text-white',\r\n secondary: 'bg-gray-500 text-white',\r\n outline: 'border border-blue-500 text-blue-500',\r\n },\r\n size: {\r\n sm: 'px-2 py-1 text-sm',\r\n md: 'px-4 py-2 text-base',\r\n lg: 'px-6 py-3 text-lg',\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Get default prop values\r\n */\r\n private getDefaults(\r\n this: TierGenerator,\r\n _definition: BaseRegistryDefinition\r\n ): Record<string, string> {\r\n return {\r\n variant: 'primary',\r\n size: 'md',\r\n };\r\n }\r\n\r\n /**\r\n * Get imports based on features\r\n */\r\n private getImports = (features: TierFeatures): string[] => {\r\n const imports: string[] = ['React'];\r\n\r\n if (features.useForwardRef === true) {\r\n imports.push('forwardRef');\r\n }\r\n\r\n if (features.useMemo === true) {\r\n imports.push('memo');\r\n }\r\n\r\n if (features.useCallback === true) {\r\n imports.push('useCallback');\r\n }\r\n\r\n return imports;\r\n };\r\n\r\n /**\r\n * Get ARIA attributes\r\n */\r\n private getAriaAttributes(\r\n this: TierGenerator,\r\n _definition: BaseRegistryDefinition\r\n ): Record<string, string> {\r\n return {\r\n role: 'region',\r\n 'aria-label': 'Component',\r\n };\r\n }\r\n\r\n /**\r\n * Capitalize first letter of string\r\n */\r\n private capitalizeFirst(this: TierGenerator, str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n}\r\n","/**\r\n * Types Generator\r\n * Generates TypeScript type definitions for components\r\n *\r\n * @packageDocumentation\r\n * @module ui-studio/templates/TypesGenerator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { ResolvedComponentConfig } from '../matrix/types';\r\n\r\n// ============================================================================\r\n// TYPES GENERATOR\r\n// ============================================================================\r\n\r\n/**\r\n * TypesGenerator\r\n *\r\n * Generates TypeScript type definition files for components\r\n * LOC breakdown by tier:\r\n * - Basic: ~20 LOC (basic interface only)\r\n * - Standard: ~35 LOC (+ variant/size types)\r\n * - Enterprise: ~50-80 LOC (+ event types, analytics types, state types)\r\n */\r\nexport class TypesGenerator {\r\n /**\r\n * Generate types file from resolved component configuration\r\n *\r\n * @param resolved - Resolved component configuration from Matrix\r\n * @returns TypeScript type definitions code\r\n */\r\n public generateFromResolvedConfig(resolved: ResolvedComponentConfig): string {\r\n const { tier, componentName } = resolved;\r\n\r\n switch (tier) {\r\n case 'basic':\r\n return this.generateBasicTypes(componentName);\r\n case 'standard':\r\n return this.generateStandardTypes(componentName);\r\n case 'enterprise':\r\n return this.generateEnterpriseTypes(componentName);\r\n default:\r\n return this.generateBasicTypes(componentName);\r\n }\r\n }\r\n\r\n // ==========================================================================\r\n // BASIC TIER TYPES (~20 LOC)\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate Basic tier types\r\n * - Basic props interface\r\n * - Children and className only\r\n */\r\n private generateBasicTypes(componentName: string): string {\r\n return `/**\r\n * ${componentName} Types - Basic tier\r\n *\r\n * Basic component props\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Basic props for ${componentName}\r\n */\r\nexport interface ${componentName}BasicProps {\r\n /** Child elements */\r\n readonly children?: React.ReactNode;\r\n /** Additional CSS classes */\r\n readonly className?: string;\r\n}\r\n`;\r\n }\r\n\r\n // ==========================================================================\r\n // STANDARD TIER TYPES (~35 LOC)\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate Standard tier types\r\n * - Props interface with variants\r\n * - Variant and size type unions\r\n */\r\n private generateStandardTypes(componentName: string): string {\r\n return `/**\r\n * ${componentName} Types - Standard tier\r\n *\r\n * Standard component props with variants and sizes\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Variant options for ${componentName}\r\n */\r\nexport type ${componentName}Variant = 'primary' | 'secondary' | 'outline';\r\n\r\n/**\r\n * Size options for ${componentName}\r\n */\r\nexport type ${componentName}Size = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Standard props for ${componentName}\r\n */\r\nexport interface ${componentName}StandardProps {\r\n /** Child elements */\r\n readonly children?: React.ReactNode;\r\n /** Additional CSS classes */\r\n readonly className?: string;\r\n /** Visual variant */\r\n readonly variant?: ${componentName}Variant;\r\n /** Component size */\r\n readonly size?: ${componentName}Size;\r\n}\r\n`;\r\n }\r\n\r\n // ==========================================================================\r\n // ENTERPRISE TIER TYPES (~50-80 LOC)\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate Enterprise tier types\r\n * - Comprehensive props interface\r\n * - Event handler types\r\n * - Analytics types\r\n * - State types\r\n * - Accessibility types\r\n */\r\n private generateEnterpriseTypes(componentName: string): string {\r\n return `/**\r\n * ${componentName} Types - Enterprise tier\r\n *\r\n * Enterprise-grade component props with full type safety\r\n *\r\n * Features:\r\n * - Comprehensive prop types\r\n * - Event handler types\r\n * - Analytics integration types\r\n * - Loading and error state types\r\n * - Full accessibility types\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Variant options for ${componentName}\r\n */\r\nexport type ${componentName}Variant = 'primary' | 'secondary' | 'outline';\r\n\r\n/**\r\n * Size options for ${componentName}\r\n */\r\nexport type ${componentName}Size = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Loading state type\r\n */\r\nexport type ${componentName}LoadingState = 'idle' | 'loading' | 'success' | 'error';\r\n\r\n/**\r\n * Analytics event data\r\n */\r\nexport interface ${componentName}AnalyticsEvent {\r\n /** Event name for analytics */\r\n readonly event: string;\r\n /** Event category */\r\n readonly category?: string;\r\n /** Event action */\r\n readonly action?: string;\r\n /** Additional event data */\r\n readonly data?: Record<string, unknown>;\r\n}\r\n\r\n/**\r\n * Event handler types\r\n */\r\nexport interface ${componentName}EventHandlers {\r\n /** Click handler */\r\n readonly onClick?: (event: React.MouseEvent<HTMLElement>) => void;\r\n /** Focus handler */\r\n readonly onFocus?: (event: React.FocusEvent<HTMLElement>) => void;\r\n /** Blur handler */\r\n readonly onBlur?: (event: React.FocusEvent<HTMLElement>) => void;\r\n /** Keyboard handler */\r\n readonly onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\r\n}\r\n\r\n/**\r\n * Enterprise props for ${componentName}\r\n */\r\nexport interface ${componentName}EnterpriseProps extends ${componentName}EventHandlers {\r\n /** Child elements */\r\n readonly children?: React.ReactNode;\r\n /** Additional CSS classes */\r\n readonly className?: string;\r\n /** Visual variant */\r\n readonly variant?: ${componentName}Variant;\r\n /** Component size */\r\n readonly size?: ${componentName}Size;\r\n /** Loading state */\r\n readonly loadingState?: ${componentName}LoadingState;\r\n /** Disabled state */\r\n readonly disabled?: boolean;\r\n /** Analytics event name */\r\n readonly analyticsEvent?: string;\r\n /** ARIA label for accessibility */\r\n readonly 'aria-label'?: string;\r\n /** ARIA described by */\r\n readonly 'aria-describedby'?: string;\r\n /** ARIA live region */\r\n readonly 'aria-live'?: 'polite' | 'assertive' | 'off';\r\n}\r\n`;\r\n }\r\n}\r\n","/**\r\n * Test Generator\r\n * Generates Vitest test files for components\r\n *\r\n * @packageDocumentation\r\n * @module ui-studio/templates/TestGenerator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { ResolvedComponentConfig } from '../matrix/types';\r\n\r\n// ============================================================================\r\n// TEST GENERATOR\r\n// ============================================================================\r\n\r\n/**\r\n * TestGenerator\r\n *\r\n * Generates Vitest test files for components\r\n * LOC breakdown by tier:\r\n * - Basic: ~40 LOC (basic rendering tests)\r\n * - Standard: ~70 LOC (+ variant/size tests)\r\n * - Enterprise: ~100-150 LOC (+ analytics, accessibility, state tests)\r\n */\r\nexport class TestGenerator {\r\n /**\r\n * Generate test file from resolved component configuration\r\n *\r\n * @param resolved - Resolved component configuration from Matrix\r\n * @returns Vitest test code\r\n */\r\n public generateFromResolvedConfig(resolved: ResolvedComponentConfig): string {\r\n const { tier, componentName } = resolved;\r\n\r\n switch (tier) {\r\n case 'basic':\r\n return this.generateBasicTests(componentName);\r\n case 'standard':\r\n return this.generateStandardTests(componentName);\r\n case 'enterprise':\r\n return this.generateEnterpriseTests(componentName);\r\n default:\r\n return this.generateBasicTests(componentName);\r\n }\r\n }\r\n\r\n // ==========================================================================\r\n // BASIC TIER TESTS (~40 LOC)\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate Basic tier tests\r\n * - Rendering test\r\n * - Children test\r\n * - ClassName test\r\n */\r\n private generateBasicTests(componentName: string): string {\r\n return `/**\r\n * ${componentName} Tests - Basic tier\r\n *\r\n * Basic component tests\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { describe, it, expect } from 'vitest';\r\nimport { render, screen } from '@testing-library/react';\r\nimport { ${componentName} } from './${componentName.toLowerCase()}';\r\n\r\ndescribe('${componentName}', () => {\r\n it('renders without crashing', () => {\r\n render(<${componentName}>Test</${componentName}>);\r\n expect(screen.getByText('Test')).toBeInTheDocument();\r\n });\r\n\r\n it('renders children correctly', () => {\r\n render(\r\n <${componentName}>\r\n <span>Child content</span>\r\n </${componentName}>\r\n );\r\n expect(screen.getByText('Child content')).toBeInTheDocument();\r\n });\r\n\r\n it('applies custom className', () => {\r\n const { container } = render(\r\n <${componentName} className=\"custom-class\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveClass('custom-class');\r\n });\r\n});\r\n`;\r\n }\r\n\r\n // ==========================================================================\r\n // STANDARD TIER TESTS (~70 LOC)\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate Standard tier tests\r\n * - All Basic tests\r\n * - Variant tests\r\n * - Size tests\r\n * - Ref forwarding test\r\n */\r\n private generateStandardTests(componentName: string): string {\r\n return `/**\r\n * ${componentName} Tests - Standard tier\r\n *\r\n * Standard component tests with variants and sizes\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { describe, it, expect } from 'vitest';\r\nimport { render, screen } from '@testing-library/react';\r\nimport { createRef } from 'react';\r\nimport { ${componentName} } from './${componentName.toLowerCase()}';\r\n\r\ndescribe('${componentName}', () => {\r\n it('renders without crashing', () => {\r\n render(<${componentName}>Test</${componentName}>);\r\n expect(screen.getByText('Test')).toBeInTheDocument();\r\n });\r\n\r\n it('renders children correctly', () => {\r\n render(\r\n <${componentName}>\r\n <span>Child content</span>\r\n </${componentName}>\r\n );\r\n expect(screen.getByText('Child content')).toBeInTheDocument();\r\n });\r\n\r\n it('applies custom className', () => {\r\n const { container } = render(\r\n <${componentName} className=\"custom-class\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveClass('custom-class');\r\n });\r\n\r\n it('renders with primary variant by default', () => {\r\n const { container } = render(<${componentName}>Test</${componentName}>);\r\n expect(container.firstChild).toHaveAttribute('data-variant', 'primary');\r\n });\r\n\r\n it('renders with secondary variant', () => {\r\n const { container } = render(\r\n <${componentName} variant=\"secondary\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('data-variant', 'secondary');\r\n });\r\n\r\n it('renders with outline variant', () => {\r\n const { container } = render(\r\n <${componentName} variant=\"outline\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('data-variant', 'outline');\r\n });\r\n\r\n it('renders with md size by default', () => {\r\n const { container } = render(<${componentName}>Test</${componentName}>);\r\n expect(container.firstChild).toHaveAttribute('data-size', 'md');\r\n });\r\n\r\n it('forwards ref correctly', () => {\r\n const ref = createRef<HTMLElement>();\r\n render(<${componentName} ref={ref}>Test</${componentName}>);\r\n expect(ref.current).toBeInstanceOf(HTMLElement);\r\n });\r\n});\r\n`;\r\n }\r\n\r\n // ==========================================================================\r\n // ENTERPRISE TIER TESTS (~100-150 LOC)\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate Enterprise tier tests\r\n * - All Standard tests\r\n * - Analytics tests\r\n * - Event handler tests\r\n * - Accessibility tests\r\n * - Loading state tests\r\n * - Memoization tests\r\n */\r\n private generateEnterpriseTests(componentName: string): string {\r\n return `/**\r\n * ${componentName} Tests - Enterprise tier\r\n *\r\n * Enterprise-grade component tests with full coverage\r\n *\r\n * Features:\r\n * - Rendering tests\r\n * - Variant and size tests\r\n * - Analytics integration tests\r\n * - Event handler tests\r\n * - Accessibility tests\r\n * - Loading state tests\r\n * - Performance tests (memoization)\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { describe, it, expect, vi, beforeEach } from 'vitest';\r\nimport { render, screen, fireEvent } from '@testing-library/react';\r\nimport { createRef } from 'react';\r\nimport { ${componentName} } from './${componentName.toLowerCase()}';\r\n\r\ndescribe('${componentName}', () => {\r\n beforeEach(() => {\r\n // Reset window.dataLayer before each test\r\n if (typeof window !== 'undefined') {\r\n (window as unknown as { dataLayer?: unknown[] }).dataLayer = [];\r\n }\r\n });\r\n\r\n describe('Rendering', () => {\r\n it('renders without crashing', () => {\r\n render(<${componentName}>Test</${componentName}>);\r\n expect(screen.getByText('Test')).toBeInTheDocument();\r\n });\r\n\r\n it('renders children correctly', () => {\r\n render(\r\n <${componentName}>\r\n <span>Child content</span>\r\n </${componentName}>\r\n );\r\n expect(screen.getByText('Child content')).toBeInTheDocument();\r\n });\r\n\r\n it('applies custom className', () => {\r\n const { container } = render(\r\n <${componentName} className=\"custom-class\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveClass('custom-class');\r\n });\r\n });\r\n\r\n describe('Variants', () => {\r\n it('renders with primary variant by default', () => {\r\n const { container } = render(<${componentName}>Test</${componentName}>);\r\n expect(container.firstChild).toHaveAttribute('data-variant', 'primary');\r\n });\r\n\r\n it('renders with secondary variant', () => {\r\n const { container } = render(\r\n <${componentName} variant=\"secondary\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('data-variant', 'secondary');\r\n });\r\n\r\n it('renders with outline variant', () => {\r\n const { container } = render(\r\n <${componentName} variant=\"outline\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('data-variant', 'outline');\r\n });\r\n });\r\n\r\n describe('Sizes', () => {\r\n it('renders with md size by default', () => {\r\n const { container } = render(<${componentName}>Test</${componentName}>);\r\n expect(container.firstChild).toHaveAttribute('data-size', 'md');\r\n });\r\n\r\n it('renders with sm size', () => {\r\n const { container } = render(\r\n <${componentName} size=\"sm\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('data-size', 'sm');\r\n });\r\n\r\n it('renders with lg size', () => {\r\n const { container } = render(\r\n <${componentName} size=\"lg\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('data-size', 'lg');\r\n });\r\n });\r\n\r\n describe('Analytics', () => {\r\n it('tracks analytics event on click', () => {\r\n const { container } = render(\r\n <${componentName} analyticsEvent=\"button_clicked\">Test</${componentName}>\r\n );\r\n\r\n const element = container.firstChild as HTMLElement;\r\n fireEvent.click(element);\r\n\r\n if (typeof window !== 'undefined') {\r\n const dataLayer = (window as unknown as { dataLayer?: unknown[] }).dataLayer;\r\n expect(dataLayer).toHaveLength(1);\r\n expect(dataLayer?.[0]).toEqual({\r\n event: 'button_clicked',\r\n category: 'component',\r\n action: 'click',\r\n });\r\n }\r\n });\r\n\r\n it('does not track analytics when event name not provided', () => {\r\n const { container } = render(<${componentName}>Test</${componentName}>);\r\n\r\n const element = container.firstChild as HTMLElement;\r\n fireEvent.click(element);\r\n\r\n if (typeof window !== 'undefined') {\r\n const dataLayer = (window as unknown as { dataLayer?: unknown[] }).dataLayer;\r\n expect(dataLayer).toHaveLength(0);\r\n }\r\n });\r\n });\r\n\r\n describe('Event Handlers', () => {\r\n it('calls onClick handler when clicked', () => {\r\n const handleClick = vi.fn();\r\n const { container } = render(\r\n <${componentName} onClick={handleClick}>Test</${componentName}>\r\n );\r\n\r\n const element = container.firstChild as HTMLElement;\r\n fireEvent.click(element);\r\n\r\n expect(handleClick).toHaveBeenCalledTimes(1);\r\n });\r\n });\r\n\r\n describe('Accessibility', () => {\r\n it('has correct ARIA label', () => {\r\n const { container } = render(\r\n <${componentName} aria-label=\"Test button\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('aria-label', 'Test button');\r\n });\r\n\r\n it('shows busy state when loading', () => {\r\n const { container } = render(\r\n <${componentName} loadingState=\"loading\">Test</${componentName}>\r\n );\r\n expect(container.firstChild).toHaveAttribute('aria-busy', 'true');\r\n });\r\n });\r\n\r\n describe('Ref Forwarding', () => {\r\n it('forwards ref correctly', () => {\r\n const ref = createRef<HTMLElement>();\r\n render(<${componentName} ref={ref}>Test</${componentName}>);\r\n expect(ref.current).toBeInstanceOf(HTMLElement);\r\n });\r\n });\r\n\r\n describe('Performance', () => {\r\n it('has displayName for React DevTools', () => {\r\n expect(${componentName}.displayName).toBe('${componentName}');\r\n });\r\n });\r\n});\r\n`;\r\n }\r\n}\r\n","/**\r\n * Component Generator - Orchestrator\r\n * Uses Matrix Multiplication system (M1×M2×M3×M4) for complete component generation\r\n *\r\n * @packageDocumentation\r\n * @module generators/ComponentGenerator\r\n * @since 4.0.0\r\n *\r\n * The ComponentGenerator is the main orchestrator that:\r\n * 1. Validates input (component, design system, tier)\r\n * 2. Uses MatrixResolver for M1×M2×M3×M4 multiplication\r\n * 3. Uses TemplateEngine for code generation\r\n * 4. Wraps output in legacy format for backward compatibility\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getComponentEntry } from './registries/components-registry';\r\nimport { getDesignSystemEntry, getDesignSystemCssVariables } from './registries/design-systems-registry';\r\nimport { getTierEntry } from './registries/tiers-registry';\r\n\r\nimport { FactorResolver } from './resolution/FactorResolver';\r\n\r\n// Matrix Multiplication system (System 3)\r\nimport { MatrixResolver } from './matrix/MatrixResolver';\r\nimport type { MatrixResolverInput, ResolvedComponentConfig } from './matrix/types';\r\n\r\n// TierGenerator for A+a+b pattern code generation\r\nimport { TierGenerator } from './templates/TierGenerator';\r\nimport { TypesGenerator } from './templates/TypesGenerator';\r\nimport { TestGenerator } from './templates/TestGenerator';\r\n\r\nimport type { Tier, DesignSystem, ComponentType } from '../types';\r\nimport type {\r\n GenerationInput,\r\n GenerationOutput,\r\n GenerationMetadata,\r\n FactorId,\r\n ResolvedFactors,\r\n} from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Style Output\r\n * Contains all style-related generation output\r\n */\r\nexport interface StyleOutput {\r\n /** Combined Tailwind classes */\r\n readonly tailwindClasses: string;\r\n /** CSS variables for theme integration */\r\n readonly cssVariables: Record<string, string>;\r\n /** Data attributes for state-based styling */\r\n readonly dataAttributes: string[];\r\n /** Generated theme CSS (@theme block for Tailwind v4) */\r\n readonly themeCss?: string;\r\n}\r\n\r\n/**\r\n * Code Output\r\n * Contains all code-related generation output\r\n */\r\nexport interface CodeOutput {\r\n /** Component code */\r\n readonly componentCode: string;\r\n /** Types file content (if requested) */\r\n readonly typesCode?: string;\r\n /** Test file content (if requested) */\r\n readonly testCode?: string;\r\n /** Storybook story content (if requested) */\r\n readonly storyCode?: string;\r\n}\r\n\r\n/**\r\n * Component Generation Result\r\n * Extended result including both code and style outputs\r\n */\r\nexport interface ComponentGenerationResult {\r\n /** Whether generation succeeded */\r\n readonly success: boolean;\r\n /** Error message if failed */\r\n readonly error?: string;\r\n /** Generated code output */\r\n readonly code: CodeOutput;\r\n /** Generated style output */\r\n readonly style: StyleOutput;\r\n /** Resolved factors used in generation */\r\n readonly resolvedFactors: ResolvedFactors;\r\n /** Generation metadata */\r\n readonly metadata: GenerationMetadata;\r\n}\r\n\r\n// ============================================================================\r\n// COMPONENT GENERATOR CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Component Generator\r\n *\r\n * Main orchestrator that uses Matrix Multiplication system (System 3)\r\n * for component generation with full backward compatibility.\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = new ComponentGenerator();\r\n *\r\n * const result = generator.generate({\r\n * componentType: 'button',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * factorOverrides: { 2: 'lg' }, // Override size\r\n * });\r\n *\r\n * console.log(result.code.componentCode); // 45 lines, clean code\r\n * console.log(result.style.tailwindClasses);\r\n * ```\r\n */\r\nexport class ComponentGenerator {\r\n private readonly factorResolver: FactorResolver;\r\n private readonly matrixResolver: MatrixResolver;\r\n private readonly tierGenerator: TierGenerator;\r\n private readonly typesGenerator: TypesGenerator;\r\n private readonly testGenerator: TestGenerator;\r\n\r\n /**\r\n * Create a new ComponentGenerator instance\r\n */\r\n constructor() {\r\n this.factorResolver = new FactorResolver();\r\n this.matrixResolver = new MatrixResolver();\r\n this.tierGenerator = new TierGenerator();\r\n this.typesGenerator = new TypesGenerator();\r\n this.testGenerator = new TestGenerator();\r\n }\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate a complete component with code and styles\r\n * REFACTORED to use Matrix Multiplication system (System 3)\r\n *\r\n * @param input - Generation input parameters\r\n * @returns Complete generation result with code and styles\r\n *\r\n * @remarks\r\n * Generation flow (NEW):\r\n * 1. Validate input (component, design system, tier)\r\n * 2. Convert to Matrix input format\r\n * 3. Resolve using MatrixResolver (M1×M2×M3×M4)\r\n * 4. Generate code using TemplateEngine\r\n * 5. Wrap in legacy format for backward compatibility\r\n */\r\n public generate(input: GenerationInput): ComponentGenerationResult {\r\n const { componentType, designSystem, tier } = input;\r\n\r\n try {\r\n // Step 1: Validate input\r\n const validation = this.validateInput(componentType, designSystem, tier);\r\n if (!validation.valid) {\r\n return this.createErrorResult(validation.error ?? 'Validation failed');\r\n }\r\n\r\n // Step 2: Convert to Matrix input format\r\n const matrixInput = this.convertToMatrixInput(input);\r\n\r\n // Step 3: Resolve component configuration using Matrix system\r\n const resolved = this.matrixResolver.resolve(matrixInput);\r\n\r\n // Step 4: Generate code using TierGenerator (A+a+b pattern)\r\n const componentCode = this.tierGenerator.generateFromResolvedConfig(resolved);\r\n\r\n // Step 5: Generate types using TypesGenerator\r\n const typesCode = this.typesGenerator.generateFromResolvedConfig(resolved);\r\n\r\n // Step 6: Generate tests using TestGenerator\r\n const testCode = this.testGenerator.generateFromResolvedConfig(resolved);\r\n\r\n // Step 7: Wrap in legacy format for backward compatibility\r\n return this.wrapInLegacyFormat(componentCode, typesCode, testCode, resolved, input);\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n return this.createErrorResult(errorMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Generate component output in the standard format\r\n *\r\n * @param input - Generation input\r\n * @returns GenerationOutput compatible with existing interfaces\r\n */\r\n public generateOutput(input: GenerationInput): GenerationOutput {\r\n const result = this.generate(input);\r\n\r\n if (!result.success) {\r\n throw new Error(result.error ?? 'Generation failed');\r\n }\r\n\r\n return {\r\n code: result.code.componentCode,\r\n styles: result.style.tailwindClasses,\r\n types: result.code.typesCode,\r\n tests: result.code.testCode,\r\n metadata: result.metadata,\r\n };\r\n }\r\n\r\n /**\r\n * Get Tailwind classes for a component configuration\r\n *\r\n * @param input - Generation input\r\n * @returns Tailwind class string\r\n */\r\n public getTailwindClasses(input: GenerationInput): string {\r\n const resolved = this.factorResolver.resolve({\r\n componentType: input.componentType,\r\n designSystem: input.designSystem,\r\n tier: input.tier,\r\n factorOverrides: input.factorOverrides,\r\n });\r\n\r\n return this.factorResolver.generateTailwindClasses(resolved);\r\n }\r\n\r\n /**\r\n * Get CSS variables for a component configuration\r\n *\r\n * @param input - Generation input\r\n * @returns CSS variables object\r\n */\r\n public getCssVariables(input: GenerationInput): Record<string, string> {\r\n const resolved = this.factorResolver.resolve({\r\n componentType: input.componentType,\r\n designSystem: input.designSystem,\r\n tier: input.tier,\r\n factorOverrides: input.factorOverrides,\r\n });\r\n\r\n const factorVars = this.factorResolver.generateCssVariables(resolved);\r\n const dsVars = getDesignSystemCssVariables(input.designSystem);\r\n\r\n return { ...dsVars, ...factorVars };\r\n }\r\n\r\n /**\r\n * Get data attributes for a component configuration\r\n *\r\n * @param input - Generation input\r\n * @returns Array of data attribute strings\r\n */\r\n public getDataAttributes(input: GenerationInput): string[] {\r\n const resolved = this.factorResolver.resolve({\r\n componentType: input.componentType,\r\n designSystem: input.designSystem,\r\n tier: input.tier,\r\n factorOverrides: input.factorOverrides,\r\n });\r\n\r\n return this.buildDataAttributes(resolved);\r\n }\r\n\r\n /**\r\n * Generate theme CSS for Tailwind v4 @theme block\r\n *\r\n * @param designSystem - Design system to generate theme for\r\n * @returns CSS string with @theme block\r\n */\r\n public generateThemeCss(designSystem: DesignSystem): string {\r\n const cssVars = getDesignSystemCssVariables(designSystem);\r\n const dsEntry = getDesignSystemEntry(designSystem);\r\n\r\n const lines: string[] = [];\r\n lines.push(`/* Generated theme for ${dsEntry?.name ?? designSystem} */`);\r\n lines.push('@theme {');\r\n\r\n for (const [name, value] of Object.entries(cssVars)) {\r\n lines.push(` ${name}: ${value};`);\r\n }\r\n\r\n lines.push('}');\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n /**\r\n * Validate generation input\r\n *\r\n * @param componentType - Component type\r\n * @param designSystem - Design system\r\n * @param tier - Quality tier\r\n * @returns Validation result\r\n */\r\n public validateInput(\r\n componentType: ComponentType,\r\n designSystem: DesignSystem,\r\n tier: Tier\r\n ): { valid: boolean; error?: string } {\r\n // Validate component exists\r\n const componentEntry = getComponentEntry(componentType);\r\n if (componentEntry === undefined) {\r\n return {\r\n valid: false,\r\n error: `Invalid component type: ${componentType}`,\r\n };\r\n }\r\n\r\n // Validate design system exists\r\n const dsEntry = getDesignSystemEntry(designSystem);\r\n if (dsEntry === undefined) {\r\n return {\r\n valid: false,\r\n error: `Invalid design system: ${designSystem}`,\r\n };\r\n }\r\n\r\n // Validate tier exists\r\n const tierEntry = getTierEntry(tier);\r\n if (tierEntry === undefined) {\r\n return {\r\n valid: false,\r\n error: `Invalid tier: ${tier}`,\r\n };\r\n }\r\n\r\n // Validate component supports the requested design system\r\n if (!componentEntry.designSystems.includes(designSystem)) {\r\n return {\r\n valid: false,\r\n error:\r\n `Component '${componentType}' does not support design system '${designSystem}'. ` +\r\n `Supported: ${componentEntry.designSystems.join(', ')}`,\r\n };\r\n }\r\n\r\n // Validate component supports the requested tier\r\n if (!componentEntry.tiers.includes(tier)) {\r\n return {\r\n valid: false,\r\n error:\r\n `Component '${componentType}' does not support tier '${tier}'. ` +\r\n `Supported: ${componentEntry.tiers.join(', ')}`,\r\n };\r\n }\r\n\r\n return { valid: true };\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - STYLE GENERATION\r\n // ==========================================================================\r\n\r\n /**\r\n * Build data attributes for Hybrid integration\r\n */\r\n private buildDataAttributes(resolved: ResolvedFactors): string[] {\r\n const attributes: string[] = [];\r\n\r\n for (const [factorId, factorValue] of resolved.appliedFactors) {\r\n const attrName = this.getDataAttributeName(factorId);\r\n attributes.push(`data-${attrName}=\"${factorValue.value}\"`);\r\n }\r\n\r\n return attributes;\r\n }\r\n\r\n /**\r\n * Get data attribute name for a factor\r\n *\r\n * @param factorId - Factor ID (1-24)\r\n * @returns Data attribute name (e.g., 'color', 'size') or 'factor-N' fallback for unknown IDs\r\n */\r\n public getDataAttributeName(factorId: FactorId): string {\r\n const factorNames: Record<FactorId, string> = {\r\n 1: 'color',\r\n 2: 'size',\r\n 3: 'variant',\r\n 4: 'shape',\r\n 5: 'position',\r\n 6: 'icon-position',\r\n 7: 'state',\r\n 8: 'animation',\r\n 9: 'elevation',\r\n 10: 'a11y',\r\n 11: 'alignment',\r\n 12: 'orientation',\r\n 13: 'density',\r\n 14: 'loading',\r\n 15: 'responsive',\r\n 16: 'theme',\r\n 17: 'spacing',\r\n 18: 'typography',\r\n 19: 'border',\r\n 20: 'opacity',\r\n 21: 'overflow',\r\n 22: 'cursor',\r\n 23: 'z-index',\r\n 24: 'transition',\r\n };\r\n\r\n return factorNames[factorId] ?? `factor-${factorId}`;\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - MATRIX CONVERSION\r\n // ==========================================================================\r\n\r\n /**\r\n * Convert GenerationInput → MatrixResolverInput\r\n * Translates legacy API format to Matrix system format\r\n *\r\n * @param input - Legacy generation input\r\n * @returns Matrix resolver input\r\n */\r\n private convertToMatrixInput(input: GenerationInput): MatrixResolverInput {\r\n const { componentType, designSystem, tier, factorOverrides } = input;\r\n\r\n return {\r\n componentId: componentType, // componentType → componentId\r\n designSystem, // Same field\r\n tier, // Same field\r\n factor24Config: factorOverrides as MatrixResolverInput['factor24Config'], // factorOverrides → factor24Config\r\n };\r\n }\r\n\r\n /**\r\n * Wrap Matrix output → ComponentGenerationResult (legacy format)\r\n * Maintains backward compatibility with existing API consumers\r\n *\r\n * @param componentCode - Generated TypeScript component code\r\n * @param typesCode - Generated TypeScript types code\r\n * @param testCode - Generated test code\r\n * @param resolved - Resolved component configuration from Matrix\r\n * @param input - Original generation input (for metadata)\r\n * @returns Legacy-format generation result\r\n */\r\n private wrapInLegacyFormat(\r\n componentCode: string,\r\n typesCode: string,\r\n testCode: string,\r\n resolved: ResolvedComponentConfig,\r\n input: GenerationInput\r\n ): ComponentGenerationResult {\r\n // Extract Tailwind classes from Matrix result\r\n const tailwindClasses = resolved.classNames.join(' ');\r\n\r\n // Calculate total LOC (component + types + test)\r\n const componentLOC = componentCode.split('\\n').length;\r\n const typesLOC = typesCode.split('\\n').length;\r\n const testLOC = testCode.split('\\n').length;\r\n const totalLOC = componentLOC + typesLOC + testLOC;\r\n\r\n // Build metadata with total LOC\r\n const componentName = this.formatComponentName(\r\n input.componentType,\r\n input.designSystem,\r\n input.tier\r\n );\r\n const metadata: GenerationMetadata = {\r\n componentName,\r\n displayName: componentName,\r\n factorsApplied: [],\r\n linesOfCode: totalLOC,\r\n generatedAt: new Date(),\r\n };\r\n\r\n return {\r\n success: true,\r\n code: {\r\n componentCode,\r\n typesCode,\r\n testCode,\r\n storyCode: undefined, // Stories not implemented yet\r\n },\r\n style: {\r\n tailwindClasses,\r\n cssVariables: {}, // Matrix uses inline styles, not CSS vars\r\n dataAttributes: [], // Matrix uses single data attrs in JSX\r\n themeCss: undefined, // No separate theme CSS\r\n },\r\n resolvedFactors: {\r\n tier: input.tier,\r\n appliedFactors: new Map(),\r\n skippedFactors: [],\r\n overriddenFactors: [],\r\n },\r\n metadata,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - METADATA\r\n // ==========================================================================\r\n\r\n\r\n /**\r\n * Format component name from type, design system, and tier\r\n */\r\n private formatComponentName(\r\n componentType: ComponentType,\r\n designSystem: DesignSystem,\r\n tier: Tier\r\n ): string {\r\n const dsFormatted = designSystem\r\n .split('-')\r\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\r\n .join('');\r\n\r\n const componentFormatted = componentType\r\n .split('-')\r\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\r\n .join('');\r\n\r\n const tierFormatted = tier.charAt(0).toUpperCase() + tier.slice(1);\r\n\r\n return `${dsFormatted}${componentFormatted}${tierFormatted}`;\r\n }\r\n\r\n /**\r\n * Create error result\r\n */\r\n private createErrorResult(error: string): ComponentGenerationResult {\r\n return {\r\n success: false,\r\n error,\r\n code: {\r\n componentCode: '',\r\n },\r\n style: {\r\n tailwindClasses: '',\r\n cssVariables: {},\r\n dataAttributes: [],\r\n },\r\n resolvedFactors: {\r\n tier: 'basic',\r\n appliedFactors: new Map(),\r\n skippedFactors: [],\r\n overriddenFactors: [],\r\n },\r\n metadata: {\r\n componentName: '',\r\n displayName: '',\r\n factorsApplied: [],\r\n linesOfCode: 0,\r\n generatedAt: new Date(),\r\n },\r\n };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new ComponentGenerator instance\r\n *\r\n * @returns New ComponentGenerator instance\r\n */\r\nexport function createComponentGenerator(): ComponentGenerator {\r\n return new ComponentGenerator();\r\n}\r\n\r\n/**\r\n * Generate a component with default options (convenience wrapper)\r\n *\r\n * @param input - Generation input\r\n * @returns Component generation result\r\n */\r\nexport function generateComponent(input: GenerationInput): ComponentGenerationResult {\r\n const generator = new ComponentGenerator();\r\n return generator.generate(input);\r\n}\r\n\r\n/**\r\n * Generate a component and return standard output format\r\n *\r\n * @param input - Generation input\r\n * @returns GenerationOutput\r\n */\r\nexport function generateComponentOutput(input: GenerationInput): GenerationOutput {\r\n const generator = new ComponentGenerator();\r\n return generator.generateOutput(input);\r\n}\r\n","/**\r\n * Factor Propagator\r\n * Propagates 13 section factors to child components\r\n *\r\n * @packageDocumentation\r\n * @module generators/FactorPropagator\r\n * @since 4.0.0\r\n *\r\n * The FactorPropagator:\r\n * 1. Takes 13 SectionFactors\r\n * 2. Maps factors to component props\r\n * 3. Filters factors by tier availability\r\n * 4. Generates CSS variables and data attributes\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getFactorsForTier, isFactorEnabledForTier } from '../registries/tiers-registry';\r\n\r\nimport type { Tier } from '../../types';\r\nimport type { FactorId } from '../../types/algorithm-engine.types';\r\nimport type { SectionFactors, TypographyScale, RadiusLevel, ElevationLevel, SpacingLevel, AlignmentType } from '../../types/section.types';\r\ntype MaxWidthLevel = string;\r\ntype AnimationPreset = string;\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Factor to prop mapping definition\r\n */\r\nexport interface FactorPropMapping {\r\n /** Factor name (from SectionFactors) */\r\n readonly factorName: keyof SectionFactors;\r\n /** Component prop name */\r\n readonly propName: string;\r\n /** CSS variable name */\r\n readonly cssVariable: string;\r\n /** Data attribute name */\r\n readonly dataAttribute: string;\r\n /** Tailwind class prefix */\r\n readonly tailwindPrefix?: string;\r\n /** Factor ID (1-24) for tier filtering */\r\n readonly factorId: FactorId;\r\n /** Factor category */\r\n readonly category: 'visual' | 'layout' | 'behavior';\r\n}\r\n\r\n/**\r\n * Propagated factor result\r\n */\r\nexport interface PropagatedFactor {\r\n /** Factor name */\r\n readonly name: string;\r\n /** Factor value */\r\n readonly value: string;\r\n /** Mapped prop name */\r\n readonly propName: string;\r\n /** CSS variable */\r\n readonly cssVariable: string;\r\n /** Data attribute */\r\n readonly dataAttribute: string;\r\n /** Generated Tailwind class (if applicable) */\r\n readonly tailwindClass?: string;\r\n /** Whether factor is enabled for the tier */\r\n readonly enabledForTier: boolean;\r\n}\r\n\r\n/**\r\n * Factor propagation result\r\n */\r\nexport interface FactorPropagationResult {\r\n /** All propagated factors */\r\n readonly factors: readonly PropagatedFactor[];\r\n /** Factors enabled for tier */\r\n readonly enabledFactors: readonly PropagatedFactor[];\r\n /** Factors disabled for tier */\r\n readonly disabledFactors: readonly PropagatedFactor[];\r\n /** Props object for component */\r\n readonly props: Record<string, unknown>;\r\n /** CSS variables object */\r\n readonly cssVariables: Record<string, string>;\r\n /** Data attributes array */\r\n readonly dataAttributes: readonly string[];\r\n /** Tailwind classes string */\r\n readonly tailwindClasses: string;\r\n}\r\n\r\n/**\r\n * Factor propagation input\r\n */\r\nexport interface FactorPropagationInput {\r\n /** Section factors (13 factors) */\r\n readonly factors: SectionFactors;\r\n /** Quality tier for filtering */\r\n readonly tier: Tier;\r\n /** Component type (for specific mappings) */\r\n readonly componentType?: string;\r\n /** Override specific factor mappings */\r\n readonly mappingOverrides?: Partial<Record<keyof SectionFactors, string>>;\r\n}\r\n\r\n/**\r\n * Factor propagator options\r\n */\r\nexport interface FactorPropagatorOptions {\r\n /** Include disabled factors in output */\r\n readonly includeDisabled?: boolean;\r\n /** Prefix for CSS variables */\r\n readonly cssVariablePrefix?: string;\r\n /** Prefix for data attributes */\r\n readonly dataAttributePrefix?: string;\r\n /** Generate Tailwind classes */\r\n readonly generateTailwind?: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR MAPPINGS - 13 Section Factors\r\n// ============================================================================\r\n\r\n/**\r\n * Complete mapping of 13 section factors to component props\r\n *\r\n * @remarks\r\n * Each section factor maps to:\r\n * - Component prop name\r\n * - CSS variable\r\n * - Data attribute\r\n * - Optional Tailwind prefix\r\n */\r\nexport const SECTION_FACTOR_MAPPINGS: readonly FactorPropMapping[] = [\r\n // Visual Factors (6)\r\n {\r\n factorName: 'colorPrimary',\r\n propName: 'colorPrimary',\r\n cssVariable: '--section-color-primary',\r\n dataAttribute: 'data-color-primary',\r\n factorId: 1,\r\n category: 'visual',\r\n },\r\n {\r\n factorName: 'colorText',\r\n propName: 'colorText',\r\n cssVariable: '--section-color-text',\r\n dataAttribute: 'data-color-text',\r\n factorId: 1,\r\n category: 'visual',\r\n },\r\n {\r\n factorName: 'colorBackground',\r\n propName: 'colorBackground',\r\n cssVariable: '--section-color-background',\r\n dataAttribute: 'data-color-background',\r\n factorId: 1,\r\n category: 'visual',\r\n },\r\n {\r\n factorName: 'typography',\r\n propName: 'typography',\r\n cssVariable: '--section-typography',\r\n dataAttribute: 'data-typography',\r\n tailwindPrefix: 'text',\r\n factorId: 18,\r\n category: 'visual',\r\n },\r\n {\r\n factorName: 'borderRadius',\r\n propName: 'borderRadius',\r\n cssVariable: '--section-border-radius',\r\n dataAttribute: 'data-border-radius',\r\n tailwindPrefix: 'rounded',\r\n factorId: 4,\r\n category: 'visual',\r\n },\r\n {\r\n factorName: 'elevation',\r\n propName: 'elevation',\r\n cssVariable: '--section-elevation',\r\n dataAttribute: 'data-elevation',\r\n tailwindPrefix: 'shadow',\r\n factorId: 9,\r\n category: 'visual',\r\n },\r\n\r\n // Layout Factors (4)\r\n {\r\n factorName: 'padding',\r\n propName: 'padding',\r\n cssVariable: '--section-padding',\r\n dataAttribute: 'data-padding',\r\n tailwindPrefix: 'p',\r\n factorId: 17,\r\n category: 'layout',\r\n },\r\n {\r\n factorName: 'gap',\r\n propName: 'gap',\r\n cssVariable: '--section-gap',\r\n dataAttribute: 'data-gap',\r\n tailwindPrefix: 'gap',\r\n factorId: 17,\r\n category: 'layout',\r\n },\r\n {\r\n factorName: 'alignment',\r\n propName: 'alignment',\r\n cssVariable: '--section-alignment',\r\n dataAttribute: 'data-alignment',\r\n factorId: 11,\r\n category: 'layout',\r\n },\r\n {\r\n factorName: 'maxWidth',\r\n propName: 'maxWidth',\r\n cssVariable: '--section-max-width',\r\n dataAttribute: 'data-max-width',\r\n tailwindPrefix: 'max-w',\r\n factorId: 15,\r\n category: 'layout',\r\n },\r\n\r\n // Behavior Factors (3)\r\n {\r\n factorName: 'animation',\r\n propName: 'animation',\r\n cssVariable: '--section-animation',\r\n dataAttribute: 'data-animation',\r\n tailwindPrefix: 'animate',\r\n factorId: 8,\r\n category: 'behavior',\r\n },\r\n {\r\n factorName: 'responsive',\r\n propName: 'responsive',\r\n cssVariable: '--section-responsive',\r\n dataAttribute: 'data-responsive',\r\n factorId: 15,\r\n category: 'behavior',\r\n },\r\n {\r\n factorName: 'a11yLevel',\r\n propName: 'a11yLevel',\r\n cssVariable: '--section-a11y-level',\r\n dataAttribute: 'data-a11y',\r\n factorId: 10,\r\n category: 'behavior',\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// TAILWIND MAPPINGS\r\n// ============================================================================\r\n\r\n/**\r\n * Typography scale to Tailwind classes\r\n */\r\nconst TYPOGRAPHY_TAILWIND: Record<TypographyScale, string> = {\r\n compact: 'text-sm leading-tight',\r\n default: 'text-base leading-normal',\r\n relaxed: 'text-base leading-relaxed',\r\n spacious: 'text-lg leading-loose',\r\n};\r\n\r\n/**\r\n * Border radius to Tailwind classes\r\n */\r\nconst RADIUS_TAILWIND: Record<RadiusLevel, string> = {\r\n none: 'rounded-none',\r\n sm: 'rounded-sm',\r\n md: 'rounded-md',\r\n lg: 'rounded-lg',\r\n xl: 'rounded-xl',\r\n full: 'rounded-full',\r\n};\r\n\r\n/**\r\n * Elevation to Tailwind classes\r\n */\r\nconst ELEVATION_TAILWIND: Record<ElevationLevel, string> = {\r\n none: 'shadow-none',\r\n sm: 'shadow-sm',\r\n md: 'shadow-md',\r\n lg: 'shadow-lg',\r\n xl: 'shadow-xl',\r\n};\r\n\r\n/**\r\n * Spacing to Tailwind padding classes\r\n */\r\nconst PADDING_TAILWIND: Record<SpacingLevel, string> = {\r\n none: 'p-0',\r\n xs: 'p-1',\r\n sm: 'p-2',\r\n md: 'p-4',\r\n lg: 'p-6',\r\n xl: 'p-8',\r\n '2xl': 'p-12',\r\n};\r\n\r\n/**\r\n * Spacing to Tailwind gap classes\r\n */\r\nconst GAP_TAILWIND: Record<SpacingLevel, string> = {\r\n none: 'gap-0',\r\n xs: 'gap-1',\r\n sm: 'gap-2',\r\n md: 'gap-4',\r\n lg: 'gap-6',\r\n xl: 'gap-8',\r\n '2xl': 'gap-12',\r\n};\r\n\r\n/**\r\n * Alignment to Tailwind classes\r\n */\r\nconst ALIGNMENT_TAILWIND: Record<AlignmentType, string> = {\r\n start: 'items-start justify-start',\r\n center: 'items-center justify-center',\r\n end: 'items-end justify-end',\r\n stretch: 'items-stretch',\r\n between: 'items-center justify-between',\r\n};\r\n\r\n/**\r\n * Max width to Tailwind classes\r\n */\r\nconst MAX_WIDTH_TAILWIND: Record<MaxWidthLevel, string> = {\r\n sm: 'max-w-sm',\r\n md: 'max-w-md',\r\n lg: 'max-w-lg',\r\n xl: 'max-w-xl',\r\n '2xl': 'max-w-2xl',\r\n full: 'max-w-full',\r\n};\r\n\r\n/**\r\n * Animation to Tailwind classes\r\n */\r\nconst ANIMATION_TAILWIND: Record<AnimationPreset, string> = {\r\n none: '',\r\n subtle: 'transition-opacity duration-150',\r\n smooth: 'transition-all duration-300',\r\n dynamic: 'transition-all duration-500 ease-out',\r\n playful: 'transition-all duration-300 ease-bounce',\r\n};\r\n\r\n// ============================================================================\r\n// FACTOR PROPAGATOR CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Factor Propagator\r\n *\r\n * Propagates 13 section factors to child components with tier-based filtering.\r\n * Maps factors to props, CSS variables, data attributes, and Tailwind classes.\r\n *\r\n * @example\r\n * ```typescript\r\n * const propagator = new FactorPropagator();\r\n *\r\n * const result = propagator.propagate({\r\n * factors: {\r\n * colorPrimary: '#2196f3',\r\n * colorText: '#1a1a1a',\r\n * colorBackground: '#ffffff',\r\n * typography: 'default',\r\n * borderRadius: 'md',\r\n * elevation: 'sm',\r\n * padding: 'lg',\r\n * gap: 'md',\r\n * alignment: 'center',\r\n * maxWidth: 'xl',\r\n * animation: 'smooth',\r\n * responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n * a11yLevel: 'enhanced',\r\n * },\r\n * tier: 'enterprise',\r\n * });\r\n *\r\n * console.log(result.props);\r\n * console.log(result.tailwindClasses);\r\n * ```\r\n */\r\nexport class FactorPropagator {\r\n private readonly options: Required<FactorPropagatorOptions>;\r\n\r\n /**\r\n * Create a new FactorPropagator instance\r\n *\r\n * @param options - Propagator options\r\n */\r\n constructor(options: FactorPropagatorOptions = {}) {\r\n this.options = {\r\n includeDisabled: false,\r\n cssVariablePrefix: '--section',\r\n dataAttributePrefix: 'data',\r\n generateTailwind: true,\r\n ...options,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Propagate factors to component props\r\n *\r\n * @param input - Factor propagation input\r\n * @returns Factor propagation result\r\n */\r\n public propagate(input: FactorPropagationInput): FactorPropagationResult {\r\n const { factors, tier, mappingOverrides } = input;\r\n\r\n // Get enabled factor IDs for tier\r\n const enabledFactorIds = new Set(getFactorsForTier(tier));\r\n\r\n // Propagate each factor\r\n const propagatedFactors: PropagatedFactor[] = [];\r\n\r\n for (const mapping of SECTION_FACTOR_MAPPINGS) {\r\n const factorValue = factors[mapping.factorName];\r\n const enabledForTier = isFactorEnabledForTier(tier, mapping.factorId);\r\n\r\n // Get prop name (use override if provided)\r\n const propName = mappingOverrides?.[mapping.factorName] ?? mapping.propName;\r\n\r\n // Convert value to string for attributes\r\n const valueString = this.valueToString(factorValue);\r\n\r\n // Generate Tailwind class if applicable\r\n const tailwindClass = this.options.generateTailwind\r\n ? this.getTailwindClass(mapping.factorName, factorValue)\r\n : undefined;\r\n\r\n propagatedFactors.push({\r\n name: mapping.factorName,\r\n value: valueString,\r\n propName,\r\n cssVariable: mapping.cssVariable,\r\n dataAttribute: mapping.dataAttribute,\r\n tailwindClass,\r\n enabledForTier,\r\n });\r\n }\r\n\r\n // Filter enabled/disabled factors\r\n const enabledFactors = propagatedFactors.filter((f) => f.enabledForTier);\r\n const disabledFactors = propagatedFactors.filter((f) => !f.enabledForTier);\r\n\r\n // Build props object (only enabled factors unless includeDisabled)\r\n const factorsToUse = this.options.includeDisabled ? propagatedFactors : enabledFactors;\r\n const props = this.buildPropsObject(factorsToUse, factors);\r\n\r\n // Build CSS variables\r\n const cssVariables = this.buildCssVariables(factorsToUse);\r\n\r\n // Build data attributes\r\n const dataAttributes = this.buildDataAttributes(factorsToUse);\r\n\r\n // Build Tailwind classes\r\n const tailwindClasses = this.buildTailwindClasses(factorsToUse);\r\n\r\n // Note: enabledFactorIds used for tier filtering above\r\n void enabledFactorIds;\r\n\r\n return {\r\n factors: propagatedFactors,\r\n enabledFactors,\r\n disabledFactors,\r\n props,\r\n cssVariables,\r\n dataAttributes,\r\n tailwindClasses,\r\n };\r\n }\r\n\r\n /**\r\n * Get factors enabled for a specific tier\r\n *\r\n * @param tier - Quality tier\r\n * @returns Factor IDs enabled for tier\r\n */\r\n public getFactorsForTier(tier: Tier): readonly FactorId[] {\r\n return getFactorsForTier(tier);\r\n }\r\n\r\n /**\r\n * Check if a factor is enabled for a tier\r\n *\r\n * @param factorName - Factor name\r\n * @param tier - Quality tier\r\n * @returns Whether factor is enabled\r\n */\r\n public isFactorEnabled(factorName: keyof SectionFactors, tier: Tier): boolean {\r\n const mapping = SECTION_FACTOR_MAPPINGS.find((m) => m.factorName === factorName);\r\n if (mapping === undefined) {\r\n return false;\r\n }\r\n return isFactorEnabledForTier(tier, mapping.factorId);\r\n }\r\n\r\n /**\r\n * Get all factor mappings\r\n *\r\n * @returns All 13 factor mappings\r\n */\r\n public getAllMappings(): readonly FactorPropMapping[] {\r\n return SECTION_FACTOR_MAPPINGS;\r\n }\r\n\r\n /**\r\n * Get mappings by category\r\n *\r\n * @param category - Factor category\r\n * @returns Factor mappings in category\r\n */\r\n public getMappingsByCategory(\r\n category: 'visual' | 'layout' | 'behavior'\r\n ): readonly FactorPropMapping[] {\r\n return SECTION_FACTOR_MAPPINGS.filter((m) => m.category === category);\r\n }\r\n\r\n /**\r\n * Get Tailwind class for a factor value\r\n *\r\n * @param factorName - Factor name\r\n * @param value - Factor value\r\n * @returns Tailwind class or undefined\r\n */\r\n public getTailwindClass(factorName: keyof SectionFactors, value: unknown): string | undefined {\r\n switch (factorName) {\r\n case 'typography':\r\n return TYPOGRAPHY_TAILWIND[value as TypographyScale];\r\n case 'borderRadius':\r\n return RADIUS_TAILWIND[value as RadiusLevel];\r\n case 'elevation':\r\n return ELEVATION_TAILWIND[value as ElevationLevel];\r\n case 'padding':\r\n return PADDING_TAILWIND[value as SpacingLevel];\r\n case 'gap':\r\n return GAP_TAILWIND[value as SpacingLevel];\r\n case 'alignment':\r\n return ALIGNMENT_TAILWIND[value as AlignmentType];\r\n case 'maxWidth':\r\n return MAX_WIDTH_TAILWIND[value as MaxWidthLevel];\r\n case 'animation':\r\n return ANIMATION_TAILWIND[value as AnimationPreset];\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Map a single factor to component prop\r\n *\r\n * @param factorName - Factor name\r\n * @param value - Factor value\r\n * @returns Mapped prop object\r\n */\r\n public mapFactorToProp(\r\n factorName: keyof SectionFactors,\r\n value: unknown\r\n ): { propName: string; value: unknown } | undefined {\r\n const mapping = SECTION_FACTOR_MAPPINGS.find((m) => m.factorName === factorName);\r\n if (mapping === undefined) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n propName: mapping.propName,\r\n value,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Convert a value to string representation\r\n */\r\n private valueToString(value: unknown): string {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n if (typeof value === 'object' && value !== null) {\r\n return JSON.stringify(value);\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Build props object from propagated factors\r\n */\r\n private buildPropsObject(\r\n factors: readonly PropagatedFactor[],\r\n originalFactors: SectionFactors\r\n ): Record<string, unknown> {\r\n const props: Record<string, unknown> = {};\r\n\r\n for (const factor of factors) {\r\n // Use original value to preserve type (object for responsive, etc.)\r\n const originalValue = originalFactors[factor.name as keyof SectionFactors];\r\n props[factor.propName] = originalValue;\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /**\r\n * Build CSS variables object\r\n */\r\n private buildCssVariables(factors: readonly PropagatedFactor[]): Record<string, string> {\r\n const cssVars: Record<string, string> = {};\r\n\r\n for (const factor of factors) {\r\n cssVars[factor.cssVariable] = factor.value;\r\n }\r\n\r\n return cssVars;\r\n }\r\n\r\n /**\r\n * Build data attributes array\r\n */\r\n private buildDataAttributes(factors: readonly PropagatedFactor[]): readonly string[] {\r\n return factors.map((factor) => `${factor.dataAttribute}=\"${factor.value}\"`);\r\n }\r\n\r\n /**\r\n * Build Tailwind classes string\r\n */\r\n private buildTailwindClasses(factors: readonly PropagatedFactor[]): string {\r\n const classes = factors\r\n .map((f) => f.tailwindClass)\r\n .filter((c): c is string => c !== undefined && c !== '');\r\n\r\n return classes.join(' ');\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new FactorPropagator instance\r\n *\r\n * @param options - Propagator options\r\n * @returns New FactorPropagator instance\r\n */\r\nexport function createFactorPropagator(options: FactorPropagatorOptions = {}): FactorPropagator {\r\n return new FactorPropagator(options);\r\n}\r\n\r\n/**\r\n * Propagate factors (convenience wrapper)\r\n *\r\n * @param input - Factor propagation input\r\n * @returns Factor propagation result\r\n */\r\nexport function propagateFactors(input: FactorPropagationInput): FactorPropagationResult {\r\n const propagator = new FactorPropagator();\r\n return propagator.propagate(input);\r\n}\r\n\r\n/**\r\n * Get Tailwind classes for section factors (convenience wrapper)\r\n *\r\n * @param factors - Section factors\r\n * @param tier - Quality tier\r\n * @returns Tailwind classes string\r\n */\r\nexport function getFactorTailwindClasses(factors: SectionFactors, tier: Tier): string {\r\n const propagator = new FactorPropagator();\r\n const result = propagator.propagate({ factors, tier });\r\n return result.tailwindClasses;\r\n}\r\n\r\n/**\r\n * Get CSS variables for section factors (convenience wrapper)\r\n *\r\n * @param factors - Section factors\r\n * @param tier - Quality tier\r\n * @returns CSS variables object\r\n */\r\nexport function getFactorCssVariables(factors: SectionFactors, tier: Tier): Record<string, string> {\r\n const propagator = new FactorPropagator();\r\n const result = propagator.propagate({ factors, tier });\r\n return result.cssVariables;\r\n}\r\n\r\n/**\r\n * Map factors to component props (convenience wrapper)\r\n *\r\n * @param factors - Section factors\r\n * @param tier - Quality tier\r\n * @returns Props object\r\n */\r\nexport function mapFactorsToProps(factors: SectionFactors, tier: Tier): Record<string, unknown> {\r\n const propagator = new FactorPropagator();\r\n const result = propagator.propagate({ factors, tier });\r\n return result.props;\r\n}\r\n","/**\r\n * Section Generator\r\n * Coordinates ComponentGenerator calls for each slot in a section\r\n *\r\n * @packageDocumentation\r\n * @module generators/section-generator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { createComponentGenerator } from '../ComponentGenerator';\r\nimport { createFactorPropagator } from './FactorPropagator';\r\n\r\nimport type {\r\n SectionConfig,\r\n SectionFactors,\r\n SlotConfig,\r\n StoredComponentInSlot,\r\n ComponentType,\r\n DesignSystem,\r\n Tier,\r\n} from '../types';\r\nimport type { ComponentGenerator, ComponentGenerationResult } from '../ComponentGenerator';\r\nimport type { FactorPropagator } from './FactorPropagator';\r\nimport type { GenerationInput, ResolvedFactors } from '../../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// INTERFACES\r\n// ============================================================================\r\n\r\n/**\r\n * Input for section generation\r\n *\r\n * @remarks\r\n * Contains all information needed to generate components\r\n * for a section including config, factors, and slot definitions.\r\n */\r\nexport interface SectionGenerationInput {\r\n /** Section configuration (14 fields) */\r\n readonly sectionConfig: SectionConfig;\r\n /** Section factors (13 factors) */\r\n readonly sectionFactors: SectionFactors;\r\n /** Slot configurations */\r\n readonly slots: readonly SlotConfig[];\r\n /** Components stored in slots */\r\n readonly storedComponents: readonly StoredComponentInSlot[];\r\n}\r\n\r\n/**\r\n * Options for section generation behavior\r\n */\r\nexport interface SectionGenerationOptions {\r\n /** Generate components in parallel (default: true) */\r\n readonly parallel?: boolean;\r\n /** Include CSS variables in output (default: true) */\r\n readonly includeCssVariables?: boolean;\r\n /** Include wrapper component (default: true) */\r\n readonly includeWrapper?: boolean;\r\n /** Custom class name for section wrapper */\r\n readonly wrapperClassName?: string;\r\n}\r\n\r\n/**\r\n * Generated component in a slot\r\n */\r\nexport interface GeneratedSlotComponent {\r\n /** Slot ID */\r\n readonly slotId: string;\r\n /** Component instance ID */\r\n readonly instanceId: string;\r\n /** Component type */\r\n readonly componentType: ComponentType;\r\n /** Generated component code */\r\n readonly code: string;\r\n /** Generated styles */\r\n readonly styles: string;\r\n /** Resolved component factors */\r\n readonly factors: ResolvedFactors;\r\n /** Generation metadata */\r\n readonly metadata: GeneratedComponentMetadata;\r\n}\r\n\r\n/**\r\n * Metadata for generated component\r\n */\r\nexport interface GeneratedComponentMetadata {\r\n /** Component type */\r\n readonly componentType: ComponentType;\r\n /** Design system used */\r\n readonly designSystem: DesignSystem;\r\n /** Quality tier */\r\n readonly tier: Tier;\r\n /** Generation timestamp */\r\n readonly generatedAt: Date;\r\n /** Lines of code */\r\n readonly linesOfCode: number;\r\n}\r\n\r\n/**\r\n * Result of section generation\r\n */\r\nexport interface SectionGenerationResult {\r\n /** Whether generation was successful */\r\n readonly success: boolean;\r\n /** Generated slot components */\r\n readonly components: readonly GeneratedSlotComponent[];\r\n /** Combined CSS variables */\r\n readonly cssVariables: string;\r\n /** Section wrapper code (if includeWrapper) */\r\n readonly wrapperCode: string;\r\n /** Complete composed section code */\r\n readonly composedCode: string;\r\n /** Generation metadata */\r\n readonly metadata: SectionGenerationMetadata;\r\n /** Errors encountered (if any) */\r\n readonly errors: readonly string[];\r\n}\r\n\r\n/**\r\n * Metadata for section generation result\r\n */\r\nexport interface SectionGenerationMetadata {\r\n /** Section ID */\r\n readonly sectionId: string;\r\n /** Section type */\r\n readonly sectionType: string;\r\n /** Number of slots processed */\r\n readonly slotsProcessed: number;\r\n /** Number of components generated */\r\n readonly componentsGenerated: number;\r\n /** Total lines of code */\r\n readonly totalLinesOfCode: number;\r\n /** Generation duration in milliseconds */\r\n readonly durationMs: number;\r\n /** Design system used */\r\n readonly designSystem: DesignSystem;\r\n /** Quality tier */\r\n readonly tier: Tier;\r\n}\r\n\r\n// ============================================================================\r\n// SECTION ORCHESTRATOR CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Section Generator\r\n *\r\n * @remarks\r\n * Coordinates the generation of all components within a section:\r\n * 1. Resolves slots to component instances\r\n * 2. Propagates section factors to each component\r\n * 3. Generates components in parallel or sequentially\r\n * 4. Composes the final section output\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = createSectionGenerator();\r\n * const result = await generator.generateSection({\r\n * sectionConfig,\r\n * sectionFactors,\r\n * slots,\r\n * storedComponents\r\n * });\r\n *\r\n * if (result.success) {\r\n * console.log(result.composedCode);\r\n * }\r\n * ```\r\n */\r\nexport class SectionGenerator {\r\n private readonly componentGenerator: ComponentGenerator;\r\n private readonly factorPropagator: FactorPropagator;\r\n\r\n /**\r\n * Creates a new SectionGenerator instance\r\n *\r\n * @param componentGenerator - ComponentGenerator instance\r\n * @param factorPropagator - FactorPropagator instance\r\n */\r\n constructor(componentGenerator?: ComponentGenerator, factorPropagator?: FactorPropagator) {\r\n this.componentGenerator = componentGenerator ?? createComponentGenerator();\r\n this.factorPropagator = factorPropagator ?? createFactorPropagator();\r\n }\r\n\r\n /**\r\n * Generate components for a section\r\n *\r\n * @param input - Section generation input\r\n * @param options - Section generation options\r\n * @returns Section generation result with generated components\r\n */\r\n public async generateSection(\r\n input: SectionGenerationInput,\r\n options: SectionGenerationOptions = {}\r\n ): Promise<SectionGenerationResult> {\r\n const startTime = Date.now();\r\n const {\r\n parallel = true,\r\n includeCssVariables = true,\r\n includeWrapper = true,\r\n wrapperClassName,\r\n } = options;\r\n\r\n const errors: string[] = [];\r\n const generatedComponents: GeneratedSlotComponent[] = [];\r\n\r\n try {\r\n // Generate components for each slot\r\n const components = parallel\r\n ? await this.generateParallel(input, errors)\r\n : await this.generateSequential(input, errors);\r\n\r\n generatedComponents.push(...components);\r\n\r\n // Merge CSS variables from all components\r\n const cssVariables = includeCssVariables\r\n ? this.mergeCssVariables(generatedComponents, input.sectionFactors)\r\n : '';\r\n\r\n // Generate section wrapper\r\n const wrapperCode = includeWrapper\r\n ? this.generateSectionWrapper(input, wrapperClassName)\r\n : '';\r\n\r\n // Compose final section code\r\n const composedCode = this.composeSection(\r\n input,\r\n generatedComponents,\r\n wrapperCode,\r\n cssVariables\r\n );\r\n\r\n const durationMs = Date.now() - startTime;\r\n\r\n return {\r\n success: errors.length === 0,\r\n components: generatedComponents,\r\n cssVariables,\r\n wrapperCode,\r\n composedCode,\r\n metadata: {\r\n sectionId: input.sectionConfig.sectionId,\r\n sectionType: input.sectionConfig.sectionType,\r\n slotsProcessed: input.slots.length,\r\n componentsGenerated: generatedComponents.length,\r\n totalLinesOfCode: this.countTotalLines(generatedComponents, wrapperCode),\r\n durationMs,\r\n designSystem: input.sectionConfig.designSystem,\r\n tier: input.sectionConfig.tier,\r\n },\r\n errors,\r\n };\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n errors.push(`Orchestration failed: ${errorMessage}`);\r\n\r\n return this.createEmptyResult(input, errors, Date.now() - startTime);\r\n }\r\n }\r\n\r\n /**\r\n * Generate components in parallel using Promise.all\r\n *\r\n * @param input - Orchestration input\r\n * @param errors - Array to collect errors\r\n * @returns Array of generated slot components\r\n */\r\n private async generateParallel(\r\n input: SectionGenerationInput,\r\n errors: string[]\r\n ): Promise<GeneratedSlotComponent[]> {\r\n const { slots, storedComponents, sectionConfig, sectionFactors } = input;\r\n\r\n // Create generation tasks for each stored component\r\n const tasks = storedComponents\r\n .filter((stored) => stored.visible === true)\r\n .map(async (stored) => {\r\n const slot = slots.find((s) => s.slotId === stored.instanceId.split('-')[0]);\r\n if (slot === undefined) {\r\n errors.push(`Slot not found for component: ${stored.instanceId}`);\r\n return null;\r\n }\r\n\r\n return this.generateSlotComponent(stored, slot, sectionConfig, sectionFactors, errors);\r\n });\r\n\r\n const results = await Promise.all(tasks);\r\n return results.filter((r): r is GeneratedSlotComponent => r !== null);\r\n }\r\n\r\n /**\r\n * Generate components sequentially\r\n *\r\n * @param input - Orchestration input\r\n * @param errors - Array to collect errors\r\n * @returns Array of generated slot components\r\n */\r\n private async generateSequential(\r\n input: SectionGenerationInput,\r\n errors: string[]\r\n ): Promise<GeneratedSlotComponent[]> {\r\n const { slots, storedComponents, sectionConfig, sectionFactors } = input;\r\n const results: GeneratedSlotComponent[] = [];\r\n\r\n for (const stored of storedComponents) {\r\n if (stored.visible !== true) continue;\r\n\r\n const slot = slots.find((s) => s.slotId === stored.instanceId.split('-')[0]);\r\n if (slot === undefined) {\r\n errors.push(`Slot not found for component: ${stored.instanceId}`);\r\n continue;\r\n }\r\n\r\n const result = await this.generateSlotComponent(\r\n stored,\r\n slot,\r\n sectionConfig,\r\n sectionFactors,\r\n errors\r\n );\r\n\r\n if (result !== null) {\r\n results.push(result);\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Generate a single slot component\r\n *\r\n * @param stored - Stored component configuration\r\n * @param slot - Slot configuration\r\n * @param sectionConfig - Section configuration\r\n * @param sectionFactors - Section factors\r\n * @param errors - Array to collect errors\r\n * @returns Generated slot component or null on failure\r\n */\r\n private generateSlotComponent(\r\n stored: StoredComponentInSlot,\r\n slot: SlotConfig,\r\n sectionConfig: SectionConfig,\r\n sectionFactors: SectionFactors,\r\n errors: string[]\r\n ): Promise<GeneratedSlotComponent | null> {\r\n try {\r\n // Propagate section factors to component for validation\r\n this.factorPropagator.propagate({\r\n factors: sectionFactors,\r\n tier: sectionConfig.tier,\r\n componentType: stored.componentRef,\r\n });\r\n\r\n // Prepare generation input\r\n const generationInput: GenerationInput = {\r\n componentType: stored.componentRef,\r\n designSystem: sectionConfig.designSystem,\r\n tier: sectionConfig.tier,\r\n };\r\n\r\n // Generate component\r\n const result: ComponentGenerationResult = this.componentGenerator.generate(generationInput);\r\n\r\n // Extract code from CodeOutput and styles from StyleOutput\r\n const componentCode = result.code.componentCode;\r\n const styleClasses = result.style.tailwindClasses;\r\n\r\n return Promise.resolve({\r\n slotId: slot.slotId,\r\n instanceId: stored.instanceId,\r\n componentType: stored.componentRef,\r\n code: componentCode,\r\n styles: styleClasses,\r\n factors: result.resolvedFactors,\r\n metadata: {\r\n componentType: stored.componentRef,\r\n designSystem: sectionConfig.designSystem,\r\n tier: sectionConfig.tier,\r\n generatedAt: new Date(),\r\n linesOfCode: componentCode.split('\\n').length,\r\n },\r\n });\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n errors.push(`Failed to generate ${stored.componentRef}: ${errorMessage}`);\r\n return Promise.resolve(null);\r\n }\r\n }\r\n\r\n /**\r\n * Generate section wrapper component\r\n *\r\n * @param input - Orchestration input\r\n * @param customClassName - Optional custom class name\r\n * @returns Section wrapper code\r\n */\r\n private generateSectionWrapper(input: SectionGenerationInput, customClassName?: string): string {\r\n const { sectionConfig, sectionFactors } = input;\r\n const className = customClassName ?? `section-${sectionConfig.sectionType}`;\r\n\r\n const wrapperStyles = [\r\n `padding: var(--section-padding, ${this.getSpacingValue(sectionFactors.padding)})`,\r\n `gap: var(--section-gap, ${this.getSpacingValue(sectionFactors.gap)})`,\r\n `max-width: var(--section-max-width, ${this.getMaxWidthValue(sectionFactors.maxWidth)})`,\r\n `background-color: var(--section-bg, ${sectionFactors.colorBackground})`,\r\n `color: var(--section-text, ${sectionFactors.colorText})`,\r\n ].join('; ');\r\n\r\n return `\r\n<section\r\n id=\"${sectionConfig.sectionId}\"\r\n className=\"${className}\"\r\n style={{ ${wrapperStyles} }}\r\n role=\"region\"\r\n aria-label=\"${sectionConfig.title}\"\r\n>\r\n {/* Slot components rendered here */}\r\n</section>\r\n`.trim();\r\n }\r\n\r\n /**\r\n * Compose the final section code\r\n *\r\n * @param input - Orchestration input\r\n * @param components - Generated slot components\r\n * @param wrapperCode - Section wrapper code\r\n * @param cssVariables - CSS variables\r\n * @returns Composed section code\r\n */\r\n private composeSection(\r\n input: SectionGenerationInput,\r\n components: readonly GeneratedSlotComponent[],\r\n wrapperCode: string,\r\n cssVariables: string\r\n ): string {\r\n const { sectionConfig } = input;\r\n\r\n // Group components by slot position\r\n const componentsBySlot = new Map<string, GeneratedSlotComponent[]>();\r\n for (const comp of components) {\r\n const existing = componentsBySlot.get(comp.slotId) ?? [];\r\n existing.push(comp);\r\n componentsBySlot.set(comp.slotId, existing);\r\n }\r\n\r\n // Generate imports\r\n const imports = this.generateImports(components);\r\n\r\n // Generate component instances\r\n const componentInstances = components\r\n .map((comp) => `const ${this.toPascalCase(comp.instanceId)} = ${comp.code}`)\r\n .join('\\n\\n');\r\n\r\n // Compose final output\r\n return `\r\n/**\r\n * ${sectionConfig.title} Section\r\n * Auto-generated by Nikkory Vibe Section Orchestrator\r\n *\r\n * @generated\r\n */\r\n\r\n${imports}\r\n\r\n${cssVariables !== '' ? `// CSS Variables\\nconst cssVariables = \\`${cssVariables}\\`;` : ''}\r\n\r\n${componentInstances}\r\n\r\n${wrapperCode}\r\n\r\nexport default ${this.toPascalCase(sectionConfig.sectionId)}Section;\r\n`.trim();\r\n }\r\n\r\n /**\r\n * Merge CSS variables from all components\r\n *\r\n * @param components - Generated components\r\n * @param factors - Section factors\r\n * @returns Merged CSS variables string\r\n */\r\n private mergeCssVariables(\r\n components: readonly GeneratedSlotComponent[],\r\n factors: SectionFactors\r\n ): string {\r\n const variables: string[] = [\r\n `--section-primary: ${factors.colorPrimary}`,\r\n `--section-text: ${factors.colorText}`,\r\n `--section-bg: ${factors.colorBackground}`,\r\n `--section-padding: ${this.getSpacingValue(factors.padding)}`,\r\n `--section-gap: ${this.getSpacingValue(factors.gap)}`,\r\n `--section-max-width: ${this.getMaxWidthValue(factors.maxWidth)}`,\r\n `--section-radius: ${this.getRadiusValue(factors.borderRadius)}`,\r\n `--section-shadow: ${this.getElevationValue(factors.elevation)}`,\r\n ];\r\n\r\n // Add component-specific variables from resolved factors\r\n for (const comp of components) {\r\n const prefix = `--${comp.slotId}`;\r\n // ResolvedFactors has appliedFactors Map, extract color if available\r\n const colorFactor = comp.factors.appliedFactors.get(1); // Factor 1 = colorPrimary\r\n if (colorFactor !== undefined) {\r\n variables.push(`${prefix}-primary: ${colorFactor.value}`);\r\n }\r\n }\r\n\r\n return `:root {\\n ${variables.join(';\\n ')};\\n}`;\r\n }\r\n\r\n /**\r\n * Generate import statements for components\r\n *\r\n * @param components - Generated components\r\n * @returns Import statements\r\n */\r\n private generateImports(components: readonly GeneratedSlotComponent[]): string {\r\n const reactImports = new Set<string>(['React']);\r\n\r\n // Analyze components for required imports\r\n for (const comp of components) {\r\n if (comp.code.includes('useState')) reactImports.add('useState');\r\n if (comp.code.includes('useEffect')) reactImports.add('useEffect');\r\n if (comp.code.includes('useCallback')) reactImports.add('useCallback');\r\n if (comp.code.includes('useMemo')) reactImports.add('useMemo');\r\n if (comp.code.includes('forwardRef')) reactImports.add('forwardRef');\r\n if (comp.code.includes('memo')) reactImports.add('memo');\r\n }\r\n\r\n const reactImport = `import React, { ${Array.from(reactImports)\r\n .filter((i) => i !== 'React')\r\n .join(', ')} } from 'react';`;\r\n\r\n return reactImport;\r\n }\r\n\r\n /**\r\n * Create an empty result for error cases\r\n *\r\n * @param input - Orchestration input\r\n * @param errors - Error messages\r\n * @param durationMs - Duration in milliseconds\r\n * @returns Empty orchestration result\r\n */\r\n private createEmptyResult(\r\n input: SectionGenerationInput,\r\n errors: readonly string[],\r\n durationMs: number\r\n ): SectionGenerationResult {\r\n return {\r\n success: false,\r\n components: [],\r\n cssVariables: '',\r\n wrapperCode: '',\r\n composedCode: '',\r\n metadata: {\r\n sectionId: input.sectionConfig.sectionId,\r\n sectionType: input.sectionConfig.sectionType,\r\n slotsProcessed: 0,\r\n componentsGenerated: 0,\r\n totalLinesOfCode: 0,\r\n durationMs,\r\n designSystem: input.sectionConfig.designSystem,\r\n tier: input.sectionConfig.tier,\r\n },\r\n errors,\r\n };\r\n }\r\n\r\n /**\r\n * Count total lines of code\r\n *\r\n * @param components - Generated components\r\n * @param wrapperCode - Wrapper code\r\n * @returns Total line count\r\n */\r\n private countTotalLines(\r\n components: readonly GeneratedSlotComponent[],\r\n wrapperCode: string\r\n ): number {\r\n const componentLines = components.reduce((sum, comp) => sum + comp.metadata.linesOfCode, 0);\r\n const wrapperLines = wrapperCode.split('\\n').length;\r\n return componentLines + wrapperLines;\r\n }\r\n\r\n /**\r\n * Convert string to PascalCase\r\n *\r\n * @param str - Input string\r\n * @returns PascalCase string\r\n */\r\n private toPascalCase(str: string): string {\r\n return str\r\n .split(/[-_\\s]+/)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\r\n .join('');\r\n }\r\n\r\n /**\r\n * Get spacing value from level\r\n *\r\n * @param level - Spacing level\r\n * @returns CSS spacing value\r\n */\r\n private getSpacingValue(level: string): string {\r\n const spacingMap: Record<string, string> = {\r\n none: '0',\r\n xs: '0.25rem',\r\n sm: '0.5rem',\r\n md: '1rem',\r\n lg: '1.5rem',\r\n xl: '2rem',\r\n '2xl': '3rem',\r\n };\r\n return spacingMap[level] ?? '1rem';\r\n }\r\n\r\n /**\r\n * Get max width value from level\r\n *\r\n * @param level - Max width level\r\n * @returns CSS max-width value\r\n */\r\n private getMaxWidthValue(level: string): string {\r\n const maxWidthMap: Record<string, string> = {\r\n sm: '640px',\r\n md: '768px',\r\n lg: '1024px',\r\n xl: '1280px',\r\n '2xl': '1536px',\r\n full: '100%',\r\n };\r\n return maxWidthMap[level] ?? '1280px';\r\n }\r\n\r\n /**\r\n * Get border radius value from level\r\n *\r\n * @param level - Radius level\r\n * @returns CSS border-radius value\r\n */\r\n private getRadiusValue(level: string): string {\r\n const radiusMap: Record<string, string> = {\r\n none: '0',\r\n sm: '0.125rem',\r\n md: '0.375rem',\r\n lg: '0.5rem',\r\n xl: '0.75rem',\r\n full: '9999px',\r\n };\r\n return radiusMap[level] ?? '0.375rem';\r\n }\r\n\r\n /**\r\n * Get elevation/shadow value from level\r\n *\r\n * @param level - Elevation level\r\n * @returns CSS box-shadow value\r\n */\r\n private getElevationValue(level: string): string {\r\n const elevationMap: Record<string, string> = {\r\n none: 'none',\r\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1)',\r\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1)',\r\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1)',\r\n };\r\n return elevationMap[level] ?? 'none';\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new SectionGenerator instance\r\n *\r\n * @param componentGenerator - Optional ComponentGenerator\r\n * @param factorPropagator - Optional FactorPropagator\r\n * @returns SectionGenerator instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = createSectionGenerator();\r\n * ```\r\n */\r\nexport function createSectionGenerator(\r\n componentGenerator?: ComponentGenerator,\r\n factorPropagator?: FactorPropagator\r\n): SectionGenerator {\r\n return new SectionGenerator(componentGenerator, factorPropagator);\r\n}\r\n\r\n/**\r\n * Convenience function to generate section components\r\n *\r\n * @param input - Section generation input\r\n * @param options - Section generation options\r\n * @returns Section generation result\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await generateSectionComponents({\r\n * sectionConfig,\r\n * sectionFactors,\r\n * slots,\r\n * storedComponents\r\n * });\r\n * ```\r\n */\r\nexport async function generateSectionComponents(\r\n input: SectionGenerationInput,\r\n options?: SectionGenerationOptions\r\n): Promise<SectionGenerationResult> {\r\n const generator = createSectionGenerator();\r\n return generator.generateSection(input, options);\r\n}\r\n","/**\r\n * Section Generator\r\n * Generates complete sections from SectionConfig with slot resolution and factor propagation\r\n *\r\n * @packageDocumentation\r\n * @module generators/SectionGenerator\r\n * @since 4.0.0\r\n *\r\n * The SectionGenerator:\r\n * 1. Takes a SectionConfig with 14 fields\r\n * 2. Resolves slots to components\r\n * 3. Propagates 13 section factors to child components\r\n * 4. Generates complete JSX output\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getCodeFeaturesForTier } from '../registries/tiers-registry';\r\n\r\nimport {\r\n createSectionGenerator as createSectionComponentGenerator,\r\n type SectionGenerator as SectionComponentGenerator,\r\n type SectionGenerationResult as ComponentSectionGenerationResult,\r\n} from './section-orchestrator';\r\n\r\nimport type {\r\n SectionConfig,\r\n SectionFactors,\r\n SectionWithFactors,\r\n SlotConfig,\r\n LayoutType,\r\n SpacingLevel,\r\n AlignmentType,\r\n Tier,\r\n DesignSystem,\r\n ComponentType,\r\n StoredComponentInSlot,\r\n} from '../types';\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Section generation input\r\n */\r\nexport interface SectionGenerationInput {\r\n /** Section configuration (14 fields) */\r\n readonly config: SectionConfig;\r\n /** Section factors for propagation (13 factors) */\r\n readonly factors: SectionFactors;\r\n /** Additional generation options */\r\n readonly options?: SectionGeneratorOptions;\r\n /** Stored components in slots (for orchestrator) */\r\n readonly storedComponents?: readonly StoredComponentInSlot[];\r\n}\r\n\r\n/**\r\n * Section generator options\r\n */\r\nexport interface SectionGeneratorOptions {\r\n /** Include wrapper div */\r\n readonly includeWrapper?: boolean;\r\n /** Custom wrapper class */\r\n readonly wrapperClass?: string;\r\n /** Generate TypeScript or JavaScript */\r\n readonly typescript?: boolean;\r\n /** Include CSS variables inline */\r\n readonly inlineCssVariables?: boolean;\r\n /** Add data attributes for factor values */\r\n readonly includeDataAttributes?: boolean;\r\n}\r\n\r\n/**\r\n * Generated slot content\r\n */\r\nexport interface GeneratedSlot {\r\n /** Slot identifier */\r\n readonly slotId: string;\r\n /** Generated JSX content */\r\n readonly content: string;\r\n /** Components used in this slot */\r\n readonly components: readonly ComponentType[];\r\n}\r\n\r\n/**\r\n * Section generation result\r\n */\r\nexport interface SectionGenerationResult {\r\n /** Whether generation succeeded */\r\n readonly success: boolean;\r\n /** Error message if failed */\r\n readonly error?: string;\r\n /** Generated JSX code */\r\n readonly jsx: string;\r\n /** Generated CSS (Tailwind classes) */\r\n readonly css: string;\r\n /** CSS variables for theming */\r\n readonly cssVariables: Record<string, string>;\r\n /** Data attributes applied */\r\n readonly dataAttributes: readonly string[];\r\n /** Generated slots */\r\n readonly slots: readonly GeneratedSlot[];\r\n /** Metadata about generation */\r\n readonly metadata: SectionGenerationMetadata;\r\n}\r\n\r\n/**\r\n * Section generation metadata\r\n */\r\nexport interface SectionGenerationMetadata {\r\n /** Section ID */\r\n readonly sectionId: string;\r\n /** Section type */\r\n readonly sectionType: string;\r\n /** Design system used */\r\n readonly designSystem: DesignSystem;\r\n /** Quality tier */\r\n readonly tier: Tier;\r\n /** Factors applied count */\r\n readonly factorsApplied: number;\r\n /** Components generated */\r\n readonly componentsGenerated: number;\r\n /** Lines of code */\r\n readonly linesOfCode: number;\r\n /** Generation timestamp */\r\n readonly generatedAt: Date;\r\n /** Section generation result (if section generator was used) */\r\n readonly sectionGenerationResult?: ComponentSectionGenerationResult;\r\n}\r\n\r\n// ============================================================================\r\n// LAYOUT MAPPING\r\n// ============================================================================\r\n\r\n/**\r\n * Tailwind classes for layout types\r\n */\r\nconst LAYOUT_CLASSES: Record<LayoutType, string> = {\r\n // Base layouts\r\n grid: 'grid',\r\n flex: 'flex',\r\n stack: 'flex flex-col',\r\n masonry: 'columns-auto',\r\n carousel: 'flex overflow-x-auto snap-x snap-mandatory',\r\n // Section-specific layouts\r\n centered: 'flex flex-col items-center justify-center',\r\n split: 'grid grid-cols-2',\r\n fullwidth: 'w-full',\r\n alternating: 'flex flex-col',\r\n sidebar: 'grid grid-cols-[auto_1fr]',\r\n asymmetric: 'grid grid-cols-12',\r\n};\r\n\r\n/**\r\n * Tailwind classes for spacing levels\r\n */\r\nconst SPACING_CLASSES: Record<SpacingLevel, string> = {\r\n none: 'gap-0',\r\n xs: 'gap-1',\r\n sm: 'gap-2',\r\n md: 'gap-4',\r\n lg: 'gap-6',\r\n xl: 'gap-8',\r\n '2xl': 'gap-12',\r\n};\r\n\r\n/**\r\n * Tailwind classes for padding levels\r\n */\r\nconst PADDING_CLASSES: Record<SpacingLevel, string> = {\r\n none: 'p-0',\r\n xs: 'p-1',\r\n sm: 'p-2',\r\n md: 'p-4',\r\n lg: 'p-6',\r\n xl: 'p-8',\r\n '2xl': 'p-12',\r\n};\r\n\r\n/**\r\n * Tailwind classes for alignment types\r\n */\r\nconst ALIGNMENT_CLASSES: Record<AlignmentType, string> = {\r\n start: 'items-start justify-start',\r\n center: 'items-center justify-center',\r\n end: 'items-end justify-end',\r\n stretch: 'items-stretch',\r\n between: 'items-center justify-between',\r\n};\r\n\r\n/**\r\n * Column count to Tailwind grid classes\r\n */\r\nconst COLUMN_CLASSES: Record<1 | 2 | 3 | 4 | 6, string> = {\r\n 1: 'grid-cols-1',\r\n 2: 'grid-cols-2',\r\n 3: 'grid-cols-3',\r\n 4: 'grid-cols-4',\r\n 6: 'grid-cols-6',\r\n};\r\n\r\n// ============================================================================\r\n// SECTION GENERATOR CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Section Generator\r\n *\r\n * Generates complete section JSX from SectionConfig and SectionFactors.\r\n * Handles slot resolution and factor propagation to child components.\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = new SectionGenerator();\r\n *\r\n * const result = generator.generate({\r\n * config: {\r\n * sectionId: 'hero-1',\r\n * sectionType: 'hero',\r\n * title: 'Welcome',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * layout: 'flex',\r\n * columns: 2,\r\n * spacing: 'lg',\r\n * },\r\n * factors: {\r\n * colorPrimary: '#2196f3',\r\n * // ... other 12 factors\r\n * },\r\n * });\r\n *\r\n * console.log(result.jsx);\r\n * ```\r\n */\r\nexport class SectionGenerator {\r\n private readonly defaultOptions: Required<SectionGeneratorOptions>;\r\n private readonly orchestrator: SectionComponentGenerator;\r\n\r\n /**\r\n * Create a new SectionGenerator instance\r\n *\r\n * @param options - Default generator options\r\n */\r\n constructor(options: SectionGeneratorOptions = {}) {\r\n this.defaultOptions = {\r\n includeWrapper: true,\r\n wrapperClass: 'section',\r\n typescript: true,\r\n inlineCssVariables: true,\r\n includeDataAttributes: true,\r\n ...options,\r\n };\r\n this.orchestrator = createSectionComponentGenerator();\r\n }\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate a section from config and factors\r\n *\r\n * @param input - Section generation input\r\n * @returns Section generation result\r\n */\r\n public generate(input: SectionGenerationInput): SectionGenerationResult {\r\n const { config, factors, options, storedComponents } = input;\r\n const mergedOptions = { ...this.defaultOptions, ...options };\r\n\r\n try {\r\n // Step 1: Validate input\r\n const validation = this.validateInput(config, factors);\r\n if (!validation.valid) {\r\n return this.createErrorResult(validation.error ?? 'Validation failed');\r\n }\r\n\r\n // Step 2: Build CSS classes\r\n const css = this.buildCssClasses(config, factors);\r\n\r\n // Step 3: Build CSS variables\r\n const cssVariables = this.buildCssVariables(factors);\r\n\r\n // Step 4: Build data attributes\r\n const dataAttributes = mergedOptions.includeDataAttributes\r\n ? this.buildDataAttributes(config, factors)\r\n : [];\r\n\r\n // Step 5: Generate slots\r\n const slots = this.generateSlots(config, factors);\r\n\r\n // Step 6: Generate JSX\r\n const jsx = this.generateJsx(config, factors, css, cssVariables, slots, mergedOptions);\r\n\r\n // Step 7: Build metadata (with orchestration result if available)\r\n const metadata = this.buildMetadata(config, jsx, slots, undefined);\r\n\r\n // Step 8: If stored components provided, enhance with orchestrator\r\n if (\r\n storedComponents !== undefined &&\r\n storedComponents.length > 0 &&\r\n config.slots !== undefined\r\n ) {\r\n // Use orchestrator for enhanced slot component generation (async)\r\n // Store promise for async generation - caller can await if needed\r\n void this.enhanceWithSectionGenerator(input, metadata);\r\n }\r\n\r\n return {\r\n success: true,\r\n jsx,\r\n css,\r\n cssVariables,\r\n dataAttributes,\r\n slots,\r\n metadata,\r\n };\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n return this.createErrorResult(errorMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Generate a section asynchronously with full orchestration support\r\n *\r\n * @param input - Section generation input (must include storedComponents)\r\n * @returns Promise of section generation result with orchestration\r\n */\r\n public async generateAsync(input: SectionGenerationInput): Promise<SectionGenerationResult> {\r\n const { config, factors, options, storedComponents } = input;\r\n const mergedOptions = { ...this.defaultOptions, ...options };\r\n\r\n try {\r\n // Step 1: Validate input\r\n const validation = this.validateInput(config, factors);\r\n if (!validation.valid) {\r\n return this.createErrorResult(validation.error ?? 'Validation failed');\r\n }\r\n\r\n // Step 2: Build CSS classes\r\n const css = this.buildCssClasses(config, factors);\r\n\r\n // Step 3: Build CSS variables\r\n const cssVariables = this.buildCssVariables(factors);\r\n\r\n // Step 4: Build data attributes\r\n const dataAttributes = mergedOptions.includeDataAttributes\r\n ? this.buildDataAttributes(config, factors)\r\n : [];\r\n\r\n // Step 5: Use section generator if stored components provided\r\n let sectionGenerationResult: ComponentSectionGenerationResult | undefined;\r\n if (\r\n storedComponents !== undefined &&\r\n storedComponents.length > 0 &&\r\n config.slots !== undefined\r\n ) {\r\n sectionGenerationResult = await this.orchestrator.generateSection({\r\n sectionConfig: config,\r\n sectionFactors: factors,\r\n slots: config.slots,\r\n storedComponents,\r\n });\r\n }\r\n\r\n // Step 6: Generate slots (use generated components if available)\r\n const slots =\r\n sectionGenerationResult !== undefined\r\n ? this.convertSectionGenerationToSlots(sectionGenerationResult)\r\n : this.generateSlots(config, factors);\r\n\r\n // Step 7: Generate JSX (use composed code from section generator if available)\r\n const jsx =\r\n sectionGenerationResult?.success === true && sectionGenerationResult.composedCode !== ''\r\n ? sectionGenerationResult.composedCode\r\n : this.generateJsx(config, factors, css, cssVariables, slots, mergedOptions);\r\n\r\n // Step 8: Build metadata with section generation result\r\n const metadata = this.buildMetadata(config, jsx, slots, sectionGenerationResult);\r\n\r\n return {\r\n success: true,\r\n jsx,\r\n css,\r\n cssVariables,\r\n dataAttributes,\r\n slots,\r\n metadata,\r\n };\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n return this.createErrorResult(errorMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Enhance generation with orchestrator (internal async helper)\r\n */\r\n private async enhanceWithSectionGenerator(\r\n input: SectionGenerationInput,\r\n _metadata: SectionGenerationMetadata\r\n ): Promise<ComponentSectionGenerationResult | undefined> {\r\n const { config, factors, storedComponents } = input;\r\n if (storedComponents === undefined || config.slots === undefined) {\r\n return undefined;\r\n }\r\n\r\n return this.orchestrator.generateSection({\r\n sectionConfig: config,\r\n sectionFactors: factors,\r\n slots: config.slots,\r\n storedComponents,\r\n });\r\n }\r\n\r\n /**\r\n * Convert section generation result to GeneratedSlot array\r\n */\r\n private convertSectionGenerationToSlots(result: ComponentSectionGenerationResult): GeneratedSlot[] {\r\n return result.components.map((comp) => ({\r\n slotId: comp.slotId,\r\n content: comp.code,\r\n components: [comp.componentType],\r\n }));\r\n }\r\n\r\n /**\r\n * Generate section from SectionWithFactors interface\r\n *\r\n * @param sectionWithFactors - Section with embedded factors\r\n * @returns Section generation result\r\n */\r\n public generateFromSectionWithFactors(\r\n sectionWithFactors: SectionWithFactors\r\n ): SectionGenerationResult {\r\n const { factors, ...config } = sectionWithFactors;\r\n return this.generate({ config, factors });\r\n }\r\n\r\n /**\r\n * Transform SectionConfig to JSX string\r\n *\r\n * @param config - Section configuration\r\n * @param factors - Section factors\r\n * @returns JSX string\r\n */\r\n public transformToJsx(config: SectionConfig, factors: SectionFactors): string {\r\n const result = this.generate({ config, factors });\r\n return result.jsx;\r\n }\r\n\r\n /**\r\n * Get layout classes for a section\r\n *\r\n * @param layout - Layout type\r\n * @param columns - Column count\r\n * @param spacing - Spacing level\r\n * @returns Tailwind class string\r\n */\r\n public getLayoutClasses(\r\n layout: LayoutType,\r\n columns: 1 | 2 | 3 | 4 | 6,\r\n spacing: SpacingLevel\r\n ): string {\r\n const classes: string[] = [];\r\n\r\n classes.push(LAYOUT_CLASSES[layout]);\r\n\r\n if (layout === 'grid') {\r\n classes.push(COLUMN_CLASSES[columns]);\r\n }\r\n\r\n classes.push(SPACING_CLASSES[spacing]);\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - VALIDATION\r\n // ==========================================================================\r\n\r\n /**\r\n * Validate generation input\r\n */\r\n private validateInput(\r\n config: SectionConfig,\r\n factors: SectionFactors\r\n ): { valid: boolean; error?: string } {\r\n // Validate required fields\r\n if (config.sectionId === '' || config.sectionId === undefined) {\r\n return { valid: false, error: 'sectionId is required' };\r\n }\r\n\r\n if (config.sectionType === undefined) {\r\n return { valid: false, error: 'sectionType is required' };\r\n }\r\n\r\n if (config.designSystem === undefined) {\r\n return { valid: false, error: 'designSystem is required' };\r\n }\r\n\r\n if (config.tier === undefined) {\r\n return { valid: false, error: 'tier is required' };\r\n }\r\n\r\n // Validate factors exist\r\n if (factors.colorPrimary === undefined) {\r\n return { valid: false, error: 'colorPrimary factor is required' };\r\n }\r\n\r\n return { valid: true };\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - CSS GENERATION\r\n // ==========================================================================\r\n\r\n /**\r\n * Build CSS classes from config and factors\r\n */\r\n private buildCssClasses(config: SectionConfig, factors: SectionFactors): string {\r\n const classes: string[] = [];\r\n\r\n // Base section class\r\n classes.push('section');\r\n classes.push(`section-${config.sectionType}`);\r\n\r\n // Layout classes\r\n classes.push(LAYOUT_CLASSES[config.layout]);\r\n\r\n // Grid columns (if grid layout)\r\n if (config.layout === 'grid') {\r\n classes.push(COLUMN_CLASSES[config.columns]);\r\n }\r\n\r\n // Spacing\r\n classes.push(SPACING_CLASSES[config.spacing]);\r\n\r\n // Factor-based classes\r\n classes.push(PADDING_CLASSES[factors.padding]);\r\n classes.push(ALIGNMENT_CLASSES[factors.alignment]);\r\n\r\n // Elevation/shadow\r\n if (factors.elevation !== 'none') {\r\n classes.push(`shadow-${factors.elevation}`);\r\n }\r\n\r\n // Border radius\r\n if (factors.borderRadius !== 'none') {\r\n classes.push(`rounded-${factors.borderRadius}`);\r\n }\r\n\r\n // Max width\r\n if (factors.maxWidth !== 'full') {\r\n classes.push(`max-w-${factors.maxWidth}`);\r\n }\r\n\r\n // Animation\r\n if (factors.animation !== 'none') {\r\n classes.push(`animate-${factors.animation}`);\r\n }\r\n\r\n // Style overrides\r\n if (config.styleOverrides?.tailwindClasses !== undefined) {\r\n classes.push(config.styleOverrides.tailwindClasses);\r\n }\r\n\r\n if (config.styleOverrides?.className !== undefined) {\r\n classes.push(config.styleOverrides.className);\r\n }\r\n\r\n return classes.filter((c) => c !== '').join(' ');\r\n }\r\n\r\n /**\r\n * Build CSS variables from factors\r\n */\r\n private buildCssVariables(factors: SectionFactors): Record<string, string> {\r\n return {\r\n '--section-color-primary': factors.colorPrimary,\r\n '--section-color-text': factors.colorText,\r\n '--section-color-background': factors.colorBackground,\r\n '--section-typography': factors.typography,\r\n '--section-border-radius': factors.borderRadius,\r\n '--section-elevation': factors.elevation,\r\n '--section-padding': factors.padding,\r\n '--section-gap': factors.gap,\r\n '--section-alignment': factors.alignment,\r\n '--section-max-width': factors.maxWidth,\r\n '--section-animation': factors.animation,\r\n '--section-a11y-level': factors.a11yLevel,\r\n };\r\n }\r\n\r\n /**\r\n * Build data attributes from config and factors\r\n */\r\n private buildDataAttributes(config: SectionConfig, factors: SectionFactors): readonly string[] {\r\n const attrs: string[] = [];\r\n\r\n // Config-based attributes\r\n attrs.push(`data-section-id=\"${config.sectionId}\"`);\r\n attrs.push(`data-section-type=\"${config.sectionType}\"`);\r\n attrs.push(`data-design-system=\"${config.designSystem}\"`);\r\n attrs.push(`data-tier=\"${config.tier}\"`);\r\n attrs.push(`data-layout=\"${config.layout}\"`);\r\n attrs.push(`data-columns=\"${config.columns}\"`);\r\n\r\n // Factor-based attributes\r\n attrs.push(`data-typography=\"${factors.typography}\"`);\r\n attrs.push(`data-elevation=\"${factors.elevation}\"`);\r\n attrs.push(`data-animation=\"${factors.animation}\"`);\r\n attrs.push(`data-a11y=\"${factors.a11yLevel}\"`);\r\n\r\n return attrs;\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - SLOT GENERATION\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate slots from config\r\n */\r\n private generateSlots(config: SectionConfig, _factors: SectionFactors): GeneratedSlot[] {\r\n if (config.slots === undefined || config.slots.length === 0) {\r\n return [];\r\n }\r\n\r\n return config.slots.map((slot) => this.generateSlot(slot, config));\r\n }\r\n\r\n /**\r\n * Generate a single slot\r\n */\r\n private generateSlot(slot: SlotConfig, config: SectionConfig): GeneratedSlot {\r\n const components: ComponentType[] = [];\r\n\r\n // Use default component if defined\r\n if (slot.defaultComponent !== undefined) {\r\n components.push(slot.defaultComponent);\r\n }\r\n\r\n // Generate placeholder content based on slot position\r\n const content = this.generateSlotContent(slot, config);\r\n\r\n return {\r\n slotId: slot.slotId,\r\n content,\r\n components,\r\n };\r\n }\r\n\r\n /**\r\n * Generate slot content placeholder\r\n */\r\n private generateSlotContent(slot: SlotConfig, config: SectionConfig): string {\r\n const slotClasses = this.getSlotClasses(slot.position);\r\n const componentList = slot.allowedComponents.join(', ');\r\n\r\n return `{/* Slot: ${slot.slotId} (${slot.position}) */}\r\n <div className=\"${slotClasses}\" data-slot=\"${slot.slotId}\">\r\n {/* Allowed components: ${componentList} */}\r\n {${config.tier === 'enterprise' ? 'children' : 'null'} /* TODO: Resolve components */}\r\n </div>`;\r\n }\r\n\r\n /**\r\n * Get slot classes based on position\r\n */\r\n private getSlotClasses(position: string): string {\r\n const positionClasses: Record<string, string> = {\r\n header: 'slot-header mb-4',\r\n content: 'slot-content flex-1',\r\n footer: 'slot-footer mt-4',\r\n sidebar: 'slot-sidebar w-64',\r\n overlay: 'slot-overlay absolute inset-0',\r\n };\r\n\r\n return positionClasses[position] ?? 'slot';\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - JSX GENERATION\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate complete JSX\r\n */\r\n private generateJsx(\r\n config: SectionConfig,\r\n factors: SectionFactors,\r\n css: string,\r\n cssVariables: Record<string, string>,\r\n slots: readonly GeneratedSlot[],\r\n options: Required<SectionGeneratorOptions>\r\n ): string {\r\n const lines: string[] = [];\r\n const codeFeatures = getCodeFeaturesForTier(config.tier);\r\n\r\n // Component header\r\n lines.push(this.generateHeader(config));\r\n lines.push('');\r\n\r\n // Imports\r\n lines.push(this.generateImports(config.tier));\r\n lines.push('');\r\n\r\n // Props interface\r\n lines.push(this.generatePropsInterface(config, options.typescript));\r\n lines.push('');\r\n\r\n // Component body\r\n lines.push(this.generateComponentBody(config, factors, css, cssVariables, slots, codeFeatures));\r\n\r\n // displayName\r\n if (codeFeatures.setDisplayName) {\r\n lines.push('');\r\n lines.push(\r\n `${this.getComponentName(config)}.displayName = '${this.getComponentName(config)}';`\r\n );\r\n }\r\n\r\n lines.push('');\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate file header\r\n */\r\n private generateHeader(config: SectionConfig): string {\r\n return `/**\r\n * ${this.getComponentName(config)}\r\n * Generated Section Component\r\n *\r\n * @section ${config.sectionType}\r\n * @designSystem ${config.designSystem}\r\n * @tier ${config.tier}\r\n *\r\n * Powered by Nikkory\r\n */`;\r\n }\r\n\r\n /**\r\n * Generate imports based on tier\r\n */\r\n private generateImports(tier: Tier): string {\r\n const imports: string[] = [];\r\n\r\n if (tier === 'enterprise') {\r\n imports.push(\"import { memo, forwardRef, useCallback, useMemo } from 'react';\");\r\n } else if (tier === 'standard') {\r\n imports.push(\"import { forwardRef } from 'react';\");\r\n } else {\r\n imports.push(\"import React from 'react';\");\r\n }\r\n\r\n return imports.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate props interface\r\n */\r\n private generatePropsInterface(config: SectionConfig, _typescript: boolean): string {\r\n const componentName = this.getComponentName(config);\r\n\r\n const lines: string[] = [];\r\n lines.push(`interface ${componentName}Props {`);\r\n lines.push(' readonly children?: React.ReactNode;');\r\n lines.push(' readonly className?: string;');\r\n lines.push(' readonly id?: string;');\r\n\r\n if (config.tier === 'standard' || config.tier === 'enterprise') {\r\n lines.push(' readonly testId?: string;');\r\n }\r\n\r\n if (config.tier === 'enterprise') {\r\n lines.push(' readonly analyticsEvent?: string;');\r\n lines.push(' readonly onSectionView?: () => void;');\r\n }\r\n\r\n lines.push('}');\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate component body based on tier\r\n */\r\n private generateComponentBody(\r\n config: SectionConfig,\r\n factors: SectionFactors,\r\n css: string,\r\n cssVariables: Record<string, string>,\r\n slots: readonly GeneratedSlot[],\r\n codeFeatures: { setDisplayName: boolean; includeAnalytics: boolean; includeAria: boolean }\r\n ): string {\r\n const componentName = this.getComponentName(config);\r\n\r\n if (config.tier === 'enterprise') {\r\n return this.generateEnterpriseBody(\r\n componentName,\r\n config,\r\n factors,\r\n css,\r\n cssVariables,\r\n slots,\r\n codeFeatures\r\n );\r\n } else if (config.tier === 'standard') {\r\n return this.generateStandardBody(componentName, config, css, cssVariables, slots);\r\n } else {\r\n return this.generateBasicBody(componentName, config, css, slots);\r\n }\r\n }\r\n\r\n /**\r\n * Generate basic tier component body\r\n */\r\n private generateBasicBody(\r\n componentName: string,\r\n config: SectionConfig,\r\n css: string,\r\n slots: readonly GeneratedSlot[]\r\n ): string {\r\n const slotContent = slots.map((s) => s.content).join('\\n ');\r\n const titleJsx =\r\n config.title !== ''\r\n ? `\\n <h2 className=\"section-title\">{title ?? '${config.title}'}</h2>`\r\n : '';\r\n const subtitleJsx =\r\n config.subtitle !== undefined\r\n ? `\\n <p className=\"section-subtitle\">{subtitle ?? '${config.subtitle}'}</p>`\r\n : '';\r\n\r\n return `export const ${componentName}: React.FC<${componentName}Props> = ({\r\n children,\r\n className = '',\r\n id,\r\n}) => {\r\n const title = '${config.title}';\r\n const subtitle = ${config.subtitle !== undefined ? `'${config.subtitle}'` : 'undefined'};\r\n\r\n return (\r\n <section\r\n id={id ?? '${config.sectionId}'}\r\n className={\\`${css} \\${className}\\`}\r\n >${titleJsx}${subtitleJsx}\r\n ${slotContent !== '' ? slotContent : '{children}'}\r\n </section>\r\n );\r\n};`;\r\n }\r\n\r\n /**\r\n * Generate standard tier component body\r\n */\r\n private generateStandardBody(\r\n componentName: string,\r\n config: SectionConfig,\r\n css: string,\r\n cssVariables: Record<string, string>,\r\n slots: readonly GeneratedSlot[]\r\n ): string {\r\n const slotContent = slots.map((s) => s.content).join('\\n ');\r\n const styleObj = this.buildStyleObject(cssVariables);\r\n const titleJsx =\r\n config.title !== ''\r\n ? `\\n <h2 className=\"section-title\">{title ?? '${config.title}'}</h2>`\r\n : '';\r\n const subtitleJsx =\r\n config.subtitle !== undefined\r\n ? `\\n <p className=\"section-subtitle\">{subtitle ?? '${config.subtitle}'}</p>`\r\n : '';\r\n\r\n return `export const ${componentName} = forwardRef<HTMLElement, ${componentName}Props>(\r\n ({ children, className = '', id, testId }, ref) => {\r\n const title = '${config.title}';\r\n const subtitle = ${config.subtitle !== undefined ? `'${config.subtitle}'` : 'undefined'};\r\n\r\n return (\r\n <section\r\n ref={ref}\r\n id={id ?? '${config.sectionId}'}\r\n className={\\`${css} \\${className}\\`}\r\n style={${styleObj} as React.CSSProperties}\r\n data-testid={testId}\r\n data-section-type=\"${config.sectionType}\"\r\n >${titleJsx}${subtitleJsx}\r\n ${slotContent !== '' ? slotContent : '{children}'}\r\n </section>\r\n );\r\n }\r\n);`;\r\n }\r\n\r\n /**\r\n * Generate enterprise tier component body\r\n */\r\n private generateEnterpriseBody(\r\n componentName: string,\r\n config: SectionConfig,\r\n factors: SectionFactors,\r\n css: string,\r\n cssVariables: Record<string, string>,\r\n slots: readonly GeneratedSlot[],\r\n codeFeatures: { includeAnalytics: boolean; includeAria: boolean }\r\n ): string {\r\n const slotContent = slots.map((s) => s.content).join('\\n ');\r\n const styleObj = this.buildStyleObject(cssVariables);\r\n const titleJsx =\r\n config.title !== ''\r\n ? `\\n <h2 className=\"section-title\">{title ?? '${config.title}'}</h2>`\r\n : '';\r\n const subtitleJsx =\r\n config.subtitle !== undefined\r\n ? `\\n <p className=\"section-subtitle\">{subtitle ?? '${config.subtitle}'}</p>`\r\n : '';\r\n\r\n const analyticsHandler = codeFeatures.includeAnalytics\r\n ? `\r\n const handleSectionView = useCallback((): void => {\r\n if (analyticsEvent !== undefined && typeof window !== 'undefined') {\r\n (window as unknown as { dataLayer?: unknown[] }).dataLayer?.push({\r\n event: analyticsEvent,\r\n category: 'section',\r\n action: 'view',\r\n sectionId: '${config.sectionId}',\r\n });\r\n }\r\n onSectionView?.();\r\n }, [analyticsEvent, onSectionView]);\r\n\r\n // Call on mount if analytics enabled\r\n React.useEffect(() => {\r\n if (analyticsEvent !== undefined) {\r\n handleSectionView();\r\n }\r\n }, [analyticsEvent, handleSectionView]);`\r\n : '';\r\n\r\n const ariaAttrs = codeFeatures.includeAria\r\n ? `\r\n role=\"region\"\r\n aria-label=\"${config.title}\"\r\n aria-describedby={subtitle !== undefined ? \\`\\${id ?? '${config.sectionId}'}-desc\\` : undefined}`\r\n : '';\r\n\r\n // Note: factors parameter kept for future factor-based logic\r\n void factors;\r\n\r\n return `export const ${componentName} = memo(\r\n forwardRef<HTMLElement, ${componentName}Props>(\r\n ({ children, className = '', id, testId, analyticsEvent, onSectionView }, ref) => {\r\n const title = '${config.title}';\r\n const subtitle = ${config.subtitle !== undefined ? `'${config.subtitle}'` : 'undefined'};\r\n\r\n // Memoize style object\r\n const computedStyle = useMemo(\r\n (): React.CSSProperties => (${styleObj}),\r\n []\r\n );\r\n${analyticsHandler}\r\n\r\n return (\r\n <section\r\n ref={ref}\r\n id={id ?? '${config.sectionId}'}\r\n className={\\`${css} \\${className}\\`}\r\n style={computedStyle}\r\n data-testid={testId}\r\n data-section-type=\"${config.sectionType}\"\r\n data-design-system=\"${config.designSystem}\"\r\n data-tier=\"${config.tier}\"${ariaAttrs}\r\n >${titleJsx}${subtitleJsx}\r\n ${slotContent !== '' ? slotContent : '{children}'}\r\n </section>\r\n );\r\n }\r\n )\r\n);`;\r\n }\r\n\r\n /**\r\n * Build style object string from CSS variables\r\n */\r\n private buildStyleObject(cssVariables: Record<string, string>): string {\r\n if (Object.keys(cssVariables).length === 0) {\r\n return '{}';\r\n }\r\n\r\n const entries = Object.entries(cssVariables)\r\n .map(([key, value]) => `'${key}': '${value}'`)\r\n .join(',\\n ');\r\n\r\n return `{\r\n ${entries}\r\n }`;\r\n }\r\n\r\n /**\r\n * Get component name from config\r\n */\r\n private getComponentName(config: SectionConfig): string {\r\n const sectionTypeFormatted = config.sectionType\r\n .split('-')\r\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\r\n .join('');\r\n\r\n const tierFormatted = config.tier.charAt(0).toUpperCase() + config.tier.slice(1);\r\n\r\n return `${sectionTypeFormatted}Section${tierFormatted}`;\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS - METADATA\r\n // ==========================================================================\r\n\r\n /**\r\n * Build generation metadata\r\n */\r\n private buildMetadata(\r\n config: SectionConfig,\r\n jsx: string,\r\n slots: readonly GeneratedSlot[],\r\n sectionGenerationResult?: ComponentSectionGenerationResult\r\n ): SectionGenerationMetadata {\r\n const componentsGenerated =\r\n sectionGenerationResult !== undefined\r\n ? sectionGenerationResult.metadata.componentsGenerated\r\n : slots.reduce((sum, slot) => sum + slot.components.length, 0);\r\n\r\n return {\r\n sectionId: config.sectionId,\r\n sectionType: config.sectionType,\r\n designSystem: config.designSystem,\r\n tier: config.tier,\r\n factorsApplied: 13, // All 13 section factors\r\n componentsGenerated,\r\n linesOfCode: jsx.split('\\n').length,\r\n generatedAt: new Date(),\r\n sectionGenerationResult,\r\n };\r\n }\r\n\r\n /**\r\n * Create error result\r\n */\r\n private createErrorResult(error: string): SectionGenerationResult {\r\n return {\r\n success: false,\r\n error,\r\n jsx: '',\r\n css: '',\r\n cssVariables: {},\r\n dataAttributes: [],\r\n slots: [],\r\n metadata: {\r\n sectionId: '',\r\n sectionType: '',\r\n designSystem: 'material-design',\r\n tier: 'basic',\r\n factorsApplied: 0,\r\n componentsGenerated: 0,\r\n linesOfCode: 0,\r\n generatedAt: new Date(),\r\n },\r\n };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new SectionGenerator instance\r\n *\r\n * @param options - Generator options\r\n * @returns New SectionGenerator instance\r\n */\r\nexport function createSectionGenerator(options: SectionGeneratorOptions = {}): SectionGenerator {\r\n return new SectionGenerator(options);\r\n}\r\n\r\n/**\r\n * Generate a section with default options (convenience wrapper)\r\n *\r\n * @param input - Section generation input\r\n * @returns Section generation result\r\n */\r\nexport function generateSection(input: SectionGenerationInput): SectionGenerationResult {\r\n const generator = new SectionGenerator();\r\n return generator.generate(input);\r\n}\r\n\r\n/**\r\n * Transform SectionConfig to JSX (convenience wrapper)\r\n *\r\n * @param config - Section configuration\r\n * @param factors - Section factors\r\n * @returns JSX string\r\n */\r\nexport function transformSectionToJsx(config: SectionConfig, factors: SectionFactors): string {\r\n const generator = new SectionGenerator();\r\n return generator.transformToJsx(config, factors);\r\n}\r\n\r\n/**\r\n * Generate a section with full orchestration support (async)\r\n *\r\n * @param input - Section generation input with storedComponents\r\n * @returns Promise of section generation result\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await generateSectionAsync({\r\n * config: sectionConfig,\r\n * factors: sectionFactors,\r\n * storedComponents: [\r\n * { instanceId: 'header-1', componentRef: 'button', visible: true },\r\n * ],\r\n * });\r\n *\r\n * if (result.success) {\r\n * console.log(result.metadata.sectionGenerationResult?.composedCode);\r\n * }\r\n * ```\r\n */\r\nexport async function generateSectionAsync(\r\n input: SectionGenerationInput\r\n): Promise<SectionGenerationResult> {\r\n const generator = new SectionGenerator();\r\n return generator.generateAsync(input);\r\n}\r\n","/**\r\n * PageGenerator - Composes pages from sections, layouts from pages\r\n * @packageDocumentation\r\n * @module generators/PageGenerator\r\n * @since 4.0.0\r\n *\r\n * Pattern:\r\n * - Slot Composition: Pages compose sections via named slots\r\n * - Children Composition: Layouts compose pages via children prop\r\n * - Template Composition: Templates compose multiple pages\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getTierFeatures } from '../types';\r\n\r\nimport type { GenerationResult, ComponentTemplateData, TierFeatures } from '../types';\r\nimport type {\r\n RegistrySectionDefinition,\r\n RegistryPageDefinition,\r\n RegistryLayoutDefinition,\r\n RegistryTemplateDefinition,\r\n} from '../presets/registry.types';\r\nimport type { DesignSystem, Tier } from '../types';\r\n\r\n/**\r\n * Composition strategy types\r\n */\r\nexport type CompositionStrategy = 'slots' | 'children' | 'template';\r\n\r\n/**\r\n * Configuration for composition generation\r\n */\r\nexport interface CompositionConfig {\r\n /**\r\n * Parent component (page, layout, or template)\r\n */\r\n readonly parent: RegistryPageDefinition | RegistryLayoutDefinition | RegistryTemplateDefinition;\r\n\r\n /**\r\n * Child components to compose\r\n */\r\n readonly children: ReadonlyArray<RegistrySectionDefinition | RegistryPageDefinition>;\r\n\r\n /**\r\n * Composition strategy\r\n */\r\n readonly strategy: CompositionStrategy;\r\n\r\n /**\r\n * Design system to apply\r\n */\r\n readonly designSystem: DesignSystem;\r\n\r\n /**\r\n * Quality tier to generate\r\n */\r\n readonly tier: Tier;\r\n\r\n /**\r\n * Output directory for generated files\r\n */\r\n readonly outputDir: string;\r\n}\r\n\r\n/**\r\n * Slot definition for slot-based composition\r\n */\r\nexport interface SlotDefinition {\r\n /**\r\n * Slot name (e.g., 'hero', 'features', 'footer')\r\n */\r\n readonly name: string;\r\n\r\n /**\r\n * Component to render in this slot\r\n */\r\n readonly component: RegistrySectionDefinition;\r\n\r\n /**\r\n * Whether slot is required\r\n */\r\n readonly required: boolean;\r\n\r\n /**\r\n * Default component if slot is empty\r\n */\r\n readonly defaultComponent?: RegistrySectionDefinition;\r\n}\r\n\r\n/**\r\n * PageGenerator - Main page composition engine\r\n *\r\n * @example\r\n * ```typescript\r\n * const generator = new PageGenerator();\r\n * const result = generator.generateComposition({\r\n * parent: LANDING_PAGE_DEFINITION,\r\n * children: [HERO_SECTION, FEATURES_SECTION, CTA_SECTION],\r\n * strategy: 'slots',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * outputDir: './src/pages',\r\n * });\r\n * ```\r\n */\r\nexport class PageGenerator {\r\n /**\r\n * Generate a composition (page from sections, layout from pages, etc.)\r\n *\r\n * @param config - Composition configuration\r\n * @returns Generation result with file paths and metadata\r\n */\r\n public generateComposition(config: CompositionConfig): GenerationResult {\r\n const { parent, children, strategy, designSystem, tier, outputDir } = config;\r\n\r\n try {\r\n // Get tier-specific features\r\n const features = getTierFeatures(tier);\r\n\r\n // Generate based on strategy\r\n let result: GenerationResult;\r\n\r\n if (strategy === 'slots') {\r\n result = this.generateSlotComposition(\r\n parent as RegistryPageDefinition,\r\n children as RegistrySectionDefinition[],\r\n designSystem,\r\n tier,\r\n outputDir,\r\n features\r\n );\r\n } else if (strategy === 'children') {\r\n result = this.generateChildrenComposition(\r\n parent as RegistryLayoutDefinition,\r\n children as RegistryPageDefinition[],\r\n designSystem,\r\n tier,\r\n outputDir,\r\n features\r\n );\r\n } else {\r\n result = this.generateTemplateComposition(\r\n parent as RegistryTemplateDefinition,\r\n children as RegistryPageDefinition[],\r\n designSystem,\r\n tier,\r\n outputDir,\r\n features\r\n );\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n return {\r\n componentPath: '',\r\n linesOfCode: 0,\r\n displayName: '',\r\n success: false,\r\n error: error instanceof Error ? error.message : 'Unknown error',\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Generate page from sections (slot-based composition)\r\n *\r\n * @param page - Page definition\r\n * @param sections - Section definitions to compose\r\n * @param designSystem - Design system to apply\r\n * @param tier - Quality tier\r\n * @param outputDir - Output directory\r\n * @param features - Tier-specific features\r\n * @returns Generation result\r\n */\r\n private generateSlotComposition(\r\n page: RegistryPageDefinition,\r\n sections: RegistrySectionDefinition[],\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n outputDir: string,\r\n features: TierFeatures\r\n ): GenerationResult {\r\n // Build template data\r\n const templateData = this.buildPageTemplateData(page, sections, designSystem, tier, features);\r\n\r\n // Generate slots\r\n const slots = this.buildSlots(page, sections);\r\n\r\n // Generate component code\r\n const componentCode = this.generateSlotComponentCode(templateData, slots, features);\r\n\r\n // Build file paths\r\n const componentName = this.getComponentFileName(page.id, designSystem, tier);\r\n const componentPath = `${outputDir}/${componentName}.tsx`;\r\n\r\n // Calculate LOC\r\n const linesOfCode = componentCode.split('\\n').length;\r\n\r\n return {\r\n componentPath,\r\n linesOfCode,\r\n displayName: templateData.displayName,\r\n success: true,\r\n typesPath: `${outputDir}/${componentName}.types.ts`,\r\n testPath: `${outputDir}/${componentName}.test.tsx`,\r\n };\r\n }\r\n\r\n /**\r\n * Generate layout from pages (children-based composition)\r\n *\r\n * @param layout - Layout definition\r\n * @param pages - Page definitions to compose\r\n * @param designSystem - Design system to apply\r\n * @param tier - Quality tier\r\n * @param outputDir - Output directory\r\n * @param features - Tier-specific features\r\n * @returns Generation result\r\n */\r\n private generateChildrenComposition(\r\n layout: RegistryLayoutDefinition,\r\n pages: RegistryPageDefinition[],\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n outputDir: string,\r\n features: TierFeatures\r\n ): GenerationResult {\r\n // Build template data\r\n const templateData = this.buildLayoutTemplateData(layout, pages, designSystem, tier, features);\r\n\r\n // Generate component code\r\n const componentCode = this.generateChildrenComponentCode(templateData, layout, features);\r\n\r\n // Build file paths\r\n const componentName = this.getComponentFileName(layout.id, designSystem, tier);\r\n const componentPath = `${outputDir}/${componentName}.tsx`;\r\n\r\n // Calculate LOC\r\n const linesOfCode = componentCode.split('\\n').length;\r\n\r\n return {\r\n componentPath,\r\n linesOfCode,\r\n displayName: templateData.displayName,\r\n success: true,\r\n typesPath: `${outputDir}/${componentName}.types.ts`,\r\n testPath: `${outputDir}/${componentName}.test.tsx`,\r\n };\r\n }\r\n\r\n /**\r\n * Generate template from multiple pages (template composition)\r\n *\r\n * @param template - Template definition\r\n * @param pages - Page definitions to include\r\n * @param designSystem - Design system to apply\r\n * @param tier - Quality tier\r\n * @param outputDir - Output directory\r\n * @param features - Tier-specific features\r\n * @returns Generation result\r\n */\r\n private generateTemplateComposition(\r\n template: RegistryTemplateDefinition,\r\n pages: RegistryPageDefinition[],\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n outputDir: string,\r\n features: TierFeatures\r\n ): GenerationResult {\r\n // Build template data\r\n const templateData = this.buildTemplateTemplateData(\r\n template,\r\n pages,\r\n designSystem,\r\n tier,\r\n features\r\n );\r\n\r\n // Generate component code\r\n const componentCode = this.generateTemplateComponentCode(\r\n templateData,\r\n template,\r\n pages,\r\n features\r\n );\r\n\r\n // Build file paths\r\n const componentName = this.getComponentFileName(template.id, designSystem, tier);\r\n const componentPath = `${outputDir}/${componentName}.tsx`;\r\n\r\n // Calculate LOC\r\n const linesOfCode = componentCode.split('\\n').length;\r\n\r\n return {\r\n componentPath,\r\n linesOfCode,\r\n displayName: templateData.displayName,\r\n success: true,\r\n typesPath: `${outputDir}/${componentName}.types.ts`,\r\n testPath: `${outputDir}/${componentName}.test.tsx`,\r\n };\r\n }\r\n\r\n /**\r\n * Build slots from page and sections\r\n */\r\n private buildSlots(\r\n page: RegistryPageDefinition,\r\n sections: RegistrySectionDefinition[]\r\n ): SlotDefinition[] {\r\n return page.sections.map((sectionId) => {\r\n const section = sections.find((s) => s.id === sectionId);\r\n if (section === undefined) {\r\n throw new Error(`Section ${sectionId} not found for page ${page.id}`);\r\n }\r\n\r\n return {\r\n name: section.id,\r\n component: section,\r\n required: true,\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Generate component code for slot-based composition\r\n */\r\n private generateSlotComponentCode(\r\n data: ComponentTemplateData,\r\n slots: SlotDefinition[],\r\n features: TierFeatures\r\n ): string {\r\n const code: string[] = [];\r\n\r\n // Header comment\r\n code.push('/**');\r\n code.push(` * ${data.componentName} - ${data.tier} tier`);\r\n code.push(` * ${data.description}`);\r\n code.push(' *');\r\n code.push(' * Composition: Slot-based (sections)');\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n\r\n // Imports\r\n const imports = this.buildImports(features);\r\n code.push(`import { ${imports.join(', ')} } from 'react';`);\r\n code.push('');\r\n\r\n // Import sections\r\n for (const slot of slots) {\r\n const sectionName = this.capitalizeFirst(slot.component.id.replace(/-/g, ''));\r\n code.push(`import { ${sectionName} } from '../sections/${slot.component.id}';`);\r\n }\r\n code.push('');\r\n\r\n // Props interface\r\n code.push(`interface ${data.propsInterface} {`);\r\n code.push(' readonly className?: string;');\r\n if (features.includeAnalytics) {\r\n code.push(' readonly analyticsEvent?: string;');\r\n }\r\n code.push('}');\r\n code.push('');\r\n\r\n // Component\r\n if (features.useMemo) {\r\n code.push(`export const ${data.componentName} = memo(`);\r\n }\r\n\r\n if (features.useForwardRef) {\r\n code.push(\r\n ` ${features.useMemo ? '' : `export const ${data.componentName} = `}forwardRef<HTMLDivElement, ${data.propsInterface}>(`\r\n );\r\n code.push(' ({ className, ...props }, ref) => {');\r\n } else {\r\n code.push(\r\n `export const ${data.componentName}: React.FC<${data.propsInterface}> = ({ className, ...props }) => {`\r\n );\r\n }\r\n\r\n // Component body\r\n code.push(' return (');\r\n code.push(` <div${features.useForwardRef ? ' ref={ref}' : ''} className={className}>`);\r\n\r\n // Render slots\r\n for (const slot of slots) {\r\n const sectionName = this.capitalizeFirst(slot.component.id.replace(/-/g, ''));\r\n code.push(` <${sectionName} />`);\r\n }\r\n\r\n code.push(' </div>');\r\n code.push(' );');\r\n\r\n // Close component\r\n if (features.useForwardRef) {\r\n code.push(' }');\r\n code.push(' )');\r\n } else {\r\n code.push('};');\r\n }\r\n\r\n if (features.useMemo) {\r\n code.push(');');\r\n }\r\n\r\n code.push('');\r\n\r\n // displayName\r\n if (features.setDisplayName) {\r\n code.push(`${data.componentName}.displayName = '${data.displayName}';`);\r\n }\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate component code for children-based composition\r\n */\r\n private generateChildrenComponentCode(\r\n data: ComponentTemplateData,\r\n layout: RegistryLayoutDefinition,\r\n features: TierFeatures\r\n ): string {\r\n const code: string[] = [];\r\n\r\n // Header comment\r\n code.push('/**');\r\n code.push(` * ${data.componentName} - ${data.tier} tier`);\r\n code.push(` * ${data.description}`);\r\n code.push(' *');\r\n code.push(' * Composition: Children-based (layout)');\r\n code.push(` * Structure: ${layout.structure}`);\r\n code.push(` * Header: ${layout.header}`);\r\n code.push(` * Footer: ${layout.footer}`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n\r\n // Imports\r\n const imports = this.buildImports(features);\r\n code.push(`import { ${imports.join(', ')} } from 'react';`);\r\n code.push('');\r\n\r\n // Props interface\r\n code.push(`interface ${data.propsInterface} {`);\r\n code.push(' readonly children: React.ReactNode;');\r\n code.push(' readonly className?: string;');\r\n if (features.includeAnalytics) {\r\n code.push(' readonly analyticsEvent?: string;');\r\n }\r\n code.push('}');\r\n code.push('');\r\n\r\n // Component\r\n if (features.useMemo) {\r\n code.push(`export const ${data.componentName} = memo(`);\r\n }\r\n\r\n if (features.useForwardRef) {\r\n code.push(\r\n ` ${features.useMemo ? '' : `export const ${data.componentName} = `}forwardRef<HTMLDivElement, ${data.propsInterface}>(`\r\n );\r\n code.push(' ({ children, className, ...props }, ref) => {');\r\n } else {\r\n code.push(\r\n `export const ${data.componentName}: React.FC<${data.propsInterface}> = ({ children, className, ...props }) => {`\r\n );\r\n }\r\n\r\n // Component body\r\n code.push(' return (');\r\n code.push(` <div${features.useForwardRef ? ' ref={ref}' : ''} className={className}>`);\r\n\r\n // Header\r\n if (layout.header !== 'none') {\r\n code.push(` <header className=\"${layout.header}\">`);\r\n code.push(' {/* Header content */}');\r\n code.push(' </header>');\r\n }\r\n\r\n // Main content\r\n code.push(' <main>');\r\n code.push(' {children}');\r\n code.push(' </main>');\r\n\r\n // Footer\r\n if (layout.footer !== 'none') {\r\n code.push(` <footer className=\"${layout.footer}\">`);\r\n code.push(' {/* Footer content */}');\r\n code.push(' </footer>');\r\n }\r\n\r\n code.push(' </div>');\r\n code.push(' );');\r\n\r\n // Close component\r\n if (features.useForwardRef) {\r\n code.push(' }');\r\n code.push(' )');\r\n } else {\r\n code.push('};');\r\n }\r\n\r\n if (features.useMemo) {\r\n code.push(');');\r\n }\r\n\r\n code.push('');\r\n\r\n // displayName\r\n if (features.setDisplayName) {\r\n code.push(`${data.componentName}.displayName = '${data.displayName}';`);\r\n }\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Generate component code for template composition\r\n */\r\n private generateTemplateComponentCode(\r\n data: ComponentTemplateData,\r\n template: RegistryTemplateDefinition,\r\n pages: RegistryPageDefinition[],\r\n features: TierFeatures\r\n ): string {\r\n const code: string[] = [];\r\n\r\n // Header comment\r\n code.push('/**');\r\n code.push(` * ${data.componentName} - ${data.tier} tier`);\r\n code.push(` * ${data.description}`);\r\n code.push(' *');\r\n code.push(' * Composition: Template (multi-page)');\r\n code.push(` * Category: ${template.category}`);\r\n code.push(` * Pages: ${template.pages.join(', ')}`);\r\n code.push(` * Stack: ${template.stack.join(', ')}`);\r\n code.push(' *');\r\n code.push(' * Powered by Nikkory');\r\n code.push(' */');\r\n code.push('');\r\n\r\n // Imports\r\n const imports = this.buildImports(features);\r\n code.push(`import { ${imports.join(', ')} } from 'react';`);\r\n code.push('');\r\n\r\n // Import pages\r\n for (const page of pages) {\r\n const pageName = this.capitalizeFirst(page.id.replace(/-/g, ''));\r\n code.push(`import { ${pageName} } from '../pages/${page.id}';`);\r\n }\r\n code.push('');\r\n\r\n // Props interface\r\n code.push(`interface ${data.propsInterface} {`);\r\n code.push(' readonly currentPage: string;');\r\n code.push(' readonly className?: string;');\r\n if (features.includeAnalytics) {\r\n code.push(' readonly analyticsEvent?: string;');\r\n }\r\n code.push('}');\r\n code.push('');\r\n\r\n // Component\r\n if (features.useMemo) {\r\n code.push(`export const ${data.componentName} = memo(`);\r\n }\r\n\r\n if (features.useForwardRef) {\r\n code.push(\r\n ` ${features.useMemo ? '' : `export const ${data.componentName} = `}forwardRef<HTMLDivElement, ${data.propsInterface}>(`\r\n );\r\n code.push(' ({ currentPage, className, ...props }, ref) => {');\r\n } else {\r\n code.push(\r\n `export const ${data.componentName}: React.FC<${data.propsInterface}> = ({ currentPage, className, ...props }) => {`\r\n );\r\n }\r\n\r\n // Component body\r\n code.push(' return (');\r\n code.push(` <div${features.useForwardRef ? ' ref={ref}' : ''} className={className}>`);\r\n\r\n // Render pages conditionally\r\n for (const page of pages) {\r\n const pageName = this.capitalizeFirst(page.id.replace(/-/g, ''));\r\n code.push(` {currentPage === '${page.id}' && <${pageName} />}`);\r\n }\r\n\r\n code.push(' </div>');\r\n code.push(' );');\r\n\r\n // Close component\r\n if (features.useForwardRef) {\r\n code.push(' }');\r\n code.push(' )');\r\n } else {\r\n code.push('};');\r\n }\r\n\r\n if (features.useMemo) {\r\n code.push(');');\r\n }\r\n\r\n code.push('');\r\n\r\n // displayName\r\n if (features.setDisplayName) {\r\n code.push(`${data.componentName}.displayName = '${data.displayName}';`);\r\n }\r\n\r\n return code.join('\\n');\r\n }\r\n\r\n /**\r\n * Build template data for page composition\r\n */\r\n private buildPageTemplateData(\r\n page: RegistryPageDefinition,\r\n _sections: RegistrySectionDefinition[],\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n _features: TierFeatures\r\n ): ComponentTemplateData {\r\n const componentName = this.getComponentName(page.id, designSystem, tier);\r\n const displayName = `${componentName}`;\r\n\r\n return {\r\n componentName,\r\n displayName,\r\n description: page.description,\r\n designSystem,\r\n tier,\r\n propsInterface: `${componentName}Props`,\r\n elementType: 'div',\r\n baseClasses: '',\r\n };\r\n }\r\n\r\n /**\r\n * Build template data for layout composition\r\n */\r\n private buildLayoutTemplateData(\r\n layout: RegistryLayoutDefinition,\r\n _pages: RegistryPageDefinition[],\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n _features: TierFeatures\r\n ): ComponentTemplateData {\r\n const componentName = this.getComponentName(layout.id, designSystem, tier);\r\n const displayName = `${componentName}`;\r\n\r\n return {\r\n componentName,\r\n displayName,\r\n description: layout.description,\r\n designSystem,\r\n tier,\r\n propsInterface: `${componentName}Props`,\r\n elementType: 'div',\r\n baseClasses: '',\r\n };\r\n }\r\n\r\n /**\r\n * Build template data for template composition\r\n */\r\n private buildTemplateTemplateData(\r\n template: RegistryTemplateDefinition,\r\n _pages: RegistryPageDefinition[],\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n _features: TierFeatures\r\n ): ComponentTemplateData {\r\n const componentName = this.getComponentName(template.id, designSystem, tier);\r\n const displayName = `${componentName}`;\r\n\r\n return {\r\n componentName,\r\n displayName,\r\n description: template.description,\r\n designSystem,\r\n tier,\r\n propsInterface: `${componentName}Props`,\r\n elementType: 'div',\r\n baseClasses: '',\r\n };\r\n }\r\n\r\n /**\r\n * Build imports based on features\r\n */\r\n private buildImports(features: TierFeatures): string[] {\r\n const imports: string[] = ['React'];\r\n\r\n if (features.useForwardRef === true) {\r\n imports.push('forwardRef');\r\n }\r\n\r\n if (features.useMemo === true) {\r\n imports.push('memo');\r\n }\r\n\r\n if (features.useCallback === true) {\r\n imports.push('useCallback');\r\n }\r\n\r\n return imports;\r\n }\r\n\r\n /**\r\n * Get component name from definition ID, design system, and tier\r\n */\r\n private getComponentName(id: string, designSystem: DesignSystem, tier: Tier): string {\r\n const parts = id.split('-');\r\n const base = parts.map((part) => this.capitalizeFirst(part)).join('');\r\n const ds = this.capitalizeFirst(designSystem.replace(/-/g, ''));\r\n const t = this.capitalizeFirst(tier);\r\n return `${ds}${base}${t}`;\r\n }\r\n\r\n /**\r\n * Get component file name\r\n */\r\n private getComponentFileName(id: string, designSystem: DesignSystem, tier: Tier): string {\r\n return `${designSystem}-${id}-${tier}`;\r\n }\r\n\r\n /**\r\n * Capitalize first letter of string\r\n */\r\n private capitalizeFirst(str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n}\r\n","/**\r\n * Slot Resolver\r\n * Resolves slots in sections to actual component instances\r\n *\r\n * @packageDocumentation\r\n * @module generators/SlotResolver\r\n * @since 4.0.0\r\n *\r\n * The SlotResolver:\r\n * 1. Takes SlotConfig definitions\r\n * 2. Looks up components from the component registry\r\n * 3. Resolves stored component instances\r\n * 4. Returns ready-to-render component configurations\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getComponentEntry, getAllComponentTypes } from '../registries/components-registry';\r\n\r\nimport type { SlotConfig, SlotPosition, ComponentType, DesignSystem, Tier } from '../types';\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Stored component instance in a slot\r\n * Represents a user's customized component placement\r\n */\r\nexport interface StoredComponentInSlot {\r\n /** Reference to component type */\r\n readonly componentRef: ComponentType;\r\n /** Unique instance ID for this placement */\r\n readonly instanceId: string;\r\n /** User's property overrides */\r\n readonly propOverrides: Record<string, unknown>;\r\n /** Order within the slot */\r\n readonly order: number;\r\n /** Whether visible in this section */\r\n readonly visible: boolean;\r\n}\r\n\r\n/**\r\n * Resolved component ready for rendering\r\n */\r\nexport interface ResolvedComponent {\r\n /** Component type */\r\n readonly componentType: ComponentType;\r\n /** Instance ID */\r\n readonly instanceId: string;\r\n /** Display name */\r\n readonly displayName: string;\r\n /** Category */\r\n readonly category: string;\r\n /** Final props (merged from defaults and overrides) */\r\n readonly props: Record<string, unknown>;\r\n /** Whether component supports the design system */\r\n readonly supportsDesignSystem: boolean;\r\n /** Whether component supports the tier */\r\n readonly supportsTier: boolean;\r\n /** Render order */\r\n readonly order: number;\r\n /** Visibility */\r\n readonly visible: boolean;\r\n}\r\n\r\n/**\r\n * Resolved slot with all components\r\n */\r\nexport interface ResolvedSlot {\r\n /** Slot ID */\r\n readonly slotId: string;\r\n /** Slot position */\r\n readonly position: SlotPosition;\r\n /** Resolved components */\r\n readonly components: readonly ResolvedComponent[];\r\n /** Number of components */\r\n readonly componentCount: number;\r\n /** Whether slot is empty */\r\n readonly isEmpty: boolean;\r\n /** Whether slot has room for more components */\r\n readonly hasCapacity: boolean;\r\n /** Remaining capacity */\r\n readonly remainingCapacity: number;\r\n}\r\n\r\n/**\r\n * Slot resolution input\r\n */\r\nexport interface SlotResolutionInput {\r\n /** Slot configuration */\r\n readonly slot: SlotConfig;\r\n /** Stored components in slot */\r\n readonly storedComponents: readonly StoredComponentInSlot[];\r\n /** Design system context */\r\n readonly designSystem: DesignSystem;\r\n /** Tier context */\r\n readonly tier: Tier;\r\n}\r\n\r\n/**\r\n * Slot resolution result\r\n */\r\nexport interface SlotResolutionResult {\r\n /** Whether resolution succeeded */\r\n readonly success: boolean;\r\n /** Error message if failed */\r\n readonly error?: string;\r\n /** Resolved slot */\r\n readonly slot: ResolvedSlot;\r\n /** Warnings (e.g., incompatible components) */\r\n readonly warnings: readonly string[];\r\n}\r\n\r\n/**\r\n * Batch slot resolution input\r\n */\r\nexport interface BatchSlotResolutionInput {\r\n /** Slot configurations */\r\n readonly slots: readonly SlotConfig[];\r\n /** Map of slot ID to stored components */\r\n readonly storedComponentsMap: Record<string, readonly StoredComponentInSlot[]>;\r\n /** Design system context */\r\n readonly designSystem: DesignSystem;\r\n /** Tier context */\r\n readonly tier: Tier;\r\n}\r\n\r\n/**\r\n * Batch slot resolution result\r\n */\r\nexport interface BatchSlotResolutionResult {\r\n /** Whether all resolutions succeeded */\r\n readonly success: boolean;\r\n /** Resolved slots by ID */\r\n readonly slots: Record<string, ResolvedSlot>;\r\n /** All warnings */\r\n readonly warnings: readonly string[];\r\n /** Total components resolved */\r\n readonly totalComponentsResolved: number;\r\n}\r\n\r\n/**\r\n * Slot resolver options\r\n */\r\nexport interface SlotResolverOptions {\r\n /** Include default components if slot is empty */\r\n readonly includeDefaults?: boolean;\r\n /** Filter out invisible components */\r\n readonly filterInvisible?: boolean;\r\n /** Validate component compatibility */\r\n readonly validateCompatibility?: boolean;\r\n /** Strict mode - fail on incompatible components */\r\n readonly strictMode?: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// SLOT RESOLVER CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Slot Resolver\r\n *\r\n * Resolves slots in sections to actual component instances.\r\n * Handles component lookup, validation, and prop merging.\r\n *\r\n * @example\r\n * ```typescript\r\n * const resolver = new SlotResolver();\r\n *\r\n * const result = resolver.resolve({\r\n * slot: {\r\n * slotId: 'header-slot',\r\n * position: 'header',\r\n * allowedComponents: ['button', 'input'],\r\n * maxComponents: 3,\r\n * },\r\n * storedComponents: [\r\n * {\r\n * componentRef: 'button',\r\n * instanceId: 'btn-1',\r\n * propOverrides: { variant: 'primary' },\r\n * order: 0,\r\n * visible: true,\r\n * }\r\n * ],\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * });\r\n *\r\n * console.log(result.slot.components);\r\n * ```\r\n */\r\nexport class SlotResolver {\r\n private readonly options: Required<SlotResolverOptions>;\r\n\r\n /**\r\n * Create a new SlotResolver instance\r\n *\r\n * @param options - Resolver options\r\n */\r\n constructor(options: SlotResolverOptions = {}) {\r\n this.options = {\r\n includeDefaults: true,\r\n filterInvisible: true,\r\n validateCompatibility: true,\r\n strictMode: false,\r\n ...options,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Resolve a single slot\r\n *\r\n * @param input - Slot resolution input\r\n * @returns Slot resolution result\r\n */\r\n public resolve(input: SlotResolutionInput): SlotResolutionResult {\r\n const { slot, storedComponents, designSystem, tier } = input;\r\n const warnings: string[] = [];\r\n\r\n try {\r\n // Step 1: Get components to process\r\n let components = [...storedComponents];\r\n\r\n // Step 2: Add default component if slot is empty and option enabled\r\n if (\r\n components.length === 0 &&\r\n this.options.includeDefaults &&\r\n slot.defaultComponent !== undefined\r\n ) {\r\n components.push({\r\n componentRef: slot.defaultComponent,\r\n instanceId: `default-${slot.slotId}`,\r\n propOverrides: {},\r\n order: 0,\r\n visible: true,\r\n });\r\n }\r\n\r\n // Step 3: Filter invisible components if option enabled\r\n if (this.options.filterInvisible) {\r\n components = components.filter((c) => c.visible);\r\n }\r\n\r\n // Step 4: Sort by order\r\n components.sort((a, b) => a.order - b.order);\r\n\r\n // Step 5: Resolve each component\r\n const resolvedComponents: ResolvedComponent[] = [];\r\n\r\n for (const stored of components) {\r\n const resolved = this.resolveComponent(stored, slot, designSystem, tier, warnings);\r\n if (resolved !== undefined) {\r\n resolvedComponents.push(resolved);\r\n }\r\n }\r\n\r\n // Step 6: Build resolved slot\r\n const resolvedSlot: ResolvedSlot = {\r\n slotId: slot.slotId,\r\n position: slot.position,\r\n components: resolvedComponents,\r\n componentCount: resolvedComponents.length,\r\n isEmpty: resolvedComponents.length === 0,\r\n hasCapacity: resolvedComponents.length < slot.maxComponents,\r\n remainingCapacity: slot.maxComponents - resolvedComponents.length,\r\n };\r\n\r\n return {\r\n success: true,\r\n slot: resolvedSlot,\r\n warnings,\r\n };\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n return {\r\n success: false,\r\n error: errorMessage,\r\n slot: this.createEmptySlot(slot),\r\n warnings,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Resolve multiple slots in batch\r\n *\r\n * @param input - Batch resolution input\r\n * @returns Batch resolution result\r\n */\r\n public resolveBatch(input: BatchSlotResolutionInput): BatchSlotResolutionResult {\r\n const { slots, storedComponentsMap, designSystem, tier } = input;\r\n const allWarnings: string[] = [];\r\n const resolvedSlots: Record<string, ResolvedSlot> = {};\r\n let totalComponents = 0;\r\n let allSuccess = true;\r\n\r\n for (const slot of slots) {\r\n const storedComponents = storedComponentsMap[slot.slotId] ?? [];\r\n const result = this.resolve({\r\n slot,\r\n storedComponents,\r\n designSystem,\r\n tier,\r\n });\r\n\r\n if (!result.success) {\r\n allSuccess = false;\r\n }\r\n\r\n resolvedSlots[slot.slotId] = result.slot;\r\n allWarnings.push(...result.warnings);\r\n totalComponents += result.slot.componentCount;\r\n }\r\n\r\n return {\r\n success: allSuccess,\r\n slots: resolvedSlots,\r\n warnings: allWarnings,\r\n totalComponentsResolved: totalComponents,\r\n };\r\n }\r\n\r\n /**\r\n * Check if a component is allowed in a slot\r\n *\r\n * @param componentType - Component type to check\r\n * @param slot - Slot configuration\r\n * @returns Whether component is allowed\r\n */\r\n public isComponentAllowed(componentType: ComponentType, slot: SlotConfig): boolean {\r\n return slot.allowedComponents.includes(componentType);\r\n }\r\n\r\n /**\r\n * Check if a component supports a design system\r\n *\r\n * @param componentType - Component type\r\n * @param designSystem - Design system\r\n * @returns Whether component supports the design system\r\n */\r\n public componentSupportsDesignSystem(\r\n componentType: ComponentType,\r\n designSystem: DesignSystem\r\n ): boolean {\r\n const entry = getComponentEntry(componentType);\r\n if (entry === undefined) {\r\n return false;\r\n }\r\n return entry.designSystems.includes(designSystem);\r\n }\r\n\r\n /**\r\n * Check if a component supports a tier\r\n *\r\n * @param componentType - Component type\r\n * @param tier - Quality tier\r\n * @returns Whether component supports the tier\r\n */\r\n public componentSupportsTier(componentType: ComponentType, tier: Tier): boolean {\r\n const entry = getComponentEntry(componentType);\r\n if (entry === undefined) {\r\n return false;\r\n }\r\n return entry.tiers.includes(tier);\r\n }\r\n\r\n /**\r\n * Get all allowed components for a slot that support a design system and tier\r\n *\r\n * @param slot - Slot configuration\r\n * @param designSystem - Design system\r\n * @param tier - Quality tier\r\n * @returns Array of compatible component types\r\n */\r\n public getCompatibleComponents(\r\n slot: SlotConfig,\r\n designSystem: DesignSystem,\r\n tier: Tier\r\n ): ComponentType[] {\r\n return slot.allowedComponents.filter((componentType) => {\r\n return (\r\n this.componentSupportsDesignSystem(componentType, designSystem) &&\r\n this.componentSupportsTier(componentType, tier)\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Lookup a component by type\r\n *\r\n * @param componentType - Component type to lookup\r\n * @returns Component entry or undefined\r\n */\r\n public lookupComponent(componentType: ComponentType): ReturnType<typeof getComponentEntry> {\r\n return getComponentEntry(componentType);\r\n }\r\n\r\n /**\r\n * Get all available component types\r\n *\r\n * @returns Array of all component types\r\n */\r\n public getAllComponentTypes(): ComponentType[] {\r\n return getAllComponentTypes();\r\n }\r\n\r\n /**\r\n * Validate slot configuration\r\n *\r\n * @param slot - Slot configuration to validate\r\n * @returns Validation result\r\n */\r\n public validateSlot(slot: SlotConfig): { valid: boolean; errors: string[] } {\r\n const errors: string[] = [];\r\n\r\n if (slot.slotId === '' || slot.slotId === undefined) {\r\n errors.push('Slot ID is required');\r\n }\r\n\r\n if (slot.position === undefined) {\r\n errors.push('Slot position is required');\r\n }\r\n\r\n if (slot.allowedComponents.length === 0) {\r\n errors.push('At least one allowed component is required');\r\n }\r\n\r\n if (slot.maxComponents < 1) {\r\n errors.push('Max components must be at least 1');\r\n }\r\n\r\n // Validate all allowed components exist\r\n for (const componentType of slot.allowedComponents) {\r\n const entry = getComponentEntry(componentType);\r\n if (entry === undefined) {\r\n errors.push(`Unknown component type: ${componentType}`);\r\n }\r\n }\r\n\r\n // Validate default component is in allowed list\r\n if (\r\n slot.defaultComponent !== undefined &&\r\n !slot.allowedComponents.includes(slot.defaultComponent)\r\n ) {\r\n errors.push('Default component must be in the allowed components list');\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Resolve a single component\r\n */\r\n private resolveComponent(\r\n stored: StoredComponentInSlot,\r\n slot: SlotConfig,\r\n designSystem: DesignSystem,\r\n tier: Tier,\r\n warnings: string[]\r\n ): ResolvedComponent | undefined {\r\n const { componentRef, instanceId, propOverrides, order, visible } = stored;\r\n\r\n // Check if component is allowed in slot\r\n if (this.options.validateCompatibility && !this.isComponentAllowed(componentRef, slot)) {\r\n const message = `Component '${componentRef}' is not allowed in slot '${slot.slotId}'`;\r\n if (this.options.strictMode) {\r\n throw new Error(message);\r\n }\r\n warnings.push(message);\r\n return undefined;\r\n }\r\n\r\n // Lookup component entry\r\n const entry = getComponentEntry(componentRef);\r\n if (entry === undefined) {\r\n const message = `Unknown component type: ${componentRef}`;\r\n if (this.options.strictMode) {\r\n throw new Error(message);\r\n }\r\n warnings.push(message);\r\n return undefined;\r\n }\r\n\r\n // Check design system compatibility\r\n const supportsDesignSystem = this.componentSupportsDesignSystem(componentRef, designSystem);\r\n if (this.options.validateCompatibility && !supportsDesignSystem) {\r\n warnings.push(`Component '${componentRef}' may not support design system '${designSystem}'`);\r\n }\r\n\r\n // Check tier compatibility\r\n const supportsTier = this.componentSupportsTier(componentRef, tier);\r\n if (this.options.validateCompatibility && !supportsTier) {\r\n warnings.push(`Component '${componentRef}' may not support tier '${tier}'`);\r\n }\r\n\r\n // Merge default props with overrides\r\n const defaultProps = this.getDefaultProps(componentRef, designSystem, tier);\r\n const mergedProps = { ...defaultProps, ...propOverrides };\r\n\r\n return {\r\n componentType: componentRef,\r\n instanceId,\r\n displayName: entry.name,\r\n category: entry.category,\r\n props: mergedProps,\r\n supportsDesignSystem,\r\n supportsTier,\r\n order,\r\n visible,\r\n };\r\n }\r\n\r\n /**\r\n * Get default props for a component\r\n */\r\n private getDefaultProps(\r\n _componentType: ComponentType,\r\n designSystem: DesignSystem,\r\n tier: Tier\r\n ): Record<string, unknown> {\r\n // Base default props\r\n const props: Record<string, unknown> = {\r\n designSystem,\r\n tier,\r\n };\r\n\r\n // Add tier-specific defaults\r\n if (tier === 'enterprise') {\r\n props['testId'] = undefined;\r\n props['analyticsEvent'] = undefined;\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /**\r\n * Create an empty resolved slot\r\n */\r\n private createEmptySlot(slot: SlotConfig): ResolvedSlot {\r\n return {\r\n slotId: slot.slotId,\r\n position: slot.position,\r\n components: [],\r\n componentCount: 0,\r\n isEmpty: true,\r\n hasCapacity: true,\r\n remainingCapacity: slot.maxComponents,\r\n };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new SlotResolver instance\r\n *\r\n * @param options - Resolver options\r\n * @returns New SlotResolver instance\r\n */\r\nexport function createSlotResolver(options: SlotResolverOptions = {}): SlotResolver {\r\n return new SlotResolver(options);\r\n}\r\n\r\n/**\r\n * Resolve a slot (convenience wrapper)\r\n *\r\n * @param input - Slot resolution input\r\n * @returns Slot resolution result\r\n */\r\nexport function resolveSlot(input: SlotResolutionInput): SlotResolutionResult {\r\n const resolver = new SlotResolver();\r\n return resolver.resolve(input);\r\n}\r\n\r\n/**\r\n * Resolve multiple slots (convenience wrapper)\r\n *\r\n * @param input - Batch resolution input\r\n * @returns Batch resolution result\r\n */\r\nexport function resolveSlots(input: BatchSlotResolutionInput): BatchSlotResolutionResult {\r\n const resolver = new SlotResolver();\r\n return resolver.resolveBatch(input);\r\n}\r\n\r\n/**\r\n * Check if a component is allowed in a slot (convenience wrapper)\r\n *\r\n * @param componentType - Component type\r\n * @param slot - Slot configuration\r\n * @returns Whether component is allowed\r\n */\r\nexport function isComponentAllowedInSlot(componentType: ComponentType, slot: SlotConfig): boolean {\r\n const resolver = new SlotResolver();\r\n return resolver.isComponentAllowed(componentType, slot);\r\n}\r\n","/**\n * Base Types for Unified Granularity Architecture\n *\n * This file defines the core types for the 6-level granularity system,\n * replacing duplicate Section/Page/Layout/Template patterns with a\n * unified generic approach.\n *\n * @packageDocumentation\n * @module types/granularity\n * @since 4.0.0\n *\n * Powered by Nikkory\n */\n\nimport type { DesignSystem, Tier } from '../index';\n\n// ============================================================================\n// GRANULARITY LEVELS\n// ============================================================================\n\n/**\n * 6 Granularity Levels - Component hierarchy from smallest to largest\n *\n * @category types\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * const level: GranularityLevel = 'section';\n * const config: GranularityConfig<'page'> = { ... };\n * ```\n *\n * Powered by Nikkory\n */\nexport type GranularityLevel =\n | 'atom' // Smallest: Button, Input, Icon (40+ types)\n | 'component' // Medium: Card, Modal, Dropdown (100+ types)\n | 'section' // Large: Hero, Pricing, Testimonials (50+ types)\n | 'page' // Full page: Landing, Dashboard (30+ types)\n | 'layout' // Page wrapper: AppLayout, AuthLayout (10+ types)\n | 'template'; // Complete app: Admin, E-commerce (20+ types)\n\n/**\n * Granularity hierarchy for cascade - ordered from highest to lowest\n *\n * Higher levels cascade factors DOWN to lower levels.\n * Template is the highest level (6), Atom is the lowest (1).\n *\n * @category constants\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * // Iterate from highest to lowest\n * for (const level of GRANULARITY_HIERARCHY) {\n * console.log(level); // template, layout, page, section, component, atom\n * }\n * ```\n *\n * Powered by Nikkory\n */\nexport const GRANULARITY_HIERARCHY: readonly GranularityLevel[] = [\n 'template', // Level 6 - Highest\n 'layout', // Level 5\n 'page', // Level 4\n 'section', // Level 3\n 'component', // Level 2\n 'atom', // Level 1 - Lowest\n] as const;\n\n/**\n * Get numeric rank for a granularity level\n *\n * Returns a number where:\n * - template = 6 (highest)\n * - layout = 5\n * - page = 4\n * - section = 3\n * - component = 2\n * - atom = 1 (lowest)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param level - The granularity level to get rank for\n * @returns Numeric rank (1-6)\n *\n * @example\n * ```typescript\n * getGranularityRank('template'); // 6\n * getGranularityRank('atom'); // 1\n * getGranularityRank('section'); // 3\n *\n * // Use for comparison\n * if (getGranularityRank(a) > getGranularityRank(b)) {\n * // a is higher level than b\n * }\n * ```\n *\n * Powered by Nikkory\n */\nexport function getGranularityRank(level: GranularityLevel): number {\n return GRANULARITY_HIERARCHY.length - GRANULARITY_HIERARCHY.indexOf(level);\n}\n\n// ============================================================================\n// FACTOR CATEGORIES\n// ============================================================================\n\n/**\n * Factor categories for grouping related factors\n *\n * @category types\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * const category: FactorCategory = 'visual';\n * ```\n *\n * Powered by Nikkory\n */\nexport type GranularityFactorCategory =\n | 'visual' // Colors, typography, borders\n | 'layout' // Spacing, alignment, positioning\n | 'behavior' // Animation, interaction, state\n | 'responsive' // Breakpoints, mobile behavior\n | 'a11y'; // Accessibility features\n\n// ============================================================================\n// FACTOR DEFINITION\n// ============================================================================\n\n/**\n * Factor definition with level and cascade behavior\n *\n * This REPLACES hardcoded 8/13/24 factor arrays with a dynamic\n * registry-based approach where each factor specifies its minimum\n * level and whether it cascades down to child granularities.\n *\n * @category types\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * const spacingFactor: GranularityFactorDefinition = {\n * id: 'spacing',\n * name: 'Spacing',\n * category: 'layout',\n * level: 'template',\n * cascadeDown: true,\n * defaults: {\n * 'material-design': 'md',\n * 'ios-hig': 'sm'\n * },\n * options: ['xs', 'sm', 'md', 'lg', 'xl'],\n * description: 'Controls spacing between elements'\n * };\n * ```\n *\n * Powered by Nikkory\n */\nexport interface GranularityFactorDefinition {\n /** Factor unique identifier */\n readonly id: string;\n\n /** Human-readable name */\n readonly name: string;\n\n /** Factor category */\n readonly category: GranularityFactorCategory;\n\n /** Minimum granularity level where this factor applies */\n readonly level: GranularityLevel;\n\n /** Whether factor cascades DOWN to child granularities */\n readonly cascadeDown: boolean;\n\n /** Default value per design system */\n readonly defaults: Partial<Record<DesignSystem, unknown>>;\n\n /** Possible values */\n readonly options?: readonly unknown[];\n\n /** Description for documentation */\n readonly description: string;\n}\n\n// ============================================================================\n// SUPPORTING TYPES\n// ============================================================================\n\n/**\n * Template visibility levels for sharing\n *\n * @category types\n * @since 4.0.0\n *\n * Powered by Nikkory\n */\nexport type GranularityTemplateVisibility = 'private' | 'team' | 'public';\n\n/**\n * Layout configuration for slot arrangements\n *\n * @category types\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * const layout: LayoutConfig = {\n * type: 'grid',\n * columns: 3,\n * gap: 'md',\n * alignment: 'center'\n * };\n * ```\n *\n * Powered by Nikkory\n */\nexport interface GranularityLayoutConfig {\n readonly type: 'grid' | 'flex' | 'stack' | 'masonry' | 'carousel';\n readonly columns?: 1 | 2 | 3 | 4 | 6;\n readonly gap?: GranularitySpacingLevel;\n readonly alignment?: GranularityAlignmentType;\n}\n\n/**\n * Spacing levels for consistent spacing scale\n *\n * @category types\n * @since 4.0.0\n *\n * Powered by Nikkory\n */\nexport type GranularitySpacingLevel = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/**\n * Alignment types for layout positioning\n *\n * @category types\n * @since 4.0.0\n *\n * Powered by Nikkory\n */\nexport type GranularityAlignmentType = 'start' | 'center' | 'end' | 'stretch' | 'between';\n\n/**\n * Style overrides for customization\n *\n * @category types\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * const styles: StyleOverrides = {\n * className: 'custom-section',\n * tailwindClasses: 'bg-gray-100 p-4 rounded-lg'\n * };\n * ```\n *\n * Powered by Nikkory\n */\nexport interface GranularityStyleOverrides {\n readonly className?: string;\n readonly style?: Record<string, string>;\n readonly tailwindClasses?: string;\n}\n\n/**\n * Factor values map - key-value pairs for resolved factors\n *\n * @category types\n * @since 4.0.0\n *\n * @example\n * ```typescript\n * const factors: FactorValues = {\n * spacing: 'md',\n * colorPrimary: '#3B82F6',\n * borderRadius: 'lg'\n * };\n * ```\n *\n * Powered by Nikkory\n */\nexport type GranularityFactorValues = Record<string, unknown>;\n\n// ============================================================================\n// GRANULARITY BASE FIELDS\n// ============================================================================\n\n/**\n * Base fields shared by ALL granularity levels\n *\n * This interface defines the common fields that every granularity\n * config must have, regardless of whether it's an atom, component,\n * section, page, layout, or template.\n *\n * @category types\n * @since 4.0.0\n *\n * @typeParam G - The granularity level this config is for\n *\n * @example\n * ```typescript\n * interface MySectionConfig extends GranularityBaseFields<'section'> {\n * customField: string;\n * }\n * ```\n *\n * Powered by Nikkory\n */\nexport interface GranularityBaseFields<G extends GranularityLevel> {\n /** Unique identifier */\n readonly id: string;\n\n /** Granularity level */\n readonly granularity: G;\n\n /** Design system */\n readonly designSystem: DesignSystem;\n\n /** Quality tier */\n readonly tier: Tier;\n\n /** Display title */\n readonly title: string;\n\n /** Optional subtitle/description */\n readonly subtitle?: string;\n}\n","/**\r\n * Layout Registry - 10 Layout Definitions\r\n * @packageDocumentation\r\n * @module presets/layout-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { RegistryLayoutDefinition } from './registry.types';\r\n\r\n/**\r\n * All layout definitions (10 total)\r\n *\r\n * Categories:\r\n * - Standard (4): Basic layouts with header/footer\r\n * - Dashboard (3): Admin/app layouts\r\n * - Landing (2): Marketing page layouts\r\n * - Blog (1): Blog-specific layout\r\n */\r\nexport const ALL_LAYOUTS: readonly RegistryLayoutDefinition[] = [\r\n // ============================================================\r\n // STANDARD LAYOUTS (4)\r\n // ============================================================\r\n {\r\n id: 'standard-header-footer',\r\n name: 'Standard Layout',\r\n status: 'stable',\r\n description: 'Standard layout with sticky header and footer',\r\n keywords: ['layout', 'header', 'footer', 'standard'],\r\n phase: '4A',\r\n icon: 'LayoutGrid',\r\n emoji: '📐',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['layout', 'standard', 'basic'],\r\n category: 'standard',\r\n structure: 'standard',\r\n responsive: 'fluid',\r\n header: 'sticky',\r\n footer: 'standard',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n {\r\n id: 'standard-fixed-header',\r\n name: 'Fixed Header Layout',\r\n status: 'stable',\r\n description: 'Layout with fixed header and minimal footer',\r\n keywords: ['layout', 'fixed', 'header', 'minimal'],\r\n phase: '4A',\r\n icon: 'Layout',\r\n emoji: '🏗️',\r\n designSystems: ['material-design', 'ios-hig', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['layout', 'fixed', 'minimal'],\r\n category: 'standard',\r\n structure: 'standard',\r\n responsive: 'fluid',\r\n header: 'fixed',\r\n footer: 'minimal',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n {\r\n id: 'standard-static',\r\n name: 'Static Layout',\r\n status: 'stable',\r\n description: 'Simple static layout with no sticky elements',\r\n keywords: ['layout', 'static', 'simple', 'basic'],\r\n phase: '4A',\r\n icon: 'Square',\r\n emoji: '📄',\r\n designSystems: ['material-design', 'ios-hig', 'brutalism', 'minimalism'],\r\n tiers: ['basic', 'standard'],\r\n tags: ['layout', 'static', 'simple'],\r\n category: 'standard',\r\n structure: 'standard',\r\n responsive: 'fluid',\r\n header: 'static',\r\n footer: 'standard',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n {\r\n id: 'standard-no-footer',\r\n name: 'No Footer Layout',\r\n status: 'stable',\r\n description: 'Clean layout without footer for app-like experiences',\r\n keywords: ['layout', 'no-footer', 'app', 'clean'],\r\n phase: '4A',\r\n icon: 'RectangleHorizontal',\r\n emoji: '▭',\r\n designSystems: ['material-design', 'ios-hig', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['layout', 'app', 'minimal'],\r\n category: 'standard',\r\n structure: 'standard',\r\n responsive: 'fluid',\r\n header: 'sticky',\r\n footer: 'none',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n // ============================================================\r\n // DASHBOARD LAYOUTS (3)\r\n // ============================================================\r\n {\r\n id: 'dashboard-sidebar',\r\n name: 'Dashboard with Sidebar',\r\n status: 'stable',\r\n description: 'Admin dashboard with collapsible sidebar navigation',\r\n keywords: ['dashboard', 'sidebar', 'admin', 'navigation'],\r\n phase: '4A',\r\n icon: 'LayoutDashboard',\r\n emoji: '📊',\r\n designSystems: ['material-design', 'ios-hig', 'glassmorphism', 'neumorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['dashboard', 'admin', 'sidebar'],\r\n category: 'dashboard',\r\n structure: 'sidebar',\r\n responsive: 'hybrid',\r\n header: 'fixed',\r\n footer: 'none',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n {\r\n id: 'dashboard-split',\r\n name: 'Split Dashboard',\r\n status: 'stable',\r\n description: 'Dashboard with split-pane layout for data visualization',\r\n keywords: ['dashboard', 'split', 'data', 'analytics'],\r\n phase: '4A',\r\n icon: 'PanelLeftClose',\r\n emoji: '⚡',\r\n designSystems: ['material-design', 'glassmorphism', 'minimalism'],\r\n tiers: ['enterprise'],\r\n isNew: true,\r\n tags: ['dashboard', 'split', 'analytics'],\r\n category: 'dashboard',\r\n structure: 'split',\r\n responsive: 'fixed',\r\n header: 'fixed',\r\n footer: 'none',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n {\r\n id: 'dashboard-standard',\r\n name: 'Standard Dashboard',\r\n status: 'stable',\r\n description: 'Traditional dashboard layout with top navigation',\r\n keywords: ['dashboard', 'standard', 'admin', 'top-nav'],\r\n phase: '4A',\r\n icon: 'LayoutTemplate',\r\n emoji: '📈',\r\n designSystems: ['material-design', 'ios-hig', 'neumorphism', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['dashboard', 'standard', 'admin'],\r\n category: 'dashboard',\r\n structure: 'dashboard',\r\n responsive: 'fluid',\r\n header: 'sticky',\r\n footer: 'minimal',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n // ============================================================\r\n // LANDING LAYOUTS (2)\r\n // ============================================================\r\n {\r\n id: 'landing-fullwidth',\r\n name: 'Full-Width Landing',\r\n status: 'stable',\r\n description: 'Full-width landing page layout for marketing sites',\r\n keywords: ['landing', 'marketing', 'fullwidth', 'hero'],\r\n phase: '4A',\r\n icon: 'Maximize2',\r\n emoji: '🚀',\r\n designSystems: ['material-design', 'glassmorphism', 'brutalism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['landing', 'marketing', 'fullwidth'],\r\n category: 'landing',\r\n structure: 'standard',\r\n responsive: 'fluid',\r\n header: 'sticky',\r\n footer: 'standard',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n {\r\n id: 'landing-centered',\r\n name: 'Centered Landing',\r\n status: 'stable',\r\n description: 'Centered content landing page with max-width container',\r\n keywords: ['landing', 'centered', 'contained', 'marketing'],\r\n phase: '4A',\r\n icon: 'AlignCenter',\r\n emoji: '🎯',\r\n designSystems: ['material-design', 'ios-hig', 'neumorphism', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['landing', 'centered', 'contained'],\r\n category: 'landing',\r\n structure: 'standard',\r\n responsive: 'fluid',\r\n header: 'sticky',\r\n footer: 'standard',\r\n } as const satisfies RegistryLayoutDefinition,\r\n\r\n // ============================================================\r\n // BLOG LAYOUTS (1)\r\n // ============================================================\r\n {\r\n id: 'blog-sidebar',\r\n name: 'Blog with Sidebar',\r\n status: 'stable',\r\n description: 'Blog layout with sidebar for categories and recent posts',\r\n keywords: ['blog', 'sidebar', 'content', 'articles'],\r\n phase: '4A',\r\n icon: 'Newspaper',\r\n emoji: '📰',\r\n designSystems: ['material-design', 'ios-hig', 'neumorphism', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['blog', 'sidebar', 'content'],\r\n category: 'blog',\r\n structure: 'sidebar',\r\n responsive: 'fluid',\r\n header: 'sticky',\r\n footer: 'standard',\r\n } as const satisfies RegistryLayoutDefinition,\r\n];\r\n\r\nexport type { RegistryLayoutDefinition };\r\n","/**\r\n * Page Registry - SINGLE SOURCE OF TRUTH\r\n * @packageDocumentation\r\n * @module presets/page-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { RegistryPageDefinition } from './registry.types';\r\n\r\n/**\r\n * All page definitions (30 pages across 7 categories)\r\n *\r\n * Categories:\r\n * - Marketing (8): landing, about, services, features, blog-home, contact, pricing, careers\r\n * - E-commerce (6): product-list, product-detail, cart, checkout, order-confirmation, account\r\n * - SaaS (5): home, pricing, features, dashboard, docs\r\n * - Portfolio (3): home, project-detail, contact\r\n * - Blog (3): home, post, category\r\n * - Docs (3): home, article, search\r\n * - App (2): dashboard, settings\r\n */\r\nexport const ALL_PAGES: readonly RegistryPageDefinition[] = [\r\n // ============================================================\r\n // MARKETING PAGES (8)\r\n // ============================================================\r\n {\r\n id: 'marketing-landing',\r\n name: 'Marketing Landing Page',\r\n status: 'stable',\r\n description: 'Complete landing page with hero, features, testimonials, and CTA',\r\n keywords: ['landing', 'marketing', 'conversion', 'home'],\r\n phase: '4A',\r\n icon: 'Home',\r\n emoji: '🏠',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['landing', 'marketing', 'conversion'],\r\n category: 'marketing',\r\n sections: [\r\n 'hero-centered',\r\n 'features-grid',\r\n 'testimonials-grid',\r\n 'pricing-cards',\r\n 'cta-centered',\r\n ],\r\n pageType: 'landing',\r\n seo: 'critical',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-about',\r\n name: 'About Us Page',\r\n status: 'stable',\r\n description: 'Company story, team, values, and mission',\r\n keywords: ['about', 'team', 'company', 'mission'],\r\n phase: '4A',\r\n icon: 'Users',\r\n emoji: '👥',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['about', 'team', 'company'],\r\n category: 'marketing',\r\n sections: ['hero-minimal', 'stats-numbers', 'team-grid', 'testimonials-carousel', 'cta-banner'],\r\n pageType: 'about',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-services',\r\n name: 'Services Page',\r\n status: 'stable',\r\n description: 'Service offerings with detailed descriptions',\r\n keywords: ['services', 'offerings', 'features'],\r\n phase: '4A',\r\n icon: 'Briefcase',\r\n emoji: '💼',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['services', 'features'],\r\n category: 'marketing',\r\n sections: [\r\n 'hero-split',\r\n 'features-alternating',\r\n 'pricing-simple',\r\n 'faq-accordion',\r\n 'cta-centered',\r\n ],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-features',\r\n name: 'Features Page',\r\n status: 'stable',\r\n description: 'Comprehensive product features showcase',\r\n keywords: ['features', 'capabilities', 'product'],\r\n phase: '4A',\r\n icon: 'Sparkles',\r\n emoji: '✨',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['features', 'product'],\r\n category: 'marketing',\r\n sections: [\r\n 'hero-gradient',\r\n 'features-tabs',\r\n 'features-comparison',\r\n 'testimonials-featured',\r\n 'cta-split',\r\n ],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-blog-home',\r\n name: 'Blog Home Page',\r\n status: 'stable',\r\n description: 'Blog listing with categories and featured posts',\r\n keywords: ['blog', 'articles', 'content', 'news'],\r\n phase: '4A',\r\n icon: 'BookOpen',\r\n emoji: '📖',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['blog', 'content'],\r\n category: 'marketing',\r\n sections: ['hero-minimal', 'features-cards', 'cta-newsletter'],\r\n pageType: 'blog-post',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-contact',\r\n name: 'Contact Page',\r\n status: 'stable',\r\n description: 'Contact form with location and support info',\r\n keywords: ['contact', 'support', 'form', 'help'],\r\n phase: '4A',\r\n icon: 'Mail',\r\n emoji: '✉️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['contact', 'support'],\r\n category: 'marketing',\r\n sections: ['hero-minimal', 'contact-split', 'faq-two-column', 'cta-banner'],\r\n pageType: 'contact',\r\n seo: 'standard',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-pricing',\r\n name: 'Pricing Page',\r\n status: 'stable',\r\n description: 'Pricing tiers with feature comparison',\r\n keywords: ['pricing', 'plans', 'subscription', 'cost'],\r\n phase: '4A',\r\n icon: 'DollarSign',\r\n emoji: '💰',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['pricing', 'conversion'],\r\n category: 'marketing',\r\n sections: [\r\n 'hero-centered',\r\n 'pricing-toggle',\r\n 'features-comparison',\r\n 'faq-accordion',\r\n 'cta-centered',\r\n ],\r\n pageType: 'landing',\r\n seo: 'critical',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'marketing-careers',\r\n name: 'Careers Page',\r\n status: 'stable',\r\n description: 'Job openings and company culture',\r\n keywords: ['careers', 'jobs', 'hiring', 'team'],\r\n phase: '4A',\r\n icon: 'Target',\r\n emoji: '🎯',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['careers', 'team'],\r\n category: 'marketing',\r\n sections: [\r\n 'hero-gradient',\r\n 'features-bento',\r\n 'team-leadership',\r\n 'testimonials-wall',\r\n 'cta-centered',\r\n ],\r\n pageType: 'about',\r\n seo: 'important',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n // ============================================================\r\n // E-COMMERCE PAGES (6)\r\n // ============================================================\r\n {\r\n id: 'ecommerce-product-list',\r\n name: 'Product Listing Page',\r\n status: 'stable',\r\n description: 'Product grid with filters and sorting',\r\n keywords: ['products', 'catalog', 'shop', 'listing'],\r\n phase: '4A',\r\n icon: 'ShoppingBag',\r\n emoji: '🛍️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['ecommerce', 'products'],\r\n category: 'e-commerce',\r\n sections: ['hero-minimal', 'features-cards', 'cta-banner'],\r\n pageType: 'product',\r\n seo: 'critical',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'ecommerce-product-detail',\r\n name: 'Product Detail Page',\r\n status: 'stable',\r\n description: 'Product details with gallery and reviews',\r\n keywords: ['product', 'detail', 'buy', 'purchase'],\r\n phase: '4A',\r\n icon: 'Package',\r\n emoji: '📦',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['ecommerce', 'conversion'],\r\n category: 'e-commerce',\r\n sections: [\r\n 'hero-product',\r\n 'features-showcase',\r\n 'testimonials-carousel',\r\n 'features-cards',\r\n 'cta-centered',\r\n ],\r\n pageType: 'product',\r\n seo: 'critical',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'ecommerce-cart',\r\n name: 'Shopping Cart Page',\r\n status: 'stable',\r\n description: 'Cart items with quantity and totals',\r\n keywords: ['cart', 'basket', 'checkout', 'items'],\r\n phase: '4A',\r\n icon: 'ShoppingCart',\r\n emoji: '🛒',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['ecommerce', 'checkout'],\r\n category: 'e-commerce',\r\n sections: ['hero-minimal', 'features-cards', 'cta-centered'],\r\n pageType: 'checkout',\r\n seo: 'standard',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'ecommerce-checkout',\r\n name: 'Checkout Page',\r\n status: 'stable',\r\n description: 'Multi-step checkout with payment',\r\n keywords: ['checkout', 'payment', 'order', 'purchase'],\r\n phase: '4A',\r\n icon: 'CreditCard',\r\n emoji: '💳',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['ecommerce', 'conversion'],\r\n category: 'e-commerce',\r\n sections: ['hero-minimal', 'contact-form', 'cta-banner'],\r\n pageType: 'checkout',\r\n seo: 'standard',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'ecommerce-order-confirmation',\r\n name: 'Order Confirmation Page',\r\n status: 'stable',\r\n description: 'Order success with details and tracking',\r\n keywords: ['order', 'confirmation', 'success', 'tracking'],\r\n phase: '4A',\r\n icon: 'CheckCircle',\r\n emoji: '✅',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['ecommerce', 'success'],\r\n category: 'e-commerce',\r\n sections: ['hero-centered', 'contact-info', 'features-cards', 'cta-newsletter'],\r\n pageType: 'checkout',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'ecommerce-account',\r\n name: 'Account Dashboard',\r\n status: 'stable',\r\n description: 'User account with orders and settings',\r\n keywords: ['account', 'profile', 'orders', 'dashboard'],\r\n phase: '4A',\r\n icon: 'User',\r\n emoji: '👤',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['ecommerce', 'account'],\r\n category: 'e-commerce',\r\n sections: ['hero-minimal', 'features-tabs', 'cta-banner'],\r\n pageType: 'landing',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n // ============================================================\r\n // SAAS PAGES (5)\r\n // ============================================================\r\n {\r\n id: 'saas-home',\r\n name: 'SaaS Home Page',\r\n status: 'stable',\r\n description: 'SaaS product landing with demo and signup',\r\n keywords: ['saas', 'landing', 'demo', 'signup'],\r\n phase: '4A',\r\n icon: 'Zap',\r\n emoji: '⚡',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['saas', 'conversion'],\r\n category: 'saas',\r\n sections: [\r\n 'hero-saas',\r\n 'features-grid',\r\n 'testimonials-featured',\r\n 'pricing-cards',\r\n 'cta-centered',\r\n ],\r\n pageType: 'landing',\r\n seo: 'critical',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'saas-pricing',\r\n name: 'SaaS Pricing Page',\r\n status: 'stable',\r\n description: 'SaaS pricing with free trial and enterprise',\r\n keywords: ['saas', 'pricing', 'subscription', 'trial'],\r\n phase: '4A',\r\n icon: 'TrendingUp',\r\n emoji: '📈',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['saas', 'pricing'],\r\n category: 'saas',\r\n sections: [\r\n 'hero-centered',\r\n 'pricing-enterprise',\r\n 'features-comparison',\r\n 'faq-accordion',\r\n 'cta-centered',\r\n ],\r\n pageType: 'landing',\r\n seo: 'critical',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'saas-features',\r\n name: 'SaaS Features Page',\r\n status: 'stable',\r\n description: 'Detailed feature breakdown with integrations',\r\n keywords: ['saas', 'features', 'integrations', 'capabilities'],\r\n phase: '4A',\r\n icon: 'Grid',\r\n emoji: '🎛️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['saas', 'features'],\r\n category: 'saas',\r\n sections: [\r\n 'hero-app-screenshot',\r\n 'features-tabs',\r\n 'features-showcase',\r\n 'testimonials-stats',\r\n 'cta-split',\r\n ],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'saas-dashboard',\r\n name: 'SaaS Dashboard',\r\n status: 'stable',\r\n description: 'Application dashboard with metrics and actions',\r\n keywords: ['dashboard', 'app', 'metrics', 'analytics'],\r\n phase: '4A',\r\n icon: 'LayoutDashboard',\r\n emoji: '📊',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['saas', 'app'],\r\n category: 'saas',\r\n sections: ['hero-minimal', 'stats-visual', 'features-bento', 'cta-banner'],\r\n pageType: 'landing',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'saas-docs',\r\n name: 'SaaS Documentation',\r\n status: 'stable',\r\n description: 'Product documentation with search',\r\n keywords: ['docs', 'documentation', 'help', 'guides'],\r\n phase: '4A',\r\n icon: 'FileText',\r\n emoji: '📄',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['saas', 'docs'],\r\n category: 'saas',\r\n sections: ['hero-minimal', 'features-cards', 'faq-categorized', 'cta-newsletter'],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n // ============================================================\r\n // PORTFOLIO PAGES (3)\r\n // ============================================================\r\n {\r\n id: 'portfolio-home',\r\n name: 'Portfolio Home',\r\n status: 'stable',\r\n description: 'Creative portfolio with project showcase',\r\n keywords: ['portfolio', 'work', 'projects', 'creative'],\r\n phase: '4A',\r\n icon: 'Palette',\r\n emoji: '🎨',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['portfolio', 'creative'],\r\n category: 'portfolio',\r\n sections: ['hero-minimal', 'gallery-masonry', 'testimonials-carousel', 'cta-centered'],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'portfolio-project-detail',\r\n name: 'Portfolio Project Detail',\r\n status: 'stable',\r\n description: 'Project case study with images and description',\r\n keywords: ['portfolio', 'project', 'case-study', 'detail'],\r\n phase: '4A',\r\n icon: 'FolderOpen',\r\n emoji: '📂',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['portfolio', 'project'],\r\n category: 'portfolio',\r\n sections: ['hero-product', 'gallery-grid', 'features-alternating', 'cta-split'],\r\n pageType: 'landing',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'portfolio-contact',\r\n name: 'Portfolio Contact',\r\n status: 'stable',\r\n description: 'Contact page for freelancers and agencies',\r\n keywords: ['contact', 'hire', 'inquiry', 'freelance'],\r\n phase: '4A',\r\n icon: 'Send',\r\n emoji: '📬',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['portfolio', 'contact'],\r\n category: 'portfolio',\r\n sections: ['hero-minimal', 'contact-form', 'contact-info', 'cta-newsletter'],\r\n pageType: 'contact',\r\n seo: 'standard',\r\n hasConversion: true,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n // ============================================================\r\n // BLOG PAGES (3)\r\n // ============================================================\r\n {\r\n id: 'blog-home',\r\n name: 'Blog Home',\r\n status: 'stable',\r\n description: 'Blog listing with featured posts',\r\n keywords: ['blog', 'articles', 'posts', 'news'],\r\n phase: '4A',\r\n icon: 'Newspaper',\r\n emoji: '📰',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['blog', 'content'],\r\n category: 'blog',\r\n sections: ['hero-minimal', 'features-cards', 'cta-newsletter'],\r\n pageType: 'blog-post',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'blog-post',\r\n name: 'Blog Post',\r\n status: 'stable',\r\n description: 'Article page with content and comments',\r\n keywords: ['blog', 'post', 'article', 'content'],\r\n phase: '4A',\r\n icon: 'FileText',\r\n emoji: '📝',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['blog', 'article'],\r\n category: 'blog',\r\n sections: ['hero-minimal', 'features-cards', 'cta-newsletter'],\r\n pageType: 'blog-post',\r\n seo: 'critical',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'blog-category',\r\n name: 'Blog Category',\r\n status: 'stable',\r\n description: 'Category archive with filtered posts',\r\n keywords: ['blog', 'category', 'archive', 'filter'],\r\n phase: '4A',\r\n icon: 'Tag',\r\n emoji: '🏷️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['blog', 'category'],\r\n category: 'blog',\r\n sections: ['hero-minimal', 'features-cards', 'cta-newsletter'],\r\n pageType: 'blog-post',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n // ============================================================\r\n // DOCS PAGES (3)\r\n // ============================================================\r\n {\r\n id: 'docs-home',\r\n name: 'Docs Home',\r\n status: 'stable',\r\n description: 'Documentation home with navigation',\r\n keywords: ['docs', 'documentation', 'help', 'guides'],\r\n phase: '4A',\r\n icon: 'Book',\r\n emoji: '📚',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['docs', 'help'],\r\n category: 'docs',\r\n sections: ['hero-minimal', 'features-grid', 'cta-banner'],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'docs-article',\r\n name: 'Docs Article',\r\n status: 'stable',\r\n description: 'Documentation article with TOC and navigation',\r\n keywords: ['docs', 'article', 'guide', 'tutorial'],\r\n phase: '4A',\r\n icon: 'ScrollText',\r\n emoji: '📜',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['docs', 'article'],\r\n category: 'docs',\r\n sections: ['hero-minimal', 'features-timeline', 'cta-banner'],\r\n pageType: 'landing',\r\n seo: 'important',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'docs-search',\r\n name: 'Docs Search',\r\n status: 'stable',\r\n description: 'Search results for documentation',\r\n keywords: ['docs', 'search', 'find', 'lookup'],\r\n phase: '4A',\r\n icon: 'Search',\r\n emoji: '🔍',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['docs', 'search'],\r\n category: 'docs',\r\n sections: ['hero-minimal', 'features-cards', 'cta-newsletter'],\r\n pageType: 'landing',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n // ============================================================\r\n // APP PAGES (2)\r\n // ============================================================\r\n {\r\n id: 'app-dashboard',\r\n name: 'App Dashboard',\r\n status: 'stable',\r\n description: 'Application dashboard with widgets',\r\n keywords: ['app', 'dashboard', 'admin', 'panel'],\r\n phase: '4A',\r\n icon: 'LayoutGrid',\r\n emoji: '🎛️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['app', 'dashboard'],\r\n category: 'app',\r\n sections: ['hero-minimal', 'stats-visual', 'features-bento', 'cta-banner'],\r\n pageType: 'landing',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n\r\n {\r\n id: 'app-settings',\r\n name: 'App Settings',\r\n status: 'stable',\r\n description: 'Application settings and preferences',\r\n keywords: ['app', 'settings', 'preferences', 'config'],\r\n phase: '4A',\r\n icon: 'Settings',\r\n emoji: '⚙️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n tags: ['app', 'settings'],\r\n category: 'app',\r\n sections: ['hero-minimal', 'features-tabs', 'cta-banner'],\r\n pageType: 'landing',\r\n seo: 'standard',\r\n hasConversion: false,\r\n } as const satisfies RegistryPageDefinition,\r\n];\r\n\r\n// Re-export type for convenience\r\nexport type { RegistryPageDefinition };\r\n","/**\r\n * Section Registry Defaults\r\n * Default values per category for factory pattern\r\n *\r\n * @packageDocumentation\r\n * @module presets/section-registry-defaults\r\n * @since 4.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { SectionCategory, DesignSystem, Tier } from '../types';\r\nimport type { SectionCategoryDefaults } from './section-registry.types';\r\n\r\n// ============================================================================\r\n// SECTION CATEGORY ICONS (Lucide icon names)\r\n// ============================================================================\r\n\r\n/**\r\n * Icon mapping per category (Lucide icon names)\r\n *\r\n * @remarks\r\n * These icons are used in the UI to visually identify section categories.\r\n * All icons are from the Lucide icon library.\r\n *\r\n * @example\r\n * ```typescript\r\n * import { SECTION_CATEGORY_ICONS } from './section-registry.defaults';\r\n * import { Rocket } from 'lucide-react';\r\n *\r\n * const iconName = SECTION_CATEGORY_ICONS['hero']; // 'Rocket'\r\n * ```\r\n */\r\nexport const SECTION_CATEGORY_ICONS: Record<SectionCategory, string> = {\r\n hero: 'Rocket',\r\n features: 'Sparkles',\r\n testimonials: 'Quote',\r\n pricing: 'CreditCard',\r\n cta: 'Megaphone',\r\n faq: 'HelpCircle',\r\n team: 'Users',\r\n contact: 'Mail',\r\n gallery: 'Images',\r\n stats: 'BarChart3',\r\n} as const;\r\n\r\n// ============================================================================\r\n// SECTION CATEGORY EMOJIS\r\n// ============================================================================\r\n\r\n/**\r\n * Emoji mapping per category\r\n *\r\n * @remarks\r\n * These emojis are used for quick visual identification in UIs,\r\n * documentation, and search results.\r\n *\r\n * @example\r\n * ```typescript\r\n * import { SECTION_CATEGORY_EMOJIS } from './section-registry.defaults';\r\n *\r\n * const emoji = SECTION_CATEGORY_EMOJIS['hero']; // '🚀'\r\n * console.log(`${emoji} Hero Section`); // '🚀 Hero Section'\r\n * ```\r\n */\r\nexport const SECTION_CATEGORY_EMOJIS: Record<SectionCategory, string> = {\r\n hero: '🚀',\r\n features: '✨',\r\n testimonials: '💬',\r\n pricing: '💳',\r\n cta: '📢',\r\n faq: '❓',\r\n team: '👥',\r\n contact: '📧',\r\n gallery: '🖼️',\r\n stats: '📊',\r\n} as const;\r\n\r\n// ============================================================================\r\n// ALL DESIGN SYSTEMS (6 active)\r\n// ============================================================================\r\n\r\n/**\r\n * All active design systems\r\n */\r\nconst ALL_DESIGN_SYSTEMS: readonly DesignSystem[] = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n] as const;\r\n\r\n/**\r\n * All quality tiers\r\n */\r\nconst ALL_TIERS: readonly Tier[] = ['basic', 'standard', 'enterprise'] as const;\r\n\r\n// ============================================================================\r\n// SECTION CATEGORY DEFAULTS (10 categories)\r\n// ============================================================================\r\n\r\n/**\r\n * Default values per category\r\n *\r\n * @remarks\r\n * These defaults are applied by `withSectionDefaults()` when creating\r\n * full section definitions. Each category has optimized defaults based\r\n * on typical use cases.\r\n *\r\n * @example\r\n * ```typescript\r\n * import { SECTION_CATEGORY_DEFAULTS } from './section-registry.defaults';\r\n *\r\n * const heroDefaults = SECTION_CATEGORY_DEFAULTS['hero'];\r\n * console.log(heroDefaults.height); // 'fullscreen'\r\n * console.log(heroDefaults.showCta); // true\r\n * ```\r\n */\r\nexport const SECTION_CATEGORY_DEFAULTS: Record<SectionCategory, SectionCategoryDefaults> = {\r\n // ===========================================================================\r\n // HERO - Landing page heroes, above-the-fold sections\r\n // ===========================================================================\r\n hero: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Rocket',\r\n emoji: '🚀',\r\n height: 'fullscreen',\r\n alignment: 'center',\r\n showCta: true,\r\n showMedia: false,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // FEATURES - Feature highlights, product capabilities\r\n // ===========================================================================\r\n features: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Sparkles',\r\n emoji: '✨',\r\n height: 'standard',\r\n alignment: 'center',\r\n showCta: false,\r\n showMedia: true,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // TESTIMONIALS - Customer reviews, social proof\r\n // ===========================================================================\r\n testimonials: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Quote',\r\n emoji: '💬',\r\n height: 'standard',\r\n alignment: 'center',\r\n showCta: false,\r\n showMedia: true,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // PRICING - Pricing tables, subscription tiers\r\n // ===========================================================================\r\n pricing: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'enterprise',\r\n icon: 'CreditCard',\r\n emoji: '💳',\r\n height: 'tall',\r\n alignment: 'center',\r\n showCta: true,\r\n showMedia: false,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // CTA - Call-to-action sections\r\n // ===========================================================================\r\n cta: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Megaphone',\r\n emoji: '📢',\r\n height: 'compact',\r\n alignment: 'center',\r\n showCta: true,\r\n showMedia: false,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // FAQ - Frequently asked questions\r\n // ===========================================================================\r\n faq: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'HelpCircle',\r\n emoji: '❓',\r\n height: 'standard',\r\n alignment: 'left',\r\n showCta: false,\r\n showMedia: false,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // TEAM - Team member profiles\r\n // ===========================================================================\r\n team: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Users',\r\n emoji: '👥',\r\n height: 'standard',\r\n alignment: 'center',\r\n showCta: false,\r\n showMedia: true,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // CONTACT - Contact forms, contact information\r\n // ===========================================================================\r\n contact: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Mail',\r\n emoji: '📧',\r\n height: 'standard',\r\n alignment: 'center',\r\n showCta: true,\r\n showMedia: false,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // GALLERY - Image galleries, portfolios\r\n // ===========================================================================\r\n gallery: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'Images',\r\n emoji: '🖼️',\r\n height: 'tall',\r\n alignment: 'center',\r\n showCta: false,\r\n showMedia: true,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n\r\n // ===========================================================================\r\n // STATS - Statistics, metrics, achievements\r\n // ===========================================================================\r\n stats: {\r\n defaultDesignSystem: 'material-design',\r\n defaultTier: 'standard',\r\n icon: 'BarChart3',\r\n emoji: '📊',\r\n height: 'compact',\r\n alignment: 'center',\r\n showCta: false,\r\n showMedia: false,\r\n designSystems: ALL_DESIGN_SYSTEMS,\r\n tiers: ALL_TIERS,\r\n },\r\n} as const;\r\n\r\n// ============================================================================\r\n// HELPER FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get defaults for a category\r\n *\r\n * @param category - Section category\r\n * @returns Category defaults\r\n *\r\n * @example\r\n * ```typescript\r\n * const defaults = getCategoryDefaults('hero');\r\n * console.log(defaults.height); // 'fullscreen'\r\n * ```\r\n */\r\nexport function getCategoryDefaults(category: SectionCategory): SectionCategoryDefaults {\r\n return SECTION_CATEGORY_DEFAULTS[category];\r\n}\r\n\r\n/**\r\n * Get icon for a category\r\n *\r\n * @param category - Section category\r\n * @returns Lucide icon name\r\n *\r\n * @example\r\n * ```typescript\r\n * const icon = getCategoryIcon('hero'); // 'Rocket'\r\n * ```\r\n */\r\nexport function getCategoryIcon(category: SectionCategory): string {\r\n return SECTION_CATEGORY_ICONS[category];\r\n}\r\n\r\n/**\r\n * Get emoji for a category\r\n *\r\n * @param category - Section category\r\n * @returns Category emoji\r\n *\r\n * @example\r\n * ```typescript\r\n * const emoji = getCategoryEmoji('hero'); // '🚀'\r\n * ```\r\n */\r\nexport function getCategoryEmoji(category: SectionCategory): string {\r\n return SECTION_CATEGORY_EMOJIS[category];\r\n}\r\n\r\n/**\r\n * Get all section categories\r\n *\r\n * @returns Array of all section categories\r\n */\r\nexport function getAllSectionCategories(): readonly SectionCategory[] {\r\n return Object.keys(SECTION_CATEGORY_DEFAULTS) as SectionCategory[];\r\n}\r\n","/**\r\n * Section Registry Helpers\r\n * Factory functions for creating section definitions\r\n *\r\n * @packageDocumentation\r\n * @module presets/section-registry-helpers\r\n * @since 4.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport {\r\n SECTION_CATEGORY_DEFAULTS,\r\n SECTION_CATEGORY_ICONS,\r\n SECTION_CATEGORY_EMOJIS,\r\n} from './section-registry.defaults';\r\n\r\nimport type { LayoutType } from '../types';\r\nimport type { RegistrySectionDefinition } from './registry.types';\r\nimport type { BaseSectionDefinition } from './section-registry.types';\r\n\r\n// ============================================================================\r\n// LAYOUT TYPE CONVERTER\r\n// ============================================================================\r\n\r\n/**\r\n * Map LayoutType to display layout pattern\r\n * RegistrySectionDefinition.layout uses UI display patterns\r\n * while BaseSectionDefinition.layout uses LayoutType for generation\r\n */\r\nfunction toDisplayLayout(\r\n layout: LayoutType,\r\n columns: number\r\n): 'single-column' | 'two-column' | 'three-column' | 'grid' {\r\n // Map based on columns and layout type\r\n if (columns === 1 || layout === 'stack' || layout === 'centered') {\r\n return 'single-column';\r\n }\r\n if (columns === 2 || layout === 'split' || layout === 'sidebar') {\r\n return 'two-column';\r\n }\r\n if (columns === 3) {\r\n return 'three-column';\r\n }\r\n // For 4+ columns or grid/masonry/carousel layouts\r\n return 'grid';\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTION: withSectionDefaults()\r\n// ============================================================================\r\n\r\n/**\r\n * Factory function to extend base section with auto-generated fields\r\n *\r\n * @remarks\r\n * Reduces 700+ duplicate lines to ~50 lines per category by:\r\n * 1. Taking minimal required fields (BaseSectionDefinition)\r\n * 2. Auto-generating remaining fields from category defaults\r\n * 3. Maintaining backward compatibility with legacy field names\r\n *\r\n * Field Mapping:\r\n * - sectionId → id (backward compat) + sectionId (unified)\r\n * - sectionType → category (backward compat) + sectionType (unified)\r\n * - layout → sectionLayout (backward compat) + layout (unified)\r\n *\r\n * @param base - Base section definition with minimal required fields\r\n * @returns Full registry section definition with all fields populated\r\n *\r\n * @example\r\n * ```typescript\r\n * // Input: Minimal definition\r\n * const base: BaseSectionDefinition = {\r\n * sectionId: 'hero-centered',\r\n * name: 'Hero - Centered',\r\n * sectionType: 'hero',\r\n * status: 'stable',\r\n * description: 'Centered hero section',\r\n * keywords: ['hero', 'landing', 'cta'],\r\n * layout: 'centered',\r\n * columns: 1,\r\n * spacing: 'lg',\r\n * };\r\n *\r\n * // Output: Full definition with 25+ fields\r\n * const full = withSectionDefaults(base);\r\n * console.log(full.icon); // 'Rocket' (auto-generated)\r\n * console.log(full.emoji); // '🚀' (auto-generated)\r\n * console.log(full.showCta); // true (from category default)\r\n * ```\r\n */\r\nexport function withSectionDefaults(base: BaseSectionDefinition): RegistrySectionDefinition {\r\n const categoryDefaults = SECTION_CATEGORY_DEFAULTS[base.sectionType];\r\n\r\n return {\r\n // ==========================================================================\r\n // BASE REGISTRY DEFINITION FIELDS\r\n // ==========================================================================\r\n\r\n // Unique identifier (uses sectionId from base)\r\n id: base.sectionId,\r\n\r\n // Name\r\n name: base.name,\r\n\r\n // Status\r\n status: base.status,\r\n\r\n // Description\r\n description: base.description,\r\n\r\n // Keywords\r\n keywords: base.keywords,\r\n\r\n // Current implementation phase\r\n phase: '4B',\r\n\r\n // Auto-generated from category\r\n icon: SECTION_CATEGORY_ICONS[base.sectionType],\r\n emoji: SECTION_CATEGORY_EMOJIS[base.sectionType],\r\n\r\n // Tags derived from keywords\r\n tags: [...base.keywords],\r\n\r\n // ==========================================================================\r\n // DESIGN SYSTEMS & TIERS (from category defaults)\r\n // ==========================================================================\r\n\r\n designSystems: categoryDefaults.designSystems,\r\n tiers: categoryDefaults.tiers,\r\n\r\n // ==========================================================================\r\n // SECTION-SPECIFIC FIELDS\r\n // ==========================================================================\r\n\r\n // Category (maps to sectionType in SectionConfig)\r\n category: base.sectionType,\r\n\r\n // Section title for display\r\n title: base.name,\r\n\r\n // Section subtitle (optional)\r\n subtitle: base.description,\r\n\r\n // Use section override if provided, otherwise use category default\r\n defaultDesignSystem: base.defaultDesignSystem ?? categoryDefaults.defaultDesignSystem,\r\n defaultTier: base.defaultTier ?? categoryDefaults.defaultTier,\r\n\r\n // ==========================================================================\r\n // LAYOUT FIELDS\r\n // ==========================================================================\r\n\r\n // Display layout for UI (derived from columns and layout type)\r\n layout: toDisplayLayout(base.layout, base.columns),\r\n\r\n // Generation layout (LayoutType for generation)\r\n sectionLayout: base.layout,\r\n\r\n // Columns and spacing\r\n columns: base.columns,\r\n spacing: base.spacing,\r\n\r\n // ==========================================================================\r\n // GENERATION FIELDS\r\n // ==========================================================================\r\n\r\n slots: base.slots,\r\n itemCount: base.itemCount,\r\n\r\n // ==========================================================================\r\n // COMPONENT-SPECIFIC FIELDS\r\n // ==========================================================================\r\n\r\n showCta: base.showCta ?? categoryDefaults.showCta,\r\n showMedia: base.showMedia ?? categoryDefaults.showMedia,\r\n styleOverrides: base.styleOverrides,\r\n\r\n // ==========================================================================\r\n // REGISTRY-SPECIFIC FIELDS\r\n // ==========================================================================\r\n\r\n height: categoryDefaults.height,\r\n alignment: categoryDefaults.alignment,\r\n\r\n // Empty dependencies (can be populated later)\r\n dependencies: [],\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// HELPER: withSectionDefaultsArray()\r\n// ============================================================================\r\n\r\n/**\r\n * Process array of base definitions through the factory\r\n *\r\n * @remarks\r\n * Convenience function to apply `withSectionDefaults()` to an array of\r\n * base definitions. Useful when defining multiple sections at once.\r\n *\r\n * @param sections - Array of base section definitions\r\n * @returns Array of full registry section definitions\r\n *\r\n * @example\r\n * ```typescript\r\n * const HERO_SECTIONS_BASE: BaseSectionDefinition[] = [\r\n * { sectionId: 'hero-centered', ... },\r\n * { sectionId: 'hero-split', ... },\r\n * { sectionId: 'hero-video', ... },\r\n * ];\r\n *\r\n * const HERO_SECTIONS = withSectionDefaultsArray(HERO_SECTIONS_BASE);\r\n * // All 3 sections now have full definitions with 25+ fields each\r\n * ```\r\n */\r\nexport function withSectionDefaultsArray(\r\n sections: readonly BaseSectionDefinition[]\r\n): readonly RegistrySectionDefinition[] {\r\n return sections.map(withSectionDefaults);\r\n}\r\n\r\n// ============================================================================\r\n// VALIDATION HELPERS\r\n// ============================================================================\r\n\r\n/**\r\n * Validate a base section definition\r\n *\r\n * @param section - Section to validate\r\n * @returns Validation result with errors if any\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateBaseSectionDefinition(section);\r\n * if (!result.valid) {\r\n * console.error('Validation errors:', result.errors);\r\n * }\r\n * ```\r\n */\r\nexport function validateBaseSectionDefinition(section: BaseSectionDefinition): {\r\n valid: boolean;\r\n errors: readonly string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n // Required fields\r\n if (section.sectionId === '') {\r\n errors.push('sectionId is required');\r\n }\r\n\r\n if (section.name === '') {\r\n errors.push('name is required');\r\n }\r\n\r\n // Validate sectionId format (kebab-case)\r\n if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(section.sectionId)) {\r\n errors.push('sectionId must be kebab-case (e.g., \"hero-centered\")');\r\n }\r\n\r\n // Validate columns\r\n const validColumns = [1, 2, 3, 4, 6];\r\n if (!validColumns.includes(section.columns)) {\r\n errors.push(`columns must be one of: ${validColumns.join(', ')}`);\r\n }\r\n\r\n // Validate keywords array\r\n if (section.keywords.length === 0) {\r\n errors.push('keywords must have at least one entry');\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n };\r\n}\r\n\r\n/**\r\n * Validate an array of base section definitions\r\n *\r\n * @param sections - Sections to validate\r\n * @returns Validation results for all sections\r\n */\r\nexport function validateBaseSectionDefinitions(sections: readonly BaseSectionDefinition[]): {\r\n valid: boolean;\r\n sectionErrors: Record<string, readonly string[]>;\r\n} {\r\n const sectionErrors: Record<string, string[]> = {};\r\n let valid = true;\r\n\r\n for (const section of sections) {\r\n const result = validateBaseSectionDefinition(section);\r\n if (!result.valid) {\r\n valid = false;\r\n sectionErrors[section.sectionId] = [...result.errors];\r\n }\r\n }\r\n\r\n // Check for duplicate sectionIds\r\n const ids = sections.map((s) => s.sectionId);\r\n const duplicates = ids.filter((id, index) => ids.indexOf(id) !== index);\r\n if (duplicates.length > 0) {\r\n valid = false;\r\n for (const dupId of duplicates) {\r\n const existing = sectionErrors[dupId] ?? [];\r\n sectionErrors[dupId] = [...existing, `Duplicate sectionId: ${dupId}`];\r\n }\r\n }\r\n\r\n return { valid, sectionErrors };\r\n}\r\n\r\n// ============================================================================\r\n// TYPE GUARDS\r\n// ============================================================================\r\n\r\n/**\r\n * Check if an object is a valid BaseSectionDefinition\r\n */\r\nexport function isBaseSectionDefinition(obj: unknown): obj is BaseSectionDefinition {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n\r\n const section = obj as Record<string, unknown>;\r\n\r\n return (\r\n typeof section['sectionId'] === 'string' &&\r\n typeof section['name'] === 'string' &&\r\n typeof section['sectionType'] === 'string' &&\r\n typeof section['description'] === 'string' &&\r\n Array.isArray(section['keywords']) &&\r\n typeof section['status'] === 'string' &&\r\n typeof section['layout'] === 'string' &&\r\n typeof section['columns'] === 'number' &&\r\n typeof section['spacing'] === 'string'\r\n );\r\n}\r\n\r\n/**\r\n * Check if an object is a valid RegistrySectionDefinition\r\n */\r\nexport function isRegistrySectionDefinition(obj: unknown): obj is RegistrySectionDefinition {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n\r\n const section = obj as Record<string, unknown>;\r\n\r\n // Check for both legacy and unified names\r\n return (\r\n typeof section['id'] === 'string' &&\r\n typeof section['sectionId'] === 'string' &&\r\n typeof section['category'] === 'string' &&\r\n typeof section['sectionType'] === 'string' &&\r\n typeof section['icon'] === 'string' &&\r\n typeof section['emoji'] === 'string' &&\r\n Array.isArray(section['designSystems']) &&\r\n Array.isArray(section['tiers'])\r\n );\r\n}\r\n","/**\r\n * Section Registry - 50 Section Definitions\r\n * Optimized using factory pattern to reduce duplication\r\n *\r\n * @packageDocumentation\r\n * @module presets/section-registry\r\n * @since 4.0.0\r\n *\r\n * @remarks\r\n * Uses `withSectionDefaultsArray()` factory to auto-generate:\r\n * - designSystems, tiers (from category defaults)\r\n * - icon, emoji (from category mappings)\r\n * - height, alignment (from category defaults)\r\n * - layout display pattern (derived from sectionLayout + columns)\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { withSectionDefaultsArray } from './section-registry.helpers';\r\n\r\nimport type { RegistrySectionDefinition } from './registry.types';\r\nimport type { BaseSectionDefinition } from './section-registry.types';\r\n\r\n// ============================================================================\r\n// HERO SECTIONS (10)\r\n// ============================================================================\r\n\r\n/**\r\n * Hero section base definitions\r\n */\r\nconst HERO_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'hero-centered',\r\n name: 'Hero - Centered',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Centered hero section with headline, subheadline, and CTA',\r\n keywords: ['hero', 'landing', 'cta', 'centered'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'hero-split',\r\n name: 'Hero - Split',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Split hero with content on left and image/video on right',\r\n keywords: ['hero', 'split', 'image', 'video'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'hero-video-background',\r\n name: 'Hero - Video Background',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Full-screen hero with video background and overlay text',\r\n keywords: ['hero', 'video', 'background', 'fullscreen'],\r\n layout: 'fullwidth',\r\n columns: 1,\r\n spacing: 'none',\r\n defaultDesignSystem: 'glassmorphism',\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'hero-minimal',\r\n name: 'Hero - Minimal',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Minimalist hero with clean typography and subtle CTA',\r\n keywords: ['hero', 'minimal', 'typography', 'clean'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'md',\r\n defaultDesignSystem: 'minimalism',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'hero-gradient',\r\n name: 'Hero - Gradient Background',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Hero with animated gradient background',\r\n keywords: ['hero', 'gradient', 'animated', 'modern'],\r\n layout: 'fullwidth',\r\n columns: 1,\r\n spacing: 'lg',\r\n defaultDesignSystem: 'glassmorphism',\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'hero-product',\r\n name: 'Hero - Product Showcase',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Hero focused on product image with features list',\r\n keywords: ['hero', 'product', 'showcase', 'ecommerce'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'hero-app-screenshot',\r\n name: 'Hero - App Screenshot',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Hero with app screenshot mockup and description',\r\n keywords: ['hero', 'app', 'screenshot', 'mobile'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n defaultDesignSystem: 'ios-hig',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'hero-saas',\r\n name: 'Hero - SaaS',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'SaaS-focused hero with value proposition and social proof',\r\n keywords: ['hero', 'saas', 'b2b', 'enterprise'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'lg',\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'hero-startup',\r\n name: 'Hero - Startup',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Dynamic hero for startup landing pages with bold typography',\r\n keywords: ['hero', 'startup', 'bold', 'dynamic'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'xl',\r\n defaultDesignSystem: 'brutalism',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'hero-agency',\r\n name: 'Hero - Agency',\r\n sectionType: 'hero',\r\n status: 'stable',\r\n description: 'Creative hero for agency websites with portfolio preview',\r\n keywords: ['hero', 'agency', 'creative', 'portfolio'],\r\n layout: 'asymmetric',\r\n columns: 3,\r\n spacing: 'lg',\r\n defaultDesignSystem: 'brutalism',\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// FEATURES SECTIONS (8)\r\n// ============================================================================\r\n\r\n/**\r\n * Features section base definitions\r\n */\r\nconst FEATURES_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'features-grid',\r\n name: 'Features - Grid',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Grid layout with icon, title, and description for each feature',\r\n keywords: ['features', 'grid', 'icons', 'benefits'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 6,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'features-alternating',\r\n name: 'Features - Alternating',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Alternating layout with image-text-image pattern',\r\n keywords: ['features', 'alternating', 'image', 'detailed'],\r\n layout: 'alternating',\r\n columns: 2,\r\n spacing: 'xl',\r\n itemCount: 4,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'features-tabs',\r\n name: 'Features - Tabbed',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Tab-based navigation between different feature sets',\r\n keywords: ['features', 'tabs', 'navigation', 'organized'],\r\n layout: 'stack',\r\n columns: 1,\r\n spacing: 'lg',\r\n itemCount: 4,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'features-timeline',\r\n name: 'Features - Timeline',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Vertical timeline showing features or process steps',\r\n keywords: ['features', 'timeline', 'process', 'steps'],\r\n layout: 'stack',\r\n columns: 1,\r\n spacing: 'lg',\r\n itemCount: 5,\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'features-comparison',\r\n name: 'Features - Comparison Table',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Side-by-side comparison of features across plans',\r\n keywords: ['features', 'comparison', 'table', 'plans'],\r\n layout: 'grid',\r\n columns: 4,\r\n spacing: 'md',\r\n itemCount: 3,\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'features-showcase',\r\n name: 'Features - Showcase',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Large visual showcase with animated feature previews',\r\n keywords: ['features', 'showcase', 'animated', 'visual'],\r\n layout: 'masonry',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 6,\r\n defaultDesignSystem: 'glassmorphism',\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'features-cards',\r\n name: 'Features - Cards',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Card-based layout with hover effects',\r\n keywords: ['features', 'cards', 'hover', 'interactive'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 6,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'features-bento',\r\n name: 'Features - Bento Grid',\r\n sectionType: 'features',\r\n status: 'stable',\r\n description: 'Modern bento box grid layout with varying card sizes',\r\n keywords: ['features', 'bento', 'grid', 'modern'],\r\n layout: 'masonry',\r\n columns: 4,\r\n spacing: 'md',\r\n itemCount: 6,\r\n defaultDesignSystem: 'brutalism',\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// TESTIMONIALS SECTIONS (6)\r\n// ============================================================================\r\n\r\n/**\r\n * Testimonials section base definitions\r\n */\r\nconst TESTIMONIALS_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'testimonials-grid',\r\n name: 'Testimonials - Grid',\r\n sectionType: 'testimonials',\r\n status: 'stable',\r\n description: 'Grid of customer testimonial cards with photos',\r\n keywords: ['testimonials', 'reviews', 'social-proof', 'grid'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 6,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'testimonials-carousel',\r\n name: 'Testimonials - Carousel',\r\n sectionType: 'testimonials',\r\n status: 'stable',\r\n description: 'Horizontal carousel with auto-play testimonials',\r\n keywords: ['testimonials', 'carousel', 'slider', 'animated'],\r\n layout: 'carousel',\r\n columns: 1,\r\n spacing: 'lg',\r\n itemCount: 5,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'testimonials-featured',\r\n name: 'Testimonials - Featured',\r\n sectionType: 'testimonials',\r\n status: 'stable',\r\n description: 'Large featured testimonial with company logos',\r\n keywords: ['testimonials', 'featured', 'logos', 'enterprise'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'xl',\r\n itemCount: 1,\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'testimonials-video',\r\n name: 'Testimonials - Video',\r\n sectionType: 'testimonials',\r\n status: 'stable',\r\n description: 'Video testimonials with thumbnail gallery',\r\n keywords: ['testimonials', 'video', 'multimedia', 'authentic'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n itemCount: 4,\r\n defaultDesignSystem: 'glassmorphism',\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'testimonials-wall',\r\n name: 'Testimonials - Wall',\r\n sectionType: 'testimonials',\r\n status: 'stable',\r\n description: 'Masonry wall of short testimonial quotes',\r\n keywords: ['testimonials', 'masonry', 'wall', 'quotes'],\r\n layout: 'masonry',\r\n columns: 4,\r\n spacing: 'md',\r\n itemCount: 12,\r\n defaultDesignSystem: 'brutalism',\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'testimonials-stats',\r\n name: 'Testimonials - With Stats',\r\n sectionType: 'testimonials',\r\n status: 'stable',\r\n description: 'Testimonials combined with key statistics',\r\n keywords: ['testimonials', 'stats', 'metrics', 'data'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n itemCount: 4,\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// PRICING SECTIONS (5)\r\n// ============================================================================\r\n\r\n/**\r\n * Pricing section base definitions\r\n */\r\nconst PRICING_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'pricing-cards',\r\n name: 'Pricing - Cards',\r\n sectionType: 'pricing',\r\n status: 'stable',\r\n description: 'Standard pricing cards with features list',\r\n keywords: ['pricing', 'plans', 'subscription', 'comparison'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 3,\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'pricing-table',\r\n name: 'Pricing - Table',\r\n sectionType: 'pricing',\r\n status: 'stable',\r\n description: 'Detailed comparison table with all features',\r\n keywords: ['pricing', 'table', 'comparison', 'detailed'],\r\n layout: 'stack',\r\n columns: 1,\r\n spacing: 'lg',\r\n itemCount: 4,\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'pricing-toggle',\r\n name: 'Pricing - Monthly/Yearly Toggle',\r\n sectionType: 'pricing',\r\n status: 'stable',\r\n description: 'Pricing cards with monthly/yearly billing toggle',\r\n keywords: ['pricing', 'toggle', 'monthly', 'yearly'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 3,\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'pricing-simple',\r\n name: 'Pricing - Simple',\r\n sectionType: 'pricing',\r\n status: 'stable',\r\n description: 'Minimalist single-price showcase',\r\n keywords: ['pricing', 'simple', 'single', 'minimal'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'md',\r\n itemCount: 1,\r\n defaultDesignSystem: 'minimalism',\r\n defaultTier: 'basic',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'pricing-enterprise',\r\n name: 'Pricing - Enterprise Focus',\r\n sectionType: 'pricing',\r\n status: 'stable',\r\n description: 'Enterprise-focused pricing with custom quote CTA',\r\n keywords: ['pricing', 'enterprise', 'custom', 'b2b'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'xl',\r\n itemCount: 2,\r\n defaultTier: 'enterprise',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// CTA SECTIONS (4)\r\n// ============================================================================\r\n\r\n/**\r\n * CTA section base definitions\r\n */\r\nconst CTA_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'cta-centered',\r\n name: 'CTA - Centered',\r\n sectionType: 'cta',\r\n status: 'stable',\r\n description: 'Centered call-to-action with headline and button',\r\n keywords: ['cta', 'conversion', 'action', 'centered'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'cta-split',\r\n name: 'CTA - Split',\r\n sectionType: 'cta',\r\n status: 'stable',\r\n description: 'Split CTA with image/graphic on one side',\r\n keywords: ['cta', 'split', 'visual', 'engaging'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'cta-banner',\r\n name: 'CTA - Banner',\r\n sectionType: 'cta',\r\n status: 'stable',\r\n description: 'Full-width banner with urgent call-to-action',\r\n keywords: ['cta', 'banner', 'urgent', 'fullwidth'],\r\n layout: 'fullwidth',\r\n columns: 1,\r\n spacing: 'sm',\r\n defaultDesignSystem: 'brutalism',\r\n defaultTier: 'basic',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'cta-newsletter',\r\n name: 'CTA - Newsletter',\r\n sectionType: 'cta',\r\n status: 'stable',\r\n description: 'Newsletter signup with email input',\r\n keywords: ['cta', 'newsletter', 'email', 'subscribe'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'md',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// FAQ SECTIONS (3)\r\n// ============================================================================\r\n\r\n/**\r\n * FAQ section base definitions\r\n */\r\nconst FAQ_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'faq-accordion',\r\n name: 'FAQ - Accordion',\r\n sectionType: 'faq',\r\n status: 'stable',\r\n description: 'Collapsible accordion-style FAQ section',\r\n keywords: ['faq', 'accordion', 'questions', 'help'],\r\n layout: 'stack',\r\n columns: 1,\r\n spacing: 'md',\r\n itemCount: 8,\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'faq-two-column',\r\n name: 'FAQ - Two Column',\r\n sectionType: 'faq',\r\n status: 'stable',\r\n description: 'Two-column FAQ layout for better readability',\r\n keywords: ['faq', 'two-column', 'organized', 'structured'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n itemCount: 8,\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'faq-categorized',\r\n name: 'FAQ - Categorized',\r\n sectionType: 'faq',\r\n status: 'stable',\r\n description: 'FAQ organized into categories with filtering',\r\n keywords: ['faq', 'categorized', 'filtered', 'organized'],\r\n layout: 'sidebar',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 12,\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// TEAM SECTIONS (3)\r\n// ============================================================================\r\n\r\n/**\r\n * Team section base definitions\r\n */\r\nconst TEAM_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'team-grid',\r\n name: 'Team - Grid',\r\n sectionType: 'team',\r\n status: 'stable',\r\n description: 'Grid layout with team member photos and bios',\r\n keywords: ['team', 'about', 'people', 'members'],\r\n layout: 'grid',\r\n columns: 4,\r\n spacing: 'lg',\r\n itemCount: 8,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'team-carousel',\r\n name: 'Team - Carousel',\r\n sectionType: 'team',\r\n status: 'stable',\r\n description: 'Horizontal carousel of team members',\r\n keywords: ['team', 'carousel', 'slider', 'interactive'],\r\n layout: 'carousel',\r\n columns: 1,\r\n spacing: 'lg',\r\n itemCount: 8,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'team-leadership',\r\n name: 'Team - Leadership',\r\n sectionType: 'team',\r\n status: 'stable',\r\n description: 'Executive team showcase with detailed profiles',\r\n keywords: ['team', 'leadership', 'executives', 'enterprise'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'xl',\r\n itemCount: 4,\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// CONTACT SECTIONS (3)\r\n// ============================================================================\r\n\r\n/**\r\n * Contact section base definitions\r\n */\r\nconst CONTACT_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'contact-form',\r\n name: 'Contact - Form',\r\n sectionType: 'contact',\r\n status: 'stable',\r\n description: 'Contact form with validation and submission',\r\n keywords: ['contact', 'form', 'email', 'support'],\r\n layout: 'centered',\r\n columns: 1,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'contact-split',\r\n name: 'Contact - Split with Map',\r\n sectionType: 'contact',\r\n status: 'stable',\r\n description: 'Contact form with embedded map on the side',\r\n keywords: ['contact', 'map', 'location', 'split'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n showCta: true,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'contact-info',\r\n name: 'Contact - Info Cards',\r\n sectionType: 'contact',\r\n status: 'stable',\r\n description: 'Contact information in card format with multiple channels',\r\n keywords: ['contact', 'info', 'cards', 'channels'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 3,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// GALLERY SECTIONS (3)\r\n// ============================================================================\r\n\r\n/**\r\n * Gallery section base definitions\r\n */\r\nconst GALLERY_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'gallery-masonry',\r\n name: 'Gallery - Masonry',\r\n sectionType: 'gallery',\r\n status: 'stable',\r\n description: 'Pinterest-style masonry image gallery',\r\n keywords: ['gallery', 'masonry', 'images', 'portfolio'],\r\n layout: 'masonry',\r\n columns: 4,\r\n spacing: 'sm',\r\n itemCount: 12,\r\n defaultDesignSystem: 'glassmorphism',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'gallery-grid',\r\n name: 'Gallery - Grid',\r\n sectionType: 'gallery',\r\n status: 'stable',\r\n description: 'Uniform grid layout with lightbox functionality',\r\n keywords: ['gallery', 'grid', 'lightbox', 'images'],\r\n layout: 'grid',\r\n columns: 4,\r\n spacing: 'md',\r\n itemCount: 8,\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'gallery-slider',\r\n name: 'Gallery - Slider',\r\n sectionType: 'gallery',\r\n status: 'stable',\r\n description: 'Full-width image slider with navigation',\r\n keywords: ['gallery', 'slider', 'carousel', 'fullwidth'],\r\n layout: 'carousel',\r\n columns: 1,\r\n spacing: 'none',\r\n itemCount: 6,\r\n defaultDesignSystem: 'glassmorphism',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// STATS SECTIONS (5)\r\n// ============================================================================\r\n\r\n/**\r\n * Stats section base definitions\r\n */\r\nconst STATS_SECTIONS_BASE: readonly BaseSectionDefinition[] = [\r\n {\r\n sectionId: 'stats-numbers',\r\n name: 'Stats - Numbers',\r\n sectionType: 'stats',\r\n status: 'stable',\r\n description: 'Key statistics with animated counters',\r\n keywords: ['stats', 'numbers', 'metrics', 'data'],\r\n layout: 'grid',\r\n columns: 4,\r\n spacing: 'lg',\r\n itemCount: 4,\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'stats-visual',\r\n name: 'Stats - Visual',\r\n sectionType: 'stats',\r\n status: 'stable',\r\n description: 'Statistics with charts and visual representations',\r\n keywords: ['stats', 'charts', 'visual', 'data'],\r\n layout: 'grid',\r\n columns: 3,\r\n spacing: 'lg',\r\n itemCount: 3,\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'stats-comparison',\r\n name: 'Stats - Comparison',\r\n sectionType: 'stats',\r\n status: 'stable',\r\n description: 'Comparative statistics showing before/after or year-over-year growth',\r\n keywords: ['stats', 'comparison', 'growth', 'metrics'],\r\n layout: 'split',\r\n columns: 2,\r\n spacing: 'lg',\r\n itemCount: 4,\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n {\r\n sectionId: 'stats-infographic',\r\n name: 'Stats - Infographic',\r\n sectionType: 'stats',\r\n status: 'stable',\r\n description: 'Infographic-style statistics with icons and visual elements',\r\n keywords: ['stats', 'infographic', 'visual', 'design'],\r\n layout: 'asymmetric',\r\n columns: 4,\r\n spacing: 'md',\r\n itemCount: 6,\r\n defaultDesignSystem: 'brutalism',\r\n defaultTier: 'enterprise',\r\n showCta: false,\r\n showMedia: true,\r\n },\r\n {\r\n sectionId: 'stats-timeline',\r\n name: 'Stats - Timeline',\r\n sectionType: 'stats',\r\n status: 'stable',\r\n description: 'Timeline-based statistics showing progress over time',\r\n keywords: ['stats', 'timeline', 'history', 'progress'],\r\n layout: 'stack',\r\n columns: 1,\r\n spacing: 'lg',\r\n itemCount: 6,\r\n showCta: false,\r\n showMedia: false,\r\n },\r\n];\r\n\r\n// ============================================================================\r\n// FULL SECTION DEFINITIONS (50 total)\r\n// ============================================================================\r\n\r\n/**\r\n * Hero sections with full definitions (10)\r\n */\r\nconst HERO_SECTIONS = withSectionDefaultsArray(HERO_SECTIONS_BASE);\r\n\r\n/**\r\n * Features sections with full definitions (8)\r\n */\r\nconst FEATURES_SECTIONS = withSectionDefaultsArray(FEATURES_SECTIONS_BASE);\r\n\r\n/**\r\n * Testimonials sections with full definitions (6)\r\n */\r\nconst TESTIMONIALS_SECTIONS = withSectionDefaultsArray(TESTIMONIALS_SECTIONS_BASE);\r\n\r\n/**\r\n * Pricing sections with full definitions (5)\r\n */\r\nconst PRICING_SECTIONS = withSectionDefaultsArray(PRICING_SECTIONS_BASE);\r\n\r\n/**\r\n * CTA sections with full definitions (4)\r\n */\r\nconst CTA_SECTIONS = withSectionDefaultsArray(CTA_SECTIONS_BASE);\r\n\r\n/**\r\n * FAQ sections with full definitions (3)\r\n */\r\nconst FAQ_SECTIONS = withSectionDefaultsArray(FAQ_SECTIONS_BASE);\r\n\r\n/**\r\n * Team sections with full definitions (3)\r\n */\r\nconst TEAM_SECTIONS = withSectionDefaultsArray(TEAM_SECTIONS_BASE);\r\n\r\n/**\r\n * Contact sections with full definitions (3)\r\n */\r\nconst CONTACT_SECTIONS = withSectionDefaultsArray(CONTACT_SECTIONS_BASE);\r\n\r\n/**\r\n * Gallery sections with full definitions (3)\r\n */\r\nconst GALLERY_SECTIONS = withSectionDefaultsArray(GALLERY_SECTIONS_BASE);\r\n\r\n/**\r\n * Stats sections with full definitions (5)\r\n */\r\nconst STATS_SECTIONS = withSectionDefaultsArray(STATS_SECTIONS_BASE);\r\n\r\n// ============================================================================\r\n// COMBINED REGISTRY\r\n// ============================================================================\r\n\r\n/**\r\n * All section definitions (50 total)\r\n *\r\n * @remarks\r\n * Combined from all 10 categories:\r\n * - Hero: 10\r\n * - Features: 8\r\n * - Testimonials: 6\r\n * - Pricing: 5\r\n * - CTA: 4\r\n * - FAQ: 3\r\n * - Team: 3\r\n * - Contact: 3\r\n * - Gallery: 3\r\n * - Stats: 5\r\n *\r\n * Total: 50 sections\r\n *\r\n * Each definition includes all 14 SectionConfig fields (Section Architecture v4.0)\r\n * auto-generated by the factory pattern.\r\n */\r\nexport const ALL_SECTIONS: readonly RegistrySectionDefinition[] = [\r\n ...HERO_SECTIONS,\r\n ...FEATURES_SECTIONS,\r\n ...TESTIMONIALS_SECTIONS,\r\n ...PRICING_SECTIONS,\r\n ...CTA_SECTIONS,\r\n ...FAQ_SECTIONS,\r\n ...TEAM_SECTIONS,\r\n ...CONTACT_SECTIONS,\r\n ...GALLERY_SECTIONS,\r\n ...STATS_SECTIONS,\r\n];\r\n\r\n// ============================================================================\r\n// CATEGORY EXPORTS (for easier access)\r\n// ============================================================================\r\n\r\nexport {\r\n HERO_SECTIONS,\r\n FEATURES_SECTIONS,\r\n TESTIMONIALS_SECTIONS,\r\n PRICING_SECTIONS,\r\n CTA_SECTIONS,\r\n FAQ_SECTIONS,\r\n TEAM_SECTIONS,\r\n CONTACT_SECTIONS,\r\n GALLERY_SECTIONS,\r\n STATS_SECTIONS,\r\n};\r\n\r\n// ============================================================================\r\n// TYPE RE-EXPORT\r\n// ============================================================================\r\n\r\nexport type { RegistrySectionDefinition };\r\n","/**\r\n * Template Registry - 20 Template Definitions\r\n * @packageDocumentation\r\n * @module presets/template-registry\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { RegistryTemplateDefinition } from './registry.types';\r\n\r\n/**\r\n * All template definitions (20 total)\r\n *\r\n * Categories:\r\n * - SaaS (5): B2B SaaS applications\r\n * - E-commerce (4): Online stores\r\n * - Portfolio (3): Creative portfolios\r\n * - Blog (3): Content sites\r\n * - Startup (3): Startup landing sites\r\n * - Agency (2): Agency websites\r\n */\r\nexport const ALL_TEMPLATES: readonly RegistryTemplateDefinition[] = [\r\n // ============================================================\r\n // SAAS TEMPLATES (5)\r\n // ============================================================\r\n {\r\n id: 'saas-starter',\r\n name: 'SaaS Starter Template',\r\n status: 'stable',\r\n description: 'Complete SaaS application template with auth, pricing, and dashboard',\r\n keywords: ['saas', 'template', 'starter', 'b2b'],\r\n phase: '4A',\r\n icon: 'Cloud',\r\n emoji: '☁️',\r\n designSystems: [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['saas', 'b2b', 'template', 'starter'],\r\n category: 'saas',\r\n pages: ['saas-home', 'saas-pricing', 'saas-features', 'marketing-about', 'marketing-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['software', 'technology', 'b2b'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'saas-analytics',\r\n name: 'SaaS Analytics Platform',\r\n status: 'stable',\r\n description: 'Analytics-focused SaaS template with dashboard and reporting',\r\n keywords: ['saas', 'analytics', 'dashboard', 'data'],\r\n phase: '4A',\r\n icon: 'BarChart3',\r\n emoji: '📊',\r\n designSystems: ['material-design', 'glassmorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isNew: true,\r\n tags: ['saas', 'analytics', 'data', 'dashboard'],\r\n category: 'saas',\r\n pages: ['saas-home', 'saas-dashboard', 'saas-pricing', 'marketing-about', 'saas-docs'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js', 'Chart.js'],\r\n industry: ['analytics', 'data', 'b2b'],\r\n complexity: 'advanced',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'saas-crm',\r\n name: 'SaaS CRM Template',\r\n status: 'stable',\r\n description: 'Customer relationship management SaaS template',\r\n keywords: ['saas', 'crm', 'customer', 'management'],\r\n phase: '4A',\r\n icon: 'Users',\r\n emoji: '👥',\r\n designSystems: ['material-design', 'ios-hig', 'neumorphism', 'minimalism'],\r\n tiers: ['enterprise'],\r\n tags: ['saas', 'crm', 'enterprise', 'b2b'],\r\n category: 'saas',\r\n pages: ['saas-home', 'app-dashboard', 'saas-pricing', 'marketing-contact', 'marketing-about'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['crm', 'sales', 'b2b'],\r\n complexity: 'advanced',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'saas-marketplace',\r\n name: 'SaaS Marketplace',\r\n status: 'stable',\r\n description: 'Multi-vendor marketplace SaaS template',\r\n keywords: ['saas', 'marketplace', 'multi-vendor', 'platform'],\r\n phase: '4A',\r\n icon: 'Store',\r\n emoji: '🏪',\r\n designSystems: ['material-design', 'glassmorphism', 'minimalism'],\r\n tiers: ['enterprise'],\r\n isPopular: true,\r\n tags: ['saas', 'marketplace', 'platform', 'vendor'],\r\n category: 'saas',\r\n pages: [\r\n 'saas-home',\r\n 'ecommerce-product-list',\r\n 'saas-pricing',\r\n 'marketing-about',\r\n 'marketing-contact',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['marketplace', 'platform', 'b2b'],\r\n complexity: 'advanced',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'saas-productivity',\r\n name: 'SaaS Productivity Tool',\r\n status: 'stable',\r\n description: 'Productivity and collaboration SaaS template',\r\n keywords: ['saas', 'productivity', 'collaboration', 'workspace'],\r\n phase: '4A',\r\n icon: 'Zap',\r\n emoji: '⚡',\r\n designSystems: ['material-design', 'ios-hig', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['saas', 'productivity', 'collaboration'],\r\n category: 'saas',\r\n pages: ['saas-home', 'saas-features', 'saas-pricing', 'app-dashboard', 'marketing-about'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['productivity', 'collaboration', 'b2b'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n // ============================================================\r\n // E-COMMERCE TEMPLATES (4)\r\n // ============================================================\r\n {\r\n id: 'ecommerce-fashion',\r\n name: 'Fashion E-commerce',\r\n status: 'stable',\r\n description: 'Modern fashion and apparel online store template',\r\n keywords: ['ecommerce', 'fashion', 'store', 'apparel'],\r\n phase: '4A',\r\n icon: 'ShoppingBag',\r\n emoji: '👗',\r\n designSystems: ['material-design', 'glassmorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['ecommerce', 'fashion', 'retail', 'b2c'],\r\n category: 'e-commerce',\r\n pages: [\r\n 'marketing-landing',\r\n 'ecommerce-product-list',\r\n 'ecommerce-product-detail',\r\n 'ecommerce-cart',\r\n 'ecommerce-checkout',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js', 'Stripe'],\r\n industry: ['fashion', 'retail', 'b2c'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'ecommerce-electronics',\r\n name: 'Electronics Store',\r\n status: 'stable',\r\n description: 'Electronics and gadgets e-commerce template',\r\n keywords: ['ecommerce', 'electronics', 'gadgets', 'tech'],\r\n phase: '4A',\r\n icon: 'Smartphone',\r\n emoji: '📱',\r\n designSystems: ['material-design', 'neumorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['ecommerce', 'electronics', 'tech', 'b2c'],\r\n category: 'e-commerce',\r\n pages: [\r\n 'marketing-landing',\r\n 'ecommerce-product-list',\r\n 'ecommerce-product-detail',\r\n 'ecommerce-cart',\r\n 'ecommerce-checkout',\r\n 'ecommerce-account',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js', 'Stripe'],\r\n industry: ['electronics', 'technology', 'b2c'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'ecommerce-digital',\r\n name: 'Digital Products Store',\r\n status: 'stable',\r\n description: 'Digital downloads and products marketplace template',\r\n keywords: ['ecommerce', 'digital', 'downloads', 'marketplace'],\r\n phase: '4A',\r\n icon: 'Download',\r\n emoji: '💾',\r\n designSystems: ['material-design', 'brutalism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isNew: true,\r\n tags: ['ecommerce', 'digital', 'downloads', 'b2c'],\r\n category: 'e-commerce',\r\n pages: [\r\n 'marketing-landing',\r\n 'ecommerce-product-list',\r\n 'ecommerce-product-detail',\r\n 'ecommerce-checkout',\r\n 'ecommerce-account',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['digital-products', 'software', 'b2c'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'ecommerce-food',\r\n name: 'Food Delivery Template',\r\n status: 'stable',\r\n description: 'Restaurant and food delivery platform template',\r\n keywords: ['ecommerce', 'food', 'delivery', 'restaurant'],\r\n phase: '4A',\r\n icon: 'UtensilsCrossed',\r\n emoji: '🍔',\r\n designSystems: ['material-design', 'ios-hig', 'glassmorphism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['ecommerce', 'food', 'delivery', 'b2c'],\r\n category: 'e-commerce',\r\n pages: [\r\n 'marketing-landing',\r\n 'ecommerce-product-list',\r\n 'ecommerce-cart',\r\n 'ecommerce-checkout',\r\n 'ecommerce-order-confirmation',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['food', 'delivery', 'b2c'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n // ============================================================\r\n // PORTFOLIO TEMPLATES (3)\r\n // ============================================================\r\n {\r\n id: 'portfolio-creative',\r\n name: 'Creative Portfolio',\r\n status: 'stable',\r\n description: 'Portfolio template for designers and artists',\r\n keywords: ['portfolio', 'creative', 'design', 'art'],\r\n phase: '4A',\r\n icon: 'Palette',\r\n emoji: '🎨',\r\n designSystems: ['brutalism', 'glassmorphism', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['portfolio', 'creative', 'design', 'art'],\r\n category: 'portfolio',\r\n pages: ['portfolio-home', 'portfolio-project-detail', 'marketing-about', 'portfolio-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['design', 'creative', 'freelance'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'portfolio-developer',\r\n name: 'Developer Portfolio',\r\n status: 'stable',\r\n description: 'Portfolio template for software developers',\r\n keywords: ['portfolio', 'developer', 'code', 'projects'],\r\n phase: '4A',\r\n icon: 'Code2',\r\n emoji: '💻',\r\n designSystems: ['material-design', 'brutalism', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['portfolio', 'developer', 'code', 'tech'],\r\n category: 'portfolio',\r\n pages: [\r\n 'portfolio-home',\r\n 'portfolio-project-detail',\r\n 'marketing-about',\r\n 'portfolio-contact',\r\n 'marketing-blog-home',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['technology', 'software', 'freelance'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'portfolio-photographer',\r\n name: 'Photography Portfolio',\r\n status: 'stable',\r\n description: 'Image-focused portfolio for photographers',\r\n keywords: ['portfolio', 'photography', 'images', 'gallery'],\r\n phase: '4A',\r\n icon: 'Camera',\r\n emoji: '📷',\r\n designSystems: ['glassmorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['portfolio', 'photography', 'gallery', 'images'],\r\n category: 'portfolio',\r\n pages: ['portfolio-home', 'portfolio-project-detail', 'marketing-about', 'portfolio-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['photography', 'creative', 'freelance'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n // ============================================================\r\n // BLOG TEMPLATES (3)\r\n // ============================================================\r\n {\r\n id: 'blog-personal',\r\n name: 'Personal Blog',\r\n status: 'stable',\r\n description: 'Personal blogging template with clean typography',\r\n keywords: ['blog', 'personal', 'writing', 'content'],\r\n phase: '4A',\r\n icon: 'PenTool',\r\n emoji: '✍️',\r\n designSystems: ['material-design', 'ios-hig', 'minimalism'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['blog', 'personal', 'writing', 'content'],\r\n category: 'blog',\r\n pages: ['blog-home', 'blog-post', 'blog-category', 'marketing-about', 'marketing-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js', 'MDX'],\r\n industry: ['blogging', 'content', 'personal'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'blog-magazine',\r\n name: 'Magazine Blog',\r\n status: 'stable',\r\n description: 'Magazine-style blog with rich media support',\r\n keywords: ['blog', 'magazine', 'media', 'publishing'],\r\n phase: '4A',\r\n icon: 'Newspaper',\r\n emoji: '📰',\r\n designSystems: ['material-design', 'neumorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['blog', 'magazine', 'publishing', 'media'],\r\n category: 'blog',\r\n pages: ['blog-home', 'blog-post', 'blog-category', 'marketing-about', 'marketing-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js', 'MDX'],\r\n industry: ['publishing', 'media', 'content'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'blog-tech',\r\n name: 'Tech Blog',\r\n status: 'stable',\r\n description: 'Technology blog with code syntax highlighting',\r\n keywords: ['blog', 'tech', 'code', 'tutorial'],\r\n phase: '4A',\r\n icon: 'Terminal',\r\n emoji: '🖥️',\r\n designSystems: ['brutalism', 'material-design', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['blog', 'tech', 'code', 'tutorial'],\r\n category: 'blog',\r\n pages: ['blog-home', 'blog-post', 'blog-category', 'marketing-about', 'marketing-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js', 'MDX', 'Prism'],\r\n industry: ['technology', 'software', 'education'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n // ============================================================\r\n // STARTUP TEMPLATES (3)\r\n // ============================================================\r\n {\r\n id: 'startup-product-launch',\r\n name: 'Product Launch Startup',\r\n status: 'stable',\r\n description: 'Startup template for product launches with waitlist',\r\n keywords: ['startup', 'launch', 'product', 'waitlist'],\r\n phase: '4A',\r\n icon: 'Rocket',\r\n emoji: '🚀',\r\n designSystems: ['brutalism', 'glassmorphism', 'material-design'],\r\n tiers: ['basic', 'standard', 'enterprise'],\r\n isNew: true,\r\n isPopular: true,\r\n tags: ['startup', 'launch', 'product', 'marketing'],\r\n category: 'startup',\r\n pages: [\r\n 'marketing-landing',\r\n 'marketing-features',\r\n 'marketing-pricing',\r\n 'marketing-about',\r\n 'marketing-contact',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['startup', 'technology', 'b2b'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'startup-saas-landing',\r\n name: 'SaaS Startup Landing',\r\n status: 'stable',\r\n description: 'High-converting landing page for SaaS startups',\r\n keywords: ['startup', 'saas', 'landing', 'conversion'],\r\n phase: '4A',\r\n icon: 'TrendingUp',\r\n emoji: '📈',\r\n designSystems: ['material-design', 'glassmorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['startup', 'saas', 'landing', 'conversion'],\r\n category: 'startup',\r\n pages: [\r\n 'saas-home',\r\n 'marketing-features',\r\n 'saas-pricing',\r\n 'marketing-about',\r\n 'marketing-contact',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['startup', 'saas', 'b2b'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'startup-mobile-app',\r\n name: 'Mobile App Startup',\r\n status: 'stable',\r\n description: 'Startup template for mobile app marketing',\r\n keywords: ['startup', 'mobile', 'app', 'download'],\r\n phase: '4A',\r\n icon: 'Smartphone',\r\n emoji: '📱',\r\n designSystems: ['material-design', 'ios-hig', 'glassmorphism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['startup', 'mobile', 'app', 'download'],\r\n category: 'startup',\r\n pages: ['marketing-landing', 'marketing-features', 'marketing-about', 'marketing-contact'],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['startup', 'mobile', 'b2c'],\r\n complexity: 'starter',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n // ============================================================\r\n // AGENCY TEMPLATES (2)\r\n // ============================================================\r\n {\r\n id: 'agency-creative',\r\n name: 'Creative Agency',\r\n status: 'stable',\r\n description: 'Creative agency template with portfolio showcase',\r\n keywords: ['agency', 'creative', 'portfolio', 'services'],\r\n phase: '4A',\r\n icon: 'Sparkles',\r\n emoji: '✨',\r\n designSystems: ['brutalism', 'glassmorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n isPopular: true,\r\n tags: ['agency', 'creative', 'portfolio', 'b2b'],\r\n category: 'agency',\r\n pages: [\r\n 'marketing-landing',\r\n 'marketing-services',\r\n 'portfolio-home',\r\n 'marketing-about',\r\n 'marketing-contact',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['agency', 'creative', 'b2b'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n\r\n {\r\n id: 'agency-digital-marketing',\r\n name: 'Digital Marketing Agency',\r\n status: 'stable',\r\n description: 'Marketing agency template with case studies',\r\n keywords: ['agency', 'marketing', 'digital', 'seo'],\r\n phase: '4A',\r\n icon: 'Megaphone',\r\n emoji: '📣',\r\n designSystems: ['material-design', 'glassmorphism', 'minimalism'],\r\n tiers: ['standard', 'enterprise'],\r\n tags: ['agency', 'marketing', 'digital', 'b2b'],\r\n category: 'agency',\r\n pages: [\r\n 'marketing-landing',\r\n 'marketing-services',\r\n 'marketing-about',\r\n 'marketing-careers',\r\n 'marketing-contact',\r\n ],\r\n stack: ['React', 'TypeScript', 'Tailwind CSS', 'Next.js'],\r\n industry: ['agency', 'marketing', 'b2b'],\r\n complexity: 'intermediate',\r\n } as const satisfies RegistryTemplateDefinition,\r\n];\r\n\r\nexport type { RegistryTemplateDefinition };\r\n","/**\r\n * Component Registry\r\n *\r\n * Central registry for all 169 components in the Nikkory Vibe library.\r\n * Each component has full 16-Factor Dynamic Matrix support with 3 tiers (Basic, Standard, Enterprise).\r\n *\r\n * @packageDocumentation\r\n * @module presets/component-registry\r\n * @since 2.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n// =============================================================================\r\n// COMPONENT CATEGORIES\r\n// =============================================================================\r\n\r\n/**\r\n * Component category types.\r\n */\r\nexport type ComponentCategory =\r\n | 'form'\r\n | 'feedback'\r\n | 'navigation'\r\n | 'data-display'\r\n | 'overlay'\r\n | 'layout'\r\n | 'media'\r\n | 'utility'\r\n | 'advanced'\r\n | 'social'\r\n | 'ecommerce'\r\n | 'content';\r\n\r\n/**\r\n * Component complexity level.\r\n */\r\nexport type ComponentComplexity = 'low' | 'medium' | 'high';\r\n\r\n/**\r\n * Component status in the library.\r\n */\r\nexport type ComponentStatus =\r\n | 'stable' // Production ready\r\n | 'beta' // Feature complete, needs testing\r\n | 'alpha' // In development\r\n | 'planned' // Not yet started\r\n | 'deprecated'; // Being phased out\r\n\r\n// =============================================================================\r\n// IMPORTS\r\n// =============================================================================\r\n\r\nimport type { DesignSystem, Tier } from '../types';\r\n\r\n// Constants - using literal arrays since constants are in main types\r\nconst CURRENT_DESIGN_SYSTEMS: readonly DesignSystem[] = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n 'cyberpunk',\r\n 'flat-design',\r\n 'retro-vintage',\r\n 'fluent-design',\r\n 'carbon-design',\r\n 'ant-design',\r\n] as const;\r\n\r\nconst TIERS: readonly Tier[] = ['basic', 'standard', 'enterprise'] as const;\r\n\r\n// =============================================================================\r\n// COMPONENT DEFINITION\r\n// =============================================================================\r\n\r\n/**\r\n * Registry component definition with UI display fields.\r\n * This is the unified type for both code generation and UI display.\r\n * @since 2.1.0\r\n */\r\nexport interface RegistryComponentDefinition {\r\n /** Unique component ID (kebab-case) */\r\n readonly id: string;\r\n\r\n /** Display name */\r\n readonly name: string;\r\n\r\n /** Category */\r\n readonly category: ComponentCategory;\r\n\r\n /** Complexity level */\r\n readonly complexity: ComponentComplexity;\r\n\r\n /** Component status */\r\n readonly status: ComponentStatus;\r\n\r\n /** HTML element type */\r\n readonly element: string;\r\n\r\n /** Dependencies on other components */\r\n readonly dependencies: readonly string[];\r\n\r\n /** Brief description */\r\n readonly description: string;\r\n\r\n /** Keywords for search */\r\n readonly keywords: readonly string[];\r\n\r\n /** Phase when component was/will be added */\r\n readonly phase: string;\r\n\r\n // =========================================================================\r\n // UI DISPLAY FIELDS (NEW)\r\n // =========================================================================\r\n\r\n /** Lucide icon name for UI display */\r\n readonly icon: string;\r\n\r\n /** Emoji for quick visual identification */\r\n readonly emoji: string;\r\n\r\n /** Supported design systems */\r\n readonly designSystems: readonly DesignSystem[];\r\n\r\n /** Available quality tiers */\r\n readonly tiers: readonly Tier[];\r\n\r\n /** Show \"NEW\" badge in UI */\r\n readonly isNew?: boolean;\r\n\r\n /** Show \"POPULAR\" badge in UI */\r\n readonly isPopular?: boolean;\r\n\r\n /** Additional search tags for UI filtering */\r\n readonly tags: readonly string[];\r\n}\r\n\r\n/**\r\n * @deprecated Use RegistryComponentDefinition instead. Will be removed in v3.0.0.\r\n */\r\nexport type ComponentDefinition = RegistryComponentDefinition;\r\n\r\n// =============================================================================\r\n// UI FIELD DEFAULTS & HELPERS\r\n// =============================================================================\r\n\r\n/**\r\n * Category to icon mapping (Lucide icon names).\r\n */\r\nconst CATEGORY_ICONS: Record<ComponentCategory, string> = {\r\n form: 'FormInput',\r\n feedback: 'MessageSquare',\r\n navigation: 'Navigation',\r\n 'data-display': 'Table',\r\n overlay: 'Layers',\r\n layout: 'LayoutGrid',\r\n media: 'Image',\r\n utility: 'Settings',\r\n advanced: 'Cpu',\r\n social: 'Users',\r\n ecommerce: 'ShoppingCart',\r\n content: 'FileText',\r\n};\r\n\r\n/**\r\n * Category to emoji mapping.\r\n */\r\nconst CATEGORY_EMOJIS: Record<ComponentCategory, string> = {\r\n form: '📝',\r\n feedback: '💬',\r\n navigation: '🧭',\r\n 'data-display': '📊',\r\n overlay: '🔲',\r\n layout: '📐',\r\n media: '🖼️',\r\n utility: '⚙️',\r\n advanced: '🔧',\r\n social: '👥',\r\n ecommerce: '🛒',\r\n content: '📄',\r\n};\r\n\r\n/**\r\n * Popular component IDs (manually curated).\r\n */\r\nconst POPULAR_COMPONENT_IDS = new Set([\r\n 'button',\r\n 'input',\r\n 'card',\r\n 'modal',\r\n 'table',\r\n 'tabs',\r\n 'avatar',\r\n 'badge',\r\n 'alert',\r\n 'toast',\r\n 'spinner',\r\n 'select',\r\n 'checkbox',\r\n 'menu',\r\n 'tooltip',\r\n]);\r\n\r\n/**\r\n * New component IDs (recently added).\r\n */\r\nconst NEW_COMPONENT_IDS = new Set([\r\n 'data-table',\r\n 'virtual-list',\r\n 'rich-text-editor',\r\n 'command-palette',\r\n 'date-time-picker',\r\n 'multi-select',\r\n 'resizable-panel',\r\n]);\r\n\r\n/**\r\n * Base component definition without UI fields.\r\n */\r\ninterface BaseComponentDefinition {\r\n readonly id: string;\r\n readonly name: string;\r\n readonly category: ComponentCategory;\r\n readonly complexity: ComponentComplexity;\r\n readonly status: ComponentStatus;\r\n readonly element: string;\r\n readonly dependencies: readonly string[];\r\n readonly description: string;\r\n readonly keywords: readonly string[];\r\n readonly phase: string;\r\n}\r\n\r\n/**\r\n * Extend a base component definition with UI fields.\r\n */\r\nfunction withUIFields(base: BaseComponentDefinition): RegistryComponentDefinition {\r\n return {\r\n ...base,\r\n icon: CATEGORY_ICONS[base.category],\r\n emoji: CATEGORY_EMOJIS[base.category],\r\n designSystems: [...CURRENT_DESIGN_SYSTEMS] as readonly DesignSystem[],\r\n tiers: [...TIERS] as readonly Tier[],\r\n isNew: NEW_COMPONENT_IDS.has(base.id),\r\n isPopular: POPULAR_COMPONENT_IDS.has(base.id),\r\n tags: [...base.keywords],\r\n };\r\n}\r\n\r\n/**\r\n * Extend an array of base components with UI fields.\r\n */\r\nfunction withUIFieldsArray(components: BaseComponentDefinition[]): RegistryComponentDefinition[] {\r\n return components.map(withUIFields);\r\n}\r\n\r\n// =============================================================================\r\n// PHASE 1: CORE COMPONENTS (27) - ✅ COMPLETE\r\n// =============================================================================\r\n\r\nconst phase1ComponentsBase: BaseComponentDefinition[] = [\r\n // Form & Input (11)\r\n {\r\n id: 'button',\r\n name: 'Button',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: [],\r\n description: 'Interactive button for user actions',\r\n keywords: ['button', 'action', 'submit', 'click'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'input',\r\n name: 'Input',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: [],\r\n description: 'Text input field for forms',\r\n keywords: ['input', 'text', 'field', 'form'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'textarea',\r\n name: 'Textarea',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'textarea',\r\n dependencies: [],\r\n description: 'Multi-line text input',\r\n keywords: ['textarea', 'text', 'multiline', 'form'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'select',\r\n name: 'Select',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'select',\r\n dependencies: [],\r\n description: 'Dropdown selection input',\r\n keywords: ['select', 'dropdown', 'option', 'form'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'checkbox',\r\n name: 'Checkbox',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: [],\r\n description: 'Checkbox for boolean selection',\r\n keywords: ['checkbox', 'check', 'toggle', 'form'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'radio',\r\n name: 'Radio',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: [],\r\n description: 'Radio button for single selection',\r\n keywords: ['radio', 'option', 'selection', 'form'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'switch',\r\n name: 'Switch',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: [],\r\n description: 'Toggle switch for on/off states',\r\n keywords: ['switch', 'toggle', 'on', 'off'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'slider',\r\n name: 'Slider',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: [],\r\n description: 'Range slider input',\r\n keywords: ['slider', 'range', 'value', 'form'],\r\n phase: '2.1',\r\n },\r\n\r\n // Data Display (5)\r\n {\r\n id: 'card',\r\n name: 'Card',\r\n category: 'data-display',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Container for grouped content',\r\n keywords: ['card', 'container', 'box', 'content'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'badge',\r\n name: 'Badge',\r\n category: 'data-display',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: [],\r\n description: 'Small status indicator',\r\n keywords: ['badge', 'tag', 'label', 'status'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'avatar',\r\n name: 'Avatar',\r\n category: 'data-display',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'User avatar display',\r\n keywords: ['avatar', 'user', 'profile', 'image'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'alert',\r\n name: 'Alert',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Inline notification message',\r\n keywords: ['alert', 'message', 'notification', 'warning'],\r\n phase: '2.1',\r\n },\r\n\r\n // Feedback (5)\r\n {\r\n id: 'toast',\r\n name: 'Toast',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Floating notification message',\r\n keywords: ['toast', 'notification', 'snackbar', 'message'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'progress',\r\n name: 'Progress',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Progress indicator bar',\r\n keywords: ['progress', 'bar', 'loading', 'percentage'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'spinner',\r\n name: 'Spinner',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Loading spinner animation',\r\n keywords: ['spinner', 'loading', 'wait', 'animation'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'skeleton',\r\n name: 'Skeleton',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Loading placeholder skeleton',\r\n keywords: ['skeleton', 'loading', 'placeholder', 'shimmer'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'loading-overlay',\r\n name: 'LoadingOverlay',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['spinner'],\r\n description: 'Full overlay loading indicator',\r\n keywords: ['loading', 'overlay', 'spinner', 'blocking'],\r\n phase: '2.1',\r\n },\r\n\r\n // Overlay (4)\r\n {\r\n id: 'modal',\r\n name: 'Modal',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'Modal dialog overlay',\r\n keywords: ['modal', 'dialog', 'popup', 'overlay'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'tooltip',\r\n name: 'Tooltip',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Hover tooltip for additional info',\r\n keywords: ['tooltip', 'hover', 'hint', 'info'],\r\n phase: '2.1',\r\n },\r\n\r\n // Navigation (2)\r\n {\r\n id: 'tabs',\r\n name: 'Tabs',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Tab navigation component',\r\n keywords: ['tabs', 'navigation', 'panel', 'switch'],\r\n phase: '2.1',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// PHASE 2.1: ADDITIONAL CORE (10) - ✅ COMPLETE\r\n// =============================================================================\r\n\r\nconst phase21ComponentsBase: BaseComponentDefinition[] = [\r\n {\r\n id: 'drawer',\r\n name: 'Drawer',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'Slide-out panel from edge',\r\n keywords: ['drawer', 'sidebar', 'panel', 'slide'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'popover',\r\n name: 'Popover',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Floating content container',\r\n keywords: ['popover', 'popup', 'floating', 'content'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'menu',\r\n name: 'Menu',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Dropdown menu component',\r\n keywords: ['menu', 'dropdown', 'context', 'actions'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'breadcrumb',\r\n name: 'Breadcrumb',\r\n category: 'navigation',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'nav',\r\n dependencies: [],\r\n description: 'Navigation breadcrumb trail',\r\n keywords: ['breadcrumb', 'navigation', 'path', 'trail'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'pagination',\r\n name: 'Pagination',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'nav',\r\n dependencies: ['button'],\r\n description: 'Page navigation controls',\r\n keywords: ['pagination', 'page', 'navigation', 'list'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'stepper',\r\n name: 'Stepper',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Multi-step progress indicator',\r\n keywords: ['stepper', 'wizard', 'steps', 'progress'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'accordion',\r\n name: 'Accordion',\r\n category: 'data-display',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Collapsible content sections',\r\n keywords: ['accordion', 'collapse', 'expand', 'toggle'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'table',\r\n name: 'Table',\r\n category: 'data-display',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'table',\r\n dependencies: [],\r\n description: 'Data table with sorting and pagination',\r\n keywords: ['table', 'data', 'grid', 'rows'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'list',\r\n name: 'List',\r\n category: 'data-display',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'ul',\r\n dependencies: [],\r\n description: 'Ordered/unordered list',\r\n keywords: ['list', 'items', 'ul', 'ol'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'chip',\r\n name: 'Chip',\r\n category: 'data-display',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: [],\r\n description: 'Compact element for tags',\r\n keywords: ['chip', 'tag', 'pill', 'label'],\r\n phase: '2.1',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// PHASE 2.2: MEDIUM PRIORITY COMPONENTS (15) - 📋 PLANNED\r\n// =============================================================================\r\n\r\nconst phase22ComponentsBase: BaseComponentDefinition[] = [\r\n // Onboarding & Comparison\r\n {\r\n id: 'tour',\r\n name: 'Tour',\r\n category: 'advanced',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['tooltip', 'button'],\r\n description: 'Product tour / onboarding guide',\r\n keywords: ['tour', 'onboarding', 'guide', 'walkthrough'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'spotlight',\r\n name: 'Spotlight',\r\n category: 'advanced',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['tooltip'],\r\n description: 'Highlight focus on elements',\r\n keywords: ['spotlight', 'focus', 'highlight', 'attention'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'hotkey',\r\n name: 'Hotkey',\r\n category: 'advanced',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'kbd',\r\n dependencies: [],\r\n description: 'Keyboard shortcut display',\r\n keywords: ['hotkey', 'keyboard', 'shortcut', 'kbd'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'diff',\r\n name: 'Diff',\r\n category: 'advanced',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Text/code diff viewer',\r\n keywords: ['diff', 'compare', 'changes', 'code'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'compare',\r\n name: 'Compare',\r\n category: 'advanced',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Before/after image comparison',\r\n keywords: ['compare', 'before', 'after', 'slider'],\r\n phase: '2.2',\r\n },\r\n\r\n // Animation & Effects\r\n {\r\n id: 'lottie',\r\n name: 'Lottie',\r\n category: 'media',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Lottie animation player',\r\n keywords: ['lottie', 'animation', 'motion', 'json'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'confetti',\r\n name: 'Confetti',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'canvas',\r\n dependencies: [],\r\n description: 'Celebration confetti effect',\r\n keywords: ['confetti', 'celebration', 'party', 'effect'],\r\n phase: '2.2',\r\n },\r\n\r\n // Advanced Form Inputs\r\n {\r\n id: 'password-strength',\r\n name: 'PasswordStrength',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'progress'],\r\n description: 'Password strength indicator',\r\n keywords: ['password', 'strength', 'meter', 'security'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'credit-card',\r\n name: 'CreditCard',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input'],\r\n description: 'Credit card input with preview',\r\n keywords: ['credit', 'card', 'payment', 'visa', 'mastercard'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'address',\r\n name: 'Address',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'select'],\r\n description: 'Address autocomplete input',\r\n keywords: ['address', 'location', 'autocomplete', 'google'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'mentions',\r\n name: 'Mentions',\r\n category: 'social',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'popover'],\r\n description: '@mentions input component',\r\n keywords: ['mentions', 'at', 'users', 'tags'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'hashtag',\r\n name: 'Hashtag',\r\n category: 'social',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input'],\r\n description: '#hashtag input component',\r\n keywords: ['hashtag', 'tags', 'social', 'twitter'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'emoji-picker',\r\n name: 'EmojiPicker',\r\n category: 'social',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['popover', 'input'],\r\n description: 'Emoji picker/selector',\r\n keywords: ['emoji', 'picker', 'emoticon', 'smiley'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'avatar-upload',\r\n name: 'AvatarUpload',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['avatar', 'button', 'modal'],\r\n description: 'Avatar upload with cropper',\r\n keywords: ['avatar', 'upload', 'crop', 'image'],\r\n phase: '2.2',\r\n },\r\n {\r\n id: 'theme-toggle',\r\n name: 'ThemeToggle',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: ['switch'],\r\n description: 'Dark/light mode toggle',\r\n keywords: ['theme', 'dark', 'light', 'toggle', 'mode'],\r\n phase: '2.2',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// PHASE 2.3: LOW PRIORITY COMPONENTS (30) - 📋 PLANNED\r\n// =============================================================================\r\n\r\nconst phase23ComponentsBase: BaseComponentDefinition[] = [\r\n // Viewers\r\n {\r\n id: 'json-viewer',\r\n name: 'JsonViewer',\r\n category: 'advanced',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'JSON data viewer with syntax highlighting',\r\n keywords: ['json', 'viewer', 'code', 'data'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'xml-viewer',\r\n name: 'XmlViewer',\r\n category: 'advanced',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'XML data viewer',\r\n keywords: ['xml', 'viewer', 'code', 'markup'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'pdf-viewer',\r\n name: 'PdfViewer',\r\n category: 'media',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'PDF document viewer',\r\n keywords: ['pdf', 'viewer', 'document', 'preview'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'spreadsheet',\r\n name: 'Spreadsheet',\r\n category: 'advanced',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['table', 'input'],\r\n description: 'Excel-like spreadsheet component',\r\n keywords: ['spreadsheet', 'excel', 'grid', 'cells'],\r\n phase: '2.3',\r\n },\r\n\r\n // Pickers\r\n {\r\n id: 'color-swatch',\r\n name: 'ColorSwatch',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Color swatch selector',\r\n keywords: ['color', 'swatch', 'palette', 'picker'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'gradient-picker',\r\n name: 'GradientPicker',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['color-swatch', 'slider'],\r\n description: 'CSS gradient picker',\r\n keywords: ['gradient', 'picker', 'color', 'css'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'icon-picker',\r\n name: 'IconPicker',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['popover', 'input'],\r\n description: 'Icon library picker',\r\n keywords: ['icon', 'picker', 'library', 'svg'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'font-picker',\r\n name: 'FontPicker',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['select'],\r\n description: 'Google Fonts picker',\r\n keywords: ['font', 'picker', 'google', 'typography'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'pivot-table',\r\n name: 'PivotTable',\r\n category: 'advanced',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['table'],\r\n description: 'Pivot table for data analysis',\r\n keywords: ['pivot', 'table', 'data', 'analysis'],\r\n phase: '2.3',\r\n },\r\n\r\n // E-commerce\r\n {\r\n id: 'size-picker',\r\n name: 'SizePicker',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'Size selection for products',\r\n keywords: ['size', 'picker', 'product', 'ecommerce'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'variant-picker',\r\n name: 'VariantPicker',\r\n category: 'ecommerce',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button', 'badge'],\r\n description: 'Product variant selector',\r\n keywords: ['variant', 'picker', 'product', 'options'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'quantity',\r\n name: 'Quantity',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'button'],\r\n description: 'Quantity input with +/- buttons',\r\n keywords: ['quantity', 'counter', 'number', 'cart'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'price',\r\n name: 'Price',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: [],\r\n description: 'Price display with formatting',\r\n keywords: ['price', 'currency', 'money', 'cost'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'discount-badge',\r\n name: 'DiscountBadge',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: ['badge'],\r\n description: 'Sale/discount percentage badge',\r\n keywords: ['discount', 'sale', 'badge', 'percentage'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'wishlist-button',\r\n name: 'WishlistButton',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: ['button'],\r\n description: 'Add to wishlist heart button',\r\n keywords: ['wishlist', 'heart', 'favorite', 'save'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'cart-button',\r\n name: 'CartButton',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: ['button', 'badge'],\r\n description: 'Add to cart button with count',\r\n keywords: ['cart', 'add', 'shopping', 'buy'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'stock-status',\r\n name: 'StockStatus',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: ['badge'],\r\n description: 'In stock / out of stock indicator',\r\n keywords: ['stock', 'inventory', 'available', 'status'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'delivery-date',\r\n name: 'DeliveryDate',\r\n category: 'ecommerce',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Estimated delivery date display',\r\n keywords: ['delivery', 'date', 'shipping', 'estimate'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'review-summary',\r\n name: 'ReviewSummary',\r\n category: 'ecommerce',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['progress'],\r\n description: 'Product review summary with stars',\r\n keywords: ['review', 'rating', 'stars', 'summary'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'product-card',\r\n name: 'ProductCard',\r\n category: 'ecommerce',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['card', 'badge', 'button', 'price'],\r\n description: 'E-commerce product card',\r\n keywords: ['product', 'card', 'ecommerce', 'shop'],\r\n phase: '2.3',\r\n },\r\n\r\n // Content\r\n {\r\n id: 'faq-item',\r\n name: 'FaqItem',\r\n category: 'content',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['accordion'],\r\n description: 'FAQ question/answer item',\r\n keywords: ['faq', 'question', 'answer', 'help'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'testimonial',\r\n name: 'Testimonial',\r\n category: 'content',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'figure',\r\n dependencies: ['card', 'avatar'],\r\n description: 'Customer testimonial card with quote, avatar, name, and role',\r\n keywords: ['testimonial', 'review', 'quote', 'customer', 'feedback'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'pricing-card',\r\n name: 'PricingCard',\r\n category: 'content',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['card', 'button', 'badge'],\r\n description: 'Pricing plan card',\r\n keywords: ['pricing', 'plan', 'subscription', 'tier'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'feature-card',\r\n name: 'FeatureCard',\r\n category: 'content',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['card'],\r\n description: 'Feature highlight card',\r\n keywords: ['feature', 'card', 'benefit', 'highlight'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'team-member',\r\n name: 'TeamMember',\r\n category: 'content',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['card', 'avatar'],\r\n description: 'Team member profile card',\r\n keywords: ['team', 'member', 'profile', 'about'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'blog-card',\r\n name: 'BlogCard',\r\n category: 'content',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'article',\r\n dependencies: ['card', 'badge', 'avatar'],\r\n description: 'Blog post preview card',\r\n keywords: ['blog', 'post', 'article', 'news'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'news-ticker',\r\n name: 'NewsTicker',\r\n category: 'content',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Scrolling news ticker',\r\n keywords: ['news', 'ticker', 'scroll', 'headline'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'reading-progress',\r\n name: 'ReadingProgress',\r\n category: 'content',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['progress'],\r\n description: 'Article reading progress indicator',\r\n keywords: ['reading', 'progress', 'scroll', 'article'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'weather',\r\n name: 'Weather',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['card'],\r\n description: 'Weather widget display',\r\n keywords: ['weather', 'forecast', 'temperature', 'widget'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'clock',\r\n name: 'Clock',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Digital/analog clock display',\r\n keywords: ['clock', 'time', 'digital', 'analog'],\r\n phase: '2.3',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// PHASE 2.1 EXTENDED: EXISTING TEMPLATES (43) - ✅ COMPLETE\r\n// Components that exist in templates/ but were not in registry\r\n// =============================================================================\r\n\r\nconst phase21ExtendedComponentsBase: BaseComponentDefinition[] = [\r\n // Layout Components (12)\r\n {\r\n id: 'box',\r\n name: 'Box',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Basic box layout container',\r\n keywords: ['box', 'div', 'container', 'layout'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'center',\r\n name: 'Center',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Center children horizontally and vertically',\r\n keywords: ['center', 'align', 'middle', 'layout'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'container',\r\n name: 'Container',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Max-width container with responsive padding',\r\n keywords: ['container', 'wrapper', 'max-width', 'layout'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'flex',\r\n name: 'Flex',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Flexbox layout container',\r\n keywords: ['flex', 'flexbox', 'layout', 'row', 'column'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'grid',\r\n name: 'Grid',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'CSS Grid layout container',\r\n keywords: ['grid', 'layout', 'columns', 'rows'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'grid-item',\r\n name: 'GridItem',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['grid'],\r\n description: 'Grid item with span controls',\r\n keywords: ['grid', 'item', 'cell', 'span'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'hstack',\r\n name: 'HStack',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Horizontal stack layout',\r\n keywords: ['hstack', 'horizontal', 'row', 'stack'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'vstack',\r\n name: 'VStack',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Vertical stack layout',\r\n keywords: ['vstack', 'vertical', 'column', 'stack'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'stack',\r\n name: 'Stack',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Flexible stack layout (horizontal or vertical)',\r\n keywords: ['stack', 'layout', 'spacing', 'gap'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'spacer',\r\n name: 'Spacer',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Flexible spacer to fill available space',\r\n keywords: ['spacer', 'flex', 'fill', 'space'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'simple-grid',\r\n name: 'SimpleGrid',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Simplified responsive grid',\r\n keywords: ['grid', 'simple', 'columns', 'responsive'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'wrap',\r\n name: 'Wrap',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Flexbox wrap container',\r\n keywords: ['wrap', 'flex', 'flow', 'responsive'],\r\n phase: '2.1',\r\n },\r\n\r\n // Form Input Variants (10)\r\n {\r\n id: 'input-currency',\r\n name: 'InputCurrency',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: ['input'],\r\n description: 'Currency formatted input',\r\n keywords: ['input', 'currency', 'money', 'format'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'input-group',\r\n name: 'InputGroup',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input'],\r\n description: 'Input with addons and elements',\r\n keywords: ['input', 'group', 'addon', 'prefix', 'suffix'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'input-otp',\r\n name: 'InputOTP',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input'],\r\n description: 'One-time password input',\r\n keywords: ['input', 'otp', 'code', 'pin', 'verification'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'input-password',\r\n name: 'InputPassword',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: ['input'],\r\n description: 'Password input with show/hide toggle',\r\n keywords: ['input', 'password', 'secret', 'toggle'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'input-phone',\r\n name: 'InputPhone',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: ['input', 'select'],\r\n description: 'International phone number input',\r\n keywords: ['input', 'phone', 'telephone', 'international'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'input-search',\r\n name: 'InputSearch',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'input',\r\n dependencies: ['input'],\r\n description: 'Search input with icon and clear button',\r\n keywords: ['input', 'search', 'find', 'query'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'number-input',\r\n name: 'NumberInput',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input'],\r\n description: 'Number input with increment/decrement',\r\n keywords: ['input', 'number', 'stepper', 'counter'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'pin-input',\r\n name: 'PinInput',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input'],\r\n description: 'PIN code input with individual fields',\r\n keywords: ['input', 'pin', 'code', 'otp'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'textarea-autosize',\r\n name: 'TextareaAutosize',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'textarea',\r\n dependencies: ['textarea'],\r\n description: 'Auto-resizing textarea',\r\n keywords: ['textarea', 'autosize', 'expand', 'grow'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'tag-input',\r\n name: 'TagInput',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'chip'],\r\n description: 'Input for adding tags/chips',\r\n keywords: ['input', 'tag', 'chip', 'multi'],\r\n phase: '2.1',\r\n },\r\n\r\n // Feedback/State Components (6)\r\n {\r\n id: 'empty-state',\r\n name: 'EmptyState',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Empty state placeholder with action',\r\n keywords: ['empty', 'state', 'placeholder', 'no-data'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'error-state',\r\n name: 'ErrorState',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Error state display with retry action',\r\n keywords: ['error', 'state', 'failed', 'retry'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'loading-state',\r\n name: 'LoadingState',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['spinner'],\r\n description: 'Loading state with spinner and message',\r\n keywords: ['loading', 'state', 'wait', 'spinner'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'result-state',\r\n name: 'ResultState',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Success/failure result display',\r\n keywords: ['result', 'state', 'success', 'failure'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'notification',\r\n name: 'Notification',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Inline notification message',\r\n keywords: ['notification', 'message', 'alert', 'info'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'notification-badge',\r\n name: 'NotificationBadge',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: ['badge'],\r\n description: 'Badge with notification count',\r\n keywords: ['notification', 'badge', 'count', 'indicator'],\r\n phase: '2.1',\r\n },\r\n\r\n // Navigation & Overlay (8)\r\n {\r\n id: 'navbar',\r\n name: 'Navbar',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'nav',\r\n dependencies: [],\r\n description: 'Navigation bar with brand and menu',\r\n keywords: ['navbar', 'navigation', 'header', 'menu'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'sidebar',\r\n name: 'Sidebar',\r\n category: 'navigation',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'aside',\r\n dependencies: [],\r\n description: 'Collapsible sidebar navigation',\r\n keywords: ['sidebar', 'navigation', 'menu', 'aside'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'alert-dialog',\r\n name: 'AlertDialog',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['modal', 'button'],\r\n description: 'Alert dialog for confirmations',\r\n keywords: ['alert', 'dialog', 'confirm', 'modal'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'sheet',\r\n name: 'Sheet',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Bottom sheet / action sheet',\r\n keywords: ['sheet', 'bottom', 'action', 'panel'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'confirmation-modal',\r\n name: 'ConfirmationModal',\r\n category: 'overlay',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['modal', 'button'],\r\n description: 'Confirmation dialog with actions',\r\n keywords: ['confirmation', 'modal', 'dialog', 'confirm'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'command-palette',\r\n name: 'CommandPalette',\r\n category: 'navigation',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'modal'],\r\n description: 'Command palette (⌘K style)',\r\n keywords: ['command', 'palette', 'search', 'keyboard'],\r\n phase: '2.1',\r\n },\r\n\r\n // Utility Components (9)\r\n {\r\n id: 'icon',\r\n name: 'Icon',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: [],\r\n description: 'Icon wrapper component',\r\n keywords: ['icon', 'svg', 'symbol', 'graphic'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'icon-button',\r\n name: 'IconButton',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: ['button', 'icon'],\r\n description: 'Icon-only button',\r\n keywords: ['icon', 'button', 'action', 'toolbar'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'close-button',\r\n name: 'CloseButton',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: ['button'],\r\n description: 'Close/dismiss button',\r\n keywords: ['close', 'button', 'dismiss', 'x'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'focus-trap',\r\n name: 'FocusTrap',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Trap focus within container',\r\n keywords: ['focus', 'trap', 'accessibility', 'modal'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'visually-hidden',\r\n name: 'VisuallyHidden',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: [],\r\n description: 'Visually hidden for screen readers',\r\n keywords: ['hidden', 'accessibility', 'screen-reader', 'sr-only'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'hide',\r\n name: 'Hide',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Conditionally hide content',\r\n keywords: ['hide', 'show', 'conditional', 'responsive'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'show',\r\n name: 'Show',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Conditionally show content',\r\n keywords: ['show', 'hide', 'conditional', 'responsive'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'transition',\r\n name: 'Transition',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'CSS transition wrapper',\r\n keywords: ['transition', 'animation', 'enter', 'leave'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'collapse',\r\n name: 'Collapse',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Collapsible content with animation',\r\n keywords: ['collapse', 'expand', 'toggle', 'animation'],\r\n phase: '2.1',\r\n },\r\n {\r\n id: 'portal',\r\n name: 'Portal',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Render children into a DOM node outside parent hierarchy',\r\n keywords: ['portal', 'render', 'modal', 'overlay', 'teleport'],\r\n phase: '2.1',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// ADDITIONAL COMPONENTS (From full 147 list)\r\n// =============================================================================\r\n\r\nconst additionalComponentsBase: BaseComponentDefinition[] = [\r\n // Date/Time\r\n {\r\n id: 'calendar',\r\n name: 'Calendar',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'Calendar date picker',\r\n keywords: ['calendar', 'date', 'picker', 'schedule'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'date-picker',\r\n name: 'DatePicker',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['calendar', 'input', 'popover'],\r\n description: 'Date selection input',\r\n keywords: ['date', 'picker', 'input', 'calendar'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'time-picker',\r\n name: 'TimePicker',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'select'],\r\n description: 'Time selection input',\r\n keywords: ['time', 'picker', 'clock', 'hours'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'date-range-picker',\r\n name: 'DateRangePicker',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['calendar', 'input'],\r\n description: 'Date range selection',\r\n keywords: ['date', 'range', 'picker', 'from', 'to'],\r\n phase: '2.3',\r\n },\r\n\r\n // Media\r\n {\r\n id: 'image',\r\n name: 'Image',\r\n category: 'media',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'img',\r\n dependencies: ['skeleton'],\r\n description: 'Optimized image with lazy loading',\r\n keywords: ['image', 'picture', 'photo', 'lazy'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'video',\r\n name: 'Video',\r\n category: 'media',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'video',\r\n dependencies: ['button'],\r\n description: 'Video player component',\r\n keywords: ['video', 'player', 'media', 'mp4'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'audio',\r\n name: 'Audio',\r\n category: 'media',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'audio',\r\n dependencies: ['button', 'slider'],\r\n description: 'Audio player component',\r\n keywords: ['audio', 'player', 'music', 'mp3'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'file-upload',\r\n name: 'FileUpload',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button', 'progress'],\r\n description: 'File upload with drag & drop',\r\n keywords: ['file', 'upload', 'drag', 'drop'],\r\n phase: '2.3',\r\n },\r\n\r\n // Layout\r\n {\r\n id: 'divider',\r\n name: 'Divider',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'hr',\r\n dependencies: [],\r\n description: 'Visual separator line',\r\n keywords: ['divider', 'separator', 'line', 'hr'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'dropdown',\r\n name: 'Dropdown',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button', 'menu'],\r\n description: 'Dropdown button with menu',\r\n keywords: ['dropdown', 'button', 'menu', 'select'],\r\n phase: '2.3',\r\n },\r\n\r\n // Additional utilities\r\n {\r\n id: 'color-picker',\r\n name: 'ColorPicker',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'popover', 'slider'],\r\n description: 'Full color picker component',\r\n keywords: ['color', 'picker', 'hex', 'rgb'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'rating',\r\n name: 'Rating',\r\n category: 'form',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Star rating input',\r\n keywords: ['rating', 'stars', 'score', 'review'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'signature',\r\n name: 'Signature',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'canvas',\r\n dependencies: ['button'],\r\n description: 'Digital signature pad',\r\n keywords: ['signature', 'draw', 'sign', 'canvas'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'carousel',\r\n name: 'Carousel',\r\n category: 'data-display',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'Image/content carousel slider',\r\n keywords: ['carousel', 'slider', 'gallery', 'swipe'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'timeline',\r\n name: 'Timeline',\r\n category: 'data-display',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Vertical/horizontal timeline',\r\n keywords: ['timeline', 'history', 'events', 'roadmap'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'tree',\r\n name: 'Tree',\r\n category: 'data-display',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Tree view for hierarchical data',\r\n keywords: ['tree', 'hierarchy', 'folder', 'nested'],\r\n phase: '2.3',\r\n },\r\n {\r\n id: 'context-menu',\r\n name: 'ContextMenu',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['menu'],\r\n description: 'Right-click context menu',\r\n keywords: ['context', 'menu', 'right-click', 'actions'],\r\n phase: '2.3',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// PHASE 2.4: DYNAMIC MATRIX SYNC (33) - ✅ STABLE\r\n// Components that exist in templates/ but were missing from registry\r\n// =============================================================================\r\n\r\nconst phase24DynamicMatrixSyncComponentsBase: BaseComponentDefinition[] = [\r\n // Layout (2)\r\n {\r\n id: 'aspect-ratio',\r\n name: 'AspectRatio',\r\n category: 'layout',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Maintain aspect ratio of content',\r\n keywords: ['aspect', 'ratio', 'responsive', 'video', 'image'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'resizable-panel',\r\n name: 'ResizablePanel',\r\n category: 'layout',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Resizable panel with drag handles',\r\n keywords: ['resizable', 'panel', 'drag', 'resize', 'split'],\r\n phase: '2.4',\r\n },\r\n\r\n // Form (10)\r\n {\r\n id: 'autocomplete',\r\n name: 'Autocomplete',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'popover'],\r\n description: 'Autocomplete input with suggestions',\r\n keywords: ['autocomplete', 'suggest', 'search', 'typeahead'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'combobox',\r\n name: 'Combobox',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['input', 'popover'],\r\n description: 'Combobox with search and selection',\r\n keywords: ['combobox', 'select', 'search', 'dropdown'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'date-time-picker',\r\n name: 'DateTimePicker',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['calendar', 'time-picker', 'popover'],\r\n description: 'Combined date and time picker',\r\n keywords: ['datetime', 'picker', 'date', 'time', 'combined'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'file-dropzone',\r\n name: 'FileDropzone',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Drag and drop file zone',\r\n keywords: ['file', 'dropzone', 'drag', 'drop', 'upload'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'form-control',\r\n name: 'FormControl',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Form control wrapper with label and error',\r\n keywords: ['form', 'control', 'label', 'error', 'helper'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'image-upload',\r\n name: 'ImageUpload',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['file-upload', 'button'],\r\n description: 'Image upload with preview and crop',\r\n keywords: ['image', 'upload', 'preview', 'crop', 'photo'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'multi-select',\r\n name: 'MultiSelect',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['select', 'chip'],\r\n description: 'Multi-value select input',\r\n keywords: ['multi', 'select', 'multiple', 'tags', 'chips'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'range-slider',\r\n name: 'RangeSlider',\r\n category: 'form',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['slider'],\r\n description: 'Dual-handle range slider',\r\n keywords: ['range', 'slider', 'dual', 'min', 'max'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'rich-text-editor',\r\n name: 'RichTextEditor',\r\n category: 'form',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'WYSIWYG rich text editor',\r\n keywords: ['rich', 'text', 'editor', 'wysiwyg', 'html'],\r\n phase: '2.4',\r\n },\r\n\r\n // Feedback (5)\r\n {\r\n id: 'banner',\r\n name: 'Banner',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['button'],\r\n description: 'Full-width banner notification',\r\n keywords: ['banner', 'notification', 'alert', 'announcement'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'callout',\r\n name: 'Callout',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Callout box for important info',\r\n keywords: ['callout', 'info', 'note', 'warning', 'tip'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'meter',\r\n name: 'Meter',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Meter for showing scalar values',\r\n keywords: ['meter', 'gauge', 'value', 'measure', 'scale'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'progress-circle',\r\n name: 'ProgressCircle',\r\n category: 'feedback',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Circular progress indicator',\r\n keywords: ['progress', 'circle', 'radial', 'donut', 'ring'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'status-badge',\r\n name: 'StatusBadge',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: ['badge'],\r\n description: 'Status indicator badge',\r\n keywords: ['status', 'badge', 'indicator', 'state', 'online'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'status-dot',\r\n name: 'StatusDot',\r\n category: 'feedback',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'span',\r\n dependencies: [],\r\n description: 'Small status dot indicator',\r\n keywords: ['status', 'dot', 'indicator', 'online', 'offline'],\r\n phase: '2.4',\r\n },\r\n\r\n // Navigation (8)\r\n {\r\n id: 'link',\r\n name: 'Link',\r\n category: 'navigation',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'a',\r\n dependencies: [],\r\n description: 'Styled anchor link',\r\n keywords: ['link', 'anchor', 'href', 'navigation'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'link-overlay',\r\n name: 'LinkOverlay',\r\n category: 'navigation',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'a',\r\n dependencies: [],\r\n description: 'Link overlay for card clickability',\r\n keywords: ['link', 'overlay', 'card', 'clickable', 'stretch'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'nav-group',\r\n name: 'NavGroup',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Navigation group with label',\r\n keywords: ['nav', 'group', 'section', 'sidebar', 'menu'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'nav-item',\r\n name: 'NavItem',\r\n category: 'navigation',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'a',\r\n dependencies: [],\r\n description: 'Navigation menu item',\r\n keywords: ['nav', 'item', 'menu', 'link', 'sidebar'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'nav-link',\r\n name: 'NavLink',\r\n category: 'navigation',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'a',\r\n dependencies: [],\r\n description: 'Navigation link with active state',\r\n keywords: ['nav', 'link', 'active', 'router', 'navigation'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'progress-steps',\r\n name: 'ProgressSteps',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Step progress indicator',\r\n keywords: ['progress', 'steps', 'wizard', 'stepper', 'flow'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'sidebar-group',\r\n name: 'SidebarGroup',\r\n category: 'navigation',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['sidebar'],\r\n description: 'Collapsible sidebar group',\r\n keywords: ['sidebar', 'group', 'collapse', 'section', 'menu'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'sidebar-item',\r\n name: 'SidebarItem',\r\n category: 'navigation',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'a',\r\n dependencies: ['sidebar'],\r\n description: 'Sidebar navigation item',\r\n keywords: ['sidebar', 'item', 'menu', 'link', 'navigation'],\r\n phase: '2.4',\r\n },\r\n\r\n // Data Display (3)\r\n {\r\n id: 'data-table',\r\n name: 'DataTable',\r\n category: 'data-display',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['table', 'pagination'],\r\n description: 'Advanced data table with sorting and filtering',\r\n keywords: ['data', 'table', 'grid', 'sort', 'filter', 'paginate'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'stat',\r\n name: 'Stat',\r\n category: 'data-display',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Statistic display with label and value',\r\n keywords: ['stat', 'statistic', 'number', 'metric', 'kpi'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'virtual-list',\r\n name: 'VirtualList',\r\n category: 'data-display',\r\n complexity: 'high',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Virtualized list for large datasets',\r\n keywords: ['virtual', 'list', 'scroll', 'performance', 'large'],\r\n phase: '2.4',\r\n },\r\n\r\n // Utility (5)\r\n {\r\n id: 'infinite-scroll',\r\n name: 'InfiniteScroll',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: ['spinner'],\r\n description: 'Infinite scroll container',\r\n keywords: ['infinite', 'scroll', 'load', 'more', 'pagination'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'scale-fade',\r\n name: 'ScaleFade',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Scale and fade animation wrapper',\r\n keywords: ['scale', 'fade', 'animation', 'transition', 'enter'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'scroll-area',\r\n name: 'ScrollArea',\r\n category: 'utility',\r\n complexity: 'medium',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Custom scrollbar area',\r\n keywords: ['scroll', 'area', 'scrollbar', 'overflow', 'custom'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'scroll-to-top',\r\n name: 'ScrollToTop',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'button',\r\n dependencies: ['button'],\r\n description: 'Scroll to top button',\r\n keywords: ['scroll', 'top', 'button', 'back', 'up'],\r\n phase: '2.4',\r\n },\r\n {\r\n id: 'slide-fade',\r\n name: 'SlideFade',\r\n category: 'utility',\r\n complexity: 'low',\r\n status: 'stable',\r\n element: 'div',\r\n dependencies: [],\r\n description: 'Slide and fade animation wrapper',\r\n keywords: ['slide', 'fade', 'animation', 'transition', 'enter'],\r\n phase: '2.4',\r\n },\r\n];\r\n\r\n// =============================================================================\r\n// COMPONENT REGISTRY\r\n// =============================================================================\r\n\r\n/**\r\n * All components in the registry.\r\n * Total: 169 components with full 16-Factor Dynamic Matrix support\r\n */\r\n// =============================================================================\r\n// APPLY UI FIELDS TO ALL COMPONENTS\r\n// =============================================================================\r\n\r\nconst phase1Components = withUIFieldsArray(phase1ComponentsBase);\r\nconst phase21Components = withUIFieldsArray(phase21ComponentsBase);\r\nconst phase21ExtendedComponents = withUIFieldsArray(phase21ExtendedComponentsBase);\r\nconst phase22Components = withUIFieldsArray(phase22ComponentsBase);\r\nconst phase23Components = withUIFieldsArray(phase23ComponentsBase);\r\nconst additionalComponents = withUIFieldsArray(additionalComponentsBase);\r\nconst phase24DynamicMatrixSyncComponents = withUIFieldsArray(\r\n phase24DynamicMatrixSyncComponentsBase\r\n);\r\n\r\n/**\r\n * All components in the registry with UI fields.\r\n * Total: 169 components with full 16-Factor Dynamic Matrix support\r\n */\r\nexport const ALL_COMPONENTS: readonly RegistryComponentDefinition[] = [\r\n ...phase1Components, // 20 components\r\n ...phase21Components, // 10 components\r\n ...phase21ExtendedComponents, // 43 components (from templates/)\r\n ...phase22Components, // 15 components\r\n ...phase23Components, // 30 components\r\n ...additionalComponents, // 20 components\r\n ...phase24DynamicMatrixSyncComponents, // 33 components (Dynamic Matrix sync)\r\n];\r\n\r\n/**\r\n * Component registry indexed by ID.\r\n */\r\nexport const COMPONENT_REGISTRY: Record<string, RegistryComponentDefinition> = Object.fromEntries(\r\n ALL_COMPONENTS.map((c) => [c.id, c])\r\n);\r\n\r\n/**\r\n * All valid component IDs.\r\n * This type is derived from the registry and auto-updates when components are added.\r\n */\r\nexport type ComponentId = (typeof ALL_COMPONENTS)[number]['id'];\r\n\r\n/**\r\n * Get all component IDs.\r\n */\r\nexport function getAllComponentIds(): string[] {\r\n return ALL_COMPONENTS.map((c) => c.id);\r\n}\r\n\r\n/**\r\n * Get component by ID.\r\n */\r\nexport function getComponent(id: string): RegistryComponentDefinition | undefined {\r\n return COMPONENT_REGISTRY[id];\r\n}\r\n\r\n/**\r\n * Check if component ID is valid.\r\n */\r\nexport function isValidComponentId(id: string): boolean {\r\n return id in COMPONENT_REGISTRY;\r\n}\r\n\r\n/**\r\n * Get components by category.\r\n */\r\nexport function getComponentsByCategory(\r\n category: ComponentCategory\r\n): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.category === category);\r\n}\r\n\r\n/**\r\n * Get components by status.\r\n */\r\nexport function getComponentsByStatus(status: ComponentStatus): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.status === status);\r\n}\r\n\r\n/**\r\n * Get components by phase.\r\n */\r\nexport function getComponentsByPhase(phase: string): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.phase === phase);\r\n}\r\n\r\n/**\r\n * Get stable components only.\r\n */\r\nexport function getStableComponents(): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.status === 'stable');\r\n}\r\n\r\n/**\r\n * Get planned components only.\r\n */\r\nexport function getPlannedComponents(): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.status === 'planned');\r\n}\r\n\r\n/**\r\n * Search components by keyword.\r\n */\r\nexport function searchComponents(keyword: string): RegistryComponentDefinition[] {\r\n const normalized = keyword.toLowerCase();\r\n return ALL_COMPONENTS.filter(\r\n (c) =>\r\n c.id.includes(normalized) ||\r\n c.name.toLowerCase().includes(normalized) ||\r\n c.description.toLowerCase().includes(normalized) ||\r\n c.keywords.some((k) => k.includes(normalized))\r\n );\r\n}\r\n\r\n/**\r\n * Get component dependencies (recursive).\r\n */\r\nexport function getComponentDependencies(id: string, visited = new Set<string>()): string[] {\r\n if (visited.has(id)) return [];\r\n visited.add(id);\r\n\r\n const component = COMPONENT_REGISTRY[id];\r\n if (component === undefined) return [];\r\n\r\n const allDeps: string[] = [...component.dependencies];\r\n\r\n for (const depId of component.dependencies) {\r\n const nestedDeps = getComponentDependencies(depId, visited);\r\n allDeps.push(...nestedDeps);\r\n }\r\n\r\n return [...new Set(allDeps)];\r\n}\r\n\r\n/**\r\n * Get components that depend on a given component.\r\n */\r\nexport function getComponentDependents(id: string): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.dependencies.includes(id));\r\n}\r\n\r\n/**\r\n * Get registry statistics.\r\n */\r\nexport function getRegistryStats(): {\r\n total: number;\r\n stable: number;\r\n planned: number;\r\n byCategory: Record<ComponentCategory, number>;\r\n byPhase: Record<string, number>;\r\n} {\r\n const byCategory = {} as Record<ComponentCategory, number>;\r\n const byPhase = {} as Record<string, number>;\r\n\r\n for (const c of ALL_COMPONENTS) {\r\n byCategory[c.category] = (byCategory[c.category] ?? 0) + 1;\r\n byPhase[c.phase] = (byPhase[c.phase] ?? 0) + 1;\r\n }\r\n\r\n return {\r\n total: ALL_COMPONENTS.length,\r\n stable: ALL_COMPONENTS.filter((c) => c.status === 'stable').length,\r\n planned: ALL_COMPONENTS.filter((c) => c.status === 'planned').length,\r\n byCategory,\r\n byPhase,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// UI DISPLAY HELPERS (NEW)\r\n// =============================================================================\r\n\r\n/**\r\n * Get popular components (marked with isPopular: true).\r\n * @returns Array of popular components sorted by name\r\n * @since 2.1.0\r\n */\r\nexport function getPopularComponents(): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.isPopular === true).sort((a, b) =>\r\n a.name.localeCompare(b.name)\r\n );\r\n}\r\n\r\n/**\r\n * Get new components (marked with isNew: true).\r\n * @returns Array of new components sorted by name\r\n * @since 2.1.0\r\n */\r\nexport function getNewComponents(): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.isNew === true).sort((a, b) =>\r\n a.name.localeCompare(b.name)\r\n );\r\n}\r\n\r\n/**\r\n * Search components for UI display with enhanced matching.\r\n * Searches in: id, name, description, keywords, tags, emoji.\r\n *\r\n * @param query - Search query string\r\n * @returns Array of matching components sorted by relevance\r\n * @since 2.1.0\r\n */\r\nexport function searchUIComponents(query: string): RegistryComponentDefinition[] {\r\n if (query.trim() === '') {\r\n return [...ALL_COMPONENTS];\r\n }\r\n\r\n const normalized = query.toLowerCase().trim();\r\n const terms = normalized.split(/\\s+/);\r\n\r\n // Score each component based on match quality\r\n const scored = ALL_COMPONENTS.map((c) => {\r\n let score = 0;\r\n\r\n for (const term of terms) {\r\n // Exact ID match (highest priority)\r\n if (c.id === term) score += 100;\r\n else if (c.id.includes(term)) score += 50;\r\n\r\n // Name match\r\n if (c.name.toLowerCase() === term) score += 80;\r\n else if (c.name.toLowerCase().includes(term)) score += 40;\r\n\r\n // Keyword match\r\n if (c.keywords.some((k) => k === term)) score += 30;\r\n else if (c.keywords.some((k) => k.includes(term))) score += 15;\r\n\r\n // Tag match\r\n if (c.tags.some((t) => t === term)) score += 25;\r\n else if (c.tags.some((t) => t.includes(term))) score += 12;\r\n\r\n // Description match\r\n if (c.description.toLowerCase().includes(term)) score += 10;\r\n\r\n // Emoji match (for emoji search)\r\n if (c.emoji === term) score += 20;\r\n\r\n // Category match\r\n if (c.category.includes(term)) score += 15;\r\n }\r\n\r\n return { component: c, score };\r\n });\r\n\r\n // Filter and sort by score\r\n return scored\r\n .filter((s) => s.score > 0)\r\n .sort((a, b) => b.score - a.score)\r\n .map((s) => s.component);\r\n}\r\n\r\n/**\r\n * Get components by design system.\r\n * @param designSystem - Design system ID to filter by\r\n * @returns Array of components supporting the design system\r\n * @since 2.1.0\r\n */\r\nexport function getComponentsByDesignSystem(\r\n designSystem: DesignSystem\r\n): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.designSystems.includes(designSystem));\r\n}\r\n\r\n/**\r\n * Get components by tier.\r\n * @param tier - Tier to filter by\r\n * @returns Array of components supporting the tier\r\n * @since 2.1.0\r\n */\r\nexport function getComponentsByTier(tier: Tier): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.tiers.includes(tier));\r\n}\r\n\r\n/**\r\n * Get components by icon name.\r\n * @param icon - Lucide icon name\r\n * @returns Array of components with that icon\r\n * @since 2.1.0\r\n */\r\nexport function getComponentsByIcon(icon: string): RegistryComponentDefinition[] {\r\n return ALL_COMPONENTS.filter((c) => c.icon === icon);\r\n}\r\n\r\n/**\r\n * Get all unique icons used in the registry.\r\n * @returns Array of unique icon names\r\n * @since 2.1.0\r\n */\r\nexport function getAllIcons(): string[] {\r\n return [...new Set(ALL_COMPONENTS.map((c) => c.icon))];\r\n}\r\n\r\n/**\r\n * Get all unique emojis used in the registry.\r\n * @returns Array of unique emojis\r\n * @since 2.1.0\r\n */\r\nexport function getAllEmojis(): string[] {\r\n return [...new Set(ALL_COMPONENTS.map((c) => c.emoji))];\r\n}\r\n\r\n/**\r\n * Get components grouped by category for UI display.\r\n * @returns Record of category to components array\r\n * @since 2.1.0\r\n */\r\nexport function getComponentsGroupedByCategory(): Record<\r\n ComponentCategory,\r\n RegistryComponentDefinition[]\r\n> {\r\n const grouped = {} as Record<ComponentCategory, RegistryComponentDefinition[]>;\r\n\r\n for (const c of ALL_COMPONENTS) {\r\n grouped[c.category] ??= [];\r\n grouped[c.category].push(c);\r\n }\r\n\r\n // Sort each category by name\r\n for (const category of Object.keys(grouped) as ComponentCategory[]) {\r\n grouped[category].sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n return grouped;\r\n}\r\n\r\n/**\r\n * Get UI statistics for the registry.\r\n * @returns Statistics including popular/new counts and category breakdown\r\n * @since 2.1.0\r\n */\r\nexport function getUIStats(): {\r\n total: number;\r\n popular: number;\r\n new: number;\r\n byCategory: Record<ComponentCategory, number>;\r\n byDesignSystem: Record<DesignSystem, number>;\r\n byTier: Record<Tier, number>;\r\n} {\r\n const byCategory = {} as Record<ComponentCategory, number>;\r\n const byDesignSystem = {} as Record<DesignSystem, number>;\r\n const byTier = {} as Record<Tier, number>;\r\n\r\n for (const c of ALL_COMPONENTS) {\r\n byCategory[c.category] = (byCategory[c.category] ?? 0) + 1;\r\n\r\n for (const ds of c.designSystems) {\r\n byDesignSystem[ds] = (byDesignSystem[ds] ?? 0) + 1;\r\n }\r\n\r\n for (const tier of c.tiers) {\r\n byTier[tier] = (byTier[tier] ?? 0) + 1;\r\n }\r\n }\r\n\r\n return {\r\n total: ALL_COMPONENTS.length,\r\n popular: ALL_COMPONENTS.filter((c) => c.isPopular === true).length,\r\n new: ALL_COMPONENTS.filter((c) => c.isNew === true).length,\r\n byCategory,\r\n byDesignSystem,\r\n byTier,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport default COMPONENT_REGISTRY;\r\n","/**\r\n * Registry Constants\r\n * @packageDocumentation\r\n * @module presets/registry-constants\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Section category constants\r\n */\r\nexport const SECTION_CATEGORIES = [\r\n 'hero',\r\n 'features',\r\n 'testimonials',\r\n 'pricing',\r\n 'cta',\r\n 'faq',\r\n 'team',\r\n 'contact',\r\n 'gallery',\r\n 'stats',\r\n] as const;\r\n\r\n/**\r\n * Page category constants\r\n */\r\nexport const PAGE_CATEGORIES = [\r\n 'marketing',\r\n 'e-commerce',\r\n 'saas',\r\n 'portfolio',\r\n 'blog',\r\n 'docs',\r\n 'app',\r\n] as const;\r\n\r\n/**\r\n * Layout category constants\r\n */\r\nexport const LAYOUT_CATEGORIES = ['standard', 'dashboard', 'landing', 'app', 'blog'] as const;\r\n\r\n/**\r\n * Template category constants\r\n */\r\nexport const TEMPLATE_CATEGORIES = [\r\n 'saas',\r\n 'e-commerce',\r\n 'portfolio',\r\n 'blog',\r\n 'startup',\r\n 'agency',\r\n] as const;\r\n\r\n/**\r\n * Page type constants\r\n */\r\nexport const PAGE_TYPES = [\r\n 'landing',\r\n 'product',\r\n 'checkout',\r\n 'about',\r\n 'contact',\r\n 'blog-post',\r\n] as const;\r\n\r\n/**\r\n * Section height constants\r\n */\r\nexport const SECTION_HEIGHTS = ['compact', 'standard', 'tall', 'fullscreen'] as const;\r\n\r\n/**\r\n * Section alignment constants\r\n */\r\nexport const SECTION_ALIGNMENTS = ['left', 'center', 'right'] as const;\r\n\r\n/**\r\n * Section layout constants\r\n */\r\nexport const SECTION_LAYOUTS = ['single-column', 'two-column', 'three-column', 'grid'] as const;\r\n\r\n/**\r\n * Layout structure constants\r\n */\r\nexport const LAYOUT_STRUCTURES = ['standard', 'sidebar', 'dashboard', 'split'] as const;\r\n\r\n/**\r\n * Layout responsive behavior constants\r\n */\r\nexport const LAYOUT_RESPONSIVE_TYPES = ['fluid', 'fixed', 'hybrid'] as const;\r\n\r\n/**\r\n * Header type constants\r\n */\r\nexport const HEADER_TYPES = ['fixed', 'sticky', 'static', 'none'] as const;\r\n\r\n/**\r\n * Footer type constants\r\n */\r\nexport const FOOTER_TYPES = ['standard', 'minimal', 'none'] as const;\r\n\r\n/**\r\n * SEO importance level constants\r\n */\r\nexport const SEO_LEVELS = ['critical', 'important', 'standard'] as const;\r\n\r\n/**\r\n * Template complexity level constants\r\n */\r\nexport const COMPLEXITY_LEVELS = ['starter', 'intermediate', 'advanced'] as const;\r\n\r\n/**\r\n * Registry status constants\r\n */\r\nexport const REGISTRY_STATUSES = ['stable', 'beta', 'planned'] as const;\r\n","/**\r\n * Section Defaults - Default SectionFactors per Design System\r\n *\r\n * @packageDocumentation\r\n * @module presets/section-defaults\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { DesignSystem } from '../types';\r\nimport type { SectionFactors } from '../../types/section.types';\r\n\r\n// ============================================================================\r\n// MATERIAL DESIGN DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Material Design 3 default section factors\r\n *\r\n * @remarks\r\n * Based on Google's Material Design 3 specifications.\r\n * Uses rounded corners, elevated surfaces, and dynamic color.\r\n */\r\nexport const MATERIAL_DESIGN_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#6750a4',\r\n colorText: '#1c1b1f',\r\n colorBackground: '#fffbfe',\r\n typography: 'default',\r\n borderRadius: 'lg',\r\n elevation: 'sm',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'center',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'smooth',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'enhanced',\r\n};\r\n\r\n// ============================================================================\r\n// IOS HIG DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Apple Human Interface Guidelines default section factors\r\n *\r\n * @remarks\r\n * Based on Apple's HIG specifications.\r\n * Uses system fonts, subtle shadows, and native feel.\r\n */\r\nexport const IOS_HIG_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#007aff',\r\n colorText: '#000000',\r\n colorBackground: '#ffffff',\r\n typography: 'default',\r\n borderRadius: 'lg',\r\n elevation: 'sm',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'center',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'smooth',\r\n responsive: { mobile: 'stack', tablet: 'flex', desktop: 'flex' },\r\n a11yLevel: 'enhanced',\r\n};\r\n\r\n// ============================================================================\r\n// GLASSMORPHISM DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Glassmorphism default section factors\r\n *\r\n * @remarks\r\n * Features frosted glass effects, transparency, and blur.\r\n * Requires backdrop-filter support.\r\n */\r\nexport const GLASSMORPHISM_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#667eea',\r\n colorText: '#1a1a2e',\r\n colorBackground: 'rgba(255, 255, 255, 0.25)',\r\n typography: 'relaxed',\r\n borderRadius: 'xl',\r\n elevation: 'md',\r\n // Layout Factors (4)\r\n padding: 'xl',\r\n gap: 'lg',\r\n alignment: 'center',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'smooth',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'standard',\r\n};\r\n\r\n// ============================================================================\r\n// NEUMORPHISM DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Neumorphism (Soft UI) default section factors\r\n *\r\n * @remarks\r\n * Features soft shadows, subtle depth, and monochromatic palettes.\r\n * Uses inset and outset shadows for depth effect.\r\n */\r\nexport const NEUMORPHISM_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#6d5dfc',\r\n colorText: '#2d2d2d',\r\n colorBackground: '#e0e5ec',\r\n typography: 'default',\r\n borderRadius: 'xl',\r\n elevation: 'md',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'lg',\r\n alignment: 'center',\r\n maxWidth: 'lg',\r\n // Behavior Factors (3)\r\n animation: 'subtle',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'standard',\r\n};\r\n\r\n// ============================================================================\r\n// BRUTALISM DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Brutalism default section factors\r\n *\r\n * @remarks\r\n * Features bold colors, sharp edges, and raw aesthetics.\r\n * Uses strong contrasts and unconventional layouts.\r\n */\r\nexport const BRUTALISM_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#ff3366',\r\n colorText: '#000000',\r\n colorBackground: '#ffffff',\r\n typography: 'spacious',\r\n borderRadius: 'none',\r\n elevation: 'lg',\r\n // Layout Factors (4)\r\n padding: 'xl',\r\n gap: 'lg',\r\n alignment: 'start',\r\n maxWidth: 'full',\r\n // Behavior Factors (3)\r\n animation: 'dynamic',\r\n responsive: { mobile: 'stack', tablet: 'flex', desktop: 'flex' },\r\n a11yLevel: 'standard',\r\n};\r\n\r\n// ============================================================================\r\n// MINIMALISM DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Minimalism default section factors\r\n *\r\n * @remarks\r\n * Features clean lines, ample whitespace, and essential elements only.\r\n * Focuses on typography and content hierarchy.\r\n */\r\nexport const MINIMALISM_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#1a1a1a',\r\n colorText: '#333333',\r\n colorBackground: '#ffffff',\r\n typography: 'relaxed',\r\n borderRadius: 'sm',\r\n elevation: 'none',\r\n // Layout Factors (4)\r\n padding: 'xl',\r\n gap: 'lg',\r\n alignment: 'center',\r\n maxWidth: 'lg',\r\n // Behavior Factors (3)\r\n animation: 'subtle',\r\n responsive: { mobile: 'stack', tablet: 'flex', desktop: 'flex' },\r\n a11yLevel: 'enhanced',\r\n};\r\n\r\n// ============================================================================\r\n// CYBERPUNK DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Cyberpunk default section factors\r\n *\r\n * @remarks\r\n * Features neon colors, dark backgrounds, and futuristic aesthetics.\r\n * Uses glitch effects and high-tech visual language.\r\n */\r\nexport const CYBERPUNK_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#00ffff',\r\n colorText: '#f0f0f0',\r\n colorBackground: '#0a0a0a',\r\n typography: 'compact',\r\n borderRadius: 'sm',\r\n elevation: 'lg',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'start',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'dynamic',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'standard',\r\n};\r\n\r\n// ============================================================================\r\n// FLAT DESIGN DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Flat Design default section factors\r\n *\r\n * @remarks\r\n * Features flat colors, no gradients, and 2D aesthetics.\r\n * Emphasizes bold colors and clean shapes.\r\n */\r\nexport const FLAT_DESIGN_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#3498db',\r\n colorText: '#2c3e50',\r\n colorBackground: '#ecf0f1',\r\n typography: 'default',\r\n borderRadius: 'md',\r\n elevation: 'none',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'center',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'subtle',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'enhanced',\r\n};\r\n\r\n// ============================================================================\r\n// RETRO VINTAGE DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Retro/Vintage default section factors\r\n *\r\n * @remarks\r\n * Features muted colors, vintage typography, and nostalgic aesthetics.\r\n * Uses textures and ornamental elements.\r\n */\r\nexport const RETRO_VINTAGE_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#d4a373',\r\n colorText: '#3d405b',\r\n colorBackground: '#fefae0',\r\n typography: 'spacious',\r\n borderRadius: 'md',\r\n elevation: 'sm',\r\n // Layout Factors (4)\r\n padding: 'xl',\r\n gap: 'lg',\r\n alignment: 'center',\r\n maxWidth: 'lg',\r\n // Behavior Factors (3)\r\n animation: 'subtle',\r\n responsive: { mobile: 'stack', tablet: 'flex', desktop: 'flex' },\r\n a11yLevel: 'standard',\r\n};\r\n\r\n// ============================================================================\r\n// FLUENT DESIGN DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Microsoft Fluent Design default section factors\r\n *\r\n * @remarks\r\n * Based on Microsoft's Fluent Design System.\r\n * Features depth, motion, and material-based visuals.\r\n */\r\nexport const FLUENT_DESIGN_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#0078d4',\r\n colorText: '#323130',\r\n colorBackground: '#faf9f8',\r\n typography: 'default',\r\n borderRadius: 'md',\r\n elevation: 'sm',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'center',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'smooth',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'enhanced',\r\n};\r\n\r\n// ============================================================================\r\n// CARBON DESIGN DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * IBM Carbon Design default section factors\r\n *\r\n * @remarks\r\n * Based on IBM's Carbon Design System.\r\n * Features structured layouts, technical aesthetics, and accessibility focus.\r\n */\r\nexport const CARBON_DESIGN_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#0f62fe',\r\n colorText: '#161616',\r\n colorBackground: '#f4f4f4',\r\n typography: 'compact',\r\n borderRadius: 'sm',\r\n elevation: 'sm',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'start',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'subtle',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'maximum',\r\n};\r\n\r\n// ============================================================================\r\n// ANT DESIGN DEFAULTS\r\n// ============================================================================\r\n\r\n/**\r\n * Ant Design default section factors\r\n *\r\n * @remarks\r\n * Based on Ant Design System by Alibaba.\r\n * Features enterprise-focused aesthetics and comprehensive components.\r\n */\r\nexport const ANT_DESIGN_DEFAULTS: SectionFactors = {\r\n // Visual Factors (6)\r\n colorPrimary: '#1890ff',\r\n colorText: '#262626',\r\n colorBackground: '#ffffff',\r\n typography: 'default',\r\n borderRadius: 'md',\r\n elevation: 'sm',\r\n // Layout Factors (4)\r\n padding: 'lg',\r\n gap: 'md',\r\n alignment: 'start',\r\n maxWidth: 'xl',\r\n // Behavior Factors (3)\r\n animation: 'smooth',\r\n responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n a11yLevel: 'enhanced',\r\n};\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM DEFAULTS MAP\r\n// ============================================================================\r\n\r\n/**\r\n * Map of design system to default section factors\r\n *\r\n * @remarks\r\n * Use this to get defaults for any supported design system.\r\n *\r\n * @example\r\n * ```typescript\r\n * const materialDefaults = DESIGN_SYSTEM_DEFAULTS['material-design'];\r\n * const iosDefaults = DESIGN_SYSTEM_DEFAULTS['ios-hig'];\r\n * ```\r\n */\r\nexport const DESIGN_SYSTEM_DEFAULTS: Readonly<Record<DesignSystem, SectionFactors>> = {\r\n 'material-design': MATERIAL_DESIGN_DEFAULTS,\r\n 'ios-hig': IOS_HIG_DEFAULTS,\r\n glassmorphism: GLASSMORPHISM_DEFAULTS,\r\n neumorphism: NEUMORPHISM_DEFAULTS,\r\n brutalism: BRUTALISM_DEFAULTS,\r\n minimalism: MINIMALISM_DEFAULTS,\r\n cyberpunk: CYBERPUNK_DEFAULTS,\r\n 'flat-design': FLAT_DESIGN_DEFAULTS,\r\n 'retro-vintage': RETRO_VINTAGE_DEFAULTS,\r\n 'fluent-design': FLUENT_DESIGN_DEFAULTS,\r\n 'carbon-design': CARBON_DESIGN_DEFAULTS,\r\n 'ant-design': ANT_DESIGN_DEFAULTS,\r\n};\r\n\r\n// ============================================================================\r\n// HELPER FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get default section factors for a design system\r\n *\r\n * @param designSystem - The design system to get defaults for\r\n * @returns Default SectionFactors for the specified design system\r\n *\r\n * @example\r\n * ```typescript\r\n * const factors = getDefaultFactors('material-design');\r\n * console.log(factors.colorPrimary); // '#6750a4'\r\n * ```\r\n */\r\nexport function getDefaultFactors(designSystem: DesignSystem): SectionFactors {\r\n return DESIGN_SYSTEM_DEFAULTS[designSystem];\r\n}\r\n\r\n/**\r\n * Merge custom factors with design system defaults\r\n *\r\n * @param designSystem - The base design system\r\n * @param overrides - Partial factors to override defaults\r\n * @returns Merged SectionFactors\r\n *\r\n * @example\r\n * ```typescript\r\n * const customFactors = mergeWithDefaults('material-design', {\r\n * colorPrimary: '#ff0000',\r\n * elevation: 'lg',\r\n * });\r\n * ```\r\n */\r\nexport function mergeWithDefaults(\r\n designSystem: DesignSystem,\r\n overrides: Partial<SectionFactors>\r\n): SectionFactors {\r\n const defaults = getDefaultFactors(designSystem);\r\n return {\r\n ...defaults,\r\n ...overrides,\r\n // Deep merge responsive config if provided\r\n responsive:\r\n overrides.responsive !== undefined && overrides.responsive !== null\r\n ? { ...defaults.responsive, ...overrides.responsive }\r\n : defaults.responsive,\r\n };\r\n}\r\n\r\n/**\r\n * Get all available design systems with defaults\r\n *\r\n * @returns Array of design system IDs\r\n *\r\n * @example\r\n * ```typescript\r\n * const systems = getAvailableDesignSystems();\r\n * // ['material-design', 'ios-hig', 'glassmorphism', ...]\r\n * ```\r\n */\r\nexport function getAvailableDesignSystems(): readonly DesignSystem[] {\r\n return Object.keys(DESIGN_SYSTEM_DEFAULTS) as DesignSystem[];\r\n}\r\n\r\n/**\r\n * Check if a design system is supported\r\n *\r\n * @param designSystem - Design system ID to check\r\n * @returns True if the design system has defaults defined\r\n *\r\n * @example\r\n * ```typescript\r\n * isDesignSystemSupported('material-design'); // true\r\n * isDesignSystemSupported('unknown'); // false\r\n * ```\r\n */\r\nexport function isDesignSystemSupported(designSystem: string): designSystem is DesignSystem {\r\n return designSystem in DESIGN_SYSTEM_DEFAULTS;\r\n}\r\n","/**\r\n * Section Converter - Bridge from Registry to SectionConfig\r\n *\r\n * @packageDocumentation\r\n * @module converters/section-converter\r\n * @since 4.1.0\r\n *\r\n * @remarks\r\n * This module provides the bridge function `toSectionConfig()` that converts\r\n * a `RegistrySectionDefinition` (from section-registry) to a `SectionConfig`\r\n * (used by generators and storage).\r\n *\r\n * Field Name Unification:\r\n * - Registry `id` → SectionConfig `sectionId`\r\n * - Registry `category` → SectionConfig `sectionType`\r\n * - Registry `sectionLayout` → SectionConfig `layout`\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { RegistrySectionDefinition } from '../ui-studio/presets/registry.types';\r\nimport type { DesignSystem, Tier } from '../types';\r\nimport type {\r\n SectionConfig,\r\n SectionCategory,\r\n LayoutType,\r\n SpacingLevel,\r\n} from '../types/section.types';\r\n\r\n// ============================================================================\r\n// USER OVERRIDE TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * User-provided overrides for section configuration\r\n *\r\n * @remarks\r\n * These are the fields that users can customize when using a section template.\r\n * All fields are optional - if not provided, the registry defaults are used.\r\n *\r\n * @example\r\n * ```typescript\r\n * const overrides: SectionUserOverrides = {\r\n * title: 'My Custom Hero',\r\n * subtitle: 'Welcome to our platform',\r\n * designSystem: 'brutalism',\r\n * tier: 'enterprise',\r\n * columns: 2,\r\n * };\r\n *\r\n * const config = toSectionConfig(registryDefinition, overrides);\r\n * ```\r\n */\r\nexport interface SectionUserOverrides {\r\n /** Custom section title */\r\n readonly title?: string;\r\n\r\n /** Custom section subtitle */\r\n readonly subtitle?: string;\r\n\r\n /** Override design system */\r\n readonly designSystem?: DesignSystem;\r\n\r\n /** Override quality tier */\r\n readonly tier?: Tier;\r\n\r\n /** Override layout type */\r\n readonly layout?: LayoutType;\r\n\r\n /** Override number of columns */\r\n readonly columns?: 1 | 2 | 3 | 4 | 6;\r\n\r\n /** Override spacing level */\r\n readonly spacing?: SpacingLevel;\r\n\r\n /** Override item count (for list-based sections) */\r\n readonly itemCount?: number;\r\n\r\n /** Override show CTA */\r\n readonly showCta?: boolean;\r\n\r\n /** Override show media */\r\n readonly showMedia?: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// CONVERTER FUNCTION\r\n// ============================================================================\r\n\r\n/**\r\n * Convert a RegistrySectionDefinition to SectionConfig\r\n *\r\n * @remarks\r\n * This is the primary bridge function between the registry (UI/filtering) and\r\n * the generation system. It handles:\r\n *\r\n * 1. **Field Name Unification**: Maps legacy field names to unified names\r\n * - `id` → `sectionId`\r\n * - `category` → `sectionType`\r\n * - `sectionLayout` → `layout`\r\n *\r\n * 2. **User Overrides**: Applies user-provided customizations\r\n * - Override priority: userOverrides > registry definition > category defaults\r\n *\r\n * 3. **Type Safety**: Ensures the returned SectionConfig is valid\r\n *\r\n * @param registry - The registry section definition to convert\r\n * @param overrides - Optional user overrides for customization\r\n * @returns A valid SectionConfig for use in generation\r\n *\r\n * @example\r\n * ```typescript\r\n * import { toSectionConfig } from './converters';\r\n * import { ALL_SECTIONS } from './section-registry';\r\n *\r\n * // Find a section by id\r\n * const heroSection = ALL_SECTIONS.find(s => s.id === 'hero-centered');\r\n *\r\n * // Convert to SectionConfig\r\n * const config = toSectionConfig(heroSection);\r\n *\r\n * // Or with user overrides\r\n * const customConfig = toSectionConfig(heroSection, {\r\n * title: 'Welcome to Nikkory',\r\n * designSystem: 'brutalism',\r\n * tier: 'enterprise',\r\n * });\r\n * ```\r\n */\r\nexport function toSectionConfig(\r\n registry: RegistrySectionDefinition,\r\n overrides?: SectionUserOverrides\r\n): SectionConfig {\r\n return {\r\n // ==========================================================================\r\n // SECTION-LEVEL FIELDS (6)\r\n // ==========================================================================\r\n\r\n // id → sectionId (unified naming)\r\n sectionId: registry.id,\r\n\r\n // category → sectionType (unified naming)\r\n sectionType: registry.category as SectionCategory,\r\n\r\n // Title: user override > registry title > registry name\r\n title: overrides?.title ?? registry.title ?? registry.name,\r\n\r\n // Subtitle: user override > registry subtitle > registry description\r\n subtitle: overrides?.subtitle ?? registry.subtitle ?? registry.description,\r\n\r\n // Design system: user override > registry default\r\n designSystem: overrides?.designSystem ?? registry.defaultDesignSystem,\r\n\r\n // Tier: user override > registry default\r\n tier: overrides?.tier ?? registry.defaultTier,\r\n\r\n // ==========================================================================\r\n // LAYOUT FIELDS (3)\r\n // ==========================================================================\r\n\r\n // sectionLayout → layout (unified naming)\r\n // User override > registry sectionLayout\r\n layout: overrides?.layout ?? registry.sectionLayout,\r\n\r\n // Columns: user override > registry columns\r\n columns: overrides?.columns ?? registry.columns,\r\n\r\n // Spacing: user override > registry spacing\r\n spacing: overrides?.spacing ?? registry.spacing,\r\n\r\n // ==========================================================================\r\n // GENERATION FIELDS (2)\r\n // ==========================================================================\r\n\r\n // Slots: direct from registry (no user override for slots in basic config)\r\n slots: registry.slots,\r\n\r\n // Item count: user override > registry itemCount\r\n itemCount: overrides?.itemCount ?? registry.itemCount,\r\n\r\n // ==========================================================================\r\n // COMPONENT-SPECIFIC FIELDS (3)\r\n // ==========================================================================\r\n\r\n // Show CTA: user override > registry showCta\r\n showCta: overrides?.showCta ?? registry.showCta,\r\n\r\n // Show media: user override > registry showMedia\r\n showMedia: overrides?.showMedia ?? registry.showMedia,\r\n\r\n // Style overrides: direct from registry (advanced customization)\r\n styleOverrides: registry.styleOverrides,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// BATCH CONVERTER\r\n// ============================================================================\r\n\r\n/**\r\n * Convert multiple registry definitions to SectionConfigs\r\n *\r\n * @param sections - Array of registry definitions\r\n * @param overrides - Optional map of overrides keyed by section id\r\n * @returns Array of SectionConfigs\r\n *\r\n * @example\r\n * ```typescript\r\n * const heroSections = ALL_SECTIONS.filter(s => s.category === 'hero');\r\n * const configs = toSectionConfigs(heroSections);\r\n *\r\n * // With per-section overrides\r\n * const configs = toSectionConfigs(heroSections, {\r\n * 'hero-centered': { title: 'Custom Hero' },\r\n * 'hero-split': { tier: 'enterprise' },\r\n * });\r\n * ```\r\n */\r\nexport function toSectionConfigs(\r\n sections: readonly RegistrySectionDefinition[],\r\n overrides?: Record<string, SectionUserOverrides>\r\n): readonly SectionConfig[] {\r\n return sections.map((section) => {\r\n const sectionOverrides = overrides?.[section.id];\r\n return toSectionConfig(section, sectionOverrides);\r\n });\r\n}\r\n\r\n// ============================================================================\r\n// LOOKUP AND CONVERT HELPERS\r\n// ============================================================================\r\n\r\n/**\r\n * Find a section by ID and convert to SectionConfig\r\n *\r\n * @param sections - Array of registry definitions to search\r\n * @param sectionId - The section ID to find\r\n * @param overrides - Optional user overrides\r\n * @returns SectionConfig if found, undefined otherwise\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = findAndConvertSection(ALL_SECTIONS, 'hero-centered', {\r\n * title: 'My Hero',\r\n * });\r\n *\r\n * if (config) {\r\n * console.log(config.sectionId); // 'hero-centered'\r\n * console.log(config.title); // 'My Hero'\r\n * }\r\n * ```\r\n */\r\nexport function findAndConvertSection(\r\n sections: readonly RegistrySectionDefinition[],\r\n sectionId: string,\r\n overrides?: SectionUserOverrides\r\n): SectionConfig | undefined {\r\n const section = sections.find((s) => s.id === sectionId);\r\n if (section === undefined) {\r\n return undefined;\r\n }\r\n return toSectionConfig(section, overrides);\r\n}\r\n\r\n/**\r\n * Find sections by category and convert to SectionConfigs\r\n *\r\n * @param sections - Array of registry definitions to search\r\n * @param category - The section category to filter by\r\n * @param overrides - Optional map of overrides keyed by section id\r\n * @returns Array of SectionConfigs for the category\r\n *\r\n * @example\r\n * ```typescript\r\n * const heroConfigs = findAndConvertByCategory(ALL_SECTIONS, 'hero');\r\n * console.log(heroConfigs.length); // 10 hero sections\r\n * ```\r\n */\r\nexport function findAndConvertByCategory(\r\n sections: readonly RegistrySectionDefinition[],\r\n category: SectionCategory,\r\n overrides?: Record<string, SectionUserOverrides>\r\n): readonly SectionConfig[] {\r\n const filtered = sections.filter((s) => s.category === category);\r\n return toSectionConfigs(filtered, overrides);\r\n}\r\n\r\n// ============================================================================\r\n// VALIDATION HELPERS\r\n// ============================================================================\r\n\r\n/**\r\n * Validate that a SectionConfig has all required fields\r\n *\r\n * @param config - The SectionConfig to validate\r\n * @returns Validation result with errors if any\r\n */\r\nexport function validateSectionConfig(config: SectionConfig): {\r\n valid: boolean;\r\n errors: readonly string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n // Required fields - using explicit checks for strict-boolean-expressions\r\n if (\r\n config.sectionId === undefined ||\r\n config.sectionId === null ||\r\n config.sectionId.trim() === ''\r\n ) {\r\n errors.push('sectionId is required');\r\n }\r\n\r\n if (config.sectionType === undefined || config.sectionType === null) {\r\n errors.push('sectionType is required');\r\n }\r\n\r\n if (config.title === undefined || config.title === null || config.title.trim() === '') {\r\n errors.push('title is required');\r\n }\r\n\r\n if (config.designSystem === undefined || config.designSystem === null) {\r\n errors.push('designSystem is required');\r\n }\r\n\r\n if (config.tier === undefined || config.tier === null) {\r\n errors.push('tier is required');\r\n }\r\n\r\n if (config.layout === undefined || config.layout === null) {\r\n errors.push('layout is required');\r\n }\r\n\r\n // Validate columns\r\n const validColumns = [1, 2, 3, 4, 6];\r\n if (!validColumns.includes(config.columns)) {\r\n errors.push(`columns must be one of: ${validColumns.join(', ')}`);\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// TYPE GUARDS\r\n// ============================================================================\r\n\r\n/**\r\n * Check if a value is a valid SectionUserOverrides object\r\n */\r\nexport function isSectionUserOverrides(value: unknown): value is SectionUserOverrides {\r\n if (typeof value !== 'object' || value === null) {\r\n return false;\r\n }\r\n\r\n const obj = value as Record<string, unknown>;\r\n\r\n // All fields are optional, so just check types if present\r\n if (obj['title'] !== undefined && typeof obj['title'] !== 'string') {\r\n return false;\r\n }\r\n\r\n if (obj['subtitle'] !== undefined && typeof obj['subtitle'] !== 'string') {\r\n return false;\r\n }\r\n\r\n if (obj['columns'] !== undefined) {\r\n const columns = obj['columns'];\r\n if (typeof columns !== 'number' || ![1, 2, 3, 4, 6].includes(columns)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","/**\r\n * Tier Validator\r\n * Input validation for tier parameters\r\n *\r\n * @packageDocumentation\r\n * @module validators/tier-validator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { getAllTiers } from '../ui-studio/registries/tiers-registry';\r\n\r\nimport type { Tier } from '../types';\r\nimport type { ValidationResult } from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// TIER VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Valid tier values\r\n */\r\nexport const VALID_TIERS: readonly Tier[] = ['basic', 'standard', 'enterprise'];\r\n\r\n/**\r\n * Check if a value is a valid tier\r\n *\r\n * @param value - Value to check\r\n * @returns True if value is a valid tier\r\n *\r\n * @example\r\n * ```typescript\r\n * isValidTier('basic') // true\r\n * isValidTier('enterprise') // true\r\n * isValidTier('invalid') // false\r\n * ```\r\n */\r\nexport function isValidTier(value: unknown): value is Tier {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n return (VALID_TIERS as readonly string[]).includes(value);\r\n}\r\n\r\n/**\r\n * Validate tier input\r\n *\r\n * @param tier - Tier to validate\r\n * @returns Validation result with errors and warnings\r\n *\r\n * @example\r\n * ```typescript\r\n * validateTier('basic')\r\n * // { valid: true, errors: [], warnings: [] }\r\n *\r\n * validateTier('invalid')\r\n * // { valid: false, errors: ['Invalid tier...'], warnings: [] }\r\n * ```\r\n */\r\nexport function validateTier(tier: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if tier is provided\r\n if (tier === undefined || tier === null) {\r\n errors.push('Tier is required');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if tier is a string\r\n if (typeof tier !== 'string') {\r\n errors.push(`Tier must be a string, got ${typeof tier}`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if tier is empty\r\n if (tier.trim() === '') {\r\n errors.push('Tier cannot be empty');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if tier is valid\r\n if (!isValidTier(tier)) {\r\n // Try to suggest a similar tier\r\n const suggestion = suggestTier(tier);\r\n let errorMsg = `Invalid tier \"${tier}\"`;\r\n if (suggestion !== undefined) {\r\n errorMsg += `. Did you mean \"${suggestion}\"?`;\r\n }\r\n const validTiers = getAllTiers().join(', ');\r\n errorMsg += `. Valid tiers are: ${validTiers}`;\r\n errors.push(errorMsg);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n return { valid: true, errors, warnings };\r\n}\r\n\r\n/**\r\n * Assert that a value is a valid tier\r\n *\r\n * @param value - Value to check\r\n * @throws Error if value is not a valid tier\r\n *\r\n * @example\r\n * ```typescript\r\n * assertValidTier('basic') // OK\r\n * assertValidTier('invalid') // throws Error\r\n * ```\r\n */\r\nexport function assertValidTier(value: unknown): asserts value is Tier {\r\n const result = validateTier(value);\r\n if (!result.valid) {\r\n throw new Error(result.errors.join('; '));\r\n }\r\n}\r\n\r\n/**\r\n * Parse and validate tier, returning undefined for invalid values\r\n *\r\n * @param value - Value to parse\r\n * @returns Valid tier or undefined\r\n *\r\n * @example\r\n * ```typescript\r\n * parseTier('basic') // 'basic'\r\n * parseTier('invalid') // undefined\r\n * parseTier(123) // undefined\r\n * ```\r\n */\r\nexport function parseTier(value: unknown): Tier | undefined {\r\n if (isValidTier(value)) {\r\n return value;\r\n }\r\n\r\n // Try normalized version (case-insensitive)\r\n if (typeof value === 'string') {\r\n const normalized = value.toLowerCase().trim();\r\n if (isValidTier(normalized)) {\r\n return normalized;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Get tier with fallback to default\r\n *\r\n * @param value - Value to check\r\n * @param defaultTier - Default tier if invalid\r\n * @returns Valid tier\r\n *\r\n * @example\r\n * ```typescript\r\n * getTierOrDefault('basic', 'standard') // 'basic'\r\n * getTierOrDefault('invalid', 'standard') // 'standard'\r\n * ```\r\n */\r\nexport function getTierOrDefault(value: unknown, defaultTier: Tier): Tier {\r\n return parseTier(value) ?? defaultTier;\r\n}\r\n\r\n/**\r\n * Suggest correct tier for typos\r\n *\r\n * @param input - User input\r\n * @returns Suggested tier or undefined\r\n *\r\n * @example\r\n * ```typescript\r\n * suggestTier('basci') // 'basic'\r\n * suggestTier('enterprise') // 'enterprise'\r\n * suggestTier('xyz') // undefined\r\n * ```\r\n */\r\nexport function suggestTier(input: string): Tier | undefined {\r\n const lowerInput = input.toLowerCase().trim();\r\n\r\n // Exact match - type guard narrows lowerInput to Tier\r\n if (isValidTier(lowerInput)) {\r\n return lowerInput;\r\n }\r\n\r\n // Common typos and abbreviations\r\n const suggestions: Record<string, Tier> = {\r\n // Basic variations\r\n b: 'basic',\r\n bas: 'basic',\r\n basi: 'basic',\r\n basci: 'basic',\r\n basc: 'basic',\r\n bassic: 'basic',\r\n // Standard variations\r\n s: 'standard',\r\n std: 'standard',\r\n stan: 'standard',\r\n stnadard: 'standard',\r\n standart: 'standard',\r\n // Enterprise variations\r\n e: 'enterprise',\r\n ent: 'enterprise',\r\n enter: 'enterprise',\r\n entrprise: 'enterprise',\r\n enterprice: 'enterprise',\r\n enterprize: 'enterprise',\r\n pro: 'enterprise',\r\n premium: 'enterprise',\r\n };\r\n\r\n return suggestions[lowerInput];\r\n}\r\n","/**\r\n * Factor Validator\r\n * Input validation for factor parameters\r\n *\r\n * @packageDocumentation\r\n * @module validators/factor-validator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport {\r\n getFactorDefinition,\r\n getFactorPossibleValues,\r\n isValidFactorValue,\r\n} from '../ui-studio/registries/factors-registry';\r\n\r\nimport type { FactorId, ValidationResult } from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// FACTOR ID VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * All valid factor IDs (1-24)\r\n */\r\nexport const VALID_FACTOR_IDS: readonly FactorId[] = [\r\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\r\n];\r\n\r\n/**\r\n * Check if a value is a valid factor ID\r\n *\r\n * @param value - Value to check\r\n * @returns True if value is a valid factor ID (1-24)\r\n *\r\n * @example\r\n * ```typescript\r\n * isValidFactorId(1) // true\r\n * isValidFactorId(24) // true\r\n * isValidFactorId(0) // false\r\n * isValidFactorId(25) // false\r\n * ```\r\n */\r\nexport function isValidFactorId(value: unknown): value is FactorId {\r\n if (typeof value !== 'number') {\r\n return false;\r\n }\r\n return Number.isInteger(value) && value >= 1 && value <= 24;\r\n}\r\n\r\n/**\r\n * Validate factor ID input\r\n *\r\n * @param factorId - Factor ID to validate\r\n * @returns Validation result\r\n *\r\n * @example\r\n * ```typescript\r\n * validateFactorId(1)\r\n * // { valid: true, errors: [], warnings: [] }\r\n *\r\n * validateFactorId(25)\r\n * // { valid: false, errors: ['Invalid factor ID...'], warnings: [] }\r\n * ```\r\n */\r\nexport function validateFactorId(factorId: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if factorId is provided\r\n if (factorId === undefined || factorId === null) {\r\n errors.push('Factor ID is required');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if factorId is a number\r\n if (typeof factorId !== 'number') {\r\n errors.push(`Factor ID must be a number, got ${typeof factorId}`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if factorId is an integer\r\n if (!Number.isInteger(factorId)) {\r\n errors.push(`Factor ID must be an integer, got ${factorId}`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if factorId is in range\r\n if (!isValidFactorId(factorId)) {\r\n errors.push(`Invalid factor ID ${factorId}. Factor ID must be between 1 and 24`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n return { valid: true, errors, warnings };\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR VALUE VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Validate a factor value for a specific factor ID\r\n *\r\n * @param factorId - Factor ID to validate value for\r\n * @param value - Value to validate\r\n * @returns Validation result\r\n *\r\n * @example\r\n * ```typescript\r\n * validateFactorValueInput(1, 'primary')\r\n * // { valid: true, errors: [], warnings: [] }\r\n *\r\n * validateFactorValueInput(1, 'invalid')\r\n * // { valid: false, errors: ['Invalid value...'], warnings: [] }\r\n * ```\r\n */\r\nexport function validateFactorValueInput(factorId: unknown, value: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // First validate factor ID\r\n const factorIdResult = validateFactorId(factorId);\r\n if (!factorIdResult.valid) {\r\n return factorIdResult;\r\n }\r\n\r\n // Check if value is provided\r\n if (value === undefined || value === null) {\r\n errors.push('Factor value is required');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if value is a string\r\n if (typeof value !== 'string') {\r\n errors.push(`Factor value must be a string, got ${typeof value}`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if value is empty\r\n if (value.trim() === '') {\r\n errors.push('Factor value cannot be empty');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if value is valid for this factor\r\n const validFactorId = factorId as FactorId;\r\n if (!isValidFactorValue(validFactorId, value)) {\r\n const factor = getFactorDefinition(validFactorId);\r\n const possibleValues = getFactorPossibleValues(validFactorId);\r\n errors.push(\r\n `Invalid value \"${value}\" for factor ${factor.name}. ` +\r\n `Valid values are: ${possibleValues.join(', ')}`\r\n );\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n return { valid: true, errors, warnings };\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR OVERRIDES VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Validate factor overrides object\r\n *\r\n * @param overrides - Factor overrides to validate\r\n * @returns Validation result\r\n *\r\n * @example\r\n * ```typescript\r\n * validateFactorOverrides({ 1: 'secondary', 2: 'lg' })\r\n * // { valid: true, errors: [], warnings: [] }\r\n *\r\n * validateFactorOverrides({ 1: 'invalid', 99: 'value' })\r\n * // { valid: false, errors: [...], warnings: [] }\r\n * ```\r\n */\r\nexport function validateFactorOverrides(overrides: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Null/undefined is valid (no overrides)\r\n if (overrides === undefined || overrides === null) {\r\n return { valid: true, errors, warnings };\r\n }\r\n\r\n // Check if overrides is an object\r\n if (typeof overrides !== 'object' || Array.isArray(overrides)) {\r\n errors.push('Factor overrides must be an object');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Validate each override entry\r\n const overridesRecord = overrides as Record<string, unknown>;\r\n for (const [key, value] of Object.entries(overridesRecord)) {\r\n // Parse factor ID from key\r\n const factorId = parseInt(key, 10);\r\n if (isNaN(factorId)) {\r\n errors.push(`Invalid factor ID key \"${key}\". Keys must be numbers 1-24`);\r\n continue;\r\n }\r\n\r\n // Validate factor ID\r\n if (!isValidFactorId(factorId)) {\r\n errors.push(`Invalid factor ID ${factorId}. Factor ID must be between 1 and 24`);\r\n continue;\r\n }\r\n\r\n // Validate factor value\r\n const valueResult = validateFactorValueInput(factorId, value);\r\n if (!valueResult.valid) {\r\n errors.push(...valueResult.errors);\r\n }\r\n warnings.push(...valueResult.warnings);\r\n }\r\n\r\n return { valid: errors.length === 0, errors, warnings };\r\n}\r\n\r\n/**\r\n * Assert that a value is a valid factor ID\r\n *\r\n * @param value - Value to check\r\n * @throws Error if value is not a valid factor ID\r\n */\r\nexport function assertValidFactorId(value: unknown): asserts value is FactorId {\r\n const result = validateFactorId(value);\r\n if (!result.valid) {\r\n throw new Error(result.errors.join('; '));\r\n }\r\n}\r\n\r\n/**\r\n * Parse and validate factor ID\r\n *\r\n * @param value - Value to parse\r\n * @returns Valid factor ID or undefined\r\n */\r\nexport function parseFactorId(value: unknown): FactorId | undefined {\r\n // Handle string input\r\n if (typeof value === 'string') {\r\n const parsed = parseInt(value, 10);\r\n if (!isNaN(parsed) && isValidFactorId(parsed)) {\r\n return parsed;\r\n }\r\n return undefined;\r\n }\r\n\r\n // Handle number input\r\n if (isValidFactorId(value)) {\r\n return value;\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Suggest similar factor names for typos\r\n *\r\n * @param input - User input\r\n * @returns Array of suggested factor names\r\n */\r\nexport function suggestFactorName(input: string): string[] {\r\n const lowerInput = input.toLowerCase().trim();\r\n\r\n // Common factor name mappings\r\n const factorNames: Array<{ name: string; aliases: string[] }> = [\r\n { name: 'Color', aliases: ['color', 'colour', 'clr', 'col'] },\r\n { name: 'Size', aliases: ['size', 'sz', 'dimension'] },\r\n { name: 'Variant', aliases: ['variant', 'var', 'style'] },\r\n { name: 'Shape', aliases: ['shape', 'shp', 'border-radius', 'radius'] },\r\n { name: 'Animation', aliases: ['animation', 'anim', 'animate', 'motion'] },\r\n { name: 'Elevation', aliases: ['elevation', 'shadow', 'depth', 'elev'] },\r\n { name: 'State', aliases: ['state', 'status', 'condition'] },\r\n { name: 'Theme', aliases: ['theme', 'mode', 'dark', 'light'] },\r\n { name: 'Spacing', aliases: ['spacing', 'space', 'gap', 'padding', 'margin'] },\r\n { name: 'Typography', aliases: ['typography', 'typo', 'font', 'text'] },\r\n ];\r\n\r\n const suggestions: string[] = [];\r\n for (const factor of factorNames) {\r\n if (factor.aliases.some((alias) => alias.includes(lowerInput) || lowerInput.includes(alias))) {\r\n suggestions.push(factor.name);\r\n }\r\n }\r\n\r\n return suggestions;\r\n}\r\n","/**\r\n * Component Validator\r\n * Input validation for component type parameters\r\n *\r\n * @packageDocumentation\r\n * @module validators/component-validator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { ComponentType } from '../types';\r\nimport type { ValidationResult } from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// VALID COMPONENT TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * All valid component types\r\n */\r\nexport const VALID_COMPONENT_TYPES: readonly ComponentType[] = [\r\n // Basic\r\n 'button',\r\n 'input',\r\n 'textarea',\r\n 'checkbox',\r\n 'radio-group',\r\n 'switch',\r\n 'select',\r\n 'slider',\r\n // Feedback\r\n 'alert',\r\n 'badge',\r\n 'chip',\r\n 'progress',\r\n 'spinner',\r\n 'skeleton',\r\n 'tooltip',\r\n // Navigation\r\n 'tabs',\r\n 'menu',\r\n 'breadcrumb',\r\n 'pagination',\r\n 'stepper',\r\n // Data Display\r\n 'card',\r\n 'table',\r\n 'list',\r\n 'accordion',\r\n 'avatar',\r\n // Overlay\r\n 'modal',\r\n 'drawer',\r\n 'popover',\r\n // Date/Time\r\n 'date-picker',\r\n 'calendar',\r\n // Media\r\n 'audio',\r\n 'video',\r\n 'image',\r\n 'file',\r\n];\r\n\r\n// ============================================================================\r\n// COMPONENT TYPE VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Check if a value is a valid component type\r\n *\r\n * @param value - Value to check\r\n * @returns True if value is a valid component type\r\n *\r\n * @example\r\n * ```typescript\r\n * isValidComponentType('button') // true\r\n * isValidComponentType('invalid') // false\r\n * ```\r\n */\r\nexport function isValidComponentType(value: unknown): value is ComponentType {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n return (VALID_COMPONENT_TYPES as readonly string[]).includes(value);\r\n}\r\n\r\n/**\r\n * Validate component type input\r\n *\r\n * @param componentType - Component type to validate\r\n * @returns Validation result\r\n *\r\n * @example\r\n * ```typescript\r\n * validateComponentType('button')\r\n * // { valid: true, errors: [], warnings: [] }\r\n *\r\n * validateComponentType('invalid')\r\n * // { valid: false, errors: ['Invalid component type...'], warnings: [] }\r\n * ```\r\n */\r\nexport function validateComponentType(componentType: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if componentType is provided\r\n if (componentType === undefined || componentType === null) {\r\n errors.push('Component type is required');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if componentType is a string\r\n if (typeof componentType !== 'string') {\r\n errors.push(`Component type must be a string, got ${typeof componentType}`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if componentType is empty\r\n if (componentType.trim() === '') {\r\n errors.push('Component type cannot be empty');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if componentType is valid\r\n if (!isValidComponentType(componentType)) {\r\n // Try to suggest a similar component type\r\n const suggestion = suggestComponentType(componentType);\r\n let errorMsg = `Invalid component type \"${componentType}\"`;\r\n if (suggestion !== undefined) {\r\n errorMsg += `. Did you mean \"${suggestion}\"?`;\r\n }\r\n errorMsg += `. Valid component types are: ${VALID_COMPONENT_TYPES.slice(0, 10).join(', ')}...`;\r\n errors.push(errorMsg);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n return { valid: true, errors, warnings };\r\n}\r\n\r\n/**\r\n * Assert that a value is a valid component type\r\n *\r\n * @param value - Value to check\r\n * @throws Error if value is not a valid component type\r\n */\r\nexport function assertValidComponentType(value: unknown): asserts value is ComponentType {\r\n const result = validateComponentType(value);\r\n if (!result.valid) {\r\n throw new Error(result.errors.join('; '));\r\n }\r\n}\r\n\r\n/**\r\n * Parse and validate component type\r\n *\r\n * @param value - Value to parse\r\n * @returns Valid component type or undefined\r\n */\r\nexport function parseComponentType(value: unknown): ComponentType | undefined {\r\n if (isValidComponentType(value)) {\r\n return value;\r\n }\r\n\r\n // Try normalized version\r\n if (typeof value === 'string') {\r\n const normalized = value.toLowerCase().trim();\r\n // Type guard narrows normalized to ComponentType\r\n if (isValidComponentType(normalized)) {\r\n return normalized;\r\n }\r\n\r\n // Try with different separators\r\n const withDash = normalized.replace(/[_\\s]+/g, '-');\r\n // Type guard narrows withDash to ComponentType\r\n if (isValidComponentType(withDash)) {\r\n return withDash;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Get component type with fallback\r\n *\r\n * @param value - Value to check\r\n * @param defaultType - Default component type\r\n * @returns Valid component type\r\n */\r\nexport function getComponentTypeOrDefault(\r\n value: unknown,\r\n defaultType: ComponentType\r\n): ComponentType {\r\n return parseComponentType(value) ?? defaultType;\r\n}\r\n\r\n/**\r\n * Suggest similar component type for typos\r\n *\r\n * @param input - User input\r\n * @returns Suggested component type or undefined\r\n */\r\nexport function suggestComponentType(input: string): ComponentType | undefined {\r\n const lowerInput = input.toLowerCase().trim();\r\n\r\n // Exact match check first - type guard narrows to ComponentType\r\n if (isValidComponentType(lowerInput)) {\r\n return lowerInput;\r\n }\r\n\r\n // Common typos and abbreviations\r\n const suggestions: Record<string, ComponentType> = {\r\n // Button\r\n btn: 'button',\r\n but: 'button',\r\n buton: 'button',\r\n buttn: 'button',\r\n // Input\r\n inp: 'input',\r\n inpt: 'input',\r\n inputfield: 'input',\r\n textfield: 'input',\r\n // Textarea\r\n txt: 'textarea',\r\n textare: 'textarea',\r\n txtarea: 'textarea',\r\n // Checkbox\r\n chk: 'checkbox',\r\n check: 'checkbox',\r\n chkbox: 'checkbox',\r\n // Radio\r\n radio: 'radio-group',\r\n radiogroup: 'radio-group',\r\n radios: 'radio-group',\r\n // Switch\r\n toggle: 'switch',\r\n tog: 'switch',\r\n // Select\r\n dropdown: 'select',\r\n selectbox: 'select',\r\n // Slider\r\n range: 'slider',\r\n rangeslider: 'slider',\r\n // Alert\r\n notification: 'alert',\r\n notif: 'alert',\r\n // Badge\r\n tag: 'badge',\r\n label: 'badge',\r\n // Modal\r\n dialog: 'modal',\r\n popup: 'modal',\r\n modl: 'modal',\r\n // Card\r\n crd: 'card',\r\n // Table\r\n tbl: 'table',\r\n datagrid: 'table',\r\n grid: 'table',\r\n // Tabs\r\n tab: 'tabs',\r\n tabbar: 'tabs',\r\n // Menu\r\n mnu: 'menu',\r\n nav: 'menu',\r\n navbar: 'menu',\r\n // Avatar\r\n avtr: 'avatar',\r\n profilepic: 'avatar',\r\n // Progress\r\n progressbar: 'progress',\r\n loader: 'spinner',\r\n loading: 'spinner',\r\n // Tooltip\r\n tip: 'tooltip',\r\n tooltips: 'tooltip',\r\n };\r\n\r\n return suggestions[lowerInput];\r\n}\r\n\r\n/**\r\n * Get component types by category\r\n *\r\n * @param category - Category to filter by\r\n * @returns Array of component types in the category\r\n */\r\nexport function getComponentTypesByCategory(\r\n category: 'basic' | 'feedback' | 'navigation' | 'data-display' | 'overlay' | 'date-time' | 'media'\r\n): ComponentType[] {\r\n const categories: Record<string, ComponentType[]> = {\r\n basic: ['button', 'input', 'textarea', 'checkbox', 'radio-group', 'switch', 'select', 'slider'],\r\n feedback: ['alert', 'badge', 'chip', 'progress', 'spinner', 'skeleton', 'tooltip'],\r\n navigation: ['tabs', 'menu', 'breadcrumb', 'pagination', 'stepper'],\r\n 'data-display': ['card', 'table', 'list', 'accordion', 'avatar'],\r\n overlay: ['modal', 'drawer', 'popover'],\r\n 'date-time': ['date-picker', 'calendar'],\r\n media: ['audio', 'video', 'image', 'file'],\r\n };\r\n\r\n return categories[category] ?? [];\r\n}\r\n\r\n/**\r\n * Get all component type categories\r\n */\r\nexport function getAllComponentCategories(): string[] {\r\n return ['basic', 'feedback', 'navigation', 'data-display', 'overlay', 'date-time', 'media'];\r\n}\r\n","/**\r\n * Design System Validator\r\n * Input validation for design system parameters\r\n *\r\n * @packageDocumentation\r\n * @module validators/design-system-validator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { DesignSystem } from '../types';\r\nimport type { ValidationResult } from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// VALID DESIGN SYSTEMS\r\n// ============================================================================\r\n\r\n/**\r\n * All valid design systems (12 total)\r\n */\r\nexport const VALID_DESIGN_SYSTEMS: readonly DesignSystem[] = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n 'cyberpunk',\r\n 'flat-design',\r\n 'retro-vintage',\r\n 'fluent-design',\r\n 'carbon-design',\r\n 'ant-design',\r\n];\r\n\r\n// ============================================================================\r\n// DESIGN SYSTEM VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Check if a value is a valid design system\r\n *\r\n * @param value - Value to check\r\n * @returns True if value is a valid design system\r\n *\r\n * @example\r\n * ```typescript\r\n * isValidDesignSystem('material-design') // true\r\n * isValidDesignSystem('invalid') // false\r\n * ```\r\n */\r\nexport function isValidDesignSystem(value: unknown): value is DesignSystem {\r\n if (typeof value !== 'string') {\r\n return false;\r\n }\r\n return (VALID_DESIGN_SYSTEMS as readonly string[]).includes(value);\r\n}\r\n\r\n/**\r\n * Validate design system input\r\n *\r\n * @param designSystem - Design system to validate\r\n * @returns Validation result\r\n *\r\n * @example\r\n * ```typescript\r\n * validateDesignSystem('material-design')\r\n * // { valid: true, errors: [], warnings: [] }\r\n *\r\n * validateDesignSystem('invalid')\r\n * // { valid: false, errors: ['Invalid design system...'], warnings: [] }\r\n * ```\r\n */\r\nexport function validateDesignSystem(designSystem: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if designSystem is provided\r\n if (designSystem === undefined || designSystem === null) {\r\n errors.push('Design system is required');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if designSystem is a string\r\n if (typeof designSystem !== 'string') {\r\n errors.push(`Design system must be a string, got ${typeof designSystem}`);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if designSystem is empty\r\n if (designSystem.trim() === '') {\r\n errors.push('Design system cannot be empty');\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n // Check if designSystem is valid\r\n if (!isValidDesignSystem(designSystem)) {\r\n // Try to suggest a similar design system\r\n const suggestion = suggestDesignSystem(designSystem);\r\n let errorMsg = `Invalid design system \"${designSystem}\"`;\r\n if (suggestion !== undefined) {\r\n errorMsg += `. Did you mean \"${suggestion}\"?`;\r\n }\r\n errorMsg += `. Valid design systems are: ${VALID_DESIGN_SYSTEMS.join(', ')}`;\r\n errors.push(errorMsg);\r\n return { valid: false, errors, warnings };\r\n }\r\n\r\n return { valid: true, errors, warnings };\r\n}\r\n\r\n/**\r\n * Assert that a value is a valid design system\r\n *\r\n * @param value - Value to check\r\n * @throws Error if value is not a valid design system\r\n */\r\nexport function assertValidDesignSystem(value: unknown): asserts value is DesignSystem {\r\n const result = validateDesignSystem(value);\r\n if (!result.valid) {\r\n throw new Error(result.errors.join('; '));\r\n }\r\n}\r\n\r\n/**\r\n * Parse and validate design system\r\n *\r\n * @param value - Value to parse\r\n * @returns Valid design system or undefined\r\n */\r\nexport function parseDesignSystem(value: unknown): DesignSystem | undefined {\r\n if (isValidDesignSystem(value)) {\r\n return value;\r\n }\r\n\r\n // Try normalized version\r\n if (typeof value === 'string') {\r\n const normalized = value.toLowerCase().trim();\r\n // Type guard narrows normalized to DesignSystem\r\n if (isValidDesignSystem(normalized)) {\r\n return normalized;\r\n }\r\n\r\n // Try with dashes\r\n const withDashes = normalized.replace(/[_\\s]+/g, '-');\r\n // Type guard narrows withDashes to DesignSystem\r\n if (isValidDesignSystem(withDashes)) {\r\n return withDashes;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Get design system with fallback\r\n *\r\n * @param value - Value to check\r\n * @param defaultDs - Default design system\r\n * @returns Valid design system\r\n */\r\nexport function getDesignSystemOrDefault(value: unknown, defaultDs: DesignSystem): DesignSystem {\r\n return parseDesignSystem(value) ?? defaultDs;\r\n}\r\n\r\n/**\r\n * Suggest similar design system for typos\r\n *\r\n * @param input - User input\r\n * @returns Suggested design system or undefined\r\n */\r\nexport function suggestDesignSystem(input: string): DesignSystem | undefined {\r\n const lowerInput = input.toLowerCase().trim();\r\n\r\n // Exact match check first - type guard narrows to DesignSystem\r\n if (isValidDesignSystem(lowerInput)) {\r\n return lowerInput;\r\n }\r\n\r\n // Common typos and abbreviations\r\n const suggestions: Record<string, DesignSystem> = {\r\n // Material Design\r\n material: 'material-design',\r\n md: 'material-design',\r\n md3: 'material-design',\r\n materialdesign: 'material-design',\r\n google: 'material-design',\r\n m3: 'material-design',\r\n // iOS HIG\r\n ios: 'ios-hig',\r\n apple: 'ios-hig',\r\n hig: 'ios-hig',\r\n ioshig: 'ios-hig',\r\n human: 'ios-hig',\r\n // Glassmorphism\r\n glass: 'glassmorphism',\r\n glassmorphic: 'glassmorphism',\r\n frosted: 'glassmorphism',\r\n // Neumorphism\r\n neu: 'neumorphism',\r\n neomorphism: 'neumorphism',\r\n neumorphic: 'neumorphism',\r\n softui: 'neumorphism',\r\n // Brutalism\r\n brutal: 'brutalism',\r\n brutalist: 'brutalism',\r\n raw: 'brutalism',\r\n // Minimalism\r\n minimal: 'minimalism',\r\n minimalist: 'minimalism',\r\n min: 'minimalism',\r\n clean: 'minimalism',\r\n // Cyberpunk\r\n cyber: 'cyberpunk',\r\n neon: 'cyberpunk',\r\n futuristic: 'cyberpunk',\r\n // Flat Design\r\n flat: 'flat-design',\r\n flatdesign: 'flat-design',\r\n // Retro Vintage\r\n retro: 'retro-vintage',\r\n vintage: 'retro-vintage',\r\n retrodesign: 'retro-vintage',\r\n oldschool: 'retro-vintage',\r\n // Fluent Design\r\n fluent: 'fluent-design',\r\n fluentdesign: 'fluent-design',\r\n microsoft: 'fluent-design',\r\n ms: 'fluent-design',\r\n // Carbon Design\r\n carbon: 'carbon-design',\r\n carbondesign: 'carbon-design',\r\n ibm: 'carbon-design',\r\n // Ant Design\r\n ant: 'ant-design',\r\n antdesign: 'ant-design',\r\n antd: 'ant-design',\r\n alibaba: 'ant-design',\r\n };\r\n\r\n return suggestions[lowerInput];\r\n}\r\n\r\n/**\r\n * Get design system display name\r\n *\r\n * @param designSystem - Design system ID\r\n * @returns Human-readable display name\r\n */\r\nexport function getDesignSystemDisplayName(designSystem: DesignSystem): string {\r\n const displayNames: Record<DesignSystem, string> = {\r\n 'material-design': 'Material Design 3',\r\n 'ios-hig': 'iOS Human Interface Guidelines',\r\n glassmorphism: 'Glassmorphism',\r\n neumorphism: 'Neumorphism',\r\n brutalism: 'Brutalism',\r\n minimalism: 'Minimalism',\r\n cyberpunk: 'Cyberpunk',\r\n 'flat-design': 'Flat Design',\r\n 'retro-vintage': 'Retro Vintage',\r\n 'fluent-design': 'Fluent Design',\r\n 'carbon-design': 'Carbon Design System',\r\n 'ant-design': 'Ant Design',\r\n };\r\n\r\n return displayNames[designSystem];\r\n}\r\n\r\n/**\r\n * Get design system company/origin\r\n *\r\n * @param designSystem - Design system ID\r\n * @returns Company or origin of the design system\r\n */\r\nexport function getDesignSystemOrigin(designSystem: DesignSystem): string {\r\n const origins: Record<DesignSystem, string> = {\r\n 'material-design': 'Google',\r\n 'ios-hig': 'Apple',\r\n glassmorphism: 'Community',\r\n neumorphism: 'Community',\r\n brutalism: 'Community',\r\n minimalism: 'Classic',\r\n cyberpunk: 'Community',\r\n 'flat-design': 'Microsoft/Community',\r\n 'retro-vintage': 'Classic',\r\n 'fluent-design': 'Microsoft',\r\n 'carbon-design': 'IBM',\r\n 'ant-design': 'Alibaba',\r\n };\r\n\r\n return origins[designSystem];\r\n}\r\n\r\n/**\r\n * Get all design system IDs\r\n *\r\n * @returns Array of all design system IDs\r\n */\r\nexport function getAllDesignSystems(): DesignSystem[] {\r\n return [...VALID_DESIGN_SYSTEMS];\r\n}\r\n","/**\r\n * Section Validator - Validates SectionConfig objects\r\n *\r\n * @packageDocumentation\r\n * @module validators/section-validator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { DesignSystem } from '../constants/DesignSystems';\r\nimport type { Tier } from '../constants/Tiers';\r\nimport type { ValidationResult } from '../types/algorithm-engine.types';\r\nimport type {\r\n SectionConfig,\r\n SectionCategory,\r\n LayoutType,\r\n SpacingLevel,\r\n SectionFactors,\r\n TypographyScale,\r\n RadiusLevel,\r\n ElevationLevel,\r\n AlignmentType,\r\n MaxWidthLevel,\r\n AnimationPreset,\r\n A11yLevel,\r\n} from '../types/section.types';\r\n\r\n// ============================================================================\r\n// VALID VALUES CONSTANTS\r\n// ============================================================================\r\n\r\n/**\r\n * Valid section categories\r\n */\r\nconst VALID_SECTION_CATEGORIES: readonly SectionCategory[] = [\r\n 'hero',\r\n 'features',\r\n 'testimonials',\r\n 'pricing',\r\n 'cta',\r\n 'faq',\r\n 'team',\r\n 'contact',\r\n 'gallery',\r\n 'stats',\r\n];\r\n\r\n/**\r\n * Valid layout types\r\n */\r\nconst VALID_LAYOUT_TYPES: readonly LayoutType[] = ['grid', 'flex', 'stack', 'masonry', 'carousel'];\r\n\r\n/**\r\n * Valid spacing levels\r\n */\r\nconst VALID_SPACING_LEVELS: readonly SpacingLevel[] = ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'];\r\n\r\n/**\r\n * Valid column counts\r\n */\r\nconst VALID_COLUMNS: readonly number[] = [1, 2, 3, 4, 6];\r\n\r\n/**\r\n * Valid design systems\r\n */\r\nconst VALID_DESIGN_SYSTEMS: readonly DesignSystem[] = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n 'cyberpunk',\r\n 'flat-design',\r\n 'retro-vintage',\r\n 'fluent-design',\r\n 'carbon-design',\r\n 'ant-design',\r\n];\r\n\r\n/**\r\n * Valid tiers\r\n */\r\nconst VALID_TIERS: readonly Tier[] = ['basic', 'standard', 'enterprise'];\r\n\r\n/**\r\n * Valid typography scales\r\n */\r\nconst VALID_TYPOGRAPHY_SCALES: readonly TypographyScale[] = [\r\n 'compact',\r\n 'default',\r\n 'relaxed',\r\n 'spacious',\r\n];\r\n\r\n/**\r\n * Valid radius levels\r\n */\r\nconst VALID_RADIUS_LEVELS: readonly RadiusLevel[] = ['none', 'sm', 'md', 'lg', 'xl', 'full'];\r\n\r\n/**\r\n * Valid elevation levels\r\n */\r\nconst VALID_ELEVATION_LEVELS: readonly ElevationLevel[] = ['none', 'sm', 'md', 'lg', 'xl'];\r\n\r\n/**\r\n * Valid alignment types\r\n */\r\nconst VALID_ALIGNMENT_TYPES: readonly AlignmentType[] = [\r\n 'start',\r\n 'center',\r\n 'end',\r\n 'stretch',\r\n 'between',\r\n];\r\n\r\n/**\r\n * Valid max width levels\r\n */\r\nconst VALID_MAX_WIDTH_LEVELS: readonly MaxWidthLevel[] = ['sm', 'md', 'lg', 'xl', '2xl', 'full'];\r\n\r\n/**\r\n * Valid animation presets\r\n */\r\nconst VALID_ANIMATION_PRESETS: readonly AnimationPreset[] = [\r\n 'none',\r\n 'subtle',\r\n 'smooth',\r\n 'dynamic',\r\n 'playful',\r\n];\r\n\r\n/**\r\n * Valid accessibility levels\r\n */\r\nconst VALID_A11Y_LEVELS: readonly A11yLevel[] = ['standard', 'enhanced', 'maximum'];\r\n\r\n// ============================================================================\r\n// HELPER FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Safely get property from unknown object\r\n */\r\nfunction getProp(obj: unknown, key: string): unknown {\r\n if (typeof obj === 'object' && obj !== null) {\r\n return (obj as Record<string, unknown>)[key];\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Check if a string is a valid color value\r\n */\r\nfunction isValidColor(color: string): boolean {\r\n // Hex color\r\n if (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color)) {\r\n return true;\r\n }\r\n // RGB/RGBA\r\n if (/^rgba?\\([\\d\\s,.%]+\\)$/i.test(color)) {\r\n return true;\r\n }\r\n // HSL/HSLA\r\n if (/^hsla?\\([\\d\\s,.%deg]+\\)$/i.test(color)) {\r\n return true;\r\n }\r\n // Named colors or CSS variables\r\n if (/^(transparent|currentColor|inherit|var\\(--.+\\))$/i.test(color)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n// ============================================================================\r\n// VALIDATION FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Validate a SectionConfig object\r\n *\r\n * @param config - The SectionConfig to validate\r\n * @returns ValidationResult indicating success or failure with error messages\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateSectionConfig({\r\n * sectionId: 'hero-1',\r\n * sectionType: 'hero',\r\n * title: 'Welcome',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * layout: 'flex',\r\n * columns: 2,\r\n * spacing: 'lg',\r\n * });\r\n *\r\n * if (result.valid) {\r\n * console.log('Config is valid');\r\n * } else {\r\n * console.log('Errors:', result.errors);\r\n * }\r\n * ```\r\n */\r\nexport function validateSectionConfig(config: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if config is an object\r\n if (typeof config !== 'object' || config === null) {\r\n return {\r\n valid: false,\r\n errors: ['SectionConfig must be a non-null object'],\r\n warnings: [],\r\n };\r\n }\r\n\r\n // ============================================================================\r\n // SECTION-LEVEL FIELDS (6) - Required\r\n // ============================================================================\r\n\r\n // sectionId (required)\r\n const sectionId = getProp(config, 'sectionId');\r\n if (typeof sectionId !== 'string' || sectionId.trim() === '') {\r\n errors.push('sectionId is required and must be a non-empty string');\r\n }\r\n\r\n // sectionType (required)\r\n const sectionType = getProp(config, 'sectionType');\r\n if (!VALID_SECTION_CATEGORIES.includes(sectionType as SectionCategory)) {\r\n errors.push(\r\n `sectionType must be one of: ${VALID_SECTION_CATEGORIES.join(', ')}. Got: ${String(sectionType)}`\r\n );\r\n }\r\n\r\n // title (required)\r\n const title = getProp(config, 'title');\r\n if (typeof title !== 'string' || title.trim() === '') {\r\n errors.push('title is required and must be a non-empty string');\r\n }\r\n\r\n // subtitle (optional)\r\n const subtitle = getProp(config, 'subtitle');\r\n if (subtitle !== undefined && typeof subtitle !== 'string') {\r\n errors.push('subtitle must be a string if provided');\r\n }\r\n\r\n // designSystem (required)\r\n const designSystem = getProp(config, 'designSystem');\r\n if (!VALID_DESIGN_SYSTEMS.includes(designSystem as DesignSystem)) {\r\n errors.push(\r\n `designSystem must be one of: ${VALID_DESIGN_SYSTEMS.join(', ')}. Got: ${String(designSystem)}`\r\n );\r\n }\r\n\r\n // tier (required)\r\n const tier = getProp(config, 'tier');\r\n if (!VALID_TIERS.includes(tier as Tier)) {\r\n errors.push(`tier must be one of: ${VALID_TIERS.join(', ')}. Got: ${String(tier)}`);\r\n }\r\n\r\n // ============================================================================\r\n // LAYOUT FIELDS (3) - Required\r\n // ============================================================================\r\n\r\n // layout (required)\r\n const layout = getProp(config, 'layout');\r\n if (!VALID_LAYOUT_TYPES.includes(layout as LayoutType)) {\r\n errors.push(`layout must be one of: ${VALID_LAYOUT_TYPES.join(', ')}. Got: ${String(layout)}`);\r\n }\r\n\r\n // columns (required)\r\n const columns = getProp(config, 'columns');\r\n if (!VALID_COLUMNS.includes(columns as number)) {\r\n errors.push(`columns must be one of: ${VALID_COLUMNS.join(', ')}. Got: ${String(columns)}`);\r\n }\r\n\r\n // spacing (required)\r\n const spacing = getProp(config, 'spacing');\r\n if (!VALID_SPACING_LEVELS.includes(spacing as SpacingLevel)) {\r\n errors.push(\r\n `spacing must be one of: ${VALID_SPACING_LEVELS.join(', ')}. Got: ${String(spacing)}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // GENERATION FIELDS (2) - Optional\r\n // ============================================================================\r\n\r\n // slots (optional array)\r\n const slots = getProp(config, 'slots');\r\n if (slots !== undefined) {\r\n if (!Array.isArray(slots)) {\r\n errors.push('slots must be an array if provided');\r\n } else {\r\n // Validate each slot (basic validation, detailed in slot-validator.ts)\r\n slots.forEach((slot: unknown, index: number) => {\r\n if (typeof slot !== 'object' || slot === null) {\r\n errors.push(`slots[${String(index)}] must be a non-null object`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // itemCount (optional number)\r\n const itemCount = getProp(config, 'itemCount');\r\n if (itemCount !== undefined) {\r\n if (typeof itemCount !== 'number' || itemCount < 0 || !Number.isInteger(itemCount)) {\r\n errors.push('itemCount must be a non-negative integer if provided');\r\n }\r\n if (typeof itemCount === 'number' && itemCount > 100) {\r\n warnings.push('itemCount > 100 may impact performance');\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // COMPONENT-SPECIFIC FIELDS (3) - Optional\r\n // ============================================================================\r\n\r\n // showCta (optional boolean)\r\n const showCta = getProp(config, 'showCta');\r\n if (showCta !== undefined && typeof showCta !== 'boolean') {\r\n errors.push('showCta must be a boolean if provided');\r\n }\r\n\r\n // showMedia (optional boolean)\r\n const showMedia = getProp(config, 'showMedia');\r\n if (showMedia !== undefined && typeof showMedia !== 'boolean') {\r\n errors.push('showMedia must be a boolean if provided');\r\n }\r\n\r\n // styleOverrides (optional object)\r\n const styleOverrides = getProp(config, 'styleOverrides');\r\n if (styleOverrides !== undefined) {\r\n if (typeof styleOverrides !== 'object' || styleOverrides === null) {\r\n errors.push('styleOverrides must be a non-null object if provided');\r\n } else {\r\n const className = getProp(styleOverrides, 'className');\r\n if (className !== undefined && typeof className !== 'string') {\r\n errors.push('styleOverrides.className must be a string if provided');\r\n }\r\n const style = getProp(styleOverrides, 'style');\r\n if (style !== undefined && typeof style !== 'object') {\r\n errors.push('styleOverrides.style must be an object if provided');\r\n }\r\n const tailwindClasses = getProp(styleOverrides, 'tailwindClasses');\r\n if (tailwindClasses !== undefined && typeof tailwindClasses !== 'string') {\r\n errors.push('styleOverrides.tailwindClasses must be a string if provided');\r\n }\r\n }\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n/**\r\n * Validate SectionFactors object\r\n *\r\n * @param factors - The SectionFactors to validate\r\n * @returns ValidationResult indicating success or failure with error messages\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateSectionFactors({\r\n * colorPrimary: '#6750a4',\r\n * colorText: '#1c1b1f',\r\n * colorBackground: '#fffbfe',\r\n * typography: 'default',\r\n * borderRadius: 'lg',\r\n * elevation: 'sm',\r\n * padding: 'lg',\r\n * gap: 'md',\r\n * alignment: 'center',\r\n * maxWidth: 'xl',\r\n * animation: 'smooth',\r\n * responsive: { mobile: 'stack', tablet: 'grid', desktop: 'grid' },\r\n * a11yLevel: 'enhanced',\r\n * });\r\n * ```\r\n */\r\nexport function validateSectionFactors(factors: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if factors is an object\r\n if (typeof factors !== 'object' || factors === null) {\r\n return {\r\n valid: false,\r\n errors: ['SectionFactors must be a non-null object'],\r\n warnings: [],\r\n };\r\n }\r\n\r\n // ============================================================================\r\n // VISUAL FACTORS (6)\r\n // ============================================================================\r\n\r\n // colorPrimary (required string - hex color)\r\n const colorPrimary = getProp(factors, 'colorPrimary');\r\n if (typeof colorPrimary !== 'string') {\r\n errors.push('colorPrimary is required and must be a string');\r\n } else if (!isValidColor(colorPrimary)) {\r\n warnings.push('colorPrimary should be a valid color value (hex, rgb, etc.)');\r\n }\r\n\r\n // colorText (required string)\r\n const colorText = getProp(factors, 'colorText');\r\n if (typeof colorText !== 'string') {\r\n errors.push('colorText is required and must be a string');\r\n }\r\n\r\n // colorBackground (required string)\r\n const colorBackground = getProp(factors, 'colorBackground');\r\n if (typeof colorBackground !== 'string') {\r\n errors.push('colorBackground is required and must be a string');\r\n }\r\n\r\n // typography (required)\r\n const typography = getProp(factors, 'typography');\r\n if (!VALID_TYPOGRAPHY_SCALES.includes(typography as TypographyScale)) {\r\n errors.push(\r\n `typography must be one of: ${VALID_TYPOGRAPHY_SCALES.join(', ')}. Got: ${String(typography)}`\r\n );\r\n }\r\n\r\n // borderRadius (required)\r\n const borderRadius = getProp(factors, 'borderRadius');\r\n if (!VALID_RADIUS_LEVELS.includes(borderRadius as RadiusLevel)) {\r\n errors.push(\r\n `borderRadius must be one of: ${VALID_RADIUS_LEVELS.join(', ')}. Got: ${String(borderRadius)}`\r\n );\r\n }\r\n\r\n // elevation (required)\r\n const elevation = getProp(factors, 'elevation');\r\n if (!VALID_ELEVATION_LEVELS.includes(elevation as ElevationLevel)) {\r\n errors.push(\r\n `elevation must be one of: ${VALID_ELEVATION_LEVELS.join(', ')}. Got: ${String(elevation)}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // LAYOUT FACTORS (4)\r\n // ============================================================================\r\n\r\n // padding (required)\r\n const padding = getProp(factors, 'padding');\r\n if (!VALID_SPACING_LEVELS.includes(padding as SpacingLevel)) {\r\n errors.push(\r\n `padding must be one of: ${VALID_SPACING_LEVELS.join(', ')}. Got: ${String(padding)}`\r\n );\r\n }\r\n\r\n // gap (required)\r\n const gap = getProp(factors, 'gap');\r\n if (!VALID_SPACING_LEVELS.includes(gap as SpacingLevel)) {\r\n errors.push(`gap must be one of: ${VALID_SPACING_LEVELS.join(', ')}. Got: ${String(gap)}`);\r\n }\r\n\r\n // alignment (required)\r\n const alignment = getProp(factors, 'alignment');\r\n if (!VALID_ALIGNMENT_TYPES.includes(alignment as AlignmentType)) {\r\n errors.push(\r\n `alignment must be one of: ${VALID_ALIGNMENT_TYPES.join(', ')}. Got: ${String(alignment)}`\r\n );\r\n }\r\n\r\n // maxWidth (required)\r\n const maxWidth = getProp(factors, 'maxWidth');\r\n if (!VALID_MAX_WIDTH_LEVELS.includes(maxWidth as MaxWidthLevel)) {\r\n errors.push(\r\n `maxWidth must be one of: ${VALID_MAX_WIDTH_LEVELS.join(', ')}. Got: ${String(maxWidth)}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // BEHAVIOR FACTORS (3)\r\n // ============================================================================\r\n\r\n // animation (required)\r\n const animation = getProp(factors, 'animation');\r\n if (!VALID_ANIMATION_PRESETS.includes(animation as AnimationPreset)) {\r\n errors.push(\r\n `animation must be one of: ${VALID_ANIMATION_PRESETS.join(', ')}. Got: ${String(animation)}`\r\n );\r\n }\r\n\r\n // responsive (required object)\r\n const responsive = getProp(factors, 'responsive');\r\n if (typeof responsive !== 'object' || responsive === null) {\r\n errors.push('responsive is required and must be an object');\r\n } else {\r\n const mobile = getProp(responsive, 'mobile');\r\n if (!VALID_LAYOUT_TYPES.includes(mobile as LayoutType)) {\r\n errors.push(\r\n `responsive.mobile must be one of: ${VALID_LAYOUT_TYPES.join(', ')}. Got: ${String(mobile)}`\r\n );\r\n }\r\n const tablet = getProp(responsive, 'tablet');\r\n if (!VALID_LAYOUT_TYPES.includes(tablet as LayoutType)) {\r\n errors.push(\r\n `responsive.tablet must be one of: ${VALID_LAYOUT_TYPES.join(', ')}. Got: ${String(tablet)}`\r\n );\r\n }\r\n const desktop = getProp(responsive, 'desktop');\r\n if (!VALID_LAYOUT_TYPES.includes(desktop as LayoutType)) {\r\n errors.push(\r\n `responsive.desktop must be one of: ${VALID_LAYOUT_TYPES.join(', ')}. Got: ${String(desktop)}`\r\n );\r\n }\r\n }\r\n\r\n // a11yLevel (required)\r\n const a11yLevel = getProp(factors, 'a11yLevel');\r\n if (!VALID_A11Y_LEVELS.includes(a11yLevel as A11yLevel)) {\r\n errors.push(\r\n `a11yLevel must be one of: ${VALID_A11Y_LEVELS.join(', ')}. Got: ${String(a11yLevel)}`\r\n );\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a validated SectionConfig\r\n *\r\n * @param config - Partial config to validate and return\r\n * @returns The validated SectionConfig or throws on invalid\r\n * @throws Error if validation fails\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = createValidatedConfig({\r\n * sectionId: 'hero-1',\r\n * sectionType: 'hero',\r\n * // ... other fields\r\n * });\r\n * ```\r\n */\r\nexport function createValidatedConfig(config: unknown): SectionConfig {\r\n const result = validateSectionConfig(config);\r\n if (!result.valid) {\r\n throw new Error(`Invalid SectionConfig: ${result.errors.join('; ')}`);\r\n }\r\n return config as SectionConfig;\r\n}\r\n\r\n/**\r\n * Create validated SectionFactors\r\n *\r\n * @param factors - Factors to validate and return\r\n * @returns The validated SectionFactors or throws on invalid\r\n * @throws Error if validation fails\r\n *\r\n * @example\r\n * ```typescript\r\n * const factors = createValidatedFactors({\r\n * colorPrimary: '#6750a4',\r\n * // ... other fields\r\n * });\r\n * ```\r\n */\r\nexport function createValidatedFactors(factors: unknown): SectionFactors {\r\n const result = validateSectionFactors(factors);\r\n if (!result.valid) {\r\n throw new Error(`Invalid SectionFactors: ${result.errors.join('; ')}`);\r\n }\r\n return factors as SectionFactors;\r\n}\r\n\r\n// ============================================================================\r\n// TYPE GUARDS\r\n// ============================================================================\r\n\r\n/**\r\n * Type guard to check if a value is a valid SectionCategory\r\n */\r\nexport function isSectionCategory(value: unknown): value is SectionCategory {\r\n return VALID_SECTION_CATEGORIES.includes(value as SectionCategory);\r\n}\r\n\r\n/**\r\n * Type guard to check if a value is a valid LayoutType\r\n */\r\nexport function isLayoutType(value: unknown): value is LayoutType {\r\n return VALID_LAYOUT_TYPES.includes(value as LayoutType);\r\n}\r\n\r\n/**\r\n * Type guard to check if a value is a valid SpacingLevel\r\n */\r\nexport function isSpacingLevel(value: unknown): value is SpacingLevel {\r\n return VALID_SPACING_LEVELS.includes(value as SpacingLevel);\r\n}\r\n\r\n/**\r\n * Type guard to check if a value is a valid DesignSystem\r\n */\r\nexport function isValidDesignSystem(value: unknown): value is DesignSystem {\r\n return VALID_DESIGN_SYSTEMS.includes(value as DesignSystem);\r\n}\r\n\r\n/**\r\n * Type guard to check if a value is a valid Tier\r\n */\r\nexport function isValidTier(value: unknown): value is Tier {\r\n return VALID_TIERS.includes(value as Tier);\r\n}\r\n","/**\r\n * Slot Validator - Validates SlotConfig objects\r\n *\r\n * @packageDocumentation\r\n * @module validators/slot-validator\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { ValidationResult } from '../types/algorithm-engine.types';\r\nimport type { ComponentType } from '../types/index';\r\nimport type { SlotConfig, SlotPosition, StoredComponentInSlot } from '../types/section.types';\r\n\r\n// ============================================================================\r\n// VALID VALUES CONSTANTS\r\n// ============================================================================\r\n\r\n/**\r\n * Valid slot positions\r\n */\r\nconst VALID_SLOT_POSITIONS: readonly SlotPosition[] = [\r\n 'header',\r\n 'content',\r\n 'footer',\r\n 'sidebar',\r\n 'overlay',\r\n];\r\n\r\n/**\r\n * Valid component types (subset from ComponentType)\r\n * These are the component types that can be placed in slots\r\n */\r\nconst VALID_COMPONENT_TYPES: readonly ComponentType[] = [\r\n // Basic\r\n 'button',\r\n 'input',\r\n 'textarea',\r\n 'checkbox',\r\n 'radio-group',\r\n 'switch',\r\n 'select',\r\n 'slider',\r\n // Feedback\r\n 'alert',\r\n 'badge',\r\n 'chip',\r\n 'progress',\r\n 'spinner',\r\n 'skeleton',\r\n 'tooltip',\r\n // Navigation\r\n 'tabs',\r\n 'menu',\r\n 'breadcrumb',\r\n 'pagination',\r\n 'stepper',\r\n // Data Display\r\n 'card',\r\n 'table',\r\n 'list',\r\n 'accordion',\r\n 'avatar',\r\n // Overlay\r\n 'modal',\r\n 'drawer',\r\n 'popover',\r\n // Date/Time\r\n 'date-picker',\r\n 'calendar',\r\n // Media\r\n 'audio',\r\n 'video',\r\n 'image',\r\n 'file',\r\n];\r\n\r\n/**\r\n * Maximum allowed components per slot\r\n */\r\nconst MAX_COMPONENTS_LIMIT = 20;\r\n\r\n// ============================================================================\r\n// HELPER FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Safely get property from unknown object\r\n */\r\nfunction getProp(obj: unknown, key: string): unknown {\r\n if (typeof obj === 'object' && obj !== null) {\r\n return (obj as Record<string, unknown>)[key];\r\n }\r\n return undefined;\r\n}\r\n\r\n// ============================================================================\r\n// SLOT CONFIG VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Validate a SlotConfig object\r\n *\r\n * @param config - The SlotConfig to validate\r\n * @returns ValidationResult indicating success or failure with error messages\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateSlotConfig({\r\n * slotId: 'header-slot',\r\n * position: 'header',\r\n * allowedComponents: ['button', 'badge'],\r\n * maxComponents: 5,\r\n * defaultComponent: 'button',\r\n * });\r\n *\r\n * if (result.valid) {\r\n * console.log('Slot config is valid');\r\n * } else {\r\n * console.log('Errors:', result.errors);\r\n * }\r\n * ```\r\n */\r\nexport function validateSlotConfig(config: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if config is an object\r\n if (typeof config !== 'object' || config === null) {\r\n return {\r\n valid: false,\r\n errors: ['SlotConfig must be a non-null object'],\r\n warnings: [],\r\n };\r\n }\r\n\r\n // ============================================================================\r\n // REQUIRED FIELDS\r\n // ============================================================================\r\n\r\n // slotId (required string)\r\n const slotId = getProp(config, 'slotId');\r\n if (typeof slotId !== 'string' || slotId.trim() === '') {\r\n errors.push('slotId is required and must be a non-empty string');\r\n } else if (!/^[a-z][a-z0-9-]*$/i.test(slotId)) {\r\n warnings.push('slotId should follow kebab-case naming convention (e.g., \"header-slot\")');\r\n }\r\n\r\n // position (required)\r\n const position = getProp(config, 'position');\r\n if (!VALID_SLOT_POSITIONS.includes(position as SlotPosition)) {\r\n errors.push(\r\n `position must be one of: ${VALID_SLOT_POSITIONS.join(', ')}. Got: ${String(position)}`\r\n );\r\n }\r\n\r\n // allowedComponents (required array)\r\n const allowedComponents = getProp(config, 'allowedComponents');\r\n if (!Array.isArray(allowedComponents)) {\r\n errors.push('allowedComponents is required and must be an array');\r\n } else if (allowedComponents.length === 0) {\r\n errors.push('allowedComponents must contain at least one component type');\r\n } else {\r\n const invalidComponents = allowedComponents.filter(\r\n (c: unknown) => !VALID_COMPONENT_TYPES.includes(c as ComponentType)\r\n );\r\n if (invalidComponents.length > 0) {\r\n errors.push(\r\n `Invalid component types in allowedComponents: ${invalidComponents.map(String).join(', ')}`\r\n );\r\n }\r\n }\r\n\r\n // maxComponents (required number)\r\n const maxComponents = getProp(config, 'maxComponents');\r\n if (typeof maxComponents !== 'number') {\r\n errors.push('maxComponents is required and must be a number');\r\n } else {\r\n if (!Number.isInteger(maxComponents) || maxComponents < 1) {\r\n errors.push('maxComponents must be a positive integer');\r\n }\r\n if (maxComponents > MAX_COMPONENTS_LIMIT) {\r\n warnings.push(\r\n `maxComponents of ${String(maxComponents)} exceeds recommended limit of ${String(MAX_COMPONENTS_LIMIT)}`\r\n );\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // OPTIONAL FIELDS\r\n // ============================================================================\r\n\r\n // defaultComponent (optional)\r\n const defaultComponent = getProp(config, 'defaultComponent');\r\n if (defaultComponent !== undefined) {\r\n const defaultComponentStr =\r\n typeof defaultComponent === 'string' ? defaultComponent : JSON.stringify(defaultComponent);\r\n if (!VALID_COMPONENT_TYPES.includes(defaultComponent as ComponentType)) {\r\n errors.push(`defaultComponent must be a valid component type. Got: ${defaultComponentStr}`);\r\n } else if (Array.isArray(allowedComponents) && !allowedComponents.includes(defaultComponent)) {\r\n errors.push('defaultComponent must be in the allowedComponents list');\r\n }\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n/**\r\n * Validate multiple SlotConfig objects\r\n *\r\n * @param slots - Array of SlotConfig objects to validate\r\n * @returns ValidationResult with aggregated errors and warnings\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateSlotConfigs([\r\n * { slotId: 'header', position: 'header', ... },\r\n * { slotId: 'content', position: 'content', ... },\r\n * ]);\r\n * ```\r\n */\r\nexport function validateSlotConfigs(slots: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n if (!Array.isArray(slots)) {\r\n return {\r\n valid: false,\r\n errors: ['slots must be an array'],\r\n warnings: [],\r\n };\r\n }\r\n\r\n // Check for duplicate slotIds\r\n const slotIds = new Set<string>();\r\n const duplicates: string[] = [];\r\n\r\n slots.forEach((slot: unknown, index: number) => {\r\n const result = validateSlotConfig(slot);\r\n result.errors.forEach((err) => errors.push(`slots[${String(index)}]: ${err}`));\r\n result.warnings.forEach((warn) => warnings.push(`slots[${String(index)}]: ${warn}`));\r\n\r\n // Check for duplicate slotIds\r\n const slotId = getProp(slot, 'slotId');\r\n if (typeof slotId === 'string') {\r\n if (slotIds.has(slotId)) {\r\n duplicates.push(slotId);\r\n } else {\r\n slotIds.add(slotId);\r\n }\r\n }\r\n });\r\n\r\n if (duplicates.length > 0) {\r\n errors.push(`Duplicate slotIds found: ${duplicates.join(', ')}`);\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// STORED COMPONENT VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Validate a StoredComponentInSlot object\r\n *\r\n * @param component - The StoredComponentInSlot to validate\r\n * @returns ValidationResult indicating success or failure\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateStoredComponent({\r\n * componentRef: 'button',\r\n * instanceId: 'btn-1',\r\n * propOverrides: { variant: 'primary' },\r\n * order: 0,\r\n * visible: true,\r\n * });\r\n * ```\r\n */\r\nexport function validateStoredComponent(component: unknown): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check if component is an object\r\n if (typeof component !== 'object' || component === null) {\r\n return {\r\n valid: false,\r\n errors: ['StoredComponentInSlot must be a non-null object'],\r\n warnings: [],\r\n };\r\n }\r\n\r\n // componentRef (required)\r\n const componentRef = getProp(component, 'componentRef');\r\n if (!VALID_COMPONENT_TYPES.includes(componentRef as ComponentType)) {\r\n errors.push(`componentRef must be a valid component type. Got: ${String(componentRef)}`);\r\n }\r\n\r\n // instanceId (required string)\r\n const instanceId = getProp(component, 'instanceId');\r\n if (typeof instanceId !== 'string' || instanceId.trim() === '') {\r\n errors.push('instanceId is required and must be a non-empty string');\r\n }\r\n\r\n // propOverrides (required object)\r\n const propOverrides = getProp(component, 'propOverrides');\r\n if (typeof propOverrides !== 'object' || propOverrides === null) {\r\n errors.push('propOverrides is required and must be an object');\r\n }\r\n\r\n // order (required number)\r\n const order = getProp(component, 'order');\r\n if (typeof order !== 'number' || !Number.isInteger(order) || order < 0) {\r\n errors.push('order must be a non-negative integer');\r\n }\r\n\r\n // visible (required boolean)\r\n const visible = getProp(component, 'visible');\r\n if (typeof visible !== 'boolean') {\r\n errors.push('visible must be a boolean');\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n/**\r\n * Validate StoredComponentInSlot against its SlotConfig\r\n *\r\n * @param component - The StoredComponentInSlot to validate\r\n * @param slotConfig - The SlotConfig to validate against\r\n * @returns ValidationResult indicating success or failure\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateComponentInSlot(\r\n * { componentRef: 'button', ... },\r\n * { allowedComponents: ['button', 'badge'], maxComponents: 5, ... }\r\n * );\r\n * ```\r\n */\r\nexport function validateComponentInSlot(\r\n component: StoredComponentInSlot,\r\n slotConfig: SlotConfig\r\n): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Validate component itself\r\n const componentResult = validateStoredComponent(component);\r\n errors.push(...componentResult.errors);\r\n warnings.push(...componentResult.warnings);\r\n\r\n // Validate component is allowed in slot\r\n if (!slotConfig.allowedComponents.includes(component.componentRef)) {\r\n errors.push(\r\n `Component type \"${component.componentRef}\" is not allowed in this slot. Allowed types: ${slotConfig.allowedComponents.join(', ')}`\r\n );\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n/**\r\n * Validate multiple components in a slot\r\n *\r\n * @param components - Array of StoredComponentInSlot to validate\r\n * @param slotConfig - The SlotConfig to validate against\r\n * @returns ValidationResult with aggregated errors\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateComponentsInSlot(\r\n * [{ componentRef: 'button', ... }, { componentRef: 'badge', ... }],\r\n * { allowedComponents: ['button', 'badge'], maxComponents: 5, ... }\r\n * );\r\n * ```\r\n */\r\nexport function validateComponentsInSlot(\r\n components: readonly StoredComponentInSlot[],\r\n slotConfig: SlotConfig\r\n): ValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Check max components limit\r\n if (components.length > slotConfig.maxComponents) {\r\n errors.push(\r\n `Slot has ${String(components.length)} components but maxComponents is ${String(slotConfig.maxComponents)}`\r\n );\r\n }\r\n\r\n // Validate each component\r\n components.forEach((component, index) => {\r\n const result = validateComponentInSlot(component, slotConfig);\r\n result.errors.forEach((err) => errors.push(`components[${String(index)}]: ${err}`));\r\n result.warnings.forEach((warn) => warnings.push(`components[${String(index)}]: ${warn}`));\r\n });\r\n\r\n // Check for duplicate instanceIds\r\n const instanceIds = new Set<string>();\r\n const duplicates: string[] = [];\r\n\r\n components.forEach((component) => {\r\n if (instanceIds.has(component.instanceId)) {\r\n duplicates.push(component.instanceId);\r\n } else {\r\n instanceIds.add(component.instanceId);\r\n }\r\n });\r\n\r\n if (duplicates.length > 0) {\r\n errors.push(`Duplicate instanceIds found: ${duplicates.join(', ')}`);\r\n }\r\n\r\n // Check for order gaps or duplicates\r\n const orders = components.map((c) => c.order).sort((a, b) => a - b);\r\n const orderSet = new Set(orders);\r\n if (orderSet.size !== orders.length) {\r\n warnings.push('Duplicate order values found - components may overlap');\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a validated SlotConfig\r\n *\r\n * @param config - Slot config to validate and return\r\n * @returns The validated SlotConfig or throws on invalid\r\n * @throws Error if validation fails\r\n */\r\nexport function createValidatedSlotConfig(config: unknown): SlotConfig {\r\n const result = validateSlotConfig(config);\r\n if (!result.valid) {\r\n throw new Error(`Invalid SlotConfig: ${result.errors.join('; ')}`);\r\n }\r\n return config as SlotConfig;\r\n}\r\n\r\n/**\r\n * Create a validated StoredComponentInSlot\r\n *\r\n * @param component - Component to validate and return\r\n * @returns The validated StoredComponentInSlot or throws on invalid\r\n * @throws Error if validation fails\r\n */\r\nexport function createValidatedStoredComponent(component: unknown): StoredComponentInSlot {\r\n const result = validateStoredComponent(component);\r\n if (!result.valid) {\r\n throw new Error(`Invalid StoredComponentInSlot: ${result.errors.join('; ')}`);\r\n }\r\n return component as StoredComponentInSlot;\r\n}\r\n\r\n// ============================================================================\r\n// TYPE GUARDS\r\n// ============================================================================\r\n\r\n/**\r\n * Type guard to check if a value is a valid SlotPosition\r\n */\r\nexport function isSlotPosition(value: unknown): value is SlotPosition {\r\n return VALID_SLOT_POSITIONS.includes(value as SlotPosition);\r\n}\r\n\r\n/**\r\n * Type guard to check if a value is a valid ComponentType\r\n */\r\nexport function isComponentType(value: unknown): value is ComponentType {\r\n return VALID_COMPONENT_TYPES.includes(value as ComponentType);\r\n}\r\n\r\n/**\r\n * Check if a SlotConfig is valid\r\n */\r\nexport function isValidSlotConfig(config: unknown): config is SlotConfig {\r\n return validateSlotConfig(config).valid;\r\n}\r\n\r\n/**\r\n * Check if a StoredComponentInSlot is valid\r\n */\r\nexport function isValidStoredComponent(component: unknown): component is StoredComponentInSlot {\r\n return validateStoredComponent(component).valid;\r\n}\r\n\r\n// ============================================================================\r\n// DEFAULT SLOT CONFIGS\r\n// ============================================================================\r\n\r\n/**\r\n * Default slot configuration for header position\r\n */\r\nexport const DEFAULT_HEADER_SLOT: SlotConfig = {\r\n slotId: 'header-slot',\r\n position: 'header',\r\n allowedComponents: ['button', 'badge', 'avatar', 'menu'],\r\n maxComponents: 5,\r\n defaultComponent: 'button',\r\n};\r\n\r\n/**\r\n * Default slot configuration for content position\r\n */\r\nexport const DEFAULT_CONTENT_SLOT: SlotConfig = {\r\n slotId: 'content-slot',\r\n position: 'content',\r\n allowedComponents: ['card', 'list', 'table', 'accordion'],\r\n maxComponents: 10,\r\n defaultComponent: 'card',\r\n};\r\n\r\n/**\r\n * Default slot configuration for footer position\r\n */\r\nexport const DEFAULT_FOOTER_SLOT: SlotConfig = {\r\n slotId: 'footer-slot',\r\n position: 'footer',\r\n allowedComponents: ['button', 'badge'],\r\n maxComponents: 3,\r\n defaultComponent: 'button',\r\n};\r\n\r\n/**\r\n * Default slot configuration for sidebar position\r\n */\r\nexport const DEFAULT_SIDEBAR_SLOT: SlotConfig = {\r\n slotId: 'sidebar-slot',\r\n position: 'sidebar',\r\n allowedComponents: ['menu', 'list', 'accordion'],\r\n maxComponents: 5,\r\n defaultComponent: 'menu',\r\n};\r\n\r\n/**\r\n * Default slot configuration for overlay position\r\n */\r\nexport const DEFAULT_OVERLAY_SLOT: SlotConfig = {\r\n slotId: 'overlay-slot',\r\n position: 'overlay',\r\n allowedComponents: ['modal', 'drawer', 'popover'],\r\n maxComponents: 1,\r\n defaultComponent: 'modal',\r\n};\r\n\r\n/**\r\n * Get default slot config for a position\r\n *\r\n * @param position - The slot position\r\n * @returns Default SlotConfig for the position\r\n */\r\nexport function getDefaultSlotConfig(position: SlotPosition): SlotConfig {\r\n switch (position) {\r\n case 'header':\r\n return DEFAULT_HEADER_SLOT;\r\n case 'content':\r\n return DEFAULT_CONTENT_SLOT;\r\n case 'footer':\r\n return DEFAULT_FOOTER_SLOT;\r\n case 'sidebar':\r\n return DEFAULT_SIDEBAR_SLOT;\r\n case 'overlay':\r\n return DEFAULT_OVERLAY_SLOT;\r\n }\r\n}\r\n","/**\r\n * Batch Command\r\n * CLI command for batch generation of components\r\n *\r\n * @packageDocumentation\r\n * @module cli/batch-command\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport * as fs from 'fs';\r\nimport { ComponentGenerator } from '../ui-studio/ComponentGenerator';\r\nimport { getAllComponentTypes, getTotalComponentCount } from '../ui-studio/registries/components-registry';\r\nimport {\r\n getAllDesignSystems,\r\n getTotalDesignSystemCount,\r\n} from '../ui-studio/registries/design-systems-registry';\r\nimport { getAllTiers } from '../ui-studio/registries/tiers-registry';\r\n\r\nimport type { Tier, DesignSystem, ComponentType } from '../types';\r\nimport type {\r\n BatchGenerationResult,\r\n GenerationResultItem,\r\n FactorId,\r\n} from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Batch command options\r\n */\r\nexport interface BatchCommandOptions {\r\n /** Component types to generate (default: all) */\r\n components?: readonly ComponentType[];\r\n /** Design systems to generate for (default: all) */\r\n designSystems?: readonly DesignSystem[];\r\n /** Tiers to generate (default: all) */\r\n tiers?: readonly Tier[];\r\n /** Output directory */\r\n outputDir: string;\r\n /** Overwrite existing files */\r\n overwrite?: boolean;\r\n /** Factor overrides to apply to all components */\r\n factorOverrides?: Partial<Record<FactorId, string>>;\r\n /** Dry run (don't write files) */\r\n dryRun?: boolean;\r\n /** Verbose output */\r\n verbose?: boolean;\r\n /** Parallel generation count */\r\n parallelCount?: number;\r\n}\r\n\r\n/**\r\n * Batch generation progress callback\r\n */\r\nexport type BatchProgressCallback = (\r\n current: number,\r\n total: number,\r\n item: GenerationResultItem\r\n) => void;\r\n\r\n// ============================================================================\r\n// BATCH COMMAND CLASS\r\n// ============================================================================\r\n\r\n/**\r\n * Batch Command\r\n *\r\n * Handles batch generation of components across design systems and tiers\r\n *\r\n * @example\r\n * ```typescript\r\n * const command = new BatchCommand();\r\n *\r\n * // Generate all components for all design systems\r\n * const result = await command.execute({\r\n * outputDir: './generated',\r\n * overwrite: true,\r\n * });\r\n *\r\n * console.log(`Generated ${result.successful} components`);\r\n * ```\r\n */\r\nexport class BatchCommand {\r\n private generator: ComponentGenerator;\r\n\r\n constructor() {\r\n this.generator = new ComponentGenerator();\r\n }\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Execute batch generation\r\n *\r\n * @param options - Batch command options\r\n * @param onProgress - Optional progress callback\r\n * @returns Batch generation result\r\n */\r\n public execute(\r\n options: BatchCommandOptions,\r\n onProgress?: BatchProgressCallback\r\n ): BatchGenerationResult {\r\n const startTime = Date.now();\r\n\r\n // Resolve options with defaults\r\n const components = options.components ?? getAllComponentTypes();\r\n const designSystems = options.designSystems ?? getAllDesignSystems();\r\n const tiers = options.tiers ?? getAllTiers();\r\n\r\n // Calculate total\r\n const total = components.length * designSystems.length * tiers.length;\r\n const results: GenerationResultItem[] = [];\r\n let successful = 0;\r\n let failed = 0;\r\n let totalLinesOfCode = 0;\r\n\r\n // Generate each combination\r\n let current = 0;\r\n for (const componentType of components) {\r\n for (const designSystem of designSystems) {\r\n for (const tier of tiers) {\r\n current++;\r\n\r\n const result = this.generateSingle({\r\n componentType,\r\n designSystem,\r\n tier,\r\n outputDir: options.outputDir,\r\n overwrite: options.overwrite ?? false,\r\n factorOverrides: options.factorOverrides,\r\n dryRun: options.dryRun ?? false,\r\n verbose: options.verbose ?? false,\r\n });\r\n\r\n results.push(result);\r\n\r\n if (result.success) {\r\n successful++;\r\n totalLinesOfCode += result.linesOfCode ?? 0;\r\n } else {\r\n failed++;\r\n }\r\n\r\n // Call progress callback\r\n if (onProgress !== undefined) {\r\n onProgress(current, total, result);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const durationMs = Date.now() - startTime;\r\n\r\n return {\r\n total,\r\n successful,\r\n failed,\r\n totalLinesOfCode,\r\n results,\r\n durationMs,\r\n };\r\n }\r\n\r\n /**\r\n * Get estimated generation count\r\n *\r\n * @param options - Batch command options\r\n * @returns Object with count details\r\n */\r\n public getEstimatedCount(options: Partial<BatchCommandOptions>): {\r\n components: number;\r\n designSystems: number;\r\n tiers: number;\r\n total: number;\r\n } {\r\n const componentCount = options.components?.length ?? getTotalComponentCount();\r\n const designSystemCount = options.designSystems?.length ?? getTotalDesignSystemCount();\r\n const tierCount = options.tiers?.length ?? 3;\r\n\r\n return {\r\n components: componentCount,\r\n designSystems: designSystemCount,\r\n tiers: tierCount,\r\n total: componentCount * designSystemCount * tierCount,\r\n };\r\n }\r\n\r\n /**\r\n * Validate batch options\r\n *\r\n * @param options - Options to validate\r\n * @returns Validation result\r\n */\r\n public validateOptions(options: BatchCommandOptions): {\r\n valid: boolean;\r\n errors: string[];\r\n warnings: string[];\r\n } {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Validate output directory\r\n if (options.outputDir === '' || options.outputDir === undefined) {\r\n errors.push('Output directory is required');\r\n }\r\n\r\n // Validate component types if provided\r\n if (options.components !== undefined) {\r\n const allComponents = getAllComponentTypes();\r\n for (const component of options.components) {\r\n if (!allComponents.includes(component)) {\r\n errors.push(`Invalid component type: ${component}`);\r\n }\r\n }\r\n }\r\n\r\n // Validate design systems if provided\r\n if (options.designSystems !== undefined) {\r\n const allDS = getAllDesignSystems();\r\n for (const ds of options.designSystems) {\r\n if (!allDS.includes(ds)) {\r\n errors.push(`Invalid design system: ${ds}`);\r\n }\r\n }\r\n }\r\n\r\n // Validate tiers if provided\r\n if (options.tiers !== undefined) {\r\n const allTiers = getAllTiers();\r\n for (const tier of options.tiers) {\r\n if (!allTiers.includes(tier)) {\r\n errors.push(`Invalid tier: ${tier}`);\r\n }\r\n }\r\n }\r\n\r\n // Validate factor overrides if provided\r\n if (options.factorOverrides !== undefined) {\r\n for (const [idStr] of Object.entries(options.factorOverrides)) {\r\n const factorId = Number(idStr);\r\n if (factorId < 1 || factorId > 24) {\r\n errors.push(`Invalid factor ID: ${idStr}. Must be between 1 and 24.`);\r\n }\r\n }\r\n }\r\n\r\n // Warnings\r\n const estimate = this.getEstimatedCount(options);\r\n if (estimate.total > 1000) {\r\n warnings.push(`Large batch: ${estimate.total} components will be generated`);\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n }\r\n\r\n /**\r\n * Get available options for CLI help\r\n *\r\n * @returns Object with available values\r\n */\r\n public getAvailableOptions(): {\r\n componentTypes: ComponentType[];\r\n designSystems: DesignSystem[];\r\n tiers: Tier[];\r\n } {\r\n return {\r\n componentTypes: getAllComponentTypes(),\r\n designSystems: getAllDesignSystems(),\r\n tiers: getAllTiers(),\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n /**\r\n * Generate a single component\r\n */\r\n private generateSingle(options: {\r\n componentType: ComponentType;\r\n designSystem: DesignSystem;\r\n tier: Tier;\r\n outputDir: string;\r\n overwrite: boolean;\r\n factorOverrides?: Partial<Record<FactorId, string>>;\r\n dryRun: boolean;\r\n verbose: boolean;\r\n }): GenerationResultItem {\r\n const componentId = this.generateComponentId(\r\n options.componentType,\r\n options.designSystem,\r\n options.tier\r\n );\r\n\r\n try {\r\n // Generate component using ComponentGenerator (Matrix Algorithm)\r\n const result = this.generator.generate({\r\n componentType: options.componentType,\r\n designSystem: options.designSystem,\r\n tier: options.tier,\r\n factorOverrides: options.factorOverrides,\r\n outputDir: options.outputDir,\r\n });\r\n\r\n if (!result.success) {\r\n return {\r\n componentId,\r\n success: false,\r\n error: result.error,\r\n };\r\n }\r\n\r\n // Build file paths\r\n const basePath = `${options.outputDir}/${options.designSystem}/${options.componentType}`;\r\n const outputPath = `${basePath}/${options.tier}.tsx`;\r\n\r\n // In dry run mode, return without writing\r\n if (options.dryRun) {\r\n return {\r\n componentId,\r\n success: true,\r\n outputPath: `[dry-run] ${outputPath}`,\r\n linesOfCode: result.metadata.linesOfCode,\r\n };\r\n }\r\n\r\n // Write files to disk\r\n try {\r\n // Create output directory\r\n fs.mkdirSync(basePath, { recursive: true });\r\n\r\n // Write component file\r\n fs.writeFileSync(outputPath, result.code.componentCode, 'utf-8');\r\n\r\n // Write types file if available\r\n let typesPath: string | undefined;\r\n if (result.code.typesCode) {\r\n typesPath = `${basePath}/${options.tier}.types.ts`;\r\n fs.writeFileSync(typesPath, result.code.typesCode, 'utf-8');\r\n }\r\n\r\n // Write test file if available\r\n let testPath: string | undefined;\r\n if (result.code.testCode) {\r\n testPath = `${basePath}/${options.tier}.test.tsx`;\r\n fs.writeFileSync(testPath, result.code.testCode, 'utf-8');\r\n }\r\n\r\n return {\r\n componentId,\r\n success: true,\r\n outputPath,\r\n linesOfCode: result.metadata.linesOfCode,\r\n };\r\n } catch (writeError) {\r\n const errorMessage = writeError instanceof Error ? writeError.message : String(writeError);\r\n return {\r\n componentId,\r\n success: false,\r\n error: `Failed to write files: ${errorMessage}`,\r\n };\r\n }\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n return {\r\n componentId,\r\n success: false,\r\n error: errorMessage,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Generate a unique component ID\r\n */\r\n private generateComponentId(\r\n componentType: ComponentType,\r\n designSystem: DesignSystem,\r\n tier: Tier\r\n ): string {\r\n return `${designSystem}/${componentType}/${tier}`;\r\n }\r\n\r\n\r\n}\r\n\r\n// ============================================================================\r\n// FACTORY AND CONVENIENCE FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Create a new batch command instance\r\n */\r\nexport function createBatchCommand(): BatchCommand {\r\n return new BatchCommand();\r\n}\r\n\r\n/**\r\n * Execute batch generation with default options\r\n *\r\n * @param options - Batch options\r\n * @param onProgress - Progress callback\r\n * @returns Batch result\r\n */\r\nexport function executeBatch(\r\n options: BatchCommandOptions,\r\n onProgress?: BatchProgressCallback\r\n): BatchGenerationResult {\r\n const command = new BatchCommand();\r\n return command.execute(options, onProgress);\r\n}\r\n\r\n/**\r\n * Get batch generation estimate\r\n *\r\n * @param options - Partial batch options\r\n * @returns Estimate object\r\n */\r\nexport function getBatchEstimate(options: Partial<BatchCommandOptions>): {\r\n components: number;\r\n designSystems: number;\r\n tiers: number;\r\n total: number;\r\n} {\r\n const command = new BatchCommand();\r\n return command.getEstimatedCount(options);\r\n}\r\n\r\n/**\r\n * Parse CLI arguments for batch command\r\n *\r\n * @param args - CLI arguments\r\n * @returns Parsed batch options\r\n */\r\nexport function parseBatchArgs(args: string[]): Partial<BatchCommandOptions> {\r\n const options: Partial<BatchCommandOptions> = {};\r\n\r\n for (let i = 0; i < args.length; i++) {\r\n const arg = args[i];\r\n\r\n if (arg === '--output' || arg === '-o') {\r\n options.outputDir = args[++i];\r\n } else if (arg === '--components' || arg === '-c') {\r\n options.components = args[++i]?.split(',') as ComponentType[];\r\n } else if (arg === '--design-systems' || arg === '--ds') {\r\n options.designSystems = args[++i]?.split(',') as DesignSystem[];\r\n } else if (arg === '--tiers' || arg === '-t') {\r\n options.tiers = args[++i]?.split(',') as Tier[];\r\n } else if (arg === '--overwrite') {\r\n options.overwrite = true;\r\n } else if (arg === '--dry-run') {\r\n options.dryRun = true;\r\n } else if (arg === '--verbose' || arg === '-v') {\r\n options.verbose = true;\r\n }\r\n }\r\n\r\n return options;\r\n}\r\n","/**\r\n * Generate Command\r\n * CLI command for single component generation\r\n *\r\n * @packageDocumentation\r\n * @module cli/generate-command\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport * as fs from 'fs';\r\nimport { ComponentGenerator } from '../ui-studio/ComponentGenerator';\r\nimport { getAllComponentTypes } from '../ui-studio/registries/components-registry';\r\nimport { getAllDesignSystems } from '../ui-studio/registries/design-systems-registry';\r\nimport { getAllTiers } from '../ui-studio/registries/tiers-registry';\r\n\r\nimport type { Tier, DesignSystem, ComponentType } from '../types';\r\nimport type { FactorId } from '../types/algorithm-engine.types';\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * Generate command options\r\n */\r\nexport interface GenerateCommandOptions {\r\n /** Component type to generate */\r\n readonly componentType: ComponentType;\r\n /** Design system to use */\r\n readonly designSystem: DesignSystem;\r\n /** Quality tier */\r\n readonly tier: Tier;\r\n /** Output directory */\r\n readonly outputDir: string;\r\n /** Factor overrides */\r\n readonly factorOverrides?: Partial<Record<FactorId, string>>;\r\n /** Dry run mode (no file writes) */\r\n readonly dryRun?: boolean;\r\n /** Include TypeScript types file */\r\n readonly includeTypes?: boolean;\r\n /** Include test file */\r\n readonly includeTests?: boolean;\r\n /** Include Storybook stories */\r\n readonly includeStories?: boolean;\r\n}\r\n\r\n/**\r\n * Generate command result\r\n */\r\nexport interface GenerateCommandResult {\r\n /** Whether generation succeeded */\r\n readonly success: boolean;\r\n /** Error message if failed */\r\n readonly error?: string;\r\n /** Generated component name */\r\n readonly componentName?: string;\r\n /** Output file path */\r\n readonly outputPath?: string;\r\n /** Types file path (if generated) */\r\n readonly typesPath?: string;\r\n /** Test file path (if generated) */\r\n readonly testPath?: string;\r\n /** Story file path (if generated) */\r\n readonly storyPath?: string;\r\n /** Lines of code */\r\n readonly linesOfCode?: number;\r\n /** Generated code (dry run only) */\r\n readonly code?: string;\r\n}\r\n\r\n// ============================================================================\r\n// GENERATE COMMAND\r\n// ============================================================================\r\n\r\n/**\r\n * Execute generate command\r\n *\r\n * @param options - Generate command options\r\n * @returns Generation result\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = generateCommand({\r\n * componentType: 'button',\r\n * designSystem: 'material-design',\r\n * tier: 'enterprise',\r\n * outputDir: './generated',\r\n * });\r\n * ```\r\n */\r\nexport function generateCommand(options: GenerateCommandOptions): GenerateCommandResult {\r\n const {\r\n componentType,\r\n designSystem,\r\n tier,\r\n outputDir,\r\n factorOverrides,\r\n dryRun = false,\r\n includeTypes = true,\r\n includeTests = true,\r\n } = options;\r\n\r\n try {\r\n // Create generator (Matrix system handles all generation)\r\n const generator = new ComponentGenerator();\r\n\r\n // Generate component\r\n const result = generator.generate({\r\n componentType,\r\n designSystem,\r\n tier,\r\n factorOverrides,\r\n outputDir,\r\n });\r\n\r\n if (!result.success) {\r\n return {\r\n success: false,\r\n error: result.error,\r\n };\r\n }\r\n\r\n // Build file paths\r\n const componentName = result.metadata.componentName;\r\n const basePath = `${outputDir}/${designSystem}/${componentType}`;\r\n const outputPath = `${basePath}/${tier}.tsx`;\r\n\r\n // In dry run mode, return code without writing\r\n if (dryRun) {\r\n return {\r\n success: true,\r\n componentName,\r\n outputPath: `[dry-run] ${outputPath}`,\r\n linesOfCode: result.metadata.linesOfCode,\r\n code: result.code.componentCode,\r\n };\r\n }\r\n\r\n // Write files to disk\r\n try {\r\n // Create output directory\r\n fs.mkdirSync(basePath, { recursive: true });\r\n\r\n // Write component file\r\n fs.writeFileSync(outputPath, result.code.componentCode, 'utf-8');\r\n\r\n // Write types file if requested\r\n let typesPath: string | undefined;\r\n if (includeTypes && result.code.typesCode) {\r\n typesPath = `${basePath}/${tier}.types.ts`;\r\n fs.writeFileSync(typesPath, result.code.typesCode, 'utf-8');\r\n }\r\n\r\n // Write test file if requested\r\n let testPath: string | undefined;\r\n if (includeTests && result.code.testCode) {\r\n testPath = `${basePath}/${tier}.test.tsx`;\r\n fs.writeFileSync(testPath, result.code.testCode, 'utf-8');\r\n }\r\n\r\n // Story files not implemented yet\r\n const storyPath = undefined;\r\n\r\n return {\r\n success: true,\r\n componentName,\r\n outputPath,\r\n typesPath,\r\n testPath,\r\n storyPath,\r\n linesOfCode: result.metadata.linesOfCode,\r\n };\r\n } catch (writeError) {\r\n const errorMessage = writeError instanceof Error ? writeError.message : String(writeError);\r\n return {\r\n success: false,\r\n error: `Failed to write files: ${errorMessage}`,\r\n };\r\n }\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n return {\r\n success: false,\r\n error: errorMessage,\r\n };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// ARGUMENT PARSING\r\n// ============================================================================\r\n\r\n/**\r\n * Parse generate command arguments\r\n *\r\n * @param args - CLI arguments\r\n * @returns Parsed generate options\r\n * @throws Error if required arguments are missing or invalid\r\n *\r\n * @example\r\n * ```typescript\r\n * // vibe generate button material-design enterprise -o ./output\r\n * const options = parseGenerateArgs(['button', 'material-design', 'enterprise', '-o', './output']);\r\n * ```\r\n */\r\nexport function parseGenerateArgs(args: string[]): GenerateCommandOptions {\r\n let componentType: ComponentType | undefined;\r\n let designSystem: DesignSystem | undefined;\r\n let tier: Tier | undefined;\r\n let outputDir = './generated';\r\n let dryRun = false;\r\n let includeTypes = true;\r\n let includeTests = true;\r\n let includeStories = false;\r\n const factorOverrides: Partial<Record<FactorId, string>> = {};\r\n\r\n // Valid values\r\n const validComponents = getAllComponentTypes();\r\n const validDesignSystems = getAllDesignSystems();\r\n const validTiers = getAllTiers();\r\n\r\n // Parse arguments\r\n let i = 0;\r\n while (i < args.length) {\r\n const arg = args[i];\r\n\r\n // Skip if arg is undefined\r\n if (arg === undefined) {\r\n i++;\r\n continue;\r\n }\r\n\r\n // Handle options\r\n if (arg.startsWith('-')) {\r\n if (arg === '-o' || arg === '--output') {\r\n outputDir = args[++i] ?? './generated';\r\n } else if (arg === '--dry-run') {\r\n dryRun = true;\r\n } else if (arg === '--no-types') {\r\n includeTypes = false;\r\n } else if (arg === '--no-tests') {\r\n includeTests = false;\r\n } else if (arg === '--with-stories') {\r\n includeStories = true;\r\n } else if (arg.startsWith('--factor-')) {\r\n // Parse factor override: --factor-2=lg\r\n const factorMatch = arg.match(/--factor-(\\d+)=(.+)/);\r\n if (factorMatch !== null) {\r\n const factorId = Number(factorMatch[1]) as FactorId;\r\n const value = factorMatch[2];\r\n if (value !== undefined && factorId >= 1 && factorId <= 24) {\r\n factorOverrides[factorId] = value;\r\n }\r\n }\r\n }\r\n } else {\r\n // Handle positional arguments\r\n if (componentType === undefined) {\r\n if (!validComponents.includes(arg as ComponentType)) {\r\n throw new Error(\r\n `Invalid component type: ${arg}\\n` +\r\n `Valid components: ${validComponents.slice(0, 10).join(', ')}...`\r\n );\r\n }\r\n componentType = arg as ComponentType;\r\n } else if (designSystem === undefined) {\r\n if (!validDesignSystems.includes(arg as DesignSystem)) {\r\n throw new Error(\r\n `Invalid design system: ${arg}\\n` +\r\n `Valid design systems: ${validDesignSystems.join(', ')}`\r\n );\r\n }\r\n designSystem = arg as DesignSystem;\r\n } else if (tier === undefined) {\r\n if (!validTiers.includes(arg as Tier)) {\r\n throw new Error(`Invalid tier: ${arg}\\n` + `Valid tiers: ${validTiers.join(', ')}`);\r\n }\r\n tier = arg as Tier;\r\n }\r\n }\r\n\r\n i++;\r\n }\r\n\r\n // Validate required arguments\r\n if (componentType === undefined) {\r\n throw new Error('Missing required argument: <component>');\r\n }\r\n if (designSystem === undefined) {\r\n throw new Error('Missing required argument: <design-system>');\r\n }\r\n if (tier === undefined) {\r\n throw new Error('Missing required argument: <tier>');\r\n }\r\n\r\n return {\r\n componentType,\r\n designSystem,\r\n tier,\r\n outputDir,\r\n factorOverrides: Object.keys(factorOverrides).length > 0 ? factorOverrides : undefined,\r\n dryRun,\r\n includeTypes,\r\n includeTests,\r\n includeStories,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// VALIDATION\r\n// ============================================================================\r\n\r\n/**\r\n * Validate generate command options\r\n *\r\n * @param options - Options to validate\r\n * @returns Validation result\r\n */\r\nexport function validateGenerateOptions(options: GenerateCommandOptions): {\r\n valid: boolean;\r\n errors: string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n // Validate component type\r\n const validComponents = getAllComponentTypes();\r\n if (!validComponents.includes(options.componentType)) {\r\n errors.push(`Invalid component type: ${options.componentType}`);\r\n }\r\n\r\n // Validate design system\r\n const validDesignSystems = getAllDesignSystems();\r\n if (!validDesignSystems.includes(options.designSystem)) {\r\n errors.push(`Invalid design system: ${options.designSystem}`);\r\n }\r\n\r\n // Validate tier\r\n const validTiers = getAllTiers();\r\n if (!validTiers.includes(options.tier)) {\r\n errors.push(`Invalid tier: ${options.tier}`);\r\n }\r\n\r\n // Validate output directory\r\n if (options.outputDir === '' || options.outputDir === undefined) {\r\n errors.push('Output directory is required');\r\n }\r\n\r\n // Validate factor overrides\r\n if (options.factorOverrides !== undefined) {\r\n for (const [idStr] of Object.entries(options.factorOverrides)) {\r\n const factorId = Number(idStr);\r\n if (factorId < 1 || factorId > 24) {\r\n errors.push(`Invalid factor ID: ${idStr}. Must be between 1 and 24.`);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// UTILITY FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Get available options for CLI help\r\n *\r\n * @returns Available values for each option\r\n */\r\nexport function getAvailableOptions(): {\r\n componentTypes: ComponentType[];\r\n designSystems: DesignSystem[];\r\n tiers: Tier[];\r\n} {\r\n return {\r\n componentTypes: getAllComponentTypes(),\r\n designSystems: getAllDesignSystems(),\r\n tiers: getAllTiers(),\r\n };\r\n}\r\n\r\n/**\r\n * Format component name from input\r\n *\r\n * @param componentType - Component type\r\n * @param designSystem - Design system\r\n * @param tier - Quality tier\r\n * @returns Formatted component name\r\n */\r\nexport function formatComponentName(\r\n componentType: ComponentType,\r\n designSystem: DesignSystem,\r\n tier: Tier\r\n): string {\r\n const capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1);\r\n\r\n const dsFormatted = designSystem.split('-').map(capitalize).join('');\r\n const componentFormatted = componentType.split('-').map(capitalize).join('');\r\n const tierFormatted = capitalize(tier);\r\n\r\n return `${dsFormatted}${componentFormatted}${tierFormatted}`;\r\n}\r\n","/**\r\n * Nikkory Vibe CLI - ASCII Logo\r\n *\r\n * @packageDocumentation\r\n * @module cli/logo\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * ANSI color codes\r\n */\r\nconst YELLOW = '\\x1b[38;2;252;184;0m';\r\nconst RESET = '\\x1b[0m';\r\n\r\n/**\r\n * ASCII art logo for Nikkory Vibe\r\n */\r\nexport const NIKKORY_LOGO = [\r\n '███╗ ██╗██╗██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗',\r\n '████╗ ██║██║██║ ██╔╝██║ ██╔╝██╔═══██╗██╔══██╗╚██╗ ██╔╝',\r\n '██╔██╗ ██║██║█████╔╝ █████╔╝ ██║ ██║██████╔╝ ╚████╔╝',\r\n '██║╚██╗██║██║██╔═██╗ ██╔═██╗ ██║ ██║██╔══██╗ ╚██╔╝',\r\n '██║ ╚████║██║██║ ██╗██║ ██╗╚██████╔╝██║ ██║ ██║',\r\n '╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝',\r\n '',\r\n ` ${YELLOW}██╗ ██╗██╗██████╗ ███████╗${RESET}`,\r\n ` ${YELLOW}██║ ██║██║██╔══██╗██╔════╝${RESET}`,\r\n ` ${YELLOW}██║ ██║██║██████╔╝█████╗${RESET}`,\r\n ` ${YELLOW}╚██╗ ██╔╝██║██╔══██╗██╔══╝${RESET}`,\r\n ` ${YELLOW} ╚████╔╝ ██║██████╔╝███████╗${RESET}`,\r\n ` ${YELLOW} ╚═══╝ ╚═╝╚═════╝ ╚══════╝${RESET}`,\r\n '',\r\n ` ${YELLOW}✨ Happy Together ✨${RESET}`,\r\n '',\r\n ` ${YELLOW}Zero-Token UI/UX Code Generation${RESET}`,\r\n ` ${YELLOW}Intelligent Component Design System${RESET}`,\r\n '',\r\n ` ${YELLOW}https://nikkory.com${RESET}`,\r\n].join('\\n');\r\n\r\n/**\r\n * Compact version of the logo (for inline use)\r\n */\r\nexport const NIKKORY_COMPACT = `\r\n╔═══════════════════════════════════════════╗\r\n║ NIKKORY VIBE v4.0.1 ║\r\n║ Zero-Token Code Generation ║\r\n║ https://nikkory.com ║\r\n╚═══════════════════════════════════════════╝\r\n`;\r\n\r\n/**\r\n * Single-line version (for banners)\r\n */\r\nexport const NIKKORY_BANNER = `${YELLOW}🚀 NIKKORY VIBE${RESET} v4.0.1 - Zero-Token UI/UX Code Generation`;\r\n\r\n/**\r\n * Print logo to console\r\n */\r\nexport function printLogo(): void {\r\n console.log(NIKKORY_LOGO);\r\n}\r\n\r\n/**\r\n * Print compact logo to console\r\n */\r\nexport function printCompact(): void {\r\n console.log(NIKKORY_COMPACT);\r\n}\r\n\r\n/**\r\n * Print banner to console\r\n */\r\nexport function printBanner(): void {\r\n console.log(NIKKORY_BANNER);\r\n}\r\n","#!/usr/bin/env node\r\n/**\r\n * Nikkory Vibe CLI\r\n * Command-line interface for the Algorithm Engine\r\n *\r\n * @packageDocumentation\r\n * @module cli\r\n * @since 4.0.0\r\n *\r\n * Usage:\r\n * vibe generate component button material-design enterprise\r\n * vibe generate --batch --ds material-design\r\n * vibe --help\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { BatchCommand, parseBatchArgs } from './batch-command';\r\nimport { generateCommand, parseGenerateArgs } from './generate-command';\r\nimport { NIKKORY_LOGO, NIKKORY_BANNER } from './logo';\r\n\r\n// ============================================================================\r\n// TYPES\r\n// ============================================================================\r\n\r\n/**\r\n * CLI Command result\r\n */\r\nexport interface CommandResult {\r\n readonly success: boolean;\r\n readonly message: string;\r\n readonly data?: unknown;\r\n}\r\n\r\n// ============================================================================\r\n// HELP TEXT\r\n// ============================================================================\r\n\r\nconst HELP_TEXT = `${NIKKORY_LOGO}\r\n\r\nUSAGE:\r\n vibe <command> [options]\r\n\r\nCOMMANDS:\r\n generate Generate a single component\r\n batch Generate multiple components\r\n\r\nGENERATE:\r\n vibe generate <component> <design-system> <tier> [options]\r\n\r\n Arguments:\r\n <component> Component type (button, card, input, etc.)\r\n <design-system> Design system (material-design, ios-hig, brutalism, etc.)\r\n <tier> Quality tier (basic, standard, enterprise)\r\n\r\n Options:\r\n -o, --output Output directory (default: ./generated)\r\n --factor-N=value Override factor N with custom value\r\n --dry-run Preview without writing files\r\n --no-types Skip TypeScript types file\r\n --no-tests Skip test file\r\n --with-stories Include Storybook stories\r\n\r\nBATCH:\r\n vibe batch [options]\r\n\r\n Options:\r\n -o, --output Output directory (required)\r\n -c, --components Component types to generate (comma-separated, default: all)\r\n --ds Design systems to generate (comma-separated, default: all)\r\n -t, --tiers Tiers to generate (comma-separated, default: all)\r\n --overwrite Overwrite existing files\r\n --dry-run Preview without writing files\r\n -v, --verbose Verbose output\r\n\r\nEXAMPLES:\r\n # Generate enterprise button with Material Design\r\n vibe generate button material-design enterprise\r\n\r\n # Generate with custom factor overrides\r\n vibe generate button material-design enterprise --factor-2=lg --factor-3=outlined\r\n\r\n # Batch generate all components for Material Design\r\n vibe batch -o ./generated --ds material-design\r\n\r\n # Batch generate specific components\r\n vibe batch -o ./generated -c button,card,input --ds material-design -t standard,enterprise\r\n\r\nDESIGN SYSTEMS:\r\n material-design Google Material Design 3\r\n ios-hig Apple Human Interface Guidelines\r\n glassmorphism Frosted glass effect\r\n neumorphism Soft UI with shadows\r\n brutalism Bold, raw aesthetic\r\n minimalism Clean, simple design\r\n cyberpunk Neon futuristic style\r\n flat-design Microsoft Metro style\r\n retro-vintage Classic nostalgic look\r\n fluent-design Microsoft Fluent UI\r\n carbon-design IBM Carbon Design\r\n ant-design Ant Design System\r\n\r\nTIERS:\r\n basic Core functionality (30-50 LOC)\r\n standard + forwardRef, variants (50-150 LOC)\r\n enterprise + memo, analytics, ARIA (150-300 LOC)\r\n\r\nVERSION:\r\n 4.0.1\r\n\r\nPowered by Nikkory\r\n`.trim();\r\n\r\nconst VERSION = '4.0.1';\r\n\r\n// ============================================================================\r\n// CLI FUNCTIONS\r\n// ============================================================================\r\n\r\n/**\r\n * Print help text\r\n */\r\nfunction printHelp(): void {\r\n console.log(HELP_TEXT);\r\n}\r\n\r\n/**\r\n * Print version\r\n */\r\nfunction printVersion(): void {\r\n console.log(NIKKORY_BANNER);\r\n}\r\n\r\n/**\r\n * Main CLI entry point\r\n *\r\n * @param args - Command line arguments (process.argv.slice(2))\r\n * @returns Command result\r\n */\r\nexport function main(args: string[]): CommandResult {\r\n // Handle empty args\r\n if (args.length === 0) {\r\n printHelp();\r\n return { success: true, message: 'Displayed help' };\r\n }\r\n\r\n // Handle help flags\r\n if (args.includes('--help') || args.includes('-h')) {\r\n printHelp();\r\n return { success: true, message: 'Displayed help' };\r\n }\r\n\r\n // Handle version flags\r\n if (args.includes('--version') || args.includes('-V')) {\r\n printVersion();\r\n return { success: true, message: `Version ${VERSION}` };\r\n }\r\n\r\n // Get command\r\n const command = args[0];\r\n const commandArgs = args.slice(1);\r\n\r\n switch (command) {\r\n case 'generate':\r\n case 'gen':\r\n case 'g':\r\n return handleGenerate(commandArgs);\r\n\r\n case 'batch':\r\n case 'b':\r\n return handleBatch(commandArgs);\r\n\r\n case 'help':\r\n printHelp();\r\n return { success: true, message: 'Displayed help' };\r\n\r\n case 'version':\r\n printVersion();\r\n return { success: true, message: `Version ${VERSION}` };\r\n\r\n default:\r\n console.error(`Unknown command: ${command}`);\r\n console.log('Run \"vibe --help\" for usage information.');\r\n return { success: false, message: `Unknown command: ${command}` };\r\n }\r\n}\r\n\r\n/**\r\n * Handle generate command\r\n */\r\nfunction handleGenerate(args: string[]): CommandResult {\r\n if (args.length === 0 || args.includes('--help') || args.includes('-h')) {\r\n console.log(`\r\nGENERATE COMMAND\r\n━━━━━━━━━━━━━━━━\r\n\r\nUsage:\r\n vibe generate <component> <design-system> <tier> [options]\r\n\r\nArguments:\r\n <component> Component type (button, card, input, etc.)\r\n <design-system> Design system (material-design, ios-hig, etc.)\r\n <tier> Quality tier (basic, standard, enterprise)\r\n\r\nOptions:\r\n -o, --output Output directory (default: ./generated)\r\n --factor-N=value Override factor N with custom value\r\n --dry-run Preview without writing files\r\n --no-types Skip TypeScript types file\r\n --no-tests Skip test file\r\n --with-stories Include Storybook stories\r\n\r\nExamples:\r\n vibe generate button material-design enterprise\r\n vibe generate card ios-hig standard -o ./src/components\r\n vibe generate button brutalism enterprise --factor-2=lg\r\n`);\r\n return { success: true, message: 'Displayed generate help' };\r\n }\r\n\r\n try {\r\n const options = parseGenerateArgs(args);\r\n const result = generateCommand(options);\r\n\r\n if (result.success) {\r\n console.log('✅ Component generated successfully!');\r\n console.log(` Component: ${result.componentName}`);\r\n console.log(` Output: ${result.outputPath}`);\r\n console.log(` LOC: ${result.linesOfCode}`);\r\n\r\n if (result.typesPath !== undefined) {\r\n console.log(` Types: ${result.typesPath}`);\r\n }\r\n if (result.testPath !== undefined) {\r\n console.log(` Tests: ${result.testPath}`);\r\n }\r\n\r\n return {\r\n success: true,\r\n message: `Generated ${result.componentName}`,\r\n data: result,\r\n };\r\n } else {\r\n console.error(`❌ Generation failed: ${result.error}`);\r\n return { success: false, message: result.error ?? 'Unknown error' };\r\n }\r\n } catch (error) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n console.error(`❌ Error: ${message}`);\r\n return { success: false, message };\r\n }\r\n}\r\n\r\n/**\r\n * Handle batch command\r\n */\r\nfunction handleBatch(args: string[]): CommandResult {\r\n if (args.includes('--help') || args.includes('-h')) {\r\n console.log(`\r\nBATCH COMMAND\r\n━━━━━━━━━━━━━\r\n\r\nUsage:\r\n vibe batch [options]\r\n\r\nOptions:\r\n -o, --output Output directory (required)\r\n -c, --components Component types to generate (comma-separated)\r\n --ds Design systems to generate (comma-separated)\r\n -t, --tiers Tiers to generate (comma-separated)\r\n --overwrite Overwrite existing files\r\n --dry-run Preview without writing files\r\n -v, --verbose Verbose output\r\n\r\nExamples:\r\n vibe batch -o ./generated\r\n vibe batch -o ./generated --ds material-design,ios-hig\r\n vibe batch -o ./generated -c button,card,input -t enterprise\r\n`);\r\n return { success: true, message: 'Displayed batch help' };\r\n }\r\n\r\n try {\r\n const options = parseBatchArgs(args);\r\n\r\n if (options.outputDir === undefined || options.outputDir === '') {\r\n console.error('❌ Output directory is required. Use -o or --output.');\r\n return { success: false, message: 'Output directory required' };\r\n }\r\n\r\n const command = new BatchCommand();\r\n\r\n // Validate options\r\n const validation = command.validateOptions({\r\n outputDir: options.outputDir,\r\n components: options.components,\r\n designSystems: options.designSystems,\r\n tiers: options.tiers,\r\n overwrite: options.overwrite,\r\n dryRun: options.dryRun,\r\n verbose: options.verbose,\r\n });\r\n\r\n if (!validation.valid) {\r\n console.error('❌ Validation failed:');\r\n for (const error of validation.errors) {\r\n console.error(` • ${error}`);\r\n }\r\n return { success: false, message: validation.errors.join('; ') };\r\n }\r\n\r\n // Show warnings\r\n for (const warning of validation.warnings) {\r\n console.warn(`⚠️ ${warning}`);\r\n }\r\n\r\n // Get estimate\r\n const estimate = command.getEstimatedCount(options);\r\n console.log(`\\n📦 Batch Generation`);\r\n console.log(` Components: ${estimate.components}`);\r\n console.log(` Design Systems: ${estimate.designSystems}`);\r\n console.log(` Tiers: ${estimate.tiers}`);\r\n console.log(` Total: ${estimate.total} components\\n`);\r\n\r\n if (options.dryRun === true) {\r\n console.log('🔍 Dry run mode - no files will be written\\n');\r\n }\r\n\r\n // Execute\r\n const result = command.execute(\r\n {\r\n outputDir: options.outputDir,\r\n components: options.components,\r\n designSystems: options.designSystems,\r\n tiers: options.tiers,\r\n overwrite: options.overwrite ?? false,\r\n dryRun: options.dryRun ?? false,\r\n verbose: options.verbose ?? false,\r\n },\r\n (current, total, item) => {\r\n if (options.verbose === true) {\r\n const status = item.success ? '✅' : '❌';\r\n console.log(`[${current}/${total}] ${status} ${item.componentId}`);\r\n } else {\r\n // Progress bar\r\n const percent = Math.round((current / total) * 100);\r\n const bar =\r\n '█'.repeat(Math.floor(percent / 5)) + '░'.repeat(20 - Math.floor(percent / 5));\r\n process.stdout.write(`\\r[${bar}] ${percent}% (${current}/${total})`);\r\n }\r\n }\r\n );\r\n\r\n console.log('\\n');\r\n\r\n if (result.failed === 0) {\r\n console.log('✅ Batch generation complete!');\r\n } else {\r\n console.log('⚠️ Batch generation completed with errors.');\r\n }\r\n\r\n console.log(` Total: ${result.total}`);\r\n console.log(` Successful: ${result.successful}`);\r\n console.log(` Failed: ${result.failed}`);\r\n console.log(` Total LOC: ${result.totalLinesOfCode.toLocaleString()}`);\r\n console.log(` Duration: ${(result.durationMs / 1000).toFixed(2)}s`);\r\n\r\n return {\r\n success: result.failed === 0,\r\n message: `Generated ${result.successful}/${result.total} components`,\r\n data: result,\r\n };\r\n } catch (error) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n console.error(`❌ Error: ${message}`);\r\n return { success: false, message };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// EXPORTS\r\n// ============================================================================\r\n\r\nexport { generateCommand, parseGenerateArgs } from './generate-command';\r\nexport { BatchCommand, parseBatchArgs, executeBatch, getBatchEstimate } from './batch-command';\r\n\r\n// ============================================================================\r\n// MAIN EXECUTION\r\n// ============================================================================\r\n\r\n// Run CLI if called directly\r\nif (typeof process !== 'undefined' && process.argv.length > 1) {\r\n // Check if this is the main module being executed\r\n const isMainModule =\r\n process.argv[1]?.endsWith('cli/index.ts') === true ||\r\n process.argv[1]?.endsWith('cli/index.js') === true ||\r\n process.argv[1]?.includes('vibe') === true;\r\n\r\n if (isMainModule) {\r\n const result = main(process.argv.slice(2));\r\n process.exit(result.success ? 0 : 1);\r\n }\r\n}\r\n","/**\r\n * Result Type - Railway-Oriented Programming\r\n *\r\n * Functional error handling without exceptions.\r\n * Represents either a successful value or an error.\r\n *\r\n * @example\r\n * ```ts\r\n * function divide(a: number, b: number): Result<number, Error> {\r\n * if (b === 0) {\r\n * return Result.fail(new Error('Division by zero'));\r\n * }\r\n * return Result.ok(a / b);\r\n * }\r\n *\r\n * const result = divide(10, 2);\r\n * if (result.isSuccess()) {\r\n * console.log('Value:', result.getValue()); // 5\r\n * } else {\r\n * console.error('Error:', result.getError());\r\n * }\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nexport class Result<T, E = Error> {\r\n private constructor(\r\n private readonly success: boolean,\r\n private readonly value?: T,\r\n private readonly error?: E\r\n ) {}\r\n\r\n /**\r\n * Create a successful Result\r\n *\r\n * @param value - The success value\r\n * @returns Result containing the value\r\n */\r\n static ok<T, E = Error>(value?: T): Result<T, E> {\r\n return new Result<T, E>(true, value);\r\n }\r\n\r\n /**\r\n * Create a failed Result\r\n *\r\n * @param error - The error\r\n * @returns Result containing the error\r\n */\r\n static fail<T, E = Error>(error: E): Result<T, E> {\r\n return new Result<T, E>(false, undefined, error);\r\n }\r\n\r\n /**\r\n * Check if Result is successful\r\n */\r\n isSuccess(): boolean {\r\n return this.success;\r\n }\r\n\r\n /**\r\n * Check if Result is failure\r\n */\r\n isFailure(): boolean {\r\n return !this.success;\r\n }\r\n\r\n /**\r\n * Get the value (throws if failure)\r\n *\r\n * @throws {Error} If Result is a failure\r\n */\r\n getValue(): T {\r\n if (!this.success || this.value === undefined) {\r\n throw new Error('Cannot get value from failed Result');\r\n }\r\n return this.value;\r\n }\r\n\r\n /**\r\n * Get the error (throws if success)\r\n *\r\n * @throws {Error} If Result is a success\r\n */\r\n getError(): E {\r\n if (this.success || this.error === undefined) {\r\n throw new Error('Cannot get error from successful Result');\r\n }\r\n return this.error;\r\n }\r\n\r\n /**\r\n * Get value or default\r\n *\r\n * @param defaultValue - Value to return if Result is failure\r\n */\r\n getOrElse(defaultValue: T): T {\r\n return this.success && this.value !== undefined ? this.value : defaultValue;\r\n }\r\n\r\n /**\r\n * Get value or compute default\r\n *\r\n * @param fn - Function to compute default value\r\n */\r\n getOrElseCompute(fn: (error: E) => T): T {\r\n if (this.success && this.value !== undefined) {\r\n return this.value;\r\n }\r\n return fn(this.error!);\r\n }\r\n\r\n /**\r\n * Map the value if successful\r\n *\r\n * @param fn - Mapping function\r\n * @returns New Result with mapped value\r\n */\r\n map<U>(fn: (value: T) => U): Result<U, E> {\r\n if (this.success && this.value !== undefined) {\r\n return Result.ok(fn(this.value));\r\n }\r\n return Result.fail(this.error!);\r\n }\r\n\r\n /**\r\n * Map the error if failure\r\n *\r\n * @param fn - Error mapping function\r\n * @returns New Result with mapped error\r\n */\r\n mapError<F>(fn: (error: E) => F): Result<T, F> {\r\n if (this.success) {\r\n return Result.ok(this.value);\r\n }\r\n return Result.fail(fn(this.error!));\r\n }\r\n\r\n /**\r\n * Flat map (chain) operations\r\n *\r\n * @param fn - Function returning a Result\r\n * @returns Flattened Result\r\n */\r\n flatMap<U>(fn: (value: T) => Result<U, E>): Result<U, E> {\r\n if (this.success && this.value !== undefined) {\r\n return fn(this.value);\r\n }\r\n return Result.fail(this.error!);\r\n }\r\n\r\n /**\r\n * Execute callback if successful\r\n *\r\n * @param fn - Callback function\r\n * @returns This Result for chaining\r\n */\r\n onSuccess(fn: (value: T) => void): Result<T, E> {\r\n if (this.success && this.value !== undefined) {\r\n fn(this.value);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Execute callback if failure\r\n *\r\n * @param fn - Callback function\r\n * @returns This Result for chaining\r\n */\r\n onFailure(fn: (error: E) => void): Result<T, E> {\r\n if (!this.success && this.error !== undefined) {\r\n fn(this.error);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Match pattern for Result\r\n *\r\n * @param patterns - Success and failure handlers\r\n * @returns Result of the matched pattern\r\n */\r\n match<U>(patterns: {\r\n ok: (value: T) => U;\r\n fail: (error: E) => U;\r\n }): U {\r\n if (this.success && this.value !== undefined) {\r\n return patterns.ok(this.value);\r\n }\r\n return patterns.fail(this.error!);\r\n }\r\n\r\n /**\r\n * Convert Result to JSON\r\n */\r\n toJSON(): object {\r\n return {\r\n success: this.success,\r\n value: this.value,\r\n error: this.error,\r\n };\r\n }\r\n\r\n /**\r\n * Combine multiple Results\r\n *\r\n * @param results - Array of Results\r\n * @returns Result containing array of values or first error\r\n */\r\n static combine<T, E = Error>(results: Result<T, E>[]): Result<T[], E> {\r\n const values: T[] = [];\r\n\r\n for (const result of results) {\r\n if (result.isFailure()) {\r\n return Result.fail(result.getError());\r\n }\r\n values.push(result.getValue());\r\n }\r\n\r\n return Result.ok(values);\r\n }\r\n\r\n /**\r\n * Try to execute a function and wrap result\r\n *\r\n * @param fn - Function to execute\r\n * @returns Result wrapping the function result or error\r\n */\r\n static try<T>(fn: () => T): Result<T, Error> {\r\n try {\r\n return Result.ok(fn());\r\n } catch (error) {\r\n return Result.fail(error instanceof Error ? error : new Error(String(error)));\r\n }\r\n }\r\n\r\n /**\r\n * Try to execute an async function and wrap result\r\n *\r\n * @param fn - Async function to execute\r\n * @returns Promise of Result wrapping the function result or error\r\n */\r\n static async tryAsync<T>(fn: () => Promise<T>): Promise<Result<T, Error>> {\r\n try {\r\n const value = await fn();\r\n return Result.ok(value);\r\n } catch (error) {\r\n return Result.fail(error instanceof Error ? error : new Error(String(error)));\r\n }\r\n }\r\n}\r\n","/**\r\n * Option Type - Null Safety\r\n *\r\n * Represents a value that may or may not exist.\r\n * Eliminates null/undefined errors at compile time.\r\n *\r\n * @example\r\n * ```ts\r\n * function findUser(id: string): Option<User> {\r\n * const user = database.find(id);\r\n * return Option.of(user);\r\n * }\r\n *\r\n * const userOption = findUser('123');\r\n * const userName = userOption\r\n * .map(user => user.name)\r\n * .getOrElse('Anonymous');\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nexport class Option<T> {\r\n private constructor(private readonly value?: T) {}\r\n\r\n /**\r\n * Create Option from value\r\n * Returns Some if value exists, None if null/undefined\r\n *\r\n * @param value - Value to wrap\r\n * @returns Option containing the value or None\r\n */\r\n static of<T>(value?: T | null): Option<T> {\r\n return value !== null && value !== undefined\r\n ? new Option(value)\r\n : new Option<T>();\r\n }\r\n\r\n /**\r\n * Create Some (value exists)\r\n *\r\n * @param value - The value\r\n * @returns Option containing the value\r\n */\r\n static some<T>(value: T): Option<T> {\r\n return new Option(value);\r\n }\r\n\r\n /**\r\n * Create None (no value)\r\n *\r\n * @returns Empty Option\r\n */\r\n static none<T>(): Option<T> {\r\n return new Option<T>();\r\n }\r\n\r\n /**\r\n * Check if value exists (Some)\r\n */\r\n isSome(): boolean {\r\n return this.value !== undefined;\r\n }\r\n\r\n /**\r\n * Check if value doesn't exist (None)\r\n */\r\n isNone(): boolean {\r\n return this.value === undefined;\r\n }\r\n\r\n /**\r\n * Get the value (throws if None)\r\n *\r\n * @throws {Error} If Option is None\r\n */\r\n get(): T {\r\n if (this.value === undefined) {\r\n throw new Error('Cannot get value from None');\r\n }\r\n return this.value;\r\n }\r\n\r\n /**\r\n * Get value or default\r\n *\r\n * @param defaultValue - Value to return if None\r\n */\r\n getOrElse(defaultValue: T): T {\r\n return this.value ?? defaultValue;\r\n }\r\n\r\n /**\r\n * Get value or compute default\r\n *\r\n * @param fn - Function to compute default value\r\n */\r\n getOrElseCompute(fn: () => T): T {\r\n return this.value ?? fn();\r\n }\r\n\r\n /**\r\n * Get value or throw custom error\r\n *\r\n * @param error - Error to throw if None\r\n * @throws {E} If Option is None\r\n */\r\n getOrThrow<E extends Error>(error: E): T {\r\n if (this.value === undefined) {\r\n throw error;\r\n }\r\n return this.value;\r\n }\r\n\r\n /**\r\n * Get value or null\r\n */\r\n getOrNull(): T | null {\r\n return this.value ?? null;\r\n }\r\n\r\n /**\r\n * Get value or undefined\r\n */\r\n getOrUndefined(): T | undefined {\r\n return this.value;\r\n }\r\n\r\n /**\r\n * Map value if exists\r\n *\r\n * @param fn - Mapping function\r\n * @returns New Option with mapped value or None\r\n */\r\n map<U>(fn: (value: T) => U): Option<U> {\r\n return this.value !== undefined\r\n ? Option.some(fn(this.value))\r\n : Option.none();\r\n }\r\n\r\n /**\r\n * Flat map (chain) operations\r\n *\r\n * @param fn - Function returning an Option\r\n * @returns Flattened Option\r\n */\r\n flatMap<U>(fn: (value: T) => Option<U>): Option<U> {\r\n return this.value !== undefined ? fn(this.value) : Option.none();\r\n }\r\n\r\n /**\r\n * Filter by predicate\r\n *\r\n * @param predicate - Test function\r\n * @returns This Option if predicate passes, None otherwise\r\n */\r\n filter(predicate: (value: T) => boolean): Option<T> {\r\n return this.value !== undefined && predicate(this.value)\r\n ? this\r\n : Option.none();\r\n }\r\n\r\n /**\r\n * Execute callback if Some\r\n *\r\n * @param fn - Callback function\r\n * @returns This Option for chaining\r\n */\r\n onSome(fn: (value: T) => void): Option<T> {\r\n if (this.value !== undefined) {\r\n fn(this.value);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Execute callback if None\r\n *\r\n * @param fn - Callback function\r\n * @returns This Option for chaining\r\n */\r\n onNone(fn: () => void): Option<T> {\r\n if (this.value === undefined) {\r\n fn();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Match pattern for Option\r\n *\r\n * @param patterns - Some and None handlers\r\n * @returns Result of the matched pattern\r\n */\r\n match<U>(patterns: {\r\n some: (value: T) => U;\r\n none: () => U;\r\n }): U {\r\n if (this.value !== undefined) {\r\n return patterns.some(this.value);\r\n }\r\n return patterns.none();\r\n }\r\n\r\n /**\r\n * Provide alternative Option if None\r\n *\r\n * @param alternative - Alternative Option\r\n * @returns This Option if Some, alternative if None\r\n */\r\n or(alternative: Option<T>): Option<T> {\r\n return this.value !== undefined ? this : alternative;\r\n }\r\n\r\n /**\r\n * Provide alternative Option computed lazily\r\n *\r\n * @param fn - Function returning alternative Option\r\n * @returns This Option if Some, computed alternative if None\r\n */\r\n orElse(fn: () => Option<T>): Option<T> {\r\n return this.value !== undefined ? this : fn();\r\n }\r\n\r\n /**\r\n * Zip two Options together\r\n *\r\n * @param other - Other Option\r\n * @returns Option containing tuple of both values or None\r\n */\r\n zip<U>(other: Option<U>): Option<[T, U]> {\r\n if (this.value !== undefined && other.isSome()) {\r\n return Option.some([this.value, other.get()]);\r\n }\r\n return Option.none();\r\n }\r\n\r\n /**\r\n * Convert Option to array\r\n *\r\n * @returns Array with value if Some, empty array if None\r\n */\r\n toArray(): T[] {\r\n return this.value !== undefined ? [this.value] : [];\r\n }\r\n\r\n /**\r\n * Convert Option to JSON\r\n */\r\n toJSON(): object {\r\n return {\r\n isSome: this.isSome(),\r\n value: this.value,\r\n };\r\n }\r\n\r\n /**\r\n * Try to execute a function and wrap result\r\n *\r\n * @param fn - Function to execute\r\n * @returns Option containing result or None if error\r\n */\r\n static try<T>(fn: () => T): Option<T> {\r\n try {\r\n return Option.of(fn());\r\n } catch {\r\n return Option.none();\r\n }\r\n }\r\n\r\n /**\r\n * Combine multiple Options\r\n *\r\n * @param options - Array of Options\r\n * @returns Option containing array of values or None if any is None\r\n */\r\n static combine<T>(options: Option<T>[]): Option<T[]> {\r\n const values: T[] = [];\r\n\r\n for (const option of options) {\r\n if (option.isNone()) {\r\n return Option.none();\r\n }\r\n values.push(option.get());\r\n }\r\n\r\n return Option.some(values);\r\n }\r\n}\r\n","/**\r\n * Component Types Constants\r\n *\r\n * All supported component types in Nikkory Vibe Library.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Basic UI Components\r\n */\r\nexport const BASIC_COMPONENTS = [\r\n 'button',\r\n 'input',\r\n 'textarea',\r\n 'checkbox',\r\n 'radio',\r\n 'select',\r\n 'switch',\r\n 'slider',\r\n] as const;\r\n\r\n/**\r\n * Layout Components\r\n */\r\nexport const LAYOUT_COMPONENTS = [\r\n 'card',\r\n 'container',\r\n 'grid',\r\n 'flex',\r\n 'stack',\r\n 'divider',\r\n 'spacer',\r\n] as const;\r\n\r\n/**\r\n * Navigation Components\r\n */\r\nexport const NAVIGATION_COMPONENTS = [\r\n 'navbar',\r\n 'sidebar',\r\n 'breadcrumb',\r\n 'tabs',\r\n 'pagination',\r\n 'menu',\r\n 'dropdown',\r\n] as const;\r\n\r\n/**\r\n * Feedback Components\r\n */\r\nexport const FEEDBACK_COMPONENTS = [\r\n 'modal',\r\n 'dialog',\r\n 'toast',\r\n 'alert',\r\n 'spinner',\r\n 'skeleton',\r\n 'progress',\r\n] as const;\r\n\r\n/**\r\n * Data Display Components\r\n */\r\nexport const DATA_DISPLAY_COMPONENTS = [\r\n 'table',\r\n 'list',\r\n 'avatar',\r\n 'badge',\r\n 'chip',\r\n 'tag',\r\n 'tooltip',\r\n] as const;\r\n\r\n/**\r\n * Form Components\r\n */\r\nexport const FORM_COMPONENTS = [\r\n 'form',\r\n 'form-field',\r\n 'date-picker',\r\n 'time-picker',\r\n 'file-upload',\r\n 'color-picker',\r\n 'autocomplete',\r\n] as const;\r\n\r\n/**\r\n * Advanced Components\r\n */\r\nexport const ADVANCED_COMPONENTS = [\r\n 'accordion',\r\n 'carousel',\r\n 'stepper',\r\n 'timeline',\r\n 'tree-view',\r\n 'data-grid',\r\n 'virtualized-list',\r\n] as const;\r\n\r\n/**\r\n * All Component Types\r\n */\r\nexport const ALL_COMPONENT_TYPES = [\r\n ...BASIC_COMPONENTS,\r\n ...LAYOUT_COMPONENTS,\r\n ...NAVIGATION_COMPONENTS,\r\n ...FEEDBACK_COMPONENTS,\r\n ...DATA_DISPLAY_COMPONENTS,\r\n ...FORM_COMPONENTS,\r\n ...ADVANCED_COMPONENTS,\r\n] as const;\r\n\r\n/**\r\n * Alias for backward compatibility\r\n * @deprecated Use ALL_COMPONENT_TYPES instead\r\n */\r\nexport const CURRENT_COMPONENT_TYPES = ALL_COMPONENT_TYPES;\r\n\r\n/**\r\n * Component Type Union\r\n */\r\nexport type ComponentType = (typeof ALL_COMPONENT_TYPES)[number];\r\n\r\n/**\r\n * Component Category\r\n */\r\nexport type ComponentCategory =\r\n | 'basic'\r\n | 'layout'\r\n | 'navigation'\r\n | 'feedback'\r\n | 'data-display'\r\n | 'form'\r\n | 'advanced';\r\n\r\n/**\r\n * Component Category Map\r\n */\r\nexport const COMPONENT_CATEGORIES: Record<ComponentCategory, readonly string[]> = {\r\n basic: BASIC_COMPONENTS,\r\n layout: LAYOUT_COMPONENTS,\r\n navigation: NAVIGATION_COMPONENTS,\r\n feedback: FEEDBACK_COMPONENTS,\r\n 'data-display': DATA_DISPLAY_COMPONENTS,\r\n form: FORM_COMPONENTS,\r\n advanced: ADVANCED_COMPONENTS,\r\n};\r\n\r\n/**\r\n * Get category for a component type\r\n */\r\nexport function getComponentCategory(componentType: string): ComponentCategory | undefined {\r\n for (const [category, components] of Object.entries(COMPONENT_CATEGORIES)) {\r\n if ((components).includes(componentType)) {\r\n return category as ComponentCategory;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Check if a string is a valid component type\r\n */\r\nexport function isValidComponentType(type: string): type is ComponentType {\r\n return (ALL_COMPONENT_TYPES as readonly string[]).includes(type);\r\n}\r\n","/**\r\n * Design Systems Constants\r\n *\r\n * All supported design systems in Nikkory Vibe.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Current Design Systems (Implemented)\r\n */\r\nexport const CURRENT_DESIGN_SYSTEMS = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n 'cyberpunk',\r\n 'flat-design',\r\n 'retro-vintage',\r\n 'fluent-design',\r\n 'carbon-design',\r\n 'ant-design',\r\n] as const;\r\n\r\n/**\r\n * Planned Design Systems (Future)\r\n */\r\nexport const PLANNED_DESIGN_SYSTEMS = [\r\n 'skeuomorphism',\r\n 'art-deco',\r\n 'memphis',\r\n 'bauhaus',\r\n 'swiss-design',\r\n 'organic-natural',\r\n 'futuristic',\r\n 'handcrafted',\r\n 'corporate',\r\n 'playful',\r\n 'elegant',\r\n 'dark-mode',\r\n 'high-contrast',\r\n 'accessibility-first',\r\n 'dashboard',\r\n 'e-commerce',\r\n 'social-media',\r\n 'gaming',\r\n 'healthcare',\r\n 'fintech',\r\n 'education',\r\n] as const;\r\n\r\n/**\r\n * All Design Systems (Current + Planned)\r\n */\r\nexport const ALL_DESIGN_SYSTEMS = [...CURRENT_DESIGN_SYSTEMS, ...PLANNED_DESIGN_SYSTEMS] as const;\r\n\r\n/**\r\n * Design System Union Type\r\n */\r\nexport type DesignSystem = (typeof CURRENT_DESIGN_SYSTEMS)[number];\r\n\r\n/**\r\n * All Design System Union Type (including planned)\r\n */\r\nexport type AllDesignSystem = (typeof ALL_DESIGN_SYSTEMS)[number];\r\n\r\n/**\r\n * Design System Metadata\r\n */\r\nexport interface DesignSystemInfo {\r\n id: DesignSystem;\r\n name: string;\r\n description: string;\r\n characteristics: string[];\r\n colorPalette: {\r\n primary: string;\r\n secondary: string;\r\n accent: string;\r\n background: string;\r\n };\r\n typography: {\r\n fontFamily: string;\r\n headingWeight: number;\r\n bodyWeight: number;\r\n };\r\n}\r\n\r\n/**\r\n * Design System Metadata Map\r\n */\r\nexport const DESIGN_SYSTEM_INFO: Record<DesignSystem, DesignSystemInfo> = {\r\n 'material-design': {\r\n id: 'material-design',\r\n name: 'Material Design 3',\r\n description: \"Google's design system emphasizing depth, motion, and bold colors\",\r\n characteristics: ['Elevation shadows', 'Ripple effects', 'Bold typography', 'Vibrant colors'],\r\n colorPalette: {\r\n primary: '#6750A4',\r\n secondary: '#625B71',\r\n accent: '#7D5260',\r\n background: '#FFFBFE',\r\n },\r\n typography: {\r\n fontFamily: 'Roboto, sans-serif',\r\n headingWeight: 500,\r\n bodyWeight: 400,\r\n },\r\n },\r\n 'ios-hig': {\r\n id: 'ios-hig',\r\n name: 'iOS Human Interface Guidelines',\r\n description: \"Apple's design language focusing on clarity, deference, and depth\",\r\n characteristics: [\r\n 'SF Pro typography',\r\n 'Vibrancy effects',\r\n 'Subtle animations',\r\n 'Clean layouts',\r\n ],\r\n colorPalette: {\r\n primary: '#007AFF',\r\n secondary: '#5856D6',\r\n accent: '#FF2D55',\r\n background: '#F2F2F7',\r\n },\r\n typography: {\r\n fontFamily: '-apple-system, BlinkMacSystemFont, sans-serif',\r\n headingWeight: 600,\r\n bodyWeight: 400,\r\n },\r\n },\r\n glassmorphism: {\r\n id: 'glassmorphism',\r\n name: 'Glassmorphism',\r\n description: 'Frosted glass effect with transparency and blur',\r\n characteristics: ['Frosted glass', 'Transparency', 'Blur effects', 'Subtle borders'],\r\n colorPalette: {\r\n primary: 'rgba(255, 255, 255, 0.25)',\r\n secondary: 'rgba(255, 255, 255, 0.18)',\r\n accent: '#667EEA',\r\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n },\r\n typography: {\r\n fontFamily: 'Inter, sans-serif',\r\n headingWeight: 600,\r\n bodyWeight: 400,\r\n },\r\n },\r\n neumorphism: {\r\n id: 'neumorphism',\r\n name: 'Neumorphism',\r\n description: 'Soft UI with extruded and inset shadows',\r\n characteristics: ['Soft shadows', 'Extruded elements', 'Monochromatic', 'Subtle depth'],\r\n colorPalette: {\r\n primary: '#E0E5EC',\r\n secondary: '#D1D9E6',\r\n accent: '#6B8DD6',\r\n background: '#E0E5EC',\r\n },\r\n typography: {\r\n fontFamily: 'Poppins, sans-serif',\r\n headingWeight: 600,\r\n bodyWeight: 400,\r\n },\r\n },\r\n brutalism: {\r\n id: 'brutalism',\r\n name: 'Brutalism',\r\n description: 'Raw, bold aesthetic with stark contrasts and unconventional layouts',\r\n characteristics: ['Bold borders', 'High contrast', 'Raw typography', 'Unconventional layouts'],\r\n colorPalette: {\r\n primary: '#000000',\r\n secondary: '#FF0000',\r\n accent: '#FFFF00',\r\n background: '#FFFFFF',\r\n },\r\n typography: {\r\n fontFamily: 'Space Mono, monospace',\r\n headingWeight: 700,\r\n bodyWeight: 400,\r\n },\r\n },\r\n minimalism: {\r\n id: 'minimalism',\r\n name: 'Minimalism',\r\n description: 'Clean, simple design with maximum whitespace and essential elements only',\r\n characteristics: ['Whitespace', 'Simple forms', 'Limited colors', 'Essential elements'],\r\n colorPalette: {\r\n primary: '#111111',\r\n secondary: '#666666',\r\n accent: '#0066FF',\r\n background: '#FFFFFF',\r\n },\r\n typography: {\r\n fontFamily: 'Helvetica Neue, Arial, sans-serif',\r\n headingWeight: 300,\r\n bodyWeight: 400,\r\n },\r\n },\r\n cyberpunk: {\r\n id: 'cyberpunk',\r\n name: 'Cyberpunk',\r\n description: 'Futuristic neon aesthetic with dark backgrounds and glowing accents',\r\n characteristics: ['Neon colors', 'Dark backgrounds', 'Glitch effects', 'Tech-inspired'],\r\n colorPalette: {\r\n primary: '#00FFFF',\r\n secondary: '#FF00FF',\r\n accent: '#FFFF00',\r\n background: '#0A0A0F',\r\n },\r\n typography: {\r\n fontFamily: 'Orbitron, monospace',\r\n headingWeight: 700,\r\n bodyWeight: 400,\r\n },\r\n },\r\n 'flat-design': {\r\n id: 'flat-design',\r\n name: 'Flat Design',\r\n description: 'Two-dimensional style without shadows or gradients, focusing on simplicity',\r\n characteristics: ['No shadows', 'Solid colors', 'Simple icons', 'Grid-based layouts'],\r\n colorPalette: {\r\n primary: '#3498DB',\r\n secondary: '#2ECC71',\r\n accent: '#E74C3C',\r\n background: '#ECF0F1',\r\n },\r\n typography: {\r\n fontFamily: 'Open Sans, sans-serif',\r\n headingWeight: 600,\r\n bodyWeight: 400,\r\n },\r\n },\r\n 'retro-vintage': {\r\n id: 'retro-vintage',\r\n name: 'Retro Vintage',\r\n description: 'Nostalgic design inspired by 70s-90s aesthetics with warm tones',\r\n characteristics: [\r\n 'Warm colors',\r\n 'Vintage typography',\r\n 'Textured backgrounds',\r\n 'Retro patterns',\r\n ],\r\n colorPalette: {\r\n primary: '#D4A574',\r\n secondary: '#8B4513',\r\n accent: '#CD853F',\r\n background: '#FDF5E6',\r\n },\r\n typography: {\r\n fontFamily: 'Playfair Display, serif',\r\n headingWeight: 700,\r\n bodyWeight: 400,\r\n },\r\n },\r\n 'fluent-design': {\r\n id: 'fluent-design',\r\n name: 'Fluent Design',\r\n description: \"Microsoft's design system with depth, motion, and material\",\r\n characteristics: [\r\n 'Acrylic material',\r\n 'Reveal highlight',\r\n 'Connected animations',\r\n 'Depth shadows',\r\n ],\r\n colorPalette: {\r\n primary: '#0078D4',\r\n secondary: '#106EBE',\r\n accent: '#8764B8',\r\n background: '#FFFFFF',\r\n },\r\n typography: {\r\n fontFamily: 'Segoe UI, sans-serif',\r\n headingWeight: 600,\r\n bodyWeight: 400,\r\n },\r\n },\r\n 'carbon-design': {\r\n id: 'carbon-design',\r\n name: 'Carbon Design System',\r\n description: \"IBM's open-source design system for products and experiences\",\r\n characteristics: ['2x Grid', 'Productive motion', 'Expressive type', 'Accessible colors'],\r\n colorPalette: {\r\n primary: '#0F62FE',\r\n secondary: '#393939',\r\n accent: '#DA1E28',\r\n background: '#F4F4F4',\r\n },\r\n typography: {\r\n fontFamily: 'IBM Plex Sans, sans-serif',\r\n headingWeight: 600,\r\n bodyWeight: 400,\r\n },\r\n },\r\n 'ant-design': {\r\n id: 'ant-design',\r\n name: 'Ant Design',\r\n description: 'Enterprise-class UI design language for web applications',\r\n characteristics: ['Natural interactions', 'Certainty', 'Growth mindset', 'Micro-animations'],\r\n colorPalette: {\r\n primary: '#1677FF',\r\n secondary: '#722ED1',\r\n accent: '#52C41A',\r\n background: '#FFFFFF',\r\n },\r\n typography: {\r\n fontFamily: '-apple-system, BlinkMacSystemFont, Segoe UI, sans-serif',\r\n headingWeight: 500,\r\n bodyWeight: 400,\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Check if a string is a valid design system\r\n */\r\nexport function isValidDesignSystem(system: string): system is DesignSystem {\r\n return (CURRENT_DESIGN_SYSTEMS as readonly string[]).includes(system);\r\n}\r\n\r\n/**\r\n * Get design system info\r\n */\r\nexport function getDesignSystemInfo(system: DesignSystem): DesignSystemInfo {\r\n return DESIGN_SYSTEM_INFO[system];\r\n}\r\n\r\n/**\r\n * Get display name for design system\r\n */\r\nexport function getDesignSystemName(system: DesignSystem): string {\r\n return DESIGN_SYSTEM_INFO[system].name;\r\n}\r\n","/**\r\n * Tiers Constants\r\n *\r\n * Quality tiers for component generation.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Available Tiers\r\n */\r\nexport const TIERS = ['basic', 'standard', 'enterprise'] as const;\r\n\r\n/**\r\n * Tier Type\r\n */\r\nexport type Tier = (typeof TIERS)[number];\r\n\r\n/**\r\n * Tier Metadata\r\n */\r\nexport interface TierInfo {\r\n id: Tier;\r\n name: string;\r\n description: string;\r\n targetUseCase: string;\r\n features: string[];\r\n linesOfCode: {\r\n min: number;\r\n max: number;\r\n };\r\n includes: {\r\n forwardRef: boolean;\r\n memo: boolean;\r\n displayName: boolean;\r\n analytics: boolean;\r\n accessibility: boolean;\r\n documentation: boolean;\r\n variants: boolean;\r\n animations: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * Tier Metadata Map\r\n */\r\nexport const TIER_INFO: Record<Tier, TierInfo> = {\r\n basic: {\r\n id: 'basic',\r\n name: 'Basic',\r\n description: 'Minimal implementation for prototypes and MVPs',\r\n targetUseCase: 'Rapid prototyping, hackathons, proof-of-concept',\r\n features: [\r\n 'Core functionality only',\r\n 'Basic styling',\r\n 'Essential props',\r\n 'Minimal dependencies',\r\n ],\r\n linesOfCode: {\r\n min: 30,\r\n max: 50,\r\n },\r\n includes: {\r\n forwardRef: false,\r\n memo: false,\r\n displayName: false,\r\n analytics: false,\r\n accessibility: false,\r\n documentation: false,\r\n variants: false,\r\n animations: false,\r\n },\r\n },\r\n standard: {\r\n id: 'standard',\r\n name: 'Standard',\r\n description: 'Production-ready implementation with common features',\r\n targetUseCase: 'Production applications, client projects, SaaS products',\r\n features: [\r\n 'Multiple variants',\r\n 'Size options',\r\n 'forwardRef support',\r\n 'Proper TypeScript types',\r\n 'Basic accessibility',\r\n 'JSDoc documentation',\r\n ],\r\n linesOfCode: {\r\n min: 50,\r\n max: 100,\r\n },\r\n includes: {\r\n forwardRef: true,\r\n memo: false,\r\n displayName: true,\r\n analytics: false,\r\n accessibility: true,\r\n documentation: true,\r\n variants: true,\r\n animations: false,\r\n },\r\n },\r\n enterprise: {\r\n id: 'enterprise',\r\n name: 'Enterprise',\r\n description: 'Full-featured implementation for mission-critical applications',\r\n targetUseCase: 'Enterprise software, banking, healthcare, government',\r\n features: [\r\n 'All standard features',\r\n 'Performance optimization (memo)',\r\n 'Analytics integration',\r\n 'Full accessibility (WCAG 2.1 AA)',\r\n 'Comprehensive documentation',\r\n 'Animation support',\r\n 'Theme customization',\r\n 'Error boundaries',\r\n ],\r\n linesOfCode: {\r\n min: 100,\r\n max: 200,\r\n },\r\n includes: {\r\n forwardRef: true,\r\n memo: true,\r\n displayName: true,\r\n analytics: true,\r\n accessibility: true,\r\n documentation: true,\r\n variants: true,\r\n animations: true,\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Check if a string is a valid tier\r\n */\r\nexport function isValidTier(tier: string): tier is Tier {\r\n return (TIERS as readonly string[]).includes(tier);\r\n}\r\n\r\n/**\r\n * Get tier info\r\n */\r\nexport function getTierInfo(tier: Tier): TierInfo {\r\n return TIER_INFO[tier];\r\n}\r\n\r\n/**\r\n * Get tier display name\r\n */\r\nexport function getTierName(tier: Tier): string {\r\n return TIER_INFO[tier].name;\r\n}\r\n\r\n/**\r\n * Compare tiers (returns -1, 0, or 1)\r\n */\r\nexport function compareTiers(a: Tier, b: Tier): number {\r\n const order: Record<Tier, number> = {\r\n basic: 0,\r\n standard: 1,\r\n enterprise: 2,\r\n };\r\n return order[a] - order[b];\r\n}\r\n\r\n/**\r\n * Check if tier A is higher than tier B\r\n */\r\nexport function isHigherTier(a: Tier, b: Tier): boolean {\r\n return compareTiers(a, b) > 0;\r\n}\r\n\r\n/**\r\n * Get the next tier (or undefined if already at highest)\r\n */\r\nexport function getNextTier(tier: Tier): Tier | undefined {\r\n const index = TIERS.indexOf(tier);\r\n if (index < TIERS.length - 1) {\r\n return TIERS[index + 1];\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Get all tiers at or above the specified tier\r\n */\r\nexport function getTiersAtOrAbove(tier: Tier): Tier[] {\r\n const index = TIERS.indexOf(tier);\r\n return [...TIERS.slice(index)];\r\n}\r\n","/**\r\n * Frameworks Constants\r\n *\r\n * Supported frameworks for code generation.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Current Supported Frameworks\r\n */\r\nexport const CURRENT_FRAMEWORKS = [\r\n 'react',\r\n 'vue',\r\n 'svelte',\r\n 'solid',\r\n 'angular',\r\n] as const;\r\n\r\n/**\r\n * Planned Frameworks (Future)\r\n */\r\nexport const PLANNED_FRAMEWORKS = [\r\n 'preact',\r\n 'qwik',\r\n 'lit',\r\n 'alpine',\r\n 'htmx',\r\n 'astro',\r\n] as const;\r\n\r\n/**\r\n * All Frameworks\r\n */\r\nexport const ALL_FRAMEWORKS = [\r\n ...CURRENT_FRAMEWORKS,\r\n ...PLANNED_FRAMEWORKS,\r\n] as const;\r\n\r\n/**\r\n * Framework Type\r\n */\r\nexport type Framework = (typeof CURRENT_FRAMEWORKS)[number];\r\n\r\n/**\r\n * All Framework Type (including planned)\r\n */\r\nexport type AllFramework = (typeof ALL_FRAMEWORKS)[number];\r\n\r\n/**\r\n * Framework Metadata\r\n */\r\nexport interface FrameworkInfo {\r\n id: Framework;\r\n name: string;\r\n description: string;\r\n fileExtension: string;\r\n componentExtension: string;\r\n importStyle: 'default' | 'named' | 'namespace';\r\n supportsJSX: boolean;\r\n supportsSFC: boolean;\r\n packageManager: string;\r\n officialWebsite: string;\r\n}\r\n\r\n/**\r\n * Framework Metadata Map\r\n */\r\nexport const FRAMEWORK_INFO: Record<Framework, FrameworkInfo> = {\r\n react: {\r\n id: 'react',\r\n name: 'React',\r\n description: 'A JavaScript library for building user interfaces',\r\n fileExtension: '.ts',\r\n componentExtension: '.tsx',\r\n importStyle: 'named',\r\n supportsJSX: true,\r\n supportsSFC: false,\r\n packageManager: 'npm',\r\n officialWebsite: 'https://react.dev',\r\n },\r\n vue: {\r\n id: 'vue',\r\n name: 'Vue.js',\r\n description: 'The progressive JavaScript framework',\r\n fileExtension: '.ts',\r\n componentExtension: '.vue',\r\n importStyle: 'default',\r\n supportsJSX: true,\r\n supportsSFC: true,\r\n packageManager: 'npm',\r\n officialWebsite: 'https://vuejs.org',\r\n },\r\n svelte: {\r\n id: 'svelte',\r\n name: 'Svelte',\r\n description: 'Cybernetically enhanced web apps',\r\n fileExtension: '.ts',\r\n componentExtension: '.svelte',\r\n importStyle: 'default',\r\n supportsJSX: false,\r\n supportsSFC: true,\r\n packageManager: 'npm',\r\n officialWebsite: 'https://svelte.dev',\r\n },\r\n solid: {\r\n id: 'solid',\r\n name: 'SolidJS',\r\n description: 'Simple and performant reactivity for building user interfaces',\r\n fileExtension: '.ts',\r\n componentExtension: '.tsx',\r\n importStyle: 'named',\r\n supportsJSX: true,\r\n supportsSFC: false,\r\n packageManager: 'npm',\r\n officialWebsite: 'https://www.solidjs.com',\r\n },\r\n angular: {\r\n id: 'angular',\r\n name: 'Angular',\r\n description: 'Platform for building mobile and desktop web applications',\r\n fileExtension: '.ts',\r\n componentExtension: '.ts',\r\n importStyle: 'named',\r\n supportsJSX: false,\r\n supportsSFC: false,\r\n packageManager: 'npm',\r\n officialWebsite: 'https://angular.io',\r\n },\r\n};\r\n\r\n/**\r\n * Check if a string is a valid framework\r\n */\r\nexport function isValidFramework(framework: string): framework is Framework {\r\n return (CURRENT_FRAMEWORKS as readonly string[]).includes(framework);\r\n}\r\n\r\n/**\r\n * Get framework info\r\n */\r\nexport function getFrameworkInfo(framework: Framework): FrameworkInfo {\r\n return FRAMEWORK_INFO[framework];\r\n}\r\n\r\n/**\r\n * Get framework display name\r\n */\r\nexport function getFrameworkName(framework: Framework): string {\r\n return FRAMEWORK_INFO[framework].name;\r\n}\r\n\r\n/**\r\n * Get component file extension for framework\r\n */\r\nexport function getComponentExtension(framework: Framework): string {\r\n return FRAMEWORK_INFO[framework].componentExtension;\r\n}\r\n\r\n/**\r\n * Check if framework supports JSX\r\n */\r\nexport function supportsJSX(framework: Framework): boolean {\r\n return FRAMEWORK_INFO[framework].supportsJSX;\r\n}\r\n\r\n/**\r\n * Check if framework supports Single File Components\r\n */\r\nexport function supportsSFC(framework: Framework): boolean {\r\n return FRAMEWORK_INFO[framework].supportsSFC;\r\n}\r\n","/**\r\n * String Utilities\r\n *\r\n * Common string manipulation functions.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Convert string to PascalCase\r\n *\r\n * @example\r\n * toPascalCase('hello-world') // 'HelloWorld'\r\n * toPascalCase('hello_world') // 'HelloWorld'\r\n * toPascalCase('hello world') // 'HelloWorld'\r\n */\r\nexport function toPascalCase(str: string): string {\r\n return str\r\n .split(/[-_\\s]+/)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\r\n .join('');\r\n}\r\n\r\n/**\r\n * Convert string to camelCase\r\n *\r\n * @example\r\n * toCamelCase('hello-world') // 'helloWorld'\r\n * toCamelCase('HelloWorld') // 'helloWorld'\r\n */\r\nexport function toCamelCase(str: string): string {\r\n const pascal = toPascalCase(str);\r\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\r\n}\r\n\r\n/**\r\n * Convert string to kebab-case\r\n *\r\n * @example\r\n * toKebabCase('HelloWorld') // 'hello-world'\r\n * toKebabCase('helloWorld') // 'hello-world'\r\n */\r\nexport function toKebabCase(str: string): string {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/[\\s_]+/g, '-')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * Convert string to snake_case\r\n *\r\n * @example\r\n * toSnakeCase('HelloWorld') // 'hello_world'\r\n * toSnakeCase('hello-world') // 'hello_world'\r\n */\r\nexport function toSnakeCase(str: string): string {\r\n return str\r\n .replace(/([a-z])([A-Z])/g, '$1_$2')\r\n .replace(/[\\s-]+/g, '_')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * Convert string to CONSTANT_CASE\r\n *\r\n * @example\r\n * toConstantCase('HelloWorld') // 'HELLO_WORLD'\r\n */\r\nexport function toConstantCase(str: string): string {\r\n return toSnakeCase(str).toUpperCase();\r\n}\r\n\r\n/**\r\n * Capitalize first letter\r\n *\r\n * @example\r\n * capitalize('hello') // 'Hello'\r\n */\r\nexport function capitalize(str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\n/**\r\n * Uncapitalize first letter\r\n *\r\n * @example\r\n * uncapitalize('Hello') // 'hello'\r\n */\r\nexport function uncapitalize(str: string): string {\r\n return str.charAt(0).toLowerCase() + str.slice(1);\r\n}\r\n\r\n/**\r\n * Check if string is PascalCase\r\n */\r\nexport function isPascalCase(str: string): boolean {\r\n return /^[A-Z][a-zA-Z0-9]*$/.test(str);\r\n}\r\n\r\n/**\r\n * Check if string is camelCase\r\n */\r\nexport function isCamelCase(str: string): boolean {\r\n return /^[a-z][a-zA-Z0-9]*$/.test(str);\r\n}\r\n\r\n/**\r\n * Check if string is kebab-case\r\n */\r\nexport function isKebabCase(str: string): boolean {\r\n return /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/.test(str);\r\n}\r\n\r\n/**\r\n * Check if string is snake_case\r\n */\r\nexport function isSnakeCase(str: string): boolean {\r\n return /^[a-z][a-z0-9]*(_[a-z0-9]+)*$/.test(str);\r\n}\r\n\r\n/**\r\n * Pluralize a word (simple version)\r\n *\r\n * @example\r\n * pluralize('button') // 'buttons'\r\n * pluralize('category') // 'categories'\r\n */\r\nexport function pluralize(word: string): string {\r\n if (word.endsWith('y') && !/[aeiou]y$/.test(word)) {\r\n return `${word.slice(0, -1) }ies`;\r\n }\r\n if (word.endsWith('s') || word.endsWith('x') || word.endsWith('ch') || word.endsWith('sh')) {\r\n return `${word }es`;\r\n }\r\n return `${word }s`;\r\n}\r\n\r\n/**\r\n * Singularize a word (simple version)\r\n *\r\n * @example\r\n * singularize('buttons') // 'button'\r\n * singularize('categories') // 'category'\r\n */\r\nexport function singularize(word: string): string {\r\n if (word.endsWith('ies')) {\r\n return `${word.slice(0, -3) }y`;\r\n }\r\n if (word.endsWith('es') && (word.endsWith('ses') || word.endsWith('xes') || word.endsWith('ches') || word.endsWith('shes'))) {\r\n return word.slice(0, -2);\r\n }\r\n if (word.endsWith('s') && !word.endsWith('ss')) {\r\n return word.slice(0, -1);\r\n }\r\n return word;\r\n}\r\n\r\n/**\r\n * Truncate string with ellipsis\r\n *\r\n * @example\r\n * truncate('Hello World', 8) // 'Hello...'\r\n */\r\nexport function truncate(str: string, maxLength: number, suffix = '...'): string {\r\n if (str.length <= maxLength) {\r\n return str;\r\n }\r\n return str.slice(0, maxLength - suffix.length) + suffix;\r\n}\r\n\r\n/**\r\n * Escape HTML special characters\r\n */\r\nexport function escapeHtml(str: string): string {\r\n const htmlEscapes: Record<string, string> = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n };\r\n return str.replace(/[&<>\"']/g, (char) => htmlEscapes[char] ?? char);\r\n}\r\n\r\n/**\r\n * Escape string for use in template literals\r\n */\r\nexport function escapeTemplate(str: string): string {\r\n return str\r\n .replace(/\\\\/g, '\\\\\\\\')\r\n .replace(/`/g, '\\\\`')\r\n .replace(/\\$/g, '\\\\$');\r\n}\r\n\r\n/**\r\n * Generate random string\r\n */\r\nexport function randomString(length: number, charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'): string {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n result += charset.charAt(Math.floor(Math.random() * charset.length));\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Generate slug from string\r\n *\r\n * @example\r\n * slugify('Hello World!') // 'hello-world'\r\n */\r\nexport function slugify(str: string): string {\r\n return str\r\n .toLowerCase()\r\n .trim()\r\n .replace(/[^\\w\\s-]/g, '')\r\n .replace(/[\\s_-]+/g, '-')\r\n .replace(/^-+|-+$/g, '');\r\n}\r\n","/**\r\n * Code Generation Utilities\r\n *\r\n * Helper functions for generating TypeScript/React code.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { toPascalCase, toKebabCase } from './StringUtils';\r\n\r\n/**\r\n * Generate import statements\r\n *\r\n * @example\r\n * generateImports(['react', 'clsx', 'cva'])\r\n * // import React from 'react';\r\n * // import { clsx } from 'clsx';\r\n * // import { cva, type VariantProps } from 'class-variance-authority';\r\n */\r\nexport function generateImports(dependencies: string[]): string {\r\n const imports: string[] = [];\r\n\r\n dependencies.forEach((dep) => {\r\n switch (dep) {\r\n case 'react':\r\n imports.push(`import React from 'react';`);\r\n break;\r\n case 'react-hooks':\r\n imports.push(`import { useState, useEffect, useCallback, useMemo, useRef } from 'react';`);\r\n break;\r\n case 'react-memo':\r\n imports.push(`import { memo, forwardRef } from 'react';`);\r\n break;\r\n case 'clsx':\r\n imports.push(`import { clsx } from 'clsx';`);\r\n break;\r\n case 'cva':\r\n imports.push(`import { cva, type VariantProps } from 'class-variance-authority';`);\r\n break;\r\n case 'tailwind-merge':\r\n imports.push(`import { twMerge } from 'tailwind-merge';`);\r\n break;\r\n case 'framer-motion':\r\n imports.push(`import { motion, AnimatePresence } from 'framer-motion';`);\r\n break;\r\n case 'lucide-react':\r\n imports.push(`import { LucideIcon } from 'lucide-react';`);\r\n break;\r\n case 'radix-ui':\r\n imports.push(`import * as RadixUI from '@radix-ui/react-primitive';`);\r\n break;\r\n default:\r\n // Generic import\r\n imports.push(`import ${dep} from '${dep}';`);\r\n }\r\n });\r\n\r\n return imports.join('\\n');\r\n}\r\n\r\n/**\r\n * Generate TypeScript interface\r\n *\r\n * @example\r\n * generateInterface('Button', {\r\n * variant: \"'filled' | 'outlined'\",\r\n * size: \"'sm' | 'md' | 'lg'\",\r\n * disabled: 'boolean',\r\n * })\r\n */\r\nexport function generateInterface(\r\n name: string,\r\n props: Record<string, string>,\r\n options?: {\r\n extends?: string;\r\n description?: string;\r\n optional?: string[];\r\n }\r\n): string {\r\n const lines: string[] = [];\r\n\r\n // JSDoc comment\r\n if (options?.description !== undefined && options.description !== '') {\r\n lines.push(`/**`);\r\n lines.push(` * ${options.description}`);\r\n lines.push(` */`);\r\n }\r\n\r\n // Interface declaration\r\n const extendsClause = options?.extends !== undefined && options.extends !== '' ? ` extends ${options.extends}` : '';\r\n lines.push(`export interface ${name}Props${extendsClause} {`);\r\n\r\n // Props\r\n Object.entries(props).forEach(([key, type]) => {\r\n const isOptional = options?.optional?.includes(key) === true;\r\n lines.push(` ${key}${isOptional ? '?' : ''}: ${type};`);\r\n });\r\n\r\n lines.push(`}`);\r\n\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Generate TypeScript type alias\r\n */\r\nexport function generateType(name: string, type: string): string {\r\n return `export type ${name} = ${type};`;\r\n}\r\n\r\n/**\r\n * Generate union type from array\r\n *\r\n * @example\r\n * generateUnionType(['sm', 'md', 'lg']) // \"'sm' | 'md' | 'lg'\"\r\n */\r\nexport function generateUnionType(values: string[]): string {\r\n return values.map((v) => `'${v}'`).join(' | ');\r\n}\r\n\r\n/**\r\n * Generate JSDoc comment\r\n */\r\nexport function generateJSDoc(options: {\r\n description?: string;\r\n params?: Array<{ name: string; type: string; description: string }>;\r\n returns?: { type: string; description: string };\r\n example?: string;\r\n since?: string;\r\n deprecated?: string;\r\n}): string {\r\n const lines: string[] = ['/**'];\r\n\r\n if (options.description !== undefined && options.description !== '') {\r\n lines.push(` * ${options.description}`);\r\n lines.push(` *`);\r\n }\r\n\r\n if (options.params !== undefined && options.params.length > 0) {\r\n options.params.forEach((param) => {\r\n lines.push(` * @param ${param.name} - ${param.description}`);\r\n });\r\n }\r\n\r\n if (options.returns !== undefined) {\r\n lines.push(` * @returns ${options.returns.description}`);\r\n }\r\n\r\n if (options.example !== undefined && options.example !== '') {\r\n lines.push(` *`);\r\n lines.push(` * @example`);\r\n lines.push(` * \\`\\`\\`tsx`);\r\n options.example.split('\\n').forEach((line) => {\r\n lines.push(` * ${line}`);\r\n });\r\n lines.push(` * \\`\\`\\``);\r\n }\r\n\r\n if (options.since !== undefined && options.since !== '') {\r\n lines.push(` *`);\r\n lines.push(` * @since ${options.since}`);\r\n }\r\n\r\n if (options.deprecated !== undefined && options.deprecated !== '') {\r\n lines.push(` *`);\r\n lines.push(` * @deprecated ${options.deprecated}`);\r\n }\r\n\r\n lines.push(` */`);\r\n\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Generate React component skeleton\r\n */\r\nexport function generateComponentSkeleton(\r\n name: string,\r\n options?: {\r\n withForwardRef?: boolean;\r\n withMemo?: boolean;\r\n withDisplayName?: boolean;\r\n }\r\n): string {\r\n const propsName = `${name}Props`;\r\n\r\n if (options?.withForwardRef === true && options?.withMemo === true) {\r\n return `export const ${name} = memo(\r\n forwardRef<HTMLDivElement, ${propsName}>(\r\n ({ children, className, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={className} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n )\r\n);\r\n\r\n${name}.displayName = '${name}';`;\r\n }\r\n\r\n if (options?.withForwardRef === true) {\r\n return `export const ${name} = forwardRef<HTMLDivElement, ${propsName}>(\r\n ({ children, className, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={className} {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n${name}.displayName = '${name}';`;\r\n }\r\n\r\n if (options?.withMemo === true) {\r\n return `export const ${name} = memo(function ${name}({ children, className, ...props }: ${propsName}) {\r\n return (\r\n <div className={className} {...props}>\r\n {children}\r\n </div>\r\n );\r\n});`;\r\n }\r\n\r\n return `export function ${name}({ children, className, ...props }: ${propsName}): JSX.Element {\r\n return (\r\n <div className={className} {...props}>\r\n {children}\r\n </div>\r\n );\r\n}`;\r\n}\r\n\r\n/**\r\n * Generate file header comment\r\n */\r\nexport function generateFileHeader(options: {\r\n name: string;\r\n description?: string;\r\n designSystem?: string;\r\n tier?: string;\r\n}): string {\r\n const lines: string[] = ['/**'];\r\n lines.push(` * ${options.name}`);\r\n if (options.description !== undefined && options.description !== '') {\r\n lines.push(` *`);\r\n lines.push(` * ${options.description}`);\r\n }\r\n lines.push(` *`);\r\n if (options.designSystem !== undefined && options.designSystem !== '') {\r\n lines.push(` * Design System: ${options.designSystem}`);\r\n }\r\n if (options.tier !== undefined && options.tier !== '') {\r\n lines.push(` * Tier: ${options.tier}`);\r\n }\r\n lines.push(` *`);\r\n lines.push(` * Generated by Nikkory Vibe`);\r\n lines.push(` */`);\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Generate component file path\r\n *\r\n * @example\r\n * generateComponentPath('button', 'material-design', 'standard')\r\n * // 'components/button/material-design/standard.tsx'\r\n */\r\nexport function generateComponentPath(\r\n component: string,\r\n designSystem: string,\r\n tier: string\r\n): string {\r\n const kebabComponent = toKebabCase(component);\r\n const kebabDesignSystem = toKebabCase(designSystem);\r\n return `components/${kebabComponent}/${kebabDesignSystem}/${tier}.tsx`;\r\n}\r\n\r\n/**\r\n * Generate component name\r\n *\r\n * @example\r\n * generateComponentName('button', 'material-design', 'standard')\r\n * // 'MaterialButtonStandard'\r\n */\r\nexport function generateComponentName(\r\n component: string,\r\n designSystem: string,\r\n tier: string\r\n): string {\r\n const designSystemNames: Record<string, string> = {\r\n 'material-design': 'Material',\r\n 'ios-hig': 'IosHig',\r\n glassmorphism: 'Glass',\r\n neumorphism: 'Neu',\r\n brutalism: 'Brutal',\r\n minimalism: 'Minimal',\r\n fluent: 'Fluent',\r\n carbon: 'Carbon',\r\n 'ant-design': 'Ant',\r\n chakra: 'Chakra',\r\n atlassian: 'Atlassian',\r\n blueprint: 'Blueprint',\r\n };\r\n\r\n const designSystemPrefix = designSystemNames[designSystem] ?? toPascalCase(designSystem);\r\n const componentName = toPascalCase(component);\r\n const tierSuffix = toPascalCase(tier);\r\n\r\n return `${designSystemPrefix}${componentName}${tierSuffix}`;\r\n}\r\n\r\n/**\r\n * Indent code by specified number of spaces\r\n */\r\nexport function indent(code: string, spaces: number = 2): string {\r\n const indentation = ' '.repeat(spaces);\r\n return code\r\n .split('\\n')\r\n .map((line) => (line.trim() !== '' ? indentation + line : line))\r\n .join('\\n');\r\n}\r\n\r\n/**\r\n * Remove extra blank lines\r\n */\r\nexport function normalizeWhitespace(code: string): string {\r\n return code\r\n .replace(/\\n{3,}/g, '\\n\\n')\r\n .replace(/^\\n+/, '')\r\n .replace(/\\n+$/, '\\n');\r\n}\r\n","/**\r\n * Base Error Class\r\n *\r\n * All custom errors extend this class.\r\n * Provides stack trace, error codes, and metadata.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nexport abstract class BaseError extends Error {\r\n public readonly timestamp: Date;\r\n public readonly errorCode: string;\r\n public readonly metadata?: Record<string, unknown>;\r\n\r\n constructor(\r\n message: string,\r\n errorCode: string,\r\n metadata?: Record<string, unknown>\r\n ) {\r\n super(message);\r\n this.name = this.constructor.name;\r\n this.timestamp = new Date();\r\n this.errorCode = errorCode;\r\n this.metadata = metadata;\r\n\r\n // Maintains proper stack trace for where error was thrown\r\n Error.captureStackTrace(this, this.constructor);\r\n }\r\n\r\n /**\r\n * Serialize error to JSON\r\n */\r\n toJSON(): object {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n errorCode: this.errorCode,\r\n timestamp: this.timestamp.toISOString(),\r\n metadata: this.metadata,\r\n stack: this.stack,\r\n };\r\n }\r\n\r\n /**\r\n * Get user-friendly message\r\n */\r\n abstract getUserMessage(): string;\r\n}\r\n","/**\r\n * Validation Error\r\n *\r\n * Thrown when input validation fails.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { BaseError } from './BaseError';\r\n\r\nexport class ValidationError extends BaseError {\r\n constructor(message: string, metadata?: Record<string, unknown>) {\r\n super(message, 'VALIDATION_ERROR', metadata);\r\n }\r\n\r\n getUserMessage(): string {\r\n return `Validation failed: ${this.message}`;\r\n }\r\n}\r\n","/**\r\n * Validation Utilities\r\n *\r\n * Input validation functions for security and data integrity.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { Result } from '../types/Result';\r\n\r\nimport { ValidationError } from './errors';\r\n\r\n/**\r\n * Validate component name (PascalCase)\r\n *\r\n * Rules:\r\n * - Must start with uppercase letter\r\n * - Only alphanumeric characters\r\n * - Max 100 characters\r\n * - No reserved keywords\r\n */\r\nexport function validateComponentName(name: string): Result<void, ValidationError> {\r\n if (name === undefined || name === null || name.trim() === '') {\r\n return Result.fail(new ValidationError('Component name is required'));\r\n }\r\n\r\n if (!/^[A-Z][a-zA-Z0-9]*$/.test(name)) {\r\n return Result.fail(\r\n new ValidationError('Component name must be PascalCase (e.g., MyComponent)')\r\n );\r\n }\r\n\r\n if (name.length > 100) {\r\n return Result.fail(\r\n new ValidationError('Component name too long (max 100 characters)')\r\n );\r\n }\r\n\r\n const reserved = [\r\n 'Component',\r\n 'Element',\r\n 'Fragment',\r\n 'React',\r\n 'Props',\r\n 'State',\r\n 'Context',\r\n 'Provider',\r\n 'Consumer',\r\n 'Ref',\r\n 'Key',\r\n 'Children',\r\n ];\r\n\r\n if (reserved.includes(name)) {\r\n return Result.fail(new ValidationError(`'${name}' is a reserved name`));\r\n }\r\n\r\n return Result.ok();\r\n}\r\n\r\n/**\r\n * Validate file path\r\n *\r\n * Security checks:\r\n * - No path traversal (..)\r\n * - No absolute paths\r\n * - Valid extension\r\n * - No null bytes\r\n */\r\nexport function validateFilePath(\r\n path: string,\r\n allowedExtensions: string[] = ['.ts', '.tsx', '.js', '.jsx']\r\n): Result<void, ValidationError> {\r\n if (path === undefined || path === null || path.trim() === '') {\r\n return Result.fail(new ValidationError('File path is required'));\r\n }\r\n\r\n // Check for path traversal\r\n if (path.includes('..')) {\r\n return Result.fail(\r\n new ValidationError('Path traversal detected: \"..\" is not allowed')\r\n );\r\n }\r\n\r\n // Check for absolute paths\r\n if (path.startsWith('/') || /^[A-Z]:\\\\/.test(path)) {\r\n return Result.fail(new ValidationError('Absolute paths are not allowed'));\r\n }\r\n\r\n // Check for null bytes (security)\r\n if (path.includes('\\0')) {\r\n return Result.fail(new ValidationError('Invalid characters in path'));\r\n }\r\n\r\n // Check extension\r\n const ext = path.substring(path.lastIndexOf('.'));\r\n if (!allowedExtensions.includes(ext)) {\r\n return Result.fail(\r\n new ValidationError(\r\n `Invalid file extension. Allowed: ${allowedExtensions.join(', ')}`\r\n )\r\n );\r\n }\r\n\r\n // Check for special characters\r\n if (/[<>:\"|?*]/.test(path)) {\r\n return Result.fail(\r\n new ValidationError('Path contains invalid characters')\r\n );\r\n }\r\n\r\n return Result.ok();\r\n}\r\n\r\n/**\r\n * Validate design system name\r\n */\r\nexport function validateDesignSystem(designSystem: string): Result<void, ValidationError> {\r\n const validDesignSystems = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n ];\r\n\r\n if (designSystem === undefined || designSystem === null || designSystem === '') {\r\n return Result.fail(new ValidationError('Design system is required'));\r\n }\r\n\r\n if (!validDesignSystems.includes(designSystem)) {\r\n return Result.fail(\r\n new ValidationError(\r\n `Invalid design system: \"${designSystem}\". Valid options: ${validDesignSystems.join(', ')}`\r\n )\r\n );\r\n }\r\n\r\n return Result.ok();\r\n}\r\n\r\n/**\r\n * Validate tier\r\n */\r\nexport function validateTier(tier: string): Result<void, ValidationError> {\r\n const validTiers = ['basic', 'standard', 'enterprise'];\r\n\r\n if (tier === undefined || tier === null || tier === '') {\r\n return Result.fail(new ValidationError('Tier is required'));\r\n }\r\n\r\n if (!validTiers.includes(tier)) {\r\n return Result.fail(\r\n new ValidationError(\r\n `Invalid tier: \"${tier}\". Valid options: ${validTiers.join(', ')}`\r\n )\r\n );\r\n }\r\n\r\n return Result.ok();\r\n}\r\n\r\n/**\r\n * Validate URL\r\n *\r\n * Security checks:\r\n * - Must be http or https\r\n * - No internal/private IPs\r\n */\r\nexport function validateUrl(url: string): Result<void, ValidationError> {\r\n if (url === undefined || url === null || url === '') {\r\n return Result.fail(new ValidationError('URL is required'));\r\n }\r\n\r\n try {\r\n const parsed = new URL(url);\r\n\r\n // Only allow http(s)\r\n if (!['http:', 'https:'].includes(parsed.protocol)) {\r\n return Result.fail(\r\n new ValidationError('Only http and https URLs are allowed')\r\n );\r\n }\r\n\r\n // Block internal IPs\r\n const hostname = parsed.hostname;\r\n if (\r\n hostname === 'localhost' ||\r\n hostname === '127.0.0.1' ||\r\n hostname.startsWith('192.168.') ||\r\n hostname.startsWith('10.') ||\r\n /^172\\.(1[6-9]|2[0-9]|3[0-1])\\./.test(hostname)\r\n ) {\r\n return Result.fail(new ValidationError('Internal URLs are not allowed'));\r\n }\r\n\r\n return Result.ok();\r\n } catch {\r\n return Result.fail(new ValidationError('Invalid URL format'));\r\n }\r\n}\r\n\r\n/**\r\n * Validate email\r\n */\r\nexport function validateEmail(email: string): Result<void, ValidationError> {\r\n if (email === undefined || email === null || email === '') {\r\n return Result.fail(new ValidationError('Email is required'));\r\n }\r\n\r\n // RFC 5322 compliant regex\r\n const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n\r\n if (!emailRegex.test(email)) {\r\n return Result.fail(new ValidationError('Invalid email format'));\r\n }\r\n\r\n return Result.ok();\r\n}\r\n\r\n/**\r\n * Sanitize string input\r\n *\r\n * Removes potentially dangerous characters.\r\n */\r\nexport function sanitize(input: string): string {\r\n return input\r\n .replace(/[<>]/g, '') // Remove HTML tags\r\n // eslint-disable-next-line no-control-regex -- Intentional: sanitize control characters for security\r\n .replace(/[\\x00-\\x1F\\x7F]/g, '') // Remove control characters\r\n .trim();\r\n}\r\n\r\n/**\r\n * Sanitize for HTML output\r\n */\r\nexport function sanitizeHtml(input: string): string {\r\n const htmlEscapes: Record<string, string> = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n };\r\n return input.replace(/[&<>\"']/g, (char) => htmlEscapes[char] ?? char);\r\n}\r\n\r\n/**\r\n * Check if value is within allowed list\r\n */\r\nexport function isAllowedValue<T>(value: T, allowed: T[]): boolean {\r\n return allowed.includes(value);\r\n}\r\n\r\n/**\r\n * Validate object against schema (simple version)\r\n */\r\nexport function validateObject(\r\n obj: Record<string, unknown>,\r\n schema: Record<string, { type: string; required?: boolean }>\r\n): Result<void, ValidationError> {\r\n const errors: string[] = [];\r\n\r\n Object.entries(schema).forEach(([key, rules]) => {\r\n const value = obj[key];\r\n\r\n if (rules.required === true && (value === undefined || value === null)) {\r\n errors.push(`${key} is required`);\r\n return;\r\n }\r\n\r\n if (value !== undefined && value !== null) {\r\n const actualType = typeof value;\r\n if (actualType !== rules.type) {\r\n errors.push(`${key} must be of type ${rules.type}, got ${actualType}`);\r\n }\r\n }\r\n });\r\n\r\n if (errors.length > 0) {\r\n return Result.fail(new ValidationError(errors.join('; '), { errors }));\r\n }\r\n\r\n return Result.ok();\r\n}\r\n","/**\r\n * Logger Utility\r\n *\r\n * Logging abstraction for consistent logging across the application.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/* eslint-disable no-console -- Logger utility requires console output */\r\n\r\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\r\n\r\nexport interface LogEntry {\r\n level: LogLevel;\r\n message: string;\r\n timestamp: Date;\r\n context?: string;\r\n metadata?: Record<string, unknown>;\r\n}\r\n\r\nexport interface ILogger {\r\n debug(message: string, metadata?: Record<string, unknown>): void;\r\n info(message: string, metadata?: Record<string, unknown>): void;\r\n warn(message: string, metadata?: Record<string, unknown>): void;\r\n error(message: string, metadata?: Record<string, unknown>): void;\r\n setContext(context: string): void;\r\n setLevel(level: LogLevel): void;\r\n}\r\n\r\nconst LOG_LEVELS: Record<LogLevel, number> = {\r\n debug: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3,\r\n};\r\n\r\n/**\r\n * Console Logger Implementation\r\n */\r\nexport class ConsoleLogger implements ILogger {\r\n private context: string = '';\r\n private level: LogLevel = 'info';\r\n\r\n constructor(options?: { context?: string; level?: LogLevel }) {\r\n if (options?.context !== undefined && options.context !== '') {\r\n this.context = options.context;\r\n }\r\n if (options?.level !== undefined) {\r\n this.level = options.level;\r\n }\r\n }\r\n\r\n setContext(context: string): void {\r\n this.context = context;\r\n }\r\n\r\n setLevel(level: LogLevel): void {\r\n this.level = level;\r\n }\r\n\r\n debug(message: string, metadata?: Record<string, unknown>): void {\r\n this.log('debug', message, metadata);\r\n }\r\n\r\n info(message: string, metadata?: Record<string, unknown>): void {\r\n this.log('info', message, metadata);\r\n }\r\n\r\n warn(message: string, metadata?: Record<string, unknown>): void {\r\n this.log('warn', message, metadata);\r\n }\r\n\r\n error(message: string, metadata?: Record<string, unknown>): void {\r\n this.log('error', message, metadata);\r\n }\r\n\r\n private log(level: LogLevel, message: string, metadata?: Record<string, unknown>): void {\r\n if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) {\r\n return;\r\n }\r\n\r\n const entry: LogEntry = {\r\n level,\r\n message,\r\n timestamp: new Date(),\r\n context: this.context !== '' ? this.context : undefined,\r\n metadata,\r\n };\r\n\r\n const prefix = this.formatPrefix(entry);\r\n const metaStr = metadata !== undefined ? ` ${JSON.stringify(metadata)}` : '';\r\n\r\n switch (level) {\r\n case 'debug':\r\n console.debug(`${prefix} ${message}${metaStr}`);\r\n break;\r\n case 'info':\r\n console.info(`${prefix} ${message}${metaStr}`);\r\n break;\r\n case 'warn':\r\n console.warn(`${prefix} ${message}${metaStr}`);\r\n break;\r\n case 'error':\r\n console.error(`${prefix} ${message}${metaStr}`);\r\n break;\r\n }\r\n }\r\n\r\n private formatPrefix(entry: LogEntry): string {\r\n const time = entry.timestamp.toISOString();\r\n const levelUpper = entry.level.toUpperCase().padEnd(5);\r\n const context = entry.context !== undefined && entry.context !== '' ? `[${entry.context}]` : '';\r\n return `${time} ${levelUpper}${context}`;\r\n }\r\n}\r\n\r\n/**\r\n * Silent Logger (for testing)\r\n */\r\nexport class SilentLogger implements ILogger {\r\n debug(): void {}\r\n info(): void {}\r\n warn(): void {}\r\n error(): void {}\r\n setContext(): void {}\r\n setLevel(): void {}\r\n}\r\n\r\n/**\r\n * Memory Logger (for testing - stores logs in memory)\r\n */\r\nexport class MemoryLogger implements ILogger {\r\n private logs: LogEntry[] = [];\r\n private context: string = '';\r\n private level: LogLevel = 'debug';\r\n\r\n setContext(context: string): void {\r\n this.context = context;\r\n }\r\n\r\n setLevel(level: LogLevel): void {\r\n this.level = level;\r\n }\r\n\r\n debug(message: string, metadata?: Record<string, unknown>): void {\r\n this.addLog('debug', message, metadata);\r\n }\r\n\r\n info(message: string, metadata?: Record<string, unknown>): void {\r\n this.addLog('info', message, metadata);\r\n }\r\n\r\n warn(message: string, metadata?: Record<string, unknown>): void {\r\n this.addLog('warn', message, metadata);\r\n }\r\n\r\n error(message: string, metadata?: Record<string, unknown>): void {\r\n this.addLog('error', message, metadata);\r\n }\r\n\r\n private addLog(level: LogLevel, message: string, metadata?: Record<string, unknown>): void {\r\n if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) {\r\n return;\r\n }\r\n\r\n this.logs.push({\r\n level,\r\n message,\r\n timestamp: new Date(),\r\n context: this.context !== '' ? this.context : undefined,\r\n metadata,\r\n });\r\n }\r\n\r\n /**\r\n * Get all logs\r\n */\r\n getLogs(): LogEntry[] {\r\n return [...this.logs];\r\n }\r\n\r\n /**\r\n * Get logs by level\r\n */\r\n getLogsByLevel(level: LogLevel): LogEntry[] {\r\n return this.logs.filter((log) => log.level === level);\r\n }\r\n\r\n /**\r\n * Clear all logs\r\n */\r\n clear(): void {\r\n this.logs = [];\r\n }\r\n\r\n /**\r\n * Check if any errors were logged\r\n */\r\n hasErrors(): boolean {\r\n return this.logs.some((log) => log.level === 'error');\r\n }\r\n\r\n /**\r\n * Check if any warnings were logged\r\n */\r\n hasWarnings(): boolean {\r\n return this.logs.some((log) => log.level === 'warn');\r\n }\r\n}\r\n\r\n/**\r\n * Create default logger\r\n */\r\nexport function createLogger(options?: {\r\n context?: string;\r\n level?: LogLevel;\r\n silent?: boolean;\r\n}): ILogger {\r\n if (options?.silent === true) {\r\n return new SilentLogger();\r\n }\r\n return new ConsoleLogger(options);\r\n}\r\n\r\n/**\r\n * Get environment-safe log level\r\n * Works in both Node.js and browser environments\r\n */\r\nfunction getDefaultLogLevel(): LogLevel {\r\n // Check if we're in a Node.js environment with process available\r\n if (typeof process !== 'undefined' && process.env?.['NODE_ENV'] === 'production') {\r\n return 'info';\r\n }\r\n // In browser or development, default to debug\r\n return 'debug';\r\n}\r\n\r\n/**\r\n * Default logger instance\r\n */\r\nexport const logger = createLogger({\r\n context: 'NikkoryVibe',\r\n level: getDefaultLogLevel(),\r\n});\r\n","/**\r\n * Generate Component Validator\r\n *\r\n * Validates GenerateComponentDto before processing.\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { Result } from '../types/Result';\r\n\r\nimport { ValidationError } from './errors';\r\n\r\nimport type { GenerateComponentDto } from '../types';\r\n\r\nconst VALID_DESIGN_SYSTEMS = [\r\n 'material-design',\r\n 'ios-hig',\r\n 'glassmorphism',\r\n 'neumorphism',\r\n 'brutalism',\r\n 'minimalism',\r\n];\r\n\r\nconst VALID_TIERS = ['basic', 'standard', 'enterprise'];\r\n\r\nconst VALID_FRAMEWORKS = ['react', 'vue', 'angular', 'svelte', 'solid'];\r\n\r\nconst VALID_TEMPLATES = [\r\n 'button',\r\n 'input',\r\n 'card',\r\n 'modal',\r\n 'tabs',\r\n 'table',\r\n 'list',\r\n 'form',\r\n 'checkbox',\r\n 'radio-group',\r\n 'select',\r\n 'switch',\r\n 'slider',\r\n 'progress',\r\n 'spinner',\r\n 'tooltip',\r\n 'popover',\r\n 'menu',\r\n 'drawer',\r\n 'accordion',\r\n 'breadcrumb',\r\n 'pagination',\r\n 'stepper',\r\n 'divider',\r\n 'skeleton',\r\n 'chip',\r\n 'badge',\r\n 'avatar',\r\n 'alert',\r\n 'navigation',\r\n 'dropdown',\r\n 'toggle',\r\n 'date-picker',\r\n 'timeline',\r\n 'rating',\r\n 'calendar',\r\n 'carousel',\r\n 'transfer',\r\n 'tree',\r\n];\r\n\r\nexport interface ValidationResult {\r\n isValid: boolean;\r\n errors: string[];\r\n}\r\n\r\n/**\r\n * Validate GenerateComponentDto\r\n */\r\nexport function validateGenerateComponentDto(\r\n dto: GenerateComponentDto\r\n): Result<void, ValidationError> {\r\n const errors: string[] = [];\r\n\r\n // Validate template\r\n if (dto.template === undefined || dto.template === '') {\r\n errors.push('Template is required');\r\n } else if (!VALID_TEMPLATES.includes(dto.template)) {\r\n errors.push(\r\n `Invalid template: \"${dto.template}\". Valid templates: ${VALID_TEMPLATES.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate name (PascalCase)\r\n if (dto.name === undefined || dto.name === '') {\r\n errors.push('Component name is required');\r\n } else if (!/^[A-Z][a-zA-Z0-9]*$/.test(dto.name)) {\r\n errors.push('Component name must be PascalCase (e.g., \"MyComponent\", \"PrimaryButton\")');\r\n } else if (dto.name.length > 100) {\r\n errors.push('Component name too long (max 100 characters)');\r\n }\r\n\r\n // Validate design system\r\n if (dto.designSystem === undefined || dto.designSystem === '') {\r\n errors.push('Design system is required');\r\n } else if (!VALID_DESIGN_SYSTEMS.includes(dto.designSystem)) {\r\n errors.push(\r\n `Invalid design system: \"${dto.designSystem}\". Valid options: ${VALID_DESIGN_SYSTEMS.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate tier\r\n if (dto.tier === undefined) {\r\n errors.push('Tier is required');\r\n } else if (!VALID_TIERS.includes(dto.tier)) {\r\n errors.push(`Invalid tier: \"${dto.tier}\". Valid options: ${VALID_TIERS.join(', ')}`);\r\n }\r\n\r\n // Validate framework (optional)\r\n if (dto.framework !== undefined && !VALID_FRAMEWORKS.includes(dto.framework)) {\r\n errors.push(\r\n `Invalid framework: \"${dto.framework}\". Valid options: ${VALID_FRAMEWORKS.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate output path (no path traversal)\r\n if (dto.outputPath !== undefined && dto.outputPath !== '') {\r\n if (dto.outputPath.includes('..')) {\r\n errors.push('Output path cannot contain \"..\" (path traversal)');\r\n }\r\n if (!/\\.(tsx?|jsx?)$/.test(dto.outputPath)) {\r\n errors.push('Output path must end with .ts, .tsx, .js, or .jsx');\r\n }\r\n }\r\n\r\n // Validate variants\r\n if (dto.variants !== undefined) {\r\n if (!Array.isArray(dto.variants)) {\r\n errors.push('Variants must be an array');\r\n } else if (dto.variants.some((v: unknown) => typeof v !== 'string')) {\r\n errors.push('All variants must be strings');\r\n }\r\n }\r\n\r\n // Validate props\r\n if (dto.props !== undefined) {\r\n if (typeof dto.props !== 'object' || Array.isArray(dto.props)) {\r\n errors.push('Props must be an object');\r\n }\r\n }\r\n\r\n // Return result\r\n if (errors.length > 0) {\r\n return Result.fail(new ValidationError(errors.join('; '), { errors }));\r\n }\r\n\r\n return Result.ok();\r\n}\r\n\r\n/**\r\n * Get list of valid templates\r\n */\r\nexport function getValidTemplates(): string[] {\r\n return [...VALID_TEMPLATES];\r\n}\r\n\r\n/**\r\n * Get list of valid design systems\r\n */\r\nexport function getValidDesignSystems(): string[] {\r\n return [...VALID_DESIGN_SYSTEMS];\r\n}\r\n\r\n/**\r\n * Get list of valid tiers\r\n */\r\nexport function getValidTiers(): string[] {\r\n return [...VALID_TIERS];\r\n}\r\n\r\n/**\r\n * Get list of valid frameworks\r\n */\r\nexport function getValidFrameworks(): string[] {\r\n return [...VALID_FRAMEWORKS];\r\n}\r\n","/**\r\n * Performance Utilities\r\n *\r\n * Cross-platform performance measurement utilities.\r\n *\r\n * @packageDocumentation\r\n * @module utils/performance\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Get high-resolution timestamp.\r\n * Uses performance.now() in browsers, Date.now() in Node.js.\r\n *\r\n * @returns Timestamp in milliseconds\r\n *\r\n * @example\r\n * ```typescript\r\n * const start = now();\r\n * // ... operations ...\r\n * const duration = now() - start;\r\n * ```\r\n */\r\nexport function now(): number {\r\n return typeof performance !== 'undefined' ? performance.now() : Date.now();\r\n}\r\n","/**\r\n * String Utilities\r\n *\r\n * Safe stringification for any value type.\r\n *\r\n * @packageDocumentation\r\n * @module utils/stringify\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/**\r\n * Safely convert any value to string.\r\n * Handles objects, arrays, primitives.\r\n *\r\n * @param value - Value to stringify\r\n * @returns String representation\r\n *\r\n * @example\r\n * ```typescript\r\n * safeStringify({ foo: 'bar' }) // '{\"foo\":\"bar\"}'\r\n * safeStringify('hello') // 'hello'\r\n * safeStringify(123) // '123'\r\n * safeStringify(undefined) // 'undefined'\r\n * ```\r\n */\r\nexport function safeStringify(value: unknown): string {\r\n if (value === null) return 'null';\r\n if (value === undefined) return 'undefined';\r\n if (typeof value === 'string') return value;\r\n if (typeof value === 'number') return String(value);\r\n if (typeof value === 'boolean') return String(value);\r\n if (typeof value === 'object') {\r\n try {\r\n return JSON.stringify(value);\r\n } catch {\r\n return '[object]';\r\n }\r\n }\r\n if (typeof value === 'function') return '[Function]';\r\n if (typeof value === 'symbol') return value.toString();\r\n return '[Unknown]';\r\n}\r\n","/**\r\n * Factor Resolver - Dynamic Factor Resolution for Granularity Levels\r\n *\r\n * This module provides functions to dynamically resolve which factors\r\n * apply at each granularity level based on factor definitions with\r\n * `level` and `cascadeDown` fields.\r\n *\r\n * Key Functions:\r\n * - `getFactorsForLevel()` - Get all applicable factors for a level\r\n * - `getFactorDefinition()` - Get a single factor by ID\r\n * - `resolveFactorValue()` - Resolve a factor's value with cascade logic\r\n *\r\n * @packageDocumentation\r\n * @module utils/factor-resolver\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { FACTOR_REGISTRY, getFactorById } from '../ui-studio/presets/factor-registry';\r\nimport { getGranularityRank } from '../types/granularity';\r\n\r\nimport type { DesignSystem } from '../types';\r\nimport type {\r\n GranularityFactorCategory,\r\n GranularityFactorDefinition,\r\n GranularityFactorValues,\r\n GranularityLevel,\r\n} from '../types/granularity';\r\n\r\n// ============================================================================\r\n// MAIN FACTOR RESOLUTION FUNCTION\r\n// ============================================================================\r\n\r\n/**\r\n * Get all factors applicable at a given granularity level\r\n *\r\n * This function dynamically resolves which factors apply at a level by:\r\n * 1. Including factors defined at the exact level\r\n * 2. Including factors from higher levels that have `cascadeDown: true`\r\n *\r\n * This REPLACES hardcoded 8/13/24 factor arrays with dynamic resolution.\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level to query\r\n * @returns Array of factor definitions applicable at this level\r\n *\r\n * @example\r\n * ```typescript\r\n * // Template level gets 8 factors (defined at template level)\r\n * const templateFactors = getFactorsForLevel('template');\r\n * console.log(templateFactors.length); // 8\r\n *\r\n * // Page level gets template factors + page-specific = 13\r\n * const pageFactors = getFactorsForLevel('page');\r\n * console.log(pageFactors.length); // 13\r\n *\r\n * // Section level gets cascading + section-specific = 18\r\n * const sectionFactors = getFactorsForLevel('section');\r\n * console.log(sectionFactors.length); // 18\r\n *\r\n * // Component level gets all 24 factors\r\n * const componentFactors = getFactorsForLevel('component');\r\n * console.log(componentFactors.length); // 24\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorsForLevel(\r\n level: GranularityLevel\r\n): readonly GranularityFactorDefinition[] {\r\n const levelRank = getGranularityRank(level);\r\n\r\n return FACTOR_REGISTRY.filter((factor) => {\r\n const factorRank = getGranularityRank(factor.level);\r\n\r\n // Factor applies if:\r\n // 1. Defined at this exact level, OR\r\n // 2. Defined at higher level AND cascadeDown is true\r\n if (factor.level === level) {\r\n return true;\r\n }\r\n\r\n if (factorRank > levelRank && factor.cascadeDown) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n}\r\n\r\n/**\r\n * Get factor IDs applicable at a given granularity level\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level to query\r\n * @returns Array of factor IDs applicable at this level\r\n *\r\n * @example\r\n * ```typescript\r\n * const pageFactorIds = getFactorIdsForLevel('page');\r\n * console.log(pageFactorIds); // ['colorPrimary', 'spacing', ...]\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorIdsForLevel(level: GranularityLevel): readonly string[] {\r\n return getFactorsForLevel(level).map((f) => f.id);\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR DEFINITION LOOKUP\r\n// ============================================================================\r\n\r\n/**\r\n * Get a factor definition by ID\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param factorId - The factor ID to look up\r\n * @returns The factor definition\r\n * @throws Error if factor not found\r\n *\r\n * @example\r\n * ```typescript\r\n * const factor = getFactorDefinition('spacing');\r\n * console.log(factor.level); // 'template'\r\n * console.log(factor.cascadeDown); // true\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorDefinition(factorId: string): GranularityFactorDefinition {\r\n const factor = getFactorById(factorId);\r\n if (factor === undefined) {\r\n throw new Error(\r\n `Factor not found: \"${factorId}\". Valid factors: ${getAllFactorIds().join(', ')}`\r\n );\r\n }\r\n return factor;\r\n}\r\n\r\n/**\r\n * Safely get a factor definition by ID (returns undefined if not found)\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param factorId - The factor ID to look up\r\n * @returns The factor definition or undefined\r\n *\r\n * @example\r\n * ```typescript\r\n * const factor = tryGetFactorDefinition('spacing');\r\n * if (factor) {\r\n * console.log(factor.name);\r\n * }\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function tryGetFactorDefinition(factorId: string): GranularityFactorDefinition | undefined {\r\n return getFactorById(factorId);\r\n}\r\n\r\n/**\r\n * Get all factor IDs in the registry\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @returns Array of all registered factor IDs\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getAllFactorIds(): readonly string[] {\r\n return FACTOR_REGISTRY.map((f) => f.id);\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR VALUE RESOLUTION\r\n// ============================================================================\r\n\r\n/**\r\n * Options for resolving factor values\r\n *\r\n * @category types\r\n * @since 4.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport interface ResolveFactorOptions {\r\n /** Design system for default values */\r\n readonly designSystem: DesignSystem;\r\n /** Parent factor values (for cascade) */\r\n readonly parentFactors?: GranularityFactorValues;\r\n /** Explicit overrides (highest priority) */\r\n readonly overrides?: GranularityFactorValues;\r\n}\r\n\r\n/**\r\n * Resolve a single factor's value with cascade priority\r\n *\r\n * Priority order (highest to lowest):\r\n * 1. Explicit overrides\r\n * 2. Parent cascaded values\r\n * 3. Design system defaults\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param factorId - The factor ID to resolve\r\n * @param options - Resolution options\r\n * @returns The resolved value\r\n *\r\n * @example\r\n * ```typescript\r\n * const value = resolveFactorValue('spacing', {\r\n * designSystem: 'material-design',\r\n * parentFactors: { spacing: 'lg' },\r\n * overrides: { spacing: 'xl' }\r\n * });\r\n * console.log(value); // 'xl' (override wins)\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function resolveFactorValue(factorId: string, options: ResolveFactorOptions): unknown {\r\n const factor = getFactorDefinition(factorId);\r\n\r\n // 1. Check explicit overrides (highest priority)\r\n if (options.overrides?.[factorId] !== undefined) {\r\n return options.overrides[factorId];\r\n }\r\n\r\n // 2. Check parent cascaded values\r\n if (options.parentFactors?.[factorId] !== undefined && factor.cascadeDown) {\r\n return options.parentFactors[factorId];\r\n }\r\n\r\n // 3. Return design system default\r\n return factor.defaults[options.designSystem];\r\n}\r\n\r\n/**\r\n * Resolve all factors for a level with cascade\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level\r\n * @param options - Resolution options\r\n * @returns Object with all resolved factor values\r\n *\r\n * @example\r\n * ```typescript\r\n * const values = resolveAllFactors('section', {\r\n * designSystem: 'material-design',\r\n * parentFactors: { spacing: 'lg', theme: 'dark' }\r\n * });\r\n * console.log(values.spacing); // 'lg' (cascaded from parent)\r\n * console.log(values.gridColumns); // 12 (default)\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function resolveAllFactors(\r\n level: GranularityLevel,\r\n options: ResolveFactorOptions\r\n): GranularityFactorValues {\r\n const factors = getFactorsForLevel(level);\r\n const result: Record<string, unknown> = {};\r\n\r\n for (const factor of factors) {\r\n result[factor.id] = resolveFactorValue(factor.id, options);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR FILTERING\r\n// ============================================================================\r\n\r\n/**\r\n * Filter factors by category for a given level\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level\r\n * @param categories - Categories to include\r\n * @returns Filtered factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const visualFactors = filterFactorsByCategory('section', ['visual']);\r\n * console.log(visualFactors.length); // Visual factors applicable at section level\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function filterFactorsByCategory(\r\n level: GranularityLevel,\r\n categories: readonly GranularityFactorCategory[]\r\n): readonly GranularityFactorDefinition[] {\r\n return getFactorsForLevel(level).filter((f) => categories.includes(f.category));\r\n}\r\n\r\n/**\r\n * Filter factors that cascade down\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level\r\n * @returns Only factors that cascade to child levels\r\n *\r\n * @example\r\n * ```typescript\r\n * const cascading = getCascadingFactors('page');\r\n * // Returns page-level factors that will cascade to sections\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getCascadingFactors(\r\n level: GranularityLevel\r\n): readonly GranularityFactorDefinition[] {\r\n return getFactorsForLevel(level).filter((f) => f.cascadeDown);\r\n}\r\n\r\n/**\r\n * Filter factors that do NOT cascade down\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level\r\n * @returns Only factors that are local to this level\r\n *\r\n * @example\r\n * ```typescript\r\n * const local = getLocalFactors('section');\r\n * // Returns section-specific factors that don't cascade\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getLocalFactors(level: GranularityLevel): readonly GranularityFactorDefinition[] {\r\n return getFactorsForLevel(level).filter((f) => !f.cascadeDown);\r\n}\r\n\r\n// ============================================================================\r\n// FACTOR COUNT HELPERS\r\n// ============================================================================\r\n\r\n/**\r\n * Get factor count for a level (for debugging/display)\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @param level - The granularity level\r\n * @returns Number of applicable factors\r\n *\r\n * @example\r\n * ```typescript\r\n * getFactorCountForLevel('template'); // 8\r\n * getFactorCountForLevel('page'); // 13\r\n * getFactorCountForLevel('section'); // 18\r\n * getFactorCountForLevel('component'); // 24\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorCountForLevel(level: GranularityLevel): number {\r\n return getFactorsForLevel(level).length;\r\n}\r\n\r\n/**\r\n * Get factor count breakdown by level\r\n *\r\n * @category utils\r\n * @since 4.0.0\r\n *\r\n * @returns Object with factor counts per level\r\n *\r\n * @example\r\n * ```typescript\r\n * const counts = getFactorCountsByLevel();\r\n * console.log(counts);\r\n * // {\r\n * // template: 8,\r\n * // layout: 8,\r\n * // page: 13,\r\n * // section: 18,\r\n * // component: 24,\r\n * // atom: 24\r\n * // }\r\n * ```\r\n *\r\n * Powered by Nikkory\r\n */\r\nexport function getFactorCountsByLevel(): Record<GranularityLevel, number> {\r\n return {\r\n template: getFactorCountForLevel('template'),\r\n layout: getFactorCountForLevel('layout'),\r\n page: getFactorCountForLevel('page'),\r\n section: getFactorCountForLevel('section'),\r\n component: getFactorCountForLevel('component'),\r\n atom: getFactorCountForLevel('atom'),\r\n };\r\n}\r\n","/**\n * Granularity Helpers - Utility Functions for Granularity Level Operations\n *\n * This module provides helper functions for working with the 6-level\n * granularity hierarchy:\n * - Comparing levels (isHigherGranularity, isLowerGranularity)\n * - Finding child/parent levels (getChildGranularities, getParentGranularity)\n * - Level validation and lookup\n *\n * @packageDocumentation\n * @module utils/granularity-helpers\n * @since 4.0.0\n *\n * Powered by Nikkory\n */\n\nimport { GRANULARITY_HIERARCHY, getGranularityRank } from '../types/granularity';\n\nimport type { GranularityLevel } from '../types/granularity';\n\n// ============================================================================\n// LEVEL COMPARISON\n// ============================================================================\n\n/**\n * Check if level A is higher than level B in the hierarchy\n *\n * Template (6) > Layout (5) > Page (4) > Section (3) > Component (2) > Atom (1)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param levelA - First granularity level\n * @param levelB - Second granularity level\n * @returns True if levelA is higher than levelB\n *\n * @example\n * ```typescript\n * isHigherGranularity('template', 'page'); // true\n * isHigherGranularity('section', 'page'); // false\n * isHigherGranularity('page', 'page'); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function isHigherGranularity(levelA: GranularityLevel, levelB: GranularityLevel): boolean {\n return getGranularityRank(levelA) > getGranularityRank(levelB);\n}\n\n/**\n * Check if level A is lower than level B in the hierarchy\n *\n * Atom (1) < Component (2) < Section (3) < Page (4) < Layout (5) < Template (6)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param levelA - First granularity level\n * @param levelB - Second granularity level\n * @returns True if levelA is lower than levelB\n *\n * @example\n * ```typescript\n * isLowerGranularity('atom', 'component'); // true\n * isLowerGranularity('page', 'section'); // false\n * isLowerGranularity('page', 'page'); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function isLowerGranularity(levelA: GranularityLevel, levelB: GranularityLevel): boolean {\n return getGranularityRank(levelA) < getGranularityRank(levelB);\n}\n\n/**\n * Check if two levels are at the same rank\n *\n * @category utils\n * @since 4.0.0\n *\n * @param levelA - First granularity level\n * @param levelB - Second granularity level\n * @returns True if levels are the same\n *\n * @example\n * ```typescript\n * isSameGranularity('page', 'page'); // true\n * isSameGranularity('page', 'section'); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function isSameGranularity(levelA: GranularityLevel, levelB: GranularityLevel): boolean {\n return levelA === levelB;\n}\n\n/**\n * Check if level A is higher than or equal to level B\n *\n * @category utils\n * @since 4.0.0\n *\n * @param levelA - First granularity level\n * @param levelB - Second granularity level\n * @returns True if levelA is >= levelB\n *\n * @example\n * ```typescript\n * isHigherOrEqualGranularity('page', 'section'); // true\n * isHigherOrEqualGranularity('page', 'page'); // true\n * isHigherOrEqualGranularity('section', 'page'); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function isHigherOrEqualGranularity(\n levelA: GranularityLevel,\n levelB: GranularityLevel\n): boolean {\n return getGranularityRank(levelA) >= getGranularityRank(levelB);\n}\n\n/**\n * Check if level A is lower than or equal to level B\n *\n * @category utils\n * @since 4.0.0\n *\n * @param levelA - First granularity level\n * @param levelB - Second granularity level\n * @returns True if levelA is <= levelB\n *\n * @example\n * ```typescript\n * isLowerOrEqualGranularity('section', 'page'); // true\n * isLowerOrEqualGranularity('page', 'page'); // true\n * isLowerOrEqualGranularity('page', 'section'); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function isLowerOrEqualGranularity(\n levelA: GranularityLevel,\n levelB: GranularityLevel\n): boolean {\n return getGranularityRank(levelA) <= getGranularityRank(levelB);\n}\n\n// ============================================================================\n// CHILD/PARENT LEVEL RESOLUTION\n// ============================================================================\n\n/**\n * Get all granularity levels that can be children of a given level\n *\n * Children are all levels LOWER than the parent level.\n *\n * @category utils\n * @since 4.0.0\n *\n * @param parentLevel - The parent granularity level\n * @returns Array of child granularity levels (lower levels)\n *\n * @example\n * ```typescript\n * getChildGranularities('page');\n * // ['section', 'component', 'atom']\n *\n * getChildGranularities('section');\n * // ['component', 'atom']\n *\n * getChildGranularities('atom');\n * // [] (atom has no children)\n * ```\n *\n * Powered by Nikkory\n */\nexport function getChildGranularities(parentLevel: GranularityLevel): readonly GranularityLevel[] {\n const parentRank = getGranularityRank(parentLevel);\n\n return GRANULARITY_HIERARCHY.filter((level) => {\n const levelRank = getGranularityRank(level);\n return levelRank < parentRank;\n });\n}\n\n/**\n * Get the immediate child level (one level down)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param level - The current granularity level\n * @returns The immediate child level, or undefined if at lowest level\n *\n * @example\n * ```typescript\n * getImmediateChildLevel('page'); // 'section'\n * getImmediateChildLevel('section'); // 'component'\n * getImmediateChildLevel('atom'); // undefined\n * ```\n *\n * Powered by Nikkory\n */\nexport function getImmediateChildLevel(level: GranularityLevel): GranularityLevel | undefined {\n const index = GRANULARITY_HIERARCHY.indexOf(level);\n if (index === -1 || index === GRANULARITY_HIERARCHY.length - 1) {\n return undefined;\n }\n return GRANULARITY_HIERARCHY[index + 1];\n}\n\n/**\n * Get the parent level (one level up)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param level - The current granularity level\n * @returns The parent level, or undefined if at highest level\n *\n * @example\n * ```typescript\n * getParentGranularity('section'); // 'page'\n * getParentGranularity('page'); // 'layout'\n * getParentGranularity('template'); // undefined\n * ```\n *\n * Powered by Nikkory\n */\nexport function getParentGranularity(level: GranularityLevel): GranularityLevel | undefined {\n const index = GRANULARITY_HIERARCHY.indexOf(level);\n if (index === -1 || index === 0) {\n return undefined;\n }\n return GRANULARITY_HIERARCHY[index - 1];\n}\n\n/**\n * Get all ancestor levels (all levels higher than the given level)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param level - The current granularity level\n * @returns Array of ancestor levels (higher levels)\n *\n * @example\n * ```typescript\n * getAncestorGranularities('section');\n * // ['template', 'layout', 'page']\n *\n * getAncestorGranularities('template');\n * // [] (template has no ancestors)\n * ```\n *\n * Powered by Nikkory\n */\nexport function getAncestorGranularities(level: GranularityLevel): readonly GranularityLevel[] {\n const currentRank = getGranularityRank(level);\n\n return GRANULARITY_HIERARCHY.filter((l) => {\n const levelRank = getGranularityRank(l);\n return levelRank > currentRank;\n });\n}\n\n// ============================================================================\n// LEVEL VALIDATION\n// ============================================================================\n\n/**\n * Check if a string is a valid granularity level\n *\n * @category utils\n * @since 4.0.0\n *\n * @param value - The value to check\n * @returns True if the value is a valid GranularityLevel\n *\n * @example\n * ```typescript\n * isValidGranularityLevel('page'); // true\n * isValidGranularityLevel('invalid'); // false\n * isValidGranularityLevel(123); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function isValidGranularityLevel(value: unknown): value is GranularityLevel {\n return typeof value === 'string' && GRANULARITY_HIERARCHY.includes(value as GranularityLevel);\n}\n\n/**\n * Assert that a value is a valid granularity level\n *\n * @category utils\n * @since 4.0.0\n *\n * @param value - The value to check\n * @throws Error if not a valid granularity level\n *\n * @example\n * ```typescript\n * assertGranularityLevel('page'); // OK\n * assertGranularityLevel('invalid'); // throws Error\n * ```\n *\n * Powered by Nikkory\n */\nexport function assertGranularityLevel(value: unknown): asserts value is GranularityLevel {\n if (!isValidGranularityLevel(value)) {\n throw new Error(\n `Invalid granularity level: \"${String(value)}\". ` +\n `Valid levels: ${GRANULARITY_HIERARCHY.join(', ')}`\n );\n }\n}\n\n// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\n\n/**\n * Get all granularity levels\n *\n * @category utils\n * @since 4.0.0\n *\n * @returns All 6 granularity levels in hierarchy order (highest to lowest)\n *\n * @example\n * ```typescript\n * getAllGranularityLevels();\n * // ['template', 'layout', 'page', 'section', 'component', 'atom']\n * ```\n *\n * Powered by Nikkory\n */\nexport function getAllGranularityLevels(): readonly GranularityLevel[] {\n return GRANULARITY_HIERARCHY;\n}\n\n/**\n * Get the distance between two levels in the hierarchy\n *\n * @category utils\n * @since 4.0.0\n *\n * @param levelA - First granularity level\n * @param levelB - Second granularity level\n * @returns Number of levels between (positive if A > B, negative if A < B)\n *\n * @example\n * ```typescript\n * getLevelDistance('page', 'section'); // 1\n * getLevelDistance('template', 'atom'); // 5\n * getLevelDistance('section', 'page'); // -1\n * getLevelDistance('page', 'page'); // 0\n * ```\n *\n * Powered by Nikkory\n */\nexport function getLevelDistance(levelA: GranularityLevel, levelB: GranularityLevel): number {\n return getGranularityRank(levelA) - getGranularityRank(levelB);\n}\n\n/**\n * Check if a child level can be placed in a parent level\n *\n * A child can be placed in a parent if the child is at a LOWER level.\n *\n * @category utils\n * @since 4.0.0\n *\n * @param parentLevel - The parent granularity level\n * @param childLevel - The child granularity level\n * @returns True if child can be placed in parent\n *\n * @example\n * ```typescript\n * canContain('page', 'section'); // true\n * canContain('section', 'page'); // false\n * canContain('section', 'section'); // false\n * ```\n *\n * Powered by Nikkory\n */\nexport function canContain(parentLevel: GranularityLevel, childLevel: GranularityLevel): boolean {\n return isHigherGranularity(parentLevel, childLevel);\n}\n\n/**\n * Get the highest level in the hierarchy\n *\n * @category utils\n * @since 4.0.0\n *\n * @returns The highest granularity level ('template')\n *\n * @example\n * ```typescript\n * getHighestLevel(); // 'template'\n * ```\n *\n * Powered by Nikkory\n */\nexport function getHighestLevel(): GranularityLevel {\n const level = GRANULARITY_HIERARCHY[0];\n if (level === undefined) {\n throw new Error('GRANULARITY_HIERARCHY is empty');\n }\n return level;\n}\n\n/**\n * Get the lowest level in the hierarchy\n *\n * @category utils\n * @since 4.0.0\n *\n * @returns The lowest granularity level ('atom')\n *\n * @example\n * ```typescript\n * getLowestLevel(); // 'atom'\n * ```\n *\n * Powered by Nikkory\n */\nexport function getLowestLevel(): GranularityLevel {\n const level = GRANULARITY_HIERARCHY[GRANULARITY_HIERARCHY.length - 1];\n if (level === undefined) {\n throw new Error('GRANULARITY_HIERARCHY is empty');\n }\n return level;\n}\n\n/**\n * Get levels between two levels (exclusive)\n *\n * @category utils\n * @since 4.0.0\n *\n * @param higherLevel - The higher level\n * @param lowerLevel - The lower level\n * @returns Levels between (not including the endpoints)\n *\n * @example\n * ```typescript\n * getLevelsBetween('template', 'section');\n * // ['layout', 'page']\n *\n * getLevelsBetween('page', 'component');\n * // ['section']\n *\n * getLevelsBetween('page', 'section');\n * // [] (adjacent levels)\n * ```\n *\n * Powered by Nikkory\n */\nexport function getLevelsBetween(\n higherLevel: GranularityLevel,\n lowerLevel: GranularityLevel\n): readonly GranularityLevel[] {\n const higherRank = getGranularityRank(higherLevel);\n const lowerRank = getGranularityRank(lowerLevel);\n\n if (higherRank <= lowerRank) {\n return [];\n }\n\n return GRANULARITY_HIERARCHY.filter((level) => {\n const rank = getGranularityRank(level);\n return rank < higherRank && rank > lowerRank;\n });\n}\n","/**\r\n * Adapters Module\r\n *\r\n * Adapter layer for backward compatibility and integration.\r\n *\r\n * @packageDocumentation\r\n * @module adapters\r\n * @since 3.0.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n// TFCG Adapter temporarily disabled due to missing '@nikkory/tfcg' dependency\r\n// export {\r\n// TFCGAdapter,\r\n// getTFCGAdapter,\r\n// convertLegacyOptions,\r\n// convertLegacyBatch,\r\n// } from './tfcg-adapter';\r\n\r\n// export type { LegacyMatrixOptions } from './tfcg-adapter';\r\n\r\n// Placeholder exports to avoid breaking imports\r\nexport class TFCGAdapter {\r\n static getInstance(): TFCGAdapter {\r\n throw new Error('TFCGAdapter not yet implemented');\r\n }\r\n}\r\n\r\nexport function getTFCGAdapter(): TFCGAdapter {\r\n throw new Error('getTFCGAdapter not yet implemented');\r\n}\r\n\r\nexport function convertLegacyOptions(): never {\r\n throw new Error('convertLegacyOptions not yet implemented');\r\n}\r\n\r\nexport function convertLegacyBatch(): never {\r\n throw new Error('convertLegacyBatch not yet implemented');\r\n}\r\n\r\nexport type LegacyMatrixOptions = Record<string, unknown>;\r\n"]}
|