@shohojdhara/atomix 0.3.4 → 0.3.5

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 (114) hide show
  1. package/dist/atomix.css +9 -10
  2. package/dist/atomix.css.map +1 -0
  3. package/dist/atomix.min.css +15108 -11
  4. package/dist/atomix.min.css.map +1 -0
  5. package/dist/charts.d.ts +1929 -0
  6. package/dist/charts.js +6482 -0
  7. package/dist/charts.js.map +1 -0
  8. package/dist/core.d.ts +1289 -0
  9. package/dist/core.js +3357 -0
  10. package/dist/core.js.map +1 -0
  11. package/dist/forms.d.ts +1085 -0
  12. package/dist/forms.js +2450 -0
  13. package/dist/forms.js.map +1 -0
  14. package/dist/heavy.d.ts +636 -0
  15. package/dist/heavy.js +4550 -0
  16. package/dist/heavy.js.map +1 -0
  17. package/dist/index.d.ts +5161 -4990
  18. package/dist/index.esm.js +1457 -784
  19. package/dist/index.esm.js.map +1 -1
  20. package/dist/index.js +1473 -790
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.min.js +1 -1
  23. package/dist/index.min.js.map +1 -1
  24. package/dist/layout.d.ts +300 -0
  25. package/dist/layout.js +336 -0
  26. package/dist/layout.js.map +1 -0
  27. package/dist/theme.d.ts +1992 -0
  28. package/dist/theme.js +5348 -0
  29. package/dist/theme.js.map +1 -0
  30. package/package.json +66 -20
  31. package/scripts/atomix-cli.js +544 -16
  32. package/scripts/cli/__tests__/cli-commands.test.js +204 -0
  33. package/scripts/cli/__tests__/utils.test.js +201 -0
  34. package/scripts/cli/__tests__/vitest.config.js +26 -0
  35. package/scripts/cli/interactive-init.js +1 -1
  36. package/scripts/cli/token-manager.js +32 -7
  37. package/scripts/cli/utils.js +347 -0
  38. package/src/components/Accordion/Accordion.tsx +5 -54
  39. package/src/components/Accordion/index.ts +1 -1
  40. package/src/components/Avatar/Avatar.tsx +3 -3
  41. package/src/components/Badge/Badge.tsx +3 -3
  42. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  43. package/src/components/Card/ElevationCard.tsx +1 -1
  44. package/src/components/Chart/AnimatedChart.tsx +19 -17
  45. package/src/components/Chart/AreaChart.tsx +5 -1
  46. package/src/components/Chart/BarChart.tsx +1 -0
  47. package/src/components/Chart/BubbleChart.tsx +6 -5
  48. package/src/components/Chart/ChartToolbar.tsx +1 -0
  49. package/src/components/Chart/FunnelChart.tsx +1 -1
  50. package/src/components/Chart/RadarChart.tsx +19 -12
  51. package/src/components/Chart/ScatterChart.tsx +3 -3
  52. package/src/components/Chart/TreemapChart.tsx +2 -1
  53. package/src/components/Chart/WaterfallChart.tsx +0 -1
  54. package/src/components/Chart/types.ts +12 -2
  55. package/src/components/Chart/utils.ts +4 -3
  56. package/src/components/DataTable/DataTable.tsx +3 -3
  57. package/src/components/Dropdown/Dropdown.tsx +12 -9
  58. package/src/components/Footer/FooterSection.tsx +3 -3
  59. package/src/components/Form/Checkbox.tsx +3 -3
  60. package/src/components/Form/Input.tsx +4 -2
  61. package/src/components/Form/Radio.tsx +3 -3
  62. package/src/components/Form/Select.tsx +3 -3
  63. package/src/components/Form/Textarea.tsx +4 -2
  64. package/src/components/List/List.stories.tsx +3 -3
  65. package/src/components/List/List.tsx +3 -3
  66. package/src/components/List/ListGroup.tsx +3 -1
  67. package/src/components/Modal/Modal.tsx +3 -3
  68. package/src/components/Navigation/Menu/MegaMenu.tsx +9 -3
  69. package/src/components/Navigation/Menu/Menu.tsx +9 -3
  70. package/src/components/Pagination/Pagination.tsx +6 -5
  71. package/src/components/PhotoViewer/PhotoViewerImage.tsx +2 -2
  72. package/src/components/Popover/Popover.tsx +4 -4
  73. package/src/components/Progress/Progress.tsx +6 -2
  74. package/src/components/Rating/Rating.tsx +5 -2
  75. package/src/components/Slider/Slider.tsx +10 -9
  76. package/src/components/Spinner/Spinner.tsx +3 -3
  77. package/src/components/Tabs/Tabs.tsx +3 -3
  78. package/src/components/Tooltip/Tooltip.tsx +3 -3
  79. package/src/components/index.ts +5 -2
  80. package/src/layouts/MasonryGrid/MasonryGrid.tsx +2 -2
  81. package/src/lib/composables/useChartPerformance.ts +102 -78
  82. package/src/lib/composables/useChartScale.ts +10 -0
  83. package/src/lib/composables/useHero.ts +9 -2
  84. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -3
  85. package/src/lib/composables/useSideMenu.ts +1 -0
  86. package/src/lib/composables/useVideoPlayer.ts +3 -2
  87. package/src/lib/config/loader.ts +55 -13
  88. package/src/lib/hooks/index.ts +0 -1
  89. package/src/lib/hooks/useComponentCustomization.ts +10 -14
  90. package/src/lib/hooks/usePerformanceMonitor.ts +149 -0
  91. package/src/lib/patterns/index.ts +2 -2
  92. package/src/lib/patterns/slots.tsx +2 -2
  93. package/src/lib/theme/composeTheme.ts +1 -1
  94. package/src/lib/theme/core/ThemeEngine.ts +8 -0
  95. package/src/lib/theme/core/ThemeValidator.ts +5 -2
  96. package/src/lib/theme/devtools/Inspector.tsx +1 -1
  97. package/src/lib/theme/devtools/LiveEditor.tsx +11 -5
  98. package/src/lib/theme/generateCSSVariables.ts +1 -1
  99. package/src/lib/theme/i18n/rtl.ts +2 -1
  100. package/src/lib/theme/runtime/ThemeApplicator.ts +28 -11
  101. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +3 -3
  102. package/src/lib/theme/runtime/ThemeManager.ts +4 -0
  103. package/src/lib/theme-tools.ts +1 -1
  104. package/src/lib/types/components.ts +183 -34
  105. package/src/lib/types/partProps.ts +0 -16
  106. package/src/lib/utils/fontPreloader.ts +148 -0
  107. package/src/lib/utils/index.ts +11 -0
  108. package/src/lib/utils/memoryMonitor.ts +189 -0
  109. package/src/styles/01-settings/_settings.fonts.scss +2 -5
  110. package/src/styles/03-generic/_generated-root.css +22 -1
  111. package/src/styles/06-components/_components.navbar.scss +0 -6
  112. package/src/themes/themes.config.js +37 -4
  113. package/scripts/build-themes.js +0 -208
  114. package/src/components/AtomixGlass/atomixGLass.old.tsx +0 -1263
package/dist/index.esm.js CHANGED
@@ -1542,14 +1542,14 @@ function useAccordion(initialProps) {
1542
1542
  };
1543
1543
  // Controlled/uncontrolled open state
1544
1544
  /**
1545
- * Effect to update panel height when open state changes
1546
- */
1545
+ * Effect to update panel height when open state changes
1546
+ */
1547
1547
  return useEffect((() => {
1548
1548
  updatePanelHeight();
1549
1549
  }), [ isOpen ]),
