@arctura/atomics 0.0.1

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 (87) hide show
  1. package/dist/hooks.cjs +1 -0
  2. package/dist/hooks.js +2 -0
  3. package/dist/index.cjs +1 -0
  4. package/dist/index.js +1980 -0
  5. package/dist/lib/hooks.d.ts +5 -0
  6. package/dist/lib/hooks.d.ts.map +1 -0
  7. package/dist/lib/index.d.ts +6 -0
  8. package/dist/lib/index.d.ts.map +1 -0
  9. package/dist/lib/useBreakpoints.d.ts +48 -0
  10. package/dist/lib/useBreakpoints.d.ts.map +1 -0
  11. package/dist/lib/useControlled.d.ts +38 -0
  12. package/dist/lib/useControlled.d.ts.map +1 -0
  13. package/dist/src/badge/Badge.d.ts +116 -0
  14. package/dist/src/badge/Badge.d.ts.map +1 -0
  15. package/dist/src/badge/index.d.ts +3 -0
  16. package/dist/src/badge/index.d.ts.map +1 -0
  17. package/dist/src/buttons/Button.d.ts +126 -0
  18. package/dist/src/buttons/Button.d.ts.map +1 -0
  19. package/dist/src/buttons/Fab.d.ts +114 -0
  20. package/dist/src/buttons/Fab.d.ts.map +1 -0
  21. package/dist/src/buttons/IconButton.d.ts +105 -0
  22. package/dist/src/buttons/IconButton.d.ts.map +1 -0
  23. package/dist/src/buttons/index.d.ts +9 -0
  24. package/dist/src/buttons/index.d.ts.map +1 -0
  25. package/dist/src/card/Card.d.ts +35 -0
  26. package/dist/src/card/Card.d.ts.map +1 -0
  27. package/dist/src/card/Footer.d.ts +67 -0
  28. package/dist/src/card/Footer.d.ts.map +1 -0
  29. package/dist/src/card/Header.d.ts +56 -0
  30. package/dist/src/card/Header.d.ts.map +1 -0
  31. package/dist/src/card/Media.d.ts +65 -0
  32. package/dist/src/card/Media.d.ts.map +1 -0
  33. package/dist/src/card/index.d.ts +11 -0
  34. package/dist/src/card/index.d.ts.map +1 -0
  35. package/dist/src/carousel/Carousel.d.ts +124 -0
  36. package/dist/src/carousel/Carousel.d.ts.map +1 -0
  37. package/dist/src/carousel/Hero.d.ts +156 -0
  38. package/dist/src/carousel/Hero.d.ts.map +1 -0
  39. package/dist/src/carousel/index.d.ts +4 -0
  40. package/dist/src/carousel/index.d.ts.map +1 -0
  41. package/dist/src/drawer/Drawer.d.ts +40 -0
  42. package/dist/src/drawer/Drawer.d.ts.map +1 -0
  43. package/dist/src/drawer/index.d.ts +5 -0
  44. package/dist/src/drawer/index.d.ts.map +1 -0
  45. package/dist/src/form/Form.d.ts +168 -0
  46. package/dist/src/form/Form.d.ts.map +1 -0
  47. package/dist/src/form/TextArea.d.ts +266 -0
  48. package/dist/src/form/TextArea.d.ts.map +1 -0
  49. package/dist/src/form/TextInput.d.ts +200 -0
  50. package/dist/src/form/TextInput.d.ts.map +1 -0
  51. package/dist/src/form/index.d.ts +7 -0
  52. package/dist/src/form/index.d.ts.map +1 -0
  53. package/dist/src/index.d.ts +21 -0
  54. package/dist/src/index.d.ts.map +1 -0
  55. package/dist/src/list/List.d.ts +122 -0
  56. package/dist/src/list/List.d.ts.map +1 -0
  57. package/dist/src/list/ListItem.d.ts +157 -0
  58. package/dist/src/list/ListItem.d.ts.map +1 -0
  59. package/dist/src/list/index.d.ts +6 -0
  60. package/dist/src/list/index.d.ts.map +1 -0
  61. package/dist/src/progress-stepper/Connector.d.ts +48 -0
  62. package/dist/src/progress-stepper/Connector.d.ts.map +1 -0
  63. package/dist/src/progress-stepper/Node.d.ts +75 -0
  64. package/dist/src/progress-stepper/Node.d.ts.map +1 -0
  65. package/dist/src/progress-stepper/ProgressStepper.d.ts +108 -0
  66. package/dist/src/progress-stepper/ProgressStepper.d.ts.map +1 -0
  67. package/dist/src/progress-stepper/Step.d.ts +93 -0
  68. package/dist/src/progress-stepper/Step.d.ts.map +1 -0
  69. package/dist/src/progress-stepper/index.d.ts +10 -0
  70. package/dist/src/progress-stepper/index.d.ts.map +1 -0
  71. package/dist/src/select/Select.d.ts +98 -0
  72. package/dist/src/select/Select.d.ts.map +1 -0
  73. package/dist/src/select/index.d.ts +5 -0
  74. package/dist/src/select/index.d.ts.map +1 -0
  75. package/dist/src/typography/Link.d.ts +86 -0
  76. package/dist/src/typography/Link.d.ts.map +1 -0
  77. package/dist/src/typography/Typography.d.ts +148 -0
  78. package/dist/src/typography/Typography.d.ts.map +1 -0
  79. package/dist/src/typography/index.d.ts +7 -0
  80. package/dist/src/typography/index.d.ts.map +1 -0
  81. package/dist/src/utils/capitalize.d.ts +3 -0
  82. package/dist/src/utils/capitalize.d.ts.map +1 -0
  83. package/dist/src/utils/index.d.ts +2 -0
  84. package/dist/src/utils/index.d.ts.map +1 -0
  85. package/dist/useBreakpoints-CXOalIdM.js +37 -0
  86. package/dist/useBreakpoints-nd-Blu7O.cjs +1 -0
  87. package/package.json +67 -0
