@nerds-with-charisma/revit-ui 0.1.0
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/LICENSE +21 -0
- package/README.md +30 -0
- package/dist/index.d.ts +646 -0
- package/dist/index.js +3107 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/theme/tokens.revit.d.ts +1 -0
- package/dist/theme/tokens.revit.js +77 -0
- package/dist/theme/tokens.revit.js.map +1 -0
- package/dist/tokens.revit-DzLYq4SO.d.ts +62 -0
- package/package.json +107 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,3107 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/button.tsx
|
|
4
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
|
|
7
|
+
// src/lib/utils.ts
|
|
8
|
+
import { clsx } from "clsx";
|
|
9
|
+
import { twMerge } from "tailwind-merge";
|
|
10
|
+
var cn = (...inputs) => {
|
|
11
|
+
return twMerge(clsx(inputs));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/theme/motion.ts
|
|
15
|
+
var motion = {
|
|
16
|
+
surface: "transition-[transform,color,background-color,border-color,box-shadow,opacity] duration-200 ease-out"
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// src/components/button.tsx
|
|
20
|
+
import { jsx } from "react/jsx-runtime";
|
|
21
|
+
var buttonVariants = cva(
|
|
22
|
+
`inline-flex items-center justify-center gap-2 whitespace-nowrap font-sans text-sm font-semibold uppercase tracking-[0.12em] ${motion.surface} hover:scale-[1.02] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,
|
|
23
|
+
{
|
|
24
|
+
variants: {
|
|
25
|
+
variant: {
|
|
26
|
+
default: "rounded-pill border-2 border-primary bg-primary text-primary-foreground shadow-[0_8px_12px_6px_rgba(0,0,0,0.07)] hover:bg-primary/90 focus-visible:ring-brand-off-black focus-visible:ring-offset-primary",
|
|
27
|
+
secondary: "rounded-pill border-2 border-secondary bg-secondary text-secondary-foreground shadow-[0_12px_24px_rgba(0,0,0,0.07)] hover:bg-secondary/90",
|
|
28
|
+
outline: "rounded-pill border-2 border-border bg-card text-card-foreground shadow-[0_14px_22px_rgba(0,0,0,0.03)] hover:border-primary hover:bg-primary/25",
|
|
29
|
+
ghost: "rounded-pill hover:bg-accent hover:text-accent-foreground",
|
|
30
|
+
link: "rounded-none tracking-normal normal-case underline-offset-4 hover:underline",
|
|
31
|
+
destructive: "rounded-pill border-2 border-destructive bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90"
|
|
32
|
+
},
|
|
33
|
+
size: {
|
|
34
|
+
default: "px-3.5 py-2 text-[11px] md:px-4 md:text-[12px]",
|
|
35
|
+
sm: "px-3 py-1.5 text-[10px]",
|
|
36
|
+
lg: "min-w-[10rem] px-6 py-3 text-sm sm:min-w-[12rem]",
|
|
37
|
+
icon: "size-9 rounded-pill p-0"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
defaultVariants: {
|
|
41
|
+
variant: "default",
|
|
42
|
+
size: "default"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
var Button = ({ className, variant, size, asChild = false, ...props }) => {
|
|
47
|
+
const Comp = asChild ? Slot : "button";
|
|
48
|
+
return /* @__PURE__ */ jsx(
|
|
49
|
+
Comp,
|
|
50
|
+
{
|
|
51
|
+
"data-id": "Button",
|
|
52
|
+
"data-slot": "button",
|
|
53
|
+
className: cn(buttonVariants({ variant, size }), className),
|
|
54
|
+
...props
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/components/input.tsx
|
|
60
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
61
|
+
|
|
62
|
+
// src/theme/field.ts
|
|
63
|
+
var fieldSurface = `border border-border bg-card font-sans text-foreground outline-none ${motion.surface} placeholder:text-muted-foreground hover:border-primary focus-visible:border-primary focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] disabled:cursor-not-allowed disabled:opacity-50`;
|
|
64
|
+
|
|
65
|
+
// src/components/input.tsx
|
|
66
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
67
|
+
var inputVariants = cva2(`w-full ${fieldSurface} file:border-0 file:bg-transparent file:text-sm file:font-medium`, {
|
|
68
|
+
variants: {
|
|
69
|
+
variant: {
|
|
70
|
+
default: "rounded-md",
|
|
71
|
+
pill: "rounded-pill",
|
|
72
|
+
filled: "rounded-md bg-muted"
|
|
73
|
+
},
|
|
74
|
+
size: {
|
|
75
|
+
default: "h-12 px-5 py-3 text-base",
|
|
76
|
+
sm: "h-9 px-3 py-1 text-sm",
|
|
77
|
+
md: "h-11 px-4 py-2 text-base md:text-sm"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
defaultVariants: {
|
|
81
|
+
variant: "default",
|
|
82
|
+
size: "default"
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
var Input = ({ className, type, variant, size, ...props }) => {
|
|
86
|
+
return /* @__PURE__ */ jsx2(
|
|
87
|
+
"input",
|
|
88
|
+
{
|
|
89
|
+
"data-id": "Input",
|
|
90
|
+
"data-slot": "input",
|
|
91
|
+
type,
|
|
92
|
+
className: cn(inputVariants({ variant, size }), className),
|
|
93
|
+
...props
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/components/card.tsx
|
|
99
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
100
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
101
|
+
var cardVariants = cva3(`font-sans text-card-foreground ${motion.surface}`, {
|
|
102
|
+
variants: {
|
|
103
|
+
variant: {
|
|
104
|
+
default: "rounded-lg border border-border bg-card shadow-[0_18px_40px_rgba(0,0,0,0.04)]",
|
|
105
|
+
elevated: "rounded-xl bg-card shadow-[0_24px_48px_rgba(0,0,0,0.12)]",
|
|
106
|
+
frost: "rounded-lg border border-white/55 bg-white/0 shadow-[0_1px_0_rgba(255,255,255,0.2)_inset,0_12px_40px_rgba(0,0,0,0.04)] backdrop-blur-xl backdrop-saturate-150",
|
|
107
|
+
outline: "rounded-lg border border-border bg-transparent shadow-none"
|
|
108
|
+
},
|
|
109
|
+
size: {
|
|
110
|
+
sm: "[&_[data-slot=card-header]]:p-4 [&_[data-slot=card-content]]:px-4 [&_[data-slot=card-content]]:pb-4 [&_[data-slot=card-footer]]:p-4 [&_[data-slot=card-footer]]:pt-0",
|
|
111
|
+
default: "",
|
|
112
|
+
lg: "[&_[data-slot=card-header]]:p-8 [&_[data-slot=card-content]]:px-8 [&_[data-slot=card-content]]:pb-8 [&_[data-slot=card-footer]]:p-8 [&_[data-slot=card-footer]]:pt-0"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
defaultVariants: {
|
|
116
|
+
variant: "default",
|
|
117
|
+
size: "default"
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
var Card = ({ className, variant, size, ...props }) => {
|
|
121
|
+
return /* @__PURE__ */ jsx3(
|
|
122
|
+
"div",
|
|
123
|
+
{
|
|
124
|
+
"data-id": "Card",
|
|
125
|
+
"data-slot": "card",
|
|
126
|
+
className: cn(cardVariants({ variant, size }), className),
|
|
127
|
+
...props
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// src/components/card-header.tsx
|
|
133
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
134
|
+
var CardHeader = ({ className, ...props }) => {
|
|
135
|
+
return /* @__PURE__ */ jsx4(
|
|
136
|
+
"div",
|
|
137
|
+
{
|
|
138
|
+
"data-id": "CardHeader",
|
|
139
|
+
"data-slot": "card-header",
|
|
140
|
+
className: cn("flex flex-col gap-1.5 p-6", className),
|
|
141
|
+
...props
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
// src/components/card-title.tsx
|
|
147
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
148
|
+
var CardTitle = ({ className, ...props }) => {
|
|
149
|
+
return /* @__PURE__ */ jsx5(
|
|
150
|
+
"h3",
|
|
151
|
+
{
|
|
152
|
+
"data-id": "CardTitle",
|
|
153
|
+
"data-slot": "card-title",
|
|
154
|
+
className: cn("font-sans text-xl font-semibold leading-none tracking-tight", className),
|
|
155
|
+
...props
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// src/components/card-description.tsx
|
|
161
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
162
|
+
var CardDescription = ({ className, ...props }) => {
|
|
163
|
+
return /* @__PURE__ */ jsx6(
|
|
164
|
+
"p",
|
|
165
|
+
{
|
|
166
|
+
"data-id": "CardDescription",
|
|
167
|
+
"data-slot": "card-description",
|
|
168
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
169
|
+
...props
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// src/components/card-content.tsx
|
|
175
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
176
|
+
var CardContent = ({ className, ...props }) => {
|
|
177
|
+
return /* @__PURE__ */ jsx7(
|
|
178
|
+
"div",
|
|
179
|
+
{
|
|
180
|
+
"data-id": "CardContent",
|
|
181
|
+
"data-slot": "card-content",
|
|
182
|
+
className: cn("p-6 pt-0", className),
|
|
183
|
+
...props
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
// src/components/card-footer.tsx
|
|
189
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
190
|
+
var CardFooter = ({ className, ...props }) => {
|
|
191
|
+
return /* @__PURE__ */ jsx8(
|
|
192
|
+
"div",
|
|
193
|
+
{
|
|
194
|
+
"data-id": "CardFooter",
|
|
195
|
+
"data-slot": "card-footer",
|
|
196
|
+
className: cn("flex items-center gap-2 p-6 pt-0", className),
|
|
197
|
+
...props
|
|
198
|
+
}
|
|
199
|
+
);
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
// src/components/select.tsx
|
|
203
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
204
|
+
var Select = SelectPrimitive.Root;
|
|
205
|
+
|
|
206
|
+
// src/components/select-group.tsx
|
|
207
|
+
import * as SelectPrimitive2 from "@radix-ui/react-select";
|
|
208
|
+
var SelectGroup = SelectPrimitive2.Group;
|
|
209
|
+
|
|
210
|
+
// src/components/select-value.tsx
|
|
211
|
+
import * as SelectPrimitive3 from "@radix-ui/react-select";
|
|
212
|
+
var SelectValue = SelectPrimitive3.Value;
|
|
213
|
+
|
|
214
|
+
// src/components/select-trigger.tsx
|
|
215
|
+
import * as SelectPrimitive4 from "@radix-ui/react-select";
|
|
216
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
217
|
+
import { ChevronDown } from "lucide-react";
|
|
218
|
+
import { jsx as jsx9, jsxs } from "react/jsx-runtime";
|
|
219
|
+
var selectTriggerVariants = cva4(
|
|
220
|
+
`flex w-full items-center justify-between gap-2 ${fieldSurface} data-[placeholder]:text-muted-foreground [&_svg]:size-4 [&_svg]:opacity-50`,
|
|
221
|
+
{
|
|
222
|
+
variants: {
|
|
223
|
+
variant: {
|
|
224
|
+
default: "rounded-md",
|
|
225
|
+
pill: "rounded-pill",
|
|
226
|
+
filled: "rounded-md bg-muted"
|
|
227
|
+
},
|
|
228
|
+
size: {
|
|
229
|
+
default: "h-12 px-5 py-3 text-base",
|
|
230
|
+
sm: "h-9 px-3 py-1 text-sm",
|
|
231
|
+
md: "h-11 px-4 py-2 text-base md:text-sm"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
defaultVariants: {
|
|
235
|
+
variant: "default",
|
|
236
|
+
size: "default"
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
var SelectTrigger = ({
|
|
241
|
+
className,
|
|
242
|
+
variant,
|
|
243
|
+
size,
|
|
244
|
+
children,
|
|
245
|
+
...props
|
|
246
|
+
}) => {
|
|
247
|
+
return /* @__PURE__ */ jsxs(
|
|
248
|
+
SelectPrimitive4.Trigger,
|
|
249
|
+
{
|
|
250
|
+
"data-id": "SelectTrigger",
|
|
251
|
+
"data-slot": "select-trigger",
|
|
252
|
+
className: cn(selectTriggerVariants({ variant, size }), className),
|
|
253
|
+
...props,
|
|
254
|
+
children: [
|
|
255
|
+
children,
|
|
256
|
+
/* @__PURE__ */ jsx9(SelectPrimitive4.Icon, { asChild: true, children: /* @__PURE__ */ jsx9(ChevronDown, {}) })
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
);
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// src/components/select-content.tsx
|
|
263
|
+
import * as SelectPrimitive7 from "@radix-ui/react-select";
|
|
264
|
+
|
|
265
|
+
// src/components/select-scroll-down-button.tsx
|
|
266
|
+
import * as SelectPrimitive5 from "@radix-ui/react-select";
|
|
267
|
+
import { ChevronDown as ChevronDown2 } from "lucide-react";
|
|
268
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
269
|
+
var SelectScrollDownButton = ({ className, ...props }) => {
|
|
270
|
+
return /* @__PURE__ */ jsx10(
|
|
271
|
+
SelectPrimitive5.ScrollDownButton,
|
|
272
|
+
{
|
|
273
|
+
"data-id": "SelectScrollDownButton",
|
|
274
|
+
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
275
|
+
...props,
|
|
276
|
+
children: /* @__PURE__ */ jsx10(ChevronDown2, { className: "size-4" })
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
// src/components/select-scroll-up-button.tsx
|
|
282
|
+
import * as SelectPrimitive6 from "@radix-ui/react-select";
|
|
283
|
+
import { ChevronUp } from "lucide-react";
|
|
284
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
285
|
+
var SelectScrollUpButton = ({ className, ...props }) => {
|
|
286
|
+
return /* @__PURE__ */ jsx11(
|
|
287
|
+
SelectPrimitive6.ScrollUpButton,
|
|
288
|
+
{
|
|
289
|
+
"data-id": "SelectScrollUpButton",
|
|
290
|
+
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
291
|
+
...props,
|
|
292
|
+
children: /* @__PURE__ */ jsx11(ChevronUp, { className: "size-4" })
|
|
293
|
+
}
|
|
294
|
+
);
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
// src/components/select-content.tsx
|
|
298
|
+
import { jsx as jsx12, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
299
|
+
var SelectContent = ({
|
|
300
|
+
className,
|
|
301
|
+
children,
|
|
302
|
+
position = "popper",
|
|
303
|
+
...props
|
|
304
|
+
}) => {
|
|
305
|
+
return /* @__PURE__ */ jsx12(SelectPrimitive7.Portal, { children: /* @__PURE__ */ jsxs2(
|
|
306
|
+
SelectPrimitive7.Content,
|
|
307
|
+
{
|
|
308
|
+
"data-id": "SelectContent",
|
|
309
|
+
"data-slot": "select-content",
|
|
310
|
+
className: cn(
|
|
311
|
+
"revit-ui relative z-50 max-h-96 min-w-32 overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-[0_18px_40px_rgba(0,0,0,0.08)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
312
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
313
|
+
className
|
|
314
|
+
),
|
|
315
|
+
position,
|
|
316
|
+
...props,
|
|
317
|
+
children: [
|
|
318
|
+
/* @__PURE__ */ jsx12(SelectScrollUpButton, {}),
|
|
319
|
+
/* @__PURE__ */ jsx12(
|
|
320
|
+
SelectPrimitive7.Viewport,
|
|
321
|
+
{
|
|
322
|
+
className: cn(
|
|
323
|
+
"p-1",
|
|
324
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
325
|
+
),
|
|
326
|
+
children
|
|
327
|
+
}
|
|
328
|
+
),
|
|
329
|
+
/* @__PURE__ */ jsx12(SelectScrollDownButton, {})
|
|
330
|
+
]
|
|
331
|
+
}
|
|
332
|
+
) });
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
// src/components/select-item.tsx
|
|
336
|
+
import * as SelectPrimitive8 from "@radix-ui/react-select";
|
|
337
|
+
import { Check } from "lucide-react";
|
|
338
|
+
import { jsx as jsx13, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
339
|
+
var SelectItem = ({ className, children, ...props }) => {
|
|
340
|
+
return /* @__PURE__ */ jsxs3(
|
|
341
|
+
SelectPrimitive8.Item,
|
|
342
|
+
{
|
|
343
|
+
"data-id": "SelectItem",
|
|
344
|
+
"data-slot": "select-item",
|
|
345
|
+
className: cn(
|
|
346
|
+
`relative flex w-full cursor-default select-none items-center rounded-md py-2 pl-8 pr-2 text-sm outline-none ${motion.surface} focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,
|
|
347
|
+
className
|
|
348
|
+
),
|
|
349
|
+
...props,
|
|
350
|
+
children: [
|
|
351
|
+
/* @__PURE__ */ jsx13("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx13(SelectPrimitive8.ItemIndicator, { children: /* @__PURE__ */ jsx13(Check, { className: "size-4" }) }) }),
|
|
352
|
+
/* @__PURE__ */ jsx13(SelectPrimitive8.ItemText, { children })
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
);
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
// src/components/select-label.tsx
|
|
359
|
+
import * as SelectPrimitive9 from "@radix-ui/react-select";
|
|
360
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
361
|
+
var SelectLabel = ({ className, ...props }) => {
|
|
362
|
+
return /* @__PURE__ */ jsx14(
|
|
363
|
+
SelectPrimitive9.Label,
|
|
364
|
+
{
|
|
365
|
+
"data-id": "SelectLabel",
|
|
366
|
+
className: cn("px-2 py-1.5 text-xs font-semibold uppercase tracking-[0.12em]", className),
|
|
367
|
+
...props
|
|
368
|
+
}
|
|
369
|
+
);
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
// src/components/select-separator.tsx
|
|
373
|
+
import * as SelectPrimitive10 from "@radix-ui/react-select";
|
|
374
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
375
|
+
var SelectSeparator = ({ className, ...props }) => {
|
|
376
|
+
return /* @__PURE__ */ jsx15(
|
|
377
|
+
SelectPrimitive10.Separator,
|
|
378
|
+
{
|
|
379
|
+
"data-id": "SelectSeparator",
|
|
380
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
381
|
+
...props
|
|
382
|
+
}
|
|
383
|
+
);
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
// src/components/dialog.tsx
|
|
387
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
388
|
+
var Dialog = DialogPrimitive.Root;
|
|
389
|
+
|
|
390
|
+
// src/components/dialog-trigger.tsx
|
|
391
|
+
import * as DialogPrimitive2 from "@radix-ui/react-dialog";
|
|
392
|
+
var DialogTrigger = DialogPrimitive2.Trigger;
|
|
393
|
+
|
|
394
|
+
// src/components/dialog-content.tsx
|
|
395
|
+
import * as DialogPrimitive5 from "@radix-ui/react-dialog";
|
|
396
|
+
import { X } from "lucide-react";
|
|
397
|
+
|
|
398
|
+
// src/components/dialog-overlay.tsx
|
|
399
|
+
import * as DialogPrimitive3 from "@radix-ui/react-dialog";
|
|
400
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
401
|
+
var DialogOverlay = ({ className, ...props }) => {
|
|
402
|
+
return /* @__PURE__ */ jsx16(
|
|
403
|
+
DialogPrimitive3.Overlay,
|
|
404
|
+
{
|
|
405
|
+
"data-id": "DialogOverlay",
|
|
406
|
+
"data-slot": "dialog-overlay",
|
|
407
|
+
className: cn(
|
|
408
|
+
"fixed inset-0 z-50 bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
409
|
+
className
|
|
410
|
+
),
|
|
411
|
+
...props
|
|
412
|
+
}
|
|
413
|
+
);
|
|
414
|
+
};
|
|
415
|
+
|
|
416
|
+
// src/components/dialog-portal.tsx
|
|
417
|
+
import * as DialogPrimitive4 from "@radix-ui/react-dialog";
|
|
418
|
+
var DialogPortal = DialogPrimitive4.Portal;
|
|
419
|
+
|
|
420
|
+
// src/components/dialog-content.tsx
|
|
421
|
+
import { jsx as jsx17, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
422
|
+
var DialogContent = ({ className, children, ...props }) => {
|
|
423
|
+
return /* @__PURE__ */ jsxs4(DialogPortal, { children: [
|
|
424
|
+
/* @__PURE__ */ jsx17(DialogOverlay, {}),
|
|
425
|
+
/* @__PURE__ */ jsxs4(
|
|
426
|
+
DialogPrimitive5.Content,
|
|
427
|
+
{
|
|
428
|
+
"data-id": "DialogContent",
|
|
429
|
+
"data-slot": "dialog-content",
|
|
430
|
+
className: cn(
|
|
431
|
+
`revit-ui fixed top-1/2 left-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border border-border bg-card p-6 text-card-foreground shadow-[0_24px_48px_rgba(0,0,0,0.12)] ${motion.surface} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,
|
|
432
|
+
className
|
|
433
|
+
),
|
|
434
|
+
...props,
|
|
435
|
+
children: [
|
|
436
|
+
children,
|
|
437
|
+
/* @__PURE__ */ jsxs4(
|
|
438
|
+
DialogPrimitive5.Close,
|
|
439
|
+
{
|
|
440
|
+
"data-id": "DialogClose",
|
|
441
|
+
className: `absolute top-4 right-4 rounded-pill p-1 opacity-70 ${motion.surface} hover:bg-muted hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none`,
|
|
442
|
+
children: [
|
|
443
|
+
/* @__PURE__ */ jsx17(X, { className: "size-4" }),
|
|
444
|
+
/* @__PURE__ */ jsx17("span", { className: "sr-only", children: "Close" })
|
|
445
|
+
]
|
|
446
|
+
}
|
|
447
|
+
)
|
|
448
|
+
]
|
|
449
|
+
}
|
|
450
|
+
)
|
|
451
|
+
] });
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
// src/components/dialog-header.tsx
|
|
455
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
456
|
+
var DialogHeader = ({ className, ...props }) => {
|
|
457
|
+
return /* @__PURE__ */ jsx18(
|
|
458
|
+
"div",
|
|
459
|
+
{
|
|
460
|
+
"data-id": "DialogHeader",
|
|
461
|
+
className: cn("flex flex-col gap-1.5 text-center sm:text-left", className),
|
|
462
|
+
...props
|
|
463
|
+
}
|
|
464
|
+
);
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
// src/components/dialog-footer.tsx
|
|
468
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
469
|
+
var DialogFooter = ({ className, ...props }) => {
|
|
470
|
+
return /* @__PURE__ */ jsx19(
|
|
471
|
+
"div",
|
|
472
|
+
{
|
|
473
|
+
"data-id": "DialogFooter",
|
|
474
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
475
|
+
...props
|
|
476
|
+
}
|
|
477
|
+
);
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
// src/components/dialog-title.tsx
|
|
481
|
+
import * as DialogPrimitive6 from "@radix-ui/react-dialog";
|
|
482
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
483
|
+
var DialogTitle = ({ className, ...props }) => {
|
|
484
|
+
return /* @__PURE__ */ jsx20(
|
|
485
|
+
DialogPrimitive6.Title,
|
|
486
|
+
{
|
|
487
|
+
"data-id": "DialogTitle",
|
|
488
|
+
className: cn("font-sans text-lg font-semibold leading-none tracking-tight", className),
|
|
489
|
+
...props
|
|
490
|
+
}
|
|
491
|
+
);
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
// src/components/dialog-description.tsx
|
|
495
|
+
import * as DialogPrimitive7 from "@radix-ui/react-dialog";
|
|
496
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
497
|
+
var DialogDescription = ({ className, ...props }) => {
|
|
498
|
+
return /* @__PURE__ */ jsx21(
|
|
499
|
+
DialogPrimitive7.Description,
|
|
500
|
+
{
|
|
501
|
+
"data-id": "DialogDescription",
|
|
502
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
503
|
+
...props
|
|
504
|
+
}
|
|
505
|
+
);
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
// src/components/dialog-close.tsx
|
|
509
|
+
import * as DialogPrimitive8 from "@radix-ui/react-dialog";
|
|
510
|
+
var DialogClose = DialogPrimitive8.Close;
|
|
511
|
+
|
|
512
|
+
// src/components/label.tsx
|
|
513
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
514
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
515
|
+
var labelVariants = cva5(
|
|
516
|
+
"font-sans leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
517
|
+
{
|
|
518
|
+
variants: {
|
|
519
|
+
variant: {
|
|
520
|
+
default: "text-sm font-medium",
|
|
521
|
+
eyebrow: "text-xs font-bold uppercase tracking-[0.22em] text-brand-gold"
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
defaultVariants: {
|
|
525
|
+
variant: "default"
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
);
|
|
529
|
+
var Label2 = ({ className, variant, ...props }) => {
|
|
530
|
+
return /* @__PURE__ */ jsx22("label", { "data-id": "Label", className: cn(labelVariants({ variant }), className), ...props });
|
|
531
|
+
};
|
|
532
|
+
|
|
533
|
+
// src/components/textarea.tsx
|
|
534
|
+
import { cva as cva6 } from "class-variance-authority";
|
|
535
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
536
|
+
var textareaVariants = cva6(`min-h-24 w-full resize-y ${fieldSurface}`, {
|
|
537
|
+
variants: {
|
|
538
|
+
variant: {
|
|
539
|
+
default: "rounded-md",
|
|
540
|
+
filled: "rounded-md bg-muted"
|
|
541
|
+
},
|
|
542
|
+
size: {
|
|
543
|
+
default: "px-5 py-3 text-base",
|
|
544
|
+
sm: "min-h-20 px-3 py-2 text-sm"
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
defaultVariants: {
|
|
548
|
+
variant: "default",
|
|
549
|
+
size: "default"
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
var Textarea = ({ className, variant, size, ...props }) => {
|
|
553
|
+
return /* @__PURE__ */ jsx23(
|
|
554
|
+
"textarea",
|
|
555
|
+
{
|
|
556
|
+
"data-id": "Textarea",
|
|
557
|
+
"data-slot": "textarea",
|
|
558
|
+
className: cn(textareaVariants({ variant, size }), className),
|
|
559
|
+
...props
|
|
560
|
+
}
|
|
561
|
+
);
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
// src/components/checkbox.tsx
|
|
565
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
566
|
+
import { Check as Check2 } from "lucide-react";
|
|
567
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
568
|
+
var Checkbox = ({ className, ...props }) => {
|
|
569
|
+
return /* @__PURE__ */ jsx24(
|
|
570
|
+
CheckboxPrimitive.Root,
|
|
571
|
+
{
|
|
572
|
+
"data-id": "Checkbox",
|
|
573
|
+
"data-slot": "checkbox",
|
|
574
|
+
className: cn(
|
|
575
|
+
`peer size-5 shrink-0 rounded-sm border border-border bg-card ${motion.surface} hover:border-primary focus-visible:border-primary focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground`,
|
|
576
|
+
className
|
|
577
|
+
),
|
|
578
|
+
...props,
|
|
579
|
+
children: /* @__PURE__ */ jsx24(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: /* @__PURE__ */ jsx24(Check2, { className: "size-3.5 stroke-[3]" }) })
|
|
580
|
+
}
|
|
581
|
+
);
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
// src/components/badge.tsx
|
|
585
|
+
import { cva as cva7 } from "class-variance-authority";
|
|
586
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
587
|
+
var badgeVariants = cva7(
|
|
588
|
+
`inline-flex items-center font-sans font-semibold uppercase tracking-[0.12em] ${motion.surface}`,
|
|
589
|
+
{
|
|
590
|
+
variants: {
|
|
591
|
+
variant: {
|
|
592
|
+
default: "rounded-pill border-2 border-primary bg-primary text-primary-foreground",
|
|
593
|
+
tag: "rounded-pill border-2 border-border bg-card text-card-foreground hover:border-primary hover:bg-primary/25",
|
|
594
|
+
outline: "rounded-pill border border-border bg-card text-foreground",
|
|
595
|
+
secondary: "rounded-pill border-2 border-secondary bg-secondary text-secondary-foreground",
|
|
596
|
+
destructive: "rounded-pill border-2 border-destructive bg-destructive text-destructive-foreground"
|
|
597
|
+
},
|
|
598
|
+
size: {
|
|
599
|
+
default: "px-3.5 py-1.5 text-[11px]",
|
|
600
|
+
sm: "px-2.5 py-1 text-[10px]"
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
defaultVariants: {
|
|
604
|
+
variant: "default",
|
|
605
|
+
size: "default"
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
);
|
|
609
|
+
var Badge = ({ className, variant, size, ...props }) => {
|
|
610
|
+
return /* @__PURE__ */ jsx25("span", { "data-id": "Badge", className: cn(badgeVariants({ variant, size }), className), ...props });
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
// src/components/switch.tsx
|
|
614
|
+
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
615
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
616
|
+
var Switch = ({ className, ...props }) => {
|
|
617
|
+
return /* @__PURE__ */ jsx26(
|
|
618
|
+
SwitchPrimitive.Root,
|
|
619
|
+
{
|
|
620
|
+
"data-id": "Switch",
|
|
621
|
+
"data-slot": "switch",
|
|
622
|
+
className: cn(
|
|
623
|
+
`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-pill border border-border bg-muted ${motion.surface} focus-visible:border-primary focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary`,
|
|
624
|
+
className
|
|
625
|
+
),
|
|
626
|
+
...props,
|
|
627
|
+
children: /* @__PURE__ */ jsx26(
|
|
628
|
+
SwitchPrimitive.Thumb,
|
|
629
|
+
{
|
|
630
|
+
"data-id": "SwitchThumb",
|
|
631
|
+
className: `pointer-events-none block size-5 rounded-pill bg-card shadow-sm ${motion.surface} data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0.5`
|
|
632
|
+
}
|
|
633
|
+
)
|
|
634
|
+
}
|
|
635
|
+
);
|
|
636
|
+
};
|
|
637
|
+
|
|
638
|
+
// src/components/radio-group.tsx
|
|
639
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
640
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
641
|
+
var RadioGroup = ({ className, ...props }) => {
|
|
642
|
+
return /* @__PURE__ */ jsx27(
|
|
643
|
+
RadioGroupPrimitive.Root,
|
|
644
|
+
{
|
|
645
|
+
"data-id": "RadioGroup",
|
|
646
|
+
className: cn("grid gap-2", className),
|
|
647
|
+
...props
|
|
648
|
+
}
|
|
649
|
+
);
|
|
650
|
+
};
|
|
651
|
+
|
|
652
|
+
// src/components/radio-group-item.tsx
|
|
653
|
+
import * as RadioGroupPrimitive2 from "@radix-ui/react-radio-group";
|
|
654
|
+
import { Circle } from "lucide-react";
|
|
655
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
656
|
+
var RadioGroupItem = ({ className, ...props }) => {
|
|
657
|
+
return /* @__PURE__ */ jsx28(
|
|
658
|
+
RadioGroupPrimitive2.Item,
|
|
659
|
+
{
|
|
660
|
+
"data-id": "RadioGroupItem",
|
|
661
|
+
className: cn(
|
|
662
|
+
`aspect-square size-5 rounded-full border border-border bg-card ${motion.surface} hover:border-primary focus-visible:border-primary focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary`,
|
|
663
|
+
className
|
|
664
|
+
),
|
|
665
|
+
...props,
|
|
666
|
+
children: /* @__PURE__ */ jsx28(RadioGroupPrimitive2.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx28(Circle, { className: "size-2.5 fill-primary text-primary" }) })
|
|
667
|
+
}
|
|
668
|
+
);
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
// src/components/tabs.tsx
|
|
672
|
+
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
673
|
+
var Tabs = TabsPrimitive.Root;
|
|
674
|
+
|
|
675
|
+
// src/components/tabs-list.tsx
|
|
676
|
+
import * as TabsPrimitive2 from "@radix-ui/react-tabs";
|
|
677
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
678
|
+
var TabsList = ({ className, ...props }) => {
|
|
679
|
+
return /* @__PURE__ */ jsx29(
|
|
680
|
+
TabsPrimitive2.List,
|
|
681
|
+
{
|
|
682
|
+
"data-id": "TabsList",
|
|
683
|
+
className: cn(
|
|
684
|
+
"inline-flex items-center gap-1 rounded-pill border border-border bg-card p-1",
|
|
685
|
+
className
|
|
686
|
+
),
|
|
687
|
+
...props
|
|
688
|
+
}
|
|
689
|
+
);
|
|
690
|
+
};
|
|
691
|
+
|
|
692
|
+
// src/components/tabs-trigger.tsx
|
|
693
|
+
import * as TabsPrimitive3 from "@radix-ui/react-tabs";
|
|
694
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
695
|
+
var TabsTrigger = ({ className, ...props }) => {
|
|
696
|
+
return /* @__PURE__ */ jsx30(
|
|
697
|
+
TabsPrimitive3.Trigger,
|
|
698
|
+
{
|
|
699
|
+
"data-id": "TabsTrigger",
|
|
700
|
+
className: cn(
|
|
701
|
+
`inline-flex items-center justify-center rounded-pill px-4 py-2 font-sans text-[11px] font-semibold uppercase tracking-[0.12em] ${motion.surface} hover:bg-muted focus-visible:outline-none focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground`,
|
|
702
|
+
className
|
|
703
|
+
),
|
|
704
|
+
...props
|
|
705
|
+
}
|
|
706
|
+
);
|
|
707
|
+
};
|
|
708
|
+
|
|
709
|
+
// src/components/tabs-content.tsx
|
|
710
|
+
import * as TabsPrimitive4 from "@radix-ui/react-tabs";
|
|
711
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
712
|
+
var TabsContent = ({ className, ...props }) => {
|
|
713
|
+
return /* @__PURE__ */ jsx31(
|
|
714
|
+
TabsPrimitive4.Content,
|
|
715
|
+
{
|
|
716
|
+
"data-id": "TabsContent",
|
|
717
|
+
className: cn(`mt-4 outline-none ${motion.surface} focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)]`, className),
|
|
718
|
+
...props
|
|
719
|
+
}
|
|
720
|
+
);
|
|
721
|
+
};
|
|
722
|
+
|
|
723
|
+
// src/components/tooltip-provider.tsx
|
|
724
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
725
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
726
|
+
var TooltipProvider = ({ delayDuration = 200, ...props }) => {
|
|
727
|
+
return /* @__PURE__ */ jsx32(TooltipPrimitive.Provider, { delayDuration, ...props });
|
|
728
|
+
};
|
|
729
|
+
|
|
730
|
+
// src/components/tooltip.tsx
|
|
731
|
+
import * as TooltipPrimitive2 from "@radix-ui/react-tooltip";
|
|
732
|
+
var Tooltip = TooltipPrimitive2.Root;
|
|
733
|
+
|
|
734
|
+
// src/components/tooltip-trigger.tsx
|
|
735
|
+
import * as TooltipPrimitive3 from "@radix-ui/react-tooltip";
|
|
736
|
+
var TooltipTrigger = TooltipPrimitive3.Trigger;
|
|
737
|
+
|
|
738
|
+
// src/components/tooltip-content.tsx
|
|
739
|
+
import * as TooltipPrimitive4 from "@radix-ui/react-tooltip";
|
|
740
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
741
|
+
var TooltipContent = ({ className, sideOffset = 8, ...props }) => {
|
|
742
|
+
return /* @__PURE__ */ jsx33(TooltipPrimitive4.Portal, { children: /* @__PURE__ */ jsx33(
|
|
743
|
+
TooltipPrimitive4.Content,
|
|
744
|
+
{
|
|
745
|
+
"data-id": "TooltipContent",
|
|
746
|
+
sideOffset,
|
|
747
|
+
className: cn(
|
|
748
|
+
"z-50 rounded-md border border-border bg-card px-3 py-1.5 font-sans text-xs text-card-foreground shadow-[0_12px_24px_rgba(0,0,0,0.08)] animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
749
|
+
className
|
|
750
|
+
),
|
|
751
|
+
...props
|
|
752
|
+
}
|
|
753
|
+
) });
|
|
754
|
+
};
|
|
755
|
+
|
|
756
|
+
// src/components/separator.tsx
|
|
757
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
758
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
759
|
+
var Separator2 = ({
|
|
760
|
+
className,
|
|
761
|
+
orientation = "horizontal",
|
|
762
|
+
decorative = true,
|
|
763
|
+
...props
|
|
764
|
+
}) => {
|
|
765
|
+
return /* @__PURE__ */ jsx34(
|
|
766
|
+
SeparatorPrimitive.Root,
|
|
767
|
+
{
|
|
768
|
+
"data-id": "Separator",
|
|
769
|
+
decorative,
|
|
770
|
+
orientation,
|
|
771
|
+
className: cn(
|
|
772
|
+
"shrink-0 bg-border",
|
|
773
|
+
orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
|
|
774
|
+
className
|
|
775
|
+
),
|
|
776
|
+
...props
|
|
777
|
+
}
|
|
778
|
+
);
|
|
779
|
+
};
|
|
780
|
+
|
|
781
|
+
// src/components/accordion.tsx
|
|
782
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
783
|
+
var Accordion = AccordionPrimitive.Root;
|
|
784
|
+
|
|
785
|
+
// src/components/accordion-item.tsx
|
|
786
|
+
import * as AccordionPrimitive2 from "@radix-ui/react-accordion";
|
|
787
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
788
|
+
var AccordionItem = ({ className, ...props }) => {
|
|
789
|
+
return /* @__PURE__ */ jsx35(
|
|
790
|
+
AccordionPrimitive2.Item,
|
|
791
|
+
{
|
|
792
|
+
"data-id": "AccordionItem",
|
|
793
|
+
className: cn("border-b border-border", className),
|
|
794
|
+
...props
|
|
795
|
+
}
|
|
796
|
+
);
|
|
797
|
+
};
|
|
798
|
+
|
|
799
|
+
// src/components/accordion-trigger.tsx
|
|
800
|
+
import * as AccordionPrimitive3 from "@radix-ui/react-accordion";
|
|
801
|
+
import { ChevronDown as ChevronDown3 } from "lucide-react";
|
|
802
|
+
import { jsx as jsx36, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
803
|
+
var AccordionTrigger = ({ className, children, ...props }) => {
|
|
804
|
+
return /* @__PURE__ */ jsx36(AccordionPrimitive3.Header, { className: "flex", children: /* @__PURE__ */ jsxs5(
|
|
805
|
+
AccordionPrimitive3.Trigger,
|
|
806
|
+
{
|
|
807
|
+
"data-id": "AccordionTrigger",
|
|
808
|
+
className: cn(
|
|
809
|
+
`flex flex-1 items-center justify-between py-4 text-left font-sans text-sm font-semibold ${motion.surface} hover:text-brand-gold focus-visible:outline-none focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] [&[data-state=open]>svg]:rotate-180`,
|
|
810
|
+
className
|
|
811
|
+
),
|
|
812
|
+
...props,
|
|
813
|
+
children: [
|
|
814
|
+
children,
|
|
815
|
+
/* @__PURE__ */ jsx36(ChevronDown3, { className: `size-4 shrink-0 ${motion.surface}` })
|
|
816
|
+
]
|
|
817
|
+
}
|
|
818
|
+
) });
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
// src/components/accordion-content.tsx
|
|
822
|
+
import * as AccordionPrimitive4 from "@radix-ui/react-accordion";
|
|
823
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
824
|
+
var AccordionContent = ({ className, children, ...props }) => {
|
|
825
|
+
return /* @__PURE__ */ jsx37(
|
|
826
|
+
AccordionPrimitive4.Content,
|
|
827
|
+
{
|
|
828
|
+
"data-id": "AccordionContent",
|
|
829
|
+
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
830
|
+
...props,
|
|
831
|
+
children: /* @__PURE__ */ jsx37("div", { className: cn("pb-4 text-muted-foreground", className), children })
|
|
832
|
+
}
|
|
833
|
+
);
|
|
834
|
+
};
|
|
835
|
+
|
|
836
|
+
// src/components/alert.tsx
|
|
837
|
+
import { cva as cva8 } from "class-variance-authority";
|
|
838
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
839
|
+
var alertVariants = cva8("relative w-full rounded-lg border px-4 py-3 font-sans text-sm", {
|
|
840
|
+
variants: {
|
|
841
|
+
variant: {
|
|
842
|
+
default: "border-border bg-card text-card-foreground",
|
|
843
|
+
warning: "border-primary/60 bg-primary/15 text-foreground",
|
|
844
|
+
destructive: "border-destructive/40 bg-destructive/10 text-destructive"
|
|
845
|
+
}
|
|
846
|
+
},
|
|
847
|
+
defaultVariants: {
|
|
848
|
+
variant: "default"
|
|
849
|
+
}
|
|
850
|
+
});
|
|
851
|
+
var Alert = ({ className, variant, ...props }) => {
|
|
852
|
+
return /* @__PURE__ */ jsx38("div", { "data-id": "Alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props });
|
|
853
|
+
};
|
|
854
|
+
|
|
855
|
+
// src/components/alert-title.tsx
|
|
856
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
857
|
+
var AlertTitle = ({ className, ...props }) => {
|
|
858
|
+
return /* @__PURE__ */ jsx39(
|
|
859
|
+
"h5",
|
|
860
|
+
{
|
|
861
|
+
"data-id": "AlertTitle",
|
|
862
|
+
className: cn("mb-1 font-sans text-sm font-semibold tracking-tight", className),
|
|
863
|
+
...props
|
|
864
|
+
}
|
|
865
|
+
);
|
|
866
|
+
};
|
|
867
|
+
|
|
868
|
+
// src/components/alert-description.tsx
|
|
869
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
870
|
+
var AlertDescription = ({ className, ...props }) => {
|
|
871
|
+
return /* @__PURE__ */ jsx40("p", { "data-id": "AlertDescription", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
872
|
+
};
|
|
873
|
+
|
|
874
|
+
// src/components/avatar.tsx
|
|
875
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
876
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
877
|
+
var Avatar = ({ className, ...props }) => {
|
|
878
|
+
return /* @__PURE__ */ jsx41(
|
|
879
|
+
AvatarPrimitive.Root,
|
|
880
|
+
{
|
|
881
|
+
"data-id": "Avatar",
|
|
882
|
+
className: cn("relative flex size-10 shrink-0 overflow-hidden rounded-pill", className),
|
|
883
|
+
...props
|
|
884
|
+
}
|
|
885
|
+
);
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
// src/components/avatar-image.tsx
|
|
889
|
+
import * as AvatarPrimitive2 from "@radix-ui/react-avatar";
|
|
890
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
891
|
+
var AvatarImage = ({ className, ...props }) => {
|
|
892
|
+
return /* @__PURE__ */ jsx42(
|
|
893
|
+
AvatarPrimitive2.Image,
|
|
894
|
+
{
|
|
895
|
+
"data-id": "AvatarImage",
|
|
896
|
+
className: cn("aspect-square size-full object-cover", className),
|
|
897
|
+
...props
|
|
898
|
+
}
|
|
899
|
+
);
|
|
900
|
+
};
|
|
901
|
+
|
|
902
|
+
// src/components/avatar-fallback.tsx
|
|
903
|
+
import * as AvatarPrimitive3 from "@radix-ui/react-avatar";
|
|
904
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
905
|
+
var AvatarFallback = ({ className, ...props }) => {
|
|
906
|
+
return /* @__PURE__ */ jsx43(
|
|
907
|
+
AvatarPrimitive3.Fallback,
|
|
908
|
+
{
|
|
909
|
+
"data-id": "AvatarFallback",
|
|
910
|
+
className: cn(
|
|
911
|
+
"flex size-full items-center justify-center bg-primary font-sans text-xs font-semibold uppercase text-primary-foreground",
|
|
912
|
+
className
|
|
913
|
+
),
|
|
914
|
+
...props
|
|
915
|
+
}
|
|
916
|
+
);
|
|
917
|
+
};
|
|
918
|
+
|
|
919
|
+
// src/components/dropdown-menu.tsx
|
|
920
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
921
|
+
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
922
|
+
|
|
923
|
+
// src/components/dropdown-menu-trigger.tsx
|
|
924
|
+
import * as DropdownMenuPrimitive2 from "@radix-ui/react-dropdown-menu";
|
|
925
|
+
var DropdownMenuTrigger = DropdownMenuPrimitive2.Trigger;
|
|
926
|
+
|
|
927
|
+
// src/components/dropdown-menu-content.tsx
|
|
928
|
+
import * as DropdownMenuPrimitive3 from "@radix-ui/react-dropdown-menu";
|
|
929
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
930
|
+
var DropdownMenuContent = ({
|
|
931
|
+
className,
|
|
932
|
+
sideOffset = 8,
|
|
933
|
+
...props
|
|
934
|
+
}) => {
|
|
935
|
+
return /* @__PURE__ */ jsx44(DropdownMenuPrimitive3.Portal, { children: /* @__PURE__ */ jsx44(
|
|
936
|
+
DropdownMenuPrimitive3.Content,
|
|
937
|
+
{
|
|
938
|
+
"data-id": "DropdownMenuContent",
|
|
939
|
+
sideOffset,
|
|
940
|
+
className: cn(
|
|
941
|
+
"z-50 min-w-40 overflow-hidden rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-[0_18px_40px_rgba(0,0,0,0.08)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
942
|
+
className
|
|
943
|
+
),
|
|
944
|
+
...props
|
|
945
|
+
}
|
|
946
|
+
) });
|
|
947
|
+
};
|
|
948
|
+
|
|
949
|
+
// src/components/dropdown-menu-item.tsx
|
|
950
|
+
import * as DropdownMenuPrimitive4 from "@radix-ui/react-dropdown-menu";
|
|
951
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
952
|
+
var DropdownMenuItem = ({ className, ...props }) => {
|
|
953
|
+
return /* @__PURE__ */ jsx45(
|
|
954
|
+
DropdownMenuPrimitive4.Item,
|
|
955
|
+
{
|
|
956
|
+
"data-id": "DropdownMenuItem",
|
|
957
|
+
className: cn(
|
|
958
|
+
`relative flex cursor-default items-center rounded-md px-3 py-2 text-sm outline-none ${motion.surface} focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,
|
|
959
|
+
className
|
|
960
|
+
),
|
|
961
|
+
...props
|
|
962
|
+
}
|
|
963
|
+
);
|
|
964
|
+
};
|
|
965
|
+
|
|
966
|
+
// src/components/dropdown-menu-label.tsx
|
|
967
|
+
import * as DropdownMenuPrimitive5 from "@radix-ui/react-dropdown-menu";
|
|
968
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
969
|
+
var DropdownMenuLabel = ({ className, ...props }) => {
|
|
970
|
+
return /* @__PURE__ */ jsx46(
|
|
971
|
+
DropdownMenuPrimitive5.Label,
|
|
972
|
+
{
|
|
973
|
+
"data-id": "DropdownMenuLabel",
|
|
974
|
+
className: cn("px-3 py-2 text-xs font-semibold uppercase tracking-[0.12em]", className),
|
|
975
|
+
...props
|
|
976
|
+
}
|
|
977
|
+
);
|
|
978
|
+
};
|
|
979
|
+
|
|
980
|
+
// src/components/dropdown-menu-separator.tsx
|
|
981
|
+
import * as DropdownMenuPrimitive6 from "@radix-ui/react-dropdown-menu";
|
|
982
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
983
|
+
var DropdownMenuSeparator = ({ className, ...props }) => {
|
|
984
|
+
return /* @__PURE__ */ jsx47(
|
|
985
|
+
DropdownMenuPrimitive6.Separator,
|
|
986
|
+
{
|
|
987
|
+
"data-id": "DropdownMenuSeparator",
|
|
988
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
989
|
+
...props
|
|
990
|
+
}
|
|
991
|
+
);
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
// src/components/popover.tsx
|
|
995
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
996
|
+
var Popover = PopoverPrimitive.Root;
|
|
997
|
+
|
|
998
|
+
// src/components/popover-trigger.tsx
|
|
999
|
+
import * as PopoverPrimitive2 from "@radix-ui/react-popover";
|
|
1000
|
+
var PopoverTrigger = PopoverPrimitive2.Trigger;
|
|
1001
|
+
|
|
1002
|
+
// src/components/popover-content.tsx
|
|
1003
|
+
import * as PopoverPrimitive3 from "@radix-ui/react-popover";
|
|
1004
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
1005
|
+
var PopoverContent = ({
|
|
1006
|
+
className,
|
|
1007
|
+
align = "center",
|
|
1008
|
+
sideOffset = 8,
|
|
1009
|
+
...props
|
|
1010
|
+
}) => {
|
|
1011
|
+
return /* @__PURE__ */ jsx48(PopoverPrimitive3.Portal, { children: /* @__PURE__ */ jsx48(
|
|
1012
|
+
PopoverPrimitive3.Content,
|
|
1013
|
+
{
|
|
1014
|
+
"data-id": "PopoverContent",
|
|
1015
|
+
align,
|
|
1016
|
+
sideOffset,
|
|
1017
|
+
className: cn(
|
|
1018
|
+
"z-50 w-72 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-[0_18px_40px_rgba(0,0,0,0.08)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
1019
|
+
className
|
|
1020
|
+
),
|
|
1021
|
+
...props
|
|
1022
|
+
}
|
|
1023
|
+
) });
|
|
1024
|
+
};
|
|
1025
|
+
|
|
1026
|
+
// src/components/sheet.tsx
|
|
1027
|
+
import * as DialogPrimitive9 from "@radix-ui/react-dialog";
|
|
1028
|
+
var Sheet = DialogPrimitive9.Root;
|
|
1029
|
+
|
|
1030
|
+
// src/components/sheet-trigger.tsx
|
|
1031
|
+
import * as DialogPrimitive10 from "@radix-ui/react-dialog";
|
|
1032
|
+
var SheetTrigger = DialogPrimitive10.Trigger;
|
|
1033
|
+
|
|
1034
|
+
// src/components/sheet-content.tsx
|
|
1035
|
+
import * as DialogPrimitive11 from "@radix-ui/react-dialog";
|
|
1036
|
+
import { cva as cva9 } from "class-variance-authority";
|
|
1037
|
+
import { X as X2 } from "lucide-react";
|
|
1038
|
+
import { jsx as jsx49, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1039
|
+
var sheetContentVariants = cva9(
|
|
1040
|
+
`fixed z-50 flex flex-col gap-4 border-border bg-card p-6 text-card-foreground shadow-[0_24px_48px_rgba(0,0,0,0.12)] ${motion.surface} data-[state=open]:animate-in data-[state=closed]:animate-out`,
|
|
1041
|
+
{
|
|
1042
|
+
variants: {
|
|
1043
|
+
side: {
|
|
1044
|
+
right: "inset-y-0 right-0 h-full w-full max-w-sm border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right",
|
|
1045
|
+
left: "inset-y-0 left-0 h-full w-full max-w-sm border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left",
|
|
1046
|
+
top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
1047
|
+
bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom"
|
|
1048
|
+
}
|
|
1049
|
+
},
|
|
1050
|
+
defaultVariants: {
|
|
1051
|
+
side: "right"
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
);
|
|
1055
|
+
var SheetContent = ({ className, children, side, ...props }) => {
|
|
1056
|
+
return /* @__PURE__ */ jsxs6(DialogPortal, { children: [
|
|
1057
|
+
/* @__PURE__ */ jsx49(DialogOverlay, {}),
|
|
1058
|
+
/* @__PURE__ */ jsxs6(
|
|
1059
|
+
DialogPrimitive11.Content,
|
|
1060
|
+
{
|
|
1061
|
+
"data-id": "SheetContent",
|
|
1062
|
+
className: cn(sheetContentVariants({ side }), className),
|
|
1063
|
+
...props,
|
|
1064
|
+
children: [
|
|
1065
|
+
children,
|
|
1066
|
+
/* @__PURE__ */ jsxs6(
|
|
1067
|
+
DialogPrimitive11.Close,
|
|
1068
|
+
{
|
|
1069
|
+
"data-id": "SheetClose",
|
|
1070
|
+
className: `absolute top-4 right-4 rounded-pill p-1 opacity-70 ${motion.surface} hover:bg-muted hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none`,
|
|
1071
|
+
children: [
|
|
1072
|
+
/* @__PURE__ */ jsx49(X2, { className: "size-4" }),
|
|
1073
|
+
/* @__PURE__ */ jsx49("span", { className: "sr-only", children: "Close" })
|
|
1074
|
+
]
|
|
1075
|
+
}
|
|
1076
|
+
)
|
|
1077
|
+
]
|
|
1078
|
+
}
|
|
1079
|
+
)
|
|
1080
|
+
] });
|
|
1081
|
+
};
|
|
1082
|
+
|
|
1083
|
+
// src/components/sheet-header.tsx
|
|
1084
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
1085
|
+
var SheetHeader = ({ className, ...props }) => {
|
|
1086
|
+
return /* @__PURE__ */ jsx50("div", { "data-id": "SheetHeader", className: cn("flex flex-col gap-1.5 pr-8", className), ...props });
|
|
1087
|
+
};
|
|
1088
|
+
|
|
1089
|
+
// src/components/sheet-title.tsx
|
|
1090
|
+
import * as DialogPrimitive12 from "@radix-ui/react-dialog";
|
|
1091
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
1092
|
+
var SheetTitle = ({ className, ...props }) => {
|
|
1093
|
+
return /* @__PURE__ */ jsx51(
|
|
1094
|
+
DialogPrimitive12.Title,
|
|
1095
|
+
{
|
|
1096
|
+
"data-id": "SheetTitle",
|
|
1097
|
+
className: cn("font-sans text-lg font-semibold tracking-tight", className),
|
|
1098
|
+
...props
|
|
1099
|
+
}
|
|
1100
|
+
);
|
|
1101
|
+
};
|
|
1102
|
+
|
|
1103
|
+
// src/components/sheet-description.tsx
|
|
1104
|
+
import * as DialogPrimitive13 from "@radix-ui/react-dialog";
|
|
1105
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
1106
|
+
var SheetDescription = ({ className, ...props }) => {
|
|
1107
|
+
return /* @__PURE__ */ jsx52(
|
|
1108
|
+
DialogPrimitive13.Description,
|
|
1109
|
+
{
|
|
1110
|
+
"data-id": "SheetDescription",
|
|
1111
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
1112
|
+
...props
|
|
1113
|
+
}
|
|
1114
|
+
);
|
|
1115
|
+
};
|
|
1116
|
+
|
|
1117
|
+
// src/components/skeleton.tsx
|
|
1118
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
1119
|
+
var Skeleton = ({ className, ...props }) => {
|
|
1120
|
+
return /* @__PURE__ */ jsx53(
|
|
1121
|
+
"div",
|
|
1122
|
+
{
|
|
1123
|
+
"data-id": "Skeleton",
|
|
1124
|
+
className: cn(`animate-pulse rounded-md bg-muted ${motion.surface}`, className),
|
|
1125
|
+
...props
|
|
1126
|
+
}
|
|
1127
|
+
);
|
|
1128
|
+
};
|
|
1129
|
+
|
|
1130
|
+
// src/components/slider.tsx
|
|
1131
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
1132
|
+
import { jsx as jsx54, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1133
|
+
var Slider = ({ className, ...props }) => {
|
|
1134
|
+
return /* @__PURE__ */ jsxs7(
|
|
1135
|
+
SliderPrimitive.Root,
|
|
1136
|
+
{
|
|
1137
|
+
"data-id": "Slider",
|
|
1138
|
+
className: cn("relative flex w-full touch-none items-center select-none", className),
|
|
1139
|
+
...props,
|
|
1140
|
+
children: [
|
|
1141
|
+
/* @__PURE__ */ jsx54(
|
|
1142
|
+
SliderPrimitive.Track,
|
|
1143
|
+
{
|
|
1144
|
+
"data-id": "SliderTrack",
|
|
1145
|
+
className: "relative h-2 w-full grow overflow-hidden rounded-pill bg-muted",
|
|
1146
|
+
children: /* @__PURE__ */ jsx54(SliderPrimitive.Range, { className: "absolute h-full bg-primary" })
|
|
1147
|
+
}
|
|
1148
|
+
),
|
|
1149
|
+
/* @__PURE__ */ jsx54(
|
|
1150
|
+
SliderPrimitive.Thumb,
|
|
1151
|
+
{
|
|
1152
|
+
"data-id": "SliderThumb",
|
|
1153
|
+
className: `block size-5 rounded-pill border border-primary bg-card ${motion.surface} focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50`
|
|
1154
|
+
}
|
|
1155
|
+
)
|
|
1156
|
+
]
|
|
1157
|
+
}
|
|
1158
|
+
);
|
|
1159
|
+
};
|
|
1160
|
+
|
|
1161
|
+
// src/components/table.tsx
|
|
1162
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
1163
|
+
var Table = ({ className, ...props }) => {
|
|
1164
|
+
return /* @__PURE__ */ jsx55("div", { "data-id": "TableWrap", className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx55("table", { "data-id": "Table", className: cn("w-full caption-bottom text-sm", className), ...props }) });
|
|
1165
|
+
};
|
|
1166
|
+
|
|
1167
|
+
// src/components/table-header.tsx
|
|
1168
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
1169
|
+
var TableHeader = ({ className, ...props }) => {
|
|
1170
|
+
return /* @__PURE__ */ jsx56("thead", { "data-id": "TableHeader", className: cn("[&_tr]:border-b", className), ...props });
|
|
1171
|
+
};
|
|
1172
|
+
|
|
1173
|
+
// src/components/table-body.tsx
|
|
1174
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
1175
|
+
var TableBody = ({ className, ...props }) => {
|
|
1176
|
+
return /* @__PURE__ */ jsx57("tbody", { "data-id": "TableBody", className: cn("[&_tr:last-child]:border-0", className), ...props });
|
|
1177
|
+
};
|
|
1178
|
+
|
|
1179
|
+
// src/components/table-footer.tsx
|
|
1180
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
1181
|
+
var TableFooter = ({ className, ...props }) => {
|
|
1182
|
+
return /* @__PURE__ */ jsx58(
|
|
1183
|
+
"tfoot",
|
|
1184
|
+
{
|
|
1185
|
+
"data-id": "TableFooter",
|
|
1186
|
+
className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className),
|
|
1187
|
+
...props
|
|
1188
|
+
}
|
|
1189
|
+
);
|
|
1190
|
+
};
|
|
1191
|
+
|
|
1192
|
+
// src/components/table-row.tsx
|
|
1193
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
1194
|
+
var TableRow = ({ className, ...props }) => {
|
|
1195
|
+
return /* @__PURE__ */ jsx59(
|
|
1196
|
+
"tr",
|
|
1197
|
+
{
|
|
1198
|
+
"data-id": "TableRow",
|
|
1199
|
+
className: cn(
|
|
1200
|
+
`border-b border-border ${motion.surface} hover:bg-muted/50 data-[state=selected]:bg-muted`,
|
|
1201
|
+
className
|
|
1202
|
+
),
|
|
1203
|
+
...props
|
|
1204
|
+
}
|
|
1205
|
+
);
|
|
1206
|
+
};
|
|
1207
|
+
|
|
1208
|
+
// src/components/table-head.tsx
|
|
1209
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
1210
|
+
var TableHead = ({ className, ...props }) => {
|
|
1211
|
+
return /* @__PURE__ */ jsx60(
|
|
1212
|
+
"th",
|
|
1213
|
+
{
|
|
1214
|
+
"data-id": "TableHead",
|
|
1215
|
+
className: cn(
|
|
1216
|
+
"h-12 px-4 text-left align-middle font-sans text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground",
|
|
1217
|
+
className
|
|
1218
|
+
),
|
|
1219
|
+
...props
|
|
1220
|
+
}
|
|
1221
|
+
);
|
|
1222
|
+
};
|
|
1223
|
+
|
|
1224
|
+
// src/components/table-cell.tsx
|
|
1225
|
+
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
1226
|
+
var TableCell = ({ className, ...props }) => {
|
|
1227
|
+
return /* @__PURE__ */ jsx61("td", { "data-id": "TableCell", className: cn("p-4 align-middle", className), ...props });
|
|
1228
|
+
};
|
|
1229
|
+
|
|
1230
|
+
// src/components/table-caption.tsx
|
|
1231
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
1232
|
+
var TableCaption = ({ className, ...props }) => {
|
|
1233
|
+
return /* @__PURE__ */ jsx62(
|
|
1234
|
+
"caption",
|
|
1235
|
+
{
|
|
1236
|
+
"data-id": "TableCaption",
|
|
1237
|
+
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
1238
|
+
...props
|
|
1239
|
+
}
|
|
1240
|
+
);
|
|
1241
|
+
};
|
|
1242
|
+
|
|
1243
|
+
// src/components/pagination.tsx
|
|
1244
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
1245
|
+
var Pagination = ({ className, ...props }) => {
|
|
1246
|
+
return /* @__PURE__ */ jsx63(
|
|
1247
|
+
"nav",
|
|
1248
|
+
{
|
|
1249
|
+
"data-id": "Pagination",
|
|
1250
|
+
role: "navigation",
|
|
1251
|
+
"aria-label": "pagination",
|
|
1252
|
+
className: cn("mx-auto flex w-full justify-center", className),
|
|
1253
|
+
...props
|
|
1254
|
+
}
|
|
1255
|
+
);
|
|
1256
|
+
};
|
|
1257
|
+
|
|
1258
|
+
// src/components/pagination-content.tsx
|
|
1259
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
1260
|
+
var PaginationContent = ({ className, ...props }) => {
|
|
1261
|
+
return /* @__PURE__ */ jsx64("ul", { "data-id": "PaginationContent", className: cn("flex flex-row items-center gap-1", className), ...props });
|
|
1262
|
+
};
|
|
1263
|
+
|
|
1264
|
+
// src/components/pagination-item.tsx
|
|
1265
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
1266
|
+
var PaginationItem = (props) => {
|
|
1267
|
+
return /* @__PURE__ */ jsx65("li", { "data-id": "PaginationItem", ...props });
|
|
1268
|
+
};
|
|
1269
|
+
|
|
1270
|
+
// src/components/pagination-link.tsx
|
|
1271
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
1272
|
+
var PaginationLink = ({ className, isActive, ...props }) => {
|
|
1273
|
+
return /* @__PURE__ */ jsx66(
|
|
1274
|
+
"a",
|
|
1275
|
+
{
|
|
1276
|
+
"data-id": "PaginationLink",
|
|
1277
|
+
"aria-current": isActive ? "page" : void 0,
|
|
1278
|
+
className: cn(
|
|
1279
|
+
buttonVariants({ variant: isActive ? "default" : "outline", size: "icon" }),
|
|
1280
|
+
className
|
|
1281
|
+
),
|
|
1282
|
+
...props
|
|
1283
|
+
}
|
|
1284
|
+
);
|
|
1285
|
+
};
|
|
1286
|
+
|
|
1287
|
+
// src/components/pagination-previous.tsx
|
|
1288
|
+
import { ChevronLeft } from "lucide-react";
|
|
1289
|
+
import { jsx as jsx67, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1290
|
+
var PaginationPrevious = ({ className, ...props }) => {
|
|
1291
|
+
return /* @__PURE__ */ jsxs8(
|
|
1292
|
+
PaginationLink,
|
|
1293
|
+
{
|
|
1294
|
+
"aria-label": "Go to previous page",
|
|
1295
|
+
className: cn("w-auto gap-1 px-3", className),
|
|
1296
|
+
...props,
|
|
1297
|
+
children: [
|
|
1298
|
+
/* @__PURE__ */ jsx67(ChevronLeft, { className: "size-4" }),
|
|
1299
|
+
/* @__PURE__ */ jsx67("span", { children: "Prev" })
|
|
1300
|
+
]
|
|
1301
|
+
}
|
|
1302
|
+
);
|
|
1303
|
+
};
|
|
1304
|
+
|
|
1305
|
+
// src/components/pagination-next.tsx
|
|
1306
|
+
import { ChevronRight } from "lucide-react";
|
|
1307
|
+
import { jsx as jsx68, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1308
|
+
var PaginationNext = ({ className, ...props }) => {
|
|
1309
|
+
return /* @__PURE__ */ jsxs9(PaginationLink, { "aria-label": "Go to next page", className: cn("w-auto gap-1 px-3", className), ...props, children: [
|
|
1310
|
+
/* @__PURE__ */ jsx68("span", { children: "Next" }),
|
|
1311
|
+
/* @__PURE__ */ jsx68(ChevronRight, { className: "size-4" })
|
|
1312
|
+
] });
|
|
1313
|
+
};
|
|
1314
|
+
|
|
1315
|
+
// src/components/pagination-ellipsis.tsx
|
|
1316
|
+
import { MoreHorizontal } from "lucide-react";
|
|
1317
|
+
import { jsx as jsx69, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1318
|
+
var PaginationEllipsis = ({ className, ...props }) => {
|
|
1319
|
+
return /* @__PURE__ */ jsxs10(
|
|
1320
|
+
"span",
|
|
1321
|
+
{
|
|
1322
|
+
"data-id": "PaginationEllipsis",
|
|
1323
|
+
"aria-hidden": true,
|
|
1324
|
+
className: cn("flex size-9 items-center justify-center", className),
|
|
1325
|
+
...props,
|
|
1326
|
+
children: [
|
|
1327
|
+
/* @__PURE__ */ jsx69(MoreHorizontal, { className: "size-4" }),
|
|
1328
|
+
/* @__PURE__ */ jsx69("span", { className: "sr-only", children: "More pages" })
|
|
1329
|
+
]
|
|
1330
|
+
}
|
|
1331
|
+
);
|
|
1332
|
+
};
|
|
1333
|
+
|
|
1334
|
+
// src/components/breadcrumb.tsx
|
|
1335
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
1336
|
+
var Breadcrumb = ({ ...props }) => {
|
|
1337
|
+
return /* @__PURE__ */ jsx70("nav", { "data-id": "Breadcrumb", "aria-label": "breadcrumb", ...props });
|
|
1338
|
+
};
|
|
1339
|
+
|
|
1340
|
+
// src/components/breadcrumb-list.tsx
|
|
1341
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
1342
|
+
var BreadcrumbList = ({ className, ...props }) => {
|
|
1343
|
+
return /* @__PURE__ */ jsx71(
|
|
1344
|
+
"ol",
|
|
1345
|
+
{
|
|
1346
|
+
"data-id": "BreadcrumbList",
|
|
1347
|
+
className: cn("flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground", className),
|
|
1348
|
+
...props
|
|
1349
|
+
}
|
|
1350
|
+
);
|
|
1351
|
+
};
|
|
1352
|
+
|
|
1353
|
+
// src/components/breadcrumb-item.tsx
|
|
1354
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
1355
|
+
var BreadcrumbItem = ({ className, ...props }) => {
|
|
1356
|
+
return /* @__PURE__ */ jsx72("li", { "data-id": "BreadcrumbItem", className: cn("inline-flex items-center gap-1.5", className), ...props });
|
|
1357
|
+
};
|
|
1358
|
+
|
|
1359
|
+
// src/components/breadcrumb-link.tsx
|
|
1360
|
+
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
1361
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
1362
|
+
var BreadcrumbLink = ({ asChild, className, ...props }) => {
|
|
1363
|
+
const Comp = asChild ? Slot2 : "a";
|
|
1364
|
+
return /* @__PURE__ */ jsx73(
|
|
1365
|
+
Comp,
|
|
1366
|
+
{
|
|
1367
|
+
"data-id": "BreadcrumbLink",
|
|
1368
|
+
className: cn(`${motion.surface} hover:text-foreground`, className),
|
|
1369
|
+
...props
|
|
1370
|
+
}
|
|
1371
|
+
);
|
|
1372
|
+
};
|
|
1373
|
+
|
|
1374
|
+
// src/components/breadcrumb-page.tsx
|
|
1375
|
+
import { jsx as jsx74 } from "react/jsx-runtime";
|
|
1376
|
+
var BreadcrumbPage = ({ className, ...props }) => {
|
|
1377
|
+
return /* @__PURE__ */ jsx74(
|
|
1378
|
+
"span",
|
|
1379
|
+
{
|
|
1380
|
+
"data-id": "BreadcrumbPage",
|
|
1381
|
+
role: "link",
|
|
1382
|
+
"aria-disabled": "true",
|
|
1383
|
+
"aria-current": "page",
|
|
1384
|
+
className: cn("font-medium text-foreground", className),
|
|
1385
|
+
...props
|
|
1386
|
+
}
|
|
1387
|
+
);
|
|
1388
|
+
};
|
|
1389
|
+
|
|
1390
|
+
// src/components/breadcrumb-separator.tsx
|
|
1391
|
+
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
1392
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
1393
|
+
var BreadcrumbSeparator = ({ children, className, ...props }) => {
|
|
1394
|
+
return /* @__PURE__ */ jsx75("li", { "data-id": "BreadcrumbSeparator", role: "presentation", "aria-hidden": true, className: cn("[&>svg]:size-3.5", className), ...props, children: children ?? /* @__PURE__ */ jsx75(ChevronRight2, {}) });
|
|
1395
|
+
};
|
|
1396
|
+
|
|
1397
|
+
// src/components/form.tsx
|
|
1398
|
+
import { createContext, useContext } from "react";
|
|
1399
|
+
import {
|
|
1400
|
+
Controller,
|
|
1401
|
+
FormProvider,
|
|
1402
|
+
useFormContext
|
|
1403
|
+
} from "react-hook-form";
|
|
1404
|
+
import { jsx as jsx76 } from "react/jsx-runtime";
|
|
1405
|
+
var Form = FormProvider;
|
|
1406
|
+
var FormFieldContext = createContext({});
|
|
1407
|
+
var FormField = ({
|
|
1408
|
+
...props
|
|
1409
|
+
}) => {
|
|
1410
|
+
return /* @__PURE__ */ jsx76(FormFieldContext, { value: { name: props.name }, children: /* @__PURE__ */ jsx76(Controller, { ...props }) });
|
|
1411
|
+
};
|
|
1412
|
+
var FormItemContext = createContext({});
|
|
1413
|
+
var useFormField = () => {
|
|
1414
|
+
const fieldContext = useContext(FormFieldContext);
|
|
1415
|
+
const itemContext = useContext(FormItemContext);
|
|
1416
|
+
const { getFieldState, formState } = useFormContext();
|
|
1417
|
+
const fieldState = getFieldState(fieldContext.name, formState);
|
|
1418
|
+
if (!fieldContext.name) {
|
|
1419
|
+
throw new Error("useFormField must be used within FormField");
|
|
1420
|
+
}
|
|
1421
|
+
const { id } = itemContext;
|
|
1422
|
+
return {
|
|
1423
|
+
id,
|
|
1424
|
+
name: fieldContext.name,
|
|
1425
|
+
formItemId: `${id}-form-item`,
|
|
1426
|
+
formDescriptionId: `${id}-form-item-description`,
|
|
1427
|
+
formMessageId: `${id}-form-item-message`,
|
|
1428
|
+
...fieldState
|
|
1429
|
+
};
|
|
1430
|
+
};
|
|
1431
|
+
|
|
1432
|
+
// src/components/form-item.tsx
|
|
1433
|
+
import { useId } from "react";
|
|
1434
|
+
import { jsx as jsx77 } from "react/jsx-runtime";
|
|
1435
|
+
var FormItem = ({ className, ...props }) => {
|
|
1436
|
+
const id = useId();
|
|
1437
|
+
return /* @__PURE__ */ jsx77(FormItemContext, { value: { id }, children: /* @__PURE__ */ jsx77("div", { "data-id": "FormItem", className: cn("flex flex-col gap-2", className), ...props }) });
|
|
1438
|
+
};
|
|
1439
|
+
|
|
1440
|
+
// src/components/form-label.tsx
|
|
1441
|
+
import { jsx as jsx78 } from "react/jsx-runtime";
|
|
1442
|
+
var FormLabel = ({ className, ...props }) => {
|
|
1443
|
+
const { error, formItemId } = useFormField();
|
|
1444
|
+
return /* @__PURE__ */ jsx78(
|
|
1445
|
+
Label2,
|
|
1446
|
+
{
|
|
1447
|
+
"data-id": "FormLabel",
|
|
1448
|
+
htmlFor: formItemId,
|
|
1449
|
+
className: cn(error && "text-destructive", className),
|
|
1450
|
+
...props
|
|
1451
|
+
}
|
|
1452
|
+
);
|
|
1453
|
+
};
|
|
1454
|
+
|
|
1455
|
+
// src/components/form-control.tsx
|
|
1456
|
+
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
1457
|
+
import { jsx as jsx79 } from "react/jsx-runtime";
|
|
1458
|
+
var FormControl = ({ ...props }) => {
|
|
1459
|
+
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
1460
|
+
return /* @__PURE__ */ jsx79(
|
|
1461
|
+
Slot3,
|
|
1462
|
+
{
|
|
1463
|
+
"data-id": "FormControl",
|
|
1464
|
+
id: formItemId,
|
|
1465
|
+
"aria-describedby": !error ? formDescriptionId : `${formDescriptionId} ${formMessageId}`,
|
|
1466
|
+
"aria-invalid": !!error,
|
|
1467
|
+
...props
|
|
1468
|
+
}
|
|
1469
|
+
);
|
|
1470
|
+
};
|
|
1471
|
+
|
|
1472
|
+
// src/components/form-description.tsx
|
|
1473
|
+
import { jsx as jsx80 } from "react/jsx-runtime";
|
|
1474
|
+
var FormDescription = ({ className, ...props }) => {
|
|
1475
|
+
const { formDescriptionId } = useFormField();
|
|
1476
|
+
return /* @__PURE__ */ jsx80(
|
|
1477
|
+
"p",
|
|
1478
|
+
{
|
|
1479
|
+
"data-id": "FormDescription",
|
|
1480
|
+
id: formDescriptionId,
|
|
1481
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
1482
|
+
...props
|
|
1483
|
+
}
|
|
1484
|
+
);
|
|
1485
|
+
};
|
|
1486
|
+
|
|
1487
|
+
// src/components/form-message.tsx
|
|
1488
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
1489
|
+
var FormMessage = ({ className, children, ...props }) => {
|
|
1490
|
+
const { error, formMessageId } = useFormField();
|
|
1491
|
+
const body = error ? String(error.message ?? "") : children;
|
|
1492
|
+
if (!body) {
|
|
1493
|
+
return null;
|
|
1494
|
+
}
|
|
1495
|
+
return /* @__PURE__ */ jsx81(
|
|
1496
|
+
"p",
|
|
1497
|
+
{
|
|
1498
|
+
"data-id": "FormMessage",
|
|
1499
|
+
id: formMessageId,
|
|
1500
|
+
className: cn("text-sm font-medium text-destructive", className),
|
|
1501
|
+
...props,
|
|
1502
|
+
children: body
|
|
1503
|
+
}
|
|
1504
|
+
);
|
|
1505
|
+
};
|
|
1506
|
+
|
|
1507
|
+
// src/components/toaster.tsx
|
|
1508
|
+
import { Toaster as SonnerToaster, toast } from "sonner";
|
|
1509
|
+
import { jsx as jsx82 } from "react/jsx-runtime";
|
|
1510
|
+
var Toaster = ({ ...props }) => {
|
|
1511
|
+
return /* @__PURE__ */ jsx82(
|
|
1512
|
+
SonnerToaster,
|
|
1513
|
+
{
|
|
1514
|
+
"data-id": "Toaster",
|
|
1515
|
+
theme: "light",
|
|
1516
|
+
className: "toaster group",
|
|
1517
|
+
toastOptions: {
|
|
1518
|
+
classNames: {
|
|
1519
|
+
toast: "group toast border border-border bg-card text-card-foreground shadow-[0_18px_40px_rgba(0,0,0,0.08)]",
|
|
1520
|
+
description: "text-muted-foreground",
|
|
1521
|
+
actionButton: "bg-primary text-primary-foreground",
|
|
1522
|
+
cancelButton: "bg-muted text-muted-foreground"
|
|
1523
|
+
}
|
|
1524
|
+
},
|
|
1525
|
+
...props
|
|
1526
|
+
}
|
|
1527
|
+
);
|
|
1528
|
+
};
|
|
1529
|
+
|
|
1530
|
+
// src/components/command.tsx
|
|
1531
|
+
import { Command as CommandPrimitive } from "cmdk";
|
|
1532
|
+
import { jsx as jsx83 } from "react/jsx-runtime";
|
|
1533
|
+
var Command = ({ className, ...props }) => {
|
|
1534
|
+
return /* @__PURE__ */ jsx83(
|
|
1535
|
+
CommandPrimitive,
|
|
1536
|
+
{
|
|
1537
|
+
"data-id": "Command",
|
|
1538
|
+
className: cn(
|
|
1539
|
+
"flex h-full w-full flex-col overflow-hidden rounded-lg bg-popover text-popover-foreground",
|
|
1540
|
+
className
|
|
1541
|
+
),
|
|
1542
|
+
...props
|
|
1543
|
+
}
|
|
1544
|
+
);
|
|
1545
|
+
};
|
|
1546
|
+
|
|
1547
|
+
// src/components/command-input.tsx
|
|
1548
|
+
import { Command as CommandPrimitive2 } from "cmdk";
|
|
1549
|
+
import { Search } from "lucide-react";
|
|
1550
|
+
import { jsx as jsx84, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1551
|
+
var CommandInput = ({ className, ...props }) => {
|
|
1552
|
+
return /* @__PURE__ */ jsxs11("div", { className: "flex items-center border-b border-border px-3", "data-id": "CommandInputWrap", children: [
|
|
1553
|
+
/* @__PURE__ */ jsx84(Search, { className: "mr-2 size-4 shrink-0 opacity-50" }),
|
|
1554
|
+
/* @__PURE__ */ jsx84(
|
|
1555
|
+
CommandPrimitive2.Input,
|
|
1556
|
+
{
|
|
1557
|
+
"data-id": "CommandInput",
|
|
1558
|
+
className: cn(
|
|
1559
|
+
`flex h-11 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,
|
|
1560
|
+
className
|
|
1561
|
+
),
|
|
1562
|
+
...props
|
|
1563
|
+
}
|
|
1564
|
+
)
|
|
1565
|
+
] });
|
|
1566
|
+
};
|
|
1567
|
+
|
|
1568
|
+
// src/components/command-list.tsx
|
|
1569
|
+
import { Command as CommandPrimitive3 } from "cmdk";
|
|
1570
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
1571
|
+
var CommandList = ({ className, ...props }) => {
|
|
1572
|
+
return /* @__PURE__ */ jsx85(
|
|
1573
|
+
CommandPrimitive3.List,
|
|
1574
|
+
{
|
|
1575
|
+
"data-id": "CommandList",
|
|
1576
|
+
className: cn("max-h-64 overflow-y-auto overflow-x-hidden p-1", className),
|
|
1577
|
+
...props
|
|
1578
|
+
}
|
|
1579
|
+
);
|
|
1580
|
+
};
|
|
1581
|
+
|
|
1582
|
+
// src/components/command-empty.tsx
|
|
1583
|
+
import { Command as CommandPrimitive4 } from "cmdk";
|
|
1584
|
+
import { jsx as jsx86 } from "react/jsx-runtime";
|
|
1585
|
+
var CommandEmpty = ({ className, ...props }) => {
|
|
1586
|
+
return /* @__PURE__ */ jsx86(
|
|
1587
|
+
CommandPrimitive4.Empty,
|
|
1588
|
+
{
|
|
1589
|
+
"data-id": "CommandEmpty",
|
|
1590
|
+
className: cn("py-6 text-center text-sm text-muted-foreground", className),
|
|
1591
|
+
...props
|
|
1592
|
+
}
|
|
1593
|
+
);
|
|
1594
|
+
};
|
|
1595
|
+
|
|
1596
|
+
// src/components/command-group.tsx
|
|
1597
|
+
import { Command as CommandPrimitive5 } from "cmdk";
|
|
1598
|
+
import { jsx as jsx87 } from "react/jsx-runtime";
|
|
1599
|
+
var CommandGroup = ({ className, ...props }) => {
|
|
1600
|
+
return /* @__PURE__ */ jsx87(
|
|
1601
|
+
CommandPrimitive5.Group,
|
|
1602
|
+
{
|
|
1603
|
+
"data-id": "CommandGroup",
|
|
1604
|
+
className: cn(
|
|
1605
|
+
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-[0.12em] [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
1606
|
+
className
|
|
1607
|
+
),
|
|
1608
|
+
...props
|
|
1609
|
+
}
|
|
1610
|
+
);
|
|
1611
|
+
};
|
|
1612
|
+
|
|
1613
|
+
// src/components/command-item.tsx
|
|
1614
|
+
import { Command as CommandPrimitive6 } from "cmdk";
|
|
1615
|
+
import { jsx as jsx88 } from "react/jsx-runtime";
|
|
1616
|
+
var CommandItem = ({ className, ...props }) => {
|
|
1617
|
+
return /* @__PURE__ */ jsx88(
|
|
1618
|
+
CommandPrimitive6.Item,
|
|
1619
|
+
{
|
|
1620
|
+
"data-id": "CommandItem",
|
|
1621
|
+
className: cn(
|
|
1622
|
+
`relative flex cursor-default items-center rounded-md px-3 py-2 text-sm outline-none ${motion.surface} data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`,
|
|
1623
|
+
className
|
|
1624
|
+
),
|
|
1625
|
+
...props
|
|
1626
|
+
}
|
|
1627
|
+
);
|
|
1628
|
+
};
|
|
1629
|
+
|
|
1630
|
+
// src/components/combobox.tsx
|
|
1631
|
+
import { useState } from "react";
|
|
1632
|
+
import { Check as Check3, ChevronsUpDown } from "lucide-react";
|
|
1633
|
+
import { jsx as jsx89, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1634
|
+
var Combobox = ({
|
|
1635
|
+
options,
|
|
1636
|
+
value,
|
|
1637
|
+
onValueChange,
|
|
1638
|
+
placeholder = "Select\u2026",
|
|
1639
|
+
emptyText = "No results.",
|
|
1640
|
+
className
|
|
1641
|
+
}) => {
|
|
1642
|
+
const [open, openSetter] = useState(false);
|
|
1643
|
+
const selected = options.find((option) => option.value === value);
|
|
1644
|
+
return /* @__PURE__ */ jsxs12(Popover, { open, onOpenChange: openSetter, children: [
|
|
1645
|
+
/* @__PURE__ */ jsx89(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs12(
|
|
1646
|
+
Button,
|
|
1647
|
+
{
|
|
1648
|
+
"data-id": "Combobox",
|
|
1649
|
+
variant: "outline",
|
|
1650
|
+
role: "combobox",
|
|
1651
|
+
"aria-expanded": open,
|
|
1652
|
+
className: cn("w-full justify-between normal-case tracking-normal", className),
|
|
1653
|
+
children: [
|
|
1654
|
+
selected?.label ?? placeholder,
|
|
1655
|
+
/* @__PURE__ */ jsx89(ChevronsUpDown, { className: "size-4 opacity-50" })
|
|
1656
|
+
]
|
|
1657
|
+
}
|
|
1658
|
+
) }),
|
|
1659
|
+
/* @__PURE__ */ jsx89(PopoverContent, { className: "w-[var(--radix-popover-trigger-width)] p-0", children: /* @__PURE__ */ jsxs12(Command, { children: [
|
|
1660
|
+
/* @__PURE__ */ jsx89(CommandInput, { placeholder }),
|
|
1661
|
+
/* @__PURE__ */ jsxs12(CommandList, { children: [
|
|
1662
|
+
/* @__PURE__ */ jsx89(CommandEmpty, { children: emptyText }),
|
|
1663
|
+
options.map((option) => /* @__PURE__ */ jsxs12(
|
|
1664
|
+
CommandItem,
|
|
1665
|
+
{
|
|
1666
|
+
value: option.value,
|
|
1667
|
+
onSelect: () => {
|
|
1668
|
+
onValueChange?.(option.value === value ? "" : option.value);
|
|
1669
|
+
openSetter(false);
|
|
1670
|
+
},
|
|
1671
|
+
children: [
|
|
1672
|
+
/* @__PURE__ */ jsx89(Check3, { className: cn("mr-2 size-4", value === option.value ? "opacity-100" : "opacity-0") }),
|
|
1673
|
+
option.label
|
|
1674
|
+
]
|
|
1675
|
+
},
|
|
1676
|
+
option.value
|
|
1677
|
+
))
|
|
1678
|
+
] })
|
|
1679
|
+
] }) })
|
|
1680
|
+
] });
|
|
1681
|
+
};
|
|
1682
|
+
|
|
1683
|
+
// src/components/context-menu.tsx
|
|
1684
|
+
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
1685
|
+
var ContextMenu = ContextMenuPrimitive.Root;
|
|
1686
|
+
|
|
1687
|
+
// src/components/context-menu-trigger.tsx
|
|
1688
|
+
import * as ContextMenuPrimitive2 from "@radix-ui/react-context-menu";
|
|
1689
|
+
var ContextMenuTrigger = ContextMenuPrimitive2.Trigger;
|
|
1690
|
+
|
|
1691
|
+
// src/components/context-menu-content.tsx
|
|
1692
|
+
import * as ContextMenuPrimitive3 from "@radix-ui/react-context-menu";
|
|
1693
|
+
|
|
1694
|
+
// src/theme/overlay.ts
|
|
1695
|
+
var overlayPanel = `z-50 overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-[0_18px_40px_rgba(0,0,0,0.08)] ${motion.surface}`;
|
|
1696
|
+
var menuItem = `relative flex cursor-default items-center rounded-md px-3 py-2 text-sm outline-none ${motion.surface} focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`;
|
|
1697
|
+
|
|
1698
|
+
// src/components/context-menu-content.tsx
|
|
1699
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
1700
|
+
var ContextMenuContent = ({ className, ...props }) => {
|
|
1701
|
+
return /* @__PURE__ */ jsx90(ContextMenuPrimitive3.Portal, { children: /* @__PURE__ */ jsx90(
|
|
1702
|
+
ContextMenuPrimitive3.Content,
|
|
1703
|
+
{
|
|
1704
|
+
"data-id": "ContextMenuContent",
|
|
1705
|
+
className: cn(overlayPanel, "min-w-40 p-1", className),
|
|
1706
|
+
...props
|
|
1707
|
+
}
|
|
1708
|
+
) });
|
|
1709
|
+
};
|
|
1710
|
+
|
|
1711
|
+
// src/components/context-menu-item.tsx
|
|
1712
|
+
import * as ContextMenuPrimitive4 from "@radix-ui/react-context-menu";
|
|
1713
|
+
import { jsx as jsx91 } from "react/jsx-runtime";
|
|
1714
|
+
var ContextMenuItem = ({ className, ...props }) => {
|
|
1715
|
+
return /* @__PURE__ */ jsx91(ContextMenuPrimitive4.Item, { "data-id": "ContextMenuItem", className: cn(menuItem, className), ...props });
|
|
1716
|
+
};
|
|
1717
|
+
|
|
1718
|
+
// src/components/alert-dialog.tsx
|
|
1719
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
1720
|
+
var AlertDialog = AlertDialogPrimitive.Root;
|
|
1721
|
+
|
|
1722
|
+
// src/components/alert-dialog-trigger.tsx
|
|
1723
|
+
import * as AlertDialogPrimitive2 from "@radix-ui/react-alert-dialog";
|
|
1724
|
+
var AlertDialogTrigger = AlertDialogPrimitive2.Trigger;
|
|
1725
|
+
|
|
1726
|
+
// src/components/alert-dialog-content.tsx
|
|
1727
|
+
import * as AlertDialogPrimitive4 from "@radix-ui/react-alert-dialog";
|
|
1728
|
+
|
|
1729
|
+
// src/components/alert-dialog-overlay.tsx
|
|
1730
|
+
import * as AlertDialogPrimitive3 from "@radix-ui/react-alert-dialog";
|
|
1731
|
+
import { jsx as jsx92 } from "react/jsx-runtime";
|
|
1732
|
+
var AlertDialogOverlay = ({ className, ...props }) => {
|
|
1733
|
+
return /* @__PURE__ */ jsx92(
|
|
1734
|
+
AlertDialogPrimitive3.Overlay,
|
|
1735
|
+
{
|
|
1736
|
+
"data-id": "AlertDialogOverlay",
|
|
1737
|
+
className: cn(
|
|
1738
|
+
"fixed inset-0 z-50 bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1739
|
+
className
|
|
1740
|
+
),
|
|
1741
|
+
...props
|
|
1742
|
+
}
|
|
1743
|
+
);
|
|
1744
|
+
};
|
|
1745
|
+
|
|
1746
|
+
// src/components/alert-dialog-content.tsx
|
|
1747
|
+
import { jsx as jsx93, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1748
|
+
var AlertDialogContent = ({ className, ...props }) => {
|
|
1749
|
+
return /* @__PURE__ */ jsxs13(AlertDialogPrimitive4.Portal, { children: [
|
|
1750
|
+
/* @__PURE__ */ jsx93(AlertDialogOverlay, {}),
|
|
1751
|
+
/* @__PURE__ */ jsx93(
|
|
1752
|
+
AlertDialogPrimitive4.Content,
|
|
1753
|
+
{
|
|
1754
|
+
"data-id": "AlertDialogContent",
|
|
1755
|
+
className: cn(
|
|
1756
|
+
`fixed top-1/2 left-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border border-border bg-card p-6 shadow-[0_24px_48px_rgba(0,0,0,0.12)] ${motion.surface} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,
|
|
1757
|
+
className
|
|
1758
|
+
),
|
|
1759
|
+
...props
|
|
1760
|
+
}
|
|
1761
|
+
)
|
|
1762
|
+
] });
|
|
1763
|
+
};
|
|
1764
|
+
|
|
1765
|
+
// src/components/alert-dialog-header.tsx
|
|
1766
|
+
import { jsx as jsx94 } from "react/jsx-runtime";
|
|
1767
|
+
var AlertDialogHeader = ({ className, ...props }) => {
|
|
1768
|
+
return /* @__PURE__ */ jsx94("div", { "data-id": "AlertDialogHeader", className: cn("flex flex-col gap-2", className), ...props });
|
|
1769
|
+
};
|
|
1770
|
+
|
|
1771
|
+
// src/components/alert-dialog-footer.tsx
|
|
1772
|
+
import { jsx as jsx95 } from "react/jsx-runtime";
|
|
1773
|
+
var AlertDialogFooter = ({ className, ...props }) => {
|
|
1774
|
+
return /* @__PURE__ */ jsx95(
|
|
1775
|
+
"div",
|
|
1776
|
+
{
|
|
1777
|
+
"data-id": "AlertDialogFooter",
|
|
1778
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
1779
|
+
...props
|
|
1780
|
+
}
|
|
1781
|
+
);
|
|
1782
|
+
};
|
|
1783
|
+
|
|
1784
|
+
// src/components/alert-dialog-title.tsx
|
|
1785
|
+
import * as AlertDialogPrimitive5 from "@radix-ui/react-alert-dialog";
|
|
1786
|
+
import { jsx as jsx96 } from "react/jsx-runtime";
|
|
1787
|
+
var AlertDialogTitle = ({ className, ...props }) => {
|
|
1788
|
+
return /* @__PURE__ */ jsx96(
|
|
1789
|
+
AlertDialogPrimitive5.Title,
|
|
1790
|
+
{
|
|
1791
|
+
"data-id": "AlertDialogTitle",
|
|
1792
|
+
className: cn("font-sans text-lg font-semibold", className),
|
|
1793
|
+
...props
|
|
1794
|
+
}
|
|
1795
|
+
);
|
|
1796
|
+
};
|
|
1797
|
+
|
|
1798
|
+
// src/components/alert-dialog-description.tsx
|
|
1799
|
+
import * as AlertDialogPrimitive6 from "@radix-ui/react-alert-dialog";
|
|
1800
|
+
import { jsx as jsx97 } from "react/jsx-runtime";
|
|
1801
|
+
var AlertDialogDescription = ({ className, ...props }) => {
|
|
1802
|
+
return /* @__PURE__ */ jsx97(
|
|
1803
|
+
AlertDialogPrimitive6.Description,
|
|
1804
|
+
{
|
|
1805
|
+
"data-id": "AlertDialogDescription",
|
|
1806
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
1807
|
+
...props
|
|
1808
|
+
}
|
|
1809
|
+
);
|
|
1810
|
+
};
|
|
1811
|
+
|
|
1812
|
+
// src/components/alert-dialog-action.tsx
|
|
1813
|
+
import * as AlertDialogPrimitive7 from "@radix-ui/react-alert-dialog";
|
|
1814
|
+
import { jsx as jsx98 } from "react/jsx-runtime";
|
|
1815
|
+
var AlertDialogAction = ({ className, ...props }) => {
|
|
1816
|
+
return /* @__PURE__ */ jsx98(
|
|
1817
|
+
AlertDialogPrimitive7.Action,
|
|
1818
|
+
{
|
|
1819
|
+
"data-id": "AlertDialogAction",
|
|
1820
|
+
className: cn(buttonVariants(), className),
|
|
1821
|
+
...props
|
|
1822
|
+
}
|
|
1823
|
+
);
|
|
1824
|
+
};
|
|
1825
|
+
|
|
1826
|
+
// src/components/alert-dialog-cancel.tsx
|
|
1827
|
+
import * as AlertDialogPrimitive8 from "@radix-ui/react-alert-dialog";
|
|
1828
|
+
import { jsx as jsx99 } from "react/jsx-runtime";
|
|
1829
|
+
var AlertDialogCancel = ({ className, ...props }) => {
|
|
1830
|
+
return /* @__PURE__ */ jsx99(
|
|
1831
|
+
AlertDialogPrimitive8.Cancel,
|
|
1832
|
+
{
|
|
1833
|
+
"data-id": "AlertDialogCancel",
|
|
1834
|
+
className: cn(buttonVariants({ variant: "outline" }), className),
|
|
1835
|
+
...props
|
|
1836
|
+
}
|
|
1837
|
+
);
|
|
1838
|
+
};
|
|
1839
|
+
|
|
1840
|
+
// src/components/hover-card.tsx
|
|
1841
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
1842
|
+
var HoverCard = HoverCardPrimitive.Root;
|
|
1843
|
+
|
|
1844
|
+
// src/components/hover-card-trigger.tsx
|
|
1845
|
+
import * as HoverCardPrimitive2 from "@radix-ui/react-hover-card";
|
|
1846
|
+
var HoverCardTrigger = HoverCardPrimitive2.Trigger;
|
|
1847
|
+
|
|
1848
|
+
// src/components/hover-card-content.tsx
|
|
1849
|
+
import * as HoverCardPrimitive3 from "@radix-ui/react-hover-card";
|
|
1850
|
+
import { jsx as jsx100 } from "react/jsx-runtime";
|
|
1851
|
+
var HoverCardContent = ({
|
|
1852
|
+
className,
|
|
1853
|
+
align = "center",
|
|
1854
|
+
sideOffset = 8,
|
|
1855
|
+
...props
|
|
1856
|
+
}) => {
|
|
1857
|
+
return /* @__PURE__ */ jsx100(
|
|
1858
|
+
HoverCardPrimitive3.Content,
|
|
1859
|
+
{
|
|
1860
|
+
"data-id": "HoverCardContent",
|
|
1861
|
+
align,
|
|
1862
|
+
sideOffset,
|
|
1863
|
+
className: cn(
|
|
1864
|
+
overlayPanel,
|
|
1865
|
+
"w-64 p-4 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
1866
|
+
className
|
|
1867
|
+
),
|
|
1868
|
+
...props
|
|
1869
|
+
}
|
|
1870
|
+
);
|
|
1871
|
+
};
|
|
1872
|
+
|
|
1873
|
+
// src/components/progress.tsx
|
|
1874
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
1875
|
+
import { jsx as jsx101 } from "react/jsx-runtime";
|
|
1876
|
+
var Progress = ({ className, value, ...props }) => {
|
|
1877
|
+
return /* @__PURE__ */ jsx101(
|
|
1878
|
+
ProgressPrimitive.Root,
|
|
1879
|
+
{
|
|
1880
|
+
"data-id": "Progress",
|
|
1881
|
+
className: cn("relative h-2 w-full overflow-hidden rounded-pill bg-muted", className),
|
|
1882
|
+
...props,
|
|
1883
|
+
children: /* @__PURE__ */ jsx101(
|
|
1884
|
+
ProgressPrimitive.Indicator,
|
|
1885
|
+
{
|
|
1886
|
+
className: `h-full w-full flex-1 bg-primary ${motion.surface}`,
|
|
1887
|
+
style: { transform: `translateX(-${100 - (value ?? 0)}%)` }
|
|
1888
|
+
}
|
|
1889
|
+
)
|
|
1890
|
+
}
|
|
1891
|
+
);
|
|
1892
|
+
};
|
|
1893
|
+
|
|
1894
|
+
// src/components/toggle.tsx
|
|
1895
|
+
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
1896
|
+
import { cva as cva10 } from "class-variance-authority";
|
|
1897
|
+
import { jsx as jsx102 } from "react/jsx-runtime";
|
|
1898
|
+
var toggleVariants = cva10(
|
|
1899
|
+
`inline-flex items-center justify-center gap-2 rounded-pill font-sans text-sm font-semibold ${motion.surface} hover:bg-muted focus-visible:outline-none focus-visible:shadow-[0_0_0_3px_rgba(255,229,0,0.28)] disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-primary data-[state=on]:text-primary-foreground`,
|
|
1900
|
+
{
|
|
1901
|
+
variants: {
|
|
1902
|
+
variant: {
|
|
1903
|
+
default: "bg-transparent",
|
|
1904
|
+
outline: "border border-border bg-card"
|
|
1905
|
+
},
|
|
1906
|
+
size: {
|
|
1907
|
+
default: "h-9 px-3",
|
|
1908
|
+
sm: "h-8 px-2.5 text-xs",
|
|
1909
|
+
lg: "h-10 px-4"
|
|
1910
|
+
}
|
|
1911
|
+
},
|
|
1912
|
+
defaultVariants: {
|
|
1913
|
+
variant: "default",
|
|
1914
|
+
size: "default"
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
);
|
|
1918
|
+
var Toggle = ({ className, variant, size, ...props }) => {
|
|
1919
|
+
return /* @__PURE__ */ jsx102(
|
|
1920
|
+
TogglePrimitive.Root,
|
|
1921
|
+
{
|
|
1922
|
+
"data-id": "Toggle",
|
|
1923
|
+
className: cn(toggleVariants({ variant, size }), className),
|
|
1924
|
+
...props
|
|
1925
|
+
}
|
|
1926
|
+
);
|
|
1927
|
+
};
|
|
1928
|
+
|
|
1929
|
+
// src/components/toggle-group.tsx
|
|
1930
|
+
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
1931
|
+
import { createContext as createContext2, useContext as useContext2 } from "react";
|
|
1932
|
+
import { jsx as jsx103 } from "react/jsx-runtime";
|
|
1933
|
+
var ToggleGroupContext = createContext2({
|
|
1934
|
+
size: "default",
|
|
1935
|
+
variant: "default"
|
|
1936
|
+
});
|
|
1937
|
+
var ToggleGroup = ({ className, variant, size, children, ...props }) => {
|
|
1938
|
+
return /* @__PURE__ */ jsx103(
|
|
1939
|
+
ToggleGroupPrimitive.Root,
|
|
1940
|
+
{
|
|
1941
|
+
"data-id": "ToggleGroup",
|
|
1942
|
+
className: cn("flex items-center gap-1", className),
|
|
1943
|
+
...props,
|
|
1944
|
+
children: /* @__PURE__ */ jsx103(ToggleGroupContext, { value: { variant, size }, children })
|
|
1945
|
+
}
|
|
1946
|
+
);
|
|
1947
|
+
};
|
|
1948
|
+
var useToggleGroup = () => useContext2(ToggleGroupContext);
|
|
1949
|
+
|
|
1950
|
+
// src/components/toggle-group-item.tsx
|
|
1951
|
+
import * as ToggleGroupPrimitive2 from "@radix-ui/react-toggle-group";
|
|
1952
|
+
import { jsx as jsx104 } from "react/jsx-runtime";
|
|
1953
|
+
var ToggleGroupItem = ({ className, children, ...props }) => {
|
|
1954
|
+
const { variant, size } = useToggleGroup();
|
|
1955
|
+
return /* @__PURE__ */ jsx104(
|
|
1956
|
+
ToggleGroupPrimitive2.Item,
|
|
1957
|
+
{
|
|
1958
|
+
"data-id": "ToggleGroupItem",
|
|
1959
|
+
className: cn(toggleVariants({ variant, size }), className),
|
|
1960
|
+
...props,
|
|
1961
|
+
children
|
|
1962
|
+
}
|
|
1963
|
+
);
|
|
1964
|
+
};
|
|
1965
|
+
|
|
1966
|
+
// src/components/scroll-area.tsx
|
|
1967
|
+
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
1968
|
+
import { jsx as jsx105, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1969
|
+
var ScrollArea = ({ className, children, ...props }) => {
|
|
1970
|
+
return /* @__PURE__ */ jsxs14(ScrollAreaPrimitive.Root, { "data-id": "ScrollArea", className: cn("relative overflow-hidden", className), ...props, children: [
|
|
1971
|
+
/* @__PURE__ */ jsx105(ScrollAreaPrimitive.Viewport, { className: "size-full rounded-[inherit]", children }),
|
|
1972
|
+
/* @__PURE__ */ jsx105(ScrollBar, {}),
|
|
1973
|
+
/* @__PURE__ */ jsx105(ScrollAreaPrimitive.Corner, {})
|
|
1974
|
+
] });
|
|
1975
|
+
};
|
|
1976
|
+
var ScrollBar = ({ className, orientation = "vertical", ...props }) => {
|
|
1977
|
+
return /* @__PURE__ */ jsx105(
|
|
1978
|
+
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
1979
|
+
{
|
|
1980
|
+
"data-id": "ScrollBar",
|
|
1981
|
+
orientation,
|
|
1982
|
+
className: cn(
|
|
1983
|
+
"flex touch-none p-px select-none",
|
|
1984
|
+
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
|
|
1985
|
+
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
|
|
1986
|
+
className
|
|
1987
|
+
),
|
|
1988
|
+
...props,
|
|
1989
|
+
children: /* @__PURE__ */ jsx105(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-pill bg-border" })
|
|
1990
|
+
}
|
|
1991
|
+
);
|
|
1992
|
+
};
|
|
1993
|
+
|
|
1994
|
+
// src/components/collapsible.tsx
|
|
1995
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
1996
|
+
var Collapsible = CollapsiblePrimitive.Root;
|
|
1997
|
+
|
|
1998
|
+
// src/components/collapsible-trigger.tsx
|
|
1999
|
+
import * as CollapsiblePrimitive2 from "@radix-ui/react-collapsible";
|
|
2000
|
+
var CollapsibleTrigger2 = CollapsiblePrimitive2.CollapsibleTrigger;
|
|
2001
|
+
|
|
2002
|
+
// src/components/collapsible-content.tsx
|
|
2003
|
+
import * as CollapsiblePrimitive3 from "@radix-ui/react-collapsible";
|
|
2004
|
+
import { jsx as jsx106 } from "react/jsx-runtime";
|
|
2005
|
+
var CollapsibleContent2 = ({ className, ...props }) => {
|
|
2006
|
+
return /* @__PURE__ */ jsx106(
|
|
2007
|
+
CollapsiblePrimitive3.CollapsibleContent,
|
|
2008
|
+
{
|
|
2009
|
+
"data-id": "CollapsibleContent",
|
|
2010
|
+
className: cn(className),
|
|
2011
|
+
...props
|
|
2012
|
+
}
|
|
2013
|
+
);
|
|
2014
|
+
};
|
|
2015
|
+
|
|
2016
|
+
// src/components/calendar.tsx
|
|
2017
|
+
import { DayPicker } from "react-day-picker";
|
|
2018
|
+
import { jsx as jsx107 } from "react/jsx-runtime";
|
|
2019
|
+
var Calendar = ({ className, ...props }) => {
|
|
2020
|
+
return /* @__PURE__ */ jsx107(
|
|
2021
|
+
DayPicker,
|
|
2022
|
+
{
|
|
2023
|
+
"data-id": "Calendar",
|
|
2024
|
+
className: cn("p-3 font-sans", className),
|
|
2025
|
+
...props
|
|
2026
|
+
}
|
|
2027
|
+
);
|
|
2028
|
+
};
|
|
2029
|
+
|
|
2030
|
+
// src/components/date-picker.tsx
|
|
2031
|
+
import { format } from "date-fns";
|
|
2032
|
+
import { CalendarIcon } from "lucide-react";
|
|
2033
|
+
import { useState as useState2 } from "react";
|
|
2034
|
+
import { jsx as jsx108, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2035
|
+
var DatePicker = ({
|
|
2036
|
+
value,
|
|
2037
|
+
onValueChange,
|
|
2038
|
+
placeholder = "Pick a date",
|
|
2039
|
+
className
|
|
2040
|
+
}) => {
|
|
2041
|
+
const [open, openSetter] = useState2(false);
|
|
2042
|
+
return /* @__PURE__ */ jsxs15(Popover, { open, onOpenChange: openSetter, children: [
|
|
2043
|
+
/* @__PURE__ */ jsx108(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs15(
|
|
2044
|
+
Button,
|
|
2045
|
+
{
|
|
2046
|
+
"data-id": "DatePicker",
|
|
2047
|
+
variant: "outline",
|
|
2048
|
+
className: cn(
|
|
2049
|
+
"w-full justify-start normal-case tracking-normal",
|
|
2050
|
+
!value && "text-muted-foreground",
|
|
2051
|
+
className
|
|
2052
|
+
),
|
|
2053
|
+
children: [
|
|
2054
|
+
/* @__PURE__ */ jsx108(CalendarIcon, { className: "size-4" }),
|
|
2055
|
+
value ? format(value, "PPP") : placeholder
|
|
2056
|
+
]
|
|
2057
|
+
}
|
|
2058
|
+
) }),
|
|
2059
|
+
/* @__PURE__ */ jsx108(PopoverContent, { className: "w-auto p-0", children: /* @__PURE__ */ jsx108(
|
|
2060
|
+
Calendar,
|
|
2061
|
+
{
|
|
2062
|
+
mode: "single",
|
|
2063
|
+
selected: value,
|
|
2064
|
+
onSelect: (date) => {
|
|
2065
|
+
onValueChange?.(date);
|
|
2066
|
+
openSetter(false);
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
2069
|
+
) })
|
|
2070
|
+
] });
|
|
2071
|
+
};
|
|
2072
|
+
|
|
2073
|
+
// src/components/chart-container.tsx
|
|
2074
|
+
import { ResponsiveContainer } from "recharts";
|
|
2075
|
+
import { jsx as jsx109 } from "react/jsx-runtime";
|
|
2076
|
+
var ChartContainer = ({ className, children, ...props }) => {
|
|
2077
|
+
return /* @__PURE__ */ jsx109("div", { "data-id": "ChartContainer", className: cn("h-64 w-full", className), ...props, children: /* @__PURE__ */ jsx109(ResponsiveContainer, { width: "100%", height: "100%", children }) });
|
|
2078
|
+
};
|
|
2079
|
+
|
|
2080
|
+
// src/components/chart-tooltip.tsx
|
|
2081
|
+
import { Tooltip as Tooltip2 } from "recharts";
|
|
2082
|
+
|
|
2083
|
+
// src/components/carousel.tsx
|
|
2084
|
+
import useEmblaCarousel from "embla-carousel-react";
|
|
2085
|
+
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight3 } from "lucide-react";
|
|
2086
|
+
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
2087
|
+
import { jsx as jsx110, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2088
|
+
var CarouselContext = createContext3(null);
|
|
2089
|
+
var useCarousel = () => {
|
|
2090
|
+
const context = useContext3(CarouselContext);
|
|
2091
|
+
if (!context) {
|
|
2092
|
+
throw new Error("useCarousel must be used within Carousel");
|
|
2093
|
+
}
|
|
2094
|
+
return context;
|
|
2095
|
+
};
|
|
2096
|
+
var Carousel = ({ className, opts, children, ...props }) => {
|
|
2097
|
+
const [carouselRef, api] = useEmblaCarousel(opts);
|
|
2098
|
+
const scrollPrev = () => api?.scrollPrev();
|
|
2099
|
+
const scrollNext = () => api?.scrollNext();
|
|
2100
|
+
const onKeyDown = (event) => {
|
|
2101
|
+
if (event.key === "ArrowLeft") {
|
|
2102
|
+
event.preventDefault();
|
|
2103
|
+
scrollPrev();
|
|
2104
|
+
}
|
|
2105
|
+
if (event.key === "ArrowRight") {
|
|
2106
|
+
event.preventDefault();
|
|
2107
|
+
scrollNext();
|
|
2108
|
+
}
|
|
2109
|
+
};
|
|
2110
|
+
return /* @__PURE__ */ jsx110(CarouselContext, { value: { carouselRef, api, scrollPrev, scrollNext }, children: /* @__PURE__ */ jsx110(
|
|
2111
|
+
"div",
|
|
2112
|
+
{
|
|
2113
|
+
"data-id": "Carousel",
|
|
2114
|
+
className: cn("relative", className),
|
|
2115
|
+
role: "region",
|
|
2116
|
+
"aria-roledescription": "carousel",
|
|
2117
|
+
onKeyDown,
|
|
2118
|
+
...props,
|
|
2119
|
+
children
|
|
2120
|
+
}
|
|
2121
|
+
) });
|
|
2122
|
+
};
|
|
2123
|
+
var CarouselContent = ({ className, ...props }) => {
|
|
2124
|
+
const { carouselRef } = useCarousel();
|
|
2125
|
+
return /* @__PURE__ */ jsx110("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx110("div", { "data-id": "CarouselContent", className: cn("flex", className), ...props }) });
|
|
2126
|
+
};
|
|
2127
|
+
var CarouselItem = ({ className, ...props }) => {
|
|
2128
|
+
return /* @__PURE__ */ jsx110(
|
|
2129
|
+
"div",
|
|
2130
|
+
{
|
|
2131
|
+
"data-id": "CarouselItem",
|
|
2132
|
+
role: "group",
|
|
2133
|
+
"aria-roledescription": "slide",
|
|
2134
|
+
className: cn("min-w-0 shrink-0 grow-0 basis-full", className),
|
|
2135
|
+
...props
|
|
2136
|
+
}
|
|
2137
|
+
);
|
|
2138
|
+
};
|
|
2139
|
+
var CarouselPrevious = ({ className, ...props }) => {
|
|
2140
|
+
const { scrollPrev } = useCarousel();
|
|
2141
|
+
return /* @__PURE__ */ jsxs16(
|
|
2142
|
+
Button,
|
|
2143
|
+
{
|
|
2144
|
+
"data-id": "CarouselPrevious",
|
|
2145
|
+
variant: "outline",
|
|
2146
|
+
size: "icon",
|
|
2147
|
+
className: cn("absolute top-1/2 -left-4 -translate-y-1/2", className),
|
|
2148
|
+
onClick: scrollPrev,
|
|
2149
|
+
...props,
|
|
2150
|
+
children: [
|
|
2151
|
+
/* @__PURE__ */ jsx110(ChevronLeft2, {}),
|
|
2152
|
+
/* @__PURE__ */ jsx110("span", { className: "sr-only", children: "Previous slide" })
|
|
2153
|
+
]
|
|
2154
|
+
}
|
|
2155
|
+
);
|
|
2156
|
+
};
|
|
2157
|
+
var CarouselNext = ({ className, ...props }) => {
|
|
2158
|
+
const { scrollNext } = useCarousel();
|
|
2159
|
+
return /* @__PURE__ */ jsxs16(
|
|
2160
|
+
Button,
|
|
2161
|
+
{
|
|
2162
|
+
"data-id": "CarouselNext",
|
|
2163
|
+
variant: "outline",
|
|
2164
|
+
size: "icon",
|
|
2165
|
+
className: cn("absolute top-1/2 -right-4 -translate-y-1/2", className),
|
|
2166
|
+
onClick: scrollNext,
|
|
2167
|
+
...props,
|
|
2168
|
+
children: [
|
|
2169
|
+
/* @__PURE__ */ jsx110(ChevronRight3, {}),
|
|
2170
|
+
/* @__PURE__ */ jsx110("span", { className: "sr-only", children: "Next slide" })
|
|
2171
|
+
]
|
|
2172
|
+
}
|
|
2173
|
+
);
|
|
2174
|
+
};
|
|
2175
|
+
|
|
2176
|
+
// src/components/drawer.tsx
|
|
2177
|
+
import { Drawer as VaulDrawer } from "vaul";
|
|
2178
|
+
import { jsx as jsx111, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2179
|
+
var Drawer = VaulDrawer.Root;
|
|
2180
|
+
var DrawerTrigger = VaulDrawer.Trigger;
|
|
2181
|
+
var DrawerClose = VaulDrawer.Close;
|
|
2182
|
+
var DrawerPortal = VaulDrawer.Portal;
|
|
2183
|
+
var DrawerOverlay = ({ className, ...props }) => {
|
|
2184
|
+
return /* @__PURE__ */ jsx111(
|
|
2185
|
+
VaulDrawer.Overlay,
|
|
2186
|
+
{
|
|
2187
|
+
"data-id": "DrawerOverlay",
|
|
2188
|
+
className: cn("fixed inset-0 z-50 bg-black/40", className),
|
|
2189
|
+
...props
|
|
2190
|
+
}
|
|
2191
|
+
);
|
|
2192
|
+
};
|
|
2193
|
+
var DrawerContent = ({ className, children, ...props }) => {
|
|
2194
|
+
return /* @__PURE__ */ jsxs17(VaulDrawer.Portal, { children: [
|
|
2195
|
+
/* @__PURE__ */ jsx111(DrawerOverlay, {}),
|
|
2196
|
+
/* @__PURE__ */ jsxs17(
|
|
2197
|
+
VaulDrawer.Content,
|
|
2198
|
+
{
|
|
2199
|
+
"data-id": "DrawerContent",
|
|
2200
|
+
className: cn(
|
|
2201
|
+
`fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-xl border border-border bg-card ${motion.surface}`,
|
|
2202
|
+
className
|
|
2203
|
+
),
|
|
2204
|
+
...props,
|
|
2205
|
+
children: [
|
|
2206
|
+
/* @__PURE__ */ jsx111("div", { className: "mx-auto mt-4 h-1.5 w-12 rounded-pill bg-muted" }),
|
|
2207
|
+
children
|
|
2208
|
+
]
|
|
2209
|
+
}
|
|
2210
|
+
)
|
|
2211
|
+
] });
|
|
2212
|
+
};
|
|
2213
|
+
var DrawerTitle = ({ className, ...props }) => {
|
|
2214
|
+
return /* @__PURE__ */ jsx111(
|
|
2215
|
+
VaulDrawer.Title,
|
|
2216
|
+
{
|
|
2217
|
+
"data-id": "DrawerTitle",
|
|
2218
|
+
className: cn("px-4 pt-4 font-sans text-lg font-semibold", className),
|
|
2219
|
+
...props
|
|
2220
|
+
}
|
|
2221
|
+
);
|
|
2222
|
+
};
|
|
2223
|
+
var DrawerDescription = ({
|
|
2224
|
+
className,
|
|
2225
|
+
...props
|
|
2226
|
+
}) => {
|
|
2227
|
+
return /* @__PURE__ */ jsx111(
|
|
2228
|
+
VaulDrawer.Description,
|
|
2229
|
+
{
|
|
2230
|
+
"data-id": "DrawerDescription",
|
|
2231
|
+
className: cn("px-4 pb-4 text-sm text-muted-foreground", className),
|
|
2232
|
+
...props
|
|
2233
|
+
}
|
|
2234
|
+
);
|
|
2235
|
+
};
|
|
2236
|
+
|
|
2237
|
+
// src/components/menubar.tsx
|
|
2238
|
+
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
2239
|
+
import { jsx as jsx112 } from "react/jsx-runtime";
|
|
2240
|
+
var Menubar = ({ className, ...props }) => {
|
|
2241
|
+
return /* @__PURE__ */ jsx112(
|
|
2242
|
+
MenubarPrimitive.Root,
|
|
2243
|
+
{
|
|
2244
|
+
"data-id": "Menubar",
|
|
2245
|
+
className: cn("flex h-10 items-center gap-1 rounded-lg border border-border bg-card p-1", className),
|
|
2246
|
+
...props
|
|
2247
|
+
}
|
|
2248
|
+
);
|
|
2249
|
+
};
|
|
2250
|
+
var MenubarMenu = MenubarPrimitive.Menu;
|
|
2251
|
+
var MenubarTrigger = ({
|
|
2252
|
+
className,
|
|
2253
|
+
...props
|
|
2254
|
+
}) => {
|
|
2255
|
+
return /* @__PURE__ */ jsx112(
|
|
2256
|
+
MenubarPrimitive.Trigger,
|
|
2257
|
+
{
|
|
2258
|
+
"data-id": "MenubarTrigger",
|
|
2259
|
+
className: cn(
|
|
2260
|
+
"rounded-md px-3 py-1.5 text-sm font-medium outline-none hover:bg-accent data-[state=open]:bg-accent",
|
|
2261
|
+
className
|
|
2262
|
+
),
|
|
2263
|
+
...props
|
|
2264
|
+
}
|
|
2265
|
+
);
|
|
2266
|
+
};
|
|
2267
|
+
var MenubarContent = ({
|
|
2268
|
+
className,
|
|
2269
|
+
...props
|
|
2270
|
+
}) => {
|
|
2271
|
+
return /* @__PURE__ */ jsx112(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx112(
|
|
2272
|
+
MenubarPrimitive.Content,
|
|
2273
|
+
{
|
|
2274
|
+
"data-id": "MenubarContent",
|
|
2275
|
+
className: cn(overlayPanel, "min-w-40 p-1", className),
|
|
2276
|
+
...props
|
|
2277
|
+
}
|
|
2278
|
+
) });
|
|
2279
|
+
};
|
|
2280
|
+
var MenubarItem = ({ className, ...props }) => {
|
|
2281
|
+
return /* @__PURE__ */ jsx112(MenubarPrimitive.Item, { "data-id": "MenubarItem", className: cn(menuItem, className), ...props });
|
|
2282
|
+
};
|
|
2283
|
+
var MenubarSeparator = ({
|
|
2284
|
+
className,
|
|
2285
|
+
...props
|
|
2286
|
+
}) => {
|
|
2287
|
+
return /* @__PURE__ */ jsx112(
|
|
2288
|
+
MenubarPrimitive.Separator,
|
|
2289
|
+
{
|
|
2290
|
+
"data-id": "MenubarSeparator",
|
|
2291
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
2292
|
+
...props
|
|
2293
|
+
}
|
|
2294
|
+
);
|
|
2295
|
+
};
|
|
2296
|
+
|
|
2297
|
+
// src/components/navigation-menu.tsx
|
|
2298
|
+
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
2299
|
+
import { ChevronDown as ChevronDown4 } from "lucide-react";
|
|
2300
|
+
import { jsx as jsx113, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2301
|
+
var NavigationMenu = ({
|
|
2302
|
+
className,
|
|
2303
|
+
children,
|
|
2304
|
+
...props
|
|
2305
|
+
}) => {
|
|
2306
|
+
return /* @__PURE__ */ jsxs18(
|
|
2307
|
+
NavigationMenuPrimitive.Root,
|
|
2308
|
+
{
|
|
2309
|
+
"data-id": "NavigationMenu",
|
|
2310
|
+
className: cn("relative z-10 flex max-w-max flex-1 items-center justify-center", className),
|
|
2311
|
+
...props,
|
|
2312
|
+
children: [
|
|
2313
|
+
children,
|
|
2314
|
+
/* @__PURE__ */ jsx113(
|
|
2315
|
+
NavigationMenuPrimitive.Viewport,
|
|
2316
|
+
{
|
|
2317
|
+
className: cn(
|
|
2318
|
+
overlayPanel,
|
|
2319
|
+
"absolute top-full mt-2 origin-top-center overflow-hidden data-[state=open]:animate-in data-[state=closed]:animate-out"
|
|
2320
|
+
)
|
|
2321
|
+
}
|
|
2322
|
+
)
|
|
2323
|
+
]
|
|
2324
|
+
}
|
|
2325
|
+
);
|
|
2326
|
+
};
|
|
2327
|
+
var NavigationMenuList = ({
|
|
2328
|
+
className,
|
|
2329
|
+
...props
|
|
2330
|
+
}) => {
|
|
2331
|
+
return /* @__PURE__ */ jsx113(
|
|
2332
|
+
NavigationMenuPrimitive.List,
|
|
2333
|
+
{
|
|
2334
|
+
"data-id": "NavigationMenuList",
|
|
2335
|
+
className: cn("flex flex-1 list-none items-center gap-1", className),
|
|
2336
|
+
...props
|
|
2337
|
+
}
|
|
2338
|
+
);
|
|
2339
|
+
};
|
|
2340
|
+
var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
2341
|
+
var NavigationMenuTrigger = ({
|
|
2342
|
+
className,
|
|
2343
|
+
children,
|
|
2344
|
+
...props
|
|
2345
|
+
}) => {
|
|
2346
|
+
return /* @__PURE__ */ jsxs18(
|
|
2347
|
+
NavigationMenuPrimitive.Trigger,
|
|
2348
|
+
{
|
|
2349
|
+
"data-id": "NavigationMenuTrigger",
|
|
2350
|
+
className: cn(
|
|
2351
|
+
"inline-flex h-10 items-center gap-1 rounded-pill px-4 text-sm font-medium hover:bg-accent",
|
|
2352
|
+
className
|
|
2353
|
+
),
|
|
2354
|
+
...props,
|
|
2355
|
+
children: [
|
|
2356
|
+
children,
|
|
2357
|
+
/* @__PURE__ */ jsx113(ChevronDown4, { className: "size-3" })
|
|
2358
|
+
]
|
|
2359
|
+
}
|
|
2360
|
+
);
|
|
2361
|
+
};
|
|
2362
|
+
var NavigationMenuContent = ({
|
|
2363
|
+
className,
|
|
2364
|
+
...props
|
|
2365
|
+
}) => {
|
|
2366
|
+
return /* @__PURE__ */ jsx113(
|
|
2367
|
+
NavigationMenuPrimitive.Content,
|
|
2368
|
+
{
|
|
2369
|
+
"data-id": "NavigationMenuContent",
|
|
2370
|
+
className: cn("p-4", className),
|
|
2371
|
+
...props
|
|
2372
|
+
}
|
|
2373
|
+
);
|
|
2374
|
+
};
|
|
2375
|
+
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
2376
|
+
|
|
2377
|
+
// src/components/resizable.tsx
|
|
2378
|
+
import { Group as Group2, Panel, Separator as Separator5 } from "react-resizable-panels";
|
|
2379
|
+
import { jsx as jsx114 } from "react/jsx-runtime";
|
|
2380
|
+
var ResizablePanelGroup = ({ className, ...props }) => {
|
|
2381
|
+
return /* @__PURE__ */ jsx114(Group2, { "data-id": "ResizablePanelGroup", className: cn("flex h-full w-full", className), ...props });
|
|
2382
|
+
};
|
|
2383
|
+
var ResizablePanel = Panel;
|
|
2384
|
+
var ResizableHandle = ({ className, ...props }) => {
|
|
2385
|
+
return /* @__PURE__ */ jsx114(
|
|
2386
|
+
Separator5,
|
|
2387
|
+
{
|
|
2388
|
+
"data-id": "ResizableHandle",
|
|
2389
|
+
className: cn("bg-border focus-visible:bg-primary data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=horizontal]:w-px", className),
|
|
2390
|
+
...props
|
|
2391
|
+
}
|
|
2392
|
+
);
|
|
2393
|
+
};
|
|
2394
|
+
|
|
2395
|
+
// src/components/sidebar.tsx
|
|
2396
|
+
import { PanelLeft } from "lucide-react";
|
|
2397
|
+
import {
|
|
2398
|
+
createContext as createContext4,
|
|
2399
|
+
useContext as useContext4,
|
|
2400
|
+
useMemo,
|
|
2401
|
+
useState as useState3
|
|
2402
|
+
} from "react";
|
|
2403
|
+
import { jsx as jsx115, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2404
|
+
var SidebarContext = createContext4(null);
|
|
2405
|
+
var useSidebar = () => {
|
|
2406
|
+
const context = useContext4(SidebarContext);
|
|
2407
|
+
if (!context) {
|
|
2408
|
+
throw new Error("useSidebar must be used within SidebarProvider");
|
|
2409
|
+
}
|
|
2410
|
+
return context;
|
|
2411
|
+
};
|
|
2412
|
+
var SidebarProvider = ({
|
|
2413
|
+
defaultOpen = true,
|
|
2414
|
+
className,
|
|
2415
|
+
style,
|
|
2416
|
+
children,
|
|
2417
|
+
...props
|
|
2418
|
+
}) => {
|
|
2419
|
+
const [isOpen, isOpenSetter] = useState3(defaultOpen);
|
|
2420
|
+
const value = useMemo(() => ({ isOpen, isOpenSetter }), [isOpen]);
|
|
2421
|
+
return /* @__PURE__ */ jsx115(SidebarContext, { value, children: /* @__PURE__ */ jsx115(
|
|
2422
|
+
"div",
|
|
2423
|
+
{
|
|
2424
|
+
"data-id": "SidebarProvider",
|
|
2425
|
+
className: cn("flex min-h-svh w-full", className),
|
|
2426
|
+
style: {
|
|
2427
|
+
"--sidebar-width": "16rem",
|
|
2428
|
+
...style
|
|
2429
|
+
},
|
|
2430
|
+
...props,
|
|
2431
|
+
children
|
|
2432
|
+
}
|
|
2433
|
+
) });
|
|
2434
|
+
};
|
|
2435
|
+
var Sidebar = ({ className, children, ...props }) => {
|
|
2436
|
+
const { isOpen } = useSidebar();
|
|
2437
|
+
return /* @__PURE__ */ jsx115(
|
|
2438
|
+
"aside",
|
|
2439
|
+
{
|
|
2440
|
+
"data-id": "Sidebar",
|
|
2441
|
+
"data-state": isOpen ? "open" : "closed",
|
|
2442
|
+
className: cn(
|
|
2443
|
+
"border-r border-border bg-card text-card-foreground transition-[width] duration-200",
|
|
2444
|
+
isOpen ? "w-[var(--sidebar-width)]" : "w-0 overflow-hidden",
|
|
2445
|
+
className
|
|
2446
|
+
),
|
|
2447
|
+
...props,
|
|
2448
|
+
children: isOpen ? children : null
|
|
2449
|
+
}
|
|
2450
|
+
);
|
|
2451
|
+
};
|
|
2452
|
+
var SidebarInset = ({ className, ...props }) => {
|
|
2453
|
+
return /* @__PURE__ */ jsx115("main", { "data-id": "SidebarInset", className: cn("flex flex-1 flex-col", className), ...props });
|
|
2454
|
+
};
|
|
2455
|
+
var SidebarTrigger = ({ className, ...props }) => {
|
|
2456
|
+
const { isOpen, isOpenSetter } = useSidebar();
|
|
2457
|
+
return /* @__PURE__ */ jsxs19(
|
|
2458
|
+
Button,
|
|
2459
|
+
{
|
|
2460
|
+
"data-id": "SidebarTrigger",
|
|
2461
|
+
variant: "ghost",
|
|
2462
|
+
size: "icon",
|
|
2463
|
+
className,
|
|
2464
|
+
onClick: () => isOpenSetter(!isOpen),
|
|
2465
|
+
...props,
|
|
2466
|
+
children: [
|
|
2467
|
+
/* @__PURE__ */ jsx115(PanelLeft, {}),
|
|
2468
|
+
/* @__PURE__ */ jsx115("span", { className: "sr-only", children: "Toggle sidebar" })
|
|
2469
|
+
]
|
|
2470
|
+
}
|
|
2471
|
+
);
|
|
2472
|
+
};
|
|
2473
|
+
var SidebarHeader = ({ className, ...props }) => {
|
|
2474
|
+
return /* @__PURE__ */ jsx115("div", { "data-id": "SidebarHeader", className: cn("p-4", className), ...props });
|
|
2475
|
+
};
|
|
2476
|
+
var SidebarContent = ({ className, ...props }) => {
|
|
2477
|
+
return /* @__PURE__ */ jsx115("div", { "data-id": "SidebarContent", className: cn("flex-1 p-2", className), ...props });
|
|
2478
|
+
};
|
|
2479
|
+
var SidebarFooter = ({ className, ...props }) => {
|
|
2480
|
+
return /* @__PURE__ */ jsx115("div", { "data-id": "SidebarFooter", className: cn("p-4", className), ...props });
|
|
2481
|
+
};
|
|
2482
|
+
var SidebarMenu = ({ className, ...props }) => {
|
|
2483
|
+
return /* @__PURE__ */ jsx115("ul", { "data-id": "SidebarMenu", className: cn("flex flex-col gap-1", className), ...props });
|
|
2484
|
+
};
|
|
2485
|
+
var SidebarMenuItem = ({ className, ...props }) => {
|
|
2486
|
+
return /* @__PURE__ */ jsx115("li", { "data-id": "SidebarMenuItem", className: cn(className), ...props });
|
|
2487
|
+
};
|
|
2488
|
+
var SidebarMenuButton = ({ className, ...props }) => {
|
|
2489
|
+
return /* @__PURE__ */ jsx115(
|
|
2490
|
+
"button",
|
|
2491
|
+
{
|
|
2492
|
+
"data-id": "SidebarMenuButton",
|
|
2493
|
+
className: cn(
|
|
2494
|
+
"flex w-full items-center rounded-md px-3 py-2 text-left text-sm hover:bg-accent",
|
|
2495
|
+
className
|
|
2496
|
+
),
|
|
2497
|
+
...props
|
|
2498
|
+
}
|
|
2499
|
+
);
|
|
2500
|
+
};
|
|
2501
|
+
|
|
2502
|
+
// src/components/input-otp.tsx
|
|
2503
|
+
import { OTPInput, OTPInputContext } from "input-otp";
|
|
2504
|
+
import { useContext as useContext5 } from "react";
|
|
2505
|
+
import { jsx as jsx116, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2506
|
+
var InputOTP = ({ className, containerClassName, ...props }) => {
|
|
2507
|
+
return /* @__PURE__ */ jsx116(
|
|
2508
|
+
OTPInput,
|
|
2509
|
+
{
|
|
2510
|
+
"data-id": "InputOTP",
|
|
2511
|
+
containerClassName: cn("flex items-center gap-2", containerClassName),
|
|
2512
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
2513
|
+
...props
|
|
2514
|
+
}
|
|
2515
|
+
);
|
|
2516
|
+
};
|
|
2517
|
+
var InputOTPGroup = ({ className, ...props }) => {
|
|
2518
|
+
return /* @__PURE__ */ jsx116("div", { "data-id": "InputOTPGroup", className: cn("flex items-center gap-2", className), ...props });
|
|
2519
|
+
};
|
|
2520
|
+
var InputOTPSlot = ({
|
|
2521
|
+
index,
|
|
2522
|
+
className,
|
|
2523
|
+
...props
|
|
2524
|
+
}) => {
|
|
2525
|
+
const inputOTPContext = useContext5(OTPInputContext);
|
|
2526
|
+
const slot = inputOTPContext.slots[index];
|
|
2527
|
+
return /* @__PURE__ */ jsxs20(
|
|
2528
|
+
"div",
|
|
2529
|
+
{
|
|
2530
|
+
"data-id": "InputOTPSlot",
|
|
2531
|
+
className: cn(
|
|
2532
|
+
fieldSurface,
|
|
2533
|
+
"relative flex h-12 w-10 items-center justify-center rounded-md text-sm",
|
|
2534
|
+
slot?.isActive && "z-10 border-primary shadow-[0_0_0_3px_rgba(255,229,0,0.28)]",
|
|
2535
|
+
className
|
|
2536
|
+
),
|
|
2537
|
+
...props,
|
|
2538
|
+
children: [
|
|
2539
|
+
slot?.char,
|
|
2540
|
+
slot?.hasFakeCaret ? /* @__PURE__ */ jsx116("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx116("div", { className: "h-4 w-px animate-pulse bg-foreground" }) }) : null
|
|
2541
|
+
]
|
|
2542
|
+
}
|
|
2543
|
+
);
|
|
2544
|
+
};
|
|
2545
|
+
|
|
2546
|
+
// src/components/aspect-ratio.tsx
|
|
2547
|
+
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
|
|
2548
|
+
var AspectRatio = AspectRatioPrimitive.Root;
|
|
2549
|
+
|
|
2550
|
+
// src/theme/surfaces.ts
|
|
2551
|
+
var surfaces = {
|
|
2552
|
+
frostPanel: "revit-frost-panel rounded-lg",
|
|
2553
|
+
frostNav: "revit-frost-nav rounded-pill",
|
|
2554
|
+
frostTile: "revit-frost-tile overflow-hidden rounded-[20px]",
|
|
2555
|
+
frostFab: "revit-frost-fab rounded-pill",
|
|
2556
|
+
brandGradient: "revit-brand-gradient",
|
|
2557
|
+
scrimHero: "revit-image-scrim-hero",
|
|
2558
|
+
scrimDetail: "revit-image-scrim-detail",
|
|
2559
|
+
scrimFooter: "revit-image-scrim-footer"
|
|
2560
|
+
};
|
|
2561
|
+
|
|
2562
|
+
// src/components/frost-panel.tsx
|
|
2563
|
+
import { jsx as jsx117 } from "react/jsx-runtime";
|
|
2564
|
+
var FrostPanel = ({ className, ...props }) => {
|
|
2565
|
+
return /* @__PURE__ */ jsx117("div", { "data-id": "FrostPanel", className: cn(surfaces.frostPanel, className), ...props });
|
|
2566
|
+
};
|
|
2567
|
+
|
|
2568
|
+
// src/components/frost-nav.tsx
|
|
2569
|
+
import { jsx as jsx118 } from "react/jsx-runtime";
|
|
2570
|
+
var FrostNav = ({ className, isOnLight = false, ...props }) => {
|
|
2571
|
+
return /* @__PURE__ */ jsx118(
|
|
2572
|
+
"nav",
|
|
2573
|
+
{
|
|
2574
|
+
"data-id": "FrostNav",
|
|
2575
|
+
"data-on-light": isOnLight ? "true" : void 0,
|
|
2576
|
+
className: cn(surfaces.frostNav, className),
|
|
2577
|
+
...props
|
|
2578
|
+
}
|
|
2579
|
+
);
|
|
2580
|
+
};
|
|
2581
|
+
|
|
2582
|
+
// src/components/frost-tile.tsx
|
|
2583
|
+
import { jsx as jsx119 } from "react/jsx-runtime";
|
|
2584
|
+
var FrostTile = ({ className, ...props }) => {
|
|
2585
|
+
return /* @__PURE__ */ jsx119("div", { "data-id": "FrostTile", className: cn("group", surfaces.frostTile, className), ...props });
|
|
2586
|
+
};
|
|
2587
|
+
|
|
2588
|
+
// src/components/frost-fab.tsx
|
|
2589
|
+
import { jsx as jsx120 } from "react/jsx-runtime";
|
|
2590
|
+
var FrostFab = ({ className, ...props }) => {
|
|
2591
|
+
return /* @__PURE__ */ jsx120("div", { "data-id": "FrostFab", className: cn(surfaces.frostFab, className), ...props });
|
|
2592
|
+
};
|
|
2593
|
+
|
|
2594
|
+
// src/components/brand-gradient.tsx
|
|
2595
|
+
import { jsx as jsx121 } from "react/jsx-runtime";
|
|
2596
|
+
var BrandGradient = ({ className, ...props }) => {
|
|
2597
|
+
return /* @__PURE__ */ jsx121("div", { "data-id": "BrandGradient", className: cn(surfaces.brandGradient, className), ...props });
|
|
2598
|
+
};
|
|
2599
|
+
|
|
2600
|
+
// src/components/image-scrim.tsx
|
|
2601
|
+
import { cva as cva11 } from "class-variance-authority";
|
|
2602
|
+
import { jsx as jsx122 } from "react/jsx-runtime";
|
|
2603
|
+
var imageScrimVariants = cva11("pointer-events-none absolute inset-0", {
|
|
2604
|
+
variants: {
|
|
2605
|
+
variant: {
|
|
2606
|
+
hero: "revit-image-scrim-hero",
|
|
2607
|
+
detail: "revit-image-scrim-detail",
|
|
2608
|
+
footer: "revit-image-scrim-footer"
|
|
2609
|
+
}
|
|
2610
|
+
},
|
|
2611
|
+
defaultVariants: {
|
|
2612
|
+
variant: "hero"
|
|
2613
|
+
}
|
|
2614
|
+
});
|
|
2615
|
+
var ImageScrim = ({ className, variant, ...props }) => {
|
|
2616
|
+
return /* @__PURE__ */ jsx122(
|
|
2617
|
+
"div",
|
|
2618
|
+
{
|
|
2619
|
+
"data-id": "ImageScrim",
|
|
2620
|
+
"aria-hidden": true,
|
|
2621
|
+
className: cn(imageScrimVariants({ variant }), className),
|
|
2622
|
+
...props
|
|
2623
|
+
}
|
|
2624
|
+
);
|
|
2625
|
+
};
|
|
2626
|
+
|
|
2627
|
+
// src/components/search-bar.tsx
|
|
2628
|
+
import { Search as Search2 } from "lucide-react";
|
|
2629
|
+
import { jsx as jsx123, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2630
|
+
var SearchBar = ({
|
|
2631
|
+
className,
|
|
2632
|
+
placeholder = "Search",
|
|
2633
|
+
value,
|
|
2634
|
+
defaultValue,
|
|
2635
|
+
onValueChange,
|
|
2636
|
+
onSearch,
|
|
2637
|
+
submitLabel = /* @__PURE__ */ jsx123(Search2, { className: "size-4" }),
|
|
2638
|
+
...props
|
|
2639
|
+
}) => {
|
|
2640
|
+
const onSubmit = (event) => {
|
|
2641
|
+
event.preventDefault();
|
|
2642
|
+
const formData = new FormData(event.currentTarget);
|
|
2643
|
+
const nextValue = String(formData.get("q") ?? "");
|
|
2644
|
+
onSearch?.(nextValue);
|
|
2645
|
+
};
|
|
2646
|
+
return /* @__PURE__ */ jsxs21(
|
|
2647
|
+
"form",
|
|
2648
|
+
{
|
|
2649
|
+
"data-id": "SearchBar",
|
|
2650
|
+
onSubmit,
|
|
2651
|
+
className: cn(
|
|
2652
|
+
"flex w-full overflow-hidden rounded-pill border border-border bg-card shadow-[0_8px_18px_rgba(0,0,0,0.04)] ring-2 ring-transparent transition-[box-shadow,border-color] duration-200 focus-within:ring-primary hover:border-primary",
|
|
2653
|
+
className
|
|
2654
|
+
),
|
|
2655
|
+
children: [
|
|
2656
|
+
/* @__PURE__ */ jsx123(
|
|
2657
|
+
Input,
|
|
2658
|
+
{
|
|
2659
|
+
name: "q",
|
|
2660
|
+
variant: "pill",
|
|
2661
|
+
value,
|
|
2662
|
+
defaultValue,
|
|
2663
|
+
placeholder,
|
|
2664
|
+
onChange: (event) => onValueChange?.(event.target.value),
|
|
2665
|
+
className: "rounded-none border-0 shadow-none ring-0 focus-visible:shadow-none",
|
|
2666
|
+
...props
|
|
2667
|
+
}
|
|
2668
|
+
),
|
|
2669
|
+
/* @__PURE__ */ jsx123(Button, { type: "submit", size: "icon", className: "rounded-none", "aria-label": "Search", children: submitLabel })
|
|
2670
|
+
]
|
|
2671
|
+
}
|
|
2672
|
+
);
|
|
2673
|
+
};
|
|
2674
|
+
|
|
2675
|
+
// src/components/confirm-dialog.tsx
|
|
2676
|
+
import { jsx as jsx124, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2677
|
+
var ConfirmDialog = ({
|
|
2678
|
+
trigger,
|
|
2679
|
+
title,
|
|
2680
|
+
description,
|
|
2681
|
+
confirmLabel = "Confirm",
|
|
2682
|
+
cancelLabel = "Cancel",
|
|
2683
|
+
onConfirm
|
|
2684
|
+
}) => {
|
|
2685
|
+
return /* @__PURE__ */ jsxs22(AlertDialog, { children: [
|
|
2686
|
+
/* @__PURE__ */ jsx124(AlertDialogTrigger, { asChild: true, children: trigger }),
|
|
2687
|
+
/* @__PURE__ */ jsxs22(AlertDialogContent, { "data-id": "ConfirmDialog", children: [
|
|
2688
|
+
/* @__PURE__ */ jsxs22(AlertDialogHeader, { children: [
|
|
2689
|
+
/* @__PURE__ */ jsx124(AlertDialogTitle, { children: title }),
|
|
2690
|
+
description ? /* @__PURE__ */ jsx124(AlertDialogDescription, { children: description }) : null
|
|
2691
|
+
] }),
|
|
2692
|
+
/* @__PURE__ */ jsxs22(AlertDialogFooter, { children: [
|
|
2693
|
+
/* @__PURE__ */ jsx124(AlertDialogCancel, { children: cancelLabel }),
|
|
2694
|
+
/* @__PURE__ */ jsx124(AlertDialogAction, { onClick: onConfirm, children: confirmLabel })
|
|
2695
|
+
] })
|
|
2696
|
+
] })
|
|
2697
|
+
] });
|
|
2698
|
+
};
|
|
2699
|
+
|
|
2700
|
+
// src/components/command-dialog.tsx
|
|
2701
|
+
import { jsx as jsx125 } from "react/jsx-runtime";
|
|
2702
|
+
var CommandDialog = ({ children, contentClassName, ...props }) => {
|
|
2703
|
+
return /* @__PURE__ */ jsx125(Dialog, { ...props, children: /* @__PURE__ */ jsx125(DialogContent, { "data-id": "CommandDialog", className: cn("overflow-hidden p-0", contentClassName), children: /* @__PURE__ */ jsx125(Command, { className: "[&_[data-id=CommandInputWrap]]:h-12", children }) }) });
|
|
2704
|
+
};
|
|
2705
|
+
|
|
2706
|
+
// src/components/pagination-bar.tsx
|
|
2707
|
+
import { jsx as jsx126, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2708
|
+
var PaginationBar = ({
|
|
2709
|
+
page,
|
|
2710
|
+
pageCount,
|
|
2711
|
+
onPageChange,
|
|
2712
|
+
className,
|
|
2713
|
+
...props
|
|
2714
|
+
}) => {
|
|
2715
|
+
const pages = Array.from({ length: pageCount }, (_, index) => index + 1);
|
|
2716
|
+
const visible = pages.filter((item) => item === 1 || item === pageCount || Math.abs(item - page) <= 1);
|
|
2717
|
+
return /* @__PURE__ */ jsx126(Pagination, { "data-id": "PaginationBar", className, ...props, children: /* @__PURE__ */ jsxs23(PaginationContent, { children: [
|
|
2718
|
+
/* @__PURE__ */ jsx126(PaginationItem, { children: /* @__PURE__ */ jsx126(
|
|
2719
|
+
PaginationPrevious,
|
|
2720
|
+
{
|
|
2721
|
+
href: "#",
|
|
2722
|
+
onClick: (event) => {
|
|
2723
|
+
event.preventDefault();
|
|
2724
|
+
if (page > 1) {
|
|
2725
|
+
onPageChange?.(page - 1);
|
|
2726
|
+
}
|
|
2727
|
+
}
|
|
2728
|
+
}
|
|
2729
|
+
) }),
|
|
2730
|
+
visible.map((item, index) => {
|
|
2731
|
+
const previous = visible[index - 1];
|
|
2732
|
+
return /* @__PURE__ */ jsxs23(PaginationItem, { children: [
|
|
2733
|
+
previous && item - previous > 1 ? /* @__PURE__ */ jsx126(PaginationEllipsis, {}) : null,
|
|
2734
|
+
/* @__PURE__ */ jsx126(
|
|
2735
|
+
PaginationLink,
|
|
2736
|
+
{
|
|
2737
|
+
href: "#",
|
|
2738
|
+
isActive: item === page,
|
|
2739
|
+
onClick: (event) => {
|
|
2740
|
+
event.preventDefault();
|
|
2741
|
+
onPageChange?.(item);
|
|
2742
|
+
},
|
|
2743
|
+
children: item
|
|
2744
|
+
}
|
|
2745
|
+
)
|
|
2746
|
+
] }, `pagination-${item}--${index}`);
|
|
2747
|
+
}),
|
|
2748
|
+
/* @__PURE__ */ jsx126(PaginationItem, { children: /* @__PURE__ */ jsx126(
|
|
2749
|
+
PaginationNext,
|
|
2750
|
+
{
|
|
2751
|
+
href: "#",
|
|
2752
|
+
onClick: (event) => {
|
|
2753
|
+
event.preventDefault();
|
|
2754
|
+
if (page < pageCount) {
|
|
2755
|
+
onPageChange?.(page + 1);
|
|
2756
|
+
}
|
|
2757
|
+
}
|
|
2758
|
+
}
|
|
2759
|
+
) })
|
|
2760
|
+
] }) });
|
|
2761
|
+
};
|
|
2762
|
+
|
|
2763
|
+
// src/theme/tokensToCss.ts
|
|
2764
|
+
var colorToVars = (colors, prefix) => {
|
|
2765
|
+
const vars = {
|
|
2766
|
+
[`${prefix}background`]: colors.background,
|
|
2767
|
+
[`${prefix}foreground`]: colors.foreground,
|
|
2768
|
+
[`${prefix}card`]: colors.card,
|
|
2769
|
+
[`${prefix}card-foreground`]: colors.cardForeground,
|
|
2770
|
+
[`${prefix}popover`]: colors.popover,
|
|
2771
|
+
[`${prefix}popover-foreground`]: colors.popoverForeground,
|
|
2772
|
+
[`${prefix}primary`]: colors.primary,
|
|
2773
|
+
[`${prefix}primary-foreground`]: colors.primaryForeground,
|
|
2774
|
+
[`${prefix}secondary`]: colors.secondary,
|
|
2775
|
+
[`${prefix}secondary-foreground`]: colors.secondaryForeground,
|
|
2776
|
+
[`${prefix}muted`]: colors.muted,
|
|
2777
|
+
[`${prefix}muted-foreground`]: colors.mutedForeground,
|
|
2778
|
+
[`${prefix}accent`]: colors.accent,
|
|
2779
|
+
[`${prefix}accent-foreground`]: colors.accentForeground,
|
|
2780
|
+
[`${prefix}destructive`]: colors.destructive,
|
|
2781
|
+
[`${prefix}destructive-foreground`]: colors.destructiveForeground,
|
|
2782
|
+
[`${prefix}border`]: colors.border,
|
|
2783
|
+
[`${prefix}input`]: colors.input,
|
|
2784
|
+
[`${prefix}ring`]: colors.ring,
|
|
2785
|
+
[`${prefix}brand-yellow`]: colors.brand.yellow,
|
|
2786
|
+
[`${prefix}brand-yellow-light`]: colors.brand.yellowLight,
|
|
2787
|
+
[`${prefix}brand-off-black`]: colors.brand.offBlack,
|
|
2788
|
+
[`${prefix}brand-pink`]: colors.brand.pink,
|
|
2789
|
+
[`${prefix}brand-purple`]: colors.brand.purple,
|
|
2790
|
+
[`${prefix}brand-blue`]: colors.brand.blue,
|
|
2791
|
+
[`${prefix}brand-gold`]: colors.brand.gold,
|
|
2792
|
+
[`${prefix}brand-brown`]: colors.brand.brown,
|
|
2793
|
+
[`${prefix}brand-umber`]: colors.brand.umber,
|
|
2794
|
+
[`${prefix}brand-mist`]: colors.brand.mist
|
|
2795
|
+
};
|
|
2796
|
+
return vars;
|
|
2797
|
+
};
|
|
2798
|
+
var tokensToCssVars = (tokens) => {
|
|
2799
|
+
const light2 = colorToVars(tokens.colors, "--revit-color-");
|
|
2800
|
+
const dark2 = colorToVars(tokens.colorsDark, "--revit-color-");
|
|
2801
|
+
const shared = {
|
|
2802
|
+
"--revit-radius-sm": tokens.radius.sm,
|
|
2803
|
+
"--revit-radius-md": tokens.radius.md,
|
|
2804
|
+
"--revit-radius-lg": tokens.radius.lg,
|
|
2805
|
+
"--revit-radius-xl": tokens.radius.xl,
|
|
2806
|
+
"--revit-radius-pill": tokens.radius.pill,
|
|
2807
|
+
"--revit-font-sans": tokens.fontFamily.sans
|
|
2808
|
+
};
|
|
2809
|
+
return { light: { ...light2, ...shared }, dark: dark2 };
|
|
2810
|
+
};
|
|
2811
|
+
var decls = (vars) => Object.entries(vars).map(([name, value]) => `${name}: ${value};`).join("\n ");
|
|
2812
|
+
var tokensToStylesheet = (tokens) => {
|
|
2813
|
+
const { light: light2, dark: dark2 } = tokensToCssVars(tokens);
|
|
2814
|
+
return `:root,
|
|
2815
|
+
.revit-ui {
|
|
2816
|
+
${decls(light2)}
|
|
2817
|
+
}
|
|
2818
|
+
html.dark,
|
|
2819
|
+
html[data-theme="dark"],
|
|
2820
|
+
.dark,
|
|
2821
|
+
[data-theme="dark"] {
|
|
2822
|
+
${decls(dark2)}
|
|
2823
|
+
}`;
|
|
2824
|
+
};
|
|
2825
|
+
|
|
2826
|
+
// src/theme/tokens.revit.ts
|
|
2827
|
+
var brand = {
|
|
2828
|
+
yellow: "#FFE500",
|
|
2829
|
+
yellowLight: "#FFF06E",
|
|
2830
|
+
offBlack: "#2C2C2C",
|
|
2831
|
+
pink: "#FF005C",
|
|
2832
|
+
purple: "#BA00FF",
|
|
2833
|
+
blue: "#00FFFB",
|
|
2834
|
+
gold: "#B8A500",
|
|
2835
|
+
brown: "#78350F",
|
|
2836
|
+
umber: "#58483B",
|
|
2837
|
+
mist: "#F2F2F7"
|
|
2838
|
+
};
|
|
2839
|
+
var light = {
|
|
2840
|
+
background: "#ffffff",
|
|
2841
|
+
foreground: brand.offBlack,
|
|
2842
|
+
card: "#ffffff",
|
|
2843
|
+
cardForeground: brand.offBlack,
|
|
2844
|
+
popover: "#ffffff",
|
|
2845
|
+
popoverForeground: brand.offBlack,
|
|
2846
|
+
primary: brand.yellow,
|
|
2847
|
+
primaryForeground: "#000000",
|
|
2848
|
+
secondary: "#000000",
|
|
2849
|
+
secondaryForeground: "#ffffff",
|
|
2850
|
+
muted: brand.mist,
|
|
2851
|
+
mutedForeground: brand.umber,
|
|
2852
|
+
accent: brand.yellowLight,
|
|
2853
|
+
accentForeground: "#000000",
|
|
2854
|
+
destructive: "#FF002B",
|
|
2855
|
+
destructiveForeground: "#ffffff",
|
|
2856
|
+
border: brand.mist,
|
|
2857
|
+
input: brand.mist,
|
|
2858
|
+
ring: brand.yellow,
|
|
2859
|
+
brand
|
|
2860
|
+
};
|
|
2861
|
+
var dark = {
|
|
2862
|
+
background: "#0f172a",
|
|
2863
|
+
foreground: "#ffffff",
|
|
2864
|
+
card: "#0f172a",
|
|
2865
|
+
cardForeground: "#ffffff",
|
|
2866
|
+
popover: "#0f172a",
|
|
2867
|
+
popoverForeground: "#ffffff",
|
|
2868
|
+
primary: brand.yellow,
|
|
2869
|
+
primaryForeground: "#000000",
|
|
2870
|
+
secondary: brand.yellow,
|
|
2871
|
+
secondaryForeground: "#000000",
|
|
2872
|
+
muted: "#1e293b",
|
|
2873
|
+
mutedForeground: "#cbd5e1",
|
|
2874
|
+
accent: "#1e293b",
|
|
2875
|
+
accentForeground: "#ffffff",
|
|
2876
|
+
destructive: "#FF002B",
|
|
2877
|
+
destructiveForeground: "#ffffff",
|
|
2878
|
+
border: "#334155",
|
|
2879
|
+
input: "#334155",
|
|
2880
|
+
ring: brand.yellow,
|
|
2881
|
+
brand
|
|
2882
|
+
};
|
|
2883
|
+
var revitTokens = {
|
|
2884
|
+
colors: light,
|
|
2885
|
+
colorsDark: dark,
|
|
2886
|
+
radius: {
|
|
2887
|
+
sm: "0.375rem",
|
|
2888
|
+
md: "0.5rem",
|
|
2889
|
+
lg: "1.25rem",
|
|
2890
|
+
xl: "1.5rem",
|
|
2891
|
+
pill: "9999px"
|
|
2892
|
+
},
|
|
2893
|
+
fontFamily: {
|
|
2894
|
+
sans: "Afacad, ui-sans-serif, system-ui, sans-serif"
|
|
2895
|
+
}
|
|
2896
|
+
};
|
|
2897
|
+
|
|
2898
|
+
// src/theme/RevitUIProvider.tsx
|
|
2899
|
+
import { Fragment, jsx as jsx127, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2900
|
+
var RevitUIProvider = ({ tokens = revitTokens, children }) => {
|
|
2901
|
+
return /* @__PURE__ */ jsxs24(Fragment, { children: [
|
|
2902
|
+
/* @__PURE__ */ jsx127("style", { "data-id": "RevitUITheme", dangerouslySetInnerHTML: { __html: tokensToStylesheet(tokens) } }),
|
|
2903
|
+
/* @__PURE__ */ jsx127("div", { "data-id": "RevitUIProvider", className: "revit-ui font-sans", children })
|
|
2904
|
+
] });
|
|
2905
|
+
};
|
|
2906
|
+
export {
|
|
2907
|
+
Accordion,
|
|
2908
|
+
AccordionContent,
|
|
2909
|
+
AccordionItem,
|
|
2910
|
+
AccordionTrigger,
|
|
2911
|
+
Alert,
|
|
2912
|
+
AlertDescription,
|
|
2913
|
+
AlertDialog,
|
|
2914
|
+
AlertDialogAction,
|
|
2915
|
+
AlertDialogCancel,
|
|
2916
|
+
AlertDialogContent,
|
|
2917
|
+
AlertDialogDescription,
|
|
2918
|
+
AlertDialogFooter,
|
|
2919
|
+
AlertDialogHeader,
|
|
2920
|
+
AlertDialogTitle,
|
|
2921
|
+
AlertDialogTrigger,
|
|
2922
|
+
AlertTitle,
|
|
2923
|
+
AspectRatio,
|
|
2924
|
+
Avatar,
|
|
2925
|
+
AvatarFallback,
|
|
2926
|
+
AvatarImage,
|
|
2927
|
+
Badge,
|
|
2928
|
+
BrandGradient,
|
|
2929
|
+
Breadcrumb,
|
|
2930
|
+
BreadcrumbItem,
|
|
2931
|
+
BreadcrumbLink,
|
|
2932
|
+
BreadcrumbList,
|
|
2933
|
+
BreadcrumbPage,
|
|
2934
|
+
BreadcrumbSeparator,
|
|
2935
|
+
Button,
|
|
2936
|
+
Calendar,
|
|
2937
|
+
Card,
|
|
2938
|
+
CardContent,
|
|
2939
|
+
CardDescription,
|
|
2940
|
+
CardFooter,
|
|
2941
|
+
CardHeader,
|
|
2942
|
+
CardTitle,
|
|
2943
|
+
Carousel,
|
|
2944
|
+
CarouselContent,
|
|
2945
|
+
CarouselItem,
|
|
2946
|
+
CarouselNext,
|
|
2947
|
+
CarouselPrevious,
|
|
2948
|
+
ChartContainer,
|
|
2949
|
+
Tooltip2 as ChartTooltip,
|
|
2950
|
+
Checkbox,
|
|
2951
|
+
Collapsible,
|
|
2952
|
+
CollapsibleContent2 as CollapsibleContent,
|
|
2953
|
+
CollapsibleTrigger2 as CollapsibleTrigger,
|
|
2954
|
+
Combobox,
|
|
2955
|
+
Command,
|
|
2956
|
+
CommandDialog,
|
|
2957
|
+
CommandEmpty,
|
|
2958
|
+
CommandGroup,
|
|
2959
|
+
CommandInput,
|
|
2960
|
+
CommandItem,
|
|
2961
|
+
CommandList,
|
|
2962
|
+
ConfirmDialog,
|
|
2963
|
+
ContextMenu,
|
|
2964
|
+
ContextMenuContent,
|
|
2965
|
+
ContextMenuItem,
|
|
2966
|
+
ContextMenuTrigger,
|
|
2967
|
+
DatePicker,
|
|
2968
|
+
Dialog,
|
|
2969
|
+
DialogClose,
|
|
2970
|
+
DialogContent,
|
|
2971
|
+
DialogDescription,
|
|
2972
|
+
DialogFooter,
|
|
2973
|
+
DialogHeader,
|
|
2974
|
+
DialogTitle,
|
|
2975
|
+
DialogTrigger,
|
|
2976
|
+
Drawer,
|
|
2977
|
+
DrawerContent,
|
|
2978
|
+
DrawerDescription,
|
|
2979
|
+
DrawerTitle,
|
|
2980
|
+
DrawerTrigger,
|
|
2981
|
+
DropdownMenu,
|
|
2982
|
+
DropdownMenuContent,
|
|
2983
|
+
DropdownMenuItem,
|
|
2984
|
+
DropdownMenuLabel,
|
|
2985
|
+
DropdownMenuSeparator,
|
|
2986
|
+
DropdownMenuTrigger,
|
|
2987
|
+
Form,
|
|
2988
|
+
FormControl,
|
|
2989
|
+
FormDescription,
|
|
2990
|
+
FormField,
|
|
2991
|
+
FormItem,
|
|
2992
|
+
FormLabel,
|
|
2993
|
+
FormMessage,
|
|
2994
|
+
FrostFab,
|
|
2995
|
+
FrostNav,
|
|
2996
|
+
FrostPanel,
|
|
2997
|
+
FrostTile,
|
|
2998
|
+
HoverCard,
|
|
2999
|
+
HoverCardContent,
|
|
3000
|
+
HoverCardTrigger,
|
|
3001
|
+
ImageScrim,
|
|
3002
|
+
Input,
|
|
3003
|
+
InputOTP,
|
|
3004
|
+
InputOTPGroup,
|
|
3005
|
+
InputOTPSlot,
|
|
3006
|
+
Label2 as Label,
|
|
3007
|
+
Menubar,
|
|
3008
|
+
MenubarContent,
|
|
3009
|
+
MenubarItem,
|
|
3010
|
+
MenubarMenu,
|
|
3011
|
+
MenubarSeparator,
|
|
3012
|
+
MenubarTrigger,
|
|
3013
|
+
NavigationMenu,
|
|
3014
|
+
NavigationMenuContent,
|
|
3015
|
+
NavigationMenuItem,
|
|
3016
|
+
NavigationMenuLink,
|
|
3017
|
+
NavigationMenuList,
|
|
3018
|
+
NavigationMenuTrigger,
|
|
3019
|
+
Pagination,
|
|
3020
|
+
PaginationBar,
|
|
3021
|
+
PaginationContent,
|
|
3022
|
+
PaginationEllipsis,
|
|
3023
|
+
PaginationItem,
|
|
3024
|
+
PaginationLink,
|
|
3025
|
+
PaginationNext,
|
|
3026
|
+
PaginationPrevious,
|
|
3027
|
+
Popover,
|
|
3028
|
+
PopoverContent,
|
|
3029
|
+
PopoverTrigger,
|
|
3030
|
+
Progress,
|
|
3031
|
+
RadioGroup,
|
|
3032
|
+
RadioGroupItem,
|
|
3033
|
+
ResizableHandle,
|
|
3034
|
+
ResizablePanel,
|
|
3035
|
+
ResizablePanelGroup,
|
|
3036
|
+
RevitUIProvider,
|
|
3037
|
+
ScrollArea,
|
|
3038
|
+
ScrollBar,
|
|
3039
|
+
SearchBar,
|
|
3040
|
+
Select,
|
|
3041
|
+
SelectContent,
|
|
3042
|
+
SelectGroup,
|
|
3043
|
+
SelectItem,
|
|
3044
|
+
SelectLabel,
|
|
3045
|
+
SelectSeparator,
|
|
3046
|
+
SelectTrigger,
|
|
3047
|
+
SelectValue,
|
|
3048
|
+
Separator2 as Separator,
|
|
3049
|
+
Sheet,
|
|
3050
|
+
SheetContent,
|
|
3051
|
+
SheetDescription,
|
|
3052
|
+
SheetHeader,
|
|
3053
|
+
SheetTitle,
|
|
3054
|
+
SheetTrigger,
|
|
3055
|
+
Sidebar,
|
|
3056
|
+
SidebarContent,
|
|
3057
|
+
SidebarFooter,
|
|
3058
|
+
SidebarHeader,
|
|
3059
|
+
SidebarInset,
|
|
3060
|
+
SidebarMenu,
|
|
3061
|
+
SidebarMenuButton,
|
|
3062
|
+
SidebarMenuItem,
|
|
3063
|
+
SidebarProvider,
|
|
3064
|
+
SidebarTrigger,
|
|
3065
|
+
Skeleton,
|
|
3066
|
+
Slider,
|
|
3067
|
+
Switch,
|
|
3068
|
+
Table,
|
|
3069
|
+
TableBody,
|
|
3070
|
+
TableCaption,
|
|
3071
|
+
TableCell,
|
|
3072
|
+
TableFooter,
|
|
3073
|
+
TableHead,
|
|
3074
|
+
TableHeader,
|
|
3075
|
+
TableRow,
|
|
3076
|
+
Tabs,
|
|
3077
|
+
TabsContent,
|
|
3078
|
+
TabsList,
|
|
3079
|
+
TabsTrigger,
|
|
3080
|
+
Textarea,
|
|
3081
|
+
Toaster,
|
|
3082
|
+
Toggle,
|
|
3083
|
+
ToggleGroup,
|
|
3084
|
+
ToggleGroupItem,
|
|
3085
|
+
Tooltip,
|
|
3086
|
+
TooltipContent,
|
|
3087
|
+
TooltipProvider,
|
|
3088
|
+
TooltipTrigger,
|
|
3089
|
+
alertVariants,
|
|
3090
|
+
badgeVariants,
|
|
3091
|
+
buttonVariants,
|
|
3092
|
+
cardVariants,
|
|
3093
|
+
cn,
|
|
3094
|
+
inputVariants,
|
|
3095
|
+
labelVariants,
|
|
3096
|
+
revitTokens,
|
|
3097
|
+
selectTriggerVariants,
|
|
3098
|
+
surfaces,
|
|
3099
|
+
textareaVariants,
|
|
3100
|
+
toast,
|
|
3101
|
+
toggleVariants,
|
|
3102
|
+
tokensToCssVars,
|
|
3103
|
+
tokensToStylesheet,
|
|
3104
|
+
useFormField,
|
|
3105
|
+
useSidebar
|
|
3106
|
+
};
|
|
3107
|
+
//# sourceMappingURL=index.js.map
|