@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.
- package/dist/chunk-2HQPCV2L.js +895 -0
- package/dist/chunk-2HQPCV2L.js.map +1 -0
- package/dist/form.js +10 -4861
- package/dist/form.js.map +1 -1
- package/dist/index.js +8428 -80599
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-HDGMSYQS.js +0 -26461
- package/dist/chunk-HDGMSYQS.js.map +0 -1
- package/dist/chunk-PR4QN5HX.js +0 -39
- package/dist/chunk-PR4QN5HX.js.map +0 -1
- package/dist/qr-code-styling-3Y6LZH6V.js +0 -1123
- package/dist/qr-code-styling-3Y6LZH6V.js.map +0 -1
|
@@ -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
|