@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.
Files changed (334) hide show
  1. package/README.md +44 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/browser.mjs.map +1 -0
  6. package/dist/cli/batch-command.d.ts.map +1 -0
  7. package/dist/cli/generate-command.d.ts.map +1 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/logo.d.ts.map +1 -0
  10. package/dist/constants/ComponentTypes.d.ts.map +1 -0
  11. package/dist/constants/DesignSystems.d.ts.map +1 -0
  12. package/dist/constants/Frameworks.d.ts.map +1 -0
  13. package/dist/constants/Tiers.d.ts.map +1 -0
  14. package/dist/constants/index.d.ts.map +1 -0
  15. package/dist/converters/index.d.ts.map +1 -0
  16. package/dist/converters/section-converter.d.ts.map +1 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/index.mjs.map +1 -0
  20. package/dist/resolution/basic/groups-basic.d.ts.map +1 -0
  21. package/dist/resolution/basic/index.d.ts.map +1 -0
  22. package/dist/resolution/basic/intents-basic.d.ts.map +1 -0
  23. package/dist/resolution/basic/presets-basic.d.ts.map +1 -0
  24. package/dist/resolution/basic/resolver-basic.d.ts.map +1 -0
  25. package/dist/resolution/basic/shorthands-basic.d.ts.map +1 -0
  26. package/dist/resolution/core/groups-core.d.ts.map +1 -0
  27. package/dist/resolution/core/index.d.ts.map +1 -0
  28. package/dist/resolution/core/intents-core.d.ts.map +1 -0
  29. package/dist/resolution/core/presets-core.d.ts.map +1 -0
  30. package/dist/resolution/core/resolver-core.d.ts.map +1 -0
  31. package/dist/resolution/core/shorthands-core.d.ts.map +1 -0
  32. package/dist/resolution/core/types-core.d.ts.map +1 -0
  33. package/dist/resolution/debugger.d.ts.map +1 -0
  34. package/dist/resolution/demo.d.ts.map +1 -0
  35. package/dist/resolution/enterprise/index.d.ts.map +1 -0
  36. package/dist/resolution/enterprise/metrics.d.ts.map +1 -0
  37. package/dist/resolution/enterprise/resolver-enterprise.d.ts.map +1 -0
  38. package/dist/resolution/examples.d.ts.map +1 -0
  39. package/dist/resolution/groups/experience-group.d.ts.map +1 -0
  40. package/dist/resolution/groups/index.d.ts.map +1 -0
  41. package/dist/resolution/groups/layout-group.d.ts.map +1 -0
  42. package/dist/resolution/groups/motion-group.d.ts.map +1 -0
  43. package/dist/resolution/groups/visual-group.d.ts.map +1 -0
  44. package/dist/resolution/index.d.ts.map +1 -0
  45. package/dist/resolution/intents/button-intents.d.ts.map +1 -0
  46. package/dist/resolution/intents/card-intents.d.ts.map +1 -0
  47. package/dist/resolution/intents/feedback-intents.d.ts.map +1 -0
  48. package/dist/resolution/intents/index.d.ts.map +1 -0
  49. package/dist/resolution/intents/input-intents.d.ts.map +1 -0
  50. package/dist/resolution/intents/mood-modifiers.d.ts.map +1 -0
  51. package/dist/resolution/performance.d.ts.map +1 -0
  52. package/dist/resolution/presets/button-presets.d.ts.map +1 -0
  53. package/dist/resolution/presets/card-presets.d.ts.map +1 -0
  54. package/dist/resolution/presets/data-display-presets.d.ts.map +1 -0
  55. package/dist/resolution/presets/feedback-presets.d.ts.map +1 -0
  56. package/dist/resolution/presets/form-presets.d.ts.map +1 -0
  57. package/dist/resolution/presets/index.d.ts.map +1 -0
  58. package/dist/resolution/presets/input-presets.d.ts.map +1 -0
  59. package/dist/resolution/presets/nav-presets.d.ts.map +1 -0
  60. package/dist/resolution/presets/overlay-presets.d.ts.map +1 -0
  61. package/dist/resolution/presets/preset-registry.d.ts.map +1 -0
  62. package/dist/resolution/resolveProps.d.ts.map +1 -0
  63. package/dist/resolution/shorthand/feel-mappings.d.ts.map +1 -0
  64. package/dist/resolution/shorthand/index.d.ts.map +1 -0
  65. package/dist/resolution/shorthand/look-mappings.d.ts.map +1 -0
  66. package/dist/resolution/shorthand/spacing-mappings.d.ts.map +1 -0
  67. package/dist/resolution/shorthand/surface-mappings.d.ts.map +1 -0
  68. package/dist/resolution/standard/groups-standard.d.ts.map +1 -0
  69. package/dist/resolution/standard/index.d.ts.map +1 -0
  70. package/dist/resolution/standard/intents-standard.d.ts.map +1 -0
  71. package/dist/resolution/standard/presets-standard.d.ts.map +1 -0
  72. package/dist/resolution/standard/resolver-standard.d.ts.map +1 -0
  73. package/dist/resolution/standard/shorthands-standard.d.ts.map +1 -0
  74. package/dist/resolution/standard/validators.d.ts.map +1 -0
  75. package/dist/resolution/types.d.ts.map +1 -0
  76. package/dist/resolution/validators/factor24-validator.d.ts.map +1 -0
  77. package/dist/resolution/validators/index.d.ts.map +1 -0
  78. package/dist/scripts/generate-react-library.d.ts.map +1 -0
  79. package/dist/scripts/write-react-library.d.ts.map +1 -0
  80. package/dist/storage/cloud-sync.d.ts.map +1 -0
  81. package/dist/storage/index.d.ts.map +1 -0
  82. package/dist/storage/local-storage.d.ts.map +1 -0
  83. package/dist/storage/section-storage.d.ts.map +1 -0
  84. package/dist/styling/StyleGenerator.d.ts.map +1 -0
  85. package/dist/styling/TokenStyleResolver.d.ts.map +1 -0
  86. package/dist/styling/factor-migration.d.ts.map +1 -0
  87. package/dist/styling/factor-validators.d.ts.map +1 -0
  88. package/dist/styling/factors-1-6.d.ts.map +1 -0
  89. package/dist/styling/factors-12-16.d.ts.map +1 -0
  90. package/dist/styling/factors-17-24.d.ts.map +1 -0
  91. package/dist/styling/factors-all.d.ts.map +1 -0
  92. package/dist/styling/factors.d.ts.map +1 -0
  93. package/dist/styling/index.d.ts.map +1 -0
  94. package/dist/styling/types.d.ts.map +1 -0
  95. package/dist/tokens/schema.d.ts.map +1 -0
  96. package/dist/types/Option.d.ts.map +1 -0
  97. package/dist/types/Result.d.ts.map +1 -0
  98. package/dist/types/algorithm-engine.types.d.ts.map +1 -0
  99. package/dist/types/granularity/base.types.d.ts.map +1 -0
  100. package/dist/types/granularity/config.types.d.ts.map +1 -0
  101. package/dist/types/granularity/factors.types.d.ts.map +1 -0
  102. package/dist/types/granularity/index.d.ts.map +1 -0
  103. package/dist/types/granularity/slot.types.d.ts.map +1 -0
  104. package/dist/types/granularity/template.types.d.ts.map +1 -0
  105. package/dist/types/granularity-levels/atom.config.d.ts.map +1 -0
  106. package/dist/types/granularity-levels/component.config.d.ts.map +1 -0
  107. package/dist/types/granularity-levels/index.d.ts.map +1 -0
  108. package/dist/types/granularity-levels/layout.config.d.ts.map +1 -0
  109. package/dist/types/granularity-levels/page.config.d.ts.map +1 -0
  110. package/dist/types/granularity-levels/section.config.d.ts.map +1 -0
  111. package/dist/types/granularity-levels/template.config.d.ts.map +1 -0
  112. package/dist/types/index.d.ts.map +1 -0
  113. package/dist/types/section-slot.types.d.ts.map +1 -0
  114. package/dist/types/section-storage.types.d.ts.map +1 -0
  115. package/dist/types/section-template.types.d.ts.map +1 -0
  116. package/dist/types/section.types.d.ts.map +1 -0
  117. package/dist/ui-studio/ComponentGenerator.d.ts.map +1 -0
  118. package/dist/ui-studio/composition/FactorPropagator.d.ts.map +1 -0
  119. package/dist/ui-studio/composition/PageGenerator.d.ts.map +1 -0
  120. package/dist/ui-studio/composition/SectionGenerator.d.ts.map +1 -0
  121. package/dist/ui-studio/composition/SlotResolver.d.ts.map +1 -0
  122. package/dist/ui-studio/composition/section-orchestrator.d.ts.map +1 -0
  123. package/dist/ui-studio/granularity/FactorCascade.d.ts.map +1 -0
  124. package/dist/ui-studio/granularity/GranularityGenerator.d.ts.map +1 -0
  125. package/dist/ui-studio/granularity/RecursiveGenerator.d.ts.map +1 -0
  126. package/dist/ui-studio/index.d.ts.map +1 -0
  127. package/dist/ui-studio/matrix/ClassMapper.d.ts.map +1 -0
  128. package/dist/ui-studio/matrix/MatrixResolver.d.ts.map +1 -0
  129. package/dist/ui-studio/matrix/types.d.ts.map +1 -0
  130. package/dist/ui-studio/presets/IndustryDetector.d.ts.map +1 -0
  131. package/dist/ui-studio/presets/component-registry.d.ts.map +1 -0
  132. package/dist/ui-studio/presets/factor-registry.d.ts.map +1 -0
  133. package/dist/ui-studio/presets/granularity-registry.d.ts.map +1 -0
  134. package/dist/ui-studio/presets/index.d.ts.map +1 -0
  135. package/dist/ui-studio/presets/industries.d.ts.map +1 -0
  136. package/dist/ui-studio/presets/layout-registry.d.ts.map +1 -0
  137. package/dist/ui-studio/presets/matrix-groups.d.ts.map +1 -0
  138. package/dist/ui-studio/presets/page-registry.d.ts.map +1 -0
  139. package/dist/ui-studio/presets/registry.constants.d.ts.map +1 -0
  140. package/dist/ui-studio/presets/registry.types.d.ts.map +1 -0
  141. package/dist/ui-studio/presets/section-defaults.d.ts.map +1 -0
  142. package/dist/ui-studio/presets/section-registry.d.ts.map +1 -0
  143. package/dist/ui-studio/presets/section-registry.defaults.d.ts.map +1 -0
  144. package/dist/ui-studio/presets/section-registry.helpers.d.ts.map +1 -0
  145. package/dist/ui-studio/presets/section-registry.types.d.ts.map +1 -0
  146. package/dist/ui-studio/presets/template-registry.d.ts.map +1 -0
  147. package/dist/ui-studio/presets/variants.d.ts.map +1 -0
  148. package/dist/ui-studio/registries/components-registry.d.ts.map +1 -0
  149. package/dist/ui-studio/registries/design-systems-registry.d.ts.map +1 -0
  150. package/dist/ui-studio/registries/factors-registry.d.ts.map +1 -0
  151. package/dist/ui-studio/registries/tiers-registry.d.ts.map +1 -0
  152. package/dist/ui-studio/resolution/FactorResolver.d.ts.map +1 -0
  153. package/dist/ui-studio/templates/TestGenerator.d.ts.map +1 -0
  154. package/dist/ui-studio/templates/TierGenerator.d.ts.map +1 -0
  155. package/dist/ui-studio/templates/TypesGenerator.d.ts.map +1 -0
  156. package/dist/ui-studio/types/granularity/base.types.d.ts.map +1 -0
  157. package/dist/ui-studio/types/granularity/config.types.d.ts.map +1 -0
  158. package/dist/ui-studio/types/granularity/factors.types.d.ts.map +1 -0
  159. package/dist/ui-studio/types/granularity/index.d.ts.map +1 -0
  160. package/dist/ui-studio/types/granularity/slot.types.d.ts.map +1 -0
  161. package/dist/ui-studio/types/granularity/template.types.d.ts.map +1 -0
  162. package/dist/ui-studio/types/granularity-levels/atom.config.d.ts.map +1 -0
  163. package/dist/ui-studio/types/granularity-levels/component.config.d.ts.map +1 -0
  164. package/dist/ui-studio/types/granularity-levels/index.d.ts.map +1 -0
  165. package/dist/ui-studio/types/granularity-levels/layout.config.d.ts.map +1 -0
  166. package/dist/ui-studio/types/granularity-levels/page.config.d.ts.map +1 -0
  167. package/dist/ui-studio/types/granularity-levels/section.config.d.ts.map +1 -0
  168. package/dist/ui-studio/types/granularity-levels/template.config.d.ts.map +1 -0
  169. package/dist/ui-studio/types.d.ts.map +1 -0
  170. package/dist/utils/CodeUtils.d.ts.map +1 -0
  171. package/dist/utils/GenerateComponentValidator.d.ts.map +1 -0
  172. package/dist/utils/Logger.d.ts.map +1 -0
  173. package/dist/utils/StringUtils.d.ts.map +1 -0
  174. package/dist/utils/ValidationUtils.d.ts.map +1 -0
  175. package/dist/utils/errors/BaseError.d.ts.map +1 -0
  176. package/dist/utils/errors/GenerationError.d.ts.map +1 -0
  177. package/dist/utils/errors/TemplateNotFoundError.d.ts.map +1 -0
  178. package/dist/utils/errors/ValidationError.d.ts.map +1 -0
  179. package/dist/utils/errors/index.d.ts.map +1 -0
  180. package/dist/utils/factor-resolver.d.ts.map +1 -0
  181. package/dist/utils/granularity-helpers.d.ts.map +1 -0
  182. package/dist/utils/index.d.ts.map +1 -0
  183. package/dist/utils/performance.d.ts.map +1 -0
  184. package/dist/utils/stringify.d.ts.map +1 -0
  185. package/dist/validators/component-validator.d.ts.map +1 -0
  186. package/dist/validators/design-system-validator.d.ts.map +1 -0
  187. package/dist/validators/factor-validator.d.ts.map +1 -0
  188. package/dist/validators/index.d.ts.map +1 -0
  189. package/dist/validators/section-validator.d.ts.map +1 -0
  190. package/dist/validators/slot-validator.d.ts.map +1 -0
  191. package/dist/validators/tier-validator.d.ts.map +1 -0
  192. package/package.json +8 -1
  193. package/PUBLISH-GUIDE.md +0 -250
  194. package/PUBLISH-SUCCESS.md +0 -370
  195. package/tests/16-factor-integration.test.d.ts +0 -14
  196. package/tests/16-factor-visual.test.d.ts +0 -14
  197. package/tests/5-level-integration.test.d.ts +0 -14
  198. package/tests/CodeUtils.test.d.ts +0 -7
  199. package/tests/DesignSystems.test.d.ts +0 -7
  200. package/tests/GenerateComponentValidator.test.d.ts +0 -7
  201. package/tests/Logger.test.d.ts +0 -7
  202. package/tests/StringUtils.test.d.ts +0 -7
  203. package/tests/StyleGenerator.test.d.ts +0 -13
  204. package/tests/Tiers.test.d.ts +0 -7
  205. package/tests/TokenRegistry.test.d.ts +0 -14
  206. package/tests/TokenStyleResolver.test.d.ts +0 -13
  207. package/tests/ValidationUtils.test.d.ts +0 -7
  208. package/tests/_pending_fix/Accordion.test.d.ts +0 -13
  209. package/tests/_pending_fix/Alert.test.d.ts +0 -13
  210. package/tests/_pending_fix/AlertDialog.test.d.ts +0 -13
  211. package/tests/_pending_fix/AspectRatio.test.d.ts +0 -13
  212. package/tests/_pending_fix/Autocomplete.test.d.ts +0 -13
  213. package/tests/_pending_fix/Avatar.test.d.ts +0 -13
  214. package/tests/_pending_fix/Badge.test.d.ts +0 -13
  215. package/tests/_pending_fix/Banner.test.d.ts +0 -13
  216. package/tests/_pending_fix/Box.test.d.ts +0 -13
  217. package/tests/_pending_fix/Breadcrumb.test.d.ts +0 -13
  218. package/tests/_pending_fix/Callout.test.d.ts +0 -13
  219. package/tests/_pending_fix/Card.test.d.ts +0 -13
  220. package/tests/_pending_fix/Center.test.d.ts +0 -13
  221. package/tests/_pending_fix/Checkbox.test.d.ts +0 -13
  222. package/tests/_pending_fix/Chip.test.d.ts +0 -13
  223. package/tests/_pending_fix/ColorPicker.test.d.ts +0 -13
  224. package/tests/_pending_fix/Combobox.test.d.ts +0 -13
  225. package/tests/_pending_fix/CommandPalette.test.d.ts +0 -13
  226. package/tests/_pending_fix/ConfirmationModal.test.d.ts +0 -13
  227. package/tests/_pending_fix/Container.test.d.ts +0 -13
  228. package/tests/_pending_fix/DataTable.test.d.ts +0 -13
  229. package/tests/_pending_fix/DatePicker.test.d.ts +0 -13
  230. package/tests/_pending_fix/DateRangePicker.test.d.ts +0 -13
  231. package/tests/_pending_fix/DateTimePicker.test.d.ts +0 -13
  232. package/tests/_pending_fix/Divider.test.d.ts +0 -13
  233. package/tests/_pending_fix/Drawer.test.d.ts +0 -13
  234. package/tests/_pending_fix/Dropdown.test.d.ts +0 -13
  235. package/tests/_pending_fix/EmptyState.test.d.ts +0 -13
  236. package/tests/_pending_fix/ErrorState.test.d.ts +0 -13
  237. package/tests/_pending_fix/FileDropzone.test.d.ts +0 -13
  238. package/tests/_pending_fix/FileUpload.test.d.ts +0 -13
  239. package/tests/_pending_fix/Flex.test.d.ts +0 -13
  240. package/tests/_pending_fix/Grid.test.d.ts +0 -13
  241. package/tests/_pending_fix/GridItem.test.d.ts +0 -13
  242. package/tests/_pending_fix/HStack.test.d.ts +0 -13
  243. package/tests/_pending_fix/Input.test.d.ts +0 -13
  244. package/tests/_pending_fix/InputCurrency.test.d.ts +0 -13
  245. package/tests/_pending_fix/InputGroup.test.d.ts +0 -13
  246. package/tests/_pending_fix/InputOTP.test.d.ts +0 -13
  247. package/tests/_pending_fix/InputPassword.test.d.ts +0 -13
  248. package/tests/_pending_fix/InputPhone.test.d.ts +0 -13
  249. package/tests/_pending_fix/InputSearch.test.d.ts +0 -13
  250. package/tests/_pending_fix/Link.test.d.ts +0 -13
  251. package/tests/_pending_fix/List.test.d.ts +0 -13
  252. package/tests/_pending_fix/LoadingOverlay.test.d.ts +0 -13
  253. package/tests/_pending_fix/Menu.test.d.ts +0 -13
  254. package/tests/_pending_fix/Modal.test.d.ts +0 -13
  255. package/tests/_pending_fix/MultiSelect.test.d.ts +0 -13
  256. package/tests/_pending_fix/NavGroup.test.d.ts +0 -13
  257. package/tests/_pending_fix/NavItem.test.d.ts +0 -13
  258. package/tests/_pending_fix/NavLink.test.d.ts +0 -13
  259. package/tests/_pending_fix/Navbar.test.d.ts +0 -13
  260. package/tests/_pending_fix/Notification.test.d.ts +0 -13
  261. package/tests/_pending_fix/NotificationBadge.test.d.ts +0 -13
  262. package/tests/_pending_fix/NumberInput.test.d.ts +0 -13
  263. package/tests/_pending_fix/Pagination.test.d.ts +0 -13
  264. package/tests/_pending_fix/Popover.test.d.ts +0 -13
  265. package/tests/_pending_fix/Progress.test.d.ts +0 -13
  266. package/tests/_pending_fix/ProgressCircle.test.d.ts +0 -13
  267. package/tests/_pending_fix/ProgressSteps.test.d.ts +0 -13
  268. package/tests/_pending_fix/Radio.test.d.ts +0 -13
  269. package/tests/_pending_fix/RangeSlider.test.d.ts +0 -13
  270. package/tests/_pending_fix/ResizablePanel.test.d.ts +0 -13
  271. package/tests/_pending_fix/ResultState.test.d.ts +0 -13
  272. package/tests/_pending_fix/ScrollArea.test.d.ts +0 -13
  273. package/tests/_pending_fix/Select.test.d.ts +0 -14
  274. package/tests/_pending_fix/Sheet.test.d.ts +0 -13
  275. package/tests/_pending_fix/Sidebar.test.d.ts +0 -13
  276. package/tests/_pending_fix/SimpleGrid.test.d.ts +0 -13
  277. package/tests/_pending_fix/Skeleton.test.d.ts +0 -13
  278. package/tests/_pending_fix/Slider.test.d.ts +0 -13
  279. package/tests/_pending_fix/Spacer.test.d.ts +0 -13
  280. package/tests/_pending_fix/Spinner.test.d.ts +0 -13
  281. package/tests/_pending_fix/Stack.test.d.ts +0 -13
  282. package/tests/_pending_fix/Stat.test.d.ts +0 -13
  283. package/tests/_pending_fix/Stepper.test.d.ts +0 -14
  284. package/tests/_pending_fix/Switch.test.d.ts +0 -13
  285. package/tests/_pending_fix/Table.test.d.ts +0 -13
  286. package/tests/_pending_fix/Tabs.test.d.ts +0 -13
  287. package/tests/_pending_fix/Textarea.test.d.ts +0 -13
  288. package/tests/_pending_fix/Timeline.test.d.ts +0 -13
  289. package/tests/_pending_fix/Toast.test.d.ts +0 -14
  290. package/tests/_pending_fix/Tooltip.test.d.ts +0 -14
  291. package/tests/_pending_fix/VStack.test.d.ts +0 -13
  292. package/tests/alert.test.d.ts +0 -13
  293. package/tests/badge.test.d.ts +0 -13
  294. package/tests/benchmarks/factor-resolution.bench.d.ts +0 -41
  295. package/tests/button.test.d.ts +0 -16
  296. package/tests/card.test.d.ts +0 -19
  297. package/tests/checkbox.test.d.ts +0 -13
  298. package/tests/component-16-factor-types.test.d.ts +0 -13
  299. package/tests/component-5level-integration.test.d.ts +0 -14
  300. package/tests/component-registry-ui.test.d.ts +0 -13
  301. package/tests/e2e/16-factor-visual.test.d.ts +0 -14
  302. package/tests/edge-cases.test.d.ts +0 -14
  303. package/tests/factor-17-24-integration.test.d.ts +0 -14
  304. package/tests/factor-17-24-performance.test.d.ts +0 -14
  305. package/tests/factor-validators.test.d.ts +0 -13
  306. package/tests/factors-1-6.test.d.ts +0 -13
  307. package/tests/factors-12-16.test.d.ts +0 -13
  308. package/tests/factors-17-24.test.d.ts +0 -21
  309. package/tests/factors-all.test.d.ts +0 -13
  310. package/tests/factors-registry.test.d.ts +0 -11
  311. package/tests/factors.test.d.ts +0 -13
  312. package/tests/granularity-types.test.d.ts +0 -18
  313. package/tests/groups.test.d.ts +0 -14
  314. package/tests/input.test.d.ts +0 -16
  315. package/tests/intents.test.d.ts +0 -14
  316. package/tests/memory-leak.test.d.ts +0 -14
  317. package/tests/modal.test.d.ts +0 -19
  318. package/tests/presets.test.d.ts +0 -14
  319. package/tests/radio.test.d.ts +0 -13
  320. package/tests/resolution-intents.test.d.ts +0 -13
  321. package/tests/resolution-presets.test.d.ts +0 -13
  322. package/tests/resolveProps.test.d.ts +0 -14
  323. package/tests/section-integration.test.d.ts +0 -16
  324. package/tests/section-types.test.d.ts +0 -11
  325. package/tests/setup.d.ts +0 -13
  326. package/tests/shorthands.test.d.ts +0 -14
  327. package/tests/switch.test.d.ts +0 -13
  328. package/tests/tabs.test.d.ts +0 -13
  329. package/tests/tiers-registry.test.d.ts +0 -11
  330. package/tests/useComponentStyles.test.d.ts +0 -11
  331. package/tests/useFactors.test.d.ts +0 -13
  332. package/tests/validators-invalid-input.test.d.ts +0 -13
  333. package/tsup.config.d.ts +0 -11
  334. package/vitest.config.d.ts +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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/component-registry.ts","../src/ui-studio/presets/variants.ts","../src/resolution/types.ts","../src/utils/stringify.ts","../src/resolution/groups/experience-group.ts","../src/resolution/groups/layout-group.ts","../src/resolution/groups/motion-group.ts","../src/resolution/groups/visual-group.ts","../src/resolution/groups/index.ts","../src/resolution/shorthand/look-mappings.ts","../src/resolution/shorthand/feel-mappings.ts","../src/resolution/shorthand/surface-mappings.ts","../src/resolution/shorthand/spacing-mappings.ts","../src/resolution/shorthand/index.ts","../src/resolution/resolveProps.ts","../src/resolution/presets/button-presets.ts","../src/resolution/presets/card-presets.ts","../src/resolution/presets/input-presets.ts","../src/resolution/presets/form-presets.ts","../src/resolution/presets/data-display-presets.ts","../src/resolution/presets/feedback-presets.ts","../src/resolution/presets/nav-presets.ts","../src/resolution/presets/overlay-presets.ts","../src/resolution/presets/preset-registry.ts","../src/resolution/intents/button-intents.ts","../src/resolution/intents/card-intents.ts","../src/resolution/intents/feedback-intents.ts","../src/resolution/intents/input-intents.ts","../src/resolution/intents/mood-modifiers.ts","../src/resolution/intents/index.ts","../src/resolution/examples.ts","../src/resolution/demo.ts","../src/constants/DesignSystems.ts","../src/constants/Tiers.ts","../src/constants/Frameworks.ts","../src/styling/StyleGenerator.ts","../src/types/Result.ts","../src/types/Option.ts"],"names":["ALL_DESIGN_SYSTEMS","ALL_TIERS","CURRENT_DESIGN_SYSTEMS","getDesignSystemName","TIERS"],"mappings":"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","file":"browser.mjs","sourcesContent":["/**\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 * 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 * 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 * Resolution Types - 5-Level Abstraction API\r\n *\r\n * Type definitions for the resolution system that converts high-level\r\n * semantic props (intents, presets, moods) into complete 24-Factor configurations.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/types\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n FactorShape,\r\n FactorPosition,\r\n FactorIconPosition,\r\n FactorState,\r\n FactorAnimation,\r\n FactorElevation,\r\n FactorA11y,\r\n FactorAlignment,\r\n FactorOrientation,\r\n FactorDensity,\r\n FactorLoadingState,\r\n FactorResponsiveConfig,\r\n FactorTheme,\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 ComponentSize,\r\n ColorScheme,\r\n} from '../styling/types';\r\n\r\n// =============================================================================\r\n// FACTOR 24 CONFIG - Complete Factor Configuration\r\n// =============================================================================\r\n\r\n/**\r\n * Complete 24-Factor configuration.\r\n * This is the normalized output of the resolution engine.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface Factor24Config {\r\n // Core Props (Factor 1-3)\r\n /** Factor 1: Size */\r\n size?: ComponentSize;\r\n /** Factor 2: Variant (component-specific) */\r\n variant?: string;\r\n /** Factor 3: Color scheme */\r\n colorScheme?: ColorScheme;\r\n\r\n // Shape, Position, Icon (Factor 4-6)\r\n /** Factor 4: Shape */\r\n shape?: FactorShape;\r\n /** Factor 5: Position */\r\n position?: FactorPosition;\r\n /** Factor 6: Icon Position */\r\n iconPosition?: FactorIconPosition;\r\n\r\n // Interaction (Factor 7-11)\r\n /** Factor 7: State */\r\n state?: FactorState;\r\n /** Factor 8: Animation */\r\n animation?: FactorAnimation;\r\n /** Factor 9: Elevation */\r\n elevation?: FactorElevation;\r\n /** Factor 10: Accessibility */\r\n a11y?: FactorA11y;\r\n /** Factor 11: Justify alignment */\r\n justify?: FactorAlignment;\r\n /** Factor 11: Cross-axis alignment */\r\n align?: FactorAlignment;\r\n\r\n // Layout (Factor 12-16)\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 // Extended (Factor 17-24)\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// LEVEL 5: SEMANTIC INTENTS & MOODS\r\n// =============================================================================\r\n\r\n/**\r\n * Semantic intent - Highest level abstraction.\r\n * Describes the PURPOSE of the component.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type SemanticIntent =\r\n // Action intents\r\n | 'cta' // Call to action - Primary conversion\r\n | 'primary' // Primary action\r\n | 'secondary' // Secondary action\r\n | 'tertiary' // Tertiary/low emphasis action\r\n | 'destructive' // Dangerous/delete action\r\n | 'confirm' // Confirmation action\r\n | 'cancel' // Cancel action\r\n // Navigation intents\r\n | 'nav' // Navigation element\r\n | 'navActive' // Active navigation\r\n | 'navSubtle' // Subtle navigation\r\n | 'link' // Link action\r\n // Feedback intents\r\n | 'success' // Success state\r\n | 'warning' // Warning state\r\n | 'error' // Error state\r\n | 'info' // Informational\r\n // Special intents\r\n | 'ghost' // Minimal visual presence\r\n | 'subtle' // Subtle/muted\r\n | 'hero' // Hero/featured\r\n | 'premium' // Premium/luxury feel\r\n | 'brand' // Brand emphasis\r\n // Input intents (5-Level form support)\r\n | 'inputText' // Standard text input\r\n | 'inputEmail' // Email input\r\n | 'inputPassword' // Password input\r\n | 'inputSearch' // Search input\r\n | 'inputCode' // Code/OTP input\r\n | 'inputNumber' // Number input\r\n | 'inputPhone' // Phone input\r\n | 'inputUrl' // URL input\r\n | 'inputDate' // Date input\r\n | 'inputCurrency' // Currency input\r\n | 'inputSelect' // Select dropdown\r\n | 'inputMultiselect' // Multi-select\r\n | 'inputAutocomplete' // Autocomplete input\r\n | 'inputCheckbox' // Checkbox input\r\n | 'inputSwitch' // Switch toggle\r\n | 'inputRadio' // Radio input\r\n | 'inputSlider' // Slider input\r\n | 'inputRating' // Rating input\r\n | 'inputTextarea' // Textarea input\r\n | 'inputRichtext' // Rich text input\r\n | 'inputError' // Input error state\r\n | 'inputSuccess' // Input success state\r\n | 'inputDisabled' // Input disabled state\r\n // Card intents (5-Level card support)\r\n | 'cardContent' // General content card\r\n | 'cardFeatured' // Featured/highlighted card\r\n | 'cardArticle' // Article/blog card\r\n | 'cardInteractive' // Clickable card\r\n | 'cardSelectable' // Selectable card\r\n | 'cardDraggable' // Draggable card\r\n | 'cardProduct' // Product card\r\n | 'cardPricing' // Pricing card\r\n | 'cardProfile' // Profile card\r\n | 'cardTestimonial' // Testimonial card\r\n | 'cardStats' // Statistics card\r\n | 'cardNotification' // Notification card\r\n | 'cardGlass' // Glassmorphic card\r\n | 'cardNeumorphic' // Neumorphic card\r\n // Feedback intents (5-Level feedback support)\r\n | 'alertInfo' // Info alert\r\n | 'alertSuccess' // Success alert\r\n | 'alertWarning' // Warning alert\r\n | 'alertError' // Error alert\r\n | 'toastDefault' // Default toast\r\n | 'toastSuccess' // Success toast\r\n | 'toastError' // Error toast\r\n | 'toastAction' // Action toast\r\n | 'progressLinear' // Linear progress\r\n | 'progressCircular' // Circular progress\r\n | 'skeleton' // Skeleton loader\r\n | 'badgeDefault' // Default badge\r\n | 'badgeStatus' // Status badge\r\n | 'badgeCount' // Count badge\r\n | 'chipDefault' // Default chip\r\n | 'chipSelectable' // Selectable chip\r\n | 'chipDeletable' // Deletable chip\r\n | 'tooltipDefault' // Default tooltip\r\n | 'tooltipRich'; // Rich tooltip\r\n\r\n/**\r\n * Semantic mood - Modifies the emotional tone.\r\n * Adjusts animation, spacing, and visual weight.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type SemanticMood =\r\n | 'professional' // Corporate, formal\r\n | 'friendly' // Approachable, warm\r\n | 'playful' // Fun, animated\r\n | 'serious' // Formal, minimal animation\r\n | 'luxurious' // Premium, elegant\r\n | 'minimal' // Clean, sparse\r\n | 'bold'; // Strong, impactful\r\n\r\n/**\r\n * Intent definition for resolution.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface IntentDefinition {\r\n /** Unique intent identifier */\r\n id: SemanticIntent;\r\n /** Human-readable name */\r\n name: string;\r\n /** Description of when to use */\r\n description: string;\r\n /** Base 24-factor configuration */\r\n config: Partial<Factor24Config>;\r\n /** Mood modifiers - adjustments per mood */\r\n moodModifiers?: Partial<Record<SemanticMood, Partial<Factor24Config>>>;\r\n /** Compatible component types (empty = all) */\r\n componentTypes?: string[];\r\n}\r\n\r\n/**\r\n * Mood modifier definition.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface MoodModifierDefinition {\r\n /** Unique mood identifier */\r\n id: SemanticMood;\r\n /** Human-readable name */\r\n name: string;\r\n /** Description */\r\n description: string;\r\n /** Factor adjustments applied by this mood */\r\n adjustments: Partial<Factor24Config>;\r\n}\r\n\r\n// =============================================================================\r\n// LEVEL 4: NAMED PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Preset category for organization.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type PresetCategory =\r\n | 'button'\r\n | 'card'\r\n | 'input'\r\n | 'navigation'\r\n | 'feedback'\r\n | 'overlay'\r\n | 'dataDisplay'\r\n | 'layout'\r\n | 'form'\r\n | 'utility';\r\n\r\n/**\r\n * Named preset definition.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface PresetDefinition {\r\n /** Unique preset identifier (e.g., 'hero-primary', 'form-input') */\r\n id: string;\r\n /** Human-readable name */\r\n name: string;\r\n /** Description of the preset's purpose */\r\n description: string;\r\n /** Category for organization */\r\n category: PresetCategory;\r\n /** Complete 24-factor configuration */\r\n config: Partial<Factor24Config>;\r\n /** Tags for searchability */\r\n tags?: string[];\r\n /** Preview image URL (optional) */\r\n previewUrl?: string;\r\n /** Compatible component types (empty = all) */\r\n componentTypes?: string[];\r\n}\r\n\r\n// =============================================================================\r\n// LEVEL 3: SHORTHAND PROPS\r\n// =============================================================================\r\n\r\n/**\r\n * Look shorthand - Visual appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type LookShorthand =\r\n | 'bold' // High contrast, prominent\r\n | 'subtle' // Low contrast, muted\r\n | 'minimal' // Bare minimum styling\r\n | 'elevated' // With shadow/depth\r\n | 'outlined' // Border emphasis\r\n | 'ghost' // Nearly invisible\r\n | 'solid' // Filled/solid\r\n | 'soft'; // Soft/rounded edges\r\n\r\n/**\r\n * Feel shorthand - Interaction behavior.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type FeelShorthand =\r\n | 'snappy' // Quick, responsive\r\n | 'smooth' // Smooth transitions\r\n | 'bouncy' // Playful bounce\r\n | 'static' // No animation\r\n | 'responsive'; // Adaptive to input\r\n\r\n/**\r\n * Surface shorthand - Background and elevation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type SurfaceShorthand =\r\n | 'flat' // No elevation\r\n | 'raised' // Slight elevation\r\n | 'floating' // High elevation\r\n | 'sunken' // Inset/inner shadow\r\n | 'overlay'; // Overlay background\r\n\r\n/**\r\n * Spacing shorthand - Internal spacing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type SpacingShorthand =\r\n | 'tight' // Compact\r\n | 'normal' // Default\r\n | 'relaxed' // Comfortable\r\n | 'loose'; // Spacious\r\n\r\n/**\r\n * Shorthand mappings collection.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ShorthandMappings {\r\n look: Record<LookShorthand, Partial<Factor24Config>>;\r\n feel: Record<FeelShorthand, Partial<Factor24Config>>;\r\n surface: Record<SurfaceShorthand, Partial<Factor24Config>>;\r\n spacing: Record<SpacingShorthand, Partial<Factor24Config>>;\r\n}\r\n\r\n// =============================================================================\r\n// LEVEL 2: FACTOR GROUPS\r\n// =============================================================================\r\n\r\n/**\r\n * Visual factor group - Appearance-related factors.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface VisualGroup {\r\n /** Shape (Factor 4) */\r\n shape?: FactorShape;\r\n /** Border (Factor 19) */\r\n border?: FactorBorder;\r\n /** Opacity (Factor 20) */\r\n opacity?: FactorOpacity;\r\n /** Elevation (Factor 9) */\r\n elevation?: FactorElevation;\r\n /** Color scheme */\r\n colorScheme?: ColorScheme;\r\n}\r\n\r\n/**\r\n * Motion factor group - Animation-related factors.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface MotionGroup {\r\n /** Animation preset (Factor 8) */\r\n animation?: FactorAnimation;\r\n /** Transition timing (Factor 24) */\r\n transition?: FactorTransition;\r\n}\r\n\r\n/**\r\n * Layout factor group - Layout-related factors.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface LayoutGroup {\r\n /** Position (Factor 5) */\r\n position?: FactorPosition;\r\n /** Orientation (Factor 12) */\r\n orientation?: FactorOrientation;\r\n /** Density (Factor 13) */\r\n density?: FactorDensity;\r\n /** Spacing (Factor 17) */\r\n spacing?: FactorSpacing;\r\n /** Overflow (Factor 21) */\r\n overflow?: FactorOverflow;\r\n /** Justify alignment */\r\n justify?: FactorAlignment;\r\n /** Cross alignment */\r\n align?: FactorAlignment;\r\n}\r\n\r\n/**\r\n * Experience factor group - UX-related factors.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ExperienceGroup {\r\n /** Accessibility level (Factor 10) */\r\n a11y?: FactorA11y;\r\n /** Cursor (Factor 22) */\r\n cursor?: FactorCursor;\r\n /** Z-Index (Factor 23) */\r\n zIndex?: FactorZIndex;\r\n /** Loading state (Factor 14) */\r\n loadingState?: FactorLoadingState;\r\n}\r\n\r\n/**\r\n * Combined factor groups for Level 2 props.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface FactorGroups {\r\n /** Visual appearance factors */\r\n visual?: VisualGroup;\r\n /** Motion/animation factors */\r\n motion?: MotionGroup;\r\n /** Layout factors */\r\n layout?: LayoutGroup;\r\n /** Experience/UX factors */\r\n experience?: ExperienceGroup;\r\n}\r\n\r\n// =============================================================================\r\n// MULTI-LEVEL PROPS - Combined Input\r\n// =============================================================================\r\n\r\n/**\r\n * Multi-level props input.\r\n * Users can provide props at any combination of levels.\r\n * Resolution engine will merge them with correct priority.\r\n *\r\n * Priority: Level 1 (raw) > Level 2 (groups) > Level 3 (shorthand) > Level 4 (preset) > Level 5 (intent)\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface MultiLevelProps {\r\n // Level 5: Semantic\r\n /** Semantic intent */\r\n intent?: SemanticIntent;\r\n /** Mood modifier */\r\n mood?: SemanticMood;\r\n\r\n // Level 4: Preset\r\n /** Named preset */\r\n preset?: string;\r\n\r\n // Level 3: Shorthands\r\n /** Visual look shorthand */\r\n look?: LookShorthand;\r\n /** Interaction feel shorthand */\r\n feel?: FeelShorthand;\r\n /** Surface/elevation shorthand */\r\n surface?: SurfaceShorthand;\r\n /** Spacing shorthand */\r\n spacingPreset?: SpacingShorthand;\r\n\r\n // Level 2: Factor Groups\r\n /** Visual factors group */\r\n visual?: VisualGroup;\r\n /** Motion factors group */\r\n motion?: MotionGroup;\r\n /** Layout factors group */\r\n layout?: LayoutGroup;\r\n /** Experience factors group */\r\n experience?: ExperienceGroup;\r\n\r\n // Level 1: Raw Factors (highest priority)\r\n /** All individual 24 factors can be specified directly */\r\n size?: ComponentSize;\r\n variant?: string;\r\n colorScheme?: ColorScheme;\r\n shape?: FactorShape;\r\n position?: FactorPosition;\r\n iconPosition?: FactorIconPosition;\r\n state?: FactorState;\r\n animation?: FactorAnimation;\r\n elevation?: FactorElevation;\r\n a11y?: FactorA11y;\r\n justify?: FactorAlignment;\r\n align?: FactorAlignment;\r\n orientation?: FactorOrientation;\r\n density?: FactorDensity;\r\n loadingState?: FactorLoadingState;\r\n responsive?: FactorResponsiveConfig;\r\n theme?: FactorTheme;\r\n spacing?: FactorSpacing;\r\n typography?: FactorTypography;\r\n border?: FactorBorder;\r\n opacity?: FactorOpacity;\r\n overflow?: FactorOverflow;\r\n cursor?: FactorCursor;\r\n zIndex?: FactorZIndex;\r\n transition?: FactorTransition;\r\n}\r\n\r\n// =============================================================================\r\n// RESOLUTION RESULT\r\n// =============================================================================\r\n\r\n/**\r\n * Resolution result with complete configuration.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ResolutionResult {\r\n /** Complete 24-factor configuration */\r\n config: Factor24Config;\r\n /** Source levels that contributed to the result */\r\n sources: {\r\n level5Intent?: SemanticIntent;\r\n level5Mood?: SemanticMood;\r\n level4Preset?: string;\r\n level3Shorthands?: string[];\r\n level2Groups?: string[];\r\n level1Factors?: string[];\r\n };\r\n /** Debug information (only in development) */\r\n debug?: {\r\n mergeOrder: string[];\r\n overrides: Record<string, { from: string; to: string; level: number }>;\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// REGISTRY TYPES\r\n// =============================================================================\r\n\r\n/**\r\n * Preset registry interface.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface PresetRegistry {\r\n /** All registered presets */\r\n presets: Map<string, PresetDefinition>;\r\n /** Total number of presets */\r\n size: number;\r\n /** Get preset by ID */\r\n get(id: string): PresetDefinition | undefined;\r\n /** Check if preset exists */\r\n has(id: string): boolean;\r\n /** Register a new preset */\r\n register(preset: PresetDefinition): void;\r\n /** Unregister a preset */\r\n unregister(id: string): boolean;\r\n /** Clear all presets */\r\n clear(): void;\r\n /** Get presets by category */\r\n getByCategory(category: PresetCategory): PresetDefinition[];\r\n /** Get presets by component type */\r\n getByComponentType(componentType: string): PresetDefinition[];\r\n /** Search presets by tag */\r\n searchByTag(tag: string): PresetDefinition[];\r\n /** Search presets by multiple tags */\r\n searchByTags(tags: string[]): PresetDefinition[];\r\n /** Text search in presets */\r\n search(query: string): PresetDefinition[];\r\n /** Get all presets */\r\n getAll(): PresetDefinition[];\r\n /** Get category counts */\r\n getCategoryCounts(): Map<PresetCategory, number>;\r\n}\r\n\r\n/**\r\n * Intent registry interface.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface IntentRegistry {\r\n /** All registered intents */\r\n intents: Map<SemanticIntent, IntentDefinition>;\r\n /** All registered mood modifiers */\r\n moods: Map<SemanticMood, MoodModifierDefinition>;\r\n /** Get intent by ID */\r\n getIntent(id: SemanticIntent): IntentDefinition | undefined;\r\n /** Get mood modifier by ID */\r\n getMood(id: SemanticMood): MoodModifierDefinition | undefined;\r\n /** Register a new intent */\r\n registerIntent(intent: IntentDefinition): void;\r\n /** Register a mood modifier */\r\n registerMood(mood: MoodModifierDefinition): void;\r\n}\r\n\r\n// =============================================================================\r\n// DEFAULT CONFIGURATION\r\n// =============================================================================\r\n\r\n/**\r\n * Default Factor24 configuration values.\r\n * Used when factors are not specified during resolution.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DEFAULT_FACTOR24_CONFIG: Required<Factor24Config> = {\r\n // Core Props (Factor 1-3)\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n\r\n // Shape, Position, Icon (Factor 4-6)\r\n shape: 'md',\r\n position: 'center',\r\n iconPosition: 'left',\r\n\r\n // Interaction (Factor 7-11)\r\n state: 'default',\r\n animation: 'standard',\r\n elevation: 'none',\r\n a11y: 'standard',\r\n justify: 'center',\r\n align: 'center',\r\n\r\n // Layout (Factor 12-16)\r\n orientation: 'horizontal',\r\n density: 'default',\r\n loadingState: 'idle',\r\n responsive: {},\r\n theme: 'system',\r\n\r\n // Extended (Factor 17-24)\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 factorKey - The factor key to get default for\r\n * @returns The default value for the factor\r\n * @since 2.1.0\r\n */\r\nexport function getDefaultFactorValue<K extends keyof Factor24Config>(\r\n factorKey: K\r\n): Required<Factor24Config>[K] {\r\n return DEFAULT_FACTOR24_CONFIG[factorKey];\r\n}\r\n\r\n/**\r\n * List of all Factor24 keys for validation and iteration.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FACTOR24_KEYS: ReadonlyArray<keyof Factor24Config> = [\r\n // Core\r\n 'size',\r\n 'variant',\r\n 'colorScheme',\r\n // Shape, Position, Icon\r\n 'shape',\r\n 'position',\r\n 'iconPosition',\r\n // Interaction\r\n 'state',\r\n 'animation',\r\n 'elevation',\r\n 'a11y',\r\n 'justify',\r\n 'align',\r\n // Layout\r\n 'orientation',\r\n 'density',\r\n 'loadingState',\r\n 'responsive',\r\n 'theme',\r\n // Extended\r\n 'spacing',\r\n 'typography',\r\n 'border',\r\n 'opacity',\r\n 'overflow',\r\n 'cursor',\r\n 'zIndex',\r\n 'transition',\r\n] as const;\r\n\r\n/**\r\n * Check if a key is a valid Factor24 key.\r\n *\r\n * @param key - The key to check\r\n * @returns True if the key is a valid Factor24 key\r\n * @since 2.1.0\r\n */\r\nexport function isValidFactor24Key(key: string): key is keyof Factor24Config {\r\n return FACTOR24_KEYS.includes(key as keyof Factor24Config);\r\n}\r\n\r\n/**\r\n * All available semantic intents.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SEMANTIC_INTENTS: ReadonlyArray<SemanticIntent> = [\r\n // Action intents\r\n 'cta',\r\n 'primary',\r\n 'secondary',\r\n 'tertiary',\r\n 'destructive',\r\n 'confirm',\r\n 'cancel',\r\n // Navigation intents\r\n 'nav',\r\n 'navActive',\r\n 'navSubtle',\r\n 'link',\r\n // Feedback intents\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n // Special intents\r\n 'ghost',\r\n 'subtle',\r\n 'hero',\r\n 'premium',\r\n 'brand',\r\n // Input intents\r\n 'inputText',\r\n 'inputEmail',\r\n 'inputPassword',\r\n 'inputSearch',\r\n 'inputCode',\r\n 'inputNumber',\r\n 'inputPhone',\r\n 'inputUrl',\r\n 'inputDate',\r\n 'inputCurrency',\r\n 'inputSelect',\r\n 'inputMultiselect',\r\n 'inputAutocomplete',\r\n 'inputCheckbox',\r\n 'inputSwitch',\r\n 'inputRadio',\r\n 'inputSlider',\r\n 'inputRating',\r\n 'inputTextarea',\r\n 'inputRichtext',\r\n 'inputError',\r\n 'inputSuccess',\r\n 'inputDisabled',\r\n // Card intents\r\n 'cardContent',\r\n 'cardFeatured',\r\n 'cardArticle',\r\n 'cardInteractive',\r\n 'cardSelectable',\r\n 'cardDraggable',\r\n 'cardProduct',\r\n 'cardPricing',\r\n 'cardProfile',\r\n 'cardTestimonial',\r\n 'cardStats',\r\n 'cardNotification',\r\n 'cardGlass',\r\n 'cardNeumorphic',\r\n // Feedback intents\r\n 'alertInfo',\r\n 'alertSuccess',\r\n 'alertWarning',\r\n 'alertError',\r\n 'toastDefault',\r\n 'toastSuccess',\r\n 'toastError',\r\n 'toastAction',\r\n 'progressLinear',\r\n 'progressCircular',\r\n 'skeleton',\r\n 'badgeDefault',\r\n 'badgeStatus',\r\n 'badgeCount',\r\n 'chipDefault',\r\n 'chipSelectable',\r\n 'chipDeletable',\r\n 'tooltipDefault',\r\n 'tooltipRich',\r\n] as const;\r\n\r\n/**\r\n * All available semantic moods.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SEMANTIC_MOODS: ReadonlyArray<SemanticMood> = [\r\n 'professional',\r\n 'friendly',\r\n 'playful',\r\n 'serious',\r\n 'luxurious',\r\n 'minimal',\r\n 'bold',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid semantic intent.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid intent\r\n * @since 2.1.0\r\n */\r\nexport function isValidIntent(value: string): value is SemanticIntent {\r\n return SEMANTIC_INTENTS.includes(value as SemanticIntent);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid semantic mood.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid mood\r\n * @since 2.1.0\r\n */\r\nexport function isValidMood(value: string): value is SemanticMood {\r\n return SEMANTIC_MOODS.includes(value as SemanticMood);\r\n}\r\n\r\n// =============================================================================\r\n// RE-EXPORTS FROM GENERATOR\r\n// =============================================================================\r\n\r\nexport type {\r\n FactorShape,\r\n FactorPosition,\r\n FactorIconPosition,\r\n FactorState,\r\n FactorAnimation,\r\n FactorElevation,\r\n FactorA11y,\r\n FactorAlignment,\r\n FactorOrientation,\r\n FactorDensity,\r\n FactorLoadingState,\r\n FactorResponsiveConfig,\r\n FactorTheme,\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 ComponentSize,\r\n ColorScheme,\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 * Experience Group - Factor Group for User Experience\r\n *\r\n * Maps ExperienceGroup props to Factor24Config factors.\r\n * Handles accessibility, cursor, z-index, and loading state.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/groups/experience-group\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n ExperienceGroup,\r\n Factor24Config,\r\n FactorA11y,\r\n FactorCursor,\r\n FactorZIndex,\r\n FactorLoadingState,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// EXPERIENCE GROUP EXPANSION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand ExperienceGroup to Factor24Config.\r\n *\r\n * @param experience - The experience group configuration\r\n * @returns Partial Factor24Config with experience-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandExperienceGroup({\r\n * a11y: 'enhanced',\r\n * cursor: 'pointer',\r\n * loadingState: 'idle',\r\n * });\r\n * // Result: { a11y: 'enhanced', cursor: 'pointer', loadingState: 'idle' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandExperienceGroup(\r\n experience: ExperienceGroup\r\n): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n if (experience.a11y !== undefined) {\r\n result.a11y = experience.a11y;\r\n }\r\n\r\n if (experience.cursor !== undefined) {\r\n result.cursor = experience.cursor;\r\n }\r\n\r\n if (experience.zIndex !== undefined) {\r\n result.zIndex = experience.zIndex;\r\n }\r\n\r\n if (experience.loadingState !== undefined) {\r\n result.loadingState = experience.loadingState;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// EXPERIENCE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Predefined experience presets for common use cases.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const EXPERIENCE_PRESETS: Record<string, ExperienceGroup> = {\r\n /** Standard interactive element */\r\n interactive: {\r\n cursor: 'pointer',\r\n a11y: 'standard',\r\n loadingState: 'idle',\r\n },\r\n\r\n /** Non-interactive display element */\r\n static: {\r\n cursor: 'default',\r\n a11y: 'standard',\r\n loadingState: 'idle',\r\n },\r\n\r\n /** Disabled element */\r\n disabled: {\r\n cursor: 'notAllowed',\r\n a11y: 'standard',\r\n loadingState: 'idle',\r\n },\r\n\r\n /** Loading state */\r\n loading: {\r\n cursor: 'wait',\r\n a11y: 'standard',\r\n loadingState: 'loading',\r\n },\r\n\r\n /** Enhanced accessibility */\r\n accessible: {\r\n a11y: 'enhanced',\r\n cursor: 'pointer',\r\n loadingState: 'idle',\r\n },\r\n\r\n /** Modal/overlay element */\r\n overlay: {\r\n zIndex: 'modal',\r\n cursor: 'default',\r\n a11y: 'enhanced',\r\n },\r\n\r\n /** Tooltip element */\r\n tooltip: {\r\n zIndex: 'tooltip',\r\n cursor: 'help',\r\n a11y: 'standard',\r\n },\r\n\r\n /** Dropdown element */\r\n dropdown: {\r\n zIndex: 'dropdown',\r\n cursor: 'pointer',\r\n a11y: 'standard',\r\n },\r\n\r\n /** Floating action button */\r\n fab: {\r\n zIndex: 'sticky',\r\n cursor: 'pointer',\r\n a11y: 'enhanced',\r\n },\r\n\r\n /** Text input element */\r\n input: {\r\n cursor: 'text',\r\n a11y: 'enhanced',\r\n loadingState: 'idle',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Valid accessibility level values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_A11Y_LEVELS: ReadonlyArray<FactorA11y> = [\r\n 'standard',\r\n 'enhanced',\r\n 'maximum',\r\n] as const;\r\n\r\n/**\r\n * Valid cursor values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_CURSORS: ReadonlyArray<FactorCursor> = [\r\n 'default',\r\n 'pointer',\r\n 'text',\r\n 'move',\r\n 'notAllowed',\r\n 'wait',\r\n 'grab',\r\n 'grabbing',\r\n 'help',\r\n 'crosshair',\r\n 'none',\r\n] as const;\r\n\r\n/**\r\n * Valid z-index values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_Z_INDEXES: ReadonlyArray<FactorZIndex> = [\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 'popover',\r\n 'skipLink',\r\n 'toast',\r\n 'tooltip',\r\n 'max',\r\n] as const;\r\n\r\n/**\r\n * Valid loading state values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_LOADING_STATES: ReadonlyArray<FactorLoadingState> = [\r\n 'idle',\r\n 'loading',\r\n 'success',\r\n 'error',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid accessibility level.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid a11y level\r\n * @since 2.1.0\r\n */\r\nexport function isValidA11y(value: unknown): value is FactorA11y {\r\n return typeof value === 'string' && VALID_A11Y_LEVELS.includes(value as FactorA11y);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid cursor.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid cursor\r\n * @since 2.1.0\r\n */\r\nexport function isValidCursor(value: unknown): value is FactorCursor {\r\n return typeof value === 'string' && VALID_CURSORS.includes(value as FactorCursor);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid z-index.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid z-index\r\n * @since 2.1.0\r\n */\r\nexport function isValidZIndex(value: unknown): value is FactorZIndex {\r\n return typeof value === 'string' && VALID_Z_INDEXES.includes(value as FactorZIndex);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid loading state.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid loading state\r\n * @since 2.1.0\r\n */\r\nexport function isValidLoadingState(value: unknown): value is FactorLoadingState {\r\n return (\r\n typeof value === 'string' &&\r\n VALID_LOADING_STATES.includes(value as FactorLoadingState)\r\n );\r\n}\r\n\r\n/**\r\n * Validate an ExperienceGroup configuration.\r\n *\r\n * @param experience - The experience group to validate\r\n * @returns Validation result with errors if any\r\n * @since 2.1.0\r\n */\r\nexport function validateExperienceGroup(experience: ExperienceGroup): {\r\n valid: boolean;\r\n errors: string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n if (experience.a11y !== undefined && !isValidA11y(experience.a11y)) {\r\n errors.push(\r\n `Invalid a11y: \"${String(experience.a11y)}\". Valid values: ${VALID_A11Y_LEVELS.join(', ')}`\r\n );\r\n }\r\n\r\n if (experience.cursor !== undefined && !isValidCursor(experience.cursor)) {\r\n errors.push(\r\n `Invalid cursor: \"${String(experience.cursor)}\". Valid values: ${VALID_CURSORS.join(', ')}`\r\n );\r\n }\r\n\r\n if (experience.zIndex !== undefined && !isValidZIndex(experience.zIndex)) {\r\n errors.push(\r\n `Invalid zIndex: \"${String(experience.zIndex)}\". Valid values: ${VALID_Z_INDEXES.join(', ')}`\r\n );\r\n }\r\n\r\n if (\r\n experience.loadingState !== undefined &&\r\n !isValidLoadingState(experience.loadingState)\r\n ) {\r\n errors.push(\r\n `Invalid loadingState: \"${String(experience.loadingState)}\". Valid values: ${VALID_LOADING_STATES.join(', ')}`\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 an experience preset by name.\r\n *\r\n * @param presetName - The name of the preset\r\n * @returns The experience preset or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getExperiencePreset(presetName: string): ExperienceGroup | undefined {\r\n return EXPERIENCE_PRESETS[presetName];\r\n}\r\n\r\n/**\r\n * Merge multiple ExperienceGroup configurations.\r\n * Later values override earlier ones.\r\n *\r\n * @param groups - Experience groups to merge\r\n * @returns Merged experience group\r\n * @since 2.1.0\r\n */\r\nexport function mergeExperienceGroups(...groups: ExperienceGroup[]): ExperienceGroup {\r\n const result: ExperienceGroup = {};\r\n\r\n for (const group of groups) {\r\n if (group.a11y !== undefined) {\r\n result.a11y = group.a11y;\r\n }\r\n if (group.cursor !== undefined) {\r\n result.cursor = group.cursor;\r\n }\r\n if (group.zIndex !== undefined) {\r\n result.zIndex = group.zIndex;\r\n }\r\n if (group.loadingState !== undefined) {\r\n result.loadingState = group.loadingState;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Create an ExperienceGroup from Factor24Config.\r\n * Extracts experience-related factors from a full config.\r\n *\r\n * @param config - The full Factor24Config\r\n * @returns Extracted ExperienceGroup\r\n * @since 2.1.0\r\n */\r\nexport function extractExperienceGroup(\r\n config: Partial<Factor24Config>\r\n): ExperienceGroup {\r\n const result: ExperienceGroup = {};\r\n\r\n if (config.a11y !== undefined) {\r\n result.a11y = config.a11y;\r\n }\r\n if (config.cursor !== undefined) {\r\n result.cursor = config.cursor;\r\n }\r\n if (config.zIndex !== undefined) {\r\n result.zIndex = config.zIndex;\r\n }\r\n if (config.loadingState !== undefined) {\r\n result.loadingState = config.loadingState;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get numeric z-index value from factor.\r\n *\r\n * @param zIndex - The z-index factor\r\n * @returns Numeric z-index value\r\n * @since 2.1.0\r\n */\r\nexport function getZIndexValue(zIndex: FactorZIndex): number {\r\n switch (zIndex) {\r\n case 'auto':\r\n return 0;\r\n case 'base':\r\n return 1;\r\n case 'docked':\r\n return 10;\r\n case 'dropdown':\r\n return 1000;\r\n case 'sticky':\r\n return 1100;\r\n case 'banner':\r\n return 1200;\r\n case 'overlay':\r\n return 1300;\r\n case 'modal':\r\n return 1400;\r\n case 'popover':\r\n return 1500;\r\n case 'skipLink':\r\n return 1600;\r\n case 'toast':\r\n return 1700;\r\n case 'tooltip':\r\n return 1800;\r\n case 'max':\r\n return 9999;\r\n default:\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * Get CSS cursor value from factor.\r\n *\r\n * @param cursor - The cursor factor\r\n * @returns CSS cursor value\r\n * @since 2.1.0\r\n */\r\nexport function getCursorValue(cursor: FactorCursor): string {\r\n return cursor;\r\n}\r\n\r\n/**\r\n * Check if element should be focusable based on a11y level.\r\n *\r\n * @param a11y - The accessibility level\r\n * @returns True if element should be focusable\r\n * @since 2.1.0\r\n */\r\nexport function shouldBeFocusable(a11y: FactorA11y): boolean {\r\n // All a11y levels should be focusable\r\n return a11y === 'standard' || a11y === 'enhanced' || a11y === 'maximum';\r\n}\r\n\r\n/**\r\n * Get ARIA attributes based on a11y level.\r\n *\r\n * @param a11y - The accessibility level\r\n * @param options - Additional options\r\n * @returns Object with ARIA attributes\r\n * @since 2.1.0\r\n */\r\nexport function getAriaAttributes(\r\n a11y: FactorA11y,\r\n options?: {\r\n role?: string;\r\n label?: string;\r\n description?: string;\r\n expanded?: boolean;\r\n pressed?: boolean;\r\n disabled?: boolean;\r\n }\r\n): Record<string, string | boolean | undefined> {\r\n const attrs: Record<string, string | boolean | undefined> = {};\r\n\r\n if (options?.role !== undefined && options.role !== '') {\r\n attrs['role'] = options.role;\r\n }\r\n\r\n if (options?.label !== undefined && options.label !== '') {\r\n attrs['aria-label'] = options.label;\r\n }\r\n\r\n if (options?.description !== undefined && options.description !== '') {\r\n attrs['aria-describedby'] = options.description;\r\n }\r\n\r\n if (options?.expanded !== undefined) {\r\n attrs['aria-expanded'] = options.expanded;\r\n }\r\n\r\n if (options?.pressed !== undefined) {\r\n attrs['aria-pressed'] = options.pressed;\r\n }\r\n\r\n if (options?.disabled !== undefined) {\r\n attrs['aria-disabled'] = options.disabled;\r\n }\r\n\r\n if (a11y === 'enhanced') {\r\n attrs['tabIndex'] = '0';\r\n }\r\n\r\n return attrs;\r\n}\r\n\r\n/**\r\n * Get loading state message.\r\n *\r\n * @param loadingState - The loading state\r\n * @param customMessages - Optional custom messages\r\n * @returns Status message\r\n * @since 2.1.0\r\n */\r\nexport function getLoadingStateMessage(\r\n loadingState: FactorLoadingState,\r\n customMessages?: Partial<Record<FactorLoadingState, string>>\r\n): string {\r\n const defaultMessages: Record<FactorLoadingState, string> = {\r\n idle: '',\r\n loading: 'Loading...',\r\n success: 'Success!',\r\n error: 'An error occurred',\r\n };\r\n\r\n return customMessages?.[loadingState] ?? defaultMessages[loadingState];\r\n}\r\n\r\n/**\r\n * Check if element is in a loading state.\r\n *\r\n * @param loadingState - The loading state\r\n * @returns True if element is loading\r\n * @since 2.1.0\r\n */\r\nexport function isLoading(loadingState: FactorLoadingState): boolean {\r\n return loadingState === 'loading';\r\n}\r\n\r\n/**\r\n * Check if element has completed loading (success or error).\r\n *\r\n * @param loadingState - The loading state\r\n * @returns True if loading has completed\r\n * @since 2.1.0\r\n */\r\nexport function hasLoadingCompleted(loadingState: FactorLoadingState): boolean {\r\n return loadingState === 'success' || loadingState === 'error';\r\n}\r\n","/**\r\n * Layout Group - Factor Group for Layout and Positioning\r\n *\r\n * Maps LayoutGroup props to Factor24Config factors.\r\n * Handles position, orientation, density, spacing, overflow, and alignment.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/groups/layout-group\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n LayoutGroup,\r\n Factor24Config,\r\n FactorPosition,\r\n FactorOrientation,\r\n FactorDensity,\r\n FactorSpacing,\r\n FactorOverflow,\r\n FactorAlignment,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// LAYOUT GROUP EXPANSION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand LayoutGroup to Factor24Config.\r\n *\r\n * @param layout - The layout group configuration\r\n * @returns Partial Factor24Config with layout-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandLayoutGroup({\r\n * orientation: 'horizontal',\r\n * density: 'compact',\r\n * spacing: 'sm',\r\n * });\r\n * // Result: { orientation: 'horizontal', density: 'compact', spacing: 'sm' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandLayoutGroup(layout: LayoutGroup): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n if (layout.position !== undefined) {\r\n result.position = layout.position;\r\n }\r\n\r\n if (layout.orientation !== undefined) {\r\n result.orientation = layout.orientation;\r\n }\r\n\r\n if (layout.density !== undefined) {\r\n result.density = layout.density;\r\n }\r\n\r\n if (layout.spacing !== undefined) {\r\n result.spacing = layout.spacing;\r\n }\r\n\r\n if (layout.overflow !== undefined) {\r\n result.overflow = layout.overflow;\r\n }\r\n\r\n if (layout.justify !== undefined) {\r\n result.justify = layout.justify;\r\n }\r\n\r\n if (layout.align !== undefined) {\r\n result.align = layout.align;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// LAYOUT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Predefined layout presets for common use cases.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LAYOUT_PRESETS: Record<string, LayoutGroup> = {\r\n /** Compact horizontal layout */\r\n compact: {\r\n orientation: 'horizontal',\r\n density: 'compact',\r\n spacing: 'xs',\r\n },\r\n\r\n /** Default balanced layout */\r\n default: {\r\n orientation: 'horizontal',\r\n density: 'default',\r\n spacing: 'md',\r\n },\r\n\r\n /** Relaxed, spacious layout */\r\n relaxed: {\r\n orientation: 'horizontal',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n },\r\n\r\n /** Vertical stack layout */\r\n stack: {\r\n orientation: 'vertical',\r\n density: 'default',\r\n spacing: 'md',\r\n align: 'stretch',\r\n },\r\n\r\n /** Horizontal inline layout */\r\n inline: {\r\n orientation: 'horizontal',\r\n density: 'compact',\r\n spacing: 'sm',\r\n align: 'center',\r\n },\r\n\r\n /** Centered content layout */\r\n centered: {\r\n justify: 'center',\r\n align: 'center',\r\n },\r\n\r\n /** Space between items layout */\r\n spaceBetween: {\r\n justify: 'between',\r\n align: 'center',\r\n },\r\n\r\n /** Full width layout */\r\n fullWidth: {\r\n align: 'stretch',\r\n overflow: 'hidden',\r\n },\r\n\r\n /** Scrollable layout */\r\n scrollable: {\r\n overflow: 'auto',\r\n },\r\n\r\n /** Grid-like layout */\r\n grid: {\r\n orientation: 'horizontal',\r\n density: 'default',\r\n spacing: 'md',\r\n overflow: 'visible',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Valid position values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_POSITIONS: ReadonlyArray<FactorPosition> = [\r\n 'center',\r\n 'top',\r\n 'bottom',\r\n 'left',\r\n 'right',\r\n 'topLeft',\r\n 'topRight',\r\n 'bottomLeft',\r\n 'bottomRight',\r\n] as const;\r\n\r\n/**\r\n * Valid orientation values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_ORIENTATIONS: ReadonlyArray<FactorOrientation> = [\r\n 'horizontal',\r\n 'vertical',\r\n] as const;\r\n\r\n/**\r\n * Valid density values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_DENSITIES: ReadonlyArray<FactorDensity> = [\r\n 'compact',\r\n 'default',\r\n 'comfortable',\r\n] as const;\r\n\r\n/**\r\n * Valid spacing values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_SPACINGS: ReadonlyArray<FactorSpacing> = [\r\n 'none',\r\n 'xs',\r\n 'sm',\r\n 'md',\r\n 'lg',\r\n 'xl',\r\n] as const;\r\n\r\n/**\r\n * Valid overflow values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_OVERFLOWS: ReadonlyArray<FactorOverflow> = [\r\n 'visible',\r\n 'hidden',\r\n 'auto',\r\n 'scroll',\r\n] as const;\r\n\r\n/**\r\n * Valid alignment values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_ALIGNMENTS: ReadonlyArray<FactorAlignment> = [\r\n 'start',\r\n 'center',\r\n 'end',\r\n 'stretch',\r\n 'between',\r\n 'around',\r\n 'evenly',\r\n 'baseline',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid position.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid position\r\n * @since 2.1.0\r\n */\r\nexport function isValidPosition(value: unknown): value is FactorPosition {\r\n return typeof value === 'string' && VALID_POSITIONS.includes(value as FactorPosition);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid orientation.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid orientation\r\n * @since 2.1.0\r\n */\r\nexport function isValidOrientation(value: unknown): value is FactorOrientation {\r\n return typeof value === 'string' && VALID_ORIENTATIONS.includes(value as FactorOrientation);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid density.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid density\r\n * @since 2.1.0\r\n */\r\nexport function isValidDensity(value: unknown): value is FactorDensity {\r\n return typeof value === 'string' && VALID_DENSITIES.includes(value as FactorDensity);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid spacing.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid spacing\r\n * @since 2.1.0\r\n */\r\nexport function isValidSpacing(value: unknown): value is FactorSpacing {\r\n return typeof value === 'string' && VALID_SPACINGS.includes(value as FactorSpacing);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid overflow.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid overflow\r\n * @since 2.1.0\r\n */\r\nexport function isValidOverflow(value: unknown): value is FactorOverflow {\r\n return typeof value === 'string' && VALID_OVERFLOWS.includes(value as FactorOverflow);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid alignment.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid alignment\r\n * @since 2.1.0\r\n */\r\nexport function isValidAlignment(value: unknown): value is FactorAlignment {\r\n return typeof value === 'string' && VALID_ALIGNMENTS.includes(value as FactorAlignment);\r\n}\r\n\r\n/**\r\n * Validate a LayoutGroup configuration.\r\n *\r\n * @param layout - The layout group to validate\r\n * @returns Validation result with errors if any\r\n * @since 2.1.0\r\n */\r\nexport function validateLayoutGroup(layout: LayoutGroup): {\r\n valid: boolean;\r\n errors: string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n if (layout.position !== undefined && !isValidPosition(layout.position)) {\r\n errors.push(\r\n `Invalid position: \"${String(layout.position)}\". Valid values: ${VALID_POSITIONS.join(', ')}`\r\n );\r\n }\r\n\r\n if (layout.orientation !== undefined && !isValidOrientation(layout.orientation)) {\r\n errors.push(\r\n `Invalid orientation: \"${String(layout.orientation)}\". Valid values: ${VALID_ORIENTATIONS.join(', ')}`\r\n );\r\n }\r\n\r\n if (layout.density !== undefined && !isValidDensity(layout.density)) {\r\n errors.push(\r\n `Invalid density: \"${String(layout.density)}\". Valid values: ${VALID_DENSITIES.join(', ')}`\r\n );\r\n }\r\n\r\n if (layout.spacing !== undefined && !isValidSpacing(layout.spacing)) {\r\n errors.push(\r\n `Invalid spacing: \"${String(layout.spacing)}\". Valid values: ${VALID_SPACINGS.join(', ')}`\r\n );\r\n }\r\n\r\n if (layout.overflow !== undefined && !isValidOverflow(layout.overflow)) {\r\n errors.push(\r\n `Invalid overflow: \"${String(layout.overflow)}\". Valid values: ${VALID_OVERFLOWS.join(', ')}`\r\n );\r\n }\r\n\r\n if (layout.justify !== undefined && !isValidAlignment(layout.justify)) {\r\n errors.push(\r\n `Invalid justify: \"${String(layout.justify)}\". Valid values: ${VALID_ALIGNMENTS.join(', ')}`\r\n );\r\n }\r\n\r\n if (layout.align !== undefined && !isValidAlignment(layout.align)) {\r\n errors.push(\r\n `Invalid align: \"${String(layout.align)}\". Valid values: ${VALID_ALIGNMENTS.join(', ')}`\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 a layout preset by name.\r\n *\r\n * @param presetName - The name of the preset\r\n * @returns The layout preset or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getLayoutPreset(presetName: string): LayoutGroup | undefined {\r\n return LAYOUT_PRESETS[presetName];\r\n}\r\n\r\n/**\r\n * Merge multiple LayoutGroup configurations.\r\n * Later values override earlier ones.\r\n *\r\n * @param groups - Layout groups to merge\r\n * @returns Merged layout group\r\n * @since 2.1.0\r\n */\r\nexport function mergeLayoutGroups(...groups: LayoutGroup[]): LayoutGroup {\r\n const result: LayoutGroup = {};\r\n\r\n for (const group of groups) {\r\n if (group.position !== undefined) {\r\n result.position = group.position;\r\n }\r\n if (group.orientation !== undefined) {\r\n result.orientation = group.orientation;\r\n }\r\n if (group.density !== undefined) {\r\n result.density = group.density;\r\n }\r\n if (group.spacing !== undefined) {\r\n result.spacing = group.spacing;\r\n }\r\n if (group.overflow !== undefined) {\r\n result.overflow = group.overflow;\r\n }\r\n if (group.justify !== undefined) {\r\n result.justify = group.justify;\r\n }\r\n if (group.align !== undefined) {\r\n result.align = group.align;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Create a LayoutGroup from Factor24Config.\r\n * Extracts layout-related factors from a full config.\r\n *\r\n * @param config - The full Factor24Config\r\n * @returns Extracted LayoutGroup\r\n * @since 2.1.0\r\n */\r\nexport function extractLayoutGroup(config: Partial<Factor24Config>): LayoutGroup {\r\n const result: LayoutGroup = {};\r\n\r\n if (config.position !== undefined) {\r\n result.position = config.position;\r\n }\r\n if (config.orientation !== undefined) {\r\n result.orientation = config.orientation;\r\n }\r\n if (config.density !== undefined) {\r\n result.density = config.density;\r\n }\r\n if (config.spacing !== undefined) {\r\n result.spacing = config.spacing;\r\n }\r\n if (config.overflow !== undefined) {\r\n result.overflow = config.overflow;\r\n }\r\n if (config.justify !== undefined) {\r\n result.justify = config.justify;\r\n }\r\n if (config.align !== undefined) {\r\n result.align = config.align;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get CSS gap value from spacing factor.\r\n *\r\n * @param spacing - The spacing factor\r\n * @returns CSS gap value string\r\n * @since 2.1.0\r\n */\r\nexport function getSpacingValue(spacing: FactorSpacing): string {\r\n switch (spacing) {\r\n case 'none':\r\n return '0';\r\n case 'xs':\r\n return '0.25rem';\r\n case 'sm':\r\n return '0.5rem';\r\n case 'md':\r\n return '1rem';\r\n case 'lg':\r\n return '1.5rem';\r\n case 'xl':\r\n return '2rem';\r\n default:\r\n return '1rem';\r\n }\r\n}\r\n\r\n/**\r\n * Get flexbox direction based on orientation.\r\n *\r\n * @param orientation - The orientation factor\r\n * @returns CSS flex-direction value\r\n * @since 2.1.0\r\n */\r\nexport function getFlexDirection(orientation: FactorOrientation): string {\r\n return orientation === 'vertical' ? 'column' : 'row';\r\n}\r\n\r\n/**\r\n * Get CSS justify-content value from alignment factor.\r\n *\r\n * @param alignment - The alignment factor\r\n * @returns CSS justify-content value\r\n * @since 2.1.0\r\n */\r\nexport function getJustifyContent(alignment: FactorAlignment): string {\r\n switch (alignment) {\r\n case 'start':\r\n return 'flex-start';\r\n case 'center':\r\n return 'center';\r\n case 'end':\r\n return 'flex-end';\r\n case 'stretch':\r\n return 'stretch';\r\n case 'between':\r\n return 'space-between';\r\n case 'around':\r\n return 'space-around';\r\n case 'evenly':\r\n return 'space-evenly';\r\n case 'baseline':\r\n return 'baseline';\r\n default:\r\n return 'flex-start';\r\n }\r\n}\r\n\r\n/**\r\n * Get CSS align-items value from alignment factor.\r\n *\r\n * @param alignment - The alignment factor\r\n * @returns CSS align-items value\r\n * @since 2.1.0\r\n */\r\nexport function getAlignItems(alignment: FactorAlignment): string {\r\n switch (alignment) {\r\n case 'start':\r\n return 'flex-start';\r\n case 'center':\r\n return 'center';\r\n case 'end':\r\n return 'flex-end';\r\n case 'stretch':\r\n return 'stretch';\r\n case 'baseline':\r\n return 'baseline';\r\n case 'between':\r\n case 'around':\r\n case 'evenly':\r\n return 'center';\r\n default:\r\n return 'stretch';\r\n }\r\n}\r\n","/**\r\n * Motion Group - Factor Group for Animation and Transitions\r\n *\r\n * Maps MotionGroup props to Factor24Config factors.\r\n * Handles animation presets and transition timing.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/groups/motion-group\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n MotionGroup,\r\n Factor24Config,\r\n FactorAnimation,\r\n FactorTransition,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// MOTION GROUP EXPANSION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand MotionGroup to Factor24Config.\r\n *\r\n * @param motion - The motion group configuration\r\n * @returns Partial Factor24Config with motion-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandMotionGroup({\r\n * animation: 'smooth',\r\n * transition: 'fast',\r\n * });\r\n * // Result: { animation: 'smooth', transition: 'fast' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandMotionGroup(motion: MotionGroup): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n if (motion.animation !== undefined) {\r\n result.animation = motion.animation;\r\n }\r\n\r\n if (motion.transition !== undefined) {\r\n result.transition = motion.transition;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// MOTION PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Predefined motion presets for common use cases.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOTION_PRESETS: Record<string, MotionGroup> = {\r\n /** No motion - static elements */\r\n none: {\r\n animation: 'none',\r\n transition: 'none',\r\n },\r\n\r\n /** Subtle, minimal motion */\r\n subtle: {\r\n animation: 'subtle',\r\n transition: 'slow',\r\n },\r\n\r\n /** Standard motion - balanced */\r\n standard: {\r\n animation: 'standard',\r\n transition: 'default',\r\n },\r\n\r\n /** Quick, snappy feedback */\r\n snappy: {\r\n animation: 'standard',\r\n transition: 'fast',\r\n },\r\n\r\n /** Smooth, flowing motion */\r\n smooth: {\r\n animation: 'smooth',\r\n transition: 'smooth',\r\n },\r\n\r\n /** Bouncy, playful motion */\r\n bouncy: {\r\n animation: 'bounce',\r\n transition: 'bounce',\r\n },\r\n\r\n /** Energetic, lively motion */\r\n energetic: {\r\n animation: 'bounce',\r\n transition: 'fast',\r\n },\r\n\r\n /** Elegant, sophisticated motion */\r\n elegant: {\r\n animation: 'smooth',\r\n transition: 'slow',\r\n },\r\n\r\n /** Reduced motion for accessibility */\r\n reduced: {\r\n animation: 'subtle',\r\n transition: 'none',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Valid animation values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_ANIMATIONS: ReadonlyArray<FactorAnimation> = [\r\n 'none',\r\n 'subtle',\r\n 'standard',\r\n 'smooth',\r\n 'bounce',\r\n 'pulse',\r\n 'spin',\r\n 'ping',\r\n] as const;\r\n\r\n/**\r\n * Valid transition values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_TRANSITIONS: ReadonlyArray<FactorTransition> = [\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] as const;\r\n\r\n/**\r\n * Check if a value is a valid animation.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid animation\r\n * @since 2.1.0\r\n */\r\nexport function isValidAnimation(value: unknown): value is FactorAnimation {\r\n return typeof value === 'string' && VALID_ANIMATIONS.includes(value as FactorAnimation);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid transition.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid transition\r\n * @since 2.1.0\r\n */\r\nexport function isValidTransition(value: unknown): value is FactorTransition {\r\n return typeof value === 'string' && VALID_TRANSITIONS.includes(value as FactorTransition);\r\n}\r\n\r\n/**\r\n * Validate a MotionGroup configuration.\r\n *\r\n * @param motion - The motion group to validate\r\n * @returns Validation result with errors if any\r\n * @since 2.1.0\r\n */\r\nexport function validateMotionGroup(motion: MotionGroup): {\r\n valid: boolean;\r\n errors: string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n if (motion.animation !== undefined && !isValidAnimation(motion.animation)) {\r\n errors.push(\r\n `Invalid animation: \"${String(motion.animation)}\". Valid values: ${VALID_ANIMATIONS.join(', ')}`\r\n );\r\n }\r\n\r\n if (motion.transition !== undefined && !isValidTransition(motion.transition)) {\r\n errors.push(\r\n `Invalid transition: \"${String(motion.transition)}\". Valid values: ${VALID_TRANSITIONS.join(', ')}`\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 a motion preset by name.\r\n *\r\n * @param presetName - The name of the preset\r\n * @returns The motion preset or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getMotionPreset(presetName: string): MotionGroup | undefined {\r\n return MOTION_PRESETS[presetName];\r\n}\r\n\r\n/**\r\n * Merge multiple MotionGroup configurations.\r\n * Later values override earlier ones.\r\n *\r\n * @param groups - Motion groups to merge\r\n * @returns Merged motion group\r\n * @since 2.1.0\r\n */\r\nexport function mergeMotionGroups(...groups: MotionGroup[]): MotionGroup {\r\n const result: MotionGroup = {};\r\n\r\n for (const group of groups) {\r\n if (group.animation !== undefined) {\r\n result.animation = group.animation;\r\n }\r\n if (group.transition !== undefined) {\r\n result.transition = group.transition;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Create a MotionGroup from Factor24Config.\r\n * Extracts motion-related factors from a full config.\r\n *\r\n * @param config - The full Factor24Config\r\n * @returns Extracted MotionGroup\r\n * @since 2.1.0\r\n */\r\nexport function extractMotionGroup(config: Partial<Factor24Config>): MotionGroup {\r\n const result: MotionGroup = {};\r\n\r\n if (config.animation !== undefined) {\r\n result.animation = config.animation;\r\n }\r\n if (config.transition !== undefined) {\r\n result.transition = config.transition;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get animation duration in milliseconds based on transition setting.\r\n *\r\n * @param transition - The transition setting\r\n * @returns Duration in milliseconds\r\n * @since 2.1.0\r\n */\r\nexport function getTransitionDuration(transition: FactorTransition): number {\r\n switch (transition) {\r\n case 'none':\r\n return 0;\r\n case 'instant':\r\n return 0;\r\n case 'fast':\r\n return 100;\r\n case 'default':\r\n return 200;\r\n case 'slow':\r\n return 300;\r\n case 'slower':\r\n return 500;\r\n case 'smooth':\r\n return 400;\r\n case 'spring':\r\n return 300;\r\n case 'bounce':\r\n return 500;\r\n case 'easeIn':\r\n case 'easeOut':\r\n case 'easeInOut':\r\n return 200;\r\n default:\r\n return 200;\r\n }\r\n}\r\n\r\n/**\r\n * Get CSS easing function based on animation type.\r\n *\r\n * @param animation - The animation type\r\n * @returns CSS easing function string\r\n * @since 2.1.0\r\n */\r\nexport function getAnimationEasing(animation: FactorAnimation): string {\r\n switch (animation) {\r\n case 'none':\r\n return 'linear';\r\n case 'subtle':\r\n return 'ease-out';\r\n case 'standard':\r\n return 'ease-in-out';\r\n case 'smooth':\r\n return 'cubic-bezier(0.4, 0, 0.2, 1)';\r\n case 'bounce':\r\n return 'cubic-bezier(0.68, -0.55, 0.265, 1.55)';\r\n case 'pulse':\r\n case 'spin':\r\n case 'ping':\r\n return 'linear';\r\n default:\r\n return 'ease';\r\n }\r\n}\r\n\r\n/**\r\n * Check if motion should be reduced based on configuration.\r\n *\r\n * @param motion - The motion group\r\n * @returns True if motion should be reduced\r\n * @since 2.1.0\r\n */\r\nexport function shouldReduceMotion(motion: MotionGroup): boolean {\r\n return motion.animation === 'subtle' || motion.animation === 'none';\r\n}\r\n","/**\r\n * Visual Group - Factor Group for Visual Appearance\r\n *\r\n * Maps VisualGroup props to Factor24Config factors.\r\n * Handles shape, border, opacity, elevation, and color scheme.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/groups/visual-group\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n VisualGroup,\r\n Factor24Config,\r\n FactorShape,\r\n FactorBorder,\r\n FactorOpacity,\r\n FactorElevation,\r\n ColorScheme,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// VISUAL GROUP EXPANSION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand VisualGroup to Factor24Config.\r\n *\r\n * @param visual - The visual group configuration\r\n * @returns Partial Factor24Config with visual-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandVisualGroup({\r\n * shape: 'lg',\r\n * elevation: 'md',\r\n * colorScheme: 'primary',\r\n * });\r\n * // Result: { shape: 'lg', elevation: 'md', colorScheme: 'primary' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandVisualGroup(visual: VisualGroup): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n if (visual.shape !== undefined) {\r\n result.shape = visual.shape;\r\n }\r\n\r\n if (visual.border !== undefined) {\r\n result.border = visual.border;\r\n }\r\n\r\n if (visual.opacity !== undefined) {\r\n result.opacity = visual.opacity;\r\n }\r\n\r\n if (visual.elevation !== undefined) {\r\n result.elevation = visual.elevation;\r\n }\r\n\r\n if (visual.colorScheme !== undefined) {\r\n result.colorScheme = visual.colorScheme;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// VISUAL PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Predefined visual presets for common use cases.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VISUAL_PRESETS: Record<string, VisualGroup> = {\r\n /** Flat, no elevation or border */\r\n flat: {\r\n elevation: 'none',\r\n border: 'none',\r\n opacity: 'full',\r\n },\r\n\r\n /** Elevated with shadow */\r\n elevated: {\r\n elevation: 'md',\r\n border: 'none',\r\n opacity: 'full',\r\n },\r\n\r\n /** Outlined with border */\r\n outlined: {\r\n elevation: 'none',\r\n border: 'subtle',\r\n opacity: 'full',\r\n },\r\n\r\n /** Subtle with reduced opacity */\r\n subtle: {\r\n elevation: 'none',\r\n border: 'none',\r\n opacity: 'medium',\r\n },\r\n\r\n /** Bold with high elevation and full opacity */\r\n bold: {\r\n elevation: 'lg',\r\n border: 'none',\r\n opacity: 'full',\r\n shape: 'md',\r\n },\r\n\r\n /** Rounded with large shape */\r\n rounded: {\r\n shape: 'full',\r\n border: 'none',\r\n elevation: 'none',\r\n },\r\n\r\n /** Sharp with no rounding */\r\n sharp: {\r\n shape: 'none',\r\n border: 'subtle',\r\n elevation: 'none',\r\n },\r\n\r\n /** Glass effect - semi-transparent */\r\n glass: {\r\n opacity: 'medium',\r\n border: 'subtle',\r\n elevation: 'sm',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Valid shape values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_SHAPES: ReadonlyArray<FactorShape> = [\r\n 'none',\r\n 'sm',\r\n 'md',\r\n 'lg',\r\n 'xl',\r\n 'full',\r\n 'pill',\r\n 'square',\r\n 'circle',\r\n] as const;\r\n\r\n/**\r\n * Valid border values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_BORDERS: ReadonlyArray<FactorBorder> = [\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] as const;\r\n\r\n/**\r\n * Valid opacity values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_OPACITIES: ReadonlyArray<FactorOpacity> = [\r\n 'transparent',\r\n 'dim',\r\n 'light',\r\n 'medium',\r\n 'high',\r\n 'full',\r\n] as const;\r\n\r\n/**\r\n * Valid elevation values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_ELEVATIONS: ReadonlyArray<FactorElevation> = [\r\n 'none',\r\n 'sm',\r\n 'md',\r\n 'lg',\r\n 'xl',\r\n] as const;\r\n\r\n/**\r\n * Valid color scheme values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_COLOR_SCHEMES: ReadonlyArray<ColorScheme> = [\r\n 'primary',\r\n 'secondary',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n 'neutral',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid shape.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid shape\r\n * @since 2.1.0\r\n */\r\nexport function isValidShape(value: unknown): value is FactorShape {\r\n return typeof value === 'string' && VALID_SHAPES.includes(value as FactorShape);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid border.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid border\r\n * @since 2.1.0\r\n */\r\nexport function isValidBorder(value: unknown): value is FactorBorder {\r\n return typeof value === 'string' && VALID_BORDERS.includes(value as FactorBorder);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid opacity.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid opacity\r\n * @since 2.1.0\r\n */\r\nexport function isValidOpacity(value: unknown): value is FactorOpacity {\r\n return typeof value === 'string' && VALID_OPACITIES.includes(value as FactorOpacity);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid elevation.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid elevation\r\n * @since 2.1.0\r\n */\r\nexport function isValidElevation(value: unknown): value is FactorElevation {\r\n return typeof value === 'string' && VALID_ELEVATIONS.includes(value as FactorElevation);\r\n}\r\n\r\n/**\r\n * Check if a value is a valid color scheme.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid color scheme\r\n * @since 2.1.0\r\n */\r\nexport function isValidColorScheme(value: unknown): value is ColorScheme {\r\n return typeof value === 'string' && VALID_COLOR_SCHEMES.includes(value as ColorScheme);\r\n}\r\n\r\n/**\r\n * Validate a VisualGroup configuration.\r\n *\r\n * @param visual - The visual group to validate\r\n * @returns Validation result with errors if any\r\n * @since 2.1.0\r\n */\r\nexport function validateVisualGroup(visual: VisualGroup): {\r\n valid: boolean;\r\n errors: string[];\r\n} {\r\n const errors: string[] = [];\r\n\r\n if (visual.shape !== undefined && !isValidShape(visual.shape)) {\r\n errors.push(\r\n `Invalid shape: \"${String(visual.shape)}\". Valid values: ${VALID_SHAPES.join(', ')}`\r\n );\r\n }\r\n\r\n if (visual.border !== undefined && !isValidBorder(visual.border)) {\r\n errors.push(\r\n `Invalid border: \"${String(visual.border)}\". Valid values: ${VALID_BORDERS.join(', ')}`\r\n );\r\n }\r\n\r\n if (visual.opacity !== undefined && !isValidOpacity(visual.opacity)) {\r\n errors.push(\r\n `Invalid opacity: \"${String(visual.opacity)}\". Valid values: ${VALID_OPACITIES.join(', ')}`\r\n );\r\n }\r\n\r\n if (visual.elevation !== undefined && !isValidElevation(visual.elevation)) {\r\n errors.push(\r\n `Invalid elevation: \"${String(visual.elevation)}\". Valid values: ${VALID_ELEVATIONS.join(', ')}`\r\n );\r\n }\r\n\r\n if (visual.colorScheme !== undefined && !isValidColorScheme(visual.colorScheme)) {\r\n errors.push(\r\n `Invalid colorScheme: \"${String(visual.colorScheme)}\". Valid values: ${VALID_COLOR_SCHEMES.join(', ')}`\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 a visual preset by name.\r\n *\r\n * @param presetName - The name of the preset\r\n * @returns The visual preset or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getVisualPreset(presetName: string): VisualGroup | undefined {\r\n return VISUAL_PRESETS[presetName];\r\n}\r\n\r\n/**\r\n * Merge multiple VisualGroup configurations.\r\n * Later values override earlier ones.\r\n *\r\n * @param groups - Visual groups to merge\r\n * @returns Merged visual group\r\n * @since 2.1.0\r\n */\r\nexport function mergeVisualGroups(...groups: VisualGroup[]): VisualGroup {\r\n const result: VisualGroup = {};\r\n\r\n for (const group of groups) {\r\n if (group.shape !== undefined) {\r\n result.shape = group.shape;\r\n }\r\n if (group.border !== undefined) {\r\n result.border = group.border;\r\n }\r\n if (group.opacity !== undefined) {\r\n result.opacity = group.opacity;\r\n }\r\n if (group.elevation !== undefined) {\r\n result.elevation = group.elevation;\r\n }\r\n if (group.colorScheme !== undefined) {\r\n result.colorScheme = group.colorScheme;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Create a VisualGroup from Factor24Config.\r\n * Extracts visual-related factors from a full config.\r\n *\r\n * @param config - The full Factor24Config\r\n * @returns Extracted VisualGroup\r\n * @since 2.1.0\r\n */\r\nexport function extractVisualGroup(config: Partial<Factor24Config>): VisualGroup {\r\n const result: VisualGroup = {};\r\n\r\n if (config.shape !== undefined) {\r\n result.shape = config.shape;\r\n }\r\n if (config.border !== undefined) {\r\n result.border = config.border;\r\n }\r\n if (config.opacity !== undefined) {\r\n result.opacity = config.opacity;\r\n }\r\n if (config.elevation !== undefined) {\r\n result.elevation = config.elevation;\r\n }\r\n if (config.colorScheme !== undefined) {\r\n result.colorScheme = config.colorScheme;\r\n }\r\n\r\n return result;\r\n}\r\n","/**\r\n * Factor Groups - Level 2 Abstraction\r\n *\r\n * Provides grouped factor configurations that map to multiple Factor24 properties.\r\n * Each group represents a logical collection of related factors.\r\n *\r\n * Groups:\r\n * - VisualGroup: Shape, border, opacity, elevation, color scheme\r\n * - MotionGroup: Animation, transition\r\n * - LayoutGroup: Position, orientation, density, spacing, overflow, alignment\r\n * - ExperienceGroup: Accessibility, cursor, z-index, loading state\r\n *\r\n * @packageDocumentation\r\n * @module resolution/groups\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n// Import expand functions\r\nimport { expandExperienceGroup, validateExperienceGroup } from './experience-group';\r\nimport { expandLayoutGroup, validateLayoutGroup } from './layout-group';\r\nimport { expandMotionGroup, validateMotionGroup } from './motion-group';\r\nimport { expandVisualGroup, validateVisualGroup } from './visual-group';\r\n\r\nimport type {\r\n Factor24Config,\r\n FactorGroups,\r\n VisualGroup,\r\n MotionGroup,\r\n LayoutGroup,\r\n ExperienceGroup,\r\n} from '../types';\r\n\r\n// Re-export group modules\r\nexport * from './visual-group';\r\nexport * from './motion-group';\r\nexport * from './layout-group';\r\nexport * from './experience-group';\r\n\r\n// =============================================================================\r\n// EXPAND GROUPS\r\n// =============================================================================\r\n\r\n/**\r\n * Expand all factor groups to Factor24Config.\r\n * Merges all group configurations into a single partial config.\r\n *\r\n * @param groups - The factor groups to expand\r\n * @returns Partial Factor24Config with all group factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandGroups({\r\n * visual: { shape: 'lg', elevation: 'md' },\r\n * motion: { animation: 'smooth' },\r\n * layout: { orientation: 'horizontal' },\r\n * experience: { cursor: 'pointer' },\r\n * });\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandGroups(groups: FactorGroups): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n // Expand each group in order\r\n if (groups.visual !== undefined && groups.visual !== null) {\r\n Object.assign(result, expandVisualGroup(groups.visual));\r\n }\r\n\r\n if (groups.motion !== undefined && groups.motion !== null) {\r\n Object.assign(result, expandMotionGroup(groups.motion));\r\n }\r\n\r\n if (groups.layout !== undefined && groups.layout !== null) {\r\n Object.assign(result, expandLayoutGroup(groups.layout));\r\n }\r\n\r\n if (groups.experience !== undefined && groups.experience !== null) {\r\n Object.assign(result, expandExperienceGroup(groups.experience));\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Validation result for factor groups.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface GroupValidationResult {\r\n /** Overall validation status */\r\n valid: boolean;\r\n /** Errors by group */\r\n errors: {\r\n visual: string[];\r\n motion: string[];\r\n layout: string[];\r\n experience: string[];\r\n };\r\n /** All errors flattened */\r\n allErrors: string[];\r\n}\r\n\r\n/**\r\n * Validate all factor groups.\r\n *\r\n * @param groups - The factor groups to validate\r\n * @returns Validation result with errors by group\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateGroups({\r\n * visual: { shape: 'invalid' },\r\n * });\r\n * if (!result.valid) {\r\n * console.error(result.allErrors);\r\n * }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function validateGroups(groups: FactorGroups): GroupValidationResult {\r\n const errors = {\r\n visual: [] as string[],\r\n motion: [] as string[],\r\n layout: [] as string[],\r\n experience: [] as string[],\r\n };\r\n\r\n if (groups.visual !== undefined && groups.visual !== null) {\r\n const visualResult = validateVisualGroup(groups.visual);\r\n errors.visual = visualResult.errors;\r\n }\r\n\r\n if (groups.motion !== undefined && groups.motion !== null) {\r\n const motionResult = validateMotionGroup(groups.motion);\r\n errors.motion = motionResult.errors;\r\n }\r\n\r\n if (groups.layout !== undefined && groups.layout !== null) {\r\n const layoutResult = validateLayoutGroup(groups.layout);\r\n errors.layout = layoutResult.errors;\r\n }\r\n\r\n if (groups.experience !== undefined && groups.experience !== null) {\r\n const experienceResult = validateExperienceGroup(groups.experience);\r\n errors.experience = experienceResult.errors;\r\n }\r\n\r\n const allErrors = [\r\n ...errors.visual,\r\n ...errors.motion,\r\n ...errors.layout,\r\n ...errors.experience,\r\n ];\r\n\r\n return {\r\n valid: allErrors.length === 0,\r\n errors,\r\n allErrors,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// MERGE UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * Merge multiple FactorGroups configurations.\r\n * Later values override earlier ones within each group.\r\n *\r\n * @param groupsList - Factor groups to merge\r\n * @returns Merged factor groups\r\n *\r\n * @example\r\n * ```typescript\r\n * const merged = mergeFactorGroups(\r\n * { visual: { shape: 'sm' } },\r\n * { visual: { shape: 'lg', elevation: 'md' } }\r\n * );\r\n * // Result: { visual: { shape: 'lg', elevation: 'md' } }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function mergeFactorGroups(...groupsList: FactorGroups[]): FactorGroups {\r\n const result: FactorGroups = {};\r\n\r\n for (const groups of groupsList) {\r\n if (groups.visual !== undefined && groups.visual !== null) {\r\n result.visual = { ...result.visual, ...groups.visual };\r\n }\r\n if (groups.motion !== undefined && groups.motion !== null) {\r\n result.motion = { ...result.motion, ...groups.motion };\r\n }\r\n if (groups.layout !== undefined && groups.layout !== null) {\r\n result.layout = { ...result.layout, ...groups.layout };\r\n }\r\n if (groups.experience !== undefined && groups.experience !== null) {\r\n result.experience = { ...result.experience, ...groups.experience };\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// EXTRACTION UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * Extract all factor groups from a Factor24Config.\r\n *\r\n * @param config - The full Factor24Config\r\n * @returns Extracted factor groups\r\n *\r\n * @example\r\n * ```typescript\r\n * const groups = extractAllGroups({\r\n * shape: 'lg',\r\n * animation: 'smooth',\r\n * orientation: 'horizontal',\r\n * cursor: 'pointer',\r\n * });\r\n * // Result: {\r\n * // visual: { shape: 'lg' },\r\n * // motion: { animation: 'smooth' },\r\n * // layout: { orientation: 'horizontal' },\r\n * // experience: { cursor: 'pointer' }\r\n * // }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function extractAllGroups(config: Partial<Factor24Config>): FactorGroups {\r\n const result: FactorGroups = {};\r\n\r\n // Extract visual group\r\n const visual: VisualGroup = {};\r\n if (config.shape !== undefined) visual.shape = config.shape;\r\n if (config.border !== undefined) visual.border = config.border;\r\n if (config.opacity !== undefined) visual.opacity = config.opacity;\r\n if (config.elevation !== undefined) visual.elevation = config.elevation;\r\n if (config.colorScheme !== undefined) visual.colorScheme = config.colorScheme;\r\n if (Object.keys(visual).length > 0) result.visual = visual;\r\n\r\n // Extract motion group\r\n const motion: MotionGroup = {};\r\n if (config.animation !== undefined) motion.animation = config.animation;\r\n if (config.transition !== undefined) motion.transition = config.transition;\r\n if (Object.keys(motion).length > 0) result.motion = motion;\r\n\r\n // Extract layout group\r\n const layout: LayoutGroup = {};\r\n if (config.position !== undefined) layout.position = config.position;\r\n if (config.orientation !== undefined) layout.orientation = config.orientation;\r\n if (config.density !== undefined) layout.density = config.density;\r\n if (config.spacing !== undefined) layout.spacing = config.spacing;\r\n if (config.overflow !== undefined) layout.overflow = config.overflow;\r\n if (config.justify !== undefined) layout.justify = config.justify;\r\n if (config.align !== undefined) layout.align = config.align;\r\n if (Object.keys(layout).length > 0) result.layout = layout;\r\n\r\n // Extract experience group\r\n const experience: ExperienceGroup = {};\r\n if (config.a11y !== undefined) experience.a11y = config.a11y;\r\n if (config.cursor !== undefined) experience.cursor = config.cursor;\r\n if (config.zIndex !== undefined) experience.zIndex = config.zIndex;\r\n if (config.loadingState !== undefined) experience.loadingState = config.loadingState;\r\n if (Object.keys(experience).length > 0) result.experience = experience;\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// GROUP DETECTION\r\n// =============================================================================\r\n\r\n/**\r\n * Check if an object contains any visual group properties.\r\n *\r\n * @param obj - Object to check\r\n * @returns True if object has visual group properties\r\n * @since 2.1.0\r\n */\r\nexport function hasVisualGroupProps(obj: Record<string, unknown>): boolean {\r\n return (\r\n 'shape' in obj ||\r\n 'border' in obj ||\r\n 'opacity' in obj ||\r\n 'elevation' in obj ||\r\n 'colorScheme' in obj\r\n );\r\n}\r\n\r\n/**\r\n * Check if an object contains any motion group properties.\r\n *\r\n * @param obj - Object to check\r\n * @returns True if object has motion group properties\r\n * @since 2.1.0\r\n */\r\nexport function hasMotionGroupProps(obj: Record<string, unknown>): boolean {\r\n return 'animation' in obj || 'transition' in obj;\r\n}\r\n\r\n/**\r\n * Check if an object contains any layout group properties.\r\n *\r\n * @param obj - Object to check\r\n * @returns True if object has layout group properties\r\n * @since 2.1.0\r\n */\r\nexport function hasLayoutGroupProps(obj: Record<string, unknown>): boolean {\r\n return (\r\n 'position' in obj ||\r\n 'orientation' in obj ||\r\n 'density' in obj ||\r\n 'spacing' in obj ||\r\n 'overflow' in obj ||\r\n 'justify' in obj ||\r\n 'align' in obj\r\n );\r\n}\r\n\r\n/**\r\n * Check if an object contains any experience group properties.\r\n *\r\n * @param obj - Object to check\r\n * @returns True if object has experience group properties\r\n * @since 2.1.0\r\n */\r\nexport function hasExperienceGroupProps(obj: Record<string, unknown>): boolean {\r\n return (\r\n 'a11y' in obj || 'cursor' in obj || 'zIndex' in obj || 'loadingState' in obj\r\n );\r\n}\r\n\r\n/**\r\n * Detect which groups are present in an object.\r\n *\r\n * @param obj - Object to check\r\n * @returns Object indicating which groups are present\r\n * @since 2.1.0\r\n */\r\nexport function detectGroups(obj: Record<string, unknown>): {\r\n hasVisual: boolean;\r\n hasMotion: boolean;\r\n hasLayout: boolean;\r\n hasExperience: boolean;\r\n} {\r\n return {\r\n hasVisual: hasVisualGroupProps(obj),\r\n hasMotion: hasMotionGroupProps(obj),\r\n hasLayout: hasLayoutGroupProps(obj),\r\n hasExperience: hasExperienceGroupProps(obj),\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// CONSTANTS\r\n// =============================================================================\r\n\r\n/**\r\n * All group names.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const GROUP_NAMES = ['visual', 'motion', 'layout', 'experience'] as const;\r\n\r\n/**\r\n * Group name type.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type GroupName = (typeof GROUP_NAMES)[number];\r\n\r\n/**\r\n * Map of group names to their factor keys.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const GROUP_FACTOR_KEYS: Record<GroupName, ReadonlyArray<keyof Factor24Config>> =\r\n {\r\n visual: ['shape', 'border', 'opacity', 'elevation', 'colorScheme'],\r\n motion: ['animation', 'transition'],\r\n layout: [\r\n 'position',\r\n 'orientation',\r\n 'density',\r\n 'spacing',\r\n 'overflow',\r\n 'justify',\r\n 'align',\r\n ],\r\n experience: ['a11y', 'cursor', 'zIndex', 'loadingState'],\r\n } as const;\r\n\r\n/**\r\n * Get the group name for a given factor key.\r\n *\r\n * @param factorKey - The factor key to look up\r\n * @returns The group name or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getGroupForFactor(\r\n factorKey: keyof Factor24Config\r\n): GroupName | undefined {\r\n for (const [groupName, keys] of Object.entries(GROUP_FACTOR_KEYS)) {\r\n if (keys.includes(factorKey)) {\r\n return groupName as GroupName;\r\n }\r\n }\r\n return undefined;\r\n}\r\n","/**\r\n * Look Mappings - Shorthand for Visual Appearance\r\n *\r\n * Maps LookShorthand values to Factor24Config.\r\n * Controls visual weight, contrast, and overall appearance.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/shorthand/look-mappings\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { Factor24Config, LookShorthand } from '../types';\r\n\r\n// =============================================================================\r\n// LOOK MAPPINGS\r\n// =============================================================================\r\n\r\n/**\r\n * Look shorthand to Factor24Config mappings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LOOK_MAPPINGS: Record<LookShorthand, Partial<Factor24Config>> = {\r\n /**\r\n * Bold - High contrast, prominent appearance\r\n * High elevation, solid variant, full opacity\r\n */\r\n bold: {\r\n variant: 'filled',\r\n elevation: 'md',\r\n opacity: 'full',\r\n border: 'none',\r\n shape: 'md',\r\n },\r\n\r\n /**\r\n * Subtle - Low contrast, muted appearance\r\n * No elevation, reduced opacity\r\n */\r\n subtle: {\r\n variant: 'ghost',\r\n elevation: 'none',\r\n opacity: 'medium',\r\n border: 'none',\r\n },\r\n\r\n /**\r\n * Minimal - Bare minimum styling\r\n * No elevation, no border, transparent background\r\n */\r\n minimal: {\r\n variant: 'ghost',\r\n elevation: 'none',\r\n opacity: 'full',\r\n border: 'none',\r\n shape: 'none',\r\n },\r\n\r\n /**\r\n * Elevated - With shadow/depth\r\n * Medium to high elevation, solid appearance\r\n */\r\n elevated: {\r\n variant: 'filled',\r\n elevation: 'lg',\r\n opacity: 'full',\r\n border: 'none',\r\n shape: 'md',\r\n },\r\n\r\n /**\r\n * Outlined - Border emphasis\r\n * No elevation, visible border\r\n */\r\n outlined: {\r\n variant: 'outlined',\r\n elevation: 'none',\r\n opacity: 'full',\r\n border: 'subtle',\r\n shape: 'md',\r\n },\r\n\r\n /**\r\n * Ghost - Nearly invisible\r\n * No elevation, very dim opacity, no border\r\n */\r\n ghost: {\r\n variant: 'ghost',\r\n elevation: 'none',\r\n opacity: 'dim',\r\n border: 'none',\r\n },\r\n\r\n /**\r\n * Solid - Filled/solid appearance\r\n * Solid background, full opacity\r\n */\r\n solid: {\r\n variant: 'filled',\r\n elevation: 'none',\r\n opacity: 'full',\r\n border: 'none',\r\n },\r\n\r\n /**\r\n * Soft - Soft/rounded edges\r\n * Rounded shape, subtle elevation\r\n */\r\n soft: {\r\n variant: 'filled',\r\n elevation: 'sm',\r\n opacity: 'high',\r\n border: 'none',\r\n shape: 'lg',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// EXPANSION FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand look shorthand to Factor24Config.\r\n *\r\n * @param look - The look shorthand value\r\n * @returns Partial Factor24Config with look-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandLook('bold');\r\n * // Result: { variant: 'filled', elevation: 'md', opacity: 'full', ... }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandLook(look: LookShorthand): Partial<Factor24Config> {\r\n return { ...LOOK_MAPPINGS[look] };\r\n}\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * All valid look shorthand values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_LOOK_VALUES: ReadonlyArray<LookShorthand> = [\r\n 'bold',\r\n 'subtle',\r\n 'minimal',\r\n 'elevated',\r\n 'outlined',\r\n 'ghost',\r\n 'solid',\r\n 'soft',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid look shorthand.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid look shorthand\r\n * @since 2.1.0\r\n */\r\nexport function isValidLook(value: unknown): value is LookShorthand {\r\n return (\r\n typeof value === 'string' && VALID_LOOK_VALUES.includes(value as LookShorthand)\r\n );\r\n}\r\n\r\n/**\r\n * Get all available look values with their descriptions.\r\n *\r\n * @returns Array of look values with descriptions\r\n * @since 2.1.0\r\n */\r\nexport function getLookDescriptions(): Array<{\r\n value: LookShorthand;\r\n description: string;\r\n}> {\r\n return [\r\n { value: 'bold', description: 'High contrast, prominent appearance' },\r\n { value: 'subtle', description: 'Low contrast, muted appearance' },\r\n { value: 'minimal', description: 'Bare minimum styling' },\r\n { value: 'elevated', description: 'With shadow/depth' },\r\n { value: 'outlined', description: 'Border emphasis' },\r\n { value: 'ghost', description: 'Nearly invisible' },\r\n { value: 'solid', description: 'Filled/solid appearance' },\r\n { value: 'soft', description: 'Soft/rounded edges' },\r\n ];\r\n}\r\n\r\n// =============================================================================\r\n// UTILITY FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Get the dominant visual characteristic of a look.\r\n *\r\n * @param look - The look shorthand\r\n * @returns The dominant characteristic\r\n * @since 2.1.0\r\n */\r\nexport function getLookCharacteristic(\r\n look: LookShorthand\r\n): 'elevation' | 'border' | 'opacity' | 'shape' {\r\n switch (look) {\r\n case 'bold':\r\n case 'elevated':\r\n return 'elevation';\r\n case 'outlined':\r\n return 'border';\r\n case 'subtle':\r\n case 'ghost':\r\n return 'opacity';\r\n case 'soft':\r\n return 'shape';\r\n case 'minimal':\r\n case 'solid':\r\n default:\r\n return 'opacity';\r\n }\r\n}\r\n\r\n/**\r\n * Get the visual weight of a look (1-5 scale).\r\n *\r\n * @param look - The look shorthand\r\n * @returns Visual weight from 1 (lightest) to 5 (heaviest)\r\n * @since 2.1.0\r\n */\r\nexport function getLookWeight(look: LookShorthand): number {\r\n switch (look) {\r\n case 'ghost':\r\n return 1;\r\n case 'minimal':\r\n return 1;\r\n case 'subtle':\r\n return 2;\r\n case 'soft':\r\n return 3;\r\n case 'outlined':\r\n return 3;\r\n case 'solid':\r\n return 4;\r\n case 'bold':\r\n return 5;\r\n case 'elevated':\r\n return 5;\r\n default:\r\n return 3;\r\n }\r\n}\r\n\r\n/**\r\n * Find the best look for a given visual weight.\r\n *\r\n * @param weight - Target visual weight (1-5)\r\n * @returns The most appropriate look shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getLookForWeight(weight: number): LookShorthand {\r\n if (weight <= 1) return 'ghost';\r\n if (weight <= 2) return 'subtle';\r\n if (weight <= 3) return 'soft';\r\n if (weight <= 4) return 'solid';\r\n return 'bold';\r\n}\r\n\r\n/**\r\n * Check if a look has visible borders.\r\n *\r\n * @param look - The look shorthand\r\n * @returns True if the look includes visible borders\r\n * @since 2.1.0\r\n */\r\nexport function hasVisibleBorder(look: LookShorthand): boolean {\r\n const config = LOOK_MAPPINGS[look];\r\n return config.border !== undefined && config.border !== 'none';\r\n}\r\n\r\n/**\r\n * Check if a look has elevation/shadow.\r\n *\r\n * @param look - The look shorthand\r\n * @returns True if the look includes elevation\r\n * @since 2.1.0\r\n */\r\nexport function hasElevation(look: LookShorthand): boolean {\r\n const config = LOOK_MAPPINGS[look];\r\n return config.elevation !== undefined && config.elevation !== 'none';\r\n}\r\n\r\n/**\r\n * Get a contrasting look for the given look.\r\n *\r\n * @param look - The current look\r\n * @returns A contrasting look shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getContrastingLook(look: LookShorthand): LookShorthand {\r\n switch (look) {\r\n case 'bold':\r\n return 'subtle';\r\n case 'subtle':\r\n return 'bold';\r\n case 'minimal':\r\n return 'elevated';\r\n case 'elevated':\r\n return 'minimal';\r\n case 'outlined':\r\n return 'solid';\r\n case 'ghost':\r\n return 'solid';\r\n case 'solid':\r\n return 'ghost';\r\n case 'soft':\r\n return 'outlined';\r\n default:\r\n return 'solid';\r\n }\r\n}\r\n","/**\r\n * Feel Mappings - Shorthand for Interaction Behavior\r\n *\r\n * Maps FeelShorthand values to Factor24Config.\r\n * Controls animation timing, transitions, and interactive feedback.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/shorthand/feel-mappings\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { Factor24Config, FeelShorthand } from '../types';\r\n\r\n// =============================================================================\r\n// FEEL MAPPINGS\r\n// =============================================================================\r\n\r\n/**\r\n * Feel shorthand to Factor24Config mappings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FEEL_MAPPINGS: Record<FeelShorthand, Partial<Factor24Config>> = {\r\n /**\r\n * Snappy - Quick, responsive feedback\r\n * Fast transitions, standard animations\r\n */\r\n snappy: {\r\n animation: 'standard',\r\n transition: 'fast',\r\n cursor: 'pointer',\r\n },\r\n\r\n /**\r\n * Smooth - Smooth, flowing transitions\r\n * Default speed, smooth easing\r\n */\r\n smooth: {\r\n animation: 'smooth',\r\n transition: 'smooth',\r\n cursor: 'pointer',\r\n },\r\n\r\n /**\r\n * Bouncy - Playful, energetic feedback\r\n * Bounce animation, default timing\r\n */\r\n bouncy: {\r\n animation: 'bounce',\r\n transition: 'bounce',\r\n cursor: 'pointer',\r\n },\r\n\r\n /**\r\n * Static - No animation\r\n * Disabled animations and transitions\r\n */\r\n static: {\r\n animation: 'none',\r\n transition: 'none',\r\n cursor: 'default',\r\n },\r\n\r\n /**\r\n * Responsive - Adaptive to input\r\n * Standard animation with default transitions\r\n */\r\n responsive: {\r\n animation: 'standard',\r\n transition: 'default',\r\n cursor: 'pointer',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// EXPANSION FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand feel shorthand to Factor24Config.\r\n *\r\n * @param feel - The feel shorthand value\r\n * @returns Partial Factor24Config with feel-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandFeel('snappy');\r\n * // Result: { animation: 'standard', transition: 'fast', cursor: 'pointer' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandFeel(feel: FeelShorthand): Partial<Factor24Config> {\r\n return { ...FEEL_MAPPINGS[feel] };\r\n}\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * All valid feel shorthand values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_FEEL_VALUES: ReadonlyArray<FeelShorthand> = [\r\n 'snappy',\r\n 'smooth',\r\n 'bouncy',\r\n 'static',\r\n 'responsive',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid feel shorthand.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid feel shorthand\r\n * @since 2.1.0\r\n */\r\nexport function isValidFeel(value: unknown): value is FeelShorthand {\r\n return (\r\n typeof value === 'string' && VALID_FEEL_VALUES.includes(value as FeelShorthand)\r\n );\r\n}\r\n\r\n/**\r\n * Get all available feel values with their descriptions.\r\n *\r\n * @returns Array of feel values with descriptions\r\n * @since 2.1.0\r\n */\r\nexport function getFeelDescriptions(): Array<{\r\n value: FeelShorthand;\r\n description: string;\r\n}> {\r\n return [\r\n { value: 'snappy', description: 'Quick, responsive feedback' },\r\n { value: 'smooth', description: 'Smooth, flowing transitions' },\r\n { value: 'bouncy', description: 'Playful, energetic feedback' },\r\n { value: 'static', description: 'No animation or transition' },\r\n { value: 'responsive', description: 'Adaptive to user input' },\r\n ];\r\n}\r\n\r\n// =============================================================================\r\n// UTILITY FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Get the animation speed of a feel (in milliseconds).\r\n *\r\n * @param feel - The feel shorthand\r\n * @returns Animation duration in milliseconds\r\n * @since 2.1.0\r\n */\r\nexport function getFeelDuration(feel: FeelShorthand): number {\r\n const config = FEEL_MAPPINGS[feel];\r\n switch (config.transition) {\r\n case 'none':\r\n case 'instant':\r\n return 0;\r\n case 'fast':\r\n return 100;\r\n case 'default':\r\n return 200;\r\n case 'slow':\r\n return 300;\r\n case 'slower':\r\n return 500;\r\n case 'smooth':\r\n return 400;\r\n case 'spring':\r\n return 300;\r\n case 'bounce':\r\n return 500;\r\n default:\r\n return 200;\r\n }\r\n}\r\n\r\n/**\r\n * Get the energy level of a feel (1-5 scale).\r\n *\r\n * @param feel - The feel shorthand\r\n * @returns Energy level from 1 (calm) to 5 (energetic)\r\n * @since 2.1.0\r\n */\r\nexport function getFeelEnergy(feel: FeelShorthand): number {\r\n switch (feel) {\r\n case 'static':\r\n return 1;\r\n case 'smooth':\r\n return 2;\r\n case 'responsive':\r\n return 3;\r\n case 'snappy':\r\n return 4;\r\n case 'bouncy':\r\n return 5;\r\n default:\r\n return 3;\r\n }\r\n}\r\n\r\n/**\r\n * Check if a feel has animations enabled.\r\n *\r\n * @param feel - The feel shorthand\r\n * @returns True if the feel includes animations\r\n * @since 2.1.0\r\n */\r\nexport function hasAnimations(feel: FeelShorthand): boolean {\r\n const config = FEEL_MAPPINGS[feel];\r\n return config.animation !== 'none';\r\n}\r\n\r\n/**\r\n * Check if a feel supports reduced motion.\r\n * Static feel is considered reduced motion friendly.\r\n *\r\n * @param feel - The feel shorthand\r\n * @returns True if the feel respects reduced motion\r\n * @since 2.1.0\r\n */\r\nexport function supportsReducedMotion(feel: FeelShorthand): boolean {\r\n return feel === 'static';\r\n}\r\n\r\n/**\r\n * Get the reduced motion alternative for a feel.\r\n *\r\n * @param feel - The current feel\r\n * @returns A reduced motion friendly feel\r\n * @since 2.1.0\r\n */\r\nexport function getReducedMotionAlternative(feel: FeelShorthand): FeelShorthand {\r\n if (feel === 'static') return 'static';\r\n return 'static';\r\n}\r\n\r\n/**\r\n * Find the best feel for a given energy level.\r\n *\r\n * @param energy - Target energy level (1-5)\r\n * @returns The most appropriate feel shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getFeelForEnergy(energy: number): FeelShorthand {\r\n if (energy <= 1) return 'static';\r\n if (energy <= 2) return 'smooth';\r\n if (energy <= 3) return 'responsive';\r\n if (energy <= 4) return 'snappy';\r\n return 'bouncy';\r\n}\r\n\r\n/**\r\n * Get the CSS easing function for a feel.\r\n *\r\n * @param feel - The feel shorthand\r\n * @returns CSS easing function string\r\n * @since 2.1.0\r\n */\r\nexport function getFeelEasing(feel: FeelShorthand): string {\r\n const config = FEEL_MAPPINGS[feel];\r\n switch (config.animation) {\r\n case 'none':\r\n return 'linear';\r\n case 'standard':\r\n return 'ease';\r\n case 'smooth':\r\n return 'cubic-bezier(0.4, 0, 0.2, 1)';\r\n case 'bounce':\r\n return 'cubic-bezier(0.68, -0.55, 0.265, 1.55)';\r\n default:\r\n return 'ease';\r\n }\r\n}\r\n\r\n/**\r\n * Check if a feel is interactive (has cursor: pointer).\r\n *\r\n * @param feel - The feel shorthand\r\n * @returns True if the feel is interactive\r\n * @since 2.1.0\r\n */\r\nexport function isInteractive(feel: FeelShorthand): boolean {\r\n const config = FEEL_MAPPINGS[feel];\r\n return config.cursor === 'pointer';\r\n}\r\n\r\n/**\r\n * Get a calmer feel for the given feel.\r\n *\r\n * @param feel - The current feel\r\n * @returns A calmer feel shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getCalmerFeel(feel: FeelShorthand): FeelShorthand {\r\n switch (feel) {\r\n case 'bouncy':\r\n return 'snappy';\r\n case 'snappy':\r\n return 'responsive';\r\n case 'responsive':\r\n return 'smooth';\r\n case 'smooth':\r\n return 'static';\r\n case 'static':\r\n return 'static';\r\n default:\r\n return 'smooth';\r\n }\r\n}\r\n\r\n/**\r\n * Get a more energetic feel for the given feel.\r\n *\r\n * @param feel - The current feel\r\n * @returns A more energetic feel shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getMoreEnergeticFeel(feel: FeelShorthand): FeelShorthand {\r\n switch (feel) {\r\n case 'static':\r\n return 'smooth';\r\n case 'smooth':\r\n return 'responsive';\r\n case 'responsive':\r\n return 'snappy';\r\n case 'snappy':\r\n return 'bouncy';\r\n case 'bouncy':\r\n return 'bouncy';\r\n default:\r\n return 'snappy';\r\n }\r\n}\r\n","/**\r\n * Surface Mappings - Shorthand for Background and Elevation\r\n *\r\n * Maps SurfaceShorthand values to Factor24Config.\r\n * Controls depth perception, layering, and visual hierarchy.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/shorthand/surface-mappings\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { Factor24Config, SurfaceShorthand } from '../types';\r\n\r\n// =============================================================================\r\n// SURFACE MAPPINGS\r\n// =============================================================================\r\n\r\n/**\r\n * Surface shorthand to Factor24Config mappings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SURFACE_MAPPINGS: Record<SurfaceShorthand, Partial<Factor24Config>> = {\r\n /**\r\n * Flat - No elevation, blends with background\r\n * Zero elevation, no shadow\r\n */\r\n flat: {\r\n elevation: 'none',\r\n border: 'none',\r\n opacity: 'full',\r\n zIndex: 'base',\r\n },\r\n\r\n /**\r\n * Raised - Slight elevation above surface\r\n * Small shadow, subtle depth\r\n */\r\n raised: {\r\n elevation: 'sm',\r\n border: 'none',\r\n opacity: 'full',\r\n zIndex: 'base',\r\n },\r\n\r\n /**\r\n * Floating - High elevation, prominent\r\n * Large shadow, appears floating\r\n */\r\n floating: {\r\n elevation: 'xl',\r\n border: 'none',\r\n opacity: 'full',\r\n zIndex: 'sticky',\r\n },\r\n\r\n /**\r\n * Sunken - Inset, appears pressed in\r\n * Inner shadow effect, below surface\r\n */\r\n sunken: {\r\n elevation: 'none',\r\n border: 'subtle',\r\n opacity: 'high',\r\n zIndex: 'base',\r\n },\r\n\r\n /**\r\n * Overlay - Modal/dialog surface\r\n * High elevation with modal z-index\r\n */\r\n overlay: {\r\n elevation: 'lg',\r\n border: 'none',\r\n opacity: 'full',\r\n zIndex: 'modal',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// EXPANSION FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand surface shorthand to Factor24Config.\r\n *\r\n * @param surface - The surface shorthand value\r\n * @returns Partial Factor24Config with surface-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandSurface('floating');\r\n * // Result: { elevation: 'xl', border: 'none', opacity: 'full', zIndex: 'sticky' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandSurface(surface: SurfaceShorthand): Partial<Factor24Config> {\r\n return { ...SURFACE_MAPPINGS[surface] };\r\n}\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * All valid surface shorthand values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_SURFACE_VALUES: ReadonlyArray<SurfaceShorthand> = [\r\n 'flat',\r\n 'raised',\r\n 'floating',\r\n 'sunken',\r\n 'overlay',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid surface shorthand.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid surface shorthand\r\n * @since 2.1.0\r\n */\r\nexport function isValidSurface(value: unknown): value is SurfaceShorthand {\r\n return (\r\n typeof value === 'string' &&\r\n VALID_SURFACE_VALUES.includes(value as SurfaceShorthand)\r\n );\r\n}\r\n\r\n/**\r\n * Get all available surface values with their descriptions.\r\n *\r\n * @returns Array of surface values with descriptions\r\n * @since 2.1.0\r\n */\r\nexport function getSurfaceDescriptions(): Array<{\r\n value: SurfaceShorthand;\r\n description: string;\r\n}> {\r\n return [\r\n { value: 'flat', description: 'No elevation, blends with background' },\r\n { value: 'raised', description: 'Slight elevation above surface' },\r\n { value: 'floating', description: 'High elevation, appears floating' },\r\n { value: 'sunken', description: 'Inset, appears pressed into surface' },\r\n { value: 'overlay', description: 'Modal/dialog surface layer' },\r\n ];\r\n}\r\n\r\n// =============================================================================\r\n// UTILITY FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Get the depth level of a surface (0-4 scale).\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns Depth level from 0 (sunken) to 4 (floating)\r\n * @since 2.1.0\r\n */\r\nexport function getSurfaceDepth(surface: SurfaceShorthand): number {\r\n switch (surface) {\r\n case 'sunken':\r\n return 0;\r\n case 'flat':\r\n return 1;\r\n case 'raised':\r\n return 2;\r\n case 'overlay':\r\n return 3;\r\n case 'floating':\r\n return 4;\r\n default:\r\n return 1;\r\n }\r\n}\r\n\r\n/**\r\n * Check if a surface has elevation (shadow).\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns True if the surface has elevation\r\n * @since 2.1.0\r\n */\r\nexport function hasSurfaceElevation(surface: SurfaceShorthand): boolean {\r\n const config = SURFACE_MAPPINGS[surface];\r\n return config.elevation !== 'none';\r\n}\r\n\r\n/**\r\n * Check if a surface creates an overlay (blocks content below).\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns True if the surface is an overlay\r\n * @since 2.1.0\r\n */\r\nexport function isOverlaySurface(surface: SurfaceShorthand): boolean {\r\n return surface === 'overlay';\r\n}\r\n\r\n/**\r\n * Get the z-index value for a surface.\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns Numeric z-index value\r\n * @since 2.1.0\r\n */\r\nexport function getSurfaceZIndex(surface: SurfaceShorthand): number {\r\n const config = SURFACE_MAPPINGS[surface];\r\n switch (config.zIndex) {\r\n case 'auto':\r\n return 0;\r\n case 'base':\r\n return 1;\r\n case 'docked':\r\n return 10;\r\n case 'dropdown':\r\n return 1000;\r\n case 'sticky':\r\n return 1100;\r\n case 'banner':\r\n return 1200;\r\n case 'overlay':\r\n return 1300;\r\n case 'modal':\r\n return 1400;\r\n case 'popover':\r\n return 1500;\r\n case 'skipLink':\r\n return 1600;\r\n case 'toast':\r\n return 1700;\r\n case 'tooltip':\r\n return 1800;\r\n case 'max':\r\n return 9999;\r\n default:\r\n return 1;\r\n }\r\n}\r\n\r\n/**\r\n * Find the best surface for a given depth level.\r\n *\r\n * @param depth - Target depth level (0-4)\r\n * @returns The most appropriate surface shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getSurfaceForDepth(depth: number): SurfaceShorthand {\r\n if (depth <= 0) return 'sunken';\r\n if (depth <= 1) return 'flat';\r\n if (depth <= 2) return 'raised';\r\n if (depth <= 3) return 'overlay';\r\n return 'floating';\r\n}\r\n\r\n/**\r\n * Get a lower surface (less elevated) for the given surface.\r\n *\r\n * @param surface - The current surface\r\n * @returns A lower surface shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getLowerSurface(surface: SurfaceShorthand): SurfaceShorthand {\r\n switch (surface) {\r\n case 'floating':\r\n return 'overlay';\r\n case 'overlay':\r\n return 'raised';\r\n case 'raised':\r\n return 'flat';\r\n case 'flat':\r\n return 'sunken';\r\n case 'sunken':\r\n return 'sunken';\r\n default:\r\n return 'flat';\r\n }\r\n}\r\n\r\n/**\r\n * Get a higher surface (more elevated) for the given surface.\r\n *\r\n * @param surface - The current surface\r\n * @returns A higher surface shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getHigherSurface(surface: SurfaceShorthand): SurfaceShorthand {\r\n switch (surface) {\r\n case 'sunken':\r\n return 'flat';\r\n case 'flat':\r\n return 'raised';\r\n case 'raised':\r\n return 'overlay';\r\n case 'overlay':\r\n return 'floating';\r\n case 'floating':\r\n return 'floating';\r\n default:\r\n return 'raised';\r\n }\r\n}\r\n\r\n/**\r\n * Get the CSS box-shadow value for a surface.\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns CSS box-shadow value\r\n * @since 2.1.0\r\n */\r\nexport function getSurfaceShadow(surface: SurfaceShorthand): string {\r\n const config = SURFACE_MAPPINGS[surface];\r\n switch (config.elevation) {\r\n case 'none':\r\n return surface === 'sunken'\r\n ? 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)'\r\n : 'none';\r\n case 'sm':\r\n return '0 1px 2px 0 rgba(0, 0, 0, 0.05)';\r\n case 'md':\r\n return '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)';\r\n case 'lg':\r\n return '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)';\r\n case 'xl':\r\n return '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)';\r\n default:\r\n return 'none';\r\n }\r\n}\r\n\r\n/**\r\n * Check if content below this surface should be dimmed.\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns True if a backdrop should be shown\r\n * @since 2.1.0\r\n */\r\nexport function needsBackdrop(surface: SurfaceShorthand): boolean {\r\n return surface === 'overlay';\r\n}\r\n\r\n/**\r\n * Get appropriate aria role for surface.\r\n *\r\n * @param surface - The surface shorthand\r\n * @returns ARIA role or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getSurfaceRole(surface: SurfaceShorthand): string | undefined {\r\n switch (surface) {\r\n case 'overlay':\r\n return 'dialog';\r\n default:\r\n return undefined;\r\n }\r\n}\r\n","/**\r\n * Spacing Mappings - Shorthand for Internal Spacing\r\n *\r\n * Maps SpacingShorthand values to Factor24Config.\r\n * Controls padding, gaps, and overall density.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/shorthand/spacing-mappings\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { Factor24Config, SpacingShorthand } from '../types';\r\n\r\n// =============================================================================\r\n// SPACING MAPPINGS\r\n// =============================================================================\r\n\r\n/**\r\n * Spacing shorthand to Factor24Config mappings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SPACING_MAPPINGS: Record<SpacingShorthand, Partial<Factor24Config>> = {\r\n /**\r\n * Tight - Compact spacing\r\n * Minimal padding and gaps\r\n */\r\n tight: {\r\n spacing: 'xs',\r\n density: 'compact',\r\n },\r\n\r\n /**\r\n * Normal - Default spacing\r\n * Balanced padding and gaps\r\n */\r\n normal: {\r\n spacing: 'md',\r\n density: 'default',\r\n },\r\n\r\n /**\r\n * Relaxed - Comfortable spacing\r\n * Generous padding and gaps\r\n */\r\n relaxed: {\r\n spacing: 'lg',\r\n density: 'comfortable',\r\n },\r\n\r\n /**\r\n * Loose - Spacious layout\r\n * Maximum padding and gaps\r\n */\r\n loose: {\r\n spacing: 'xl',\r\n density: 'comfortable',\r\n },\r\n} as const;\r\n\r\n// =============================================================================\r\n// EXPANSION FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Expand spacing shorthand to Factor24Config.\r\n *\r\n * @param spacing - The spacing shorthand value\r\n * @returns Partial Factor24Config with spacing-related factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandSpacingShorthand('tight');\r\n * // Result: { spacing: 'xs', density: 'compact' }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandSpacingShorthand(\r\n spacing: SpacingShorthand\r\n): Partial<Factor24Config> {\r\n return { ...SPACING_MAPPINGS[spacing] };\r\n}\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * All valid spacing shorthand values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const VALID_SPACING_SHORTHAND_VALUES: ReadonlyArray<SpacingShorthand> = [\r\n 'tight',\r\n 'normal',\r\n 'relaxed',\r\n 'loose',\r\n] as const;\r\n\r\n/**\r\n * Check if a value is a valid spacing shorthand.\r\n *\r\n * @param value - The value to check\r\n * @returns True if the value is a valid spacing shorthand\r\n * @since 2.1.0\r\n */\r\nexport function isValidSpacingShorthand(value: unknown): value is SpacingShorthand {\r\n return (\r\n typeof value === 'string' &&\r\n VALID_SPACING_SHORTHAND_VALUES.includes(value as SpacingShorthand)\r\n );\r\n}\r\n\r\n/**\r\n * Get all available spacing values with their descriptions.\r\n *\r\n * @returns Array of spacing values with descriptions\r\n * @since 2.1.0\r\n */\r\nexport function getSpacingDescriptions(): Array<{\r\n value: SpacingShorthand;\r\n description: string;\r\n}> {\r\n return [\r\n { value: 'tight', description: 'Compact, minimal spacing' },\r\n { value: 'normal', description: 'Default, balanced spacing' },\r\n { value: 'relaxed', description: 'Comfortable, generous spacing' },\r\n { value: 'loose', description: 'Spacious, maximum spacing' },\r\n ];\r\n}\r\n\r\n// =============================================================================\r\n// UTILITY FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Get the spacing multiplier for a shorthand.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns Spacing multiplier (0.5-2.0)\r\n * @since 2.1.0\r\n */\r\nexport function getSpacingMultiplier(spacing: SpacingShorthand): number {\r\n switch (spacing) {\r\n case 'tight':\r\n return 0.5;\r\n case 'normal':\r\n return 1.0;\r\n case 'relaxed':\r\n return 1.5;\r\n case 'loose':\r\n return 2.0;\r\n default:\r\n return 1.0;\r\n }\r\n}\r\n\r\n/**\r\n * Get the base spacing value in rem.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns Spacing value in rem\r\n * @since 2.1.0\r\n */\r\nexport function getSpacingValue(spacing: SpacingShorthand): string {\r\n const config = SPACING_MAPPINGS[spacing];\r\n switch (config.spacing) {\r\n case 'none':\r\n return '0';\r\n case 'xs':\r\n return '0.25rem';\r\n case 'sm':\r\n return '0.5rem';\r\n case 'md':\r\n return '1rem';\r\n case 'lg':\r\n return '1.5rem';\r\n case 'xl':\r\n return '2rem';\r\n default:\r\n return '1rem';\r\n }\r\n}\r\n\r\n/**\r\n * Get padding CSS value for a spacing shorthand.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns CSS padding value\r\n * @since 2.1.0\r\n */\r\nexport function getPaddingValue(spacing: SpacingShorthand): string {\r\n switch (spacing) {\r\n case 'tight':\r\n return '0.25rem 0.5rem';\r\n case 'normal':\r\n return '0.5rem 1rem';\r\n case 'relaxed':\r\n return '0.75rem 1.5rem';\r\n case 'loose':\r\n return '1rem 2rem';\r\n default:\r\n return '0.5rem 1rem';\r\n }\r\n}\r\n\r\n/**\r\n * Get gap CSS value for a spacing shorthand.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns CSS gap value\r\n * @since 2.1.0\r\n */\r\nexport function getGapValue(spacing: SpacingShorthand): string {\r\n return getSpacingValue(spacing);\r\n}\r\n\r\n/**\r\n * Get the density level (1-4 scale).\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns Density level from 1 (compact) to 4 (loose)\r\n * @since 2.1.0\r\n */\r\nexport function getDensityLevel(spacing: SpacingShorthand): number {\r\n switch (spacing) {\r\n case 'tight':\r\n return 1;\r\n case 'normal':\r\n return 2;\r\n case 'relaxed':\r\n return 3;\r\n case 'loose':\r\n return 4;\r\n default:\r\n return 2;\r\n }\r\n}\r\n\r\n/**\r\n * Find the best spacing for a given density level.\r\n *\r\n * @param level - Target density level (1-4)\r\n * @returns The most appropriate spacing shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getSpacingForDensity(level: number): SpacingShorthand {\r\n if (level <= 1) return 'tight';\r\n if (level <= 2) return 'normal';\r\n if (level <= 3) return 'relaxed';\r\n return 'loose';\r\n}\r\n\r\n/**\r\n * Get a tighter spacing for the given spacing.\r\n *\r\n * @param spacing - The current spacing\r\n * @returns A tighter spacing shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getTighterSpacing(spacing: SpacingShorthand): SpacingShorthand {\r\n switch (spacing) {\r\n case 'loose':\r\n return 'relaxed';\r\n case 'relaxed':\r\n return 'normal';\r\n case 'normal':\r\n return 'tight';\r\n case 'tight':\r\n return 'tight';\r\n default:\r\n return 'normal';\r\n }\r\n}\r\n\r\n/**\r\n * Get a looser spacing for the given spacing.\r\n *\r\n * @param spacing - The current spacing\r\n * @returns A looser spacing shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getLooserSpacing(spacing: SpacingShorthand): SpacingShorthand {\r\n switch (spacing) {\r\n case 'tight':\r\n return 'normal';\r\n case 'normal':\r\n return 'relaxed';\r\n case 'relaxed':\r\n return 'loose';\r\n case 'loose':\r\n return 'loose';\r\n default:\r\n return 'normal';\r\n }\r\n}\r\n\r\n/**\r\n * Check if spacing is considered compact.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns True if spacing is compact (tight)\r\n * @since 2.1.0\r\n */\r\nexport function isCompactSpacing(spacing: SpacingShorthand): boolean {\r\n return spacing === 'tight';\r\n}\r\n\r\n/**\r\n * Check if spacing is considered comfortable.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns True if spacing is comfortable (relaxed or loose)\r\n * @since 2.1.0\r\n */\r\nexport function isComfortableSpacing(spacing: SpacingShorthand): boolean {\r\n return spacing === 'relaxed' || spacing === 'loose';\r\n}\r\n\r\n/**\r\n * Get inline spacing value (horizontal).\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns CSS inline spacing value\r\n * @since 2.1.0\r\n */\r\nexport function getInlineSpacing(spacing: SpacingShorthand): string {\r\n switch (spacing) {\r\n case 'tight':\r\n return '0.5rem';\r\n case 'normal':\r\n return '1rem';\r\n case 'relaxed':\r\n return '1.5rem';\r\n case 'loose':\r\n return '2rem';\r\n default:\r\n return '1rem';\r\n }\r\n}\r\n\r\n/**\r\n * Get block spacing value (vertical).\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @returns CSS block spacing value\r\n * @since 2.1.0\r\n */\r\nexport function getBlockSpacing(spacing: SpacingShorthand): string {\r\n switch (spacing) {\r\n case 'tight':\r\n return '0.25rem';\r\n case 'normal':\r\n return '0.5rem';\r\n case 'relaxed':\r\n return '0.75rem';\r\n case 'loose':\r\n return '1rem';\r\n default:\r\n return '0.5rem';\r\n }\r\n}\r\n\r\n/**\r\n * Calculate responsive spacing based on viewport.\r\n *\r\n * @param spacing - The spacing shorthand\r\n * @param viewport - Viewport size ('sm' | 'md' | 'lg')\r\n * @returns Adjusted spacing shorthand\r\n * @since 2.1.0\r\n */\r\nexport function getResponsiveSpacing(\r\n spacing: SpacingShorthand,\r\n viewport: 'sm' | 'md' | 'lg'\r\n): SpacingShorthand {\r\n // On small viewports, reduce spacing\r\n if (viewport === 'sm') {\r\n return getTighterSpacing(spacing);\r\n }\r\n // On large viewports, can use the same or looser\r\n if (viewport === 'lg') {\r\n return spacing;\r\n }\r\n // Medium viewport uses default\r\n return spacing;\r\n}\r\n","/**\r\n * Shorthand Mappings - Level 3 Abstraction\r\n *\r\n * Provides shorthand props that map to multiple Factor24 properties.\r\n * Each shorthand represents a conceptual grouping of factors.\r\n *\r\n * Shorthands:\r\n * - look: Visual appearance (bold, subtle, minimal, etc.)\r\n * - feel: Interaction behavior (snappy, smooth, bouncy, etc.)\r\n * - surface: Background and elevation (flat, raised, floating, etc.)\r\n * - spacing: Internal spacing (tight, normal, relaxed, loose)\r\n *\r\n * @packageDocumentation\r\n * @module resolution/shorthand\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n// Re-export shorthand modules\r\nexport * from './look-mappings';\r\nexport * from './feel-mappings';\r\nexport * from './surface-mappings';\r\nexport * from './spacing-mappings';\r\n\r\n// Import expand functions\r\nimport { expandFeel, FEEL_MAPPINGS, isValidFeel } from './feel-mappings';\r\nimport { expandLook, LOOK_MAPPINGS, isValidLook } from './look-mappings';\r\nimport {\r\n expandSpacingShorthand,\r\n SPACING_MAPPINGS,\r\n isValidSpacingShorthand,\r\n} from './spacing-mappings';\r\nimport { expandSurface, SURFACE_MAPPINGS, isValidSurface } from './surface-mappings';\r\n\r\nimport type {\r\n Factor24Config,\r\n LookShorthand,\r\n FeelShorthand,\r\n SurfaceShorthand,\r\n SpacingShorthand,\r\n ShorthandMappings,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// SHORTHAND PROPS INTERFACE\r\n// =============================================================================\r\n\r\n/**\r\n * Shorthand props that can be expanded to Factor24Config.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ShorthandProps {\r\n /** Visual appearance shorthand */\r\n look?: LookShorthand;\r\n /** Interaction feel shorthand */\r\n feel?: FeelShorthand;\r\n /** Surface/elevation shorthand */\r\n surface?: SurfaceShorthand;\r\n /** Spacing shorthand */\r\n spacingPreset?: SpacingShorthand;\r\n}\r\n\r\n// =============================================================================\r\n// EXPAND SHORTHANDS\r\n// =============================================================================\r\n\r\n/**\r\n * Expand all shorthands to Factor24Config.\r\n * Merges all shorthand configurations into a single partial config.\r\n *\r\n * @param shorthands - The shorthand props to expand\r\n * @returns Partial Factor24Config with all shorthand factors\r\n *\r\n * @example\r\n * ```typescript\r\n * const config = expandShorthands({\r\n * look: 'bold',\r\n * feel: 'snappy',\r\n * surface: 'raised',\r\n * spacingPreset: 'normal',\r\n * });\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function expandShorthands(shorthands: ShorthandProps): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n // Expand each shorthand in order\r\n // Later shorthands can override earlier ones\r\n if (shorthands.look !== undefined) {\r\n Object.assign(result, expandLook(shorthands.look));\r\n }\r\n\r\n if (shorthands.feel !== undefined) {\r\n Object.assign(result, expandFeel(shorthands.feel));\r\n }\r\n\r\n if (shorthands.surface !== undefined) {\r\n Object.assign(result, expandSurface(shorthands.surface));\r\n }\r\n\r\n if (shorthands.spacingPreset !== undefined) {\r\n Object.assign(result, expandSpacingShorthand(shorthands.spacingPreset));\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// ALL MAPPINGS\r\n// =============================================================================\r\n\r\n/**\r\n * Complete shorthand mappings collection.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALL_SHORTHAND_MAPPINGS: ShorthandMappings = {\r\n look: LOOK_MAPPINGS,\r\n feel: FEEL_MAPPINGS,\r\n surface: SURFACE_MAPPINGS,\r\n spacing: SPACING_MAPPINGS,\r\n} as const;\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Validation result for shorthands.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ShorthandValidationResult {\r\n /** Overall validation status */\r\n valid: boolean;\r\n /** Errors by shorthand */\r\n errors: {\r\n look: string[];\r\n feel: string[];\r\n surface: string[];\r\n spacingPreset: string[];\r\n };\r\n /** All errors flattened */\r\n allErrors: string[];\r\n}\r\n\r\n/**\r\n * Validate all shorthand props.\r\n *\r\n * @param shorthands - The shorthand props to validate\r\n * @returns Validation result with errors by shorthand\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = validateShorthands({\r\n * look: 'invalid',\r\n * });\r\n * if (!result.valid) {\r\n * console.error(result.allErrors);\r\n * }\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function validateShorthands(\r\n shorthands: ShorthandProps\r\n): ShorthandValidationResult {\r\n const errors = {\r\n look: [] as string[],\r\n feel: [] as string[],\r\n surface: [] as string[],\r\n spacingPreset: [] as string[],\r\n };\r\n\r\n if (shorthands.look !== undefined && !isValidLook(shorthands.look)) {\r\n errors.look.push(\r\n `Invalid look: \"${String(shorthands.look)}\". Valid values: bold, subtle, minimal, elevated, outlined, ghost, solid, soft`\r\n );\r\n }\r\n\r\n if (shorthands.feel !== undefined && !isValidFeel(shorthands.feel)) {\r\n errors.feel.push(\r\n `Invalid feel: \"${String(shorthands.feel)}\". Valid values: snappy, smooth, bouncy, static, responsive`\r\n );\r\n }\r\n\r\n if (shorthands.surface !== undefined && !isValidSurface(shorthands.surface)) {\r\n errors.surface.push(\r\n `Invalid surface: \"${String(shorthands.surface)}\". Valid values: flat, raised, floating, sunken, overlay`\r\n );\r\n }\r\n\r\n if (\r\n shorthands.spacingPreset !== undefined &&\r\n !isValidSpacingShorthand(shorthands.spacingPreset)\r\n ) {\r\n errors.spacingPreset.push(\r\n `Invalid spacingPreset: \"${String(shorthands.spacingPreset)}\". Valid values: tight, normal, relaxed, loose`\r\n );\r\n }\r\n\r\n const allErrors = [\r\n ...errors.look,\r\n ...errors.feel,\r\n ...errors.surface,\r\n ...errors.spacingPreset,\r\n ];\r\n\r\n return {\r\n valid: allErrors.length === 0,\r\n errors,\r\n allErrors,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// DETECTION\r\n// =============================================================================\r\n\r\n/**\r\n * Check if an object contains any shorthand properties.\r\n *\r\n * @param obj - Object to check\r\n * @returns True if object has shorthand properties\r\n * @since 2.1.0\r\n */\r\nexport function hasShorthandProps(obj: Record<string, unknown>): boolean {\r\n return (\r\n 'look' in obj || 'feel' in obj || 'surface' in obj || 'spacingPreset' in obj\r\n );\r\n}\r\n\r\n/**\r\n * Extract shorthand props from an object.\r\n *\r\n * @param obj - Object to extract from\r\n * @returns Extracted shorthand props\r\n * @since 2.1.0\r\n */\r\nexport function extractShorthandProps(obj: Record<string, unknown>): ShorthandProps {\r\n const result: ShorthandProps = {};\r\n\r\n if ('look' in obj && typeof obj['look'] === 'string') {\r\n result['look'] = obj['look'] as LookShorthand;\r\n }\r\n\r\n if ('feel' in obj && typeof obj['feel'] === 'string') {\r\n result['feel'] = obj['feel'] as FeelShorthand;\r\n }\r\n\r\n if ('surface' in obj && typeof obj['surface'] === 'string') {\r\n result['surface'] = obj['surface'] as SurfaceShorthand;\r\n }\r\n\r\n if ('spacingPreset' in obj && typeof obj['spacingPreset'] === 'string') {\r\n result['spacingPreset'] = obj['spacingPreset'] as SpacingShorthand;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Detect which shorthands are present in an object.\r\n *\r\n * @param obj - Object to check\r\n * @returns Object indicating which shorthands are present\r\n * @since 2.1.0\r\n */\r\nexport function detectShorthands(obj: Record<string, unknown>): {\r\n hasLook: boolean;\r\n hasFeel: boolean;\r\n hasSurface: boolean;\r\n hasSpacing: boolean;\r\n} {\r\n return {\r\n hasLook: 'look' in obj,\r\n hasFeel: 'feel' in obj,\r\n hasSurface: 'surface' in obj,\r\n hasSpacing: 'spacingPreset' in obj,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// CONSTANTS\r\n// =============================================================================\r\n\r\n/**\r\n * All shorthand names.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SHORTHAND_NAMES = ['look', 'feel', 'surface', 'spacingPreset'] as const;\r\n\r\n/**\r\n * Shorthand name type.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type ShorthandName = (typeof SHORTHAND_NAMES)[number];\r\n\r\n/**\r\n * Map of shorthand names to their possible values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SHORTHAND_VALUES: Record<ShorthandName, ReadonlyArray<string>> = {\r\n look: ['bold', 'subtle', 'minimal', 'elevated', 'outlined', 'ghost', 'solid', 'soft'],\r\n feel: ['snappy', 'smooth', 'bouncy', 'static', 'responsive'],\r\n surface: ['flat', 'raised', 'floating', 'sunken', 'overlay'],\r\n spacingPreset: ['tight', 'normal', 'relaxed', 'loose'],\r\n} as const;\r\n\r\n// =============================================================================\r\n// PRESET COMBINATIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Common shorthand combinations for quick use.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SHORTHAND_PRESETS: Record<string, ShorthandProps> = {\r\n /** Primary action button */\r\n primaryButton: {\r\n look: 'bold',\r\n feel: 'snappy',\r\n surface: 'raised',\r\n spacingPreset: 'normal',\r\n },\r\n\r\n /** Secondary action button */\r\n secondaryButton: {\r\n look: 'outlined',\r\n feel: 'snappy',\r\n surface: 'flat',\r\n spacingPreset: 'normal',\r\n },\r\n\r\n /** Ghost/text button */\r\n ghostButton: {\r\n look: 'ghost',\r\n feel: 'snappy',\r\n surface: 'flat',\r\n spacingPreset: 'tight',\r\n },\r\n\r\n /** Card container */\r\n card: {\r\n look: 'subtle',\r\n feel: 'smooth',\r\n surface: 'raised',\r\n spacingPreset: 'relaxed',\r\n },\r\n\r\n /** Modal/dialog */\r\n modal: {\r\n look: 'solid',\r\n feel: 'smooth',\r\n surface: 'overlay',\r\n spacingPreset: 'relaxed',\r\n },\r\n\r\n /** Input field */\r\n input: {\r\n look: 'outlined',\r\n feel: 'responsive',\r\n surface: 'flat',\r\n spacingPreset: 'normal',\r\n },\r\n\r\n /** Tooltip */\r\n tooltip: {\r\n look: 'solid',\r\n feel: 'snappy',\r\n surface: 'floating',\r\n spacingPreset: 'tight',\r\n },\r\n\r\n /** Navigation item */\r\n navItem: {\r\n look: 'ghost',\r\n feel: 'snappy',\r\n surface: 'flat',\r\n spacingPreset: 'normal',\r\n },\r\n\r\n /** Active navigation item */\r\n navItemActive: {\r\n look: 'subtle',\r\n feel: 'smooth',\r\n surface: 'raised',\r\n spacingPreset: 'normal',\r\n },\r\n\r\n /** Badge/chip */\r\n badge: {\r\n look: 'soft',\r\n feel: 'static',\r\n surface: 'flat',\r\n spacingPreset: 'tight',\r\n },\r\n} as const;\r\n\r\n/**\r\n * Get a predefined shorthand preset by name.\r\n *\r\n * @param presetName - The name of the preset\r\n * @returns The shorthand props or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getShorthandPreset(presetName: string): ShorthandProps | undefined {\r\n return SHORTHAND_PRESETS[presetName];\r\n}\r\n\r\n// =============================================================================\r\n// MERGE UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * Merge multiple ShorthandProps configurations.\r\n * Later values override earlier ones.\r\n *\r\n * @param propsList - Shorthand props to merge\r\n * @returns Merged shorthand props\r\n * @since 2.1.0\r\n */\r\nexport function mergeShorthandProps(...propsList: ShorthandProps[]): ShorthandProps {\r\n const result: ShorthandProps = {};\r\n\r\n for (const props of propsList) {\r\n if (props.look !== undefined) {\r\n result.look = props.look;\r\n }\r\n if (props.feel !== undefined) {\r\n result.feel = props.feel;\r\n }\r\n if (props.surface !== undefined) {\r\n result.surface = props.surface;\r\n }\r\n if (props.spacingPreset !== undefined) {\r\n result.spacingPreset = props.spacingPreset;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","/**\r\n * Resolution Engine - 5-Level Abstraction API\r\n *\r\n * Main resolution function that converts MultiLevelProps to Factor24Config.\r\n * Implements the 5-level priority system:\r\n *\r\n * Priority: Level 1 (raw) > Level 2 (groups) > Level 3 (shorthand) > Level 4 (preset) > Level 5 (intent)\r\n *\r\n * @packageDocumentation\r\n * @module resolution/resolveProps\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { safeStringify } from '../utils/stringify';\r\n\r\nimport { expandGroups, validateGroups } from './groups';\r\nimport { expandShorthands, validateShorthands, type ShorthandProps } from './shorthand';\r\nimport { DEFAULT_FACTOR24_CONFIG, FACTOR24_KEYS, isValidIntent, isValidMood } from './types';\r\n\r\nimport type {\r\n Factor24Config,\r\n MultiLevelProps,\r\n ResolutionResult,\r\n SemanticIntent,\r\n SemanticMood,\r\n IntentDefinition,\r\n MoodModifierDefinition,\r\n PresetDefinition,\r\n} from './types';\r\n\r\n// =============================================================================\r\n// INTENT DEFINITIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Built-in intent definitions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_DEFINITIONS: Record<SemanticIntent, IntentDefinition> = {\r\n // Action intents\r\n cta: {\r\n id: 'cta',\r\n name: 'Call to Action',\r\n description: 'Primary conversion action, highest emphasis',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n elevation: 'md',\r\n animation: 'standard',\r\n cursor: 'pointer',\r\n },\r\n },\r\n primary: {\r\n id: 'primary',\r\n name: 'Primary Action',\r\n description: 'Main action in a group',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n elevation: 'sm',\r\n cursor: 'pointer',\r\n },\r\n },\r\n secondary: {\r\n id: 'secondary',\r\n name: 'Secondary Action',\r\n description: 'Alternative action, less emphasis',\r\n config: {\r\n variant: 'outlined',\r\n colorScheme: 'secondary',\r\n elevation: 'none',\r\n cursor: 'pointer',\r\n },\r\n },\r\n tertiary: {\r\n id: 'tertiary',\r\n name: 'Tertiary Action',\r\n description: 'Low emphasis action',\r\n config: {\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n elevation: 'none',\r\n cursor: 'pointer',\r\n },\r\n },\r\n destructive: {\r\n id: 'destructive',\r\n name: 'Destructive Action',\r\n description: 'Dangerous or irreversible action',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'error',\r\n elevation: 'sm',\r\n cursor: 'pointer',\r\n },\r\n },\r\n confirm: {\r\n id: 'confirm',\r\n name: 'Confirm Action',\r\n description: 'Confirmation or approval action',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'success',\r\n elevation: 'sm',\r\n cursor: 'pointer',\r\n },\r\n },\r\n cancel: {\r\n id: 'cancel',\r\n name: 'Cancel Action',\r\n description: 'Cancel or dismiss action',\r\n config: {\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n elevation: 'none',\r\n cursor: 'pointer',\r\n },\r\n },\r\n\r\n // Navigation intents\r\n nav: {\r\n id: 'nav',\r\n name: 'Navigation',\r\n description: 'Navigation element',\r\n config: {\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n elevation: 'none',\r\n cursor: 'pointer',\r\n },\r\n },\r\n navActive: {\r\n id: 'navActive',\r\n name: 'Active Navigation',\r\n description: 'Currently active navigation item',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n elevation: 'none',\r\n cursor: 'default',\r\n },\r\n },\r\n navSubtle: {\r\n id: 'navSubtle',\r\n name: 'Subtle Navigation',\r\n description: 'Subtle navigation element',\r\n config: {\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n opacity: 'medium',\r\n cursor: 'pointer',\r\n },\r\n },\r\n link: {\r\n id: 'link',\r\n name: 'Link',\r\n description: 'Inline link action',\r\n config: {\r\n variant: 'ghost',\r\n colorScheme: 'primary',\r\n elevation: 'none',\r\n cursor: 'pointer',\r\n },\r\n },\r\n\r\n // Feedback intents\r\n success: {\r\n id: 'success',\r\n name: 'Success',\r\n description: 'Success state indicator',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'success',\r\n elevation: 'none',\r\n },\r\n },\r\n warning: {\r\n id: 'warning',\r\n name: 'Warning',\r\n description: 'Warning state indicator',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'warning',\r\n elevation: 'none',\r\n },\r\n },\r\n error: {\r\n id: 'error',\r\n name: 'Error',\r\n description: 'Error state indicator',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'error',\r\n elevation: 'none',\r\n },\r\n },\r\n info: {\r\n id: 'info',\r\n name: 'Info',\r\n description: 'Informational indicator',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'info',\r\n elevation: 'none',\r\n },\r\n },\r\n\r\n // Special intents\r\n ghost: {\r\n id: 'ghost',\r\n name: 'Ghost',\r\n description: 'Minimal visual presence',\r\n config: {\r\n variant: 'ghost',\r\n elevation: 'none',\r\n opacity: 'medium',\r\n border: 'none',\r\n },\r\n },\r\n subtle: {\r\n id: 'subtle',\r\n name: 'Subtle',\r\n description: 'Subtle, muted appearance',\r\n config: {\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n elevation: 'none',\r\n opacity: 'high',\r\n },\r\n },\r\n hero: {\r\n id: 'hero',\r\n name: 'Hero',\r\n description: 'Hero/featured element',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n elevation: 'lg',\r\n size: 'lg',\r\n animation: 'smooth',\r\n },\r\n },\r\n premium: {\r\n id: 'premium',\r\n name: 'Premium',\r\n description: 'Premium/luxury appearance',\r\n config: {\r\n variant: 'filled',\r\n elevation: 'md',\r\n animation: 'smooth',\r\n transition: 'slow',\r\n },\r\n },\r\n brand: {\r\n id: 'brand',\r\n name: 'Brand',\r\n description: 'Brand emphasis',\r\n config: {\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n elevation: 'sm',\r\n },\r\n },\r\n\r\n // Input intents - 5-Level form support\r\n inputText: {\r\n id: 'inputText',\r\n name: 'Text Input',\r\n description: 'Standard text entry',\r\n config: { colorScheme: 'neutral', shape: 'md', border: 'solid', cursor: 'text' },\r\n },\r\n inputEmail: {\r\n id: 'inputEmail',\r\n name: 'Email Input',\r\n description: 'Email entry field',\r\n config: { colorScheme: 'neutral', shape: 'md', border: 'solid', cursor: 'text' },\r\n },\r\n inputPassword: {\r\n id: 'inputPassword',\r\n name: 'Password Input',\r\n description: 'Secure password entry',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'text',\r\n typography: 'mono',\r\n },\r\n },\r\n inputSearch: {\r\n id: 'inputSearch',\r\n name: 'Search Input',\r\n description: 'Search field',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n cursor: 'text',\r\n iconPosition: 'left',\r\n },\r\n },\r\n inputCode: {\r\n id: 'inputCode',\r\n name: 'Code Input',\r\n description: 'Code/OTP entry',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n border: 'solid',\r\n cursor: 'text',\r\n typography: 'mono',\r\n },\r\n },\r\n inputNumber: {\r\n id: 'inputNumber',\r\n name: 'Number Input',\r\n description: 'Numeric entry',\r\n config: { colorScheme: 'neutral', shape: 'md', border: 'solid', cursor: 'text' },\r\n },\r\n inputPhone: {\r\n id: 'inputPhone',\r\n name: 'Phone Input',\r\n description: 'Phone number entry',\r\n config: { colorScheme: 'neutral', shape: 'md', border: 'solid', cursor: 'text' },\r\n },\r\n inputUrl: {\r\n id: 'inputUrl',\r\n name: 'URL Input',\r\n description: 'URL entry',\r\n config: { colorScheme: 'neutral', shape: 'md', border: 'solid', cursor: 'text' },\r\n },\r\n inputDate: {\r\n id: 'inputDate',\r\n name: 'Date Input',\r\n description: 'Date picker entry',\r\n config: { colorScheme: 'neutral', shape: 'md', border: 'solid', cursor: 'pointer' },\r\n },\r\n inputCurrency: {\r\n id: 'inputCurrency',\r\n name: 'Currency Input',\r\n description: 'Monetary entry',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'text',\r\n iconPosition: 'left',\r\n },\r\n },\r\n inputSelect: {\r\n id: 'inputSelect',\r\n name: 'Select Input',\r\n description: 'Dropdown selection',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'pointer',\r\n iconPosition: 'right',\r\n },\r\n },\r\n inputMultiselect: {\r\n id: 'inputMultiselect',\r\n name: 'Multiselect Input',\r\n description: 'Multiple selection',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'pointer',\r\n overflow: 'auto',\r\n },\r\n },\r\n inputAutocomplete: {\r\n id: 'inputAutocomplete',\r\n name: 'Autocomplete Input',\r\n description: 'Text with suggestions',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'text',\r\n animation: 'subtle',\r\n },\r\n },\r\n inputCheckbox: {\r\n id: 'inputCheckbox',\r\n name: 'Checkbox Input',\r\n description: 'Binary selection',\r\n config: {\r\n colorScheme: 'primary',\r\n shape: 'sm',\r\n border: 'solid',\r\n cursor: 'pointer',\r\n animation: 'subtle',\r\n },\r\n },\r\n inputSwitch: {\r\n id: 'inputSwitch',\r\n name: 'Switch Input',\r\n description: 'Toggle switch',\r\n config: {\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n cursor: 'pointer',\r\n animation: 'smooth',\r\n },\r\n },\r\n inputRadio: {\r\n id: 'inputRadio',\r\n name: 'Radio Input',\r\n description: 'Exclusive selection',\r\n config: {\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n border: 'solid',\r\n cursor: 'pointer',\r\n animation: 'subtle',\r\n },\r\n },\r\n inputSlider: {\r\n id: 'inputSlider',\r\n name: 'Slider Input',\r\n description: 'Range selection',\r\n config: {\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n cursor: 'grab',\r\n animation: 'smooth',\r\n },\r\n },\r\n inputRating: {\r\n id: 'inputRating',\r\n name: 'Rating Input',\r\n description: 'Star rating',\r\n config: { colorScheme: 'warning', shape: 'none', cursor: 'pointer', animation: 'bounce' },\r\n },\r\n inputTextarea: {\r\n id: 'inputTextarea',\r\n name: 'Textarea Input',\r\n description: 'Multiline text',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'text',\r\n overflow: 'auto',\r\n },\r\n },\r\n inputRichtext: {\r\n id: 'inputRichtext',\r\n name: 'Rich Text Input',\r\n description: 'WYSIWYG editor',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n border: 'solid',\r\n cursor: 'text',\r\n elevation: 'sm',\r\n overflow: 'auto',\r\n },\r\n },\r\n inputError: {\r\n id: 'inputError',\r\n name: 'Error State',\r\n description: 'Invalid input',\r\n config: { colorScheme: 'error', border: 'solid', animation: 'subtle' },\r\n },\r\n inputSuccess: {\r\n id: 'inputSuccess',\r\n name: 'Success State',\r\n description: 'Valid input',\r\n config: { colorScheme: 'success', border: 'solid', animation: 'subtle' },\r\n },\r\n inputDisabled: {\r\n id: 'inputDisabled',\r\n name: 'Disabled State',\r\n description: 'Non-interactive input',\r\n config: { colorScheme: 'neutral', opacity: 'medium', cursor: 'notAllowed', state: 'disabled' },\r\n },\r\n\r\n // Card intents\r\n cardContent: {\r\n id: 'cardContent',\r\n name: 'Content Card',\r\n description: 'General content display card',\r\n config: { colorScheme: 'surface', shape: 'lg', elevation: 'sm', border: 'solid' },\r\n },\r\n cardFeatured: {\r\n id: 'cardFeatured',\r\n name: 'Featured Card',\r\n description: 'Highlighted/featured content card',\r\n config: { colorScheme: 'primary', shape: 'xl', elevation: 'lg', animation: 'smooth' },\r\n },\r\n cardArticle: {\r\n id: 'cardArticle',\r\n name: 'Article Card',\r\n description: 'Blog/article content card',\r\n config: { colorScheme: 'surface', shape: 'lg', elevation: 'sm', cursor: 'pointer' },\r\n },\r\n cardInteractive: {\r\n id: 'cardInteractive',\r\n name: 'Interactive Card',\r\n description: 'Clickable interactive card',\r\n config: {\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n cursor: 'pointer',\r\n animation: 'subtle',\r\n },\r\n },\r\n cardSelectable: {\r\n id: 'cardSelectable',\r\n name: 'Selectable Card',\r\n description: 'Card with selection state',\r\n config: {\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n border: 'solid',\r\n cursor: 'pointer',\r\n animation: 'subtle',\r\n },\r\n },\r\n cardDraggable: {\r\n id: 'cardDraggable',\r\n name: 'Draggable Card',\r\n description: 'Drag and drop card',\r\n config: {\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'md',\r\n cursor: 'grab',\r\n animation: 'smooth',\r\n },\r\n },\r\n cardProduct: {\r\n id: 'cardProduct',\r\n name: 'Product Card',\r\n description: 'E-commerce product card',\r\n config: { colorScheme: 'surface', shape: 'lg', elevation: 'sm', cursor: 'pointer' },\r\n },\r\n cardPricing: {\r\n id: 'cardPricing',\r\n name: 'Pricing Card',\r\n description: 'Pricing tier card',\r\n config: { colorScheme: 'surface', shape: 'xl', elevation: 'md', border: 'solid' },\r\n },\r\n cardProfile: {\r\n id: 'cardProfile',\r\n name: 'Profile Card',\r\n description: 'User profile card',\r\n config: { colorScheme: 'surface', shape: 'lg', elevation: 'sm' },\r\n },\r\n cardTestimonial: {\r\n id: 'cardTestimonial',\r\n name: 'Testimonial Card',\r\n description: 'Customer testimonial card',\r\n config: { colorScheme: 'surface', shape: 'xl', elevation: 'sm', border: 'none' },\r\n },\r\n cardStats: {\r\n id: 'cardStats',\r\n name: 'Stats Card',\r\n description: 'Statistics display card',\r\n config: { colorScheme: 'surface', shape: 'lg', elevation: 'sm' },\r\n },\r\n cardNotification: {\r\n id: 'cardNotification',\r\n name: 'Notification Card',\r\n description: 'Notification/alert card',\r\n config: { colorScheme: 'info', shape: 'lg', elevation: 'md', animation: 'subtle' },\r\n },\r\n cardGlass: {\r\n id: 'cardGlass',\r\n name: 'Glass Card',\r\n description: 'Glassmorphism style card',\r\n config: { colorScheme: 'glass', shape: 'xl', elevation: 'lg', opacity: 'high' },\r\n },\r\n cardNeumorphic: {\r\n id: 'cardNeumorphic',\r\n name: 'Neumorphic Card',\r\n description: 'Neumorphism style card',\r\n config: { colorScheme: 'surface', shape: 'xl', elevation: 'neumorphic' },\r\n },\r\n\r\n // Alert intents\r\n alertInfo: {\r\n id: 'alertInfo',\r\n name: 'Info Alert',\r\n description: 'Informational alert',\r\n config: { colorScheme: 'info', shape: 'md', border: 'solid' },\r\n },\r\n alertSuccess: {\r\n id: 'alertSuccess',\r\n name: 'Success Alert',\r\n description: 'Success feedback alert',\r\n config: { colorScheme: 'success', shape: 'md', border: 'solid' },\r\n },\r\n alertWarning: {\r\n id: 'alertWarning',\r\n name: 'Warning Alert',\r\n description: 'Warning feedback alert',\r\n config: { colorScheme: 'warning', shape: 'md', border: 'solid' },\r\n },\r\n alertError: {\r\n id: 'alertError',\r\n name: 'Error Alert',\r\n description: 'Error feedback alert',\r\n config: { colorScheme: 'error', shape: 'md', border: 'solid' },\r\n },\r\n\r\n // Toast intents\r\n toastDefault: {\r\n id: 'toastDefault',\r\n name: 'Default Toast',\r\n description: 'Default notification toast',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n zIndex: 'toast',\r\n },\r\n },\r\n toastSuccess: {\r\n id: 'toastSuccess',\r\n name: 'Success Toast',\r\n description: 'Success notification toast',\r\n config: {\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n zIndex: 'toast',\r\n },\r\n },\r\n toastError: {\r\n id: 'toastError',\r\n name: 'Error Toast',\r\n description: 'Error notification toast',\r\n config: {\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n zIndex: 'toast',\r\n },\r\n },\r\n toastAction: {\r\n id: 'toastAction',\r\n name: 'Action Toast',\r\n description: 'Toast with action button',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n zIndex: 'toast',\r\n },\r\n },\r\n\r\n // Progress intents\r\n progressLinear: {\r\n id: 'progressLinear',\r\n name: 'Linear Progress',\r\n description: 'Horizontal progress bar',\r\n config: { colorScheme: 'primary', shape: 'pill', animation: 'smooth' },\r\n },\r\n progressCircular: {\r\n id: 'progressCircular',\r\n name: 'Circular Progress',\r\n description: 'Circular progress indicator',\r\n config: { colorScheme: 'primary', animation: 'smooth' },\r\n },\r\n\r\n // Skeleton intent\r\n skeleton: {\r\n id: 'skeleton',\r\n name: 'Skeleton Loader',\r\n description: 'Content loading placeholder',\r\n config: { colorScheme: 'neutral', shape: 'md', animation: 'subtle', opacity: 'medium' },\r\n },\r\n\r\n // Badge intents\r\n badgeDefault: {\r\n id: 'badgeDefault',\r\n name: 'Default Badge',\r\n description: 'Standard badge',\r\n config: { colorScheme: 'neutral', shape: 'pill', size: 'xs' },\r\n },\r\n badgeStatus: {\r\n id: 'badgeStatus',\r\n name: 'Status Badge',\r\n description: 'Status indicator badge',\r\n config: { colorScheme: 'primary', shape: 'pill', size: 'xs' },\r\n },\r\n badgeCount: {\r\n id: 'badgeCount',\r\n name: 'Count Badge',\r\n description: 'Numeric count badge',\r\n config: { colorScheme: 'error', shape: 'pill', size: 'xs' },\r\n },\r\n\r\n // Chip intents\r\n chipDefault: {\r\n id: 'chipDefault',\r\n name: 'Default Chip',\r\n description: 'Standard chip',\r\n config: { colorScheme: 'neutral', shape: 'pill', size: 'sm', border: 'solid' },\r\n },\r\n chipSelectable: {\r\n id: 'chipSelectable',\r\n name: 'Selectable Chip',\r\n description: 'Toggleable selection chip',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n size: 'sm',\r\n border: 'solid',\r\n cursor: 'pointer',\r\n animation: 'subtle',\r\n },\r\n },\r\n chipDeletable: {\r\n id: 'chipDeletable',\r\n name: 'Deletable Chip',\r\n description: 'Chip with remove action',\r\n config: {\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n size: 'sm',\r\n border: 'solid',\r\n iconPosition: 'right',\r\n },\r\n },\r\n\r\n // Tooltip intents\r\n tooltipDefault: {\r\n id: 'tooltipDefault',\r\n name: 'Default Tooltip',\r\n description: 'Standard tooltip',\r\n config: { colorScheme: 'inverse', shape: 'sm', elevation: 'md', size: 'sm', zIndex: 'tooltip' },\r\n },\r\n tooltipRich: {\r\n id: 'tooltipRich',\r\n name: 'Rich Tooltip',\r\n description: 'Extended content tooltip',\r\n config: {\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n size: 'md',\r\n zIndex: 'tooltip',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// MOOD DEFINITIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Built-in mood modifier definitions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_DEFINITIONS: Record<SemanticMood, MoodModifierDefinition> = {\r\n professional: {\r\n id: 'professional',\r\n name: 'Professional',\r\n description: 'Corporate, formal feel',\r\n adjustments: {\r\n animation: 'standard',\r\n transition: 'default',\r\n shape: 'sm',\r\n },\r\n },\r\n friendly: {\r\n id: 'friendly',\r\n name: 'Friendly',\r\n description: 'Approachable, warm feel',\r\n adjustments: {\r\n animation: 'smooth',\r\n transition: 'default',\r\n shape: 'lg',\r\n },\r\n },\r\n playful: {\r\n id: 'playful',\r\n name: 'Playful',\r\n description: 'Fun, animated feel',\r\n adjustments: {\r\n animation: 'bounce',\r\n transition: 'fast',\r\n shape: 'full',\r\n },\r\n },\r\n serious: {\r\n id: 'serious',\r\n name: 'Serious',\r\n description: 'Formal, minimal animation',\r\n adjustments: {\r\n animation: 'subtle',\r\n transition: 'default',\r\n shape: 'none',\r\n },\r\n },\r\n luxurious: {\r\n id: 'luxurious',\r\n name: 'Luxurious',\r\n description: 'Premium, elegant feel',\r\n adjustments: {\r\n animation: 'smooth',\r\n transition: 'slow',\r\n elevation: 'md',\r\n },\r\n },\r\n minimal: {\r\n id: 'minimal',\r\n name: 'Minimal',\r\n description: 'Clean, sparse feel',\r\n adjustments: {\r\n animation: 'subtle',\r\n transition: 'fast',\r\n elevation: 'none',\r\n border: 'none',\r\n },\r\n },\r\n bold: {\r\n id: 'bold',\r\n name: 'Bold',\r\n description: 'Strong, impactful feel',\r\n adjustments: {\r\n animation: 'standard',\r\n transition: 'fast',\r\n elevation: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// PRESET REGISTRY\r\n// =============================================================================\r\n\r\n/**\r\n * Preset registry for storing and retrieving presets.\r\n *\r\n * @since 2.1.0\r\n */\r\nconst presetRegistry = new Map<string, PresetDefinition>();\r\n\r\n/**\r\n * Register a preset.\r\n *\r\n * @param preset - The preset to register\r\n * @since 2.1.0\r\n */\r\nexport function registerPreset(preset: PresetDefinition): void {\r\n presetRegistry.set(preset.id, preset);\r\n}\r\n\r\n/**\r\n * Get a preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getPreset(id: string): PresetDefinition | undefined {\r\n return presetRegistry.get(id);\r\n}\r\n\r\n/**\r\n * Check if a preset exists.\r\n *\r\n * @param id - The preset ID\r\n * @returns True if the preset exists\r\n * @since 2.1.0\r\n */\r\nexport function hasPreset(id: string): boolean {\r\n return presetRegistry.has(id);\r\n}\r\n\r\n/**\r\n * Get all registered presets.\r\n *\r\n * @returns Map of all presets\r\n * @since 2.1.0\r\n */\r\nexport function getAllPresets(): Map<string, PresetDefinition> {\r\n return new Map(presetRegistry);\r\n}\r\n\r\n/**\r\n * Clear all registered presets.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function clearPresets(): void {\r\n presetRegistry.clear();\r\n}\r\n\r\n// =============================================================================\r\n// LEVEL DETECTION\r\n// =============================================================================\r\n\r\n/**\r\n * Detect which levels are present in MultiLevelProps.\r\n *\r\n * @param props - The multi-level props to analyze\r\n * @returns Object indicating which levels are present\r\n * @since 2.1.0\r\n */\r\nexport function detectLevels(props: MultiLevelProps): {\r\n hasLevel5: boolean;\r\n hasLevel4: boolean;\r\n hasLevel3: boolean;\r\n hasLevel2: boolean;\r\n hasLevel1: boolean;\r\n levels: number[];\r\n} {\r\n const hasLevel5 = props.intent !== undefined || props.mood !== undefined;\r\n const hasLevel4 = props.preset !== undefined;\r\n const hasLevel3 =\r\n props.look !== undefined ||\r\n props.feel !== undefined ||\r\n props.surface !== undefined ||\r\n props.spacingPreset !== undefined;\r\n const hasLevel2 =\r\n props.visual !== undefined ||\r\n props.motion !== undefined ||\r\n props.layout !== undefined ||\r\n props.experience !== undefined;\r\n\r\n // Level 1: Any raw factor property\r\n const level1Keys: Array<keyof MultiLevelProps> = [\r\n 'size',\r\n 'variant',\r\n 'colorScheme',\r\n 'shape',\r\n 'position',\r\n 'iconPosition',\r\n 'state',\r\n 'animation',\r\n 'elevation',\r\n 'a11y',\r\n 'justify',\r\n 'align',\r\n 'orientation',\r\n 'density',\r\n 'loadingState',\r\n 'responsive',\r\n 'theme',\r\n 'spacing',\r\n 'typography',\r\n 'border',\r\n 'opacity',\r\n 'overflow',\r\n 'cursor',\r\n 'zIndex',\r\n 'transition',\r\n ];\r\n\r\n const hasLevel1 = level1Keys.some((key) => props[key] !== undefined);\r\n\r\n const levels: number[] = [];\r\n if (hasLevel5) levels.push(5);\r\n if (hasLevel4) levels.push(4);\r\n if (hasLevel3) levels.push(3);\r\n if (hasLevel2) levels.push(2);\r\n if (hasLevel1) levels.push(1);\r\n\r\n return {\r\n hasLevel5,\r\n hasLevel4,\r\n hasLevel3,\r\n hasLevel2,\r\n hasLevel1,\r\n levels,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// EXTRACTION HELPERS\r\n// =============================================================================\r\n\r\n/**\r\n * Extract Level 1 raw factors from MultiLevelProps.\r\n *\r\n * @param props - The multi-level props\r\n * @returns Partial Factor24Config with Level 1 factors\r\n * @since 2.1.0\r\n */\r\nfunction extractLevel1Factors(props: MultiLevelProps): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n if (props.size !== undefined) result.size = props.size;\r\n if (props.variant !== undefined) result.variant = props.variant;\r\n if (props.colorScheme !== undefined) result.colorScheme = props.colorScheme;\r\n if (props.shape !== undefined) result.shape = props.shape;\r\n if (props.position !== undefined) result.position = props.position;\r\n if (props.iconPosition !== undefined) result.iconPosition = props.iconPosition;\r\n if (props.state !== undefined) result.state = props.state;\r\n if (props.animation !== undefined) result.animation = props.animation;\r\n if (props.elevation !== undefined) result.elevation = props.elevation;\r\n if (props.a11y !== undefined) result.a11y = props.a11y;\r\n if (props.justify !== undefined) result.justify = props.justify;\r\n if (props.align !== undefined) result.align = props.align;\r\n if (props.orientation !== undefined) result.orientation = props.orientation;\r\n if (props.density !== undefined) result.density = props.density;\r\n if (props.loadingState !== undefined) result.loadingState = props.loadingState;\r\n if (props.responsive !== undefined) result.responsive = props.responsive;\r\n if (props.theme !== undefined) result.theme = props.theme;\r\n if (props.spacing !== undefined) result.spacing = props.spacing;\r\n if (props.typography !== undefined) result.typography = props.typography;\r\n if (props.border !== undefined) result.border = props.border;\r\n if (props.opacity !== undefined) result.opacity = props.opacity;\r\n if (props.overflow !== undefined) result.overflow = props.overflow;\r\n if (props.cursor !== undefined) result.cursor = props.cursor;\r\n if (props.zIndex !== undefined) result.zIndex = props.zIndex;\r\n if (props.transition !== undefined) result.transition = props.transition;\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Extract Level 3 shorthand props from MultiLevelProps.\r\n *\r\n * @param props - The multi-level props\r\n * @returns Shorthand props\r\n * @since 2.1.0\r\n */\r\nfunction extractLevel3Shorthands(props: MultiLevelProps): ShorthandProps {\r\n const result: ShorthandProps = {};\r\n\r\n if (props.look !== undefined) result.look = props.look;\r\n if (props.feel !== undefined) result.feel = props.feel;\r\n if (props.surface !== undefined) result.surface = props.surface;\r\n if (props.spacingPreset !== undefined) result.spacingPreset = props.spacingPreset;\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// MERGE LOGIC\r\n// =============================================================================\r\n\r\n/**\r\n * Merge configurations with priority.\r\n * Later configurations override earlier ones.\r\n *\r\n * @param configs - Configurations to merge in priority order (lowest to highest)\r\n * @returns Merged configuration\r\n * @since 2.1.0\r\n */\r\nfunction mergeConfigs(...configs: Array<Partial<Factor24Config>>): Partial<Factor24Config> {\r\n const result: Partial<Factor24Config> = {};\r\n\r\n for (const config of configs) {\r\n for (const key of FACTOR24_KEYS) {\r\n if (config[key] !== undefined) {\r\n // Use type assertion to handle the assignment\r\n (result as Record<string, unknown>)[key] = config[key];\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// VALIDATION\r\n// =============================================================================\r\n\r\n/**\r\n * Validation result for resolution.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ResolutionValidationResult {\r\n /** Overall validation status */\r\n valid: boolean;\r\n /** Errors */\r\n errors: string[];\r\n /** Warnings (non-blocking) */\r\n warnings: string[];\r\n}\r\n\r\n/**\r\n * Validate MultiLevelProps before resolution.\r\n *\r\n * @param props - The props to validate\r\n * @returns Validation result\r\n * @since 2.1.0\r\n */\r\nexport function validateMultiLevelProps(props: MultiLevelProps): ResolutionValidationResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Validate Level 5: Intent\r\n if (props.intent !== undefined && !isValidIntent(props.intent)) {\r\n errors.push(`Invalid intent: \"${String(props.intent)}\"`);\r\n }\r\n\r\n // Validate Level 5: Mood\r\n if (props.mood !== undefined && !isValidMood(props.mood)) {\r\n errors.push(`Invalid mood: \"${String(props.mood)}\"`);\r\n }\r\n\r\n // Validate Level 4: Preset\r\n if (props.preset !== undefined && !hasPreset(props.preset)) {\r\n warnings.push(`Unknown preset: \"${props.preset}\". Using empty config.`);\r\n }\r\n\r\n // Validate Level 3: Shorthands\r\n const shorthandResult = validateShorthands(extractLevel3Shorthands(props));\r\n errors.push(...shorthandResult.allErrors);\r\n\r\n // Validate Level 2: Groups\r\n const groupResult = validateGroups({\r\n visual: props.visual,\r\n motion: props.motion,\r\n layout: props.layout,\r\n experience: props.experience,\r\n });\r\n errors.push(...groupResult.allErrors);\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// RESOLUTION OPTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Options for the resolution process.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport interface ResolutionOptions {\r\n /** Whether to include debug information */\r\n debug?: boolean;\r\n /** Whether to validate props before resolution */\r\n validate?: boolean;\r\n /** Whether to apply defaults for missing factors */\r\n applyDefaults?: boolean;\r\n /** Custom preset registry */\r\n presets?: Map<string, PresetDefinition>;\r\n}\r\n\r\n/**\r\n * Default resolution options.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DEFAULT_RESOLUTION_OPTIONS: Required<ResolutionOptions> = {\r\n debug: false,\r\n validate: true,\r\n applyDefaults: false,\r\n presets: presetRegistry,\r\n};\r\n\r\n// =============================================================================\r\n// MAIN RESOLUTION FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Resolve MultiLevelProps to Factor24Config.\r\n *\r\n * This is the main entry point for the 5-Level Abstraction API.\r\n * It takes props at any combination of levels and produces a\r\n * complete Factor24Config with correct priority merging.\r\n *\r\n * Priority order (highest to lowest):\r\n * 1. Level 1: Raw factors (size, variant, etc.)\r\n * 2. Level 2: Factor groups (visual, motion, layout, experience)\r\n * 3. Level 3: Shorthands (look, feel, surface, spacing)\r\n * 4. Level 4: Named presets\r\n * 5. Level 5: Semantic intents and moods\r\n *\r\n * @param props - MultiLevelProps to resolve\r\n * @param options - Resolution options\r\n * @returns Resolution result with config and metadata\r\n *\r\n * @example\r\n * ```typescript\r\n * // Using Level 5 (Intent)\r\n * const result = resolveProps({ intent: 'cta', mood: 'playful' });\r\n *\r\n * // Using Level 3 (Shorthands) with Level 1 override\r\n * const result = resolveProps({\r\n * look: 'bold',\r\n * feel: 'snappy',\r\n * size: 'lg', // Level 1 override\r\n * });\r\n *\r\n * // Mixing all levels\r\n * const result = resolveProps({\r\n * intent: 'primary', // Level 5\r\n * look: 'elevated', // Level 3\r\n * visual: { shape: 'lg' }, // Level 2\r\n * colorScheme: 'secondary', // Level 1 (overrides all)\r\n * });\r\n * ```\r\n *\r\n * @since 2.1.0\r\n */\r\nexport function resolveProps(\r\n props: MultiLevelProps,\r\n options: ResolutionOptions = {}\r\n): ResolutionResult {\r\n const opts = { ...DEFAULT_RESOLUTION_OPTIONS, ...options };\r\n const presetsMap = opts.presets;\r\n\r\n // Initialize debug info\r\n const mergeOrder: string[] = [];\r\n const overrides: Record<string, { from: string; to: string; level: number }> = {};\r\n\r\n // Track sources\r\n const sources: ResolutionResult['sources'] = {};\r\n\r\n // Validate if enabled\r\n if (opts.validate) {\r\n const validation = validateMultiLevelProps(props);\r\n if (!validation.valid) {\r\n // Log warnings but continue\r\n if (opts.debug && validation.warnings.length > 0) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Resolution warnings:', validation.warnings);\r\n }\r\n }\r\n }\r\n\r\n // Start with empty config\r\n let config: Partial<Factor24Config> = {};\r\n\r\n // Level 5: Intent + Mood (lowest priority)\r\n if (props.intent !== undefined && isValidIntent(props.intent)) {\r\n const intentDef = INTENT_DEFINITIONS[props.intent];\r\n if (intentDef !== undefined) {\r\n config = mergeConfigs(config, intentDef.config);\r\n sources.level5Intent = props.intent;\r\n mergeOrder.push(`level5-intent:${props.intent}`);\r\n\r\n // Apply mood modifier if present\r\n if (props.mood !== undefined && isValidMood(props.mood)) {\r\n const moodDef = MOOD_DEFINITIONS[props.mood];\r\n if (moodDef !== undefined) {\r\n // Also check for intent-specific mood adjustments\r\n const intentMoodAdjustments = intentDef.moodModifiers?.[props.mood];\r\n if (intentMoodAdjustments !== undefined && intentMoodAdjustments !== null) {\r\n config = mergeConfigs(config, intentMoodAdjustments);\r\n }\r\n config = mergeConfigs(config, moodDef.adjustments);\r\n sources.level5Mood = props.mood;\r\n mergeOrder.push(`level5-mood:${props.mood}`);\r\n }\r\n }\r\n }\r\n } else if (props.mood !== undefined && isValidMood(props.mood)) {\r\n // Mood without intent\r\n const moodDef = MOOD_DEFINITIONS[props.mood];\r\n if (moodDef !== undefined) {\r\n config = mergeConfigs(config, moodDef.adjustments);\r\n sources.level5Mood = props.mood;\r\n mergeOrder.push(`level5-mood:${props.mood}`);\r\n }\r\n }\r\n\r\n // Level 4: Preset\r\n if (props.preset !== undefined) {\r\n const preset = presetsMap.get(props.preset);\r\n if (preset !== undefined) {\r\n config = mergeConfigs(config, preset.config);\r\n sources.level4Preset = props.preset;\r\n mergeOrder.push(`level4-preset:${props.preset}`);\r\n }\r\n }\r\n\r\n // Level 3: Shorthands\r\n const shorthands = extractLevel3Shorthands(props);\r\n const level3Shorthands: string[] = [];\r\n\r\n if (Object.keys(shorthands).length > 0) {\r\n const shorthandConfig = expandShorthands(shorthands);\r\n config = mergeConfigs(config, shorthandConfig);\r\n\r\n if (shorthands.look !== undefined) level3Shorthands.push(`look:${shorthands.look}`);\r\n if (shorthands.feel !== undefined) level3Shorthands.push(`feel:${shorthands.feel}`);\r\n if (shorthands.surface !== undefined) level3Shorthands.push(`surface:${shorthands.surface}`);\r\n if (shorthands.spacingPreset !== undefined)\r\n level3Shorthands.push(`spacing:${shorthands.spacingPreset}`);\r\n\r\n sources.level3Shorthands = level3Shorthands;\r\n mergeOrder.push(...level3Shorthands.map((s) => `level3-${s}`));\r\n }\r\n\r\n // Level 2: Groups\r\n const groups = {\r\n visual: props.visual,\r\n motion: props.motion,\r\n layout: props.layout,\r\n experience: props.experience,\r\n };\r\n const level2Groups: string[] = [];\r\n\r\n if (Object.values(groups).some((g) => g !== undefined)) {\r\n const groupConfig = expandGroups(groups);\r\n config = mergeConfigs(config, groupConfig);\r\n\r\n if (groups.visual !== undefined) level2Groups.push('visual');\r\n if (groups.motion !== undefined) level2Groups.push('motion');\r\n if (groups.layout !== undefined) level2Groups.push('layout');\r\n if (groups.experience !== undefined) level2Groups.push('experience');\r\n\r\n sources.level2Groups = level2Groups;\r\n mergeOrder.push(...level2Groups.map((g) => `level2-${g}`));\r\n }\r\n\r\n // Level 1: Raw factors (highest priority)\r\n const level1Factors = extractLevel1Factors(props);\r\n const level1FactorKeys = Object.keys(level1Factors) as Array<keyof Factor24Config>;\r\n\r\n if (level1FactorKeys.length > 0) {\r\n // Track overrides for debug\r\n if (opts.debug) {\r\n for (const key of level1FactorKeys) {\r\n const oldValue = config[key];\r\n const newValue = level1Factors[key];\r\n if (oldValue !== undefined && oldValue !== newValue) {\r\n overrides[key] = {\r\n from: safeStringify(oldValue),\r\n to: safeStringify(newValue),\r\n level: 1,\r\n };\r\n }\r\n }\r\n }\r\n\r\n config = mergeConfigs(config, level1Factors);\r\n sources.level1Factors = level1FactorKeys as string[];\r\n mergeOrder.push(`level1-factors:[${level1FactorKeys.join(',')}]`);\r\n }\r\n\r\n // Apply defaults if enabled\r\n if (opts.applyDefaults) {\r\n config = mergeConfigs(DEFAULT_FACTOR24_CONFIG, config);\r\n }\r\n\r\n // Build result\r\n const result: ResolutionResult = {\r\n config: config as Factor24Config,\r\n sources,\r\n };\r\n\r\n // Add debug info if enabled\r\n if (opts.debug) {\r\n result.debug = {\r\n mergeOrder,\r\n overrides,\r\n };\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// =============================================================================\r\n// CONVENIENCE FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Resolve props with defaults applied.\r\n *\r\n * @param props - MultiLevelProps to resolve\r\n * @returns Complete Factor24Config with all defaults\r\n * @since 2.1.0\r\n */\r\nexport function resolveWithDefaults(props: MultiLevelProps): Factor24Config {\r\n const result = resolveProps(props, { applyDefaults: true });\r\n return result.config;\r\n}\r\n\r\n/**\r\n * Resolve props and return only the config.\r\n *\r\n * @param props - MultiLevelProps to resolve\r\n * @returns Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function resolveToConfig(props: MultiLevelProps): Factor24Config {\r\n return resolveProps(props).config;\r\n}\r\n\r\n/**\r\n * Resolve props with debug information.\r\n *\r\n * @param props - MultiLevelProps to resolve\r\n * @returns Resolution result with debug info\r\n * @since 2.1.0\r\n */\r\nexport function resolveWithDebug(props: MultiLevelProps): ResolutionResult {\r\n return resolveProps(props, { debug: true });\r\n}\r\n\r\n/**\r\n * Quick resolve from intent and optional mood.\r\n *\r\n * @param intent - Semantic intent\r\n * @param mood - Optional mood modifier\r\n * @returns Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function resolveIntent(intent: SemanticIntent, mood?: SemanticMood): Factor24Config {\r\n return resolveToConfig({ intent, mood });\r\n}\r\n\r\n/**\r\n * Quick resolve from shorthands.\r\n *\r\n * @param shorthands - Shorthand props\r\n * @returns Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function resolveShorthands(shorthands: ShorthandProps): Factor24Config {\r\n return resolveToConfig(shorthands);\r\n}\r\n\r\n// =============================================================================\r\n// INTENT & MOOD UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * Get all available intents.\r\n *\r\n * @returns Array of intent definitions\r\n * @since 2.1.0\r\n */\r\nexport function getAllIntents(): IntentDefinition[] {\r\n return Object.values(INTENT_DEFINITIONS);\r\n}\r\n\r\n/**\r\n * Get all available moods.\r\n *\r\n * @returns Array of mood definitions\r\n * @since 2.1.0\r\n */\r\nexport function getAllMoods(): MoodModifierDefinition[] {\r\n return Object.values(MOOD_DEFINITIONS);\r\n}\r\n\r\n/**\r\n * Get intent definition by ID.\r\n *\r\n * @param id - Intent ID\r\n * @returns Intent definition or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getIntent(id: SemanticIntent): IntentDefinition | undefined {\r\n return INTENT_DEFINITIONS[id];\r\n}\r\n\r\n/**\r\n * Get mood definition by ID.\r\n *\r\n * @param id - Mood ID\r\n * @returns Mood definition or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getMood(id: SemanticMood): MoodModifierDefinition | undefined {\r\n return MOOD_DEFINITIONS[id];\r\n}\r\n","/**\r\n * Button Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for buttons covering common use cases:\r\n * - Hero/CTA presets for marketing and conversion\r\n * - Form presets for actions (submit, cancel, delete)\r\n * - Navigation presets for menus and links\r\n * - Icon presets for icon-only buttons\r\n * - Special presets for unique styles\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/button-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// HERO/CTA PRESETS - High-impact conversion buttons\r\n// =============================================================================\r\n\r\n/**\r\n * Hero Primary Button Preset\r\n *\r\n * High-impact primary CTA for hero sections and landing pages.\r\n * Features bold styling, prominent elevation, and engaging animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_HERO_PRIMARY: PresetDefinition = {\r\n id: 'button-hero-primary',\r\n name: 'Hero Primary',\r\n description: 'High-impact primary CTA for hero sections and landing pages',\r\n category: 'button',\r\n tags: ['hero', 'cta', 'primary', 'marketing', 'landing'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'lg',\r\n elevation: 'md',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Hero Secondary Button Preset\r\n *\r\n * Secondary CTA for hero sections, typically paired with primary.\r\n * Uses outlined style with subtle animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_HERO_SECONDARY: PresetDefinition = {\r\n id: 'button-hero-secondary',\r\n name: 'Hero Secondary',\r\n description: 'Secondary CTA for hero sections, pairs with primary',\r\n category: 'button',\r\n tags: ['hero', 'cta', 'secondary', 'marketing', 'landing'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'lg',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'lg',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * CTA Gradient Button Preset\r\n *\r\n * Eye-catching gradient CTA for maximum visual impact.\r\n * Features premium feel with elevated shadow and smooth animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_CTA_GRADIENT: PresetDefinition = {\r\n id: 'button-cta-gradient',\r\n name: 'CTA Gradient',\r\n description: 'Eye-catching gradient CTA for maximum visual impact',\r\n category: 'button',\r\n tags: ['cta', 'gradient', 'premium', 'marketing'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'lg',\r\n variant: 'gradient',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * CTA Minimal Button Preset\r\n *\r\n * Clean, minimal CTA for sophisticated designs.\r\n * Features subtle animation and refined aesthetics.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_CTA_MINIMAL: PresetDefinition = {\r\n id: 'button-cta-minimal',\r\n name: 'CTA Minimal',\r\n description: 'Clean, minimal CTA for sophisticated designs',\r\n category: 'button',\r\n tags: ['cta', 'minimal', 'clean', 'sophisticated'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// FORM ACTION PRESETS - Standard form buttons\r\n// =============================================================================\r\n\r\n/**\r\n * Form Submit Button Preset\r\n *\r\n * Primary form submission button.\r\n * Uses accessible styling with clear visual hierarchy.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_FORM_SUBMIT: PresetDefinition = {\r\n id: 'button-form-submit',\r\n name: 'Form Submit',\r\n description: 'Primary form submission button',\r\n category: 'form',\r\n tags: ['form', 'submit', 'primary', 'action'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Form Cancel Button Preset\r\n *\r\n * Cancel/dismiss button for forms.\r\n * Uses subtle styling to avoid accidental clicks.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_FORM_CANCEL: PresetDefinition = {\r\n id: 'button-form-cancel',\r\n name: 'Form Cancel',\r\n description: 'Cancel/dismiss button for forms',\r\n category: 'form',\r\n tags: ['form', 'cancel', 'dismiss', 'secondary'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Form Delete Button Preset\r\n *\r\n * Destructive action button for delete operations.\r\n * Uses danger color scheme with confirmation-ready styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_FORM_DELETE: PresetDefinition = {\r\n id: 'button-form-delete',\r\n name: 'Form Delete',\r\n description: 'Destructive action button for delete operations',\r\n category: 'form',\r\n tags: ['form', 'delete', 'destructive', 'danger'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Form Save Button Preset\r\n *\r\n * Save action button for forms and editors.\r\n * Uses success-oriented styling with feedback animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_FORM_SAVE: PresetDefinition = {\r\n id: 'button-form-save',\r\n name: 'Form Save',\r\n description: 'Save action button for forms and editors',\r\n category: 'form',\r\n tags: ['form', 'save', 'action', 'success'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Form Reset Button Preset\r\n *\r\n * Reset/clear button for forms.\r\n * Uses muted styling with warning undertones.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_FORM_RESET: PresetDefinition = {\r\n id: 'button-form-reset',\r\n name: 'Form Reset',\r\n description: 'Reset/clear button for forms',\r\n category: 'form',\r\n tags: ['form', 'reset', 'clear', 'secondary'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'warning',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'subtle',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// NAVIGATION PRESETS - Menu and navigation buttons\r\n// =============================================================================\r\n\r\n/**\r\n * Navigation Menu Button Preset\r\n *\r\n * Standard navigation menu item button.\r\n * Uses minimal styling with clear hover states.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_NAV_MENU: PresetDefinition = {\r\n id: 'button-nav-menu',\r\n name: 'Nav Menu',\r\n description: 'Standard navigation menu item button',\r\n category: 'navigation',\r\n tags: ['nav', 'menu', 'item', 'navigation'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Navigation Link Button Preset\r\n *\r\n * Link-styled button for navigation.\r\n * Appears as a text link with button semantics.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_NAV_LINK: PresetDefinition = {\r\n id: 'button-nav-link',\r\n name: 'Nav Link',\r\n description: 'Link-styled button for navigation',\r\n category: 'navigation',\r\n tags: ['nav', 'link', 'text', 'navigation'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'link',\r\n colorScheme: 'primary',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Breadcrumb Button Preset\r\n *\r\n * Breadcrumb navigation button.\r\n * Compact styling for navigation paths.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_BREADCRUMB: PresetDefinition = {\r\n id: 'button-breadcrumb',\r\n name: 'Breadcrumb',\r\n description: 'Breadcrumb navigation button',\r\n category: 'navigation',\r\n tags: ['breadcrumb', 'nav', 'path', 'navigation'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'xs',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'dim',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Tab Button Preset\r\n *\r\n * Tab navigation button.\r\n * Clear active/inactive states for tab interfaces.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_TAB: PresetDefinition = {\r\n id: 'button-tab',\r\n name: 'Tab',\r\n description: 'Tab navigation button',\r\n category: 'navigation',\r\n tags: ['tab', 'tabs', 'nav', 'navigation'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// ICON PRESETS - Icon-only buttons\r\n// =============================================================================\r\n\r\n/**\r\n * Icon Button Default Preset\r\n *\r\n * Standard icon-only button.\r\n * Square shape optimized for icons.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_ICON_DEFAULT: PresetDefinition = {\r\n id: 'button-icon-default',\r\n name: 'Icon Default',\r\n description: 'Standard icon-only button',\r\n category: 'button',\r\n tags: ['icon', 'icon-only', 'square'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'square',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'sm',\r\n iconPosition: 'only',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Icon Button Circle Preset\r\n *\r\n * Circular icon button.\r\n * Perfect for FABs and action buttons.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_ICON_CIRCLE: PresetDefinition = {\r\n id: 'button-icon-circle',\r\n name: 'Icon Circle',\r\n description: 'Circular icon button for FABs and action buttons',\r\n category: 'button',\r\n tags: ['icon', 'icon-only', 'circle', 'fab'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n elevation: 'md',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n iconPosition: 'only',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Icon Button Subtle Preset\r\n *\r\n * Subtle icon button for toolbars.\r\n * Minimal visual presence until hovered.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_ICON_SUBTLE: PresetDefinition = {\r\n id: 'button-icon-subtle',\r\n name: 'Icon Subtle',\r\n description: 'Subtle icon button for toolbars',\r\n category: 'button',\r\n tags: ['icon', 'icon-only', 'subtle', 'toolbar'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'xs',\r\n iconPosition: 'only',\r\n border: 'none',\r\n opacity: 'dim',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SPECIAL PRESETS - Unique button styles\r\n// =============================================================================\r\n\r\n/**\r\n * Compact Button Preset\r\n *\r\n * Compact button for dense UIs.\r\n * Minimal padding with clear hit targets.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_COMPACT: PresetDefinition = {\r\n id: 'button-compact',\r\n name: 'Compact',\r\n description: 'Compact button for dense UIs',\r\n category: 'button',\r\n tags: ['compact', 'dense', 'small', 'minimal'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'xs',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Pill Button Preset\r\n *\r\n * Pill-shaped button for tags and filters.\r\n * Fully rounded ends with comfortable spacing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_PILL: PresetDefinition = {\r\n id: 'button-pill',\r\n name: 'Pill',\r\n description: 'Pill-shaped button for tags and filters',\r\n category: 'button',\r\n tags: ['pill', 'tag', 'filter', 'rounded'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'soft',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'label',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Loading Button Preset\r\n *\r\n * Button in loading state.\r\n * Includes loading animation and disabled interaction.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_LOADING: PresetDefinition = {\r\n id: 'button-loading',\r\n name: 'Loading',\r\n description: 'Button in loading state with spinner',\r\n category: 'button',\r\n tags: ['loading', 'spinner', 'pending', 'disabled'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n loadingState: 'loading',\r\n border: 'none',\r\n opacity: 'medium',\r\n cursor: 'wait',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Floating Action Button (FAB) Preset\r\n *\r\n * Material Design-style floating action button.\r\n * Prominent elevation and circular shape.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_FAB: PresetDefinition = {\r\n id: 'button-fab',\r\n name: 'FAB',\r\n description: 'Floating action button with prominent elevation',\r\n category: 'button',\r\n tags: ['fab', 'floating', 'action', 'material'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n elevation: 'xl',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n iconPosition: 'only',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n zIndex: 'overlay',\r\n transition: 'spring',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Split Button Preset\r\n *\r\n * Button with dropdown trigger.\r\n * Used for primary action with additional options.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_SPLIT: PresetDefinition = {\r\n id: 'button-split',\r\n name: 'Split',\r\n description: 'Button with dropdown trigger for additional options',\r\n category: 'button',\r\n tags: ['split', 'dropdown', 'options', 'menu'],\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n iconPosition: 'right',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All button presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Hero/CTA\r\n BUTTON_HERO_PRIMARY,\r\n BUTTON_HERO_SECONDARY,\r\n BUTTON_CTA_GRADIENT,\r\n BUTTON_CTA_MINIMAL,\r\n // Form\r\n BUTTON_FORM_SUBMIT,\r\n BUTTON_FORM_CANCEL,\r\n BUTTON_FORM_DELETE,\r\n BUTTON_FORM_SAVE,\r\n BUTTON_FORM_RESET,\r\n // Navigation\r\n BUTTON_NAV_MENU,\r\n BUTTON_NAV_LINK,\r\n BUTTON_BREADCRUMB,\r\n BUTTON_TAB,\r\n // Icon\r\n BUTTON_ICON_DEFAULT,\r\n BUTTON_ICON_CIRCLE,\r\n BUTTON_ICON_SUBTLE,\r\n // Special\r\n BUTTON_COMPACT,\r\n BUTTON_PILL,\r\n BUTTON_LOADING,\r\n BUTTON_FAB,\r\n BUTTON_SPLIT,\r\n] as const;\r\n\r\n/**\r\n * Button presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n BUTTON_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get a button preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getButtonPreset(id: string): PresetDefinition | undefined {\r\n return BUTTON_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get all button presets matching given tags.\r\n *\r\n * @param tags - Tags to match (ANY match)\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getButtonPresetsByTags(tags: string[]): PresetDefinition[] {\r\n return BUTTON_PRESETS.filter((preset) => preset.tags?.some((tag) => tags.includes(tag)) ?? false);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid button preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid button preset\r\n * @since 2.1.0\r\n */\r\nexport function isButtonPreset(id: string): boolean {\r\n return BUTTON_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Card Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for cards covering common use cases:\r\n * - Content cards for articles and posts\r\n * - Product cards for e-commerce\r\n * - Profile cards for user information\r\n * - Interactive cards with hover effects\r\n * - Special cards for unique layouts\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/card-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// CONTENT CARDS - Article and blog cards\r\n// =============================================================================\r\n\r\n/**\r\n * Content Card Default Preset\r\n *\r\n * Standard content card for articles and blog posts.\r\n * Clean layout with subtle elevation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_CONTENT_DEFAULT: PresetDefinition = {\r\n id: 'card-content-default',\r\n name: 'Content Default',\r\n description: 'Standard content card for articles and blog posts',\r\n category: 'card',\r\n tags: ['content', 'article', 'blog', 'post'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Content Card Featured Preset\r\n *\r\n * Featured content card with larger presence.\r\n * Higher elevation and prominent styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_CONTENT_FEATURED: PresetDefinition = {\r\n id: 'card-content-featured',\r\n name: 'Content Featured',\r\n description: 'Featured content card with larger presence',\r\n category: 'card',\r\n tags: ['content', 'featured', 'hero', 'highlight'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'lg',\r\n variant: 'elevated',\r\n colorScheme: 'primary',\r\n shape: 'xl',\r\n elevation: 'lg',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Content Card Minimal Preset\r\n *\r\n * Minimal content card with clean aesthetics.\r\n * No elevation, subtle borders.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_CONTENT_MINIMAL: PresetDefinition = {\r\n id: 'card-content-minimal',\r\n name: 'Content Minimal',\r\n description: 'Minimal content card with clean aesthetics',\r\n category: 'card',\r\n tags: ['content', 'minimal', 'clean', 'simple'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRODUCT CARDS - E-commerce product cards\r\n// =============================================================================\r\n\r\n/**\r\n * Product Card Default Preset\r\n *\r\n * Standard product card for e-commerce listings.\r\n * Optimized for product images and pricing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PRODUCT_DEFAULT: PresetDefinition = {\r\n id: 'card-product-default',\r\n name: 'Product Default',\r\n description: 'Standard product card for e-commerce listings',\r\n category: 'card',\r\n tags: ['product', 'ecommerce', 'listing', 'shop'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Product Card Featured Preset\r\n *\r\n * Featured product card with promotional styling.\r\n * Eye-catching design for special offers.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PRODUCT_FEATURED: PresetDefinition = {\r\n id: 'card-product-featured',\r\n name: 'Product Featured',\r\n description: 'Featured product card with promotional styling',\r\n category: 'card',\r\n tags: ['product', 'featured', 'promo', 'sale'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'lg',\r\n variant: 'gradient',\r\n colorScheme: 'primary',\r\n shape: 'xl',\r\n elevation: 'md',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Product Card Compact Preset\r\n *\r\n * Compact product card for grid layouts.\r\n * Smaller footprint for dense product listings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PRODUCT_COMPACT: PresetDefinition = {\r\n id: 'card-product-compact',\r\n name: 'Product Compact',\r\n description: 'Compact product card for grid layouts',\r\n category: 'card',\r\n tags: ['product', 'compact', 'grid', 'small'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'sm',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'xs',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PROFILE CARDS - User and contact cards\r\n// =============================================================================\r\n\r\n/**\r\n * Profile Card Default Preset\r\n *\r\n * Standard profile card for user information.\r\n * Centered layout optimized for avatars.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PROFILE_DEFAULT: PresetDefinition = {\r\n id: 'card-profile-default',\r\n name: 'Profile Default',\r\n description: 'Standard profile card for user information',\r\n category: 'card',\r\n tags: ['profile', 'user', 'avatar', 'contact'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Profile Card Horizontal Preset\r\n *\r\n * Horizontal profile card for team listings.\r\n * Side-by-side layout with avatar and info.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PROFILE_HORIZONTAL: PresetDefinition = {\r\n id: 'card-profile-horizontal',\r\n name: 'Profile Horizontal',\r\n description: 'Horizontal profile card for team listings',\r\n category: 'card',\r\n tags: ['profile', 'team', 'horizontal', 'member'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n orientation: 'horizontal',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'start',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Profile Card Compact Preset\r\n *\r\n * Compact profile card for inline displays.\r\n * Minimal styling for lists and mentions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PROFILE_COMPACT: PresetDefinition = {\r\n id: 'card-profile-compact',\r\n name: 'Profile Compact',\r\n description: 'Compact profile card for inline displays',\r\n category: 'card',\r\n tags: ['profile', 'compact', 'inline', 'mention'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n orientation: 'horizontal',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n justify: 'start',\r\n align: 'center',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// INTERACTIVE CARDS - Clickable and actionable cards\r\n// =============================================================================\r\n\r\n/**\r\n * Interactive Card Default Preset\r\n *\r\n * Clickable card with hover effects.\r\n * Clear interactive affordance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_INTERACTIVE_DEFAULT: PresetDefinition = {\r\n id: 'card-interactive-default',\r\n name: 'Interactive Default',\r\n description: 'Clickable card with hover effects',\r\n category: 'card',\r\n tags: ['interactive', 'clickable', 'hover', 'action'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'bounce',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Interactive Card Selection Preset\r\n *\r\n * Selectable card for multi-select interfaces.\r\n * Clear selected/unselected states.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_INTERACTIVE_SELECTION: PresetDefinition = {\r\n id: 'card-interactive-selection',\r\n name: 'Interactive Selection',\r\n description: 'Selectable card for multi-select interfaces',\r\n category: 'card',\r\n tags: ['interactive', 'selection', 'checkbox', 'multi-select'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Interactive Card Draggable Preset\r\n *\r\n * Draggable card for sortable lists.\r\n * Visual feedback for drag interactions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_INTERACTIVE_DRAGGABLE: PresetDefinition = {\r\n id: 'card-interactive-draggable',\r\n name: 'Interactive Draggable',\r\n description: 'Draggable card for sortable lists',\r\n category: 'card',\r\n tags: ['interactive', 'draggable', 'sortable', 'dnd'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'grab',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SPECIAL CARDS - Unique card styles\r\n// =============================================================================\r\n\r\n/**\r\n * Glass Card Preset\r\n *\r\n * Glassmorphism-style card with frosted effect.\r\n * Modern aesthetic for overlay content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_GLASS: PresetDefinition = {\r\n id: 'card-glass',\r\n name: 'Glass',\r\n description: 'Glassmorphism-style card with frosted effect',\r\n category: 'card',\r\n tags: ['glass', 'glassmorphism', 'frosted', 'modern'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'glass',\r\n colorScheme: 'neutral',\r\n shape: 'xl',\r\n elevation: 'md',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'light',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Neumorphic Card Preset\r\n *\r\n * Neumorphism-style card with soft shadows.\r\n * Subtle depth effect.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_NEUMORPHIC: PresetDefinition = {\r\n id: 'card-neumorphic',\r\n name: 'Neumorphic',\r\n description: 'Neumorphism-style card with soft shadows',\r\n category: 'card',\r\n tags: ['neumorphic', 'neumorphism', 'soft', 'shadow'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'neumorphic',\r\n colorScheme: 'neutral',\r\n shape: 'xl',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Stats Card Preset\r\n *\r\n * Statistics/metrics card for dashboards.\r\n * Optimized for number display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_STATS: PresetDefinition = {\r\n id: 'card-stats',\r\n name: 'Stats',\r\n description: 'Statistics/metrics card for dashboards',\r\n category: 'dataDisplay',\r\n tags: ['stats', 'metrics', 'dashboard', 'numbers'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n justify: 'start',\r\n align: 'start',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Pricing Card Preset\r\n *\r\n * Pricing tier card for subscription pages.\r\n * Prominent CTA placement.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PRICING: PresetDefinition = {\r\n id: 'card-pricing',\r\n name: 'Pricing',\r\n description: 'Pricing tier card for subscription pages',\r\n category: 'card',\r\n tags: ['pricing', 'subscription', 'tier', 'plan'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'lg',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'xl',\r\n elevation: 'md',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Testimonial Card Preset\r\n *\r\n * Customer testimonial card.\r\n * Quote-friendly layout.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_TESTIMONIAL: PresetDefinition = {\r\n id: 'card-testimonial',\r\n name: 'Testimonial',\r\n description: 'Customer testimonial card',\r\n category: 'card',\r\n tags: ['testimonial', 'quote', 'review', 'feedback'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'xs',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n justify: 'start',\r\n align: 'start',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Notification Card Preset\r\n *\r\n * Notification/alert card with status colors.\r\n * Compact and informative.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_NOTIFICATION: PresetDefinition = {\r\n id: 'card-notification',\r\n name: 'Notification',\r\n description: 'Notification/alert card with status colors',\r\n category: 'feedback',\r\n tags: ['notification', 'alert', 'status', 'message'],\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'sm',\r\n variant: 'soft',\r\n colorScheme: 'info',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'compact',\r\n spacing: 'sm',\r\n justify: 'start',\r\n align: 'center',\r\n orientation: 'horizontal',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All card presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Content\r\n CARD_CONTENT_DEFAULT,\r\n CARD_CONTENT_FEATURED,\r\n CARD_CONTENT_MINIMAL,\r\n // Product\r\n CARD_PRODUCT_DEFAULT,\r\n CARD_PRODUCT_FEATURED,\r\n CARD_PRODUCT_COMPACT,\r\n // Profile\r\n CARD_PROFILE_DEFAULT,\r\n CARD_PROFILE_HORIZONTAL,\r\n CARD_PROFILE_COMPACT,\r\n // Interactive\r\n CARD_INTERACTIVE_DEFAULT,\r\n CARD_INTERACTIVE_SELECTION,\r\n CARD_INTERACTIVE_DRAGGABLE,\r\n // Special\r\n CARD_GLASS,\r\n CARD_NEUMORPHIC,\r\n CARD_STATS,\r\n CARD_PRICING,\r\n CARD_TESTIMONIAL,\r\n CARD_NOTIFICATION,\r\n] as const;\r\n\r\n/**\r\n * Card presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n CARD_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get a card preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getCardPreset(id: string): PresetDefinition | undefined {\r\n return CARD_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get all card presets matching given tags.\r\n *\r\n * @param tags - Tags to match (ANY match)\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getCardPresetsByTags(tags: string[]): PresetDefinition[] {\r\n return CARD_PRESETS.filter((preset) => preset.tags?.some((tag) => tags.includes(tag)) ?? false);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid card preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid card preset\r\n * @since 2.1.0\r\n */\r\nexport function isCardPreset(id: string): boolean {\r\n return CARD_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Input Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for inputs covering common use cases:\r\n * - Standard form inputs\r\n * - Search inputs\r\n * - Special input types (password, code, etc.)\r\n * - Inline and compact inputs\r\n * - Validation states\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/input-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// STANDARD FORM INPUTS - Basic form fields\r\n// =============================================================================\r\n\r\n/**\r\n * Standard Input Default Preset\r\n *\r\n * Default form input with clean styling.\r\n * Balanced between visibility and subtlety.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_DEFAULT: PresetDefinition = {\r\n id: 'input-default',\r\n name: 'Default',\r\n description: 'Default form input with clean styling',\r\n category: 'input',\r\n tags: ['form', 'default', 'standard', 'text'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Input Filled Preset\r\n *\r\n * Filled input with solid background.\r\n * Higher visual prominence.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_FILLED: PresetDefinition = {\r\n id: 'input-filled',\r\n name: 'Filled',\r\n description: 'Filled input with solid background',\r\n category: 'input',\r\n tags: ['form', 'filled', 'solid', 'text'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Input Underline Preset\r\n *\r\n * Underlined input with minimal styling.\r\n * Clean, modern appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_UNDERLINE: PresetDefinition = {\r\n id: 'input-underline',\r\n name: 'Underline',\r\n description: 'Underlined input with minimal styling',\r\n category: 'input',\r\n tags: ['form', 'underline', 'minimal', 'text'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'underline',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Input Ghost Preset\r\n *\r\n * Ghost input with no visible borders.\r\n * Only visible on focus.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_GHOST: PresetDefinition = {\r\n id: 'input-ghost',\r\n name: 'Ghost',\r\n description: 'Ghost input with no visible borders',\r\n category: 'input',\r\n tags: ['form', 'ghost', 'transparent', 'minimal'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SEARCH INPUTS - Search and filter fields\r\n// =============================================================================\r\n\r\n/**\r\n * Search Input Default Preset\r\n *\r\n * Standard search input with icon.\r\n * Rounded styling for search context.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_SEARCH_DEFAULT: PresetDefinition = {\r\n id: 'input-search-default',\r\n name: 'Search Default',\r\n description: 'Standard search input with icon',\r\n category: 'input',\r\n tags: ['search', 'filter', 'icon', 'rounded'],\r\n componentTypes: ['input', 'searchfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Search Input Elevated Preset\r\n *\r\n * Elevated search input for prominent placement.\r\n * Google-style search bar.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_SEARCH_ELEVATED: PresetDefinition = {\r\n id: 'input-search-elevated',\r\n name: 'Search Elevated',\r\n description: 'Elevated search input for prominent placement',\r\n category: 'input',\r\n tags: ['search', 'elevated', 'prominent', 'google'],\r\n componentTypes: ['input', 'searchfield'],\r\n config: {\r\n size: 'lg',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n iconPosition: 'left',\r\n elevation: 'md',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Search Input Compact Preset\r\n *\r\n * Compact search input for toolbars.\r\n * Minimal footprint.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_SEARCH_COMPACT: PresetDefinition = {\r\n id: 'input-search-compact',\r\n name: 'Search Compact',\r\n description: 'Compact search input for toolbars',\r\n category: 'input',\r\n tags: ['search', 'compact', 'toolbar', 'small'],\r\n componentTypes: ['input', 'searchfield'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SPECIAL INPUTS - Password, code, etc.\r\n// =============================================================================\r\n\r\n/**\r\n * Password Input Preset\r\n *\r\n * Password input with toggle visibility.\r\n * Enhanced security affordances.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_PASSWORD: PresetDefinition = {\r\n id: 'input-password',\r\n name: 'Password',\r\n description: 'Password input with toggle visibility',\r\n category: 'input',\r\n tags: ['password', 'secure', 'auth', 'login'],\r\n componentTypes: ['input', 'passwordfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Code Input Preset\r\n *\r\n * Code/OTP input for verification.\r\n * Monospace font, centered digits.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_CODE: PresetDefinition = {\r\n id: 'input-code',\r\n name: 'Code',\r\n description: 'Code/OTP input for verification',\r\n category: 'input',\r\n tags: ['code', 'otp', 'verification', 'pin'],\r\n componentTypes: ['input', 'codefield'],\r\n config: {\r\n size: 'lg',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'lg',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'mono',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Number Input Preset\r\n *\r\n * Number input with stepper controls.\r\n * Spinner buttons for increment/decrement.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_NUMBER: PresetDefinition = {\r\n id: 'input-number',\r\n name: 'Number',\r\n description: 'Number input with stepper controls',\r\n category: 'input',\r\n tags: ['number', 'numeric', 'stepper', 'quantity'],\r\n componentTypes: ['input', 'numberfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'end',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Textarea Preset\r\n *\r\n * Multi-line text input.\r\n * Resizable with auto-grow option.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_TEXTAREA: PresetDefinition = {\r\n id: 'input-textarea',\r\n name: 'Textarea',\r\n description: 'Multi-line text input',\r\n category: 'input',\r\n tags: ['textarea', 'multiline', 'long-text', 'description'],\r\n componentTypes: ['textarea', 'textareafield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'start',\r\n align: 'start',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// INLINE & COMPACT INPUTS - Space-efficient inputs\r\n// =============================================================================\r\n\r\n/**\r\n * Inline Input Preset\r\n *\r\n * Inline editable text.\r\n * Click-to-edit functionality.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_INLINE: PresetDefinition = {\r\n id: 'input-inline',\r\n name: 'Inline',\r\n description: 'Inline editable text with click-to-edit',\r\n category: 'input',\r\n tags: ['inline', 'editable', 'click-to-edit', 'text'],\r\n componentTypes: ['input', 'inlineedit'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Compact Input Preset\r\n *\r\n * Compact input for dense forms.\r\n * Reduced padding and font size.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_COMPACT: PresetDefinition = {\r\n id: 'input-compact',\r\n name: 'Compact',\r\n description: 'Compact input for dense forms',\r\n category: 'input',\r\n tags: ['compact', 'dense', 'small', 'form'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'sm',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Large Input Preset\r\n *\r\n * Large input for hero forms.\r\n * Prominent styling for marketing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_LARGE: PresetDefinition = {\r\n id: 'input-large',\r\n name: 'Large',\r\n description: 'Large input for hero forms',\r\n category: 'input',\r\n tags: ['large', 'hero', 'marketing', 'form'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'lg',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// VALIDATION STATES - Error and success states\r\n// =============================================================================\r\n\r\n/**\r\n * Input Error State Preset\r\n *\r\n * Input in error/invalid state.\r\n * Red border and error styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_ERROR: PresetDefinition = {\r\n id: 'input-error',\r\n name: 'Error',\r\n description: 'Input in error/invalid state',\r\n category: 'input',\r\n tags: ['error', 'invalid', 'validation', 'danger'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n state: 'error',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Input Success State Preset\r\n *\r\n * Input in success/valid state.\r\n * Green border and check icon.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_SUCCESS: PresetDefinition = {\r\n id: 'input-success',\r\n name: 'Success',\r\n description: 'Input in success/valid state',\r\n category: 'input',\r\n tags: ['success', 'valid', 'validation', 'check'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n state: 'success',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Input Disabled State Preset\r\n *\r\n * Disabled input styling.\r\n * Reduced opacity and no-interaction cursor.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_DISABLED: PresetDefinition = {\r\n id: 'input-disabled',\r\n name: 'Disabled',\r\n description: 'Disabled input styling',\r\n category: 'input',\r\n tags: ['disabled', 'readonly', 'inactive', 'locked'],\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n state: 'disabled',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'dim',\r\n overflow: 'hidden',\r\n cursor: 'notAllowed',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All input presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Standard\r\n INPUT_DEFAULT,\r\n INPUT_FILLED,\r\n INPUT_UNDERLINE,\r\n INPUT_GHOST,\r\n // Search\r\n INPUT_SEARCH_DEFAULT,\r\n INPUT_SEARCH_ELEVATED,\r\n INPUT_SEARCH_COMPACT,\r\n // Special\r\n INPUT_PASSWORD,\r\n INPUT_CODE,\r\n INPUT_NUMBER,\r\n INPUT_TEXTAREA,\r\n // Inline & Compact\r\n INPUT_INLINE,\r\n INPUT_COMPACT,\r\n INPUT_LARGE,\r\n // Validation\r\n INPUT_ERROR,\r\n INPUT_SUCCESS,\r\n INPUT_DISABLED,\r\n] as const;\r\n\r\n/**\r\n * Input presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n INPUT_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get an input preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getInputPreset(id: string): PresetDefinition | undefined {\r\n return INPUT_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get all input presets matching given tags.\r\n *\r\n * @param tags - Tags to match (ANY match)\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getInputPresetsByTags(tags: string[]): PresetDefinition[] {\r\n return INPUT_PRESETS.filter((preset) => preset.tags?.some((tag) => tags.includes(tag)) ?? false);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid input preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid input preset\r\n * @since 2.1.0\r\n */\r\nexport function isInputPreset(id: string): boolean {\r\n return INPUT_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Form Presets - Pre-configured 24-Factor Configurations for Form Components\r\n *\r\n * Named presets for form inputs covering common use cases:\r\n * - Checkboxes, Radio buttons, Switches\r\n * - Selects, Dropdowns, Comboboxes\r\n * - Sliders, Range inputs, Ratings\r\n * - Date/Time pickers\r\n * - File uploads\r\n * - OTP/PIN inputs\r\n * - Rich text editors\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/form-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// CHECKBOX PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Checkbox Default Preset\r\n *\r\n * Standard checkbox with clean styling.\r\n * Suitable for forms and settings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CHECKBOX_DEFAULT: PresetDefinition = {\r\n id: 'checkbox-default',\r\n name: 'Checkbox Default',\r\n description: 'Standard checkbox with clean styling',\r\n category: 'form',\r\n tags: ['checkbox', 'form', 'default', 'toggle'],\r\n componentTypes: ['checkbox'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Checkbox Card Preset\r\n *\r\n * Card-style checkbox with larger hit area.\r\n * Good for selection lists and options.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CHECKBOX_CARD: PresetDefinition = {\r\n id: 'checkbox-card',\r\n name: 'Checkbox Card',\r\n description: 'Card-style checkbox with larger hit area',\r\n category: 'form',\r\n tags: ['checkbox', 'card', 'selection', 'list'],\r\n componentTypes: ['checkbox'],\r\n config: {\r\n size: 'lg',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// RADIO BUTTON PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Radio Default Preset\r\n *\r\n * Standard radio button styling.\r\n * Clean and accessible.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RADIO_DEFAULT: PresetDefinition = {\r\n id: 'radio-default',\r\n name: 'Radio Default',\r\n description: 'Standard radio button styling',\r\n category: 'form',\r\n tags: ['radio', 'form', 'default', 'selection'],\r\n componentTypes: ['radio', 'radioGroup'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Radio Card Preset\r\n *\r\n * Card-style radio button for prominent selections.\r\n * Good for plan selectors and pricing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RADIO_CARD: PresetDefinition = {\r\n id: 'radio-card',\r\n name: 'Radio Card',\r\n description: 'Card-style radio button for prominent selections',\r\n category: 'form',\r\n tags: ['radio', 'card', 'pricing', 'plans'],\r\n componentTypes: ['radio', 'radioGroup'],\r\n config: {\r\n size: 'lg',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SWITCH PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Switch Default Preset\r\n *\r\n * Standard toggle switch styling.\r\n * iOS/Material style toggle.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SWITCH_DEFAULT: PresetDefinition = {\r\n id: 'switch-default',\r\n name: 'Switch Default',\r\n description: 'Standard toggle switch styling',\r\n category: 'form',\r\n tags: ['switch', 'toggle', 'form', 'on-off'],\r\n componentTypes: ['switch'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'smooth',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Switch Large Preset\r\n *\r\n * Large toggle switch for prominent settings.\r\n * Touch-friendly size.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SWITCH_LARGE: PresetDefinition = {\r\n id: 'switch-large',\r\n name: 'Switch Large',\r\n description: 'Large toggle switch for prominent settings',\r\n category: 'form',\r\n tags: ['switch', 'large', 'touch', 'settings'],\r\n componentTypes: ['switch'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'smooth',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SELECT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Select Default Preset\r\n *\r\n * Standard dropdown select styling.\r\n * Clean and functional.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SELECT_DEFAULT: PresetDefinition = {\r\n id: 'select-default',\r\n name: 'Select Default',\r\n description: 'Standard dropdown select styling',\r\n category: 'form',\r\n tags: ['select', 'dropdown', 'form', 'default'],\r\n componentTypes: ['select', 'dropdown'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Select Native Preset\r\n *\r\n * Native OS-style select.\r\n * Best for mobile compatibility.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SELECT_NATIVE: PresetDefinition = {\r\n id: 'select-native',\r\n name: 'Select Native',\r\n description: 'Native OS-style select for mobile compatibility',\r\n category: 'form',\r\n tags: ['select', 'native', 'mobile', 'system'],\r\n componentTypes: ['select'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Multi-Select Preset\r\n *\r\n * Multi-selection dropdown with chips.\r\n * Good for tag selection and filters.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SELECT_MULTI: PresetDefinition = {\r\n id: 'select-multi',\r\n name: 'Multi Select',\r\n description: 'Multi-selection dropdown with chips',\r\n category: 'form',\r\n tags: ['select', 'multi', 'chips', 'tags', 'filter'],\r\n componentTypes: ['multiSelect', 'select'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// COMBOBOX/AUTOCOMPLETE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Combobox Default Preset\r\n *\r\n * Searchable combobox with autocomplete.\r\n * Type-ahead search functionality.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const COMBOBOX_DEFAULT: PresetDefinition = {\r\n id: 'combobox-default',\r\n name: 'Combobox Default',\r\n description: 'Searchable combobox with autocomplete',\r\n category: 'form',\r\n tags: ['combobox', 'autocomplete', 'search', 'typeahead'],\r\n componentTypes: ['combobox', 'autocomplete'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Combobox Tags Preset\r\n *\r\n * Combobox with tag input support.\r\n * Good for multiple selections with typing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const COMBOBOX_TAGS: PresetDefinition = {\r\n id: 'combobox-tags',\r\n name: 'Combobox Tags',\r\n description: 'Combobox with tag input support',\r\n category: 'form',\r\n tags: ['combobox', 'tags', 'multi', 'input'],\r\n componentTypes: ['combobox', 'tagInput'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SLIDER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Slider Default Preset\r\n *\r\n * Standard range slider.\r\n * Clean track and thumb styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SLIDER_DEFAULT: PresetDefinition = {\r\n id: 'slider-default',\r\n name: 'Slider Default',\r\n description: 'Standard range slider',\r\n category: 'form',\r\n tags: ['slider', 'range', 'form', 'default'],\r\n componentTypes: ['slider', 'rangeSlider'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'grab',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Slider Range Preset\r\n *\r\n * Dual-thumb range slider.\r\n * For min/max value selection.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SLIDER_RANGE: PresetDefinition = {\r\n id: 'slider-range',\r\n name: 'Slider Range',\r\n description: 'Dual-thumb range slider for min/max selection',\r\n category: 'form',\r\n tags: ['slider', 'range', 'dual', 'minmax'],\r\n componentTypes: ['rangeSlider', 'slider'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'grab',\r\n transition: 'fast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// RATING PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Rating Default Preset\r\n *\r\n * Star rating component.\r\n * Standard 5-star rating.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RATING_DEFAULT: PresetDefinition = {\r\n id: 'rating-default',\r\n name: 'Rating Default',\r\n description: 'Standard star rating component',\r\n category: 'form',\r\n tags: ['rating', 'stars', 'form', 'review'],\r\n componentTypes: ['rating'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'warning',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'xs',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Rating Readonly Preset\r\n *\r\n * Display-only rating.\r\n * For showing average ratings.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RATING_READONLY: PresetDefinition = {\r\n id: 'rating-readonly',\r\n name: 'Rating Readonly',\r\n description: 'Display-only rating for showing averages',\r\n category: 'form',\r\n tags: ['rating', 'readonly', 'display', 'average'],\r\n componentTypes: ['rating'],\r\n config: {\r\n size: 'sm',\r\n variant: 'filled',\r\n colorScheme: 'warning',\r\n shape: 'none',\r\n state: 'disabled',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'high',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// DATE PICKER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Date Picker Default Preset\r\n *\r\n * Standard date picker.\r\n * Calendar dropdown with input.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DATEPICKER_DEFAULT: PresetDefinition = {\r\n id: 'datepicker-default',\r\n name: 'Date Picker Default',\r\n description: 'Standard date picker with calendar dropdown',\r\n category: 'form',\r\n tags: ['datepicker', 'calendar', 'date', 'form'],\r\n componentTypes: ['datePicker', 'dateRangePicker'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Date Picker Inline Preset\r\n *\r\n * Inline calendar without dropdown.\r\n * Always visible calendar.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DATEPICKER_INLINE: PresetDefinition = {\r\n id: 'datepicker-inline',\r\n name: 'Date Picker Inline',\r\n description: 'Inline calendar without dropdown',\r\n category: 'form',\r\n tags: ['datepicker', 'inline', 'calendar', 'visible'],\r\n componentTypes: ['datePicker', 'calendar'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// TIME PICKER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Time Picker Default Preset\r\n *\r\n * Standard time picker.\r\n * Hour/minute selection.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TIMEPICKER_DEFAULT: PresetDefinition = {\r\n id: 'timepicker-default',\r\n name: 'Time Picker Default',\r\n description: 'Standard time picker with hour/minute selection',\r\n category: 'form',\r\n tags: ['timepicker', 'time', 'clock', 'form'],\r\n componentTypes: ['timePicker', 'dateTimePicker'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'mono',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// FILE UPLOAD PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * File Upload Default Preset\r\n *\r\n * Standard file upload button.\r\n * Click to select files.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FILEUPLOAD_DEFAULT: PresetDefinition = {\r\n id: 'fileupload-default',\r\n name: 'File Upload Default',\r\n description: 'Standard file upload button',\r\n category: 'form',\r\n tags: ['file', 'upload', 'form', 'button'],\r\n componentTypes: ['fileUpload', 'imageUpload'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'dashed',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * File Dropzone Preset\r\n *\r\n * Drag-and-drop file zone.\r\n * Large drop target area.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FILEUPLOAD_DROPZONE: PresetDefinition = {\r\n id: 'fileupload-dropzone',\r\n name: 'File Dropzone',\r\n description: 'Drag-and-drop file zone with large drop target',\r\n category: 'form',\r\n tags: ['file', 'dropzone', 'drag', 'drop', 'upload'],\r\n componentTypes: ['fileDropzone', 'fileUpload'],\r\n config: {\r\n size: 'lg',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n iconPosition: 'top',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'dashed',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// OTP/PIN INPUT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * OTP Input Default Preset\r\n *\r\n * One-time password input.\r\n * Individual digit boxes.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OTP_DEFAULT: PresetDefinition = {\r\n id: 'otp-default',\r\n name: 'OTP Input Default',\r\n description: 'One-time password input with individual digit boxes',\r\n category: 'form',\r\n tags: ['otp', 'pin', 'code', 'verification'],\r\n componentTypes: ['inputOtp', 'pinInput'],\r\n config: {\r\n size: 'lg',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'mono',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * PIN Input Secure Preset\r\n *\r\n * Secure PIN input with masking.\r\n * For sensitive codes.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const PIN_SECURE: PresetDefinition = {\r\n id: 'pin-secure',\r\n name: 'PIN Input Secure',\r\n description: 'Secure PIN input with masking for sensitive codes',\r\n category: 'form',\r\n tags: ['pin', 'secure', 'password', 'masked'],\r\n componentTypes: ['pinInput', 'inputOtp'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'mono',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'maximum',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// RICH TEXT EDITOR PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Rich Text Editor Default Preset\r\n *\r\n * Standard rich text editor.\r\n * Basic formatting toolbar.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RICHTEXT_DEFAULT: PresetDefinition = {\r\n id: 'richtext-default',\r\n name: 'Rich Text Default',\r\n description: 'Standard rich text editor with basic formatting',\r\n category: 'form',\r\n tags: ['richtext', 'editor', 'wysiwyg', 'format'],\r\n componentTypes: ['richTextEditor'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Rich Text Editor Minimal Preset\r\n *\r\n * Minimal rich text editor.\r\n * Hidden toolbar until focused.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RICHTEXT_MINIMAL: PresetDefinition = {\r\n id: 'richtext-minimal',\r\n name: 'Rich Text Minimal',\r\n description: 'Minimal rich text editor with hidden toolbar',\r\n category: 'form',\r\n tags: ['richtext', 'minimal', 'clean', 'simple'],\r\n componentTypes: ['richTextEditor'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// NUMBER INPUT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Number Input Stepper Preset\r\n *\r\n * Number input with increment/decrement buttons.\r\n * Quantity selector style.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NUMBER_STEPPER: PresetDefinition = {\r\n id: 'number-stepper',\r\n name: 'Number Stepper',\r\n description: 'Number input with increment/decrement buttons',\r\n category: 'form',\r\n tags: ['number', 'stepper', 'quantity', 'counter'],\r\n componentTypes: ['numberInput'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'center',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Currency Input Preset\r\n *\r\n * Currency input with symbol.\r\n * Formatted number display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CURRENCY_INPUT: PresetDefinition = {\r\n id: 'currency-input',\r\n name: 'Currency Input',\r\n description: 'Currency input with symbol and formatted display',\r\n category: 'form',\r\n tags: ['currency', 'money', 'price', 'formatted'],\r\n componentTypes: ['inputCurrency', 'numberInput'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'end',\r\n typography: 'mono',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PHONE INPUT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Phone Input Default Preset\r\n *\r\n * Phone number input with country code.\r\n * International format support.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const PHONE_DEFAULT: PresetDefinition = {\r\n id: 'phone-default',\r\n name: 'Phone Input Default',\r\n description: 'Phone number input with country code selector',\r\n category: 'form',\r\n tags: ['phone', 'telephone', 'international', 'country'],\r\n componentTypes: ['inputPhone'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'mono',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// COLOR PICKER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Color Picker Default Preset\r\n *\r\n * Standard color picker.\r\n * Palette and custom color selection.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const COLORPICKER_DEFAULT: PresetDefinition = {\r\n id: 'colorpicker-default',\r\n name: 'Color Picker Default',\r\n description: 'Standard color picker with palette selection',\r\n category: 'form',\r\n tags: ['color', 'picker', 'palette', 'selection'],\r\n componentTypes: ['colorPicker', 'colorSwatch'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'mono',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All form presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FORM_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Checkbox\r\n CHECKBOX_DEFAULT,\r\n CHECKBOX_CARD,\r\n // Radio\r\n RADIO_DEFAULT,\r\n RADIO_CARD,\r\n // Switch\r\n SWITCH_DEFAULT,\r\n SWITCH_LARGE,\r\n // Select\r\n SELECT_DEFAULT,\r\n SELECT_NATIVE,\r\n SELECT_MULTI,\r\n // Combobox\r\n COMBOBOX_DEFAULT,\r\n COMBOBOX_TAGS,\r\n // Slider\r\n SLIDER_DEFAULT,\r\n SLIDER_RANGE,\r\n // Rating\r\n RATING_DEFAULT,\r\n RATING_READONLY,\r\n // Date Picker\r\n DATEPICKER_DEFAULT,\r\n DATEPICKER_INLINE,\r\n // Time Picker\r\n TIMEPICKER_DEFAULT,\r\n // File Upload\r\n FILEUPLOAD_DEFAULT,\r\n FILEUPLOAD_DROPZONE,\r\n // OTP/PIN\r\n OTP_DEFAULT,\r\n PIN_SECURE,\r\n // Rich Text\r\n RICHTEXT_DEFAULT,\r\n RICHTEXT_MINIMAL,\r\n // Number Input\r\n NUMBER_STEPPER,\r\n CURRENCY_INPUT,\r\n // Phone Input\r\n PHONE_DEFAULT,\r\n // Color Picker\r\n COLORPICKER_DEFAULT,\r\n] as const;\r\n\r\n/**\r\n * Form presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FORM_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n FORM_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get a form preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getFormPreset(id: string): PresetDefinition | undefined {\r\n return FORM_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get all form presets matching given tags.\r\n *\r\n * @param tags - Tags to match (ANY match)\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getFormPresetsByTags(tags: string[]): PresetDefinition[] {\r\n return FORM_PRESETS.filter((preset) => preset.tags?.some((tag) => tags.includes(tag)) ?? false);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid form preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid form preset\r\n * @since 2.1.0\r\n */\r\nexport function isFormPreset(id: string): boolean {\r\n return FORM_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Data Display Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for data display components covering common use cases:\r\n * - Tables and Data Tables\r\n * - Lists and Virtual Lists\r\n * - Avatars and Avatar Groups\r\n * - Stats and Metrics\r\n * - Timelines and Activity Feeds\r\n * - Dividers and Separators\r\n * - Badges and Tags\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/data-display-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// TABLE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Table Default Preset\r\n *\r\n * Standard data table.\r\n * Clean borders and row separation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TABLE_DEFAULT: PresetDefinition = {\r\n id: 'table-default',\r\n name: 'Table Default',\r\n description: 'Standard data table with clean styling',\r\n category: 'dataDisplay',\r\n tags: ['table', 'data', 'default', 'grid'],\r\n componentTypes: ['table', 'dataTable'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Table Compact Preset\r\n *\r\n * Dense table for maximum data density.\r\n * Smaller cells and text.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TABLE_COMPACT: PresetDefinition = {\r\n id: 'table-compact',\r\n name: 'Table Compact',\r\n description: 'Dense table for maximum data density',\r\n category: 'dataDisplay',\r\n tags: ['table', 'compact', 'dense', 'small'],\r\n componentTypes: ['table', 'dataTable'],\r\n config: {\r\n size: 'sm',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'bodySm',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Table Striped Preset\r\n *\r\n * Alternating row colors.\r\n * Better readability for long tables.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TABLE_STRIPED: PresetDefinition = {\r\n id: 'table-striped',\r\n name: 'Table Striped',\r\n description: 'Alternating row colors for better readability',\r\n category: 'dataDisplay',\r\n tags: ['table', 'striped', 'zebra', 'alternating'],\r\n componentTypes: ['table', 'dataTable'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Table Interactive Preset\r\n *\r\n * Interactive table with hover effects.\r\n * Clickable rows for drill-down.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TABLE_INTERACTIVE: PresetDefinition = {\r\n id: 'table-interactive',\r\n name: 'Table Interactive',\r\n description: 'Interactive table with hover effects',\r\n category: 'dataDisplay',\r\n tags: ['table', 'interactive', 'clickable', 'hover'],\r\n componentTypes: ['table', 'dataTable'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'auto',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// LIST PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * List Default Preset\r\n *\r\n * Standard list styling.\r\n * Clean item separation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LIST_DEFAULT: PresetDefinition = {\r\n id: 'list-default',\r\n name: 'List Default',\r\n description: 'Standard list styling with clean item separation',\r\n category: 'dataDisplay',\r\n tags: ['list', 'default', 'items', 'collection'],\r\n componentTypes: ['list', 'virtualList'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * List Interactive Preset\r\n *\r\n * Interactive list with hover states.\r\n * Good for navigation menus.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LIST_INTERACTIVE: PresetDefinition = {\r\n id: 'list-interactive',\r\n name: 'List Interactive',\r\n description: 'Interactive list with hover states',\r\n category: 'dataDisplay',\r\n tags: ['list', 'interactive', 'menu', 'nav'],\r\n componentTypes: ['list', 'navGroup'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'xs',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * List Bordered Preset\r\n *\r\n * List with borders between items.\r\n * Clear visual separation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LIST_BORDERED: PresetDefinition = {\r\n id: 'list-bordered',\r\n name: 'List Bordered',\r\n description: 'List with borders between items',\r\n category: 'dataDisplay',\r\n tags: ['list', 'bordered', 'dividers', 'separated'],\r\n componentTypes: ['list'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Virtual List Preset\r\n *\r\n * Virtualized list for large datasets.\r\n * Optimized for performance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LIST_VIRTUAL: PresetDefinition = {\r\n id: 'list-virtual',\r\n name: 'Virtual List',\r\n description: 'Virtualized list for large datasets',\r\n category: 'dataDisplay',\r\n tags: ['list', 'virtual', 'infinite', 'performance'],\r\n componentTypes: ['virtualList', 'infiniteScroll'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'xs',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'scroll',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// AVATAR PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Avatar Default Preset\r\n *\r\n * Standard circular avatar.\r\n * Profile image styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const AVATAR_DEFAULT: PresetDefinition = {\r\n id: 'avatar-default',\r\n name: 'Avatar Default',\r\n description: 'Standard circular avatar for profile images',\r\n category: 'dataDisplay',\r\n tags: ['avatar', 'profile', 'user', 'circular'],\r\n componentTypes: ['avatar'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'label',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Avatar Small Preset\r\n *\r\n * Small avatar for compact UI.\r\n * Comment authors, mentions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const AVATAR_SMALL: PresetDefinition = {\r\n id: 'avatar-small',\r\n name: 'Avatar Small',\r\n description: 'Small avatar for compact UI elements',\r\n category: 'dataDisplay',\r\n tags: ['avatar', 'small', 'compact', 'inline'],\r\n componentTypes: ['avatar'],\r\n config: {\r\n size: 'sm',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Avatar Large Preset\r\n *\r\n * Large avatar for profile pages.\r\n * Prominent profile display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const AVATAR_LARGE: PresetDefinition = {\r\n id: 'avatar-large',\r\n name: 'Avatar Large',\r\n description: 'Large avatar for profile pages',\r\n category: 'dataDisplay',\r\n tags: ['avatar', 'large', 'profile', 'hero'],\r\n componentTypes: ['avatar'],\r\n config: {\r\n size: 'xl',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'heading',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Avatar Square Preset\r\n *\r\n * Square avatar for organization logos.\r\n * Company/workspace icons.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const AVATAR_SQUARE: PresetDefinition = {\r\n id: 'avatar-square',\r\n name: 'Avatar Square',\r\n description: 'Square avatar for organization logos',\r\n category: 'dataDisplay',\r\n tags: ['avatar', 'square', 'logo', 'workspace'],\r\n componentTypes: ['avatar'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'label',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// STAT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Stat Default Preset\r\n *\r\n * Standard statistic display.\r\n * Value with label.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const STAT_DEFAULT: PresetDefinition = {\r\n id: 'stat-default',\r\n name: 'Stat Default',\r\n description: 'Standard statistic display with value and label',\r\n category: 'dataDisplay',\r\n tags: ['stat', 'metric', 'number', 'value'],\r\n componentTypes: ['stat'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'sm',\r\n align: 'start',\r\n typography: 'display',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Stat Card Preset\r\n *\r\n * Stat in card container.\r\n * Dashboard widget style.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const STAT_CARD: PresetDefinition = {\r\n id: 'stat-card',\r\n name: 'Stat Card',\r\n description: 'Statistic in card container for dashboards',\r\n category: 'dataDisplay',\r\n tags: ['stat', 'card', 'dashboard', 'widget'],\r\n componentTypes: ['stat'],\r\n config: {\r\n size: 'lg',\r\n variant: 'elevated',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n align: 'center',\r\n typography: 'displayLg',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Stat Trend Preset\r\n *\r\n * Stat with trend indicator.\r\n * Up/down arrows and percentage.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const STAT_TREND: PresetDefinition = {\r\n id: 'stat-trend',\r\n name: 'Stat Trend',\r\n description: 'Statistic with trend indicator and percentage',\r\n category: 'dataDisplay',\r\n tags: ['stat', 'trend', 'growth', 'change'],\r\n componentTypes: ['stat'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n align: 'start',\r\n typography: 'display',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// TIMELINE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Timeline Default Preset\r\n *\r\n * Standard vertical timeline.\r\n * Event history display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TIMELINE_DEFAULT: PresetDefinition = {\r\n id: 'timeline-default',\r\n name: 'Timeline Default',\r\n description: 'Standard vertical timeline for event history',\r\n category: 'dataDisplay',\r\n tags: ['timeline', 'history', 'events', 'activity'],\r\n componentTypes: ['timeline'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Timeline Compact Preset\r\n *\r\n * Compact timeline for dense history.\r\n * Activity feed style.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TIMELINE_COMPACT: PresetDefinition = {\r\n id: 'timeline-compact',\r\n name: 'Timeline Compact',\r\n description: 'Compact timeline for dense activity feeds',\r\n category: 'dataDisplay',\r\n tags: ['timeline', 'compact', 'feed', 'notifications'],\r\n componentTypes: ['timeline'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'bodySm',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Timeline Horizontal Preset\r\n *\r\n * Horizontal timeline.\r\n * Process steps or milestones.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TIMELINE_HORIZONTAL: PresetDefinition = {\r\n id: 'timeline-horizontal',\r\n name: 'Timeline Horizontal',\r\n description: 'Horizontal timeline for process steps',\r\n category: 'dataDisplay',\r\n tags: ['timeline', 'horizontal', 'process', 'milestones'],\r\n componentTypes: ['timeline'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n orientation: 'horizontal',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'scroll',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// DIVIDER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Divider Default Preset\r\n *\r\n * Standard horizontal divider.\r\n * Section separation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DIVIDER_DEFAULT: PresetDefinition = {\r\n id: 'divider-default',\r\n name: 'Divider Default',\r\n description: 'Standard horizontal divider for section separation',\r\n category: 'dataDisplay',\r\n tags: ['divider', 'separator', 'horizontal', 'line'],\r\n componentTypes: ['divider'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n orientation: 'horizontal',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'medium',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Divider Vertical Preset\r\n *\r\n * Vertical divider.\r\n * Side-by-side content separation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DIVIDER_VERTICAL: PresetDefinition = {\r\n id: 'divider-vertical',\r\n name: 'Divider Vertical',\r\n description: 'Vertical divider for side-by-side content',\r\n category: 'dataDisplay',\r\n tags: ['divider', 'separator', 'vertical', 'inline'],\r\n componentTypes: ['divider'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n orientation: 'vertical',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'medium',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Divider With Text Preset\r\n *\r\n * Divider with centered text.\r\n * \"OR\" separator style.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DIVIDER_TEXT: PresetDefinition = {\r\n id: 'divider-text',\r\n name: 'Divider With Text',\r\n description: 'Divider with centered text like OR separator',\r\n category: 'dataDisplay',\r\n tags: ['divider', 'text', 'or', 'label'],\r\n componentTypes: ['divider'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n orientation: 'horizontal',\r\n justify: 'center',\r\n align: 'center',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'caption',\r\n border: 'subtle',\r\n opacity: 'high',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// BADGE PRESETS (for data display context)\r\n// =============================================================================\r\n\r\n/**\r\n * Badge Status Preset\r\n *\r\n * Status badge for data cells.\r\n * Active/Inactive indicators.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BADGE_STATUS: PresetDefinition = {\r\n id: 'badge-status',\r\n name: 'Badge Status',\r\n description: 'Status badge for data cells and status indicators',\r\n category: 'dataDisplay',\r\n tags: ['badge', 'status', 'active', 'indicator'],\r\n componentTypes: ['badge', 'statusBadge'],\r\n config: {\r\n size: 'sm',\r\n variant: 'soft',\r\n colorScheme: 'success',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'labelSm',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Badge Count Preset\r\n *\r\n * Notification count badge.\r\n * Circular number display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BADGE_COUNT: PresetDefinition = {\r\n id: 'badge-count',\r\n name: 'Badge Count',\r\n description: 'Notification count badge with circular display',\r\n category: 'dataDisplay',\r\n tags: ['badge', 'count', 'notification', 'number'],\r\n componentTypes: ['badge', 'notificationBadge'],\r\n config: {\r\n size: 'xs',\r\n variant: 'filled',\r\n colorScheme: 'error',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'none',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'labelSm',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Status Dot Preset\r\n *\r\n * Small status dot indicator.\r\n * Online/offline presence.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const STATUS_DOT: PresetDefinition = {\r\n id: 'status-dot',\r\n name: 'Status Dot',\r\n description: 'Small status dot for online/offline presence',\r\n category: 'dataDisplay',\r\n tags: ['status', 'dot', 'presence', 'online'],\r\n componentTypes: ['statusDot'],\r\n config: {\r\n size: 'xs',\r\n variant: 'filled',\r\n colorScheme: 'success',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'compact',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// CHIP PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Chip Default Preset\r\n *\r\n * Standard chip/tag.\r\n * For labels and categories.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CHIP_DEFAULT: PresetDefinition = {\r\n id: 'chip-default',\r\n name: 'Chip Default',\r\n description: 'Standard chip for labels and categories',\r\n category: 'dataDisplay',\r\n tags: ['chip', 'tag', 'label', 'category'],\r\n componentTypes: ['chip'],\r\n config: {\r\n size: 'sm',\r\n variant: 'soft',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'labelSm',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Chip Interactive Preset\r\n *\r\n * Interactive chip with close button.\r\n * Removable tags.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CHIP_INTERACTIVE: PresetDefinition = {\r\n id: 'chip-interactive',\r\n name: 'Chip Interactive',\r\n description: 'Interactive chip with close button for removable tags',\r\n category: 'dataDisplay',\r\n tags: ['chip', 'interactive', 'removable', 'close'],\r\n componentTypes: ['chip'],\r\n config: {\r\n size: 'sm',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n iconPosition: 'right',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'labelSm',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All data display presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DATA_DISPLAY_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Table\r\n TABLE_DEFAULT,\r\n TABLE_COMPACT,\r\n TABLE_STRIPED,\r\n TABLE_INTERACTIVE,\r\n // List\r\n LIST_DEFAULT,\r\n LIST_INTERACTIVE,\r\n LIST_BORDERED,\r\n LIST_VIRTUAL,\r\n // Avatar\r\n AVATAR_DEFAULT,\r\n AVATAR_SMALL,\r\n AVATAR_LARGE,\r\n AVATAR_SQUARE,\r\n // Stat\r\n STAT_DEFAULT,\r\n STAT_CARD,\r\n STAT_TREND,\r\n // Timeline\r\n TIMELINE_DEFAULT,\r\n TIMELINE_COMPACT,\r\n TIMELINE_HORIZONTAL,\r\n // Divider\r\n DIVIDER_DEFAULT,\r\n DIVIDER_VERTICAL,\r\n DIVIDER_TEXT,\r\n // Badge\r\n BADGE_STATUS,\r\n BADGE_COUNT,\r\n STATUS_DOT,\r\n // Chip\r\n CHIP_DEFAULT,\r\n CHIP_INTERACTIVE,\r\n] as const;\r\n\r\n/**\r\n * Data display presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const DATA_DISPLAY_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n DATA_DISPLAY_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get a data display preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getDataDisplayPreset(id: string): PresetDefinition | undefined {\r\n return DATA_DISPLAY_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get all data display presets matching given tags.\r\n *\r\n * @param tags - Tags to match (ANY match)\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getDataDisplayPresetsByTags(tags: string[]): PresetDefinition[] {\r\n return DATA_DISPLAY_PRESETS.filter(\r\n (preset) => preset.tags?.some((tag) => tags.includes(tag)) ?? false\r\n );\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid data display preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid data display preset\r\n * @since 2.1.0\r\n */\r\nexport function isDataDisplayPreset(id: string): boolean {\r\n return DATA_DISPLAY_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Feedback Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for feedback components covering common use cases:\r\n * - Alerts and Notifications\r\n * - Toasts and Snackbars\r\n * - Progress indicators\r\n * - Spinners and Loading states\r\n * - Skeletons and Placeholders\r\n * - Empty and Error states\r\n * - Banners and Callouts\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/feedback-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// ALERT PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Alert Info Preset\r\n *\r\n * Informational alert.\r\n * Neutral tone for general info.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALERT_INFO: PresetDefinition = {\r\n id: 'alert-info',\r\n name: 'Alert Info',\r\n description: 'Informational alert for general information',\r\n category: 'feedback',\r\n tags: ['alert', 'info', 'information', 'notice'],\r\n componentTypes: ['alert', 'callout'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'info',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Alert Success Preset\r\n *\r\n * Success/completion alert.\r\n * Green styling for positive feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALERT_SUCCESS: PresetDefinition = {\r\n id: 'alert-success',\r\n name: 'Alert Success',\r\n description: 'Success alert for completion messages',\r\n category: 'feedback',\r\n tags: ['alert', 'success', 'complete', 'done'],\r\n componentTypes: ['alert', 'callout'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Alert Warning Preset\r\n *\r\n * Warning alert for caution.\r\n * Orange/amber styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALERT_WARNING: PresetDefinition = {\r\n id: 'alert-warning',\r\n name: 'Alert Warning',\r\n description: 'Warning alert for cautionary messages',\r\n category: 'feedback',\r\n tags: ['alert', 'warning', 'caution', 'attention'],\r\n componentTypes: ['alert', 'callout'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'warning',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Alert Error Preset\r\n *\r\n * Error alert for failures.\r\n * Red styling for critical messages.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALERT_ERROR: PresetDefinition = {\r\n id: 'alert-error',\r\n name: 'Alert Error',\r\n description: 'Error alert for failure messages',\r\n category: 'feedback',\r\n tags: ['alert', 'error', 'danger', 'failure'],\r\n componentTypes: ['alert', 'callout'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Alert Dismissible Preset\r\n *\r\n * Dismissible alert with close button.\r\n * User-closable notifications.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALERT_DISMISSIBLE: PresetDefinition = {\r\n id: 'alert-dismissible',\r\n name: 'Alert Dismissible',\r\n description: 'Dismissible alert with close button',\r\n category: 'feedback',\r\n tags: ['alert', 'dismissible', 'closable', 'notification'],\r\n componentTypes: ['alert', 'notification'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'info',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// TOAST PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Toast Default Preset\r\n *\r\n * Standard toast notification.\r\n * Brief messages with auto-dismiss.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TOAST_DEFAULT: PresetDefinition = {\r\n id: 'toast-default',\r\n name: 'Toast Default',\r\n description: 'Standard toast notification with auto-dismiss',\r\n category: 'feedback',\r\n tags: ['toast', 'notification', 'snackbar', 'default'],\r\n componentTypes: ['toast', 'notification'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n zIndex: 'toast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Toast Success Preset\r\n *\r\n * Success toast notification.\r\n * Action confirmation feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TOAST_SUCCESS: PresetDefinition = {\r\n id: 'toast-success',\r\n name: 'Toast Success',\r\n description: 'Success toast for action confirmation',\r\n category: 'feedback',\r\n tags: ['toast', 'success', 'saved', 'confirmed'],\r\n componentTypes: ['toast', 'notification'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n zIndex: 'toast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Toast Error Preset\r\n *\r\n * Error toast notification.\r\n * Failure feedback with retry option.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TOAST_ERROR: PresetDefinition = {\r\n id: 'toast-error',\r\n name: 'Toast Error',\r\n description: 'Error toast for failure feedback',\r\n category: 'feedback',\r\n tags: ['toast', 'error', 'failure', 'retry'],\r\n componentTypes: ['toast', 'notification'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n zIndex: 'toast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Toast Action Preset\r\n *\r\n * Toast with action button.\r\n * Undo functionality.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const TOAST_ACTION: PresetDefinition = {\r\n id: 'toast-action',\r\n name: 'Toast Action',\r\n description: 'Toast with action button for undo functionality',\r\n category: 'feedback',\r\n tags: ['toast', 'action', 'undo', 'button'],\r\n componentTypes: ['toast', 'notification'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n iconPosition: 'left',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n zIndex: 'toast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PROGRESS PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Progress Linear Preset\r\n *\r\n * Linear progress bar.\r\n * Loading or completion percentage.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const PROGRESS_LINEAR: PresetDefinition = {\r\n id: 'progress-linear',\r\n name: 'Progress Linear',\r\n description: 'Linear progress bar for loading or completion',\r\n category: 'feedback',\r\n tags: ['progress', 'linear', 'bar', 'loading'],\r\n componentTypes: ['progress'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n orientation: 'horizontal',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Progress Circular Preset\r\n *\r\n * Circular progress indicator.\r\n * Ring-style loading.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const PROGRESS_CIRCULAR: PresetDefinition = {\r\n id: 'progress-circular',\r\n name: 'Progress Circular',\r\n description: 'Circular progress indicator ring',\r\n category: 'feedback',\r\n tags: ['progress', 'circular', 'ring', 'spinner'],\r\n componentTypes: ['progressCircle'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'none',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Progress Steps Preset\r\n *\r\n * Multi-step progress indicator.\r\n * Wizard/checkout progress.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const PROGRESS_STEPS: PresetDefinition = {\r\n id: 'progress-steps',\r\n name: 'Progress Steps',\r\n description: 'Multi-step progress for wizards and checkouts',\r\n category: 'feedback',\r\n tags: ['progress', 'steps', 'wizard', 'checkout'],\r\n componentTypes: ['progressSteps', 'stepper'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n orientation: 'horizontal',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'lg',\r\n justify: 'between',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Progress Meter Preset\r\n *\r\n * Value meter/gauge.\r\n * Quota usage, battery level.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const PROGRESS_METER: PresetDefinition = {\r\n id: 'progress-meter',\r\n name: 'Progress Meter',\r\n description: 'Value meter for quota usage or levels',\r\n category: 'feedback',\r\n tags: ['progress', 'meter', 'gauge', 'quota'],\r\n componentTypes: ['meter', 'progress'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n orientation: 'horizontal',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SPINNER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Spinner Default Preset\r\n *\r\n * Standard loading spinner.\r\n * Indefinite loading state.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SPINNER_DEFAULT: PresetDefinition = {\r\n id: 'spinner-default',\r\n name: 'Spinner Default',\r\n description: 'Standard loading spinner for indefinite loading',\r\n category: 'feedback',\r\n tags: ['spinner', 'loading', 'wait', 'default'],\r\n componentTypes: ['spinner'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'spin',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'wait',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Spinner Small Preset\r\n *\r\n * Small inline spinner.\r\n * Button loading states.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SPINNER_SMALL: PresetDefinition = {\r\n id: 'spinner-small',\r\n name: 'Spinner Small',\r\n description: 'Small inline spinner for button loading states',\r\n category: 'feedback',\r\n tags: ['spinner', 'small', 'inline', 'button'],\r\n componentTypes: ['spinner'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'spin',\r\n density: 'compact',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'wait',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Spinner Page Preset\r\n *\r\n * Large page-level spinner.\r\n * Full page loading overlay.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SPINNER_PAGE: PresetDefinition = {\r\n id: 'spinner-page',\r\n name: 'Spinner Page',\r\n description: 'Large page-level spinner for full page loading',\r\n category: 'feedback',\r\n tags: ['spinner', 'page', 'fullscreen', 'overlay'],\r\n componentTypes: ['spinner', 'loadingOverlay'],\r\n config: {\r\n size: 'xl',\r\n variant: 'ghost',\r\n colorScheme: 'primary',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'spin',\r\n density: 'default',\r\n spacing: 'none',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'wait',\r\n transition: 'none',\r\n zIndex: 'overlay',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SKELETON PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Skeleton Text Preset\r\n *\r\n * Text placeholder skeleton.\r\n * Loading text content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SKELETON_TEXT: PresetDefinition = {\r\n id: 'skeleton-text',\r\n name: 'Skeleton Text',\r\n description: 'Text placeholder skeleton for loading content',\r\n category: 'feedback',\r\n tags: ['skeleton', 'text', 'placeholder', 'loading'],\r\n componentTypes: ['skeleton'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'light',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Skeleton Avatar Preset\r\n *\r\n * Avatar placeholder skeleton.\r\n * Circular profile image loading.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SKELETON_AVATAR: PresetDefinition = {\r\n id: 'skeleton-avatar',\r\n name: 'Skeleton Avatar',\r\n description: 'Avatar placeholder skeleton for profile images',\r\n category: 'feedback',\r\n tags: ['skeleton', 'avatar', 'profile', 'circular'],\r\n componentTypes: ['skeleton'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'circle',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'light',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Skeleton Card Preset\r\n *\r\n * Card placeholder skeleton.\r\n * Loading card content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SKELETON_CARD: PresetDefinition = {\r\n id: 'skeleton-card',\r\n name: 'Skeleton Card',\r\n description: 'Card placeholder skeleton for loading cards',\r\n category: 'feedback',\r\n tags: ['skeleton', 'card', 'container', 'block'],\r\n componentTypes: ['skeleton'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'lg',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'light',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Skeleton Image Preset\r\n *\r\n * Image placeholder skeleton.\r\n * Loading image content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const SKELETON_IMAGE: PresetDefinition = {\r\n id: 'skeleton-image',\r\n name: 'Skeleton Image',\r\n description: 'Image placeholder skeleton for loading images',\r\n category: 'feedback',\r\n tags: ['skeleton', 'image', 'media', 'photo'],\r\n componentTypes: ['skeleton'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'none',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'light',\r\n overflow: 'hidden',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// EMPTY STATE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Empty State Default Preset\r\n *\r\n * Default empty state.\r\n * No data available message.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const EMPTY_DEFAULT: PresetDefinition = {\r\n id: 'empty-default',\r\n name: 'Empty State Default',\r\n description: 'Default empty state for no data available',\r\n category: 'feedback',\r\n tags: ['empty', 'nodata', 'placeholder', 'default'],\r\n componentTypes: ['emptyState'],\r\n config: {\r\n size: 'lg',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'high',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Empty State Search Preset\r\n *\r\n * Search no results state.\r\n * No matching items found.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const EMPTY_SEARCH: PresetDefinition = {\r\n id: 'empty-search',\r\n name: 'Empty State Search',\r\n description: 'Empty state for search with no results',\r\n category: 'feedback',\r\n tags: ['empty', 'search', 'noresults', 'filter'],\r\n componentTypes: ['emptyState'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n iconPosition: 'top',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'lg',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'high',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// ERROR STATE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Error State Default Preset\r\n *\r\n * Default error state.\r\n * Something went wrong message.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ERROR_DEFAULT: PresetDefinition = {\r\n id: 'error-default',\r\n name: 'Error State Default',\r\n description: 'Default error state for something went wrong',\r\n category: 'feedback',\r\n tags: ['error', 'failure', 'broken', 'default'],\r\n componentTypes: ['errorState'],\r\n config: {\r\n size: 'lg',\r\n variant: 'ghost',\r\n colorScheme: 'error',\r\n shape: 'none',\r\n iconPosition: 'top',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Error State 404 Preset\r\n *\r\n * 404 Not Found error page.\r\n * Page not found styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ERROR_404: PresetDefinition = {\r\n id: 'error-404',\r\n name: 'Error State 404',\r\n description: '404 Not Found error page styling',\r\n category: 'feedback',\r\n tags: ['error', '404', 'notfound', 'missing'],\r\n componentTypes: ['errorState'],\r\n config: {\r\n size: 'xl',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n iconPosition: 'top',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: '2xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'display',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// LOADING STATE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Loading Overlay Preset\r\n *\r\n * Full overlay loading state.\r\n * Blocks interaction during load.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LOADING_OVERLAY: PresetDefinition = {\r\n id: 'loading-overlay',\r\n name: 'Loading Overlay',\r\n description: 'Full overlay loading state blocking interaction',\r\n category: 'feedback',\r\n tags: ['loading', 'overlay', 'blocking', 'fullscreen'],\r\n componentTypes: ['loadingOverlay', 'loadingState'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'lg',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'high',\r\n overflow: 'hidden',\r\n cursor: 'wait',\r\n transition: 'smooth',\r\n zIndex: 'overlay',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Loading Inline Preset\r\n *\r\n * Inline loading indicator.\r\n * For partial content loading.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LOADING_INLINE: PresetDefinition = {\r\n id: 'loading-inline',\r\n name: 'Loading Inline',\r\n description: 'Inline loading indicator for partial content',\r\n category: 'feedback',\r\n tags: ['loading', 'inline', 'partial', 'section'],\r\n componentTypes: ['loadingState'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'wait',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// BANNER PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Banner Info Preset\r\n *\r\n * Informational banner.\r\n * Top-of-page announcements.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BANNER_INFO: PresetDefinition = {\r\n id: 'banner-info',\r\n name: 'Banner Info',\r\n description: 'Informational banner for top-of-page announcements',\r\n category: 'feedback',\r\n tags: ['banner', 'info', 'announcement', 'top'],\r\n componentTypes: ['banner'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'info',\r\n shape: 'none',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'md',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Banner Warning Preset\r\n *\r\n * Warning banner.\r\n * Important notices requiring attention.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BANNER_WARNING: PresetDefinition = {\r\n id: 'banner-warning',\r\n name: 'Banner Warning',\r\n description: 'Warning banner for important notices',\r\n category: 'feedback',\r\n tags: ['banner', 'warning', 'notice', 'important'],\r\n componentTypes: ['banner'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'warning',\r\n shape: 'none',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'md',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Banner Promo Preset\r\n *\r\n * Promotional banner.\r\n * Marketing and sales announcements.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BANNER_PROMO: PresetDefinition = {\r\n id: 'banner-promo',\r\n name: 'Banner Promo',\r\n description: 'Promotional banner for marketing announcements',\r\n category: 'feedback',\r\n tags: ['banner', 'promo', 'marketing', 'sales'],\r\n componentTypes: ['banner'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'none',\r\n iconPosition: 'left',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// RESULT STATE PRESETS\r\n// =============================================================================\r\n\r\n/**\r\n * Result Success Preset\r\n *\r\n * Success result page.\r\n * Operation completed successfully.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RESULT_SUCCESS: PresetDefinition = {\r\n id: 'result-success',\r\n name: 'Result Success',\r\n description: 'Success result page for completed operations',\r\n category: 'feedback',\r\n tags: ['result', 'success', 'complete', 'done'],\r\n componentTypes: ['resultState'],\r\n config: {\r\n size: 'xl',\r\n variant: 'ghost',\r\n colorScheme: 'success',\r\n shape: 'none',\r\n iconPosition: 'top',\r\n elevation: 'none',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'smooth',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Result Error Preset\r\n *\r\n * Error result page.\r\n * Operation failed message.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RESULT_ERROR: PresetDefinition = {\r\n id: 'result-error',\r\n name: 'Result Error',\r\n description: 'Error result page for failed operations',\r\n category: 'feedback',\r\n tags: ['result', 'error', 'failed', 'failure'],\r\n componentTypes: ['resultState'],\r\n config: {\r\n size: 'xl',\r\n variant: 'ghost',\r\n colorScheme: 'error',\r\n shape: 'none',\r\n iconPosition: 'top',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n justify: 'center',\r\n align: 'center',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n overflow: 'visible',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All feedback presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FEEDBACK_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Alert\r\n ALERT_INFO,\r\n ALERT_SUCCESS,\r\n ALERT_WARNING,\r\n ALERT_ERROR,\r\n ALERT_DISMISSIBLE,\r\n // Toast\r\n TOAST_DEFAULT,\r\n TOAST_SUCCESS,\r\n TOAST_ERROR,\r\n TOAST_ACTION,\r\n // Progress\r\n PROGRESS_LINEAR,\r\n PROGRESS_CIRCULAR,\r\n PROGRESS_STEPS,\r\n PROGRESS_METER,\r\n // Spinner\r\n SPINNER_DEFAULT,\r\n SPINNER_SMALL,\r\n SPINNER_PAGE,\r\n // Skeleton\r\n SKELETON_TEXT,\r\n SKELETON_AVATAR,\r\n SKELETON_CARD,\r\n SKELETON_IMAGE,\r\n // Empty State\r\n EMPTY_DEFAULT,\r\n EMPTY_SEARCH,\r\n // Error State\r\n ERROR_DEFAULT,\r\n ERROR_404,\r\n // Loading\r\n LOADING_OVERLAY,\r\n LOADING_INLINE,\r\n // Banner\r\n BANNER_INFO,\r\n BANNER_WARNING,\r\n BANNER_PROMO,\r\n // Result\r\n RESULT_SUCCESS,\r\n RESULT_ERROR,\r\n] as const;\r\n\r\n/**\r\n * Feedback presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FEEDBACK_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n FEEDBACK_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get a feedback preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getFeedbackPreset(id: string): PresetDefinition | undefined {\r\n return FEEDBACK_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get all feedback presets matching given tags.\r\n *\r\n * @param tags - Tags to match (ANY match)\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getFeedbackPresetsByTags(tags: string[]): PresetDefinition[] {\r\n return FEEDBACK_PRESETS.filter(\r\n (preset) => preset.tags?.some((tag) => tags.includes(tag)) ?? false\r\n );\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid feedback preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid feedback preset\r\n * @since 2.1.0\r\n */\r\nexport function isFeedbackPreset(id: string): boolean {\r\n return FEEDBACK_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Navigation Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for navigation components covering common use cases:\r\n * - Navbar presets for main navigation\r\n * - Sidebar presets for side navigation\r\n * - Breadcrumb presets for hierarchy navigation\r\n * - Tab presets for content organization\r\n * - Pagination presets for list navigation\r\n * - Menu presets for dropdown menus\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/nav-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// NAVBAR PRESETS - Main navigation bars\r\n// =============================================================================\r\n\r\n/**\r\n * Navbar Default Preset\r\n *\r\n * Standard navigation bar with clean, professional appearance.\r\n * Features subtle elevation and smooth transitions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_NAVBAR_DEFAULT: PresetDefinition = {\r\n id: 'nav-navbar-default',\r\n name: 'Navbar Default',\r\n description: 'Standard navigation bar with clean, professional appearance',\r\n category: 'navigation',\r\n tags: ['navbar', 'header', 'main-nav', 'horizontal'],\r\n componentTypes: ['navbar', 'navigation', 'header'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'sticky',\r\n position: 'relative',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Navbar Transparent Preset\r\n *\r\n * Transparent navbar that overlays content.\r\n * Great for hero sections and landing pages.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_NAVBAR_TRANSPARENT: PresetDefinition = {\r\n id: 'nav-navbar-transparent',\r\n name: 'Navbar Transparent',\r\n description: 'Transparent navbar that overlays content',\r\n category: 'navigation',\r\n tags: ['navbar', 'header', 'transparent', 'overlay', 'hero'],\r\n componentTypes: ['navbar', 'navigation', 'header'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'transparent',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'sticky',\r\n position: 'absolute',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Navbar Elevated Preset\r\n *\r\n * Elevated navbar with prominent shadow.\r\n * Suitable for apps requiring clear navigation separation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_NAVBAR_ELEVATED: PresetDefinition = {\r\n id: 'nav-navbar-elevated',\r\n name: 'Navbar Elevated',\r\n description: 'Elevated navbar with prominent shadow',\r\n category: 'navigation',\r\n tags: ['navbar', 'header', 'elevated', 'shadow', 'prominent'],\r\n componentTypes: ['navbar', 'navigation', 'header'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'lg',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'sticky',\r\n position: 'sticky',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SIDEBAR PRESETS - Side navigation\r\n// =============================================================================\r\n\r\n/**\r\n * Sidebar Default Preset\r\n *\r\n * Standard sidebar navigation with clean appearance.\r\n * Features subtle border and comfortable spacing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_SIDEBAR_DEFAULT: PresetDefinition = {\r\n id: 'nav-sidebar-default',\r\n name: 'Sidebar Default',\r\n description: 'Standard sidebar navigation with clean appearance',\r\n category: 'navigation',\r\n tags: ['sidebar', 'side-nav', 'vertical', 'main-nav'],\r\n componentTypes: ['sidebar', 'navigation', 'nav'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n orientation: 'vertical',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Sidebar Compact Preset\r\n *\r\n * Compact sidebar for dense navigation needs.\r\n * Icons only when collapsed, full labels when expanded.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_SIDEBAR_COMPACT: PresetDefinition = {\r\n id: 'nav-sidebar-compact',\r\n name: 'Sidebar Compact',\r\n description: 'Compact sidebar for dense navigation needs',\r\n category: 'navigation',\r\n tags: ['sidebar', 'compact', 'collapsible', 'icon-nav'],\r\n componentTypes: ['sidebar', 'navigation', 'nav'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n orientation: 'vertical',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Sidebar Floating Preset\r\n *\r\n * Floating sidebar with elevation and rounded corners.\r\n * Modern appearance for dashboard applications.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_SIDEBAR_FLOATING: PresetDefinition = {\r\n id: 'nav-sidebar-floating',\r\n name: 'Sidebar Floating',\r\n description: 'Floating sidebar with elevation and rounded corners',\r\n category: 'navigation',\r\n tags: ['sidebar', 'floating', 'modern', 'dashboard'],\r\n componentTypes: ['sidebar', 'navigation', 'nav'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n orientation: 'vertical',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// BREADCRUMB PRESETS - Hierarchy navigation\r\n// =============================================================================\r\n\r\n/**\r\n * Breadcrumb Default Preset\r\n *\r\n * Standard breadcrumb navigation with clean appearance.\r\n * Features subtle styling and clear hierarchy indication.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_BREADCRUMB_DEFAULT: PresetDefinition = {\r\n id: 'nav-breadcrumb-default',\r\n name: 'Breadcrumb Default',\r\n description: 'Standard breadcrumb navigation with clean appearance',\r\n category: 'navigation',\r\n tags: ['breadcrumb', 'hierarchy', 'path', 'navigation'],\r\n componentTypes: ['breadcrumb', 'navigation'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'medium',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Breadcrumb Contained Preset\r\n *\r\n * Breadcrumb with contained background.\r\n * Better visibility on complex backgrounds.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_BREADCRUMB_CONTAINED: PresetDefinition = {\r\n id: 'nav-breadcrumb-contained',\r\n name: 'Breadcrumb Contained',\r\n description: 'Breadcrumb with contained background',\r\n category: 'navigation',\r\n tags: ['breadcrumb', 'contained', 'background', 'visible'],\r\n componentTypes: ['breadcrumb', 'navigation'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// TAB PRESETS - Content organization\r\n// =============================================================================\r\n\r\n/**\r\n * Tabs Default Preset\r\n *\r\n * Standard tab navigation with underline indicator.\r\n * Clean and minimal appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_TABS_DEFAULT: PresetDefinition = {\r\n id: 'nav-tabs-default',\r\n name: 'Tabs Default',\r\n description: 'Standard tab navigation with underline indicator',\r\n category: 'navigation',\r\n tags: ['tabs', 'underline', 'content', 'switcher'],\r\n componentTypes: ['tabs', 'navigation', 'tab-list'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Tabs Contained Preset\r\n *\r\n * Tab navigation with contained/pill style.\r\n * Active tab has distinct background.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_TABS_CONTAINED: PresetDefinition = {\r\n id: 'nav-tabs-contained',\r\n name: 'Tabs Contained',\r\n description: 'Tab navigation with contained/pill style',\r\n category: 'navigation',\r\n tags: ['tabs', 'contained', 'pill', 'segmented'],\r\n componentTypes: ['tabs', 'navigation', 'tab-list'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Tabs Vertical Preset\r\n *\r\n * Vertical tab navigation for side content switching.\r\n * Suitable for settings pages and forms.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_TABS_VERTICAL: PresetDefinition = {\r\n id: 'nav-tabs-vertical',\r\n name: 'Tabs Vertical',\r\n description: 'Vertical tab navigation for side content switching',\r\n category: 'navigation',\r\n tags: ['tabs', 'vertical', 'settings', 'sidebar'],\r\n componentTypes: ['tabs', 'navigation', 'tab-list'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n orientation: 'vertical',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PAGINATION PRESETS - List navigation\r\n// =============================================================================\r\n\r\n/**\r\n * Pagination Default Preset\r\n *\r\n * Standard pagination with numbered buttons.\r\n * Clean appearance suitable for most use cases.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_PAGINATION_DEFAULT: PresetDefinition = {\r\n id: 'nav-pagination-default',\r\n name: 'Pagination Default',\r\n description: 'Standard pagination with numbered buttons',\r\n category: 'navigation',\r\n tags: ['pagination', 'numbered', 'list', 'pages'],\r\n componentTypes: ['pagination', 'navigation'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Pagination Minimal Preset\r\n *\r\n * Minimal pagination with only prev/next buttons.\r\n * Suitable for infinite scroll or simple navigation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_PAGINATION_MINIMAL: PresetDefinition = {\r\n id: 'nav-pagination-minimal',\r\n name: 'Pagination Minimal',\r\n description: 'Minimal pagination with only prev/next buttons',\r\n category: 'navigation',\r\n tags: ['pagination', 'minimal', 'prev-next', 'simple'],\r\n componentTypes: ['pagination', 'navigation'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Pagination Rounded Preset\r\n *\r\n * Pagination with fully rounded buttons.\r\n * Modern, playful appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_PAGINATION_ROUNDED: PresetDefinition = {\r\n id: 'nav-pagination-rounded',\r\n name: 'Pagination Rounded',\r\n description: 'Pagination with fully rounded buttons',\r\n category: 'navigation',\r\n tags: ['pagination', 'rounded', 'modern', 'playful'],\r\n componentTypes: ['pagination', 'navigation'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// MENU PRESETS - Dropdown menus\r\n// =============================================================================\r\n\r\n/**\r\n * Menu Default Preset\r\n *\r\n * Standard dropdown menu with clean appearance.\r\n * Features subtle elevation and smooth animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_MENU_DEFAULT: PresetDefinition = {\r\n id: 'nav-menu-default',\r\n name: 'Menu Default',\r\n description: 'Standard dropdown menu with clean appearance',\r\n category: 'navigation',\r\n tags: ['menu', 'dropdown', 'context', 'actions'],\r\n componentTypes: ['menu', 'dropdown', 'navigation'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n zIndex: 'dropdown',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Menu Compact Preset\r\n *\r\n * Compact dropdown menu for dense interfaces.\r\n * Smaller items with tighter spacing.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_MENU_COMPACT: PresetDefinition = {\r\n id: 'nav-menu-compact',\r\n name: 'Menu Compact',\r\n description: 'Compact dropdown menu for dense interfaces',\r\n category: 'navigation',\r\n tags: ['menu', 'compact', 'dense', 'small'],\r\n componentTypes: ['menu', 'dropdown', 'navigation'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'sm',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n zIndex: 'dropdown',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Menu Cascading Preset\r\n *\r\n * Cascading/nested menu with submenu support.\r\n * Features animation for submenu reveal.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_MENU_CASCADING: PresetDefinition = {\r\n id: 'nav-menu-cascading',\r\n name: 'Menu Cascading',\r\n description: 'Cascading/nested menu with submenu support',\r\n category: 'navigation',\r\n tags: ['menu', 'cascading', 'nested', 'submenu'],\r\n componentTypes: ['menu', 'dropdown', 'navigation'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n zIndex: 'dropdown',\r\n overflow: 'visible',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// STEPPER PRESETS - Step navigation\r\n// =============================================================================\r\n\r\n/**\r\n * Stepper Default Preset\r\n *\r\n * Standard step-by-step navigation.\r\n * Shows progress through multi-step processes.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_STEPPER_DEFAULT: PresetDefinition = {\r\n id: 'nav-stepper-default',\r\n name: 'Stepper Default',\r\n description: 'Standard step-by-step navigation',\r\n category: 'navigation',\r\n tags: ['stepper', 'steps', 'wizard', 'progress'],\r\n componentTypes: ['stepper', 'navigation', 'progress'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Stepper Vertical Preset\r\n *\r\n * Vertical step navigation for forms.\r\n * Shows all steps with detailed descriptions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_STEPPER_VERTICAL: PresetDefinition = {\r\n id: 'nav-stepper-vertical',\r\n name: 'Stepper Vertical',\r\n description: 'Vertical step navigation for forms',\r\n category: 'navigation',\r\n tags: ['stepper', 'vertical', 'form', 'detailed'],\r\n componentTypes: ['stepper', 'navigation', 'progress'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n orientation: 'vertical',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Stepper Minimal Preset\r\n *\r\n * Minimal step indicator without labels.\r\n * Dots or numbers only.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_STEPPER_MINIMAL: PresetDefinition = {\r\n id: 'nav-stepper-minimal',\r\n name: 'Stepper Minimal',\r\n description: 'Minimal step indicator without labels',\r\n category: 'navigation',\r\n tags: ['stepper', 'minimal', 'dots', 'indicator'],\r\n componentTypes: ['stepper', 'navigation', 'progress'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n orientation: 'horizontal',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All navigation presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Navbar\r\n NAV_NAVBAR_DEFAULT,\r\n NAV_NAVBAR_TRANSPARENT,\r\n NAV_NAVBAR_ELEVATED,\r\n // Sidebar\r\n NAV_SIDEBAR_DEFAULT,\r\n NAV_SIDEBAR_COMPACT,\r\n NAV_SIDEBAR_FLOATING,\r\n // Breadcrumb\r\n NAV_BREADCRUMB_DEFAULT,\r\n NAV_BREADCRUMB_CONTAINED,\r\n // Tabs\r\n NAV_TABS_DEFAULT,\r\n NAV_TABS_CONTAINED,\r\n NAV_TABS_VERTICAL,\r\n // Pagination\r\n NAV_PAGINATION_DEFAULT,\r\n NAV_PAGINATION_MINIMAL,\r\n NAV_PAGINATION_ROUNDED,\r\n // Menu\r\n NAV_MENU_DEFAULT,\r\n NAV_MENU_COMPACT,\r\n NAV_MENU_CASCADING,\r\n // Stepper\r\n NAV_STEPPER_DEFAULT,\r\n NAV_STEPPER_VERTICAL,\r\n NAV_STEPPER_MINIMAL,\r\n] as const;\r\n\r\n/**\r\n * Navigation presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const NAV_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n NAV_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get a navigation preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getNavPreset(id: string): PresetDefinition | undefined {\r\n return NAV_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get navigation presets by tag.\r\n *\r\n * @param tag - The tag to filter by\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getNavPresetsByTag(tag: string): PresetDefinition[] {\r\n return NAV_PRESETS.filter((preset) => preset.tags?.includes(tag) ?? false);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid navigation preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid navigation preset\r\n * @since 2.1.0\r\n */\r\nexport function isNavPreset(id: string): boolean {\r\n return NAV_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Overlay Presets - Pre-configured 24-Factor Configurations\r\n *\r\n * Named presets for overlay components covering common use cases:\r\n * - Modal presets for dialog windows\r\n * - Drawer presets for sliding panels\r\n * - Tooltip presets for contextual information\r\n * - Popover presets for rich content overlays\r\n * - Sheet presets for bottom/side sheets\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/overlay-presets\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type { PresetDefinition, Factor24Config } from '../types';\r\n\r\n// =============================================================================\r\n// MODAL PRESETS - Dialog windows\r\n// =============================================================================\r\n\r\n/**\r\n * Modal Default Preset\r\n *\r\n * Standard modal dialog with clean appearance.\r\n * Features elevation, rounded corners, and smooth animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_MODAL_DEFAULT: PresetDefinition = {\r\n id: 'overlay-modal-default',\r\n name: 'Modal Default',\r\n description: 'Standard modal dialog with clean appearance',\r\n category: 'overlay',\r\n tags: ['modal', 'dialog', 'popup', 'centered'],\r\n componentTypes: ['modal', 'dialog', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'xl',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'modal',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Modal Alert Preset\r\n *\r\n * Alert modal for important messages and confirmations.\r\n * Features prominent styling and action focus.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_MODAL_ALERT: PresetDefinition = {\r\n id: 'overlay-modal-alert',\r\n name: 'Modal Alert',\r\n description: 'Alert modal for important messages and confirmations',\r\n category: 'overlay',\r\n tags: ['modal', 'alert', 'confirm', 'important'],\r\n componentTypes: ['modal', 'dialog', 'alert-dialog'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'xl',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'modal',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Modal Fullscreen Preset\r\n *\r\n * Full-screen modal for immersive experiences.\r\n * Takes entire viewport with no backdrop visible.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_MODAL_FULLSCREEN: PresetDefinition = {\r\n id: 'overlay-modal-fullscreen',\r\n name: 'Modal Fullscreen',\r\n description: 'Full-screen modal for immersive experiences',\r\n category: 'overlay',\r\n tags: ['modal', 'fullscreen', 'immersive', 'full'],\r\n componentTypes: ['modal', 'dialog', 'overlay'],\r\n config: {\r\n size: 'full',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'modal',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Modal Minimal Preset\r\n *\r\n * Minimal modal with subtle styling.\r\n * Less visual weight for secondary dialogs.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_MODAL_MINIMAL: PresetDefinition = {\r\n id: 'overlay-modal-minimal',\r\n name: 'Modal Minimal',\r\n description: 'Minimal modal with subtle styling',\r\n category: 'overlay',\r\n tags: ['modal', 'minimal', 'subtle', 'lightweight'],\r\n componentTypes: ['modal', 'dialog', 'overlay'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'fast',\r\n zIndex: 'modal',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// DRAWER PRESETS - Sliding panels\r\n// =============================================================================\r\n\r\n/**\r\n * Drawer Default Preset\r\n *\r\n * Standard sliding drawer from the side.\r\n * Features smooth slide animation and elevation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_DRAWER_DEFAULT: PresetDefinition = {\r\n id: 'overlay-drawer-default',\r\n name: 'Drawer Default',\r\n description: 'Standard sliding drawer from the side',\r\n category: 'overlay',\r\n tags: ['drawer', 'slide', 'panel', 'side'],\r\n componentTypes: ['drawer', 'sheet', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'xl',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'drawer',\r\n overflow: 'auto',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Drawer Compact Preset\r\n *\r\n * Narrow drawer for quick actions.\r\n * Suitable for navigation or simple forms.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_DRAWER_COMPACT: PresetDefinition = {\r\n id: 'overlay-drawer-compact',\r\n name: 'Drawer Compact',\r\n description: 'Narrow drawer for quick actions',\r\n category: 'overlay',\r\n tags: ['drawer', 'compact', 'narrow', 'quick'],\r\n componentTypes: ['drawer', 'sheet', 'overlay'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'compact',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'drawer',\r\n overflow: 'auto',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Drawer Full Preset\r\n *\r\n * Full-width drawer for complex content.\r\n * Suitable for forms, editors, or detail views.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_DRAWER_FULL: PresetDefinition = {\r\n id: 'overlay-drawer-full',\r\n name: 'Drawer Full',\r\n description: 'Full-width drawer for complex content',\r\n category: 'overlay',\r\n tags: ['drawer', 'full', 'wide', 'detail'],\r\n componentTypes: ['drawer', 'sheet', 'overlay'],\r\n config: {\r\n size: 'lg',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'xl',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'drawer',\r\n overflow: 'auto',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// TOOLTIP PRESETS - Contextual information\r\n// =============================================================================\r\n\r\n/**\r\n * Tooltip Default Preset\r\n *\r\n * Standard tooltip for contextual information.\r\n * Compact, dark background with subtle animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_TOOLTIP_DEFAULT: PresetDefinition = {\r\n id: 'overlay-tooltip-default',\r\n name: 'Tooltip Default',\r\n description: 'Standard tooltip for contextual information',\r\n category: 'overlay',\r\n tags: ['tooltip', 'hint', 'help', 'info'],\r\n componentTypes: ['tooltip', 'overlay'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'inverse',\r\n shape: 'sm',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'high',\r\n cursor: 'default',\r\n transition: 'fast',\r\n zIndex: 'tooltip',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Tooltip Light Preset\r\n *\r\n * Light-themed tooltip for dark backgrounds.\r\n * Clean appearance with subtle shadow.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_TOOLTIP_LIGHT: PresetDefinition = {\r\n id: 'overlay-tooltip-light',\r\n name: 'Tooltip Light',\r\n description: 'Light-themed tooltip for dark backgrounds',\r\n category: 'overlay',\r\n tags: ['tooltip', 'light', 'clean', 'subtle'],\r\n componentTypes: ['tooltip', 'overlay'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'sm',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'fast',\r\n zIndex: 'tooltip',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Tooltip Rich Preset\r\n *\r\n * Rich tooltip with more content space.\r\n * Suitable for detailed explanations or mini-cards.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_TOOLTIP_RICH: PresetDefinition = {\r\n id: 'overlay-tooltip-rich',\r\n name: 'Tooltip Rich',\r\n description: 'Rich tooltip with more content space',\r\n category: 'overlay',\r\n tags: ['tooltip', 'rich', 'detailed', 'card'],\r\n componentTypes: ['tooltip', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'tooltip',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// POPOVER PRESETS - Rich content overlays\r\n// =============================================================================\r\n\r\n/**\r\n * Popover Default Preset\r\n *\r\n * Standard popover for rich content overlays.\r\n * Features elevation and smooth animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_POPOVER_DEFAULT: PresetDefinition = {\r\n id: 'overlay-popover-default',\r\n name: 'Popover Default',\r\n description: 'Standard popover for rich content overlays',\r\n category: 'overlay',\r\n tags: ['popover', 'overlay', 'content', 'dropdown'],\r\n componentTypes: ['popover', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'popover',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Popover Menu Preset\r\n *\r\n * Popover styled for menu content.\r\n * Compact spacing for action lists.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_POPOVER_MENU: PresetDefinition = {\r\n id: 'overlay-popover-menu',\r\n name: 'Popover Menu',\r\n description: 'Popover styled for menu content',\r\n category: 'overlay',\r\n tags: ['popover', 'menu', 'actions', 'list'],\r\n componentTypes: ['popover', 'overlay', 'menu'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n zIndex: 'popover',\r\n overflow: 'auto',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Popover Form Preset\r\n *\r\n * Popover with form-friendly styling.\r\n * Comfortable spacing for inputs and controls.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_POPOVER_FORM: PresetDefinition = {\r\n id: 'overlay-popover-form',\r\n name: 'Popover Form',\r\n description: 'Popover with form-friendly styling',\r\n category: 'overlay',\r\n tags: ['popover', 'form', 'inputs', 'edit'],\r\n componentTypes: ['popover', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'popover',\r\n overflow: 'visible',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SHEET PRESETS - Bottom/side sheets (mobile patterns)\r\n// =============================================================================\r\n\r\n/**\r\n * Sheet Bottom Preset\r\n *\r\n * Bottom sheet sliding up from bottom.\r\n * Common mobile pattern for actions and content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_SHEET_BOTTOM: PresetDefinition = {\r\n id: 'overlay-sheet-bottom',\r\n name: 'Sheet Bottom',\r\n description: 'Bottom sheet sliding up from bottom',\r\n category: 'overlay',\r\n tags: ['sheet', 'bottom', 'mobile', 'actions'],\r\n componentTypes: ['sheet', 'drawer', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'xl',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'modal',\r\n overflow: 'auto',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Sheet Draggable Preset\r\n *\r\n * Draggable bottom sheet with handle.\r\n * Can be swiped to different snap points.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_SHEET_DRAGGABLE: PresetDefinition = {\r\n id: 'overlay-sheet-draggable',\r\n name: 'Sheet Draggable',\r\n description: 'Draggable bottom sheet with handle',\r\n category: 'overlay',\r\n tags: ['sheet', 'draggable', 'swipe', 'snap'],\r\n componentTypes: ['sheet', 'drawer', 'overlay'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'xl',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'grab',\r\n transition: 'spring',\r\n zIndex: 'modal',\r\n overflow: 'auto',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Sheet Full Preset\r\n *\r\n * Full-height sheet that covers entire screen.\r\n * Used for complex flows on mobile.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_SHEET_FULL: PresetDefinition = {\r\n id: 'overlay-sheet-full',\r\n name: 'Sheet Full',\r\n description: 'Full-height sheet that covers entire screen',\r\n category: 'overlay',\r\n tags: ['sheet', 'full', 'fullscreen', 'mobile'],\r\n componentTypes: ['sheet', 'drawer', 'overlay'],\r\n config: {\r\n size: 'full',\r\n colorScheme: 'surface',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'modal',\r\n overflow: 'auto',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// BACKDROP PRESETS - Overlay backgrounds\r\n// =============================================================================\r\n\r\n/**\r\n * Backdrop Default Preset\r\n *\r\n * Standard backdrop for modal overlays.\r\n * Semi-transparent dark background.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_BACKDROP_DEFAULT: PresetDefinition = {\r\n id: 'overlay-backdrop-default',\r\n name: 'Backdrop Default',\r\n description: 'Standard backdrop for modal overlays',\r\n category: 'overlay',\r\n tags: ['backdrop', 'overlay', 'dim', 'background'],\r\n componentTypes: ['backdrop', 'overlay'],\r\n config: {\r\n size: 'full',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'medium',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'overlay',\r\n overflow: 'hidden',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Backdrop Blur Preset\r\n *\r\n * Backdrop with blur effect.\r\n * Modern glass-like appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_BACKDROP_BLUR: PresetDefinition = {\r\n id: 'overlay-backdrop-blur',\r\n name: 'Backdrop Blur',\r\n description: 'Backdrop with blur effect',\r\n category: 'overlay',\r\n tags: ['backdrop', 'blur', 'glass', 'frosted'],\r\n componentTypes: ['backdrop', 'overlay'],\r\n config: {\r\n size: 'full',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'low',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'overlay',\r\n overflow: 'hidden',\r\n position: 'fixed',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// PRESET COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All overlay presets as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_PRESETS: ReadonlyArray<PresetDefinition> = [\r\n // Modal\r\n OVERLAY_MODAL_DEFAULT,\r\n OVERLAY_MODAL_ALERT,\r\n OVERLAY_MODAL_FULLSCREEN,\r\n OVERLAY_MODAL_MINIMAL,\r\n // Drawer\r\n OVERLAY_DRAWER_DEFAULT,\r\n OVERLAY_DRAWER_COMPACT,\r\n OVERLAY_DRAWER_FULL,\r\n // Tooltip\r\n OVERLAY_TOOLTIP_DEFAULT,\r\n OVERLAY_TOOLTIP_LIGHT,\r\n OVERLAY_TOOLTIP_RICH,\r\n // Popover\r\n OVERLAY_POPOVER_DEFAULT,\r\n OVERLAY_POPOVER_MENU,\r\n OVERLAY_POPOVER_FORM,\r\n // Sheet\r\n OVERLAY_SHEET_BOTTOM,\r\n OVERLAY_SHEET_DRAGGABLE,\r\n OVERLAY_SHEET_FULL,\r\n // Backdrop\r\n OVERLAY_BACKDROP_DEFAULT,\r\n OVERLAY_BACKDROP_BLUR,\r\n] as const;\r\n\r\n/**\r\n * Overlay presets as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const OVERLAY_PRESETS_MAP: ReadonlyMap<string, PresetDefinition> = new Map(\r\n OVERLAY_PRESETS.map((preset) => [preset.id, preset])\r\n);\r\n\r\n/**\r\n * Get an overlay preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getOverlayPreset(id: string): PresetDefinition | undefined {\r\n return OVERLAY_PRESETS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Get overlay presets by tag.\r\n *\r\n * @param tag - The tag to filter by\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function getOverlayPresetsByTag(tag: string): PresetDefinition[] {\r\n return OVERLAY_PRESETS.filter((preset) => preset.tags?.includes(tag) ?? false);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is a valid overlay preset.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if the ID is a valid overlay preset\r\n * @since 2.1.0\r\n */\r\nexport function isOverlayPreset(id: string): boolean {\r\n return OVERLAY_PRESETS_MAP.has(id);\r\n}\r\n","/**\r\n * Preset Registry - Central Registry for All Presets\r\n *\r\n * Unified registry for managing and resolving presets across all component types.\r\n * Provides fast lookup, filtering, and search capabilities.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/presets/preset-registry\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport { BUTTON_PRESETS, getButtonPreset, isButtonPreset } from './button-presets';\r\nimport { CARD_PRESETS, getCardPreset, isCardPreset } from './card-presets';\r\nimport {\r\n DATA_DISPLAY_PRESETS,\r\n getDataDisplayPreset,\r\n isDataDisplayPreset,\r\n} from './data-display-presets';\r\nimport { FEEDBACK_PRESETS, getFeedbackPreset, isFeedbackPreset } from './feedback-presets';\r\nimport { FORM_PRESETS, getFormPreset, isFormPreset } from './form-presets';\r\nimport { INPUT_PRESETS, getInputPreset, isInputPreset } from './input-presets';\r\nimport { NAV_PRESETS, getNavPreset, isNavPreset } from './nav-presets';\r\nimport { OVERLAY_PRESETS, getOverlayPreset, isOverlayPreset } from './overlay-presets';\r\n\r\nimport type {\r\n PresetDefinition,\r\n PresetCategory,\r\n Factor24Config,\r\n PresetRegistry as IPresetRegistry,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// REGISTRY CLASS\r\n// =============================================================================\r\n\r\n/**\r\n * Preset registry implementation.\r\n *\r\n * @since 2.1.0\r\n */\r\nclass PresetRegistryImpl implements IPresetRegistry {\r\n /** Internal preset storage */\r\n public readonly presets: Map<string, PresetDefinition>;\r\n\r\n /** Index by category for fast category lookups */\r\n private readonly categoryIndex: Map<PresetCategory, Set<string>>;\r\n\r\n /** Index by component type for fast type lookups */\r\n private readonly componentTypeIndex: Map<string, Set<string>>;\r\n\r\n /** Index by tag for fast tag searches */\r\n private readonly tagIndex: Map<string, Set<string>>;\r\n\r\n /**\r\n * Creates a new preset registry.\r\n *\r\n * @param initialPresets - Optional initial presets to register\r\n */\r\n constructor(initialPresets?: ReadonlyArray<PresetDefinition>) {\r\n this.presets = new Map();\r\n this.categoryIndex = new Map();\r\n this.componentTypeIndex = new Map();\r\n this.tagIndex = new Map();\r\n\r\n // Register initial presets if provided\r\n if (initialPresets !== undefined && initialPresets !== null) {\r\n for (const preset of initialPresets) {\r\n this.register(preset);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get a preset by ID.\r\n *\r\n * @param id - The preset ID\r\n * @returns The preset definition or undefined if not found\r\n */\r\n public get(id: string): PresetDefinition | undefined {\r\n return this.presets.get(id);\r\n }\r\n\r\n /**\r\n * Register a new preset.\r\n *\r\n * @param preset - The preset to register\r\n * @throws Error if preset with same ID already exists\r\n */\r\n public register(preset: PresetDefinition): void {\r\n if (this.presets.has(preset.id)) {\r\n throw new Error(`Preset with ID \"${preset.id}\" already registered`);\r\n }\r\n\r\n // Add to main storage\r\n this.presets.set(preset.id, preset);\r\n\r\n // Update category index\r\n if (!this.categoryIndex.has(preset.category)) {\r\n this.categoryIndex.set(preset.category, new Set());\r\n }\r\n const categorySet = this.categoryIndex.get(preset.category);\r\n if (categorySet !== undefined) {\r\n categorySet.add(preset.id);\r\n }\r\n\r\n // Update component type index\r\n if (preset.componentTypes !== undefined && preset.componentTypes !== null) {\r\n for (const type of preset.componentTypes) {\r\n if (!this.componentTypeIndex.has(type)) {\r\n this.componentTypeIndex.set(type, new Set());\r\n }\r\n const typeSet = this.componentTypeIndex.get(type);\r\n if (typeSet !== undefined) {\r\n typeSet.add(preset.id);\r\n }\r\n }\r\n }\r\n\r\n // Update tag index\r\n if (preset.tags !== undefined && preset.tags !== null) {\r\n for (const tag of preset.tags) {\r\n if (!this.tagIndex.has(tag)) {\r\n this.tagIndex.set(tag, new Set());\r\n }\r\n const tagSet = this.tagIndex.get(tag);\r\n if (tagSet !== undefined) {\r\n tagSet.add(preset.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get all presets in a category.\r\n *\r\n * @param category - The category to filter by\r\n * @returns Array of presets in the category\r\n */\r\n public getByCategory(category: PresetCategory): PresetDefinition[] {\r\n const ids = this.categoryIndex.get(category);\r\n if (ids === undefined) return [];\r\n return Array.from(ids)\r\n .map((id) => this.presets.get(id))\r\n .filter((preset): preset is PresetDefinition => preset !== undefined);\r\n }\r\n\r\n /**\r\n * Get all presets for a component type.\r\n *\r\n * @param componentType - The component type to filter by\r\n * @returns Array of presets for the component type\r\n */\r\n public getByComponentType(componentType: string): PresetDefinition[] {\r\n const ids = this.componentTypeIndex.get(componentType);\r\n if (ids === undefined) return [];\r\n return Array.from(ids)\r\n .map((id) => this.presets.get(id))\r\n .filter((preset): preset is PresetDefinition => preset !== undefined);\r\n }\r\n\r\n /**\r\n * Search presets by tag.\r\n *\r\n * @param tag - The tag to search for\r\n * @returns Array of presets with the tag\r\n */\r\n public searchByTag(tag: string): PresetDefinition[] {\r\n const ids = this.tagIndex.get(tag);\r\n if (ids === undefined) return [];\r\n return Array.from(ids)\r\n .map((id) => this.presets.get(id))\r\n .filter((preset): preset is PresetDefinition => preset !== undefined);\r\n }\r\n\r\n /**\r\n * Search presets by multiple tags (OR logic).\r\n *\r\n * @param tags - Tags to search for\r\n * @returns Array of presets matching any tag\r\n */\r\n public searchByTags(tags: string[]): PresetDefinition[] {\r\n const matchingIds = new Set<string>();\r\n\r\n for (const tag of tags) {\r\n const ids = this.tagIndex.get(tag);\r\n if (ids !== undefined) {\r\n for (const id of ids) {\r\n matchingIds.add(id);\r\n }\r\n }\r\n }\r\n\r\n return Array.from(matchingIds)\r\n .map((id) => this.presets.get(id))\r\n .filter((preset): preset is PresetDefinition => preset !== undefined);\r\n }\r\n\r\n /**\r\n * Search presets by text (searches name, description, and tags).\r\n *\r\n * @param query - Search query\r\n * @returns Array of matching presets\r\n */\r\n public search(query: string): PresetDefinition[] {\r\n const lowerQuery = query.toLowerCase();\r\n const results: PresetDefinition[] = [];\r\n\r\n for (const preset of this.presets.values()) {\r\n // Search in name\r\n if (preset.name.toLowerCase().includes(lowerQuery)) {\r\n results.push(preset);\r\n continue;\r\n }\r\n\r\n // Search in description\r\n if (preset.description.toLowerCase().includes(lowerQuery)) {\r\n results.push(preset);\r\n continue;\r\n }\r\n\r\n // Search in ID\r\n if (preset.id.toLowerCase().includes(lowerQuery)) {\r\n results.push(preset);\r\n continue;\r\n }\r\n\r\n // Search in tags\r\n if (preset.tags?.some((tag) => tag.toLowerCase().includes(lowerQuery)) ?? false) {\r\n results.push(preset);\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Get all registered presets.\r\n *\r\n * @returns Array of all presets\r\n */\r\n public getAll(): PresetDefinition[] {\r\n return Array.from(this.presets.values());\r\n }\r\n\r\n /**\r\n * Get all categories with their preset counts.\r\n *\r\n * @returns Map of category to preset count\r\n */\r\n public getCategoryCounts(): Map<PresetCategory, number> {\r\n const counts = new Map<PresetCategory, number>();\r\n for (const [category, ids] of this.categoryIndex.entries()) {\r\n counts.set(category, ids.size);\r\n }\r\n return counts;\r\n }\r\n\r\n /**\r\n * Get total number of registered presets.\r\n *\r\n * @returns Total preset count\r\n */\r\n public get size(): number {\r\n return this.presets.size;\r\n }\r\n\r\n /**\r\n * Check if a preset exists.\r\n *\r\n * @param id - The preset ID to check\r\n * @returns True if preset exists\r\n */\r\n public has(id: string): boolean {\r\n return this.presets.has(id);\r\n }\r\n\r\n /**\r\n * Remove a preset from the registry.\r\n *\r\n * @param id - The preset ID to remove\r\n * @returns True if preset was removed\r\n */\r\n public unregister(id: string): boolean {\r\n const preset = this.presets.get(id);\r\n if (preset === undefined) return false;\r\n\r\n // Remove from main storage\r\n this.presets.delete(id);\r\n\r\n // Remove from category index\r\n const categorySet = this.categoryIndex.get(preset.category);\r\n if (categorySet !== undefined) {\r\n categorySet.delete(id);\r\n }\r\n\r\n // Remove from component type index\r\n if (preset.componentTypes !== undefined && preset.componentTypes !== null) {\r\n for (const type of preset.componentTypes) {\r\n const typeSet = this.componentTypeIndex.get(type);\r\n if (typeSet !== undefined) {\r\n typeSet.delete(id);\r\n }\r\n }\r\n }\r\n\r\n // Remove from tag index\r\n if (preset.tags !== undefined && preset.tags !== null) {\r\n for (const tag of preset.tags) {\r\n const tagSet = this.tagIndex.get(tag);\r\n if (tagSet !== undefined) {\r\n tagSet.delete(id);\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Clear all presets from the registry.\r\n */\r\n public clear(): void {\r\n this.presets.clear();\r\n this.categoryIndex.clear();\r\n this.componentTypeIndex.clear();\r\n this.tagIndex.clear();\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// GLOBAL REGISTRY INSTANCE\r\n// =============================================================================\r\n\r\n/**\r\n * Global preset registry instance.\r\n * Pre-populated with all built-in presets.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const presetRegistry = new PresetRegistryImpl([\r\n ...BUTTON_PRESETS,\r\n ...CARD_PRESETS,\r\n ...INPUT_PRESETS,\r\n ...FORM_PRESETS,\r\n ...DATA_DISPLAY_PRESETS,\r\n ...FEEDBACK_PRESETS,\r\n ...NAV_PRESETS,\r\n ...OVERLAY_PRESETS,\r\n]);\r\n\r\n// =============================================================================\r\n// RESOLUTION FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Resolve a preset ID to its Factor24Config.\r\n *\r\n * @param presetId - The preset ID to resolve\r\n * @returns The preset's config or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function resolvePreset(presetId: string): Partial<Factor24Config> | undefined {\r\n const preset = presetRegistry.get(presetId);\r\n return preset?.config;\r\n}\r\n\r\n/**\r\n * Resolve a preset with fallback to component-specific registries.\r\n *\r\n * @param presetId - The preset ID to resolve\r\n * @param componentType - Optional component type for fallback\r\n * @returns The preset's config or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function resolvePresetWithFallback(\r\n presetId: string,\r\n componentType?: string\r\n): Partial<Factor24Config> | undefined {\r\n // Try global registry first\r\n const globalPreset = presetRegistry.get(presetId);\r\n if (globalPreset !== undefined) {\r\n return globalPreset.config;\r\n }\r\n\r\n // Try component-specific fallbacks\r\n if (componentType !== undefined && componentType !== '') {\r\n if (componentType === 'button') {\r\n const buttonPreset = getButtonPreset(presetId);\r\n if (buttonPreset !== undefined) return buttonPreset.config;\r\n } else if (componentType === 'card') {\r\n const cardPreset = getCardPreset(presetId);\r\n if (cardPreset !== undefined) return cardPreset.config;\r\n } else if (\r\n componentType === 'input' ||\r\n componentType === 'textfield' ||\r\n componentType === 'searchfield'\r\n ) {\r\n const inputPreset = getInputPreset(presetId);\r\n if (inputPreset !== undefined) return inputPreset.config;\r\n }\r\n // Form components fallback\r\n const formPreset = getFormPreset(presetId);\r\n if (formPreset !== undefined) return formPreset.config;\r\n // Data display fallback\r\n const dataDisplayPreset = getDataDisplayPreset(presetId);\r\n if (dataDisplayPreset !== undefined) return dataDisplayPreset.config;\r\n // Feedback fallback\r\n const feedbackPreset = getFeedbackPreset(presetId);\r\n if (feedbackPreset !== undefined) return feedbackPreset.config;\r\n }\r\n\r\n // Try all component-specific registries\r\n if (isButtonPreset(presetId)) {\r\n return getButtonPreset(presetId)?.config;\r\n }\r\n if (isCardPreset(presetId)) {\r\n return getCardPreset(presetId)?.config;\r\n }\r\n if (isInputPreset(presetId)) {\r\n return getInputPreset(presetId)?.config;\r\n }\r\n if (isFormPreset(presetId)) {\r\n return getFormPreset(presetId)?.config;\r\n }\r\n if (isDataDisplayPreset(presetId)) {\r\n return getDataDisplayPreset(presetId)?.config;\r\n }\r\n if (isFeedbackPreset(presetId)) {\r\n return getFeedbackPreset(presetId)?.config;\r\n }\r\n if (isNavPreset(presetId)) {\r\n return getNavPreset(presetId)?.config;\r\n }\r\n if (isOverlayPreset(presetId)) {\r\n return getOverlayPreset(presetId)?.config;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Get all presets for a specific component type.\r\n *\r\n * @param componentType - The component type\r\n * @returns Array of presets for the component\r\n * @since 2.1.0\r\n */\r\nexport function getPresetsForComponent(componentType: string): PresetDefinition[] {\r\n return presetRegistry.getByComponentType(componentType);\r\n}\r\n\r\n/**\r\n * Get all presets in a category.\r\n *\r\n * @param category - The preset category\r\n * @returns Array of presets in the category\r\n * @since 2.1.0\r\n */\r\nexport function getPresetsByCategory(category: PresetCategory): PresetDefinition[] {\r\n return presetRegistry.getByCategory(category);\r\n}\r\n\r\n/**\r\n * Search all presets.\r\n *\r\n * @param query - Search query\r\n * @returns Array of matching presets\r\n * @since 2.1.0\r\n */\r\nexport function searchPresets(query: string): PresetDefinition[] {\r\n return presetRegistry.search(query);\r\n}\r\n\r\n/**\r\n * Check if a preset ID is valid.\r\n *\r\n * @param presetId - The preset ID to check\r\n * @returns True if the preset exists\r\n * @since 2.1.0\r\n */\r\nexport function isValidPreset(presetId: string): boolean {\r\n return (\r\n presetRegistry.has(presetId) ||\r\n isButtonPreset(presetId) ||\r\n isCardPreset(presetId) ||\r\n isInputPreset(presetId) ||\r\n isFormPreset(presetId) ||\r\n isDataDisplayPreset(presetId) ||\r\n isFeedbackPreset(presetId) ||\r\n isNavPreset(presetId) ||\r\n isOverlayPreset(presetId)\r\n );\r\n}\r\n\r\n/**\r\n * Get preset metadata without config.\r\n *\r\n * @param presetId - The preset ID\r\n * @returns Preset metadata or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getPresetMetadata(presetId: string): Omit<PresetDefinition, 'config'> | undefined {\r\n const preset = presetRegistry.get(presetId);\r\n if (preset === undefined) return undefined;\r\n\r\n const { config: _config, ...metadata } = preset;\r\n return metadata;\r\n}\r\n\r\n/**\r\n * Get all available preset IDs.\r\n *\r\n * @returns Array of all preset IDs\r\n * @since 2.1.0\r\n */\r\nexport function getAllPresetIds(): string[] {\r\n return Array.from(presetRegistry.presets.keys());\r\n}\r\n\r\n/**\r\n * Get preset count statistics.\r\n *\r\n * @returns Object with preset counts by category\r\n * @since 2.1.0\r\n */\r\nexport function getPresetStats(): {\r\n total: number;\r\n byCategory: Record<PresetCategory, number>;\r\n} {\r\n const categoryCounts = presetRegistry.getCategoryCounts();\r\n const byCategory: Record<PresetCategory, number> = {\r\n button: 0,\r\n card: 0,\r\n input: 0,\r\n navigation: 0,\r\n feedback: 0,\r\n overlay: 0,\r\n dataDisplay: 0,\r\n layout: 0,\r\n form: 0,\r\n utility: 0,\r\n };\r\n\r\n for (const [category, count] of categoryCounts.entries()) {\r\n byCategory[category] = count;\r\n }\r\n\r\n return {\r\n total: presetRegistry.size,\r\n byCategory,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// FACTORY FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Create a new preset registry instance.\r\n * Useful for isolated testing or custom preset collections.\r\n *\r\n * @param initialPresets - Optional initial presets\r\n * @returns New preset registry instance\r\n * @since 2.1.0\r\n */\r\nexport function createPresetRegistry(\r\n initialPresets?: ReadonlyArray<PresetDefinition>\r\n): IPresetRegistry {\r\n return new PresetRegistryImpl(initialPresets);\r\n}\r\n\r\n// =============================================================================\r\n// EXPORTS\r\n// =============================================================================\r\n\r\nexport { PresetRegistryImpl };\r\nexport type { IPresetRegistry };\r\n","/**\r\n * Button Intents - Semantic Intent Definitions for Buttons\r\n *\r\n * Defines the mapping from semantic intents to Factor24 configurations\r\n * specifically optimized for button components.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/intents/button-intents\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n IntentDefinition,\r\n SemanticIntent,\r\n SemanticMood,\r\n Factor24Config,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// ACTION INTENTS - Primary actions\r\n// =============================================================================\r\n\r\n/**\r\n * CTA Intent - Call to Action\r\n *\r\n * Highest priority action for conversion.\r\n * Maximum visual prominence and engagement.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CTA: IntentDefinition = {\r\n id: 'cta',\r\n name: 'Call to Action',\r\n description: 'Primary conversion action with maximum visual prominence',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'lg',\r\n elevation: 'md',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'subtle',\r\n shape: 'md',\r\n transition: 'default',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n shape: 'pill',\r\n transition: 'spring',\r\n },\r\n luxurious: {\r\n variant: 'gradient',\r\n elevation: 'lg',\r\n transition: 'slow',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n shape: 'sm',\r\n animation: 'subtle',\r\n },\r\n bold: {\r\n elevation: 'lg',\r\n shape: 'pill',\r\n animation: 'smooth',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Primary Intent\r\n *\r\n * Main action in a context.\r\n * Strong visual presence.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_PRIMARY: IntentDefinition = {\r\n id: 'primary',\r\n name: 'Primary',\r\n description: 'Main action with strong visual presence',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n animation: 'subtle',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n animation: 'standard',\r\n },\r\n playful: {\r\n shape: 'pill',\r\n animation: 'bounce',\r\n },\r\n serious: {\r\n animation: 'none',\r\n elevation: 'none',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n shape: 'sm',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Secondary Intent\r\n *\r\n * Alternative action, less prominent.\r\n * Outlined or subtle styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_SECONDARY: IntentDefinition = {\r\n id: 'secondary',\r\n name: 'Secondary',\r\n description: 'Alternative action with reduced visual weight',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'outlined',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'subtle',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n border: 'subtle',\r\n animation: 'subtle',\r\n },\r\n playful: {\r\n shape: 'pill',\r\n animation: 'standard',\r\n },\r\n minimal: {\r\n variant: 'ghost',\r\n border: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Tertiary Intent\r\n *\r\n * Low-emphasis action.\r\n * Ghost or link styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TERTIARY: IntentDefinition = {\r\n id: 'tertiary',\r\n name: 'Tertiary',\r\n description: 'Low-emphasis action for secondary flows',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n border: 'none',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Destructive Intent\r\n *\r\n * Dangerous or irreversible action.\r\n * Warning/danger color scheme.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_DESTRUCTIVE: IntentDefinition = {\r\n id: 'destructive',\r\n name: 'Destructive',\r\n description: 'Dangerous or irreversible action requiring confirmation',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n variant: 'outlined',\r\n animation: 'subtle',\r\n },\r\n serious: {\r\n animation: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Confirm Intent\r\n *\r\n * Confirmation action (OK, Yes, Accept).\r\n * Success-oriented styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CONFIRM: IntentDefinition = {\r\n id: 'confirm',\r\n name: 'Confirm',\r\n description: 'Confirmation action for dialogs and forms',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Cancel Intent\r\n *\r\n * Dismissal action (Cancel, Close, No).\r\n * Subtle styling to reduce accidental clicks.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CANCEL: IntentDefinition = {\r\n id: 'cancel',\r\n name: 'Cancel',\r\n description: 'Dismissal action for dialogs and forms',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// NAVIGATION INTENTS\r\n// =============================================================================\r\n\r\n/**\r\n * Navigation Intent\r\n *\r\n * Standard navigation action.\r\n * Clean, unobtrusive styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_NAV: IntentDefinition = {\r\n id: 'nav',\r\n name: 'Navigation',\r\n description: 'Standard navigation action',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Navigation Active Intent\r\n *\r\n * Active/selected navigation state.\r\n * Visual indication of current location.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_NAV_ACTIVE: IntentDefinition = {\r\n id: 'navActive',\r\n name: 'Navigation Active',\r\n description: 'Active navigation state indicating current location',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'soft',\r\n colorScheme: 'primary',\r\n shape: 'sm',\r\n state: 'active',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'label',\r\n cursor: 'default',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Navigation Subtle Intent\r\n *\r\n * Subtle navigation for secondary menus.\r\n * Minimal visual presence.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_NAV_SUBTLE: IntentDefinition = {\r\n id: 'navSubtle',\r\n name: 'Navigation Subtle',\r\n description: 'Subtle navigation for secondary menus',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'sm',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n opacity: 'dim',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Link Intent\r\n *\r\n * Link-styled navigation.\r\n * Text-like appearance with button semantics.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_LINK: IntentDefinition = {\r\n id: 'link',\r\n name: 'Link',\r\n description: 'Link-styled navigation with button semantics',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'link',\r\n colorScheme: 'primary',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'body',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// FEEDBACK INTENTS\r\n// =============================================================================\r\n\r\n/**\r\n * Success Intent\r\n *\r\n * Success state indication.\r\n * Positive feedback styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_SUCCESS: IntentDefinition = {\r\n id: 'success',\r\n name: 'Success',\r\n description: 'Success state with positive feedback',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'default',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Warning Intent\r\n *\r\n * Warning state indication.\r\n * Caution feedback styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_WARNING: IntentDefinition = {\r\n id: 'warning',\r\n name: 'Warning',\r\n description: 'Warning state requiring attention',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'warning',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Error Intent\r\n *\r\n * Error state indication.\r\n * Negative feedback styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_ERROR: IntentDefinition = {\r\n id: 'error',\r\n name: 'Error',\r\n description: 'Error state indicating problems',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Info Intent\r\n *\r\n * Informational state.\r\n * Neutral feedback styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INFO: IntentDefinition = {\r\n id: 'info',\r\n name: 'Info',\r\n description: 'Informational state for notices',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'info',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// SPECIAL INTENTS\r\n// =============================================================================\r\n\r\n/**\r\n * Ghost Intent\r\n *\r\n * Minimal visual presence.\r\n * Only visible on interaction.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_GHOST: IntentDefinition = {\r\n id: 'ghost',\r\n name: 'Ghost',\r\n description: 'Minimal visual presence, only visible on interaction',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'ghost',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n opacity: 'dim',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Subtle Intent\r\n *\r\n * Understated styling.\r\n * Low visual weight.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_SUBTLE: IntentDefinition = {\r\n id: 'subtle',\r\n name: 'Subtle',\r\n description: 'Understated styling with low visual weight',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'soft',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Hero Intent\r\n *\r\n * Hero/featured styling.\r\n * Maximum visual impact.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_HERO: IntentDefinition = {\r\n id: 'hero',\r\n name: 'Hero',\r\n description: 'Hero/featured styling with maximum visual impact',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'xl',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'xl',\r\n elevation: 'lg',\r\n animation: 'bounce',\r\n density: 'comfortable',\r\n spacing: 'xl',\r\n typography: 'heading',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n shape: 'pill',\r\n },\r\n luxurious: {\r\n variant: 'gradient',\r\n transition: 'slow',\r\n },\r\n bold: {\r\n elevation: 'xl',\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Premium Intent\r\n *\r\n * Premium/luxury styling.\r\n * Elegant and refined.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_PREMIUM: IntentDefinition = {\r\n id: 'premium',\r\n name: 'Premium',\r\n description: 'Premium/luxury styling with elegant refinement',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'lg',\r\n variant: 'gradient',\r\n colorScheme: 'primary',\r\n shape: 'lg',\r\n elevation: 'md',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n cursor: 'pointer',\r\n transition: 'slow',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Brand Intent\r\n *\r\n * Brand emphasis styling.\r\n * Uses brand colors prominently.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_BRAND: IntentDefinition = {\r\n id: 'brand',\r\n name: 'Brand',\r\n description: 'Brand emphasis with prominent brand colors',\r\n componentTypes: ['button'],\r\n config: {\r\n size: 'md',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'label',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// INTENT COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All button intents as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_INTENTS: ReadonlyArray<IntentDefinition> = [\r\n // Action\r\n INTENT_CTA,\r\n INTENT_PRIMARY,\r\n INTENT_SECONDARY,\r\n INTENT_TERTIARY,\r\n INTENT_DESTRUCTIVE,\r\n INTENT_CONFIRM,\r\n INTENT_CANCEL,\r\n // Navigation\r\n INTENT_NAV,\r\n INTENT_NAV_ACTIVE,\r\n INTENT_NAV_SUBTLE,\r\n INTENT_LINK,\r\n // Feedback\r\n INTENT_SUCCESS,\r\n INTENT_WARNING,\r\n INTENT_ERROR,\r\n INTENT_INFO,\r\n // Special\r\n INTENT_GHOST,\r\n INTENT_SUBTLE,\r\n INTENT_HERO,\r\n INTENT_PREMIUM,\r\n INTENT_BRAND,\r\n] as const;\r\n\r\n/**\r\n * Button intents as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_INTENTS_MAP: ReadonlyMap<SemanticIntent, IntentDefinition> = new Map(\r\n BUTTON_INTENTS.map((intent) => [intent.id, intent])\r\n);\r\n\r\n/**\r\n * Get a button intent by ID.\r\n *\r\n * @param id - The intent ID\r\n * @returns The intent definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getButtonIntent(id: SemanticIntent): IntentDefinition | undefined {\r\n return BUTTON_INTENTS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Check if an intent ID is a valid button intent.\r\n *\r\n * @param id - The intent ID to check\r\n * @returns True if the ID is a valid button intent\r\n * @since 2.1.0\r\n */\r\nexport function isButtonIntent(id: string): id is SemanticIntent {\r\n return BUTTON_INTENTS_MAP.has(id as SemanticIntent);\r\n}\r\n\r\n/**\r\n * Apply a mood modifier to an intent.\r\n *\r\n * @param intent - The intent definition\r\n * @param mood - The mood to apply\r\n * @returns Modified Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function applyMoodToIntent(\r\n intent: IntentDefinition,\r\n mood: SemanticMood\r\n): Partial<Factor24Config> {\r\n const baseConfig = { ...intent.config };\r\n const moodModifier = intent.moodModifiers?.[mood];\r\n\r\n if (moodModifier !== undefined) {\r\n return { ...baseConfig, ...moodModifier };\r\n }\r\n\r\n return baseConfig;\r\n}\r\n","/**\r\n * Card Intents - Semantic Intent Definitions for Cards\r\n *\r\n * Defines the mapping from semantic intents to Factor24 configurations\r\n * specifically optimized for card components.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/intents/card-intents\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n IntentDefinition,\r\n SemanticMood,\r\n Factor24Config,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// CONTENT INTENTS - Information display\r\n// =============================================================================\r\n\r\n/**\r\n * Content Intent - General content card\r\n *\r\n * Standard content presentation.\r\n * Clean, readable appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_CONTENT: IntentDefinition = {\r\n id: 'cardContent',\r\n name: 'Content Card',\r\n description: 'General content presentation with clean appearance',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n elevation: 'sm',\r\n spacing: 'md',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n elevation: 'md',\r\n },\r\n playful: {\r\n shape: 'xl',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n },\r\n luxurious: {\r\n elevation: 'lg',\r\n spacing: 'lg',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n shape: 'sm',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Featured Intent - Highlighted content\r\n *\r\n * Featured/highlighted content presentation.\r\n * More visual prominence than standard content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_FEATURED: IntentDefinition = {\r\n id: 'cardFeatured',\r\n name: 'Featured Card',\r\n description: 'Highlighted content with increased visual prominence',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'lg',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'lg',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n animation: 'none',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n shape: 'xl',\r\n },\r\n luxurious: {\r\n elevation: 'xl',\r\n animation: 'smooth',\r\n },\r\n bold: {\r\n elevation: 'xl',\r\n colorScheme: 'primary',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Article Intent - Long-form content\r\n *\r\n * Article/blog post card.\r\n * Optimized for reading flow.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_ARTICLE: IntentDefinition = {\r\n id: 'cardArticle',\r\n name: 'Article Card',\r\n description: 'Long-form content optimized for reading',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n spacing: 'md',\r\n shape: 'sm',\r\n },\r\n luxurious: {\r\n spacing: 'xl',\r\n elevation: 'md',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// INTERACTIVE INTENTS - User interaction\r\n// =============================================================================\r\n\r\n/**\r\n * Interactive Intent - Clickable card\r\n *\r\n * Interactive card with hover/focus states.\r\n * Clear affordance for interaction.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_INTERACTIVE: IntentDefinition = {\r\n id: 'cardInteractive',\r\n name: 'Interactive Card',\r\n description: 'Clickable card with clear interaction affordance',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n overflow: 'hidden',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'subtle',\r\n transition: 'default',\r\n },\r\n friendly: {\r\n animation: 'standard',\r\n shape: 'lg',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n transition: 'spring',\r\n },\r\n serious: {\r\n animation: 'none',\r\n shape: 'sm',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Selectable Intent - Selection card\r\n *\r\n * Card that can be selected/checked.\r\n * Visual feedback for selected state.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_SELECTABLE: IntentDefinition = {\r\n id: 'cardSelectable',\r\n name: 'Selectable Card',\r\n description: 'Card with selection capability and state feedback',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n overflow: 'hidden',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n border: 'solid',\r\n },\r\n playful: {\r\n shape: 'lg',\r\n animation: 'bounce',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n animation: 'subtle',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Draggable Intent - Drag-and-drop card\r\n *\r\n * Card that can be dragged and reordered.\r\n * Grab cursor and drag feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_DRAGGABLE: IntentDefinition = {\r\n id: 'cardDraggable',\r\n name: 'Draggable Card',\r\n description: 'Card with drag-and-drop capability',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'md',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'grab',\r\n transition: 'spring',\r\n overflow: 'hidden',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n shape: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// COMMERCIAL INTENTS - E-commerce\r\n// =============================================================================\r\n\r\n/**\r\n * Product Intent - Product card\r\n *\r\n * E-commerce product presentation.\r\n * Image-focused with price/action area.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_PRODUCT: IntentDefinition = {\r\n id: 'cardProduct',\r\n name: 'Product Card',\r\n description: 'E-commerce product presentation with action focus',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'standard',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n overflow: 'hidden',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n animation: 'subtle',\r\n },\r\n luxurious: {\r\n elevation: 'lg',\r\n spacing: 'lg',\r\n animation: 'smooth',\r\n },\r\n playful: {\r\n shape: 'xl',\r\n animation: 'bounce',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Pricing Intent - Pricing card\r\n *\r\n * Pricing plan presentation.\r\n * Clear tier comparison layout.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_PRICING: IntentDefinition = {\r\n id: 'cardPricing',\r\n name: 'Pricing Card',\r\n description: 'Pricing plan with clear comparison layout',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'visible',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n border: 'solid',\r\n },\r\n luxurious: {\r\n elevation: 'lg',\r\n shape: 'lg',\r\n spacing: 'xl',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n border: 'solid',\r\n },\r\n bold: {\r\n elevation: 'lg',\r\n colorScheme: 'primary',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// SOCIAL INTENTS - User content\r\n// =============================================================================\r\n\r\n/**\r\n * Profile Intent - User profile card\r\n *\r\n * User profile/avatar presentation.\r\n * Focused on identity display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_PROFILE: IntentDefinition = {\r\n id: 'cardProfile',\r\n name: 'Profile Card',\r\n description: 'User profile with identity focus',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n spacing: 'md',\r\n },\r\n friendly: {\r\n shape: 'xl',\r\n animation: 'standard',\r\n },\r\n playful: {\r\n shape: 'pill',\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Testimonial Intent - Testimonial card\r\n *\r\n * Customer testimonial/review.\r\n * Quote-focused layout.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_TESTIMONIAL: IntentDefinition = {\r\n id: 'cardTestimonial',\r\n name: 'Testimonial Card',\r\n description: 'Customer testimonial with quote focus',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'lg',\r\n elevation: 'md',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n elevation: 'sm',\r\n },\r\n luxurious: {\r\n elevation: 'lg',\r\n spacing: 'xl',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// DATA INTENTS - Data presentation\r\n// =============================================================================\r\n\r\n/**\r\n * Stats Intent - Statistics card\r\n *\r\n * Numeric stats/KPI presentation.\r\n * Large numbers with context.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_STATS: IntentDefinition = {\r\n id: 'cardStats',\r\n name: 'Stats Card',\r\n description: 'Numeric statistics with emphasis on values',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'heading',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n border: 'solid',\r\n },\r\n playful: {\r\n shape: 'lg',\r\n animation: 'bounce',\r\n },\r\n bold: {\r\n colorScheme: 'primary',\r\n elevation: 'md',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Notification Intent - Notification card\r\n *\r\n * Notification/alert card.\r\n * Attention-grabbing with action.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_NOTIFICATION: IntentDefinition = {\r\n id: 'cardNotification',\r\n name: 'Notification Card',\r\n description: 'Notification display with action capability',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'md',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n overflow: 'hidden',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n shape: 'sm',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n animation: 'bounce',\r\n },\r\n serious: {\r\n animation: 'none',\r\n elevation: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// VISUAL INTENTS - Special visual styles\r\n// =============================================================================\r\n\r\n/**\r\n * Glass Intent - Glassmorphic card\r\n *\r\n * Frosted glass effect card.\r\n * Modern, translucent appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_GLASS: IntentDefinition = {\r\n id: 'cardGlass',\r\n name: 'Glass Card',\r\n description: 'Glassmorphic style with frosted effect',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'glass',\r\n shape: 'lg',\r\n elevation: 'md',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'subtle',\r\n opacity: 'high',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n luxurious: {\r\n elevation: 'lg',\r\n spacing: 'xl',\r\n },\r\n minimal: {\r\n border: 'none',\r\n opacity: 'medium',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Neumorphic Intent - Neumorphic card\r\n *\r\n * Soft UI style with inset shadows.\r\n * Modern, tactile appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CARD_NEUMORPHIC: IntentDefinition = {\r\n id: 'cardNeumorphic',\r\n name: 'Neumorphic Card',\r\n description: 'Soft UI style with tactile appearance',\r\n componentTypes: ['card'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'xl',\r\n elevation: 'neumorphic',\r\n animation: 'smooth',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n overflow: 'hidden',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n shape: 'pill',\r\n animation: 'bounce',\r\n },\r\n minimal: {\r\n spacing: 'md',\r\n shape: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// INTENT COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All card intents as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_INTENTS: ReadonlyArray<IntentDefinition> = [\r\n // Content\r\n INTENT_CARD_CONTENT,\r\n INTENT_CARD_FEATURED,\r\n INTENT_CARD_ARTICLE,\r\n // Interactive\r\n INTENT_CARD_INTERACTIVE,\r\n INTENT_CARD_SELECTABLE,\r\n INTENT_CARD_DRAGGABLE,\r\n // Commercial\r\n INTENT_CARD_PRODUCT,\r\n INTENT_CARD_PRICING,\r\n // Social\r\n INTENT_CARD_PROFILE,\r\n INTENT_CARD_TESTIMONIAL,\r\n // Data\r\n INTENT_CARD_STATS,\r\n INTENT_CARD_NOTIFICATION,\r\n // Visual\r\n INTENT_CARD_GLASS,\r\n INTENT_CARD_NEUMORPHIC,\r\n] as const;\r\n\r\n/**\r\n * Card intents as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_INTENTS_MAP: ReadonlyMap<string, IntentDefinition> = new Map(\r\n CARD_INTENTS.map((intent) => [intent.id, intent])\r\n);\r\n\r\n/**\r\n * Get a card intent by ID.\r\n *\r\n * @param id - The intent ID\r\n * @returns The intent definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getCardIntent(id: string): IntentDefinition | undefined {\r\n return CARD_INTENTS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Check if an intent ID is a valid card intent.\r\n *\r\n * @param id - The intent ID to check\r\n * @returns True if the ID is a valid card intent\r\n * @since 2.1.0\r\n */\r\nexport function isCardIntent(id: string): boolean {\r\n return CARD_INTENTS_MAP.has(id);\r\n}\r\n\r\n/**\r\n * Apply mood modifier to card intent.\r\n *\r\n * @param intentId - The intent ID\r\n * @param mood - The mood to apply\r\n * @returns Modified Factor24Config or undefined\r\n * @since 2.1.0\r\n */\r\nexport function applyMoodToCardIntent(\r\n intentId: string,\r\n mood: SemanticMood\r\n): Partial<Factor24Config> | undefined {\r\n const intent = getCardIntent(intentId);\r\n if (intent === undefined) return undefined;\r\n\r\n const moodModifier = intent.moodModifiers?.[mood];\r\n if (moodModifier === undefined) {\r\n return intent.config;\r\n }\r\n\r\n return {\r\n ...intent.config,\r\n ...moodModifier,\r\n };\r\n}\r\n","/**\r\n * Feedback Intents - Semantic Intent Definitions for Feedback Components\r\n *\r\n * Defines the mapping from semantic intents to Factor24 configurations\r\n * specifically optimized for feedback and notification components.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/intents/feedback-intents\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n IntentDefinition,\r\n SemanticMood,\r\n Factor24Config,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// ALERT INTENTS - Static notifications\r\n// =============================================================================\r\n\r\n/**\r\n * Alert Info Intent - Informational alert\r\n *\r\n * Neutral informational message.\r\n * Non-critical notification.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_ALERT_INFO: IntentDefinition = {\r\n id: 'alertInfo',\r\n name: 'Info Alert',\r\n description: 'Informational message with neutral tone',\r\n componentTypes: ['alert', 'notification', 'message'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'info',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n iconPosition: 'start',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n animation: 'none',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n },\r\n minimal: {\r\n border: 'none',\r\n elevation: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Alert Success Intent - Success alert\r\n *\r\n * Positive confirmation message.\r\n * Action completed successfully.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_ALERT_SUCCESS: IntentDefinition = {\r\n id: 'alertSuccess',\r\n name: 'Success Alert',\r\n description: 'Positive confirmation of successful action',\r\n componentTypes: ['alert', 'notification', 'message'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n iconPosition: 'start',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n animation: 'none',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n shape: 'lg',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Alert Warning Intent - Warning alert\r\n *\r\n * Caution message for attention.\r\n * Non-blocking but important.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_ALERT_WARNING: IntentDefinition = {\r\n id: 'alertWarning',\r\n name: 'Warning Alert',\r\n description: 'Caution message requiring attention',\r\n componentTypes: ['alert', 'notification', 'message'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'warning',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n iconPosition: 'start',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n shape: 'sm',\r\n },\r\n serious: {\r\n elevation: 'md',\r\n animation: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Alert Error Intent - Error alert\r\n *\r\n * Critical error message.\r\n * Requires user attention/action.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_ALERT_ERROR: IntentDefinition = {\r\n id: 'alertError',\r\n name: 'Error Alert',\r\n description: 'Critical error requiring immediate attention',\r\n componentTypes: ['alert', 'notification', 'message'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n iconPosition: 'start',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n shape: 'sm',\r\n },\r\n serious: {\r\n elevation: 'md',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// TOAST INTENTS - Temporary notifications\r\n// =============================================================================\r\n\r\n/**\r\n * Toast Default Intent - Default toast\r\n *\r\n * Temporary notification message.\r\n * Auto-dismissing feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TOAST_DEFAULT: IntentDefinition = {\r\n id: 'toastDefault',\r\n name: 'Default Toast',\r\n description: 'Temporary notification with auto-dismiss',\r\n componentTypes: ['toast', 'snackbar'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'toast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n animation: 'subtle',\r\n },\r\n playful: {\r\n shape: 'lg',\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Toast Success Intent - Success toast\r\n *\r\n * Quick success confirmation.\r\n * Positive feedback toast.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TOAST_SUCCESS: IntentDefinition = {\r\n id: 'toastSuccess',\r\n name: 'Success Toast',\r\n description: 'Quick success confirmation toast',\r\n componentTypes: ['toast', 'snackbar'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n iconPosition: 'start',\r\n zIndex: 'toast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Toast Error Intent - Error toast\r\n *\r\n * Quick error notification.\r\n * Dismissable error feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TOAST_ERROR: IntentDefinition = {\r\n id: 'toastError',\r\n name: 'Error Toast',\r\n description: 'Quick error notification toast',\r\n componentTypes: ['toast', 'snackbar'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n iconPosition: 'start',\r\n zIndex: 'toast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n serious: {\r\n animation: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Toast Action Intent - Action toast\r\n *\r\n * Toast with action button.\r\n * Undo or other action support.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TOAST_ACTION: IntentDefinition = {\r\n id: 'toastAction',\r\n name: 'Action Toast',\r\n description: 'Toast with actionable button',\r\n componentTypes: ['toast', 'snackbar'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'compact',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n zIndex: 'toast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// PROGRESS INTENTS - Loading states\r\n// =============================================================================\r\n\r\n/**\r\n * Progress Linear Intent - Linear progress\r\n *\r\n * Horizontal progress bar.\r\n * Determinate or indeterminate.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_PROGRESS_LINEAR: IntentDefinition = {\r\n id: 'progressLinear',\r\n name: 'Linear Progress',\r\n description: 'Horizontal progress bar indicator',\r\n componentTypes: ['progress', 'progressbar'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Progress Circular Intent - Circular progress\r\n *\r\n * Circular progress indicator.\r\n * Spinner or percentage display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_PROGRESS_CIRCULAR: IntentDefinition = {\r\n id: 'progressCircular',\r\n name: 'Circular Progress',\r\n description: 'Circular progress/spinner indicator',\r\n componentTypes: ['progress', 'spinner'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'spin',\r\n density: 'default',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n minimal: {\r\n size: 'sm',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Skeleton Intent - Loading placeholder\r\n *\r\n * Content placeholder during load.\r\n * Shimmer effect animation.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_SKELETON: IntentDefinition = {\r\n id: 'skeleton',\r\n name: 'Skeleton Loader',\r\n description: 'Content placeholder with shimmer effect',\r\n componentTypes: ['skeleton', 'placeholder'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'medium',\r\n cursor: 'default',\r\n transition: 'none',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n playful: {\r\n shape: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// BADGE INTENTS - Status indicators\r\n// =============================================================================\r\n\r\n/**\r\n * Badge Default Intent - Default badge\r\n *\r\n * General status indicator.\r\n * Compact label display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_BADGE_DEFAULT: IntentDefinition = {\r\n id: 'badgeDefault',\r\n name: 'Default Badge',\r\n description: 'General status indicator badge',\r\n componentTypes: ['badge', 'tag', 'chip'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Badge Status Intent - Status badge\r\n *\r\n * Online/offline/busy indicator.\r\n * Colored dot badge.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_BADGE_STATUS: IntentDefinition = {\r\n id: 'badgeStatus',\r\n name: 'Status Badge',\r\n description: 'Status indicator dot badge',\r\n componentTypes: ['badge', 'status'],\r\n config: {\r\n size: 'xs',\r\n colorScheme: 'success',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'pulse',\r\n density: 'compact',\r\n spacing: 'none',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Badge Count Intent - Notification count\r\n *\r\n * Numeric count badge.\r\n * Notification/message counter.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_BADGE_COUNT: IntentDefinition = {\r\n id: 'badgeCount',\r\n name: 'Count Badge',\r\n description: 'Numeric counter badge for notifications',\r\n componentTypes: ['badge', 'counter'],\r\n config: {\r\n size: 'xs',\r\n colorScheme: 'error',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n animation: 'bounce',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'spring',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'subtle',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n elevation: 'md',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// CHIP INTENTS - Interactive labels\r\n// =============================================================================\r\n\r\n/**\r\n * Chip Default Intent - Default chip\r\n *\r\n * Compact interactive label.\r\n * Tag or filter display.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CHIP_DEFAULT: IntentDefinition = {\r\n id: 'chipDefault',\r\n name: 'Default Chip',\r\n description: 'Compact interactive label or tag',\r\n componentTypes: ['chip', 'tag'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Chip Selectable Intent - Selectable chip\r\n *\r\n * Toggleable selection chip.\r\n * Filter or multi-select.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CHIP_SELECTABLE: IntentDefinition = {\r\n id: 'chipSelectable',\r\n name: 'Selectable Chip',\r\n description: 'Toggleable selection chip for filters',\r\n componentTypes: ['chip', 'tag', 'filter'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Chip Deletable Intent - Deletable chip\r\n *\r\n * Chip with remove button.\r\n * Tag removal support.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_CHIP_DELETABLE: IntentDefinition = {\r\n id: 'chipDeletable',\r\n name: 'Deletable Chip',\r\n description: 'Chip with remove action support',\r\n componentTypes: ['chip', 'tag'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'sm',\r\n typography: 'caption',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n iconPosition: 'end',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// TOOLTIP INTENTS - Contextual help\r\n// =============================================================================\r\n\r\n/**\r\n * Tooltip Default Intent - Default tooltip\r\n *\r\n * Basic contextual information.\r\n * Hover/focus triggered.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TOOLTIP_DEFAULT: IntentDefinition = {\r\n id: 'tooltipDefault',\r\n name: 'Default Tooltip',\r\n description: 'Basic contextual information tooltip',\r\n componentTypes: ['tooltip'],\r\n config: {\r\n size: 'sm',\r\n colorScheme: 'inverse',\r\n shape: 'sm',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'compact',\r\n spacing: 'xs',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'high',\r\n cursor: 'default',\r\n transition: 'fast',\r\n zIndex: 'tooltip',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Tooltip Rich Intent - Rich tooltip\r\n *\r\n * Detailed information tooltip.\r\n * May include formatting/links.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_TOOLTIP_RICH: IntentDefinition = {\r\n id: 'tooltipRich',\r\n name: 'Rich Tooltip',\r\n description: 'Detailed information with rich content',\r\n componentTypes: ['tooltip', 'popover'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'surface',\r\n shape: 'md',\r\n elevation: 'lg',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'default',\r\n transition: 'default',\r\n zIndex: 'tooltip',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// INTENT COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All feedback intents as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FEEDBACK_INTENTS: ReadonlyArray<IntentDefinition> = [\r\n // Alert\r\n INTENT_ALERT_INFO,\r\n INTENT_ALERT_SUCCESS,\r\n INTENT_ALERT_WARNING,\r\n INTENT_ALERT_ERROR,\r\n // Toast\r\n INTENT_TOAST_DEFAULT,\r\n INTENT_TOAST_SUCCESS,\r\n INTENT_TOAST_ERROR,\r\n INTENT_TOAST_ACTION,\r\n // Progress\r\n INTENT_PROGRESS_LINEAR,\r\n INTENT_PROGRESS_CIRCULAR,\r\n INTENT_SKELETON,\r\n // Badge\r\n INTENT_BADGE_DEFAULT,\r\n INTENT_BADGE_STATUS,\r\n INTENT_BADGE_COUNT,\r\n // Chip\r\n INTENT_CHIP_DEFAULT,\r\n INTENT_CHIP_SELECTABLE,\r\n INTENT_CHIP_DELETABLE,\r\n // Tooltip\r\n INTENT_TOOLTIP_DEFAULT,\r\n INTENT_TOOLTIP_RICH,\r\n] as const;\r\n\r\n/**\r\n * Feedback intents as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const FEEDBACK_INTENTS_MAP: ReadonlyMap<string, IntentDefinition> = new Map(\r\n FEEDBACK_INTENTS.map((intent) => [intent.id, intent])\r\n);\r\n\r\n/**\r\n * Get a feedback intent by ID.\r\n *\r\n * @param id - The intent ID\r\n * @returns The intent definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getFeedbackIntent(id: string): IntentDefinition | undefined {\r\n return FEEDBACK_INTENTS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Check if an intent ID is a valid feedback intent.\r\n *\r\n * @param id - The intent ID to check\r\n * @returns True if the ID is a valid feedback intent\r\n * @since 2.1.0\r\n */\r\nexport function isFeedbackIntent(id: string): boolean {\r\n return FEEDBACK_INTENTS_MAP.has(id);\r\n}\r\n\r\n/**\r\n * Apply mood modifier to feedback intent.\r\n *\r\n * @param intentId - The intent ID\r\n * @param mood - The mood to apply\r\n * @returns Modified Factor24Config or undefined\r\n * @since 2.1.0\r\n */\r\nexport function applyMoodToFeedbackIntent(\r\n intentId: string,\r\n mood: SemanticMood\r\n): Partial<Factor24Config> | undefined {\r\n const intent = getFeedbackIntent(intentId);\r\n if (intent === undefined) return undefined;\r\n\r\n const moodModifier = intent.moodModifiers?.[mood];\r\n if (moodModifier === undefined) {\r\n return intent.config;\r\n }\r\n\r\n return {\r\n ...intent.config,\r\n ...moodModifier,\r\n };\r\n}\r\n","/**\r\n * Input Intents - Semantic Intent Definitions for Inputs\r\n *\r\n * Defines the mapping from semantic intents to Factor24 configurations\r\n * specifically optimized for input and form components.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/intents/input-intents\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n IntentDefinition,\r\n SemanticMood,\r\n Factor24Config,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// TEXT INPUT INTENTS - Text entry\r\n// =============================================================================\r\n\r\n/**\r\n * Text Intent - Standard text input\r\n *\r\n * General text entry field.\r\n * Clean, accessible appearance.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_TEXT: IntentDefinition = {\r\n id: 'inputText',\r\n name: 'Text Input',\r\n description: 'Standard text entry with clean appearance',\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n border: 'solid',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n },\r\n playful: {\r\n shape: 'pill',\r\n transition: 'spring',\r\n },\r\n minimal: {\r\n border: 'none',\r\n elevation: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Email Intent - Email input\r\n *\r\n * Email-specific text entry.\r\n * Validation-ready styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_EMAIL: IntentDefinition = {\r\n id: 'inputEmail',\r\n name: 'Email Input',\r\n description: 'Email entry with validation support',\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Password Intent - Password input\r\n *\r\n * Secure password entry.\r\n * Enhanced security indicators.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_PASSWORD: IntentDefinition = {\r\n id: 'inputPassword',\r\n name: 'Password Input',\r\n description: 'Secure password entry with strength indicators',\r\n componentTypes: ['input', 'textfield'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'mono',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n serious: {\r\n shape: 'sm',\r\n border: 'solid',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Search Intent - Search input\r\n *\r\n * Search field with action icon.\r\n * Quick access and feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_SEARCH: IntentDefinition = {\r\n id: 'inputSearch',\r\n name: 'Search Input',\r\n description: 'Search field with quick access features',\r\n componentTypes: ['input', 'searchfield'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n iconPosition: 'left',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'md',\r\n elevation: 'none',\r\n border: 'solid',\r\n },\r\n playful: {\r\n elevation: 'md',\r\n animation: 'bounce',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n shape: 'sm',\r\n border: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Code Intent - Code input\r\n *\r\n * Code/monospace entry.\r\n * Syntax-friendly styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_CODE: IntentDefinition = {\r\n id: 'inputCode',\r\n name: 'Code Input',\r\n description: 'Code entry with monospace styling',\r\n componentTypes: ['input', 'textfield', 'textarea'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'mono',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n serious: {\r\n colorScheme: 'neutral',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// NUMERIC INTENTS - Number entry\r\n// =============================================================================\r\n\r\n/**\r\n * Number Intent - Numeric input\r\n *\r\n * Numeric value entry.\r\n * Spinner/stepper support.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_NUMBER: IntentDefinition = {\r\n id: 'inputNumber',\r\n name: 'Number Input',\r\n description: 'Numeric entry with spinner support',\r\n componentTypes: ['input', 'numberfield'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n minimal: {\r\n size: 'sm',\r\n density: 'compact',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Currency Intent - Currency input\r\n *\r\n * Monetary value entry.\r\n * Format and symbol support.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_CURRENCY: IntentDefinition = {\r\n id: 'inputCurrency',\r\n name: 'Currency Input',\r\n description: 'Monetary entry with formatting support',\r\n componentTypes: ['input', 'numberfield'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n iconPosition: 'left',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n luxurious: {\r\n elevation: 'sm',\r\n typography: 'heading',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// SELECTION INTENTS - Choice selection\r\n// =============================================================================\r\n\r\n/**\r\n * Select Intent - Dropdown select\r\n *\r\n * Single selection dropdown.\r\n * Clear selection feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_SELECT: IntentDefinition = {\r\n id: 'inputSelect',\r\n name: 'Select Input',\r\n description: 'Dropdown selection with clear feedback',\r\n componentTypes: ['select', 'dropdown'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n iconPosition: 'right',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n },\r\n playful: {\r\n shape: 'pill',\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Multiselect Intent - Multiple selection\r\n *\r\n * Multiple choice selection.\r\n * Chip/tag display for selections.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_MULTISELECT: IntentDefinition = {\r\n id: 'inputMultiselect',\r\n name: 'Multiselect Input',\r\n description: 'Multiple selection with chip display',\r\n componentTypes: ['select', 'multiselect'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n overflow: 'auto',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n playful: {\r\n shape: 'lg',\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Autocomplete Intent - Autocomplete input\r\n *\r\n * Text with suggestions.\r\n * Typeahead functionality.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_AUTOCOMPLETE: IntentDefinition = {\r\n id: 'inputAutocomplete',\r\n name: 'Autocomplete Input',\r\n description: 'Text entry with suggestion support',\r\n componentTypes: ['input', 'autocomplete', 'combobox'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// TOGGLE INTENTS - Binary choices\r\n// =============================================================================\r\n\r\n/**\r\n * Checkbox Intent - Checkbox input\r\n *\r\n * Binary on/off selection.\r\n * Clear checked state.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_CHECKBOX: IntentDefinition = {\r\n id: 'inputCheckbox',\r\n name: 'Checkbox Input',\r\n description: 'Binary selection with clear checked state',\r\n componentTypes: ['checkbox'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'sm',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n shape: 'md',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Switch Intent - Toggle switch\r\n *\r\n * On/off toggle control.\r\n * iOS/Android style.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_SWITCH: IntentDefinition = {\r\n id: 'inputSwitch',\r\n name: 'Switch Input',\r\n description: 'Toggle switch with smooth animation',\r\n componentTypes: ['switch', 'toggle'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'subtle',\r\n transition: 'default',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n minimal: {\r\n elevation: 'none',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Radio Intent - Radio button\r\n *\r\n * Single selection from group.\r\n * Exclusive choice pattern.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_RADIO: IntentDefinition = {\r\n id: 'inputRadio',\r\n name: 'Radio Input',\r\n description: 'Single selection from exclusive group',\r\n componentTypes: ['radio', 'radio-group'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'sm',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// RANGE INTENTS - Value ranges\r\n// =============================================================================\r\n\r\n/**\r\n * Slider Intent - Range slider\r\n *\r\n * Value selection via slider.\r\n * Continuous or stepped values.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_SLIDER: IntentDefinition = {\r\n id: 'inputSlider',\r\n name: 'Slider Input',\r\n description: 'Range selection with continuous values',\r\n componentTypes: ['slider', 'range'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n elevation: 'sm',\r\n animation: 'smooth',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'caption',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'grab',\r\n transition: 'spring',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'subtle',\r\n shape: 'sm',\r\n },\r\n playful: {\r\n animation: 'bounce',\r\n elevation: 'md',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Rating Intent - Star rating\r\n *\r\n * Rating value input.\r\n * Star or icon-based.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_RATING: IntentDefinition = {\r\n id: 'inputRating',\r\n name: 'Rating Input',\r\n description: 'Star-based rating selection',\r\n componentTypes: ['rating', 'stars'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'warning',\r\n shape: 'none',\r\n elevation: 'none',\r\n animation: 'bounce',\r\n density: 'default',\r\n spacing: 'xs',\r\n typography: 'body',\r\n border: 'none',\r\n opacity: 'full',\r\n cursor: 'pointer',\r\n transition: 'spring',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'subtle',\r\n },\r\n playful: {\r\n size: 'lg',\r\n animation: 'bounce',\r\n },\r\n luxurious: {\r\n colorScheme: 'warning',\r\n size: 'lg',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// MULTILINE INTENTS - Long text\r\n// =============================================================================\r\n\r\n/**\r\n * Textarea Intent - Multiline text\r\n *\r\n * Long-form text entry.\r\n * Resizable container.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_TEXTAREA: IntentDefinition = {\r\n id: 'inputTextarea',\r\n name: 'Textarea Input',\r\n description: 'Multiline text entry with resize support',\r\n componentTypes: ['textarea'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n overflow: 'auto',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n },\r\n friendly: {\r\n shape: 'lg',\r\n spacing: 'lg',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Rich Text Intent - WYSIWYG editor\r\n *\r\n * Rich text editing.\r\n * Toolbar and formatting.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_RICHTEXT: IntentDefinition = {\r\n id: 'inputRichtext',\r\n name: 'Rich Text Input',\r\n description: 'WYSIWYG editor with formatting toolbar',\r\n componentTypes: ['editor', 'richtext'],\r\n config: {\r\n size: 'lg',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'sm',\r\n animation: 'none',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'default',\r\n overflow: 'auto',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n shape: 'sm',\r\n elevation: 'none',\r\n },\r\n minimal: {\r\n border: 'none',\r\n elevation: 'none',\r\n },\r\n },\r\n};\r\n\r\n// =============================================================================\r\n// STATE INTENTS - Validation states\r\n// =============================================================================\r\n\r\n/**\r\n * Error Intent - Error state\r\n *\r\n * Invalid input indication.\r\n * Clear error messaging.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_ERROR: IntentDefinition = {\r\n id: 'inputError',\r\n name: 'Error State',\r\n description: 'Invalid input with error indication',\r\n componentTypes: ['input', 'textfield', 'select', 'textarea'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'error',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'enhanced',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n professional: {\r\n animation: 'none',\r\n },\r\n serious: {\r\n animation: 'pulse',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Success Intent - Success state\r\n *\r\n * Valid input indication.\r\n * Confirmation feedback.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_SUCCESS: IntentDefinition = {\r\n id: 'inputSuccess',\r\n name: 'Success State',\r\n description: 'Valid input with success indication',\r\n componentTypes: ['input', 'textfield', 'select', 'textarea'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'success',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'subtle',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'full',\r\n cursor: 'text',\r\n transition: 'fast',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {\r\n playful: {\r\n animation: 'bounce',\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Disabled Intent - Disabled state\r\n *\r\n * Non-interactive input.\r\n * Reduced visual prominence.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INTENT_INPUT_DISABLED: IntentDefinition = {\r\n id: 'inputDisabled',\r\n name: 'Disabled State',\r\n description: 'Non-interactive input with reduced visibility',\r\n componentTypes: ['input', 'textfield', 'select', 'textarea'],\r\n config: {\r\n size: 'md',\r\n colorScheme: 'neutral',\r\n shape: 'md',\r\n elevation: 'none',\r\n animation: 'none',\r\n density: 'default',\r\n spacing: 'md',\r\n typography: 'body',\r\n border: 'solid',\r\n opacity: 'medium',\r\n cursor: 'notAllowed',\r\n transition: 'none',\r\n state: 'disabled',\r\n a11y: 'standard',\r\n } satisfies Partial<Factor24Config>,\r\n moodModifiers: {},\r\n};\r\n\r\n// =============================================================================\r\n// INTENT COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All input intents as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_INTENTS: ReadonlyArray<IntentDefinition> = [\r\n // Text\r\n INTENT_INPUT_TEXT,\r\n INTENT_INPUT_EMAIL,\r\n INTENT_INPUT_PASSWORD,\r\n INTENT_INPUT_SEARCH,\r\n INTENT_INPUT_CODE,\r\n // Numeric\r\n INTENT_INPUT_NUMBER,\r\n INTENT_INPUT_CURRENCY,\r\n // Selection\r\n INTENT_INPUT_SELECT,\r\n INTENT_INPUT_MULTISELECT,\r\n INTENT_INPUT_AUTOCOMPLETE,\r\n // Toggle\r\n INTENT_INPUT_CHECKBOX,\r\n INTENT_INPUT_SWITCH,\r\n INTENT_INPUT_RADIO,\r\n // Range\r\n INTENT_INPUT_SLIDER,\r\n INTENT_INPUT_RATING,\r\n // Multiline\r\n INTENT_INPUT_TEXTAREA,\r\n INTENT_INPUT_RICHTEXT,\r\n // State\r\n INTENT_INPUT_ERROR,\r\n INTENT_INPUT_SUCCESS,\r\n INTENT_INPUT_DISABLED,\r\n] as const;\r\n\r\n/**\r\n * Input intents as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_INTENTS_MAP: ReadonlyMap<string, IntentDefinition> = new Map(\r\n INPUT_INTENTS.map((intent) => [intent.id, intent])\r\n);\r\n\r\n/**\r\n * Get an input intent by ID.\r\n *\r\n * @param id - The intent ID\r\n * @returns The intent definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getInputIntent(id: string): IntentDefinition | undefined {\r\n return INPUT_INTENTS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Check if an intent ID is a valid input intent.\r\n *\r\n * @param id - The intent ID to check\r\n * @returns True if the ID is a valid input intent\r\n * @since 2.1.0\r\n */\r\nexport function isInputIntent(id: string): boolean {\r\n return INPUT_INTENTS_MAP.has(id);\r\n}\r\n\r\n/**\r\n * Apply mood modifier to input intent.\r\n *\r\n * @param intentId - The intent ID\r\n * @param mood - The mood to apply\r\n * @returns Modified Factor24Config or undefined\r\n * @since 2.1.0\r\n */\r\nexport function applyMoodToInputIntent(\r\n intentId: string,\r\n mood: SemanticMood\r\n): Partial<Factor24Config> | undefined {\r\n const intent = getInputIntent(intentId);\r\n if (intent === undefined) return undefined;\r\n\r\n const moodModifier = intent.moodModifiers?.[mood];\r\n if (moodModifier === undefined) {\r\n return intent.config;\r\n }\r\n\r\n return {\r\n ...intent.config,\r\n ...moodModifier,\r\n };\r\n}\r\n","/**\r\n * Mood Modifiers - Emotional Tone Adjustments\r\n *\r\n * Defines how different moods modify the base Factor24 configuration.\r\n * Moods adjust animation, spacing, and visual weight to convey\r\n * different emotional tones.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/intents/mood-modifiers\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n MoodModifierDefinition,\r\n SemanticMood,\r\n Factor24Config,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// MOOD DEFINITIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Professional Mood\r\n *\r\n * Corporate, formal tone.\r\n * Reduced animation, clean lines, subtle transitions.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_PROFESSIONAL: MoodModifierDefinition = {\r\n id: 'professional',\r\n name: 'Professional',\r\n description: 'Corporate, formal tone with reduced animation and clean lines',\r\n adjustments: {\r\n animation: 'subtle',\r\n shape: 'sm',\r\n transition: 'default',\r\n density: 'default',\r\n spacing: 'md',\r\n elevation: 'none',\r\n typography: 'body',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Friendly Mood\r\n *\r\n * Approachable, warm tone.\r\n * Slightly more animation, softer shapes.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_FRIENDLY: MoodModifierDefinition = {\r\n id: 'friendly',\r\n name: 'Friendly',\r\n description: 'Approachable, warm tone with softer shapes and gentle animation',\r\n adjustments: {\r\n animation: 'standard',\r\n shape: 'lg',\r\n transition: 'default',\r\n density: 'comfortable',\r\n spacing: 'md',\r\n elevation: 'sm',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Playful Mood\r\n *\r\n * Fun, animated tone.\r\n * Bouncy animations, rounded shapes, vibrant.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_PLAYFUL: MoodModifierDefinition = {\r\n id: 'playful',\r\n name: 'Playful',\r\n description: 'Fun, animated tone with bouncy animations and rounded shapes',\r\n adjustments: {\r\n animation: 'bounce',\r\n shape: 'pill',\r\n transition: 'spring',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n elevation: 'md',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Serious Mood\r\n *\r\n * Formal, minimal animation.\r\n * Static elements, sharp focus.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_SERIOUS: MoodModifierDefinition = {\r\n id: 'serious',\r\n name: 'Serious',\r\n description: 'Formal tone with minimal animation and sharp focus',\r\n adjustments: {\r\n animation: 'none',\r\n shape: 'sm',\r\n transition: 'fast',\r\n density: 'default',\r\n spacing: 'md',\r\n elevation: 'none',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Luxurious Mood\r\n *\r\n * Premium, elegant tone.\r\n * Slow transitions, subtle depth, refined aesthetics.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_LUXURIOUS: MoodModifierDefinition = {\r\n id: 'luxurious',\r\n name: 'Luxurious',\r\n description: 'Premium, elegant tone with slow transitions and refined aesthetics',\r\n adjustments: {\r\n animation: 'smooth',\r\n shape: 'lg',\r\n transition: 'slow',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n elevation: 'md',\r\n typography: 'heading',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Minimal Mood\r\n *\r\n * Clean, sparse tone.\r\n * Reduced visual elements, focus on content.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_MINIMAL: MoodModifierDefinition = {\r\n id: 'minimal',\r\n name: 'Minimal',\r\n description: 'Clean, sparse tone with reduced visual elements',\r\n adjustments: {\r\n animation: 'subtle',\r\n shape: 'sm',\r\n transition: 'fast',\r\n density: 'compact',\r\n spacing: 'sm',\r\n elevation: 'none',\r\n border: 'none',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n/**\r\n * Bold Mood\r\n *\r\n * Strong, impactful tone.\r\n * Enhanced visual weight, prominent elements.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_BOLD: MoodModifierDefinition = {\r\n id: 'bold',\r\n name: 'Bold',\r\n description: 'Strong, impactful tone with enhanced visual weight',\r\n adjustments: {\r\n animation: 'smooth',\r\n shape: 'md',\r\n transition: 'spring',\r\n density: 'comfortable',\r\n spacing: 'lg',\r\n elevation: 'lg',\r\n typography: 'heading',\r\n } satisfies Partial<Factor24Config>,\r\n};\r\n\r\n// =============================================================================\r\n// MOOD COLLECTION EXPORT\r\n// =============================================================================\r\n\r\n/**\r\n * All mood modifiers as an array.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_MODIFIERS: ReadonlyArray<MoodModifierDefinition> = [\r\n MOOD_PROFESSIONAL,\r\n MOOD_FRIENDLY,\r\n MOOD_PLAYFUL,\r\n MOOD_SERIOUS,\r\n MOOD_LUXURIOUS,\r\n MOOD_MINIMAL,\r\n MOOD_BOLD,\r\n] as const;\r\n\r\n/**\r\n * Mood modifiers as a map for quick lookup.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MOOD_MODIFIERS_MAP: ReadonlyMap<SemanticMood, MoodModifierDefinition> = new Map(\r\n MOOD_MODIFIERS.map((mood) => [mood.id, mood])\r\n);\r\n\r\n/**\r\n * Get a mood modifier by ID.\r\n *\r\n * @param id - The mood ID\r\n * @returns The mood modifier definition or undefined if not found\r\n * @since 2.1.0\r\n */\r\nexport function getMoodModifier(id: SemanticMood): MoodModifierDefinition | undefined {\r\n return MOOD_MODIFIERS_MAP.get(id);\r\n}\r\n\r\n/**\r\n * Check if a mood ID is valid.\r\n *\r\n * @param id - The mood ID to check\r\n * @returns True if the ID is a valid mood\r\n * @since 2.1.0\r\n */\r\nexport function isValidMoodModifier(id: string): id is SemanticMood {\r\n return MOOD_MODIFIERS_MAP.has(id as SemanticMood);\r\n}\r\n\r\n/**\r\n * Apply mood adjustments to a base config.\r\n *\r\n * @param baseConfig - The base Factor24 configuration\r\n * @param mood - The mood to apply\r\n * @returns Modified Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function applyMood(\r\n baseConfig: Partial<Factor24Config>,\r\n mood: SemanticMood\r\n): Partial<Factor24Config> {\r\n const moodModifier = getMoodModifier(mood);\r\n\r\n if (moodModifier === undefined) {\r\n return baseConfig;\r\n }\r\n\r\n // Merge mood adjustments over base config\r\n return {\r\n ...baseConfig,\r\n ...moodModifier.adjustments,\r\n };\r\n}\r\n\r\n/**\r\n * Get all mood IDs.\r\n *\r\n * @returns Array of all mood IDs\r\n * @since 2.1.0\r\n */\r\nexport function getAllMoodIds(): SemanticMood[] {\r\n return Array.from(MOOD_MODIFIERS_MAP.keys());\r\n}\r\n\r\n/**\r\n * Get mood descriptions for documentation.\r\n *\r\n * @returns Object with mood ID as key and description as value\r\n * @since 2.1.0\r\n */\r\nexport function getMoodDescriptions(): Record<SemanticMood, string> {\r\n const descriptions: Partial<Record<SemanticMood, string>> = {};\r\n\r\n for (const mood of MOOD_MODIFIERS) {\r\n descriptions[mood.id] = mood.description;\r\n }\r\n\r\n return descriptions as Record<SemanticMood, string>;\r\n}\r\n\r\n// =============================================================================\r\n// MOOD COMBINATION UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * Intensity levels for mood application.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport type MoodIntensity = 'subtle' | 'standard' | 'strong';\r\n\r\n/**\r\n * Apply mood with intensity scaling.\r\n *\r\n * @param baseConfig - The base Factor24 configuration\r\n * @param mood - The mood to apply\r\n * @param _intensity - How strongly to apply the mood (currently unused, for future implementation)\r\n * @returns Modified Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function applyMoodWithIntensity(\r\n baseConfig: Partial<Factor24Config>,\r\n mood: SemanticMood,\r\n _intensity: MoodIntensity = 'standard'\r\n): Partial<Factor24Config> {\r\n // For now, apply full mood adjustments\r\n // Future: Scale adjustments based on intensity\r\n return applyMood(baseConfig, mood);\r\n}\r\n\r\n/**\r\n * Combine multiple moods (later moods override earlier).\r\n *\r\n * @param baseConfig - The base Factor24 configuration\r\n * @param moods - Array of moods to apply in order\r\n * @returns Modified Factor24Config\r\n * @since 2.1.0\r\n */\r\nexport function combineMoods(\r\n baseConfig: Partial<Factor24Config>,\r\n moods: SemanticMood[]\r\n): Partial<Factor24Config> {\r\n let result = { ...baseConfig };\r\n\r\n for (const mood of moods) {\r\n result = applyMood(result, mood);\r\n }\r\n\r\n return result;\r\n}\r\n","/**\r\n * Intents Module - Semantic Intent Resolution\r\n *\r\n * Central export point for all intent-related functionality.\r\n * Provides resolution of semantic intents and mood modifiers\r\n * to Factor24 configurations.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/intents\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport {\r\n BUTTON_INTENTS,\r\n getButtonIntent,\r\n isButtonIntent,\r\n applyMoodToIntent,\r\n} from './button-intents';\r\nimport {\r\n CARD_INTENTS,\r\n getCardIntent,\r\n isCardIntent,\r\n applyMoodToCardIntent,\r\n} from './card-intents';\r\nimport {\r\n FEEDBACK_INTENTS,\r\n getFeedbackIntent,\r\n isFeedbackIntent,\r\n applyMoodToFeedbackIntent,\r\n} from './feedback-intents';\r\nimport {\r\n INPUT_INTENTS,\r\n getInputIntent,\r\n isInputIntent,\r\n applyMoodToInputIntent,\r\n} from './input-intents';\r\nimport {\r\n MOOD_MODIFIERS,\r\n isValidMoodModifier,\r\n getAllMoodIds,\r\n} from './mood-modifiers';\r\n\r\nimport type {\r\n IntentDefinition,\r\n SemanticIntent,\r\n SemanticMood,\r\n Factor24Config,\r\n IntentRegistry as IIntentRegistry,\r\n MoodModifierDefinition,\r\n} from '../types';\r\n\r\n// =============================================================================\r\n// REGISTRY CLASS\r\n// =============================================================================\r\n\r\n/**\r\n * Intent registry implementation.\r\n *\r\n * @since 2.1.0\r\n */\r\nclass IntentRegistryImpl implements IIntentRegistry {\r\n /** Intent storage */\r\n public readonly intents: Map<SemanticIntent, IntentDefinition>;\r\n\r\n /** Mood modifier storage */\r\n public readonly moods: Map<SemanticMood, MoodModifierDefinition>;\r\n\r\n /** Index by component type for fast lookups */\r\n private readonly componentTypeIndex: Map<string, Set<SemanticIntent>>;\r\n\r\n /**\r\n * Creates a new intent registry.\r\n *\r\n * @param initialIntents - Optional initial intents\r\n * @param initialMoods - Optional initial mood modifiers\r\n */\r\n constructor(\r\n initialIntents?: ReadonlyArray<IntentDefinition>,\r\n initialMoods?: ReadonlyArray<MoodModifierDefinition>\r\n ) {\r\n this.intents = new Map();\r\n this.moods = new Map();\r\n this.componentTypeIndex = new Map();\r\n\r\n // Register initial intents\r\n if (initialIntents !== undefined && initialIntents !== null) {\r\n for (const intent of initialIntents) {\r\n this.registerIntent(intent);\r\n }\r\n }\r\n\r\n // Register initial moods\r\n if (initialMoods !== undefined && initialMoods !== null) {\r\n for (const mood of initialMoods) {\r\n this.registerMood(mood);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get an intent by ID.\r\n *\r\n * @param id - The intent ID\r\n * @returns The intent definition or undefined\r\n */\r\n public getIntent(id: SemanticIntent): IntentDefinition | undefined {\r\n return this.intents.get(id);\r\n }\r\n\r\n /**\r\n * Get a mood modifier by ID.\r\n *\r\n * @param id - The mood ID\r\n * @returns The mood modifier definition or undefined\r\n */\r\n public getMood(id: SemanticMood): MoodModifierDefinition | undefined {\r\n return this.moods.get(id);\r\n }\r\n\r\n /**\r\n * Register a new intent.\r\n *\r\n * @param intent - The intent to register\r\n */\r\n public registerIntent(intent: IntentDefinition): void {\r\n this.intents.set(intent.id, intent);\r\n\r\n // Update component type index\r\n if (intent.componentTypes !== undefined && intent.componentTypes !== null) {\r\n for (const type of intent.componentTypes) {\r\n if (!this.componentTypeIndex.has(type)) {\r\n this.componentTypeIndex.set(type, new Set());\r\n }\r\n const typeSet = this.componentTypeIndex.get(type);\r\n if (typeSet !== undefined) {\r\n typeSet.add(intent.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Register a mood modifier.\r\n *\r\n * @param mood - The mood modifier to register\r\n */\r\n public registerMood(mood: MoodModifierDefinition): void {\r\n this.moods.set(mood.id, mood);\r\n }\r\n\r\n /**\r\n * Get all intents for a component type.\r\n *\r\n * @param componentType - The component type\r\n * @returns Array of intents for the component\r\n */\r\n public getIntentsByComponentType(componentType: string): IntentDefinition[] {\r\n const ids = this.componentTypeIndex.get(componentType);\r\n if (ids === undefined) return [];\r\n return Array.from(ids)\r\n .map((id) => this.intents.get(id))\r\n .filter((intent): intent is IntentDefinition => intent !== undefined);\r\n }\r\n\r\n /**\r\n * Get all registered intents.\r\n *\r\n * @returns Array of all intents\r\n */\r\n public getAllIntents(): IntentDefinition[] {\r\n return Array.from(this.intents.values());\r\n }\r\n\r\n /**\r\n * Get all registered moods.\r\n *\r\n * @returns Array of all mood modifiers\r\n */\r\n public getAllMoods(): MoodModifierDefinition[] {\r\n return Array.from(this.moods.values());\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// GLOBAL REGISTRY INSTANCE\r\n// =============================================================================\r\n\r\n/**\r\n * Global intent registry instance.\r\n * Pre-populated with all built-in intents and moods.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const intentRegistry = new IntentRegistryImpl(\r\n [\r\n ...BUTTON_INTENTS,\r\n ...CARD_INTENTS,\r\n ...INPUT_INTENTS,\r\n ...FEEDBACK_INTENTS,\r\n ],\r\n MOOD_MODIFIERS\r\n);\r\n\r\n// =============================================================================\r\n// RESOLUTION FUNCTIONS\r\n// =============================================================================\r\n\r\n/**\r\n * Resolve an intent to its Factor24Config.\r\n *\r\n * @param intentId - The intent ID to resolve\r\n * @param mood - Optional mood modifier to apply\r\n * @returns The resolved Factor24Config or undefined\r\n * @since 2.1.0\r\n */\r\nexport function resolveIntent(\r\n intentId: SemanticIntent,\r\n mood?: SemanticMood\r\n): Partial<Factor24Config> | undefined {\r\n const intent = intentRegistry.getIntent(intentId);\r\n\r\n if (intent === undefined) {\r\n return undefined;\r\n }\r\n\r\n // Apply mood if provided\r\n if (mood !== undefined) {\r\n return applyMoodToIntent(intent, mood);\r\n }\r\n\r\n return intent.config;\r\n}\r\n\r\n/**\r\n * Resolve an intent with fallback to component-specific registries.\r\n *\r\n * @param intentId - The intent ID to resolve\r\n * @param mood - Optional mood modifier\r\n * @param componentType - Optional component type for fallback\r\n * @returns The resolved Factor24Config or undefined\r\n * @since 2.1.0\r\n */\r\nexport function resolveIntentWithFallback(\r\n intentId: SemanticIntent,\r\n mood?: SemanticMood,\r\n componentType?: string\r\n): Partial<Factor24Config> | undefined {\r\n // Try global registry first\r\n const result = resolveIntent(intentId, mood);\r\n if (result !== undefined) return result;\r\n\r\n // Try component-specific fallbacks\r\n if (componentType === 'button' || componentType === undefined) {\r\n const buttonIntent = getButtonIntent(intentId);\r\n if (buttonIntent !== undefined) {\r\n if (mood !== undefined) {\r\n return applyMoodToIntent(buttonIntent, mood);\r\n }\r\n return buttonIntent.config;\r\n }\r\n }\r\n\r\n if (componentType === 'card' || componentType === undefined) {\r\n const cardIntent = getCardIntent(intentId);\r\n if (cardIntent !== undefined) {\r\n if (mood !== undefined) {\r\n return applyMoodToCardIntent(intentId, mood);\r\n }\r\n return cardIntent.config;\r\n }\r\n }\r\n\r\n if (\r\n componentType === 'input' ||\r\n componentType === 'textfield' ||\r\n componentType === 'select' ||\r\n componentType === undefined\r\n ) {\r\n const inputIntent = getInputIntent(intentId);\r\n if (inputIntent !== undefined) {\r\n if (mood !== undefined) {\r\n return applyMoodToInputIntent(intentId, mood);\r\n }\r\n return inputIntent.config;\r\n }\r\n }\r\n\r\n if (\r\n componentType === 'alert' ||\r\n componentType === 'toast' ||\r\n componentType === 'badge' ||\r\n componentType === 'chip' ||\r\n componentType === 'progress' ||\r\n componentType === undefined\r\n ) {\r\n const feedbackIntent = getFeedbackIntent(intentId);\r\n if (feedbackIntent !== undefined) {\r\n if (mood !== undefined) {\r\n return applyMoodToFeedbackIntent(intentId, mood);\r\n }\r\n return feedbackIntent.config;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Resolve a mood modifier to its adjustments.\r\n *\r\n * @param moodId - The mood ID to resolve\r\n * @returns The mood adjustments or undefined\r\n * @since 2.1.0\r\n */\r\nexport function resolveMood(moodId: SemanticMood): Partial<Factor24Config> | undefined {\r\n const mood = intentRegistry.getMood(moodId);\r\n return mood?.adjustments;\r\n}\r\n\r\n/**\r\n * Get all intents for a specific component type.\r\n *\r\n * @param componentType - The component type\r\n * @returns Array of intent definitions\r\n * @since 2.1.0\r\n */\r\nexport function getIntentsForComponent(componentType: string): IntentDefinition[] {\r\n return intentRegistry.getIntentsByComponentType(componentType);\r\n}\r\n\r\n/**\r\n * Check if an intent ID is valid.\r\n *\r\n * @param intentId - The intent ID to check\r\n * @returns True if valid\r\n * @since 2.1.0\r\n */\r\nexport function isValidIntent(intentId: string): intentId is SemanticIntent {\r\n return (\r\n intentRegistry.intents.has(intentId as SemanticIntent) ||\r\n isButtonIntent(intentId) ||\r\n isCardIntent(intentId) ||\r\n isInputIntent(intentId) ||\r\n isFeedbackIntent(intentId)\r\n );\r\n}\r\n\r\n/**\r\n * Check if a mood ID is valid.\r\n *\r\n * @param moodId - The mood ID to check\r\n * @returns True if valid\r\n * @since 2.1.0\r\n */\r\nexport { isValidMoodModifier as isValidMood };\r\n\r\n/**\r\n * Get all available intent IDs.\r\n *\r\n * @returns Array of all intent IDs\r\n * @since 2.1.0\r\n */\r\nexport function getAllIntentIds(): SemanticIntent[] {\r\n return Array.from(intentRegistry.intents.keys());\r\n}\r\n\r\n/**\r\n * Get all available mood IDs.\r\n *\r\n * @returns Array of all mood IDs\r\n * @since 2.1.0\r\n */\r\nexport { getAllMoodIds };\r\n\r\n/**\r\n * Get intent metadata without config.\r\n *\r\n * @param intentId - The intent ID\r\n * @returns Intent metadata or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getIntentMetadata(\r\n intentId: SemanticIntent\r\n): Omit<IntentDefinition, 'config' | 'moodModifiers'> | undefined {\r\n const intent = intentRegistry.getIntent(intentId);\r\n if (intent === undefined) return undefined;\r\n\r\n const { config: _config, moodModifiers: _moodModifiers, ...metadata } = intent;\r\n return metadata;\r\n}\r\n\r\n/**\r\n * Get intent count statistics.\r\n *\r\n * @returns Object with intent and mood counts\r\n * @since 2.1.0\r\n */\r\nexport function getIntentStats(): {\r\n totalIntents: number;\r\n totalMoods: number;\r\n byComponentType: Record<string, number>;\r\n} {\r\n const byComponentType: Record<string, number> = {};\r\n\r\n for (const intent of intentRegistry.getAllIntents()) {\r\n if (intent.componentTypes !== undefined && intent.componentTypes !== null) {\r\n for (const type of intent.componentTypes) {\r\n byComponentType[type] = (byComponentType[type] ?? 0) + 1;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n totalIntents: intentRegistry.intents.size,\r\n totalMoods: intentRegistry.moods.size,\r\n byComponentType,\r\n };\r\n}\r\n\r\n// =============================================================================\r\n// FACTORY FUNCTION\r\n// =============================================================================\r\n\r\n/**\r\n * Create a new intent registry instance.\r\n *\r\n * @param initialIntents - Optional initial intents\r\n * @param initialMoods - Optional initial moods\r\n * @returns New intent registry instance\r\n * @since 2.1.0\r\n */\r\nexport function createIntentRegistry(\r\n initialIntents?: ReadonlyArray<IntentDefinition>,\r\n initialMoods?: ReadonlyArray<MoodModifierDefinition>\r\n): IIntentRegistry {\r\n return new IntentRegistryImpl(initialIntents, initialMoods);\r\n}\r\n\r\n// =============================================================================\r\n// RE-EXPORTS\r\n// =============================================================================\r\n\r\n// Button intents\r\nexport {\r\n BUTTON_INTENTS,\r\n BUTTON_INTENTS_MAP,\r\n getButtonIntent,\r\n isButtonIntent,\r\n applyMoodToIntent,\r\n // Individual intents for direct access\r\n INTENT_CTA,\r\n INTENT_PRIMARY,\r\n INTENT_SECONDARY,\r\n INTENT_TERTIARY,\r\n INTENT_DESTRUCTIVE,\r\n INTENT_CONFIRM,\r\n INTENT_CANCEL,\r\n INTENT_NAV,\r\n INTENT_NAV_ACTIVE,\r\n INTENT_NAV_SUBTLE,\r\n INTENT_LINK,\r\n INTENT_SUCCESS,\r\n INTENT_WARNING,\r\n INTENT_ERROR,\r\n INTENT_INFO,\r\n INTENT_GHOST,\r\n INTENT_SUBTLE,\r\n INTENT_HERO,\r\n INTENT_PREMIUM,\r\n INTENT_BRAND,\r\n} from './button-intents';\r\n\r\n// Mood modifiers\r\nexport {\r\n MOOD_MODIFIERS,\r\n MOOD_MODIFIERS_MAP,\r\n getMoodModifier,\r\n applyMood,\r\n applyMoodWithIntensity,\r\n combineMoods,\r\n getMoodDescriptions,\r\n // Individual moods for direct access\r\n MOOD_PROFESSIONAL,\r\n MOOD_FRIENDLY,\r\n MOOD_PLAYFUL,\r\n MOOD_SERIOUS,\r\n MOOD_LUXURIOUS,\r\n MOOD_MINIMAL,\r\n MOOD_BOLD,\r\n} from './mood-modifiers';\r\n\r\nexport type { MoodIntensity } from './mood-modifiers';\r\n\r\n// Card intents\r\nexport {\r\n CARD_INTENTS,\r\n CARD_INTENTS_MAP,\r\n getCardIntent,\r\n isCardIntent,\r\n applyMoodToCardIntent,\r\n // Individual card intents\r\n INTENT_CARD_CONTENT,\r\n INTENT_CARD_FEATURED,\r\n INTENT_CARD_ARTICLE,\r\n INTENT_CARD_INTERACTIVE,\r\n INTENT_CARD_SELECTABLE,\r\n INTENT_CARD_DRAGGABLE,\r\n INTENT_CARD_PRODUCT,\r\n INTENT_CARD_PRICING,\r\n INTENT_CARD_PROFILE,\r\n INTENT_CARD_TESTIMONIAL,\r\n INTENT_CARD_STATS,\r\n INTENT_CARD_NOTIFICATION,\r\n INTENT_CARD_GLASS,\r\n INTENT_CARD_NEUMORPHIC,\r\n} from './card-intents';\r\n\r\n// Input intents\r\nexport {\r\n INPUT_INTENTS,\r\n INPUT_INTENTS_MAP,\r\n getInputIntent,\r\n isInputIntent,\r\n applyMoodToInputIntent,\r\n // Individual input intents\r\n INTENT_INPUT_TEXT,\r\n INTENT_INPUT_EMAIL,\r\n INTENT_INPUT_PASSWORD,\r\n INTENT_INPUT_SEARCH,\r\n INTENT_INPUT_CODE,\r\n INTENT_INPUT_NUMBER,\r\n INTENT_INPUT_CURRENCY,\r\n INTENT_INPUT_SELECT,\r\n INTENT_INPUT_MULTISELECT,\r\n INTENT_INPUT_AUTOCOMPLETE,\r\n INTENT_INPUT_CHECKBOX,\r\n INTENT_INPUT_SWITCH,\r\n INTENT_INPUT_RADIO,\r\n INTENT_INPUT_SLIDER,\r\n INTENT_INPUT_RATING,\r\n INTENT_INPUT_TEXTAREA,\r\n INTENT_INPUT_RICHTEXT,\r\n INTENT_INPUT_ERROR,\r\n INTENT_INPUT_SUCCESS,\r\n INTENT_INPUT_DISABLED,\r\n} from './input-intents';\r\n\r\n// Feedback intents\r\nexport {\r\n FEEDBACK_INTENTS,\r\n FEEDBACK_INTENTS_MAP,\r\n getFeedbackIntent,\r\n isFeedbackIntent,\r\n applyMoodToFeedbackIntent,\r\n // Individual feedback intents\r\n INTENT_ALERT_INFO,\r\n INTENT_ALERT_SUCCESS,\r\n INTENT_ALERT_WARNING,\r\n INTENT_ALERT_ERROR,\r\n INTENT_TOAST_DEFAULT,\r\n INTENT_TOAST_SUCCESS,\r\n INTENT_TOAST_ERROR,\r\n INTENT_TOAST_ACTION,\r\n INTENT_PROGRESS_LINEAR,\r\n INTENT_PROGRESS_CIRCULAR,\r\n INTENT_SKELETON,\r\n INTENT_BADGE_DEFAULT,\r\n INTENT_BADGE_STATUS,\r\n INTENT_BADGE_COUNT,\r\n INTENT_CHIP_DEFAULT,\r\n INTENT_CHIP_SELECTABLE,\r\n INTENT_CHIP_DELETABLE,\r\n INTENT_TOOLTIP_DEFAULT,\r\n INTENT_TOOLTIP_RICH,\r\n} from './feedback-intents';\r\n\r\n// Types\r\nexport { IntentRegistryImpl };\r\nexport type { IIntentRegistry };\r\n","/**\r\n * Resolution Examples - Practical Usage Examples\r\n *\r\n * This file provides ready-to-use examples for the 5-Level Abstraction API.\r\n * Each example demonstrates different levels and their combinations.\r\n *\r\n * @packageDocumentation\r\n * @module resolution/examples\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\nimport type {\r\n MultiLevelProps,\r\n VisualGroup,\r\n MotionGroup,\r\n LayoutGroup,\r\n ExperienceGroup,\r\n} from './types';\r\n\r\n// =============================================================================\r\n// LEVEL 5: INTENT + MOOD EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Level 5 examples using intent and mood.\r\n * Highest abstraction level - just describe what you want.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LEVEL_5_EXAMPLES = {\r\n /**\r\n * Primary CTA button with playful mood\r\n */\r\n ctaPlayful: {\r\n intent: 'cta',\r\n mood: 'playful',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Destructive action with serious mood\r\n */\r\n destructiveSerious: {\r\n intent: 'destructive',\r\n mood: 'serious',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Hero section with bold mood\r\n */\r\n heroBold: {\r\n intent: 'hero',\r\n mood: 'bold',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Navigation link with minimal mood\r\n */\r\n navMinimal: {\r\n intent: 'nav',\r\n mood: 'minimal',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Success feedback with friendly mood\r\n */\r\n successFriendly: {\r\n intent: 'success',\r\n mood: 'friendly',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Premium button with luxurious mood\r\n */\r\n premiumLuxurious: {\r\n intent: 'premium',\r\n mood: 'luxurious',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Info display with professional mood\r\n */\r\n infoProfessional: {\r\n intent: 'info',\r\n mood: 'professional',\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// LEVEL 3: SHORTHAND EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Level 3 examples using shorthands.\r\n * Simple, expressive props for common styling.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LEVEL_3_EXAMPLES = {\r\n /**\r\n * Bold button with snappy feel\r\n */\r\n boldSnappy: {\r\n look: 'bold',\r\n feel: 'snappy',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Subtle card with smooth feel\r\n */\r\n subtleSmooth: {\r\n look: 'subtle',\r\n feel: 'smooth',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Elevated surface with raised appearance\r\n */\r\n elevatedRaised: {\r\n look: 'elevated',\r\n surface: 'raised',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Floating modal with overlay surface\r\n */\r\n floatingOverlay: {\r\n look: 'solid',\r\n surface: 'overlay',\r\n feel: 'smooth',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Ghost button with bouncy feel\r\n */\r\n ghostBouncy: {\r\n look: 'ghost',\r\n feel: 'bouncy',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Outlined input with responsive feel\r\n */\r\n outlinedResponsive: {\r\n look: 'outlined',\r\n feel: 'responsive',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Soft card with relaxed spacing\r\n */\r\n softRelaxed: {\r\n look: 'soft',\r\n spacingPreset: 'relaxed',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Minimal text with tight spacing\r\n */\r\n minimalTight: {\r\n look: 'minimal',\r\n spacingPreset: 'tight',\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// LEVEL 2: FACTOR GROUP EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Level 2 examples using factor groups.\r\n * Organized groups of related factors.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LEVEL_2_EXAMPLES = {\r\n /**\r\n * Visual group for primary button\r\n */\r\n visualPrimaryButton: {\r\n visual: {\r\n colorScheme: 'primary',\r\n shape: 'md',\r\n elevation: 'sm',\r\n border: 'none',\r\n opacity: 'full',\r\n } as VisualGroup,\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Motion group for smooth transitions\r\n */\r\n motionSmooth: {\r\n motion: {\r\n animation: 'smooth',\r\n transition: 'smooth',\r\n } as MotionGroup,\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Layout group for horizontal flex\r\n */\r\n layoutHorizontalFlex: {\r\n layout: {\r\n orientation: 'horizontal',\r\n spacing: 'md',\r\n align: 'center',\r\n justify: 'between',\r\n } as LayoutGroup,\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Experience group for interactive element\r\n */\r\n experienceInteractive: {\r\n experience: {\r\n cursor: 'pointer',\r\n a11y: 'enhanced',\r\n loadingState: 'idle',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Combined groups for card component\r\n */\r\n cardCombined: {\r\n visual: {\r\n shape: 'lg',\r\n elevation: 'md',\r\n opacity: 'full',\r\n } as VisualGroup,\r\n motion: {\r\n transition: 'smooth',\r\n } as MotionGroup,\r\n layout: {\r\n spacing: 'lg',\r\n density: 'comfortable',\r\n } as LayoutGroup,\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Combined groups for modal dialog\r\n */\r\n modalCombined: {\r\n visual: {\r\n shape: 'lg',\r\n elevation: 'xl',\r\n opacity: 'full',\r\n } as VisualGroup,\r\n experience: {\r\n zIndex: 'modal',\r\n a11y: 'enhanced',\r\n } as ExperienceGroup,\r\n layout: {\r\n spacing: 'lg',\r\n overflow: 'auto',\r\n } as LayoutGroup,\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// LEVEL 1: RAW FACTOR EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Level 1 examples using raw factors.\r\n * Direct control over individual Factor24 properties.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const LEVEL_1_EXAMPLES = {\r\n /**\r\n * Custom button with specific factors\r\n */\r\n customButton: {\r\n size: 'lg',\r\n variant: 'filled',\r\n colorScheme: 'primary',\r\n shape: 'pill',\r\n animation: 'bounce',\r\n elevation: 'md',\r\n spacing: 'md',\r\n cursor: 'pointer',\r\n transition: 'fast',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Custom input with specific factors\r\n */\r\n customInput: {\r\n size: 'md',\r\n variant: 'outlined',\r\n shape: 'sm',\r\n border: 'subtle',\r\n cursor: 'text',\r\n transition: 'default',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Custom card with specific factors\r\n */\r\n customCard: {\r\n shape: 'lg',\r\n elevation: 'lg',\r\n spacing: 'xl',\r\n overflow: 'hidden',\r\n opacity: 'full',\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Custom tooltip with specific factors\r\n */\r\n customTooltip: {\r\n shape: 'sm',\r\n elevation: 'xl',\r\n zIndex: 'tooltip',\r\n spacing: 'xs',\r\n opacity: 'full',\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// MIXED LEVEL EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Mixed level examples combining multiple abstraction levels.\r\n * Demonstrates how to mix and match levels for fine-tuned control.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const MIXED_LEVEL_EXAMPLES = {\r\n /**\r\n * Intent + Override: CTA with custom shape\r\n * Level 5 provides base, Level 1 overrides shape\r\n */\r\n ctaWithPillShape: {\r\n intent: 'cta',\r\n shape: 'pill', // Level 1 override\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Shorthand + Group: Bold look with custom motion\r\n * Level 3 provides look, Level 2 provides motion\r\n */\r\n boldWithCustomMotion: {\r\n look: 'bold',\r\n motion: {\r\n animation: 'bounce',\r\n transition: 'spring',\r\n } as MotionGroup,\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Intent + Shorthand + Factor: Complete customization\r\n * All levels working together\r\n */\r\n fullStack: {\r\n intent: 'primary',\r\n look: 'elevated',\r\n feel: 'snappy',\r\n surface: 'raised',\r\n visual: {\r\n shape: 'lg',\r\n } as VisualGroup,\r\n spacing: 'lg', // Level 1 override\r\n animation: 'smooth', // Level 1 override\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Mood override with specific elevation\r\n * Level 5 mood + Level 1 elevation\r\n */\r\n playfulWithShadow: {\r\n intent: 'cta',\r\n mood: 'playful',\r\n elevation: 'xl', // Override the mood's elevation\r\n } as MultiLevelProps,\r\n\r\n /**\r\n * Shorthand + Experience group\r\n * Level 3 look + Level 2 experience\r\n */\r\n accessibleGhost: {\r\n look: 'ghost',\r\n feel: 'responsive',\r\n experience: {\r\n a11y: 'enhanced',\r\n cursor: 'pointer',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// COMPONENT-SPECIFIC EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Button component examples at various levels.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const BUTTON_EXAMPLES = {\r\n /** Primary action button */\r\n primary: {\r\n intent: 'primary',\r\n mood: 'professional',\r\n } as MultiLevelProps,\r\n\r\n /** Secondary action button */\r\n secondary: {\r\n intent: 'secondary',\r\n look: 'outlined',\r\n } as MultiLevelProps,\r\n\r\n /** Ghost/text button */\r\n ghost: {\r\n look: 'ghost',\r\n feel: 'snappy',\r\n } as MultiLevelProps,\r\n\r\n /** Icon button */\r\n icon: {\r\n look: 'subtle',\r\n shape: 'circle',\r\n spacing: 'xs',\r\n } as MultiLevelProps,\r\n\r\n /** Loading button */\r\n loading: {\r\n intent: 'primary',\r\n experience: {\r\n loadingState: 'loading',\r\n cursor: 'wait',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Disabled button */\r\n disabled: {\r\n look: 'subtle',\r\n experience: {\r\n cursor: 'notAllowed',\r\n } as ExperienceGroup,\r\n opacity: 'medium',\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n/**\r\n * Card component examples at various levels.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const CARD_EXAMPLES = {\r\n /** Default content card */\r\n content: {\r\n look: 'soft',\r\n surface: 'raised',\r\n spacingPreset: 'relaxed',\r\n } as MultiLevelProps,\r\n\r\n /** Featured card with emphasis */\r\n featured: {\r\n look: 'elevated',\r\n surface: 'floating',\r\n feel: 'smooth',\r\n } as MultiLevelProps,\r\n\r\n /** Interactive clickable card */\r\n interactive: {\r\n look: 'subtle',\r\n feel: 'snappy',\r\n surface: 'raised',\r\n experience: {\r\n cursor: 'pointer',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Minimal card */\r\n minimal: {\r\n look: 'minimal',\r\n surface: 'flat',\r\n spacingPreset: 'normal',\r\n } as MultiLevelProps,\r\n\r\n /** Glass effect card */\r\n glass: {\r\n visual: {\r\n opacity: 'medium',\r\n elevation: 'sm',\r\n border: 'subtle',\r\n shape: 'lg',\r\n } as VisualGroup,\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n/**\r\n * Input component examples at various levels.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const INPUT_EXAMPLES = {\r\n /** Default outlined input */\r\n default: {\r\n look: 'outlined',\r\n feel: 'responsive',\r\n experience: {\r\n cursor: 'text',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Filled input */\r\n filled: {\r\n look: 'soft',\r\n border: 'none',\r\n experience: {\r\n cursor: 'text',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Search input */\r\n search: {\r\n look: 'soft',\r\n shape: 'pill',\r\n spacingPreset: 'normal',\r\n } as MultiLevelProps,\r\n\r\n /** Error state input */\r\n error: {\r\n look: 'outlined',\r\n colorScheme: 'error',\r\n border: 'solid',\r\n } as MultiLevelProps,\r\n\r\n /** Success state input */\r\n success: {\r\n look: 'outlined',\r\n colorScheme: 'success',\r\n border: 'solid',\r\n } as MultiLevelProps,\r\n\r\n /** Disabled input */\r\n disabled: {\r\n look: 'subtle',\r\n opacity: 'medium',\r\n experience: {\r\n cursor: 'notAllowed',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// ACCESSIBILITY EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Accessibility-focused examples.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const A11Y_EXAMPLES = {\r\n /** Enhanced accessibility button */\r\n enhancedButton: {\r\n intent: 'primary',\r\n experience: {\r\n a11y: 'enhanced',\r\n cursor: 'pointer',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Maximum accessibility for critical actions */\r\n maxA11yAction: {\r\n intent: 'destructive',\r\n experience: {\r\n a11y: 'maximum',\r\n } as ExperienceGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Reduced motion variant */\r\n reducedMotion: {\r\n look: 'bold',\r\n feel: 'static', // No animations\r\n motion: {\r\n animation: 'none',\r\n transition: 'none',\r\n } as MotionGroup,\r\n } as MultiLevelProps,\r\n\r\n /** High contrast variant */\r\n highContrast: {\r\n look: 'bold',\r\n visual: {\r\n opacity: 'full',\r\n border: 'bold',\r\n } as VisualGroup,\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// RESPONSIVE EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * Responsive design examples.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const RESPONSIVE_EXAMPLES = {\r\n /** Mobile-first compact button */\r\n mobileButton: {\r\n look: 'bold',\r\n size: 'lg', // Larger touch target\r\n spacingPreset: 'normal',\r\n } as MultiLevelProps,\r\n\r\n /** Desktop card with more space */\r\n desktopCard: {\r\n look: 'elevated',\r\n spacingPreset: 'relaxed',\r\n layout: {\r\n spacing: 'xl',\r\n density: 'comfortable',\r\n } as LayoutGroup,\r\n } as MultiLevelProps,\r\n\r\n /** Compact mobile navigation */\r\n mobileNav: {\r\n look: 'ghost',\r\n spacingPreset: 'tight',\r\n layout: {\r\n orientation: 'horizontal',\r\n density: 'compact',\r\n } as LayoutGroup,\r\n } as MultiLevelProps,\r\n} as const;\r\n\r\n// =============================================================================\r\n// EXPORT ALL EXAMPLES\r\n// =============================================================================\r\n\r\n/**\r\n * All examples grouped by category.\r\n *\r\n * @since 2.1.0\r\n */\r\nexport const ALL_EXAMPLES = {\r\n level5: LEVEL_5_EXAMPLES,\r\n level3: LEVEL_3_EXAMPLES,\r\n level2: LEVEL_2_EXAMPLES,\r\n level1: LEVEL_1_EXAMPLES,\r\n mixed: MIXED_LEVEL_EXAMPLES,\r\n button: BUTTON_EXAMPLES,\r\n card: CARD_EXAMPLES,\r\n input: INPUT_EXAMPLES,\r\n a11y: A11Y_EXAMPLES,\r\n responsive: RESPONSIVE_EXAMPLES,\r\n} as const;\r\n\r\n/**\r\n * Get example by category and name.\r\n *\r\n * @param category - The example category\r\n * @param name - The example name\r\n * @returns The MultiLevelProps example or undefined\r\n * @since 2.1.0\r\n */\r\nexport function getExample(\r\n category: keyof typeof ALL_EXAMPLES,\r\n name: string\r\n): MultiLevelProps | undefined {\r\n const categoryExamples = ALL_EXAMPLES[category];\r\n return (categoryExamples as Record<string, MultiLevelProps>)[name];\r\n}\r\n\r\n/**\r\n * List all available examples in a category.\r\n *\r\n * @param category - The example category\r\n * @returns Array of example names\r\n * @since 2.1.0\r\n */\r\nexport function listExamples(category: keyof typeof ALL_EXAMPLES): string[] {\r\n return Object.keys(ALL_EXAMPLES[category]);\r\n}\r\n\r\n/**\r\n * List all example categories.\r\n *\r\n * @returns Array of category names\r\n * @since 2.1.0\r\n */\r\nexport function listCategories(): (keyof typeof ALL_EXAMPLES)[] {\r\n return Object.keys(ALL_EXAMPLES) as (keyof typeof ALL_EXAMPLES)[];\r\n}\r\n","/**\r\n * Resolution Visual Demo - Interactive Demo of 5-Level Resolution\r\n *\r\n * This file provides an interactive demonstration of how the resolution\r\n * engine converts props from any level to complete Factor24Config.\r\n *\r\n * Run with: npx ts-node src/resolution/demo.ts\r\n *\r\n * @packageDocumentation\r\n * @module resolution/demo\r\n * @since 2.1.0\r\n *\r\n * Powered by Nikkory\r\n */\r\n\r\n/* eslint-disable no-console -- This is a CLI demo tool that requires console output */\r\n\r\nimport { safeStringify } from '../utils/stringify';\r\n\r\nimport {\r\n LEVEL_5_EXAMPLES,\r\n LEVEL_3_EXAMPLES,\r\n LEVEL_2_EXAMPLES,\r\n LEVEL_1_EXAMPLES,\r\n MIXED_LEVEL_EXAMPLES,\r\n} from './examples';\r\nimport { resolveProps, resolveWithDebug, detectLevels } from './resolveProps';\r\n\r\nimport type { MultiLevelProps, Factor24Config } from './types';\r\n\r\n// =============================================================================\r\n// DEMO UTILITIES\r\n// =============================================================================\r\n\r\n/**\r\n * ANSI color codes for console output\r\n */\r\nconst colors = {\r\n reset: '\\x1b[0m',\r\n bright: '\\x1b[1m',\r\n dim: '\\x1b[2m',\r\n red: '\\x1b[31m',\r\n green: '\\x1b[32m',\r\n yellow: '\\x1b[33m',\r\n blue: '\\x1b[34m',\r\n magenta: '\\x1b[35m',\r\n cyan: '\\x1b[36m',\r\n white: '\\x1b[37m',\r\n bgBlue: '\\x1b[44m',\r\n bgGreen: '\\x1b[42m',\r\n};\r\n\r\n/**\r\n * Print a section header\r\n */\r\nfunction printHeader(title: string): void {\r\n console.log(`\\n${colors.bgBlue}${colors.white}${colors.bright}`);\r\n console.log('═'.repeat(70));\r\n console.log(` ${title}`);\r\n console.log('═'.repeat(70));\r\n console.log(colors.reset);\r\n}\r\n\r\n/**\r\n * Print a sub-header\r\n */\r\nfunction printSubHeader(title: string): void {\r\n console.log(`\\n${colors.cyan}${colors.bright}▶ ${title}${colors.reset}`);\r\n console.log(colors.dim + '─'.repeat(50) + colors.reset);\r\n}\r\n\r\n/**\r\n * Print input props\r\n */\r\nfunction printInput(props: MultiLevelProps): void {\r\n console.log(`${colors.yellow}Input Props:${colors.reset}`);\r\n console.log(colors.dim + JSON.stringify(props, null, 2) + colors.reset);\r\n}\r\n\r\n/**\r\n * Print detected levels\r\n */\r\nfunction printLevels(levels: ReturnType<typeof detectLevels>): void {\r\n console.log(`${colors.magenta}\\nDetected Levels:${colors.reset}`);\r\n const levelNames: Record<string, string> = {\r\n hasLevel5: 'Level 5 (Intent/Mood)',\r\n hasLevel4: 'Level 4 (Presets)',\r\n hasLevel3: 'Level 3 (Shorthands)',\r\n hasLevel2: 'Level 2 (Groups)',\r\n hasLevel1: 'Level 1 (Raw Factors)',\r\n };\r\n\r\n for (const [key, label] of Object.entries(levelNames)) {\r\n const active = levels[key as keyof typeof levels] === true;\r\n const icon = active ? `${colors.green}✓` : `${colors.dim}○`;\r\n console.log(` ${icon} ${colors.reset}${label}`);\r\n }\r\n}\r\n\r\n/**\r\n * Print resolved config\r\n */\r\nfunction printOutput(config: Partial<Factor24Config>): void {\r\n console.log(`${colors.green}\\nResolved Factor24Config:${colors.reset}`);\r\n\r\n // Group factors by category for readability\r\n const groups = {\r\n 'Core Factors': ['size', 'variant', 'colorScheme'],\r\n 'Visual Factors': ['shape', 'border', 'opacity', 'elevation'],\r\n 'Motion Factors': ['animation', 'transition'],\r\n 'Layout Factors': [\r\n 'position',\r\n 'orientation',\r\n 'density',\r\n 'spacing',\r\n 'overflow',\r\n 'justify',\r\n 'align',\r\n ],\r\n 'Experience Factors': ['a11y', 'cursor', 'zIndex', 'loadingState'],\r\n };\r\n\r\n for (const [groupName, factors] of Object.entries(groups)) {\r\n const groupValues = factors\r\n .filter((f) => config[f as keyof Factor24Config] !== undefined)\r\n .map((f) => `${f}: ${safeStringify(config[f as keyof Factor24Config])}`);\r\n\r\n if (groupValues.length > 0) {\r\n console.log(`${colors.dim} ${groupName}:${colors.reset}`);\r\n groupValues.forEach((v) => console.log(` ${v}`));\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Run a single demo\r\n */\r\nfunction runDemo(name: string, props: MultiLevelProps): void {\r\n printSubHeader(name);\r\n printInput(props);\r\n\r\n const levels = detectLevels(props);\r\n printLevels(levels);\r\n\r\n const result = resolveProps(props);\r\n printOutput(result.config);\r\n}\r\n\r\n// =============================================================================\r\n// DEMO SCENARIOS\r\n// =============================================================================\r\n\r\n/**\r\n * Demo Level 5: Intent + Mood\r\n */\r\nfunction demoLevel5(): void {\r\n printHeader('LEVEL 5: Intent + Mood (Highest Abstraction)');\r\n console.log(\r\n `${colors.dim}User writes semantic intent, system resolves to factors${colors.reset}`\r\n );\r\n\r\n runDemo('CTA Button with Playful Mood', LEVEL_5_EXAMPLES.ctaPlayful);\r\n runDemo('Destructive Action with Serious Mood', LEVEL_5_EXAMPLES.destructiveSerious);\r\n runDemo('Hero Section with Bold Mood', LEVEL_5_EXAMPLES.heroBold);\r\n}\r\n\r\n/**\r\n * Demo Level 3: Shorthands\r\n */\r\nfunction demoLevel3(): void {\r\n printHeader('LEVEL 3: Shorthands (Quick Styling)');\r\n console.log(\r\n `${colors.dim}User writes look/feel/surface, system expands to factors${colors.reset}`\r\n );\r\n\r\n runDemo('Bold + Snappy', LEVEL_3_EXAMPLES.boldSnappy);\r\n runDemo('Subtle + Smooth', LEVEL_3_EXAMPLES.subtleSmooth);\r\n runDemo('Floating Overlay', LEVEL_3_EXAMPLES.floatingOverlay);\r\n}\r\n\r\n/**\r\n * Demo Level 2: Factor Groups\r\n */\r\nfunction demoLevel2(): void {\r\n printHeader('LEVEL 2: Factor Groups (Organized Control)');\r\n console.log(\r\n `${colors.dim}User writes grouped factors, system expands to individual factors${colors.reset}`\r\n );\r\n\r\n runDemo('Visual Group for Primary Button', LEVEL_2_EXAMPLES.visualPrimaryButton);\r\n runDemo('Motion Group for Smooth Transitions', LEVEL_2_EXAMPLES.motionSmooth);\r\n runDemo('Combined Groups for Card', LEVEL_2_EXAMPLES.cardCombined);\r\n}\r\n\r\n/**\r\n * Demo Level 1: Raw Factors\r\n */\r\nfunction demoLevel1(): void {\r\n printHeader('LEVEL 1: Raw Factors (Direct Control)');\r\n console.log(`${colors.dim}User writes individual factors, full control${colors.reset}`);\r\n\r\n runDemo('Custom Button', LEVEL_1_EXAMPLES.customButton);\r\n runDemo('Custom Input', LEVEL_1_EXAMPLES.customInput);\r\n}\r\n\r\n/**\r\n * Demo Mixed Levels\r\n */\r\nfunction demoMixedLevels(): void {\r\n printHeader('MIXED LEVELS: Combining Abstraction Levels');\r\n console.log(`${colors.dim}User mixes levels, later levels override earlier${colors.reset}`);\r\n\r\n runDemo('CTA Intent + Override Shape', MIXED_LEVEL_EXAMPLES.ctaWithPillShape);\r\n runDemo('Bold Look + Custom Motion', MIXED_LEVEL_EXAMPLES.boldWithCustomMotion);\r\n runDemo('Full Stack (All Levels)', MIXED_LEVEL_EXAMPLES.fullStack);\r\n}\r\n\r\n/**\r\n * Demo Priority Resolution\r\n */\r\nfunction demoPriority(): void {\r\n printHeader('PRIORITY RESOLUTION: Override Behavior');\r\n console.log(\r\n `${colors.dim}Priority: Level 1 > Level 2 > Level 3 > Level 4 > Level 5${colors.reset}`\r\n );\r\n\r\n // Show how Level 1 overrides Level 5\r\n const overrideExample: MultiLevelProps = {\r\n intent: 'cta', // Level 5 sets colorScheme: 'primary'\r\n colorScheme: 'error', // Level 1 override\r\n };\r\n\r\n runDemo('Level 1 Override (colorScheme)', overrideExample);\r\n\r\n console.log(\r\n `${colors.yellow}\\n⚠ Notice: intent=\"cta\" would set colorScheme=\"primary\",${colors.reset}`\r\n );\r\n console.log(`${colors.yellow} but Level 1 colorScheme=\"error\" overrides it!${colors.reset}`);\r\n}\r\n\r\n/**\r\n * Demo Debug Mode\r\n */\r\nfunction demoDebugMode(): void {\r\n printHeader('DEBUG MODE: Resolution Trace');\r\n console.log(`${colors.dim}Shows step-by-step resolution process${colors.reset}`);\r\n\r\n const props: MultiLevelProps = {\r\n intent: 'primary',\r\n look: 'elevated',\r\n shape: 'pill',\r\n };\r\n\r\n printSubHeader('Resolution with Debug');\r\n printInput(props);\r\n\r\n const debug = resolveWithDebug(props);\r\n\r\n console.log(`${colors.magenta}\\nResolution Steps:${colors.reset}`);\r\n if (debug.debug?.mergeOrder !== undefined && Array.isArray(debug.debug.mergeOrder)) {\r\n debug.debug.mergeOrder.forEach((step: string, i: number) => {\r\n console.log(`${colors.dim} ${i + 1}. ${step}${colors.reset}`);\r\n });\r\n }\r\n\r\n console.log(`${colors.cyan}\\nSources by Factor:${colors.reset}`);\r\n for (const [factor, source] of Object.entries(debug.sources)) {\r\n console.log(` ${factor}: ${colors.dim}${String(source)}${colors.reset}`);\r\n }\r\n\r\n console.log(`${colors.green}\\nFinal Config:${colors.reset}`);\r\n console.log(colors.dim + JSON.stringify(debug.config, null, 2) + colors.reset);\r\n}\r\n\r\n// =============================================================================\r\n// MAIN DEMO RUNNER\r\n// =============================================================================\r\n\r\n/**\r\n * Run all demos\r\n */\r\nexport function runAllDemos(): void {\r\n console.clear();\r\n console.log(colors.bgGreen + colors.white + colors.bright);\r\n console.log('╔══════════════════════════════════════════════════════════════════════╗');\r\n console.log('║ 5-LEVEL ABSTRACTION - RESOLUTION ENGINE DEMO ║');\r\n console.log('║ Powered by Nikkory ║');\r\n console.log('╚══════════════════════════════════════════════════════════════════════╝');\r\n console.log(colors.reset);\r\n\r\n demoLevel5();\r\n demoLevel3();\r\n demoLevel2();\r\n demoLevel1();\r\n demoMixedLevels();\r\n demoPriority();\r\n demoDebugMode();\r\n\r\n console.log(`\\n${colors.bgGreen}${colors.white}${colors.bright}`);\r\n console.log('══════════════════════════════════════════════════════════════════════');\r\n console.log(' DEMO COMPLETE! ');\r\n console.log('══════════════════════════════════════════════════════════════════════');\r\n console.log(`${colors.reset}\\n`);\r\n}\r\n\r\n/**\r\n * Run specific demo by name\r\n */\r\nexport function runDemo$(demoName: string): void {\r\n const demos: Record<string, () => void> = {\r\n level5: demoLevel5,\r\n level3: demoLevel3,\r\n level2: demoLevel2,\r\n level1: demoLevel1,\r\n mixed: demoMixedLevels,\r\n priority: demoPriority,\r\n debug: demoDebugMode,\r\n };\r\n\r\n const demo = demos[demoName.toLowerCase()];\r\n if (demo !== undefined) {\r\n demo();\r\n } else {\r\n console.log(`Unknown demo: ${demoName}`);\r\n console.log(`Available demos: ${Object.keys(demos).join(', ')}`);\r\n }\r\n}\r\n\r\n/**\r\n * Interactive demo - resolve custom props\r\n */\r\nexport function interactiveResolve(props: MultiLevelProps): void {\r\n printHeader('INTERACTIVE RESOLUTION');\r\n runDemo('Custom Props', props);\r\n}\r\n\r\n// Export demo functions\r\nexport {\r\n demoLevel5,\r\n demoLevel3,\r\n demoLevel2,\r\n demoLevel1,\r\n demoMixedLevels,\r\n demoPriority,\r\n demoDebugMode,\r\n};\r\n\r\n// Run if executed directly (Node.js environment only)\r\n// Using ESM-compatible check that works in both Node.js and browser\r\nif (\r\n typeof process !== 'undefined' &&\r\n typeof process.argv?.[1] === 'string' &&\r\n process.argv[1].length > 0 &&\r\n typeof import.meta !== 'undefined' &&\r\n typeof import.meta.url === 'string' &&\r\n import.meta.url.includes(process.argv[1].replace(/\\\\/g, '/'))\r\n) {\r\n runAllDemos();\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 * 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 * 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"]}