@shohojdhara/atomix 0.3.15 → 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 (245) hide show
  1. package/build-tools/index.d.ts +31 -30
  2. package/build-tools/package.json +4 -21
  3. package/dist/atomix.css +20924 -2611
  4. package/dist/atomix.css.map +1 -1
  5. package/dist/atomix.min.css +76 -2
  6. package/dist/atomix.min.css.map +1 -1
  7. package/dist/build-tools/index.d.ts +31 -30
  8. package/dist/build-tools/package.json +4 -21
  9. package/dist/charts.js.map +1 -1
  10. package/dist/core.js.map +1 -1
  11. package/dist/forms.js.map +1 -1
  12. package/dist/heavy.js.map +1 -1
  13. package/dist/index.d.ts +144 -18
  14. package/dist/index.esm.js +110 -55
  15. package/dist/index.esm.js.map +1 -1
  16. package/dist/index.js +110 -55
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.min.js +1 -1
  19. package/dist/index.min.js.map +1 -1
  20. package/dist/layout.js.map +1 -1
  21. package/dist/theme.d.ts +9 -9
  22. package/dist/theme.js.map +1 -1
  23. package/package.json +1 -1
  24. package/src/components/Accordion/Accordion.stories.tsx +32 -23
  25. package/src/components/Accordion/Accordion.test.tsx +70 -50
  26. package/src/components/Accordion/Accordion.tsx +99 -94
  27. package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
  28. package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
  29. package/src/components/AtomixGlass/glass-utils.ts +4 -3
  30. package/src/components/AtomixGlass/shader-utils.ts +128 -52
  31. package/src/components/AtomixGlass/stories/Playground.stories.tsx +1 -1
  32. package/src/components/AtomixGlass/stories/Shaders.stories.tsx +1 -1
  33. package/src/components/Avatar/Avatar.stories.tsx +45 -62
  34. package/src/components/Avatar/Avatar.tsx +58 -56
  35. package/src/components/Badge/Badge.stories.tsx +20 -9
  36. package/src/components/Badge/Badge.test.tsx +41 -41
  37. package/src/components/Badge/Badge.tsx +64 -62
  38. package/src/components/Block/Block.stories.tsx +14 -4
  39. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +9 -8
  40. package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
  41. package/src/components/Button/Button.stories.tsx +13 -22
  42. package/src/components/Button/Button.test.tsx +97 -81
  43. package/src/components/Button/Button.tsx +46 -14
  44. package/src/components/Button/ButtonGroup.stories.tsx +37 -32
  45. package/src/components/Button/ButtonGroup.tsx +4 -15
  46. package/src/components/Callout/Callout.stories.tsx +109 -16
  47. package/src/components/Card/Card.stories.tsx +67 -36
  48. package/src/components/Card/Card.tsx +30 -14
  49. package/src/components/Chart/AreaChart.tsx +1 -1
  50. package/src/components/Chart/CandlestickChart.tsx +23 -16
  51. package/src/components/Chart/Chart.stories.tsx +4 -9
  52. package/src/components/Chart/Chart.tsx +40 -44
  53. package/src/components/Chart/ChartRenderer.tsx +39 -12
  54. package/src/components/Chart/ChartToolbar.tsx +21 -5
  55. package/src/components/Chart/DonutChart.tsx +1 -1
  56. package/src/components/Chart/FunnelChart.tsx +4 -1
  57. package/src/components/Chart/GaugeChart.tsx +3 -1
  58. package/src/components/Chart/HeatmapChart.tsx +50 -37
  59. package/src/components/Chart/LineChart.tsx +3 -2
  60. package/src/components/Chart/MultiAxisChart.tsx +24 -16
  61. package/src/components/Chart/RadarChart.tsx +19 -17
  62. package/src/components/Chart/ScatterChart.tsx +29 -21
  63. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +6 -2
  64. package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
  65. package/src/components/Countdown/Countdown.stories.tsx +7 -7
  66. package/src/components/DataTable/DataTable.stories.tsx +43 -38
  67. package/src/components/DataTable/DataTable.test.tsx +26 -148
  68. package/src/components/DataTable/DataTable.tsx +485 -456
  69. package/src/components/DatePicker/DatePicker.stories.tsx +32 -47
  70. package/src/components/DatePicker/DatePicker.tsx +31 -26
  71. package/src/components/Dropdown/Dropdown.stories.tsx +2 -5
  72. package/src/components/Dropdown/Dropdown.tsx +313 -299
  73. package/src/components/EdgePanel/EdgePanel.stories.tsx +6 -19
  74. package/src/components/EdgePanel/EdgePanel.tsx +1 -3
  75. package/src/components/Footer/Footer.stories.tsx +21 -16
  76. package/src/components/Footer/Footer.tsx +130 -128
  77. package/src/components/Footer/FooterLink.tsx +2 -2
  78. package/src/components/Form/Checkbox.test.tsx +49 -49
  79. package/src/components/Form/Checkbox.tsx +108 -100
  80. package/src/components/Form/Form.stories.tsx +2 -10
  81. package/src/components/Form/Input.stories.tsx +22 -39
  82. package/src/components/Form/Input.test.tsx +38 -44
  83. package/src/components/Form/Radio.stories.tsx +6 -12
  84. package/src/components/Form/Radio.tsx +68 -66
  85. package/src/components/Form/Select.tsx +184 -182
  86. package/src/components/Form/Textarea.test.tsx +27 -32
  87. package/src/components/Hero/Hero.stories.tsx +56 -23
  88. package/src/components/Hero/Hero.tsx +201 -55
  89. package/src/components/Icon/index.ts +7 -1
  90. package/src/components/List/List.tsx +19 -23
  91. package/src/components/Modal/Modal.stories.tsx +2 -1
  92. package/src/components/Modal/Modal.tsx +130 -127
  93. package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
  94. package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
  95. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
  96. package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
  97. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
  98. package/src/components/Pagination/Pagination.stories.tsx +7 -4
  99. package/src/components/Pagination/Pagination.tsx +199 -202
  100. package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
  101. package/src/components/Popover/Popover.stories.tsx +99 -192
  102. package/src/components/Popover/Popover.tsx +41 -37
  103. package/src/components/Progress/Progress.stories.tsx +35 -44
  104. package/src/components/River/River.stories.tsx +2 -1
  105. package/src/components/SectionIntro/SectionIntro.stories.tsx +71 -71
  106. package/src/components/Slider/Slider.stories.tsx +12 -4
  107. package/src/components/Spinner/Spinner.stories.tsx +3 -1
  108. package/src/components/Spinner/Spinner.test.tsx +23 -23
  109. package/src/components/Spinner/Spinner.tsx +43 -46
  110. package/src/components/Steps/Steps.stories.tsx +8 -6
  111. package/src/components/Tabs/Tabs.stories.tsx +12 -9
  112. package/src/components/Tabs/Tabs.tsx +74 -72
  113. package/src/components/Toggle/Toggle.stories.tsx +27 -13
  114. package/src/components/Toggle/Toggle.test.tsx +65 -70
  115. package/src/components/Toggle/Toggle.tsx +4 -1
  116. package/src/components/Tooltip/Tooltip.stories.tsx +24 -20
  117. package/src/components/Tooltip/Tooltip.tsx +104 -106
  118. package/src/components/Upload/Upload.stories.tsx +129 -127
  119. package/src/components/Upload/Upload.tsx +287 -283
  120. package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
  121. package/src/components/index.ts +13 -2
  122. package/src/layouts/Grid/Grid.stories.tsx +9 -3
  123. package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
  124. package/src/lib/__tests__/theme-tools.test.ts +32 -6
  125. package/src/lib/composables/shared-mouse-tracker.ts +13 -14
  126. package/src/lib/composables/useAtomixGlass.ts +106 -49
  127. package/src/lib/composables/useChartExport.ts +1 -1
  128. package/src/lib/composables/useDataTable.ts +29 -17
  129. package/src/lib/composables/useHero.ts +58 -14
  130. package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
  131. package/src/lib/composables/useInput.ts +10 -8
  132. package/src/lib/composables/useSideMenu.ts +6 -5
  133. package/src/lib/composables/useTooltip.ts +1 -2
  134. package/src/lib/composables/useVideoPlayer.ts +44 -35
  135. package/src/lib/config/index.ts +154 -154
  136. package/src/lib/constants/cssVariables.ts +29 -29
  137. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
  138. package/src/lib/hooks/index.ts +1 -1
  139. package/src/lib/hooks/useComponentCustomization.ts +11 -17
  140. package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
  141. package/src/lib/patterns/__tests__/slots.test.ts +1 -1
  142. package/src/lib/patterns/index.ts +1 -1
  143. package/src/lib/patterns/slots.tsx +8 -13
  144. package/src/lib/storybook/InteractiveDemo.tsx +13 -18
  145. package/src/lib/storybook/PreviewContainer.tsx +1 -1
  146. package/src/lib/storybook/VariantsGrid.tsx +3 -7
  147. package/src/lib/storybook/index.ts +1 -1
  148. package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
  149. package/src/lib/theme/adapters/index.ts +3 -9
  150. package/src/lib/theme/adapters/themeAdapter.ts +41 -26
  151. package/src/lib/theme/config/index.ts +1 -1
  152. package/src/lib/theme/config/types.ts +2 -2
  153. package/src/lib/theme/config/validator.ts +10 -5
  154. package/src/lib/theme/constants/constants.ts +2 -2
  155. package/src/lib/theme/constants/index.ts +1 -2
  156. package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
  157. package/src/lib/theme/core/composeTheme.ts +32 -26
  158. package/src/lib/theme/core/createTheme.ts +1 -1
  159. package/src/lib/theme/core/createThemeObject.ts +308 -301
  160. package/src/lib/theme/core/index.ts +3 -3
  161. package/src/lib/theme/devtools/CLI.ts +106 -104
  162. package/src/lib/theme/devtools/Comparator.tsx +50 -32
  163. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
  164. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
  165. package/src/lib/theme/devtools/Inspector.tsx +75 -60
  166. package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
  167. package/src/lib/theme/devtools/Preview.tsx +150 -106
  168. package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
  169. package/src/lib/theme/devtools/index.ts +3 -9
  170. package/src/lib/theme/devtools/useHistory.ts +23 -21
  171. package/src/lib/theme/errors/errors.ts +12 -11
  172. package/src/lib/theme/errors/index.ts +2 -7
  173. package/src/lib/theme/generators/generateCSS.ts +9 -13
  174. package/src/lib/theme/generators/generateCSSNested.ts +1 -6
  175. package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
  176. package/src/lib/theme/generators/index.ts +1 -4
  177. package/src/lib/theme/i18n/index.ts +1 -1
  178. package/src/lib/theme/i18n/rtl.ts +13 -13
  179. package/src/lib/theme/index.ts +7 -16
  180. package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
  181. package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
  182. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
  183. package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
  184. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
  185. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
  186. package/src/lib/theme/runtime/index.ts +2 -5
  187. package/src/lib/theme/runtime/useTheme.ts +18 -18
  188. package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
  189. package/src/lib/theme/test/testTheme.ts +15 -16
  190. package/src/lib/theme/tokens/index.ts +2 -7
  191. package/src/lib/theme/tokens/tokens.ts +25 -24
  192. package/src/lib/theme/types.ts +428 -411
  193. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
  194. package/src/lib/theme/utils/componentTheming.ts +18 -18
  195. package/src/lib/theme/utils/domUtils.ts +277 -289
  196. package/src/lib/theme/utils/index.ts +1 -2
  197. package/src/lib/theme/utils/injectCSS.ts +10 -14
  198. package/src/lib/theme/utils/naming.ts +20 -16
  199. package/src/lib/theme/utils/themeHelpers.ts +10 -12
  200. package/src/lib/theme/utils/themeUtils.ts +85 -86
  201. package/src/lib/theme/utils/themeValidation.ts +82 -33
  202. package/src/lib/theme-tools.ts +8 -6
  203. package/src/lib/types/components.ts +172 -71
  204. package/src/lib/types/partProps.ts +1 -1
  205. package/src/lib/utils/__tests__/csv.test.ts +1 -1
  206. package/src/lib/utils/componentUtils.ts +8 -12
  207. package/src/lib/utils/csv.ts +3 -1
  208. package/src/lib/utils/dataTableExport.ts +1 -5
  209. package/src/lib/utils/fontPreloader.ts +10 -19
  210. package/src/lib/utils/icons.ts +4 -1
  211. package/src/lib/utils/index.ts +2 -6
  212. package/src/lib/utils/memoryMonitor.ts +10 -8
  213. package/src/lib/utils/themeNaming.ts +2 -2
  214. package/src/styles/01-settings/_index.scss +0 -1
  215. package/src/styles/01-settings/_settings.colors.scss +8 -8
  216. package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
  217. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  218. package/src/styles/01-settings/_settings.spacing.scss +3 -4
  219. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  220. package/src/styles/01-settings/_settings.typography.scss +1 -1
  221. package/src/styles/02-tools/_tools.button.scss +51 -21
  222. package/src/styles/02-tools/_tools.utility-api.scss +30 -18
  223. package/src/styles/03-generic/_generic.root.scss +4 -3
  224. package/src/styles/06-components/_components.atomix-glass.scss +13 -9
  225. package/src/styles/06-components/_components.button.scss +16 -4
  226. package/src/styles/06-components/_components.callout.scss +27 -21
  227. package/src/styles/06-components/_components.card.scss +5 -14
  228. package/src/styles/06-components/_components.chart.scss +22 -19
  229. package/src/styles/06-components/_components.checkbox.scss +3 -1
  230. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
  231. package/src/styles/06-components/_components.edge-panel.scss +9 -2
  232. package/src/styles/06-components/_components.footer.scss +1 -1
  233. package/src/styles/06-components/_components.side-menu.scss +5 -5
  234. package/src/styles/06-components/_components.toggle.scss +18 -0
  235. package/src/styles/06-components/_index.scss +1 -1
  236. package/src/styles/06-components/old.chart.styles.scss +0 -2
  237. package/src/styles/99-utilities/_utilities.border.scss +69 -27
  238. package/src/styles/99-utilities/_utilities.display.scss +1 -1
  239. package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
  240. package/src/styles/99-utilities/_utilities.position.scss +16 -9
  241. package/src/styles/99-utilities/_utilities.scss +1 -1
  242. package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
  243. package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
  244. package/src/styles/99-utilities/_utilities.text-gradient.scss +30 -30
  245. package/src/styles/99-utilities/_utilities.text.scss +67 -46
