@shohojdhara/atomix 0.2.1 → 0.2.3

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 (201) hide show
  1. package/README.md +1 -28
  2. package/dist/atomix.css +1500 -241
  3. package/dist/atomix.min.css +6 -6
  4. package/dist/index.d.ts +1052 -194
  5. package/dist/index.esm.js +12201 -6066
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.js +5481 -2827
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.min.js +1 -1
  10. package/dist/index.min.js.map +1 -1
  11. package/dist/themes/boomdevs.css +1500 -301
  12. package/dist/themes/boomdevs.min.css +60 -8
  13. package/dist/themes/esrar.css +1500 -241
  14. package/dist/themes/esrar.min.css +6 -6
  15. package/dist/themes/mashroom.css +1496 -237
  16. package/dist/themes/mashroom.min.css +8 -8
  17. package/dist/themes/shaj-default.css +1451 -192
  18. package/dist/themes/shaj-default.min.css +6 -6
  19. package/package.json +66 -15
  20. package/src/components/Accordion/Accordion.stories.tsx +137 -0
  21. package/src/components/Accordion/Accordion.tsx +33 -3
  22. package/src/components/AtomixGlass/AtomixGlass.stories.tsx +3011 -0
  23. package/src/components/AtomixGlass/AtomixGlass.test.tsx +199 -0
  24. package/src/components/AtomixGlass/AtomixGlass.tsx +1281 -0
  25. package/src/components/AtomixGlass/AtomixGlassComprehensivePreview.stories.tsx +1369 -0
  26. package/src/components/AtomixGlass/README.md +134 -0
  27. package/src/components/AtomixGlass/index.ts +10 -0
  28. package/src/components/AtomixGlass/shader-utils.ts +140 -0
  29. package/src/components/AtomixGlass/utils.ts +8 -0
  30. package/src/components/Badge/Badge.stories.tsx +169 -0
  31. package/src/components/Badge/Badge.tsx +27 -2
  32. package/src/components/Button/Button.stories.tsx +345 -0
  33. package/src/components/Button/Button.tsx +35 -3
  34. package/src/components/Button/README.md +216 -0
  35. package/src/components/Callout/Callout.stories.tsx +813 -78
  36. package/src/components/Callout/Callout.test.tsx +368 -0
  37. package/src/components/Callout/Callout.tsx +26 -7
  38. package/src/components/Callout/README.md +409 -0
  39. package/src/components/Card/Card.stories.tsx +140 -0
  40. package/src/components/Card/Card.tsx +19 -3
  41. package/src/components/DatePicker/DatePicker copy.tsx +551 -0
  42. package/src/components/DatePicker/DatePicker.stories.tsx +188 -0
  43. package/src/components/DatePicker/DatePicker.tsx +379 -332
  44. package/src/components/DatePicker/readme.md +110 -1
  45. package/src/components/DatePicker/types.ts +8 -0
  46. package/src/components/Dropdown/Dropdown.stories.tsx +145 -0
  47. package/src/components/Dropdown/Dropdown.tsx +34 -5
  48. package/src/components/Footer/Footer.stories.tsx +388 -0
  49. package/src/components/Footer/Footer.tsx +197 -0
  50. package/src/components/Footer/FooterLink.tsx +72 -0
  51. package/src/components/Footer/FooterSection.tsx +87 -0
  52. package/src/components/Footer/FooterSocialLink.tsx +117 -0
  53. package/src/components/Footer/README.md +261 -0
  54. package/src/components/Footer/index.ts +13 -0
  55. package/src/components/Form/Checkbox.stories.tsx +101 -0
  56. package/src/components/Form/Checkbox.tsx +26 -2
  57. package/src/components/Form/Input.stories.tsx +124 -0
  58. package/src/components/Form/Input.tsx +36 -7
  59. package/src/components/Form/Radio.stories.tsx +139 -0
  60. package/src/components/Form/Radio.tsx +26 -2
  61. package/src/components/Form/Select.stories.tsx +110 -0
  62. package/src/components/Form/Select.tsx +26 -2
  63. package/src/components/Form/Textarea.stories.tsx +104 -0
  64. package/src/components/Form/Textarea.tsx +36 -7
  65. package/src/components/Hero/Hero.stories.tsx +54 -1
  66. package/src/components/Hero/Hero.tsx +70 -11
  67. package/src/components/Modal/Modal.stories.tsx +235 -0
  68. package/src/components/Modal/Modal.tsx +64 -35
  69. package/src/components/Pagination/Pagination.stories.tsx +101 -0
  70. package/src/components/Pagination/Pagination.tsx +25 -1
  71. package/src/components/Popover/Popover.stories.tsx +94 -0
  72. package/src/components/Popover/Popover.tsx +30 -4
  73. package/src/components/Rating/Rating.stories.tsx +112 -0
  74. package/src/components/Rating/Rating.tsx +25 -1
  75. package/src/components/SectionIntro/SectionIntro.tsx +9 -11
  76. package/src/components/Slider/Slider.stories.tsx +634 -50
  77. package/src/components/Slider/Slider.tsx +5 -3
  78. package/src/components/Steps/Steps.stories.tsx +119 -0
  79. package/src/components/Steps/Steps.tsx +32 -1
  80. package/src/components/Tab/Tab.stories.tsx +88 -0
  81. package/src/components/Tab/Tab.tsx +32 -1
  82. package/src/components/Toggle/Toggle.stories.tsx +92 -0
  83. package/src/components/Toggle/Toggle.tsx +32 -1
  84. package/src/components/Tooltip/Tooltip.stories.tsx +131 -0
  85. package/src/components/Tooltip/Tooltip.tsx +43 -7
  86. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +1002 -196
  87. package/src/components/VideoPlayer/VideoPlayer.tsx +161 -4
  88. package/src/components/index.ts +14 -0
  89. package/src/layouts/Grid/Grid.stories.tsx +226 -159
  90. package/src/lib/composables/index.ts +4 -0
  91. package/src/lib/composables/useAtomixGlass.ts +71 -0
  92. package/src/lib/composables/useButton.ts +3 -1
  93. package/src/lib/composables/useCallout.ts +4 -1
  94. package/src/lib/composables/useFooter.ts +85 -0
  95. package/src/lib/composables/useGlassContainer.ts +168 -0
  96. package/src/lib/composables/useSlider.ts +191 -4
  97. package/src/lib/constants/components.ts +173 -0
  98. package/src/lib/types/components.ts +622 -0
  99. package/src/lib/utils/displacement-generator.ts +86 -0
  100. package/src/styles/01-settings/_index.scss +1 -0
  101. package/src/styles/01-settings/_settings.accordion.scss +20 -19
  102. package/src/styles/01-settings/_settings.animations.scss +5 -5
  103. package/src/styles/01-settings/_settings.avatar-group.scss +1 -1
  104. package/src/styles/01-settings/_settings.avatar.scss +17 -18
  105. package/src/styles/01-settings/_settings.background.scss +10 -0
  106. package/src/styles/01-settings/_settings.badge.scss +1 -1
  107. package/src/styles/01-settings/_settings.breadcrumb.scss +8 -2
  108. package/src/styles/01-settings/_settings.callout.scss +7 -7
  109. package/src/styles/01-settings/_settings.card.scss +2 -2
  110. package/src/styles/01-settings/_settings.chart.scss +7 -7
  111. package/src/styles/01-settings/_settings.checkbox-group.scss +5 -2
  112. package/src/styles/01-settings/_settings.checkbox.scss +10 -4
  113. package/src/styles/01-settings/_settings.countdown.scss +6 -4
  114. package/src/styles/01-settings/_settings.dropdown.scss +9 -7
  115. package/src/styles/01-settings/_settings.edge-panel.scss +3 -2
  116. package/src/styles/01-settings/_settings.footer.scss +125 -0
  117. package/src/styles/01-settings/_settings.form-group.scss +3 -1
  118. package/src/styles/01-settings/_settings.form.scss +4 -2
  119. package/src/styles/01-settings/_settings.hero.scss +9 -7
  120. package/src/styles/01-settings/_settings.input.scss +9 -7
  121. package/src/styles/01-settings/_settings.list-group.scss +4 -2
  122. package/src/styles/01-settings/_settings.list.scss +4 -2
  123. package/src/styles/01-settings/_settings.menu.scss +10 -8
  124. package/src/styles/01-settings/_settings.messages.scss +19 -17
  125. package/src/styles/01-settings/_settings.modal.scss +6 -4
  126. package/src/styles/01-settings/_settings.nav.scss +6 -4
  127. package/src/styles/01-settings/_settings.navbar.scss +8 -5
  128. package/src/styles/01-settings/_settings.pagination.scss +5 -3
  129. package/src/styles/01-settings/_settings.popover.scss +6 -4
  130. package/src/styles/01-settings/_settings.rating.scss +5 -3
  131. package/src/styles/01-settings/_settings.river.scss +8 -6
  132. package/src/styles/01-settings/_settings.sectionintro.scss +8 -6
  133. package/src/styles/01-settings/_settings.select.scss +7 -5
  134. package/src/styles/01-settings/_settings.side-menu.scss +15 -13
  135. package/src/styles/01-settings/_settings.spacing.scss +4 -0
  136. package/src/styles/01-settings/_settings.steps.scss +7 -5
  137. package/src/styles/01-settings/_settings.tabs.scss +7 -5
  138. package/src/styles/01-settings/_settings.testimonials.scss +6 -4
  139. package/src/styles/01-settings/_settings.toggle.scss +3 -1
  140. package/src/styles/01-settings/_settings.tooltip.scss +5 -3
  141. package/src/styles/01-settings/_settings.upload.scss +22 -20
  142. package/src/styles/02-tools/_tools.animations.scss +19 -0
  143. package/src/styles/02-tools/_tools.background.scss +87 -0
  144. package/src/styles/02-tools/_tools.glass.scss +1 -0
  145. package/src/styles/02-tools/_tools.rem.scss +18 -5
  146. package/src/styles/02-tools/_tools.utility-api.scss +32 -26
  147. package/src/styles/03-generic/_generic.root.scss +15 -2
  148. package/src/styles/04-elements/_elements.body.scss +6 -0
  149. package/src/styles/06-components/_components.accordion.scss +24 -4
  150. package/src/styles/06-components/_components.atomix-glass.scss +0 -0
  151. package/src/styles/06-components/_components.avatar-group.scss +2 -1
  152. package/src/styles/06-components/_components.avatar.scss +2 -1
  153. package/src/styles/06-components/_components.badge.scss +36 -1
  154. package/src/styles/06-components/_components.breadcrumb.scss +2 -1
  155. package/src/styles/06-components/_components.button.scss +14 -3
  156. package/src/styles/06-components/_components.callout.scss +44 -4
  157. package/src/styles/06-components/_components.card.scss +21 -2
  158. package/src/styles/06-components/_components.chart.scss +3 -2
  159. package/src/styles/06-components/_components.checkbox.scss +2 -1
  160. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -2
  161. package/src/styles/06-components/_components.countdown.scss +2 -1
  162. package/src/styles/06-components/_components.data-table.scss +7 -6
  163. package/src/styles/06-components/_components.datepicker.scss +20 -1
  164. package/src/styles/06-components/_components.dropdown.scss +11 -4
  165. package/src/styles/06-components/_components.edge-panel.scss +4 -3
  166. package/src/styles/06-components/_components.footer.scss +825 -0
  167. package/src/styles/06-components/_components.form-group.scss +1 -0
  168. package/src/styles/06-components/_components.hero.scss +4 -4
  169. package/src/styles/06-components/_components.image-gallery.scss +1 -0
  170. package/src/styles/06-components/_components.input.scss +33 -2
  171. package/src/styles/06-components/_components.list-group.scss +3 -2
  172. package/src/styles/06-components/_components.list.scss +2 -1
  173. package/src/styles/06-components/_components.menu.scss +5 -4
  174. package/src/styles/06-components/_components.messages.scss +8 -7
  175. package/src/styles/06-components/_components.modal.scss +3 -2
  176. package/src/styles/06-components/_components.nav.scss +6 -5
  177. package/src/styles/06-components/_components.navbar.scss +4 -3
  178. package/src/styles/06-components/_components.pagination.scss +2 -1
  179. package/src/styles/06-components/_components.photoviewer.scss +4 -3
  180. package/src/styles/06-components/_components.popover.scss +3 -2
  181. package/src/styles/06-components/_components.product-review.scss +3 -2
  182. package/src/styles/06-components/_components.progress.scss +3 -2
  183. package/src/styles/06-components/_components.river.scss +3 -2
  184. package/src/styles/06-components/_components.sectionintro.scss +2 -1
  185. package/src/styles/06-components/_components.select.scss +5 -4
  186. package/src/styles/06-components/_components.side-menu.scss +8 -7
  187. package/src/styles/06-components/_components.skeleton.scss +3 -2
  188. package/src/styles/06-components/_components.slider.scss +7 -6
  189. package/src/styles/06-components/_components.spinner.scss +1 -0
  190. package/src/styles/06-components/_components.steps.scss +3 -2
  191. package/src/styles/06-components/_components.tabs.scss +4 -3
  192. package/src/styles/06-components/_components.testimonials.scss +2 -1
  193. package/src/styles/06-components/_components.todo.scss +3 -2
  194. package/src/styles/06-components/_components.toggle.scss +5 -4
  195. package/src/styles/06-components/_components.tooltip.scss +3 -2
  196. package/src/styles/06-components/_components.upload.scss +4 -3
  197. package/src/styles/06-components/_components.video-player.scss +50 -27
  198. package/src/styles/06-components/_index.scss +2 -0
  199. package/src/styles/99-utilities/_utilities.glass-fixes.scss +48 -0
  200. package/dist/themes/yabai.css +0 -13711
  201. package/dist/themes/yabai.min.css +0 -189
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shohojdhara/atomix",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Atomix Design System - A modern component library for web applications",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -13,24 +13,75 @@
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
15
  "import": "./dist/index.esm.js",
