@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.
- package/README.md +187 -0
- package/mycelia-ui.css +5545 -0
- package/package.json +127 -0
- package/packages/ui/dist/components/accordion.d.mts +9 -0
- package/packages/ui/dist/components/accordion.js +74 -0
- package/packages/ui/dist/components/accordion.js.map +1 -0
- package/packages/ui/dist/components/alert-dialog.d.mts +22 -0
- package/packages/ui/dist/components/alert-dialog.js +117 -0
- package/packages/ui/dist/components/alert-dialog.js.map +1 -0
- package/packages/ui/dist/components/alert.d.mts +28 -0
- package/packages/ui/dist/components/alert.js +140 -0
- package/packages/ui/dist/components/alert.js.map +1 -0
- package/packages/ui/dist/components/aspect-ratio.d.mts +7 -0
- package/packages/ui/dist/components/aspect-ratio.js +28 -0
- package/packages/ui/dist/components/aspect-ratio.js.map +1 -0
- package/packages/ui/dist/components/avatar-stack.d.mts +16 -0
- package/packages/ui/dist/components/avatar-stack.js +57 -0
- package/packages/ui/dist/components/avatar-stack.js.map +1 -0
- package/packages/ui/dist/components/avatar.d.mts +16 -0
- package/packages/ui/dist/components/avatar.js +108 -0
- package/packages/ui/dist/components/avatar.js.map +1 -0
- package/packages/ui/dist/components/badge.d.mts +16 -0
- package/packages/ui/dist/components/badge.js +61 -0
- package/packages/ui/dist/components/badge.js.map +1 -0
- package/packages/ui/dist/components/breadcrumb.d.mts +22 -0
- package/packages/ui/dist/components/breadcrumb.js +118 -0
- package/packages/ui/dist/components/breadcrumb.js.map +1 -0
- package/packages/ui/dist/components/button.d.mts +36 -0
- package/packages/ui/dist/components/button.js +204 -0
- package/packages/ui/dist/components/button.js.map +1 -0
- package/packages/ui/dist/components/calendar.d.mts +11 -0
- package/packages/ui/dist/components/calendar.js +27 -0
- package/packages/ui/dist/components/calendar.js.map +1 -0
- package/packages/ui/dist/components/card.d.mts +10 -0
- package/packages/ui/dist/components/card.js +84 -0
- package/packages/ui/dist/components/card.js.map +1 -0
- package/packages/ui/dist/components/carousel.d.mts +35 -0
- package/packages/ui/dist/components/carousel.js +362 -0
- package/packages/ui/dist/components/carousel.js.map +1 -0
- package/packages/ui/dist/components/chart.d.mts +88 -0
- package/packages/ui/dist/components/chart.js +249 -0
- package/packages/ui/dist/components/chart.js.map +1 -0
- package/packages/ui/dist/components/checkbox.d.mts +44 -0
- package/packages/ui/dist/components/checkbox.js +161 -0
- package/packages/ui/dist/components/checkbox.js.map +1 -0
- package/packages/ui/dist/components/combobox.d.mts +45 -0
- package/packages/ui/dist/components/combobox.js +148 -0
- package/packages/ui/dist/components/combobox.js.map +1 -0
- package/packages/ui/dist/components/command-menu.d.mts +88 -0
- package/packages/ui/dist/components/command-menu.js +414 -0
- package/packages/ui/dist/components/command-menu.js.map +1 -0
- package/packages/ui/dist/components/command.d.mts +84 -0
- package/packages/ui/dist/components/command.js +125 -0
- package/packages/ui/dist/components/command.js.map +1 -0
- package/packages/ui/dist/components/data-table.d.mts +23 -0
- package/packages/ui/dist/components/data-table.js +377 -0
- package/packages/ui/dist/components/data-table.js.map +1 -0
- package/packages/ui/dist/components/date-picker.d.mts +28 -0
- package/packages/ui/dist/components/date-picker.js +217 -0
- package/packages/ui/dist/components/date-picker.js.map +1 -0
- package/packages/ui/dist/components/dialog.d.mts +19 -0
- package/packages/ui/dist/components/dialog.js +146 -0
- package/packages/ui/dist/components/dialog.js.map +1 -0
- package/packages/ui/dist/components/drawer.d.mts +20 -0
- package/packages/ui/dist/components/drawer.js +159 -0
- package/packages/ui/dist/components/drawer.js.map +1 -0
- package/packages/ui/dist/components/hover-card.d.mts +9 -0
- package/packages/ui/dist/components/hover-card.js +35 -0
- package/packages/ui/dist/components/hover-card.js.map +1 -0
- package/packages/ui/dist/components/icon-button.d.mts +22 -0
- package/packages/ui/dist/components/icon-button.js +169 -0
- package/packages/ui/dist/components/icon-button.js.map +1 -0
- package/packages/ui/dist/components/input-file.d.mts +12 -0
- package/packages/ui/dist/components/input-file.js +209 -0
- package/packages/ui/dist/components/input-file.js.map +1 -0
- package/packages/ui/dist/components/input-otp.d.mts +85 -0
- package/packages/ui/dist/components/input-otp.js +254 -0
- package/packages/ui/dist/components/input-otp.js.map +1 -0
- package/packages/ui/dist/components/input.d.mts +17 -0
- package/packages/ui/dist/components/input.js +116 -0
- package/packages/ui/dist/components/input.js.map +1 -0
- package/packages/ui/dist/components/label.d.mts +14 -0
- package/packages/ui/dist/components/label.js +40 -0
- package/packages/ui/dist/components/label.js.map +1 -0
- package/packages/ui/dist/components/navigation-menu.d.mts +20 -0
- package/packages/ui/dist/components/navigation-menu.js +136 -0
- package/packages/ui/dist/components/navigation-menu.js.map +1 -0
- package/packages/ui/dist/components/pagination.d.mts +27 -0
- package/packages/ui/dist/components/pagination.js +159 -0
- package/packages/ui/dist/components/pagination.js.map +1 -0
- package/packages/ui/dist/components/popover.d.mts +9 -0
- package/packages/ui/dist/components/popover.js +34 -0
- package/packages/ui/dist/components/popover.js.map +1 -0
- package/packages/ui/dist/components/progress.d.mts +13 -0
- package/packages/ui/dist/components/progress.js +44 -0
- package/packages/ui/dist/components/progress.js.map +1 -0
- package/packages/ui/dist/components/radio-group.d.mts +42 -0
- package/packages/ui/dist/components/radio-group.js +125 -0
- package/packages/ui/dist/components/radio-group.js.map +1 -0
- package/packages/ui/dist/components/resizable.d.mts +9 -0
- package/packages/ui/dist/components/resizable.js +70 -0
- package/packages/ui/dist/components/resizable.js.map +1 -0
- package/packages/ui/dist/components/scroll-area.d.mts +15 -0
- package/packages/ui/dist/components/scroll-area.js +70 -0
- package/packages/ui/dist/components/scroll-area.js.map +1 -0
- package/packages/ui/dist/components/separator.d.mts +27 -0
- package/packages/ui/dist/components/separator.js +81 -0
- package/packages/ui/dist/components/separator.js.map +1 -0
- package/packages/ui/dist/components/sheet.d.mts +26 -0
- package/packages/ui/dist/components/sheet.js +158 -0
- package/packages/ui/dist/components/sheet.js.map +1 -0
- package/packages/ui/dist/components/sidebar.d.mts +63 -0
- package/packages/ui/dist/components/sidebar.js +271 -0
- package/packages/ui/dist/components/sidebar.js.map +1 -0
- package/packages/ui/dist/components/skeleton.d.mts +13 -0
- package/packages/ui/dist/components/skeleton.js +34 -0
- package/packages/ui/dist/components/skeleton.js.map +1 -0
- package/packages/ui/dist/components/slider.d.mts +7 -0
- package/packages/ui/dist/components/slider.js +70 -0
- package/packages/ui/dist/components/slider.js.map +1 -0
- package/packages/ui/dist/components/sonner.d.mts +8 -0
- package/packages/ui/dist/components/sonner.js +112 -0
- package/packages/ui/dist/components/sonner.js.map +1 -0
- package/packages/ui/dist/components/spinner.d.mts +6 -0
- package/packages/ui/dist/components/spinner.js +44 -0
- package/packages/ui/dist/components/spinner.js.map +1 -0
- package/packages/ui/dist/components/switch.d.mts +43 -0
- package/packages/ui/dist/components/switch.js +136 -0
- package/packages/ui/dist/components/switch.js.map +1 -0
- package/packages/ui/dist/components/table.d.mts +16 -0
- package/packages/ui/dist/components/table.js +115 -0
- package/packages/ui/dist/components/table.js.map +1 -0
- package/packages/ui/dist/components/tabs.d.mts +17 -0
- package/packages/ui/dist/components/tabs.js +104 -0
- package/packages/ui/dist/components/tabs.js.map +1 -0
- package/packages/ui/dist/components/textarea.d.mts +12 -0
- package/packages/ui/dist/components/textarea.js +76 -0
- package/packages/ui/dist/components/textarea.js.map +1 -0
- package/packages/ui/dist/components/tooltip.d.mts +17 -0
- package/packages/ui/dist/components/tooltip.js +46 -0
- package/packages/ui/dist/components/tooltip.js.map +1 -0
- package/packages/ui/dist/lib/utils.d.mts +5 -0
- package/packages/ui/dist/lib/utils.js +11 -0
- package/packages/ui/dist/lib/utils.js.map +1 -0
- package/packages/ui/dist/mycelia-ui.css +5545 -0
- package/packages/ui/postcss.config.mjs +6 -0
- package/packages/ui/src/styles/bundle-entry.css +2 -0
- package/packages/ui/src/styles/globals.css +651 -0
- 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 };
|