@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.
- package/CHANGELOG.md +19 -0
- package/README.md +2 -0
- package/dist/atomix.css +95 -77
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +2 -2
- package/dist/atomix.min.css.map +1 -1
- package/dist/charts.d.ts +1 -1
- package/dist/charts.js +1 -1
- package/dist/core.d.ts +41 -11
- package/dist/core.js +39 -23
- package/dist/core.js.map +1 -1
- package/dist/forms.d.ts +28 -11
- package/dist/forms.js +8 -5
- package/dist/forms.js.map +1 -1
- package/dist/heavy.d.ts +1 -1
- package/dist/heavy.js +15 -6
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +122 -46
- package/dist/index.esm.js +849 -182
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +854 -186
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/theme.d.ts +27 -2
- package/dist/theme.js +721 -108
- package/dist/theme.js.map +1 -1
- package/package.json +1 -1
- package/scripts/atomix-cli.js +610 -1111
- package/scripts/cli/component-generator.js +610 -0
- package/scripts/cli/documentation-sync.js +542 -0
- package/scripts/cli/interactive-init.js +84 -288
- package/scripts/cli/mappings.js +211 -0
- package/scripts/cli/migration-tools.js +95 -288
- package/scripts/cli/template-manager.js +107 -0
- package/scripts/cli/templates/README.md +123 -0
- package/scripts/cli/templates/composable-templates.js +149 -0
- package/scripts/cli/templates/config-templates.js +126 -0
- package/scripts/cli/templates/index.js +95 -0
- package/scripts/cli/templates/project-templates.js +214 -0
- package/scripts/cli/templates/react-templates.js +261 -0
- package/scripts/cli/templates/scss-templates.js +156 -0
- package/scripts/cli/templates/storybook-templates.js +236 -0
- package/scripts/cli/templates/testing-templates.js +45 -0
- package/scripts/cli/templates/token-templates.js +447 -0
- package/scripts/cli/templates/types-templates.js +133 -0
- package/scripts/cli/templates-original-backup.js +1655 -0
- package/scripts/cli/templates.js +35 -0
- package/scripts/cli/templates_backup.js +684 -0
- package/scripts/cli/theme-bridge.js +20 -14
- package/scripts/cli/token-manager.js +150 -77
- package/scripts/cli/utils.js +37 -25
- package/src/components/Accordion/Accordion.stories.tsx +5 -5
- package/src/components/Accordion/Accordion.test.tsx +57 -0
- package/src/components/Accordion/Accordion.tsx +4 -0
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1 -1
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +37 -37
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +50 -51
- package/src/components/Avatar/Avatar.stories.tsx +26 -26
- package/src/components/Badge/Badge.stories.tsx +31 -31
- package/src/components/Badge/Badge.test.tsx +51 -0
- package/src/components/Badge/Badge.tsx +20 -1
- package/src/components/Block/Block.stories.tsx +5 -5
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
- package/src/components/Breadcrumb/Breadcrumb.tsx +2 -2
- package/src/components/Button/Button.stories.tsx +13 -13
- package/src/components/Button/Button.tsx +4 -4
- package/src/components/Button/ButtonGroup.stories.tsx +2 -2
- package/src/components/Button/README.md +5 -0
- package/src/components/Callout/Callout.stories.tsx +11 -11
- package/src/components/Callout/Callout.test.tsx +10 -10
- package/src/components/Callout/Callout.tsx +7 -7
- package/src/components/Callout/README.md +9 -8
- package/src/components/Card/Card.tsx +2 -2
- package/src/components/Chart/Chart.stories.tsx +6 -6
- package/src/components/Chart/Chart.tsx +1 -1
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +1 -1
- package/src/components/DataTable/DataTable.tsx +14 -12
- package/src/components/DatePicker/DatePicker.stories.tsx +6 -6
- package/src/components/Dropdown/Dropdown.stories.tsx +4 -4
- package/src/components/Form/Checkbox.stories.tsx +3 -3
- package/src/components/Form/Checkbox.tsx +4 -2
- package/src/components/Form/Form.stories.tsx +3 -3
- package/src/components/Form/FormGroup.stories.tsx +1 -1
- package/src/components/Form/Input.stories.tsx +28 -16
- package/src/components/Form/Input.test.tsx +59 -0
- package/src/components/Form/Input.tsx +97 -95
- package/src/components/Form/Radio.stories.tsx +94 -94
- package/src/components/Form/Radio.tsx +2 -2
- package/src/components/Form/Select.stories.tsx +4 -4
- package/src/components/Form/Select.tsx +2 -2
- package/src/components/Form/Textarea.stories.tsx +22 -7
- package/src/components/Form/Textarea.test.tsx +45 -0
- package/src/components/Form/Textarea.tsx +88 -86
- package/src/components/List/List.stories.tsx +2 -2
- package/src/components/Modal/Modal.stories.tsx +4 -4
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +5 -5
- package/src/components/Navigation/Navbar/Navbar.tsx +1 -1
- package/src/components/Navigation/README.md +1 -1
- package/src/components/Pagination/Pagination.stories.tsx +5 -2
- package/src/components/Pagination/Pagination.tsx +1 -1
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -10
- package/src/components/Popover/Popover.stories.tsx +1 -1
- package/src/components/ProductReview/ProductReview.tsx +1 -1
- package/src/components/Progress/Progress.tsx +46 -46
- package/src/components/Rating/Rating.stories.tsx +4 -4
- package/src/components/Rating/Rating.tsx +8 -8
- package/src/components/Slider/Slider.stories.tsx +63 -63
- package/src/components/Spinner/Spinner.stories.tsx +2 -2
- package/src/components/Spinner/Spinner.test.tsx +35 -0
- package/src/components/Spinner/Spinner.tsx +9 -2
- package/src/components/Testimonial/Testimonial.stories.tsx +1 -1
- package/src/components/Toggle/Toggle.stories.tsx +32 -9
- package/src/components/Toggle/Toggle.test.tsx +91 -0
- package/src/components/Toggle/Toggle.tsx +44 -27
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/layouts/Grid/Grid.stories.tsx +49 -49
- package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +2 -2
- package/src/lib/composables/useAccordion.ts +12 -3
- package/src/lib/composables/useBreadcrumb.ts +2 -2
- package/src/lib/composables/useCallout.ts +7 -7
- package/src/lib/composables/useNavbar.ts +1 -1
- package/src/lib/constants/components.ts +1 -1
- package/src/lib/storybook/InteractiveDemo.tsx +113 -0
- package/src/lib/storybook/PreviewContainer.tsx +36 -0
- package/src/lib/storybook/VariantsGrid.tsx +21 -0
- package/src/lib/storybook/index.ts +3 -0
- package/src/lib/theme/core/createThemeObject.ts +9 -5
- package/src/lib/theme/devtools/CLI.ts +155 -0
- package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +213 -0
- package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +566 -0
- package/src/lib/theme/devtools/LiveEditor.tsx +2 -1
- package/src/lib/theme/devtools/index.ts +3 -0
- package/src/lib/theme/errors/errors.ts +8 -0
- package/src/lib/theme/runtime/ThemeProvider.tsx +117 -57
- package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +305 -0
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +588 -0
- package/src/lib/theme/utils/__tests__/themeValidation.test.ts +264 -0
- package/src/lib/theme/utils/index.ts +1 -0
- package/src/lib/theme/utils/themeValidation.ts +501 -0
- package/src/lib/theme-tools.ts +32 -3
- package/src/lib/types/components.ts +81 -26
- package/src/lib/utils/themeNaming.ts +1 -1
- package/src/styles/06-components/_components.callout.scss +29 -33
- package/src/styles/06-components/_index.scss +1 -1
- package/src/styles/99-utilities/_utilities.display.scss +14 -3
- package/src/styles/99-utilities/_utilities.flex.scss +10 -10
- package/src/styles/99-utilities/_utilities.text.scss +28 -8
- package/scripts/cli/__tests__/cli-commands.test.js +0 -204
- package/scripts/cli/__tests__/utils.test.js +0 -201
- 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
|
|
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-
|
|
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
|
|
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
|
-
|
|
648
|
+
'aria-label'?: string;
|
|
646
649
|
/**
|
|
647
650
|
* ARIA described by reference
|
|
648
651
|
*/
|
|
649
|
-
|
|
652
|
+
'aria-describedby'?: string;
|
|
650
653
|
/**
|
|
651
654
|
* ARIA expanded state (for toggle buttons)
|
|
652
655
|
*/
|
|
653
|
-
|
|
656
|
+
'aria-expanded'?: boolean;
|
|
654
657
|
/**
|
|
655
658
|
* ARIA controls reference
|
|
656
659
|
*/
|
|
657
|
-
|
|
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
|
|
780
|
+
* Display in compact (one-line) mode
|
|
768
781
|
*/
|
|
769
|
-
|
|
782
|
+
compact?: boolean;
|
|
770
783
|
/**
|
|
771
784
|
* Display as toast notification
|
|
772
785
|
*/
|
|
773
|
-
|
|
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
|
-
|
|
1015
|
+
'aria-label'?: string;
|
|
986
1016
|
/**
|
|
987
1017
|
* ARIA described by reference
|
|
988
1018
|
*/
|
|
989
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 = "",
|
|
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:
|
|
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]
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
2851
|
-
|
|
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,
|
|
2863
|
-
return `c-callout ${variant ? `c-callout--${variant}` : ""} ${
|
|
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
|
-
|
|
2875
|
-
|
|
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
|
|
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
|
-
|
|
2932
|
-
|
|
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
|
-
|
|
2955
|
-
|
|
2970
|
+
compact: compact,
|
|
2971
|
+
isToast: isToast,
|
|
2956
2972
|
glass: glass,
|
|
2957
2973
|
className: className
|
|
2958
2974
|
}),
|