16
- "require": "./dist/index.js"
16
+ "require": "./dist/index.js",
17
+ "default": "./dist/index.esm.js"
17
18
  },
18
19
  "./styles": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/atomix.css",
22
+ "require": "./dist/atomix.css",
23
+ "default": "./dist/atomix.css"
24
+ },
25
+ "./css": {
19
26
  "import": "./dist/atomix.css",
20
- "require": "./dist/atomix.min.css"
27
+ "require": "./dist/atomix.css",
28
+ "default": "./dist/atomix.css"
29
+ },
30
+ "./css/min": {
31
+ "import": "./dist/atomix.min.css",
32
+ "require": "./dist/atomix.min.css",
33
+ "default": "./dist/atomix.min.css"
34
+ },
35
+ "./scss": {
36
+ "import": "./src/styles/index.scss",
37
+ "require": "./src/styles/index.scss",
38
+ "default": "./src/styles/index.scss"
39
+ },
40
+ "./scss/settings": {
41
+ "import": "./src/styles/01-settings/_index.scss",
42
+ "require": "./src/styles/01-settings/_index.scss",
43
+ "default": "./src/styles/01-settings/_index.scss"
44
+ },
45
+ "./scss/tools": {
46
+ "import": "./src/styles/02-tools/_index.scss",
47
+ "require": "./src/styles/02-tools/_index.scss",
48
+ "default": "./src/styles/02-tools/_index.scss"
49
+ },
50
+ "./scss/generic": {
51
+ "import": "./src/styles/03-generic/_index.scss",
52
+ "require": "./src/styles/03-generic/_index.scss",
53
+ "default": "./src/styles/03-generic/_index.scss"
54
+ },
55
+ "./scss/elements": {
56
+ "import": "./src/styles/04-elements/_index.scss",
57
+ "require": "./src/styles/04-elements/_index.scss",
58
+ "default": "./src/styles/04-elements/_index.scss"
59
+ },
60
+ "./scss/objects": {
61
+ "import": "./src/styles/05-objects/_index.scss",
62
+ "require": "./src/styles/05-objects/_index.scss",
63
+ "default": "./src/styles/05-objects/_index.scss"
64
+ },
65
+ "./scss/components": {
66
+ "import": "./src/styles/06-components/_index.scss",
67
+ "require": "./src/styles/06-components/_index.scss",
68
+ "default": "./src/styles/06-components/_index.scss"
69
+ },
70
+ "./scss/utilities": {
71
+ "import": "./src/styles/99-utilities/_index.scss",
72
+ "require": "./src/styles/99-utilities/_index.scss",
73
+ "default": "./src/styles/99-utilities/_index.scss"
74
+ },
75
+ "./themes/*": {
76
+ "import": "./dist/themes/*.css",
77
+ "require": "./dist/themes/*.css",
78
+ "default": "./dist/themes/*.css"
79
+ },
80
+ "./themes/*.min": {
81
+ "import": "./dist/themes/*.min.css",
82
+ "require": "./dist/themes/*.min.css",
83
+ "default": "./dist/themes/*.min.css"
21
84
  },