1550
1550
  /**
1551
- * Effect to handle window resize and update panel height
1552
- */
1551
+ * Effect to handle window resize and update panel height
1552
+ */
1553
1553
  useEffect((() => {
1554
1554
  const handleResize = () => {
1555
1555
  isOpen && updatePanelHeight();
@@ -1638,7 +1638,7 @@ const {CONSTANTS: CONSTANTS$1} = ATOMIX_GLASS, calculateDistance = (pos1, pos2)
1638
1638
  const childArray = React.Children.toArray(children);
1639
1639
  for (let i = 0; i < childArray.length; i++) {
1640
1640
  const child = childArray[i];
1641
- if (React.isValidElement(child)) {
1641
+ if ( React.isValidElement(child)) {
1642
1642
  const radius = extractBorderRadiusFromElement(child);
1643
1643
  if (null !== radius) return radius;
1644
1644
  }
@@ -1806,7 +1806,7 @@ const {CONSTANTS: CONSTANTS$1} = ATOMIX_GLASS, calculateDistance = (pos1, pos2)
1806
1806
  */ GlassFilterComponent.displayName = "GlassFilter";
1807
1807
 
1808
1808
  // Memoize component to prevent unnecessary re-renders
1809
- const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevProps.id === nextProps.id && prevProps.displacementScale === nextProps.displacementScale && prevProps.aberrationIntensity === nextProps.aberrationIntensity && prevProps.mode === nextProps.mode && prevProps.shaderMapUrl === nextProps.shaderMapUrl && prevProps.blurAmount === nextProps.blurAmount)), sharedShaderCache = new Map, AtomixGlassContainer = forwardRef((({children: children, className: className = "", style: style, displacementScale: displacementScale = 25, blurAmount: blurAmount = .0625, saturation: saturation = 180, aberrationIntensity: aberrationIntensity = 2, mouseOffset: mouseOffset = {
1809
+ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevProps.id === nextProps.id && prevProps.displacementScale === nextProps.displacementScale && prevProps.aberrationIntensity === nextProps.aberrationIntensity && prevProps.mode === nextProps.mode && prevProps.shaderMapUrl === nextProps.shaderMapUrl && prevProps.blurAmount === nextProps.blurAmount)), sharedShaderCache = new Map, AtomixGlassContainer = forwardRef((({children: children, className: className = "", style: style, displacementScale: displacementScale = 25, blurAmount: blurAmount = .0625, saturation: saturation = 180, aberrationIntensity: aberrationIntensity = 2, mouseOffset: mouseOffset = {
1810
1810
  x: 0,
1811
1811
  y: 0
1812
1812
  }, globalMousePosition: globalMousePosition = {
@@ -2068,8 +2068,8 @@ class {
2068
2068
  y: 0
2069
2069
  }, this.rafId = null, this.lastEvent = null, this.isTracking = !1,
2070
2070
  /**
2071
- * Handle mouse move event
2072
- */
2071
+ * Handle mouse move event
2072
+ */
2073
2073
  this.handleMouseMove = e => {
2074
2074
  this.lastEvent = e,
2075
2075
  // Use requestAnimationFrame to throttle updates
@@ -2090,10 +2090,10 @@ class {
2090
2090
  };
2091
2091
  }
2092
2092
  /**
2093
- * Subscribe to mouse position updates
2094
- * @param callback Function to call when mouse position changes
2095
- * @returns Unsubscribe function
2096
- */ subscribe(callback) {
2093
+ * Subscribe to mouse position updates
2094
+ * @param callback Function to call when mouse position changes
2095
+ * @returns Unsubscribe function
2096
+ */ subscribe(callback) {
2097
2097
  // Return unsubscribe function
2098
2098
  return this.listeners.add(callback),
2099
2099
  // Start tracking if this is the first subscriber
@@ -2104,15 +2104,15 @@ class {
2104
2104
  };
2105
2105
  }
2106
2106
  /**
2107
- * Unsubscribe from mouse position updates
2108
- */ unsubscribe(callback) {
2107
+ * Unsubscribe from mouse position updates
2108
+ */ unsubscribe(callback) {
2109
2109
  this.listeners.delete(callback),
2110
2110
  // Stop tracking if no more subscribers
2111
2111
  0 === this.listeners.size && this.stopTracking();
2112
2112
  }
2113
2113
  /**
2114
- * Start tracking mouse movement
2115
- */ startTracking() {
2114
+ * Start tracking mouse movement
2115
+ */ startTracking() {
2116
2116
  this.isTracking || (this.isTracking = !0,
2117
2117
  // Use document-level listener for global tracking
2118
2118
  document.addEventListener("mousemove", this.handleMouseMove, {
@@ -2120,22 +2120,22 @@ class {
2120
2120
  }));
2121
2121
  }
2122
2122
  /**
2123
- * Stop tracking mouse movement
2124
- */ stopTracking() {
2123
+ * Stop tracking mouse movement
2124
+ */ stopTracking() {
2125
2125
  this.isTracking && (this.isTracking = !1, document.removeEventListener("mousemove", this.handleMouseMove),
2126
2126
  // Cancel any pending RAF
2127
2127
  null !== this.rafId && (cancelAnimationFrame(this.rafId), this.rafId = null), this.lastEvent = null);
2128
2128
  }
2129
2129
  /**
2130
- * Get current mouse position (synchronous)
2131
- */ getPosition() {
2130
+ * Get current mouse position (synchronous)
2131
+ */ getPosition() {
2132
2132
  return {
2133
2133
  ...this.position
2134
2134
  };
2135
2135
  }
2136
2136
  /**
2137
- * Get number of active subscribers (for debugging)
2138
- */ getSubscriberCount() {
2137
+ * Get number of active subscribers (for debugging)
2138
+ */ getSubscriberCount() {
2139
2139
  return this.listeners.size;
2140
2140
  }
2141
2141
  }, {CONSTANTS: CONSTANTS} = ATOMIX_GLASS, backgroundDetectionCache = new WeakMap, setCachedBackgroundDetection = (parentElement, overLightConfig, result, threshold) => {
@@ -2479,11 +2479,11 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
2479
2479
  }), [ effectiveCornerRadius, glassRef ]);
2480
2480
  // OverLight config
2481
2481
  /**
2482
- * Get effective overLight value based on configuration
2483
- * - boolean: returns the boolean value directly
2484
- * - 'auto': returns detectedOverLight (auto-detected from background)
2485
- * - object: returns detectedOverLight (auto-detected, but config object provides customization)
2486
- */
2482
+ * Get effective overLight value based on configuration
2483
+ * - boolean: returns the boolean value directly
2484
+ * - 'auto': returns detectedOverLight (auto-detected from background)
2485
+ * - object: returns detectedOverLight (auto-detected, but config object provides customization)
2486
+ */
2487
2487
  const getEffectiveOverLight = useCallback((() => "boolean" == typeof overLight ? overLight : ("auto" === overLight || "object" == typeof overLight && null !== overLight) && detectedOverLight), [ overLight, detectedOverLight ]), validateConfigValue = useCallback(((value, min, max, defaultValue) => "number" != typeof value || isNaN(value) || !isFinite(value) ? defaultValue : Math.min(max, Math.max(min, value))), []), overLightConfig = useMemo((() => {
2488
2488
  const isOverLight = getEffectiveOverLight(), mouseInfluence = calculateMouseInfluence(mouseOffset), hoverIntensity = isHovered ? 1.4 : 1, activeIntensity = isActive ? 1.6 : 1, baseConfig = {
2489
2489
  isOverLight: isOverLight,
@@ -2513,13 +2513,13 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
2513
2513
  !onClick || "Enter" !== e.key && " " !== e.key || (e.preventDefault(), onClick());
2514
2514
  }), [ onClick ]), handleMouseMove = useCallback((_e => {}), []);
2515
2515
  /**
2516
- * Validate and clamp a numeric config value
2517
- * @param value - The value to validate
2518
- * @param min - Minimum allowed value
2519
- * @param max - Maximum allowed value
2520
- * @param defaultValue - Default value if validation fails
2521
- * @returns Validated and clamped value
2522
- */ return {
2516
+ * Validate and clamp a numeric config value
2517
+ * @param value - The value to validate
2518
+ * @param min - Minimum allowed value
2519
+ * @param max - Maximum allowed value
2520
+ * @param defaultValue - Default value if validation fails
2521
+ * @returns Validated and clamped value
2522
+ */ return {
2523
2523
  // State
2524
2524
  isHovered: isHovered,
2525
2525
  isActive: isActive,
@@ -2852,7 +2852,7 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
2852
2852
  });
2853
2853
  }
2854
2854
 
2855
- const Accordion = ({title: title, children: children, defaultOpen: defaultOpen = !1, isOpen: controlledOpen, onOpenChange: onOpenChange, disabled: disabled = !1, iconPosition: iconPosition = "right", icon: icon, className: className = "", style: style, glass: glass}) => {
2855
+ const Accordion = memo((({title: title, children: children, defaultOpen: defaultOpen = !1, isOpen: controlledOpen, onOpenChange: onOpenChange, disabled: disabled = !1, iconPosition: iconPosition = "right", icon: icon, className: className = "", style: style, glass: glass}) => {
2856
2856
  // Generate unique IDs for accessibility
2857
2857
  const instanceId = useId(), buttonId = `accordion-header-${instanceId}`, panelId = `accordion-panel-${instanceId}`, {state: state, toggle: toggle, updatePanelHeight: updatePanelHeight, panelRef: panelRef, contentRef: contentRef, generateClassNames: generateClassNames, generateHeaderClassNames: generateHeaderClassNames} = useAccordion({
2858
2858
  defaultOpen: defaultOpen,
@@ -2923,7 +2923,7 @@ const Accordion = ({title: title, children: children, defaultOpen: defaultOpen =
2923
2923
  });
2924
2924
  }
2925
2925
  return accordionContent;
2926
- };
2926
+ }));
2927
2927
 
2928
2928
  // Set display name for debugging
2929
2929
  Accordion.displayName = "Accordion";
@@ -3257,7 +3257,7 @@ const AtomixLogo = ({height: height = 24, width: width = 24, color: color = "cur
3257
3257
  // Constants
3258
3258
  Icon.displayName = "Icon";
3259
3259
 
3260
- const Avatar = ({src: src, alt: alt = "Avatar", initials: initials, icon: icon, size: size = "md", circle: circle = !1, className: className = "", disabled: disabled = !1, onClick: onClick, style: style, glass: glass}) => {
3260
+ const Avatar = memo((({src: src, alt: alt = "Avatar", initials: initials, icon: icon, size: size = "md", circle: circle = !1, className: className = "", disabled: disabled = !1, onClick: onClick, style: style, glass: glass}) => {
3261
3261
  const [imageError, setImageError] = useState(!1), avatarClasses = [ AVATAR.CLASSES.BASE, "md" !== size && `c-avatar--${size}`, circle && AVATAR.CLASSES.CIRCLE, disabled && "is-disabled", className ].filter(Boolean).join(" ");
3262
3262
  return jsx("div", {
3263
3263
  className: avatarClasses,
@@ -3289,18 +3289,18 @@ const Avatar = ({src: src, alt: alt = "Avatar", initials: initials, icon: icon,
3289
3289
  })
3290
3290
  })
3291
3291
  });
3292
- };
3292
+ }));
3293
3293
 
3294
3294
  Avatar.displayName = "Avatar";
3295
3295
 
3296
3296
  const AvatarGroup = ({children: children, max: max, stacked: stacked = !1, className: className = "", style: style, moreText: moreText}) => {
3297
3297
  // Generate CSS classes
3298
- const avatarGroupClasses = [ AVATAR_GROUP.CLASSES.BASE, stacked && AVATAR_GROUP.CLASSES.STACKED, className ].filter(Boolean).join(" "), avatarChildren = Children.toArray(children).filter((child => isValidElement(child) && child.type === Avatar)), showMoreIndicator = void 0 !== max && avatarChildren.length > max, visibleAvatars = showMoreIndicator ? avatarChildren.slice(0, max) : avatarChildren, hiddenAvatarCount = avatarChildren.length - (max || 0), firstAvatar = isValidElement(avatarChildren[0]) ? avatarChildren[0].props : null, avatarSize = firstAvatar?.size || "md", isCircle = firstAvatar?.circle || !1, moreClasses = [ AVATAR.CLASSES.BASE, AVATAR_GROUP.CLASSES.MORE, "md" !== avatarSize && `c-avatar--${avatarSize}`, isCircle && "c-avatar--circle" ].filter(Boolean).join(" ");
3298
+ const avatarGroupClasses = [ AVATAR_GROUP.CLASSES.BASE, stacked && AVATAR_GROUP.CLASSES.STACKED, className ].filter(Boolean).join(" "), avatarChildren = Children.toArray(children).filter((child => isValidElement(child) && child.type === Avatar)), showMoreIndicator = void 0 !== max && avatarChildren.length > max, visibleAvatars = showMoreIndicator ? avatarChildren.slice(0, max) : avatarChildren, hiddenAvatarCount = avatarChildren.length - (max || 0), firstAvatar = isValidElement(avatarChildren[0]) ? avatarChildren[0].props : null, avatarSize = firstAvatar?.size || "md", isCircle = firstAvatar?.circle || !1, moreClasses = [ AVATAR.CLASSES.BASE, AVATAR_GROUP.CLASSES.MORE, "md" !== avatarSize && `c-avatar--${avatarSize}`, isCircle && "c-avatar--circle" ].filter(Boolean).join(" ");
3299
3299
  // Get valid Avatar children
3300
3300
  return jsxs("div", {
3301
3301
  className: avatarGroupClasses,
3302
3302
  style: style,
3303
- children: [ visibleAvatars.map(((child, index) => isValidElement(child) ? cloneElement(child, {
3303
+ children: [ visibleAvatars.map(((child, index) => isValidElement(child) ? cloneElement(child, {
3304
3304
  key: index,
3305
3305
  ...child.props
3306
3306
  }) : null)), showMoreIndicator && jsx("div", {
@@ -3324,10 +3324,10 @@ function useBadge(initialProps) {
3324
3324
  ...initialProps
3325
3325
  };
3326
3326
  /**
3327
- * Generate badge class based on properties
3328
- * @param props - Badge properties
3329
- * @returns Class string
3330
- */ return {
3327
+ * Generate badge class based on properties
3328
+ * @param props - Badge properties
3329
+ * @returns Class string
3330
+ */ return {
3331
3331
  defaultProps: defaultProps,
3332
3332
  generateBadgeClass: props => {
3333
3333
  const {variant: variant = defaultProps.variant, size: size = defaultProps.size, disabled: disabled = defaultProps.disabled, className: className = ""} = props;
@@ -3338,7 +3338,7 @@ function useBadge(initialProps) {
3338
3338
 
3339
3339
  AvatarGroup.displayName = "AvatarGroup";
3340
3340
 
3341
- const Badge = ({label: label, variant: variant = "primary", size: size = "md", disabled: disabled = !1, icon: icon, className: className = "", glass: glass, style: style}) => {
3341
+ const Badge = memo((({label: label, variant: variant = "primary", size: size = "md", disabled: disabled = !1, icon: icon, className: className = "", glass: glass, style: style}) => {
3342
3342
  const {generateBadgeClass: generateBadgeClass} = useBadge({
3343
3343
  variant: variant,
3344
3344
  size: size,
@@ -3377,7 +3377,7 @@ const Badge = ({label: label, variant: variant = "primary", size: size = "md", d
3377
3377
  });
3378
3378
  }
3379
3379
  return badgeElement;
3380
- };
3380
+ }));
3381
3381
 
3382
3382
  Badge.displayName = "Badge";
3383
3383
 
@@ -3400,7 +3400,7 @@ Badge.displayName = "Badge";
3400
3400
  * </Container>
3401
3401
  * ```
3402
3402
  */
3403
- const Container = forwardRef((({children: children, className: className = "", type: type, ...props}, ref) => {
3403
+ const Container = forwardRef((({children: children, className: className = "", type: type, ...props}, ref) => {
3404
3404
  let containerClass = "o-container";
3405
3405
  return type && (containerClass = `o-container-${type}`), jsx("div", {
3406
3406
  ref: ref,
@@ -3431,7 +3431,7 @@ const useBlock = () => ({
3431
3431
  // Add custom className
3432
3432
  className && classes.push(className), classes.filter(Boolean).join(" ");
3433
3433
  }
3434
- }), Block = forwardRef((({children: children, as: Component = "section", spacing: spacing = "md", container: container = {}, fullWidth: fullWidth = !1, className: className = "", style: style, background: background = "", ...props}, ref) => {
3434
+ }), Block = forwardRef((({children: children, as: Component = "section", spacing: spacing = "md", container: container = {}, fullWidth: fullWidth = !1, className: className = "", style: style, background: background = "", ...props}, ref) => {
3435
3435
  const {generateBlockClass: generateBlockClass} = useBlock(), blockClasses = generateBlockClass({
3436
3436
  spacing: spacing,
3437
3437
  background: background,
@@ -3485,7 +3485,7 @@ const useBlock = () => ({
3485
3485
  * ```
3486
3486
  */ Block.displayName = "Block";
3487
3487
 
3488
- const Breadcrumb = ({items: items, divider: divider, className: className = "", ariaLabel: ariaLabel = "Breadcrumb", LinkComponent: LinkComponent, style: style}) => {
3488
+ const Breadcrumb = memo((({items: items, divider: divider, className: className = "", ariaLabel: ariaLabel = "Breadcrumb", LinkComponent: LinkComponent, style: style}) => {
3489
3489
  const breadcrumbClasses = [ BREADCRUMB.CLASSES.BASE, className ].filter(Boolean).join(" ");
3490
3490
  return jsx("nav", {
3491
3491
  "aria-label": ariaLabel,
@@ -3518,7 +3518,7 @@ const Breadcrumb = ({items: items, divider: divider, className: className = "",
3518
3518
  }))
3519
3519
  })
3520
3520
  });
3521
- };
3521
+ }));
3522
3522
 
3523
3523
  /**
3524
3524
  * Button state and functionality
@@ -3540,10 +3540,10 @@ function useButton(initialProps) {
3540
3540
  ...initialProps
3541
3541
  };
3542
3542
  /**
3543
- * Generate button class based on properties
3544
- * @param props - Button properties
3545
- * @returns Class string
3546
- */ return {
3543
+ * Generate button class based on properties
3544
+ * @param props - Button properties
3545
+ * @returns Class string
3546
+ */ return {
3547
3547
  defaultProps: defaultProps,
3548
3548
  generateButtonClass: props => {
3549
3549
  const {variant: variant = defaultProps.variant, size: size = defaultProps.size, disabled: disabled = defaultProps.disabled, rounded: rounded = defaultProps.rounded, iconOnly: iconOnly = !1, glass: glass = defaultProps.glass, loading: loading = defaultProps.loading, fullWidth: fullWidth = defaultProps.fullWidth, block: block = defaultProps.block, active: active = defaultProps.active, selected: selected = defaultProps.selected, className: className = ""} = props, sizeClass = "md" === size ? "" : `c-btn--${size}`, iconOnlyClass = iconOnly ? "c-btn--icon" : "", roundedClass = rounded ? "c-btn--rounded" : "", disabledClass = disabled ? "c-btn--disabled" : "", glassClass = glass ? "c-btn--glass" : "", loadingClass = loading ? BUTTON.CLASSES.LOADING : "", fullWidthClass = fullWidth ? BUTTON.CLASSES.FULL_WIDTH : "", blockClass = block ? BUTTON.CLASSES.BLOCK : "", activeClass = active ? BUTTON.CLASSES.ACTIVE : "", selectedClass = selected ? BUTTON.CLASSES.SELECTED : "";
@@ -3568,10 +3568,10 @@ function useButton(initialProps) {
3568
3568
  ...initialProps
3569
3569
  };
3570
3570
  /**
3571
- * Generate spinner class based on properties
3572
- * @param props - Spinner properties
3573
- * @returns Class string
3574
- */ return {
3571
+ * Generate spinner class based on properties
3572
+ * @param props - Spinner properties
3573
+ * @returns Class string
3574
+ */ return {
3575
3575
  defaultProps: defaultProps,
3576
3576
  generateSpinnerClass: props => {
3577
3577
  const {variant: variant = defaultProps.variant, size: size = defaultProps.size, fullscreen: fullscreen = defaultProps.fullscreen, className: className = ""} = props;
@@ -3582,7 +3582,7 @@ function useButton(initialProps) {
3582
3582
 
3583
3583
  Breadcrumb.displayName = "Breadcrumb";
3584
3584
 
3585
- const Spinner = ({size: size = "md", variant: variant = "primary", fullscreen: fullscreen = !1, className: className = "", style: style, glass: glass}) => {
3585
+ const Spinner = memo((({size: size = "md", variant: variant = "primary", fullscreen: fullscreen = !1, className: className = "", style: style, glass: glass}) => {
3586
3586
  const {generateSpinnerClass: generateSpinnerClass} = useSpinner({
3587
3587
  size: size,
3588
3588
  variant: variant,
@@ -3617,11 +3617,11 @@ const Spinner = ({size: size = "md", variant: variant = "primary", fullscreen: f
3617
3617
  });
3618
3618
  }
3619
3619
  return spinnerContent;
3620
- };
3620
+ }));
3621
3621
 
3622
3622
  Spinner.displayName = "Spinner";
3623
3623
 
3624
- const Button = React.memo(forwardRef((({label: label, children: children, onClick: onClick, variant: variant = "primary", size: size = "md", disabled: disabled = !1, loading: loading = !1, loadingText: loadingText, icon: icon, iconName: iconName, iconSize: iconSize = "sm", iconPosition: iconPosition = "start", iconOnly: iconOnly = !1, rounded: rounded = !1, fullWidth: fullWidth = !1, block: block = !1, active: active = !1, selected: selected = !1, type: type = "button", className: className = "", as: Component = "button", href: href, target: target, glass: glass, onHover: onHover, onFocus: onFocus, onBlur: onBlur, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, ariaExpanded: ariaExpanded, ariaControls: ariaControls, tabIndex: tabIndex, style: style, LinkComponent: LinkComponent, ...props}, ref) => {
3624
+ const Button = React.memo( forwardRef((({label: label, children: children, onClick: onClick, variant: variant = "primary", size: size = "md", disabled: disabled = !1, loading: loading = !1, loadingText: loadingText, icon: icon, iconName: iconName, iconSize: iconSize = "sm", iconPosition: iconPosition = "start", iconOnly: iconOnly = !1, rounded: rounded = !1, fullWidth: fullWidth = !1, block: block = !1, active: active = !1, selected: selected = !1, type: type = "button", className: className = "", as: Component = "button", href: href, target: target, glass: glass, onHover: onHover, onFocus: onFocus, onBlur: onBlur, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, ariaExpanded: ariaExpanded, ariaControls: ariaControls, tabIndex: tabIndex, style: style, LinkComponent: LinkComponent, ...props}, ref) => {
3625
3625
  const isDisabled = disabled || loading, shouldRenderAsLink = Boolean(href && !isDisabled), iconElement = useMemo((() => loading ? null : iconName ? jsx(Icon, {
3626
3626
  name: iconName,
3627
3627
  size: iconSize
@@ -3787,10 +3787,379 @@ const Button = React.memo(forwardRef((({label: label, children: children, onClic
3787
3787
 
3788
3788
  Button.displayName = "Button";
3789
3789
 
3790
- /**
3791
- * Callout component for displaying important messages, notifications, or alerts
3792
- */
3793
- const Callout = ({title: title, children: children, icon: icon, variant: variant = "primary", onClose: onClose, actions: actions, oneLine: oneLine = !1, toast: toast = !1, glass: glass, className: className, style: style, ...props}) => {
3790
+ var commonjsGlobal = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};
3791
+
3792
+ function getDefaultExportFromCjs(x) {
3793
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x.default : x;
3794
+ }
3795
+
3796
+ var fails$9 = function(exec) {
3797
+ try {
3798
+ return !!exec();
3799
+ } catch (error) {
3800
+ return !0;
3801
+ }
3802
+ }, functionBindNative = !fails$9((function() {
3803
+ // eslint-disable-next-line es/no-function-prototype-bind -- safe
3804
+ var test = function() {/* empty */}.bind();
3805
+ // eslint-disable-next-line no-prototype-builtins -- safe
3806
+ return "function" != typeof test || test.hasOwnProperty("prototype");
3807
+ })), NATIVE_BIND$3 = functionBindNative, FunctionPrototype$1 = Function.prototype, call$5 = FunctionPrototype$1.call, uncurryThisWithBind = NATIVE_BIND$3 && FunctionPrototype$1.bind.bind(call$5, call$5), functionUncurryThis = NATIVE_BIND$3 ? uncurryThisWithBind : function(fn) {
3808
+ return function() {
3809
+ return call$5.apply(fn, arguments);
3810
+ };
3811
+ }, objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf), check = function(it) {
3812
+ return it && it.Math === Math && it;
3813
+ }, globalThis_1 =
3814
+ // eslint-disable-next-line es/no-global-this -- safe
3815
+ check("object" == typeof globalThis && globalThis) || check("object" == typeof window && window) ||
3816
+ // eslint-disable-next-line no-restricted-globals -- safe
3817
+ check("object" == typeof self && self) || check("object" == typeof commonjsGlobal && commonjsGlobal) || check("object" == typeof commonjsGlobal && commonjsGlobal) ||
3818
+ // eslint-disable-next-line no-new-func -- fallback
3819
+ function() {
3820
+ return this;
3821
+ }() || Function("return this")(), NATIVE_BIND$2 = functionBindNative, FunctionPrototype = Function.prototype, apply$1 = FunctionPrototype.apply, call$4 = FunctionPrototype.call, functionApply = "object" == typeof Reflect && Reflect.apply || (NATIVE_BIND$2 ? call$4.bind(apply$1) : function() {
3822
+ return call$4.apply(apply$1, arguments);
3823
+ }), uncurryThis$7 = functionUncurryThis, toString$3 = uncurryThis$7({}.toString), stringSlice = uncurryThis$7("".slice), classofRaw$2 = function(it) {
3824
+ return stringSlice(toString$3(it), 8, -1);
3825
+ }, classofRaw$1 = classofRaw$2, uncurryThis$6 = functionUncurryThis, functionUncurryThisClause = function(fn) {
3826
+ // Nashorn bug:
3827
+ // https://github.com/zloirock/core-js/issues/1128
3828
+ // https://github.com/zloirock/core-js/issues/1130
3829
+ if ("Function" === classofRaw$1(fn)) return uncurryThis$6(fn);
3830
+ }, documentAll = "object" == typeof document && document.all, isCallable$8 = void 0 === documentAll && void 0 !== documentAll ? function(argument) {
3831
+ return "function" == typeof argument || argument === documentAll;
3832
+ } : function(argument) {
3833
+ return "function" == typeof argument;
3834
+ }, objectGetOwnPropertyDescriptor = {}, descriptors = !fails$9((function() {
3835
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
3836
+ return 7 !== Object.defineProperty({}, 1, {
3837
+ get: function() {
3838
+ return 7;
3839
+ }
3840
+ })[1];
3841
+ })), NATIVE_BIND$1 = functionBindNative, call$3 = Function.prototype.call, functionCall = NATIVE_BIND$1 ? call$3.bind(call$3) : function() {
3842
+ return call$3.apply(call$3, arguments);
3843
+ }, objectPropertyIsEnumerable = {}, $propertyIsEnumerable = {}.propertyIsEnumerable, getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor, NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({
3844
+ 1: 2
3845
+ }, 1);
3846
+
3847
+ // `Object.prototype.propertyIsEnumerable` method implementation
3848
+ // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
3849
+ objectPropertyIsEnumerable.f = NASHORN_BUG ? function(V) {
3850
+ var descriptor = getOwnPropertyDescriptor$1(this, V);
3851
+ return !!descriptor && descriptor.enumerable;
3852
+ } : $propertyIsEnumerable;
3853
+
3854
+ var match, version, createPropertyDescriptor$2 = function(bitmap, value) {
3855
+ return {
3856
+ enumerable: !(1 & bitmap),
3857
+ configurable: !(2 & bitmap),
3858
+ writable: !(4 & bitmap),
3859
+ value: value
3860
+ };
3861
+ }, fails$6 = fails$9, classof$4 = classofRaw$2, $Object$3 = Object, split = functionUncurryThis("".split), indexedObject = fails$6((function() {
3862
+ // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
3863
+ // eslint-disable-next-line no-prototype-builtins -- safe
3864
+ return !$Object$3("z").propertyIsEnumerable(0);
3865
+ })) ? function(it) {
3866
+ return "String" === classof$4(it) ? split(it, "") : $Object$3(it);
3867
+ } : $Object$3, isNullOrUndefined$2 = function(it) {
3868
+ return null == it;
3869
+ }, isNullOrUndefined$1 = isNullOrUndefined$2, $TypeError$7 = TypeError, requireObjectCoercible$3 = function(it) {
3870
+ if (isNullOrUndefined$1(it)) throw new $TypeError$7("Can't call method on " + it);
3871
+ return it;
3872
+ }, IndexedObject$1 = indexedObject, requireObjectCoercible$2 = requireObjectCoercible$3, toIndexedObject$2 = function(it) {
3873
+ return IndexedObject$1(requireObjectCoercible$2(it));
3874
+ }, isCallable$7 = isCallable$8, isObject$6 = function(it) {
3875
+ return "object" == typeof it ? null !== it : isCallable$7(it);
3876
+ }, path$3 = {}, path$2 = path$3, globalThis$b = globalThis_1, isCallable$6 = isCallable$8, aFunction = function(variable) {
3877
+ return isCallable$6(variable) ? variable : void 0;
3878
+ }, navigator$1 = globalThis_1.navigator, userAgent$2 = navigator$1 && navigator$1.userAgent, environmentUserAgent = userAgent$2 ? String(userAgent$2) : "", globalThis$9 = globalThis_1, userAgent$1 = environmentUserAgent, process$1 = globalThis$9.process, Deno$1 = globalThis$9.Deno, versions = process$1 && process$1.versions || Deno$1 && Deno$1.version, v8 = versions && versions.v8;
3879
+
3880
+ v8 && (
3881
+ // in old Chrome, versions of V8 isn't V8 = Chrome / 10
3882
+ // but their correct versions are not interesting for us
3883
+ version = (match = v8.split("."))[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1])),
3884
+ // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
3885
+ // so check `userAgent` even if `.v8` exists, but 0
3886
+ !version && userAgent$1 && (!(match = userAgent$1.match(/Edge\/(\d+)/)) || match[1] >= 74) && (match = userAgent$1.match(/Chrome\/(\d+)/)) && (version = +match[1]);
3887
+
3888
+ var environmentV8Version = version, V8_VERSION = environmentV8Version, fails$5 = fails$9, $String$3 = globalThis_1.String, symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$5((function() {
3889
+ var symbol = Symbol("symbol detection");
3890
+ // Chrome 38 Symbol has incorrect toString conversion
3891
+ // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
3892
+ // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
3893
+ // of course, fail.
3894
+ return !$String$3(symbol) || !(Object(symbol) instanceof Symbol) ||
3895
+ // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
3896
+ !Symbol.sham && V8_VERSION && V8_VERSION < 41;
3897
+ })), useSymbolAsUid = symbolConstructorDetection && !Symbol.sham && "symbol" == typeof Symbol.iterator, isCallable$5 = isCallable$8, isPrototypeOf$2 = objectIsPrototypeOf, $Object$2 = Object, isSymbol$2 = useSymbolAsUid ? function(it) {
3898
+ return "symbol" == typeof it;
3899
+ } : function(it) {
3900
+ var $Symbol = function(namespace, method) {
3901
+ return arguments.length < 2 ? aFunction(path$2[namespace]) || aFunction(globalThis$b[namespace]) : path$2[namespace] && path$2[namespace][method] || globalThis$b[namespace] && globalThis$b[namespace][method];
3902
+ }("Symbol");
3903
+ return isCallable$5($Symbol) && isPrototypeOf$2($Symbol.prototype, $Object$2(it));
3904
+ }, $String$2 = String, isCallable$4 = isCallable$8, $TypeError$6 = TypeError, aCallable$3 = function(argument) {
3905
+ if (isCallable$4(argument)) return argument;
3906
+ throw new $TypeError$6(function(argument) {
3907
+ try {
3908
+ return $String$2(argument);
3909
+ } catch (error) {
3910
+ return "Object";
3911
+ }
3912
+ }(argument) + " is not a function");
3913
+ }, aCallable$2 = aCallable$3, isNullOrUndefined = isNullOrUndefined$2, call$2 = functionCall, isCallable$3 = isCallable$8, isObject$5 = isObject$6, $TypeError$5 = TypeError, sharedStore = {
3914
+ exports: {}
3915
+ }, globalThis$7 = globalThis_1, defineProperty = Object.defineProperty, globalThis$6 = globalThis_1, store$1 = sharedStore.exports = globalThis$6["__core-js_shared__"] || function(key, value) {
3916
+ try {
3917
+ defineProperty(globalThis$7, key, {
3918
+ value: value,
3919
+ configurable: !0,
3920
+ writable: !0
3921
+ });
3922
+ } catch (error) {
3923
+ globalThis$7[key] = value;
3924
+ }
3925
+ return value;
3926
+ }("__core-js_shared__", {});
3927
+
3928
+ /* eslint-disable es/no-symbol -- required for testing */ (store$1.versions || (store$1.versions = [])).push({
3929
+ version: "3.43.0",
3930
+ mode: "pure",
3931
+ copyright: "© 2014-2025 Denis Pushkarev (zloirock.ru)",
3932
+ license: "https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE",
3933
+ source: "https://github.com/zloirock/core-js"
3934
+ });
3935
+
3936
+ var key, value, store = sharedStore.exports, requireObjectCoercible$1 = requireObjectCoercible$3, $Object$1 = Object, toObject$2 = function(argument) {
3937
+ return $Object$1(requireObjectCoercible$1(argument));
3938
+ }, toObject$1 = toObject$2, hasOwnProperty = functionUncurryThis({}.hasOwnProperty), hasOwnProperty_1 = Object.hasOwn || function(it, key) {
3939
+ return hasOwnProperty(toObject$1(it), key);
3940
+ }, uncurryThis$3 = functionUncurryThis, id = 0, postfix = Math.random(), toString$2 = uncurryThis$3(1.1.toString), hasOwn$2 = hasOwnProperty_1, NATIVE_SYMBOL = symbolConstructorDetection, USE_SYMBOL_AS_UID = useSymbolAsUid, Symbol$1 = globalThis_1.Symbol, WellKnownSymbolsStore = store[key = "wks"] || (store[key] = value || {}), createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1.for || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || function(key) {
3941
+ return "Symbol(" + (void 0 === key ? "" : key) + ")_" + toString$2(++id + postfix, 36);
3942
+ }, wellKnownSymbol$5 = function(name) {
3943
+ return hasOwn$2(WellKnownSymbolsStore, name) || (WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$2(Symbol$1, name) ? Symbol$1[name] : createWellKnownSymbol("Symbol." + name)),
3944
+ WellKnownSymbolsStore[name];
3945
+ }, call$1 = functionCall, isObject$4 = isObject$6, isSymbol$1 = isSymbol$2, $TypeError$4 = TypeError, TO_PRIMITIVE = wellKnownSymbol$5("toPrimitive"), toPrimitive = function(input, pref) {
3946
+ if (!isObject$4(input) || isSymbol$1(input)) return input;
3947
+ var result, func, exoticToPrim = (func = input[TO_PRIMITIVE], isNullOrUndefined(func) ? void 0 : aCallable$2(func));
3948
+ if (exoticToPrim) {
3949
+ if (void 0 === pref && (pref = "default"), result = call$1(exoticToPrim, input, pref),
3950
+ !isObject$4(result) || isSymbol$1(result)) return result;
3951
+ throw new $TypeError$4("Can't convert object to primitive value");
3952
+ }
3953
+ return void 0 === pref && (pref = "number"), function(input, pref) {
3954
+ var fn, val;
3955
+ if ("string" === pref && isCallable$3(fn = input.toString) && !isObject$5(val = call$2(fn, input))) return val;
3956
+ if (isCallable$3(fn = input.valueOf) && !isObject$5(val = call$2(fn, input))) return val;
3957
+ if ("string" !== pref && isCallable$3(fn = input.toString) && !isObject$5(val = call$2(fn, input))) return val;
3958
+ throw new $TypeError$5("Can't convert object to primitive value");
3959
+ }(input, pref);
3960
+ }, isSymbol = isSymbol$2, toPropertyKey$2 = function(argument) {
3961
+ var key = toPrimitive(argument, "string");
3962
+ return isSymbol(key) ? key : key + "";
3963
+ }, isObject$3 = isObject$6, document$1 = globalThis_1.document, EXISTS = isObject$3(document$1) && isObject$3(document$1.createElement), ie8DomDefine = !descriptors && !fails$9((function() {
3964
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
3965
+ return 7 !== Object.defineProperty((it = "div", EXISTS ? document$1.createElement(it) : {}), "a", {
3966
+ get: function() {
3967
+ return 7;
3968
+ }
3969
+ }).a;
3970
+ var it;
3971
+ })), DESCRIPTORS$3 = descriptors, call = functionCall, propertyIsEnumerableModule = objectPropertyIsEnumerable, createPropertyDescriptor$1 = createPropertyDescriptor$2, toIndexedObject$1 = toIndexedObject$2, toPropertyKey$1 = toPropertyKey$2, hasOwn$1 = hasOwnProperty_1, IE8_DOM_DEFINE$1 = ie8DomDefine, $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
3972
+
3973
+ // `Object.getOwnPropertyDescriptor` method
3974
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
3975
+ objectGetOwnPropertyDescriptor.f = DESCRIPTORS$3 ? $getOwnPropertyDescriptor$1 : function(O, P) {
3976
+ if (O = toIndexedObject$1(O), P = toPropertyKey$1(P), IE8_DOM_DEFINE$1) try {
3977
+ return $getOwnPropertyDescriptor$1(O, P);
3978
+ } catch (error) {/* empty */}
3979
+ if (hasOwn$1(O, P)) return createPropertyDescriptor$1(!call(propertyIsEnumerableModule.f, O, P), O[P]);
3980
+ };
3981
+
3982
+ var fails$3 = fails$9, isCallable$2 = isCallable$8, replacement = /#|\.prototype\./, isForced$1 = function(feature, detection) {
3983
+ var value = data[normalize(feature)];
3984
+ return value === POLYFILL || value !== NATIVE && (isCallable$2(detection) ? fails$3(detection) : !!detection);
3985
+ }, normalize = isForced$1.normalize = function(string) {
3986
+ return String(string).replace(replacement, ".").toLowerCase();
3987
+ }, data = isForced$1.data = {}, NATIVE = isForced$1.NATIVE = "N", POLYFILL = isForced$1.POLYFILL = "P", isForced_1 = isForced$1, aCallable$1 = aCallable$3, NATIVE_BIND = functionBindNative, bind$1 = functionUncurryThisClause(functionUncurryThisClause.bind), objectDefineProperty = {}, v8PrototypeDefineBug = descriptors && fails$9((function() {
3988
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
3989
+ return 42 !== Object.defineProperty((function() {/* empty */}), "prototype", {
3990
+ value: 42,
3991
+ writable: !1
3992
+ }).prototype;
3993
+ })), isObject$2 = isObject$6, $String$1 = String, $TypeError$3 = TypeError, DESCRIPTORS$1 = descriptors, IE8_DOM_DEFINE = ie8DomDefine, V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug, anObject = function(argument) {
3994
+ if (isObject$2(argument)) return argument;
3995
+ throw new $TypeError$3($String$1(argument) + " is not an object");
3996
+ }, toPropertyKey = toPropertyKey$2, $TypeError$2 = TypeError, $defineProperty = Object.defineProperty, $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
3997
+
3998
+ // `Object.defineProperty` method
3999
+ // https://tc39.es/ecma262/#sec-object.defineproperty
4000
+ objectDefineProperty.f = DESCRIPTORS$1 ? V8_PROTOTYPE_DEFINE_BUG ? function(O, P, Attributes) {
4001
+ if (anObject(O), P = toPropertyKey(P), anObject(Attributes), "function" == typeof O && "prototype" === P && "value" in Attributes && "writable" in Attributes && !Attributes.writable) {
4002
+ var current = $getOwnPropertyDescriptor(O, P);
4003
+ current && current.writable && (O[P] = Attributes.value, Attributes = {
4004
+ configurable: "configurable" in Attributes ? Attributes.configurable : current.configurable,
4005
+ enumerable: "enumerable" in Attributes ? Attributes.enumerable : current.enumerable,
4006
+ writable: !1
4007
+ });
4008
+ }
4009
+ return $defineProperty(O, P, Attributes);
4010
+ } : $defineProperty : function(O, P, Attributes) {
4011
+ if (anObject(O), P = toPropertyKey(P), anObject(Attributes), IE8_DOM_DEFINE) try {
4012
+ return $defineProperty(O, P, Attributes);
4013
+ } catch (error) {/* empty */}
4014
+ if ("get" in Attributes || "set" in Attributes) throw new $TypeError$2("Accessors not supported");
4015
+ return "value" in Attributes && (O[P] = Attributes.value), O;
4016
+ };
4017
+
4018
+ var definePropertyModule = objectDefineProperty, createPropertyDescriptor = createPropertyDescriptor$2, createNonEnumerableProperty$1 = descriptors ? function(object, key, value) {
4019
+ return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
4020
+ } : function(object, key, value) {
4021
+ return object[key] = value, object;
4022
+ }, globalThis$3 = globalThis_1, apply = functionApply, uncurryThis$1 = functionUncurryThisClause, isCallable$1 = isCallable$8, getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f, isForced = isForced_1, path$1 = path$3, bind = function(fn, that) {
4023
+ return aCallable$1(fn), void 0 === that ? fn : NATIVE_BIND ? bind$1(fn, that) : function() {
4024
+ return fn.apply(that, arguments);
4025
+ };
4026
+ }, createNonEnumerableProperty = createNonEnumerableProperty$1, hasOwn = hasOwnProperty_1, wrapConstructor = function(NativeConstructor) {
4027
+ var Wrapper = function(a, b, c) {
4028
+ if (this instanceof Wrapper) {
4029
+ switch (arguments.length) {
4030
+ case 0:
4031
+ return new NativeConstructor;
4032
+
4033
+ case 1:
4034
+ return new NativeConstructor(a);
4035
+
4036
+ case 2:
4037
+ return new NativeConstructor(a, b);
4038
+ }
4039
+ return new NativeConstructor(a, b, c);
4040
+ }
4041
+ return apply(NativeConstructor, this, arguments);
4042
+ };
4043
+ return Wrapper.prototype = NativeConstructor.prototype, Wrapper;
4044
+ }, _export = function(options, source) {
4045
+ var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE, key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor, TARGET = options.target, GLOBAL = options.global, STATIC = options.stat, PROTO = options.proto, nativeSource = GLOBAL ? globalThis$3 : STATIC ? globalThis$3[TARGET] : globalThis$3[TARGET] && globalThis$3[TARGET].prototype, target = GLOBAL ? path$1 : path$1[TARGET] || createNonEnumerableProperty(path$1, TARGET, {})[TARGET], targetPrototype = target.prototype;
4046
+ for (key in source)
4047
+ // contains in native
4048
+ USE_NATIVE = !(FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced)) && nativeSource && hasOwn(nativeSource, key),
4049
+ targetProperty = target[key], USE_NATIVE && (nativeProperty = options.dontCallGetSet ? (descriptor = getOwnPropertyDescriptor(nativeSource, key)) && descriptor.value : nativeSource[key]),
4050
+ // export native or implementation
4051
+ sourceProperty = USE_NATIVE && nativeProperty ? nativeProperty : source[key], (FORCED || PROTO || typeof targetProperty != typeof sourceProperty) && (
4052
+ // bind methods to global for calling from export context
4053
+ resultProperty = options.bind && USE_NATIVE ? bind(sourceProperty, globalThis$3) : options.wrap && USE_NATIVE ? wrapConstructor(sourceProperty) : PROTO && isCallable$1(sourceProperty) ? uncurryThis$1(sourceProperty) : sourceProperty,
4054
+ // add a flag to not completely full polyfills
4055
+ (options.sham || sourceProperty && sourceProperty.sham || targetProperty && targetProperty.sham) && createNonEnumerableProperty(resultProperty, "sham", !0),
4056
+ createNonEnumerableProperty(target, key, resultProperty), PROTO && (hasOwn(path$1, VIRTUAL_PROTOTYPE = TARGET + "Prototype") || createNonEnumerableProperty(path$1, VIRTUAL_PROTOTYPE, {}),
4057
+ // export virtual prototype methods
4058
+ createNonEnumerableProperty(path$1[VIRTUAL_PROTOTYPE], key, sourceProperty),
4059
+ // export real prototype methods
4060
+ options.real && targetPrototype && (FORCED || !targetPrototype[key]) && createNonEnumerableProperty(targetPrototype, key, sourceProperty)));
4061
+ }, ceil = Math.ceil, floor = Math.floor, trunc = Math.trunc || function(x) {
4062
+ var n = +x;
4063
+ return (n > 0 ? floor : ceil)(n);
4064
+ }, toIntegerOrInfinity$2 = function(argument) {
4065
+ var number = +argument;
4066
+ // eslint-disable-next-line no-self-compare -- NaN check
4067
+ return number != number || 0 === number ? 0 : trunc(number);
4068
+ }, toIntegerOrInfinity$1 = toIntegerOrInfinity$2, max = Math.max, min$1 = Math.min, toIntegerOrInfinity = toIntegerOrInfinity$2, min = Math.min, lengthOfArrayLike$2 = function(obj) {
4069
+ return argument = obj.length, (len = toIntegerOrInfinity(argument)) > 0 ? min(len, 9007199254740991) : 0;
4070
+ var argument, len;
4071
+ }, toIndexedObject = toIndexedObject$2, lengthOfArrayLike$1 = lengthOfArrayLike$2, createMethod$1 = function(IS_INCLUDES) {
4072
+ return function($this, el, fromIndex) {
4073
+ var O = toIndexedObject($this), length = lengthOfArrayLike$1(O);
4074
+ if (0 === length) return !IS_INCLUDES && -1;
4075
+ var value, index = function(index, length) {
4076
+ var integer = toIntegerOrInfinity$1(index);
4077
+ return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
4078
+ }(fromIndex, length);
4079
+ // Array#includes uses SameValueZero equality algorithm
4080
+ // eslint-disable-next-line no-self-compare -- NaN check
4081
+ if (IS_INCLUDES && el != el) {
4082
+ for (;length > index; )
4083
+ // eslint-disable-next-line no-self-compare -- NaN check
4084
+ if ((value = O[index++]) != value) return !0;
4085
+ // Array#indexOf ignores holes, Array#includes - not
4086
+ } else for (;length > index; index++) if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4087
+ return !IS_INCLUDES && -1;
4088
+ };
4089
+ }, $includes = [ createMethod$1(!0), createMethod$1(!1) ][0];
4090
+
4091
+ // `Array.prototype.includes` method
4092
+ // https://tc39.es/ecma262/#sec-array.prototype.includes
4093
+ _export({
4094
+ target: "Array",
4095
+ proto: !0,
4096
+ forced: fails$9((function() {
4097
+ // eslint-disable-next-line es/no-array-prototype-includes -- detection
4098
+ return !Array(1).includes();
4099
+ }))
4100
+ }, {
4101
+ includes: function(el /* , fromIndex = 0 */) {
4102
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : void 0);
4103
+ }
4104
+ });
4105
+
4106
+ var globalThis$2 = globalThis_1, path = path$3, getBuiltInPrototypeMethod$3 = function(CONSTRUCTOR, METHOD) {
4107
+ var Namespace = path[CONSTRUCTOR + "Prototype"], pureMethod = Namespace && Namespace[METHOD];
4108
+ if (pureMethod) return pureMethod;
4109
+ var NativeConstructor = globalThis$2[CONSTRUCTOR], NativePrototype = NativeConstructor && NativeConstructor.prototype;
4110
+ return NativePrototype && NativePrototype[METHOD];
4111
+ }, includes$4 = getBuiltInPrototypeMethod$3("Array", "includes"), isObject$1 = isObject$6, classof$3 = classofRaw$2, MATCH$1 = wellKnownSymbol$5("match"), $TypeError$1 = TypeError, test = {};
4112
+
4113
+ test[wellKnownSymbol$5("toStringTag")] = "z";
4114
+
4115
+ var TO_STRING_TAG_SUPPORT = "[object z]" === String(test), isCallable = isCallable$8, classofRaw = classofRaw$2, TO_STRING_TAG = wellKnownSymbol$5("toStringTag"), $Object = Object, CORRECT_ARGUMENTS = "Arguments" === classofRaw(function() {
4116
+ return arguments;
4117
+ }()), classof$1 = TO_STRING_TAG_SUPPORT ? classofRaw : function(it) {
4118
+ var O, tag, result;
4119
+ return void 0 === it ? "Undefined" : null === it ? "Null" : "string" == typeof (tag = function(it, key) {
4120
+ try {
4121
+ return it[key];
4122
+ } catch (error) {/* empty */}
4123
+ }(O = $Object(it), TO_STRING_TAG)) ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : "Object" === (result = classofRaw(O)) && isCallable(O.callee) ? "Arguments" : result;
4124
+ }, $String = String, MATCH = wellKnownSymbol$5("match"), $$1 = _export, notARegExp = function(it) {
4125
+ if (function(it) {
4126
+ var isRegExp;
4127
+ return isObject$1(it) && (void 0 !== (isRegExp = it[MATCH$1]) ? !!isRegExp : "RegExp" === classof$3(it));
4128
+ }(it)) throw new $TypeError$1("The method doesn't accept regular expressions");
4129
+ return it;
4130
+ }, requireObjectCoercible = requireObjectCoercible$3, toString = function(argument) {
4131
+ if ("Symbol" === classof$1(argument)) throw new TypeError("Cannot convert a Symbol value to a string");
4132
+ return $String(argument);
4133
+ }, stringIndexOf = functionUncurryThis("".indexOf);
4134
+
4135
+ // `String.prototype.includes` method
4136
+ // https://tc39.es/ecma262/#sec-string.prototype.includes
4137
+ $$1({
4138
+ target: "String",
4139
+ proto: !0,
4140
+ forced: !function(METHOD_NAME) {
4141
+ var regexp = /./;
4142
+ try {
4143
+ "/./"[METHOD_NAME](regexp);
4144
+ } catch (error1) {
4145
+ try {
4146
+ return regexp[MATCH] = !1, "/./"[METHOD_NAME](regexp);
4147
+ } catch (error2) {/* empty */}
4148
+ }
4149
+ return !1;
4150
+ }("includes")
4151
+ }, {
4152
+ includes: function(searchString /* , position = 0 */) {
4153
+ return !!~stringIndexOf(toString(requireObjectCoercible(this)), toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : void 0);
4154
+ }
4155
+ });
4156
+
4157
+ var includes$3 = getBuiltInPrototypeMethod$3("String", "includes"), isPrototypeOf$1 = objectIsPrototypeOf, arrayMethod = includes$4, stringMethod = includes$3, ArrayPrototype$1 = Array.prototype, StringPrototype = String.prototype;
4158
+
4159
+ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
4160
+ var own = it.includes;
4161
+ return it === ArrayPrototype$1 || isPrototypeOf$1(ArrayPrototype$1, it) && own === ArrayPrototype$1.includes ? arrayMethod : "string" == typeof it || it === StringPrototype || isPrototypeOf$1(StringPrototype, it) && own === StringPrototype.includes ? stringMethod : own;
4162
+ })), Callout = ({title: title, children: children, icon: icon, variant: variant = "primary", onClose: onClose, actions: actions, oneLine: oneLine = !1, toast: toast = !1, glass: glass, className: className, style: style, ...props}) => {
3794
4163
  const {generateCalloutClass: generateCalloutClass, handleClose: handleClose} =
3795
4164
  /**
3796
4165
  * Callout state and functionality
@@ -3807,10 +4176,10 @@ const Callout = ({title: title, children: children, icon: icon, variant: variant
3807
4176
  ...initialProps
3808
4177
  };
3809
4178
  /**
3810
- * Generate callout class based on properties
3811
- * @param props - Callout properties
3812
- * @returns Class string
3813
- */ return {
4179
+ * Generate callout class based on properties
4180
+ * @param props - Callout properties
4181
+ * @returns Class string
4182
+ */ return {
3814
4183
  defaultProps: defaultProps,
3815
4184
  generateCalloutClass: props => {
3816
4185
  const {variant: variant = defaultProps.variant, oneLine: oneLine = defaultProps.oneLine, toast: toast = defaultProps.toast, glass: glass = defaultProps.glass, className: className = ""} = props;
@@ -3820,7 +4189,10 @@ const Callout = ({title: title, children: children, icon: icon, variant: variant
3820
4189
  handler && handler();
3821
4190
  }
3822
4191
  };
3823
- }({
4192
+ }
4193
+ /**
4194
+ * Callout component for displaying important messages, notifications, or alerts
4195
+ */ ({
3824
4196
  variant: variant,
3825
4197
  oneLine: oneLine,
3826
4198
  toast: toast,
@@ -3828,12 +4200,13 @@ const Callout = ({title: title, children: children, icon: icon, variant: variant
3828
4200
  className: className,
3829
4201
  style: style
3830
4202
  }), getAriaAttributes = () => {
4203
+ var _context, _context2;
3831
4204
  const baseAttributes = {
3832
4205
  role: "region"
3833
4206
  };
3834
4207
  // For toast notifications or alerts, use appropriate role and live region
3835
- return toast ? (baseAttributes.role = "alert", baseAttributes["aria-live"] = "polite") : [ "warning", "error" ].includes(variant) ? (baseAttributes.role = "alert",
3836
- baseAttributes["aria-live"] = "assertive") : [ "info", "success" ].includes(variant) && (baseAttributes.role = "status",
4208
+ return toast ? (baseAttributes.role = "alert", baseAttributes["aria-live"] = "polite") : _includesInstanceProperty(_context = [ "warning", "error" ]).call(_context, variant) ? (baseAttributes.role = "alert",
4209
+ baseAttributes["aria-live"] = "assertive") : _includesInstanceProperty(_context2 = [ "info", "success" ]).call(_context2, variant) && (baseAttributes.role = "status",
3837
4210
  baseAttributes["aria-live"] = "polite"), baseAttributes;
3838
4211
  }, calloutContent = jsxs(Fragment, {
3839
4212
  children: [ jsxs("div", {
@@ -3915,7 +4288,7 @@ const Callout = ({title: title, children: children, icon: icon, variant: variant
3915
4288
 
3916
4289
  Callout.displayName = "Callout";
3917
4290
 
3918
- const Card = React.memo(forwardRef((({
4291
+ const Card = React.memo( forwardRef((({
3919
4292
  // Variants
3920
4293
  size: size = "md", variant: variant = "", appearance: appearance = "filled", elevation: elevation = "none", hoverable: hoverable = !1, hoverElevation: hoverElevation = "md",
3921
4294
  // Layout
@@ -4038,7 +4411,7 @@ className: className = "", style: style, ...rest}, ref) => {
4038
4411
 
4039
4412
  Card.displayName = "Card";
4040
4413
 
4041
- const CardHeader = forwardRef((({title: title, subtitle: subtitle, action: action, icon: icon, children: children, className: className = "", ...props}, ref) => {
4414
+ const CardHeader = forwardRef((({title: title, subtitle: subtitle, action: action, icon: icon, children: children, className: className = "", ...props}, ref) => {
4042
4415
  const headerClasses = `${CARD.SELECTORS.HEADER.substring(1)} ${className}`.trim();
4043
4416
  return jsxs("div", {
4044
4417
  ref: ref,
@@ -4064,7 +4437,7 @@ const CardHeader = forwardRef((({title: title, subtitle: subtitle, action: actio
4064
4437
 
4065
4438
  CardHeader.displayName = "CardHeader";
4066
4439
 
4067
- const CardBody = forwardRef((({scrollable: scrollable = !1, maxHeight: maxHeight, children: children, className: className = "", style: style, ...props}, ref) => {
4440
+ const CardBody = forwardRef((({scrollable: scrollable = !1, maxHeight: maxHeight, children: children, className: className = "", style: style, ...props}, ref) => {
4068
4441
  const bodyClasses = `${CARD.SELECTORS.BODY.substring(1)} ${scrollable ? "c-card__body--scrollable" : ""} ${className}`.trim(), bodyStyle = {
4069
4442
  ...style,
4070
4443
  ...scrollable && maxHeight ? {
@@ -4083,7 +4456,7 @@ const CardBody = forwardRef((({scrollable: scrollable = !1, maxHeight: maxHeight
4083
4456
 
4084
4457
  CardBody.displayName = "CardBody";
4085
4458
 
4086
- const CardFooter = forwardRef((({align: align, children: children, className: className = "", style: style, ...props}, ref) => {
4459
+ const CardFooter = forwardRef((({align: align, children: children, className: className = "", style: style, ...props}, ref) => {
4087
4460
  const footerClasses = `${CARD.SELECTORS.FOOTER.substring(1)} ${align ? `c-card__footer--align-${align}` : ""} ${className}`.trim();
4088
4461
  return jsx("div", {
4089
4462
  ref: ref,
@@ -4175,12 +4548,67 @@ const useCard = (options = {}) => {
4175
4548
  });
4176
4549
  };
4177
4550
 
4551
+ ElevationCard.displayName = "ElevationCard";
4552
+
4553
+ var aCallable = aCallable$3, toObject = toObject$2, IndexedObject = indexedObject, lengthOfArrayLike = lengthOfArrayLike$2, $TypeError = TypeError, REDUCE_EMPTY = "Reduce of empty array with no initial value", createMethod = function(IS_RIGHT) {
4554
+ return function(that, callbackfn, argumentsLength, memo) {
4555
+ var O = toObject(that), self = IndexedObject(O), length = lengthOfArrayLike(O);
4556
+ if (aCallable(callbackfn), 0 === length && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);
4557
+ var index = IS_RIGHT ? length - 1 : 0, i = IS_RIGHT ? -1 : 1;
4558
+ if (argumentsLength < 2) for (;;) {
4559
+ if (index in self) {
4560
+ memo = self[index], index += i;
4561
+ break;
4562
+ }
4563
+ if (index += i, IS_RIGHT ? index < 0 : length <= index) throw new $TypeError(REDUCE_EMPTY);
4564
+ }
4565
+ for (;IS_RIGHT ? index >= 0 : length > index; index += i) index in self && (memo = callbackfn(memo, self[index], index, O));
4566
+ return memo;
4567
+ };
4568
+ }, arrayReduce = {
4569
+ // `Array.prototype.reduce` method
4570
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
4571
+ left: createMethod(!1),
4572
+ // `Array.prototype.reduceRight` method
4573
+ // https://tc39.es/ecma262/#sec-array.prototype.reduceright
4574
+ right: createMethod(!0)
4575
+ }, fails = fails$9, globalThis$1 = globalThis_1, userAgent = environmentUserAgent, classof = classofRaw$2, userAgentStartsWith = function(string) {
4576
+ return userAgent.slice(0, string.length) === string;
4577
+ }, environment = userAgentStartsWith("Bun/") ? "BUN" : userAgentStartsWith("Cloudflare-Workers") ? "CLOUDFLARE" : userAgentStartsWith("Deno/") ? "DENO" : userAgentStartsWith("Node.js/") ? "NODE" : globalThis$1.Bun && "string" == typeof Bun.version ? "BUN" : globalThis$1.Deno && "object" == typeof Deno.version ? "DENO" : "process" === classof(globalThis$1.process) ? "NODE" : globalThis$1.window && globalThis$1.document ? "BROWSER" : "REST", $reduce = arrayReduce.left;
4578
+
4579
+ // `Array.prototype.reduce` method
4580
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
4581
+ _export({
4582
+ target: "Array",
4583
+ proto: !0,
4584
+ forced: !("NODE" === environment) && environmentV8Version > 79 && environmentV8Version < 83 || !function(METHOD_NAME, argument) {
4585
+ var method = [][METHOD_NAME];
4586
+ return !!method && fails((function() {
4587
+ // eslint-disable-next-line no-useless-call -- required for testing
4588
+ method.call(null, argument || function() {
4589
+ return 1;
4590
+ }, 1);
4591
+ }));
4592
+ }("reduce")
4593
+ }, {
4594
+ reduce: function(callbackfn /* , initialValue */) {
4595
+ var length = arguments.length;
4596
+ return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : void 0);
4597
+ }
4598
+ });
4599
+
4600
+ var reduce$3 = getBuiltInPrototypeMethod$3("Array", "reduce"), isPrototypeOf = objectIsPrototypeOf, method = reduce$3, ArrayPrototype = Array.prototype;
4601
+
4602
+ const _reduceInstanceProperty = getDefaultExportFromCjs((function(it) {
4603
+ var own = it.reduce;
4604
+ return it === ArrayPrototype || isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce ? method : own;
4605
+ }));
4606
+
4178
4607
  /**
4179
4608
  * Comprehensive chart hook with shared functionality
4180
4609
  * @param initialProps - Initial chart properties
4181
4610
  * @returns Chart state and methods
4182
- */
4183
- function useChart(initialProps) {
4611
+ */ function useChart(initialProps) {
4184
4612
  const [interactionState, setInteractionState] = useState({
4185
4613
  hoveredPoint: null,
4186
4614
  selectedPoints: [],
@@ -4216,8 +4644,8 @@ function useChart(initialProps) {
4216
4644
  animationFrameRef.current && cancelAnimationFrame(animationFrameRef.current);
4217
4645
  }), []);
4218
4646
  /**
4219
- * Point interaction handlers
4220
- */
4647
+ * Point interaction handlers
4648
+ */
4221
4649
  const handlePointHover = useCallback(((datasetIndex, pointIndex, x, y, clientX, clientY) => {
4222
4650
  setInteractionState((prev => ({
4223
4651
  ...prev,
@@ -4571,9 +4999,7 @@ function useChart(initialProps) {
4571
4999
 
4572
5000
  /**
4573
5001
  * Hook for chart data processing and transformation
4574
- */ ElevationCard.displayName = "ElevationCard";
4575
-
4576
- const ChartToolbar = memo(forwardRef((({chartType: chartType = "line", groups: groups = [], enableDefaults: enableDefaults = !0, defaults: defaults = {
5002
+ */ const ChartToolbar = memo( forwardRef((({chartType: chartType = "line", groups: groups = [], enableDefaults: enableDefaults = !0, defaults: defaults = {
4577
5003
  refresh: !0,
4578
5004
  export: !0,
4579
5005
  fullscreen: !0,
@@ -4960,7 +5386,7 @@ const ChartToolbar = memo(forwardRef((({chartType: chartType = "line", groups: g
4960
5386
 
4961
5387
  ChartToolbar.displayName = "ChartToolbar";
4962
5388
 
4963
- const ChartContext = createContext(null), Chart = memo(forwardRef((({children: children, type: type = "line", size: size = "md", variant: variant = "primary", title: title, subtitle: subtitle, loading: loading = !1, error: error, className: className = "", "aria-label": ariaLabel, onFullscreen: onFullscreen, onExport: onExport, onRefresh: onRefresh, showToolbar: showToolbar = !1, enableFullscreen: enableFullscreen = !1, enableExport: enableExport = !1, enableRefresh: enableRefresh = !1, exportFormats: exportFormats = [ "png", "svg", "csv" ], datasets: datasets, config: config,
5389
+ const ChartContext = createContext(null), Chart = memo( forwardRef((({children: children, type: type = "line", size: size = "md", variant: variant = "primary", title: title, subtitle: subtitle, loading: loading = !1, error: error, className: className = "", "aria-label": ariaLabel, onFullscreen: onFullscreen, onExport: onExport, onRefresh: onRefresh, showToolbar: showToolbar = !1, enableFullscreen: enableFullscreen = !1, enableExport: enableExport = !1, enableRefresh: enableRefresh = !1, exportFormats: exportFormats = [ "png", "svg", "csv" ], datasets: datasets, config: config,
4964
5390
  // Destructure non-DOM props to prevent passing to DOM element
4965
5391
  toolbarConfig: toolbarConfig, customToolbarActions: customToolbarActions, customToolbarGroups: customToolbarGroups, data: data, showLegend: showLegend, interactive: interactive, fullscreen: fullscreen, onDataPointClick: onDataPointClick, onLegendItemClick: onLegendItemClick, glass: glass, ...props}, ref) => {
4966
5392
  const [isFullscreen, setIsFullscreen] = useState(!1), [isExporting, setIsExporting] = useState(!1), chartContainerRef = useRef(null), [zoomLevel, setZoomLevel] = useState(1), [panOffset, setPanOffset] = useState({
@@ -5579,7 +6005,7 @@ Chart.displayName = "Chart";
5579
6005
  /**
5580
6006
  * Enhanced chart renderer component with comprehensive functionality
5581
6007
  */
5582
- const ChartRenderer = memo(forwardRef((({datasets: datasets = [], config: config, width: width = CHART.DEFAULT_WIDTH, height: height = CHART.DEFAULT_HEIGHT, onDataPointClick: onDataPointClick, interactive: interactive = !0, enableRealTime: enableRealTime = !1, enableAccessibility: enableAccessibility = !0, enablePerformanceOptimization: enablePerformanceOptimization = !0, renderContent: renderContent}, ref) => {
6008
+ const ChartRenderer = memo( forwardRef((({datasets: datasets = [], config: config, width: width = CHART.DEFAULT_WIDTH, height: height = CHART.DEFAULT_HEIGHT, onDataPointClick: onDataPointClick, interactive: interactive = !0, enableRealTime: enableRealTime = !1, enableAccessibility: enableAccessibility = !0, enablePerformanceOptimization: enablePerformanceOptimization = !0, renderContent: renderContent}, ref) => {
5583
6009
  // Get chart context (zoom/pan state from toolbar) - optional
5584
6010
  // Always call useContext to maintain consistent hook order
5585
6011
  const chartContext = useContext(ChartContext), {calculateScales: calculateScales, getChartColors: getChartColors} = useChart(), {processedData: processedData, isProcessing: isProcessing} = function(datasets, options) {
@@ -5595,14 +6021,15 @@ const ChartRenderer = memo(forwardRef((({datasets: datasets = [], config: config
5595
6021
  }), [ enableDecimation ]), calculateMovingAverage = useCallback(((values, period) => {
5596
6022
  const result = [];
5597
6023
  for (let i = 0; i < values.length; i++) if (i < period - 1) result.push(null); else {
5598
- const sum = values.slice(i - period + 1, i + 1).reduce(((a, b) => a + b), 0);
6024
+ var _context;
6025
+ const sum = _reduceInstanceProperty(_context = values.slice(i - period + 1, i + 1)).call(_context, ((a, b) => a + b), 0);
5599
6026
  result.push(sum / period);
5600
6027
  }
5601
6028
  return result;
5602
6029
  }), []), calculateTrendLine = useCallback((values => {
5603
6030
  const n = values.length;
5604
6031
  if (n < 2) return values.map((() => null));
5605
- const xSum = values.reduce(((sum, _, i) => sum + i), 0), ySum = values.reduce(((sum, val) => sum + val), 0), slope = (n * values.reduce(((sum, val, i) => sum + i * val), 0) - xSum * ySum) / (n * values.reduce(((sum, _, i) => sum + i * i), 0) - xSum * xSum), intercept = (ySum - slope * xSum) / n;
6032
+ const xSum = _reduceInstanceProperty(values).call(values, ((sum, _, i) => sum + i), 0), ySum = _reduceInstanceProperty(values).call(values, ((sum, val) => sum + val), 0), slope = (n * _reduceInstanceProperty(values).call(values, ((sum, val, i) => sum + i * val), 0) - xSum * ySum) / (n * _reduceInstanceProperty(values).call(values, ((sum, _, i) => sum + i * i), 0) - xSum * xSum), intercept = (ySum - slope * xSum) / n;
5606
6033
  return values.map(((_, i) => slope * i + intercept));
5607
6034
  }), []);
5608
6035
  // Process data when datasets change
@@ -5739,7 +6166,7 @@ const ChartRenderer = memo(forwardRef((({datasets: datasets = [], config: config
5739
6166
  // Announce data changes
5740
6167
  useEffect((() => {
5741
6168
  if (!announceDataChanges || !datasets.length) return;
5742
- const totalDataPoints = datasets.reduce(((sum, dataset) => sum + (dataset.data?.length || 0)), 0);
6169
+ const totalDataPoints = _reduceInstanceProperty(datasets).call(datasets, ((sum, dataset) => sum + (dataset.data?.length || 0)), 0);
5743
6170
  announceData(`Chart updated with ${datasets.length} datasets and ${totalDataPoints} data points`);
5744
6171
  }), [ datasets, announceDataChanges, announceData ]);
5745
6172
  // Generate accessible description
@@ -6018,7 +6445,7 @@ const ChartRenderer = memo(forwardRef((({datasets: datasets = [], config: config
6018
6445
 
6019
6446
  ChartRenderer.displayName = "ChartRenderer";
6020
6447
 
6021
- const BaseChart = memo(forwardRef((({type: type, datasets: datasets = [], config: config = {}, renderContent: renderContent, interactive: interactive = !0, enableRealTime: enableRealTime = !1, enableAccessibility: enableAccessibility = !0, enablePerformanceOptimization: enablePerformanceOptimization = !0, onDataPointClick: onDataPointClick, ...props}, ref) => {
6448
+ const BaseChart = memo( forwardRef((({type: type, datasets: datasets = [], config: config = {}, renderContent: renderContent, interactive: interactive = !0, enableRealTime: enableRealTime = !1, enableAccessibility: enableAccessibility = !0, enablePerformanceOptimization: enablePerformanceOptimization = !0, onDataPointClick: onDataPointClick, ...props}, ref) => {
6022
6449
  const renderChartContent = useCallback((params => renderContent(params)), [ renderContent ]);
6023
6450
  return jsx(Chart, {
6024
6451
  ref: ref,
@@ -6041,81 +6468,89 @@ const BaseChart = memo(forwardRef((({type: type, datasets: datasets = [], config
6041
6468
 
6042
6469
  BaseChart.displayName = "BaseChart";
6043
6470
 
6044
- const AnimatedChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, chartType: chartType = "line", particleEffects: particleEffects, onDataPointClick: onDataPointClick, ...props}, ref) => {
6045
- const animationRef = useRef(0), timeRef = useRef(0), particlesRef = useRef([]), renderContent = useCallback((({scales: scales, colors: colors, datasets: chartDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
6046
- if (
6047
- // Animation time tracking
6048
- useEffect((() => {
6049
- const animateFrame = timestamp => {
6050
- timeRef.current = timestamp, animationRef.current = requestAnimationFrame(animateFrame);
6051
- };
6052
- return animationRef.current = requestAnimationFrame(animateFrame), () => {
6053
- animationRef.current && cancelAnimationFrame(animationRef.current);
6054
- };
6055
- }), []), !chartDatasets.length) return null;
6471
+ const AnimatedChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, chartType: chartType = "line", particleEffects: particleEffects, onDataPointClick: onDataPointClick, ...props}, ref) => {
6472
+ const animationRef = useRef(0), timeRef = useRef(0), particlesRef = useRef([]);
6473
+ // Animation time tracking - moved outside callback
6474
+ useEffect((() => {
6475
+ const animateFrame = timestamp => {
6476
+ timeRef.current = timestamp, animationRef.current = requestAnimationFrame(animateFrame);
6477
+ };
6478
+ return animationRef.current = requestAnimationFrame(animateFrame), () => {
6479
+ animationRef.current && cancelAnimationFrame(animationRef.current);
6480
+ };
6481
+ }), []);
6482
+ const renderContent = useCallback((({scales: scales, colors: colors, datasets: chartDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
6483
+ if (!chartDatasets.length) return null;
6056
6484
  const chartWidth = scales.width - 80, chartHeight = scales.height - 80, elements = [];
6057
6485
  // Particle effects
6058
6486
  if (chartDatasets.forEach(((dataset, datasetIndex) => {
6059
6487
  const color = dataset.color || colors[datasetIndex % colors.length];
6060
- if ("bar" === chartType)
6061
- // Create animated bars
6062
- dataset.data.forEach(((point, pointIndex) => {
6063
- const barWidth = chartWidth / dataset.data.length * .8, x = 40 + pointIndex * (chartWidth / dataset.data.length) + (chartWidth / dataset.data.length - barWidth) / 2, height = point.value / 100 * chartHeight, y = 40 + chartHeight - height;
6064
- elements.push(jsx("rect", {
6065
- x: x,
6066
- y: y,
6067
- width: barWidth,
6068
- height: height,
6069
- fill: color,
6070
- style: {
6071
- transform: `scaleY(${.1 * Math.sin(.01 * timeRef.current + .2 * pointIndex) + .9})`,
6072
- transformOrigin: "bottom"
6073
- },
6074
- onClick: () => handlers.onDataPointClick?.(point, datasetIndex, pointIndex)
6075
- }, `bar-${datasetIndex}-${pointIndex}`));
6076
- })); else {
6077
- // Create animated line/area
6078
- const points = dataset.data.map(((point, pointIndex) => ({
6079
- x: 40 + pointIndex / (dataset.data.length - 1) * chartWidth,
6080
- y: 40 + chartHeight - point.value / 100 * chartHeight
6081
- })));
6082
- if (points.length > 0) {
6083
- const linePath = `M ${points.map((p => `${p.x},${p.y}`)).join(" L ")}`;
6084
- // Area for area chart
6085
- if ("area" === chartType) {
6086
- const areaPath = `${linePath} L ${40 + chartWidth},${40 + chartHeight} L 40,${40 + chartHeight} Z`;
6087
- elements.push(jsx("path", {
6088
- d: areaPath,
6089
- fill: color,
6090
- fillOpacity: "0.3",
6488
+ switch (chartType) {
6489
+ case "bar":
6490
+ // Create animated bars
6491
+ dataset.data.forEach(((point, pointIndex) => {
6492
+ const barWidth = chartWidth / dataset.data.length * .8, x = 40 + pointIndex * (chartWidth / dataset.data.length) + (chartWidth / dataset.data.length - barWidth) / 2, height = point.value / 100 * chartHeight, y = 40 + chartHeight - height;
6493
+ elements.push(jsx("rect", {
6494
+ x: x,
6495
+ y: y,
6496
+ width: barWidth,
6497
+ height: height,
6498
+ fill: color,
6499
+ style: {
6500
+ transform: `scaleY(${.1 * Math.sin(.01 * timeRef.current + .2 * pointIndex) + .9})`,
6501
+ transformOrigin: "bottom"
6502
+ },
6503
+ onClick: () => handlers.onDataPointClick?.(point, datasetIndex, pointIndex)
6504
+ }, `bar-${datasetIndex}-${pointIndex}`));
6505
+ }));
6506
+ break;
6507
+
6508
+ default:
6509
+ {
6510
+ // Create animated line/area
6511
+ const points = dataset.data.map(((point, pointIndex) => ({
6512
+ x: 40 + pointIndex / (dataset.data.length - 1) * chartWidth,
6513
+ y: 40 + chartHeight - point.value / 100 * chartHeight
6514
+ })));
6515
+ if (points.length > 0) {
6516
+ const linePath = `M ${points.map((p => `${p.x},${p.y}`)).join(" L ")}`;
6517
+ // Area for area chart
6518
+ if ("area" === chartType) {
6519
+ const areaPath = `${linePath} L ${40 + chartWidth},${40 + chartHeight} L 40,${40 + chartHeight} Z`;
6520
+ elements.push(jsx("path", {
6521
+ d: areaPath,
6522
+ fill: color,
6523
+ fillOpacity: "0.3",
6524
+ style: {
6525
+ transform: `translateY(${2 * Math.sin(.01 * timeRef.current)}px)`
6526
+ }
6527
+ }, `area-${datasetIndex}`));
6528
+ }
6529
+ // Line
6530
+ elements.push(jsx("path", {
6531
+ d: linePath,
6532
+ stroke: color,
6533
+ fill: "none",
6534
+ className: "c-chart__data-line",
6091
6535
  style: {
6092
6536
  transform: `translateY(${2 * Math.sin(.01 * timeRef.current)}px)`
6093
6537
  }
6094
- }, `area-${datasetIndex}`));
6538
+ }, `line-${datasetIndex}`)),
6539
+ // Data points
6540
+ points.forEach(((point, pointIndex) => {
6541
+ elements.push(jsx("circle", {
6542
+ cx: point.x,
6543
+ cy: point.y,
6544
+ r: "4",
6545
+ fill: color,
6546
+ style: {
6547
+ transform: `scale(${1 + .2 * Math.sin(.01 * timeRef.current + pointIndex)})`
6548
+ },
6549
+ onClick: () => handlers.onDataPointClick?.(dataset.data[pointIndex], datasetIndex, pointIndex)
6550
+ }, `point-${datasetIndex}-${pointIndex}`));
6551
+ }));
6095
6552
  }
6096
- // Line
6097
- elements.push(jsx("path", {
6098
- d: linePath,
6099
- stroke: color,
6100
- fill: "none",
6101
- className: "c-chart__data-line",
6102
- style: {
6103
- transform: `translateY(${2 * Math.sin(.01 * timeRef.current)}px)`
6104
- }
6105
- }, `line-${datasetIndex}`)),
6106
- // Data points
6107
- points.forEach(((point, pointIndex) => {
6108
- elements.push(jsx("circle", {
6109
- cx: point.x,
6110
- cy: point.y,
6111
- r: "4",
6112
- fill: color,
6113
- style: {
6114
- transform: `scale(${1 + .2 * Math.sin(.01 * timeRef.current + pointIndex)})`
6115
- },
6116
- onClick: () => handlers.onDataPointClick?.(dataset.data[pointIndex], datasetIndex, pointIndex)
6117
- }, `point-${datasetIndex}-${pointIndex}`));
6118
- }));
6553
+ break;
6119
6554
  }
6120
6555
  }
6121
6556
  })), particleEffects?.enabled) for (let i = 0; i < particleEffects.count; i++) {
@@ -6136,7 +6571,7 @@ const AnimatedChart = memo(forwardRef((({datasets: datasets = [], config: config
6136
6571
  }), [ chartType, particleEffects ]);
6137
6572
  return jsx(BaseChart, {
6138
6573
  ref: ref,
6139
- type: "animated",
6574
+ type: "line",
6140
6575
  datasets: datasets,
6141
6576
  config: config,
6142
6577
  renderContent: renderContent,
@@ -6147,7 +6582,7 @@ const AnimatedChart = memo(forwardRef((({datasets: datasets = [], config: config
6147
6582
 
6148
6583
  AnimatedChart.displayName = "AnimatedChart";
6149
6584
 
6150
- const ChartTooltip = memo((({dataPoint: dataPoint, datasetLabel: datasetLabel, datasetColor: datasetColor, position: position, visible: visible, customRenderer: customRenderer}) => {
6585
+ const ChartTooltip = memo((({dataPoint: dataPoint, datasetLabel: datasetLabel, datasetColor: datasetColor, position: position, visible: visible, customRenderer: customRenderer}) => {
6151
6586
  const tooltipRef = useRef(null), [adjustedPosition, setAdjustedPosition] = useState(position);
6152
6587
  // Dynamic positioning to keep tooltip in viewport
6153
6588
  return useEffect((() => {
@@ -6164,7 +6599,7 @@ const ChartTooltip = memo((({dataPoint: dataPoint, datasetLabel: datasetLabel, d
6164
6599
  x: newX,
6165
6600
  y: newY
6166
6601
  });
6167
- }), [ position, visible ]), visible && dataPoint ? createPortal(jsx("div", {
6602
+ }), [ position, visible ]), visible && dataPoint ? createPortal(jsx("div", {
6168
6603
  ref: tooltipRef,
6169
6604
  className: "c-chart__tooltip",
6170
6605
  style: {
@@ -6218,7 +6653,7 @@ const ChartTooltip = memo((({dataPoint: dataPoint, datasetLabel: datasetLabel, d
6218
6653
 
6219
6654
  ChartTooltip.displayName = "ChartTooltip";
6220
6655
 
6221
- const AreaChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, areaOptions: areaOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6656
+ const AreaChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, areaOptions: areaOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6222
6657
  // Area chart is essentially a line chart with area fill enabled
6223
6658
  const enhancedAreaOptions = {
6224
6659
  showArea: !0,
@@ -6273,7 +6708,11 @@ const AreaChart = memo(forwardRef((({datasets: datasets = [], config: config = {
6273
6708
  })) ]
6274
6709
  }, `dataset-${datasetIndex}`);
6275
6710
  })), showTooltips && hoveredPoint && jsx(ChartTooltip, {
6276
- dataPoint: renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex],
6711
+ dataPoint: renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] ?? {
6712
+ label: "",
6713
+ value: 0,
6714
+ color: ""
6715
+ },
6277
6716
  datasetLabel: renderedDatasets[hoveredPoint.datasetIndex]?.label,
6278
6717
  datasetColor: renderedDatasets[hoveredPoint.datasetIndex]?.color || colors[hoveredPoint.datasetIndex],
6279
6718
  position: {
@@ -6422,7 +6861,7 @@ function useBarChart(datasets, options = {}) {
6422
6861
 
6423
6862
  AreaChart.displayName = "AreaChart";
6424
6863
 
6425
- const BarChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, barOptions: barOptions = {}, horizontal: horizontal = !1, onDataPointClick: onDataPointClick, ...props}, ref) => {
6864
+ const BarChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, barOptions: barOptions = {}, horizontal: horizontal = !1, onDataPointClick: onDataPointClick, ...props}, ref) => {
6426
6865
  const {calculateBarDimensions: calculateBarDimensions, handleBarHover: handleBarHover, handleBarLeave: handleBarLeave, hoveredBar: hoveredBar, formatValue: formatValue} = useBarChart(0, barOptions);
6427
6866
  return jsx(BaseChart, {
6428
6867
  ref: ref,
@@ -6435,7 +6874,9 @@ const BarChart = memo(forwardRef((({datasets: datasets = [], config: config = {}
6435
6874
  const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, barDimensions = calculateBarDimensions(renderedDatasets, scales.width, scales.height, scales.padding, horizontal);
6436
6875
  return jsxs(Fragment, {
6437
6876
  children: [ barDimensions.map(((bar, index) => {
6438
- const dataset = renderedDatasets[bar.datasetIndex], point = dataset.data?.[bar.pointIndex], color = dataset.color || colors[bar.datasetIndex], isHovered = hoveredPoint?.datasetIndex === bar.datasetIndex && hoveredPoint?.pointIndex === bar.pointIndex;
6877
+ const dataset = renderedDatasets[bar.datasetIndex];
6878
+ if (!dataset) return null;
6879
+ const point = dataset.data?.[bar.pointIndex], color = dataset.color || colors[bar.datasetIndex], isHovered = hoveredPoint?.datasetIndex === bar.datasetIndex && hoveredPoint?.pointIndex === bar.pointIndex;
6439
6880
  return jsxs("g", {
6440
6881
  children: [ jsx("rect", {
6441
6882
  x: bar.x,
@@ -6477,7 +6918,7 @@ const BarChart = memo(forwardRef((({datasets: datasets = [], config: config = {}
6477
6918
 
6478
6919
  BarChart.displayName = "BarChart";
6479
6920
 
6480
- const BubbleChart = memo(forwardRef((({bubbleData: bubbleData = [], config: config = {}, bubbleOptions: bubbleOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6921
+ const BubbleChart = memo( forwardRef((({bubbleData: bubbleData = [], config: config = {}, bubbleOptions: bubbleOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6481
6922
  const {minBubbleSize: minBubbleSize = 5, maxBubbleSize: maxBubbleSize = 50, bubbleOpacity: bubbleOpacity = .7, showLabels: showLabels = !0, labelPosition: labelPosition = "center", enableAnimations: enableAnimations = !0, animationDuration: animationDuration = 1e3, showSizeLegend: showSizeLegend = !0, sizeLegendTitle: sizeLegendTitle = "Size", colorScheme: colorScheme = [ "var(--atomix-primary)", "var(--atomix-secondary)", "var(--atomix-success)", "var(--atomix-warning)", "var(--atomix-error)", "var(--atomix-info)" ], sizeBasedColoring: sizeBasedColoring = !1} = bubbleOptions;
6482
6923
  return jsx(BaseChart, {
6483
6924
  ref: ref,
@@ -6532,7 +6973,7 @@ const BubbleChart = memo(forwardRef((({bubbleData: bubbleData = [], config: conf
6532
6973
  }));
6533
6974
  // Calculate bubble sizes based on data
6534
6975
  return jsxs(Fragment, {
6535
- children: [ bubbles, showTooltips && hoveredPoint && hoveredPoint.pointIndex < bubbleData.length && jsx(ChartTooltip, {
6976
+ children: [ bubbles, showTooltips && hoveredPoint && hoveredPoint.pointIndex < bubbleData.length && bubbleData[hoveredPoint.pointIndex] && jsx(ChartTooltip, {
6536
6977
  dataPoint: bubbleData[hoveredPoint.pointIndex],
6537
6978
  datasetLabel: "Bubbles",
6538
6979
  datasetColor: bubbleData[hoveredPoint.pointIndex]?.color || colorScheme[hoveredPoint.pointIndex % colorScheme.length],
@@ -6551,7 +6992,7 @@ const BubbleChart = memo(forwardRef((({bubbleData: bubbleData = [], config: conf
6551
6992
 
6552
6993
  BubbleChart.displayName = "BubbleChart";
6553
6994
 
6554
- const CandlestickChart = memo(forwardRef((({candlestickData: candlestickData = [], config: config = {}, candlestickOptions: candlestickOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6995
+ const CandlestickChart = memo( forwardRef((({candlestickData: candlestickData = [], config: config = {}, candlestickOptions: candlestickOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6555
6996
  const {showVolume: showVolume = !0, volumeHeightRatio: volumeHeightRatio = .2, upColor: upColor = "var(--atomix-success-bg-subtle)", downColor: downColor = "var(--atomix-error-bg-subtle)", wickColor: wickColor = "var(--atomix-brand-border-subtle)", borderColor: borderColor = "var(--atomix-primary-border-subtle)", showMovingAverages: showMovingAverages = !1, movingAveragePeriods: movingAveragePeriods = [ 7, 21 ], movingAverageColors: movingAverageColors = [ "var(--atomix-warning-bg-subtle)", "var(--atomix-warning-border-subtle)" ], dateFormat: dateFormat = "short", dateFormatter: dateFormatter, showGrid: showGrid = !0, gridColor: gridColor = "var(--atomix-brand-text-emphasis)", showTooltips: showTooltips = !0} = candlestickOptions;
6556
6997
  // Calculate moving averages
6557
6998
  return jsx(BaseChart, {
@@ -6658,11 +7099,12 @@ const CandlestickChart = memo(forwardRef((({candlestickData: candlestickData = [
6658
7099
  const movingAverage = ((data, period) => {
6659
7100
  const result = [];
6660
7101
  for (let i = 0; i < data.length; i++) {
7102
+ var _context;
6661
7103
  if (i < period - 1) {
6662
7104
  result.push(NaN);
6663
7105
  continue;
6664
7106
  }
6665
- const sum = data.slice(i - period + 1, i + 1).reduce(((acc, item) => acc + item.close), 0);
7107
+ const sum = _reduceInstanceProperty(_context = data.slice(i - period + 1, i + 1)).call(_context, ((acc, item) => acc + item.close), 0);
6666
7108
  result.push(sum / period);
6667
7109
  }
6668
7110
  return result;
@@ -6699,7 +7141,7 @@ const CandlestickChart = memo(forwardRef((({candlestickData: candlestickData = [
6699
7141
 
6700
7142
  CandlestickChart.displayName = "CandlestickChart";
6701
7143
 
6702
- const DonutChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, pieOptions: pieOptions = {
7144
+ const DonutChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, pieOptions: pieOptions = {
6703
7145
  showValues: !1,
6704
7146
  showPercentages: !0,
6705
7147
  showLabels: !1,
@@ -6732,9 +7174,10 @@ const DonutChart = memo(forwardRef((({datasets: datasets = [], config: config =
6732
7174
  datasets: datasets,
6733
7175
  config: config,
6734
7176
  renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
7177
+ var _context;
6735
7178
  if (!chartData) return null;
6736
7179
  // Use actual container dimensions from scales
6737
- const width = scales.width, height = scales.height, outerRadius = Math.min(width, height) / 2 * .8, innerRadius = outerRadius * (donutOptions.innerRadiusRatio ?? .6), centerX = width / 2, centerY = height / 2, defaultColors = [ "var(--atomix-primary-2)", "var(--atomix-primary-3)", "var(--atomix-primary-4)", "var(--atomix-primary-5)", "var(--atomix-primary-6)", "var(--atomix-primary-7)", "var(--atomix-primary-8)", "var(--atomix-primary-9)" ], chartColors = dataset?.color ? [ dataset.color ] : dataset?.data?.map(((_, i) => defaultColors[i % defaultColors.length])) || defaultColors, total = chartData.validDataPoints.reduce(((sum, point) => sum + point.value), 0), padAngleRad = (pieOptions.padAngle || 1) * Math.PI / 180;
7180
+ const width = scales.width, height = scales.height, outerRadius = Math.min(width, height) / 2 * .8, innerRadius = outerRadius * (donutOptions.innerRadiusRatio ?? .6), centerX = width / 2, centerY = height / 2, defaultColors = [ "var(--atomix-primary-2)", "var(--atomix-primary-3)", "var(--atomix-primary-4)", "var(--atomix-primary-5)", "var(--atomix-primary-6)", "var(--atomix-primary-7)", "var(--atomix-primary-8)", "var(--atomix-primary-9)" ], chartColors = dataset?.color ? [ dataset.color ] : dataset?.data?.map(((_, i) => defaultColors[i % defaultColors.length])) || defaultColors, total = _reduceInstanceProperty(_context = chartData.validDataPoints).call(_context, ((sum, point) => sum + point.value), 0), padAngleRad = (pieOptions.padAngle || 1) * Math.PI / 180;
6738
7181
  let currentAngle = (pieOptions.startAngle || 0) * Math.PI / 180;
6739
7182
  const slices = chartData.validDataPoints.map(((point, index) => {
6740
7183
  const sliceAngle = point.value / total * (2 * Math.PI) - padAngleRad, startAngle = currentAngle, endAngle = currentAngle + sliceAngle, midAngle = (startAngle + endAngle) / 2, labelRadius = .75 * outerRadius, labelX = centerX + Math.cos(midAngle) * labelRadius, labelY = centerY + Math.sin(midAngle) * labelRadius, x1 = centerX + innerRadius * Math.cos(startAngle), y1 = centerY + innerRadius * Math.sin(startAngle), x2 = centerX + outerRadius * Math.cos(startAngle), y2 = centerY + outerRadius * Math.sin(startAngle), x3 = centerX + outerRadius * Math.cos(endAngle), y3 = centerY + outerRadius * Math.sin(endAngle), x4 = centerX + innerRadius * Math.cos(endAngle), y4 = centerY + innerRadius * Math.sin(endAngle), largeArcFlag = sliceAngle > Math.PI ? 1 : 0, path = [ `M ${x1} ${y1}`, `L ${x2} ${y2}`, `A ${outerRadius} ${outerRadius} 0 ${largeArcFlag} 1 ${x3} ${y3}`, `L ${x4} ${y4}`, `A ${innerRadius} ${innerRadius} 0 ${largeArcFlag} 0 ${x1} ${y1}`, "Z" ].join(" ");
@@ -6814,7 +7257,7 @@ const DonutChart = memo(forwardRef((({datasets: datasets = [], config: config =
6814
7257
 
6815
7258
  DonutChart.displayName = "DonutChart";
6816
7259
 
6817
- const FunnelChart = memo(forwardRef((({funnelData: funnelData = [], config: config = {}, funnelOptions: funnelOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
7260
+ const FunnelChart = memo( forwardRef((({funnelData: funnelData = [], config: config = {}, funnelOptions: funnelOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6818
7261
  const {direction: direction = "vertical", showLabels: showLabels = !0, showValues: showValues = !0, showPercentages: showPercentages = !1, labelPosition: labelPosition = "outside", neckWidth: neckWidth = .3, neckHeight: neckHeight = .2, segmentGap: segmentGap = 2, colorScheme: colorScheme = [ "var(--atomix-primary)", "var(--atomix-secondary)", "var(--atomix-success)", "var(--atomix-warning)", "var(--atomix-error)", "var(--atomix-info)" ], useGradient: useGradient = !0, animate: animate = !0, animationDuration: animationDuration = 1e3, animationDelay: animationDelay = 200, valueFormatter: valueFormatter = value => value.toLocaleString(), showConversionRates: showConversionRates = !0, conversionRatePosition: conversionRatePosition = "between", proportional: proportional = !0, minSegmentRatio: minSegmentRatio = .1} = funnelOptions;
6819
7262
  return jsx(BaseChart, {
6820
7263
  ref: ref,
@@ -6923,9 +7366,11 @@ const FunnelChart = memo(forwardRef((({funnelData: funnelData = [], config: conf
6923
7366
 
6924
7367
  FunnelChart.displayName = "FunnelChart";
6925
7368
 
6926
- const GaugeChart = memo(forwardRef((({value: value, min: min = 0, max: max = 100, config: config = {}, gaugeOptions: gaugeOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
6927
- const {startAngle: startAngle = 180, endAngle: // Default to left side (180 degrees)
6928
- endAngle = 0, thickness: // Default to right side (0 degrees)
7369
+ const GaugeChart = memo( forwardRef((({value: value, min: min = 0, max: max = 100, config: config = {}, gaugeOptions: gaugeOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
7370
+ const {startAngle: startAngle = 180, endAngle:
7371
+ // Default to left side (180 degrees)
7372
+ endAngle = 0, thickness:
7373
+ // Default to right side (0 degrees)
6929
7374
  thickness = .2, showNeedle: showNeedle = !0, needleColor: needleColor = "var(--atomix-brand-text-emphasis)", showValue: showValue = !0, valueFormatter: valueFormatter = val => val.toFixed(1), showMinMaxLabels: showMinMaxLabels = !0, showTicks: showTicks = !0, majorTicks: majorTicks = 5, minorTicks: minorTicks = 4, colorZones: colorZones = [], animate: animate = !0, animationDuration: animationDuration = 1e3, animationEasing: animationEasing = "easeOutCubic", useGradient: useGradient = !1, label: label = "", labelPosition: labelPosition = "bottom"} = gaugeOptions;
6930
7375
  return jsx(BaseChart, {
6931
7376
  ref: ref,
@@ -7054,7 +7499,7 @@ const colorSchemes = {
7054
7499
  reds: [ "var(--atomix-red-1)", "var(--atomix-red-2)", "var(--atomix-red-3)", "var(--atomix-red-4)", "var(--atomix-red-5)", "var(--atomix-red-6)", "var(--atomix-red-7)", "var(--atomix-red-8)", "var(--atomix-red-9)" ],
7055
7500
  greens: [ "var(--atomix-green-1)", "var(--atomix-green-2)", "var(--atomix-green-3)", "var(--atomix-green-4)", "var(--atomix-green-5)", "var(--atomix-green-6)", "var(--atomix-green-7)", "var(--atomix-green-8)", "var(--atomix-green-9)" ],
7056
7501
  github: [ "var(--atomix-gray-2)", "var(--atomix-green-3)", "var(--atomix-green-4)", "var(--atomix-green-5)", "var(--atomix-green-6)" ]
7057
- }, HeatmapChart = memo(forwardRef((({data: data = [], config: config = {}, colorScale: colorScale = {
7502
+ }, HeatmapChart = memo( forwardRef((({data: data = [], config: config = {}, colorScale: colorScale = {
7058
7503
  scheme: "viridis",
7059
7504
  steps: 9
7060
7505
  }, cellConfig: cellConfig = {
@@ -7249,7 +7694,8 @@ function useLineChart(datasets, options = {}) {
7249
7694
  }), [hoveredPoint, setHoveredPoint] = useState(null), calculateMovingAverage = useCallback(((data, period) => {
7250
7695
  const result = [];
7251
7696
  for (let i = period - 1; i < data.length; i++) {
7252
- const average = data.slice(i - period + 1, i + 1).reduce(((acc, point) => acc + point.value), 0) / period, dataPoint = data[i];
7697
+ var _context;
7698
+ const average = _reduceInstanceProperty(_context = data.slice(i - period + 1, i + 1)).call(_context, ((acc, point) => acc + point.value), 0) / period, dataPoint = data[i];
7253
7699
  dataPoint && result.push({
7254
7700
  label: dataPoint.label,
7255
7701
  value: average,
@@ -7260,7 +7706,7 @@ function useLineChart(datasets, options = {}) {
7260
7706
  }), []), calculateTrendLine = useCallback((data => {
7261
7707
  const n = data.length;
7262
7708
  if (n < 2) return data.map((() => null));
7263
- const xSum = data.reduce(((sum, _, i) => sum + i), 0), ySum = data.reduce(((sum, point) => sum + point.value), 0), slope = (n * data.reduce(((sum, point, i) => sum + i * point.value), 0) - xSum * ySum) / (n * data.reduce(((sum, _, i) => sum + i * i), 0) - xSum * xSum), intercept = (ySum - slope * xSum) / n;
7709
+ const xSum = _reduceInstanceProperty(data).call(data, ((sum, _, i) => sum + i), 0), ySum = _reduceInstanceProperty(data).call(data, ((sum, point) => sum + point.value), 0), slope = (n * _reduceInstanceProperty(data).call(data, ((sum, point, i) => sum + i * point.value), 0) - xSum * ySum) / (n * _reduceInstanceProperty(data).call(data, ((sum, _, i) => sum + i * i), 0) - xSum * xSum), intercept = (ySum - slope * xSum) / n;
7264
7710
  return data.map(((point, i) => ({
7265
7711
  label: point.label,
7266
7712
  value: slope * i + intercept,
@@ -7367,7 +7813,7 @@ function useLineChart(datasets, options = {}) {
7367
7813
 
7368
7814
  HeatmapChart.displayName = "HeatmapChart";
7369
7815
 
7370
- const LineChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, lineOptions: lineOptions = {}, onDataPointClick: onDataPointClick, onRealTimeUpdate: onRealTimeUpdate, onZoomChange: onZoomChange, onPanChange: onPanChange, onBrushSelection: onBrushSelection, ...props}, ref) => {
7816
+ const LineChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, lineOptions: lineOptions = {}, onDataPointClick: onDataPointClick, onRealTimeUpdate: onRealTimeUpdate, onZoomChange: onZoomChange, onPanChange: onPanChange, onBrushSelection: onBrushSelection, ...props}, ref) => {
7371
7817
  // Merge default options with provided options
7372
7818
  const mergedLineOptions = {
7373
7819
  showDataPoints: !0,
@@ -7467,7 +7913,7 @@ const LineChart = memo(forwardRef((({datasets: datasets = [], config: config = {
7467
7913
 
7468
7914
  LineChart.displayName = "LineChart";
7469
7915
 
7470
- const MultiAxisChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, yAxes: yAxes = [], xAxes: xAxes = [], multiAxisOptions: multiAxisOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
7916
+ const MultiAxisChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, yAxes: yAxes = [], xAxes: xAxes = [], multiAxisOptions: multiAxisOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
7471
7917
  const {showLegend: showLegend = !0, legendPosition: legendPosition = "top", syncAxes: syncAxes = !1, axisPadding: axisPadding = 20, showTooltips: showTooltips = !0, tooltipPosition: tooltipPosition = "nearest", interpolation: interpolation = "linear", showArea: showArea = !1, areaOpacity: areaOpacity = .3, showDataPoints: showDataPoints = !0, pointRadius: pointRadius = 4, spanGaps: spanGaps = !1} = multiAxisOptions;
7472
7918
  return jsx(BaseChart, {
7473
7919
  ref: ref,
@@ -7615,7 +8061,7 @@ function usePieChart(data, options = {}) {
7615
8061
  return validData.length ?
7616
8062
  // Sort by value if enabled
7617
8063
  options.sortByValue ? [ ...validData ].sort(((a, b) => b.value - a.value)) : validData : [];
7618
- }), [ data, options.sortByValue ]), totalValue = useMemo((() => processedData.reduce(((sum, point) => sum + point.value), 0)), [ processedData ]), slices = useMemo((() => {
8064
+ }), [ data, options.sortByValue ]), totalValue = useMemo((() => _reduceInstanceProperty(processedData).call(processedData, ((sum, point) => sum + point.value), 0)), [ processedData ]), slices = useMemo((() => {
7619
8065
  if (!processedData.length || totalValue <= 0) return [];
7620
8066
  const innerRadius = 150 * (options.innerRadius || 0), defaultColors = [ "#7AFFD7", "#1AFFD2", "#00E6C3", "#4DFF9F", "#1AFF85", "#00E66B", "#DD6061", "#FF1A1A", "#E60000", "#FFCC00", "#E6B800", "#B38F00" ];
7621
8067
  // Default center
@@ -7702,7 +8148,7 @@ function usePieChart(data, options = {}) {
7702
8148
 
7703
8149
  MultiAxisChart.displayName = "MultiAxisChart";
7704
8150
 
7705
- const PieChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, pieOptions: pieOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
8151
+ const PieChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, pieOptions: pieOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
7706
8152
  const data = datasets[0]?.data || [], {slices: slices, handleSliceHover: handleSliceHover, handleSliceLeave: handleSliceLeave, handleSliceClick: handleSliceClick, formatLabel: formatLabel, hoveredSlice: hoveredSlice, selectedSlices: selectedSlices} = usePieChart(data, pieOptions);
7707
8153
  return jsx(BaseChart, {
7708
8154
  ref: ref,
@@ -7767,7 +8213,7 @@ const PieChart = memo(forwardRef((({datasets: datasets = [], config: config = {}
7767
8213
 
7768
8214
  PieChart.displayName = "PieChart";
7769
8215
 
7770
- const RadarChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, radarOptions: radarOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
8216
+ const RadarChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, radarOptions: radarOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
7771
8217
  const {gridLevels: gridLevels = 5, showGrid: showGrid = !0, showAxisLabels: showAxisLabels = !0, fillArea: fillArea = !0, fillOpacity: fillOpacity = .3, showDataPoints: showDataPoints = !0, pointRadius: pointRadius = 4, lineWidth: lineWidth = 2, smooth: smooth = !1, scaleType: scaleType = "linear", scaleMin: scaleMin = 0, scaleMax: scaleMax} = radarOptions;
7772
8218
  return jsx(BaseChart, {
7773
8219
  ref: ref,
@@ -7777,7 +8223,9 @@ const RadarChart = memo(forwardRef((({datasets: datasets = [], config: config =
7777
8223
  renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
7778
8224
  if (!renderedDatasets.length) return null;
7779
8225
  // Use toolbar state if available, fallback to config for backward compatibility
7780
- const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, centerX = scales.width / 2, centerY = scales.height / 2, radius = .8 * Math.min(centerX, centerY), dataPoints = renderedDatasets[0].data || [], angleStep = 2 * Math.PI / dataPoints.length;
8226
+ const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, centerX = scales.width / 2, centerY = scales.height / 2, radius = .8 * Math.min(centerX, centerY), firstDataset = renderedDatasets[0];
8227
+ if (!firstDataset) return null;
8228
+ const dataPoints = firstDataset.data || [], angleStep = 2 * Math.PI / dataPoints.length;
7781
8229
  // Calculate value bounds
7782
8230
  let minValue = scaleMin, maxValue = scaleMax;
7783
8231
  if (void 0 === minValue || void 0 === maxValue) {
@@ -7840,18 +8288,18 @@ const RadarChart = memo(forwardRef((({datasets: datasets = [], config: config =
7840
8288
  point: dataset.data[i]
7841
8289
  });
7842
8290
  }
7843
- if (0 === points.length) return null;
8291
+ if (0 === points.length || !points[0]) return null;
7844
8292
  // Generate path
7845
8293
  let path = "";
7846
8294
  if (smooth && points.length > 2) {
7847
8295
  // For smooth curves, we would implement a more complex algorithm
7848
8296
  // For now, we'll just connect the points with straight lines
7849
8297
  path = `M ${points[0].x},${points[0].y}`;
7850
- for (let i = 1; i < points.length; i++) path += ` L ${points[i].x},${points[i].y}`;
8298
+ for (let i = 1; i < points.length; i++) points[i] && (path += ` L ${points[i].x},${points[i].y}`);
7851
8299
  path += ` L ${points[0].x},${points[0].y} Z`;
7852
8300
  } else {
7853
8301
  path = `M ${points[0].x},${points[0].y}`;
7854
- for (let i = 1; i < points.length; i++) path += ` L ${points[i].x},${points[i].y}`;
8302
+ for (let i = 1; i < points.length; i++) points[i] && (path += ` L ${points[i].x},${points[i].y}`);
7855
8303
  path += ` L ${points[0].x},${points[0].y} Z`;
7856
8304
  }
7857
8305
  return jsxs("g", {
@@ -7875,7 +8323,9 @@ const RadarChart = memo(forwardRef((({datasets: datasets = [], config: config =
7875
8323
  r: isHovered ? 1.5 * pointRadius : pointRadius,
7876
8324
  fill: color,
7877
8325
  className: "c-chart__radar-point " + (isHovered ? "c-chart__radar-point--hovered" : ""),
7878
- onClick: () => handlers.onDataPointClick?.(point.point, datasetIndex, pointIndex),
8326
+ onClick: () => {
8327
+ point.point && handlers.onDataPointClick?.(point.point, datasetIndex, pointIndex);
8328
+ },
7879
8329
  onMouseEnter: e => {
7880
8330
  const rect = e.currentTarget.getBoundingClientRect();
7881
8331
  handlers.onPointHover(datasetIndex, pointIndex, point.x, point.y, rect.left + rect.width / 2, rect.top + rect.height / 2);
@@ -7889,8 +8339,8 @@ const RadarChart = memo(forwardRef((({datasets: datasets = [], config: config =
7889
8339
  return jsxs(Fragment, {
7890
8340
  children: [ jsxs("g", {
7891
8341
  children: [ gridLines, dataPaths, axisLabels ]
7892
- }), showTooltips && hoveredPoint && jsx(ChartTooltip, {
7893
- dataPoint: renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex],
8342
+ }), showTooltips && hoveredPoint && renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] && jsx(ChartTooltip, {
8343
+ dataPoint: renderedDatasets[hoveredPoint.datasetIndex].data[hoveredPoint.pointIndex],
7894
8344
  datasetLabel: renderedDatasets[hoveredPoint.datasetIndex]?.label,
7895
8345
  datasetColor: renderedDatasets[hoveredPoint.datasetIndex]?.color || colors[hoveredPoint.datasetIndex],
7896
8346
  position: {
@@ -7908,7 +8358,7 @@ const RadarChart = memo(forwardRef((({datasets: datasets = [], config: config =
7908
8358
 
7909
8359
  RadarChart.displayName = "RadarChart";
7910
8360
 
7911
- const ScatterChart = memo(forwardRef((({datasets: datasets = [], config: config = {}, scatterOptions: scatterOptions = {
8361
+ const ScatterChart = memo( forwardRef((({datasets: datasets = [], config: config = {}, scatterOptions: scatterOptions = {
7912
8362
  pointRadius: 4,
7913
8363
  showLabels: !1,
7914
8364
  enableHoverEffects: !0
@@ -7964,8 +8414,8 @@ const ScatterChart = memo(forwardRef((({datasets: datasets = [], config: config
7964
8414
  }, `point-${datasetIndex}-${pointIndex}`));
7965
8415
  }));
7966
8416
  })), jsxs(Fragment, {
7967
- children: [ points, showTooltips && hoveredPoint && jsx(ChartTooltip, {
7968
- dataPoint: renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex],
8417
+ children: [ points, showTooltips && hoveredPoint && renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] && jsx(ChartTooltip, {
8418
+ dataPoint: renderedDatasets[hoveredPoint.datasetIndex].data[hoveredPoint.pointIndex],
7969
8419
  datasetLabel: renderedDatasets[hoveredPoint.datasetIndex]?.label,
7970
8420
  datasetColor: renderedDatasets[hoveredPoint.datasetIndex]?.color || colors[hoveredPoint.datasetIndex],
7971
8421
  position: {
@@ -7982,7 +8432,7 @@ const ScatterChart = memo(forwardRef((({datasets: datasets = [], config: config
7982
8432
 
7983
8433
  ScatterChart.displayName = "ScatterChart";
7984
8434
 
7985
- const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm = "squarified", colorConfig: colorConfig = {
8435
+ const TreemapChart = memo( forwardRef((({data: data = [], algorithm: algorithm = "squarified", colorConfig: colorConfig = {
7986
8436
  scheme: "category"
7987
8437
  }, labelConfig: labelConfig = {
7988
8438
  showLabels: !0,
@@ -8005,9 +8455,11 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8005
8455
  processedNodes.add(node.id);
8006
8456
  // Find children
8007
8457
  const children = data.filter((item => item.parent === node.id));
8458
+ var _context;
8008
8459
  return children.length > 0 && (node.children = children.map((child => buildTree(child))),
8009
8460
  // For parent nodes, value is sum of children
8010
- node.value = node.children.reduce(((sum, child) => sum + child.value), 0)), node;
8461
+ node.value = _reduceInstanceProperty(_context = node.children).call(_context, ((sum, child) => sum + child.value), 0)),
8462
+ node;
8011
8463
  };
8012
8464
  // Find root nodes
8013
8465
  return data.forEach((item => {
@@ -8015,7 +8467,7 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8015
8467
  })), 1 === rootNodes.length ? rootNodes[0] : {
8016
8468
  id: "root",
8017
8469
  label: "Root",
8018
- value: rootNodes.reduce(((sum, node) => sum + node.value), 0),
8470
+ value: _reduceInstanceProperty(rootNodes).call(rootNodes, ((sum, node) => sum + node.value), 0),
8019
8471
  children: rootNodes
8020
8472
  };
8021
8473
  }), [ data ]);
@@ -8029,8 +8481,10 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8029
8481
  return colors[index % colors.length];
8030
8482
 
8031
8483
  case "depth":
8032
- const depthColors = [ "var(--atomix-blue-9)", "var(--atomix-blue-6)", "var(--atomix-blue-5)", "var(--atomix-blue-4)", "var(--atomix-blue-2)" ];
8033
- return depthColors[Math.min(depth, depthColors.length - 1)];
8484
+ {
8485
+ const depthColors = [ "var(--atomix-blue-9)", "var(--atomix-blue-6)", "var(--atomix-blue-5)", "var(--atomix-blue-4)", "var(--atomix-blue-2)" ];
8486
+ return depthColors[Math.min(depth, depthColors.length - 1)];
8487
+ }
8034
8488
 
8035
8489
  case "value":
8036
8490
  if (data.length > 0) {
@@ -8041,7 +8495,7 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8041
8495
  }
8042
8496
  }), [ colorConfig, data ]), squarify = useCallback(((nodes, x, y, width, height) => {
8043
8497
  if (0 === nodes.length) return;
8044
- const totalValue = nodes.reduce(((sum, node) => sum + node.value), 0);
8498
+ const totalValue = _reduceInstanceProperty(nodes).call(nodes, ((sum, node) => sum + node.value), 0);
8045
8499
  if (1 === nodes.length) {
8046
8500
  const node = nodes[0];
8047
8501
  return void (node && (node.x = x, node.y = y, node.width = width, node.height = height));
@@ -8054,7 +8508,7 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8054
8508
  if (!node) break;
8055
8509
  currentRow.push(node);
8056
8510
  // Calculate dimensions for current row
8057
- const rowValue = currentRow.reduce(((sum, n) => sum + n.value), 0), rowRatio = rowValue / totalValue;
8511
+ const rowValue = _reduceInstanceProperty(currentRow).call(currentRow, ((sum, n) => sum + n.value), 0), rowRatio = rowValue / totalValue;
8058
8512
  let rowWidth, rowHeight;
8059
8513
  remainingWidth >= remainingHeight ? (rowWidth = remainingWidth * rowRatio, rowHeight = remainingHeight) : (rowWidth = remainingWidth,
8060
8514
  rowHeight = remainingHeight * rowRatio);
@@ -8063,7 +8517,7 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8063
8517
  if (remainingNodes.length > 0) {
8064
8518
  const nextNode = remainingNodes[0];
8065
8519
  if (!nextNode) break;
8066
- const testRow = [ ...currentRow, nextNode ], testRowValue = testRow.reduce(((sum, n) => sum + n.value), 0), testRowRatio = testRowValue / totalValue;
8520
+ const testRow = [ ...currentRow, nextNode ], testRowValue = _reduceInstanceProperty(testRow).call(testRow, ((sum, n) => sum + n.value), 0), testRowRatio = testRowValue / totalValue;
8067
8521
  let testRowWidth, testRowHeight;
8068
8522
  remainingWidth >= remainingHeight ? (testRowWidth = remainingWidth * testRowRatio,
8069
8523
  testRowHeight = remainingHeight) : (testRowWidth = remainingWidth, testRowHeight = remainingHeight * testRowRatio);
@@ -8112,7 +8566,7 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8112
8566
  // Calculate available space with padding
8113
8567
  const availableWidth = scales.width - 40, availableHeight = scales.height - 40, leafNodes = data.filter((item => !item.children || 0 === item.children.length));
8114
8568
  if (!leafNodes.length) return null;
8115
- const totalValue = leafNodes.reduce(((sum, node) => sum + node.value), 0), treemapNodes = leafNodes.map(((item, index) => ({
8569
+ const totalValue = _reduceInstanceProperty(leafNodes).call(leafNodes, ((sum, node) => sum + node.value), 0), treemapNodes = leafNodes.map(((item, index) => ({
8116
8570
  id: item.id,
8117
8571
  label: item.label,
8118
8572
  value: item.value,
@@ -8186,7 +8640,7 @@ const TreemapChart = memo(forwardRef((({data: data = [], algorithm: algorithm =
8186
8640
 
8187
8641
  TreemapChart.displayName = "TreemapChart";
8188
8642
 
8189
- const WaterfallChart = memo(forwardRef((({waterfallData: waterfallData = [], config: config = {}, waterfallOptions: waterfallOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
8643
+ const WaterfallChart = memo( forwardRef((({waterfallData: waterfallData = [], config: config = {}, waterfallOptions: waterfallOptions = {}, onDataPointClick: onDataPointClick, ...props}, ref) => {
8190
8644
  const {showConnectors: showConnectors = !0, connectorColor: connectorColor = "var(--atomix-gray-1)", connectorStyle: connectorStyle = "dashed", showValues: showValues = !0, valuePosition: valuePosition = "top", colors: waterfallColors = {
8191
8645
  positive: "var(--atomix-success)",
8192
8646
  negative: "var(--atomix-error)",
@@ -8441,7 +8895,7 @@ const SIZE_MAP = {
8441
8895
 
8442
8896
  ColorModeToggle.displayName = "ColorModeToggle";
8443
8897
 
8444
- const Countdown = forwardRef((({target: target, show: show = [ "days", "hours", "minutes", "seconds" ], separator: separator = ":", focused: focused = !1, className: className = "", style: style, onComplete: onComplete}, ref) => {
8898
+ const Countdown = forwardRef((({target: target, show: show = [ "days", "hours", "minutes", "seconds" ], separator: separator = ":", focused: focused = !1, className: className = "", style: style, onComplete: onComplete}, ref) => {
8445
8899
  const targetDate = "string" == typeof target ? new Date(target) : target, [now, setNow] = useState((() => new Date)), [completed, setCompleted] = useState(!1);
8446
8900
  useEffect((() => {
8447
8901
  if (completed) return;
@@ -8463,16 +8917,16 @@ const Countdown = forwardRef((({target: target, show: show = [ "days", "hours",
8463
8917
  diff <= 0 && !completed && (setCompleted(!0), onComplete && onComplete());
8464
8918
  }), [ diff, completed, onComplete ]);
8465
8919
  const timeParts = [];
8466
- return show.includes("days") && timeParts.push({
8920
+ return _includesInstanceProperty(show).call(show, "days") && timeParts.push({
8467
8921
  label: "Days",
8468
8922
  value: days
8469
- }), show.includes("hours") && timeParts.push({
8923
+ }), _includesInstanceProperty(show).call(show, "hours") && timeParts.push({
8470
8924
  label: "Hours",
8471
8925
  value: hours
8472
- }), show.includes("minutes") && timeParts.push({
8926
+ }), _includesInstanceProperty(show).call(show, "minutes") && timeParts.push({
8473
8927
  label: "Minutes",
8474
8928
  value: minutes
8475
- }), show.includes("seconds") && timeParts.push({
8929
+ }), _includesInstanceProperty(show).call(show, "seconds") && timeParts.push({
8476
8930
  label: "Seconds",
8477
8931
  value: seconds
8478
8932
  }), jsx("div", {
@@ -8520,8 +8974,9 @@ function useDataTable({data: data = [], columns: columns = [], sortable: sortabl
8520
8974
  if (!searchQuery) return data;
8521
8975
  const lowercaseQuery = searchQuery.toLowerCase();
8522
8976
  return data.filter((row => columns.some((column => {
8977
+ var _context;
8523
8978
  const value = row[column.key];
8524
- return null != value && String(value).toLowerCase().includes(lowercaseQuery);
8979
+ return null != value && _includesInstanceProperty(_context = String(value).toLowerCase()).call(_context, lowercaseQuery);
8525
8980
  }))));
8526
8981
  }), [ data, columns, searchQuery ]), sortedData = useMemo((() => sortConfig && sortable ? [ ...filteredData ].sort(((a, b) => {
8527
8982
  const aValue = a[sortConfig.key], bValue = b[sortConfig.key];
@@ -8561,22 +9016,22 @@ const DOTS = "...", range = (start, end) => {
8561
9016
  const paginationRange = useMemo((() => {
8562
9017
  // siblingCount + firstPage + lastPage + currentPage + 2*DOTS
8563
9018
  /*
8564
- Case 1: If the number of pages is less than the page numbers we want to show in our
8565
- paginationComponent, we return the range [1..totalPages]
8566
- */
9019
+ Case 1: If the number of pages is less than the page numbers we want to show in our
9020
+ paginationComponent, we return the range [1..totalPages]
9021
+ */
8567
9022
  if (siblingCount + 5 >= totalPages) return range(1, totalPages);
8568
9023
  const leftSiblingIndex = Math.max(currentPage - siblingCount, 1), rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages), shouldShowLeftDots = leftSiblingIndex > 2, shouldShowRightDots = rightSiblingIndex < totalPages - 2, lastPageIndex = totalPages;
8569
9024
  /*
8570
- Case 2: No left dots to show, but rights dots to be shown
8571
- */
9025
+ Case 2: No left dots to show, but rights dots to be shown
9026
+ */
8572
9027
  return !shouldShowLeftDots && shouldShowRightDots ? [ ...range(1, 3 + 2 * siblingCount), "...", totalPages ] :
8573
9028
  /*
8574
- Case 3: No right dots to show, but left dots to be shown
8575
- */
9029
+ Case 3: No right dots to show, but left dots to be shown
9030
+ */
8576
9031
  shouldShowLeftDots && !shouldShowRightDots ? [ 1, "...", ...range(totalPages - (3 + 2 * siblingCount) + 1, totalPages) ] :
8577
9032
  /*
8578
- Case 4: Both left and right dots to be shown
8579
- */
9033
+ Case 4: Both left and right dots to be shown
9034
+ */
8580
9035
  shouldShowLeftDots && shouldShowRightDots ? [ 1, "...", ...range(leftSiblingIndex, rightSiblingIndex), "...", lastPageIndex ] : [];
8581
9036
  }), [ totalPages, siblingCount, currentPage ]), goToPage = page => {
8582
9037
  page >= 1 && page <= totalPages && page !== currentPage && onPageChange(page);
@@ -8600,7 +9055,7 @@ const DOTS = "...", range = (start, end) => {
8600
9055
  },
8601
9056
  DOTS: "..."
8602
9057
  };
8603
- }, PaginationNavButton = ({type: type, onClick: onClick, disabled: disabled, label: label, iconName: iconName}) => jsx("li", {
9058
+ }, PaginationNavButton = memo((({type: type, onClick: onClick, disabled: disabled, label: label, iconName: iconName}) => jsx("li", {
8604
9059
  className: `c-pagination__item c-pagination__item--${type} ${disabled ? "is-disabled" : ""}`,
8605
9060
  "aria-disabled": disabled,
8606
9061
  children: jsx("button", {
@@ -8615,10 +9070,7 @@ const DOTS = "...", range = (start, end) => {
8615
9070
  "aria-hidden": "true"
8616
9071
  })
8617
9072
  })
8618
- })
8619
- /**
8620
- * Pagination component
8621
- */ , Pagination = ({currentPage: currentPage = PAGINATION_DEFAULTS.currentPage, totalPages: totalPages = PAGINATION_DEFAULTS.totalPages, onPageChange: onPageChange, siblingCount: siblingCount = PAGINATION_DEFAULTS.siblingCount, showFirstLastButtons: showFirstLastButtons = PAGINATION_DEFAULTS.showFirstLastButtons, showPrevNextButtons: showPrevNextButtons = PAGINATION_DEFAULTS.showPrevNextButtons, size: size = PAGINATION_DEFAULTS.size, className: className = "", style: style, ariaLabel: ariaLabel = "Pagination", glass: glass}) => {
9073
+ }))), Pagination = memo((({currentPage: currentPage = PAGINATION_DEFAULTS.currentPage, totalPages: totalPages = PAGINATION_DEFAULTS.totalPages, onPageChange: onPageChange, siblingCount: siblingCount = PAGINATION_DEFAULTS.siblingCount, showFirstLastButtons: showFirstLastButtons = PAGINATION_DEFAULTS.showFirstLastButtons, showPrevNextButtons: showPrevNextButtons = PAGINATION_DEFAULTS.showPrevNextButtons, size: size = PAGINATION_DEFAULTS.size, className: className = "", style: style, ariaLabel: ariaLabel = "Pagination", glass: glass}) => {
8622
9074
  const {paginationRange: paginationRange, goToPage: goToPage, nextPage: nextPage, prevPage: prevPage, firstPage: firstPage, lastPage: lastPage} = usePagination({
8623
9075
  currentPage: currentPage,
8624
9076
  totalPages: totalPages,
@@ -8698,9 +9150,9 @@ const DOTS = "...", range = (start, end) => {
8698
9150
  });
8699
9151
  }
8700
9152
  return paginationContent;
8701
- };
9153
+ }));
8702
9154
 
8703
- Pagination.displayName = "Pagination";
9155
+ Pagination.displayName = "Pagination", PaginationNavButton.displayName = "PaginationNavButton";
8704
9156
 
8705
9157
  /**
8706
9158
  * DataTable - A flexible and accessible data table component
@@ -8715,7 +9167,7 @@ Pagination.displayName = "Pagination";
8715
9167
  * />
8716
9168
  * ```
8717
9169
  */
8718
- const DataTable = ({data: data, columns: columns, className: className, style: style, sortable: sortable = !1, filterable: filterable = !1, paginated: paginated = !1, pageSize: pageSize = 10, striped: striped = !1, bordered: bordered = !1, dense: dense = !1, loading: loading = !1, emptyMessage: emptyMessage = "No data available", onRowClick: onRowClick, onSort: onSort, ...props}) => {
9170
+ const DataTable = memo((({data: data, columns: columns, className: className, style: style, sortable: sortable = !1, filterable: filterable = !1, paginated: paginated = !1, pageSize: pageSize = 10, striped: striped = !1, bordered: bordered = !1, dense: dense = !1, loading: loading = !1, emptyMessage: emptyMessage = "No data available", onRowClick: onRowClick, onSort: onSort, ...props}) => {
8719
9171
  const tableRef = useRef(null), {displayData: displayData, sortConfig: sortConfig, currentPage: currentPage, totalPages: totalPages, handleSort: handleSort, handlePageChange: handlePageChange, handleSearch: handleSearch} = useDataTable({
8720
9172
  data: data,
8721
9173
  columns: columns,
@@ -8818,7 +9270,7 @@ const DataTable = ({data: data, columns: columns, className: className, style: s
8818
9270
  })
8819
9271
  }) ]
8820
9272
  });
8821
- };
9273
+ }));
8822
9274
 
8823
9275
  /**
8824
9276
  * Get the name of a month by its index (0-11)
@@ -9058,7 +9510,7 @@ function formatDate(date, format) {
9058
9510
  * Supports various display modes, date ranges, and customization options.
9059
9511
  */ DataTable.displayName = "DataTable";
9060
9512
 
9061
- const DatePicker = forwardRef((({value: value, onChange: onChange, selectionMode: selectionMode = "single", startDate: startDate, endDate: endDate, onRangeChange: onRangeChange, format: format = "MM/dd/yyyy", minDate: minDate, maxDate: maxDate, placeholder: placeholder = "Select date...", disabled: disabled = !1, readOnly: readOnly = !1, clearable: clearable = !0, showTodayButton: showTodayButton = !0, showWeekNumbers: showWeekNumbers = !1, inline: inline = !1, id: id, name: name, className: className = "", placement: placement = "bottom-start", inputClassName: inputClassName = "", size: size = "md", style: style, glass: glass, ...props}, ref) => {
9513
+ const DatePicker = forwardRef((({value: value, onChange: onChange, selectionMode: selectionMode = "single", startDate: startDate, endDate: endDate, onRangeChange: onRangeChange, format: format = "MM/dd/yyyy", minDate: minDate, maxDate: maxDate, placeholder: placeholder = "Select date...", disabled: disabled = !1, readOnly: readOnly = !1, clearable: clearable = !0, showTodayButton: showTodayButton = !0, showWeekNumbers: showWeekNumbers = !1, inline: inline = !1, id: id, name: name, className: className = "", placement: placement = "bottom-start", inputClassName: inputClassName = "", size: size = "md", style: style, glass: glass, ...props}, ref) => {
9062
9514
  const {isOpen:
9063
9515
  // State
9064
9516
  isOpen, inputValue: inputValue, rangeInputValue: rangeInputValue, viewMode: viewMode, currentMonth: currentMonth, currentYear: currentYear, selectionMode: activeSelectionMode, rangeSelectionState: rangeSelectionState, datePickerRef:
@@ -9358,12 +9810,54 @@ const DatePicker = forwardRef((({value: value, onChange: onChange, selectionMode
9358
9810
  DatePicker.displayName = "DatePicker";
9359
9811
 
9360
9812
  // Create context for dropdown state management
9361
- const DropdownContext = createContext({
9813
+ const DropdownContext = createContext({
9362
9814
  isOpen: !1,
9363
9815
  close: () => {},
9364
9816
  id: "",
9365
9817
  trigger: "click"
9366
- }), Dropdown = ({children: children, menu: menu, placement: placement = "bottom-start", trigger: trigger = "click", offset: offset = DROPDOWN.DEFAULTS.OFFSET, isOpen: controlledIsOpen, onOpenChange: onOpenChange, closeOnClickOutside: closeOnClickOutside = !0, closeOnEscape: closeOnEscape = !0, maxHeight: maxHeight, minWidth: minWidth = DROPDOWN.DEFAULTS.MIN_WIDTH, variant: variant, className: className = "", style: style, glass: glass, ...props}) => {
9818
+ }), DropdownItem = memo((({children: children, href: href, active: active = !1, disabled: disabled = !1, icon: icon, onClick: onClick, className: className = "", LinkComponent: LinkComponent, ...props}) => {
9819
+ const {close: close} = useContext(DropdownContext), handleClick = e => {
9820
+ disabled ? e.preventDefault() : (onClick && onClick(e),
9821
+ // Always close the dropdown when an item is clicked
9822
+ close());
9823
+ }, itemClasses = [ "c-dropdown__menu-item", active ? "is-active" : "", disabled ? "is-disabled" : "", className ].filter(Boolean).join(" "), linkProps = {
9824
+ href: href,
9825
+ className: itemClasses,
9826
+ onClick: handleClick,
9827
+ role: "menuitem",
9828
+ tabIndex: 0,
9829
+ ...props
9830
+ };
9831
+ return jsx("li", href && !disabled ? {
9832
+ children: jsxs(LinkComponent || "a", {
9833
+ ...linkProps,
9834
+ children: [ icon && jsx("span", {
9835
+ className: "c-dropdown__menu-item-icon",
9836
+ children: icon
9837
+ }), children ]
9838
+ })
9839
+ } : {
9840
+ children: jsxs("button", {
9841
+ type: "button",
9842
+ className: itemClasses,
9843
+ onClick: handleClick,
9844
+ disabled: disabled,
9845
+ role: "menuitem",
9846
+ tabIndex: 0,
9847
+ ...props,
9848
+ children: [ icon && jsx("span", {
9849
+ className: "c-dropdown__menu-item-icon",
9850
+ children: icon
9851
+ }), children ]
9852
+ })
9853
+ });
9854
+ })), DropdownDivider = memo((({className: className = ""}) => jsx("li", {
9855
+ className: `c-dropdown__divider ${className}`,
9856
+ role: "separator"
9857
+ }))), DropdownHeader = memo((({children: children, className: className = ""}) => jsx("li", {
9858
+ className: `c-dropdown__header ${className}`,
9859
+ children: children
9860
+ }))), Dropdown = memo((({children: children, menu: menu, placement: placement = "bottom-start", trigger: trigger = "click", offset: offset = DROPDOWN.DEFAULTS.OFFSET, isOpen: controlledIsOpen, onOpenChange: onOpenChange, closeOnClickOutside: closeOnClickOutside = !0, closeOnEscape: closeOnEscape = !0, maxHeight: maxHeight, minWidth: minWidth = DROPDOWN.DEFAULTS.MIN_WIDTH, variant: variant, className: className = "", style: style, glass: glass, ...props}) => {
9367
9861
  // Set up controlled vs uncontrolled state
9368
9862
  const [uncontrolledIsOpen, setUncontrolledIsOpen] = useState(!1), isControlled = void 0 !== controlledIsOpen, isOpen = isControlled ? controlledIsOpen : uncontrolledIsOpen, dropdownRef = useRef(null), toggleRef = useRef(null), menuRef = useRef(null), dropdownId = useRef(`dropdown-${Math.random().toString(36).substring(2, 9)}`).current, setIsOpen = useCallback((nextIsOpen => {
9369
9863
  isControlled || setUncontrolledIsOpen(nextIsOpen), onOpenChange && onOpenChange(nextIsOpen);
@@ -9467,7 +9961,8 @@ const DropdownContext = createContext({
9467
9961
  "aria-orientation": "vertical",
9468
9962
  "aria-hidden": !isOpen,
9469
9963
  onKeyDown: handleKeyDown,
9470
- children: glass ? // Default glass settings for dropdowns
9964
+ children: glass ?
9965
+ // Default glass settings for dropdowns
9471
9966
  (() => {
9472
9967
  const defaultGlassProps = {
9473
9968
  displacementScale: 20,
@@ -9483,10 +9978,10 @@ const DropdownContext = createContext({
9483
9978
  })() : menuContent
9484
9979
  }) ]
9485
9980
  });
9486
- };
9981
+ }));
9487
9982
 
9488
9983
  /**
9489
- * Dropdown component for creating dropdown menus
9984
+ * DropdownItem component for menu items
9490
9985
  */
9491
9986
  /**
9492
9987
  * EdgePanel state and functionality
@@ -9605,15 +10100,15 @@ function useEdgePanel(initialProps) {
9605
10100
  defaultProps.closeOnBackdropClick && event.target === event.currentTarget && closePanel();
9606
10101
  }), [ closePanel, defaultProps.closeOnBackdropClick ]);
9607
10102
  /**
9608
- * Set up event listeners for keyboard events
9609
- */
10103
+ * Set up event listeners for keyboard events
10104
+ */
9610
10105
  return useEffect((() => (isOpen && defaultProps.closeOnEscape && document.addEventListener("keydown", handleEscapeKey),
9611
10106
  () => {
9612
10107
  document.removeEventListener("keydown", handleEscapeKey);
9613
10108
  })), [ isOpen, handleEscapeKey, defaultProps.closeOnEscape ]),
9614
10109
  /**
9615
- * Set initial transform values
9616
- */
10110
+ * Set initial transform values
10111
+ */
9617
10112
  useEffect((() => {
9618
10113
  if (containerRef.current) {
9619
10114
  const {position: position, mode: mode} = defaultProps;
@@ -9623,8 +10118,8 @@ function useEdgePanel(initialProps) {
9623
10118
  }
9624
10119
  }), [ defaultProps.mode, defaultProps.position, defaultProps.glass, isOpen ]),
9625
10120
  /**
9626
- * Sync with prop changes
9627
- */
10121
+ * Sync with prop changes
10122
+ */
9628
10123
  useEffect((() => {
9629
10124
  void 0 !== defaultProps.isOpen && defaultProps.isOpen !== isOpen && (defaultProps.isOpen ? openPanel(!!defaultProps.glass) : closePanel(!!defaultProps.glass));
9630
10125
  }), [ defaultProps.isOpen, closePanel, isOpen, openPanel, defaultProps.glass ]),
@@ -9686,7 +10181,8 @@ function useEdgePanel(initialProps) {
9686
10181
  * <p>Panel with custom glass effect</p>
9687
10182
  * </EdgePanel>
9688
10183
  * ```
9689
- */ Dropdown.displayName = "Dropdown";
10184
+ */ Dropdown.displayName = "Dropdown", DropdownItem.displayName = "DropdownItem",
10185
+ DropdownDivider.displayName = "DropdownDivider", DropdownHeader.displayName = "DropdownHeader";
9690
10186
 
9691
10187
  const EdgePanel = ({title: title, children: children, position: position = "start", mode: mode = "slide", isOpen: isOpen = !1, onOpenChange: onOpenChange, backdrop: backdrop = !0, closeOnBackdropClick: closeOnBackdropClick = !0, closeOnEscape: closeOnEscape = !0, className: className = "", style: style, glass: glass}) => {
9692
10188
  const {isOpen: isOpenState, containerRef: containerRef, backdropRef: backdropRef, generateEdgePanelClass: generateEdgePanelClass, closePanel: closePanel, handleBackdropClick: handleBackdropClick} = useEdgePanel({
@@ -9800,7 +10296,7 @@ function useCheckbox(initialProps) {
9800
10296
 
9801
10297
  /**
9802
10298
  * Checkbox - A component for checkbox inputs
9803
- */ const Checkbox = ({label: label, checked: checked = !1, onChange: onChange, className: className = "", style: style, disabled: disabled = !1, required: required = !1, id: id, name: name, value: value, invalid: invalid = !1, valid: valid = !1, indeterminate: indeterminate = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}) => {
10299
+ */ const Checkbox = memo((({label: label, checked: checked = !1, onChange: onChange, className: className = "", style: style, disabled: disabled = !1, required: required = !1, id: id, name: name, value: value, invalid: invalid = !1, valid: valid = !1, indeterminate: indeterminate = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}) => {
9804
10300
  const {generateCheckboxClass: generateCheckboxClass, checkboxRef: checkboxRef} = useCheckbox({
9805
10301
  indeterminate: indeterminate,
9806
10302
  disabled: disabled,
@@ -9854,7 +10350,7 @@ function useCheckbox(initialProps) {
9854
10350
  });
9855
10351
  }
9856
10352
  return checkboxContent;
9857
- };
10353
+ }));
9858
10354
 
9859
10355
  /**
9860
10356
  * Form state and functionality
@@ -9868,10 +10364,10 @@ function useForm(initialProps) {
9868
10364
  ...initialProps
9869
10365
  };
9870
10366
  /**
9871
- * Generate form class based on properties
9872
- * @param props - Form properties
9873
- * @returns Class string
9874
- */ return {
10367
+ * Generate form class based on properties
10368
+ * @param props - Form properties
10369
+ * @returns Class string
10370
+ */ return {
9875
10371
  defaultProps: defaultProps,
9876
10372
  generateFormClass: props => {
9877
10373
  const {disabled: disabled = defaultProps.disabled, className: className = ""} = props, disabledClass = disabled ? FORM.CLASSES.DISABLED : "";
@@ -9926,10 +10422,10 @@ function useFormGroup(initialProps) {
9926
10422
  ...initialProps
9927
10423
  };
9928
10424
  /**
9929
- * Generate form group class based on properties
9930
- * @param props - Form group properties
9931
- * @returns Class string
9932
- */ return {
10425
+ * Generate form group class based on properties
10426
+ * @param props - Form group properties
10427
+ * @returns Class string
10428
+ */ return {
9933
10429
  defaultProps: defaultProps,
9934
10430
  generateFormGroupClass: props => {
9935
10431
  const {size: size = defaultProps.size, disabled: disabled = defaultProps.disabled, invalid: invalid = defaultProps.invalid, valid: valid = defaultProps.valid, className: className = ""} = props, sizeClass = "md" === size ? "" : "sm" === size ? FORM_GROUP.CLASSES.SMALL : FORM_GROUP.CLASSES.LARGE, validationClass = invalid ? FORM_GROUP.CLASSES.INVALID : valid ? FORM_GROUP.CLASSES.VALID : "", disabledClass = disabled ? FORM_GROUP.CLASSES.DISABLED : "";
@@ -9990,10 +10486,10 @@ function useInput(initialProps) {
9990
10486
  ...initialProps
9991
10487
  };
9992
10488
  /**
9993
- * Generate input class based on properties
9994
- * @param props - Input properties
9995
- * @returns Class string
9996
- */ return {
10489
+ * Generate input class based on properties
10490
+ * @param props - Input properties
10491
+ * @returns Class string
10492
+ */ return {
9997
10493
  defaultProps: defaultProps,
9998
10494
  generateInputClass: props => {
9999
10495
  const {size: size = defaultProps.size, variant: variant = defaultProps.variant, disabled: disabled = defaultProps.disabled, invalid: invalid = defaultProps.invalid, valid: valid = defaultProps.valid, className: className = "", type: type} = props, sizeClass = "md" === size ? "" : "sm" === size ? INPUT.CLASSES.SMALL : INPUT.CLASSES.LARGE, variantClass = variant ? `c-input--${variant}` : "", textareaClass = "textarea" === type ? "c-input--textarea" : "";
@@ -10016,7 +10512,7 @@ function useInput(initialProps) {
10016
10512
  * Input - A component for text input fields
10017
10513
  */ FormGroup.displayName = "FormGroup";
10018
10514
 
10019
- const Input = forwardRef((({type: type = "text", value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder, className: className = "", style: style, disabled: disabled = !1, required: required = !1, readOnly: readOnly = !1, id: id, name: name, autoComplete: autoComplete, autoFocus: autoFocus = !1, size: size = "md", variant: variant, invalid: invalid = !1, valid: valid = !1, maxLength: maxLength, minLength: minLength, pattern: pattern, min: min, max: max, step: step, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}, ref) => {
10515
+ const Input = memo( forwardRef((({type: type = "text", value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder, className: className = "", style: style, disabled: disabled = !1, required: required = !1, readOnly: readOnly = !1, id: id, name: name, autoComplete: autoComplete, autoFocus: autoFocus = !1, size: size = "md", variant: variant, invalid: invalid = !1, valid: valid = !1, maxLength: maxLength, minLength: minLength, pattern: pattern, min: min, max: max, step: step, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}, ref) => {
10020
10516
  const {generateInputClass: generateInputClass} = useInput({
10021
10517
  size: size,
10022
10518
  variant: variant,
@@ -10079,7 +10575,7 @@ const Input = forwardRef((({type: type = "text", value: value, onChange: onChang
10079
10575
  });
10080
10576
  }
10081
10577
  return inputElement;
10082
- }));
10578
+ })));
10083
10579
 
10084
10580
  /**
10085
10581
  * Hook for Hero component functionality
@@ -10098,25 +10594,25 @@ function useHero(initialProps) {
10098
10594
  parallax: !1,
10099
10595
  parallaxIntensity: .5,
10100
10596
  ...initialProps
10101
- }, hasBackgroundSlider = !!defaultProps.backgroundSlider, backgroundSlider = hasBackgroundSlider && defaultProps.backgroundSlider ?
10597
+ }, hasBackgroundSlider = !!defaultProps.backgroundSlider, backgroundSliderResult =
10102
10598
  /**
10103
10599
  * Hook for Hero background slider functionality
10104
10600
  * @param config - Background slider configuration
10105
10601
  * @returns Slider state and methods
10106
10602
  */
10107
10603
  function(config) {
10108
- const {slides: slides, autoplay: autoplay, loop: loop = !0, transition: transition = "fade", transitionDuration: transitionDuration = 1e3} = config, [currentIndex, setCurrentIndex] = useState(0), [isTransitioning, setIsTransitioning] = useState(!1), autoplayRef = useRef(null), isPausedRef = useRef(!1), slideRefs = useMemo((() => slides.map((() => React.createRef()))), [ slides.length ]), videoRefs = useMemo((() => slides.map((() => React.createRef()))), [ slides.length ]), handleSlideTransition = useCallback((nextIndex => {
10604
+ const {slides: slides, autoplay: autoplay, loop: loop = !0, transition: transition = "fade", transitionDuration: transitionDuration = 1e3} = config, [currentIndex, setCurrentIndex] = useState(0), [isTransitioning, setIsTransitioning] = useState(!1), autoplayRef = useRef(null), isPausedRef = useRef(!1), slideRefs = useMemo((() => slides.map((() => React.createRef()))), [ slides.length ]), videoRefs = useMemo((() => slides.map((() => React.createRef()))), [ slides.length ]), handleSlideTransition = useCallback((nextIndex => {
10109
10605
  if (nextIndex === currentIndex || isTransitioning) return;
10110
10606
  if (nextIndex < 0 || nextIndex >= slides.length) return;
10111
10607
  setIsTransitioning(!0),
10112
10608
  // Update current index
10113
10609
  setCurrentIndex(nextIndex);
10114
10610
  // Play video if it's a video slide
10115
- const currentVideo = videoRefs[nextIndex]?.current;
10116
- currentVideo && "video" === slides[nextIndex].type && !1 !== (slides[nextIndex].videoOptions || {}).autoplay && currentVideo.play().catch((() => {}));
10611
+ const currentVideo = videoRefs[nextIndex]?.current, nextSlide = slides[nextIndex];
10612
+ currentVideo && nextSlide && "video" === nextSlide.type && !1 !== (nextSlide.videoOptions || {}).autoplay && currentVideo.play().catch((() => {}));
10117
10613
  // Pause previous video if it exists
10118
- const prevVideo = videoRefs[currentIndex]?.current;
10119
- prevVideo && "video" === slides[currentIndex].type && prevVideo.pause(),
10614
+ const prevVideo = videoRefs[currentIndex]?.current, currentSlide = slides[currentIndex];
10615
+ prevVideo && currentSlide && "video" === currentSlide.type && prevVideo.pause(),
10120
10616
  // Reset transitioning state after transition duration
10121
10617
  setTimeout((() => {
10122
10618
  setIsTransitioning(!1);
@@ -10172,7 +10668,13 @@ function useHero(initialProps) {
10172
10668
  pauseAutoplay: pauseAutoplay,
10173
10669
  resumeAutoplay: resumeAutoplay
10174
10670
  };
10175
- }(defaultProps.backgroundSlider) : void 0, hasBackgroundImage = !!hasBackgroundSlider || !!defaultProps.backgroundImageSrc || !!defaultProps.videoBackground, hasForegroundImage = !!defaultProps.imageSrc, useGridLayout = hasForegroundImage && "center" !== defaultProps.alignment, applyParallaxEffect = (element, intensity = .5) => {
10671
+ }(defaultProps.backgroundSlider || {
10672
+ slides: [],
10673
+ autoplay: {
10674
+ delay: 5e3,
10675
+ pauseOnHover: !0
10676
+ }
10677
+ }), backgroundSlider = hasBackgroundSlider && defaultProps.backgroundSlider ? backgroundSliderResult : void 0, hasBackgroundImage = !!hasBackgroundSlider || !!defaultProps.backgroundImageSrc || !!defaultProps.videoBackground, hasForegroundImage = !!defaultProps.imageSrc, useGridLayout = hasForegroundImage && "center" !== defaultProps.alignment, applyParallaxEffect = (element, intensity = .5) => {
10176
10678
  if (!element) return;
10177
10679
  // Ensure intensity is between 0 and 1
10178
10680
  const safeIntensity = Math.max(0, Math.min(1, intensity));
@@ -10255,8 +10757,8 @@ function useHero(initialProps) {
10255
10757
  ...initialProps
10256
10758
  };
10257
10759
  /**
10258
- * Check if the river has a background image
10259
- */ return {
10760
+ * Check if the river has a background image
10761
+ */ return {
10260
10762
  generateRiverClassNames: (baseClassName = "") => {
10261
10763
  const classes = [ RIVER.SELECTORS.RIVER.replace(".", "") ];
10262
10764
  // Add layout classes
@@ -10320,10 +10822,10 @@ function useHero(initialProps) {
10320
10822
  ...initialProps
10321
10823
  };
10322
10824
  /**
10323
- * Generate nav class based on properties
10324
- * @param props - Nav properties
10325
- * @returns Class string
10326
- */ return {
10825
+ * Generate nav class based on properties
10826
+ * @param props - Nav properties
10827
+ * @returns Class string
10828
+ */ return {
10327
10829
  defaultProps: defaultProps,
10328
10830
  generateNavClass: props => {
10329
10831
  const {alignment: alignment = defaultProps.alignment, variant: variant = defaultProps.variant, className: className = ""} = props;
@@ -10345,10 +10847,10 @@ function useHero(initialProps) {
10345
10847
  ...initialProps
10346
10848
  };
10347
10849
  /**
10348
- * Generate nav item class based on properties
10349
- * @param props - Nav item properties
10350
- * @returns Class string
10351
- */ return {
10850
+ * Generate nav item class based on properties
10851
+ * @param props - Nav item properties
10852
+ * @returns Class string
10853
+ */ return {
10352
10854
  defaultProps: defaultProps,
10353
10855
  generateNavItemClass: props => {
10354
10856
  const {dropdown: dropdown = defaultProps.dropdown, megaMenu: megaMenu = defaultProps.megaMenu, active: active = defaultProps.active, disabled: disabled = defaultProps.disabled, className: className = ""} = props;
@@ -10374,10 +10876,10 @@ function useHero(initialProps) {
10374
10876
  ...initialProps
10375
10877
  }, isInFixedBottomNavbar = () => null !== document.querySelector(".c-navbar--fixed-bottom");
10376
10878
  /**
10377
- * Generate dropdown menu class based on properties
10378
- * @param props - Dropdown properties
10379
- * @returns Class string
10380
- */ return {
10879
+ * Generate dropdown menu class based on properties
10880
+ * @param props - Dropdown properties
10881
+ * @returns Class string
10882
+ */ return {
10381
10883
  defaultProps: defaultProps,
10382
10884
  generateDropdownMenuClass: props => {
10383
10885
  const {alignment: alignment = defaultProps.alignment, megaMenu: megaMenu = defaultProps.megaMenu, className: className = ""} = props, baseClass = megaMenu ? NAV.SELECTORS.MEGA_MENU.replace(".", "") : NAV.SELECTORS.DROPDOWN_MENU.replace(".", "");
@@ -10459,10 +10961,10 @@ function useHero(initialProps) {
10459
10961
  wrapperRef.current.style.height = "auto");
10460
10962
  }), [ defaultProps.isOpen, isOpenState, defaultProps.collapsible, defaultProps.collapsibleDesktop ]);
10461
10963
  /**
10462
- * Generate side menu class based on properties
10463
- * @param props - Side menu properties
10464
- * @returns Class string
10465
- */
10964
+ * Generate side menu class based on properties
10965
+ * @param props - Side menu properties
10966
+ * @returns Class string
10967
+ */
10466
10968
  const handleToggle = () => {
10467
10969
  if (defaultProps.disabled) return;
10468
10970
  const newState = void 0 !== defaultProps.isOpen ? !defaultProps.isOpen : !isOpenState;
@@ -10473,9 +10975,9 @@ function useHero(initialProps) {
10473
10975
  setIsOpenState(newState);
10474
10976
  }, getCurrentOpenState = () => void 0 !== defaultProps.isOpen ? defaultProps.isOpen : isOpenState;
10475
10977
  /**
10476
- * Generate wrapper class
10477
- * @returns Class string
10478
- */ return {
10978
+ * Generate wrapper class
10979
+ * @returns Class string
10980
+ */ return {
10479
10981
  defaultProps: defaultProps,
10480
10982
  isOpenState: getCurrentOpenState(),
10481
10983
  wrapperRef: wrapperRef,
@@ -10506,9 +11008,9 @@ function useHero(initialProps) {
10506
11008
  ...initialProps
10507
11009
  };
10508
11010
  /**
10509
- * Generate side menu item class based on properties
10510
- * @returns Class string
10511
- */ return {
11011
+ * Generate side menu item class based on properties
11012
+ * @returns Class string
11013
+ */ return {
10512
11014
  defaultProps: defaultProps,
10513
11015
  generateSideMenuItemClass: () => {
10514
11016
  const {active: active = defaultProps.active, disabled: disabled = defaultProps.disabled, className: className = ""} = defaultProps, activeClass = active ? SIDE_MENU.CLASSES.ACTIVE : "", disabledClass = disabled ? SIDE_MENU.CLASSES.DISABLED : "";
@@ -10633,7 +11135,8 @@ function useHero(initialProps) {
10633
11135
  * const style = cssVarsToStyle(vars)
10634
11136
  * // Returns: { '--atomix-button-bg': '#000' } as React.CSSProperties
10635
11137
  */ function cssVarsToStyle(vars) {
10636
- return Object.entries(vars).reduce(((acc, [key, value]) => (acc[key] = "number" == typeof value ? `${value}px` : value,
11138
+ var _context;
11139
+ return _reduceInstanceProperty(_context = Object.entries(vars)).call(_context, ((acc, [key, value]) => (acc[key] = "number" == typeof value ? `${value}px` : value,
10637
11140
  acc)), {});
10638
11141
  }
10639
11142
 
@@ -10641,7 +11144,8 @@ function useHero(initialProps) {
10641
11144
  * Merge multiple CSS variable objects
10642
11145
  * Later objects override earlier ones
10643
11146
  */ function mergeCSSVars(...varObjects) {
10644
- return varObjects.reduce(((acc, vars) => (vars && Object.assign(acc, vars), acc)), {});
11147
+ return _reduceInstanceProperty(varObjects).call(varObjects, ((acc, vars) => (vars && Object.assign(acc, vars),
11148
+ acc)), {});
10645
11149
  }
10646
11150
 
10647
11151
  /**
@@ -10674,11 +11178,20 @@ function useHero(initialProps) {
10674
11178
 
10675
11179
  /**
10676
11180
  * Apply part styles to element props
10677
- */
11181
+ */ function applyPartStyles(baseProps, partStyles) {
11182
+ return partStyles ? {
11183
+ ...baseProps,
11184
+ className: mergeClassNames(baseProps.className, partStyles.className),
11185
+ style: {
11186
+ ...baseProps.style,
11187
+ ...partStyles.style
11188
+ }
11189
+ } : baseProps;
11190
+ }
11191
+
10678
11192
  /**
10679
11193
  * Create style object from CSS variables
10680
- */
10681
- function createCSSVarStyle(cssVars, baseStyle) {
11194
+ */ function createCSSVarStyle(cssVars, baseStyle) {
10682
11195
  return cssVars ? {
10683
11196
  ...cssVarsToStyle(cssVars),
10684
11197
  ...baseStyle
@@ -10763,40 +11276,130 @@ function mergeComponentProps(baseProps, customization) {
10763
11276
  }
10764
11277
 
10765
11278
  /**
10766
- * Utility Functions Exports
11279
+ * Font Preloading Utilities
11280
+ *
11281
+ * Provides utilities for preloading fonts to improve performance
11282
+ * and prevent Flash of Invisible Text (FOIT).
11283
+ */
11284
+ /**
11285
+ * Creates a preload link element for a font
11286
+ *
11287
+ * @param config - Font preload configuration
11288
+ * @returns HTML link element for preloading
11289
+ *
11290
+ * @example
11291
+ * ```tsx
11292
+ * const preloadLink = createFontPreloadLink({
11293
+ * family: 'Nunito Sans',
11294
+ * path: '/fonts/nunito-sans/nunito-sans-regular.woff2',
11295
+ * weight: 400
11296
+ * });
11297
+ * document.head.appendChild(preloadLink);
11298
+ * ```
11299
+ */ function createFontPreloadLink(config) {
11300
+ const {path: path, format: format = "woff2", crossorigin: crossorigin = "anonymous"} = config, link = document.createElement("link");
11301
+ return link.rel = "preload", link.as = "font", link.href = path, link.type = `font/${format}`,
11302
+ link.crossOrigin = crossorigin, link;
11303
+ }
11304
+
11305
+ /**
11306
+ * Preloads multiple fonts
11307
+ *
11308
+ * @param fonts - Array of font configurations to preload
11309
+ * @returns Array of created link elements
11310
+ *
11311
+ * @example
11312
+ * ```tsx
11313
+ * const links = preloadFonts([
11314
+ * { family: 'Nunito Sans', path: '/fonts/nunito-sans/nunito-sans-regular.woff2', weight: 400 },
11315
+ * { family: 'Nunito Sans', path: '/fonts/nunito-sans/nunito-sans-bold.woff2', weight: 700 },
11316
+ * ]);
11317
+ * links.forEach(link => document.head.appendChild(link));
11318
+ * ```
11319
+ */ function preloadFonts(fonts) {
11320
+ return fonts.map(createFontPreloadLink);
11321
+ }
11322
+
11323
+ /**
11324
+ * Generates preload link HTML tags as strings
11325
+ * Useful for server-side rendering or static HTML generation
11326
+ *
11327
+ * @param fonts - Array of font configurations
11328
+ * @returns Array of HTML string representations
11329
+ *
11330
+ * @example
11331
+ * ```tsx
11332
+ * const htmlTags = generateFontPreloadTags([
11333
+ * { family: 'Nunito Sans', path: '/fonts/nunito-sans/nunito-sans-regular.woff2' },
11334
+ * ]);
11335
+ * // Returns: ['<link rel="preload" as="font" href="/fonts/..." type="font/woff2" crossorigin="anonymous">']
11336
+ * ```
11337
+ */ function generateFontPreloadTags(fonts) {
11338
+ return fonts.map((config => {
11339
+ const {path: path, format: format = "woff2", crossorigin: crossorigin = "anonymous"} = config;
11340
+ return `<link rel="preload" as="font" href="${path}" type="font/${format}" crossorigin="${crossorigin}">`;
11341
+ }));
11342
+ }
11343
+
11344
+ /**
11345
+ * Default font configurations for Atomix Design System
11346
+ * These can be used as a starting point for font preloading
10767
11347
  */ Input.displayName = "Input";
10768
11348
 
10769
- const utilsImport = Object.freeze( Object.defineProperty({
11349
+ const DEFAULT_ATOMIX_FONTS = [ {
11350
+ family: "Nunito Sans",
11351
+ path: "/fonts/nunito-sans/nunito-sans-regular.woff2",
11352
+ weight: 400,
11353
+ style: "normal",
11354
+ format: "woff2"
11355
+ }, {
11356
+ family: "Nunito Sans",
11357
+ path: "/fonts/nunito-sans/nunito-sans-bold.woff2",
11358
+ weight: 700,
11359
+ style: "normal",
11360
+ format: "woff2"
11361
+ }, {
11362
+ family: "Nunito Sans",
11363
+ path: "/fonts/nunito-sans/nunito-sans-italic.woff2",
11364
+ weight: 400,
11365
+ style: "italic",
11366
+ format: "woff2"
11367
+ }, {
11368
+ family: "Nunito Sans",
11369
+ path: "/fonts/nunito-sans/nunito-sans-bold-italic.woff2",
11370
+ weight: 700,
11371
+ style: "italic",
11372
+ format: "woff2"
11373
+ } ], utilsImport = Object.freeze( Object.defineProperty({
10770
11374
  __proto__: null,
10771
- applyPartStyles: function(baseProps, partStyles) {
10772
- return partStyles ? {
10773
- ...baseProps,
10774
- className: mergeClassNames(baseProps.className, partStyles.className),
10775
- style: {
10776
- ...baseProps.style,
10777
- ...partStyles.style
10778
- }
10779
- } : baseProps;
10780
- },
11375
+ DEFAULT_ATOMIX_FONTS: DEFAULT_ATOMIX_FONTS,
11376
+ applyPartStyles: applyPartStyles,
10781
11377
  createCSSVarStyle: createCSSVarStyle,
10782
11378
  createDebugAttrs: createDebugAttrs,
11379
+ createFontPreloadLink: createFontPreloadLink,
10783
11380
  createPartProps: createPartProps,
10784
11381
  extractYouTubeId: extractYouTubeId,
11382
+ generateFontPreloadTags: generateFontPreloadTags,
10785
11383
  generateUUID: generateUUID,
10786
11384
  getPartStyles: getPartStyles,
10787
11385
  hasCustomization: hasCustomization,
10788
11386
  isYouTubeUrl: isYouTubeUrl,
10789
11387
  mergeClassNames: mergeClassNames,
10790
- mergeComponentProps: mergeComponentProps
11388
+ mergeComponentProps: mergeComponentProps,
11389
+ preloadFonts: preloadFonts
10791
11390
  }, Symbol.toStringTag, {
10792
11391
  value: "Module"
10793
11392
  }));
10794
11393
 
11394
+ /**
11395
+ * Utility Functions Exports
11396
+ */
10795
11397
  /**
10796
11398
  * Todo composable hook - manages todo items state and operations
10797
11399
  * @param initialProps - Initial todo properties
10798
11400
  * @returns Todo state and methods
10799
- */ function useTodo(initialProps) {
11401
+ */
11402
+ function useTodo(initialProps) {
10800
11403
  // Default todo properties
10801
11404
  const defaultProps = {
10802
11405
  items: [],
@@ -10951,10 +11554,10 @@ const utilsImport = Object.freeze( Object.defineProperty({
10951
11554
  ...initialProps
10952
11555
  };
10953
11556
  /**
10954
- * Generate radio class based on properties
10955
- * @param props - Radio properties
10956
- * @returns Class string
10957
- */ return {
11557
+ * Generate radio class based on properties
11558
+ * @param props - Radio properties
11559
+ * @returns Class string
11560
+ */ return {
10958
11561
  defaultProps: defaultProps,
10959
11562
  generateRadioClass: props => {
10960
11563
  const {disabled: disabled = defaultProps.disabled, invalid: invalid = defaultProps.invalid, valid: valid = defaultProps.valid, className: className = ""} = props;
@@ -10980,10 +11583,10 @@ const utilsImport = Object.freeze( Object.defineProperty({
10980
11583
  ...initialProps
10981
11584
  };
10982
11585
  /**
10983
- * Generate select class based on properties
10984
- * @param props - Select properties
10985
- * @returns Class string
10986
- */ return {
11586
+ * Generate select class based on properties
11587
+ * @param props - Select properties
11588
+ * @returns Class string
11589
+ */ return {
10987
11590
  defaultProps: defaultProps,
10988
11591
  generateSelectClass: props => {
10989
11592
  const {size: size = defaultProps.size, disabled: disabled = defaultProps.disabled, invalid: invalid = defaultProps.invalid, valid: valid = defaultProps.valid, className: className = ""} = props, sizeClass = "md" === size ? "" : "sm" === size ? SELECT.CLASSES.SMALL : SELECT.CLASSES.LARGE;
@@ -11009,10 +11612,10 @@ const utilsImport = Object.freeze( Object.defineProperty({
11009
11612
  ...initialProps
11010
11613
  };
11011
11614
  /**
11012
- * Generate textarea class based on properties
11013
- * @param props - Textarea properties
11014
- * @returns Class string
11015
- */ return {
11615
+ * Generate textarea class based on properties
11616
+ * @param props - Textarea properties
11617
+ * @returns Class string
11618
+ */ return {
11016
11619
  defaultProps: defaultProps,
11017
11620
  generateTextareaClass: props => {
11018
11621
  const {size: size = defaultProps.size, variant: variant = defaultProps.variant, disabled: disabled = defaultProps.disabled, invalid: invalid = defaultProps.invalid, valid: valid = defaultProps.valid, className: className = ""} = props, sizeClass = "md" === size ? "" : "sm" === size ? TEXTAREA.CLASSES.SMALL : TEXTAREA.CLASSES.LARGE, variantClass = variant ? `c-input--${variant}` : "";
@@ -11308,7 +11911,7 @@ function useSlider(options) {
11308
11911
  total: 0,
11309
11912
  average: 0
11310
11913
  };
11311
- const values = processedData.map((d => d.value)), min = Math.min(...values), max = Math.max(...values), total = values.reduce(((sum, val) => sum + val), 0);
11914
+ const values = processedData.map((d => d.value)), min = Math.min(...values), max = Math.max(...values), total = _reduceInstanceProperty(values).call(values, ((sum, val) => sum + val), 0);
11312
11915
  return {
11313
11916
  min: min,
11314
11917
  max: max,
@@ -11336,14 +11939,24 @@ function useSlider(options) {
11336
11939
  if (!data.length) return {
11337
11940
  xScale: () => padding.left,
11338
11941
  yScale: () => padding.top + innerHeight,
11942
+ minValue: 0,
11943
+ maxValue: 0,
11944
+ valueRange: 0,
11945
+ innerWidth: innerWidth,
11946
+ innerHeight: innerHeight,
11339
11947
  width: width,
11340
11948
  height: height,
11341
11949
  padding: padding
11342
11950
  };
11343
- const values = data.map((d => d.value)), minValue = Math.min(0, ...values), valueRange = Math.max(...values) - minValue || 1;
11951
+ const values = data.map((d => d.value)), minValue = Math.min(0, ...values), maxValue = Math.max(...values), valueRange = maxValue - minValue || 1;
11344
11952
  return {
11345
11953
  xScale: index => padding.left + index / Math.max(data.length - 1, 1) * innerWidth,
11346
11954
  yScale: value => padding.top + innerHeight - (value - minValue) / valueRange * innerHeight,
11955
+ minValue: minValue,
11956
+ maxValue: maxValue,
11957
+ valueRange: valueRange,
11958
+ innerWidth: innerWidth,
11959
+ innerHeight: innerHeight,
11347
11960
  width: width,
11348
11961
  height: height,
11349
11962
  padding: padding
@@ -11423,7 +12036,7 @@ const composablesImport = Object.freeze( Object.defineProperty({
11423
12036
  useTodo: useTodo
11424
12037
  }, Symbol.toStringTag, {
11425
12038
  value: "Module"
11426
- })), Select = ({options: options = [], value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder = "Select an option", className: className = "", style: style, disabled: disabled = !1, required: required = !1, id: id, name: name, size: size = "md", invalid: invalid = !1, valid: valid = !1, multiple: multiple = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}) => {
12039
+ })), Select = memo((({options: options = [], value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder = "Select an option", className: className = "", style: style, disabled: disabled = !1, required: required = !1, id: id, name: name, size: size = "md", invalid: invalid = !1, valid: valid = !1, multiple: multiple = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}) => {
11427
12040
  const {generateSelectClass: generateSelectClass} = useSelect({
11428
12041
  size: size,
11429
12042
  disabled: disabled,
@@ -11562,7 +12175,7 @@ const composablesImport = Object.freeze( Object.defineProperty({
11562
12175
  });
11563
12176
  }
11564
12177
  return selectContent;
11565
- };
12178
+ }));
11566
12179
 
11567
12180
  /**
11568
12181
  * Select - A component for dropdown selection
@@ -11571,7 +12184,7 @@ const composablesImport = Object.freeze( Object.defineProperty({
11571
12184
  /**
11572
12185
  * Radio - A component for radio button inputs
11573
12186
  */
11574
- const Radio = ({label: label, checked: checked = !1, onChange: onChange, className: className = "", style: style, disabled: disabled = !1, required: required = !1, id: id, name: name, value: value, invalid: invalid = !1, valid: valid = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}) => {
12187
+ const Radio = memo((({label: label, checked: checked = !1, onChange: onChange, className: className = "", style: style, disabled: disabled = !1, required: required = !1, id: id, name: name, value: value, invalid: invalid = !1, valid: valid = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}) => {
11575
12188
  const {generateRadioClass: generateRadioClass} = useRadio({
11576
12189
  disabled: disabled,
11577
12190
  invalid: invalid,
@@ -11622,14 +12235,14 @@ const Radio = ({label: label, checked: checked = !1, onChange: onChange, classNa
11622
12235
  });
11623
12236
  }
11624
12237
  return radioContent;
11625
- };
12238
+ }));
11626
12239
 
11627
12240
  Radio.displayName = "Radio";
11628
12241
 
11629
12242
  /**
11630
12243
  * Textarea - A component for multiline text input
11631
12244
  */
11632
- const Textarea = forwardRef((({value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder, className: className = "", style: style, disabled: disabled = !1, required: required = !1, readOnly: readOnly = !1, id: id, name: name, rows: rows = 4, cols: cols, maxLength: maxLength, minLength: minLength, size: size = "md", variant: variant, invalid: invalid = !1, valid: valid = !1, autoFocus: autoFocus = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}, ref) => {
12245
+ const Textarea = memo( forwardRef((({value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder, className: className = "", style: style, disabled: disabled = !1, required: required = !1, readOnly: readOnly = !1, id: id, name: name, rows: rows = 4, cols: cols, maxLength: maxLength, minLength: minLength, size: size = "md", variant: variant, invalid: invalid = !1, valid: valid = !1, autoFocus: autoFocus = !1, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, glass: glass}, ref) => {
11633
12246
  const {generateTextareaClass: generateTextareaClass} = useTextarea({
11634
12247
  size: size,
11635
12248
  variant: variant,
@@ -11687,7 +12300,7 @@ const Textarea = forwardRef((({value: value, onChange: onChange, onBlur: onBlur,
11687
12300
  });
11688
12301
  }
11689
12302
  return textareaElement;
11690
- }));
12303
+ })));
11691
12304
 
11692
12305
  Textarea.displayName = "Textarea";
11693
12306
 
@@ -11700,7 +12313,7 @@ Textarea.displayName = "Textarea";
11700
12313
  * <FooterSocialLink platform="custom" url="https://example.com" icon={<CustomIcon />} label="Custom Platform" />
11701
12314
  * ```
11702
12315
  */
11703
- const FooterSocialLink = forwardRef((({platform: platform, url: url, icon: icon, label: label, size: size = "md", variant: variant = "default", disabled: disabled = !1, className: className = "", ...props}, ref) => {
12316
+ const FooterSocialLink = forwardRef((({platform: platform, url: url, icon: icon, label: label, size: size = "md", variant: variant = "default", disabled: disabled = !1, className: className = "", ...props}, ref) => {
11704
12317
  const linkClass = [ "c-footer__social-link", `c-footer__social-link--${platform}`, `c-footer__social-link--${size}`, `c-footer__social-link--${variant}`, disabled && "c-footer__social-link--disabled", className ].filter(Boolean).join(" "), ariaLabel = label || `Follow us on ${(platform => ({
11705
12318
  facebook: "Facebook",
11706
12319
  twitter: "Twitter",
@@ -11785,7 +12398,7 @@ FooterSocialLink.displayName = "FooterSocialLink";
11785
12398
  * </Grid>
11786
12399
  * ```
11787
12400
  */
11788
- const Grid = forwardRef((({children: children, className: className = "", justifyContent: justifyContent, alignItems: alignItems, noGutters: noGutters, direction: direction, wrap: wrap, ...props}, ref) => {
12401
+ const Grid = forwardRef((({children: children, className: className = "", justifyContent: justifyContent, alignItems: alignItems, noGutters: noGutters, direction: direction, wrap: wrap, ...props}, ref) => {
11789
12402
  const classes = [ "o-grid" ];
11790
12403
  return justifyContent && classes.push(`u-justify-content-${justifyContent}`), alignItems && classes.push(`u-align-items-${alignItems}`),
11791
12404
  noGutters && classes.push("o-grid--no-gutters"), direction && classes.push(`u-flex-direction-${direction}`),
@@ -11804,7 +12417,7 @@ Grid.displayName = "Grid";
11804
12417
  * GridCol component for creating columns within a Grid.
11805
12418
  * Uses the CSS grid column classes defined in _objects.grid.scss.
11806
12419
  */
11807
- const GridCol = forwardRef((({children: children, className: className = "", xs: xs, sm: sm, md: md, lg: lg, xl: xl, xxl: xxl, offsetXs: offsetXs, offsetSm: offsetSm, offsetMd: offsetMd, offsetLg: offsetLg, offsetXl: offsetXl, offsetXxl: offsetXxl, grow: grow, shrink: shrink, basis: basis, align: align, ...props}, ref) => {
12420
+ const GridCol = forwardRef((({children: children, className: className = "", xs: xs, sm: sm, md: md, lg: lg, xl: xl, xxl: xxl, offsetXs: offsetXs, offsetSm: offsetSm, offsetMd: offsetMd, offsetLg: offsetLg, offsetXl: offsetXl, offsetXxl: offsetXxl, grow: grow, shrink: shrink, basis: basis, align: align, ...props}, ref) => {
11808
12421
  // If no specific size is provided, use auto class
11809
12422
  const classes = xs || sm || md || lg || xl || xxl ? [ "o-grid__col" ] : [ "o-grid__col", "o-grid__col--auto" ], processResponsiveProp = (value, breakpoint) => {
11810
12423
  void 0 !== value && (
@@ -11847,7 +12460,7 @@ GridCol.displayName = "GridCol";
11847
12460
  * </Container>
11848
12461
  * ```
11849
12462
  */
11850
- const Row = forwardRef((({children: children, className: className = "", justifyContent: justifyContent, alignItems: alignItems, noGutters: noGutters, ...props}, ref) => {
12463
+ const Row = forwardRef((({children: children, className: className = "", justifyContent: justifyContent, alignItems: alignItems, noGutters: noGutters, ...props}, ref) => {
11851
12464
  const classes = [ "o-grid" ];
11852
12465
  return justifyContent && classes.push(`u-justify-content-${justifyContent}`), alignItems && classes.push(`u-align-items-${alignItems}`),
11853
12466
  noGutters && classes.push("o-grid--no-gutters"), className && classes.push(className),
@@ -11884,7 +12497,7 @@ Row.displayName = "Row";
11884
12497
  * </Footer>
11885
12498
  * ```
11886
12499
  */
11887
- const Footer = forwardRef((({brand: brand, brandLogo: brandLogo, brandDescription: brandDescription, copyright: copyright, layout: layout = "columns", variant: variant = "primary", size: size = "md", showNewsletter: showNewsletter = !1, newsletterTitle: newsletterTitle = "Stay Updated", newsletterDescription: newsletterDescription = "Subscribe to our newsletter for the latest updates.", newsletterPlaceholder: newsletterPlaceholder = "Enter your email", newsletterButtonText: newsletterButtonText = "Subscribe", onNewsletterSubmit: onNewsletterSubmit, socialLinks: socialLinks = [], showBackToTop: showBackToTop = !1, backToTopText: backToTopText = "Back to Top", onBackToTop: onBackToTop, showDivider: showDivider = !0, sticky: sticky = !1, children: children, className: className = "", disabled: disabled = !1, glass: glass, ...props}, ref) => {
12500
+ const Footer = forwardRef((({brand: brand, brandLogo: brandLogo, brandDescription: brandDescription, copyright: copyright, layout: layout = "columns", variant: variant = "primary", size: size = "md", showNewsletter: showNewsletter = !1, newsletterTitle: newsletterTitle = "Stay Updated", newsletterDescription: newsletterDescription = "Subscribe to our newsletter for the latest updates.", newsletterPlaceholder: newsletterPlaceholder = "Enter your email", newsletterButtonText: newsletterButtonText = "Subscribe", onNewsletterSubmit: onNewsletterSubmit, socialLinks: socialLinks = [], showBackToTop: showBackToTop = !1, backToTopText: backToTopText = "Back to Top", onBackToTop: onBackToTop, showDivider: showDivider = !0, sticky: sticky = !1, children: children, className: className = "", disabled: disabled = !1, glass: glass, ...props}, ref) => {
11888
12501
  const {footerClass: footerClass, containerClass: containerClass, brandClass: brandClass, sectionsClass: sectionsClass, bottomClass: bottomClass, handleNewsletterSubmit: handleNewsletterSubmit, handleBackToTop: handleBackToTop, socialLinks: footerSocialLinks} = function(options = {}) {
11889
12502
  const {layout: layout = FOOTER.DEFAULTS.LAYOUT, variant: variant = FOOTER.DEFAULTS.VARIANT, size: size = FOOTER.DEFAULTS.SIZE, sticky: sticky = FOOTER.DEFAULTS.STICKY, showNewsletter: showNewsletter = FOOTER.DEFAULTS.SHOW_NEWSLETTER, showBackToTop: showBackToTop = FOOTER.DEFAULTS.SHOW_BACK_TO_TOP, socialLinks: socialLinks = [], onNewsletterSubmit: onNewsletterSubmit, onBackToTop: onBackToTop, className: className = ""} = options;
11890
12503
  // Generate footer classes
@@ -12015,7 +12628,7 @@ const Footer = forwardRef((({brand: brand, brandLogo: brandLogo, brandDescriptio
12015
12628
  alignItems: "centered" === layout || "stacked" === layout ? "center" : void 0,
12016
12629
  children: React.Children.map(children, (child =>
12017
12630
  // Check if the child is a valid React element
12018
- React.isValidElement(child) ? React.cloneElement(child, {
12631
+ React.isValidElement(child) ? React.cloneElement(child, {
12019
12632
  showNewsletter: showNewsletter
12020
12633
  }) : child))
12021
12634
  })
@@ -12104,7 +12717,7 @@ Footer.displayName = "Footer";
12104
12717
  * </MasonryGrid>
12105
12718
  * ```
12106
12719
  */
12107
- const MasonryGrid = forwardRef((({children: children, className: className = "", xs: xs = 1, sm: sm, md: md, lg: lg, xl: xl, xxl: xxl, gap: gap = 16, animate: animate = !0, imagesLoaded: imagesLoaded = !0, onLayoutComplete: onLayoutComplete, onImageLoad: onImageLoad, ...props}, ref) => {
12720
+ const MasonryGrid = forwardRef((({children: children, className: className = "", xs: xs = 1, sm: sm, md: md, lg: lg, xl: xl, xxl: xxl, gap: gap = 16, animate: animate = !0, imagesLoaded: imagesLoaded = !0, onLayoutComplete: onLayoutComplete, onImageLoad: onImageLoad, ...props}, ref) => {
12108
12721
  // === REFS & STATE ===
12109
12722
  const [columns, setColumns] = useState(xs), [positions, setPositions] = useState([]), [layoutComplete, setLayoutComplete] = useState(!1), [loadingImages, setLoadingImages] = useState(!1), containerRef = useRef(null), columnHeights = useRef([]), imagesLoadedCount = useRef(0), totalImagesCount = useRef(0), imageElements = useRef(new Map);
12110
12723
  useEffect((() => {
@@ -12127,11 +12740,11 @@ const MasonryGrid = forwardRef((({children: children, className: className = "",
12127
12740
  useEffect((() => {
12128
12741
  const newItems = [];
12129
12742
  Children.forEach(children, ((child, index) => {
12130
- isValidElement(child) && newItems.push({
12743
+ isValidElement(child) && newItems.push({
12131
12744
  id: child.key?.toString() || `masonry-item-${index}`,
12132
12745
  element: child,
12133
12746
  position: null,
12134
- ref: React.createRef()
12747
+ ref: React.createRef()
12135
12748
  });
12136
12749
  })), setItems(newItems);
12137
12750
  }), [ children ]);
@@ -12289,7 +12902,7 @@ MasonryGrid.displayName = "MasonryGrid";
12289
12902
  * </MasonryGrid>
12290
12903
  * ```
12291
12904
  */
12292
- const MasonryGridItem = forwardRef((({children: children, className: className = "", ...props}, ref) => {
12905
+ const MasonryGridItem = forwardRef((({children: children, className: className = "", ...props}, ref) => {
12293
12906
  const classes = [ "o-masonry-grid__item-inner" ];
12294
12907
  return className && classes.push(className), jsx("div", {
12295
12908
  ref: ref,
@@ -12312,7 +12925,7 @@ const layouts = Object.freeze( Object.defineProperty({
12312
12925
  Row: Row
12313
12926
  }, Symbol.toStringTag, {
12314
12927
  value: "Module"
12315
- })), FooterSection = forwardRef((({title: title, icon: icon, collapsible: collapsible = !1, defaultCollapsed: defaultCollapsed = !1, showNewsletter: showNewsletter = !1, children: children, className: className = "", ...props}, ref) => {
12928
+ })), FooterSection = forwardRef((({title: title, icon: icon, collapsible: collapsible = !1, defaultCollapsed: defaultCollapsed = !1, showNewsletter: showNewsletter = !1, children: children, className: className = "", ...props}, ref) => {
12316
12929
  const [isCollapsed, setIsCollapsed] = React.useState(defaultCollapsed), sectionClass = [ "c-footer__section", collapsible && "c-footer__section--collapsible", isCollapsed && "c-footer__section--collapsed", className ].filter(Boolean).join(" ");
12317
12930
  return jsx(GridCol, {
12318
12931
  xs: 12,
@@ -12386,7 +12999,7 @@ const layouts = Object.freeze( Object.defineProperty({
12386
12999
  * </FooterLink>
12387
13000
  * ```
12388
13001
  */
12389
- const FooterLink = forwardRef((({href: href, icon: icon, external: external = !1, active: active = !1, disabled: disabled = !1, onClick: onClick, children: children, className: className = "", LinkComponent: LinkComponent, ...props}, ref) => {
13002
+ const FooterLink = forwardRef((({href: href, icon: icon, external: external = !1, active: active = !1, disabled: disabled = !1, onClick: onClick, children: children, className: className = "", LinkComponent: LinkComponent, ...props}, ref) => {
12390
13003
  const linkProps = {
12391
13004
  className: [ "c-footer__link", active && "c-footer__link--active", disabled && "c-footer__link--disabled", className ].filter(Boolean).join(" "),
12392
13005
  onClick: disabled ? void 0 : onClick,
@@ -12648,32 +13261,34 @@ const Hero = ({title: title, subtitle: subtitle, text: text, imageSrc: imageSrc,
12648
13261
 
12649
13262
  Hero.displayName = "Hero";
12650
13263
 
12651
- const List = ({children: children, variant: variant = "default", className: className = "", style: style, ...props}) => {
13264
+ const List = memo((({children: children, variant: variant = "default", className: className = "", style: style, ...props}) => {
13265
+ var _context;
12652
13266
  // Generate CSS classes
12653
- const listClasses = [ LIST.BASE_CLASS, "default" !== variant && `c-list--${variant}`, className ].filter(Boolean).join(" "), ListElement = [ "number", "text" ].includes(variant) ? "ol" : "ul";
13267
+ const listClasses = [ LIST.BASE_CLASS, "default" !== variant && `c-list--${variant}`, className ].filter(Boolean).join(" "), ListElement = _includesInstanceProperty(_context = [ "number", "text" ]).call(_context, variant) ? "ol" : "ul";
12654
13268
  // Determine the HTML element based on variant
12655
13269
  return jsx(ListElement, {
12656
13270
  className: listClasses,
12657
13271
  style: style,
12658
13272
  ...props,
12659
- children: React.Children.map(children, (child => (React.isValidElement(child), jsx("li", {
13273
+ children: React.Children.map(children, (child => jsx("li", {
12660
13274
  className: "c-list__item",
12661
13275
  children: child
12662
- }))))
13276
+ })))
12663
13277
  });
12664
- };
13278
+ }));
12665
13279
 
12666
13280
  List.displayName = "List";
12667
13281
 
12668
13282
  const ListGroup = ({children: children, className: className = "", style: style, variant: variant = "default"}) => {
12669
13283
  // Generate CSS classes
12670
- const listGroupClasses = [ LIST_GROUP.BASE_CLASS, className ].filter(Boolean).join(" "), validLists = React.Children.toArray(children).filter((child => React.isValidElement(child) && child.type === List));
13284
+ const listGroupClasses = [ LIST_GROUP.BASE_CLASS, className ].filter(Boolean).join(" "), validLists = React.Children.toArray(children).filter((child => React.isValidElement(child) && child.type === List));
12671
13285
  // Get valid List children
12672
13286
  return jsx("div", {
12673
13287
  className: listGroupClasses,
12674
13288
  style: style,
12675
13289
  children: validLists.map(((child, index) => {
12676
13290
  const childProps = child.props;
13291
+
12677
13292
  return React.cloneElement(child, {
12678
13293
  key: index,
12679
13294
  variant: childProps?.variant ?? variant
@@ -12882,7 +13497,7 @@ const Messages = ({messages: messages = [], otherAvatar: otherAvatar, selfAvatar
12882
13497
  /**
12883
13498
  * Modal component for displaying overlay content
12884
13499
  */
12885
- const Modal = ({children: children, isOpen: isOpen = !1, onOpenChange: onOpenChange, onClose: onClose, onOpen: onOpen, title: title, subtitle: subtitle, size: size = "md", backdrop: backdrop = !0, keyboard: keyboard = !0, className: className = "", style: style, closeButton: closeButton = !0, footer: footer, glass: glass, ...props}) => {
13500
+ const Modal = memo((({children: children, isOpen: isOpen = !1, onOpenChange: onOpenChange, onClose: onClose, onOpen: onOpen, title: title, subtitle: subtitle, size: size = "md", backdrop: backdrop = !0, keyboard: keyboard = !0, className: className = "", style: style, closeButton: closeButton = !0, footer: footer, glass: glass, ...props}) => {
12886
13501
  const modalRef = useRef(null), dialogRef = useRef(null), backdropRef = useRef(null), {isOpen: isOpenState, open: open, close: close} =
12887
13502
  /**
12888
13503
  * Hook for managing modal state
@@ -12991,7 +13606,8 @@ const Modal = ({children: children, isOpen: isOpen = !1, onOpenChange: onOpenCha
12991
13606
  }), jsx("div", {
12992
13607
  ref: dialogRef,
12993
13608
  className: "c-modal__dialog",
12994
- children: glass ? // Default glass settings for modals
13609
+ children: glass ?
13610
+ // Default glass settings for modals
12995
13611
  (() => {
12996
13612
  const defaultGlassProps = {
12997
13613
  displacementScale: document.querySelector(".c-modal---glass .c-modal__content")?.clientHeight,
@@ -13010,7 +13626,7 @@ const Modal = ({children: children, isOpen: isOpen = !1, onOpenChange: onOpenCha
13010
13626
  })() : modalContent
13011
13627
  }) ]
13012
13628
  });
13013
- };
13629
+ }));
13014
13630
 
13015
13631
  Modal.displayName = "Modal";
13016
13632
 
@@ -13029,7 +13645,7 @@ Modal.displayName = "Modal";
13029
13645
  * </Nav>
13030
13646
  * ```
13031
13647
  */
13032
- const Nav = forwardRef((({children: children, alignment: alignment = "start", variant: variant = "default", className: className = "", disabled: disabled = !1, glass: glass}, ref) => {
13648
+ const Nav = forwardRef((({children: children, alignment: alignment = "start", variant: variant = "default", className: className = "", disabled: disabled = !1, glass: glass}, ref) => {
13033
13649
  const {generateNavClass: generateNavClass} = useNav({
13034
13650
  alignment: alignment,
13035
13651
  variant: variant
@@ -13043,8 +13659,9 @@ const Nav = forwardRef((({children: children, alignment: alignment = "start", va
13043
13659
  role: "menubar",
13044
13660
  "aria-orientation": "horizontal",
13045
13661
  children: React.Children.map(children, (child => {
13046
- if (React.isValidElement(child)) {
13662
+ if ( React.isValidElement(child)) {
13047
13663
  const childProps = child.props;
13664
+
13048
13665
  return React.cloneElement(child, {
13049
13666
  ...childProps,
13050
13667
  disabled: !!disabled || childProps?.disabled
@@ -13101,7 +13718,7 @@ Nav.displayName = "Nav";
13101
13718
  * </NavItem>
13102
13719
  * ```
13103
13720
  */
13104
- const NavItem = forwardRef((({children: children, dropdown: dropdown = !1, megaMenu: megaMenu = !1, active: active = !1, href: href, onClick: onClick, className: className = "", disabled: disabled = !1, "aria-expanded": ariaExpanded, LinkComponent: LinkComponent}, ref) => {
13721
+ const NavItem = forwardRef((({children: children, dropdown: dropdown = !1, megaMenu: megaMenu = !1, active: active = !1, href: href, onClick: onClick, className: className = "", disabled: disabled = !1, "aria-expanded": ariaExpanded, LinkComponent: LinkComponent}, ref) => {
13105
13722
  const {generateNavItemClass: generateNavItemClass, generateNavLinkClass: generateNavLinkClass, handleClick: handleClick} = useNavItem({
13106
13723
  dropdown: dropdown,
13107
13724
  megaMenu: megaMenu,
@@ -13176,7 +13793,7 @@ NavItem.displayName = "NavItem";
13176
13793
  * </Navbar>
13177
13794
  * ```
13178
13795
  */
13179
- const Navbar = forwardRef((({brand: brand, children: children, variant: variant, position: position = "static", containerWidth: containerWidth, collapsible: collapsible = !0, expanded: expanded, onToggle: onToggle, className: className = "", style: style, disabled: disabled = !1, backdrop: backdrop = !1, closeOnOutsideClick: closeOnOutsideClick = !0, closeOnEscape: closeOnEscape = !0, ariaLabel: ariaLabel = "Main navigation", id: id, glass: glass}, ref) => {
13796
+ const Navbar = forwardRef((({brand: brand, children: children, variant: variant, position: position = "static", containerWidth: containerWidth, collapsible: collapsible = !0, expanded: expanded, onToggle: onToggle, className: className = "", style: style, disabled: disabled = !1, backdrop: backdrop = !1, closeOnOutsideClick: closeOnOutsideClick = !0, closeOnEscape: closeOnEscape = !0, ariaLabel: ariaLabel = "Main navigation", id: id, glass: glass}, ref) => {
13180
13797
  const {generateNavbarClass: generateNavbarClass, generateContainerStyle: generateContainerStyle, generateCollapseClass: generateCollapseClass} = useNavbar({
13181
13798
  position: position,
13182
13799
  collapsible: collapsible,
@@ -13319,13 +13936,13 @@ function setRef(ref, value) {
13319
13936
  * ```
13320
13937
  */ Navbar.displayName = "Navbar";
13321
13938
 
13322
- const SideMenuList = forwardRef((({children: children, className: className = ""}, ref) => {
13939
+ const SideMenuList = forwardRef((({children: children, className: className = ""}, ref) => {
13323
13940
  const listClass = `c-side-menu__list ${className}`.trim();
13324
13941
  return jsx("ul", {
13325
13942
  ref: ref,
13326
13943
  className: listClass,
13327
13944
  role: "list",
13328
- children: React.Children.map(children, ((child, index) => React.isValidElement(child) ? jsx("li", {
13945
+ children: React.Children.map(children, ((child, index) => React.isValidElement(child) ? jsx("li", {
13329
13946
  className: "c-side-menu__item",
13330
13947
  role: "listitem",
13331
13948
  children: child
@@ -13360,7 +13977,7 @@ SideMenuList.displayName = "SideMenuList";
13360
13977
  * </SideMenuItem>
13361
13978
  * ```
13362
13979
  */
13363
- const SideMenuItem = forwardRef((({children: children, href: href, onClick: onClick, active: active = !1, disabled: disabled = !1, icon: icon, className: className = "", target: target, rel: rel, LinkComponent: LinkComponentProp}, ref) => {
13980
+ const SideMenuItem = forwardRef((({children: children, href: href, onClick: onClick, active: active = !1, disabled: disabled = !1, icon: icon, className: className = "", target: target, rel: rel, LinkComponent: LinkComponentProp}, ref) => {
13364
13981
  const {LinkComponent: LinkComponentFromContext} = useSideMenuContext(), LinkComponent = LinkComponentProp ?? LinkComponentFromContext, {generateSideMenuItemClass: generateSideMenuItemClass, handleClick: handleClick} = useSideMenuItem({
13365
13982
  active: active,
13366
13983
  disabled: disabled,
@@ -13447,7 +14064,7 @@ const SideMenuItem = forwardRef((({children: children, href: href, onClick: onCl
13447
14064
  SideMenuItem.displayName = "SideMenuItem";
13448
14065
 
13449
14066
  // Context for passing LinkComponent to SideMenuItem children
13450
- const SideMenuContext = createContext({}), useSideMenuContext = () => useContext(SideMenuContext)
14067
+ const SideMenuContext = createContext({}), useSideMenuContext = () => useContext(SideMenuContext)
13451
14068
  /**
13452
14069
  * SideMenu component provides a collapsible navigation menu with title and menu items.
13453
14070
  * Automatically collapses on mobile devices and can be toggled via a header button.
@@ -13462,7 +14079,7 @@ const SideMenuContext = createContext({}), useSideMenuContext = () => useContext
13462
14079
  * </SideMenuList>
13463
14080
  * </SideMenu>
13464
14081
  * ```
13465
- */ , SideMenu = forwardRef((({title: title, children: children, menuItems: menuItems = [], isOpen: isOpen, onToggle: onToggle, collapsible: collapsible = !0, collapsibleDesktop: collapsibleDesktop = !1, defaultCollapsedDesktop: defaultCollapsedDesktop = !1, className: className = "", style: style, disabled: disabled = !1, toggleIcon: toggleIcon, id: id, glass: glass, LinkComponent: LinkComponent}, ref) => {
14082
+ */ , SideMenu = forwardRef((({title: title, children: children, menuItems: menuItems = [], isOpen: isOpen, onToggle: onToggle, collapsible: collapsible = !0, collapsibleDesktop: collapsibleDesktop = !1, defaultCollapsedDesktop: defaultCollapsedDesktop = !1, className: className = "", style: style, disabled: disabled = !1, toggleIcon: toggleIcon, id: id, glass: glass, LinkComponent: LinkComponent}, ref) => {
13466
14083
  const {isOpenState: isOpenState, wrapperRef: wrapperRef, innerRef: innerRef, sideMenuRef: sideMenuRef, generateSideMenuClass: generateSideMenuClass, generateWrapperClass: generateWrapperClass, handleToggle: handleToggle} = useSideMenu({
13467
14084
  isOpen: isOpen,
13468
14085
  onToggle: onToggle,
@@ -13665,7 +14282,7 @@ const SideMenuContext = createContext({}), useSideMenuContext = () => useContext
13665
14282
  // Hook to use SideMenu context
13666
14283
  SideMenu.displayName = "SideMenu";
13667
14284
 
13668
- const Menu = forwardRef((({children: children, className: className = "", style: style, disabled: disabled = !1}, ref) => jsx("div", {
14285
+ const Menu = forwardRef((({children: children, className: className = "", style: style, disabled: disabled = !1}, ref) => jsx("div", {
13669
14286
  ref: ref,
13670
14287
  className: `c-menu ${className}`,
13671
14288
  style: style,
@@ -13673,9 +14290,10 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13673
14290
  className: "c-menu__list",
13674
14291
  role: "menu",
13675
14292
  children: React.Children.map(children, (child => {
13676
- if (React.isValidElement(child)) {
14293
+ if ( React.isValidElement(child)) {
13677
14294
  // Pass disabled prop down to all children if Menu is disabled
13678
14295
  const childProps = child.props;
14296
+
13679
14297
  return React.cloneElement(child, {
13680
14298
  ...childProps,
13681
14299
  disabled: !!disabled || childProps?.disabled
@@ -13684,7 +14302,11 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13684
14302
  return child;
13685
14303
  }))
13686
14304
  })
13687
- }))), MenuItem = forwardRef((({children: children, href: href = "#", icon: icon, active: active = !1, disabled: disabled = !1, onClick: onClick, className: className = ""}, ref) => jsx("li", {
14305
+ })));
14306
+
14307
+ Menu.displayName = "Menu";
14308
+
14309
+ const MenuItem = forwardRef((({children: children, href: href = "#", icon: icon, active: active = !1, disabled: disabled = !1, onClick: onClick, className: className = ""}, ref) => jsx("li", {
13688
14310
  ref: ref,
13689
14311
  className: `c-menu__item ${active ? "is-active" : ""} ${disabled ? "is-disabled" : ""} ${className}`,
13690
14312
  role: "menuitem",
@@ -13708,7 +14330,12 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13708
14330
  children: icon
13709
14331
  })), children ]
13710
14332
  })
13711
- }))), mapIconName = luxIconName => ({
14333
+ })));
14334
+
14335
+ MenuItem.displayName = "MenuItem";
14336
+
14337
+ // Map icon-lux names to Phosphor icon names
14338
+ const mapIconName = luxIconName => ({
13712
14339
  circle: "Circle",
13713
14340
  "caret-down": "CaretDown",
13714
14341
  "caret-up": "CaretUp",
@@ -13722,11 +14349,15 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13722
14349
  bell: "Bell",
13723
14350
  search: "MagnifyingGlass"
13724
14351
  }[luxIconName] || "Circle") // Default to Circle if no mapping found
13725
- , MenuDivider = forwardRef((({className: className = ""}, ref) => jsx("li", {
14352
+ , MenuDivider = forwardRef((({className: className = ""}, ref) => jsx("li", {
13726
14353
  ref: ref,
13727
14354
  className: `c-menu__divider ${className}`,
13728
14355
  role: "separator"
13729
- }))), MegaMenu = forwardRef((({children: children, className: className = "", style: style, disabled: disabled = !1}, ref) => jsx("div", {
14356
+ })));
14357
+
14358
+ MenuDivider.displayName = "MenuDivider";
14359
+
14360
+ const MegaMenu = forwardRef((({children: children, className: className = "", style: style, disabled: disabled = !1}, ref) => jsx("div", {
13730
14361
  ref: ref,
13731
14362
  className: `c-menu c-menu--mega ${className}`,
13732
14363
  style: style,
@@ -13735,9 +14366,10 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13735
14366
  children: jsx("div", {
13736
14367
  className: "c-menu__grid o-grid",
13737
14368
  children: React.Children.map(children, (child => {
13738
- if (React.isValidElement(child)) {
14369
+ if ( React.isValidElement(child)) {
13739
14370
  // Pass disabled prop down to all children if MegaMenu is disabled
13740
14371
  const childProps = child.props;
14372
+
13741
14373
  return React.cloneElement(child, {
13742
14374
  ...childProps,
13743
14375
  disabled: !!disabled || childProps?.disabled
@@ -13747,7 +14379,11 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13747
14379
  }))
13748
14380
  })
13749
14381
  })
13750
- }))), MegaMenuColumn = forwardRef((({title: title, icon: icon, children: children, width: width = "auto", className: className = "", disabled: disabled = !1}, ref) => jsxs("div", {
14382
+ })));
14383
+
14384
+ MegaMenu.displayName = "MegaMenu";
14385
+
14386
+ const MegaMenuColumn = forwardRef((({title: title, icon: icon, children: children, width: width = "auto", className: className = "", disabled: disabled = !1}, ref) => jsxs("div", {
13751
14387
  ref: ref,
13752
14388
  className: `o-grid__col o-grid__col--${width} ${className}`,
13753
14389
  children: [ (title || icon) && jsxs("div", {
@@ -13770,13 +14406,13 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13770
14406
  className: "c-menu__subitems-list",
13771
14407
  role: "menu",
13772
14408
  children: React.Children.map(children, (child => {
13773
- if (React.isValidElement(child)) {
14409
+ if ( React.isValidElement(child)) {
13774
14410
  // Pass disabled prop down to all children if column is disabled
13775
14411
  const childProps = child.props;
13776
14412
  return jsx("li", {
13777
14413
  className: "c-menu__subitem",
13778
14414
  role: "menuitem",
13779
- children: React.cloneElement(child, {
14415
+ children: React.cloneElement(child, {
13780
14416
  ...childProps,
13781
14417
  disabled: !!disabled || childProps?.disabled
13782
14418
  })
@@ -13785,7 +14421,11 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13785
14421
  return null;
13786
14422
  }))
13787
14423
  }) ]
13788
- }))), MegaMenuLink = forwardRef((({href: href, children: children, className: className = "", disabled: disabled = !1, onClick: onClick}, ref) => jsx("a", {
14424
+ })));
14425
+
14426
+ MegaMenuColumn.displayName = "MegaMenuColumn";
14427
+
14428
+ const MegaMenuLink = forwardRef((({href: href, children: children, className: className = "", disabled: disabled = !1, onClick: onClick}, ref) => jsx("a", {
13789
14429
  ref: ref,
13790
14430
  href: href,
13791
14431
  className: `c-menu__subitem-link ${disabled ? "is-disabled" : ""} ${className}`,
@@ -13794,7 +14434,11 @@ const Menu = forwardRef((({children: children, className: className = "", style:
13794
14434
  },
13795
14435
  "aria-disabled": disabled,
13796
14436
  children: children
13797
- }))), NavDropdown = forwardRef((({title: title, children: children, alignment: alignment = "start", megaMenu: megaMenu = !1, className: className = "", style: style, disabled: disabled = !1}, ref) => {
14437
+ })));
14438
+
14439
+ MegaMenuLink.displayName = "MegaMenuLink";
14440
+
14441
+ const NavDropdown = forwardRef((({title: title, children: children, alignment: alignment = "start", megaMenu: megaMenu = !1, className: className = "", style: style, disabled: disabled = !1}, ref) => {
13798
14442
  const {generateDropdownMenuClass: generateDropdownMenuClass, getIconName: getIconName} = useNavDropdown({
13799
14443
  alignment: alignment,
13800
14444
  megaMenu: megaMenu
@@ -14434,12 +15078,13 @@ useEffect((() => {
14434
15078
  };
14435
15079
  }));
14436
15080
  }), [ isMounted, currentIndex, calculateBounds, constrainPosition ]), handleWheel = useCallback((event => {
15081
+ var _context;
14437
15082
  if (!isMounted || !event || !event.currentTarget) return;
14438
15083
  // Additional safety check for the target element
14439
15084
  const target = event.currentTarget;
14440
15085
  if (target && "function" == typeof target.getBoundingClientRect) {
14441
15086
  // Storybook-specific safety check - ensure DOM is ready
14442
- if ("undefined" != typeof window && window.location?.href?.includes("storybook")) try {
15087
+ if ("undefined" != typeof window && (null == (_context = window.location?.href) ? void 0 : Function.call.bind(_includesInstanceProperty(_context), _context))?.("storybook")) try {
14443
15088
  // Test if getBoundingClientRect works before proceeding
14444
15089
  const testRect = target.getBoundingClientRect();
14445
15090
  if (!testRect || 0 === testRect.width || 0 === testRect.height) return;
@@ -14983,7 +15628,7 @@ useEffect((() => {
14983
15628
  /**
14984
15629
  * Hook for managing popover state and positioning logic
14985
15630
  */
14986
- const PopoverContext = createContext({
15631
+ const PopoverContext = createContext({
14987
15632
  isOpen: !1,
14988
15633
  setIsOpen: () => {},
14989
15634
  triggerRef: {
@@ -15168,7 +15813,7 @@ const PopoverContext = createContext({
15168
15813
  popoverId: popoverId,
15169
15814
  triggerType: trigger
15170
15815
  },
15171
- children: [ children, "undefined" != typeof document && createPortal(jsxs("div", {
15816
+ children: [ children, "undefined" != typeof document && createPortal(jsxs("div", {
15172
15817
  ref: popoverRef,
15173
15818
  className: `c-popover c-popover--${currentPosition} ${isOpen ? POPOVER.CLASSES.IS_OPEN : ""} ${glass ? "c-popover--glass" : ""} ${className}`,
15174
15819
  style: style,
@@ -15215,10 +15860,7 @@ const PopoverContext = createContext({
15215
15860
  };
15216
15861
 
15217
15862
  // Context to share popover state between components
15218
- /**
15219
- * PopoverTrigger component to wrap the element that triggers the popover
15220
- */
15221
- forwardRef((({children: children, trigger: triggerProp}, ref) => {
15863
+ forwardRef((({children: children, trigger: triggerProp}, ref) => {
15222
15864
  const {isOpen: isOpen, setIsOpen: setIsOpen, triggerRef: triggerRef, popoverId: popoverId, triggerType: triggerType} = React.useContext(PopoverContext), effectiveTrigger = triggerProp || triggerType, child = React.Children.only(children), triggerProps = {
15223
15865
  ref: ref || triggerRef,
15224
15866
  "aria-describedby": popoverId,
@@ -15231,13 +15873,13 @@ forwardRef((({children: children, trigger: triggerProp}, ref) => {
15231
15873
  setIsOpen(!0);
15232
15874
  }, triggerProps.onMouseLeave = () => {
15233
15875
  setIsOpen(!1);
15234
- }), React.cloneElement(child, triggerProps);
15235
- })), Popover.displayName = "Popover";
15876
+ }), React.cloneElement(child, triggerProps);
15877
+ })).displayName = "PopoverTrigger", Popover.displayName = "Popover";
15236
15878
 
15237
15879
  /**
15238
15880
  * Hook for managing rating component state and interactions
15239
15881
  */
15240
- const Rating = forwardRef((({value: valueProp = 0, defaultValue: defaultValue, maxValue: maxValue = 5, allowHalf: allowHalf = !1, readOnly: readOnly = !1, size: size = "md", color: color, onChange: onChange, className: className = "", style: style, label: label, id: id, useVanillaJS: useVanillaJS = !1, glass: glass, ...restProps}, ref) => {
15882
+ const Rating = forwardRef((({value: valueProp = 0, defaultValue: defaultValue, maxValue: maxValue = 5, allowHalf: allowHalf = !1, readOnly: readOnly = !1, size: size = "md", color: color, onChange: onChange, className: className = "", style: style, label: label, id: id, useVanillaJS: useVanillaJS = !1, glass: glass, ...restProps}, ref) => {
15241
15883
  const internalRef = useRef(null), ratingInstance = useRef(null), {currentValue: currentValue, hoverValue: hoverValue, focusedIndex: focusedIndex, setHoverValue: setHoverValue, setFocused: setFocused, handleKeyDown: handleKeyDown} = (({value: value = 0, maxValue: maxValue = 5, allowHalf: allowHalf = !1, readOnly: readOnly = !1, onChange: onChange}) => {
15242
15884
  // Determine if component is in controlled mode
15243
15885
  const isControlled = void 0 !== onChange, [internalValue, setInternalValue] = useState(value), [hoverValue, setHoverValue] = useState(null), [focusedIndex, setFocusedIndex] = useState(null), currentValue = isControlled ? value : internalValue, handleMouseEnter = useCallback((starValue => {
@@ -15298,7 +15940,7 @@ const Rating = forwardRef((({value: valueProp = 0, defaultValue: defaultValue, m
15298
15940
  allowHalf: allowHalf,
15299
15941
  readOnly: readOnly,
15300
15942
  onChange: onChange
15301
- }), handleMouseEnter = useCallback(((e, starValue) => {
15943
+ }), forkedRef = useForkRef(internalRef, ref), handleMouseEnter = useCallback(((e, starValue) => {
15302
15944
  if (!readOnly) if (allowHalf) {
15303
15945
  // Get the star element's bounding rectangle
15304
15946
  const starRect = e.currentTarget.getBoundingClientRect(), starCenterX = starRect.left + starRect.width / 2, adjustedValue = e.clientX < starCenterX ? starValue - .5 : starValue;
@@ -15349,7 +15991,7 @@ const Rating = forwardRef((({value: valueProp = 0, defaultValue: defaultValue, m
15349
15991
  // If using vanilla JS, just render the container
15350
15992
  if (useVanillaJS) return jsx("div", {
15351
15993
  className: ratingClasses,
15352
- ref: useForkRef(internalRef, ref),
15994
+ ref: forkedRef,
15353
15995
  id: id,
15354
15996
  ...restProps
15355
15997
  });
@@ -15357,7 +15999,7 @@ const Rating = forwardRef((({value: valueProp = 0, defaultValue: defaultValue, m
15357
15999
  // Determine the effective value (either hovered or actual)
15358
16000
  const effectiveValue = null !== hoverValue ? hoverValue : currentValue, ratingContent = jsx("div", {
15359
16001
  className: ratingClasses,
15360
- ref: useForkRef(internalRef, ref),
16002
+ ref: forkedRef,
15361
16003
  id: id,
15362
16004
  style: style,
15363
16005
  "data-readonly": readOnly ? "true" : "false",
@@ -15562,7 +16204,7 @@ ProductReview.displayName = "ProductReview";
15562
16204
  /**
15563
16205
  * Hook for managing Progress component state and behavior
15564
16206
  */
15565
- const Progress = forwardRef((({value: value, variant: variant = "primary", size: size = "md", className: className = "", style: style, disabled: disabled = !1, ariaLabel: ariaLabel = PROGRESS.DEFAULTS.ARIA_LABEL, glass: glass}, ref) => {
16207
+ const Progress = memo( forwardRef((({value: value, variant: variant = "primary", size: size = "md", className: className = "", style: style, disabled: disabled = !1, ariaLabel: ariaLabel = PROGRESS.DEFAULTS.ARIA_LABEL, glass: glass}, ref) => {
15566
16208
  const {progressValue: progressValue, progressStyle: progressStyle, progressClasses: progressClasses} = (({value: value, variant: variant = "primary", size: size = "md", className: className = ""}) => {
15567
16209
  // Clamp value between 0 and 100
15568
16210
  const progressValue = Math.min(Math.max(value, 0), 100), baseClass = "c-progress";
@@ -15612,7 +16254,14 @@ const Progress = forwardRef((({value: value, variant: variant = "primary", size:
15612
16254
  });
15613
16255
  }
15614
16256
  return progressContent;
15615
- })), River = ({title: title, text: text, actions: actions, imageSrc: imageSrc, imageAlt: imageAlt = "Image", center: center = !1, breakout: breakout = !1, reverse: reverse = !1, contentColumns: contentColumns, backgroundImageSrc: backgroundImageSrc, showOverlay: showOverlay = !0, contentWidth: contentWidth, className: className = "", style: style}) => {
16257
+ })));
16258
+
16259
+ Progress.displayName = "Progress";
16260
+
16261
+ /**
16262
+ * River component for displaying content with image sections
16263
+ */
16264
+ const River = ({title: title, text: text, actions: actions, imageSrc: imageSrc, imageAlt: imageAlt = "Image", center: center = !1, breakout: breakout = !1, reverse: reverse = !1, contentColumns: contentColumns, backgroundImageSrc: backgroundImageSrc, showOverlay: showOverlay = !0, contentWidth: contentWidth, className: className = "", style: style}) => {
15616
16265
  const {generateRiverClassNames: generateRiverClassNames, generateContentClass: generateContentClass, generateVisualClass: generateVisualClass, hasBackgroundImage: hasBackgroundImage, hasForegroundImage: hasForegroundImage, textContent: textContent} = useRiver({
15617
16266
  title: title,
15618
16267
  text: text,
@@ -15790,9 +16439,22 @@ const SectionIntro = ({title: title, label: label, text: text, actions: actions,
15790
16439
 
15791
16440
  SectionIntro.displayName = "SectionIntro";
15792
16441
 
15793
- const Slider = forwardRef(((props, ref) => {
15794
- const {slides: slides = [], height: height = 300, width: width = "100%", slidesToShow: slidesToShow = 1, spaceBetween: spaceBetween = 0, loop: loop = !1, initialSlide: initialSlide = 0, direction: direction = "horizontal", speed: speed = 300, allowTouchMove: allowTouchMove = !0, threshold: threshold = 50, grabCursor: grabCursor = !0, autoplay: autoplay, navigation: navigation, pagination: pagination, className: className, style: style, onSlideChange: onSlideChange, ...rest} = props;
15795
- if (!slides || 0 === slides.length) return jsx("div", {
16442
+ const Slider = forwardRef(((props, ref) => {
16443
+ const {slides: slides = [], height: height = 300, width: width = "100%", slidesToShow: slidesToShow = 1, spaceBetween: spaceBetween = 0, loop: loop = !1, initialSlide: initialSlide = 0, direction: direction = "horizontal", speed: speed = 300, allowTouchMove: allowTouchMove = !0, threshold: threshold = 50, grabCursor: grabCursor = !0, autoplay: autoplay, navigation: navigation, pagination: pagination, className: className, style: style, onSlideChange: onSlideChange, ...rest} = props, slider = useSlider({
16444
+ slides: slides || [],
16445
+ slidesToShow: slidesToShow,
16446
+ spaceBetween: spaceBetween,
16447
+ loop: loop,
16448
+ initialSlide: initialSlide,
16449
+ direction: direction,
16450
+ speed: speed,
16451
+ allowTouchMove: allowTouchMove,
16452
+ threshold: threshold,
16453
+ autoplay: autoplay,
16454
+ onSlideChange: onSlideChange
16455
+ }), {containerRef: containerRef, wrapperRef: wrapperRef, allSlides: allSlides, realIndex: realIndex, translateValue: translateValue, slideWidth: slideWidth, transitioning: transitioning, touching: touching, slideNext: slideNext, slidePrev: slidePrev, goToSlide: goToSlide, canSlideNext: canSlideNext, canSlidePrev: canSlidePrev, handleTouchStart: handleTouchStart, handleTouchMove: handleTouchMove, handleTouchEnd: handleTouchEnd, loopedSlides: loopedSlides} = slider, totalWrapperWidth = useMemo((() => 0 === slideWidth ? 0 : allSlides.length * (slideWidth + spaceBetween) - spaceBetween), [ allSlides.length, slideWidth, spaceBetween ]);
16456
+ // Hooks must be called unconditionally - before early return
16457
+ if (!slides || 0 === slides.length) return jsx("div", {
15796
16458
  className: "c-slider c-slider--empty",
15797
16459
  style: {
15798
16460
  height: height,
@@ -15804,19 +16466,7 @@ const Slider = forwardRef(((props, ref) => {
15804
16466
  children: "No slides available"
15805
16467
  })
15806
16468
  });
15807
- const slider = useSlider({
15808
- slides: slides,
15809
- slidesToShow: slidesToShow,
15810
- spaceBetween: spaceBetween,
15811
- loop: loop,
15812
- initialSlide: initialSlide,
15813
- direction: direction,
15814
- speed: speed,
15815
- allowTouchMove: allowTouchMove,
15816
- threshold: threshold,
15817
- autoplay: autoplay,
15818
- onSlideChange: onSlideChange
15819
- }), {containerRef: containerRef, wrapperRef: wrapperRef, allSlides: allSlides, realIndex: realIndex, translateValue: translateValue, slideWidth: slideWidth, transitioning: transitioning, touching: touching, slideNext: slideNext, slidePrev: slidePrev, goToSlide: goToSlide, canSlideNext: canSlideNext, canSlidePrev: canSlidePrev, handleTouchStart: handleTouchStart, handleTouchMove: handleTouchMove, handleTouchEnd: handleTouchEnd, loopedSlides: loopedSlides} = slider, totalWrapperWidth = useMemo((() => 0 === slideWidth ? 0 : allSlides.length * (slideWidth + spaceBetween) - spaceBetween), [ allSlides.length, slideWidth, spaceBetween ]), containerClasses = [ "c-slider", "vertical" === direction && "c-slider--vertical", grabCursor && "c-slider--grab-cursor", touching && "c-slider--grabbing", loop && "c-slider--loop", className ].filter(Boolean).join(" ");
16469
+ const containerClasses = [ "c-slider", "vertical" === direction && "c-slider--vertical", grabCursor && "c-slider--grab-cursor", touching && "c-slider--grabbing", loop && "c-slider--loop", className ].filter(Boolean).join(" ");
15820
16470
  return jsxs("div", {
15821
16471
  ref: ref || containerRef,
15822
16472
  className: containerClasses,
@@ -15982,7 +16632,7 @@ Steps.displayName = "Steps";
15982
16632
  /**
15983
16633
  * Tabs component for switching between different content panels
15984
16634
  */
15985
- const Tabs = ({items: items, activeIndex: activeIndex = TAB.DEFAULTS.ACTIVE_INDEX, onTabChange: onTabChange, className: className = "", style: style, glass: glass}) => {
16635
+ const Tabs = memo((({items: items, activeIndex: activeIndex = TAB.DEFAULTS.ACTIVE_INDEX, onTabChange: onTabChange, className: className = "", style: style, glass: glass}) => {
15986
16636
  const [currentTab, setCurrentTab] = useState(activeIndex), tabContent = jsxs("div", {
15987
16637
  className: `c-tabs js-atomix-tab ${className}`,
15988
16638
  style: style,
@@ -16043,7 +16693,7 @@ const Tabs = ({items: items, activeIndex: activeIndex = TAB.DEFAULTS.ACTIVE_INDE
16043
16693
  });
16044
16694
  }
16045
16695
  return tabContent;
16046
- };
16696
+ }));
16047
16697
 
16048
16698
  Tabs.displayName = "Tabs";
16049
16699
 
@@ -16207,13 +16857,12 @@ const Todo = ({items: items = [], title: title = "Todo List", onAddTodo: onAddTo
16207
16857
  type: "checkbox",
16208
16858
  className: "c-todo__checkbox c-checkbox",
16209
16859
  checked: item.completed,
16210
- onChange: () => {
16211
- return id = item.id, void (disabled || (setLocalItems((prevItems => prevItems.map((item => item.id === id ? {
16860
+ onChange: () => (id => {
16861
+ disabled || (setLocalItems((prevItems => prevItems.map((item => item.id === id ? {
16212
16862
  ...item,
16213
16863
  completed: !item.completed
16214
- } : item)))), onToggleTodo && onToggleTodo(id)));
16215
- var id;
16216
- },
16864
+ } : item)))), onToggleTodo && onToggleTodo(id));
16865
+ })(item.id),
16217
16866
  disabled: disabled,
16218
16867
  "aria-label": `Mark "${item.text}" as ${item.completed ? "incomplete" : "complete"}`
16219
16868
  }), jsx("span", {
@@ -16223,11 +16872,10 @@ const Todo = ({items: items = [], title: title = "Todo List", onAddTodo: onAddTo
16223
16872
  }), jsx("button", {
16224
16873
  type: "button",
16225
16874
  className: "c-todo__delete-btn c-btn c-btn--error c-btn--sm",
16226
- onClick: () => {
16227
- return id = item.id, void (disabled || (setLocalItems((prevItems => prevItems.filter((item => item.id !== id)))),
16228
- onDeleteTodo && onDeleteTodo(id)));
16229
- var id;
16230
- },
16875
+ onClick: () => (id => {
16876
+ disabled || (setLocalItems((prevItems => prevItems.filter((item => item.id !== id)))),
16877
+ onDeleteTodo && onDeleteTodo(id));
16878
+ })(item.id),
16231
16879
  disabled: disabled,
16232
16880
  "aria-label": `Delete "${item.text}"`,
16233
16881
  children: jsx(Icon, {
@@ -16293,7 +16941,7 @@ Toggle.displayName = "Toggle";
16293
16941
  /**
16294
16942
  * Calculate tooltip and arrow positions based on trigger and tooltip dimensions
16295
16943
  */
16296
- const Tooltip = ({content: content, children: children, position: position = TOOLTIP.DEFAULTS.POSITION, trigger: trigger = TOOLTIP.DEFAULTS.TRIGGER, className: className = "", style: style, delay: delay = TOOLTIP.DEFAULTS.DELAY, offset: offset = TOOLTIP.DEFAULTS.OFFSET, glass: glass}) => {
16944
+ const Tooltip = memo((({content: content, children: children, position: position = TOOLTIP.DEFAULTS.POSITION, trigger: trigger = TOOLTIP.DEFAULTS.TRIGGER, className: className = "", style: style, delay: delay = TOOLTIP.DEFAULTS.DELAY, offset: offset = TOOLTIP.DEFAULTS.OFFSET, glass: glass}) => {
16297
16945
  const {isVisible: isVisible, isPositioned: isPositioned, tooltipId: tooltipId, triggerRef: triggerRef, tooltipRef: tooltipRef, tooltipStyle: tooltipStyle, arrowStyle: arrowStyle, triggerProps: triggerProps, wrapperProps: wrapperProps} = (({position: position = "top", trigger: trigger = "hover", offset: offset = 10, delay: delay = 200}) => {
16298
16946
  const [isVisible, setIsVisible] = useState(!1), [isPositioned, setIsPositioned] = useState(!1), [tooltipStyle, setTooltipStyle] = useState({}), [arrowStyle, setArrowStyle] = useState({}), timeoutRef = useRef(null), triggerRef = useRef(null), tooltipRef = useRef(null), tooltipId = `tooltip-${Math.random().toString(36).slice(2, 11)}`, showTooltip = useCallback((() => {
16299
16947
  timeoutRef.current && clearTimeout(timeoutRef.current), delay > 0 ? timeoutRef.current = setTimeout((() => {
@@ -16470,7 +17118,7 @@ const Tooltip = ({content: content, children: children, position: position = TOO
16470
17118
  })()
16471
17119
  }) ]
16472
17120
  });
16473
- };
17121
+ }));
16474
17122
 
16475
17123
  /**
16476
17124
  * Get arrow size from CSS custom property
@@ -16633,13 +17281,14 @@ Upload.displayName = "Upload";
16633
17281
  /**
16634
17282
  * Advanced Video Player Component
16635
17283
  */
16636
- const VideoPlayer = forwardRef((({src: src, type: type = "video", youtubeId: youtubeId, poster: poster, autoplay: autoplay = !1, loop: loop = !1, muted: muted = !1, controls: controls = !0, preload: preload = "metadata", width: width, height: height, aspectRatio: aspectRatio = "16:9", className: className = "", onPlay: onPlay, onPause: onPause, onEnded: onEnded, onTimeUpdate: onTimeUpdate, onVolumeChange: onVolumeChange, onFullscreenChange: onFullscreenChange, onError: onError, showDownload: showDownload = !1, showShare: showShare = !1, showSettings: showSettings = !0, playbackRates: playbackRates = [ .5, .75, 1, 1.25, 1.5, 2 ], subtitles: subtitles, quality: quality, ambientMode: ambientMode = !1, glass: glass = !1, glassOpacity: glassOpacity = 1, glassContent: glassContent, style: style, ...props}, ref) => {
17284
+ const VideoPlayer = forwardRef((({src: src, type: type = "video", youtubeId: youtubeId, poster: poster, autoplay: autoplay = !1, loop: loop = !1, muted: muted = !1, controls: controls = !0, preload: preload = "metadata", width: width, height: height, aspectRatio: aspectRatio = "16:9", className: className = "", onPlay: onPlay, onPause: onPause, onEnded: onEnded, onTimeUpdate: onTimeUpdate, onVolumeChange: onVolumeChange, onFullscreenChange: onFullscreenChange, onError: onError, showDownload: showDownload = !1, showShare: showShare = !1, showSettings: showSettings = !0, playbackRates: playbackRates = [ .5, .75, 1, 1.25, 1.5, 2 ], subtitles: subtitles, quality: quality, ambientMode: ambientMode = !1, glass: glass = !1, glassOpacity: glassOpacity = 1, glassContent: glassContent, style: style, ...props}, ref) => {
16637
17285
  const videoRef = useRef(null), containerRef = useRef(null), canvasRef = useRef(null), iframeRef = useRef(null), [containerBorderRadius, setContainerBorderRadius] = useState(8), isYouTube = "youtube" === type || youtubeId || src && isYouTubeUrl(src), videoId = youtubeId || (isYouTube && src ? extractYouTubeId(src) : null), {isPlaying: isPlaying, currentTime: currentTime, duration: duration, volume: volume, isMuted: isMuted, isFullscreen: isFullscreen, isLoading: isLoading, playbackRate: playbackRate, currentQuality: currentQuality, showControls: showControls, play: play, pause: pause, togglePlay: togglePlay, seek: seek, setVolume: setVolume, toggleMute: toggleMute, toggleFullscreen: toggleFullscreen, togglePictureInPicture: togglePictureInPicture, setPlaybackRate: setPlaybackRate, setQuality: setQuality, formatTime: formatTime, getProgressPercentage: getProgressPercentage, getBufferedPercentage: getBufferedPercentage} = function({videoRef: videoRef, containerRef: containerRef, onPlay: onPlay, onPause: onPause, onEnded: onEnded, onTimeUpdate: onTimeUpdate, onVolumeChange: onVolumeChange, onFullscreenChange: onFullscreenChange, onError: onError, playbackRates: playbackRates = [ .5, .75, 1, 1.25, 1.5, 2 ], quality: quality}) {
16638
17286
  const [isPlaying, setIsPlaying] = useState(!1), [currentTime, setCurrentTime] = useState(0), [duration, setDuration] = useState(0), [volume, setVolumeState] = useState(1), [isMuted, setIsMuted] = useState(!1), [isFullscreen, setIsFullscreen] = useState(!1), [isPictureInPicture, setIsPictureInPicture] = useState(!1), [isLoading, setIsLoading] = useState(!1), [buffered, setBuffered] = useState(0), [playbackRate, setPlaybackRateState] = useState(1), [currentQuality, setCurrentQuality] = useState(quality?.[0] || null), [showControls, setShowControls] = useState(!0), controlsTimeoutRef = useRef(null), resetControlsTimeout = useCallback((() => {
16639
- controlsTimeoutRef.current && clearTimeout(controlsTimeoutRef.current), setShowControls(!0),
16640
- controlsTimeoutRef.current = setTimeout((() => {
17287
+ controlsTimeoutRef.current && clearTimeout(controlsTimeoutRef.current), setShowControls(!0);
17288
+ const timeout = setTimeout((() => {
16641
17289
  isPlaying && setShowControls(!1);
16642
17290
  }), 3e3);
17291
+ controlsTimeoutRef.current = timeout;
16643
17292
  }), [ isPlaying ]), play = useCallback((async () => {
16644
17293
  if (videoRef.current) try {
16645
17294
  await videoRef.current.play(), setIsPlaying(!0), onPlay?.();
@@ -16674,7 +17323,7 @@ const VideoPlayer = forwardRef((({src: src, type: type = "video", youtubeId: you
16674
17323
  console.error("Picture-in-picture error:", error);
16675
17324
  }
16676
17325
  }), [ videoRef, isPictureInPicture ]), setPlaybackRate = useCallback((rate => {
16677
- videoRef.current && playbackRates.includes(rate) && (videoRef.current.playbackRate = rate,
17326
+ videoRef.current && _includesInstanceProperty(playbackRates).call(playbackRates, rate) && (videoRef.current.playbackRate = rate,
16678
17327
  setPlaybackRateState(rate));
16679
17328
  }), [ videoRef, playbackRates ]), setQuality = useCallback((newQuality => {
16680
17329
  if (videoRef.current && quality) {
@@ -17506,41 +18155,37 @@ function validateConfig(config) {
17506
18155
  function(themes) {
17507
18156
  const errors = [], warnings = [];
17508
18157
  0 === Object.keys(themes).length && warnings.push("No themes defined in configuration");
17509
- for (const [themeId, theme] of Object.entries(themes))
17510
- // Validate theme ID
17511
- if (themeId && "string" == typeof themeId)
17512
- // Validate theme object
17513
- if (theme && "object" == typeof theme)
17514
- // Validate theme type
17515
- if (!theme.type || "css" !== theme.type && "js" !== theme.type) errors.push(`Theme "${themeId}" must have type "css" or "js"`); else {
17516
- // Validate CSS theme
17517
- if (
17518
- // Validate required fields
17519
- theme.name && "string" == typeof theme.name || errors.push(`Theme "${themeId}" must have a "name" string`),
17520
- "css" === theme.type) {
17521
- const cssErrors = validateCSSTheme();
17522
- errors.push(...cssErrors.errors), warnings.push(...cssErrors.warnings);
17523
- }
17524
- // Validate JS theme
17525
- if ("js" === theme.type) {
17526
- const jsErrors = validateJSTheme(themeId, theme);
17527
- errors.push(...jsErrors.errors), warnings.push(...jsErrors.warnings);
17528
- }
17529
- // Validate metadata
17530
- theme.version && (version = theme.version, !/^\d+\.\d+\.\d+(-[\w.]+)?(\+[\w.]+)?$/.test(version)) && warnings.push(`Theme "${themeId}" has invalid version format: ${theme.version}`),
17531
- theme.status && ![ "stable", "beta", "experimental", "deprecated" ].includes(theme.status) && warnings.push(`Theme "${themeId}" has invalid status: ${theme.status}`),
17532
- // Validate color format
17533
- theme.color && !isValidColor(theme.color) && warnings.push(`Theme "${themeId}" has invalid color format: ${theme.color}`),
17534
- // Validate accessibility
17535
- theme.a11y && theme.a11y.contrastTarget && (theme.a11y.contrastTarget < 1 || theme.a11y.contrastTarget > 21) && warnings.push(`Theme "${themeId}" has invalid contrast target: ${theme.a11y.contrastTarget}`);
17536
- } else errors.push(`Theme "${themeId}" must be an object`); else errors.push(`Invalid theme ID: ${themeId}`);
17537
- /**
17538
- * Check if string is valid semver
17539
- */
17540
- var version;
17541
- /**
17542
- * Check if string is valid color
17543
- */ return {
18158
+ for (const [themeId, theme] of Object.entries(themes)) {
18159
+ var _context;
18160
+ // Validate theme ID
18161
+ if (themeId && "string" == typeof themeId)
18162
+ // Validate theme object
18163
+ if (theme && "object" == typeof theme)
18164
+ // Validate theme type
18165
+ if (!theme.type || "css" !== theme.type && "js" !== theme.type) errors.push(`Theme "${themeId}" must have type "css" or "js"`); else {
18166
+ // Validate CSS theme
18167
+ if (
18168
+ // Validate required fields
18169
+ theme.name && "string" == typeof theme.name || errors.push(`Theme "${themeId}" must have a "name" string`),
18170
+ "css" === theme.type) {
18171
+ const cssErrors = validateCSSTheme();
18172
+ errors.push(...cssErrors.errors), warnings.push(...cssErrors.warnings);
18173
+ }
18174
+ // Validate JS theme
18175
+ if ("js" === theme.type) {
18176
+ const jsErrors = validateJSTheme(themeId, theme);
18177
+ errors.push(...jsErrors.errors), warnings.push(...jsErrors.warnings);
18178
+ }
18179
+ // Validate metadata
18180
+ theme.version && !isValidSemver(theme.version) && warnings.push(`Theme "${themeId}" has invalid version format: ${theme.version}`),
18181
+ theme.status && !_includesInstanceProperty(_context = [ "stable", "beta", "experimental", "deprecated" ]).call(_context, theme.status) && warnings.push(`Theme "${themeId}" has invalid status: ${theme.status}`),
18182
+ // Validate color format
18183
+ theme.color && !isValidColor(theme.color) && warnings.push(`Theme "${themeId}" has invalid color format: ${theme.color}`),
18184
+ // Validate accessibility
18185
+ theme.a11y && theme.a11y.contrastTarget && (theme.a11y.contrastTarget < 1 || theme.a11y.contrastTarget > 21) && warnings.push(`Theme "${themeId}" has invalid contrast target: ${theme.a11y.contrastTarget}`);
18186
+ } else errors.push(`Theme "${themeId}" must be an object`); else errors.push(`Invalid theme ID: ${themeId}`);
18187
+ }
18188
+ return {
17544
18189
  valid: 0 === errors.length,
17545
18190
  errors: errors,
17546
18191
  warnings: warnings
@@ -17560,9 +18205,10 @@ function validateConfig(config) {
17560
18205
  */
17561
18206
  function(build) {
17562
18207
  const errors = [], warnings = [];
18208
+ var _context2;
17563
18209
  return build.output && "object" == typeof build.output ? (build.output.directory && "string" == typeof build.output.directory || errors.push('Build output must have a "directory" string'),
17564
18210
  build.output.formats && "object" == typeof build.output.formats || errors.push('Build output must have a "formats" object')) : errors.push('Build config must have an "output" object'),
17565
- build.sass && "object" == typeof build.sass ? build.sass.style && ![ "expanded", "compressed", "compact", "nested" ].includes(build.sass.style) && warnings.push(`Invalid Sass style: ${build.sass.style}`) : errors.push('Build config must have a "sass" object'),
18211
+ build.sass && "object" == typeof build.sass ? build.sass.style && !_includesInstanceProperty(_context2 = [ "expanded", "compressed", "compact", "nested" ]).call(_context2, build.sass.style) && warnings.push(`Invalid Sass style: ${build.sass.style}`) : errors.push('Build config must have a "sass" object'),
17566
18212
  {
17567
18213
  valid: 0 === errors.length,
17568
18214
  errors: errors,
@@ -17626,7 +18272,10 @@ function validateConfig(config) {
17626
18272
  errors: errors,
17627
18273
  warnings: warnings
17628
18274
  };
17629
- }(config.dependencies, config.themes || {});
18275
+ }
18276
+ /**
18277
+ * Check if string is valid semver
18278
+ */ (config.dependencies, config.themes || {});
17630
18279
  errors.push(...depErrors.errors), warnings.push(...depErrors.warnings);
17631
18280
  }
17632
18281
  return {
@@ -17660,13 +18309,22 @@ function validateCSSTheme(themeId, theme) {
17660
18309
  };
17661
18310
  }
17662
18311
 
17663
- function isValidColor(color) {
18312
+ function isValidSemver(version) {
18313
+ return /^\d+\.\d+\.\d+(-[\w.]+)?(\+[\w.]+)?$/.test(version);
18314
+ }
18315
+
18316
+ /**
18317
+ * Check if string is valid color
18318
+ */ function isValidColor(color) {
17664
18319
  // Hex color
17665
- return !!/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(color) || (
18320
+ if (/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(color)) return !0;
17666
18321
  // RGB/RGBA
17667
- !!/^rgba?\(/.test(color) || (
18322
+ if (/^rgba?\(/.test(color)) return !0;
17668
18323
  // HSL/HSLA
17669
- !!/^hsla?\(/.test(color) || !![ "black", "white", "red", "green", "blue", "yellow", "cyan", "magenta", "transparent", "currentColor" ].includes(color.toLowerCase())));
18324
+ if (/^hsla?\(/.test(color)) return !0;
18325
+ // Named colors (basic check)
18326
+ const namedColors = [ "black", "white", "red", "green", "blue", "yellow", "cyan", "magenta", "transparent", "currentColor" ];
18327
+ return !!_includesInstanceProperty(namedColors).call(namedColors, color.toLowerCase());
17670
18328
  }
17671
18329
 
17672
18330
  /**
@@ -17715,8 +18373,8 @@ class ThemeError extends Error {
17715
18373
  Error.captureStackTrace && Error.captureStackTrace(this, ThemeError);
17716
18374
  }
17717
18375
  /**
17718
- * Convert error to JSON for logging
17719
- */ toJSON() {
18376
+ * Convert error to JSON for logging
18377
+ */ toJSON() {
17720
18378
  return {
17721
18379
  name: this.name,
17722
18380
  message: this.message,
@@ -17753,8 +18411,8 @@ class ThemeLogger {
17753
18411
  };
17754
18412
  }
17755
18413
  /**
17756
- * Log an error
17757
- */ error(message, error, context) {
18414
+ * Log an error
18415
+ */ error(message, error, context) {
17758
18416
  if (this.config.level < LogLevel.ERROR) return;
17759
18417
  const errorObj = error instanceof Error ? error : new Error(message), themeError = error instanceof ThemeError ? error : new ThemeError(message, ThemeErrorCode.UNKNOWN_ERROR, context);
17760
18418
  this.config.enableConsole && console.error(`[ThemeError] ${message}`, {
@@ -17767,20 +18425,20 @@ class ThemeLogger {
17767
18425
  }), this.config.onError?.(themeError, context);
17768
18426
  }
17769
18427
  /**
17770
- * Log a warning
17771
- */ warn(message, context) {
18428
+ * Log a warning
18429
+ */ warn(message, context) {
17772
18430
  this.config.level < LogLevel.WARN || (this.config.enableConsole && console.warn(`[ThemeWarning] ${message}`, context || {}),
17773
18431
  this.config.onWarn?.(message, context));
17774
18432
  }
17775
18433
  /**
17776
- * Log an info message
17777
- */ info(message, context) {
18434
+ * Log an info message
18435
+ */ info(message, context) {
17778
18436
  this.config.level < LogLevel.INFO || (this.config.enableConsole && console.info(`[ThemeInfo] ${message}`, context || {}),
17779
18437
  this.config.onInfo?.(message, context));
17780
18438
  }
17781
18439
  /**
17782
- * Log a debug message
17783
- */ debug(message, context) {
18440
+ * Log a debug message
18441
+ */ debug(message, context) {
17784
18442
  this.config.level < LogLevel.DEBUG || (this.config.enableConsole, this.config.onDebug?.(message, context));
17785
18443
  }
17786
18444
  }
@@ -17923,11 +18581,6 @@ class ThemeLogger {
17923
18581
  /**
17924
18582
  * Theme Registry
17925
18583
  *
17926
- * Central registry for all themes with discovery and dependency management
17927
- */
17928
- /**
17929
- * Theme Registry
17930
- *
17931
18584
  * Manages theme registration, discovery, and dependency resolution
17932
18585
  */ (processedConfig, env);
17933
18586
  // Validate if requested
@@ -17990,8 +18643,8 @@ class ThemeRegistry {
17990
18643
  this.entries = new Map, this.config = null, this.initialized = !1;
17991
18644
  }
17992
18645
  /**
17993
- * Initialize registry from config
17994
- */ async initialize(config) {
18646
+ * Initialize registry from config
18647
+ */ async initialize(config) {
17995
18648
  if (!this.initialized) {
17996
18649
  // Load config if not provided
17997
18650
  if (config) this.config = config; else try {
@@ -18041,8 +18694,8 @@ class ThemeRegistry {
18041
18694
  }
18042
18695
  }
18043
18696
  /**
18044
- * Register a theme
18045
- */ register(themeId, definition) {
18697
+ * Register a theme
18698
+ */ register(themeId, definition) {
18046
18699
  // Get dependencies from config or definition
18047
18700
  const entry = {
18048
18701
  id: themeId,
@@ -18054,23 +18707,23 @@ class ThemeRegistry {
18054
18707
  this.entries.set(themeId, entry);
18055
18708
  }
18056
18709
  /**
18057
- * Get theme entry
18058
- */ get(themeId) {
18710
+ * Get theme entry
18711
+ */ get(themeId) {
18059
18712
  return this.entries.get(themeId);
18060
18713
  }
18061
18714
  /**
18062
- * Check if theme exists
18063
- */ has(themeId) {
18715
+ * Check if theme exists
18716
+ */ has(themeId) {
18064
18717
  return this.entries.has(themeId);
18065
18718
  }
18066
18719
  /**
18067
- * Get all theme IDs
18068
- */ getAllIds() {
18720
+ * Get all theme IDs
18721
+ */ getAllIds() {
18069
18722
  return Array.from(this.entries.keys());
18070
18723
  }
18071
18724
  /**
18072
- * Get all theme metadata
18073
- */ getAllMetadata() {
18725
+ * Get all theme metadata
18726
+ */ getAllMetadata() {
18074
18727
  return Array.from(this.entries.values()).map((entry => ({
18075
18728
  id: entry.id,
18076
18729
  name: entry.definition.name,
@@ -18089,34 +18742,34 @@ class ThemeRegistry {
18089
18742
  })));
18090
18743
  }
18091
18744
  /**
18092
- * Get theme definition
18093
- */ getDefinition(themeId) {
18745
+ * Get theme definition
18746
+ */ getDefinition(themeId) {
18094
18747
  return this.entries.get(themeId)?.definition;
18095
18748
  }
18096
18749
  /**
18097
- * Get theme object (for JS themes)
18098
- */ getTheme(themeId) {
18750
+ * Get theme object (for JS themes)
18751
+ */ getTheme(themeId) {
18099
18752
  return this.entries.get(themeId)?.theme;
18100
18753
  }
18101
18754
  /**
18102
- * Set theme object (for JS themes)
18103
- */ setTheme(themeId, theme) {
18755
+ * Set theme object (for JS themes)
18756
+ */ setTheme(themeId, theme) {
18104
18757
  const entry = this.entries.get(themeId);
18105
18758
  entry && (entry.theme = theme, entry.loaded = !0);
18106
18759
  }
18107
18760
  /**
18108
- * Get dependencies for a theme
18109
- */ getDependencies(themeId) {
18761
+ * Get dependencies for a theme
18762
+ */ getDependencies(themeId) {
18110
18763
  return this.entries.get(themeId)?.dependencies || [];
18111
18764
  }
18112
18765
  /**
18113
- * Get dependents for a theme (themes that depend on this one)
18114
- */ getDependents(themeId) {
18766
+ * Get dependents for a theme (themes that depend on this one)
18767
+ */ getDependents(themeId) {
18115
18768
  return this.entries.get(themeId)?.dependents || [];
18116
18769
  }
18117
18770
  /**
18118
- * Resolve all dependencies in correct order
18119
- */ resolveDependencyOrder(themeId) {
18771
+ * Resolve all dependencies in correct order
18772
+ */ resolveDependencyOrder(themeId) {
18120
18773
  const resolved = [], visited = new Set, visiting = new Set, visit = id => {
18121
18774
  if (visiting.has(id)) throw new Error(`Circular dependency detected involving theme: ${id}`);
18122
18775
  if (visited.has(id)) return;
@@ -18131,17 +18784,18 @@ class ThemeRegistry {
18131
18784
  return visit(themeId), resolved;
18132
18785
  }
18133
18786
  /**
18134
- * Resolve dependencies and build dependency graph
18135
- */ resolveDependencies() {
18787
+ * Resolve dependencies and build dependency graph
18788
+ */ resolveDependencies() {
18136
18789
  // Build dependents map
18137
18790
  for (const entry of this.entries.values()) for (const dep of entry.dependencies) {
18138
18791
  const depEntry = this.entries.get(dep);
18139
- depEntry && (depEntry.dependents.includes(entry.id) || depEntry.dependents.push(entry.id));
18792
+ var _context;
18793
+ depEntry && (_includesInstanceProperty(_context = depEntry.dependents).call(_context, entry.id) || depEntry.dependents.push(entry.id));
18140
18794
  }
18141
18795
  }
18142
18796
  /**
18143
- * Validate all themes
18144
- */ validate() {
18797
+ * Validate all themes
18798
+ */ validate() {
18145
18799
  const errors = [];
18146
18800
  // Check for circular dependencies
18147
18801
  for (const themeId of this.entries.keys()) try {
@@ -18157,8 +18811,8 @@ class ThemeRegistry {
18157
18811
  };
18158
18812
  }
18159
18813
  /**
18160
- * Clear registry
18161
- */ clear() {
18814
+ * Clear registry
18815
+ */ clear() {
18162
18816
  this.entries.clear(), this.config = null, this.initialized = !1;
18163
18817
  }
18164
18818
  }
@@ -18189,8 +18843,8 @@ class ThemeRegistry {
18189
18843
  };
18190
18844
  }
18191
18845
  /**
18192
- * Get cached CSS theme
18193
- */ getCSS(themeId) {
18846
+ * Get cached CSS theme
18847
+ */ getCSS(themeId) {
18194
18848
  if (!this.config.enabled) return null;
18195
18849
  const entry = this.cache.get(themeId);
18196
18850
  return entry && "css" === entry.type ?
@@ -18201,8 +18855,8 @@ class ThemeRegistry {
18201
18855
  this.updateAccessOrder(themeId), entry) : null;
18202
18856
  }
18203
18857
  /**
18204
- * Get cached JS theme
18205
- */ getJS(themeId) {
18858
+ * Get cached JS theme
18859
+ */ getJS(themeId) {
18206
18860
  if (!this.config.enabled) return null;
18207
18861
  const entry = this.cache.get(themeId);
18208
18862
  return entry && "js" === entry.type ?
@@ -18213,8 +18867,8 @@ class ThemeRegistry {
18213
18867
  this.updateAccessOrder(themeId), entry) : null;
18214
18868
  }
18215
18869
  /**
18216
- * Set CSS theme cache entry
18217
- */ setCSS(themeId, entry) {
18870
+ * Set CSS theme cache entry
18871
+ */ setCSS(themeId, entry) {
18218
18872
  if (!this.config.enabled) return;
18219
18873
  // Evict if needed
18220
18874
  this.evictIfNeeded();
@@ -18230,8 +18884,8 @@ class ThemeRegistry {
18230
18884
  this.cache.set(themeId, cacheEntry), this.updateAccessOrder(themeId);
18231
18885
  }
18232
18886
  /**
18233
- * Set JS theme cache entry
18234
- */ setJS(themeId, theme) {
18887
+ * Set JS theme cache entry
18888
+ */ setJS(themeId, theme) {
18235
18889
  if (!this.config.enabled) return;
18236
18890
  // Evict if needed
18237
18891
  this.evictIfNeeded();
@@ -18245,8 +18899,8 @@ class ThemeRegistry {
18245
18899
  this.cache.set(themeId, cacheEntry), this.updateAccessOrder(themeId);
18246
18900
  }
18247
18901
  /**
18248
- * Check if theme is cached
18249
- */ has(themeId) {
18902
+ * Check if theme is cached
18903
+ */ has(themeId) {
18250
18904
  if (!this.config.enabled) return !1;
18251
18905
  const entry = this.cache.get(themeId);
18252
18906
  return !!entry && (
@@ -18255,19 +18909,19 @@ class ThemeRegistry {
18255
18909
  this.removeFromAccessOrder(themeId), !1));
18256
18910
  }
18257
18911
  /**
18258
- * Remove theme from cache
18259
- */ delete(themeId) {
18912
+ * Remove theme from cache
18913
+ */ delete(themeId) {
18260
18914
  const deleted = this.cache.delete(themeId);
18261
18915
  return deleted && this.removeFromAccessOrder(themeId), deleted;
18262
18916
  }
18263
18917
  /**
18264
- * Clear all cache
18265
- */ clear() {
18918
+ * Clear all cache
18919
+ */ clear() {
18266
18920
  this.cache.clear(), this.accessOrder = [];
18267
18921
  }
18268
18922
  /**
18269
- * Get cache statistics
18270
- */ getStats() {
18923
+ * Get cache statistics
18924
+ */ getStats() {
18271
18925
  let cssThemes = 0, jsThemes = 0;
18272
18926
  for (const entry of this.cache.values()) "css" === entry.type ? cssThemes++ : jsThemes++;
18273
18927
  return {
@@ -18278,19 +18932,19 @@ class ThemeRegistry {
18278
18932
  };
18279
18933
  }
18280
18934
  /**
18281
- * Update access order for LRU
18282
- */ updateAccessOrder(themeId) {
18935
+ * Update access order for LRU
18936
+ */ updateAccessOrder(themeId) {
18283
18937
  this.removeFromAccessOrder(themeId), this.accessOrder.push(themeId);
18284
18938
  }
18285
18939
  /**
18286
- * Remove from access order
18287
- */ removeFromAccessOrder(themeId) {
18940
+ * Remove from access order
18941
+ */ removeFromAccessOrder(themeId) {
18288
18942
  const index = this.accessOrder.indexOf(themeId);
18289
18943
  index > -1 && this.accessOrder.splice(index, 1);
18290
18944
  }
18291
18945
  /**
18292
- * Evict least recently used entries if cache is full
18293
- */ evictIfNeeded() {
18946
+ * Evict least recently used entries if cache is full
18947
+ */ evictIfNeeded() {
18294
18948
  if (!(this.cache.size < this.config.maxSize))
18295
18949
  // Evict least recently used (first in access order)
18296
18950
  for (;this.cache.size >= this.config.maxSize && this.accessOrder.length > 0; ) {
@@ -18418,8 +19072,8 @@ function isJSTheme(theme) {
18418
19072
  * Validates themes for correctness and accessibility
18419
19073
  */ class ThemeValidator {
18420
19074
  /**
18421
- * Validate theme
18422
- */
19075
+ * Validate theme
19076
+ */
18423
19077
  validate(theme, metadata) {
18424
19078
  const errors = [], warnings = [], a11yIssues = [], paletteResult = this.validatePalette(theme.palette, metadata);
18425
19079
  errors.push(...paletteResult.errors), warnings.push(...paletteResult.warnings),
@@ -18453,8 +19107,8 @@ function isJSTheme(theme) {
18453
19107
  };
18454
19108
  }
18455
19109
  /**
18456
- * Validate palette
18457
- */ validatePalette(palette, metadata) {
19110
+ * Validate palette
19111
+ */ validatePalette(palette, metadata) {
18458
19112
  const errors = [], warnings = [], a11yIssues = [], contrastTarget = metadata?.a11y?.contrastTarget || 4.5;
18459
19113
  // Validate primary color contrast
18460
19114
  if (palette.primary) {
@@ -18498,8 +19152,8 @@ function isJSTheme(theme) {
18498
19152
  };
18499
19153
  }
18500
19154
  /**
18501
- * Validate typography
18502
- */ validateTypography(typography) {
19155
+ * Validate typography
19156
+ */ validateTypography(typography) {
18503
19157
  const errors = [], warnings = [];
18504
19158
  return typography.fontFamily && "string" == typeof typography.fontFamily || errors.push("Typography must have a fontFamily"),
18505
19159
  (!typography.fontSize || "number" != typeof typography.fontSize || typography.fontSize <= 0) && errors.push("Typography must have a valid fontSize"),
@@ -18513,8 +19167,8 @@ function isJSTheme(theme) {
18513
19167
  };
18514
19168
  }
18515
19169
  /**
18516
- * Validate spacing
18517
- */ validateSpacing(spacing) {
19170
+ * Validate spacing
19171
+ */ validateSpacing(spacing) {
18518
19172
  const errors = [];
18519
19173
  if ("function" != typeof spacing) errors.push("Spacing must be a function"); else
18520
19174
  // Test spacing function
@@ -18531,8 +19185,8 @@ function isJSTheme(theme) {
18531
19185
  };
18532
19186
  }
18533
19187
  /**
18534
- * Validate breakpoints
18535
- */ validateBreakpoints(breakpoints) {
19188
+ * Validate breakpoints
19189
+ */ validateBreakpoints(breakpoints) {
18536
19190
  const errors = [], warnings = [];
18537
19191
  if (breakpoints.values) {
18538
19192
  const required = [ "xs", "sm", "md", "lg", "xl" ];
@@ -18555,8 +19209,8 @@ function isJSTheme(theme) {
18555
19209
  };
18556
19210
  }
18557
19211
  /**
18558
- * Check color contrast ratio
18559
- */ checkContrast(foreground, background) {
19212
+ * Check color contrast ratio
19213
+ */ checkContrast(foreground, background) {
18560
19214
  try {
18561
19215
  return getContrastRatio(foreground, background);
18562
19216
  } catch {
@@ -18564,15 +19218,15 @@ function isJSTheme(theme) {
18564
19218
  }
18565
19219
  }
18566
19220
  /**
18567
- * Check if color is valid
18568
- */ isValidColor(color) {
19221
+ * Check if color is valid
19222
+ */ isValidColor(color) {
18569
19223
  // Hex
18570
19224
  return !!/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(color) || !!/^rgba?\(/.test(color) || !!/^hsla?\(/.test(color);
18571
19225
  // RGB/RGBA
18572
19226
  }
18573
19227
  /**
18574
- * Validate transitions
18575
- */ validateTransitions(transitions) {
19228
+ * Validate transitions
19229
+ */ validateTransitions(transitions) {
18576
19230
  const errors = [], warnings = [], a11yIssues = [];
18577
19231
  if (!transitions) return errors.push("Transitions configuration is required"), {
18578
19232
  valid: !1,
@@ -18604,8 +19258,8 @@ function isJSTheme(theme) {
18604
19258
  };
18605
19259
  }
18606
19260
  /**
18607
- * Validate z-index
18608
- */ validateZIndex(zIndex) {
19261
+ * Validate z-index
19262
+ */ validateZIndex(zIndex) {
18609
19263
  const errors = [], warnings = [], a11yIssues = [];
18610
19264
  if (!zIndex) return errors.push("Z-index configuration is required"), {
18611
19265
  valid: !1,
@@ -18616,7 +19270,9 @@ function isJSTheme(theme) {
18616
19270
  const numericEntries = Object.entries(zIndex).filter((([, value]) => "number" == typeof value));
18617
19271
  for (const [key, value] of Object.entries(zIndex)) void 0 !== value && ("number" != typeof value ? errors.push(`Z-index ${key} must be a number, got ${typeof value}`) : value < 0 ? errors.push(`Z-index ${key} must be non-negative, got ${value}`) : value > 1e4 && warnings.push(`Z-index ${key} (${value}) exceeds recommended maximum (10000)`));
18618
19272
  for (let i = 0; i < numericEntries.length; i++) for (let j = i + 1; j < numericEntries.length; j++) {
18619
- const [keyA, valueA] = numericEntries[i], [keyB, valueB] = numericEntries[j], diff = Math.abs(valueA - valueB);
19273
+ const entryA = numericEntries[i], entryB = numericEntries[j];
19274
+ if (!entryA || !entryB) continue;
19275
+ const [keyA, valueA] = entryA, [keyB, valueB] = entryB, diff = Math.abs(valueA - valueB);
18620
19276
  diff < 10 && diff > 0 && warnings.push(`Z-index values ${keyA} (${valueA}) and ${keyB} (${valueB}) are very close, potential layering conflicts`);
18621
19277
  }
18622
19278
  return {
@@ -18627,8 +19283,8 @@ function isJSTheme(theme) {
18627
19283
  };
18628
19284
  }
18629
19285
  /**
18630
- * Validate border radius
18631
- */ validateBorderRadius(borderRadius) {
19286
+ * Validate border radius
19287
+ */ validateBorderRadius(borderRadius) {
18632
19288
  const errors = [], warnings = [], a11yIssues = [];
18633
19289
  if (!borderRadius) return errors.push("Border radius configuration is required"),
18634
19290
  {
@@ -18674,8 +19330,8 @@ function isJSTheme(theme) {
18674
19330
  };
18675
19331
  }
18676
19332
  /**
18677
- * Validate custom properties
18678
- */ validateCustom(custom) {
19333
+ * Validate custom properties
19334
+ */ validateCustom(custom) {
18679
19335
  const errors = [], warnings = [], a11yIssues = [];
18680
19336
  if (!custom || "object" != typeof custom) return {
18681
19337
  valid: !0,
@@ -18732,7 +19388,7 @@ function isJSTheme(theme) {
18732
19388
  * Convert a nested object to flat CSS variable declarations
18733
19389
  */ function flattenObject(obj, prefix = "", result = {}) {
18734
19390
  for (const key in obj) {
18735
- if (!obj.hasOwnProperty(key)) continue;
19391
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
18736
19392
  const value = obj[key], newKey = prefix ? `${prefix}-${key}` : key;
18737
19393
  if (value && "object" == typeof value && !Array.isArray(value)) {
18738
19394
  // Skip special objects like functions
@@ -19232,28 +19888,28 @@ function generateCSSVariables(theme, options = {}) {
19232
19888
  };
19233
19889
  }
19234
19890
  /**
19235
- * Initialize engine with theme registry
19236
- */ async initialize() {
19891
+ * Initialize engine with theme registry
19892
+ */ async initialize() {
19237
19893
  await this.registry.initialize();
19238
19894
  }
19239
19895
  /**
19240
- * Get current theme ID
19241
- */ getCurrentTheme() {
19896
+ * Get current theme ID
19897
+ */ getCurrentTheme() {
19242
19898
  return this.currentTheme;
19243
19899
  }
19244
19900
  /**
19245
- * Get active theme object
19246
- */ getActiveTheme() {
19901
+ * Get active theme object
19902
+ */ getActiveTheme() {
19247
19903
  return this.activeTheme;
19248
19904
  }
19249
19905
  /**
19250
- * Check if theme is loaded
19251
- */ isThemeLoaded(themeId) {
19906
+ * Check if theme is loaded
19907
+ */ isThemeLoaded(themeId) {
19252
19908
  return this.loadedThemes.has(themeId);
19253
19909
  }
19254
19910
  /**
19255
- * Load and apply theme
19256
- */ async setTheme(themeId, options = {}) {
19911
+ * Load and apply theme
19912
+ */ async setTheme(themeId, options = {}) {
19257
19913
  const {force: force = !1, preload: preload = !1, removePrevious: removePrevious = !0, fallbackOnError: fallbackOnError = !0} = options;
19258
19914
  // Handle Theme object directly
19259
19915
  if ("string" != typeof themeId) {
@@ -19318,16 +19974,16 @@ function generateCSSVariables(theme, options = {}) {
19318
19974
  }
19319
19975
  }
19320
19976
  /**
19321
- * Load theme (CSS or JS)
19322
- */ async loadTheme(themeId, options) {
19977
+ * Load theme (CSS or JS)
19978
+ */ async loadTheme(themeId, options) {
19323
19979
  const definition = this.registry.getDefinition(themeId);
19324
19980
  if (!definition) throw new Error(`Theme definition not found: ${themeId}`);
19325
19981
  "css" === definition.type ? await this.loadCSSTheme(themeId, definition, options) : await this.loadJSTheme(themeId, definition),
19326
19982
  this.loadedThemes.add(themeId), this.emitLoad(themeId);
19327
19983
  }
19328
19984
  /**
19329
- * Load CSS theme
19330
- */ async loadCSSTheme(themeId, definition, options) {
19985
+ * Load CSS theme
19986
+ */ async loadCSSTheme(themeId, definition, options) {
19331
19987
  // Check cache
19332
19988
  if (this.config.enableCache) {
19333
19989
  const cached = this.cache.getCSS(themeId);
@@ -19369,8 +20025,8 @@ function generateCSSVariables(theme, options = {}) {
19369
20025
  }
19370
20026
  }
19371
20027
  /**
19372
- * Load JS theme
19373
- */ async loadJSTheme(themeId, definition) {
20028
+ * Load JS theme
20029
+ */ async loadJSTheme(themeId, definition) {
19374
20030
  if ("js" !== definition.type) return;
19375
20031
  // Check cache
19376
20032
  if (this.config.enableCache) {
@@ -19394,8 +20050,8 @@ function generateCSSVariables(theme, options = {}) {
19394
20050
  this.config.enableCache && this.cache.setJS(themeId, theme), this.registry.setTheme(themeId, theme);
19395
20051
  }
19396
20052
  /**
19397
- * Apply theme (set as active)
19398
- */ async applyTheme(themeId, removePrevious) {
20053
+ * Apply theme (set as active)
20054
+ */ async applyTheme(themeId, removePrevious) {
19399
20055
  const previousTheme = this.currentTheme;
19400
20056
  // Remove previous theme if requested
19401
20057
  removePrevious && previousTheme && previousTheme !== themeId && await this.removeTheme(previousTheme);
@@ -19414,15 +20070,15 @@ function generateCSSVariables(theme, options = {}) {
19414
20070
  });
19415
20071
  }
19416
20072
  /**
19417
- * Apply CSS theme
19418
- */ async applyCSSTheme(themeId) {
20073
+ * Apply CSS theme
20074
+ */ async applyCSSTheme(themeId) {
19419
20075
  if (isServer()) return;
19420
20076
  const definition = this.registry.getDefinition(themeId), className = definition?.class || themeId;
19421
20077
  applyThemeAttributes(this.config.dataAttribute, className), this.activeTheme = null;
19422
20078
  }
19423
20079
  /**
19424
- * Apply JS theme
19425
- */ async applyJSTheme(theme, removePrevious) {
20080
+ * Apply JS theme
20081
+ */ async applyJSTheme(theme, removePrevious) {
19426
20082
  if (isServer()) return;
19427
20083
  // Remove previous JS theme CSS
19428
20084
  removePrevious && removeInjectedCSS(this.config.styleId), injectCSS(generateCSSVariables(theme, {
@@ -19436,8 +20092,8 @@ function generateCSSVariables(theme, options = {}) {
19436
20092
  this.currentTheme = themeId;
19437
20093
  }
19438
20094
  /**
19439
- * Remove theme
19440
- */ async removeTheme(themeId) {
20095
+ * Remove theme
20096
+ */ async removeTheme(themeId) {
19441
20097
  const definition = this.registry.getDefinition(themeId);
19442
20098
  definition && ("css" === definition.type ? isBrowser() && (themeNameOrLinkId => {
19443
20099
  if (isServer()) return;
@@ -19451,35 +20107,35 @@ function generateCSSVariables(theme, options = {}) {
19451
20107
  })(getThemeLinkId(themeId)) : isBrowser() && removeInjectedCSS(this.config.styleId));
19452
20108
  }
19453
20109
  /**
19454
- * Preload theme
19455
- */ async preloadTheme(themeId) {
20110
+ * Preload theme
20111
+ */ async preloadTheme(themeId) {
19456
20112
  await this.setTheme(themeId, {
19457
20113
  preload: !0
19458
20114
  });
19459
20115
  }
19460
20116
  /**
19461
- * Get registry
19462
- */ getRegistry() {
20117
+ * Get registry
20118
+ */ getRegistry() {
19463
20119
  return this.registry;
19464
20120
  }
19465
20121
  /**
19466
- * Get cache
19467
- */ getCache() {
20122
+ * Get cache
20123
+ */ getCache() {
19468
20124
  return this.cache;
19469
20125
  }
19470
20126
  /**
19471
- * Clear failed theme tracking (allows retry of previously failed themes)
19472
- */ clearFailedThemes() {
20127
+ * Clear failed theme tracking (allows retry of previously failed themes)
20128
+ */ clearFailedThemes() {
19473
20129
  this.failedThemes.clear();
19474
20130
  }
19475
20131
  /**
19476
- * Clear specific failed theme (allows retry of a specific theme)
19477
- */ clearFailedTheme(themeId) {
20132
+ * Clear specific failed theme (allows retry of a specific theme)
20133
+ */ clearFailedTheme(themeId) {
19478
20134
  this.failedThemes.delete(themeId);
19479
20135
  }
19480
20136
  /**
19481
- * Check if theme has failed to load
19482
- */ hasFailedTheme(themeId) {
20137
+ * Check if theme has failed to load
20138
+ */ hasFailedTheme(themeId) {
19483
20139
  return this.failedThemes.has(themeId);
19484
20140
  }
19485
20141
  on(event, listener) {
@@ -19489,8 +20145,8 @@ function generateCSSVariables(theme, options = {}) {
19489
20145
  "change" === event ? this.changeListeners = this.changeListeners.filter((l => l !== listener)) : "load" === event ? this.loadListeners = this.loadListeners.filter((l => l !== listener)) : "error" === event ? this.errorListeners = this.errorListeners.filter((l => l !== listener)) : "revert" === event && (this.revertListeners = this.revertListeners.filter((l => l !== listener)));
19490
20146
  }
19491
20147
  /**
19492
- * Emit change event
19493
- */ emitChange(event) {
20148
+ * Emit change event
20149
+ */ emitChange(event) {
19494
20150
  for (const listener of this.changeListeners) try {
19495
20151
  listener(event);
19496
20152
  } catch (error) {
@@ -19500,8 +20156,8 @@ function generateCSSVariables(theme, options = {}) {
19500
20156
  }
19501
20157
  }
19502
20158
  /**
19503
- * Emit load event
19504
- */ emitLoad(themeId) {
20159
+ * Emit load event
20160
+ */ emitLoad(themeId) {
19505
20161
  for (const listener of this.loadListeners) try {
19506
20162
  listener(themeId);
19507
20163
  } catch (error) {
@@ -19511,9 +20167,9 @@ function generateCSSVariables(theme, options = {}) {
19511
20167
  }
19512
20168
  }
19513
20169
  /**
19514
- * Emit error event
19515
- * Emits error to listeners (error emission is controlled at call site)
19516
- */ emitError(error, themeId) {
20170
+ * Emit error event
20171
+ * Emits error to listeners (error emission is controlled at call site)
20172
+ */ emitError(error, themeId) {
19517
20173
  for (const listener of this.errorListeners) try {
19518
20174
  listener(error, themeId);
19519
20175
  } catch (err) {
@@ -19524,8 +20180,8 @@ function generateCSSVariables(theme, options = {}) {
19524
20180
  }
19525
20181
  }
19526
20182
  /**
19527
- * Emit revert event
19528
- */ emitRevert(event) {
20183
+ * Emit revert event
20184
+ */ emitRevert(event) {
19529
20185
  for (const listener of this.revertListeners) try {
19530
20186
  listener(event);
19531
20187
  } catch (error) {
@@ -19549,15 +20205,24 @@ function generateCSSVariables(theme, options = {}) {
19549
20205
  */
19550
20206
  /**
19551
20207
  * RTL-aware locales (languages that use RTL)
19552
- */ const RTL_LOCALES = new Set([ "ar", // Arabic
19553
- "he", // Hebrew
19554
- "fa", // Persian/Farsi
19555
- "ur", // Urdu
19556
- "yi", // Yiddish
19557
- "ji", // Yiddish (alternative)
19558
- "iw", // Hebrew (old code)
19559
- "ku", // Kurdish
19560
- "ps", // Pashto
20208
+ */ const RTL_LOCALES = new Set([ "ar",
20209
+ // Arabic
20210
+ "he",
20211
+ // Hebrew
20212
+ "fa",
20213
+ // Persian/Farsi
20214
+ "ur",
20215
+ // Urdu
20216
+ "yi",
20217
+ // Yiddish
20218
+ "ji",
20219
+ // Yiddish (alternative)
20220
+ "iw",
20221
+ // Hebrew (old code)
20222
+ "ku",
20223
+ // Kurdish
20224
+ "ps",
20225
+ // Pashto
19561
20226
  "sd" ]), DEFAULT_RTL_CONFIG = {
19562
20227
  enabled: !1,
19563
20228
  direction: "ltr",
@@ -19589,66 +20254,66 @@ class RTLManager {
19589
20254
  this.config.enabled && "undefined" != typeof document && this.applyDirection(this.config.direction);
19590
20255
  }
19591
20256
  /**
19592
- * Detect locale from browser
19593
- */ detectLocale() {
20257
+ * Detect locale from browser
20258
+ */ detectLocale() {
19594
20259
  if ("undefined" == typeof navigator) return "en";
19595
20260
  // Try navigator.language first
19596
- const lang = navigator.language || navigator.languages && navigator.languages[0] || "en";
19597
- return String(lang).split("-")[0].toLowerCase();
20261
+ const lang = navigator.language || navigator.languages && navigator.languages[0] || "en", langParts = String(lang).split("-");
20262
+ return langParts[0] ? langParts[0].toLowerCase() : "en";
19598
20263
  }
19599
20264
  /**
19600
- * Check if locale is RTL
19601
- */ isRTLLocale(locale) {
20265
+ * Check if locale is RTL
20266
+ */ isRTLLocale(locale) {
19602
20267
  return RTL_LOCALES.has(locale.toLowerCase());
19603
20268
  }
19604
20269
  /**
19605
- * Get current direction
19606
- */ getDirection() {
20270
+ * Get current direction
20271
+ */ getDirection() {
19607
20272
  return this.config.direction;
19608
20273
  }
19609
20274
  /**
19610
- * Check if RTL is enabled
19611
- */ isEnabled() {
20275
+ * Check if RTL is enabled
20276
+ */ isEnabled() {
19612
20277
  return this.config.enabled;
19613
20278
  }
19614
20279
  /**
19615
- * Set direction
19616
- */ setDirection(direction) {
20280
+ * Set direction
20281
+ */ setDirection(direction) {
19617
20282
  this.config.direction !== direction && (this.config.direction = direction, this.applyDirection(direction),
19618
20283
  this.notifyListeners(direction));
19619
20284
  }
19620
20285
  /**
19621
- * Toggle direction
19622
- */ toggleDirection() {
20286
+ * Toggle direction
20287
+ */ toggleDirection() {
19623
20288
  const newDirection = "ltr" === this.config.direction ? "rtl" : "ltr";
19624
20289
  return this.setDirection(newDirection), newDirection;
19625
20290
  }
19626
20291
  /**
19627
- * Enable RTL
19628
- */ enable() {
20292
+ * Enable RTL
20293
+ */ enable() {
19629
20294
  this.config.enabled || (this.config.enabled = !0, this.applyDirection(this.config.direction));
19630
20295
  }
19631
20296
  /**
19632
- * Disable RTL
19633
- */ disable() {
20297
+ * Disable RTL
20298
+ */ disable() {
19634
20299
  this.config.enabled && (this.config.enabled = !1, this.applyDirection("ltr"));
19635
20300
  }
19636
20301
  /**
19637
- * Set locale and auto-adjust direction
19638
- */ setLocale(locale) {
20302
+ * Set locale and auto-adjust direction
20303
+ */ setLocale(locale) {
19639
20304
  if (this.config.locale = locale.toLowerCase(), this.config.autoDetect) {
19640
20305
  const isRTL = this.isRTLLocale(locale);
19641
20306
  this.setDirection(isRTL ? "rtl" : "ltr");
19642
20307
  }
19643
20308
  }
19644
20309
  /**
19645
- * Get current locale
19646
- */ getLocale() {
20310
+ * Get current locale
20311
+ */ getLocale() {
19647
20312
  return this.config.locale;
19648
20313
  }
19649
20314
  /**
19650
- * Apply direction to DOM
19651
- */ applyDirection(direction) {
20315
+ * Apply direction to DOM
20316
+ */ applyDirection(direction) {
19652
20317
  if ("undefined" == typeof document) return;
19653
20318
  const html = document.documentElement, body = document.body;
19654
20319
  // Set dir attribute
@@ -19660,16 +20325,16 @@ class RTLManager {
19660
20325
  html.style.setProperty("--atomix-direction", direction), html.style.setProperty("--atomix-text-direction", direction);
19661
20326
  }
19662
20327
  /**
19663
- * Add direction change listener
19664
- */ onDirectionChange(callback) {
20328
+ * Add direction change listener
20329
+ */ onDirectionChange(callback) {
19665
20330
  // Return unsubscribe function
19666
20331
  return this.listeners.add(callback), () => {
19667
20332
  this.listeners.delete(callback);
19668
20333
  };
19669
20334
  }
19670
20335
  /**
19671
- * Notify listeners of direction change
19672
- */ notifyListeners(direction) {
20336
+ * Notify listeners of direction change
20337
+ */ notifyListeners(direction) {
19673
20338
  this.listeners.forEach((callback => {
19674
20339
  try {
19675
20340
  callback(direction);
@@ -19681,17 +20346,17 @@ class RTLManager {
19681
20346
  }));
19682
20347
  }
19683
20348
  /**
19684
- * Get RTL-aware value
19685
- *
19686
- * Returns different values based on direction
19687
- */ getValue(ltrValue, rtlValue) {
20349
+ * Get RTL-aware value
20350
+ *
20351
+ * Returns different values based on direction
20352
+ */ getValue(ltrValue, rtlValue) {
19688
20353
  return "rtl" === this.config.direction ? rtlValue : ltrValue;
19689
20354
  }
19690
20355
  /**
19691
- * Get RTL-aware CSS property
19692
- *
19693
- * Returns appropriate CSS property based on direction
19694
- */ getCSSProperty(property) {
20356
+ * Get RTL-aware CSS property
20357
+ *
20358
+ * Returns appropriate CSS property based on direction
20359
+ */ getCSSProperty(property) {
19695
20360
  return "rtl" === this.config.direction && {
19696
20361
  left: "right",
19697
20362
  right: "left",
@@ -19708,8 +20373,8 @@ class RTLManager {
19708
20373
  }[property] || property;
19709
20374
  }
19710
20375
  /**
19711
- * Destroy RTL manager
19712
- */ destroy() {
20376
+ * Destroy RTL manager
20377
+ */ destroy() {
19713
20378
  if (this.listeners.clear(), "undefined" != typeof document) {
19714
20379
  const html = document.documentElement, body = document.body;
19715
20380
  html.removeAttribute("dir"), html.removeAttribute(this.config.dataAttribute), body?.removeAttribute("dir"),
@@ -19718,14 +20383,6 @@ class RTLManager {
19718
20383
  }
19719
20384
  }
19720
20385
 
19721
- /**
19722
- * Theme Manager
19723
- *
19724
- * Core theme management class for the Atomix Design System.
19725
- * Rewritten to use the new ThemeEngine architecture.
19726
- * Handles theme loading, switching, persistence, and events.
19727
- * Supports both CSS-based themes and JavaScript-based themes.
19728
- */
19729
20386
  /**
19730
20387
  * Default configuration values
19731
20388
  */ const DEFAULT_CONFIG = {
@@ -19755,10 +20412,10 @@ class RTLManager {
19755
20412
  * ```
19756
20413
  */ class ThemeManager {
19757
20414
  /**
19758
- * Create a new ThemeManager instance
19759
- *
19760
- * @param config - Theme manager configuration
19761
- */
20415
+ * Create a new ThemeManager instance
20416
+ *
20417
+ * @param config - Theme manager configuration
20418
+ */
19762
20419
  constructor(config) {
19763
20420
  this.currentTheme = null, this.activeTheme = null, this.eventListeners = {
19764
20421
  themeChange: [],
@@ -19830,8 +20487,8 @@ class RTLManager {
19830
20487
  this.initialize();
19831
20488
  }
19832
20489
  /**
19833
- * Initialize the theme manager
19834
- */ initialize() {
20490
+ * Initialize the theme manager
20491
+ */ initialize() {
19835
20492
  this.initialized || isServer() || (
19836
20493
  // Initialize engine
19837
20494
  this.engine.initialize().then((() => {
@@ -19869,8 +20526,9 @@ class RTLManager {
19869
20526
  removePrevious: !1,
19870
20527
  fallbackOnError: !0
19871
20528
  }).catch((error => {
20529
+ var _context;
19872
20530
  // Only log error once, don't spam console
19873
- error instanceof Error && !error.message.includes("previously failed") && this.logger.warn(`Failed to load default theme "${themeId}"`, {
20531
+ error instanceof Error && !_includesInstanceProperty(_context = error.message).call(_context, "previously failed") && this.logger.warn(`Failed to load default theme "${themeId}"`, {
19874
20532
  themeId: themeId,
19875
20533
  error: error.message
19876
20534
  });
@@ -19884,8 +20542,8 @@ class RTLManager {
19884
20542
  })), this.initialized = !0);
19885
20543
  }
19886
20544
  /**
19887
- * Get default theme
19888
- */ getDefaultTheme() {
20545
+ * Get default theme
20546
+ */ getDefaultTheme() {
19889
20547
  // Check storage first
19890
20548
  if (this.config.enablePersistence && this.storageAdapter.isAvailable()) {
19891
20549
  const stored = this.storageAdapter.getItem(this.config.storageKey);
@@ -19900,8 +20558,8 @@ class RTLManager {
19900
20558
  return this.config.defaultTheme || null;
19901
20559
  }
19902
20560
  /**
19903
- * Set theme
19904
- */ async setTheme(theme, options) {
20561
+ * Set theme
20562
+ */ async setTheme(theme, options) {
19905
20563
  // Persist to storage
19906
20564
  if (await this.engine.setTheme(theme, options), this.config.enablePersistence && this.storageAdapter.isAvailable()) {
19907
20565
  const themeId = "string" == typeof theme ? theme : theme.name || "js-theme";
@@ -19911,39 +20569,39 @@ class RTLManager {
19911
20569
  this.config.onThemeChange && this.config.onThemeChange(theme);
19912
20570
  }
19913
20571
  /**
19914
- * Get current theme
19915
- */ getTheme() {
20572
+ * Get current theme
20573
+ */ getTheme() {
19916
20574
  return this.currentTheme || ("string" == typeof this.config.defaultTheme ? this.config.defaultTheme : "");
19917
20575
  }
19918
20576
  /**
19919
- * Get active theme object (for JS themes)
19920
- */ getActiveTheme() {
20577
+ * Get active theme object (for JS themes)
20578
+ */ getActiveTheme() {
19921
20579
  return this.activeTheme || this.engine.getActiveTheme();
19922
20580
  }
19923
20581
  /**
19924
- * Get available themes
19925
- */ getAvailableThemes() {
20582
+ * Get available themes
20583
+ */ getAvailableThemes() {
19926
20584
  return this.engine.getRegistry().getAllMetadata();
19927
20585
  }
19928
20586
  /**
19929
- * Check if theme is loaded
19930
- */ isThemeLoaded(themeName) {
20587
+ * Check if theme is loaded
20588
+ */ isThemeLoaded(themeName) {
19931
20589
  return this.engine.isThemeLoaded(themeName);
19932
20590
  }
19933
20591
  /**
19934
- * Preload theme
19935
- */ async preloadTheme(themeName) {
20592
+ * Preload theme
20593
+ */ async preloadTheme(themeName) {
19936
20594
  await this.engine.preloadTheme(themeName);
19937
20595
  }
19938
- on(event, callback) {
20596
+ /* eslint-enable no-dupe-class-members */ on(event, callback) {
19939
20597
  "themeChange" === event ? this.eventListeners.themeChange.push(callback) : "themeLoad" === event ? this.eventListeners.themeLoad.push(callback) : "themeError" === event && this.eventListeners.themeError.push(callback);
19940
20598
  }
19941
- off(event, callback) {
20599
+ /* eslint-enable no-dupe-class-members */ off(event, callback) {
19942
20600
  "themeChange" === event ? this.eventListeners.themeChange = this.eventListeners.themeChange.filter((cb => cb !== callback)) : "themeLoad" === event ? this.eventListeners.themeLoad = this.eventListeners.themeLoad.filter((cb => cb !== callback)) : "themeError" === event && (this.eventListeners.themeError = this.eventListeners.themeError.filter((cb => cb !== callback)));
19943
20601
  }
19944
20602
  /**
19945
- * Emit theme change event
19946
- */ emitThemeChange(event) {
20603
+ * Emit theme change event
20604
+ */ emitThemeChange(event) {
19947
20605
  for (const callback of this.eventListeners.themeChange) try {
19948
20606
  callback(event);
19949
20607
  } catch (error) {
@@ -19953,8 +20611,8 @@ class RTLManager {
19953
20611
  }
19954
20612
  }
19955
20613
  /**
19956
- * Emit theme load event
19957
- */ emitThemeLoad(themeName) {
20614
+ * Emit theme load event
20615
+ */ emitThemeLoad(themeName) {
19958
20616
  for (const callback of this.eventListeners.themeLoad) try {
19959
20617
  callback(themeName);
19960
20618
  } catch (error) {
@@ -19964,8 +20622,8 @@ class RTLManager {
19964
20622
  }
19965
20623
  }
19966
20624
  /**
19967
- * Emit theme error event
19968
- */ emitThemeError(error, themeName) {
20625
+ * Emit theme error event
20626
+ */ emitThemeError(error, themeName) {
19969
20627
  if (error instanceof ThemeError || new ThemeError(error.message, ThemeErrorCode.THEME_LOAD_FAILED, {
19970
20628
  themeName: themeName,
19971
20629
  originalError: error.message
@@ -19985,28 +20643,28 @@ class RTLManager {
19985
20643
  }
19986
20644
  }
19987
20645
  /**
19988
- * Get engine instance (for advanced usage)
19989
- */ getEngine() {
20646
+ * Get engine instance (for advanced usage)
20647
+ */ getEngine() {
19990
20648
  return this.engine;
19991
20649
  }
19992
20650
  /**
19993
- * Get RTL manager
19994
- */ getRTLManager() {
20651
+ * Get RTL manager
20652
+ */ getRTLManager() {
19995
20653
  return this.rtlManager;
19996
20654
  }
19997
20655
  /**
19998
- * Set RTL direction
19999
- */ setDirection(direction) {
20656
+ * Set RTL direction
20657
+ */ setDirection(direction) {
20000
20658
  this.rtlManager?.setDirection(direction);
20001
20659
  }
20002
20660
  /**
20003
- * Get current direction
20004
- */ getDirection() {
20661
+ * Get current direction
20662
+ */ getDirection() {
20005
20663
  return this.rtlManager?.getDirection() || "ltr";
20006
20664
  }
20007
20665
  /**
20008
- * Destroy theme manager
20009
- */ destroy() {
20666
+ * Destroy theme manager
20667
+ */ destroy() {
20010
20668
  // Remove all listeners
20011
20669
  this.eventListeners = {
20012
20670
  themeChange: [],
@@ -20027,7 +20685,7 @@ class RTLManager {
20027
20685
  */
20028
20686
  /**
20029
20687
  * Theme context with default values
20030
- */ const ThemeContext = createContext(null);
20688
+ */ const ThemeContext = createContext(null);
20031
20689
 
20032
20690
  ThemeContext.displayName = "ThemeContext";
20033
20691
 
@@ -20403,7 +21061,7 @@ const ThemeProvider = ({children: children, defaultTheme: defaultTheme, themes:
20403
21061
  ...target
20404
21062
  };
20405
21063
  for (const source of sources) if (source) for (const key in source) {
20406
- if (!source.hasOwnProperty(key)) continue;
21064
+ if (!Object.prototype.hasOwnProperty.call(source, key)) continue;
20407
21065
  const targetValue = result[key], sourceValue = source[key];
20408
21066
  isObject(targetValue) && isObject(sourceValue) ?
20409
21067
  // Recursively merge objects
@@ -20500,25 +21158,6 @@ const ThemeProvider = ({children: children, defaultTheme: defaultTheme, themes:
20500
21158
  custom: theme.custom
20501
21159
  };
20502
21160
  }
20503
- /**
20504
- * createTheme - Create a theme object with computed values
20505
- *
20506
- * Similar to Material-UI's createTheme, this function accepts theme configuration
20507
- * options and returns a complete theme object with computed values.
20508
- *
20509
- * @example
20510
- * ```typescript
20511
- * const theme = createTheme({
20512
- * palette: {
20513
- * primary: { main: '#7AFFD7' },
20514
- * secondary: { main: '#FF5733' },
20515
- * },
20516
- * typography: {
20517
- * fontFamily: 'Inter, sans-serif',
20518
- * },
20519
- * });
20520
- * ```
20521
- */
20522
21161
  // ============================================================================
20523
21162
  // Default Theme Values
20524
21163
  // ============================================================================
@@ -20745,7 +21384,7 @@ function createPaletteColor(color) {
20745
21384
  */
20746
21385
  function createTheme(...options) {
20747
21386
  // Merge all options
20748
- const mergedOptions = options.reduce(((acc, option) => deepMerge(acc, option)), {}), palette = {
21387
+ const mergedOptions = _reduceInstanceProperty(options).call(options, ((acc, option) => deepMerge(acc, option)), {}), palette = {
20749
21388
  primary: createPaletteColor(mergedOptions.palette?.primary || DEFAULT_PALETTE.primary),
20750
21389
  secondary: createPaletteColor(mergedOptions.palette?.secondary || DEFAULT_PALETTE.secondary),
20751
21390
  error: createPaletteColor(mergedOptions.palette?.error || DEFAULT_PALETTE.error),
@@ -20921,11 +21560,6 @@ function createThemeFromConfig(config) {
20921
21560
  return config.prefix && config.prefix, theme;
20922
21561
  }
20923
21562
 
20924
- /**
20925
- * Theme Tools for Library Users
20926
- *
20927
- * Developer-friendly utilities for working with Atomix themes
20928
- */
20929
21563
  /**
20930
21564
  * Quick theme creator with sensible defaults
20931
21565
  */ function quickTheme(name, primaryColor, secondaryColor) {
@@ -20951,7 +21585,7 @@ function createThemeFromConfig(config) {
20951
21585
  mode: "dark",
20952
21586
  background: {
20953
21587
  default: "#121212",
20954
- paper: "#1e1e1e"
21588
+ subtle: "#1e1e1e"
20955
21589
  },
20956
21590
  text: {
20957
21591
  primary: "#ffffff",
@@ -21000,7 +21634,8 @@ function createThemeFromConfig(config) {
21000
21634
  /**
21001
21635
  * Check if theme supports dark mode
21002
21636
  */ function supportsDarkMode(theme) {
21003
- return "dark" === theme.palette?.mode || !0 === theme.supportsDarkMode || Boolean(theme.a11y?.modes?.includes("dark"));
21637
+ var _context;
21638
+ return "dark" === theme.palette?.mode || !0 === theme.supportsDarkMode || Boolean((null == (_context = theme.a11y?.modes) ? void 0 : Function.call.bind(_includesInstanceProperty(_context), _context))?.("dark"));
21004
21639
  }
21005
21640
 
21006
21641
  /**
@@ -21033,8 +21668,8 @@ function createThemeFromConfig(config) {
21033
21668
  this.commands = new Map, this.registerDefaultCommands();
21034
21669
  }
21035
21670
  /**
21036
- * Register default commands
21037
- */ registerDefaultCommands() {
21671
+ * Register default commands
21672
+ */ registerDefaultCommands() {
21038
21673
  this.register({
21039
21674
  name: "validate",
21040
21675
  description: "Validate theme configuration",
@@ -21078,13 +21713,13 @@ function createThemeFromConfig(config) {
21078
21713
  });
21079
21714
  }
21080
21715
  /**
21081
- * Register a command
21082
- */ register(command) {
21716
+ * Register a command
21717
+ */ register(command) {
21083
21718
  this.commands.set(command.name, command);
21084
21719
  }
21085
21720
  /**
21086
- * Run CLI with arguments
21087
- */ async run(args) {
21721
+ * Run CLI with arguments
21722
+ */ async run(args) {
21088
21723
  const [commandName, ...commandArgs] = args;
21089
21724
  if (!commandName) return void this.handleHelp([], {});
21090
21725
  const command = this.commands.get(commandName);
@@ -21098,8 +21733,8 @@ function createThemeFromConfig(config) {
21098
21733
  }
21099
21734
  }
21100
21735
  /**
21101
- * Parse command arguments
21102
- */ parseArgs(args) {
21736
+ * Parse command arguments
21737
+ */ parseArgs(args) {
21103
21738
  const parsedArgs = [], options = {};
21104
21739
  for (let i = 0; i < args.length; i++) {
21105
21740
  const arg = args[i];
@@ -21114,8 +21749,8 @@ function createThemeFromConfig(config) {
21114
21749
  };
21115
21750
  }
21116
21751
  /**
21117
- * Handle validate command
21118
- */ handleValidate(args, options) {
21752
+ * Handle validate command
21753
+ */ handleValidate(args, options) {
21119
21754
  try {
21120
21755
  const result = validateConfig(loadThemeConfig());
21121
21756
  result.valid ? result.warnings.length > 0 && result.warnings.forEach((warning => {})) : (result.errors.forEach((error => {})),
@@ -21125,8 +21760,8 @@ function createThemeFromConfig(config) {
21125
21760
  }
21126
21761
  }
21127
21762
  /**
21128
- * Handle list command
21129
- */ handleList(args, options) {
21763
+ * Handle list command
21764
+ */ handleList(args, options) {
21130
21765
  try {
21131
21766
  const themes = loadThemeConfig().themes || {};
21132
21767
  if (0 === Object.keys(themes).length) return;
@@ -21137,8 +21772,8 @@ function createThemeFromConfig(config) {
21137
21772
  }
21138
21773
  }
21139
21774
  /**
21140
- * Handle inspect command
21141
- */ handleInspect(args, options) {
21775
+ * Handle inspect command
21776
+ */ handleInspect(args, options) {
21142
21777
  const themeName = options.theme || args[0];
21143
21778
  themeName || (console.error("Error: Theme name is required"), console.error("Usage: atomix-theme inspect --theme <theme-name>"),
21144
21779
  process.exit(1));
@@ -21151,8 +21786,8 @@ function createThemeFromConfig(config) {
21151
21786
  }
21152
21787
  }
21153
21788
  /**
21154
- * Handle compare command
21155
- */ handleCompare(args, options) {
21789
+ * Handle compare command
21790
+ */ handleCompare(args, options) {
21156
21791
  const theme1 = options.theme1 || args[0], theme2 = options.theme2 || args[1];
21157
21792
  theme1 && theme2 || (console.error("Error: Two theme names are required"), console.error("Usage: atomix-theme compare --theme1 <name1> --theme2 <name2>"),
21158
21793
  process.exit(1));
@@ -21171,8 +21806,8 @@ function createThemeFromConfig(config) {
21171
21806
  }
21172
21807
  }
21173
21808
  /**
21174
- * Handle export command
21175
- */ handleExport(args, options) {
21809
+ * Handle export command
21810
+ */ handleExport(args, options) {
21176
21811
  const themeName = options.theme || args[0], outputPath = options.output || `${themeName}.json`;
21177
21812
  themeName || (console.error("Error: Theme name is required"), console.error("Usage: atomix-theme export --theme <theme-name> [--output <path>]"),
21178
21813
  process.exit(1));
@@ -21185,8 +21820,8 @@ function createThemeFromConfig(config) {
21185
21820
  }
21186
21821
  }
21187
21822
  /**
21188
- * Handle help command
21189
- */ handleHelp(args, options) {
21823
+ * Handle help command
21824
+ */ handleHelp(args, options) {
21190
21825
  for (const [name, command] of this.commands.entries()) if (command.options) for (const [option, description] of Object.entries(command.options)) ;
21191
21826
  }
21192
21827
  }
@@ -21956,9 +22591,12 @@ function createThemeFromConfig(config) {
21956
22591
  ...theme
21957
22592
  }, keys = path.split(".");
21958
22593
  let current = newTheme;
21959
- for (let i = 0; i < keys.length - 1; i++) current[keys[i]] || (current[keys[i]] = {}),
21960
- current = current[keys[i]];
21961
- current[keys[keys.length - 1]] = value, updateTheme(createTheme(newTheme));
22594
+ for (let i = 0; i < keys.length - 1; i++) {
22595
+ const key = keys[i];
22596
+ key && !current[key] && (current[key] = {}), key && (current = current[key]);
22597
+ }
22598
+ const lastKey = keys[keys.length - 1];
22599
+ lastKey && (current[lastKey] = value), updateTheme(createTheme(newTheme));
21962
22600
  }), [ theme, updateTheme ]), exportTheme = useCallback((() => {
21963
22601
  const dataStr = JSON.stringify(theme, null, 2), dataUri = "data:application/json;charset=utf-8," + encodeURIComponent(dataStr), exportFileDefaultName = `${theme.name.toLowerCase().replace(/\s+/g, "-")}-theme.json`, linkElement = document.createElement("a");
21964
22602
  linkElement.setAttribute("href", dataUri), linkElement.setAttribute("download", exportFileDefaultName),
@@ -22124,8 +22762,8 @@ class ThemeApplicator {
22124
22762
  this.appliedVars = new Set, this.root = root;
22125
22763
  }
22126
22764
  /**
22127
- * Apply a complete theme configuration
22128
- */ applyTheme(theme) {
22765
+ * Apply a complete theme configuration
22766
+ */ applyTheme(theme) {
22129
22767
  // Clear previously applied variables
22130
22768
  this.clearAppliedVars(),
22131
22769
  // Apply global CSS variables
@@ -22140,55 +22778,56 @@ class ThemeApplicator {
22140
22778
  theme.components && this.applyComponentOverrides(theme.components);
22141
22779
  }
22142
22780
  /**
22143
- * Apply global CSS variables
22144
- */ applyGlobalCSSVars(vars) {
22781
+ * Apply global CSS variables
22782
+ */ applyGlobalCSSVars(vars) {
22145
22783
  Object.entries(vars).forEach((([key, value]) => {
22146
22784
  this.root.style.setProperty(key, String(value)), this.appliedVars.add(key);
22147
22785
  }));
22148
22786
  }
22149
22787
  /**
22150
- * Apply typography system
22151
- */ applyTypography(typography) {
22788
+ * Apply typography system
22789
+ */ applyTypography(typography) {
22152
22790
  if (!typography) return;
22153
22791
  const vars = {};
22154
22792
  typography.fontFamily && (vars["--atomix-font-family"] = typography.fontFamily),
22155
22793
  typography.fontSize && Object.entries(typography.fontSize).forEach((([key, value]) => {
22156
- vars[`--atomix-font-size-${key}`] = value;
22794
+ "string" != typeof value && "number" != typeof value || (vars[`--atomix-font-size-${key}`] = value);
22157
22795
  })), typography.fontWeight && Object.entries(typography.fontWeight).forEach((([key, value]) => {
22158
- vars[`--atomix-font-weight-${key}`] = value;
22796
+ "string" != typeof value && "number" != typeof value || (vars[`--atomix-font-weight-${key}`] = value);
22159
22797
  })), typography.lineHeight && Object.entries(typography.lineHeight).forEach((([key, value]) => {
22160
- vars[`--atomix-line-height-${key}`] = value;
22798
+ "string" != typeof value && "number" != typeof value || (vars[`--atomix-line-height-${key}`] = value);
22161
22799
  })), this.applyGlobalCSSVars(vars);
22162
22800
  }
22163
22801
  /**
22164
- * Apply spacing system
22165
- */ applySpacing(spacing) {
22802
+ * Apply spacing system
22803
+ */ applySpacing(spacing) {
22166
22804
  const vars = {};
22167
- Object.entries(spacing).forEach((([key, value]) => {
22168
- vars[`--atomix-space-${key}`] = value;
22169
- })), this.applyGlobalCSSVars(vars);
22805
+ // Handle spacing function or object
22806
+ "function" != typeof spacing && ("object" == typeof spacing && null !== spacing && Object.entries(spacing).forEach((([key, value]) => {
22807
+ "string" != typeof value && "number" != typeof value || (vars[`--atomix-space-${key}`] = value);
22808
+ })), this.applyGlobalCSSVars(vars));
22170
22809
  }
22171
22810
  /**
22172
- * Apply color palette
22173
- */ applyPalette(palette) {
22811
+ * Apply color palette
22812
+ */ applyPalette(palette) {
22174
22813
  if (!palette) return;
22175
22814
  const vars = {};
22176
22815
  Object.entries(palette).forEach((([colorName, colorScale]) => {
22177
- colorScale && Object.entries(colorScale).forEach((([shade, value]) => {
22178
- value && (vars[`--atomix-color-${colorName}-${shade}`] = value);
22816
+ colorScale && "object" == typeof colorScale && Object.entries(colorScale).forEach((([shade, value]) => {
22817
+ !value || "string" != typeof value && "number" != typeof value || (vars[`--atomix-color-${colorName}-${shade}`] = value);
22179
22818
  }));
22180
22819
  })), this.applyGlobalCSSVars(vars);
22181
22820
  }
22182
22821
  /**
22183
- * Apply component-level overrides
22184
- */ applyComponentOverrides(overrides) {
22822
+ * Apply component-level overrides
22823
+ */ applyComponentOverrides(overrides) {
22185
22824
  Object.entries(overrides).forEach((([componentName, override]) => {
22186
22825
  override && this.applyComponentOverride(componentName, override);
22187
22826
  }));
22188
22827
  }
22189
22828
  /**
22190
- * Apply override for a specific component
22191
- */ applyComponentOverride(componentName, override) {
22829
+ * Apply override for a specific component
22830
+ */ applyComponentOverride(componentName, override) {
22192
22831
  const vars = {}, componentKey = componentName.toLowerCase();
22193
22832
  // Apply component-level CSS variables
22194
22833
  override.cssVars && Object.entries(override.cssVars).forEach((([key, value]) => {
@@ -22212,23 +22851,23 @@ class ThemeApplicator {
22212
22851
  })), this.applyGlobalCSSVars(vars);
22213
22852
  }
22214
22853
  /**
22215
- * Clear all applied CSS variables
22216
- */ clearAppliedVars() {
22854
+ * Clear all applied CSS variables
22855
+ */ clearAppliedVars() {
22217
22856
  removeCSSVariables(Array.from(this.appliedVars), this.root), this.appliedVars.clear();
22218
22857
  }
22219
22858
  /**
22220
- * Get all currently applied variables
22221
- */ getAppliedVars() {
22859
+ * Get all currently applied variables
22860
+ */ getAppliedVars() {
22222
22861
  return Array.from(this.appliedVars);
22223
22862
  }
22224
22863
  /**
22225
- * Remove theme application
22226
- */ removeTheme() {
22864
+ * Remove theme application
22865
+ */ removeTheme() {
22227
22866
  this.clearAppliedVars();
22228
22867
  }
22229
22868
  /**
22230
- * Update specific CSS variables without clearing all
22231
- */ updateCSSVars(vars) {
22869
+ * Update specific CSS variables without clearing all
22870
+ */ updateCSSVars(vars) {
22232
22871
  this.applyGlobalCSSVars(vars);
22233
22872
  }
22234
22873
  }
@@ -22610,7 +23249,7 @@ function getComponentCSSVars(component) {
22610
23249
  // No slot provided, use fallback
22611
23250
  if (!slot) return fallback;
22612
23251
  // Slot is a plain React node
22613
- if (React.isValidElement(slot) || "string" == typeof slot || "number" == typeof slot) return slot;
23252
+ if ( React.isValidElement(slot) || "string" == typeof slot || "number" == typeof slot) return slot;
22614
23253
  // Slot is an object with rendering options
22615
23254
  if ("object" == typeof slot && null !== slot) {
22616
23255
  const slotObj = slot;
@@ -22641,7 +23280,7 @@ function getComponentCSSVars(component) {
22641
23280
  * Later slots override earlier ones
22642
23281
  */ function mergeSlots(...slots) {
22643
23282
  const filtered = slots.filter((s => void 0 !== s));
22644
- if (0 !== filtered.length) return 1 === filtered.length ? filtered[0] : filtered.reduce(((acc, slot) => ({
23283
+ if (0 !== filtered.length) return 1 === filtered.length ? filtered[0] : _reduceInstanceProperty(filtered).call(filtered, ((acc, slot) => ({
22645
23284
  ...acc,
22646
23285
  ...slot
22647
23286
  })));
@@ -22683,12 +23322,6 @@ function getComponentCSSVars(component) {
22683
23322
  return React.useMemo((() => renderSlot(slot, props, fallback)), [ slot, props, fallback ]);
22684
23323
  }
22685
23324
 
22686
- /**
22687
- * Component Customization Hook
22688
- *
22689
- * Merges theme-level component overrides with component-level props
22690
- * for comprehensive customization support.
22691
- */
22692
23325
  /**
22693
23326
  * Hook to merge theme overrides with component props
22694
23327
  *
@@ -22713,8 +23346,11 @@ function getComponentCSSVars(component) {
22713
23346
  })), merged;
22714
23347
  }), [ theme, component, props.parts ]), className = useMemo((() => [ theme?.components?.[component]?.className || "", props.className || "" ].filter(Boolean).join(" ")), [ theme, component, props.className ]), style = useMemo((() => ({
22715
23348
  ...props.style
22716
- })), [ props.style ]), cssVarStyle = useMemo((() => Object.entries(cssVars).reduce(((acc, [key, value]) => (acc[key] = "number" == typeof value ? `${value}px` : value,
22717
- acc)), {})), [ cssVars ]);
23349
+ })), [ props.style ]), cssVarStyle = useMemo((() => {
23350
+ var _context;
23351
+ return _reduceInstanceProperty(_context = Object.entries(cssVars)).call(_context, ((acc, [key, value]) => (acc[key] = "number" == typeof value ? `${value}px` : value,
23352
+ acc)), {});
23353
+ }), [ cssVars ]);
22718
23354
  // Merge CSS variables
22719
23355
  return {
22720
23356
  cssVars: cssVars,
@@ -22744,8 +23380,9 @@ function getComponentCSSVars(component) {
22744
23380
  /**
22745
23381
  * Utility to apply CSS variables to style object
22746
23382
  */ function applyCSSVarsToStyle(cssVars, baseStyle) {
23383
+ var _context2;
22747
23384
  return {
22748
- ...Object.entries(cssVars).reduce(((acc, [key, value]) => (acc[key] = "number" == typeof value ? `${value}px` : value,
23385
+ ..._reduceInstanceProperty(_context2 = Object.entries(cssVars)).call(_context2, ((acc, [key, value]) => (acc[key] = "number" == typeof value ? `${value}px` : value,
22749
23386
  acc)), {}),
22750
23387
  ...baseStyle
22751
23388
  };
@@ -22804,10 +23441,46 @@ function getComponentCSSVars(component) {
22804
23441
  * Resolve config path
22805
23442
  *
22806
23443
  * Finds atomix.config.ts in the project, checking common locations.
23444
+ * Returns null in browser environments where file system access is not available.
23445
+ *
23446
+ * This function is designed to work in Node.js environments only.
23447
+ * In browser builds, it will always return null without attempting to access Node.js modules.
23448
+ *
23449
+ * @internal This function uses Node.js modules and should not be called in browser environments.
22807
23450
  */ function resolveConfigPath() {
22808
- if ("undefined" == typeof process || !process.cwd) return null;
22809
- const fs = require("fs"), path = require("path"), cwd = process.cwd(), possiblePaths = [ path.join(cwd, "atomix.config.ts"), path.join(cwd, "atomix.config.js"), path.join(cwd, "atomix.config.mjs") ];
22810
- for (const configPath of possiblePaths) if (fs.existsSync(configPath)) return configPath;
23451
+ // Early return for browser environments - prevents any Node.js module access
23452
+ // This check happens before any require() calls, preventing bundlers from analyzing them
23453
+ if ("undefined" != typeof window || "undefined" == typeof process || !process.cwd) return null;
23454
+ // Only attempt to load Node.js modules in Node.js runtime
23455
+ // Use a lazy-loading pattern that prevents static analysis by bundlers
23456
+ try {
23457
+ // Create a function that only executes in Node.js runtime
23458
+ // Use string-based module names to prevent static analysis by bundlers
23459
+ const modules = (() => {
23460
+ // These requires are only executed at runtime in Node.js environments
23461
+ // They are marked as external in Rollup config and should not be bundled
23462
+ // Using string concatenation and computed property access to prevent static analysis
23463
+ if ("undefined" == typeof require) return null;
23464
+ // Use a try-catch wrapper to safely access require
23465
+ try {
23466
+ // Build module names dynamically to prevent static analysis
23467
+ const moduleNames = [ "fs", "path" ];
23468
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
23469
+ return {
23470
+ fs: require(moduleNames[0]),
23471
+ path: require(moduleNames[1])
23472
+ };
23473
+ } catch {
23474
+ return null;
23475
+ }
23476
+ })();
23477
+ if (!modules) return null;
23478
+ const {fs: fs, path: path} = modules, cwd = process.cwd(), possiblePaths = [ path.join(cwd, "atomix.config.ts"), path.join(cwd, "atomix.config.js"), path.join(cwd, "atomix.config.mjs") ];
23479
+ for (const configPath of possiblePaths) if (fs.existsSync(configPath)) return configPath;
23480
+ } catch (error) {
23481
+ // Silently fail in browser environments or when modules are unavailable
23482
+ return null;
23483
+ }
22811
23484
  return null;
22812
23485
  }
22813
23486
 
@@ -22879,5 +23552,5 @@ const composables = composablesImport, utils = utilsImport, types = typesImport,
22879
23552
  types: types
22880
23553
  };
22881
23554
 
22882
- export { ACCORDION, ATOMIX_GLASS, AVATAR, AVATAR_GROUP, Accordion, AnimatedChart, AreaChart, AtomixGlass, AtomixLogo, Avatar, AvatarGroup, BADGE, BADGE_CSS_VARS, BLOCK, BREADCRUMB, BUTTON, BUTTON_CSS_VARS, Badge, BarChart, Block, Breadcrumb, BubbleChart, Button, CALLOUT, CARD, CARD_CSS_VARS, CHART, CHECKBOX_CSS_VARS, CLASS_PREFIX, CODE_SNIPPET, COMPONENT_CSS_VARS, COUNTDOWN, Callout, CandlestickChart, Card, Chart, ChartRenderer, Checkbox, ColorModeToggle, Container, Countdown, DATA_TABLE_CLASSES, DATA_TABLE_SELECTORS, DATEPICKER, DOTS, DROPDOWN, DROPDOWN_CSS_VARS, DataTable, DatePicker, DonutChart, Dropdown, EDGE_PANEL, EdgePanel, ElevationCard, FOOTER, FORM, FORM_GROUP, Footer, FooterLink, FooterSection, FooterSocialLink, Form, FormGroup, FunnelChart, GLASS_CONTAINER, GaugeChart, Grid, GridCol, HERO, HeatmapChart, Hero, INPUT, INPUT_CSS_VARS, Icon, Input, LIST, LIST_GROUP, LineChart, List, ListGroup, MESSAGES, MODAL, MODAL_CSS_VARS, MasonryGrid, MasonryGridItem, MegaMenu, MegaMenuColumn, MegaMenuLink, Menu, MenuDivider, MenuItem, Messages, Modal, MultiAxisChart, NAV, NAVBAR, Nav, NavDropdown, NavItem, Navbar, PAGINATION_DEFAULTS, PHOTOVIEWER, POPOVER, PROGRESS, PROGRESS_CSS_VARS, Pagination, PhotoViewer, PieChart, Popover, ProductReview, Progress, RADIO, RADIO_CSS_VARS, RATING, RIVER, RTLManager, RadarChart, Radio, Rating, River, Row, SECTION_INTRO, SELECT, SIDE_MENU, SIZES, SLIDER, SPINNER, STEPS, ScatterChart, SectionIntro, Select, SideMenu, SideMenuItem, SideMenuList, Slider, Spinner, Steps, TAB, TABS_CSS_VARS, TESTIMONIAL, TEXTAREA, THEME_COLORS, TODO, TOGGLE, TOOLTIP, TOOLTIP_CSS_VARS, Tabs, Testimonial, Textarea, ThemeApplicator, ThemeCLI, ThemeComparator, ThemeContext, ThemeErrorBoundary, ThemeInspector, ThemeLiveEditor, ThemeManager, ThemePreview, ThemeProvider, Todo, Toggle, Tooltip, TreemapChart, UPLOAD, Upload, VIDEO_PLAYER, VideoPlayer, WaterfallChart, applyCSSVariables, applyCSSVarsToStyle, applyTheme, composables, constants, createCLI, createCSSVarStyle, createDarkVariant, createDebugAttrs, createPartProps, createSlotComponent, createSlotProps, createTheme, createThemeFromConfig, cssVarsToStyle, atomix as default, defineConfig, exportTheme, extendTheme, extractComponentName, extractYouTubeId, generateCSSVariableName, generateCSSVariables, generateComponentCSSVars, generateUUID, getCSSVariable, getComponentCSSVars, getPartStyles, getThemeApplicator, getThemeMetadata, hasCustomization, importTheme, isSlot, isValidCSSVariableName, isYouTubeUrl, loadAtomixConfig, mapSCSSTokensToCSSVars, mergeCSSVars, mergeComponentProps, mergePartStyles, mergeSlots, mergeTheme, quickTheme, removeCSSVariables, removeTheme, renderSlot, resolveConfigPath, runCLI, sliderConstants, supportsDarkMode, theme, themeToCSS, types, useAccordion, useAtomixGlass, useBadge, useBarChart, useBlock, useBreadcrumb, useButton, useCard, useChartData, useChartInteraction, useChartScale, useCheckbox, useComponentCustomization, useComponentDefaultProps, useDataTable, useEdgePanel, useForm, useFormGroup, useGlassContainer, useHero, useInput, useLineChart, useMergedProps, useModal$1 as useModal, useNav, useNavDropdown, useNavItem, useNavbar, usePagination, usePieChart, useRadio, useRiver, useSelect, useSideMenu, useSideMenuItem, useSlider, useSlot, useSpinner, useTextarea, useTheme, useTodo, utils, validateTheme };
23555
+ export { ACCORDION, ATOMIX_GLASS, AVATAR, AVATAR_GROUP, Accordion, AnimatedChart, AreaChart, AtomixGlass, AtomixLogo, Avatar, AvatarGroup, BADGE, BADGE_CSS_VARS, BLOCK, BREADCRUMB, BUTTON, BUTTON_CSS_VARS, Badge, BarChart, Block, Breadcrumb, BubbleChart, Button, CALLOUT, CARD, CARD_CSS_VARS, CHART, CHECKBOX_CSS_VARS, CLASS_PREFIX, CODE_SNIPPET, COMPONENT_CSS_VARS, COUNTDOWN, Callout, CandlestickChart, Card, Chart, ChartRenderer, Checkbox, ColorModeToggle, Container, Countdown, DATA_TABLE_CLASSES, DATA_TABLE_SELECTORS, DATEPICKER, DEFAULT_ATOMIX_FONTS, DOTS, DROPDOWN, DROPDOWN_CSS_VARS, DataTable, DatePicker, DonutChart, Dropdown, EDGE_PANEL, EdgePanel, ElevationCard, FOOTER, FORM, FORM_GROUP, Footer, FooterLink, FooterSection, FooterSocialLink, Form, FormGroup, FunnelChart, GLASS_CONTAINER, GaugeChart, Grid, GridCol, HERO, HeatmapChart, Hero, INPUT, INPUT_CSS_VARS, Icon, Input, LIST, LIST_GROUP, LineChart, List, ListGroup, MESSAGES, MODAL, MODAL_CSS_VARS, MasonryGrid, MasonryGridItem, MegaMenu, MegaMenuColumn, MegaMenuLink, Menu, MenuDivider, MenuItem, Messages, Modal, MultiAxisChart, NAV, NAVBAR, Nav, NavDropdown, NavItem, Navbar, PAGINATION_DEFAULTS, PHOTOVIEWER, POPOVER, PROGRESS, PROGRESS_CSS_VARS, Pagination, PhotoViewer, PieChart, Popover, ProductReview, Progress, RADIO, RADIO_CSS_VARS, RATING, RIVER, RTLManager, RadarChart, Radio, Rating, River, Row, SECTION_INTRO, SELECT, SIDE_MENU, SIZES, SLIDER, SPINNER, STEPS, ScatterChart, SectionIntro, Select, SideMenu, SideMenuItem, SideMenuList, Slider, Spinner, Steps, TAB, TABS_CSS_VARS, TESTIMONIAL, TEXTAREA, THEME_COLORS, TODO, TOGGLE, TOOLTIP, TOOLTIP_CSS_VARS, Tabs, Testimonial, Textarea, ThemeApplicator, ThemeCLI, ThemeComparator, ThemeContext, ThemeErrorBoundary, ThemeInspector, ThemeLiveEditor, ThemeManager, ThemePreview, ThemeProvider, Todo, Toggle, Tooltip, TreemapChart, UPLOAD, Upload, VIDEO_PLAYER, VideoPlayer, WaterfallChart, applyCSSVariables, applyCSSVarsToStyle, applyPartStyles, applyTheme, composables, constants, createCLI, createCSSVarStyle, createDarkVariant, createDebugAttrs, createFontPreloadLink, createPartProps, createSlotComponent, createSlotProps, createTheme, createThemeFromConfig, cssVarsToStyle, atomix as default, defineConfig, exportTheme, extendTheme, extractComponentName, extractYouTubeId, generateCSSVariableName, generateCSSVariables, generateComponentCSSVars, generateFontPreloadTags, generateUUID, getCSSVariable, getComponentCSSVars, getPartStyles, getThemeApplicator, getThemeMetadata, hasCustomization, importTheme, isSlot, isValidCSSVariableName, isYouTubeUrl, loadAtomixConfig, mapSCSSTokensToCSSVars, mergeCSSVars, mergeClassNames, mergeComponentProps, mergePartStyles, mergeSlots, mergeTheme, preloadFonts, quickTheme, removeCSSVariables, removeTheme, renderSlot, resolveConfigPath, runCLI, sliderConstants, supportsDarkMode, theme, themeToCSS, types, useAccordion, useAtomixGlass, useBadge, useBarChart, useBlock, useBreadcrumb, useButton, useCard, useChartData, useChartInteraction, useChartScale, useCheckbox, useComponentCustomization, useComponentDefaultProps, useDataTable, useEdgePanel, useForm, useFormGroup, useGlassContainer, useHero, useInput, useLineChart, useMergedProps, useModal$1 as useModal, useNav, useNavDropdown, useNavItem, useNavbar, usePagination, usePieChart, useRadio, useRiver, useSelect, useSideMenu, useSideMenuItem, useSlider, useSlot, useSpinner, useTextarea, useTheme, useTodo, utils, validateTheme };
22883
23556
  //# sourceMappingURL=index.esm.js.map