@@ -5,7 +5,7 @@ import { Popover, PopoverTrigger } from './Popover';
5
5
  import { Toggle } from '../Toggle/Toggle';
6
6
  import { Button } from '../Button/Button';
7
7
 
8
- const meta = {
8
+ const meta: Meta<typeof Popover> = {
9
9
  title: 'Components/Popover',
10
10
  component: Popover,
11
11
  parameters: {
@@ -113,7 +113,7 @@ Popover displays floating content relative to a trigger element. It provides a f
113
113
  description: 'Delay in milliseconds before showing the popover',
114
114
  table: {
115
115
  type: { summary: 'number' },
116
- defaultValue: { summary: 0 },
116
+ defaultValue: { summary: '0' },
117
117
  },
118
118
  },
119
119
  offset: {
@@ -121,7 +121,7 @@ Popover displays floating content relative to a trigger element. It provides a f
121
121
  description: 'Offset distance from the trigger element',
122
122
  table: {
123
123
  type: { summary: 'number' },
124
- defaultValue: { summary: 12 },
124
+ defaultValue: { summary: '12' },
125
125
  },
126
126
  },
127
127
  defaultOpen: {
@@ -129,7 +129,7 @@ Popover displays floating content relative to a trigger element. It provides a f
129
129
  description: 'Whether the popover is initially open',
130
130
  table: {
131
131
  type: { summary: 'boolean' },
132
- defaultValue: { summary: false },
132
+ defaultValue: { summary: 'false' },
133
133
  },
134
134
  },
135
135
  closeOnClickOutside: {
@@ -137,7 +137,7 @@ Popover displays floating content relative to a trigger element. It provides a f
137
137
  description: 'Whether to close the popover when clicking outside',
138
138
  table: {
139
139
  type: { summary: 'boolean' },
140
- defaultValue: { summary: true },
140
+ defaultValue: { summary: 'true' },
141
141
  },
142
142
  },
143
143
  closeOnEscape: {
@@ -145,7 +145,7 @@ Popover displays floating content relative to a trigger element. It provides a f
145
145
  description: 'Whether to close the popover when pressing Escape key',
146
146
  table: {
147
147
  type: { summary: 'boolean' },
148
- defaultValue: { summary: true },
148
+ defaultValue: { summary: 'true' },
149
149
  },
150
150
  },
151
151
  className: {
@@ -161,11 +161,11 @@ Popover displays floating content relative to a trigger element. It provides a f
161
161
  description: 'Enable glass morphism effect',
162
162
  table: {
163
163
  type: { summary: 'boolean' },
164
- defaultValue: { summary: false },
164
+ defaultValue: { summary: 'false' },
165
165
  },
166
166
  },
167
167
  },
168
- } satisfies Meta<typeof Popover>;
168
+ };
169
169
 
