@shohojdhara/atomix 0.3.14 → 0.4.0

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 (343) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build-tools/EXAMPLES.md +372 -0
  3. package/build-tools/README.md +242 -0
  4. package/build-tools/__tests__/error-handler.test.js +230 -0
  5. package/build-tools/__tests__/index.test.js +141 -0
  6. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  7. package/build-tools/__tests__/utils.test.js +161 -0
  8. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  9. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  10. package/build-tools/error-handler.js +308 -0
  11. package/build-tools/index.d.ts +44 -0
  12. package/build-tools/index.js +88 -0
  13. package/build-tools/package.json +50 -0
  14. package/build-tools/rollup-plugin.js +236 -0
  15. package/build-tools/types.d.ts +163 -0
  16. package/build-tools/utils.js +203 -0
  17. package/build-tools/vite-plugin.js +161 -0
  18. package/build-tools/webpack-loader.js +123 -0
  19. package/dist/atomix.css +21044 -2618
  20. package/dist/atomix.css.map +1 -1
  21. package/dist/atomix.min.css +77 -3
  22. package/dist/atomix.min.css.map +1 -1
  23. package/dist/build-tools/EXAMPLES.md +372 -0
  24. package/dist/build-tools/README.md +242 -0
  25. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  26. package/dist/build-tools/__tests__/index.test.js +141 -0
  27. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  28. package/dist/build-tools/__tests__/utils.test.js +161 -0
  29. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  30. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  31. package/dist/build-tools/error-handler.js +308 -0
  32. package/dist/build-tools/index.d.ts +44 -0
  33. package/dist/build-tools/index.js +88 -0
  34. package/dist/build-tools/package.json +50 -0
  35. package/dist/build-tools/rollup-plugin.js +236 -0
  36. package/dist/build-tools/types.d.ts +163 -0
  37. package/dist/build-tools/utils.js +203 -0
  38. package/dist/build-tools/vite-plugin.js +161 -0
  39. package/dist/build-tools/webpack-loader.js +123 -0
  40. package/dist/charts.d.ts +1 -1
  41. package/dist/charts.js +86 -57
  42. package/dist/charts.js.map +1 -1
  43. package/dist/core.d.ts +1 -1
  44. package/dist/core.js +136 -112
  45. package/dist/core.js.map +1 -1
  46. package/dist/forms.d.ts +2 -5
  47. package/dist/forms.js +140 -128
  48. package/dist/forms.js.map +1 -1
  49. package/dist/heavy.d.ts +1 -1
  50. package/dist/heavy.js +136 -112
  51. package/dist/heavy.js.map +1 -1
  52. package/dist/index.d.ts +152 -78
  53. package/dist/index.esm.js +346 -340
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/index.js +359 -353
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.min.js +1 -1
  58. package/dist/index.min.js.map +1 -1
  59. package/dist/layout.js.map +1 -1
  60. package/dist/theme.d.ts +9 -9
  61. package/dist/theme.js.map +1 -1
  62. package/package.json +23 -8
  63. package/scripts/atomix-cli.js +170 -73
  64. package/scripts/cli/__tests__/README.md +81 -0
  65. package/scripts/cli/__tests__/basic.test.js +115 -0
  66. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  67. package/scripts/cli/__tests__/integration.test.js +327 -0
  68. package/scripts/cli/__tests__/test-setup.js +133 -0
  69. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  70. package/scripts/cli/__tests__/utils.test.js +161 -0
  71. package/scripts/cli/component-generator.js +253 -299
  72. package/scripts/cli/dependency-checker.js +355 -0
  73. package/scripts/cli/interactive-init.js +46 -5
  74. package/scripts/cli/template-manager.js +0 -2
  75. package/scripts/cli/templates/common-templates.js +636 -0
  76. package/scripts/cli/templates/composable-templates.js +148 -126
  77. package/scripts/cli/templates/index.js +23 -16
  78. package/scripts/cli/templates/project-templates.js +151 -23
  79. package/scripts/cli/templates/react-templates.js +280 -210
  80. package/scripts/cli/templates/scss-templates.js +90 -91
  81. package/scripts/cli/templates/testing-templates.js +206 -27
  82. package/scripts/cli/templates/testing-utils.js +278 -0
  83. package/scripts/cli/templates/types-templates.js +70 -56
  84. package/scripts/cli/theme-bridge.js +8 -2
  85. package/scripts/cli/token-manager.js +318 -206
  86. package/scripts/cli/utils.js +0 -1
  87. package/src/components/Accordion/Accordion.stories.tsx +358 -850
  88. package/src/components/Accordion/Accordion.test.tsx +70 -50
  89. package/src/components/Accordion/Accordion.tsx +99 -94
  90. package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
  91. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  92. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  93. package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
  94. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  95. package/src/components/AtomixGlass/glass-utils.ts +6 -5
  96. package/src/components/AtomixGlass/shader-utils.ts +133 -52
  97. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  98. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
  99. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  100. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  101. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  102. package/src/components/AtomixGlass/stories/Playground.stories.tsx +51 -36
  103. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
  104. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  105. package/src/components/Avatar/Avatar.stories.tsx +195 -0
  106. package/src/components/Avatar/Avatar.tsx +58 -56
  107. package/src/components/Badge/Badge.stories.tsx +122 -352
  108. package/src/components/Badge/Badge.test.tsx +41 -41
  109. package/src/components/Badge/Badge.tsx +64 -62
  110. package/src/components/Block/Block.stories.tsx +30 -11
  111. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
  112. package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
  113. package/src/components/Button/Button.stories.tsx +454 -1126
  114. package/src/components/Button/Button.test.tsx +123 -0
  115. package/src/components/Button/Button.tsx +88 -60
  116. package/src/components/Button/ButtonGroup.stories.tsx +376 -215
  117. package/src/components/Button/ButtonGroup.tsx +4 -15
  118. package/src/components/Callout/Callout.stories.tsx +316 -568
  119. package/src/components/Card/Card.stories.tsx +292 -81
  120. package/src/components/Card/Card.tsx +30 -14
  121. package/src/components/Chart/AreaChart.tsx +1 -1
  122. package/src/components/Chart/CandlestickChart.tsx +23 -16
  123. package/src/components/Chart/Chart.stories.tsx +153 -16
  124. package/src/components/Chart/Chart.tsx +40 -44
  125. package/src/components/Chart/ChartRenderer.tsx +39 -12
  126. package/src/components/Chart/ChartToolbar.tsx +21 -5
  127. package/src/components/Chart/DonutChart.tsx +1 -1
  128. package/src/components/Chart/FunnelChart.tsx +4 -1
  129. package/src/components/Chart/GaugeChart.tsx +3 -1
  130. package/src/components/Chart/HeatmapChart.tsx +50 -37
  131. package/src/components/Chart/LineChart.tsx +3 -2
  132. package/src/components/Chart/MultiAxisChart.tsx +24 -16
  133. package/src/components/Chart/RadarChart.tsx +19 -17
  134. package/src/components/Chart/ScatterChart.tsx +29 -21
  135. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
  136. package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
  137. package/src/components/Countdown/Countdown.stories.tsx +114 -7
  138. package/src/components/DataTable/DataTable.stories.tsx +349 -144
  139. package/src/components/DataTable/DataTable.test.tsx +26 -148
  140. package/src/components/DataTable/DataTable.tsx +485 -456
  141. package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
  142. package/src/components/DatePicker/DatePicker.tsx +31 -26
  143. package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
  144. package/src/components/Dropdown/Dropdown.tsx +313 -299
  145. package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
  146. package/src/components/EdgePanel/EdgePanel.tsx +1 -3
  147. package/src/components/Footer/Footer.stories.tsx +396 -327
  148. package/src/components/Footer/Footer.tsx +130 -128
  149. package/src/components/Footer/FooterLink.tsx +2 -2
  150. package/src/components/Form/Checkbox.stories.tsx +140 -6
  151. package/src/components/Form/Checkbox.test.tsx +63 -0
  152. package/src/components/Form/Checkbox.tsx +122 -78
  153. package/src/components/Form/Form.stories.tsx +110 -19
  154. package/src/components/Form/FormGroup.stories.tsx +127 -4
  155. package/src/components/Form/Input.stories.tsx +22 -39
  156. package/src/components/Form/Input.test.tsx +38 -44
  157. package/src/components/Form/Radio.stories.tsx +146 -17
  158. package/src/components/Form/Radio.tsx +68 -66
  159. package/src/components/Form/Select.stories.tsx +140 -8
  160. package/src/components/Form/Select.tsx +184 -182
  161. package/src/components/Form/Textarea.stories.tsx +149 -6
  162. package/src/components/Form/Textarea.test.tsx +27 -32
  163. package/src/components/Hero/Hero.stories.tsx +372 -38
  164. package/src/components/Hero/Hero.tsx +201 -55
  165. package/src/components/Icon/index.ts +7 -1
  166. package/src/components/List/List.stories.tsx +141 -3
  167. package/src/components/List/List.tsx +19 -23
  168. package/src/components/Modal/Modal.stories.tsx +183 -43
  169. package/src/components/Modal/Modal.tsx +130 -127
  170. package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
  171. package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
  172. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
  173. package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
  174. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
  175. package/src/components/Pagination/Pagination.stories.tsx +7 -4
  176. package/src/components/Pagination/Pagination.tsx +199 -202
  177. package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
  178. package/src/components/Popover/Popover.stories.tsx +354 -97
  179. package/src/components/Popover/Popover.tsx +41 -37
  180. package/src/components/Progress/Progress.stories.tsx +160 -7
  181. package/src/components/River/River.stories.tsx +3 -2
  182. package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
  183. package/src/components/Slider/Slider.stories.tsx +12 -4
  184. package/src/components/Spinner/Spinner.stories.tsx +104 -8
  185. package/src/components/Spinner/Spinner.test.tsx +23 -23
  186. package/src/components/Spinner/Spinner.tsx +43 -46
  187. package/src/components/Steps/Steps.stories.tsx +173 -42
  188. package/src/components/Tabs/Tabs.stories.tsx +141 -12
  189. package/src/components/Tabs/Tabs.tsx +74 -72
  190. package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
  191. package/src/components/Todo/Todo.stories.tsx +198 -9
  192. package/src/components/Toggle/Toggle.stories.tsx +137 -36
  193. package/src/components/Toggle/Toggle.test.tsx +65 -70
  194. package/src/components/Toggle/Toggle.tsx +4 -1
  195. package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
  196. package/src/components/Tooltip/Tooltip.tsx +104 -106
  197. package/src/components/Upload/Upload.stories.tsx +241 -150
  198. package/src/components/Upload/Upload.tsx +287 -283
  199. package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
  200. package/src/components/index.ts +13 -2
  201. package/src/layouts/Grid/Grid.stories.tsx +9 -3
  202. package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
  203. package/src/lib/README.md +2 -2
  204. package/src/lib/__tests__/theme-tools.test.ts +219 -0
  205. package/src/lib/composables/index.ts +2 -2
  206. package/src/lib/composables/shared-mouse-tracker.ts +13 -14
  207. package/src/lib/composables/useAtomixGlass.ts +126 -97
  208. package/src/lib/composables/useChartExport.ts +3 -8
  209. package/src/lib/composables/useDataTable.ts +72 -43
  210. package/src/lib/composables/useHero.ts +58 -14
  211. package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
  212. package/src/lib/composables/useInput.ts +10 -8
  213. package/src/lib/composables/useSideMenu.ts +6 -5
  214. package/src/lib/composables/useTooltip.ts +1 -2
  215. package/src/lib/composables/useVideoPlayer.ts +44 -35
  216. package/src/lib/config/index.ts +154 -154
  217. package/src/lib/constants/components.ts +9 -32
  218. package/src/lib/constants/cssVariables.ts +29 -29
  219. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
  220. package/src/lib/hooks/index.ts +1 -1
  221. package/src/lib/hooks/useComponentCustomization.ts +11 -17
  222. package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
  223. package/src/lib/patterns/__tests__/slots.test.ts +1 -1
  224. package/src/lib/patterns/index.ts +1 -1
  225. package/src/lib/patterns/slots.tsx +8 -13
  226. package/src/lib/storybook/InteractiveDemo.tsx +13 -18
  227. package/src/lib/storybook/PreviewContainer.tsx +1 -1
  228. package/src/lib/storybook/VariantsGrid.tsx +3 -7
  229. package/src/lib/storybook/index.ts +1 -1
  230. package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
  231. package/src/lib/theme/adapters/index.ts +3 -9
  232. package/src/lib/theme/adapters/themeAdapter.ts +41 -26
  233. package/src/lib/theme/config/index.ts +1 -1
  234. package/src/lib/theme/config/types.ts +2 -2
  235. package/src/lib/theme/config/validator.ts +10 -5
  236. package/src/lib/theme/constants/constants.ts +2 -2
  237. package/src/lib/theme/constants/index.ts +1 -2
  238. package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
  239. package/src/lib/theme/core/composeTheme.ts +32 -26
  240. package/src/lib/theme/core/createTheme.ts +1 -1
  241. package/src/lib/theme/core/createThemeObject.ts +308 -301
  242. package/src/lib/theme/core/index.ts +3 -3
  243. package/src/lib/theme/devtools/CLI.ts +107 -105
  244. package/src/lib/theme/devtools/Comparator.tsx +50 -32
  245. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
  246. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
  247. package/src/lib/theme/devtools/Inspector.tsx +75 -60
  248. package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
  249. package/src/lib/theme/devtools/Preview.tsx +150 -106
  250. package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
  251. package/src/lib/theme/devtools/index.ts +3 -9
  252. package/src/lib/theme/devtools/useHistory.ts +23 -21
  253. package/src/lib/theme/errors/errors.ts +12 -11
  254. package/src/lib/theme/errors/index.ts +2 -7
  255. package/src/lib/theme/generators/generateCSS.ts +9 -13
  256. package/src/lib/theme/generators/generateCSSNested.ts +1 -6
  257. package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
  258. package/src/lib/theme/generators/index.ts +1 -4
  259. package/src/lib/theme/i18n/index.ts +1 -1
  260. package/src/lib/theme/i18n/rtl.ts +13 -13
  261. package/src/lib/theme/index.ts +7 -16
  262. package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
  263. package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
  264. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
  265. package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
  266. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
  267. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
  268. package/src/lib/theme/runtime/index.ts +2 -5
  269. package/src/lib/theme/runtime/useTheme.ts +18 -18
  270. package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
  271. package/src/lib/theme/test/testTheme.ts +15 -16
  272. package/src/lib/theme/tokens/index.ts +2 -7
  273. package/src/lib/theme/tokens/tokens.ts +25 -24
  274. package/src/lib/theme/types.ts +428 -411
  275. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
  276. package/src/lib/theme/utils/componentTheming.ts +18 -18
  277. package/src/lib/theme/utils/domUtils.ts +277 -289
  278. package/src/lib/theme/utils/index.ts +1 -2
  279. package/src/lib/theme/utils/injectCSS.ts +10 -14
  280. package/src/lib/theme/utils/naming.ts +20 -16
  281. package/src/lib/theme/utils/themeHelpers.ts +10 -12
  282. package/src/lib/theme/utils/themeUtils.ts +85 -86
  283. package/src/lib/theme/utils/themeValidation.ts +82 -33
  284. package/src/lib/theme-tools.ts +8 -6
  285. package/src/lib/types/components.ts +172 -71
  286. package/src/lib/types/partProps.ts +1 -1
  287. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  288. package/src/lib/utils/componentUtils.ts +8 -12
  289. package/src/lib/utils/csv.ts +19 -0
  290. package/src/lib/utils/dataTableExport.ts +2 -15
  291. package/src/lib/utils/fontPreloader.ts +10 -19
  292. package/src/lib/utils/icons.ts +4 -1
  293. package/src/lib/utils/index.ts +2 -6
  294. package/src/lib/utils/memoryMonitor.ts +10 -8
  295. package/src/lib/utils/themeNaming.ts +2 -2
  296. package/src/styles/01-settings/_index.scss +1 -1
  297. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  298. package/src/styles/01-settings/_settings.colors.scss +11 -11
  299. package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
  300. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  301. package/src/styles/01-settings/_settings.spacing.scss +3 -4
  302. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  303. package/src/styles/01-settings/_settings.typography.scss +4 -4
  304. package/src/styles/02-tools/_tools.button.scss +51 -21
  305. package/src/styles/02-tools/_tools.utility-api.scss +38 -12
  306. package/src/styles/03-generic/_generic.root.scss +4 -3
  307. package/src/styles/06-components/_components.accordion.scss +56 -14
  308. package/src/styles/06-components/_components.atomix-glass.scss +13 -9
  309. package/src/styles/06-components/_components.button.scss +16 -4
  310. package/src/styles/06-components/_components.callout.scss +27 -21
  311. package/src/styles/06-components/_components.card.scss +5 -14
  312. package/src/styles/06-components/_components.chart.scss +22 -19
  313. package/src/styles/06-components/_components.checkbox.scss +25 -17
  314. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
  315. package/src/styles/06-components/_components.edge-panel.scss +9 -2
  316. package/src/styles/06-components/_components.footer.scss +1 -1
  317. package/src/styles/06-components/_components.side-menu.scss +5 -5
  318. package/src/styles/06-components/_components.toggle.scss +18 -0
  319. package/src/styles/06-components/_index.scss +1 -1
  320. package/src/styles/06-components/old.chart.styles.scss +0 -2
  321. package/src/styles/99-utilities/_index.scss +2 -0
  322. package/src/styles/99-utilities/_utilities.border.scss +69 -27
  323. package/src/styles/99-utilities/_utilities.display.scss +1 -1
  324. package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
  325. package/src/styles/99-utilities/_utilities.position.scss +16 -9
  326. package/src/styles/99-utilities/_utilities.scss +2 -0
  327. package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
  328. package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
  329. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  330. package/src/styles/99-utilities/_utilities.text.scss +67 -46
  331. package/themes/dark-complementary/README.md +98 -0
  332. package/themes/dark-complementary/index.scss +158 -0
  333. package/themes/default-light/README.md +81 -0
  334. package/themes/default-light/index.scss +154 -0
  335. package/themes/high-contrast/README.md +105 -0
  336. package/themes/high-contrast/index.scss +172 -0
  337. package/themes/test-theme/README.md +38 -0
  338. package/themes/test-theme/index.scss +47 -0
  339. package/scripts/cli/templates-original-backup.js +0 -1655
  340. package/scripts/cli/templates_backup.js +0 -684
  341. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  342. package/src/lib/composables/useButton.ts +0 -93
  343. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -1,684 +0,0 @@
