@shohojdhara/atomix 0.3.13 → 0.3.14

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 (151) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +2 -0
  3. package/dist/atomix.css +95 -77
  4. package/dist/atomix.css.map +1 -1
  5. package/dist/atomix.min.css +2 -2
  6. package/dist/atomix.min.css.map +1 -1
  7. package/dist/charts.d.ts +1 -1
  8. package/dist/charts.js +1 -1
  9. package/dist/core.d.ts +41 -11
  10. package/dist/core.js +39 -23
  11. package/dist/core.js.map +1 -1
  12. package/dist/forms.d.ts +28 -11
  13. package/dist/forms.js +8 -5
  14. package/dist/forms.js.map +1 -1
  15. package/dist/heavy.d.ts +1 -1
  16. package/dist/heavy.js +15 -6
  17. package/dist/heavy.js.map +1 -1
  18. package/dist/index.d.ts +122 -46
  19. package/dist/index.esm.js +849 -182
  20. package/dist/index.esm.js.map +1 -1
  21. package/dist/index.js +854 -186
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.min.js +1 -1
  24. package/dist/index.min.js.map +1 -1
  25. package/dist/theme.d.ts +27 -2
  26. package/dist/theme.js +721 -108
  27. package/dist/theme.js.map +1 -1
  28. package/package.json +1 -1
  29. package/scripts/atomix-cli.js +610 -1111
  30. package/scripts/cli/component-generator.js +610 -0
  31. package/scripts/cli/documentation-sync.js +542 -0
  32. package/scripts/cli/interactive-init.js +84 -288
  33. package/scripts/cli/mappings.js +211 -0
  34. package/scripts/cli/migration-tools.js +95 -288
  35. package/scripts/cli/template-manager.js +107 -0
  36. package/scripts/cli/templates/README.md +123 -0
  37. package/scripts/cli/templates/composable-templates.js +149 -0
  38. package/scripts/cli/templates/config-templates.js +126 -0
  39. package/scripts/cli/templates/index.js +95 -0
  40. package/scripts/cli/templates/project-templates.js +214 -0
  41. package/scripts/cli/templates/react-templates.js +261 -0
  42. package/scripts/cli/templates/scss-templates.js +156 -0
  43. package/scripts/cli/templates/storybook-templates.js +236 -0
  44. package/scripts/cli/templates/testing-templates.js +45 -0
  45. package/scripts/cli/templates/token-templates.js +447 -0
  46. package/scripts/cli/templates/types-templates.js +133 -0
  47. package/scripts/cli/templates-original-backup.js +1655 -0
  48. package/scripts/cli/templates.js +35 -0
  49. package/scripts/cli/templates_backup.js +684 -0
  50. package/scripts/cli/theme-bridge.js +20 -14
  51. package/scripts/cli/token-manager.js +150 -77
  52. package/scripts/cli/utils.js +37 -25
  53. package/src/components/Accordion/Accordion.stories.tsx +5 -5
  54. package/src/components/Accordion/Accordion.test.tsx +57 -0
  55. package/src/components/Accordion/Accordion.tsx +4 -0
  56. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1 -1
  57. package/src/components/AtomixGlass/stories/Examples.stories.tsx +37 -37
  58. package/src/components/AtomixGlass/stories/Playground.stories.tsx +50 -51
  59. package/src/components/Avatar/Avatar.stories.tsx +26 -26
  60. package/src/components/Badge/Badge.stories.tsx +31 -31
  61. package/src/components/Badge/Badge.test.tsx +51 -0
  62. package/src/components/Badge/Badge.tsx +20 -1
  63. package/src/components/Block/Block.stories.tsx +5 -5
  64. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  65. package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
  66. package/src/components/Button/Button.stories.tsx +13 -13
  67. package/src/components/Button/Button.tsx +4 -4
  68. package/src/components/Button/ButtonGroup.stories.tsx +2 -2
  69. package/src/components/Button/README.md +5 -0
  70. package/src/components/Callout/Callout.stories.tsx +11 -11
  71. package/src/components/Callout/Callout.test.tsx +10 -10
  72. package/src/components/Callout/Callout.tsx +7 -7
  73. package/src/components/Callout/README.md +9 -8
  74. package/src/components/Card/Card.tsx +2 -2
  75. package/src/components/Chart/Chart.stories.tsx +6 -6
  76. package/src/components/Chart/Chart.tsx +1 -1
  77. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +1 -1
  78. package/src/components/DataTable/DataTable.tsx +14 -12
  79. package/src/components/DatePicker/DatePicker.stories.tsx +6 -6
  80. package/src/components/Dropdown/Dropdown.stories.tsx +4 -4
  81. package/src/components/Form/Checkbox.stories.tsx +3 -3
  82. package/src/components/Form/Checkbox.tsx +4 -2
  83. package/src/components/Form/Form.stories.tsx +3 -3
  84. package/src/components/Form/FormGroup.stories.tsx +1 -1
  85. package/src/components/Form/Input.stories.tsx +28 -16
  86. package/src/components/Form/Input.test.tsx +59 -0
  87. package/src/components/Form/Input.tsx +97 -95
  88. package/src/components/Form/Radio.stories.tsx +94 -94
  89. package/src/components/Form/Radio.tsx +2 -2
  90. package/src/components/Form/Select.stories.tsx +4 -4
  91. package/src/components/Form/Select.tsx +2 -2
  92. package/src/components/Form/Textarea.stories.tsx +22 -7
  93. package/src/components/Form/Textarea.test.tsx +45 -0
  94. package/src/components/Form/Textarea.tsx +88 -86
  95. package/src/components/List/List.stories.tsx +2 -2
  96. package/src/components/Modal/Modal.stories.tsx +4 -4
  97. package/src/components/Navigation/Navbar/Navbar.stories.tsx +5 -5
  98. package/src/components/Navigation/Navbar/Navbar.tsx +1 -1
  99. package/src/components/Navigation/README.md +1 -1
  100. package/src/components/Pagination/Pagination.stories.tsx +5 -2
  101. package/src/components/Pagination/Pagination.tsx +1 -1
  102. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -10
  103. package/src/components/Popover/Popover.stories.tsx +1 -1
  104. package/src/components/ProductReview/ProductReview.tsx +1 -1
  105. package/src/components/Progress/Progress.tsx +46 -46
  106. package/src/components/Rating/Rating.stories.tsx +4 -4
  107. package/src/components/Rating/Rating.tsx +8 -8
  108. package/src/components/Slider/Slider.stories.tsx +63 -63
  109. package/src/components/Spinner/Spinner.stories.tsx +2 -2
  110. package/src/components/Spinner/Spinner.test.tsx +35 -0
  111. package/src/components/Spinner/Spinner.tsx +9 -2
  112. package/src/components/Testimonial/Testimonial.stories.tsx +1 -1
  113. package/src/components/Toggle/Toggle.stories.tsx +32 -9
  114. package/src/components/Toggle/Toggle.test.tsx +91 -0
  115. package/src/components/Toggle/Toggle.tsx +44 -27
  116. package/src/components/Tooltip/Tooltip.tsx +1 -1
  117. package/src/layouts/Grid/Grid.stories.tsx +49 -49
  118. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +2 -2
  119. package/src/lib/composables/useAccordion.ts +12 -3
  120. package/src/lib/composables/useBreadcrumb.ts +2 -2
  121. package/src/lib/composables/useCallout.ts +7 -7
  122. package/src/lib/composables/useNavbar.ts +1 -1
  123. package/src/lib/constants/components.ts +1 -1
  124. package/src/lib/storybook/InteractiveDemo.tsx +113 -0
  125. package/src/lib/storybook/PreviewContainer.tsx +36 -0
  126. package/src/lib/storybook/VariantsGrid.tsx +21 -0
  127. package/src/lib/storybook/index.ts +3 -0
  128. package/src/lib/theme/core/createThemeObject.ts +9 -5
  129. package/src/lib/theme/devtools/CLI.ts +155 -0
  130. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +213 -0
  131. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +566 -0
  132. package/src/lib/theme/devtools/LiveEditor.tsx +2 -1
  133. package/src/lib/theme/devtools/index.ts +3 -0
  134. package/src/lib/theme/errors/errors.ts +8 -0
  135. package/src/lib/theme/runtime/ThemeProvider.tsx +117 -57
  136. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +305 -0
  137. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +588 -0
  138. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +264 -0
  139. package/src/lib/theme/utils/index.ts +1 -0
  140. package/src/lib/theme/utils/themeValidation.ts +501 -0
  141. package/src/lib/theme-tools.ts +32 -3
  142. package/src/lib/types/components.ts +81 -26
  143. package/src/lib/utils/themeNaming.ts +1 -1
  144. package/src/styles/06-components/_components.callout.scss +29 -33
  145. package/src/styles/06-components/_index.scss +1 -1
  146. package/src/styles/99-utilities/_utilities.display.scss +14 -3
  147. package/src/styles/99-utilities/_utilities.flex.scss +10 -10
  148. package/src/styles/99-utilities/_utilities.text.scss +28 -8
  149. package/scripts/cli/__tests__/cli-commands.test.js +0 -204
  150. package/scripts/cli/__tests__/utils.test.js +0 -201
  151. package/scripts/cli/__tests__/vitest.config.js +0 -26