170
170
  export default meta;
171
171
  type Story = StoryObj<typeof meta>;
@@ -213,18 +213,17 @@ const InteractivePopover = (args: React.ComponentProps<typeof Popover>) => {
213
213
 
214
214
  return (
215
215
  <div style={{ display: 'flex', justifyContent: 'center', padding: '100px' }}>
216
- <Popover {...args}>
216
+ <Popover {...args} content={content}>
217
217
  <PopoverTrigger>
218
218
  <Button variant="primary">Open Popover</Button>
219
219
  </PopoverTrigger>
220
- {content}
221
220
  </Popover>
222
221
  </div>
223
222
  );
224
223
  };
225
224
 
226
225
  export const BasicUsage: Story = {
227
- render: (args) => <InteractivePopover {...args} />,
226
+ render: args => <InteractivePopover {...args} content={undefined} />,
228
227
  args: {
229
228
  position: 'top',
230
229
  trigger: 'click',
@@ -243,88 +242,41 @@ export const BasicUsage: Story = {
243
242
  export const AllPositions: Story = {
244
243
  render: () => {
245
244
  const content = <div style={{ padding: '20px' }}>Popover Content</div>;
246
-
245
+
247
246
  return (
248
- <div style={{
249
- display: 'grid',
250
- gridTemplateColumns: 'repeat(3, 1fr)',
251
- gap: '20px',
252
- padding: '50px',
253
- alignItems: 'center',
254
- justifyItems: 'center',
255
- height: '500px'
256
- }}>
257
- <div>
258
- <Popover position="top-start">
259
- <PopoverTrigger>
260
- <Button variant="primary">Top Start</Button>
261
- </PopoverTrigger>
262
- {content}
263
- </Popover>
264
- </div>
265
- <div>
266
- <Popover position="top">
267
- <PopoverTrigger>
268
- <Button variant="primary">Top</Button>
269
- </PopoverTrigger>
270
- {content}
271
- </Popover>
272
- </div>
273
- <div>
274
- <Popover position="top-end">
275
- <PopoverTrigger>
276
- <Button variant="primary">Top End</Button>
277
- </PopoverTrigger>
278
- {content}
279
- </Popover>
280
- </div>
281
-
282
- <div>
283
- <Popover position="left">
284
- <PopoverTrigger>
285
- <Button variant="primary">Left</Button>
286
- </PopoverTrigger>
287
- {content}
288
- </Popover>
289
- </div>
290
-
291
- <div style={{ textAlign: 'center' }}>
292
- <p>All popover positions</p>
293
- </div>
294
-
295
- <div>
296
- <Popover position="right">
297
- <PopoverTrigger>
298
- <Button variant="primary">Right</Button>
299
- </PopoverTrigger>
300
- {content}
301
- </Popover>
302
- </div>
303
-
304
- <div>
305
- <Popover position="bottom-start">
306
- <PopoverTrigger>
307
- <Button variant="primary">Bottom Start</Button>
308
- </PopoverTrigger>
309
- {content}
310
- </Popover>
311
- </div>
312
- <div>
313
- <Popover position="bottom">
314
- <PopoverTrigger>
315
- <Button variant="primary">Bottom</Button>
316
- </PopoverTrigger>
317
- {content}
318
- </Popover>
319
- </div>
320
- <div>
321
- <Popover position="bottom-end">
322
- <PopoverTrigger>
323
- <Button variant="primary">Bottom End</Button>
324
- </PopoverTrigger>
325
- {content}
326
- </Popover>
327
- </div>
247
+ <div
248
+ style={{
249
+ display: 'flex',
250
+ justifyContent: 'center',
251
+ gap: '20px',
252
+ padding: '50px',
253
+ alignItems: 'center',
254
+ height: '300px',
255
+ }}
256
+ >
257
+ <Popover position="left" content={content}>
258
+ <PopoverTrigger>
259
+ <Button variant="primary">Left</Button>
260
+ </PopoverTrigger>
261
+ </Popover>
262
+
263
+ <Popover position="top" content={content}>
264
+ <PopoverTrigger>
265
+ <Button variant="primary">Top</Button>
266
+ </PopoverTrigger>
267
+ </Popover>
268
+
269
+ <Popover position="bottom" content={content}>
270
+ <PopoverTrigger>
271
+ <Button variant="primary">Bottom</Button>
272
+ </PopoverTrigger>
273
+ </Popover>
274
+
275
+ <Popover position="right" content={content}>
276
+ <PopoverTrigger>
277
+ <Button variant="primary">Right</Button>
278
+ </PopoverTrigger>
279
+ </Popover>
328
280
  </div>
329
281
  );
330
282
  },
@@ -338,19 +290,23 @@ export const AllPositions: Story = {
338
290
  };
339
291
 
340
292
  export const WithGlassEffect: Story = {
341
- render: (args) => (
342
- <div style={{
343
- display: 'flex',
344
- justifyContent: 'center',
345
- padding: '100px',
346
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
347
- minHeight: '300px'
348
- }}>
349
- <Popover {...args}>
293
+ render: args => (
294
+ <div
295
+ style={{
296
+ display: 'flex',
297
+ justifyContent: 'center',
298
+ padding: '100px',
299
+ background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
300
+ minHeight: '300px',
301
+ }}
302
+ >
303
+ <Popover
304
+ {...args}
305
+ content={<div style={{ padding: '20px' }}>Glass Effect Popover Content</div>}
306
+ >
350
307
  <PopoverTrigger>
351
308
  <Button variant="primary">Open Glass Popover</Button>
352
309
  </PopoverTrigger>
353
- <div style={{ padding: '20px' }}>Glass Effect Popover Content</div>
354
310
  </Popover>
355
311
  </div>
356
312
  ),
@@ -374,7 +330,7 @@ export const WithGlassEffect: Story = {
374
330
  * Glass morphism popover example.
375
331
  */
376
332
  export const GlassPopover: Story = {
377
- render: args => <InteractivePopover {...args} />,
333
+ render: args => <InteractivePopover {...args} content={undefined} />,
378
334
  args: {
379
335
  position: 'top',
380
336
  trigger: 'click',
@@ -404,7 +360,7 @@ export const GlassPopover: Story = {
404
360
  * Glass popover with custom settings.
405
361
  */
406
362
  export const GlassPopoverCustom: Story = {
407
- render: (args) => {
363
+ render: args => {
408
364
  const selectOptions = [
409
365
  { value: '1', label: 'Option 1' },
410
366
  { value: '2', label: 'Option 2' },
@@ -446,11 +402,10 @@ export const GlassPopoverCustom: Story = {
446
402
 
447
403
  return (
448
404
  <div style={{ display: 'flex', justifyContent: 'center', padding: '100px' }}>
449
- <Popover {...args}>
405
+ <Popover {...args} content={content}>
450
406
  <PopoverTrigger>
451
407
  <Button variant="primary">Open Popover</Button>
452
408
  </PopoverTrigger>
453
- {content}
454
409
  </Popover>
455
410
  </div>
456
411
  );
@@ -491,7 +446,7 @@ export const GlassPopoverCustom: Story = {
491
446
  * Glass popover with hover trigger.
492
447
  */
493
448
  export const GlassPopoverHover: Story = {
494
- render: (args) => {
449
+ render: args => {
495
450
  const selectOptions = [
496
451
  { value: '1', label: 'Option 1' },
497
452
  { value: '2', label: 'Option 2' },
@@ -533,11 +488,10 @@ export const GlassPopoverHover: Story = {
533
488
 
534
489
  return (
535
490
  <div style={{ display: 'flex', justifyContent: 'center', padding: '100px' }}>
536
- <Popover {...args}>
491
+ <Popover {...args} content={content}>
537
492
  <PopoverTrigger>
538
493
  <Button variant="primary">Open Popover</Button>
539
494
  </PopoverTrigger>
540
- {content}
541
495
  </Popover>
542
496
  </div>
543
497
  );
@@ -571,91 +525,44 @@ export const GlassPopoverHover: Story = {
571
525
  * Glass popover with different positions.
572
526
  */
573
527
  export const GlassPopoverPositions: Story = {
574
- render: (args) => {
528
+ render: args => {
575
529
  const content = <div style={{ padding: '20px' }}>Popover Content</div>;
576
-
530
+
577
531
  return (
578
- <div style={{
579
- display: 'grid',
580
- gridTemplateColumns: 'repeat(3, 1fr)',
581
- gap: '20px',
582
- padding: '50px',
583
- alignItems: 'center',
584
- justifyItems: 'center',
585
- height: '500px',
586
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'
587
- }}>
588
- <div>
589
- <Popover {...args} position="top-start">
590
- <PopoverTrigger>
591
- <Button variant="primary">Top Start</Button>
592
- </PopoverTrigger>
593
- {content}
594
- </Popover>
595
- </div>
596
- <div>
597
- <Popover {...args} position="top">
598
- <PopoverTrigger>
599
- <Button variant="primary">Top</Button>
600
- </PopoverTrigger>
601
- {content}
602
- </Popover>
603
- </div>
604
- <div>
605
- <Popover {...args} position="top-end">
606
- <PopoverTrigger>
607
- <Button variant="primary">Top End</Button>
608
- </PopoverTrigger>
609
- {content}
610
- </Popover>
611
- </div>
612
-
613
- <div>
614
- <Popover {...args} position="left">
615
- <PopoverTrigger>
616
- <Button variant="primary">Left</Button>
617
- </PopoverTrigger>
618
- {content}
619
- </Popover>
620
- </div>
621
-
622
- <div style={{ textAlign: 'center' }}>
623
- <p>All popover positions</p>
624
- </div>
625
-
626
- <div>
627
- <Popover {...args} position="right">
628
- <PopoverTrigger>
629
- <Button variant="primary">Right</Button>
630
- </PopoverTrigger>
631
- {content}
632
- </Popover>
633
- </div>
634
-
635
- <div>
636
- <Popover {...args} position="bottom-start">
637
- <PopoverTrigger>
638
- <Button variant="primary">Bottom Start</Button>
639
- </PopoverTrigger>
640
- {content}
641
- </Popover>
642
- </div>
643
- <div>
644
- <Popover {...args} position="bottom">
645
- <PopoverTrigger>
646
- <Button variant="primary">Bottom</Button>
647
- </PopoverTrigger>
648
- {content}
649
- </Popover>
650
- </div>
651
- <div>
652
- <Popover {...args} position="bottom-end">
653
- <PopoverTrigger>
654
- <Button variant="primary">Bottom End</Button>
655
- </PopoverTrigger>
656
- {content}
657
- </Popover>
658
- </div>
532
+ <div
533
+ style={{
534
+ display: 'flex',
535
+ justifyContent: 'center',
536
+ gap: '20px',
537
+ padding: '50px',
538
+ alignItems: 'center',
539
+ height: '300px',
540
+ background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
541
+ }}
542
+ >
543
+ <Popover {...args} position="left" content={content}>
544
+ <PopoverTrigger>
545
+ <Button variant="primary">Left</Button>
546
+ </PopoverTrigger>
547
+ </Popover>
548
+
549
+ <Popover {...args} position="top" content={content}>
550
+ <PopoverTrigger>
551
+ <Button variant="primary">Top</Button>
552
+ </PopoverTrigger>
553
+ </Popover>
554
+
555
+ <Popover {...args} position="bottom" content={content}>
556
+ <PopoverTrigger>
557
+ <Button variant="primary">Bottom</Button>
558
+ </PopoverTrigger>
559
+ </Popover>
560
+
561
+ <Popover {...args} position="right" content={content}>
562
+ <PopoverTrigger>
563
+ <Button variant="primary">Right</Button>
564
+ </PopoverTrigger>
565
+ </Popover>
659
566
  </div>
660
567
  );
661
568
  },
@@ -106,7 +106,10 @@ export const Popover: React.FC<PopoverProps> = ({
106
106
  <div className="c-popover__content-inner">{content}</div>
107
107
  </div>
108
108
  )}
109
- <div ref={arrowRef as React.RefObject<HTMLDivElement>} className="c-popover__arrow"></div>
109
+ <div
110
+ ref={arrowRef as React.RefObject<HTMLDivElement>}
111
+ className="c-popover__arrow"
112
+ ></div>
110
113
  </div>,
111
114
  document.body
112
115
  )}
@@ -119,43 +122,44 @@ export const Popover: React.FC<PopoverProps> = ({
119
122
  */
120
123
  export const PopoverTrigger = forwardRef<HTMLElement, PopoverTriggerProps>(
121
124
  ({ children, trigger: triggerProp }, ref) => {
122
- const { isOpen, setIsOpen, triggerRef, popoverId, triggerType } =
123
- React.useContext(PopoverContext);
124
-
125
- // Determine which trigger type to use - prop from PopoverTrigger or from context
126
- const effectiveTrigger = triggerProp || triggerType;
127
-
128
- // Handle trigger events
129
- const handleClick = () => {
130
- setIsOpen(!isOpen);
131
- };
132
-
133
- const handleMouseEnter = () => {
134
- setIsOpen(true);
135
- };
136
-
137
- const handleMouseLeave = () => {
138
- setIsOpen(false);
139
- };
140
-
141
- // Clone the children element with additional props
142
- const child = React.Children.only(children) as React.ReactElement;
143
-
144
- const triggerProps: any = {
145
- ref: ref || triggerRef,
146
- 'aria-describedby': popoverId,
147
- 'aria-expanded': isOpen,
148
- };
149
-
150
- if (effectiveTrigger === 'click') {
151
- triggerProps.onClick = handleClick;
152
- } else if (effectiveTrigger === 'hover') {
153
- triggerProps.onMouseEnter = handleMouseEnter;
154
- triggerProps.onMouseLeave = handleMouseLeave;
125
+ const { isOpen, setIsOpen, triggerRef, popoverId, triggerType } =
126
+ React.useContext(PopoverContext);
127
+
128
+ // Determine which trigger type to use - prop from PopoverTrigger or from context
129
+ const effectiveTrigger = triggerProp || triggerType;
130
+
131
+ // Handle trigger events
132
+ const handleClick = () => {
133
+ setIsOpen(!isOpen);
134
+ };
135
+
136
+ const handleMouseEnter = () => {
137
+ setIsOpen(true);
138
+ };
139
+
140
+ const handleMouseLeave = () => {
141
+ setIsOpen(false);
142
+ };
143
+
144
+ // Clone the children element with additional props
145
+ const child = React.Children.only(children) as React.ReactElement;
146
+
147
+ const triggerProps: any = {
148
+ ref: ref || triggerRef,
149
+ 'aria-describedby': popoverId,
150
+ 'aria-expanded': isOpen,
151
+ };
152
+
153
+ if (effectiveTrigger === 'click') {
154
+ triggerProps.onClick = handleClick;
155
+ } else if (effectiveTrigger === 'hover') {
156
+ triggerProps.onMouseEnter = handleMouseEnter;
157
+ triggerProps.onMouseLeave = handleMouseLeave;
158
+ }
159
+
160
+ return React.cloneElement(child, triggerProps);
155
161
  }
156
-
157
- return React.cloneElement(child, triggerProps);
158
- });
162
+ );
159
163
 
160
164
  PopoverTrigger.displayName = 'PopoverTrigger';
161
165
 
@@ -4,7 +4,7 @@ import { fn } from '@storybook/test';
4
4
  import { Progress } from './Progress';
5
5
  import { THEME_COLORS, SIZES } from '../../lib/constants/components';
6
6
 
7
- const meta = {
7
+ const meta: Meta<typeof Progress> = {
8
8
  title: 'Components/Progress',
9
9
  component: Progress,
10
10
  parameters: {
@@ -83,7 +83,7 @@ Progress displays the completion status of a task or process. It provides visual
83
83
  description: 'The progress value as a percentage (0-100)',
84
84
  table: {
85
85
  type: { summary: 'number' },
86
- defaultValue: { summary: 0 },
86
+ defaultValue: { summary: '0' },
87
87
  },
88
88
  },
89
89
  variant: {
@@ -104,40 +104,8 @@ Progress displays the completion status of a task or process. It provides visual
104
104
  defaultValue: { summary: 'md' },
105
105
  },
106
106
  },
107
- animated: {
108
- control: 'boolean',
109
- description: 'Whether to animate the progress bar',
110
- table: {
111
- type: { summary: 'boolean' },
112
- defaultValue: { summary: false },
113
- },
114
- },
115
- striped: {
116
- control: 'boolean',
117
- description: 'Whether to apply striped styling',
118
- table: {
119
- type: { summary: 'boolean' },
120
- defaultValue: { summary: false },
121
- },
122
- },
123
- label: {
124
- control: 'text',
125
- description: 'Optional label to display with the progress',
126
- table: {
127
- type: { summary: 'string' },
128
- defaultValue: { summary: '-' },
129
- },
130
- },
131
- max: {
132
- control: 'number',
133
- description: 'The maximum value for the progress bar',
134
- table: {
135
- type: { summary: 'number' },
136
- defaultValue: { summary: 100 },
137
- },
138
- },
139
107
  },
140
- } satisfies Meta<typeof Progress>;
108
+ };
141
109
 
142
110
  export default meta;
143
111
  type Story = StoryObj<typeof meta>;
@@ -158,13 +126,24 @@ export const BasicUsage: Story = {
158
126
  };
159
127
 
160
128
  export const AllVariants: Story = {
129
+ args: { value: 0 },
161
130
  render: () => (
162
131
  <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', width: '100%' }}>
163
- <div><strong>Primary:</strong> <Progress value={75} variant="primary" /></div>
164
- <div><strong>Secondary:</strong> <Progress value={60} variant="secondary" /></div>
165
- <div><strong>Success:</strong> <Progress value={100} variant="success" /></div>
166
- <div><strong>Warning:</strong> <Progress value={45} variant="warning" /></div>
167
- <div><strong>Error:</strong> <Progress value={30} variant="error" /></div>
132
+ <div>
133
+ <strong>Primary:</strong> <Progress value={75} variant="primary" />
134
+ </div>
135
+ <div>
136
+ <strong>Secondary:</strong> <Progress value={60} variant="secondary" />
137
+ </div>
138
+ <div>
139
+ <strong>Success:</strong> <Progress value={100} variant="success" />
140
+ </div>
141
+ <div>
142
+ <strong>Warning:</strong> <Progress value={45} variant="warning" />
143
+ </div>
144
+ <div>
145
+ <strong>Error:</strong> <Progress value={30} variant="error" />
146
+ </div>
168
147
  </div>
169
148
  ),
170
149
  parameters: {
@@ -177,11 +156,18 @@ export const AllVariants: Story = {
177
156
  };
178
157
 
179
158
  export const AllSizes: Story = {
159
+ args: { value: 0 },
180
160
  render: () => (
181
161
  <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', width: '100%' }}>
182
- <div><strong>Small:</strong> <Progress value={60} size="sm" /></div>
183
- <div><strong>Medium:</strong> <Progress value={70} size="md" /></div>
184
- <div><strong>Large:</strong> <Progress value={80} size="lg" /></div>
162
+ <div>
163
+ <strong>Small:</strong> <Progress value={60} size="sm" />
164
+ </div>
165
+ <div>
166
+ <strong>Medium:</strong> <Progress value={70} size="md" />
167
+ </div>
168
+ <div>
169
+ <strong>Large:</strong> <Progress value={80} size="lg" />
170
+ </div>
185
171
  </div>
186
172
  ),
187
173
  parameters: {
@@ -198,8 +184,13 @@ export const WithLabel: Story = {
198
184
  value: 75,
199
185
  variant: 'primary',
200
186
  size: 'md',
201
- label: 'Processing files: 75%',
202
187
  },
188
+ render: args => (
189
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
190
+ <label>Processing files: 75%</label>
191
+ <Progress {...args} />
192
+ </div>
193
+ ),
203
194
  parameters: {
204
195
  docs: {
205
196
  description: {
@@ -172,7 +172,8 @@ export const ContentColumns: Story = {
172
172
  <div>
173
173
  <p className="c-river__text">
174
174
  Use content columns to create custom layouts with different types of content. This
175
- approach gives you more control over the structure and presentation of your information.
175
+ approach gives you more control over the structure and presentation of your
176
+ information.
176
177
  </p>
177
178
  <p className="c-river__text">
178
179
  Perfect for featuring important statistics, quotes, or highlighting key information