1
- /**
2
- * Atomix CLI - Templates and Data
3
- * Stores component templates and token generation functions
4
- */
5
-
6
- /**
7
- * Component templates for design system
8
- */
9
- export const componentTemplates = {
10
- react: {
11
- component: (name, options = {}) => `import React, { forwardRef, memo } from 'react';
12
- import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
13
-
14
- export interface ${name}Props {
15
- /**
16
- * Content to be rendered
17
- */
18
- children?: React.ReactNode;
19
-
20
- /**
21
- * Additional CSS classes
22
- */
23
- className?: string;
24
-
25
- /**
26
- * Size variant
27
- */
28
- size?: 'sm' | 'md' | 'lg';
29
-
30
- /**
31
- * Color variant
32
- */
33
- variant?: 'primary' | 'secondary' | 'success' | 'error';
34
-
35
- /**
36
- * Disabled state
37
- */
38
- disabled?: boolean;
39
-
40
- /**
41
- * Glass effect options
42
- */
43
- glass?: boolean | object;
44
-
45
- /**
46
- * Inline styles
47
- */
48
- style?: React.CSSProperties;
49
- }
50
-
51
- /**
52
- * ${name} component
53
- */
54
- export const ${name} = memo(
55
- forwardRef<HTMLDivElement, ${name}Props>(
56
- ({
57
- children,
58
- className = '',
59
- size = 'md',
60
- variant = 'primary',
61
- disabled = false,
62
- glass,
63
- style,
64
- ...props
65
- }, ref) => {
66
-
67
- const componentClass = [
68
- 'c-${name.toLowerCase()}',
69
- \`c-${name.toLowerCase()}--\${size}\`,
70
- \`c-${name.toLowerCase()}--\${variant}\`,
71
- disabled && 'is-disabled',
72
- glass && \`c-${name.toLowerCase()}--glass\`,
73
- className
74
- ].filter(Boolean).join(' ');
75
-
76
- const content = (
77
- <div
78
- ref={ref}
79
- className={componentClass}
80
- aria-disabled={disabled}
81
- style={style}
82
- {...props}
83
- >
84
- {children}
85
- </div>
86
- );
87
-
88
- if (glass) {
89
- return (
90
- <AtomixGlass
91
- className={\`c-${name.toLowerCase()}--glass\`}
92
- {...(typeof glass === 'object' ? glass : {})}
93
- >
94
- {content}
95
- </AtomixGlass>
96
- );
97
- }
98
-
99
- return content;
100
- }
101
- )
102
- );
103
-
104
- ${name}.displayName = '${name}';
105
-
106
- export default ${name};`,
107
-
108
- index: (name) => `export { default as ${name} } from './${name}';
109
- export type { ${name}Props } from './${name}';`,
110
-
111
- story: (name) => `import type { Meta, StoryObj } from '@storybook/react';
112
- import { ${name} } from './${name}';
113
-
114
- const meta: Meta<typeof ${name}> = {
115
- title: 'Components/${name}',
116
- component: ${name},
117
- parameters: {
118
- layout: 'centered',
119
- },
120
- tags: ['autodocs'],
121
- argTypes: {
122
- size: {
123
- control: 'select',
124
- options: ['sm', 'md', 'lg'],
125
- },
126
- variant: {
127
- control: 'select',
128
- options: ['primary', 'secondary', 'success', 'error'],
129
- },
130
- disabled: {
131
- control: 'boolean',
132
- },
133
- glass: {
134
- control: 'boolean',
135
- },
136
- },
137
- };
138
-
139
- export default meta;
140
- type Story = StoryObj<typeof meta>;
141
-
142
- export const Default: Story = {
143
- args: {
144
- children: '${name} Component',
145
- size: 'md',
146
- variant: 'primary',
147
- },
148
- };
149
-
150
- export const Small: Story = {
151
- args: {
152
- ...Default.args,
153
- size: 'sm',
154
- },
155
- };
156
-
157
- export const Large: Story = {
158
- args: {
159
- ...Default.args,
160
- size: 'lg',
161
- },
162
- };
163
-
164
- export const Glass: Story = {
165
- args: {
166
- ...Default.args,
167
- glass: true,
168
- },
169
- };
170
- `,
171
-
172
- test: (name) => `import { describe, it, expect } from 'vitest';
173
- import { render, screen } from '@testing-library/react';
174
- import { ${name} } from './${name}';
175
-
176
- describe('${name}', () => {
177
- it('renders children correctly', () => {
178
- render(<${name}>Test Content</${name}>);
179
- expect(screen.getByText('Test Content')).toBeInTheDocument();
180
- });
181
-
182
- it('applies size variant classes', () => {
183
- const { container } = render(<${name} size="lg">Content</${name}>);
184
- const element = container.firstChild;
185
- expect(element).toHaveClass('c-${name.toLowerCase()}--lg');
186
- });
187
-
188
- it('handles disabled state', () => {
189
- const { container } = render(<${name} disabled>Content</${name}>);
190
- const element = container.firstChild;
191
- expect(element).toHaveAttribute('aria-disabled', 'true');
192
- expect(element).toHaveClass('is-disabled');
193
- });
194
-
195
- it('forwards ref correctly', () => {
196
- const ref = React.createRef<HTMLDivElement>();
197
- render(<${name} ref={ref}>Content</${name}>);
198
- expect(ref.current).toBeInstanceOf(HTMLDivElement);
199
- });
200
- });`,
201
-
202
- scss: (name) => `// =============================================================================
203
- // ${name.toUpperCase()}
204
- // =============================================================================
205
-
206
- .c-${name.toLowerCase()} {
207
- // Layout
208
- display: flex;
209
- align-items: center;
210
- justify-content: center;
211
-
212
- // Spacing
213
- padding: spacing(3) spacing(4);
214
- gap: spacing(2);
215
-
216
- // Theme
217
- background-color: var(--atomix-bg-surface);
218
- color: var(--atomix-text-primary);
219
- border: 1px solid var(--atomix-border-default);
220
- border-radius: radius('md');
221
-
222
- // Typography
223
- @include font-size('base');
224
-
225
- // Interactions
226
- transition: all 0.2s ease;
227
-
228
- // Themes
229
- &--primary {
230
- background-color: var(--atomix-primary);
231
- color: var(--atomix-primary-content);
232
- border-color: var(--atomix-primary-dark);
233
- }
234
-
235
- &--secondary {
236
- background-color: var(--atomix-secondary);
237
- color: var(--atomix-secondary-content);
238
- border-color: var(--atomix-secondary-dark);
239
- }
240
-
241
- // Sizes
242
- &--sm {
243
- padding: spacing(2) spacing(3);
244
- @include font-size('sm');
245
- }
246
-
247
- &--lg {
248
- padding: spacing(4) spacing(5);
249
- @include font-size('lg');
250
- }
251
-
252
- // State
253
- &.is-disabled {
254
- opacity: 0.6;
255
- pointer-events: none;
256
- cursor: not-allowed;
257
- }
258
-
259
- // Glass variant
260
- &--glass {
261
- background: rgba(255, 255, 255, 0.1);
262
- backdrop-filter: blur(10px);
263
- border: 1px solid rgba(255, 255, 255, 0.2);
264
- }
265
- }
266
- `,
267
-
268
- scssModule: (name) => `` // Disabled/Empty as we prefer global SCSS
269
- }
270
- };
271
-
272
- // Token generation functions
273
- export function generateColorTokens() {
274
- return `// Custom Color Tokens
275
- // Generated by Atomix CLI
276
- // =============================================================================
277
-
278
- // Brand Colors
279
- // Customize these to match your brand identity
280
- $custom-primary-1: #fff9e6 !default;
281
- $custom-primary-2: #fff4cc !default;
282
- $custom-primary-3: #ffe699 !default;
283
- $custom-primary-4: #ffd966 !default;
284
- $custom-primary-5: #ffcc33 !default;
285
- $custom-primary-6: #ffb800 !default; // Main brand color
286
- $custom-primary-7: #e6a600 !default;
287
- $custom-primary-8: #cc9400 !default;
288
- $custom-primary-9: #b38200 !default;
289
- $custom-primary-10: #997000 !default;
290
-
291
- // Semantic Colors
292
- $custom-success: #22c55e !default;
293
- $custom-warning: #eab308 !default;
294
- $custom-error: #ef4444 !default;
295
- $custom-info: #3b82f6 !default;
296
-
297
- // Neutral Colors
298
- $custom-gray-1: #f9fafb !default;
299
- $custom-gray-2: #f3f4f6 !default;
300
- $custom-gray-3: #e5e7eb !default;
301
- $custom-gray-4: #d1d5db !default;
302
- $custom-gray-5: #9ca3af !default;
303
- $custom-gray-6: #6b7280 !default;
304
- $custom-gray-7: #4b5563 !default;
305
- $custom-gray-8: #374151 !default;
306
- $custom-gray-9: #1f2937 !default;
307
- $custom-gray-10: #111827 !default;
308
-
309
- // Background Colors
310
- $custom-body-bg: #ffffff !default;
311
- $custom-body-bg-dark: #1f2937 !default;
312
-
313
- // Text Colors
314
- $custom-body-color: $custom-gray-10 !default;
315
- $custom-body-color-dark: #ffffff !default;
316
-
317
- // Link Colors
318
- $custom-link-color: $custom-primary-6 !default;
319
- $custom-link-hover-color: $custom-primary-7 !default;
320
-
321
- // Border Colors
322
- $custom-border-color: $custom-gray-3 !default;
323
- $custom-border-color-dark: $custom-gray-7 !default;
324
-
325
- // Focus Colors
326
- $custom-focus-color: $custom-primary-5 !default;
327
- $custom-focus-color-dark: $custom-primary-4 !default;
328
-
329
- // Export custom colors to override defaults
330
- $primary: $custom-primary-6 !default;
331
- $success: $custom-success !default;
332
- $warning: $custom-warning !default;
333
- $error: $custom-error !default;
334
- $info: $custom-info !default;
335
-
336
- // Dark mode overrides
337
- $body-bg-dark: $custom-body-bg-dark !default;
338
- $body-color-dark: $custom-body-color-dark !default;
339
- $border-color-dark: $custom-border-color-dark !default;
340
- `;
341
- }
342
-
343
- export function generateSpacingTokens() {
344
- return `// Custom Spacing Tokens
345
- // Generated by Atomix CLI
346
- // =============================================================================
347
-
348
- // Base spacing unit (change this to scale all spacing)
349
- $custom-spacing-base: 0.25rem !default; // 4px
350
-
351
- // Spacing scale
352
- $custom-spacing-0: 0 !default;
353
- $custom-spacing-1: $custom-spacing-base !default; // 4px
354
- $custom-spacing-2: calc($custom-spacing-base * 2) !default; // 8px
355
- $custom-spacing-3: calc($custom-spacing-base * 3) !default; // 12px
356
- $custom-spacing-4: calc($custom-spacing-base * 4) !default; // 16px
357
- $custom-spacing-5: calc($custom-spacing-base * 5) !default; // 20px
358
- $custom-spacing-6: calc($custom-spacing-base * 6) !default; // 24px
359
- $custom-spacing-7: calc($custom-spacing-base * 7) !default; // 28px
360
- $custom-spacing-8: calc($custom-spacing-base * 8) !default; // 32px
361
- $custom-spacing-9: calc($custom-spacing-base * 9) !default; // 36px
362
- $custom-spacing-10: calc($custom-spacing-base * 10) !default; // 40px
363
- $custom-spacing-11: calc($custom-spacing-base * 11) !default; // 44px
364
- $custom-spacing-12: calc($custom-spacing-base * 12) !default; // 48px
365
- $custom-spacing-14: calc($custom-spacing-base * 14) !default; // 56px
366
- $custom-spacing-16: calc($custom-spacing-base * 16) !default; // 64px
367
- $custom-spacing-20: calc($custom-spacing-base * 20) !default; // 80px
368
- $custom-spacing-24: calc($custom-spacing-base * 24) !default; // 96px
369
- $custom-spacing-28: calc($custom-spacing-base * 28) !default; // 112px
370
- $custom-spacing-32: calc($custom-spacing-base * 32) !default; // 128px
371
- $custom-spacing-36: calc($custom-spacing-base * 36) !default; // 144px
372
- $custom-spacing-40: calc($custom-spacing-base * 40) !default; // 160px
373
- $custom-spacing-44: calc($custom-spacing-base * 44) !default; // 176px
374
- $custom-spacing-48: calc($custom-spacing-base * 48) !default; // 192px
375
- $custom-spacing-52: calc($custom-spacing-base * 52) !default; // 208px
376
- $custom-spacing-56: calc($custom-spacing-base * 56) !default; // 224px
377
- $custom-spacing-60: calc($custom-spacing-base * 60) !default; // 240px
378
- $custom-spacing-64: calc($custom-spacing-base * 64) !default; // 256px
379
-
380
- // Component-specific spacing
381
- $custom-button-padding-x: $custom-spacing-4 !default;
382
- $custom-button-padding-y: $custom-spacing-2 !default;
383
- $custom-card-padding: $custom-spacing-6 !default;
384
- $custom-modal-padding: $custom-spacing-8 !default;
385
-
386
- // Layout spacing
387
- $custom-container-padding: $custom-spacing-4 !default;
388
- $custom-grid-gap: $custom-spacing-6 !default;
389
- $custom-section-spacing: $custom-spacing-16 !default;
390
-
391
- // Export to override defaults
392
- $spacing-sizes: (
393
- 0: $custom-spacing-0,
394
- 1: $custom-spacing-1,
395
- 2: $custom-spacing-2,
396
- 3: $custom-spacing-3,
397
- 4: $custom-spacing-4,
398
- 5: $custom-spacing-5,
399
- 6: $custom-spacing-6,
400
- 7: $custom-spacing-7,
401
- 8: $custom-spacing-8,
402
- 9: $custom-spacing-9,
403
- 10: $custom-spacing-10,
404
- 12: $custom-spacing-12,
405
- 16: $custom-spacing-16,
406
- 20: $custom-spacing-20,
407
- 24: $custom-spacing-24,
408
- 32: $custom-spacing-32,
409
- 40: $custom-spacing-40,
410
- 48: $custom-spacing-48,
411
- 56: $custom-spacing-56,
412
- 64: $custom-spacing-64,
413
- ) !default;
414
- `;
415
- }
416
-
417
- export function generateTypographyTokens() {
418
- return `// Custom Typography Tokens
419
- // Generated by Atomix CLI
420
- // =============================================================================
421
-
422
- // Font Families
423
- $custom-font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
424
- $custom-font-family-serif: Georgia, "Times New Roman", Times, serif !default;
425
- $custom-font-family-mono: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
426
-
427
- // Font Size Scale
428
- $custom-font-size-xs: 0.75rem !default; // 12px
429
- $custom-font-size-sm: 0.875rem !default; // 14px
430
- $custom-font-size-base: 1rem !default; // 16px
431
- $custom-font-size-lg: 1.125rem !default; // 18px
432
- $custom-font-size-xl: 1.25rem !default; // 20px
433
- $custom-font-size-2xl: 1.5rem !default; // 24px
434
- $custom-font-size-3xl: 1.875rem !default; // 30px
435
- $custom-font-size-4xl: 2.25rem !default; // 36px
436
- $custom-font-size-5xl: 3rem !default; // 48px
437
- $custom-font-size-6xl: 3.75rem !default; // 60px
438
- $custom-font-size-7xl: 4.5rem !default; // 72px
439
- $custom-font-size-8xl: 6rem !default; // 96px
440
-
441
- // Line Heights
442
- $custom-line-height-tight: 1.2 !default;
443
- $custom-line-height-base: 1.5 !default;
444
- $custom-line-height-relaxed: 1.75 !default;
445
- $custom-line-height-loose: 2 !default;
446
-
447
- // Font Weights
448
- $custom-font-weight-light: 300 !default;
449
- $custom-font-weight-normal: 400 !default;
450
- $custom-font-weight-medium: 500 !default;
451
- $custom-font-weight-semibold: 600 !default;
452
- $custom-font-weight-bold: 700 !default;
453
- $custom-font-weight-heavy: 800 !default;
454
- $custom-font-weight-black: 900 !default;
455
-
456
- // Letter Spacing
457
- $custom-letter-spacing-tight: -0.05em !default;
458
- $custom-letter-spacing-normal: 0 !default;
459
- $custom-letter-spacing-wide: 0.025em !default;
460
- $custom-letter-spacing-wider: 0.05em !default;
461
- $custom-letter-spacing-widest: 0.1em !default;
462
-
463
- // Heading Sizes
464
- $custom-h1-font-size: $custom-font-size-5xl !default;
465
- $custom-h2-font-size: $custom-font-size-4xl !default;
466
- $custom-h3-font-size: $custom-font-size-3xl !default;
467
- $custom-h4-font-size: $custom-font-size-2xl !default;
468
- $custom-h5-font-size: $custom-font-size-xl !default;
469
- $custom-h6-font-size: $custom-font-size-lg !default;
470
-
471
- // Export to override defaults
472
- $font-family-base: $custom-font-family-sans !default;
473
- $font-family-monospace: $custom-font-family-mono !default;
474
- $font-size-base: $custom-font-size-base !default;
475
- $font-size-sm: $custom-font-size-sm !default;
476
- $font-size-lg: $custom-font-size-lg !default;
477
- $line-height-base: $custom-line-height-base !default;
478
- $font-weight-base: $custom-font-weight-normal !default;
479
-
480
- // Heading overrides
481
- $h1-font-size: $custom-h1-font-size !default;
482
- $h2-font-size: $custom-h2-font-size !default;
483
- $h3-font-size: $custom-h3-font-size !default;
484
- $h4-font-size: $custom-h4-font-size !default;
485
- $h5-font-size: $custom-h5-font-size !default;
486
- $h6-font-size: $custom-h6-font-size !default;
487
- `;
488
- }
489
-
490
- export function generateShadowTokens() {
491
- return `// Custom Box Shadow Tokens
492
- // Generated by Atomix CLI
493
- // =============================================================================
494
-
495
- // Shadow Colors
496
- $custom-shadow-color: rgba(0, 0, 0, 0.1) !default;
497
- $custom-shadow-color-dark: rgba(0, 0, 0, 0.2) !default;
498
-
499
- // Shadow Sizes
500
- $custom-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !default;
501
- $custom-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !default;
502
- $custom-shadow-base: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !default;
503
- $custom-shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !default;
504
- $custom-shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !default;
505
- $custom-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !default;
506
- $custom-shadow-2xl: 0 35px 60px -15px rgba(0, 0, 0, 0.3) !default;
507
- $custom-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !default;
508
- $custom-shadow-none: none !default;
509
-
510
- // Component-specific shadows
511
- $custom-button-shadow: $custom-shadow-sm !default;
512
- $custom-button-shadow-hover: $custom-shadow-md !default;
513
- $custom-card-shadow: $custom-shadow-base !default;
514
- $custom-dropdown-shadow: $custom-shadow-lg !default;
515
- $custom-modal-shadow: $custom-shadow-xl !default;
516
- $custom-popover-shadow: $custom-shadow-lg !default;
517
- $custom-tooltip-shadow: $custom-shadow-md !default;
518
-
519
- // Dark mode shadows
520
- $custom-shadow-xs-dark: 0 1px 2px 0 rgba(0, 0, 0, 0.3) !default;
521
- $custom-shadow-sm-dark: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.3) !default;
522
- $custom-shadow-base-dark: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3) !default;
523
- $custom-shadow-lg-dark: 0 20px 25px -5px rgba(0, 0, 0, 0.5), 0 10px 10px -5px rgba(0, 0, 0, 0.4) !default;
524
- $custom-shadow-xl-dark: 0 25px 50px -12px rgba(0, 0, 0, 0.6) !default;
525
-
526
- // Export to override defaults
527
- $box-shadow: $custom-shadow-base !default;
528
- $box-shadow-xs: $custom-shadow-xs !default;
529
- $box-shadow-sm: $custom-shadow-sm !default;
530
- $box-shadow-lg: $custom-shadow-lg !default;
531
- $box-shadow-xl: $custom-shadow-xl !default;
532
- $box-shadow-inset: $custom-shadow-inner !default;
533
-
534
- // Dark mode exports
535
- $box-shadow-dark: $custom-shadow-base-dark !default;
536
- $box-shadow-xs-dark: $custom-shadow-xs-dark !default;
537
- $box-shadow-sm-dark: $custom-shadow-sm-dark !default;
538
- $box-shadow-lg-dark: $custom-shadow-lg-dark !default;
539
- $box-shadow-xl-dark: $custom-shadow-xl-dark !default;
540
- `;
541
- }
542
-
543
- export function generateRadiusTokens() {
544
- return `// Custom Border Radius Tokens
545
- // Generated by Atomix CLI
546
- // =============================================================================
547
-
548
- // Base radius unit
549
- $custom-radius-base: 0.25rem !default; // 4px
550
-
551
- // Radius Scale
552
- $custom-radius-none: 0 !default;
553
- $custom-radius-sm: calc($custom-radius-base * 0.5) !default; // 2px
554
- $custom-radius-base: $custom-radius-base !default; // 4px
555
- $custom-radius-md: calc($custom-radius-base * 1.5) !default; // 6px
556
- $custom-radius-lg: calc($custom-radius-base * 2) !default; // 8px
557
- $custom-radius-xl: calc($custom-radius-base * 3) !default; // 12px
558
- $custom-radius-2xl: calc($custom-radius-base * 4) !default; // 16px
559
- $custom-radius-3xl: calc($custom-radius-base * 6) !default; // 24px
560
- $custom-radius-4xl: calc($custom-radius-base * 8) !default; // 32px
561
- $custom-radius-full: 9999px !default; // Fully rounded
562
-
563
- // Component-specific radius
564
- $custom-button-radius: $custom-radius-md !default;
565
- $custom-button-radius-sm: $custom-radius-sm !default;
566
- $custom-button-radius-lg: $custom-radius-lg !default;
567
- $custom-card-radius: $custom-radius-lg !default;
568
- $custom-input-radius: $custom-radius-md !default;
569
- $custom-badge-radius: $custom-radius-full !default;
570
- $custom-chip-radius: $custom-radius-full !default;
571
- $custom-tooltip-radius: $custom-radius-md !default;
572
- $custom-modal-radius: $custom-radius-xl !default;
573
- $custom-dropdown-radius: $custom-radius-lg !default;
574
-
575
- // Export to override defaults
576
- $border-radius: $custom-radius-md !default;
577
- $border-radius-sm: $custom-radius-sm !default;
578
- $border-radius-lg: $custom-radius-lg !default;
579
- $border-radius-xl: $custom-radius-xl !default;
580
- $border-radius-xxl: $custom-radius-2xl !default;
581
- $border-radius-3xl: $custom-radius-3xl !default;
582
- $border-radius-4xl: $custom-radius-4xl !default;
583
- $border-radius-pill: $custom-radius-full !default;
584
-
585
- // Component radius exports
586
- $btn-border-radius: $custom-button-radius !default;
587
- $btn-border-radius-sm: $custom-button-radius-sm !default;
588
- $btn-border-radius-lg: $custom-button-radius-lg !default;
589
- $card-border-radius: $custom-card-radius !default;
590
- $input-border-radius: $custom-input-radius !default;
591
- $badge-border-radius: $custom-badge-radius !default;
592
- `;
593
- }
594
-
595
- export function generateAnimationTokens() {
596
- return `// Custom Animation Tokens
597
- // Generated by Atomix CLI
598
- // =============================================================================
599
-
600
- // Transition Durations
601
- $custom-duration-instant: 0s !default;
602
- $custom-duration-fast: 0.15s !default;
603
- $custom-duration-base: 0.3s !default;
604
- $custom-duration-slow: 0.5s !default;
605
- $custom-duration-slower: 0.7s !default;
606
- $custom-duration-slowest: 1s !default;
607
-
608
- // Easing Functions
609
- $custom-ease-linear: linear !default;
610
- $custom-ease-in: cubic-bezier(0.4, 0, 1, 1) !default;
611
- $custom-ease-out: cubic-bezier(0, 0, 0.2, 1) !default;
612
- $custom-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1) !default;
613
- $custom-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55) !default;
614
- $custom-ease-smooth: cubic-bezier(0.23, 1, 0.32, 1) !default;
615
-
616
- // Transition Properties
617
- $custom-transition-all: all $custom-duration-base $custom-ease-smooth !default;
618
- $custom-transition-colors: background-color $custom-duration-base $custom-ease-smooth,
619
- border-color $custom-duration-base $custom-ease-smooth,
620
- color $custom-duration-base $custom-ease-smooth,
621
- fill $custom-duration-base $custom-ease-smooth,
622
- stroke $custom-duration-base $custom-ease-smooth !default;
623
- $custom-transition-opacity: opacity $custom-duration-base $custom-ease-smooth !default;
624
- $custom-transition-shadow: box-shadow $custom-duration-base $custom-ease-smooth !default;
625
- $custom-transition-transform: transform $custom-duration-base $custom-ease-smooth !default;
626
-
627
- // Component-specific transitions
628
- $custom-button-transition: $custom-transition-colors, $custom-transition-shadow, $custom-transition-transform !default;
629
- $custom-link-transition: $custom-transition-colors, text-decoration-color $custom-duration-base $custom-ease-smooth !default;
630
- $custom-input-transition: $custom-transition-colors, $custom-transition-shadow !default;
631
- $custom-card-transition: $custom-transition-shadow, $custom-transition-transform !default;
632
- $custom-modal-transition: $custom-transition-opacity, $custom-transition-transform !default;
633
- $custom-dropdown-transition: $custom-transition-opacity, $custom-transition-transform !default;
634
-
635
- // Animation Keyframes (examples)
636
- @keyframes custom-fade-in {
637
- from { opacity: 0; }
638
- to { opacity: 1; }
639
- }
640
-
641
- @keyframes custom-slide-in-up {
642
- from {
643
- transform: translateY(10px);
644
- opacity: 0;
645
- }
646
- to {
647
- transform: translateY(0);
648
- opacity: 1;
649
- }
650
- }
651
-
652
- @keyframes custom-scale-in {
653
- from {
654
- transform: scale(0.95);
655
- opacity: 0;
656
- }
657
- to {
658
- transform: scale(1);
659
- opacity: 1;
660
- }
661
- }
662
-
663
- @keyframes custom-spin {
664
- from { transform: rotate(0deg); }
665
- to { transform: rotate(360deg); }
666
- }
667
-
668
- // Export to override defaults
669
- $transition-fast: $custom-transition-all !default;
670
- $transition-base: $custom-transition-all !default;
671
- $transition-slow: all $custom-duration-slow $custom-ease-smooth !default;
672
-
673
- // Duration exports
674
- $transition-duration-fast: $custom-duration-fast !default;
675
- $transition-duration-base: $custom-duration-base !default;
676
- $transition-duration-slow: $custom-duration-slow !default;
677
-
678
- // Easing exports
679
- $easing-base: $custom-ease-smooth !default;
680
- $easing-ease-in-out: $custom-ease-in-out !default;
681
- $easing-ease-out: $custom-ease-out !default;
682
- $easing-ease-in: $custom-ease-in !default;
683
- `;
684
- }