22
- "./css": "./dist/atomix.css",
23
- "./css/min": "./dist/atomix.min.css",
24
- "./scss": "./src/styles/index.scss",
25
- "./scss/settings": "./src/styles/01-settings/_index.scss",
26
- "./scss/tools": "./src/styles/02-tools/_index.scss",
27
- "./scss/generic": "./src/styles/03-generic/_index.scss",
28
- "./scss/elements": "./src/styles/04-elements/_index.scss",
29
- "./scss/objects": "./src/styles/05-objects/_index.scss",
30
- "./scss/components": "./src/styles/06-components/_index.scss",
31
- "./scss/utilities": "./src/styles/99-utilities/_index.scss",
32
- "./themes/*": "./dist/themes/*.css",
33
- "./themes/*.min": "./dist/themes/*.min.css",
34
85
  "./package.json": "./package.json"
35
86
  },
36
87
  "dependencies": {
@@ -45,6 +45,10 @@ const meta = {
45
45
  control: 'text',
46
46
  description: 'Content inside the accordion',
47
47
  },
48
+ glass: {
49
+ control: 'boolean',
50
+ description: 'Enable glass morphism effect',
51
+ },
48
52
  },
49
53
  } satisfies Meta<typeof Accordion>;
50
54
 
@@ -269,3 +273,136 @@ export const Controlled: Story = {
269
273
  },
