@mila_studios/mycelia-design-system 0.1.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 (149) hide show
  1. package/README.md +187 -0
  2. package/mycelia-ui.css +5545 -0
  3. package/package.json +127 -0
  4. package/packages/ui/dist/components/accordion.d.mts +9 -0
  5. package/packages/ui/dist/components/accordion.js +74 -0
  6. package/packages/ui/dist/components/accordion.js.map +1 -0
  7. package/packages/ui/dist/components/alert-dialog.d.mts +22 -0
  8. package/packages/ui/dist/components/alert-dialog.js +117 -0
  9. package/packages/ui/dist/components/alert-dialog.js.map +1 -0
  10. package/packages/ui/dist/components/alert.d.mts +28 -0
  11. package/packages/ui/dist/components/alert.js +140 -0
  12. package/packages/ui/dist/components/alert.js.map +1 -0
  13. package/packages/ui/dist/components/aspect-ratio.d.mts +7 -0
  14. package/packages/ui/dist/components/aspect-ratio.js +28 -0
  15. package/packages/ui/dist/components/aspect-ratio.js.map +1 -0
  16. package/packages/ui/dist/components/avatar-stack.d.mts +16 -0
  17. package/packages/ui/dist/components/avatar-stack.js +57 -0
  18. package/packages/ui/dist/components/avatar-stack.js.map +1 -0
  19. package/packages/ui/dist/components/avatar.d.mts +16 -0
  20. package/packages/ui/dist/components/avatar.js +108 -0
  21. package/packages/ui/dist/components/avatar.js.map +1 -0
  22. package/packages/ui/dist/components/badge.d.mts +16 -0
  23. package/packages/ui/dist/components/badge.js +61 -0
  24. package/packages/ui/dist/components/badge.js.map +1 -0
  25. package/packages/ui/dist/components/breadcrumb.d.mts +22 -0
  26. package/packages/ui/dist/components/breadcrumb.js +118 -0
  27. package/packages/ui/dist/components/breadcrumb.js.map +1 -0
  28. package/packages/ui/dist/components/button.d.mts +36 -0
  29. package/packages/ui/dist/components/button.js +204 -0
  30. package/packages/ui/dist/components/button.js.map +1 -0
  31. package/packages/ui/dist/components/calendar.d.mts +11 -0
  32. package/packages/ui/dist/components/calendar.js +27 -0
  33. package/packages/ui/dist/components/calendar.js.map +1 -0
  34. package/packages/ui/dist/components/card.d.mts +10 -0
  35. package/packages/ui/dist/components/card.js +84 -0
  36. package/packages/ui/dist/components/card.js.map +1 -0
  37. package/packages/ui/dist/components/carousel.d.mts +35 -0
  38. package/packages/ui/dist/components/carousel.js +362 -0
  39. package/packages/ui/dist/components/carousel.js.map +1 -0
  40. package/packages/ui/dist/components/chart.d.mts +88 -0
  41. package/packages/ui/dist/components/chart.js +249 -0
  42. package/packages/ui/dist/components/chart.js.map +1 -0
  43. package/packages/ui/dist/components/checkbox.d.mts +44 -0
  44. package/packages/ui/dist/components/checkbox.js +161 -0
  45. package/packages/ui/dist/components/checkbox.js.map +1 -0
  46. package/packages/ui/dist/components/combobox.d.mts +45 -0
  47. package/packages/ui/dist/components/combobox.js +148 -0
  48. package/packages/ui/dist/components/combobox.js.map +1 -0
  49. package/packages/ui/dist/components/command-menu.d.mts +88 -0
  50. package/packages/ui/dist/components/command-menu.js +414 -0
  51. package/packages/ui/dist/components/command-menu.js.map +1 -0
  52. package/packages/ui/dist/components/command.d.mts +84 -0
  53. package/packages/ui/dist/components/command.js +125 -0
  54. package/packages/ui/dist/components/command.js.map +1 -0
  55. package/packages/ui/dist/components/data-table.d.mts +23 -0
  56. package/packages/ui/dist/components/data-table.js +377 -0
  57. package/packages/ui/dist/components/data-table.js.map +1 -0
  58. package/packages/ui/dist/components/date-picker.d.mts +28 -0
  59. package/packages/ui/dist/components/date-picker.js +217 -0
  60. package/packages/ui/dist/components/date-picker.js.map +1 -0
  61. package/packages/ui/dist/components/dialog.d.mts +19 -0
  62. package/packages/ui/dist/components/dialog.js +146 -0
  63. package/packages/ui/dist/components/dialog.js.map +1 -0
  64. package/packages/ui/dist/components/drawer.d.mts +20 -0
  65. package/packages/ui/dist/components/drawer.js +159 -0
  66. package/packages/ui/dist/components/drawer.js.map +1 -0
  67. package/packages/ui/dist/components/hover-card.d.mts +9 -0
  68. package/packages/ui/dist/components/hover-card.js +35 -0
  69. package/packages/ui/dist/components/hover-card.js.map +1 -0
  70. package/packages/ui/dist/components/icon-button.d.mts +22 -0
  71. package/packages/ui/dist/components/icon-button.js +169 -0
  72. package/packages/ui/dist/components/icon-button.js.map +1 -0
  73. package/packages/ui/dist/components/input-file.d.mts +12 -0
  74. package/packages/ui/dist/components/input-file.js +209 -0
  75. package/packages/ui/dist/components/input-file.js.map +1 -0
  76. package/packages/ui/dist/components/input-otp.d.mts +85 -0
  77. package/packages/ui/dist/components/input-otp.js +254 -0
  78. package/packages/ui/dist/components/input-otp.js.map +1 -0
  79. package/packages/ui/dist/components/input.d.mts +17 -0
  80. package/packages/ui/dist/components/input.js +116 -0
  81. package/packages/ui/dist/components/input.js.map +1 -0
  82. package/packages/ui/dist/components/label.d.mts +14 -0
  83. package/packages/ui/dist/components/label.js +40 -0
  84. package/packages/ui/dist/components/label.js.map +1 -0
  85. package/packages/ui/dist/components/navigation-menu.d.mts +20 -0
  86. package/packages/ui/dist/components/navigation-menu.js +136 -0
  87. package/packages/ui/dist/components/navigation-menu.js.map +1 -0
  88. package/packages/ui/dist/components/pagination.d.mts +27 -0
  89. package/packages/ui/dist/components/pagination.js +159 -0
  90. package/packages/ui/dist/components/pagination.js.map +1 -0
  91. package/packages/ui/dist/components/popover.d.mts +9 -0
  92. package/packages/ui/dist/components/popover.js +34 -0
  93. package/packages/ui/dist/components/popover.js.map +1 -0
  94. package/packages/ui/dist/components/progress.d.mts +13 -0
  95. package/packages/ui/dist/components/progress.js +44 -0
  96. package/packages/ui/dist/components/progress.js.map +1 -0
  97. package/packages/ui/dist/components/radio-group.d.mts +42 -0
  98. package/packages/ui/dist/components/radio-group.js +125 -0
  99. package/packages/ui/dist/components/radio-group.js.map +1 -0
  100. package/packages/ui/dist/components/resizable.d.mts +9 -0
  101. package/packages/ui/dist/components/resizable.js +70 -0
  102. package/packages/ui/dist/components/resizable.js.map +1 -0
  103. package/packages/ui/dist/components/scroll-area.d.mts +15 -0
  104. package/packages/ui/dist/components/scroll-area.js +70 -0
  105. package/packages/ui/dist/components/scroll-area.js.map +1 -0
  106. package/packages/ui/dist/components/separator.d.mts +27 -0
  107. package/packages/ui/dist/components/separator.js +81 -0
  108. package/packages/ui/dist/components/separator.js.map +1 -0
  109. package/packages/ui/dist/components/sheet.d.mts +26 -0
  110. package/packages/ui/dist/components/sheet.js +158 -0
  111. package/packages/ui/dist/components/sheet.js.map +1 -0
  112. package/packages/ui/dist/components/sidebar.d.mts +63 -0
  113. package/packages/ui/dist/components/sidebar.js +271 -0
  114. package/packages/ui/dist/components/sidebar.js.map +1 -0
  115. package/packages/ui/dist/components/skeleton.d.mts +13 -0
  116. package/packages/ui/dist/components/skeleton.js +34 -0
  117. package/packages/ui/dist/components/skeleton.js.map +1 -0
  118. package/packages/ui/dist/components/slider.d.mts +7 -0
  119. package/packages/ui/dist/components/slider.js +70 -0
  120. package/packages/ui/dist/components/slider.js.map +1 -0
  121. package/packages/ui/dist/components/sonner.d.mts +8 -0
  122. package/packages/ui/dist/components/sonner.js +112 -0
  123. package/packages/ui/dist/components/sonner.js.map +1 -0
  124. package/packages/ui/dist/components/spinner.d.mts +6 -0
  125. package/packages/ui/dist/components/spinner.js +44 -0
  126. package/packages/ui/dist/components/spinner.js.map +1 -0
  127. package/packages/ui/dist/components/switch.d.mts +43 -0
  128. package/packages/ui/dist/components/switch.js +136 -0
  129. package/packages/ui/dist/components/switch.js.map +1 -0
  130. package/packages/ui/dist/components/table.d.mts +16 -0
  131. package/packages/ui/dist/components/table.js +115 -0
  132. package/packages/ui/dist/components/table.js.map +1 -0
  133. package/packages/ui/dist/components/tabs.d.mts +17 -0
  134. package/packages/ui/dist/components/tabs.js +104 -0
  135. package/packages/ui/dist/components/tabs.js.map +1 -0
  136. package/packages/ui/dist/components/textarea.d.mts +12 -0
  137. package/packages/ui/dist/components/textarea.js +76 -0
  138. package/packages/ui/dist/components/textarea.js.map +1 -0
  139. package/packages/ui/dist/components/tooltip.d.mts +17 -0
  140. package/packages/ui/dist/components/tooltip.js +46 -0
  141. package/packages/ui/dist/components/tooltip.js.map +1 -0
  142. package/packages/ui/dist/lib/utils.d.mts +5 -0
  143. package/packages/ui/dist/lib/utils.js +11 -0
  144. package/packages/ui/dist/lib/utils.js.map +1 -0
  145. package/packages/ui/dist/mycelia-ui.css +5545 -0
  146. package/packages/ui/postcss.config.mjs +6 -0
  147. package/packages/ui/src/styles/bundle-entry.css +2 -0
  148. package/packages/ui/src/styles/globals.css +651 -0
  149. package/scripts/prepare-build.mjs +32 -0
