@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
@@ -17,6 +17,7 @@ import { useVideoPlayer } from '../../lib/composables/useVideoPlayer';
17
17
  import { VIDEO_PLAYER } from '../../lib/constants/components';
18
18
  import { VideoPlayerProps } from '../../lib/types/components';
19
19
  import { extractYouTubeId, isYouTubeUrl } from '../../lib/utils';
20
+ import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
20
21
 
21
22
  /**
22
23
  * Advanced Video Player Component
@@ -51,6 +52,9 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
51
52
  subtitles,
52
53
  quality,
53
54
  ambientMode = false,
55
+ glass = false,
56
+ glassOpacity = 1,
57
+ glassContent,
54
58
  ...props
55
59
  },
56
60
  ref
@@ -59,6 +63,7 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
59
63
  const containerRef = useRef<HTMLDivElement>(null);
60
64
  const canvasRef = useRef<HTMLCanvasElement>(null);
61
65
  const iframeRef = useRef<HTMLIFrameElement>(null);
66
+ const [containerBorderRadius, setContainerBorderRadius] = useState<number>(8);
62
67
 
63
68
  // Determine video source and type
64
69
  const isYouTube = type === 'youtube' || youtubeId || (src && isYouTubeUrl(src));
@@ -115,6 +120,10 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
115
120
  const [activeSubtitle, setActiveSubtitle] = useState<string | null>(
116
121
  subtitles?.find(sub => sub.default)?.srcLang || null
117
122
  );
123
+ const [videoDimensions, setVideoDimensions] = useState<{ width: number; height: number }>({
124
+ width: 0,
125
+ height: 0,
126
+ });
118
127
 
119
128
  const handleProgressClick = useCallback(
120
129
  (e: React.MouseEvent<HTMLDivElement>) => {
@@ -225,12 +234,107 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
225
234
  return undefined;
226
235
  }, [subtitles, setSubtitle, videoRef]);
227
236
 
237
+ // Track video/iframe dimensions for AtomixGlass
238
+ useEffect(() => {
239
+ const updateDimensions = () => {
240
+ if (isYouTube && iframeRef.current) {
241
+ const iframe = iframeRef.current;
242
+ const rect = iframe.getBoundingClientRect();
243
+ setVideoDimensions({ width: rect.width, height: rect.height });
244
+ } else if (videoRef.current) {
245
+ const video = videoRef.current;
246
+ const rect = video.getBoundingClientRect();
247
+ setVideoDimensions({ width: rect.width, height: rect.height });
248
+ }
249
+ };
250
+
251
+ // Initial measurement with slight delay to ensure element is rendered
252
+ const initialTimer = setTimeout(updateDimensions, 100);
253
+
254
+ // Use ResizeObserver to track size changes
255
+ const resizeObserver = new ResizeObserver(updateDimensions);
256
+
257
+ if (isYouTube && iframeRef.current) {
258
+ const iframe = iframeRef.current;
259
+ resizeObserver.observe(iframe);
260
+
261
+ // Listen for iframe load event
262
+ const handleIframeLoad = () => updateDimensions();
263
+ iframe.addEventListener('load', handleIframeLoad);
264
+
265
+ return () => {
266
+ clearTimeout(initialTimer);
267
+ resizeObserver.disconnect();
268
+ iframe.removeEventListener('load', handleIframeLoad);
269
+ };
270
+ } else if (videoRef.current) {
271
+ const video = videoRef.current;
272
+ resizeObserver.observe(video);
273
+
274
+ // Listen for video metadata loaded event
275
+ const handleLoadedMetadata = () => updateDimensions();
276
+ video.addEventListener('loadedmetadata', handleLoadedMetadata);
277
+
278
+ return () => {
279
+ clearTimeout(initialTimer);
280
+ resizeObserver.disconnect();
281
+ video.removeEventListener('loadedmetadata', handleLoadedMetadata);
282
+ };
283
+ }
284
+
285
+ // Also listen for window resize
286
+ window.addEventListener('resize', updateDimensions);
287
+
288
+ return () => {
289
+ clearTimeout(initialTimer);
290
+ resizeObserver.disconnect();
291
+ window.removeEventListener('resize', updateDimensions);
292
+ };
293
+ }, [isYouTube, videoRef, iframeRef]);
294
+
228
295
  const handleContainerClick = useCallback(() => {
229
296
  if (containerRef.current) {
230
297
  containerRef.current.focus();
231
298
  }
232
299
  }, []);
233
300
 
301
+ // Detect container border radius
302
+ useEffect(() => {
303
+ const detectBorderRadius = () => {
304
+ if (!containerRef.current) return;
305
+
306
+ const computedStyle = window.getComputedStyle(containerRef.current);
307
+ const borderRadius = computedStyle.borderRadius || computedStyle.borderTopLeftRadius;
308
+
309
+ // Parse the border radius value (remove 'px' and convert to number)
310
+ const radiusValue = parseFloat(borderRadius);
311
+ if (!isNaN(radiusValue)) {
312
+ setContainerBorderRadius(radiusValue);
313
+ }
314
+ };
315
+
316
+ // Detect border radius immediately
317
+ detectBorderRadius();
318
+
319
+ // Create ResizeObserver to watch for style changes
320
+ let resizeObserver: ResizeObserver | null = null;
321
+ if (typeof ResizeObserver !== 'undefined' && containerRef.current) {
322
+ resizeObserver = new ResizeObserver(detectBorderRadius);
323
+ resizeObserver.observe(containerRef.current);
324
+ }
325
+
326
+ // Also listen for window resize (in case styles change)
327
+ window.addEventListener('resize', detectBorderRadius);
328
+
329
+ return () => {
330
+ window.removeEventListener('resize', detectBorderRadius);
331
+ if (resizeObserver && containerRef.current) {
332
+ resizeObserver.unobserve(containerRef.current);
333
+ resizeObserver.disconnect();
334
+ }
335
+ };
336
+ }, []);
337
+
234
338
  const handleKeyDown = useCallback(
235
339
  (e: React.KeyboardEvent) => {
236
340
  switch (e.key) {
@@ -271,7 +375,7 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
271
375
  return (
272
376
  <div
273
377
  ref={containerRef}
274
- className={`${VIDEO_PLAYER.CLASSES.BASE} ${isYouTube ? VIDEO_PLAYER.CLASSES.YOUTUBE : ''} ${ambientMode ? VIDEO_PLAYER.CLASSES.AMBIENT : ''} ${className}`}
378
+ className={`${VIDEO_PLAYER.CLASSES.BASE} ${isYouTube ? VIDEO_PLAYER.CLASSES.YOUTUBE : ''} ${ambientMode ? VIDEO_PLAYER.CLASSES.AMBIENT : ''} ${glass ? VIDEO_PLAYER.CLASSES.GLASS : ''} ${className}`}
275
379
  style={{
276
380
  width,
277
381
  height,
@@ -313,11 +417,13 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
313
417
  ) : (
314
418
  <video
315
419
  ref={element => {
316
- videoRef.current = element;
420
+ if (videoRef && videoRef.current !== element) {
421
+ (videoRef as React.MutableRefObject<HTMLVideoElement | null>).current = element;
422
+ }
317
423
  if (typeof ref === 'function') {
318
424
  ref(element);
319
- } else if (ref) {
320
- ref.current = element;
425
+ } else if (ref && ref.current !== element) {
426
+ (ref as React.MutableRefObject<HTMLVideoElement | null>).current = element;
321
427
  }
322
428
  }}
323
429
  className={VIDEO_PLAYER.CLASSES.VIDEO}
@@ -350,9 +456,60 @@ export const VideoPlayer = forwardRef<HTMLVideoElement, VideoPlayerProps>(
350
456
  </div>
351
457
  )}
352
458
 
459
+ {/* Glass overlay - positioned between video and controls */}
460
+ {glass && (
461
+ <div className={VIDEO_PLAYER.CLASSES.GLASS_OVERLAY}>
462
+ <AtomixGlass
463
+ {...(typeof glass === 'boolean' ? {} : glass)}
464
+ style={{
465
+ borderRadius: 'inherit',
466
+ }}
467
+ mouseContainer={containerRef}
468
+ displacementScale={30}
469
+ blurAmount={0}
470
+ saturation={100}
471
+ aberrationIntensity={0}
472
+ cornerRadius={containerBorderRadius}
473
+ elasticity={0}
474
+ >
475
+ {!glassContent && (
476
+ <div
477
+ style={{
478
+ width: videoDimensions.width > 0 ? `${videoDimensions.width}px` : '100%',
479
+ height: videoDimensions.height > 0 ? `${videoDimensions.height}px` : '100%',
480
+ display: 'flex',
481
+ alignItems: 'center',
482
+ justifyContent: 'center',
483
+ background: 'transparent',
484
+ }}
485
+ >
486
+ {/* Glass effect background */}
487
+ </div>
488
+ )}
489
+ </AtomixGlass>
490
+ </div>
491
+ )}
492
+
493
+ {/* Custom glass content overlay */}
494
+ {glass && glassContent && (
495
+ <div
496
+ className={VIDEO_PLAYER.CLASSES.GLASS_CONTENT}
497
+ style={{
498
+ display: 'flex',
499
+ alignItems: 'center',
500
+ justifyContent: 'center',
501
+ }}
502
+ >
503
+ {glassContent}
504
+ </div>
505
+ )}
506
+
353
507
  {controls && !isYouTube && (
354
508
  <div
355
509
  className={`${VIDEO_PLAYER.CLASSES.CONTROLS} ${showControls ? VIDEO_PLAYER.CLASSES.CONTROLS_VISIBLE : ''}`}
510
+ style={{
511
+ zIndex: glass ? 3 : 'auto',
512
+ }}
356
513
  >
357
514
  <div className={VIDEO_PLAYER.CLASSES.PROGRESS_CONTAINER}>
358
515
  <div className={VIDEO_PLAYER.CLASSES.PROGRESS_BAR} onClick={handleProgressClick}>
@@ -1,6 +1,7 @@
1
1
  export type { SliderProps, VideoPlayerProps } from '../lib/types/components';
2
2
  export { default as Accordion, type AccordionProps } from './Accordion/Accordion';
3
3
  export { default as AtomixLogo, type AtomixLogoProps } from './AtomixLogo/AtomixLogo';
4
+ export { default as AtomixGlass, type AtomixGlassProps } from './AtomixGlass';
4
5
  export { default as Avatar, type AvatarProps } from './Avatar/Avatar';
5
6
  export { default as AvatarGroup, type AvatarGroupProps } from './Avatar/AvatarGroup';
6
7
  export { default as Badge, type BadgeProps } from './Badge/Badge';
@@ -68,6 +69,19 @@ export { default as DatePicker, type DatePickerProps } from './DatePicker/DatePi
68
69
  export { default as Dropdown, type DropdownProps } from './Dropdown/Dropdown';
69
70
  export { default as EdgePanel, type EdgePanelProps } from './EdgePanel/EdgePanel';
70
71
  export { default as Checkbox, type CheckboxProps } from './Form/Checkbox';
72
+ export {
73
+ Footer,
74
+ FooterSection,
75
+ FooterLink,
76
+ FooterSocialLink,
77
+ type FooterProps,
78
+ type FooterSectionProps,
79
+ type FooterLinkProps,
80
+ type FooterSocialLinkProps,
81
+ type FooterLayout,
82
+ type SocialPlatform,
83
+ type SocialLink,
84
+ } from './Footer';
71
85
  export { default as Form, type FormProps } from './Form/Form';
72
86
  export { default as FormGroup, type FormGroupProps } from './Form/FormGroup';
73
87
  export { default as Input, type InputProps } from './Form/Input';