@@ -0,0 +1,67 @@
1
+ import type { FC, HTMLAttributes, Ref } from 'react';
2
+ import type { ButtonAdornment, ButtonVariant } from '@/src/buttons';
3
+ /**
4
+ * Describes an action button for the Card Footer.
5
+ *
6
+ * @property {Adornment} [endAdornment] - Element to display at the end of the button (e.g., icon).
7
+ * @property {string} [href] - URL to link to when the button is clicked.
8
+ * @property {string} label - Button label text.
9
+ * @property {() => void} [onClick] - Click handler for the button.
10
+ * @property {Adornment} [startAdornment] - Element to display at the start of the button (e.g., icon).
11
+ * @property {string} [target] - Target attribute for the link (e.g., '_blank').
12
+ * @property {ButtonVariant} [variant] - Visual style variant for the button.
13
+ */
14
+ interface FooterAction {
15
+ endAdornment?: ButtonAdornment;
16
+ href?: string;
17
+ label: string;
18
+ onClick?: () => void;
19
+ startAdornment?: ButtonAdornment;
20
+ target?: string;
21
+ variant?: ButtonVariant;
22
+ }
23
+ /**
24
+ * Props for the Card Footer component.
25
+ *
26
+ * @property {FooterAction[]} [actions] - Array of action button definitions to display in the footer.
27
+ * @property {string} [description] - Optional description text to display below the title/subtitle.
28
+ * @property {Ref<HTMLDivElement>} [ref] - Ref for the footer container div.
29
+ * @property {string} [subtitle] - Optional subtitle text to display below the title.
30
+ * @property {string} [title] - Title text to display in the footer.
31
+ */
32
+ interface FooterProps extends HTMLAttributes<HTMLDivElement> {
33
+ actions?: FooterAction[];
34
+ description?: string;
35
+ ref?: Ref<HTMLDivElement>;
36
+ subtitle?: string;
37
+ title?: string;
38
+ }
39
+ /**
40
+ * Card Footer component for displaying a title, subtitle, description, and action buttons.
41
+ *
42
+ * Renders a styled footer section with optional title, subtitle, description, and a row of action buttons. Each action is rendered as a Button with optional adornments and link support.
43
+ *
44
+ * @param {FooterProps} props - Props for configuring the footer content and actions.
45
+ * @returns {JSX.Element} The rendered footer component.
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * import { Footer } from '@/src';
50
+ *
51
+ * const MyCardFooter = () => (
52
+ * <Footer
53
+ * title="Footer Title"
54
+ * subtitle="Footer Subtitle"
55
+ * description="This is a description for the card footer."
56
+ * actions={[
57
+ * { label: 'Action 1', onClick: () => console.log('Action 1 clicked') },
58
+ * { label: 'Action 2', href: 'https://example.com', target: '_blank' },
59
+ * ]}
60
+ * />
61
+ * );
62
+ * ```
63
+ */
64
+ declare const Footer: FC<FooterProps>;
65
+ export { Footer };
66
+ export type { FooterAction };
67
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/card/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpE;;;;;;;;;;GAUG;AACH,UAAU,YAAY;IACpB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,UAAU,WAAY,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAqD3B,CAAC;AAIF,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { ComponentProps, FC, HTMLAttributes, ReactElement, ReactNode, Ref } from 'react';
2
+ import type { IconDefinition } from '@fortawesome/free-solid-svg-icons';
3
+ import { Badge } from '@/src/badge';
4
+ /**
5
+ * An adornment that may appear in the card header.
6
+ *
7
+ * This can be either:
8
+ * - an `IconDefinition` (a FontAwesome icon) which will be rendered
9
+ * with `FontAwesomeIcon`, or
10
+ * - an object with a `src` string and optional `alt` text which will be
11
+ * rendered using a native image element.
12
+ */
13
+ type HeaderAdornment = IconDefinition | {
14
+ src: string;
15
+ alt?: string;
16
+ };
17
+ /**
18
+ * Props for the Card Header component.
19
+ *
20
+ * @property {HeaderAdornment} [adornment] - Optional adornment which can be an icon definition or an image source with alt text.
21
+ * @property {ReactElement<ComponentProps<typeof Badge>>} [badge] - Optional badge element to display.
22
+ * @property {Ref<HTMLDivElement>} [ref] - Ref for the header div.
23
+ * @property {ReactNode} [subtitle] - Optional subtitle content.
24
+ * @property {string} title - Main title text (required).
25
+ */
26
+ interface HeaderProps extends HTMLAttributes<HTMLDivElement> {
27
+ adornment?: HeaderAdornment;
28
+ badge?: ReactElement<ComponentProps<typeof Badge>>;
29
+ ref?: Ref<HTMLDivElement>;
30
+ subtitle?: ReactNode;
31
+ title: string;
32
+ }
33
+ /**
34
+ * Card Header component for displaying a title, optional icon, badge, and subtitle.
35
+ *
36
+ * @param {HeaderProps} props - Props for configuring the header content and appearance.
37
+ * @returns {JSX.Element} The rendered card header.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * import { Badge, Header } from '@/src';
42
+ * import { faStar } from '@fortawesome/free-solid-svg-icons';
43
+ *
44
+ * const MyCardHeader = () => (
45
+ * <Header
46
+ * title="Card Title"
47
+ * subtitle="This is a subtitle for the card header."
48
+ * adornment={faStar}
49
+ * badge={<Badge>New</Badge>}
50
+ * />
51
+ * );
52
+ * ```
53
+ */
54
+ declare const Header: FC<HeaderProps>;
55
+ export { Header };
56
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/card/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC;;;;;;;;GAQG;AACH,KAAK,eAAe,GAAG,cAAc,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;;;;;;GAQG;AACH,UAAU,WAAY,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;IACnD,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AA8CD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA0B3B,CAAC;AAIF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { FC, HTMLAttributes, Ref } from 'react';
2
+ /**
3
+ * Supported aspect ratios for the Media component.
4
+ *
5
+ * - '1:1': Square
6
+ * - '16:9': Widescreen
7
+ * - '4:3': Standard
8
+ * - '3:2': Classic photo
9
+ * - '21:9': Ultra-wide
10
+ */
11
+ type AspectRatio = '1:1' | '16:9' | '4:3' | '3:2' | '21:9';
12
+ /**
13
+ * Image loading priority for the Media component.
14
+ *
15
+ * - 'eager': Loads image immediately (high priority)
16
+ * - 'lazy': Defers loading until needed (default)
17
+ */
18
+ type MediaPriority = 'eager' | 'lazy';
19
+ /**
20
+ * Props for the Card Media component.
21
+ *
22
+ * @property {string} [alt] - Alternative text for the image.
23
+ * @property {AspectRatio} [aspectRatio] - Aspect ratio for the media container.
24
+ * @property {boolean} [footerless] - If true, applies rounded corners to the bottom of the media.
25
+ * @property {boolean} [headerless] - If true, applies rounded corners to the top of the media.
26
+ * @property {MediaPriority} [priority] - Image loading priority ('eager' or 'lazy').
27
+ * @property {Ref<HTMLDivElement>} [ref] - Ref for the media container div.
28
+ * @property {string} [sizes] - Responsive image sizes attribute.
29
+ * @property {string} [src] - Image source URL.
30
+ */
31
+ interface MediaProps extends HTMLAttributes<HTMLDivElement> {
32
+ alt?: string;
33
+ aspectRatio?: AspectRatio;
34
+ footerless?: boolean;
35
+ headerless?: boolean;
36
+ priority?: MediaPriority;
37
+ ref?: Ref<HTMLDivElement>;
38
+ sizes?: string;
39
+ src?: string;
40
+ }
41
+ /**
42
+ * Card Media component for displaying an image with configurable aspect ratio and rounded corners.
43
+ * Renders a responsive image with support for custom aspect ratios, header/footer corner rounding, and loading priority.
44
+ *
45
+ * @param {MediaProps} props - Props for configuring the media content and appearance.
46
+ * @returns {JSX.Element} The rendered media component.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * import { Media } from '@/src';
51
+ *
52
+ * const MyCardMedia = () => (
53
+ * <Media
54
+ * src="/path/to/image.jpg"
55
+ * alt="Description of the image"
56
+ * aspectRatio="16:9"
57
+ * priority="eager"
58
+ * />
59
+ * );
60
+ * ```
61
+ */
62
+ declare const Media: FC<MediaProps>;
63
+ export { Media };
64
+ export type { MediaProps };
65
+ //# sourceMappingURL=Media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Media.d.ts","sourceRoot":"","sources":["../../../src/card/Media.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGrD;;;;;;;;GAQG;AACH,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3D;;;;;GAKG;AACH,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,UAAU,UAAW,SAAQ,cAAc,CAAC,cAAc,CAAC;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAoBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CA+BzB,CAAC;AAIF,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Header } from './Header';
2
+ import { Card } from './Card';
3
+ import { Footer } from './Footer';
4
+ import { Media } from './Media';
5
+ import type { FooterAction } from './Footer';
6
+ export { Header };
7
+ export { Card };
8
+ export { Footer };
9
+ export { Media };
10
+ export type { FooterAction };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,124 @@
1
+ import type { FC, HTMLAttributes, ReactNode, Ref } from 'react';
2
+ import type { IconButtonVariant } from '@/src/buttons';
3
+ /**
4
+ * Optional class overrides for the carousel layout regions.
5
+ */
6
+ interface CarouselClasses {
7
+ /** Class applied to the outer carousel container. */
8
+ container?: string;
9
+ /** Class applied to the carousel controls. */
10
+ controls?: string;
11
+ /** Class applied to the controls wrapper. */
12
+ controlsContainer?: string;
13
+ /** Class applied to each pagination dot. */
14
+ dot?: string;
15
+ /** Class applied to the pagination dots container. */
16
+ dotsContainer?: string;
17
+ /** Class applied to the root carousel wrapper. */
18
+ root?: string;
19
+ /** Class applied to each carousel slide. */
20
+ slide?: string;
21
+ /** Class applied to the slides container. */
22
+ slidesContainer?: string;
23
+ /** Class applied to the inner slide content wrapper. */
24
+ slideInner?: string;
25
+ }
26
+ /**
27
+ * Gap size (in px) between carousel slides.
28
+ * @type {8|16|24|32|40|48}
29
+ */
30
+ type CarouselGap = 8 | 16 | 24 | 32 | 40 | 48;
31
+ /**
32
+ * ARIA role for the carousel container for accessibility.
33
+ * @type {'region'|'listbox'|'group'}
34
+ */
35
+ type CarouselRole = 'region' | 'listbox' | 'group';
36
+ /**
37
+ * Number of slides visible at once in the carousel.
38
+ * @type {1|2|3|4|5}
39
+ */
40
+ type CarouselSlidesPerView = 1 | 2 | 3 | 4 | 5;
41
+ /**
42
+ * Number of slides to scroll per navigation action.
43
+ * @type {1|2|3|4|5}
44
+ */
45
+ type CarouselSlidesPerGroup = 1 | 2 | 3 | 4 | 5;
46
+ /**
47
+ * Type of transition animation between slides.
48
+ * @type {'fade'|'slide'}
49
+ */
50
+ type CarouselTransition = 'fade' | 'slide';
51
+ /**
52
+ * Props for the Carousel component.
53
+ */
54
+ interface CarouselProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
55
+ /** ARIA label for the carousel region. */
56
+ 'aria-label'?: string;
57
+ /** Automatically advances slides on an interval. */
58
+ autoPlay?: boolean;
59
+ /** Slide content rendered inside the carousel. */
60
+ children?: ReactNode;
61
+ /** Optional class overrides for carousel layout regions. */
62
+ classes?: CarouselClasses;
63
+ /** Visual variant for the previous and next controls. */
64
+ controlsVariant?: IconButtonVariant;
65
+ /** Initial slide index to show on mount. */
66
+ defaultIndex?: number;
67
+ /** Enables swipe and drag gestures. */
68
+ enableSwipe?: boolean;
69
+ /** Horizontal gap between slides, in pixels. */
70
+ gap?: CarouselGap;
71
+ /** Autoplay interval, in milliseconds. */
72
+ interval?: number;
73
+ /** Number of slides visible in the viewport. */
74
+ slidesPerView?: CarouselSlidesPerView;
75
+ /** Number of slides advanced per navigation action. */
76
+ slidesPerGroup?: CarouselSlidesPerGroup;
77
+ /** Enables looping when the carousel reaches either end. */
78
+ loop?: boolean;
79
+ /** Pauses autoplay while the pointer is over the carousel. */
80
+ pauseOnHover?: boolean;
81
+ /** ARIA role for the carousel wrapper. */
82
+ role?: CarouselRole;
83
+ /** Ref forwarded to the outer carousel wrapper. */
84
+ ref?: Ref<HTMLDivElement>;
85
+ /** Shows the previous and next navigation buttons. */
86
+ showControls?: boolean;
87
+ /** Shows pagination dots below the carousel. */
88
+ showDots?: boolean;
89
+ /** Transition style between slides. */
90
+ transition?: CarouselTransition;
91
+ /** Transition duration used by Embla, in milliseconds. */
92
+ transitionDuration?: number;
93
+ }
94
+ /**
95
+ * Carousel component for displaying a set of slides with optional autoplay, navigation controls, dots, and swipe support.
96
+ *
97
+ * @param {CarouselProps} props - Props for configuring the carousel behavior and appearance.
98
+ * @returns {JSX.Element} The rendered carousel component.
99
+ *
100
+ * @example
101
+ * ```tsx
102
+ * import { Carousel } from '@/src';
103
+ *
104
+ * const MyCarousel = () => (
105
+ * <Carousel
106
+ * aria-label="Example Carousel"
107
+ * autoPlay
108
+ * interval={5000}
109
+ * slidesPerView={1}
110
+ * showControls
111
+ * showDots
112
+ * transition="fade"
113
+ * transitionDuration={50}
114
+ * >
115
+ * <div>Slide 1</div>
116
+ * <div>Slide 2</div>
117
+ * <div>Slide 3</div>
118
+ * </Carousel>
119
+ * );
120
+ * ```
121
+ */
122
+ declare const Carousel: FC<CarouselProps>;
123
+ export { Carousel };
124
+ //# sourceMappingURL=Carousel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAQhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;GAEG;AACH,UAAU,eAAe;IACvB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE9C;;;GAGG;AACH,KAAK,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnD;;;GAGG;AACH,KAAK,qBAAqB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/C;;;GAGG;AACH,KAAK,sBAAsB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEhD;;;GAGG;AACH,KAAK,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAwB3C;;GAEG;AACH,UAAU,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC/E,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yDAAyD;IACzD,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,uDAAuD;IACvD,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,mDAAmD;IACnD,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA8O/B,CAAC;AAIF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,156 @@
1
+ import type { FC, HTMLAttributes, ReactNode } from 'react';
2
+ import type { HeadingVariant } from '@/src/typography';
3
+ /**
4
+ * Optional class overrides for the hero layout regions.
5
+ */
6
+ interface HeaderClasses {
7
+ /** Class applied to the header action row. */
8
+ action?: string;
9
+ /** Class applied to the overlay controls wrapper. */
10
+ controls?: string;
11
+ /** Class applied to each pagination dot. */
12
+ dot?: string;
13
+ /** Class applied to the pagination dots container. */
14
+ dotsContainer?: string;
15
+ /** Class applied to the root hero container. */
16
+ root?: string;
17
+ /** Class applied to each hero slide. */
18
+ slide?: string;
19
+ /** Class applied to the slide viewport wrapper. */
20
+ viewport?: string;
21
+ /** Classes applied to header overlay regions. */
22
+ header?: {
23
+ /** Class applied to the main header overlay container. */
24
+ root?: string;
25
+ /** Class applied to the header title. */
26
+ title?: string;
27
+ };
28
+ }
29
+ /**
30
+ * Represents a link/button in the Hero section.
31
+ */
32
+ interface HeroLink {
33
+ /** Destination URL for the hero action. */
34
+ href: string;
35
+ /** Visible label for the action. */
36
+ label: string;
37
+ /** Optional visual style for the action button. */
38
+ variant?: 'primary' | 'secondary' | 'text' | 'outline';
39
+ }
40
+ /**
41
+ * Header content for the Hero section, including title, description, and links.
42
+ */
43
+ interface HeroHeader {
44
+ /** Optional description text rendered below the title. */
45
+ description?: ReactNode;
46
+ /** Optional array of action links or buttons shown in the header. */
47
+ links?: HeroLink[];
48
+ /** Optional title content, either plain text or JSX. */
49
+ title?: string;
50
+ /** Typography variant used for the title. */
51
+ variant?: HeadingVariant;
52
+ }
53
+ /**
54
+ * Represents an image displayed in the Hero carousel.
55
+ */
56
+ interface HeroImage {
57
+ /** Source path or URL for the hero image. */
58
+ src: string;
59
+ /** Alternative text describing the hero image. */
60
+ alt: string;
61
+ }
62
+ /**
63
+ * Allowed height options for the Hero component.
64
+ * @type {'sm'|'md'|'lg'|'xl'|'full'}
65
+ */
66
+ type HeroHeight = 'sm' | 'md' | 'lg' | 'xl' | 'full';
67
+ /**
68
+ * Allowed aspect ratio options for the Hero component.
69
+ * @type {'16:9'|'4:3'|'1:1'}
70
+ */
71
+ type HeroAspectRatio = '16:9' | '4:3' | '1:1';
72
+ /**
73
+ * Props for the Hero component, configuring layout, images, header, and carousel behavior.
74
+ */
75
+ interface HeroProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
76
+ /** Aspect ratio used when the hero is rendered as an image container. */
77
+ aspectRatio?: HeroAspectRatio;
78
+ /** Automatically advances between images on a timer. */
79
+ autoPlay?: boolean;
80
+ /** Optional class overrides for hero layout regions. */
81
+ classes?: HeaderClasses;
82
+ /** Enables swipe and drag gestures for the hero carousel. */
83
+ enableSwipe?: boolean;
84
+ /** Header content rendered over the hero images. */
85
+ header?: HeroHeader;
86
+ /** Fixed hero height preset used when `aspectRatio` is not provided. */
87
+ height?: HeroHeight;
88
+ /** Images displayed inside the hero carousel. */
89
+ images?: HeroImage[];
90
+ /** Autoplay interval in milliseconds. */
91
+ interval?: number;
92
+ /** Uses lazy loading for hero images instead of eager loading. */
93
+ lazyLoad?: boolean;
94
+ /** Enables looping when the carousel reaches either end. */
95
+ loop?: boolean;
96
+ /** CSS object-fit value used for the hero images. */
97
+ objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
98
+ /** Shows the previous and next navigation controls. */
99
+ showControls?: boolean;
100
+ /** Pauses autoplay while the pointer is over the hero. */
101
+ pauseOnHover?: boolean;
102
+ /** Enables the mobile-first responsive layout. */
103
+ responsive?: boolean;
104
+ /** Shows pagination dots below the hero. */
105
+ showDots?: boolean;
106
+ /** Transition style used between hero images. */
107
+ transition?: 'fade' | 'slide';
108
+ /** Transition duration in milliseconds. */
109
+ transitionDuration?: number;
110
+ }
111
+ /**
112
+ * Hero component for displaying a prominent section with images, header, and carousel features.
113
+ *
114
+ * @param {HeroProps} props - Props for configuring the hero section's layout, images, and behavior.
115
+ * @returns {JSX.Element} The rendered hero section.
116
+ *
117
+ * @example
118
+ * ```tsx
119
+ * import { Hero } from '@/src';
120
+ *
121
+ * const MyHero = () => (
122
+ * <Hero
123
+ * aspectRatio="16:9"
124
+ * autoPlay
125
+ * header={{
126
+ * title: 'Welcome to Our Site',
127
+ * description: 'Discover our amazing products and services.',
128
+ * links: [
129
+ * { href: '/products', label: 'Shop Now', variant: 'primary' },
130
+ * { href: '/about', label: 'Learn More', variant: 'secondary' },
131
+ * ],
132
+ * }}
133
+ * height="lg"
134
+ * images={[
135
+ * { src: '/images/hero1.jpg', alt: 'Hero Image 1' },
136
+ * { src: '/images/hero2.jpg', alt: 'Hero Image 2' },
137
+ * ]}
138
+ * interval={5000}
139
+ * lazyLoad
140
+ * loop
141
+ * objectFit="cover"
142
+ * showControls
143
+ * pauseOnHover
144
+ * responsive
145
+ * showDots
146
+ * transition="fade"
147
+ * transitionDuration={700}
148
+ * >
149
+ * {Hero content goes here}
150
+ * </Hero>
151
+ * );
152
+ * ```
153
+ */
154
+ declare const Hero: FC<HeroProps>;
155
+ export { Hero };
156
+ //# sourceMappingURL=Hero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../../src/carousel/Hero.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,UAAU,aAAa;IACrB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE;QACP,0DAA0D;QAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,yCAAyC;QACzC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,UAAU,QAAQ;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;CACxD;AAED;;GAEG;AACH,UAAU,UAAU;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,UAAU,SAAS;IACjB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAkCrD;;;GAGG;AACH,KAAK,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AA0B9C;;GAEG;AACH,UAAU,SAAU,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC3E,yEAAyE;IACzE,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oDAAoD;IACpD,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,iDAAiD;IACjD,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;IACjE,uDAAuD;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,QAAA,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAqPvB,CAAC;AAIF,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Hero } from './Hero';
2
+ import { Carousel } from './Carousel';
3
+ export { Hero, Carousel };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/carousel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { FC, HTMLAttributes, KeyboardEvent, MouseEvent, ReactNode, Ref } from 'react';
2
+ interface DrawerClasses {
3
+ body?: string;
4
+ backdrop?: string;
5
+ header?: {
6
+ center?: string;
7
+ left?: string;
8
+ right?: string;
9
+ root?: string;
10
+ };
11
+ overlay?: string;
12
+ root?: string;
13
+ }
14
+ interface DrawerHeader {
15
+ title?: string;
16
+ leftSlot?: ReactNode;
17
+ rightSlot?: ReactNode;
18
+ }
19
+ interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
20
+ 'aria-label'?: string;
21
+ 'aria-labelledby'?: string;
22
+ anchor?: 'left' | 'right' | 'top' | 'bottom';
23
+ classes?: DrawerClasses;
24
+ closeOnEscape?: boolean;
25
+ children?: ReactNode;
26
+ backdropProps?: HTMLAttributes<HTMLDivElement>;
27
+ backdropRef?: Ref<HTMLDivElement>;
28
+ header?: DrawerHeader;
29
+ id?: string;
30
+ onBackdropClick?: (event: MouseEvent<HTMLDivElement>) => void;
31
+ onClose: () => void;
32
+ onKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void;
33
+ open: boolean;
34
+ ref?: Ref<HTMLDivElement>;
35
+ showBackdrop?: boolean;
36
+ }
37
+ declare const Drawer: FC<DrawerProps>;
38
+ export { Drawer };
39
+ export type { DrawerClasses };
40
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/drawer/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAQ3F,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,WAAY,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC7C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC3D,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAqH3B,CAAC;AAIF,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Drawer } from './Drawer';
2
+ import type { DrawerClasses } from './Drawer';
3
+ export { Drawer };
4
+ export type { DrawerClasses };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drawer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,CAAC"}