270
274
  },
271
275
  };
276
+
277
+ // Glass Variant
278
+ export const Glass: Story = {
279
+ args: {
280
+ title: 'Glass Accordion',
281
+ children: <p>This accordion has a glass morphism effect applied.</p>,
282
+ glass: true,
283
+ },
284
+ render: (args) => (
285
+ <div
286
+ style={{
287
+ background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
288
+ padding: '2rem',
289
+ borderRadius: '12px',
290
+ minHeight: '300px',
291
+ display: 'flex',
292
+ alignItems: 'center',
293
+ justifyContent: 'center',
294
+ }}
295
+ >
296
+ <div style={{ width: '100%', maxWidth: '500px' }}>
297
+ <Accordion {...args} />
298
+ </div>
299
+ </div>
300
+ ),
301
+ parameters: {
302
+ docs: {
303
+ description: {
304
+ story: 'This story demonstrates an Accordion with glass morphism effect enabled against a gradient background.',
305
+ },
306
+ },
307
+ },
308
+ };
309
+
310
+ // Glass with Custom Settings
311
+ export const GlassCustom: Story = {
312
+ args: {
313
+ title: 'Custom Glass Accordion',
314
+ children: <p>This accordion has custom glass morphism settings.</p>,
315
+ glass: {
316
+ displacementScale: 80,
317
+ blurAmount: 2,
318
+ saturation: 200,
319
+ aberrationIntensity: 0.8,
320
+ cornerRadius: 12,
321
+ },
322
+ },
323
+ render: (args) => (
324
+ <div
325
+ style={{
326
+ background: 'url(https://images.unsplash.com/photo-1660478481785-cb609142d9ab?q=80&w=2670&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D)',
327
+ backgroundSize: 'cover',
328
+ backgroundPosition: 'center',
329
+ padding: '2rem',
330
+ borderRadius: '12px',
331
+ minHeight: '400px',
332
+ display: 'flex',
333
+ alignItems: 'center',
334
+ justifyContent: 'center',
335
+ }}
336
+ >
337
+ <div style={{ width: '100%', maxWidth: '500px' }}>
338
+ <Accordion {...args} />
339
+ </div>
340
+ </div>
341
+ ),
342
+ parameters: {
343
+ docs: {
344
+ description: {
345
+ story: 'This story demonstrates an Accordion with custom glass morphism settings against a scenic background image.',
346
+ },
347
+ },
348
+ },
349
+ };
350
+
351
+ // Glass Accordion Group
352
+ export const GlassGroup: Story = {
353
+ args: {
354
+ title: 'Glass Accordion Group',
355
+ children: <p>Group example with glass effect - see render function</p>,
356
+ },
357
+ render: () => (
358
+ <div
359
+ style={{
360
+ background: 'url(https://images.unsplash.com/photo-1587289087865-396fc357ef9e?q=80&w=2670&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D)',
361
+ backgroundSize: '200% 200%',
362
+ animation: 'gradient 15s ease infinite',
363
+ padding: '2rem',
364
+ borderRadius: '12px',
365
+ minHeight: '500px',
366
+ }}
367
+ >
368
+ <style>
369
+ {`
370
+ @keyframes gradient {
371
+ 0% { background-position: 0% 50%; }
372
+ 50% { background-position: 100% 50%; }
373
+ 100% { background-position: 0% 50%; }
374
+ }
375
+ `}
376
+ </style>
377
+ <h2 style={{ color: 'white', textAlign: 'center', marginBottom: '2rem', textShadow: '0 2px 4px rgba(0,0,0,0.3)' }}>
378
+ Glass Accordion Group
379
+ </h2>
380
+ <div className="u-d-flex u-flex-column u-gap-3" style={{ width: '100%', maxWidth: '600px', margin: '0 auto' }}>
381
+ <Accordion title="First Glass Accordion" defaultOpen={true} glass>
382
+ <p>Content of the first glass accordion with beautiful glass morphism effect.</p>
383
+ </Accordion>
384
+
385
+ <Accordion title="Second Glass Accordion" glass>
386
+ <p>Content of the second glass accordion showcasing the glass effect.</p>
387
+ </Accordion>
388
+
389
+ <Accordion title="Third Glass Accordion" glass>
390
+ <p>Content of the third glass accordion with more content.</p>
391
+ <p>Additional paragraph to demonstrate scrolling and glass effects.</p>
392
+ <ul>
393
+ <li>Glass effect item 1</li>
394
+ <li>Glass effect item 2</li>
395
+ <li>Glass effect item 3</li>
396
+ </ul>
397
+ </Accordion>
398
+ </div>
399
+ </div>
400
+ ),
401
+ parameters: {
402
+ docs: {
403
+ description: {
404
+ story: 'This story demonstrates multiple Accordions with glass morphism effects against an animated gradient background.',
405
+ },
406
+ },
407
+ },
408
+ };
@@ -1,7 +1,8 @@
1
1
  import React, { ReactNode, useId } from 'react';