package/dist/charts.d.ts CHANGED
@@ -157,7 +157,7 @@ interface OverLightObjectConfig {
157
157
  * AtomixGlass component props interface
158
158
  */
159
159
  interface AtomixGlassProps {
160
- children: React.ReactNode;
160
+ children?: React.ReactNode;
161
161
  displacementScale?: number;
162
162
  blurAmount?: number;
163
163
  saturation?: number;
package/dist/charts.js CHANGED
@@ -3167,7 +3167,7 @@ toolbarConfig: toolbarConfig, customToolbarActions: customToolbarActions, custom
3167
3167
  tabIndex: 0,
3168
3168
  ...props,
3169
3169
  children: [ (title || subtitle || showToolbar) && jsxs("div", {
3170
- className: `${CHART.HEADER_CLASS} u-d-flex u-justify-between u-align-items-start u-gap-4`,
3170
+ className: `${CHART.HEADER_CLASS} u-flex u-justify-between u-items-start u-gap-4`,
3171
3171
  children: [ jsxs("div", {
3172
3172
  className: `${CHART.HEADER_CONTENT_CLASS} u-flex-1`,
3173
3173
  children: [ title && jsx("h3", {
package/dist/core.d.ts CHANGED
@@ -384,7 +384,7 @@ interface OverLightObjectConfig {
384
384
  * AtomixGlass component props interface
385
385
  */
386
386
  interface AtomixGlassProps {
387
- children: React.ReactNode;
387
+ children?: React.ReactNode;
388
388
  displacementScale?: number;
389
389
  blurAmount?: number;
390
390
  saturation?: number;
@@ -500,6 +500,7 @@ interface ListProps extends BaseComponentProps {
500
500
  variant?: listvariant;
501
501
  /**
502
502
  * List size
503
+ * @default 'md'
503
504
  */
504
505
  size?: Size;
505
506
  /**
@@ -542,10 +543,12 @@ interface ButtonProps extends BaseComponentProps {
542
543
  onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
543
544
  /**
544
545
  * Button variant
546
+ * @default 'solid'
545
547
  */
546
548
  variant?: Variant;
547
549
  /**
548
550
  * Button size
551
+ * @default 'md'
549
552
  */
550
553
  size?: Size;
551
554
  /**
@@ -642,19 +645,19 @@ interface ButtonProps extends BaseComponentProps {
642
645
  /**
643
646
  * ARIA label for accessibility
644
647
  */
645
- ariaLabel?: string;
648
+ 'aria-label'?: string;
646
649
  /**
647
650
  * ARIA described by reference
648
651
  */
649
- ariaDescribedBy?: string;
652
+ 'aria-describedby'?: string;
650
653
  /**
651
654
  * ARIA expanded state (for toggle buttons)
652
655
  */
653
- ariaExpanded?: boolean;
656
+ 'aria-expanded'?: boolean;
654
657
  /**
655
658
  * ARIA controls reference
656
659
  */
657
- ariaControls?: string;
660
+ 'aria-controls'?: string;
658
661
  /**
659
662
  * Tab index for keyboard navigation
660
663
  */
@@ -683,16 +686,26 @@ interface BadgeProps extends BaseComponentProps {
683
686
  label: string;
684
687
  /**
685
688
  * Badge color variant
689
+ * @default 'primary'
686
690
  */
687
691
  variant?: ThemeColor;
688
692
  /**
689
693
  * Badge size
694
+ * @default 'md'
690
695
  */
691
696
  size?: Size;
692
697
  /**
693
698
  * Optional icon
694
699
  */
695
700
  icon?: ReactNode;
701
+ /**
702
+ * Callback for dismissible badges (shows close button when provided)
703
+ */
704
+ onRemove?: () => void;
705
+ /**
706
+ * Accessible label for the badge
707
+ */
708
+ 'aria-label'?: string;
696
709
  /**
697
710
  * Glass morphism effect for the badge
698
711
  * Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
@@ -764,13 +777,13 @@ interface CalloutProps extends BaseComponentProps {
764
777
  */
765
778
  actions?: ReactNode;
766
779
  /**
767
- * Display in one line mode
780
+ * Display in compact (one-line) mode
768
781
  */
769
- oneLine?: boolean;
782
+ compact?: boolean;
770
783
  /**
771
784
  * Display as toast notification
772
785
  */
773
- toast?: boolean;
786
+ isToast?: boolean;
774
787
  /**
775
788
  * Glass morphism effect for the callout
776
789
  * Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
@@ -813,12 +826,17 @@ interface AccordionProps$1 extends BaseComponentProps {
813
826
  * Whether the accordion is disabled
814
827
  */
815
828
  disabled?: boolean;
829
+ /**
830
+ * Callback called when the open state changes
831
+ */
816
832
  onOpenChange?: (open: boolean) => void;
817
833
  /**
834
+ * @deprecated Use onOpenChange instead
818
835
  * Optional open handler
819
836
  */
820
837
  onOpen?: () => void;
821
838
  /**
839
+ * @deprecated Use onOpenChange instead
822
840
  * Optional close handler
823
841
  */
824
842
  onClose?: () => void;
@@ -834,16 +852,28 @@ interface AccordionProps$1 extends BaseComponentProps {
834
852
  interface SpinnerProps extends BaseComponentProps {
835
853
  /**
836
854
  * Spinner color variant
855
+ * @default 'primary'
837
856
  */
838
857
  variant?: ThemeColor;
839
858
  /**
840
859
  * Spinner size
860
+ * @default 'md'
841
861
  */
842
862
  size?: Size;
843
863
  /**
844
864
  * Whether the spinner should be displayed fullscreen
845
865
  */
846
866
  fullscreen?: boolean;
867
+ /**
868
+ * Accessible label for screen readers
869
+ * @default 'Loading'
870
+ */
871
+ 'aria-label'?: string;
872
+ /**
873
+ * ARIA role for the spinner
874
+ * @default 'status'
875
+ */
876
+ role?: 'status' | 'alert';
847
877
  /**
848
878
  * Glass morphism effect for the spinner
849
879
  * Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
@@ -982,11 +1012,11 @@ interface CardProps extends BaseComponentProps {
982
1012
  /**
983
1013
  * ARIA label for accessibility
984
1014
  */
985
- ariaLabel?: string;
1015
+ 'aria-label'?: string;
986
1016
  /**
987
1017
  * ARIA described by reference
988
1018
  */
989
- ariaDescribedBy?: string;
1019
+ 'aria-describedby'?: string;
990
1020
  /**
991
1021
  * Tab index for keyboard navigation
992
1022
  */
@@ -1210,7 +1240,7 @@ interface BreadcrumbProps {
1210
1240
  /**
1211
1241
  * Aria label for the navigation
1212
1242
  */
1213
- ariaLabel?: string;
1243
+ 'aria-label'?: string;
1214
1244
  /**
1215
1245
  * Optional custom link component
1216
1246
  */
package/dist/core.js CHANGED
@@ -1579,7 +1579,7 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
1579
1579
  });
1580
1580
  }
1581
1581
 
1582
- 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}) => {
1582
+ const Accordion = memo((({title: title, children: children, defaultOpen: defaultOpen = !1, isOpen: controlledOpen, onOpenChange: onOpenChange, onOpen: onOpen, onClose: onClose, disabled: disabled = !1, iconPosition: iconPosition = "right", icon: icon, className: className = "", style: style, glass: glass}) => {
1583
1583
  // Generate unique IDs for accessibility
1584
1584
  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} =
1585
1585
  /**
@@ -1621,7 +1621,12 @@ const Accordion = memo((({title: title, children: children, defaultOpen: defaul
1621
1621
  panelHeight: panelHeight
1622
1622
  },
1623
1623
  toggle: () => {
1624
- defaultProps.disabled || (isControlled ? defaultProps.onOpenChange && defaultProps.onOpenChange(!isOpen) : setInternalOpen((prev => !prev)));
1624
+ if (!defaultProps.disabled) {
1625
+ const nextOpen = !isOpen;
1626
+ isControlled || setInternalOpen(nextOpen), defaultProps.onOpenChange?.(nextOpen),
1627
+ // Call legacy handlers
1628
+ nextOpen ? defaultProps.onOpen?.() : defaultProps.onClose?.();
1629
+ }
1625
1630
  },
1626
1631
  updatePanelHeight: updatePanelHeight,
1627
1632
  panelRef: panelRef,
@@ -1634,7 +1639,9 @@ const Accordion = memo((({title: title, children: children, defaultOpen: defaul
1634
1639
  disabled: disabled,
1635
1640
  iconPosition: iconPosition,
1636
1641
  isOpen: controlledOpen,
1637
- onOpenChange: onOpenChange
1642
+ onOpenChange: onOpenChange,
1643
+ onOpen: onOpen,
1644
+ onClose: onClose
1638
1645
  }), defaultIcon = jsx("i", {
1639
1646
  className: "c-accordion__icon",
1640
1647
  "aria-hidden": "true",
@@ -1703,7 +1710,7 @@ const Accordion = memo((({title: title, children: children, defaultOpen: defaul
1703
1710
  // Set display name for debugging
1704
1711
  Accordion.displayName = "Accordion";
1705
1712
 
1706
- const Badge = memo((({label: label, variant: variant = "primary", size: size = "md", disabled: disabled = !1, icon: icon, className: className = "", glass: glass, style: style}) => {
1713
+ const Badge = memo((({label: label, variant: variant = "primary", size: size = "md", disabled: disabled = !1, icon: icon, onRemove: onRemove, "aria-label": ariaLabel, className: className = "", glass: glass, style: style}) => {
1707
1714
  const {generateBadgeClass: generateBadgeClass} =
1708
1715
  /**
1709
1716
  * Badge state and functionality
@@ -1741,6 +1748,7 @@ const Badge = memo((({label: label, variant: variant = "primary", size: size =
1741
1748
  }), badgeElement = jsxs("span", {
1742
1749
  className: badgeClass,
1743
1750
  "aria-disabled": disabled,
1751
+ "aria-label": ariaLabel,
1744
1752
  ref: ref,
1745
1753
  style: style,
1746
1754
  children: [ icon && jsx("span", {
@@ -1748,6 +1756,13 @@ const Badge = memo((({label: label, variant: variant = "primary", size: size =
1748
1756
  children: icon
1749
1757
  }), jsx("span", {
1750
1758
  children: label
1759
+ }), onRemove && jsx("button", {
1760
+ type: "button",
1761
+ className: "c-badge__close",
1762
+ onClick: onRemove,
1763
+ "aria-label": "Remove badge",
1764
+ disabled: disabled,
1765
+ children: "×"
1751
1766
  }) ]
1752
1767
  });
1753
1768
  if (glass) {
@@ -1875,7 +1890,7 @@ const Block = forwardRef((({children: children, as: Component = "section", spac
1875
1890
  * ```
1876
1891
  */ Block.displayName = "Block";
1877
1892
 
1878
- const Breadcrumb = memo((({items: items, divider: divider, className: className = "", ariaLabel: ariaLabel = "Breadcrumb", LinkComponent: LinkComponent, style: style}) => {
1893
+ const Breadcrumb = memo((({items: items, divider: divider, className: className = "", "aria-label": ariaLabel = "Breadcrumb", LinkComponent: LinkComponent, style: style}) => {
1879
1894
  const breadcrumbClasses = [ BREADCRUMB.CLASSES.BASE, className ].filter(Boolean).join(" ");
1880
1895
  return jsx("nav", {
1881
1896
  "aria-label": ariaLabel,
@@ -1912,7 +1927,7 @@ const Breadcrumb = memo((({items: items, divider: divider, className: className
1912
1927
 
1913
1928
  Breadcrumb.displayName = "Breadcrumb";
1914
1929
 
1915
- const Spinner = memo((({size: size = "md", variant: variant = "primary", fullscreen: fullscreen = !1, className: className = "", style: style, glass: glass}) => {
1930
+ const Spinner = memo((({size: size = "md", variant: variant = "primary", fullscreen: fullscreen = !1, className: className = "", style: style, glass: glass, "aria-label": ariaLabel, role: role = "status"}) => {
1916
1931
  const {generateSpinnerClass: generateSpinnerClass} =
1917
1932
  /**
1918
1933
  * Spinner state and functionality
@@ -1950,10 +1965,11 @@ const Spinner = memo((({size: size = "md", variant: variant = "primary", fullsc
1950
1965
  }), spinnerContent = jsx("div", {
1951
1966
  className: spinnerClass,
1952
1967
  style: style,
1953
- role: "status",
1968
+ role: role,
1969
+ "aria-label": ariaLabel || "Loading",
1954
1970
  children: jsx("span", {
1955
1971
  className: "u-visually-hidden",
1956
- children: "Loading..."
1972
+ children: ariaLabel || "Loading..."
1957
1973
  })
1958
1974
  });
1959
1975
  if (glass) {
@@ -2034,7 +2050,7 @@ class ThemeNaming {
2034
2050
  * Convert kebab-case to camelCase for JavaScript properties
2035
2051
  * @param str - String to convert
2036
2052
  */ static kebabToCamel(str) {
2037
- return str.replace(/-([a-z])/g, (g => g[1].toUpperCase()));
2053
+ return str.replace(/-([a-z])/g, (g => g[1]?.toUpperCase() ?? ""));
2038
2054
  }
2039
2055
  /**
2040
2056
  * Create a CSS variable name
@@ -2095,7 +2111,7 @@ class ThemeNaming {
2095
2111
 
2096
2112
  ThemeNaming.prefix = "atomix";
2097
2113
 
2098
- 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) => {
2114
+ 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, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, tabIndex: tabIndex, style: style, LinkComponent: LinkComponent, ...props}, ref) => {
2099
2115
  const isDisabled = disabled || loading, shouldRenderAsLink = Boolean(href && !isDisabled), iconElement = iconName ? jsx(Icon, {
2100
2116
  name: iconName,
2101
2117
  size: iconSize
@@ -2218,7 +2234,7 @@ onClick: onClick, onHover: onHover, onFocus: onFocus, href: href, target: target
2218
2234
  // Glass
2219
2235
  glass: glass,
2220
2236
  // Accessibility
2221
- role: role, ariaLabel: ariaLabel, ariaDescribedBy: ariaDescribedBy, tabIndex: tabIndex,
2237
+ role: role, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, tabIndex: tabIndex,
2222
2238
  // Styling
2223
2239
  className: className = "", style: style, ...rest}, ref) => {
2224
2240
  // Determine if card is clickable/interactive
@@ -2836,7 +2852,7 @@ var includes$3 = getBuiltInPrototypeMethod$2("String", "includes"), isPrototypeO
2836
2852
  const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2837
2853
  var own = it.includes;
2838
2854
  return it === ArrayPrototype || isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.includes ? arrayMethod : "string" == typeof it || it === StringPrototype || isPrototypeOf(StringPrototype, it) && own === StringPrototype.includes ? stringMethod : own;
2839
- })), 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}) => {
2855
+ })), Callout = ({title: title, children: children, icon: icon, variant: variant = "primary", onClose: onClose, actions: actions, compact: compact = !1, isToast: isToast = !1, glass: glass, className: className, style: style, ...props}) => {
2840
2856
  const {generateCalloutClass: generateCalloutClass, handleClose: handleClose} =
2841
2857
  /**
2842
2858
  * Callout state and functionality
@@ -2847,8 +2863,8 @@ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2847
2863
  // Default callout properties
2848
2864
  const defaultProps = {
2849
2865
  variant: "primary",
2850
- oneLine: !1,
2851
- toast: !1,
2866
+ compact: !1,
2867
+ isToast: !1,
2852
2868
  glass: !1,
2853
2869
  ...initialProps
2854
2870
  };
@@ -2859,8 +2875,8 @@ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2859
2875
  */ return {
2860
2876
  defaultProps: defaultProps,
2861
2877
  generateCalloutClass: props => {
2862
- const {variant: variant = defaultProps.variant, oneLine: oneLine = defaultProps.oneLine, toast: toast = defaultProps.toast, glass: glass = defaultProps.glass, className: className = ""} = props;
2863
- return `c-callout ${variant ? `c-callout--${variant}` : ""} ${oneLine ? "c-callout--oneline" : ""} ${toast ? "c-callout--toast" : ""} ${glass ? "c-callout--glass" : ""} ${className}`.trim();
2878
+ const {variant: variant = defaultProps.variant, compact: compact = defaultProps.compact, isToast: isToast = defaultProps.isToast, glass: glass = defaultProps.glass, className: className = ""} = props;
2879
+ return `c-callout ${variant ? `c-callout--${variant}` : ""} ${compact ? "c-callout--compact" : ""} ${isToast ? "c-callout--toast" : ""} ${glass ? "c-callout--glass" : ""} ${className}`.trim();
2864
2880
  },
2865
2881
  handleClose: handler => () => {
2866
2882
  handler && handler();
@@ -2871,8 +2887,8 @@ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2871
2887
  * Callout component for displaying important messages, notifications, or alerts
2872
2888
  */ ({
2873
2889
  variant: variant,
2874
- oneLine: oneLine,
2875
- toast: toast,
2890
+ compact: compact,
2891
+ isToast: isToast,
2876
2892
  glass: glass,
2877
2893
  className: className,
2878
2894
  style: style
@@ -2882,7 +2898,7 @@ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2882
2898
  role: "region"
2883
2899
  };
2884
2900
  // For toast notifications or alerts, use appropriate role and live region
2885
- return toast ? (baseAttributes.role = "alert", baseAttributes["aria-live"] = "polite") : _includesInstanceProperty(_context = [ "warning", "error" ]).call(_context, variant) ? (baseAttributes.role = "alert",
2901
+ return isToast ? (baseAttributes.role = "alert", baseAttributes["aria-live"] = "polite") : _includesInstanceProperty(_context = [ "warning", "error" ]).call(_context, variant) ? (baseAttributes.role = "alert",
2886
2902
  baseAttributes["aria-live"] = "assertive") : _includesInstanceProperty(_context2 = [ "info", "success" ]).call(_context2, variant) && (baseAttributes.role = "status",
2887
2903
  baseAttributes["aria-live"] = "polite"), baseAttributes;
2888
2904
  }, calloutContent = jsxs(Fragment, {
@@ -2928,8 +2944,8 @@ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2928
2944
  return jsx("div", {
2929
2945
  className: generateCalloutClass({
2930
2946
  variant: variant,
2931
- oneLine: oneLine,
2932
- toast: toast,
2947
+ compact: compact,
2948
+ isToast: isToast,
2933
2949
  glass: glass,
2934
2950
  className: className
2935
2951
  }),
@@ -2951,8 +2967,8 @@ const _includesInstanceProperty = getDefaultExportFromCjs((function(it) {
2951
2967
  return jsx("div", {
2952
2968
  className: generateCalloutClass({
2953
2969
  variant: variant,
2954
- oneLine: oneLine,
2955
- toast: toast,
2970
+ compact: compact,
2971
+ isToast: isToast,
2956
2972
  glass: glass,
2957
2973
  className: className
2958
2974
  }),