@cntyclub/ui-react 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,895 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+ import { CheckboxGroup as CheckboxGroup$1 } from '@base-ui/react/checkbox-group';
6
+ import { Field as Field$1 } from '@base-ui/react/field';
7
+ import { mergeProps } from '@base-ui/react/merge-props';
8
+ import { useRender } from '@base-ui/react/use-render';
9
+ import { cva } from 'class-variance-authority';
10
+ import { MinusIcon, PlusIcon, ChevronsUpDownIcon, ChevronUpIcon, ChevronDownIcon, Loader2Icon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';
11
+ import { DayPicker } from 'react-day-picker';
12
+ import { Popover as Popover$1 } from '@base-ui/react/popover';
13
+ import { NumberField as NumberField$1 } from '@base-ui/react/number-field';
14
+ import * as React from 'react';
15
+ import { Select as Select$1 } from '@base-ui/react/select';
16
+ import { useSpinDelay } from 'spin-delay';
17
+ import { Input as Input$1 } from '@base-ui/react/input';
18
+
19
+ // src/lib/utils/css.ts
20
+ function cn(...inputs) {
21
+ return twMerge(clsx(inputs));
22
+ }
23
+ var checkboxSizes = {
24
+ sm: { box: "size-4.5 sm:size-4", icon: "size-3.5 sm:size-3" },
25
+ md: { box: "size-5", icon: "size-4" }
26
+ };
27
+ function Checkbox({ className, size = "sm", ...props }) {
28
+ const sizes = checkboxSizes[size];
29
+ return /* @__PURE__ */ jsx(
30
+ Checkbox$1.Root,
31
+ {
32
+ className: cn(
33
+ "relative inline-flex shrink-0 items-center justify-center rounded-[4px] border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none ring-ring transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[3px] not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:opacity-64 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none",
34
+ sizes.box,
35
+ className
36
+ ),
37
+ "data-slot": "checkbox",
38
+ ...props,
39
+ children: /* @__PURE__ */ jsx(
40
+ Checkbox$1.Indicator,
41
+ {
42
+ className: "-inset-px absolute flex items-center justify-center rounded-[4px] text-primary-foreground transition-opacity duration-150 ease-out data-checked:bg-primary data-checked:opacity-100 data-indeterminate:text-foreground data-indeterminate:opacity-100 data-unchecked:opacity-0",
43
+ "data-slot": "checkbox-indicator",
44
+ keepMounted: true,
45
+ render: (props2, state) => /* @__PURE__ */ jsx("span", { ...props2, children: state.indeterminate ? (
46
+ // biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library
47
+ /* @__PURE__ */ jsx(
48
+ "svg",
49
+ {
50
+ className: sizes.icon,
51
+ fill: "none",
52
+ height: "24",
53
+ stroke: "currentColor",
54
+ strokeLinecap: "round",
55
+ strokeLinejoin: "round",
56
+ strokeWidth: "3",
57
+ viewBox: "0 0 24 24",
58
+ width: "24",
59
+ xmlns: "http://www.w3.org/2000/svg",
60
+ children: /* @__PURE__ */ jsx("path", { d: "M5.252 12h13.496" })
61
+ }
62
+ )
63
+ ) : (
64
+ // biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library
65
+ /* @__PURE__ */ jsx(
66
+ "svg",
67
+ {
68
+ className: sizes.icon,
69
+ fill: "none",
70
+ height: "24",
71
+ stroke: "currentColor",
72
+ strokeLinecap: "round",
73
+ strokeLinejoin: "round",
74
+ strokeWidth: "3",
75
+ viewBox: "0 0 24 24",
76
+ width: "24",
77
+ xmlns: "http://www.w3.org/2000/svg",
78
+ children: /* @__PURE__ */ jsx(
79
+ "path",
80
+ {
81
+ className: "[stroke-dasharray:1] [stroke-dashoffset:1] [transition:stroke-dashoffset_250ms_cubic-bezier(0.65,0,0.35,1)_110ms] in-[[data-checked]]:[stroke-dashoffset:0]",
82
+ d: "M5.252 12.7 10.2 18.63 18.748 5.37",
83
+ pathLength: 1
84
+ }
85
+ )
86
+ }
87
+ )
88
+ ) })
89
+ }
90
+ )
91
+ }
92
+ );
93
+ }
94
+ function CheckboxGroup({ className, ...props }) {
95
+ return /* @__PURE__ */ jsx(
96
+ CheckboxGroup$1,
97
+ {
98
+ className: cn("flex flex-col items-start gap-3", className),
99
+ ...props
100
+ }
101
+ );
102
+ }
103
+ function Field({ className, ...props }) {
104
+ return /* @__PURE__ */ jsx(
105
+ Field$1.Root,
106
+ {
107
+ className: cn("flex flex-col items-start gap-2", className),
108
+ "data-slot": "field",
109
+ ...props
110
+ }
111
+ );
112
+ }
113
+ function FieldLabel({ className, ...props }) {
114
+ return /* @__PURE__ */ jsx(
115
+ Field$1.Label,
116
+ {
117
+ className: cn(
118
+ "inline-flex items-center gap-2 font-medium text-base/4.5 text-foreground sm:text-sm/4",
119
+ className
120
+ ),
121
+ "data-slot": "field-label",
122
+ ...props
123
+ }
124
+ );
125
+ }
126
+ function FieldItem({ className, ...props }) {
127
+ return /* @__PURE__ */ jsx(
128
+ Field$1.Item,
129
+ {
130
+ className: cn("flex", className),
131
+ "data-slot": "field-item",
132
+ ...props
133
+ }
134
+ );
135
+ }
136
+ function FieldDescription({
137
+ className,
138
+ ...props
139
+ }) {
140
+ return /* @__PURE__ */ jsx(
141
+ Field$1.Description,
142
+ {
143
+ className: cn("text-muted-foreground text-xs", className),
144
+ "data-slot": "field-description",
145
+ ...props
146
+ }
147
+ );
148
+ }
149
+ function FieldError({ className, ...props }) {
150
+ return /* @__PURE__ */ jsx(
151
+ Field$1.Error,
152
+ {
153
+ className: cn("text-destructive-foreground text-xs", className),
154
+ "data-slot": "field-error",
155
+ ...props
156
+ }
157
+ );
158
+ }
159
+ function FieldGroup({ className, ...props }) {
160
+ return /* @__PURE__ */ jsx(
161
+ "div",
162
+ {
163
+ "data-slot": "field-group",
164
+ className: cn(
165
+ "gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col",
166
+ className
167
+ ),
168
+ ...props
169
+ }
170
+ );
171
+ }
172
+ var FieldControl = Field$1.Control;
173
+ var FieldValidity = Field$1.Validity;
174
+ var buttonVariants = cva(
175
+ "[&_svg]:-mx-0.5 [&_img]:-mx-0.5 [&_picture]:-mx-0.5 relative inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-lg border font-medium text-base outline-none transition-[box-shadow,filter] duration-100 [:active:not(:disabled)]:brightness-95 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_img:not([class*='opacity-'])]:opacity-80 [&_picture:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 [&_img:not([class*='size-'])]:size-4.5 [&_picture:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 sm:[&_img:not([class*='size-'])]:size-4 sm:[&_picture:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_img]:pointer-events-none [&_picture]:pointer-events-none [&_svg]:shrink-0 [&_img]:shrink-0 [&_picture]:shrink-0",
176
+ {
177
+ defaultVariants: {
178
+ size: "default",
179
+ variant: "default"
180
+ },
181
+ variants: {
182
+ size: {
183
+ default: "h-9 px-[calc(--spacing(3)-1px)] sm:h-8",
184
+ icon: "size-9 sm:size-8",
185
+ "icon-lg": "size-10 sm:size-9",
186
+ "icon-sm": "size-8 sm:size-7",
187
+ "icon-xl": "size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 [&_img:not([class*='size-'])]:size-5 [&_picture:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5 sm:[&_img:not([class*='size-'])]:size-4.5 sm:[&_picture:not([class*='size-'])]:size-4.5",
188
+ "icon-xs": "size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 not-in-data-[slot=input-group]:[&_img:not([class*='size-'])]:size-4 not-in-data-[slot=input-group]:[&_picture:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5 sm:not-in-data-[slot=input-group]:[&_img:not([class*='size-'])]:size-3.5 sm:not-in-data-[slot=input-group]:[&_picture:not([class*='size-'])]:size-3.5",
189
+ lg: "h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9",
190
+ sm: "h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-7",
191
+ xl: "h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 [&_img:not([class*='size-'])]:size-5 [&_picture:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5 sm:[&_img:not([class*='size-'])]:size-4.5 sm:[&_picture:not([class*='size-'])]:size-4.5",
192
+ xs: "h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 [&_img:not([class*='size-'])]:size-4 [&_picture:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5 sm:[&_img:not([class*='size-'])]:size-3.5 sm:[&_picture:not([class*='size-'])]:size-3.5"
193
+ },
194
+ variant: {
195
+ default: "not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-primary bg-primary text-primary-foreground shadow-primary/24 shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-primary/90",
196
+ destructive: "not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-destructive bg-destructive text-white shadow-destructive/24 shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-destructive/90",
197
+ "destructive-outline": "border-input bg-popover not-dark:bg-clip-padding text-destructive-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:border-destructive/32 [:hover,[data-pressed]]:bg-destructive/4",
198
+ "destructive-ghost": "border-transparent text-destructive-foreground data-pressed:bg-destructive/8 [:hover,[data-pressed]]:bg-destructive/8",
199
+ ghost: "border-transparent text-foreground data-pressed:bg-accent [:hover,[data-pressed]]:bg-accent",
200
+ link: "border-transparent pointer-coarse:underline pointer-coarse:underline-offset-4 pointer-fine:after:absolute pointer-fine:after:inset-x-3 pointer-fine:after:bottom-1.5 pointer-fine:after:h-px pointer-fine:after:origin-right pointer-fine:after:scale-x-0 pointer-fine:after:bg-current pointer-fine:after:transition-transform pointer-fine:after:duration-300 pointer-fine:after:ease-out pointer-fine:hover:after:origin-left pointer-fine:hover:after:scale-x-100 pointer-fine:data-pressed:after:origin-left pointer-fine:data-pressed:after:scale-x-100",
201
+ "link-muted": "border-transparent text-muted-foreground transition-[box-shadow,filter,color] [:hover,[data-pressed]]:text-foreground pointer-coarse:underline pointer-coarse:underline-offset-4 pointer-fine:after:absolute pointer-fine:after:inset-x-3 pointer-fine:after:bottom-1.5 pointer-fine:after:h-px pointer-fine:after:origin-right pointer-fine:after:scale-x-0 pointer-fine:after:bg-current pointer-fine:after:transition-transform pointer-fine:after:duration-300 pointer-fine:after:ease-out pointer-fine:hover:after:origin-left pointer-fine:hover:after:scale-x-100 pointer-fine:data-pressed:after:origin-left pointer-fine:data-pressed:after:scale-x-100",
202
+ outline: "border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64",
203
+ secondary: "border-transparent bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90"
204
+ }
205
+ }
206
+ }
207
+ );
208
+ function Button({ className, variant, size, render, ...props }) {
209
+ const typeValue = render ? void 0 : "button";
210
+ const defaultProps = {
211
+ className: cn(buttonVariants({ className, size, variant })),
212
+ "data-slot": "button",
213
+ type: typeValue
214
+ };
215
+ return useRender({
216
+ defaultTagName: "button",
217
+ props: mergeProps(defaultProps, props),
218
+ render
219
+ });
220
+ }
221
+ var buttonClassNames = "relative flex size-(--cell-size) text-base sm:text-sm items-center justify-center rounded-lg text-foreground not-in-data-selected:hover:bg-accent disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0";
222
+ function Calendar({
223
+ className,
224
+ classNames,
225
+ showOutsideDays = true,
226
+ components: userComponents,
227
+ ...props
228
+ }) {
229
+ const defaultClassNames = {
230
+ button_next: buttonClassNames,
231
+ button_previous: buttonClassNames,
232
+ caption_label: "text-base sm:text-sm font-medium flex items-center gap-2 h-full",
233
+ day: "size-(--cell-size) text-sm py-px",
234
+ day_button: cn(
235
+ buttonClassNames,
236
+ "in-[[data-selected]:not(.range-middle)]:transition-[color,background-color,border-radius,box-shadow] in-data-disabled:pointer-events-none focus-visible:z-1 in-data-selected:bg-primary in-data-selected:text-primary-foreground in-data-disabled:text-muted-foreground/70 in-data-disabled:line-through in-data-outside:text-muted-foreground/70 in-data-selected:in-data-outside:text-primary-foreground outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] in-[.range-start:not(.range-end)]:rounded-e-none in-[.range-end:not(.range-start)]:rounded-s-none in-[.range-middle]:rounded-none in-[.range-middle]:in-data-selected:bg-accent in-[.range-middle]:in-data-selected:text-foreground"
237
+ ),
238
+ dropdown: "absolute bg-popover inset-0 opacity-0",
239
+ dropdown_root: "relative has-focus:border-ring has-focus:ring-ring/50 has-focus:ring-[3px] border border-input shadow-xs/5 rounded-lg px-[calc(--spacing(3)-1px)] h-9 sm:h-8 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:-me-1",
240
+ dropdowns: "w-full flex items-center text-base sm:text-sm justify-center h-(--cell-size) gap-1.5 *:[span]:font-medium",
241
+ hidden: "invisible",
242
+ month: "w-full",
243
+ month_caption: "relative mx-(--cell-size) px-1 mb-1 flex h-(--cell-size) items-center justify-center z-2",
244
+ months: "relative flex flex-col sm:flex-row gap-2",
245
+ nav: "absolute top-0 flex w-full justify-between z-1",
246
+ outside: "text-muted-foreground data-selected:bg-accent/50 data-selected:text-muted-foreground",
247
+ range_end: "range-end",
248
+ range_middle: "range-middle",
249
+ range_start: "range-start",
250
+ today: "*:after:pointer-events-none *:after:absolute *:after:bottom-1 *:after:start-1/2 *:after:z-1 *:after:size-[3px] *:after:-translate-x-1/2 *:after:rounded-full *:after:bg-primary [&[data-selected]:not(.range-middle)>*]:after:bg-background [&[data-disabled]>*]:after:bg-foreground/30 *:after:transition-colors",
251
+ week_number: "size-(--cell-size) p-0 text-xs font-medium text-muted-foreground/70",
252
+ weekday: "size-(--cell-size) p-0 text-xs font-medium text-muted-foreground/70"
253
+ };
254
+ const mergedClassNames = Object.keys(
255
+ defaultClassNames
256
+ ).reduce(
257
+ (acc, key) => {
258
+ const userClass = classNames?.[key];
259
+ const baseClass = defaultClassNames[key];
260
+ acc[key] = userClass ? cn(baseClass, userClass) : baseClass;
261
+ return acc;
262
+ },
263
+ { ...defaultClassNames }
264
+ );
265
+ const defaultComponents = {
266
+ Chevron: ({
267
+ className: className2,
268
+ orientation,
269
+ ...props2
270
+ }) => {
271
+ if (orientation === "left") {
272
+ return /* @__PURE__ */ jsx(
273
+ ChevronLeftIcon,
274
+ {
275
+ className: cn(className2, "rtl:rotate-180"),
276
+ ...props2,
277
+ "aria-hidden": "true"
278
+ }
279
+ );
280
+ }
281
+ if (orientation === "right") {
282
+ return /* @__PURE__ */ jsx(
283
+ ChevronRightIcon,
284
+ {
285
+ className: cn(className2, "rtl:rotate-180"),
286
+ ...props2,
287
+ "aria-hidden": "true"
288
+ }
289
+ );
290
+ }
291
+ return /* @__PURE__ */ jsx(
292
+ ChevronsUpDownIcon,
293
+ {
294
+ className: className2,
295
+ ...props2,
296
+ "aria-hidden": "true"
297
+ }
298
+ );
299
+ }
300
+ };
301
+ const mergedComponents = {
302
+ ...defaultComponents,
303
+ ...userComponents
304
+ };
305
+ return /* @__PURE__ */ jsx(
306
+ DayPicker,
307
+ {
308
+ className: cn(
309
+ "w-fit [--cell-size:--spacing(10)] sm:[--cell-size:--spacing(9)]",
310
+ className
311
+ ),
312
+ classNames: mergedClassNames,
313
+ components: mergedComponents,
314
+ "data-slot": "calendar",
315
+ formatters: {
316
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
317
+ },
318
+ mode: "single",
319
+ showOutsideDays,
320
+ ...props
321
+ }
322
+ );
323
+ }
324
+ var PopoverCreateHandle = Popover$1.createHandle;
325
+ var Popover = Popover$1.Root;
326
+ function PopoverTrigger({
327
+ className,
328
+ children,
329
+ ...props
330
+ }) {
331
+ return /* @__PURE__ */ jsx(
332
+ Popover$1.Trigger,
333
+ {
334
+ className,
335
+ "data-slot": "popover-trigger",
336
+ ...props,
337
+ children
338
+ }
339
+ );
340
+ }
341
+ function PopoverPopup({
342
+ children,
343
+ className,
344
+ side = "bottom",
345
+ align = "center",
346
+ sideOffset = 4,
347
+ alignOffset = 0,
348
+ tooltipStyle = false,
349
+ anchor,
350
+ ...props
351
+ }) {
352
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
353
+ Popover$1.Positioner,
354
+ {
355
+ align,
356
+ alignOffset,
357
+ anchor,
358
+ className: "z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] data-instant:transition-none",
359
+ "data-slot": "popover-positioner",
360
+ side,
361
+ sideOffset,
362
+ children: /* @__PURE__ */ jsx(
363
+ Popover$1.Popup,
364
+ {
365
+ className: cn(
366
+ "relative flex h-(--popup-height,auto) w-(--popup-width,auto) origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding text-popover-foreground shadow-lg/5 outline-none transition-[width,height,scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] has-data-[slot=calendar]:rounded-xl has-data-[slot=calendar]:before:rounded-[calc(var(--radius-xl)-1px)] data-ending-style:scale-98 data-ending-style:opacity-0 data-starting-style:scale-98 data-starting-style:opacity-0 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]",
367
+ tooltipStyle && "w-fit text-balance rounded-md text-xs shadow-md/5 before:rounded-[calc(var(--radius-md)-1px)]",
368
+ className
369
+ ),
370
+ "data-slot": "popover-popup",
371
+ ...props,
372
+ children: /* @__PURE__ */ jsx(
373
+ Popover$1.Viewport,
374
+ {
375
+ className: cn(
376
+ "relative size-full max-h-(--available-height) overflow-clip px-(--viewport-inline-padding) py-4 [--viewport-inline-padding:--spacing(4)] has-data-[slot=calendar]:p-2 data-instant:transition-none **:data-current:data-ending-style:opacity-0 **:data-current:data-starting-style:opacity-0 **:data-previous:data-ending-style:opacity-0 **:data-previous:data-starting-style:opacity-0 **:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-current:opacity-100 **:data-previous:opacity-100 **:data-current:transition-opacity **:data-previous:transition-opacity",
377
+ tooltipStyle ? "py-1 [--viewport-inline-padding:--spacing(2)]" : "not-data-transitioning:overflow-y-auto"
378
+ ),
379
+ "data-slot": "popover-viewport",
380
+ children
381
+ }
382
+ )
383
+ }
384
+ )
385
+ }
386
+ ) });
387
+ }
388
+ function PopoverClose({ ...props }) {
389
+ return /* @__PURE__ */ jsx(Popover$1.Close, { "data-slot": "popover-close", ...props });
390
+ }
391
+ function PopoverTitle({ className, ...props }) {
392
+ return /* @__PURE__ */ jsx(
393
+ Popover$1.Title,
394
+ {
395
+ className: cn("font-semibold text-lg leading-none", className),
396
+ "data-slot": "popover-title",
397
+ ...props
398
+ }
399
+ );
400
+ }
401
+ function PopoverDescription({
402
+ className,
403
+ ...props
404
+ }) {
405
+ return /* @__PURE__ */ jsx(
406
+ Popover$1.Description,
407
+ {
408
+ className: cn("text-muted-foreground text-sm", className),
409
+ "data-slot": "popover-description",
410
+ ...props
411
+ }
412
+ );
413
+ }
414
+ function Label({
415
+ className,
416
+ render,
417
+ ...props
418
+ }) {
419
+ const defaultProps = {
420
+ className: cn(
421
+ "inline-flex items-center gap-2 text-base/4.5 sm:text-sm/4 font-medium text-foreground",
422
+ className
423
+ ),
424
+ "data-slot": "label"
425
+ };
426
+ return useRender({
427
+ defaultTagName: "label",
428
+ props: mergeProps(defaultProps, props),
429
+ render
430
+ });
431
+ }
432
+ var NumberFieldContext = React.createContext(null);
433
+ function NumberField({
434
+ id,
435
+ className,
436
+ size = "default",
437
+ ...props
438
+ }) {
439
+ const generatedId = React.useId();
440
+ const fieldId = id ?? generatedId;
441
+ return /* @__PURE__ */ jsx(NumberFieldContext.Provider, { value: { fieldId }, children: /* @__PURE__ */ jsx(
442
+ NumberField$1.Root,
443
+ {
444
+ className: cn("flex w-full flex-col items-start gap-2", className),
445
+ "data-size": size,
446
+ "data-slot": "number-field",
447
+ id: fieldId,
448
+ ...props
449
+ }
450
+ ) });
451
+ }
452
+ function NumberFieldGroup({
453
+ className,
454
+ ...props
455
+ }) {
456
+ return /* @__PURE__ */ jsx(
457
+ NumberField$1.Group,
458
+ {
459
+ className: cn(
460
+ "relative flex w-full justify-between rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-data-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-within:border-ring focus-within:ring-[3px] has-aria-invalid:border-destructive/36 focus-within:has-aria-invalid:border-destructive/64 focus-within:has-aria-invalid:ring-destructive/48 data-disabled:pointer-events-none data-disabled:opacity-64 sm:text-sm dark:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-data-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [[data-disabled],:focus-within,[aria-invalid]]:shadow-none",
461
+ className
462
+ ),
463
+ "data-slot": "number-field-group",
464
+ ...props
465
+ }
466
+ );
467
+ }
468
+ function NumberFieldDecrement({
469
+ className,
470
+ ...props
471
+ }) {
472
+ return /* @__PURE__ */ jsx(
473
+ NumberField$1.Decrement,
474
+ {
475
+ className: cn(
476
+ "relative flex shrink-0 cursor-pointer items-center justify-center rounded-s-[calc(var(--radius-lg)-1px)] in-data-[size=sm]:px-[calc(--spacing(2.5)-1px)] px-[calc(--spacing(3)-1px)] transition-colors pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:bg-accent",
477
+ className
478
+ ),
479
+ "data-slot": "number-field-decrement",
480
+ ...props,
481
+ children: /* @__PURE__ */ jsx(MinusIcon, {})
482
+ }
483
+ );
484
+ }
485
+ function NumberFieldIncrement({
486
+ className,
487
+ ...props
488
+ }) {
489
+ return /* @__PURE__ */ jsx(
490
+ NumberField$1.Increment,
491
+ {
492
+ className: cn(
493
+ "relative flex shrink-0 cursor-pointer items-center justify-center rounded-e-[calc(var(--radius-lg)-1px)] in-data-[size=sm]:px-[calc(--spacing(2.5)-1px)] px-[calc(--spacing(3)-1px)] transition-colors pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:bg-accent",
494
+ className
495
+ ),
496
+ "data-slot": "number-field-increment",
497
+ ...props,
498
+ children: /* @__PURE__ */ jsx(PlusIcon, {})
499
+ }
500
+ );
501
+ }
502
+ function NumberFieldInput({
503
+ className,
504
+ ...props
505
+ }) {
506
+ return /* @__PURE__ */ jsx(
507
+ NumberField$1.Input,
508
+ {
509
+ className: cn(
510
+ "h-8.5 in-data-[size=lg]:h-9.5 in-data-[size=sm]:h-7.5 w-full min-w-0 grow bg-transparent in-data-[size=sm]:px-[calc(--spacing(2.5)-1px)] px-[calc(--spacing(3)-1px)] text-center tabular-nums in-data-[size=lg]:leading-9.5 in-data-[size=sm]:leading-7.5 leading-8.5 outline-none sm:h-7.5 sm:in-data-[size=lg]:h-8.5 sm:in-data-[size=sm]:h-6.5 sm:in-data-[size=lg]:leading-8.5 sm:in-data-[size=sm]:leading-8.5 sm:leading-7.5",
511
+ className
512
+ ),
513
+ "data-slot": "number-field-input",
514
+ ...props
515
+ }
516
+ );
517
+ }
518
+ function NumberFieldScrubArea({
519
+ className,
520
+ label,
521
+ ...props
522
+ }) {
523
+ const context = React.useContext(NumberFieldContext);
524
+ if (!context) {
525
+ throw new Error(
526
+ "NumberFieldScrubArea must be used within a NumberField component for accessibility."
527
+ );
528
+ }
529
+ return /* @__PURE__ */ jsxs(
530
+ NumberField$1.ScrubArea,
531
+ {
532
+ className: cn("flex cursor-ew-resize", className),
533
+ "data-slot": "number-field-scrub-area",
534
+ ...props,
535
+ children: [
536
+ /* @__PURE__ */ jsx(Label, { className: "cursor-ew-resize", htmlFor: context.fieldId, children: label }),
537
+ /* @__PURE__ */ jsx(NumberField$1.ScrubAreaCursor, { className: "drop-shadow-[0_1px_1px_#0008] filter", children: /* @__PURE__ */ jsx(CursorGrowIcon, {}) })
538
+ ]
539
+ }
540
+ );
541
+ }
542
+ function CursorGrowIcon(props) {
543
+ return (
544
+ // biome-ignore lint/a11y/noSvgWithoutTitle: Imported from library
545
+ /* @__PURE__ */ jsx(
546
+ "svg",
547
+ {
548
+ fill: "black",
549
+ height: "14",
550
+ stroke: "white",
551
+ viewBox: "0 0 24 14",
552
+ width: "26",
553
+ xmlns: "http://www.w3.org/2000/svg",
554
+ ...props,
555
+ children: /* @__PURE__ */ jsx("path", { d: "M19.5 5.5L6.49737 5.51844V2L1 6.9999L6.5 12L6.49737 8.5L19.5 8.5V12L25 6.9999L19.5 2V5.5Z" })
556
+ }
557
+ )
558
+ );
559
+ }
560
+ var Select = Select$1.Root;
561
+ function SelectTrigger({
562
+ className,
563
+ size = "default",
564
+ children,
565
+ ...props
566
+ }) {
567
+ return /* @__PURE__ */ jsxs(
568
+ Select$1.Trigger,
569
+ {
570
+ className: cn(
571
+ "relative inline-flex min-h-9 w-full min-w-36 select-none items-center justify-center gap-2 rounded-lg border border-input bg-background not-dark:bg-clip-padding px-[calc(--spacing(3)-1px)] text-left text-base text-foreground shadow-xs/5 outline-none ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 focus-visible:border-ring focus-visible:ring-[3px] aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/16 data-disabled:pointer-events-none data-disabled:opacity-64 sm:min-h-8 sm:text-sm dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-focus-visible:not-aria-invalid:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0 [[data-disabled],:focus-visible,[aria-invalid],[data-pressed]]:shadow-none",
572
+ size === "sm" && "min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:min-h-7",
573
+ size === "lg" && "min-h-10 sm:min-h-9",
574
+ className
575
+ ),
576
+ "data-slot": "select-trigger",
577
+ ...props,
578
+ children: [
579
+ children,
580
+ /* @__PURE__ */ jsx(Select$1.Icon, { "data-slot": "select-icon", children: /* @__PURE__ */ jsx(ChevronsUpDownIcon, { className: "-me-1 size-4.5 opacity-80 sm:size-4" }) })
581
+ ]
582
+ }
583
+ );
584
+ }
585
+ function SelectValue({ className, ...props }) {
586
+ return /* @__PURE__ */ jsx(
587
+ Select$1.Value,
588
+ {
589
+ className: cn(
590
+ "flex-1 truncate data-placeholder:text-muted-foreground",
591
+ className
592
+ ),
593
+ "data-slot": "select-value",
594
+ ...props
595
+ }
596
+ );
597
+ }
598
+ function SelectPopup({
599
+ className,
600
+ children,
601
+ sideOffset = 4,
602
+ alignItemWithTrigger = true,
603
+ ...props
604
+ }) {
605
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(
606
+ Select$1.Positioner,
607
+ {
608
+ alignItemWithTrigger,
609
+ className: "z-50 select-none",
610
+ "data-slot": "select-positioner",
611
+ sideOffset,
612
+ children: /* @__PURE__ */ jsxs(
613
+ Select$1.Popup,
614
+ {
615
+ className: "origin-(--transform-origin) text-foreground transition-[transform,scale,opacity] duration-150 ease-out data-ending-style:scale-95 data-ending-style:opacity-0 data-starting-style:scale-95 data-starting-style:opacity-0",
616
+ "data-slot": "select-popup",
617
+ ...props,
618
+ children: [
619
+ /* @__PURE__ */ jsx(
620
+ Select$1.ScrollUpArrow,
621
+ {
622
+ className: "top-0 z-50 flex h-6 w-full cursor-default items-center justify-center before:pointer-events-none before:absolute before:inset-x-px before:top-px before:h-[200%] before:rounded-t-[calc(var(--radius-lg)-1px)] before:bg-linear-to-b before:from-50% before:from-popover",
623
+ "data-slot": "select-scroll-up-arrow",
624
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "relative size-4.5 sm:size-4" })
625
+ }
626
+ ),
627
+ /* @__PURE__ */ jsx("div", { className: "relative h-full rounded-lg border bg-popover not-dark:bg-clip-padding shadow-lg/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]", children: /* @__PURE__ */ jsx(
628
+ Select$1.List,
629
+ {
630
+ className: cn(
631
+ "max-h-(--available-height) min-w-(--anchor-width) overflow-y-auto p-1",
632
+ className
633
+ ),
634
+ "data-slot": "select-list",
635
+ children
636
+ }
637
+ ) }),
638
+ /* @__PURE__ */ jsx(
639
+ Select$1.ScrollDownArrow,
640
+ {
641
+ className: "bottom-0 z-50 flex h-6 w-full cursor-default items-center justify-center before:pointer-events-none before:absolute before:inset-x-px before:bottom-px before:h-[200%] before:rounded-b-[calc(var(--radius-lg)-1px)] before:bg-linear-to-t before:from-50% before:from-popover",
642
+ "data-slot": "select-scroll-down-arrow",
643
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "relative size-4.5 sm:size-4" })
644
+ }
645
+ )
646
+ ]
647
+ }
648
+ )
649
+ }
650
+ ) });
651
+ }
652
+ function SelectItem({
653
+ className,
654
+ children,
655
+ ...props
656
+ }) {
657
+ return /* @__PURE__ */ jsxs(
658
+ Select$1.Item,
659
+ {
660
+ className: cn(
661
+ "grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
662
+ className
663
+ ),
664
+ "data-slot": "select-item",
665
+ ...props,
666
+ children: [
667
+ /* @__PURE__ */ jsx(Select$1.ItemIndicator, { className: "col-start-1", children: /* @__PURE__ */ jsx(
668
+ "svg",
669
+ {
670
+ fill: "none",
671
+ height: "24",
672
+ stroke: "currentColor",
673
+ strokeLinecap: "round",
674
+ strokeLinejoin: "round",
675
+ strokeWidth: "2",
676
+ viewBox: "0 0 24 24",
677
+ width: "24",
678
+ xmlns: "http://www.w3.org/1500/svg",
679
+ children: /* @__PURE__ */ jsx("path", { d: "M5.252 12.7 10.2 18.63 18.748 5.37" })
680
+ }
681
+ ) }),
682
+ /* @__PURE__ */ jsx(Select$1.ItemText, { className: "col-start-2 min-w-0", children })
683
+ ]
684
+ }
685
+ );
686
+ }
687
+ function SelectSeparator({
688
+ className,
689
+ ...props
690
+ }) {
691
+ return /* @__PURE__ */ jsx(
692
+ Select$1.Separator,
693
+ {
694
+ className: cn("mx-2 my-1 h-px bg-border", className),
695
+ "data-slot": "select-separator",
696
+ ...props
697
+ }
698
+ );
699
+ }
700
+ function SelectGroup(props) {
701
+ return /* @__PURE__ */ jsx(Select$1.Group, { "data-slot": "select-group", ...props });
702
+ }
703
+ function SelectGroupLabel(props) {
704
+ return /* @__PURE__ */ jsx(
705
+ Select$1.GroupLabel,
706
+ {
707
+ className: "px-2 py-1.5 font-medium text-muted-foreground text-xs",
708
+ "data-slot": "select-group-label",
709
+ ...props
710
+ }
711
+ );
712
+ }
713
+ function SpinnerOnDemand({
714
+ className,
715
+ options,
716
+ isLoading,
717
+ icon,
718
+ ...props
719
+ }) {
720
+ const shouldShow = useSpinDelay(isLoading, options);
721
+ if (!shouldShow) return icon || null;
722
+ return /* @__PURE__ */ jsx(
723
+ Loader2Icon,
724
+ {
725
+ "aria-label": "Loading",
726
+ className: cn("animate-spin", className),
727
+ role: "status",
728
+ ...props
729
+ }
730
+ );
731
+ }
732
+ function Input({
733
+ className,
734
+ size = "default",
735
+ unstyled = false,
736
+ nativeInput = false,
737
+ ...props
738
+ }) {
739
+ const inputClassName = cn(
740
+ "h-8.5 w-full min-w-0 rounded-[inherit] px-[calc(--spacing(3)-1px)] leading-8.5 outline-none placeholder:text-muted-foreground/72 sm:h-7.5 sm:leading-7.5",
741
+ size === "sm" && "h-7.5 px-[calc(--spacing(2.5)-1px)] leading-7.5 sm:h-6.5 sm:leading-6.5",
742
+ size === "lg" && "h-9.5 leading-9.5 sm:h-8.5 sm:leading-8.5",
743
+ props.type === "search" && "[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none [&::-webkit-search-results-button]:appearance-none [&::-webkit-search-results-decoration]:appearance-none",
744
+ props.type === "file" && "text-muted-foreground file:me-3 file:bg-transparent file:font-medium file:text-foreground file:text-sm"
745
+ );
746
+ return /* @__PURE__ */ jsx(
747
+ "span",
748
+ {
749
+ className: cn(
750
+ !unstyled && "relative inline-flex w-full rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-disabled:not-has-focus-visible:not-has-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] has-focus-visible:has-aria-invalid:border-destructive/64 has-focus-visible:has-aria-invalid:ring-destructive/16 has-aria-invalid:border-destructive/36 has-focus-visible:border-ring has-disabled:opacity-64 has-[:disabled,:focus-visible,[aria-invalid]]:shadow-none has-focus-visible:ring-[3px] sm:text-sm dark:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:not-has-focus-visible:not-has-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]",
751
+ className
752
+ ) || void 0,
753
+ "data-size": size,
754
+ "data-slot": "input-control",
755
+ children: nativeInput ? /* @__PURE__ */ jsx(
756
+ "input",
757
+ {
758
+ className: inputClassName,
759
+ "data-slot": "input",
760
+ size: typeof size === "number" ? size : void 0,
761
+ ...props
762
+ }
763
+ ) : /* @__PURE__ */ jsx(
764
+ Input$1,
765
+ {
766
+ className: inputClassName,
767
+ "data-slot": "input",
768
+ size: typeof size === "number" ? size : void 0,
769
+ ...props
770
+ }
771
+ )
772
+ }
773
+ );
774
+ }
775
+ function Textarea({
776
+ className,
777
+ size = "default",
778
+ unstyled = false,
779
+ ...props
780
+ }) {
781
+ return /* @__PURE__ */ jsx(
782
+ "span",
783
+ {
784
+ className: cn(
785
+ !unstyled && "relative inline-flex w-full rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] has-focus-visible:has-aria-invalid:border-destructive/64 has-focus-visible:has-aria-invalid:ring-destructive/16 has-aria-invalid:border-destructive/36 has-focus-visible:border-ring has-disabled:opacity-64 has-[:disabled,:focus-visible,[aria-invalid]]:shadow-none has-focus-visible:ring-[3px] not-has-disabled:has-not-focus-visible:not-has-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] sm:text-sm dark:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:has-not-focus-visible:not-has-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]",
786
+ className
787
+ ) || void 0,
788
+ "data-size": size,
789
+ "data-slot": "textarea-control",
790
+ children: /* @__PURE__ */ jsx(
791
+ Field$1.Control,
792
+ {
793
+ render: (defaultProps) => /* @__PURE__ */ jsx(
794
+ "textarea",
795
+ {
796
+ className: cn(
797
+ "field-sizing-content min-h-17.5 w-full rounded-[inherit] px-[calc(--spacing(3)-1px)] py-[calc(--spacing(1.5)-1px)] outline-none max-sm:min-h-20.5",
798
+ size === "sm" && "min-h-16.5 px-[calc(--spacing(2.5)-1px)] py-[calc(--spacing(1)-1px)] max-sm:min-h-19.5",
799
+ size === "lg" && "min-h-18.5 py-[calc(--spacing(2)-1px)] max-sm:min-h-21.5"
800
+ ),
801
+ "data-slot": "textarea",
802
+ ...mergeProps(defaultProps, props)
803
+ }
804
+ )
805
+ }
806
+ )
807
+ }
808
+ );
809
+ }
810
+ function InputGroup({ className, ...props }) {
811
+ return (
812
+ // biome-ignore lint/a11y/useSemanticElements: Imported from library
813
+ /* @__PURE__ */ jsx(
814
+ "div",
815
+ {
816
+ className: cn(
817
+ "relative inline-flex w-full min-w-0 items-center rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-[input:disabled,textarea:disabled]:not-has-[input:focus-visible,textarea:focus-visible]:not-has-[input[aria-invalid],textarea[aria-invalid]]:before:shadow-[0_1px_--theme(--color-black/6%)] has-[input:focus-visible,textarea:focus-visible]:has-[input[aria-invalid],textarea[aria-invalid]]:border-destructive/64 has-[input:focus-visible,textarea:focus-visible]:has-[input[aria-invalid],textarea[aria-invalid]]:ring-destructive/16 has-[textarea]:h-auto has-data-[align=block-end]:h-auto has-data-[align=block-start]:h-auto has-data-[align=block-end]:flex-col has-data-[align=block-start]:flex-col has-[input:focus-visible,textarea:focus-visible]:border-ring has-[input[aria-invalid],textarea[aria-invalid]]:border-destructive/36 has-[input:disabled,textarea:disabled]:opacity-64 has-[input:disabled,textarea:disabled,input:focus-visible,textarea:focus-visible,input[aria-invalid],textarea[aria-invalid]]:shadow-none has-[input:focus-visible,textarea:focus-visible]:ring-[3px] sm:text-sm dark:bg-input/32 dark:has-[input[aria-invalid],textarea[aria-invalid]]:ring-destructive/24 dark:not-has-[input:disabled,textarea:disabled]:not-has-[input:focus-visible,textarea:focus-visible]:not-has-[input[aria-invalid],textarea[aria-invalid]]:before:shadow-[0_-1px_--theme(--color-white/6%)] has-data-[align=inline-start]:**:[[data-size=sm]_input]:ps-1.5 has-data-[align=inline-end]:**:[[data-size=sm]_input]:pe-1.5 *:[[data-slot=input-control],[data-slot=textarea-control]]:contents *:[[data-slot=input-control],[data-slot=textarea-control]]:before:hidden has-[[data-align=block-start],[data-align=block-end]]:**:[input]:h-auto has-data-[align=inline-start]:**:[input]:ps-2 has-data-[align=inline-end]:**:[input]:pe-2 has-data-[align=block-end]:**:[input]:pt-1.5 has-data-[align=block-start]:**:[input]:pb-1.5 **:[textarea]:min-h-20.5 **:[textarea]:resize-none **:[textarea]:py-[calc(--spacing(3)-1px)] **:[textarea]:max-sm:min-h-23.5 **:[textarea_button]:rounded-[calc(var(--radius-md)-1px)]",
818
+ className
819
+ ),
820
+ "data-slot": "input-group",
821
+ role: "group",
822
+ ...props
823
+ }
824
+ )
825
+ );
826
+ }
827
+ var inputGroupAddonVariants = cva(
828
+ "[&_svg]:-mx-0.5 flex h-auto cursor-text select-none items-center justify-center gap-2 leading-none [&>kbd]:rounded-[calc(var(--radius)-5px)] in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4.5 sm:in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4 not-has-[button]:**:[svg:not([class*='opacity-'])]:opacity-80",
829
+ {
830
+ defaultVariants: {
831
+ align: "inline-start"
832
+ },
833
+ variants: {
834
+ align: {
835
+ "block-end": "order-last w-full justify-start px-[calc(--spacing(3)-1px)] pb-[calc(--spacing(3)-1px)] [.border-t]:pt-[calc(--spacing(3)-1px)] [[data-size=sm]+&]:px-[calc(--spacing(2.5)-1px)]",
836
+ "block-start": "order-first w-full justify-start px-[calc(--spacing(3)-1px)] pt-[calc(--spacing(3)-1px)] [.border-b]:pb-[calc(--spacing(3)-1px)] [[data-size=sm]+&]:px-[calc(--spacing(2.5)-1px)]",
837
+ "inline-end": "has-[>:last-child[data-slot=badge]]:-me-1.5 has-[>button]:-me-2 order-last pe-[calc(--spacing(3)-1px)] has-[>kbd:last-child]:me-[-0.35rem] [[data-size=sm]+&]:pe-[calc(--spacing(2.5)-1px)]",
838
+ "inline-start": "has-[>:last-child[data-slot=badge]]:-ms-1.5 has-[>button]:-ms-2 order-first ps-[calc(--spacing(3)-1px)] has-[>kbd:last-child]:ms-[-0.35rem] [[data-size=sm]+&]:ps-[calc(--spacing(2.5)-1px)]"
839
+ }
840
+ }
841
+ }
842
+ );
843
+ function InputGroupAddon({
844
+ className,
845
+ align = "inline-start",
846
+ ...props
847
+ }) {
848
+ return (
849
+ // biome-ignore lint/a11y/noStaticElementInteractions: Imported from library
850
+ /* @__PURE__ */ jsx(
851
+ "div",
852
+ {
853
+ className: cn(inputGroupAddonVariants({ align }), className),
854
+ "data-align": align,
855
+ "data-slot": "input-group-addon",
856
+ onMouseDown: (e) => {
857
+ const target = e.target;
858
+ const isInteractive = target.closest(
859
+ "button, a, input, select, textarea, [role='button'], [role='combobox'], [role='listbox'], [data-slot='select-trigger']"
860
+ );
861
+ if (isInteractive) return;
862
+ e.preventDefault();
863
+ const parent = e.currentTarget.parentElement;
864
+ const input = parent?.querySelector("input, textarea");
865
+ if (input && !parent?.querySelector("input:focus, textarea:focus")) {
866
+ input.focus();
867
+ }
868
+ },
869
+ ...props
870
+ }
871
+ )
872
+ );
873
+ }
874
+ function InputGroupText({ className, ...props }) {
875
+ return /* @__PURE__ */ jsx(
876
+ "span",
877
+ {
878
+ className: cn(
879
+ "[&_svg]:-mx-0.5 line-clamp-1 flex items-center gap-2 text-muted-foreground leading-none in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4.5 sm:in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
880
+ className
881
+ ),
882
+ ...props
883
+ }
884
+ );
885
+ }
886
+ function InputGroupInput({ className, ...props }) {
887
+ return /* @__PURE__ */ jsx(Input, { className, unstyled: true, ...props });
888
+ }
889
+ function InputGroupTextarea({ className, ...props }) {
890
+ return /* @__PURE__ */ jsx(Textarea, { className, unstyled: true, ...props });
891
+ }
892
+
893
+ export { Button, Calendar, Checkbox, CheckboxGroup, Field, FieldControl, FieldDescription, FieldError, FieldGroup, FieldItem, FieldLabel, FieldValidity, Input, InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, InputGroupTextarea, Label, NumberField, NumberFieldDecrement, NumberFieldGroup, NumberFieldIncrement, NumberFieldInput, NumberFieldScrubArea, Popover, PopoverClose, PopoverCreateHandle, PopoverDescription, PopoverPopup, PopoverTitle, PopoverTrigger, Select, SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectSeparator, SelectTrigger, SelectValue, SpinnerOnDemand, Textarea, buttonVariants, cn };
894
+ //# sourceMappingURL=chunk-2HQPCV2L.js.map
895
+ //# sourceMappingURL=chunk-2HQPCV2L.js.map