2
2
  import { ACCORDION } from '../../lib/constants/components';
3
3
  import { useAccordion } from '../../lib/composables/useAccordion';
4
- import { BaseComponentProps, IconPosition } from '../../lib/types/components';
4
+ import { BaseComponentProps, IconPosition, AtomixGlassProps } from '../../lib/types/components';
5
+ import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
5
6
 
6
7
  /**
7
8
  * Accordion component for showing/hiding content panels
@@ -41,6 +42,12 @@ export interface AccordionProps extends BaseComponentProps {
41
42
  * Callback when open state changes (for controlled mode)
42
43
  */
43
44
  onOpenChange?: (open: boolean) => void;
45
+
46
+ /**
47
+ * Glass morphism effect for the accordion
48
+ * Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
49
+ */
50
+ glass?: AtomixGlassProps | boolean;
44
51
  }
45
52
 
46
53
  export const Accordion: React.FC<AccordionProps> = ({
@@ -53,6 +60,7 @@ export const Accordion: React.FC<AccordionProps> = ({
53
60
  iconPosition = 'right',
54
61
  icon,
55
62
  className = '',
63
+ glass,
56
64
  }) => {
57
65
  // Generate unique IDs for accessibility
58
66
  const instanceId = useId();
@@ -95,8 +103,8 @@ export const Accordion: React.FC<AccordionProps> = ({
95
103
  </i>
96
104
  );
97
105
 
98
- return (
99
- <div className={generateClassNames(className)}>
106
+ const accordionContent = (
107
+ <div className={generateClassNames(className) + (glass ? ' c-accordion--glass' : '')}>
100
108
  <button
101
109
  id={buttonId}
102
110
  className={generateHeaderClassNames()}
@@ -122,6 +130,28 @@ export const Accordion: React.FC<AccordionProps> = ({
122
130
  </div>
123
131
  </div>
124
132
  );
133
+
134
+ if (glass) {
135
+ // Default glass settings for accordions
136
+ const defaultGlassProps = {
137
+ displacementScale: 20,
138
+ blurAmount: 10,
139
+ saturation: 140,
140
+ aberrationIntensity: 0.5,
141
+ cornerRadius: 8,
142
+ mode: 'shader' as const,
143
+ };
144
+
145
+ const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
146
+
147
+ return (
148
+ <AtomixGlass {...glassProps}>
149
+ {accordionContent}
150
+ </AtomixGlass>
151
+ );
152
+ }
153
+
154
+ return accordionContent;
125
155
  };
126
156
 
127
157
  // Set display name for debugging