@@ -0,0 +1,204 @@
1
+ import * as React from 'react';
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { cva } from 'class-variance-authority';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+
8
+ // src/components/button.tsx
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ var Spinner = React.forwardRef(
13
+ function Spinner2({ className, ...props }, ref) {
14
+ return /* @__PURE__ */ jsx(
15
+ "svg",
16
+ {
17
+ ref,
18
+ width: 16,
19
+ height: 16,
20
+ viewBox: "0 0 16 16",
21
+ fill: "none",
22
+ xmlns: "http://www.w3.org/2000/svg",
23
+ className: cn("animate-spin shrink-0", className),
24
+ "aria-hidden": true,
25
+ ...props,
26
+ children: /* @__PURE__ */ jsx(
27
+ "circle",
28
+ {
29
+ cx: "8",
30
+ cy: "8",
31
+ r: "6.5",
32
+ stroke: "currentColor",
33
+ strokeWidth: "1.5",
34
+ strokeLinecap: "round",
35
+ strokeDasharray: "31.8 41"
36
+ }
37
+ )
38
+ }
39
+ );
40
+ }
41
+ );
42
+ Spinner.displayName = "Spinner";
43
+ var buttonOutlineShadow = "shadow-[0_1px_3px_0_rgba(0,0,0,0.1),0_1px_2px_0_rgba(0,0,0,0.1)]";
44
+ var buttonVariants = cva(
45
+ [
46
+ "inline-flex shrink-0 items-center justify-center gap-2 font-sans font-medium whitespace-nowrap",
47
+ "rounded-lg transition-[color,background-color,border-color,box-shadow,opacity,text-decoration]",
48
+ "disabled:pointer-events-none disabled:opacity-90 disabled:data-[loading]:opacity-50",
49
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0"
50
+ ],
51
+ {
52
+ variants: {
53
+ variant: {
54
+ primary: [
55
+ "bg-[color:var(--mila-button-primary-bg)] text-[color:var(--mila-button-primary-fg)]",
56
+ "hover:bg-[color:var(--mila-button-primary-hover)] active:bg-[color:var(--mila-button-primary-hover)]",
57
+ "focus-visible:bg-[color:var(--mila-button-primary-hover)]",
58
+ "disabled:bg-[color:var(--mila-button-disabled-bg)] disabled:text-[color:var(--mila-button-disabled-fg)]"
59
+ ],
60
+ destructive: [
61
+ "bg-[color:var(--mila-button-destructive-bg)] text-[color:var(--mila-button-destructive-fg)]",
62
+ "hover:bg-[color:var(--mila-button-destructive-hover)] active:bg-[color:var(--mila-button-destructive-hover)]",
63
+ "focus-visible:bg-[color:var(--mila-button-destructive-hover)]",
64
+ "disabled:bg-[color:var(--mila-button-disabled-bg)] disabled:text-[color:var(--mila-button-disabled-fg)]"
65
+ ],
66
+ secondary: [
67
+ "border border-solid border-[color:var(--mila-button-secondary-border)]",
68
+ "bg-[color:var(--mila-button-secondary-bg)] text-[color:var(--mila-button-secondary-fg)]",
69
+ "hover:border-[color:var(--mila-button-secondary-hover-border)] hover:bg-[color:var(--mila-button-secondary-hover-bg)] hover:text-[color:var(--mila-button-secondary-hover-fg)]",
70
+ "active:border-[color:var(--mila-button-secondary-hover-border)] active:bg-[color:var(--mila-button-secondary-hover-bg)] active:text-[color:var(--mila-button-secondary-hover-fg)]",
71
+ "disabled:border-[color:var(--mila-button-outline-disabled-border)] disabled:bg-[color:var(--mila-button-outline-disabled-bg)] disabled:text-[color:var(--mila-button-outline-disabled-fg)]"
72
+ ],
73
+ outline: [
74
+ "border border-solid border-[color:var(--mila-button-outline-border)] bg-background",
75
+ "text-[color:var(--mila-button-outline-fg)]",
76
+ buttonOutlineShadow,
77
+ "hover:border-[color:var(--mila-button-outline-hover-border)] hover:bg-[color:var(--mila-button-outline-hover-bg)] hover:text-[color:var(--mila-button-outline-hover-fg)]",
78
+ "active:border-[color:var(--mila-button-outline-hover-border)] active:bg-[color:var(--mila-button-outline-hover-bg)] active:text-[color:var(--mila-button-outline-hover-fg)]",
79
+ "disabled:border-[color:var(--mila-button-outline-disabled-border)] disabled:bg-[color:var(--mila-button-outline-disabled-bg)] disabled:text-[color:var(--mila-button-outline-disabled-fg)] disabled:shadow-none"
80
+ ],
81
+ ghost: [
82
+ "bg-transparent text-[color:var(--mila-button-ghost-fg)]",
83
+ "hover:bg-[color:var(--mila-button-ghost-hover-bg)] hover:text-[color:var(--mila-button-ghost-hover-fg)]",
84
+ "active:bg-[color:var(--mila-button-ghost-hover-bg)] active:text-[color:var(--mila-button-ghost-hover-fg)]",
85
+ "disabled:bg-transparent disabled:text-[color:var(--mila-button-disabled-fg)]"
86
+ ],
87
+ link: [
88
+ "border-0 bg-transparent shadow-none",
89
+ "text-[color:var(--mila-link-button-fg)] underline-offset-4",
90
+ "hover:underline active:underline",
91
+ "focus-visible:no-underline",
92
+ "aria-disabled:no-underline",
93
+ "aria-disabled:pointer-events-none aria-disabled:opacity-90 aria-disabled:data-[loading]:opacity-50",
94
+ "[&_svg]:!size-[16.25px]"
95
+ ]
96
+ },
97
+ size: {
98
+ lg: "min-h-10 gap-2 px-6 py-[9.5px] text-sm leading-normal tracking-[0.07px] [&_svg]:size-[13.25px]",
99
+ default: "min-h-9 gap-2 px-4 py-[7.5px] text-sm leading-normal tracking-[0.07px] [&_svg]:size-[13.25px]",
100
+ sm: "min-h-8 gap-1.5 px-3 py-[5.5px] text-sm leading-normal tracking-[0.07px] [&_svg]:size-[13.25px]",
101
+ mini: "min-h-6 gap-1.5 rounded-[4px] px-2 py-[3px] text-xs leading-normal tracking-[0.18px] [&_svg]:size-[13.25px]"
102
+ }
103
+ },
104
+ defaultVariants: {
105
+ variant: "primary",
106
+ size: "default"
107
+ },
108
+ compoundVariants: [
109
+ {
110
+ variant: ["primary", "destructive", "secondary", "outline", "ghost"],
111
+ class: "focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[color:var(--mila-input-ring-focus)]"
112
+ },
113
+ {
114
+ variant: "link",
115
+ class: [
116
+ "focus:outline-none focus:ring-0 focus:ring-offset-0",
117
+ "focus:overflow-clip",
118
+ "focus:!shadow-[0_0_0_3px_var(--mila-input-ring-focus)]"
119
+ ]
120
+ }
121
+ ]
122
+ }
123
+ );
124
+ var buttonIconSlotClass = "inline-flex shrink-0 items-center justify-center";
125
+ var Button = React.forwardRef(function Button2({
126
+ className,
127
+ variant,
128
+ size,
129
+ asChild = false,
130
+ type = "button",
131
+ startIcon,
132
+ endIcon,
133
+ children,
134
+ disabled,
135
+ loading = false,
136
+ href,
137
+ ...props
138
+ }, ref) {
139
+ const effectiveVariant = variant ?? (href !== void 0 && href !== "" ? "link" : void 0);
140
+ const classes = cn(buttonVariants({ variant: effectiveVariant, size }), className);
141
+ const showStart = loading ? /* @__PURE__ */ jsx("span", { className: buttonIconSlotClass, children: /* @__PURE__ */ jsx(Spinner, {}) }) : startIcon ? /* @__PURE__ */ jsx("span", { className: buttonIconSlotClass, children: startIcon }) : null;
142
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
143
+ showStart,
144
+ children,
145
+ !loading && endIcon ? /* @__PURE__ */ jsx("span", { className: buttonIconSlotClass, children: endIcon }) : null
146
+ ] });
147
+ if (asChild) {
148
+ return /* @__PURE__ */ jsx(
149
+ Slot,
150
+ {
151
+ ref,
152
+ "data-slot": "button",
153
+ className: classes,
154
+ ...props,
155
+ children
156
+ }
157
+ );
158
+ }
159
+ if (href !== void 0 && href !== "") {
160
+ const { onClick, ...anchorRest } = props;
161
+ const inert = Boolean(disabled || loading);
162
+ return /* @__PURE__ */ jsx(
163
+ "a",
164
+ {
165
+ ref,
166
+ href,
167
+ "data-slot": "button",
168
+ "data-loading": loading || void 0,
169
+ "aria-busy": loading || void 0,
170
+ "aria-disabled": inert || void 0,
171
+ tabIndex: inert ? -1 : void 0,
172
+ className: classes,
173
+ onClick: (e) => {
174
+ if (inert) {
175
+ e.preventDefault();
176
+ return;
177
+ }
178
+ onClick?.(e);
179
+ },
180
+ ...anchorRest,
181
+ children: content
182
+ }
183
+ );
184
+ }
185
+ return /* @__PURE__ */ jsx(
186
+ "button",
187
+ {
188
+ ref,
189
+ type,
190
+ "data-slot": "button",
191
+ "data-loading": loading || void 0,
192
+ "aria-busy": loading || void 0,
193
+ disabled: disabled || loading,
194
+ className: classes,
195
+ ...props,
196
+ children: content
197
+ }
198
+ );
199
+ });
200
+ Button.displayName = "Button";
201
+
202
+ export { Button, buttonIconSlotClass, buttonVariants };
203
+ //# sourceMappingURL=button.js.map
204
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/components/spinner.tsx","../../src/components/button.tsx"],"names":["Spinner","React2","Button","jsx"],"mappings":"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","file":"button.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../lib/utils.js\"\n\n/** MILA / Obra (Figma node 274:43182 — .Spinner): 16px frame, ~13px arc, neutral stroke. */\nconst Spinner = React.forwardRef<SVGSVGElement, React.ComponentPropsWithoutRef<\"svg\">>(\n function Spinner({ className, ...props }, ref) {\n return (\n <svg\n ref={ref}\n width={16}\n height={16}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"animate-spin shrink-0\", className)}\n aria-hidden\n {...props}\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeDasharray=\"31.8 41\"\n />\n </svg>\n )\n }\n)\nSpinner.displayName = \"Spinner\"\n\nexport { Spinner }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../lib/utils.js\"\n\nimport { Spinner } from \"./spinner.js\"\n\nconst buttonOutlineShadow =\n \"shadow-[0_1px_3px_0_rgba(0,0,0,0.1),0_1px_2px_0_rgba(0,0,0,0.1)]\"\n\nconst buttonVariants = cva(\n [\n \"inline-flex shrink-0 items-center justify-center gap-2 font-sans font-medium whitespace-nowrap\",\n \"rounded-lg transition-[color,background-color,border-color,box-shadow,opacity,text-decoration]\",\n \"disabled:pointer-events-none disabled:opacity-90 disabled:data-[loading]:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-[color:var(--mila-button-primary-bg)] text-[color:var(--mila-button-primary-fg)]\",\n \"hover:bg-[color:var(--mila-button-primary-hover)] active:bg-[color:var(--mila-button-primary-hover)]\",\n \"focus-visible:bg-[color:var(--mila-button-primary-hover)]\",\n \"disabled:bg-[color:var(--mila-button-disabled-bg)] disabled:text-[color:var(--mila-button-disabled-fg)]\",\n ],\n destructive: [\n \"bg-[color:var(--mila-button-destructive-bg)] text-[color:var(--mila-button-destructive-fg)]\",\n \"hover:bg-[color:var(--mila-button-destructive-hover)] active:bg-[color:var(--mila-button-destructive-hover)]\",\n \"focus-visible:bg-[color:var(--mila-button-destructive-hover)]\",\n \"disabled:bg-[color:var(--mila-button-disabled-bg)] disabled:text-[color:var(--mila-button-disabled-fg)]\",\n ],\n secondary: [\n \"border border-solid border-[color:var(--mila-button-secondary-border)]\",\n \"bg-[color:var(--mila-button-secondary-bg)] text-[color:var(--mila-button-secondary-fg)]\",\n \"hover:border-[color:var(--mila-button-secondary-hover-border)] hover:bg-[color:var(--mila-button-secondary-hover-bg)] hover:text-[color:var(--mila-button-secondary-hover-fg)]\",\n \"active:border-[color:var(--mila-button-secondary-hover-border)] active:bg-[color:var(--mila-button-secondary-hover-bg)] active:text-[color:var(--mila-button-secondary-hover-fg)]\",\n \"disabled:border-[color:var(--mila-button-outline-disabled-border)] disabled:bg-[color:var(--mila-button-outline-disabled-bg)] disabled:text-[color:var(--mila-button-outline-disabled-fg)]\",\n ],\n outline: [\n \"border border-solid border-[color:var(--mila-button-outline-border)] bg-background\",\n \"text-[color:var(--mila-button-outline-fg)]\",\n buttonOutlineShadow,\n \"hover:border-[color:var(--mila-button-outline-hover-border)] hover:bg-[color:var(--mila-button-outline-hover-bg)] hover:text-[color:var(--mila-button-outline-hover-fg)]\",\n \"active:border-[color:var(--mila-button-outline-hover-border)] active:bg-[color:var(--mila-button-outline-hover-bg)] active:text-[color:var(--mila-button-outline-hover-fg)]\",\n \"disabled:border-[color:var(--mila-button-outline-disabled-border)] disabled:bg-[color:var(--mila-button-outline-disabled-bg)] disabled:text-[color:var(--mila-button-outline-disabled-fg)] disabled:shadow-none\",\n ],\n ghost: [\n \"bg-transparent text-[color:var(--mila-button-ghost-fg)]\",\n \"hover:bg-[color:var(--mila-button-ghost-hover-bg)] hover:text-[color:var(--mila-button-ghost-hover-fg)]\",\n \"active:bg-[color:var(--mila-button-ghost-hover-bg)] active:text-[color:var(--mila-button-ghost-hover-fg)]\",\n \"disabled:bg-transparent disabled:text-[color:var(--mila-button-disabled-fg)]\",\n ],\n link: [\n \"border-0 bg-transparent shadow-none\",\n \"text-[color:var(--mila-link-button-fg)] underline-offset-4\",\n \"hover:underline active:underline\",\n \"focus-visible:no-underline\",\n \"aria-disabled:no-underline\",\n \"aria-disabled:pointer-events-none aria-disabled:opacity-90 aria-disabled:data-[loading]:opacity-50\",\n \"[&_svg]:!size-[16.25px]\",\n ],\n },\n size: {\n lg: \"min-h-10 gap-2 px-6 py-[9.5px] text-sm leading-normal tracking-[0.07px] [&_svg]:size-[13.25px]\",\n default:\n \"min-h-9 gap-2 px-4 py-[7.5px] text-sm leading-normal tracking-[0.07px] [&_svg]:size-[13.25px]\",\n sm: \"min-h-8 gap-1.5 px-3 py-[5.5px] text-sm leading-normal tracking-[0.07px] [&_svg]:size-[13.25px]\",\n mini:\n \"min-h-6 gap-1.5 rounded-[4px] px-2 py-[3px] text-xs leading-normal tracking-[0.18px] [&_svg]:size-[13.25px]\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n compoundVariants: [\n {\n variant: [\"primary\", \"destructive\", \"secondary\", \"outline\", \"ghost\"],\n class:\n \"focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[color:var(--mila-input-ring-focus)]\",\n },\n {\n variant: \"link\",\n class: [\n \"focus:outline-none focus:ring-0 focus:ring-offset-0\",\n \"focus:overflow-clip\",\n \"focus:!shadow-[0_0_0_3px_var(--mila-input-ring-focus)]\",\n ],\n },\n ],\n }\n)\n\nconst buttonIconSlotClass = \"inline-flex shrink-0 items-center justify-center\"\n\nexport type ButtonProps = VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n startIcon?: React.ReactNode\n endIcon?: React.ReactNode\n /** Shows spinner, disables interaction; Figma MILA loading button (node 274:43182). */\n loading?: boolean\n className?: string\n} & Omit<React.ComponentPropsWithoutRef<\"button\">, \"className\"> &\n Omit<React.ComponentPropsWithoutRef<\"a\">, \"className\"> & {\n /** Renders as `<a>`; defaults variant to `link` when `variant` is omitted (Figma node 274:52937). */\n href?: string\n }\n\nconst Button = React.forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(function Button(\n {\n className,\n variant,\n size,\n asChild = false,\n type = \"button\",\n startIcon,\n endIcon,\n children,\n disabled,\n loading = false,\n href,\n ...props\n },\n ref\n) {\n const effectiveVariant =\n variant ?? (href !== undefined && href !== \"\" ? (\"link\" as const) : undefined)\n\n const classes = cn(buttonVariants({ variant: effectiveVariant, size }), className)\n\n const showStart = loading ? (\n <span className={buttonIconSlotClass}>\n <Spinner />\n </span>\n ) : startIcon ? (\n <span className={buttonIconSlotClass}>{startIcon}</span>\n ) : null\n\n const content = (\n <>\n {showStart}\n {children}\n {!loading && endIcon ? <span className={buttonIconSlotClass}>{endIcon}</span> : null}\n </>\n )\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n data-slot=\"button\"\n className={classes}\n {...props}\n >\n {children}\n </Slot>\n )\n }\n\n if (href !== undefined && href !== \"\") {\n const { onClick, ...anchorRest } = props as React.ComponentPropsWithoutRef<\"a\">\n const inert = Boolean(disabled || loading)\n\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={href}\n data-slot=\"button\"\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n aria-disabled={inert || undefined}\n tabIndex={inert ? -1 : undefined}\n className={classes}\n onClick={(e) => {\n if (inert) {\n e.preventDefault()\n return\n }\n onClick?.(e)\n }}\n {...anchorRest}\n >\n {content}\n </a>\n )\n }\n\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type={type}\n data-slot=\"button\"\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n disabled={disabled || loading}\n className={classes}\n {...(props as React.ComponentPropsWithoutRef<\"button\">)}\n >\n {content}\n </button>\n )\n})\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants, buttonIconSlotClass }\n"]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { DayPicker } from 'react-day-picker';
4
+
5
+ type CalendarProps = React.ComponentProps<typeof DayPicker>;
6
+ declare function Calendar({ className, showOutsideDays, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
7
+ declare namespace Calendar {
8
+ var displayName: string;
9
+ }
10
+
11
+ export { Calendar, type CalendarProps };
@@ -0,0 +1,27 @@
1
+ import { DayPicker } from 'react-day-picker';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+ function Calendar({ className, showOutsideDays = true, ...props }) {
10
+ return /* @__PURE__ */ jsx(
11
+ DayPicker,
12
+ {
13
+ showOutsideDays,
14
+ "data-slot": "calendar",
15
+ className: cn(
16
+ "mila-daypicker rounded-lg border border-solid border-[color:var(--mila-combobox-menu-border)] bg-[color:var(--mila-combobox-menu-bg)] p-3 shadow-[var(--mila-combobox-menu-shadow)]",
17
+ className
18
+ ),
19
+ ...props
20
+ }
21
+ );
22
+ }
23
+ Calendar.displayName = "Calendar";
24
+
25
+ export { Calendar };
26
+ //# sourceMappingURL=calendar.js.map
27
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/components/calendar.tsx"],"names":[],"mappings":";;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACIA,SAAS,SAAS,EAAE,SAAA,EAAW,kBAAkB,IAAA,EAAM,GAAG,OAAM,EAAkB;AAChF,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qLAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"calendar.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"../lib/utils.js\"\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>\n\nfunction Calendar({ className, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n data-slot=\"calendar\"\n className={cn(\n \"mila-daypicker rounded-lg border border-solid border-[color:var(--mila-combobox-menu-border)] bg-[color:var(--mila-combobox-menu-bg)] p-3 shadow-[var(--mila-combobox-menu-shadow)]\",\n className\n )}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n"]}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+
3
+ declare const Card: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const CardHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const CardTitle: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
6
+ declare const CardDescription: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
7
+ declare const CardContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const CardFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+
10
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,84 @@
1
+ import * as React from 'react';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+ var Card = React.forwardRef(function Card2({ className, ...props }, ref) {
10
+ return /* @__PURE__ */ jsx(
11
+ "div",
12
+ {
13
+ ref,
14
+ "data-slot": "card",
15
+ className: cn(
16
+ "flex flex-col gap-6 rounded-[10px] border border-solid border-[color:var(--mila-card-border)] bg-[color:var(--mila-card-bg)] text-[color:var(--mila-card-title-fg)] shadow-[var(--mila-card-shadow)]",
17
+ className
18
+ ),
19
+ ...props
20
+ }
21
+ );
22
+ });
23
+ Card.displayName = "Card";
24
+ var CardHeader = React.forwardRef(function CardHeader2({ className, ...props }, ref) {
25
+ return /* @__PURE__ */ jsx(
26
+ "div",
27
+ {
28
+ ref,
29
+ "data-slot": "card-header",
30
+ className: cn("flex flex-col gap-1 px-6 pt-6", className),
31
+ ...props
32
+ }
33
+ );
34
+ });
35
+ CardHeader.displayName = "CardHeader";
36
+ var CardTitle = React.forwardRef(function CardTitle2({ className, ...props }, ref) {
37
+ return /* @__PURE__ */ jsx(
38
+ "h3",
39
+ {
40
+ ref,
41
+ "data-slot": "card-title",
42
+ className: cn("font-sans text-base font-medium leading-[1.5] text-[color:var(--mila-card-title-fg)]", className),
43
+ ...props
44
+ }
45
+ );
46
+ });
47
+ CardTitle.displayName = "CardTitle";
48
+ var CardDescription = React.forwardRef(
49
+ function CardDescription2({ className, ...props }, ref) {
50
+ return /* @__PURE__ */ jsx(
51
+ "p",
52
+ {
53
+ ref,
54
+ "data-slot": "card-description",
55
+ className: cn(
56
+ "font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-card-description-fg)]",
57
+ className
58
+ ),
59
+ ...props
60
+ }
61
+ );
62
+ }
63
+ );
64
+ CardDescription.displayName = "CardDescription";
65
+ var CardContent = React.forwardRef(function CardContent2({ className, ...props }, ref) {
66
+ return /* @__PURE__ */ jsx("div", { ref, "data-slot": "card-content", className: cn("px-6", className), ...props });
67
+ });
68
+ CardContent.displayName = "CardContent";
69
+ var CardFooter = React.forwardRef(function CardFooter2({ className, ...props }, ref) {
70
+ return /* @__PURE__ */ jsx(
71
+ "div",
72
+ {
73
+ ref,
74
+ "data-slot": "card-footer",
75
+ className: cn("flex flex-col gap-3 px-6 pb-6", className),
76
+ ...props
77
+ }
78
+ );
79
+ });
80
+ CardFooter.displayName = "CardFooter";
81
+
82
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
83
+ //# sourceMappingURL=card.js.map
84
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/components/card.tsx"],"names":["Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":";;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACCA,IAAM,IAAA,GAAa,iBAAwD,SAASA,KAAAA,CAClF,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EACtB,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sMAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,IAAA,CAAK,WAAA,GAAc,MAAA;AAEnB,IAAM,UAAA,GAAmB,iBAAwD,SAASC,WAAAA,CACxF,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EACtB,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAM,SAAA,GAAkB,iBAA2D,SAASC,UAAAA,CAC1F,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EACtB,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,sFAAA,EAAwF,SAAS,CAAA;AAAA,MAC9G,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,eAAA,GAAwB,KAAA,CAAA,UAAA;AAAA,EAC5B,SAASC,gBAAAA,CAAgB,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,EAAK;AACrD,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,kBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,4GAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAM,WAAA,GAAoB,iBAAwD,SAASC,YAAAA,CACzF,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EACtB,GAAA,EACA;AACA,EAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAA,EAAU,cAAA,EAAe,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC9F,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,UAAA,GAAmB,iBAAwD,SAASC,WAAAA,CACxF,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EACtB,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,YAAA","file":"card.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../lib/utils.js\"\n\nconst Card = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(function Card(\n { className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card\"\n className={cn(\n \"flex flex-col gap-6 rounded-[10px] border border-solid border-[color:var(--mila-card-border)] bg-[color:var(--mila-card-bg)] text-[color:var(--mila-card-title-fg)] shadow-[var(--mila-card-shadow)]\",\n className\n )}\n {...props}\n />\n )\n})\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(function CardHeader(\n { className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card-header\"\n className={cn(\"flex flex-col gap-1 px-6 pt-6\", className)}\n {...props}\n />\n )\n})\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.ComponentProps<\"h3\">>(function CardTitle(\n { className, ...props },\n ref\n) {\n return (\n <h3\n ref={ref}\n data-slot=\"card-title\"\n className={cn(\"font-sans text-base font-medium leading-[1.5] text-[color:var(--mila-card-title-fg)]\", className)}\n {...props}\n />\n )\n})\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.ComponentProps<\"p\">>(\n function CardDescription({ className, ...props }, ref) {\n return (\n <p\n ref={ref}\n data-slot=\"card-description\"\n className={cn(\n \"font-sans text-sm font-medium leading-[1.5] tracking-[0.07px] text-[color:var(--mila-card-description-fg)]\",\n className\n )}\n {...props}\n />\n )\n }\n)\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(function CardContent(\n { className, ...props },\n ref\n) {\n return <div ref={ref} data-slot=\"card-content\" className={cn(\"px-6\", className)} {...props} />\n})\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(function CardFooter(\n { className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card-footer\"\n className={cn(\"flex flex-col gap-3 px-6 pb-6\", className)}\n {...props}\n />\n )\n})\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"]}
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+ import useEmblaCarousel from 'embla-carousel-react';
3
+ import { EmblaOptionsType, EmblaPluginType, EmblaCarouselType } from 'embla-carousel';
4
+ import { IconButton } from './icon-button.mjs';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+
8
+ type CarouselApi = EmblaCarouselType;
9
+ type CarouselContextValue = {
10
+ carouselRef: ReturnType<typeof useEmblaCarousel>[0];
11
+ api: CarouselApi | undefined;
12
+ opts: EmblaOptionsType | undefined;
13
+ orientation: "horizontal" | "vertical";
14
+ scrollPrev: () => void;
15
+ scrollNext: () => void;
16
+ canScrollPrev: boolean;
17
+ canScrollNext: boolean;
18
+ };
19
+ declare function useCarousel(): CarouselContextValue;
20
+ type CarouselProps = React.ComponentProps<"div"> & {
21
+ opts?: EmblaOptionsType;
22
+ plugins?: EmblaPluginType[];
23
+ orientation?: "horizontal" | "vertical";
24
+ setApi?: (api: CarouselApi) => void;
25
+ };
26
+ declare const Carousel: React.ForwardRefExoticComponent<Omit<CarouselProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
27
+ declare const CarouselContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
28
+ declare const CarouselItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
29
+ type CarouselNavProps = Omit<React.ComponentProps<typeof IconButton>, "children" | "aria-label"> & {
30
+ "aria-label"?: string;
31
+ };
32
+ declare const CarouselPrevious: React.ForwardRefExoticComponent<Omit<CarouselNavProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
33
+ declare const CarouselNext: React.ForwardRefExoticComponent<Omit<CarouselNavProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
34
+
35
+ export { Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CarouselProps, useCarousel };