@rock.star/ui 1.1.2 → 1.1.6
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/icon/index.js +5 -9
- package/dist/icon/index.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +906 -597
- package/dist/index.js.map +1 -1
- package/dist/lib/index.d.ts +14 -5
- package/dist/lib/index.js +41 -48
- package/dist/lib/index.js.map +1 -1
- package/dist/loader.css +93 -0
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.js +680 -602
- package/dist/ui/index.js.map +1 -1
- package/package.json +4 -5
- package/dist/utils-Cbsgs0XP.d.ts +0 -5
package/dist/ui/index.js
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
// src/ui/accordion.tsx
|
|
2
2
|
import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
|
|
3
|
-
|
|
4
|
-
// src/lib/utils.ts
|
|
5
|
-
import { clsx } from "clsx";
|
|
6
|
-
import { twMerge } from "tailwind-merge";
|
|
7
|
-
function cn(...inputs) {
|
|
8
|
-
return twMerge(clsx(inputs));
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// src/ui/accordion.tsx
|
|
3
|
+
import { cn } from "cn";
|
|
12
4
|
import { ChevronDown, ChevronUp } from "@gravity-ui/icons";
|
|
13
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
6
|
function Accordion({ className, ...props }) {
|
|
@@ -100,6 +92,7 @@ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog
|
|
|
100
92
|
// src/ui/button.tsx
|
|
101
93
|
import { Button as ButtonPrimitive } from "@base-ui/react/button";
|
|
102
94
|
import { cva } from "class-variance-authority";
|
|
95
|
+
import { cn as cn2 } from "cn";
|
|
103
96
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
104
97
|
var buttonVariants = cva(
|
|
105
98
|
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,opacity,transform] duration-150 ease-[var(--ease-out)] outline-none select-none motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:opacity-70 [&_svg:not([class*='size-'])]:size-4",
|
|
@@ -141,13 +134,14 @@ function Button({
|
|
|
141
134
|
ButtonPrimitive,
|
|
142
135
|
{
|
|
143
136
|
"data-slot": "button",
|
|
144
|
-
className:
|
|
137
|
+
className: cn2(buttonVariants({ variant, size, className })),
|
|
145
138
|
...props
|
|
146
139
|
}
|
|
147
140
|
);
|
|
148
141
|
}
|
|
149
142
|
|
|
150
143
|
// src/ui/alert-dialog.tsx
|
|
144
|
+
import { cn as cn3 } from "cn";
|
|
151
145
|
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
152
146
|
function AlertDialog({ ...props }) {
|
|
153
147
|
return /* @__PURE__ */ jsx3(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
@@ -166,7 +160,7 @@ function AlertDialogOverlay({
|
|
|
166
160
|
AlertDialogPrimitive.Backdrop,
|
|
167
161
|
{
|
|
168
162
|
"data-slot": "alert-dialog-overlay",
|
|
169
|
-
className:
|
|
163
|
+
className: cn3(
|
|
170
164
|
"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
171
165
|
className
|
|
172
166
|
),
|
|
@@ -186,7 +180,7 @@ function AlertDialogContent({
|
|
|
186
180
|
{
|
|
187
181
|
"data-slot": "alert-dialog-content",
|
|
188
182
|
"data-size": size,
|
|
189
|
-
className:
|
|
183
|
+
className: cn3(
|
|
190
184
|
"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
191
185
|
className
|
|
192
186
|
),
|
|
@@ -203,7 +197,7 @@ function AlertDialogHeader({
|
|
|
203
197
|
"div",
|
|
204
198
|
{
|
|
205
199
|
"data-slot": "alert-dialog-header",
|
|
206
|
-
className:
|
|
200
|
+
className: cn3(
|
|
207
201
|
"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
|
|
208
202
|
className
|
|
209
203
|
),
|
|
@@ -219,7 +213,7 @@ function AlertDialogFooter({
|
|
|
219
213
|
"div",
|
|
220
214
|
{
|
|
221
215
|
"data-slot": "alert-dialog-footer",
|
|
222
|
-
className:
|
|
216
|
+
className: cn3(
|
|
223
217
|
"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
|
|
224
218
|
className
|
|
225
219
|
),
|
|
@@ -235,7 +229,7 @@ function AlertDialogMedia({
|
|
|
235
229
|
"div",
|
|
236
230
|
{
|
|
237
231
|
"data-slot": "alert-dialog-media",
|
|
238
|
-
className:
|
|
232
|
+
className: cn3(
|
|
239
233
|
"mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6",
|
|
240
234
|
className
|
|
241
235
|
),
|
|
@@ -251,7 +245,7 @@ function AlertDialogTitle({
|
|
|
251
245
|
AlertDialogPrimitive.Title,
|
|
252
246
|
{
|
|
253
247
|
"data-slot": "alert-dialog-title",
|
|
254
|
-
className:
|
|
248
|
+
className: cn3(
|
|
255
249
|
"text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
|
|
256
250
|
className
|
|
257
251
|
),
|
|
@@ -267,7 +261,7 @@ function AlertDialogDescription({
|
|
|
267
261
|
AlertDialogPrimitive.Description,
|
|
268
262
|
{
|
|
269
263
|
"data-slot": "alert-dialog-description",
|
|
270
|
-
className:
|
|
264
|
+
className: cn3(
|
|
271
265
|
"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
272
266
|
className
|
|
273
267
|
),
|
|
@@ -283,7 +277,7 @@ function AlertDialogAction({
|
|
|
283
277
|
Button,
|
|
284
278
|
{
|
|
285
279
|
"data-slot": "alert-dialog-action",
|
|
286
|
-
className:
|
|
280
|
+
className: cn3(className),
|
|
287
281
|
...props
|
|
288
282
|
}
|
|
289
283
|
);
|
|
@@ -298,7 +292,7 @@ function AlertDialogCancel({
|
|
|
298
292
|
AlertDialogPrimitive.Close,
|
|
299
293
|
{
|
|
300
294
|
"data-slot": "alert-dialog-cancel",
|
|
301
|
-
className:
|
|
295
|
+
className: cn3(className),
|
|
302
296
|
render: /* @__PURE__ */ jsx3(Button, { variant, size }),
|
|
303
297
|
...props
|
|
304
298
|
}
|
|
@@ -310,6 +304,7 @@ import { AnimatePresence } from "motion/react";
|
|
|
310
304
|
import { useState } from "react";
|
|
311
305
|
|
|
312
306
|
// src/ui/apple/english.tsx
|
|
307
|
+
import { cn as cn4 } from "cn";
|
|
313
308
|
import { motion } from "motion/react";
|
|
314
309
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
315
310
|
var initialProps = {
|
|
@@ -330,7 +325,7 @@ function AppleHelloEffectEnglish({
|
|
|
330
325
|
return /* @__PURE__ */ jsxs3(
|
|
331
326
|
motion.svg,
|
|
332
327
|
{
|
|
333
|
-
className:
|
|
328
|
+
className: cn4("h-20", className),
|
|
334
329
|
xmlns: "http://www.w3.org/2000/svg",
|
|
335
330
|
viewBox: "0 0 638 200",
|
|
336
331
|
fill: "none",
|
|
@@ -378,6 +373,7 @@ function AppleHelloEffectEnglish({
|
|
|
378
373
|
|
|
379
374
|
// src/ui/apple/hindi.tsx
|
|
380
375
|
import { motion as motion2 } from "motion/react";
|
|
376
|
+
import { cn as cn5 } from "cn";
|
|
381
377
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
382
378
|
var initialProps2 = {
|
|
383
379
|
pathLength: 0,
|
|
@@ -397,7 +393,7 @@ function AppleHelloEffectHindi({
|
|
|
397
393
|
return /* @__PURE__ */ jsxs4(
|
|
398
394
|
motion2.svg,
|
|
399
395
|
{
|
|
400
|
-
className:
|
|
396
|
+
className: cn5("h-20", className),
|
|
401
397
|
xmlns: "http://www.w3.org/2000/svg",
|
|
402
398
|
viewBox: "0 0 605 273",
|
|
403
399
|
fill: "none",
|
|
@@ -557,6 +553,7 @@ function AppleHelloEffectHindi({
|
|
|
557
553
|
|
|
558
554
|
// src/ui/apple/spanish.tsx
|
|
559
555
|
import { motion as motion3 } from "motion/react";
|
|
556
|
+
import { cn as cn6 } from "cn";
|
|
560
557
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
561
558
|
var initialProps3 = {
|
|
562
559
|
pathLength: 0,
|
|
@@ -576,7 +573,7 @@ function AppleHelloEffectSpanish({
|
|
|
576
573
|
return /* @__PURE__ */ jsxs5(
|
|
577
574
|
motion3.svg,
|
|
578
575
|
{
|
|
579
|
-
className:
|
|
576
|
+
className: cn6("h-20", className),
|
|
580
577
|
xmlns: "http://www.w3.org/2000/svg",
|
|
581
578
|
viewBox: "0 0 562 200",
|
|
582
579
|
fill: "none",
|
|
@@ -702,11 +699,13 @@ function Apple() {
|
|
|
702
699
|
import * as Ariakit from "@ariakit/react";
|
|
703
700
|
|
|
704
701
|
// src/ui/autocomplete.tsx
|
|
702
|
+
import { cn as cn9 } from "cn";
|
|
705
703
|
import { Autocomplete as AutocompletePrimitive } from "@base-ui/react/autocomplete";
|
|
706
704
|
import { ChevronsExpandVertical, Xmark } from "@gravity-ui/icons";
|
|
707
705
|
|
|
708
706
|
// src/ui/input.tsx
|
|
709
707
|
import { Input as InputPrimitive } from "@base-ui/react/input";
|
|
708
|
+
import { cn as cn7 } from "cn";
|
|
710
709
|
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
711
710
|
function Input({
|
|
712
711
|
className,
|
|
@@ -726,7 +725,7 @@ function Input({
|
|
|
726
725
|
event.currentTarget.blur();
|
|
727
726
|
onWheel?.(event);
|
|
728
727
|
} : onWheel,
|
|
729
|
-
className:
|
|
728
|
+
className: cn7(
|
|
730
729
|
"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
731
730
|
isNumberInput && "[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none",
|
|
732
731
|
className
|
|
@@ -738,6 +737,7 @@ function Input({
|
|
|
738
737
|
|
|
739
738
|
// src/ui/scroll-area.tsx
|
|
740
739
|
import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
|
|
740
|
+
import { cn as cn8 } from "cn";
|
|
741
741
|
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
742
742
|
function ScrollArea({
|
|
743
743
|
className,
|
|
@@ -748,7 +748,7 @@ function ScrollArea({
|
|
|
748
748
|
ScrollAreaPrimitive.Root,
|
|
749
749
|
{
|
|
750
750
|
"data-slot": "scroll-area",
|
|
751
|
-
className:
|
|
751
|
+
className: cn8("relative", className),
|
|
752
752
|
...props,
|
|
753
753
|
children: [
|
|
754
754
|
/* @__PURE__ */ jsx9(
|
|
@@ -776,7 +776,7 @@ function ScrollBar({
|
|
|
776
776
|
"data-slot": "scroll-area-scrollbar",
|
|
777
777
|
"data-orientation": orientation,
|
|
778
778
|
orientation,
|
|
779
|
-
className:
|
|
779
|
+
className: cn8(
|
|
780
780
|
"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",
|
|
781
781
|
className
|
|
782
782
|
),
|
|
@@ -824,7 +824,7 @@ function AutocompleteInput({
|
|
|
824
824
|
/* @__PURE__ */ jsx10(
|
|
825
825
|
AutocompletePrimitive.Input,
|
|
826
826
|
{
|
|
827
|
-
className:
|
|
827
|
+
className: cn9(
|
|
828
828
|
startAddon && "*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)]",
|
|
829
829
|
sizeValue === "sm" ? "has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5" : "has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7",
|
|
830
830
|
className
|
|
@@ -837,7 +837,7 @@ function AutocompleteInput({
|
|
|
837
837
|
showTrigger && /* @__PURE__ */ jsx10(
|
|
838
838
|
AutocompleteTrigger,
|
|
839
839
|
{
|
|
840
|
-
className:
|
|
840
|
+
className: cn9(
|
|
841
841
|
"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-colors outline-none hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4",
|
|
842
842
|
sizeValue === "sm" ? "inset-e-0" : "inset-e-0.5"
|
|
843
843
|
),
|
|
@@ -848,7 +848,7 @@ function AutocompleteInput({
|
|
|
848
848
|
showClear && /* @__PURE__ */ jsx10(
|
|
849
849
|
AutocompleteClear,
|
|
850
850
|
{
|
|
851
|
-
className:
|
|
851
|
+
className: cn9(
|
|
852
852
|
"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-colors outline-none hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4",
|
|
853
853
|
sizeValue === "sm" ? "inset-e-0" : "inset-e-0.5"
|
|
854
854
|
),
|
|
@@ -884,7 +884,7 @@ function AutocompletePopup({
|
|
|
884
884
|
children: /* @__PURE__ */ jsx10(
|
|
885
885
|
"span",
|
|
886
886
|
{
|
|
887
|
-
className:
|
|
887
|
+
className: cn9(
|
|
888
888
|
"relative flex max-h-full max-w-(--available-width) min-w-(--anchor-width) origin-(--transform-origin) rounded-lg border bg-background shadow-lg/5 transition-[scale,opacity] not-dark:bg-clip-padding before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]",
|
|
889
889
|
className
|
|
890
890
|
),
|
|
@@ -910,7 +910,7 @@ function AutocompleteItem({
|
|
|
910
910
|
return /* @__PURE__ */ jsx10(
|
|
911
911
|
AutocompletePrimitive.Item,
|
|
912
912
|
{
|
|
913
|
-
className:
|
|
913
|
+
className: cn9(
|
|
914
914
|
"flex min-h-8 cursor-default items-center rounded-sm px-2 py-1 text-base outline-none select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground sm:min-h-7 sm:text-sm data-disabled:pointer-events-none data-disabled:opacity-64",
|
|
915
915
|
className
|
|
916
916
|
),
|
|
@@ -927,7 +927,7 @@ function AutocompleteSeparator({
|
|
|
927
927
|
return /* @__PURE__ */ jsx10(
|
|
928
928
|
AutocompletePrimitive.Separator,
|
|
929
929
|
{
|
|
930
|
-
className:
|
|
930
|
+
className: cn9("mx-2 my-1 h-px bg-border last:hidden", className),
|
|
931
931
|
"data-slot": "autocomplete-separator",
|
|
932
932
|
...props
|
|
933
933
|
}
|
|
@@ -940,7 +940,7 @@ function AutocompleteGroup({
|
|
|
940
940
|
return /* @__PURE__ */ jsx10(
|
|
941
941
|
AutocompletePrimitive.Group,
|
|
942
942
|
{
|
|
943
|
-
className:
|
|
943
|
+
className: cn9("[[role=group]+&]:mt-1.5", className),
|
|
944
944
|
"data-slot": "autocomplete-group",
|
|
945
945
|
...props
|
|
946
946
|
}
|
|
@@ -953,7 +953,7 @@ function AutocompleteGroupLabel({
|
|
|
953
953
|
return /* @__PURE__ */ jsx10(
|
|
954
954
|
AutocompletePrimitive.GroupLabel,
|
|
955
955
|
{
|
|
956
|
-
className:
|
|
956
|
+
className: cn9(
|
|
957
957
|
"px-2 py-1.5 text-xs font-medium text-muted-foreground",
|
|
958
958
|
className
|
|
959
959
|
),
|
|
@@ -969,7 +969,7 @@ function AutocompleteEmpty({
|
|
|
969
969
|
return /* @__PURE__ */ jsx10(
|
|
970
970
|
AutocompletePrimitive.Empty,
|
|
971
971
|
{
|
|
972
|
-
className:
|
|
972
|
+
className: cn9(
|
|
973
973
|
"text-center text-base text-muted-foreground not-empty:p-2 sm:text-sm",
|
|
974
974
|
className
|
|
975
975
|
),
|
|
@@ -999,7 +999,7 @@ function AutocompleteList({
|
|
|
999
999
|
return /* @__PURE__ */ jsx10(ScrollArea, { children: /* @__PURE__ */ jsx10(
|
|
1000
1000
|
AutocompletePrimitive.List,
|
|
1001
1001
|
{
|
|
1002
|
-
className:
|
|
1002
|
+
className: cn9(
|
|
1003
1003
|
"not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3",
|
|
1004
1004
|
className
|
|
1005
1005
|
),
|
|
@@ -1015,7 +1015,7 @@ function AutocompleteClear({
|
|
|
1015
1015
|
return /* @__PURE__ */ jsx10(
|
|
1016
1016
|
AutocompletePrimitive.Clear,
|
|
1017
1017
|
{
|
|
1018
|
-
className:
|
|
1018
|
+
className: cn9(
|
|
1019
1019
|
"absolute inset-e-0.5 top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 transition-[color,background-color,box-shadow,opacity] outline-none hover:opacity-100 sm:size-7 pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4",
|
|
1020
1020
|
className
|
|
1021
1021
|
),
|
|
@@ -1032,7 +1032,7 @@ function AutocompleteStatus({
|
|
|
1032
1032
|
return /* @__PURE__ */ jsx10(
|
|
1033
1033
|
AutocompletePrimitive.Status,
|
|
1034
1034
|
{
|
|
1035
|
-
className:
|
|
1035
|
+
className: cn9(
|
|
1036
1036
|
"px-3 py-2 text-xs font-medium text-muted-foreground empty:m-0 empty:p-0",
|
|
1037
1037
|
className
|
|
1038
1038
|
),
|
|
@@ -1061,6 +1061,7 @@ var useAutocompleteFilter = AutocompletePrimitive.useFilter;
|
|
|
1061
1061
|
|
|
1062
1062
|
// src/ui/avatar.tsx
|
|
1063
1063
|
import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
|
|
1064
|
+
import { cn as cn10 } from "cn";
|
|
1064
1065
|
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1065
1066
|
function Avatar({
|
|
1066
1067
|
className,
|
|
@@ -1072,7 +1073,7 @@ function Avatar({
|
|
|
1072
1073
|
{
|
|
1073
1074
|
"data-slot": "avatar",
|
|
1074
1075
|
"data-size": size,
|
|
1075
|
-
className:
|
|
1076
|
+
className: cn10(
|
|
1076
1077
|
"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
|
|
1077
1078
|
className
|
|
1078
1079
|
),
|
|
@@ -1085,7 +1086,7 @@ function AvatarImage({ className, ...props }) {
|
|
|
1085
1086
|
AvatarPrimitive.Image,
|
|
1086
1087
|
{
|
|
1087
1088
|
"data-slot": "avatar-image",
|
|
1088
|
-
className:
|
|
1089
|
+
className: cn10(
|
|
1089
1090
|
"aspect-square size-full rounded-full object-cover",
|
|
1090
1091
|
className
|
|
1091
1092
|
),
|
|
@@ -1101,7 +1102,7 @@ function AvatarFallback({
|
|
|
1101
1102
|
AvatarPrimitive.Fallback,
|
|
1102
1103
|
{
|
|
1103
1104
|
"data-slot": "avatar-fallback",
|
|
1104
|
-
className:
|
|
1105
|
+
className: cn10(
|
|
1105
1106
|
"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
|
|
1106
1107
|
className
|
|
1107
1108
|
),
|
|
@@ -1114,7 +1115,7 @@ function AvatarBadge({ className, ...props }) {
|
|
|
1114
1115
|
"span",
|
|
1115
1116
|
{
|
|
1116
1117
|
"data-slot": "avatar-badge",
|
|
1117
|
-
className:
|
|
1118
|
+
className: cn10(
|
|
1118
1119
|
"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none",
|
|
1119
1120
|
"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
|
|
1120
1121
|
"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
|
|
@@ -1130,7 +1131,7 @@ function AvatarGroup({ className, ...props }) {
|
|
|
1130
1131
|
"div",
|
|
1131
1132
|
{
|
|
1132
1133
|
"data-slot": "avatar-group",
|
|
1133
|
-
className:
|
|
1134
|
+
className: cn10(
|
|
1134
1135
|
"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
|
|
1135
1136
|
className
|
|
1136
1137
|
),
|
|
@@ -1146,7 +1147,7 @@ function AvatarGroupCount({
|
|
|
1146
1147
|
"div",
|
|
1147
1148
|
{
|
|
1148
1149
|
"data-slot": "avatar-group-count",
|
|
1149
|
-
className:
|
|
1150
|
+
className: cn10(
|
|
1150
1151
|
"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
|
|
1151
1152
|
className
|
|
1152
1153
|
),
|
|
@@ -1159,6 +1160,7 @@ function AvatarGroupCount({
|
|
|
1159
1160
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
1160
1161
|
import { useRender } from "@base-ui/react/use-render";
|
|
1161
1162
|
import { cva as cva2 } from "class-variance-authority";
|
|
1163
|
+
import { cn as cn11 } from "cn";
|
|
1162
1164
|
var badgeVariants = cva2(
|
|
1163
1165
|
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,opacity] duration-150 ease-[var(--ease-out)] motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
|
|
1164
1166
|
{
|
|
@@ -1187,7 +1189,7 @@ function Badge({
|
|
|
1187
1189
|
defaultTagName: "span",
|
|
1188
1190
|
props: mergeProps(
|
|
1189
1191
|
{
|
|
1190
|
-
className:
|
|
1192
|
+
className: cn11(badgeVariants({ variant }), className)
|
|
1191
1193
|
},
|
|
1192
1194
|
props
|
|
1193
1195
|
),
|
|
@@ -1201,7 +1203,7 @@ function Badge({
|
|
|
1201
1203
|
|
|
1202
1204
|
// src/ui/bridge.tsx
|
|
1203
1205
|
import { useRouter } from "next/navigation";
|
|
1204
|
-
import * as
|
|
1206
|
+
import * as React2 from "react";
|
|
1205
1207
|
|
|
1206
1208
|
// src/lib/capacitor.ts
|
|
1207
1209
|
function isNativeApp() {
|
|
@@ -1225,6 +1227,44 @@ function getNativeThemePlugin() {
|
|
|
1225
1227
|
return window.Capacitor?.Plugins?.NativeTheme ?? null;
|
|
1226
1228
|
}
|
|
1227
1229
|
|
|
1230
|
+
// src/lib/compose-refs.ts
|
|
1231
|
+
import * as React from "react";
|
|
1232
|
+
function setRef(ref, value) {
|
|
1233
|
+
if (typeof ref === "function") {
|
|
1234
|
+
return ref(value);
|
|
1235
|
+
}
|
|
1236
|
+
if (ref !== null && ref !== void 0) {
|
|
1237
|
+
ref.current = value;
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
function composeRefs(...refs) {
|
|
1241
|
+
return (node) => {
|
|
1242
|
+
let hasCleanup = false;
|
|
1243
|
+
const cleanups = refs.map((ref) => {
|
|
1244
|
+
const cleanup = setRef(ref, node);
|
|
1245
|
+
if (!hasCleanup && typeof cleanup === "function") {
|
|
1246
|
+
hasCleanup = true;
|
|
1247
|
+
}
|
|
1248
|
+
return cleanup;
|
|
1249
|
+
});
|
|
1250
|
+
if (hasCleanup) {
|
|
1251
|
+
return () => {
|
|
1252
|
+
for (let i = 0; i < cleanups.length; i++) {
|
|
1253
|
+
const cleanup = cleanups[i];
|
|
1254
|
+
if (typeof cleanup === "function") {
|
|
1255
|
+
cleanup();
|
|
1256
|
+
} else {
|
|
1257
|
+
setRef(refs[i], null);
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1262
|
+
};
|
|
1263
|
+
}
|
|
1264
|
+
function useComposedRefs(...refs) {
|
|
1265
|
+
return React.useCallback(composeRefs(...refs), refs);
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1228
1268
|
// src/ui/bridge.tsx
|
|
1229
1269
|
function getAppPath(value) {
|
|
1230
1270
|
try {
|
|
@@ -1271,7 +1311,7 @@ function syncNativeAppearance() {
|
|
|
1271
1311
|
}
|
|
1272
1312
|
function NativeAppBridge() {
|
|
1273
1313
|
const router = useRouter();
|
|
1274
|
-
|
|
1314
|
+
React2.useEffect(() => {
|
|
1275
1315
|
if (!isNativeApp()) return;
|
|
1276
1316
|
const root = document.documentElement;
|
|
1277
1317
|
const platform = getNativePlatform();
|
|
@@ -1325,13 +1365,14 @@ function NativeAppBridge() {
|
|
|
1325
1365
|
import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
|
|
1326
1366
|
import { useRender as useRender2 } from "@base-ui/react/use-render";
|
|
1327
1367
|
import { cva as cva3 } from "class-variance-authority";
|
|
1368
|
+
import { cn as cn12 } from "cn";
|
|
1328
1369
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1329
1370
|
function BubbleGroup({ className, ...props }) {
|
|
1330
1371
|
return /* @__PURE__ */ jsx12(
|
|
1331
1372
|
"div",
|
|
1332
1373
|
{
|
|
1333
1374
|
"data-slot": "bubble-group",
|
|
1334
|
-
className:
|
|
1375
|
+
className: cn12("flex min-w-0 flex-col gap-2", className),
|
|
1335
1376
|
...props
|
|
1336
1377
|
}
|
|
1337
1378
|
);
|
|
@@ -1367,7 +1408,7 @@ function Bubble({
|
|
|
1367
1408
|
"data-slot": "bubble",
|
|
1368
1409
|
"data-variant": variant,
|
|
1369
1410
|
"data-align": align,
|
|
1370
|
-
className:
|
|
1411
|
+
className: cn12(bubbleVariants({ variant }), className),
|
|
1371
1412
|
...props
|
|
1372
1413
|
}
|
|
1373
1414
|
);
|
|
@@ -1381,7 +1422,7 @@ function BubbleContent({
|
|
|
1381
1422
|
defaultTagName: "div",
|
|
1382
1423
|
props: mergeProps2(
|
|
1383
1424
|
{
|
|
1384
|
-
className:
|
|
1425
|
+
className: cn12(
|
|
1385
1426
|
"w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-3 [button,a]:focus-visible:ring-ring/50",
|
|
1386
1427
|
className
|
|
1387
1428
|
)
|
|
@@ -1425,7 +1466,7 @@ function BubbleReactions({
|
|
|
1425
1466
|
"data-slot": "bubble-reactions",
|
|
1426
1467
|
"data-align": align,
|
|
1427
1468
|
"data-side": side,
|
|
1428
|
-
className:
|
|
1469
|
+
className: cn12(bubbleReactionsVariants({ side, align }), className),
|
|
1429
1470
|
...props
|
|
1430
1471
|
}
|
|
1431
1472
|
);
|
|
@@ -1435,9 +1476,11 @@ function BubbleReactions({
|
|
|
1435
1476
|
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
1436
1477
|
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
1437
1478
|
import { cva as cva4 } from "class-variance-authority";
|
|
1479
|
+
import { cn as cn14 } from "cn";
|
|
1438
1480
|
|
|
1439
1481
|
// src/ui/separator.tsx
|
|
1440
1482
|
import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
|
|
1483
|
+
import { cn as cn13 } from "cn";
|
|
1441
1484
|
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
1442
1485
|
function Separator({
|
|
1443
1486
|
className,
|
|
@@ -1449,7 +1492,7 @@ function Separator({
|
|
|
1449
1492
|
{
|
|
1450
1493
|
"data-slot": "separator",
|
|
1451
1494
|
orientation,
|
|
1452
|
-
className:
|
|
1495
|
+
className: cn13(
|
|
1453
1496
|
"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
|
|
1454
1497
|
className
|
|
1455
1498
|
),
|
|
@@ -1485,7 +1528,7 @@ function ButtonGroup({
|
|
|
1485
1528
|
role: "group",
|
|
1486
1529
|
"data-slot": "button-group",
|
|
1487
1530
|
"data-orientation": orientation,
|
|
1488
|
-
className:
|
|
1531
|
+
className: cn14(buttonGroupVariants({ orientation }), className),
|
|
1489
1532
|
...props
|
|
1490
1533
|
}
|
|
1491
1534
|
);
|
|
@@ -1499,7 +1542,7 @@ function ButtonGroupText({
|
|
|
1499
1542
|
defaultTagName: "div",
|
|
1500
1543
|
props: mergeProps3(
|
|
1501
1544
|
{
|
|
1502
|
-
className:
|
|
1545
|
+
className: cn14(
|
|
1503
1546
|
"flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
1504
1547
|
className
|
|
1505
1548
|
)
|
|
@@ -1522,7 +1565,7 @@ function ButtonGroupSeparator({
|
|
|
1522
1565
|
{
|
|
1523
1566
|
"data-slot": "button-group-separator",
|
|
1524
1567
|
orientation,
|
|
1525
|
-
className:
|
|
1568
|
+
className: cn14(
|
|
1526
1569
|
"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
|
|
1527
1570
|
className
|
|
1528
1571
|
),
|
|
@@ -1532,16 +1575,17 @@ function ButtonGroupSeparator({
|
|
|
1532
1575
|
}
|
|
1533
1576
|
|
|
1534
1577
|
// src/ui/card.tsx
|
|
1535
|
-
import * as
|
|
1578
|
+
import * as React3 from "react";
|
|
1579
|
+
import { cn as cn15 } from "cn";
|
|
1536
1580
|
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
1537
|
-
var Card =
|
|
1581
|
+
var Card = React3.forwardRef(function Card2({ className, size = "default", ...props }, ref) {
|
|
1538
1582
|
return /* @__PURE__ */ jsx15(
|
|
1539
1583
|
"div",
|
|
1540
1584
|
{
|
|
1541
1585
|
ref,
|
|
1542
1586
|
"data-slot": "card",
|
|
1543
1587
|
"data-size": size,
|
|
1544
|
-
className:
|
|
1588
|
+
className: cn15(
|
|
1545
1589
|
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
|
|
1546
1590
|
className
|
|
1547
1591
|
),
|
|
@@ -1554,7 +1598,7 @@ function CardHeader({ className, ...props }) {
|
|
|
1554
1598
|
"div",
|
|
1555
1599
|
{
|
|
1556
1600
|
"data-slot": "card-header",
|
|
1557
|
-
className:
|
|
1601
|
+
className: cn15(
|
|
1558
1602
|
"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",
|
|
1559
1603
|
className
|
|
1560
1604
|
),
|
|
@@ -1567,7 +1611,7 @@ function CardTitle({ className, ...props }) {
|
|
|
1567
1611
|
"div",
|
|
1568
1612
|
{
|
|
1569
1613
|
"data-slot": "card-title",
|
|
1570
|
-
className:
|
|
1614
|
+
className: cn15(
|
|
1571
1615
|
"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
|
|
1572
1616
|
className
|
|
1573
1617
|
),
|
|
@@ -1580,7 +1624,7 @@ function CardDescription({ className, ...props }) {
|
|
|
1580
1624
|
"div",
|
|
1581
1625
|
{
|
|
1582
1626
|
"data-slot": "card-description",
|
|
1583
|
-
className:
|
|
1627
|
+
className: cn15("text-sm text-muted-foreground", className),
|
|
1584
1628
|
...props
|
|
1585
1629
|
}
|
|
1586
1630
|
);
|
|
@@ -1590,7 +1634,7 @@ function CardAction({ className, ...props }) {
|
|
|
1590
1634
|
"div",
|
|
1591
1635
|
{
|
|
1592
1636
|
"data-slot": "card-action",
|
|
1593
|
-
className:
|
|
1637
|
+
className: cn15(
|
|
1594
1638
|
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
1595
1639
|
className
|
|
1596
1640
|
),
|
|
@@ -1603,7 +1647,7 @@ function CardContent({ className, ...props }) {
|
|
|
1603
1647
|
"div",
|
|
1604
1648
|
{
|
|
1605
1649
|
"data-slot": "card-content",
|
|
1606
|
-
className:
|
|
1650
|
+
className: cn15("px-(--card-spacing)", className),
|
|
1607
1651
|
...props
|
|
1608
1652
|
}
|
|
1609
1653
|
);
|
|
@@ -1613,7 +1657,7 @@ function CardFooter({ className, ...props }) {
|
|
|
1613
1657
|
"div",
|
|
1614
1658
|
{
|
|
1615
1659
|
"data-slot": "card-footer",
|
|
1616
|
-
className:
|
|
1660
|
+
className: cn15(
|
|
1617
1661
|
"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)",
|
|
1618
1662
|
className
|
|
1619
1663
|
),
|
|
@@ -1625,11 +1669,12 @@ function CardFooter({ className, ...props }) {
|
|
|
1625
1669
|
// src/ui/carousel.tsx
|
|
1626
1670
|
import useEmblaCarousel from "embla-carousel-react";
|
|
1627
1671
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
1628
|
-
import * as
|
|
1672
|
+
import * as React4 from "react";
|
|
1673
|
+
import { cn as cn16 } from "cn";
|
|
1629
1674
|
import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1630
|
-
var CarouselContext =
|
|
1675
|
+
var CarouselContext = React4.createContext(null);
|
|
1631
1676
|
function useCarousel() {
|
|
1632
|
-
const context =
|
|
1677
|
+
const context = React4.useContext(CarouselContext);
|
|
1633
1678
|
if (!context) {
|
|
1634
1679
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
1635
1680
|
}
|
|
@@ -1651,20 +1696,20 @@ function Carousel({
|
|
|
1651
1696
|
},
|
|
1652
1697
|
plugins
|
|
1653
1698
|
);
|
|
1654
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
1655
|
-
const [canScrollNext, setCanScrollNext] =
|
|
1656
|
-
const onSelect =
|
|
1699
|
+
const [canScrollPrev, setCanScrollPrev] = React4.useState(false);
|
|
1700
|
+
const [canScrollNext, setCanScrollNext] = React4.useState(false);
|
|
1701
|
+
const onSelect = React4.useCallback((api2) => {
|
|
1657
1702
|
if (!api2) return;
|
|
1658
1703
|
setCanScrollPrev(api2.canScrollPrev());
|
|
1659
1704
|
setCanScrollNext(api2.canScrollNext());
|
|
1660
1705
|
}, []);
|
|
1661
|
-
const scrollPrev =
|
|
1706
|
+
const scrollPrev = React4.useCallback(() => {
|
|
1662
1707
|
api?.scrollPrev();
|
|
1663
1708
|
}, [api]);
|
|
1664
|
-
const scrollNext =
|
|
1709
|
+
const scrollNext = React4.useCallback(() => {
|
|
1665
1710
|
api?.scrollNext();
|
|
1666
1711
|
}, [api]);
|
|
1667
|
-
const handleKeyDown =
|
|
1712
|
+
const handleKeyDown = React4.useCallback(
|
|
1668
1713
|
(event) => {
|
|
1669
1714
|
if (event.key === "ArrowLeft") {
|
|
1670
1715
|
event.preventDefault();
|
|
@@ -1676,11 +1721,11 @@ function Carousel({
|
|
|
1676
1721
|
},
|
|
1677
1722
|
[scrollPrev, scrollNext]
|
|
1678
1723
|
);
|
|
1679
|
-
|
|
1724
|
+
React4.useEffect(() => {
|
|
1680
1725
|
if (!api || !setApi) return;
|
|
1681
1726
|
setApi(api);
|
|
1682
1727
|
}, [api, setApi]);
|
|
1683
|
-
|
|
1728
|
+
React4.useEffect(() => {
|
|
1684
1729
|
if (!api) return;
|
|
1685
1730
|
api.on("reInit", onSelect);
|
|
1686
1731
|
api.on("select", onSelect);
|
|
@@ -1707,7 +1752,7 @@ function Carousel({
|
|
|
1707
1752
|
"div",
|
|
1708
1753
|
{
|
|
1709
1754
|
onKeyDownCapture: handleKeyDown,
|
|
1710
|
-
className:
|
|
1755
|
+
className: cn16("relative", className),
|
|
1711
1756
|
role: "region",
|
|
1712
1757
|
"aria-roledescription": "carousel",
|
|
1713
1758
|
"data-slot": "carousel",
|
|
@@ -1729,7 +1774,7 @@ function CarouselContent({ className, ...props }) {
|
|
|
1729
1774
|
children: /* @__PURE__ */ jsx16(
|
|
1730
1775
|
"div",
|
|
1731
1776
|
{
|
|
1732
|
-
className:
|
|
1777
|
+
className: cn16(
|
|
1733
1778
|
"flex",
|
|
1734
1779
|
orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
|
|
1735
1780
|
className
|
|
@@ -1748,7 +1793,7 @@ function CarouselItem({ className, ...props }) {
|
|
|
1748
1793
|
role: "group",
|
|
1749
1794
|
"aria-roledescription": "slide",
|
|
1750
1795
|
"data-slot": "carousel-item",
|
|
1751
|
-
className:
|
|
1796
|
+
className: cn16(
|
|
1752
1797
|
"min-w-0 shrink-0 grow-0 basis-full",
|
|
1753
1798
|
orientation === "horizontal" ? "pl-4" : "pt-4",
|
|
1754
1799
|
className
|
|
@@ -1770,7 +1815,7 @@ function CarouselPrevious({
|
|
|
1770
1815
|
"data-slot": "carousel-previous",
|
|
1771
1816
|
variant,
|
|
1772
1817
|
size,
|
|
1773
|
-
className:
|
|
1818
|
+
className: cn16(
|
|
1774
1819
|
"absolute touch-manipulation rounded-full",
|
|
1775
1820
|
orientation === "horizontal" ? "top-1/2 left-2 z-10 -translate-y-1/2 sm:left-3" : "top-2 left-1/2 -translate-x-1/2 rotate-90",
|
|
1776
1821
|
className
|
|
@@ -1798,7 +1843,7 @@ function CarouselNext({
|
|
|
1798
1843
|
"data-slot": "carousel-next",
|
|
1799
1844
|
variant,
|
|
1800
1845
|
size,
|
|
1801
|
-
className:
|
|
1846
|
+
className: cn16(
|
|
1802
1847
|
"absolute touch-manipulation rounded-full",
|
|
1803
1848
|
orientation === "horizontal" ? "top-1/2 right-2 z-10 -translate-y-1/2 sm:right-3" : "bottom-2 left-1/2 -translate-x-1/2 rotate-90",
|
|
1804
1849
|
className
|
|
@@ -1815,14 +1860,15 @@ function CarouselNext({
|
|
|
1815
1860
|
}
|
|
1816
1861
|
|
|
1817
1862
|
// src/ui/chart.tsx
|
|
1818
|
-
import * as
|
|
1863
|
+
import * as React5 from "react";
|
|
1819
1864
|
import * as RechartsPrimitive from "recharts";
|
|
1865
|
+
import { cn as cn17 } from "cn";
|
|
1820
1866
|
import { Fragment, jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1821
1867
|
var THEMES = { light: "", dark: ".dark" };
|
|
1822
1868
|
var INITIAL_DIMENSION = { width: 320, height: 200 };
|
|
1823
|
-
var ChartContext =
|
|
1869
|
+
var ChartContext = React5.createContext(null);
|
|
1824
1870
|
function useChart() {
|
|
1825
|
-
const context =
|
|
1871
|
+
const context = React5.useContext(ChartContext);
|
|
1826
1872
|
if (!context) {
|
|
1827
1873
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
1828
1874
|
}
|
|
@@ -1836,14 +1882,14 @@ function ChartContainer({
|
|
|
1836
1882
|
initialDimension = INITIAL_DIMENSION,
|
|
1837
1883
|
...props
|
|
1838
1884
|
}) {
|
|
1839
|
-
const uniqueId =
|
|
1885
|
+
const uniqueId = React5.useId();
|
|
1840
1886
|
const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
|
|
1841
1887
|
return /* @__PURE__ */ jsx17(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs9(
|
|
1842
1888
|
"div",
|
|
1843
1889
|
{
|
|
1844
1890
|
"data-slot": "chart",
|
|
1845
1891
|
"data-chart": chartId,
|
|
1846
|
-
className:
|
|
1892
|
+
className: cn17(
|
|
1847
1893
|
"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
|
|
1848
1894
|
className
|
|
1849
1895
|
),
|
|
@@ -1903,7 +1949,7 @@ function ChartTooltipContent({
|
|
|
1903
1949
|
labelKey
|
|
1904
1950
|
}) {
|
|
1905
1951
|
const { config } = useChart();
|
|
1906
|
-
const tooltipLabel =
|
|
1952
|
+
const tooltipLabel = React5.useMemo(() => {
|
|
1907
1953
|
if (hideLabel || !payload?.length) {
|
|
1908
1954
|
return null;
|
|
1909
1955
|
}
|
|
@@ -1912,12 +1958,12 @@ function ChartTooltipContent({
|
|
|
1912
1958
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1913
1959
|
const value = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
|
|
1914
1960
|
if (labelFormatter) {
|
|
1915
|
-
return /* @__PURE__ */ jsx17("div", { className:
|
|
1961
|
+
return /* @__PURE__ */ jsx17("div", { className: cn17("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
1916
1962
|
}
|
|
1917
1963
|
if (!value) {
|
|
1918
1964
|
return null;
|
|
1919
1965
|
}
|
|
1920
|
-
return /* @__PURE__ */ jsx17("div", { className:
|
|
1966
|
+
return /* @__PURE__ */ jsx17("div", { className: cn17("font-medium", labelClassName), children: value });
|
|
1921
1967
|
}, [
|
|
1922
1968
|
label,
|
|
1923
1969
|
labelFormatter,
|
|
@@ -1934,7 +1980,7 @@ function ChartTooltipContent({
|
|
|
1934
1980
|
return /* @__PURE__ */ jsxs9(
|
|
1935
1981
|
"div",
|
|
1936
1982
|
{
|
|
1937
|
-
className:
|
|
1983
|
+
className: cn17(
|
|
1938
1984
|
"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
|
|
1939
1985
|
className
|
|
1940
1986
|
),
|
|
@@ -1947,7 +1993,7 @@ function ChartTooltipContent({
|
|
|
1947
1993
|
return /* @__PURE__ */ jsx17(
|
|
1948
1994
|
"div",
|
|
1949
1995
|
{
|
|
1950
|
-
className:
|
|
1996
|
+
className: cn17(
|
|
1951
1997
|
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
|
|
1952
1998
|
indicator === "dot" && "items-center"
|
|
1953
1999
|
),
|
|
@@ -1955,7 +2001,7 @@ function ChartTooltipContent({
|
|
|
1955
2001
|
itemConfig?.icon ? /* @__PURE__ */ jsx17(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx17(
|
|
1956
2002
|
"div",
|
|
1957
2003
|
{
|
|
1958
|
-
className:
|
|
2004
|
+
className: cn17(
|
|
1959
2005
|
"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
|
|
1960
2006
|
{
|
|
1961
2007
|
"h-2.5 w-2.5": indicator === "dot",
|
|
@@ -1973,7 +2019,7 @@ function ChartTooltipContent({
|
|
|
1973
2019
|
/* @__PURE__ */ jsxs9(
|
|
1974
2020
|
"div",
|
|
1975
2021
|
{
|
|
1976
|
-
className:
|
|
2022
|
+
className: cn17(
|
|
1977
2023
|
"flex flex-1 justify-between leading-none",
|
|
1978
2024
|
nestLabel ? "items-end" : "items-center"
|
|
1979
2025
|
),
|
|
@@ -2010,7 +2056,7 @@ function ChartLegendContent({
|
|
|
2010
2056
|
return /* @__PURE__ */ jsx17(
|
|
2011
2057
|
"div",
|
|
2012
2058
|
{
|
|
2013
|
-
className:
|
|
2059
|
+
className: cn17(
|
|
2014
2060
|
"flex items-center justify-center gap-4",
|
|
2015
2061
|
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
2016
2062
|
className
|
|
@@ -2021,7 +2067,7 @@ function ChartLegendContent({
|
|
|
2021
2067
|
return /* @__PURE__ */ jsxs9(
|
|
2022
2068
|
"div",
|
|
2023
2069
|
{
|
|
2024
|
-
className:
|
|
2070
|
+
className: cn17(
|
|
2025
2071
|
"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
|
|
2026
2072
|
),
|
|
2027
2073
|
children: [
|
|
@@ -2059,13 +2105,14 @@ function getPayloadConfigFromPayload(config, payload, key) {
|
|
|
2059
2105
|
|
|
2060
2106
|
// src/ui/checkbox.tsx
|
|
2061
2107
|
import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox";
|
|
2108
|
+
import { cn as cn18 } from "cn";
|
|
2062
2109
|
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
2063
2110
|
function Checkbox({ className, children, ...props }) {
|
|
2064
2111
|
return /* @__PURE__ */ jsx18(
|
|
2065
2112
|
CheckboxPrimitive.Root,
|
|
2066
2113
|
{
|
|
2067
2114
|
"data-slot": "checkbox",
|
|
2068
|
-
className:
|
|
2115
|
+
className: cn18(
|
|
2069
2116
|
"peer inline-flex size-5 shrink-0 items-center justify-center rounded border border-border bg-background text-primary outline-none transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out focus-visible:ring-2 focus-visible:ring-ring/50 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50 motion-reduce:transition-none",
|
|
2070
2117
|
className
|
|
2071
2118
|
),
|
|
@@ -2084,20 +2131,23 @@ function Checkbox({ className, children, ...props }) {
|
|
|
2084
2131
|
|
|
2085
2132
|
// src/ui/combobox.tsx
|
|
2086
2133
|
import { Combobox as ComboboxPrimitive } from "@base-ui/react";
|
|
2087
|
-
import * as
|
|
2134
|
+
import * as React6 from "react";
|
|
2135
|
+
import { cn as cn21 } from "cn";
|
|
2088
2136
|
import { Check, ChevronDown as ChevronDown2, Xmark as Xmark2 } from "@gravity-ui/icons";
|
|
2089
2137
|
|
|
2090
2138
|
// src/ui/input-group.tsx
|
|
2091
2139
|
import { cva as cva5 } from "class-variance-authority";
|
|
2140
|
+
import { cn as cn20 } from "cn";
|
|
2092
2141
|
|
|
2093
2142
|
// src/ui/textarea.tsx
|
|
2143
|
+
import { cn as cn19 } from "cn";
|
|
2094
2144
|
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
2095
2145
|
function Textarea({ className, ...props }) {
|
|
2096
2146
|
return /* @__PURE__ */ jsx19(
|
|
2097
2147
|
"textarea",
|
|
2098
2148
|
{
|
|
2099
2149
|
"data-slot": "textarea",
|
|
2100
|
-
className:
|
|
2150
|
+
className: cn19(
|
|
2101
2151
|
"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
2102
2152
|
className
|
|
2103
2153
|
),
|
|
@@ -2114,7 +2164,7 @@ function InputGroup({ className, ...props }) {
|
|
|
2114
2164
|
{
|
|
2115
2165
|
"data-slot": "input-group",
|
|
2116
2166
|
role: "group",
|
|
2117
|
-
className:
|
|
2167
|
+
className: cn20(
|
|
2118
2168
|
"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-2 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
|
|
2119
2169
|
className
|
|
2120
2170
|
),
|
|
@@ -2150,7 +2200,7 @@ function InputGroupAddon({
|
|
|
2150
2200
|
role: "group",
|
|
2151
2201
|
"data-slot": "input-group-addon",
|
|
2152
2202
|
"data-align": align,
|
|
2153
|
-
className:
|
|
2203
|
+
className: cn20(inputGroupAddonVariants({ align }), className),
|
|
2154
2204
|
onClick: (e) => {
|
|
2155
2205
|
if (e.target.closest("button")) {
|
|
2156
2206
|
return;
|
|
@@ -2194,7 +2244,7 @@ function InputGroupButton({
|
|
|
2194
2244
|
type,
|
|
2195
2245
|
"data-size": size,
|
|
2196
2246
|
variant,
|
|
2197
|
-
className:
|
|
2247
|
+
className: cn20(inputGroupButtonVariants({ size }), className),
|
|
2198
2248
|
...props
|
|
2199
2249
|
}
|
|
2200
2250
|
);
|
|
@@ -2203,7 +2253,7 @@ function InputGroupText({ className, ...props }) {
|
|
|
2203
2253
|
return /* @__PURE__ */ jsx20(
|
|
2204
2254
|
"span",
|
|
2205
2255
|
{
|
|
2206
|
-
className:
|
|
2256
|
+
className: cn20(
|
|
2207
2257
|
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
2208
2258
|
className
|
|
2209
2259
|
),
|
|
@@ -2219,7 +2269,7 @@ function InputGroupInput({
|
|
|
2219
2269
|
Input,
|
|
2220
2270
|
{
|
|
2221
2271
|
"data-slot": "input-group-control",
|
|
2222
|
-
className:
|
|
2272
|
+
className: cn20(
|
|
2223
2273
|
"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
|
|
2224
2274
|
className
|
|
2225
2275
|
),
|
|
@@ -2235,7 +2285,7 @@ function InputGroupTextarea({
|
|
|
2235
2285
|
Textarea,
|
|
2236
2286
|
{
|
|
2237
2287
|
"data-slot": "input-group-control",
|
|
2238
|
-
className:
|
|
2288
|
+
className: cn20(
|
|
2239
2289
|
"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
|
|
2240
2290
|
className
|
|
2241
2291
|
),
|
|
@@ -2259,7 +2309,7 @@ function ComboboxTrigger({
|
|
|
2259
2309
|
ComboboxPrimitive.Trigger,
|
|
2260
2310
|
{
|
|
2261
2311
|
"data-slot": "combobox-trigger",
|
|
2262
|
-
className:
|
|
2312
|
+
className: cn21("[&_svg:not([class*='size-'])]:size-4", className),
|
|
2263
2313
|
...props,
|
|
2264
2314
|
children: [
|
|
2265
2315
|
children,
|
|
@@ -2274,7 +2324,7 @@ function ComboboxClear({ className, ...props }) {
|
|
|
2274
2324
|
{
|
|
2275
2325
|
"data-slot": "combobox-clear",
|
|
2276
2326
|
render: /* @__PURE__ */ jsx21(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
|
|
2277
|
-
className:
|
|
2327
|
+
className: cn21(className),
|
|
2278
2328
|
...props,
|
|
2279
2329
|
children: /* @__PURE__ */ jsx21(Xmark2, { className: "pointer-events-none" })
|
|
2280
2330
|
}
|
|
@@ -2290,7 +2340,7 @@ function ComboboxInput({
|
|
|
2290
2340
|
endContent,
|
|
2291
2341
|
...props
|
|
2292
2342
|
}) {
|
|
2293
|
-
return /* @__PURE__ */ jsxs10(InputGroup, { className:
|
|
2343
|
+
return /* @__PURE__ */ jsxs10(InputGroup, { className: cn21("w-auto", className), children: [
|
|
2294
2344
|
/* @__PURE__ */ jsx21(
|
|
2295
2345
|
ComboboxPrimitive.Input,
|
|
2296
2346
|
{
|
|
@@ -2340,7 +2390,7 @@ function ComboboxContent({
|
|
|
2340
2390
|
{
|
|
2341
2391
|
"data-slot": "combobox-content",
|
|
2342
2392
|
"data-chips": !!anchor,
|
|
2343
|
-
className:
|
|
2393
|
+
className: cn21(
|
|
2344
2394
|
"group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg bg-background text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
2345
2395
|
className
|
|
2346
2396
|
),
|
|
@@ -2355,7 +2405,7 @@ function ComboboxList({ className, ...props }) {
|
|
|
2355
2405
|
ComboboxPrimitive.List,
|
|
2356
2406
|
{
|
|
2357
2407
|
"data-slot": "combobox-list",
|
|
2358
|
-
className:
|
|
2408
|
+
className: cn21(
|
|
2359
2409
|
"no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0",
|
|
2360
2410
|
className
|
|
2361
2411
|
),
|
|
@@ -2372,7 +2422,7 @@ function ComboboxItem({
|
|
|
2372
2422
|
ComboboxPrimitive.Item,
|
|
2373
2423
|
{
|
|
2374
2424
|
"data-slot": "combobox-item",
|
|
2375
|
-
className:
|
|
2425
|
+
className: cn21(
|
|
2376
2426
|
"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
2377
2427
|
className
|
|
2378
2428
|
),
|
|
@@ -2395,7 +2445,7 @@ function ComboboxGroup({ className, ...props }) {
|
|
|
2395
2445
|
ComboboxPrimitive.Group,
|
|
2396
2446
|
{
|
|
2397
2447
|
"data-slot": "combobox-group",
|
|
2398
|
-
className:
|
|
2448
|
+
className: cn21(className),
|
|
2399
2449
|
...props
|
|
2400
2450
|
}
|
|
2401
2451
|
);
|
|
@@ -2408,7 +2458,7 @@ function ComboboxLabel({
|
|
|
2408
2458
|
ComboboxPrimitive.GroupLabel,
|
|
2409
2459
|
{
|
|
2410
2460
|
"data-slot": "combobox-label",
|
|
2411
|
-
className:
|
|
2461
|
+
className: cn21("px-2 py-1.5 text-xs text-muted-foreground", className),
|
|
2412
2462
|
...props
|
|
2413
2463
|
}
|
|
2414
2464
|
);
|
|
@@ -2421,7 +2471,7 @@ function ComboboxEmpty({ className, ...props }) {
|
|
|
2421
2471
|
ComboboxPrimitive.Empty,
|
|
2422
2472
|
{
|
|
2423
2473
|
"data-slot": "combobox-empty",
|
|
2424
|
-
className:
|
|
2474
|
+
className: cn21(
|
|
2425
2475
|
"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex",
|
|
2426
2476
|
className
|
|
2427
2477
|
),
|
|
@@ -2437,7 +2487,7 @@ function ComboboxSeparator({
|
|
|
2437
2487
|
ComboboxPrimitive.Separator,
|
|
2438
2488
|
{
|
|
2439
2489
|
"data-slot": "combobox-separator",
|
|
2440
|
-
className:
|
|
2490
|
+
className: cn21("-mx-1 my-1 h-px bg-border", className),
|
|
2441
2491
|
...props
|
|
2442
2492
|
}
|
|
2443
2493
|
);
|
|
@@ -2450,7 +2500,7 @@ function ComboboxChips({
|
|
|
2450
2500
|
ComboboxPrimitive.Chips,
|
|
2451
2501
|
{
|
|
2452
2502
|
"data-slot": "combobox-chips",
|
|
2453
|
-
className:
|
|
2503
|
+
className: cn21(
|
|
2454
2504
|
"flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-2 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40",
|
|
2455
2505
|
className
|
|
2456
2506
|
),
|
|
@@ -2468,7 +2518,7 @@ function ComboboxChip({
|
|
|
2468
2518
|
ComboboxPrimitive.Chip,
|
|
2469
2519
|
{
|
|
2470
2520
|
"data-slot": "combobox-chip",
|
|
2471
|
-
className:
|
|
2521
|
+
className: cn21(
|
|
2472
2522
|
"flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0",
|
|
2473
2523
|
className
|
|
2474
2524
|
),
|
|
@@ -2496,21 +2546,23 @@ function ComboboxChipsInput({
|
|
|
2496
2546
|
ComboboxPrimitive.Input,
|
|
2497
2547
|
{
|
|
2498
2548
|
"data-slot": "combobox-chip-input",
|
|
2499
|
-
className:
|
|
2549
|
+
className: cn21("min-w-16 flex-1 outline-none", className),
|
|
2500
2550
|
...props
|
|
2501
2551
|
}
|
|
2502
2552
|
);
|
|
2503
2553
|
}
|
|
2504
2554
|
function useComboboxAnchor() {
|
|
2505
|
-
return
|
|
2555
|
+
return React6.useRef(null);
|
|
2506
2556
|
}
|
|
2507
2557
|
|
|
2508
2558
|
// src/ui/command.tsx
|
|
2509
2559
|
import { Command as CommandPrimitive } from "cmdk";
|
|
2560
|
+
import { cn as cn23 } from "cn";
|
|
2510
2561
|
import { Magnifier } from "@gravity-ui/icons";
|
|
2511
2562
|
|
|
2512
2563
|
// src/ui/dialog.tsx
|
|
2513
2564
|
import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
|
|
2565
|
+
import { cn as cn22 } from "cn";
|
|
2514
2566
|
import { Xmark as Xmark3 } from "@gravity-ui/icons";
|
|
2515
2567
|
import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2516
2568
|
function Dialog({ ...props }) {
|
|
@@ -2533,7 +2585,7 @@ function DialogOverlay({
|
|
|
2533
2585
|
DialogPrimitive.Backdrop,
|
|
2534
2586
|
{
|
|
2535
2587
|
"data-slot": "dialog-overlay",
|
|
2536
|
-
className:
|
|
2588
|
+
className: cn22(
|
|
2537
2589
|
"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
2538
2590
|
className
|
|
2539
2591
|
),
|
|
@@ -2553,7 +2605,7 @@ function DialogContent({
|
|
|
2553
2605
|
DialogPrimitive.Popup,
|
|
2554
2606
|
{
|
|
2555
2607
|
"data-slot": "dialog-content",
|
|
2556
|
-
className:
|
|
2608
|
+
className: cn22(
|
|
2557
2609
|
"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-card p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
2558
2610
|
className
|
|
2559
2611
|
),
|
|
@@ -2588,7 +2640,7 @@ function DialogHeader({ className, ...props }) {
|
|
|
2588
2640
|
"div",
|
|
2589
2641
|
{
|
|
2590
2642
|
"data-slot": "dialog-header",
|
|
2591
|
-
className:
|
|
2643
|
+
className: cn22("flex flex-col gap-2", className),
|
|
2592
2644
|
...props
|
|
2593
2645
|
}
|
|
2594
2646
|
);
|
|
@@ -2603,7 +2655,7 @@ function DialogFooter({
|
|
|
2603
2655
|
"div",
|
|
2604
2656
|
{
|
|
2605
2657
|
"data-slot": "dialog-footer",
|
|
2606
|
-
className:
|
|
2658
|
+
className: cn22(
|
|
2607
2659
|
"flex shrink-0 flex-col-reverse items-center justify-center gap-2 p-4 pt-0 sm:flex-row",
|
|
2608
2660
|
className
|
|
2609
2661
|
),
|
|
@@ -2620,7 +2672,7 @@ function DialogTitle({ className, ...props }) {
|
|
|
2620
2672
|
DialogPrimitive.Title,
|
|
2621
2673
|
{
|
|
2622
2674
|
"data-slot": "dialog-title",
|
|
2623
|
-
className:
|
|
2675
|
+
className: cn22("text-base leading-none font-medium", className),
|
|
2624
2676
|
...props
|
|
2625
2677
|
}
|
|
2626
2678
|
);
|
|
@@ -2633,7 +2685,7 @@ function DialogDescription({
|
|
|
2633
2685
|
DialogPrimitive.Description,
|
|
2634
2686
|
{
|
|
2635
2687
|
"data-slot": "dialog-description",
|
|
2636
|
-
className:
|
|
2688
|
+
className: cn22(
|
|
2637
2689
|
"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
2638
2690
|
className
|
|
2639
2691
|
),
|
|
@@ -2652,7 +2704,7 @@ function Command({
|
|
|
2652
2704
|
CommandPrimitive,
|
|
2653
2705
|
{
|
|
2654
2706
|
"data-slot": "command",
|
|
2655
|
-
className:
|
|
2707
|
+
className: cn23(
|
|
2656
2708
|
"flex size-full flex-col overflow-hidden rounded-xl! bg-background text-popover-foreground outline-none",
|
|
2657
2709
|
className
|
|
2658
2710
|
),
|
|
@@ -2676,7 +2728,7 @@ function CommandDialog({
|
|
|
2676
2728
|
/* @__PURE__ */ jsx23(
|
|
2677
2729
|
DialogContent,
|
|
2678
2730
|
{
|
|
2679
|
-
className:
|
|
2731
|
+
className: cn23(
|
|
2680
2732
|
"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0",
|
|
2681
2733
|
className
|
|
2682
2734
|
),
|
|
@@ -2697,7 +2749,7 @@ function CommandInput({
|
|
|
2697
2749
|
InputGroup,
|
|
2698
2750
|
{
|
|
2699
2751
|
"data-slot": "command-input-wrapper",
|
|
2700
|
-
className:
|
|
2752
|
+
className: cn23(
|
|
2701
2753
|
"h-8! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!",
|
|
2702
2754
|
className
|
|
2703
2755
|
),
|
|
@@ -2726,7 +2778,7 @@ function CommandList({
|
|
|
2726
2778
|
CommandPrimitive.List,
|
|
2727
2779
|
{
|
|
2728
2780
|
"data-slot": "command-list",
|
|
2729
|
-
className:
|
|
2781
|
+
className: cn23(
|
|
2730
2782
|
"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
|
|
2731
2783
|
className
|
|
2732
2784
|
),
|
|
@@ -2742,7 +2794,7 @@ function CommandEmpty({
|
|
|
2742
2794
|
CommandPrimitive.Empty,
|
|
2743
2795
|
{
|
|
2744
2796
|
"data-slot": "command-empty",
|
|
2745
|
-
className:
|
|
2797
|
+
className: cn23("py-6 text-center text-sm", className),
|
|
2746
2798
|
...props
|
|
2747
2799
|
}
|
|
2748
2800
|
);
|
|
@@ -2755,7 +2807,7 @@ function CommandGroup({
|
|
|
2755
2807
|
CommandPrimitive.Group,
|
|
2756
2808
|
{
|
|
2757
2809
|
"data-slot": "command-group",
|
|
2758
|
-
className:
|
|
2810
|
+
className: cn23(
|
|
2759
2811
|
"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",
|
|
2760
2812
|
className
|
|
2761
2813
|
),
|
|
@@ -2771,7 +2823,7 @@ function CommandSeparator({
|
|
|
2771
2823
|
CommandPrimitive.Separator,
|
|
2772
2824
|
{
|
|
2773
2825
|
"data-slot": "command-separator",
|
|
2774
|
-
className:
|
|
2826
|
+
className: cn23("-mx-1 h-px bg-border", className),
|
|
2775
2827
|
...props
|
|
2776
2828
|
}
|
|
2777
2829
|
);
|
|
@@ -2785,7 +2837,7 @@ function CommandItem({
|
|
|
2785
2837
|
CommandPrimitive.Item,
|
|
2786
2838
|
{
|
|
2787
2839
|
"data-slot": "command-item",
|
|
2788
|
-
className:
|
|
2840
|
+
className: cn23(
|
|
2789
2841
|
"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground",
|
|
2790
2842
|
className
|
|
2791
2843
|
),
|
|
@@ -2802,7 +2854,7 @@ function CommandShortcut({
|
|
|
2802
2854
|
"span",
|
|
2803
2855
|
{
|
|
2804
2856
|
"data-slot": "command-shortcut",
|
|
2805
|
-
className:
|
|
2857
|
+
className: cn23(
|
|
2806
2858
|
"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",
|
|
2807
2859
|
className
|
|
2808
2860
|
),
|
|
@@ -2812,7 +2864,8 @@ function CommandShortcut({
|
|
|
2812
2864
|
}
|
|
2813
2865
|
|
|
2814
2866
|
// src/ui/dashed.tsx
|
|
2815
|
-
import * as
|
|
2867
|
+
import * as React7 from "react";
|
|
2868
|
+
import { cn as cn24 } from "cn";
|
|
2816
2869
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2817
2870
|
function DashedSeparator({
|
|
2818
2871
|
className,
|
|
@@ -2820,9 +2873,9 @@ function DashedSeparator({
|
|
|
2820
2873
|
minimumGap = 8,
|
|
2821
2874
|
thickness = 1
|
|
2822
2875
|
}) {
|
|
2823
|
-
const containerRef =
|
|
2824
|
-
const [dashCount, setDashCount] =
|
|
2825
|
-
|
|
2876
|
+
const containerRef = React7.useRef(null);
|
|
2877
|
+
const [dashCount, setDashCount] = React7.useState(0);
|
|
2878
|
+
React7.useEffect(() => {
|
|
2826
2879
|
const element = containerRef.current;
|
|
2827
2880
|
if (!element) return;
|
|
2828
2881
|
const updateDashCount = () => {
|
|
@@ -2843,7 +2896,7 @@ function DashedSeparator({
|
|
|
2843
2896
|
{
|
|
2844
2897
|
ref: containerRef,
|
|
2845
2898
|
"aria-hidden": "true",
|
|
2846
|
-
className:
|
|
2899
|
+
className: cn24(
|
|
2847
2900
|
"flex w-full items-center justify-between overflow-hidden text-border",
|
|
2848
2901
|
className
|
|
2849
2902
|
),
|
|
@@ -2864,8 +2917,9 @@ function DashedSeparator({
|
|
|
2864
2917
|
}
|
|
2865
2918
|
|
|
2866
2919
|
// src/ui/dock.tsx
|
|
2920
|
+
import { cn as cn25 } from "cn";
|
|
2867
2921
|
import { motion as motion4 } from "motion/react";
|
|
2868
|
-
import * as
|
|
2922
|
+
import * as React8 from "react";
|
|
2869
2923
|
import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2870
2924
|
var floatingAnimation = {
|
|
2871
2925
|
initial: { y: 0 },
|
|
@@ -2878,7 +2932,7 @@ var floatingAnimation = {
|
|
|
2878
2932
|
}
|
|
2879
2933
|
}
|
|
2880
2934
|
};
|
|
2881
|
-
var DockIconButton =
|
|
2935
|
+
var DockIconButton = React8.forwardRef(
|
|
2882
2936
|
({ icon: Icon, label, onClick, className }, ref) => {
|
|
2883
2937
|
return /* @__PURE__ */ jsxs13(
|
|
2884
2938
|
motion4.button,
|
|
@@ -2887,7 +2941,7 @@ var DockIconButton = React7.forwardRef(
|
|
|
2887
2941
|
whileHover: { scale: 1.1, y: -2 },
|
|
2888
2942
|
whileTap: { scale: 0.95 },
|
|
2889
2943
|
onClick,
|
|
2890
|
-
className:
|
|
2944
|
+
className: cn25(
|
|
2891
2945
|
"group relative rounded-lg p-3",
|
|
2892
2946
|
"transition-colors hover:bg-secondary",
|
|
2893
2947
|
className
|
|
@@ -2897,7 +2951,7 @@ var DockIconButton = React7.forwardRef(
|
|
|
2897
2951
|
/* @__PURE__ */ jsx25(
|
|
2898
2952
|
"span",
|
|
2899
2953
|
{
|
|
2900
|
-
className:
|
|
2954
|
+
className: cn25(
|
|
2901
2955
|
"absolute -top-8 left-1/2 -translate-x-1/2",
|
|
2902
2956
|
"rounded px-2 py-1 text-xs",
|
|
2903
2957
|
"bg-background text-popover-foreground",
|
|
@@ -2913,13 +2967,13 @@ var DockIconButton = React7.forwardRef(
|
|
|
2913
2967
|
}
|
|
2914
2968
|
);
|
|
2915
2969
|
DockIconButton.displayName = "DockIconButton";
|
|
2916
|
-
var Dock =
|
|
2970
|
+
var Dock = React8.forwardRef(
|
|
2917
2971
|
({ items, className }, ref) => {
|
|
2918
2972
|
return /* @__PURE__ */ jsx25(
|
|
2919
2973
|
"div",
|
|
2920
2974
|
{
|
|
2921
2975
|
ref,
|
|
2922
|
-
className:
|
|
2976
|
+
className: cn25(
|
|
2923
2977
|
"flex h-64 w-full items-center justify-center p-2",
|
|
2924
2978
|
className
|
|
2925
2979
|
),
|
|
@@ -2929,7 +2983,7 @@ var Dock = React7.forwardRef(
|
|
|
2929
2983
|
initial: "initial",
|
|
2930
2984
|
animate: "animate",
|
|
2931
2985
|
variants: floatingAnimation,
|
|
2932
|
-
className:
|
|
2986
|
+
className: cn25(
|
|
2933
2987
|
"flex items-center gap-1 rounded-2xl p-2",
|
|
2934
2988
|
"border shadow-lg backdrop-blur-lg",
|
|
2935
2989
|
"border-border bg-background/90",
|
|
@@ -2946,11 +3000,12 @@ Dock.displayName = "Dock";
|
|
|
2946
3000
|
|
|
2947
3001
|
// src/ui/drawer.tsx
|
|
2948
3002
|
import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
|
|
2949
|
-
import * as
|
|
3003
|
+
import * as React9 from "react";
|
|
3004
|
+
import { cn as cn26 } from "cn";
|
|
2950
3005
|
import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2951
|
-
var DrawerContext =
|
|
3006
|
+
var DrawerContext = React9.createContext(null);
|
|
2952
3007
|
function useDrawer() {
|
|
2953
|
-
const context =
|
|
3008
|
+
const context = React9.useContext(DrawerContext);
|
|
2954
3009
|
if (!context) {
|
|
2955
3010
|
throw new Error("useDrawer must be used within a Drawer.");
|
|
2956
3011
|
}
|
|
@@ -2965,7 +3020,7 @@ function Drawer({
|
|
|
2965
3020
|
}) {
|
|
2966
3021
|
const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
|
|
2967
3022
|
const resolvedShowSwipeHandle = showSwipeHandle ?? (swipeDirection === "down" || swipeDirection === "up");
|
|
2968
|
-
const contextValue =
|
|
3023
|
+
const contextValue = React9.useMemo(
|
|
2969
3024
|
() => ({
|
|
2970
3025
|
hasSnapPoints,
|
|
2971
3026
|
modal,
|
|
@@ -3002,7 +3057,7 @@ function DrawerOverlay({
|
|
|
3002
3057
|
DrawerPrimitive.Backdrop,
|
|
3003
3058
|
{
|
|
3004
3059
|
"data-slot": "drawer-overlay",
|
|
3005
|
-
className:
|
|
3060
|
+
className: cn26(
|
|
3006
3061
|
"ease-out-fluid fixed inset-0 z-50 min-h-dvh bg-black/10 opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-backdrop-filter:backdrop-blur-xs supports-[-webkit-touch-callout:none]:absolute",
|
|
3007
3062
|
className
|
|
3008
3063
|
),
|
|
@@ -3019,7 +3074,7 @@ function DrawerSwipeHandle({
|
|
|
3019
3074
|
{
|
|
3020
3075
|
"data-slot": "drawer-swipe-handle",
|
|
3021
3076
|
"aria-hidden": "true",
|
|
3022
|
-
className:
|
|
3077
|
+
className: cn26(
|
|
3023
3078
|
"flex shrink-0 cursor-grab transition-opacity duration-200 group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-[swipe-axis=x]/drawer-popup:h-full group-data-[swipe-axis=x]/drawer-popup:w-3 group-data-[swipe-axis=x]/drawer-popup:items-center group-data-[swipe-axis=y]/drawer-popup:h-3 group-data-[swipe-axis=y]/drawer-popup:w-full group-data-[swipe-axis=y]/drawer-popup:justify-center group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=left]/drawer-popup:order-last group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:justify-end group-data-[swipe-direction=up]/drawer-popup:order-last group-data-[swipe-direction=up]/drawer-popup:items-start after:block after:shrink-0 after:rounded-full after:bg-muted group-data-[swipe-axis=x]/drawer-popup:after:h-24 group-data-[swipe-axis=x]/drawer-popup:after:w-1 group-data-[swipe-axis=y]/drawer-popup:after:h-1 group-data-[swipe-axis=y]/drawer-popup:after:w-20 active:cursor-grabbing",
|
|
3024
3079
|
className
|
|
3025
3080
|
),
|
|
@@ -3048,7 +3103,7 @@ function DrawerContent({
|
|
|
3048
3103
|
"data-slot": "drawer-popup",
|
|
3049
3104
|
"data-swipe-axis": swipeAxis,
|
|
3050
3105
|
"data-snap-points": hasSnapPoints ? "" : void 0,
|
|
3051
|
-
className:
|
|
3106
|
+
className: cn26(
|
|
3052
3107
|
// Base.
|
|
3053
3108
|
"group/drawer-popup pointer-events-auto fixed z-50 m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)_scale(var(--stack-scale))] flex-col rounded-4xl border bg-card text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [--drawer-bleed-background:transparent] [--drawer-inset:--spacing(2)] [interpolate-size:allow-keywords] max-md:pb-(--app-safe-bottom) md:pb-0 dark:border-border",
|
|
3054
3109
|
// Nested.
|
|
@@ -3082,7 +3137,7 @@ function DrawerContent({
|
|
|
3082
3137
|
DrawerPrimitive.Content,
|
|
3083
3138
|
{
|
|
3084
3139
|
"data-slot": "drawer-content",
|
|
3085
|
-
className:
|
|
3140
|
+
className: cn26(
|
|
3086
3141
|
"flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-[cubic-bezier(0.45,1.005,0,1.005)] select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none"
|
|
3087
3142
|
),
|
|
3088
3143
|
children
|
|
@@ -3100,7 +3155,7 @@ function DrawerHeader({ className, ...props }) {
|
|
|
3100
3155
|
"div",
|
|
3101
3156
|
{
|
|
3102
3157
|
"data-slot": "drawer-header",
|
|
3103
|
-
className:
|
|
3158
|
+
className: cn26(
|
|
3104
3159
|
"flex shrink-0 flex-col gap-0.5 p-4 pb-0 group-data-[swipe-axis=y]/drawer-popup:text-center md:gap-1.5 md:text-left",
|
|
3105
3160
|
className
|
|
3106
3161
|
),
|
|
@@ -3113,7 +3168,7 @@ function DrawerFooter({ className, ...props }) {
|
|
|
3113
3168
|
"div",
|
|
3114
3169
|
{
|
|
3115
3170
|
"data-slot": "drawer-footer",
|
|
3116
|
-
className:
|
|
3171
|
+
className: cn26("mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0", className),
|
|
3117
3172
|
...props
|
|
3118
3173
|
}
|
|
3119
3174
|
);
|
|
@@ -3123,7 +3178,7 @@ function DrawerTitle({ className, ...props }) {
|
|
|
3123
3178
|
DrawerPrimitive.Title,
|
|
3124
3179
|
{
|
|
3125
3180
|
"data-slot": "drawer-title",
|
|
3126
|
-
className:
|
|
3181
|
+
className: cn26(
|
|
3127
3182
|
"font-heading text-base font-medium text-foreground",
|
|
3128
3183
|
className
|
|
3129
3184
|
),
|
|
@@ -3139,7 +3194,7 @@ function DrawerDescription({
|
|
|
3139
3194
|
DrawerPrimitive.Description,
|
|
3140
3195
|
{
|
|
3141
3196
|
"data-slot": "drawer-description",
|
|
3142
|
-
className:
|
|
3197
|
+
className: cn26("text-sm text-balance text-muted-foreground", className),
|
|
3143
3198
|
...props
|
|
3144
3199
|
}
|
|
3145
3200
|
);
|
|
@@ -3147,6 +3202,7 @@ function DrawerDescription({
|
|
|
3147
3202
|
|
|
3148
3203
|
// src/ui/dropdown-menu.tsx
|
|
3149
3204
|
import { Menu as MenuPrimitive } from "@base-ui/react/menu";
|
|
3205
|
+
import { cn as cn27 } from "cn";
|
|
3150
3206
|
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
3151
3207
|
import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3152
3208
|
function DropdownMenu({ ...props }) {
|
|
@@ -3178,7 +3234,7 @@ function DropdownMenuContent({
|
|
|
3178
3234
|
MenuPrimitive.Popup,
|
|
3179
3235
|
{
|
|
3180
3236
|
"data-slot": "dropdown-menu-content",
|
|
3181
|
-
className:
|
|
3237
|
+
className: cn27(
|
|
3182
3238
|
"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-background p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
3183
3239
|
className
|
|
3184
3240
|
),
|
|
@@ -3201,7 +3257,7 @@ function DropdownMenuLabel({
|
|
|
3201
3257
|
{
|
|
3202
3258
|
"data-slot": "dropdown-menu-label",
|
|
3203
3259
|
"data-inset": inset,
|
|
3204
|
-
className:
|
|
3260
|
+
className: cn27(
|
|
3205
3261
|
"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",
|
|
3206
3262
|
className
|
|
3207
3263
|
),
|
|
@@ -3221,7 +3277,7 @@ function DropdownMenuItem({
|
|
|
3221
3277
|
"data-slot": "dropdown-menu-item",
|
|
3222
3278
|
"data-inset": inset,
|
|
3223
3279
|
"data-variant": variant,
|
|
3224
|
-
className:
|
|
3280
|
+
className: cn27(
|
|
3225
3281
|
"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
|
|
3226
3282
|
className
|
|
3227
3283
|
),
|
|
@@ -3243,7 +3299,7 @@ function DropdownMenuSubTrigger({
|
|
|
3243
3299
|
{
|
|
3244
3300
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
3245
3301
|
"data-inset": inset,
|
|
3246
|
-
className:
|
|
3302
|
+
className: cn27(
|
|
3247
3303
|
"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3248
3304
|
className
|
|
3249
3305
|
),
|
|
@@ -3267,7 +3323,7 @@ function DropdownMenuSubContent({
|
|
|
3267
3323
|
DropdownMenuContent,
|
|
3268
3324
|
{
|
|
3269
3325
|
"data-slot": "dropdown-menu-sub-content",
|
|
3270
|
-
className:
|
|
3326
|
+
className: cn27(
|
|
3271
3327
|
"w-auto min-w-[96px] rounded-lg bg-background p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
3272
3328
|
className
|
|
3273
3329
|
),
|
|
@@ -3291,7 +3347,7 @@ function DropdownMenuCheckboxItem({
|
|
|
3291
3347
|
{
|
|
3292
3348
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
3293
3349
|
"data-inset": inset,
|
|
3294
|
-
className:
|
|
3350
|
+
className: cn27(
|
|
3295
3351
|
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3296
3352
|
className
|
|
3297
3353
|
),
|
|
@@ -3331,7 +3387,7 @@ function DropdownMenuRadioItem({
|
|
|
3331
3387
|
{
|
|
3332
3388
|
"data-slot": "dropdown-menu-radio-item",
|
|
3333
3389
|
"data-inset": inset,
|
|
3334
|
-
className:
|
|
3390
|
+
className: cn27(
|
|
3335
3391
|
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3336
3392
|
className
|
|
3337
3393
|
),
|
|
@@ -3358,7 +3414,7 @@ function DropdownMenuSeparator({
|
|
|
3358
3414
|
MenuPrimitive.Separator,
|
|
3359
3415
|
{
|
|
3360
3416
|
"data-slot": "dropdown-menu-separator",
|
|
3361
|
-
className:
|
|
3417
|
+
className: cn27("-mx-1 my-1 h-px bg-border", className),
|
|
3362
3418
|
...props
|
|
3363
3419
|
}
|
|
3364
3420
|
);
|
|
@@ -3371,7 +3427,7 @@ function DropdownMenuShortcut({
|
|
|
3371
3427
|
"span",
|
|
3372
3428
|
{
|
|
3373
3429
|
"data-slot": "dropdown-menu-shortcut",
|
|
3374
|
-
className:
|
|
3430
|
+
className: cn27(
|
|
3375
3431
|
"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground",
|
|
3376
3432
|
className
|
|
3377
3433
|
),
|
|
@@ -3382,13 +3438,14 @@ function DropdownMenuShortcut({
|
|
|
3382
3438
|
|
|
3383
3439
|
// src/ui/empty.tsx
|
|
3384
3440
|
import { cva as cva6 } from "class-variance-authority";
|
|
3441
|
+
import { cn as cn28 } from "cn";
|
|
3385
3442
|
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
3386
3443
|
function Empty({ className, ...props }) {
|
|
3387
3444
|
return /* @__PURE__ */ jsx28(
|
|
3388
3445
|
"div",
|
|
3389
3446
|
{
|
|
3390
3447
|
"data-slot": "empty",
|
|
3391
|
-
className:
|
|
3448
|
+
className: cn28(
|
|
3392
3449
|
"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",
|
|
3393
3450
|
className
|
|
3394
3451
|
),
|
|
@@ -3401,7 +3458,7 @@ function EmptyHeader({ className, ...props }) {
|
|
|
3401
3458
|
"div",
|
|
3402
3459
|
{
|
|
3403
3460
|
"data-slot": "empty-header",
|
|
3404
|
-
className:
|
|
3461
|
+
className: cn28("flex max-w-sm flex-col items-center gap-2", className),
|
|
3405
3462
|
...props
|
|
3406
3463
|
}
|
|
3407
3464
|
);
|
|
@@ -3430,7 +3487,7 @@ function EmptyMedia({
|
|
|
3430
3487
|
{
|
|
3431
3488
|
"data-slot": "empty-icon",
|
|
3432
3489
|
"data-variant": variant,
|
|
3433
|
-
className:
|
|
3490
|
+
className: cn28(emptyMediaVariants({ variant, className })),
|
|
3434
3491
|
...props
|
|
3435
3492
|
}
|
|
3436
3493
|
);
|
|
@@ -3440,7 +3497,7 @@ function EmptyTitle({ className, ...props }) {
|
|
|
3440
3497
|
"div",
|
|
3441
3498
|
{
|
|
3442
3499
|
"data-slot": "empty-title",
|
|
3443
|
-
className:
|
|
3500
|
+
className: cn28("text-sm font-medium tracking-tight", className),
|
|
3444
3501
|
...props
|
|
3445
3502
|
}
|
|
3446
3503
|
);
|
|
@@ -3450,7 +3507,7 @@ function EmptyDescription({ className, ...props }) {
|
|
|
3450
3507
|
"div",
|
|
3451
3508
|
{
|
|
3452
3509
|
"data-slot": "empty-description",
|
|
3453
|
-
className:
|
|
3510
|
+
className: cn28(
|
|
3454
3511
|
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
3455
3512
|
className
|
|
3456
3513
|
),
|
|
@@ -3463,7 +3520,7 @@ function EmptyContent({ className, ...props }) {
|
|
|
3463
3520
|
"div",
|
|
3464
3521
|
{
|
|
3465
3522
|
"data-slot": "empty-content",
|
|
3466
|
-
className:
|
|
3523
|
+
className: cn28(
|
|
3467
3524
|
"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",
|
|
3468
3525
|
className
|
|
3469
3526
|
),
|
|
@@ -3472,6 +3529,51 @@ function EmptyContent({ className, ...props }) {
|
|
|
3472
3529
|
);
|
|
3473
3530
|
}
|
|
3474
3531
|
|
|
3532
|
+
// src/hooks/useMediaQuery.ts
|
|
3533
|
+
import { useEffect as useEffect4, useState as useState4 } from "react";
|
|
3534
|
+
function useMediaQuery(query) {
|
|
3535
|
+
const [matches, setMatches] = useState4(false);
|
|
3536
|
+
useEffect4(() => {
|
|
3537
|
+
const mediaQuery = window.matchMedia(query);
|
|
3538
|
+
const handleChange = () => setMatches(mediaQuery.matches);
|
|
3539
|
+
handleChange();
|
|
3540
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
3541
|
+
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
3542
|
+
}, [query]);
|
|
3543
|
+
return matches;
|
|
3544
|
+
}
|
|
3545
|
+
|
|
3546
|
+
// src/ui/farmer/div.tsx
|
|
3547
|
+
import { motion as motion5 } from "motion/react";
|
|
3548
|
+
import React10 from "react";
|
|
3549
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
3550
|
+
var AnimatedDiv = React10.forwardRef(
|
|
3551
|
+
({ variants, mobileVariants, className, children, infinity, ...motionProps }, ref) => {
|
|
3552
|
+
const isDesktop = useMediaQuery("(min-width: 768px)");
|
|
3553
|
+
const selectedVariants = !isDesktop && mobileVariants ? mobileVariants : variants;
|
|
3554
|
+
return /* @__PURE__ */ jsx29(
|
|
3555
|
+
motion5.div,
|
|
3556
|
+
{
|
|
3557
|
+
ref,
|
|
3558
|
+
layout: true,
|
|
3559
|
+
className,
|
|
3560
|
+
initial: "hidden",
|
|
3561
|
+
transition: {
|
|
3562
|
+
staggerChildren: 0.1,
|
|
3563
|
+
delayChildren: 0.2
|
|
3564
|
+
},
|
|
3565
|
+
variants: selectedVariants,
|
|
3566
|
+
viewport: { once: !infinity },
|
|
3567
|
+
whileInView: "visible",
|
|
3568
|
+
...motionProps,
|
|
3569
|
+
children
|
|
3570
|
+
}
|
|
3571
|
+
);
|
|
3572
|
+
}
|
|
3573
|
+
);
|
|
3574
|
+
AnimatedDiv.displayName = "AnimatedDiv";
|
|
3575
|
+
var div_default = AnimatedDiv;
|
|
3576
|
+
|
|
3475
3577
|
// src/ui/farmer/FramerMotionVariants.ts
|
|
3476
3578
|
var activityItemAnimation = {
|
|
3477
3579
|
hidden: {
|
|
@@ -3767,15 +3869,17 @@ var kanbanOrderCardLayoutTransition = {
|
|
|
3767
3869
|
// src/ui/field.tsx
|
|
3768
3870
|
import { cva as cva7 } from "class-variance-authority";
|
|
3769
3871
|
import { useMemo as useMemo3 } from "react";
|
|
3872
|
+
import { cn as cn30 } from "cn";
|
|
3770
3873
|
|
|
3771
3874
|
// src/ui/label.tsx
|
|
3772
|
-
import {
|
|
3875
|
+
import { cn as cn29 } from "cn";
|
|
3876
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
3773
3877
|
function Label({ className, ...props }) {
|
|
3774
|
-
return /* @__PURE__ */
|
|
3878
|
+
return /* @__PURE__ */ jsx30(
|
|
3775
3879
|
"label",
|
|
3776
3880
|
{
|
|
3777
3881
|
"data-slot": "label",
|
|
3778
|
-
className:
|
|
3882
|
+
className: cn29(
|
|
3779
3883
|
"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
3780
3884
|
className
|
|
3781
3885
|
),
|
|
@@ -3785,13 +3889,13 @@ function Label({ className, ...props }) {
|
|
|
3785
3889
|
}
|
|
3786
3890
|
|
|
3787
3891
|
// src/ui/field.tsx
|
|
3788
|
-
import { jsx as
|
|
3892
|
+
import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3789
3893
|
function FieldSet({ className, ...props }) {
|
|
3790
|
-
return /* @__PURE__ */
|
|
3894
|
+
return /* @__PURE__ */ jsx31(
|
|
3791
3895
|
"fieldset",
|
|
3792
3896
|
{
|
|
3793
3897
|
"data-slot": "field-set",
|
|
3794
|
-
className:
|
|
3898
|
+
className: cn30(
|
|
3795
3899
|
"flex flex-col gap-1 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
|
|
3796
3900
|
className
|
|
3797
3901
|
),
|
|
@@ -3804,12 +3908,12 @@ function FieldLegend({
|
|
|
3804
3908
|
variant = "legend",
|
|
3805
3909
|
...props
|
|
3806
3910
|
}) {
|
|
3807
|
-
return /* @__PURE__ */
|
|
3911
|
+
return /* @__PURE__ */ jsx31(
|
|
3808
3912
|
"legend",
|
|
3809
3913
|
{
|
|
3810
3914
|
"data-slot": "field-legend",
|
|
3811
3915
|
"data-variant": variant,
|
|
3812
|
-
className:
|
|
3916
|
+
className: cn30(
|
|
3813
3917
|
"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base",
|
|
3814
3918
|
className
|
|
3815
3919
|
),
|
|
@@ -3818,11 +3922,11 @@ function FieldLegend({
|
|
|
3818
3922
|
);
|
|
3819
3923
|
}
|
|
3820
3924
|
function FieldGroup({ className, ...props }) {
|
|
3821
|
-
return /* @__PURE__ */
|
|
3925
|
+
return /* @__PURE__ */ jsx31(
|
|
3822
3926
|
"div",
|
|
3823
3927
|
{
|
|
3824
3928
|
"data-slot": "field-group",
|
|
3825
|
-
className:
|
|
3929
|
+
className: cn30(
|
|
3826
3930
|
"group/field-group @container/field-group flex w-full flex-col gap-2 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
|
|
3827
3931
|
className
|
|
3828
3932
|
),
|
|
@@ -3850,23 +3954,23 @@ function Field({
|
|
|
3850
3954
|
orientation = "vertical",
|
|
3851
3955
|
...props
|
|
3852
3956
|
}) {
|
|
3853
|
-
return /* @__PURE__ */
|
|
3957
|
+
return /* @__PURE__ */ jsx31(
|
|
3854
3958
|
"div",
|
|
3855
3959
|
{
|
|
3856
3960
|
role: "group",
|
|
3857
3961
|
"data-slot": "field",
|
|
3858
3962
|
"data-orientation": orientation,
|
|
3859
|
-
className:
|
|
3963
|
+
className: cn30(fieldVariants({ orientation }), className),
|
|
3860
3964
|
...props
|
|
3861
3965
|
}
|
|
3862
3966
|
);
|
|
3863
3967
|
}
|
|
3864
3968
|
function FieldContent({ className, ...props }) {
|
|
3865
|
-
return /* @__PURE__ */
|
|
3969
|
+
return /* @__PURE__ */ jsx31(
|
|
3866
3970
|
"div",
|
|
3867
3971
|
{
|
|
3868
3972
|
"data-slot": "field-content",
|
|
3869
|
-
className:
|
|
3973
|
+
className: cn30(
|
|
3870
3974
|
"group/field-content flex flex-1 flex-col gap-0.5 leading-snug",
|
|
3871
3975
|
className
|
|
3872
3976
|
),
|
|
@@ -3878,11 +3982,11 @@ function FieldLabel({
|
|
|
3878
3982
|
className,
|
|
3879
3983
|
...props
|
|
3880
3984
|
}) {
|
|
3881
|
-
return /* @__PURE__ */
|
|
3985
|
+
return /* @__PURE__ */ jsx31(
|
|
3882
3986
|
Label,
|
|
3883
3987
|
{
|
|
3884
3988
|
"data-slot": "field-label",
|
|
3885
|
-
className:
|
|
3989
|
+
className: cn30(
|
|
3886
3990
|
"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10",
|
|
3887
3991
|
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
|
|
3888
3992
|
className
|
|
@@ -3892,11 +3996,11 @@ function FieldLabel({
|
|
|
3892
3996
|
);
|
|
3893
3997
|
}
|
|
3894
3998
|
function FieldTitle({ className, ...props }) {
|
|
3895
|
-
return /* @__PURE__ */
|
|
3999
|
+
return /* @__PURE__ */ jsx31(
|
|
3896
4000
|
"div",
|
|
3897
4001
|
{
|
|
3898
4002
|
"data-slot": "field-label",
|
|
3899
|
-
className:
|
|
4003
|
+
className: cn30(
|
|
3900
4004
|
"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50",
|
|
3901
4005
|
className
|
|
3902
4006
|
),
|
|
@@ -3905,11 +4009,11 @@ function FieldTitle({ className, ...props }) {
|
|
|
3905
4009
|
);
|
|
3906
4010
|
}
|
|
3907
4011
|
function FieldDescription({ className, ...props }) {
|
|
3908
|
-
return /* @__PURE__ */
|
|
4012
|
+
return /* @__PURE__ */ jsx31(
|
|
3909
4013
|
"p",
|
|
3910
4014
|
{
|
|
3911
4015
|
"data-slot": "field-description",
|
|
3912
|
-
className:
|
|
4016
|
+
className: cn30(
|
|
3913
4017
|
"text-left text-[10px] leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
|
|
3914
4018
|
"last:mt-0 nth-last-2:-mt-1",
|
|
3915
4019
|
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
@@ -3929,14 +4033,14 @@ function FieldSeparator({
|
|
|
3929
4033
|
{
|
|
3930
4034
|
"data-slot": "field-separator",
|
|
3931
4035
|
"data-content": !!children,
|
|
3932
|
-
className:
|
|
4036
|
+
className: cn30(
|
|
3933
4037
|
"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
|
|
3934
4038
|
className
|
|
3935
4039
|
),
|
|
3936
4040
|
...props,
|
|
3937
4041
|
children: [
|
|
3938
|
-
/* @__PURE__ */
|
|
3939
|
-
children && /* @__PURE__ */
|
|
4042
|
+
/* @__PURE__ */ jsx31(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
4043
|
+
children && /* @__PURE__ */ jsx31(
|
|
3940
4044
|
"span",
|
|
3941
4045
|
{
|
|
3942
4046
|
className: "relative mx-auto block w-fit px-2 text-muted-foreground",
|
|
@@ -3967,19 +4071,19 @@ function FieldError({
|
|
|
3967
4071
|
if (uniqueErrors?.length == 1) {
|
|
3968
4072
|
return uniqueErrors[0]?.message;
|
|
3969
4073
|
}
|
|
3970
|
-
return /* @__PURE__ */
|
|
3971
|
-
(error, index) => error?.message && /* @__PURE__ */
|
|
4074
|
+
return /* @__PURE__ */ jsx31("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
4075
|
+
(error, index) => error?.message && /* @__PURE__ */ jsx31("li", { children: error.message }, index)
|
|
3972
4076
|
) });
|
|
3973
4077
|
}, [children, errors]);
|
|
3974
4078
|
if (!content) {
|
|
3975
4079
|
return null;
|
|
3976
4080
|
}
|
|
3977
|
-
return /* @__PURE__ */
|
|
4081
|
+
return /* @__PURE__ */ jsx31(
|
|
3978
4082
|
"div",
|
|
3979
4083
|
{
|
|
3980
4084
|
role: "alert",
|
|
3981
4085
|
"data-slot": "field-error",
|
|
3982
|
-
className:
|
|
4086
|
+
className: cn30("text-sm font-normal text-destructive", className),
|
|
3983
4087
|
...props,
|
|
3984
4088
|
children: content
|
|
3985
4089
|
}
|
|
@@ -3988,8 +4092,9 @@ function FieldError({
|
|
|
3988
4092
|
|
|
3989
4093
|
// src/ui/image.tsx
|
|
3990
4094
|
import NextImage from "next/image";
|
|
3991
|
-
import { useCallback as
|
|
3992
|
-
import {
|
|
4095
|
+
import { useCallback as useCallback3, useState as useState5 } from "react";
|
|
4096
|
+
import { cn as cn31 } from "cn";
|
|
4097
|
+
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3993
4098
|
function srcValue(src) {
|
|
3994
4099
|
if (!src) return null;
|
|
3995
4100
|
if (typeof src === "string") return src;
|
|
@@ -4009,29 +4114,29 @@ function Image({
|
|
|
4009
4114
|
onLoad,
|
|
4010
4115
|
onError,
|
|
4011
4116
|
children,
|
|
4012
|
-
fallback = /* @__PURE__ */
|
|
4117
|
+
fallback = /* @__PURE__ */ jsx32(JellyMini, { mood: "curious", className: "size-full p-4" }),
|
|
4013
4118
|
...props
|
|
4014
4119
|
}) {
|
|
4015
4120
|
const currentSrc = srcValue(src);
|
|
4016
|
-
const [loadedSrc, setLoadedSrc] =
|
|
4017
|
-
const [failedSrc, setFailedSrc] =
|
|
4121
|
+
const [loadedSrc, setLoadedSrc] = useState5(null);
|
|
4122
|
+
const [failedSrc, setFailedSrc] = useState5(null);
|
|
4018
4123
|
const hasSource = Boolean(currentSrc);
|
|
4019
4124
|
const failed = hasSource && failedSrc === currentSrc;
|
|
4020
4125
|
const loaded = hasSource && loadedSrc === currentSrc && !failed;
|
|
4021
4126
|
const shouldPreload = preload ?? loading === "eager";
|
|
4022
4127
|
const imageLoading = shouldPreload ? "eager" : loading;
|
|
4023
|
-
const markLoaded =
|
|
4128
|
+
const markLoaded = useCallback3(() => {
|
|
4024
4129
|
if (!currentSrc) return;
|
|
4025
4130
|
setFailedSrc(null);
|
|
4026
4131
|
setLoadedSrc(currentSrc);
|
|
4027
4132
|
}, [currentSrc]);
|
|
4028
|
-
const markFailed =
|
|
4133
|
+
const markFailed = useCallback3(() => {
|
|
4029
4134
|
if (!currentSrc) return;
|
|
4030
4135
|
setFailedSrc(currentSrc);
|
|
4031
4136
|
}, [currentSrc]);
|
|
4032
|
-
return /* @__PURE__ */ jsxs17("section", { className:
|
|
4033
|
-
showSkeleton && !loaded && !failed && hasSource && /* @__PURE__ */
|
|
4034
|
-
hasSource && !failed ? /* @__PURE__ */
|
|
4137
|
+
return /* @__PURE__ */ jsxs17("section", { className: cn31("relative block overflow-hidden", wrapper), children: [
|
|
4138
|
+
showSkeleton && !loaded && !failed && hasSource && /* @__PURE__ */ jsx32(Skeleton, { className: "absolute inset-0 size-full" }),
|
|
4139
|
+
hasSource && !failed ? /* @__PURE__ */ jsx32(
|
|
4035
4140
|
NextImage,
|
|
4036
4141
|
{
|
|
4037
4142
|
...props,
|
|
@@ -4041,7 +4146,7 @@ function Image({
|
|
|
4041
4146
|
loading: imageLoading,
|
|
4042
4147
|
preload: shouldPreload,
|
|
4043
4148
|
fetchPriority: fetchPriority ?? (imageLoading === "eager" ? "high" : void 0),
|
|
4044
|
-
className:
|
|
4149
|
+
className: cn31(
|
|
4045
4150
|
"transition-opacity duration-200",
|
|
4046
4151
|
loaded ? "opacity-100" : "opacity-0",
|
|
4047
4152
|
className
|
|
@@ -4061,35 +4166,36 @@ function Image({
|
|
|
4061
4166
|
}
|
|
4062
4167
|
|
|
4063
4168
|
// src/ui/input-otp.tsx
|
|
4064
|
-
import * as
|
|
4169
|
+
import * as React11 from "react";
|
|
4065
4170
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
4171
|
+
import { cn as cn32 } from "cn";
|
|
4066
4172
|
import { MinusIcon } from "lucide-react";
|
|
4067
|
-
import { jsx as
|
|
4173
|
+
import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4068
4174
|
function InputOTP({
|
|
4069
4175
|
className,
|
|
4070
4176
|
containerClassName,
|
|
4071
4177
|
...props
|
|
4072
4178
|
}) {
|
|
4073
|
-
return /* @__PURE__ */
|
|
4179
|
+
return /* @__PURE__ */ jsx33(
|
|
4074
4180
|
OTPInput,
|
|
4075
4181
|
{
|
|
4076
4182
|
"data-slot": "input-otp",
|
|
4077
|
-
containerClassName:
|
|
4183
|
+
containerClassName: cn32(
|
|
4078
4184
|
"cn-input-otp flex items-center has-disabled:opacity-50",
|
|
4079
4185
|
containerClassName
|
|
4080
4186
|
),
|
|
4081
4187
|
spellCheck: false,
|
|
4082
|
-
className:
|
|
4188
|
+
className: cn32("disabled:cursor-not-allowed", className),
|
|
4083
4189
|
...props
|
|
4084
4190
|
}
|
|
4085
4191
|
);
|
|
4086
4192
|
}
|
|
4087
4193
|
function InputOTPGroup({ className, ...props }) {
|
|
4088
|
-
return /* @__PURE__ */
|
|
4194
|
+
return /* @__PURE__ */ jsx33(
|
|
4089
4195
|
"div",
|
|
4090
4196
|
{
|
|
4091
4197
|
"data-slot": "input-otp-group",
|
|
4092
|
-
className:
|
|
4198
|
+
className: cn32(
|
|
4093
4199
|
"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40",
|
|
4094
4200
|
className
|
|
4095
4201
|
),
|
|
@@ -4102,34 +4208,34 @@ function InputOTPSlot({
|
|
|
4102
4208
|
className,
|
|
4103
4209
|
...props
|
|
4104
4210
|
}) {
|
|
4105
|
-
const inputOTPContext =
|
|
4211
|
+
const inputOTPContext = React11.useContext(OTPInputContext);
|
|
4106
4212
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
4107
4213
|
return /* @__PURE__ */ jsxs18(
|
|
4108
4214
|
"div",
|
|
4109
4215
|
{
|
|
4110
4216
|
"data-slot": "input-otp-slot",
|
|
4111
4217
|
"data-active": isActive,
|
|
4112
|
-
className:
|
|
4218
|
+
className: cn32(
|
|
4113
4219
|
"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out outline-none motion-reduce:transition-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
|
|
4114
4220
|
className
|
|
4115
4221
|
),
|
|
4116
4222
|
...props,
|
|
4117
4223
|
children: [
|
|
4118
4224
|
char,
|
|
4119
|
-
hasFakeCaret && /* @__PURE__ */
|
|
4225
|
+
hasFakeCaret && /* @__PURE__ */ jsx33("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx33("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
|
|
4120
4226
|
]
|
|
4121
4227
|
}
|
|
4122
4228
|
);
|
|
4123
4229
|
}
|
|
4124
4230
|
function InputOTPSeparator({ ...props }) {
|
|
4125
|
-
return /* @__PURE__ */
|
|
4231
|
+
return /* @__PURE__ */ jsx33(
|
|
4126
4232
|
"div",
|
|
4127
4233
|
{
|
|
4128
4234
|
"data-slot": "input-otp-separator",
|
|
4129
4235
|
className: "flex items-center [&_svg:not([class*='size-'])]:size-4",
|
|
4130
4236
|
role: "separator",
|
|
4131
4237
|
...props,
|
|
4132
|
-
children: /* @__PURE__ */
|
|
4238
|
+
children: /* @__PURE__ */ jsx33(MinusIcon, {})
|
|
4133
4239
|
}
|
|
4134
4240
|
);
|
|
4135
4241
|
}
|
|
@@ -4138,14 +4244,15 @@ function InputOTPSeparator({ ...props }) {
|
|
|
4138
4244
|
import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
|
|
4139
4245
|
import { useRender as useRender4 } from "@base-ui/react/use-render";
|
|
4140
4246
|
import { cva as cva8 } from "class-variance-authority";
|
|
4141
|
-
import {
|
|
4247
|
+
import { cn as cn33 } from "cn";
|
|
4248
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
4142
4249
|
function ItemGroup({ className, ...props }) {
|
|
4143
|
-
return /* @__PURE__ */
|
|
4250
|
+
return /* @__PURE__ */ jsx34(
|
|
4144
4251
|
"div",
|
|
4145
4252
|
{
|
|
4146
4253
|
role: "list",
|
|
4147
4254
|
"data-slot": "item-group",
|
|
4148
|
-
className:
|
|
4255
|
+
className: cn33(
|
|
4149
4256
|
"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
|
|
4150
4257
|
className
|
|
4151
4258
|
),
|
|
@@ -4157,12 +4264,12 @@ function ItemSeparator({
|
|
|
4157
4264
|
className,
|
|
4158
4265
|
...props
|
|
4159
4266
|
}) {
|
|
4160
|
-
return /* @__PURE__ */
|
|
4267
|
+
return /* @__PURE__ */ jsx34(
|
|
4161
4268
|
Separator,
|
|
4162
4269
|
{
|
|
4163
4270
|
"data-slot": "item-separator",
|
|
4164
4271
|
orientation: "horizontal",
|
|
4165
|
-
className:
|
|
4272
|
+
className: cn33("my-2", className),
|
|
4166
4273
|
...props
|
|
4167
4274
|
}
|
|
4168
4275
|
);
|
|
@@ -4199,7 +4306,7 @@ function Item({
|
|
|
4199
4306
|
defaultTagName: "div",
|
|
4200
4307
|
props: mergeProps4(
|
|
4201
4308
|
{
|
|
4202
|
-
className:
|
|
4309
|
+
className: cn33(itemVariants({ variant, size, className }))
|
|
4203
4310
|
},
|
|
4204
4311
|
props
|
|
4205
4312
|
),
|
|
@@ -4231,22 +4338,22 @@ function ItemMedia({
|
|
|
4231
4338
|
variant = "default",
|
|
4232
4339
|
...props
|
|
4233
4340
|
}) {
|
|
4234
|
-
return /* @__PURE__ */
|
|
4341
|
+
return /* @__PURE__ */ jsx34(
|
|
4235
4342
|
"div",
|
|
4236
4343
|
{
|
|
4237
4344
|
"data-slot": "item-media",
|
|
4238
4345
|
"data-variant": variant,
|
|
4239
|
-
className:
|
|
4346
|
+
className: cn33(itemMediaVariants({ variant, className })),
|
|
4240
4347
|
...props
|
|
4241
4348
|
}
|
|
4242
4349
|
);
|
|
4243
4350
|
}
|
|
4244
4351
|
function ItemContent({ className, ...props }) {
|
|
4245
|
-
return /* @__PURE__ */
|
|
4352
|
+
return /* @__PURE__ */ jsx34(
|
|
4246
4353
|
"div",
|
|
4247
4354
|
{
|
|
4248
4355
|
"data-slot": "item-content",
|
|
4249
|
-
className:
|
|
4356
|
+
className: cn33(
|
|
4250
4357
|
"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
|
|
4251
4358
|
className
|
|
4252
4359
|
),
|
|
@@ -4255,11 +4362,11 @@ function ItemContent({ className, ...props }) {
|
|
|
4255
4362
|
);
|
|
4256
4363
|
}
|
|
4257
4364
|
function ItemTitle({ className, ...props }) {
|
|
4258
|
-
return /* @__PURE__ */
|
|
4365
|
+
return /* @__PURE__ */ jsx34(
|
|
4259
4366
|
"div",
|
|
4260
4367
|
{
|
|
4261
4368
|
"data-slot": "item-title",
|
|
4262
|
-
className:
|
|
4369
|
+
className: cn33(
|
|
4263
4370
|
"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
|
|
4264
4371
|
className
|
|
4265
4372
|
),
|
|
@@ -4268,11 +4375,11 @@ function ItemTitle({ className, ...props }) {
|
|
|
4268
4375
|
);
|
|
4269
4376
|
}
|
|
4270
4377
|
function ItemDescription({ className, ...props }) {
|
|
4271
|
-
return /* @__PURE__ */
|
|
4378
|
+
return /* @__PURE__ */ jsx34(
|
|
4272
4379
|
"p",
|
|
4273
4380
|
{
|
|
4274
4381
|
"data-slot": "item-description",
|
|
4275
|
-
className:
|
|
4382
|
+
className: cn33(
|
|
4276
4383
|
"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
4277
4384
|
className
|
|
4278
4385
|
),
|
|
@@ -4281,21 +4388,21 @@ function ItemDescription({ className, ...props }) {
|
|
|
4281
4388
|
);
|
|
4282
4389
|
}
|
|
4283
4390
|
function ItemActions({ className, ...props }) {
|
|
4284
|
-
return /* @__PURE__ */
|
|
4391
|
+
return /* @__PURE__ */ jsx34(
|
|
4285
4392
|
"div",
|
|
4286
4393
|
{
|
|
4287
4394
|
"data-slot": "item-actions",
|
|
4288
|
-
className:
|
|
4395
|
+
className: cn33("flex items-center gap-2", className),
|
|
4289
4396
|
...props
|
|
4290
4397
|
}
|
|
4291
4398
|
);
|
|
4292
4399
|
}
|
|
4293
4400
|
function ItemHeader({ className, ...props }) {
|
|
4294
|
-
return /* @__PURE__ */
|
|
4401
|
+
return /* @__PURE__ */ jsx34(
|
|
4295
4402
|
"div",
|
|
4296
4403
|
{
|
|
4297
4404
|
"data-slot": "item-header",
|
|
4298
|
-
className:
|
|
4405
|
+
className: cn33(
|
|
4299
4406
|
"flex basis-full items-center justify-between gap-2",
|
|
4300
4407
|
className
|
|
4301
4408
|
),
|
|
@@ -4304,11 +4411,11 @@ function ItemHeader({ className, ...props }) {
|
|
|
4304
4411
|
);
|
|
4305
4412
|
}
|
|
4306
4413
|
function ItemFooter({ className, ...props }) {
|
|
4307
|
-
return /* @__PURE__ */
|
|
4414
|
+
return /* @__PURE__ */ jsx34(
|
|
4308
4415
|
"div",
|
|
4309
4416
|
{
|
|
4310
4417
|
"data-slot": "item-footer",
|
|
4311
|
-
className:
|
|
4418
|
+
className: cn33(
|
|
4312
4419
|
"flex basis-full items-center justify-between gap-2",
|
|
4313
4420
|
className
|
|
4314
4421
|
),
|
|
@@ -4318,10 +4425,10 @@ function ItemFooter({ className, ...props }) {
|
|
|
4318
4425
|
}
|
|
4319
4426
|
|
|
4320
4427
|
// src/hooks/useMounted.ts
|
|
4321
|
-
import { useEffect as
|
|
4428
|
+
import { useEffect as useEffect5, useState as useState6 } from "react";
|
|
4322
4429
|
function useMounted() {
|
|
4323
|
-
const [mounted, setMounted] =
|
|
4324
|
-
|
|
4430
|
+
const [mounted, setMounted] = useState6(false);
|
|
4431
|
+
useEffect5(() => {
|
|
4325
4432
|
setMounted(true);
|
|
4326
4433
|
}, []);
|
|
4327
4434
|
return { mounted };
|
|
@@ -4332,19 +4439,20 @@ import {
|
|
|
4332
4439
|
BlobSpeech,
|
|
4333
4440
|
JellyBlobMascot
|
|
4334
4441
|
} from "feral-blob";
|
|
4335
|
-
import * as
|
|
4442
|
+
import * as React12 from "react";
|
|
4443
|
+
import { cn as cn34 } from "cn";
|
|
4336
4444
|
import {
|
|
4337
4445
|
BlobSpeech as BlobSpeech2,
|
|
4338
4446
|
JellyBlobMascot as JellyBlobMascot2,
|
|
4339
4447
|
JellyBlobMascotDemo
|
|
4340
4448
|
} from "feral-blob";
|
|
4341
|
-
import { jsx as
|
|
4449
|
+
import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4342
4450
|
function JellyBlob({ ...props }) {
|
|
4343
|
-
return /* @__PURE__ */
|
|
4451
|
+
return /* @__PURE__ */ jsx35("span", { className: "inline-block", children: /* @__PURE__ */ jsx35(
|
|
4344
4452
|
JellyBlobMascot,
|
|
4345
4453
|
{
|
|
4346
4454
|
...props,
|
|
4347
|
-
className:
|
|
4455
|
+
className: cn34("h-auto w-full", props.className)
|
|
4348
4456
|
}
|
|
4349
4457
|
) });
|
|
4350
4458
|
}
|
|
@@ -4370,15 +4478,15 @@ function JellyMini({
|
|
|
4370
4478
|
...props
|
|
4371
4479
|
}) {
|
|
4372
4480
|
const { mounted } = useMounted();
|
|
4373
|
-
return /* @__PURE__ */
|
|
4481
|
+
return /* @__PURE__ */ jsx35(
|
|
4374
4482
|
"span",
|
|
4375
4483
|
{
|
|
4376
4484
|
"aria-hidden": "true",
|
|
4377
|
-
className:
|
|
4485
|
+
className: cn34(
|
|
4378
4486
|
"inline-flex size-5 shrink-0 items-center justify-center select-none",
|
|
4379
4487
|
className
|
|
4380
4488
|
),
|
|
4381
|
-
children: mounted ? /* @__PURE__ */
|
|
4489
|
+
children: mounted ? /* @__PURE__ */ jsx35(
|
|
4382
4490
|
JellyBlobMascot,
|
|
4383
4491
|
{
|
|
4384
4492
|
...props,
|
|
@@ -4390,10 +4498,10 @@ function JellyMini({
|
|
|
4390
4498
|
}
|
|
4391
4499
|
);
|
|
4392
4500
|
}
|
|
4393
|
-
var JellyMascotContext =
|
|
4501
|
+
var JellyMascotContext = React12.createContext(null);
|
|
4394
4502
|
function useJellyMood() {
|
|
4395
|
-
const state =
|
|
4396
|
-
return
|
|
4503
|
+
const state = React12.useContext(JellyMascotContext);
|
|
4504
|
+
return React12.useCallback(
|
|
4397
4505
|
(mood) => {
|
|
4398
4506
|
if (!mood || !state) return {};
|
|
4399
4507
|
return {
|
|
@@ -4420,14 +4528,14 @@ function JellyAction({
|
|
|
4420
4528
|
...props
|
|
4421
4529
|
}) {
|
|
4422
4530
|
const preview = useJellyMood();
|
|
4423
|
-
return /* @__PURE__ */
|
|
4531
|
+
return /* @__PURE__ */ jsx35(Button, { ...props, ...withPreviewHandlers(preview, { ...props, mood }) });
|
|
4424
4532
|
}
|
|
4425
4533
|
function JellyLink({
|
|
4426
4534
|
mood,
|
|
4427
4535
|
...props
|
|
4428
4536
|
}) {
|
|
4429
4537
|
const preview = useJellyMood();
|
|
4430
|
-
return /* @__PURE__ */
|
|
4538
|
+
return /* @__PURE__ */ jsx35("a", { ...props, ...withPreviewHandlers(preview, { ...props, mood }) });
|
|
4431
4539
|
}
|
|
4432
4540
|
function JellyMascotProvider({
|
|
4433
4541
|
mood = "neutral",
|
|
@@ -4436,7 +4544,7 @@ function JellyMascotProvider({
|
|
|
4436
4544
|
...blobProps
|
|
4437
4545
|
}) {
|
|
4438
4546
|
const { mounted } = useMounted();
|
|
4439
|
-
const [previewMood, setPreviewMood] =
|
|
4547
|
+
const [previewMood, setPreviewMood] = React12.useState(
|
|
4440
4548
|
null
|
|
4441
4549
|
);
|
|
4442
4550
|
const activeMood = previewMood ?? mood;
|
|
@@ -4449,7 +4557,7 @@ function JellyMascotProvider({
|
|
|
4449
4557
|
blobProps,
|
|
4450
4558
|
setPreview: setPreviewMood
|
|
4451
4559
|
};
|
|
4452
|
-
return /* @__PURE__ */
|
|
4560
|
+
return /* @__PURE__ */ jsx35(JellyMascotContext.Provider, { value, children });
|
|
4453
4561
|
}
|
|
4454
4562
|
var SIZE_WRAPPER = {
|
|
4455
4563
|
sm: "w-20",
|
|
@@ -4461,26 +4569,26 @@ function JellyMascotFace({
|
|
|
4461
4569
|
size = "md",
|
|
4462
4570
|
className
|
|
4463
4571
|
}) {
|
|
4464
|
-
const mascot =
|
|
4572
|
+
const mascot = React12.useContext(JellyMascotContext);
|
|
4465
4573
|
if (!mascot) return null;
|
|
4466
4574
|
return /* @__PURE__ */ jsxs19(
|
|
4467
4575
|
"div",
|
|
4468
4576
|
{
|
|
4469
4577
|
"aria-hidden": "true",
|
|
4470
|
-
className:
|
|
4578
|
+
className: cn34(
|
|
4471
4579
|
"flex flex-col items-center select-none",
|
|
4472
4580
|
SIZE_WRAPPER[size],
|
|
4473
4581
|
className
|
|
4474
4582
|
),
|
|
4475
4583
|
children: [
|
|
4476
|
-
mascot.speech ? /* @__PURE__ */
|
|
4584
|
+
mascot.speech ? /* @__PURE__ */ jsx35(
|
|
4477
4585
|
BlobSpeech,
|
|
4478
4586
|
{
|
|
4479
4587
|
mood: mascot.mood,
|
|
4480
4588
|
messages: { [mascot.mood]: mascot.speech }
|
|
4481
4589
|
}
|
|
4482
4590
|
) : null,
|
|
4483
|
-
mascot.mounted ? /* @__PURE__ */
|
|
4591
|
+
mascot.mounted ? /* @__PURE__ */ jsx35(
|
|
4484
4592
|
JellyBlobMascot,
|
|
4485
4593
|
{
|
|
4486
4594
|
...mascot.blobProps,
|
|
@@ -4499,15 +4607,15 @@ function JellyMascot({
|
|
|
4499
4607
|
className,
|
|
4500
4608
|
...config
|
|
4501
4609
|
}) {
|
|
4502
|
-
const existing =
|
|
4503
|
-
if (existing) return /* @__PURE__ */
|
|
4504
|
-
return /* @__PURE__ */
|
|
4610
|
+
const existing = React12.useContext(JellyMascotContext);
|
|
4611
|
+
if (existing) return /* @__PURE__ */ jsx35(JellyMascotFace, { size, className });
|
|
4612
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsx35(JellyMascotFace, { size, className }) });
|
|
4505
4613
|
}
|
|
4506
4614
|
function JellyGroup({
|
|
4507
4615
|
children,
|
|
4508
4616
|
...config
|
|
4509
4617
|
}) {
|
|
4510
|
-
return /* @__PURE__ */
|
|
4618
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children });
|
|
4511
4619
|
}
|
|
4512
4620
|
function JellyEmpty({
|
|
4513
4621
|
title,
|
|
@@ -4517,24 +4625,25 @@ function JellyEmpty({
|
|
|
4517
4625
|
className,
|
|
4518
4626
|
...config
|
|
4519
4627
|
}) {
|
|
4520
|
-
return /* @__PURE__ */
|
|
4628
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsxs19(Empty, { className: cn34("gap-4", className), children: [
|
|
4521
4629
|
/* @__PURE__ */ jsxs19(EmptyHeader, { className: "gap-2", children: [
|
|
4522
|
-
/* @__PURE__ */
|
|
4523
|
-
title ? /* @__PURE__ */
|
|
4524
|
-
description ? /* @__PURE__ */
|
|
4630
|
+
/* @__PURE__ */ jsx35(JellyMascotFace, { size }),
|
|
4631
|
+
title ? /* @__PURE__ */ jsx35(EmptyTitle, { className: "text-base font-semibold sm:text-lg", children: title }) : null,
|
|
4632
|
+
description ? /* @__PURE__ */ jsx35(EmptyDescription, { className: "max-w-sm", children: description }) : null
|
|
4525
4633
|
] }),
|
|
4526
|
-
actions ? /* @__PURE__ */
|
|
4634
|
+
actions ? /* @__PURE__ */ jsx35(EmptyContent, { children: actions }) : null
|
|
4527
4635
|
] }) });
|
|
4528
4636
|
}
|
|
4529
4637
|
|
|
4530
4638
|
// src/ui/kbd.tsx
|
|
4531
|
-
import {
|
|
4639
|
+
import { cn as cn35 } from "cn";
|
|
4640
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
4532
4641
|
function Kbd({ className, ...props }) {
|
|
4533
|
-
return /* @__PURE__ */
|
|
4642
|
+
return /* @__PURE__ */ jsx36(
|
|
4534
4643
|
"kbd",
|
|
4535
4644
|
{
|
|
4536
4645
|
"data-slot": "kbd",
|
|
4537
|
-
className:
|
|
4646
|
+
className: cn35(
|
|
4538
4647
|
"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3",
|
|
4539
4648
|
className
|
|
4540
4649
|
),
|
|
@@ -4543,24 +4652,25 @@ function Kbd({ className, ...props }) {
|
|
|
4543
4652
|
);
|
|
4544
4653
|
}
|
|
4545
4654
|
function KbdGroup({ className, ...props }) {
|
|
4546
|
-
return /* @__PURE__ */
|
|
4655
|
+
return /* @__PURE__ */ jsx36(
|
|
4547
4656
|
"kbd",
|
|
4548
4657
|
{
|
|
4549
4658
|
"data-slot": "kbd-group",
|
|
4550
|
-
className:
|
|
4659
|
+
className: cn35("inline-flex items-center gap-1", className),
|
|
4551
4660
|
...props
|
|
4552
4661
|
}
|
|
4553
4662
|
);
|
|
4554
4663
|
}
|
|
4555
4664
|
|
|
4556
4665
|
// src/ui/message.tsx
|
|
4557
|
-
import {
|
|
4666
|
+
import { cn as cn36 } from "cn";
|
|
4667
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
4558
4668
|
function MessageGroup({ className, ...props }) {
|
|
4559
|
-
return /* @__PURE__ */
|
|
4669
|
+
return /* @__PURE__ */ jsx37(
|
|
4560
4670
|
"div",
|
|
4561
4671
|
{
|
|
4562
4672
|
"data-slot": "message-group",
|
|
4563
|
-
className:
|
|
4673
|
+
className: cn36("flex min-w-0 flex-col gap-2", className),
|
|
4564
4674
|
...props
|
|
4565
4675
|
}
|
|
4566
4676
|
);
|
|
@@ -4570,12 +4680,12 @@ function Message({
|
|
|
4570
4680
|
align = "start",
|
|
4571
4681
|
...props
|
|
4572
4682
|
}) {
|
|
4573
|
-
return /* @__PURE__ */
|
|
4683
|
+
return /* @__PURE__ */ jsx37(
|
|
4574
4684
|
"div",
|
|
4575
4685
|
{
|
|
4576
4686
|
"data-slot": "message",
|
|
4577
4687
|
"data-align": align,
|
|
4578
|
-
className:
|
|
4688
|
+
className: cn36(
|
|
4579
4689
|
"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse",
|
|
4580
4690
|
className
|
|
4581
4691
|
),
|
|
@@ -4584,11 +4694,11 @@ function Message({
|
|
|
4584
4694
|
);
|
|
4585
4695
|
}
|
|
4586
4696
|
function MessageAvatar({ className, ...props }) {
|
|
4587
|
-
return /* @__PURE__ */
|
|
4697
|
+
return /* @__PURE__ */ jsx37(
|
|
4588
4698
|
"div",
|
|
4589
4699
|
{
|
|
4590
4700
|
"data-slot": "message-avatar",
|
|
4591
|
-
className:
|
|
4701
|
+
className: cn36(
|
|
4592
4702
|
"flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-8",
|
|
4593
4703
|
className
|
|
4594
4704
|
),
|
|
@@ -4597,11 +4707,11 @@ function MessageAvatar({ className, ...props }) {
|
|
|
4597
4707
|
);
|
|
4598
4708
|
}
|
|
4599
4709
|
function MessageContent({ className, ...props }) {
|
|
4600
|
-
return /* @__PURE__ */
|
|
4710
|
+
return /* @__PURE__ */ jsx37(
|
|
4601
4711
|
"div",
|
|
4602
4712
|
{
|
|
4603
4713
|
"data-slot": "message-content",
|
|
4604
|
-
className:
|
|
4714
|
+
className: cn36(
|
|
4605
4715
|
"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end",
|
|
4606
4716
|
className
|
|
4607
4717
|
),
|
|
@@ -4610,11 +4720,11 @@ function MessageContent({ className, ...props }) {
|
|
|
4610
4720
|
);
|
|
4611
4721
|
}
|
|
4612
4722
|
function MessageHeader({ className, ...props }) {
|
|
4613
|
-
return /* @__PURE__ */
|
|
4723
|
+
return /* @__PURE__ */ jsx37(
|
|
4614
4724
|
"div",
|
|
4615
4725
|
{
|
|
4616
4726
|
"data-slot": "message-header",
|
|
4617
|
-
className:
|
|
4727
|
+
className: cn36(
|
|
4618
4728
|
"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0",
|
|
4619
4729
|
className
|
|
4620
4730
|
),
|
|
@@ -4623,11 +4733,11 @@ function MessageHeader({ className, ...props }) {
|
|
|
4623
4733
|
);
|
|
4624
4734
|
}
|
|
4625
4735
|
function MessageFooter({ className, ...props }) {
|
|
4626
|
-
return /* @__PURE__ */
|
|
4736
|
+
return /* @__PURE__ */ jsx37(
|
|
4627
4737
|
"div",
|
|
4628
4738
|
{
|
|
4629
4739
|
"data-slot": "message-footer",
|
|
4630
|
-
className:
|
|
4740
|
+
className: cn36(
|
|
4631
4741
|
"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0 group-data-[align=end]/message:justify-end",
|
|
4632
4742
|
className
|
|
4633
4743
|
),
|
|
@@ -4643,20 +4753,21 @@ import {
|
|
|
4643
4753
|
useMessageScrollerScrollable,
|
|
4644
4754
|
useMessageScrollerVisibility
|
|
4645
4755
|
} from "@shadcn/react/message-scroller";
|
|
4756
|
+
import { cn as cn37 } from "cn";
|
|
4646
4757
|
import { ArrowDownIcon } from "lucide-react";
|
|
4647
|
-
import { Fragment as Fragment2, jsx as
|
|
4758
|
+
import { Fragment as Fragment2, jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4648
4759
|
function MessageScrollerProvider(props) {
|
|
4649
|
-
return /* @__PURE__ */
|
|
4760
|
+
return /* @__PURE__ */ jsx38(MessageScrollerPrimitive.Provider, { ...props });
|
|
4650
4761
|
}
|
|
4651
4762
|
function MessageScroller({
|
|
4652
4763
|
className,
|
|
4653
4764
|
...props
|
|
4654
4765
|
}) {
|
|
4655
|
-
return /* @__PURE__ */
|
|
4766
|
+
return /* @__PURE__ */ jsx38(
|
|
4656
4767
|
MessageScrollerPrimitive.Root,
|
|
4657
4768
|
{
|
|
4658
4769
|
"data-slot": "message-scroller",
|
|
4659
|
-
className:
|
|
4770
|
+
className: cn37(
|
|
4660
4771
|
"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",
|
|
4661
4772
|
className
|
|
4662
4773
|
),
|
|
@@ -4668,11 +4779,11 @@ function MessageScrollerViewport({
|
|
|
4668
4779
|
className,
|
|
4669
4780
|
...props
|
|
4670
4781
|
}) {
|
|
4671
|
-
return /* @__PURE__ */
|
|
4782
|
+
return /* @__PURE__ */ jsx38(
|
|
4672
4783
|
MessageScrollerPrimitive.Viewport,
|
|
4673
4784
|
{
|
|
4674
4785
|
"data-slot": "message-scroller-viewport",
|
|
4675
|
-
className:
|
|
4786
|
+
className: cn37(
|
|
4676
4787
|
"size-full min-h-0 min-w-0 scroll-fade scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent",
|
|
4677
4788
|
className
|
|
4678
4789
|
),
|
|
@@ -4684,11 +4795,11 @@ function MessageScrollerContent({
|
|
|
4684
4795
|
className,
|
|
4685
4796
|
...props
|
|
4686
4797
|
}) {
|
|
4687
|
-
return /* @__PURE__ */
|
|
4798
|
+
return /* @__PURE__ */ jsx38(
|
|
4688
4799
|
MessageScrollerPrimitive.Content,
|
|
4689
4800
|
{
|
|
4690
4801
|
"data-slot": "message-scroller-content",
|
|
4691
|
-
className:
|
|
4802
|
+
className: cn37("flex h-max min-h-full flex-col gap-6", className),
|
|
4692
4803
|
...props
|
|
4693
4804
|
}
|
|
4694
4805
|
);
|
|
@@ -4698,12 +4809,12 @@ function MessageScrollerItem({
|
|
|
4698
4809
|
scrollAnchor = false,
|
|
4699
4810
|
...props
|
|
4700
4811
|
}) {
|
|
4701
|
-
return /* @__PURE__ */
|
|
4812
|
+
return /* @__PURE__ */ jsx38(
|
|
4702
4813
|
MessageScrollerPrimitive.Item,
|
|
4703
4814
|
{
|
|
4704
4815
|
"data-slot": "message-scroller-item",
|
|
4705
4816
|
scrollAnchor,
|
|
4706
|
-
className:
|
|
4817
|
+
className: cn37(
|
|
4707
4818
|
"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",
|
|
4708
4819
|
className
|
|
4709
4820
|
),
|
|
@@ -4720,7 +4831,7 @@ function MessageScrollerButton({
|
|
|
4720
4831
|
size = "icon-sm",
|
|
4721
4832
|
...props
|
|
4722
4833
|
}) {
|
|
4723
|
-
return /* @__PURE__ */
|
|
4834
|
+
return /* @__PURE__ */ jsx38(
|
|
4724
4835
|
MessageScrollerPrimitive.Button,
|
|
4725
4836
|
{
|
|
4726
4837
|
"data-slot": "message-scroller-button",
|
|
@@ -4728,31 +4839,30 @@ function MessageScrollerButton({
|
|
|
4728
4839
|
"data-variant": variant,
|
|
4729
4840
|
"data-size": size,
|
|
4730
4841
|
direction,
|
|
4731
|
-
className:
|
|
4842
|
+
className: cn37(
|
|
4732
4843
|
"data-[active=true]:ease-out-quint absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180",
|
|
4733
4844
|
className
|
|
4734
4845
|
),
|
|
4735
|
-
render: render ?? /* @__PURE__ */
|
|
4846
|
+
render: render ?? /* @__PURE__ */ jsx38(Button, { variant, size }),
|
|
4736
4847
|
...props,
|
|
4737
4848
|
children: children ?? /* @__PURE__ */ jsxs20(Fragment2, { children: [
|
|
4738
|
-
/* @__PURE__ */
|
|
4739
|
-
/* @__PURE__ */
|
|
4849
|
+
/* @__PURE__ */ jsx38(ArrowDownIcon, {}),
|
|
4850
|
+
/* @__PURE__ */ jsx38("span", { className: "sr-only", children: direction === "end" ? "Scroll to end" : "Scroll to start" })
|
|
4740
4851
|
] })
|
|
4741
4852
|
}
|
|
4742
4853
|
);
|
|
4743
4854
|
}
|
|
4744
4855
|
|
|
4745
4856
|
// src/ui/otp.tsx
|
|
4746
|
-
import {
|
|
4857
|
+
import { cn as cn38 } from "cn";
|
|
4747
4858
|
import {
|
|
4748
4859
|
AnimatePresence as AnimatePresence2,
|
|
4749
4860
|
animate,
|
|
4750
|
-
motion as
|
|
4861
|
+
motion as motion6,
|
|
4751
4862
|
useReducedMotion
|
|
4752
4863
|
} from "motion/react";
|
|
4753
|
-
import { Fragment as Fragment3, useEffect as
|
|
4754
|
-
import {
|
|
4755
|
-
import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4864
|
+
import { Fragment as Fragment3, useEffect as useEffect6, useId as useId2, useRef as useRef3, useState as useState8 } from "react";
|
|
4865
|
+
import { jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4756
4866
|
var EASE_OUT = [0.16, 1, 0.3, 1];
|
|
4757
4867
|
var EASE_IN_OUT = [0.77, 0, 0.175, 1];
|
|
4758
4868
|
var EASE_DRAWER = [0.32, 0.72, 0, 1];
|
|
@@ -4786,9 +4896,6 @@ var SPRING_MOUSE = {
|
|
|
4786
4896
|
damping: 15,
|
|
4787
4897
|
mass: 0.3
|
|
4788
4898
|
};
|
|
4789
|
-
function otpCn(...inputs) {
|
|
4790
|
-
return twMerge2(clsx2(inputs));
|
|
4791
|
-
}
|
|
4792
4899
|
function OTPInput2({
|
|
4793
4900
|
length = 6,
|
|
4794
4901
|
value: controlledValue,
|
|
@@ -4812,15 +4919,15 @@ function OTPInput2({
|
|
|
4812
4919
|
const inputRef = useRef3(null);
|
|
4813
4920
|
const slotsRef = useRef3(null);
|
|
4814
4921
|
const controlled = controlledValue !== void 0;
|
|
4815
|
-
const [slots, setSlots] =
|
|
4922
|
+
const [slots, setSlots] = useState8(
|
|
4816
4923
|
() => toSlots(controlled ? controlledValue : defaultValue, length)
|
|
4817
4924
|
);
|
|
4818
|
-
const [focused, setFocused] =
|
|
4819
|
-
const [active, setActive] =
|
|
4925
|
+
const [focused, setFocused] = useState8(false);
|
|
4926
|
+
const [active, setActive] = useState8(0);
|
|
4820
4927
|
const joined = slots.join("");
|
|
4821
4928
|
const joinedRef = useRef3(joined);
|
|
4822
4929
|
joinedRef.current = joined;
|
|
4823
|
-
|
|
4930
|
+
useEffect6(() => {
|
|
4824
4931
|
if (!controlled) return;
|
|
4825
4932
|
const incoming = sanitize(controlledValue, length);
|
|
4826
4933
|
if (incoming !== joinedRef.current) {
|
|
@@ -4904,7 +5011,7 @@ function OTPInput2({
|
|
|
4904
5011
|
commit(toSlots(digits, length));
|
|
4905
5012
|
setActive(Math.min(digits.length, length - 1));
|
|
4906
5013
|
};
|
|
4907
|
-
|
|
5014
|
+
useEffect6(() => {
|
|
4908
5015
|
if (status !== "error" || reduce || !slotsRef.current) return;
|
|
4909
5016
|
animate(
|
|
4910
5017
|
slotsRef.current,
|
|
@@ -4920,8 +5027,8 @@ function OTPInput2({
|
|
|
4920
5027
|
const showSuccess = status === "success";
|
|
4921
5028
|
const activeIndex = focused ? active : -1;
|
|
4922
5029
|
const message = showSuccess ? successMessage : status === "error" ? errorMessage : hint;
|
|
4923
|
-
return /* @__PURE__ */ jsxs21("div", { className:
|
|
4924
|
-
label ? /* @__PURE__ */
|
|
5030
|
+
return /* @__PURE__ */ jsxs21("div", { className: cn38("inline-flex flex-col gap-2", className), children: [
|
|
5031
|
+
label ? /* @__PURE__ */ jsx39(
|
|
4925
5032
|
"label",
|
|
4926
5033
|
{
|
|
4927
5034
|
htmlFor: `${uid}-input`,
|
|
@@ -4942,7 +5049,7 @@ function OTPInput2({
|
|
|
4942
5049
|
inputRef.current?.focus();
|
|
4943
5050
|
},
|
|
4944
5051
|
children: [
|
|
4945
|
-
/* @__PURE__ */
|
|
5052
|
+
/* @__PURE__ */ jsx39(
|
|
4946
5053
|
"input",
|
|
4947
5054
|
{
|
|
4948
5055
|
ref: inputRef,
|
|
@@ -4969,7 +5076,7 @@ function OTPInput2({
|
|
|
4969
5076
|
className: "absolute inset-0 z-20 h-full w-full cursor-text bg-transparent text-transparent caret-transparent opacity-0 outline-none disabled:cursor-not-allowed"
|
|
4970
5077
|
}
|
|
4971
5078
|
),
|
|
4972
|
-
/* @__PURE__ */
|
|
5079
|
+
/* @__PURE__ */ jsx39("div", { ref: slotsRef, className: "flex items-center gap-3", children: Array.from({ length }, (_, i) => {
|
|
4973
5080
|
const char = slots[i] ?? "";
|
|
4974
5081
|
const isActive = i === activeIndex;
|
|
4975
5082
|
return /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
@@ -4979,15 +5086,15 @@ function OTPInput2({
|
|
|
4979
5086
|
"data-otp-slot": true,
|
|
4980
5087
|
"data-active": isActive,
|
|
4981
5088
|
"data-filled": char !== "",
|
|
4982
|
-
className:
|
|
5089
|
+
className: cn38(
|
|
4983
5090
|
"relative grid size-11 place-items-center overflow-hidden rounded-xl border bg-card text-xl font-semibold tabular-nums transition-colors duration-200",
|
|
4984
5091
|
showSuccess ? "border-emerald-500/60 text-foreground" : status === "error" ? "border-destructive/60 text-foreground" : char ? "border-border-strong text-foreground" : "border-border text-muted-foreground",
|
|
4985
5092
|
isActive && !showSuccess && status !== "error" && "border-brand border-2 ring-0",
|
|
4986
5093
|
disabled && "opacity-50"
|
|
4987
5094
|
),
|
|
4988
5095
|
children: [
|
|
4989
|
-
isActive && !showSuccess ? /* @__PURE__ */
|
|
4990
|
-
|
|
5096
|
+
isActive && !showSuccess ? /* @__PURE__ */ jsx39(
|
|
5097
|
+
motion6.span,
|
|
4991
5098
|
{
|
|
4992
5099
|
"aria-hidden": true,
|
|
4993
5100
|
animate: reduce ? void 0 : { opacity: [1, 1, 0, 0] },
|
|
@@ -4996,14 +5103,14 @@ function OTPInput2({
|
|
|
4996
5103
|
repeat: Number.POSITIVE_INFINITY,
|
|
4997
5104
|
ease: "linear"
|
|
4998
5105
|
},
|
|
4999
|
-
className:
|
|
5106
|
+
className: cn38(
|
|
5000
5107
|
"bg-brand pointer-events-none absolute top-1/2 h-6 w-px -translate-y-1/2",
|
|
5001
5108
|
char ? "right-3" : "left-1/2 -translate-x-1/2"
|
|
5002
5109
|
)
|
|
5003
5110
|
}
|
|
5004
5111
|
) : null,
|
|
5005
|
-
/* @__PURE__ */
|
|
5006
|
-
|
|
5112
|
+
/* @__PURE__ */ jsx39(AnimatePresence2, { initial: false, children: char ? /* @__PURE__ */ jsx39(
|
|
5113
|
+
motion6.span,
|
|
5007
5114
|
{
|
|
5008
5115
|
initial: reduce ? {
|
|
5009
5116
|
opacity: 0
|
|
@@ -5040,11 +5147,11 @@ function OTPInput2({
|
|
|
5040
5147
|
]
|
|
5041
5148
|
}
|
|
5042
5149
|
),
|
|
5043
|
-
i === 2 ? /* @__PURE__ */
|
|
5150
|
+
i === 2 ? /* @__PURE__ */ jsx39("span", { "aria-hidden": "true", className: "h-0.5 w-4 bg-primary" }) : null
|
|
5044
5151
|
] }, `${uid}-${i}`);
|
|
5045
5152
|
}) }),
|
|
5046
|
-
/* @__PURE__ */
|
|
5047
|
-
|
|
5153
|
+
/* @__PURE__ */ jsx39(AnimatePresence2, { children: showSuccess ? /* @__PURE__ */ jsx39(
|
|
5154
|
+
motion6.span,
|
|
5048
5155
|
{
|
|
5049
5156
|
initial: reduce ? {
|
|
5050
5157
|
opacity: 0
|
|
@@ -5085,9 +5192,9 @@ function OTPInput2({
|
|
|
5085
5192
|
strokeLinecap: "round",
|
|
5086
5193
|
strokeLinejoin: "round",
|
|
5087
5194
|
children: [
|
|
5088
|
-
/* @__PURE__ */
|
|
5089
|
-
/* @__PURE__ */
|
|
5090
|
-
|
|
5195
|
+
/* @__PURE__ */ jsx39("title", { children: "Verified" }),
|
|
5196
|
+
/* @__PURE__ */ jsx39(
|
|
5197
|
+
motion6.path,
|
|
5091
5198
|
{
|
|
5092
5199
|
d: "M5 13l4 4L19 7",
|
|
5093
5200
|
initial: reduce ? {
|
|
@@ -5115,11 +5222,11 @@ function OTPInput2({
|
|
|
5115
5222
|
]
|
|
5116
5223
|
}
|
|
5117
5224
|
),
|
|
5118
|
-
message ? /* @__PURE__ */
|
|
5225
|
+
message ? /* @__PURE__ */ jsx39(
|
|
5119
5226
|
"p",
|
|
5120
5227
|
{
|
|
5121
5228
|
"aria-live": "polite",
|
|
5122
|
-
className:
|
|
5229
|
+
className: cn38(
|
|
5123
5230
|
"text-sm",
|
|
5124
5231
|
showSuccess ? "text-emerald-500" : status === "error" ? "text-destructive" : "text-muted-foreground"
|
|
5125
5232
|
),
|
|
@@ -5138,12 +5245,13 @@ function toSlots(raw, length) {
|
|
|
5138
5245
|
|
|
5139
5246
|
// src/ui/popover.tsx
|
|
5140
5247
|
import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
|
|
5141
|
-
import {
|
|
5248
|
+
import { cn as cn39 } from "cn";
|
|
5249
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
5142
5250
|
function Popover({ ...props }) {
|
|
5143
|
-
return /* @__PURE__ */
|
|
5251
|
+
return /* @__PURE__ */ jsx40(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
5144
5252
|
}
|
|
5145
5253
|
function PopoverTrigger({ ...props }) {
|
|
5146
|
-
return /* @__PURE__ */
|
|
5254
|
+
return /* @__PURE__ */ jsx40(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
5147
5255
|
}
|
|
5148
5256
|
function PopoverContent({
|
|
5149
5257
|
className,
|
|
@@ -5153,7 +5261,7 @@ function PopoverContent({
|
|
|
5153
5261
|
sideOffset = 4,
|
|
5154
5262
|
...props
|
|
5155
5263
|
}) {
|
|
5156
|
-
return /* @__PURE__ */
|
|
5264
|
+
return /* @__PURE__ */ jsx40(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx40(
|
|
5157
5265
|
PopoverPrimitive.Positioner,
|
|
5158
5266
|
{
|
|
5159
5267
|
align,
|
|
@@ -5161,11 +5269,11 @@ function PopoverContent({
|
|
|
5161
5269
|
side,
|
|
5162
5270
|
sideOffset,
|
|
5163
5271
|
className: "isolate z-50",
|
|
5164
|
-
children: /* @__PURE__ */
|
|
5272
|
+
children: /* @__PURE__ */ jsx40(
|
|
5165
5273
|
PopoverPrimitive.Popup,
|
|
5166
5274
|
{
|
|
5167
5275
|
"data-slot": "popover-content",
|
|
5168
|
-
className:
|
|
5276
|
+
className: cn39(
|
|
5169
5277
|
"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-background p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
5170
5278
|
className
|
|
5171
5279
|
),
|
|
@@ -5176,21 +5284,21 @@ function PopoverContent({
|
|
|
5176
5284
|
) });
|
|
5177
5285
|
}
|
|
5178
5286
|
function PopoverHeader({ className, ...props }) {
|
|
5179
|
-
return /* @__PURE__ */
|
|
5287
|
+
return /* @__PURE__ */ jsx40(
|
|
5180
5288
|
"div",
|
|
5181
5289
|
{
|
|
5182
5290
|
"data-slot": "popover-header",
|
|
5183
|
-
className:
|
|
5291
|
+
className: cn39("flex flex-col gap-0.5 text-sm", className),
|
|
5184
5292
|
...props
|
|
5185
5293
|
}
|
|
5186
5294
|
);
|
|
5187
5295
|
}
|
|
5188
5296
|
function PopoverTitle({ className, ...props }) {
|
|
5189
|
-
return /* @__PURE__ */
|
|
5297
|
+
return /* @__PURE__ */ jsx40(
|
|
5190
5298
|
PopoverPrimitive.Title,
|
|
5191
5299
|
{
|
|
5192
5300
|
"data-slot": "popover-title",
|
|
5193
|
-
className:
|
|
5301
|
+
className: cn39("font-medium", className),
|
|
5194
5302
|
...props
|
|
5195
5303
|
}
|
|
5196
5304
|
);
|
|
@@ -5199,11 +5307,11 @@ function PopoverDescription({
|
|
|
5199
5307
|
className,
|
|
5200
5308
|
...props
|
|
5201
5309
|
}) {
|
|
5202
|
-
return /* @__PURE__ */
|
|
5310
|
+
return /* @__PURE__ */ jsx40(
|
|
5203
5311
|
PopoverPrimitive.Description,
|
|
5204
5312
|
{
|
|
5205
5313
|
"data-slot": "popover-description",
|
|
5206
|
-
className:
|
|
5314
|
+
className: cn39("text-muted-foreground", className),
|
|
5207
5315
|
...props
|
|
5208
5316
|
}
|
|
5209
5317
|
);
|
|
@@ -5212,12 +5320,12 @@ function PopoverDescription({
|
|
|
5212
5320
|
// src/ui/quantity.tsx
|
|
5213
5321
|
import { NumberField } from "@base-ui/react/number-field";
|
|
5214
5322
|
import { Minus, Plus } from "@gravity-ui/icons";
|
|
5215
|
-
import * as
|
|
5216
|
-
import { jsx as
|
|
5217
|
-
var QuantityInput =
|
|
5218
|
-
const id =
|
|
5219
|
-
return /* @__PURE__ */
|
|
5220
|
-
/* @__PURE__ */
|
|
5323
|
+
import * as React13 from "react";
|
|
5324
|
+
import { jsx as jsx41, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5325
|
+
var QuantityInput = React13.forwardRef(function QuantityInput2({ ...props }, ref) {
|
|
5326
|
+
const id = React13.useId();
|
|
5327
|
+
return /* @__PURE__ */ jsx41(NumberField.Root, { id, ...props, className: "flex flex-col items-start", children: /* @__PURE__ */ jsxs22(NumberField.Group, { className: "flex h-8 gap-1", children: [
|
|
5328
|
+
/* @__PURE__ */ jsx41(
|
|
5221
5329
|
NumberField.Decrement,
|
|
5222
5330
|
{
|
|
5223
5331
|
className: buttonVariants({
|
|
@@ -5225,10 +5333,10 @@ var QuantityInput = React11.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5225
5333
|
size: "icon-sm",
|
|
5226
5334
|
className: "rounded-full! border-border!"
|
|
5227
5335
|
}),
|
|
5228
|
-
children: /* @__PURE__ */
|
|
5336
|
+
children: /* @__PURE__ */ jsx41(Minus, {})
|
|
5229
5337
|
}
|
|
5230
5338
|
),
|
|
5231
|
-
/* @__PURE__ */
|
|
5339
|
+
/* @__PURE__ */ jsx41(
|
|
5232
5340
|
NumberField.Input,
|
|
5233
5341
|
{
|
|
5234
5342
|
ref,
|
|
@@ -5236,7 +5344,7 @@ var QuantityInput = React11.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5236
5344
|
"data-no-ring": true
|
|
5237
5345
|
}
|
|
5238
5346
|
),
|
|
5239
|
-
/* @__PURE__ */
|
|
5347
|
+
/* @__PURE__ */ jsx41(
|
|
5240
5348
|
NumberField.Increment,
|
|
5241
5349
|
{
|
|
5242
5350
|
className: buttonVariants({
|
|
@@ -5244,7 +5352,7 @@ var QuantityInput = React11.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5244
5352
|
size: "icon-sm",
|
|
5245
5353
|
className: "rounded-full! border-border!"
|
|
5246
5354
|
}),
|
|
5247
|
-
children: /* @__PURE__ */
|
|
5355
|
+
children: /* @__PURE__ */ jsx41(Plus, {})
|
|
5248
5356
|
}
|
|
5249
5357
|
)
|
|
5250
5358
|
] }) });
|
|
@@ -5253,33 +5361,34 @@ var QuantityInput = React11.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5253
5361
|
// src/ui/radio-group.tsx
|
|
5254
5362
|
import { Radio as RadioPrimitive } from "@base-ui/react/radio";
|
|
5255
5363
|
import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
|
|
5256
|
-
import {
|
|
5364
|
+
import { cn as cn40 } from "cn";
|
|
5365
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
5257
5366
|
function RadioGroup({ className, ...props }) {
|
|
5258
|
-
return /* @__PURE__ */
|
|
5367
|
+
return /* @__PURE__ */ jsx42(
|
|
5259
5368
|
RadioGroupPrimitive,
|
|
5260
5369
|
{
|
|
5261
5370
|
"data-slot": "radio-group",
|
|
5262
|
-
className:
|
|
5371
|
+
className: cn40("grid w-full gap-2", className),
|
|
5263
5372
|
...props
|
|
5264
5373
|
}
|
|
5265
5374
|
);
|
|
5266
5375
|
}
|
|
5267
5376
|
function RadioGroupItem({ className, ...props }) {
|
|
5268
|
-
return /* @__PURE__ */
|
|
5377
|
+
return /* @__PURE__ */ jsx42(
|
|
5269
5378
|
RadioPrimitive.Root,
|
|
5270
5379
|
{
|
|
5271
5380
|
"data-slot": "radio-group-item",
|
|
5272
|
-
className:
|
|
5381
|
+
className: cn40(
|
|
5273
5382
|
"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary",
|
|
5274
5383
|
className
|
|
5275
5384
|
),
|
|
5276
5385
|
...props,
|
|
5277
|
-
children: /* @__PURE__ */
|
|
5386
|
+
children: /* @__PURE__ */ jsx42(
|
|
5278
5387
|
RadioPrimitive.Indicator,
|
|
5279
5388
|
{
|
|
5280
5389
|
"data-slot": "radio-group-indicator",
|
|
5281
5390
|
className: "flex size-4 items-center justify-center",
|
|
5282
|
-
children: /* @__PURE__ */
|
|
5391
|
+
children: /* @__PURE__ */ jsx42("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" })
|
|
5283
5392
|
}
|
|
5284
5393
|
)
|
|
5285
5394
|
}
|
|
@@ -5291,23 +5400,24 @@ import { useRender as useRender5 } from "@base-ui/react/use-render";
|
|
|
5291
5400
|
import { cva as cva9 } from "class-variance-authority";
|
|
5292
5401
|
import {
|
|
5293
5402
|
createContext as createContext5,
|
|
5294
|
-
useCallback as
|
|
5403
|
+
useCallback as useCallback5,
|
|
5295
5404
|
useContext as useContext6,
|
|
5296
|
-
useEffect as
|
|
5405
|
+
useEffect as useEffect7,
|
|
5297
5406
|
useId as useId4,
|
|
5298
5407
|
useMemo as useMemo4,
|
|
5299
5408
|
useRef as useRef4,
|
|
5300
|
-
useState as
|
|
5409
|
+
useState as useState9
|
|
5301
5410
|
} from "react";
|
|
5302
5411
|
|
|
5303
5412
|
// src/ui/tooltip.tsx
|
|
5304
5413
|
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
5305
|
-
import {
|
|
5414
|
+
import { cn as cn41 } from "cn";
|
|
5415
|
+
import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
5306
5416
|
function TooltipProvider({
|
|
5307
5417
|
delay = 0,
|
|
5308
5418
|
...props
|
|
5309
5419
|
}) {
|
|
5310
|
-
return /* @__PURE__ */
|
|
5420
|
+
return /* @__PURE__ */ jsx43(
|
|
5311
5421
|
TooltipPrimitive.Provider,
|
|
5312
5422
|
{
|
|
5313
5423
|
"data-slot": "tooltip-provider",
|
|
@@ -5317,10 +5427,10 @@ function TooltipProvider({
|
|
|
5317
5427
|
);
|
|
5318
5428
|
}
|
|
5319
5429
|
function Tooltip2({ ...props }) {
|
|
5320
|
-
return /* @__PURE__ */
|
|
5430
|
+
return /* @__PURE__ */ jsx43(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
5321
5431
|
}
|
|
5322
5432
|
function TooltipTrigger({ ...props }) {
|
|
5323
|
-
return /* @__PURE__ */
|
|
5433
|
+
return /* @__PURE__ */ jsx43(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
5324
5434
|
}
|
|
5325
5435
|
function TooltipContent({
|
|
5326
5436
|
className,
|
|
@@ -5331,7 +5441,7 @@ function TooltipContent({
|
|
|
5331
5441
|
children,
|
|
5332
5442
|
...props
|
|
5333
5443
|
}) {
|
|
5334
|
-
return /* @__PURE__ */
|
|
5444
|
+
return /* @__PURE__ */ jsx43(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx43(
|
|
5335
5445
|
TooltipPrimitive.Positioner,
|
|
5336
5446
|
{
|
|
5337
5447
|
align,
|
|
@@ -5343,14 +5453,14 @@ function TooltipContent({
|
|
|
5343
5453
|
TooltipPrimitive.Popup,
|
|
5344
5454
|
{
|
|
5345
5455
|
"data-slot": "tooltip-content",
|
|
5346
|
-
className:
|
|
5456
|
+
className: cn41(
|
|
5347
5457
|
"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
5348
5458
|
className
|
|
5349
5459
|
),
|
|
5350
5460
|
...props,
|
|
5351
5461
|
children: [
|
|
5352
5462
|
children,
|
|
5353
|
-
/* @__PURE__ */
|
|
5463
|
+
/* @__PURE__ */ jsx43(TooltipPrimitive.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
|
|
5354
5464
|
]
|
|
5355
5465
|
}
|
|
5356
5466
|
)
|
|
@@ -5359,8 +5469,9 @@ function TooltipContent({
|
|
|
5359
5469
|
}
|
|
5360
5470
|
|
|
5361
5471
|
// src/ui/reui/filters.tsx
|
|
5472
|
+
import { cn as cn42 } from "cn";
|
|
5362
5473
|
import { AlertCircleIcon, CheckIcon as CheckIcon2, PlusIcon, XIcon } from "lucide-react";
|
|
5363
|
-
import { Fragment as Fragment4, jsx as
|
|
5474
|
+
import { Fragment as Fragment4, jsx as jsx44, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5364
5475
|
var DEFAULT_I18N = {
|
|
5365
5476
|
// UI Labels
|
|
5366
5477
|
addFilter: "Filter",
|
|
@@ -5467,10 +5578,10 @@ function FilterInput({
|
|
|
5467
5578
|
...props
|
|
5468
5579
|
}) {
|
|
5469
5580
|
const context = useFilterContext();
|
|
5470
|
-
const [isValid, setIsValid] =
|
|
5471
|
-
const [validationMessage, setValidationMessage] =
|
|
5581
|
+
const [isValid, setIsValid] = useState9(true);
|
|
5582
|
+
const [validationMessage, setValidationMessage] = useState9("");
|
|
5472
5583
|
const inputRef = useRef4(null);
|
|
5473
|
-
|
|
5584
|
+
useEffect7(() => {
|
|
5474
5585
|
if (props.autoFocus) {
|
|
5475
5586
|
const timer = setTimeout(() => {
|
|
5476
5587
|
inputRef.current?.focus();
|
|
@@ -5529,7 +5640,7 @@ function FilterInput({
|
|
|
5529
5640
|
return /* @__PURE__ */ jsxs24(
|
|
5530
5641
|
InputGroup,
|
|
5531
5642
|
{
|
|
5532
|
-
className:
|
|
5643
|
+
className: cn42(
|
|
5533
5644
|
"w-36",
|
|
5534
5645
|
// Height follows each style's own control ladder. `default` sets no
|
|
5535
5646
|
// height on purpose so the style's `.cn-input-group` applies (h-8 nova,
|
|
@@ -5544,8 +5655,8 @@ function FilterInput({
|
|
|
5544
5655
|
className
|
|
5545
5656
|
),
|
|
5546
5657
|
children: [
|
|
5547
|
-
field?.prefix && /* @__PURE__ */
|
|
5548
|
-
/* @__PURE__ */
|
|
5658
|
+
field?.prefix && /* @__PURE__ */ jsx44(InputGroupAddon, { children: /* @__PURE__ */ jsx44(InputGroupText, { children: field.prefix }) }),
|
|
5659
|
+
/* @__PURE__ */ jsx44(
|
|
5549
5660
|
InputGroupInput,
|
|
5550
5661
|
{
|
|
5551
5662
|
ref: inputRef,
|
|
@@ -5553,29 +5664,29 @@ function FilterInput({
|
|
|
5553
5664
|
"aria-describedby": !isValid && validationMessage ? `${field?.key || "input"}-error` : void 0,
|
|
5554
5665
|
onBlur: handleBlur,
|
|
5555
5666
|
onKeyDown: handleKeyDown,
|
|
5556
|
-
className:
|
|
5667
|
+
className: cn42(
|
|
5557
5668
|
context.size == "sm" && "h-7! text-xs",
|
|
5558
5669
|
context.size == "lg" && "h-9!"
|
|
5559
5670
|
),
|
|
5560
5671
|
...props
|
|
5561
5672
|
}
|
|
5562
5673
|
),
|
|
5563
|
-
!isValid && validationMessage && /* @__PURE__ */
|
|
5564
|
-
/* @__PURE__ */
|
|
5565
|
-
/* @__PURE__ */
|
|
5674
|
+
!isValid && validationMessage && /* @__PURE__ */ jsx44(InputGroupAddon, { align: "inline-end", children: /* @__PURE__ */ jsxs24(Tooltip2, { children: [
|
|
5675
|
+
/* @__PURE__ */ jsx44(TooltipTrigger, { render: /* @__PURE__ */ jsx44(InputGroupButton, { size: "icon-xs" }), children: /* @__PURE__ */ jsx44(AlertCircleIcon, { className: "size-3.5 text-destructive" }) }),
|
|
5676
|
+
/* @__PURE__ */ jsx44(TooltipContent, { children: /* @__PURE__ */ jsx44("p", { className: "text-sm", children: validationMessage }) })
|
|
5566
5677
|
] }) }),
|
|
5567
|
-
field?.suffix && /* @__PURE__ */
|
|
5678
|
+
field?.suffix && /* @__PURE__ */ jsx44(InputGroupAddon, { align: "inline-end", children: /* @__PURE__ */ jsx44(InputGroupText, { children: field.suffix }) })
|
|
5568
5679
|
]
|
|
5569
5680
|
}
|
|
5570
5681
|
);
|
|
5571
5682
|
}
|
|
5572
5683
|
function FilterRemoveButton({
|
|
5573
5684
|
className,
|
|
5574
|
-
icon = /* @__PURE__ */
|
|
5685
|
+
icon = /* @__PURE__ */ jsx44(XIcon, {}),
|
|
5575
5686
|
...props
|
|
5576
5687
|
}) {
|
|
5577
5688
|
const context = useFilterContext();
|
|
5578
|
-
return /* @__PURE__ */
|
|
5689
|
+
return /* @__PURE__ */ jsx44(
|
|
5579
5690
|
Button,
|
|
5580
5691
|
{
|
|
5581
5692
|
variant: "outline",
|
|
@@ -5633,9 +5744,9 @@ function useFieldOptions(field, searchInput, enabled) {
|
|
|
5633
5744
|
cache.set(opt.value, opt);
|
|
5634
5745
|
}
|
|
5635
5746
|
}
|
|
5636
|
-
const [state, setState] =
|
|
5637
|
-
const [debouncedQuery, setDebouncedQuery] =
|
|
5638
|
-
|
|
5747
|
+
const [state, setState] = useState9(() => ({ options: field.options ?? [], loading: false, error: false }));
|
|
5748
|
+
const [debouncedQuery, setDebouncedQuery] = useState9(searchInput);
|
|
5749
|
+
useEffect7(() => {
|
|
5639
5750
|
if (!isAsync) return;
|
|
5640
5751
|
const timer = setTimeout(() => setDebouncedQuery(searchInput), 250);
|
|
5641
5752
|
return () => clearTimeout(timer);
|
|
@@ -5643,7 +5754,7 @@ function useFieldOptions(field, searchInput, enabled) {
|
|
|
5643
5754
|
const requestIdRef = useRef4(0);
|
|
5644
5755
|
const loaderRef = useRef4(field.loadOptions);
|
|
5645
5756
|
loaderRef.current = field.loadOptions;
|
|
5646
|
-
|
|
5757
|
+
useEffect7(() => {
|
|
5647
5758
|
if (!isAsync || !enabled) return;
|
|
5648
5759
|
const loader = loaderRef.current;
|
|
5649
5760
|
if (!loader) return;
|
|
@@ -5663,7 +5774,7 @@ function useFieldOptions(field, searchInput, enabled) {
|
|
|
5663
5774
|
cancelled = true;
|
|
5664
5775
|
};
|
|
5665
5776
|
}, [isAsync, enabled, debouncedQuery]);
|
|
5666
|
-
const resolveSelected =
|
|
5777
|
+
const resolveSelected = useCallback5(
|
|
5667
5778
|
(values) => {
|
|
5668
5779
|
const cache = getFieldOptionCache(field);
|
|
5669
5780
|
return values.map(
|
|
@@ -5747,10 +5858,10 @@ function FilterOperatorDropdown({
|
|
|
5747
5858
|
);
|
|
5748
5859
|
const operatorLabel = operators.find((op) => op.value === operator)?.label || context.i18n.helpers.formatOperator(operator);
|
|
5749
5860
|
return /* @__PURE__ */ jsxs24(DropdownMenu, { children: [
|
|
5750
|
-
/* @__PURE__ */
|
|
5861
|
+
/* @__PURE__ */ jsx44(
|
|
5751
5862
|
DropdownMenuTrigger,
|
|
5752
5863
|
{
|
|
5753
|
-
render: /* @__PURE__ */
|
|
5864
|
+
render: /* @__PURE__ */ jsx44(
|
|
5754
5865
|
Button,
|
|
5755
5866
|
{
|
|
5756
5867
|
variant: "outline",
|
|
@@ -5761,19 +5872,19 @@ function FilterOperatorDropdown({
|
|
|
5761
5872
|
)
|
|
5762
5873
|
}
|
|
5763
5874
|
),
|
|
5764
|
-
/* @__PURE__ */
|
|
5875
|
+
/* @__PURE__ */ jsx44(DropdownMenuContent, { align: "start", className: "w-fit min-w-fit", children: operators.map((op) => /* @__PURE__ */ jsxs24(
|
|
5765
5876
|
DropdownMenuItem,
|
|
5766
5877
|
{
|
|
5767
5878
|
onClick: () => onChange(op.value),
|
|
5768
|
-
className:
|
|
5879
|
+
className: cn42(
|
|
5769
5880
|
"flex items-center justify-between data-highlighted:bg-accent data-highlighted:text-accent-foreground"
|
|
5770
5881
|
),
|
|
5771
5882
|
children: [
|
|
5772
|
-
/* @__PURE__ */
|
|
5773
|
-
/* @__PURE__ */
|
|
5883
|
+
/* @__PURE__ */ jsx44("span", { children: op.label }),
|
|
5884
|
+
/* @__PURE__ */ jsx44(
|
|
5774
5885
|
CheckIcon2,
|
|
5775
5886
|
{
|
|
5776
|
-
className:
|
|
5887
|
+
className: cn42(
|
|
5777
5888
|
"ms-auto text-primary",
|
|
5778
5889
|
op.value === operator ? "opacity-100" : "opacity-0"
|
|
5779
5890
|
)
|
|
@@ -5792,21 +5903,21 @@ function SelectOptionsPopover({
|
|
|
5792
5903
|
onClose,
|
|
5793
5904
|
inline = false
|
|
5794
5905
|
}) {
|
|
5795
|
-
const [open, setOpen] =
|
|
5796
|
-
const [searchInput, setSearchInput] =
|
|
5797
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
5906
|
+
const [open, setOpen] = useState9(false);
|
|
5907
|
+
const [searchInput, setSearchInput] = useState9("");
|
|
5908
|
+
const [highlightedIndex, setHighlightedIndex] = useState9(-1);
|
|
5798
5909
|
const inputRef = useRef4(null);
|
|
5799
5910
|
const context = useFilterContext();
|
|
5800
5911
|
const baseId = useId4();
|
|
5801
|
-
|
|
5912
|
+
useEffect7(() => {
|
|
5802
5913
|
if (open) {
|
|
5803
5914
|
inputRef.current?.focus();
|
|
5804
5915
|
}
|
|
5805
5916
|
}, [open]);
|
|
5806
|
-
|
|
5917
|
+
useEffect7(() => {
|
|
5807
5918
|
setHighlightedIndex(-1);
|
|
5808
5919
|
}, [searchInput, open]);
|
|
5809
|
-
|
|
5920
|
+
useEffect7(() => {
|
|
5810
5921
|
if (highlightedIndex >= 0 && open) {
|
|
5811
5922
|
const element = document.getElementById(
|
|
5812
5923
|
`${baseId}-item-${highlightedIndex}`
|
|
@@ -5863,7 +5974,7 @@ function SelectOptionsPopover({
|
|
|
5863
5974
|
"data-highlighted": isHighlighted || void 0,
|
|
5864
5975
|
onMouseEnter: () => setHighlightedIndex(overallIndex),
|
|
5865
5976
|
checked: isSelected,
|
|
5866
|
-
className:
|
|
5977
|
+
className: cn42(
|
|
5867
5978
|
"data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
5868
5979
|
option.className
|
|
5869
5980
|
),
|
|
@@ -5873,7 +5984,7 @@ function SelectOptionsPopover({
|
|
|
5873
5984
|
onCheckedChange: () => toggleOption(option),
|
|
5874
5985
|
children: [
|
|
5875
5986
|
option.icon && option.icon,
|
|
5876
|
-
/* @__PURE__ */
|
|
5987
|
+
/* @__PURE__ */ jsx44("span", { className: "truncate", children: option.label })
|
|
5877
5988
|
]
|
|
5878
5989
|
},
|
|
5879
5990
|
String(option.value)
|
|
@@ -5881,7 +5992,7 @@ function SelectOptionsPopover({
|
|
|
5881
5992
|
};
|
|
5882
5993
|
const renderMenuContent = () => /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
5883
5994
|
field.searchable !== false && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
5884
|
-
/* @__PURE__ */
|
|
5995
|
+
/* @__PURE__ */ jsx44(
|
|
5885
5996
|
Input,
|
|
5886
5997
|
{
|
|
5887
5998
|
ref: inputRef,
|
|
@@ -5894,7 +6005,7 @@ function SelectOptionsPopover({
|
|
|
5894
6005
|
placeholder: context.i18n.placeholders.searchField(
|
|
5895
6006
|
field.label || ""
|
|
5896
6007
|
),
|
|
5897
|
-
className:
|
|
6008
|
+
className: cn42(
|
|
5898
6009
|
"h-8 rounded-none border-0 border-input bg-transparent! px-2 text-sm shadow-none",
|
|
5899
6010
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
5900
6011
|
open && "placeholder:text-foreground"
|
|
@@ -5942,24 +6053,24 @@ function SelectOptionsPopover({
|
|
|
5942
6053
|
}
|
|
5943
6054
|
}
|
|
5944
6055
|
),
|
|
5945
|
-
/* @__PURE__ */
|
|
6056
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {})
|
|
5946
6057
|
] }),
|
|
5947
|
-
/* @__PURE__ */
|
|
6058
|
+
/* @__PURE__ */ jsx44("div", { className: "relative flex max-h-full", children: /* @__PURE__ */ jsx44(
|
|
5948
6059
|
"div",
|
|
5949
6060
|
{
|
|
5950
6061
|
className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain",
|
|
5951
6062
|
role: "listbox",
|
|
5952
6063
|
id: `${baseId}-listbox`,
|
|
5953
|
-
children: isAsync && loading && allFilteredOptions.length === 0 ? /* @__PURE__ */
|
|
6064
|
+
children: isAsync && loading && allFilteredOptions.length === 0 ? /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: context.i18n.loadingOptions ?? DEFAULT_I18N.loadingOptions }) : isAsync && error ? /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: context.i18n.errorLoadingOptions ?? DEFAULT_I18N.errorLoadingOptions }) : allFilteredOptions.length === 0 ? /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: context.i18n.noResultsFound }) : field.renderOptionList ? field.renderOptionList({
|
|
5954
6065
|
options: allFilteredOptions,
|
|
5955
6066
|
highlightedIndex,
|
|
5956
6067
|
renderOption: renderOptionItem
|
|
5957
6068
|
}) : /* @__PURE__ */ jsxs24(ScrollArea, { className: "size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 **:data-[slot=scroll-area-viewport]:h-full **:data-[slot=scroll-area-viewport]:overscroll-contain", children: [
|
|
5958
|
-
filteredSelectedOptions.length > 0 && /* @__PURE__ */
|
|
6069
|
+
filteredSelectedOptions.length > 0 && /* @__PURE__ */ jsx44(DropdownMenuGroup, { className: "px-1", children: filteredSelectedOptions.map(
|
|
5959
6070
|
(option, index) => renderOptionItem(option, index)
|
|
5960
6071
|
) }),
|
|
5961
|
-
filteredSelectedOptions.length > 0 && filteredUnselectedOptions.length > 0 && /* @__PURE__ */
|
|
5962
|
-
filteredUnselectedOptions.length > 0 && /* @__PURE__ */
|
|
6072
|
+
filteredSelectedOptions.length > 0 && filteredUnselectedOptions.length > 0 && /* @__PURE__ */ jsx44(DropdownMenuSeparator, { className: "mx-0" }),
|
|
6073
|
+
filteredUnselectedOptions.length > 0 && /* @__PURE__ */ jsx44(DropdownMenuGroup, { className: "px-1", children: filteredUnselectedOptions.map(
|
|
5963
6074
|
(option, index) => renderOptionItem(
|
|
5964
6075
|
option,
|
|
5965
6076
|
index + filteredSelectedOptions.length
|
|
@@ -5970,7 +6081,7 @@ function SelectOptionsPopover({
|
|
|
5970
6081
|
) })
|
|
5971
6082
|
] });
|
|
5972
6083
|
if (inline) {
|
|
5973
|
-
return /* @__PURE__ */
|
|
6084
|
+
return /* @__PURE__ */ jsx44("div", { className: "w-full", children: renderMenuContent() });
|
|
5974
6085
|
}
|
|
5975
6086
|
return /* @__PURE__ */ jsxs24(
|
|
5976
6087
|
DropdownMenu,
|
|
@@ -5983,23 +6094,23 @@ function SelectOptionsPopover({
|
|
|
5983
6094
|
}
|
|
5984
6095
|
},
|
|
5985
6096
|
children: [
|
|
5986
|
-
/* @__PURE__ */
|
|
6097
|
+
/* @__PURE__ */ jsx44(
|
|
5987
6098
|
DropdownMenuTrigger,
|
|
5988
6099
|
{
|
|
5989
|
-
render: /* @__PURE__ */
|
|
6100
|
+
render: /* @__PURE__ */ jsx44(Button, { variant: "outline", size: context.size, children: /* @__PURE__ */ jsx44("div", { className: "flex items-center gap-1.5", children: field.customValueRenderer ? field.customValueRenderer(
|
|
5990
6101
|
values,
|
|
5991
6102
|
isAsync ? resolveSelected(values) : field.options || []
|
|
5992
6103
|
) : /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
5993
|
-
selectedOptions.length > 0 && /* @__PURE__ */
|
|
6104
|
+
selectedOptions.length > 0 && /* @__PURE__ */ jsx44("div", { className: "flex items-center -space-x-1.5", children: selectedOptions.slice(0, 3).map((option) => /* @__PURE__ */ jsx44("div", { children: option.icon }, String(option.value))) }),
|
|
5994
6105
|
selectedOptions.length === 1 ? selectedOptions[0].label : selectedOptions.length > 1 ? `${selectedOptions.length} ${context.i18n.selectedCount}` : context.i18n.select
|
|
5995
6106
|
] }) }) })
|
|
5996
6107
|
}
|
|
5997
6108
|
),
|
|
5998
|
-
/* @__PURE__ */
|
|
6109
|
+
/* @__PURE__ */ jsx44(
|
|
5999
6110
|
DropdownMenuContent,
|
|
6000
6111
|
{
|
|
6001
6112
|
align: "start",
|
|
6002
|
-
className:
|
|
6113
|
+
className: cn42("w-50 px-0", field.className),
|
|
6003
6114
|
children: renderMenuContent()
|
|
6004
6115
|
}
|
|
6005
6116
|
)
|
|
@@ -6018,10 +6129,10 @@ function FilterValueSelector({
|
|
|
6018
6129
|
return null;
|
|
6019
6130
|
}
|
|
6020
6131
|
if (field.customRenderer) {
|
|
6021
|
-
return /* @__PURE__ */
|
|
6132
|
+
return /* @__PURE__ */ jsx44(ButtonGroupText, { className: "bg-background text-start whitespace-nowrap outline-hidden hover:bg-accent aria-expanded:bg-accent dark:bg-input/30", children: field.customRenderer({ field, values, onChange, operator }) });
|
|
6022
6133
|
}
|
|
6023
6134
|
if (field.type === "text") {
|
|
6024
|
-
return /* @__PURE__ */
|
|
6135
|
+
return /* @__PURE__ */ jsx44(
|
|
6025
6136
|
FilterInput,
|
|
6026
6137
|
{
|
|
6027
6138
|
type: "text",
|
|
@@ -6030,15 +6141,15 @@ function FilterValueSelector({
|
|
|
6030
6141
|
placeholder: field.placeholder,
|
|
6031
6142
|
pattern: field.pattern,
|
|
6032
6143
|
field,
|
|
6033
|
-
className:
|
|
6144
|
+
className: cn42("w-36", field.className),
|
|
6034
6145
|
autoFocus
|
|
6035
6146
|
}
|
|
6036
6147
|
);
|
|
6037
6148
|
}
|
|
6038
6149
|
if (field.type === "select" || field.type === "multiselect") {
|
|
6039
|
-
return /* @__PURE__ */
|
|
6150
|
+
return /* @__PURE__ */ jsx44(SelectOptionsPopover, { field, values, onChange });
|
|
6040
6151
|
}
|
|
6041
|
-
return /* @__PURE__ */
|
|
6152
|
+
return /* @__PURE__ */ jsx44(SelectOptionsPopover, { field, values, onChange });
|
|
6042
6153
|
}
|
|
6043
6154
|
var FiltersContent = ({
|
|
6044
6155
|
filters,
|
|
@@ -6047,7 +6158,7 @@ var FiltersContent = ({
|
|
|
6047
6158
|
}) => {
|
|
6048
6159
|
const context = useFilterContext();
|
|
6049
6160
|
const fieldsMap = useMemo4(() => getFieldsMap(fields), [fields]);
|
|
6050
|
-
const updateFilter =
|
|
6161
|
+
const updateFilter = useCallback5(
|
|
6051
6162
|
(filterId, updates) => {
|
|
6052
6163
|
onChange(
|
|
6053
6164
|
filters.map((filter) => {
|
|
@@ -6064,16 +6175,16 @@ var FiltersContent = ({
|
|
|
6064
6175
|
},
|
|
6065
6176
|
[filters, onChange]
|
|
6066
6177
|
);
|
|
6067
|
-
const removeFilter =
|
|
6178
|
+
const removeFilter = useCallback5(
|
|
6068
6179
|
(filterId) => {
|
|
6069
6180
|
onChange(filters.filter((filter) => filter.id !== filterId));
|
|
6070
6181
|
},
|
|
6071
6182
|
[filters, onChange]
|
|
6072
6183
|
);
|
|
6073
|
-
return /* @__PURE__ */
|
|
6184
|
+
return /* @__PURE__ */ jsx44(
|
|
6074
6185
|
"div",
|
|
6075
6186
|
{
|
|
6076
|
-
className:
|
|
6187
|
+
className: cn42(
|
|
6077
6188
|
filtersContainerVariants({
|
|
6078
6189
|
variant: context.variant,
|
|
6079
6190
|
size: context.size
|
|
@@ -6092,7 +6203,7 @@ var FiltersContent = ({
|
|
|
6092
6203
|
field.icon && field.icon,
|
|
6093
6204
|
field.label
|
|
6094
6205
|
] }),
|
|
6095
|
-
/* @__PURE__ */
|
|
6206
|
+
/* @__PURE__ */ jsx44(
|
|
6096
6207
|
FilterOperatorDropdown,
|
|
6097
6208
|
{
|
|
6098
6209
|
field,
|
|
@@ -6101,7 +6212,7 @@ var FiltersContent = ({
|
|
|
6101
6212
|
onChange: (operator) => updateFilter(filter.id, { operator })
|
|
6102
6213
|
}
|
|
6103
6214
|
),
|
|
6104
|
-
/* @__PURE__ */
|
|
6215
|
+
/* @__PURE__ */ jsx44(
|
|
6105
6216
|
FilterValueSelector,
|
|
6106
6217
|
{
|
|
6107
6218
|
field,
|
|
@@ -6111,7 +6222,7 @@ var FiltersContent = ({
|
|
|
6111
6222
|
autoFocus: false
|
|
6112
6223
|
}
|
|
6113
6224
|
),
|
|
6114
|
-
/* @__PURE__ */
|
|
6225
|
+
/* @__PURE__ */ jsx44(FilterRemoveButton, { onClick: () => removeFilter(filter.id) })
|
|
6115
6226
|
]
|
|
6116
6227
|
},
|
|
6117
6228
|
filter.id
|
|
@@ -6131,8 +6242,8 @@ function FilterSubmenuContent({
|
|
|
6131
6242
|
onBack,
|
|
6132
6243
|
onClose
|
|
6133
6244
|
}) {
|
|
6134
|
-
const [searchInput, setSearchInput] =
|
|
6135
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
6245
|
+
const [searchInput, setSearchInput] = useState9("");
|
|
6246
|
+
const [highlightedIndex, setHighlightedIndex] = useState9(-1);
|
|
6136
6247
|
const inputRef = useRef4(null);
|
|
6137
6248
|
const baseId = useId4();
|
|
6138
6249
|
const {
|
|
@@ -6142,7 +6253,7 @@ function FilterSubmenuContent({
|
|
|
6142
6253
|
error,
|
|
6143
6254
|
resolveSelected
|
|
6144
6255
|
} = useFieldOptions(field, searchInput, true);
|
|
6145
|
-
|
|
6256
|
+
useEffect7(() => {
|
|
6146
6257
|
if (isActive) {
|
|
6147
6258
|
if (field.searchable !== false) {
|
|
6148
6259
|
inputRef.current?.focus();
|
|
@@ -6152,10 +6263,10 @@ function FilterSubmenuContent({
|
|
|
6152
6263
|
}
|
|
6153
6264
|
}
|
|
6154
6265
|
}, [isActive, field.searchable, baseId]);
|
|
6155
|
-
|
|
6266
|
+
useEffect7(() => {
|
|
6156
6267
|
setHighlightedIndex(-1);
|
|
6157
6268
|
}, [searchInput]);
|
|
6158
|
-
|
|
6269
|
+
useEffect7(() => {
|
|
6159
6270
|
if (highlightedIndex >= 0 && isActive) {
|
|
6160
6271
|
const element = document.getElementById(
|
|
6161
6272
|
`${baseId}-item-${highlightedIndex}`
|
|
@@ -6198,7 +6309,7 @@ function FilterSubmenuContent({
|
|
|
6198
6309
|
"data-highlighted": isHighlighted || void 0,
|
|
6199
6310
|
onMouseEnter: () => setHighlightedIndex(index),
|
|
6200
6311
|
checked: isSelected,
|
|
6201
|
-
className:
|
|
6312
|
+
className: cn42(
|
|
6202
6313
|
"data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
6203
6314
|
option.className
|
|
6204
6315
|
),
|
|
@@ -6208,20 +6319,20 @@ function FilterSubmenuContent({
|
|
|
6208
6319
|
onCheckedChange: () => onToggle(option.value, isSelected),
|
|
6209
6320
|
children: [
|
|
6210
6321
|
option.icon && option.icon,
|
|
6211
|
-
/* @__PURE__ */
|
|
6322
|
+
/* @__PURE__ */ jsx44("span", { className: "truncate", children: option.label })
|
|
6212
6323
|
]
|
|
6213
6324
|
},
|
|
6214
6325
|
String(option.value)
|
|
6215
6326
|
);
|
|
6216
6327
|
};
|
|
6217
|
-
|
|
6328
|
+
useEffect7(() => {
|
|
6218
6329
|
if (isActive && filteredOptions.length > 0) {
|
|
6219
6330
|
setHighlightedIndex(0);
|
|
6220
6331
|
}
|
|
6221
6332
|
}, [isActive, filteredOptions.length]);
|
|
6222
6333
|
return /* @__PURE__ */ jsxs24("div", { className: "flex flex-col", onMouseEnter: onActive, children: [
|
|
6223
6334
|
field.searchable !== false && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6224
|
-
/* @__PURE__ */
|
|
6335
|
+
/* @__PURE__ */ jsx44(
|
|
6225
6336
|
Input,
|
|
6226
6337
|
{
|
|
6227
6338
|
ref: inputRef,
|
|
@@ -6232,7 +6343,7 @@ function FilterSubmenuContent({
|
|
|
6232
6343
|
"aria-controls": `${baseId}-listbox`,
|
|
6233
6344
|
"aria-activedescendant": highlightedIndex >= 0 ? `${baseId}-item-${highlightedIndex}` : void 0,
|
|
6234
6345
|
placeholder: i18n.placeholders.searchField(field.label || ""),
|
|
6235
|
-
className:
|
|
6346
|
+
className: cn42(
|
|
6236
6347
|
"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none",
|
|
6237
6348
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6238
6349
|
isActive && "placeholder:text-foreground"
|
|
@@ -6284,9 +6395,9 @@ function FilterSubmenuContent({
|
|
|
6284
6395
|
}
|
|
6285
6396
|
}
|
|
6286
6397
|
),
|
|
6287
|
-
/* @__PURE__ */
|
|
6398
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {})
|
|
6288
6399
|
] }),
|
|
6289
|
-
/* @__PURE__ */
|
|
6400
|
+
/* @__PURE__ */ jsx44("div", { className: "relative flex max-h-full", children: /* @__PURE__ */ jsx44(
|
|
6290
6401
|
"div",
|
|
6291
6402
|
{
|
|
6292
6403
|
className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain outline-hidden",
|
|
@@ -6331,11 +6442,11 @@ function FilterSubmenuContent({
|
|
|
6331
6442
|
e.stopPropagation();
|
|
6332
6443
|
}
|
|
6333
6444
|
},
|
|
6334
|
-
children: isAsync && loading && filteredOptions.length === 0 ? /* @__PURE__ */
|
|
6445
|
+
children: isAsync && loading && filteredOptions.length === 0 ? /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: i18n.loadingOptions ?? DEFAULT_I18N.loadingOptions }) : isAsync && error ? /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: i18n.errorLoadingOptions ?? DEFAULT_I18N.errorLoadingOptions }) : filteredOptions.length === 0 ? /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: i18n.noResultsFound }) : field.renderOptionList ? field.renderOptionList({
|
|
6335
6446
|
options: filteredOptions,
|
|
6336
6447
|
highlightedIndex,
|
|
6337
6448
|
renderOption: renderOptionItem
|
|
6338
|
-
}) : /* @__PURE__ */
|
|
6449
|
+
}) : /* @__PURE__ */ jsx44(ScrollArea, { className: "size-full min-h-0 **:data-[slot=scroll-area-scrollbar]:m-0 **:data-[slot=scroll-area-viewport]:h-full **:data-[slot=scroll-area-viewport]:overscroll-contain", children: /* @__PURE__ */ jsx44(DropdownMenuGroup, { children: filteredOptions.map(
|
|
6339
6450
|
(option, index) => renderOptionItem(option, index)
|
|
6340
6451
|
) }) })
|
|
6341
6452
|
}
|
|
@@ -6359,17 +6470,17 @@ function Filters({
|
|
|
6359
6470
|
shortcutKey = "f",
|
|
6360
6471
|
shortcutLabel = "F"
|
|
6361
6472
|
}) {
|
|
6362
|
-
const [addFilterOpen, setAddFilterOpen] =
|
|
6363
|
-
const [menuSearchInput, setMenuSearchInput] =
|
|
6364
|
-
const [activeMenu, setActiveMenu] =
|
|
6365
|
-
const [openSubMenu, setOpenSubMenu] =
|
|
6366
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
6367
|
-
const [lastAddedFilterId, setLastAddedFilterId] =
|
|
6473
|
+
const [addFilterOpen, setAddFilterOpen] = useState9(false);
|
|
6474
|
+
const [menuSearchInput, setMenuSearchInput] = useState9("");
|
|
6475
|
+
const [activeMenu, setActiveMenu] = useState9("root");
|
|
6476
|
+
const [openSubMenu, setOpenSubMenu] = useState9(null);
|
|
6477
|
+
const [highlightedIndex, setHighlightedIndex] = useState9(-1);
|
|
6478
|
+
const [lastAddedFilterId, setLastAddedFilterId] = useState9(
|
|
6368
6479
|
null
|
|
6369
6480
|
);
|
|
6370
6481
|
const rootInputRef = useRef4(null);
|
|
6371
6482
|
const rootId = useId4();
|
|
6372
|
-
|
|
6483
|
+
useEffect7(() => {
|
|
6373
6484
|
if (!enableShortcut) return;
|
|
6374
6485
|
const handleKeyDown = (e) => {
|
|
6375
6486
|
if (e.key.toLowerCase() === shortcutKey.toLowerCase() && !addFilterOpen && !(document.activeElement instanceof HTMLInputElement || document.activeElement instanceof HTMLTextAreaElement)) {
|
|
@@ -6380,15 +6491,15 @@ function Filters({
|
|
|
6380
6491
|
window.addEventListener("keydown", handleKeyDown);
|
|
6381
6492
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
6382
6493
|
}, [enableShortcut, shortcutKey, addFilterOpen]);
|
|
6383
|
-
|
|
6494
|
+
useEffect7(() => {
|
|
6384
6495
|
if (addFilterOpen && activeMenu === "root") {
|
|
6385
6496
|
rootInputRef.current?.focus();
|
|
6386
6497
|
}
|
|
6387
6498
|
}, [addFilterOpen, activeMenu]);
|
|
6388
|
-
|
|
6499
|
+
useEffect7(() => {
|
|
6389
6500
|
setHighlightedIndex(-1);
|
|
6390
6501
|
}, [menuSearchInput]);
|
|
6391
|
-
|
|
6502
|
+
useEffect7(() => {
|
|
6392
6503
|
if (highlightedIndex >= 0 && addFilterOpen) {
|
|
6393
6504
|
const element = document.getElementById(
|
|
6394
6505
|
`${rootId}-item-${highlightedIndex}`
|
|
@@ -6396,13 +6507,13 @@ function Filters({
|
|
|
6396
6507
|
element?.scrollIntoView({ block: "nearest" });
|
|
6397
6508
|
}
|
|
6398
6509
|
}, [highlightedIndex, addFilterOpen, rootId]);
|
|
6399
|
-
|
|
6510
|
+
useEffect7(() => {
|
|
6400
6511
|
if (!addFilterOpen) {
|
|
6401
6512
|
setOpenSubMenu(null);
|
|
6402
6513
|
}
|
|
6403
6514
|
}, [addFilterOpen]);
|
|
6404
|
-
const [sessionFilterIds, setSessionFilterIds] =
|
|
6405
|
-
|
|
6515
|
+
const [sessionFilterIds, setSessionFilterIds] = useState9({});
|
|
6516
|
+
useEffect7(() => {
|
|
6406
6517
|
if (lastAddedFilterId) {
|
|
6407
6518
|
const timer = setTimeout(() => {
|
|
6408
6519
|
setLastAddedFilterId(null);
|
|
@@ -6421,7 +6532,7 @@ function Filters({
|
|
|
6421
6532
|
[i18n]
|
|
6422
6533
|
);
|
|
6423
6534
|
const fieldsMap = useMemo4(() => getFieldsMap(fields), [fields]);
|
|
6424
|
-
const updateFilter =
|
|
6535
|
+
const updateFilter = useCallback5(
|
|
6425
6536
|
(filterId, updates) => {
|
|
6426
6537
|
onChange(
|
|
6427
6538
|
filters.map((filter) => {
|
|
@@ -6438,13 +6549,13 @@ function Filters({
|
|
|
6438
6549
|
},
|
|
6439
6550
|
[filters, onChange]
|
|
6440
6551
|
);
|
|
6441
|
-
const removeFilter =
|
|
6552
|
+
const removeFilter = useCallback5(
|
|
6442
6553
|
(filterId) => {
|
|
6443
6554
|
onChange(filters.filter((filter) => filter.id !== filterId));
|
|
6444
6555
|
},
|
|
6445
6556
|
[filters, onChange]
|
|
6446
6557
|
);
|
|
6447
|
-
const addFilter =
|
|
6558
|
+
const addFilter = useCallback5(
|
|
6448
6559
|
(fieldKey) => {
|
|
6449
6560
|
const field = fieldsMap[fieldKey];
|
|
6450
6561
|
if (field && field.key) {
|
|
@@ -6476,14 +6587,14 @@ function Filters({
|
|
|
6476
6587
|
(f) => !menuSearchInput || f.label?.toLowerCase().includes(menuSearchInput.toLowerCase())
|
|
6477
6588
|
);
|
|
6478
6589
|
}, [selectableFields, menuSearchInput]);
|
|
6479
|
-
|
|
6590
|
+
useEffect7(() => {
|
|
6480
6591
|
if (addFilterOpen && filteredFields.length > 0) {
|
|
6481
6592
|
setHighlightedIndex(0);
|
|
6482
6593
|
}
|
|
6483
6594
|
}, [addFilterOpen, filteredFields.length]);
|
|
6484
6595
|
const triggerButton = useRender5({
|
|
6485
6596
|
render: trigger ?? /* @__PURE__ */ jsxs24(Button, { variant: "outline", children: [
|
|
6486
|
-
/* @__PURE__ */
|
|
6597
|
+
/* @__PURE__ */ jsx44(PlusIcon, {}),
|
|
6487
6598
|
mergedI18n.addFilter
|
|
6488
6599
|
] }),
|
|
6489
6600
|
defaultTagName: "button"
|
|
@@ -6500,10 +6611,10 @@ function Filters({
|
|
|
6500
6611
|
}),
|
|
6501
6612
|
[variant, size, radius, mergedI18n, className, trigger, allowMultiple]
|
|
6502
6613
|
);
|
|
6503
|
-
return /* @__PURE__ */
|
|
6614
|
+
return /* @__PURE__ */ jsx44(FilterContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs24(
|
|
6504
6615
|
"div",
|
|
6505
6616
|
{
|
|
6506
|
-
className:
|
|
6617
|
+
className: cn42(filtersContainerVariants({ variant, size }), className),
|
|
6507
6618
|
children: [
|
|
6508
6619
|
selectableFields.length > 0 && /* @__PURE__ */ jsxs24(
|
|
6509
6620
|
DropdownMenu,
|
|
@@ -6519,16 +6630,16 @@ function Filters({
|
|
|
6519
6630
|
}
|
|
6520
6631
|
},
|
|
6521
6632
|
children: [
|
|
6522
|
-
/* @__PURE__ */
|
|
6633
|
+
/* @__PURE__ */ jsx44(DropdownMenuTrigger, { render: triggerButton }),
|
|
6523
6634
|
/* @__PURE__ */ jsxs24(
|
|
6524
6635
|
DropdownMenuContent,
|
|
6525
6636
|
{
|
|
6526
|
-
className:
|
|
6637
|
+
className: cn42("w-55", menuPopupClassName),
|
|
6527
6638
|
align: "start",
|
|
6528
6639
|
children: [
|
|
6529
6640
|
showSearchInput && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6530
6641
|
/* @__PURE__ */ jsxs24("div", { className: "relative", children: [
|
|
6531
|
-
/* @__PURE__ */
|
|
6642
|
+
/* @__PURE__ */ jsx44(
|
|
6532
6643
|
Input,
|
|
6533
6644
|
{
|
|
6534
6645
|
ref: rootInputRef,
|
|
@@ -6536,7 +6647,7 @@ function Filters({
|
|
|
6536
6647
|
"aria-controls": `${rootId}-listbox`,
|
|
6537
6648
|
"aria-activedescendant": highlightedIndex >= 0 ? `${rootId}-item-${highlightedIndex}` : void 0,
|
|
6538
6649
|
placeholder: mergedI18n.searchFields,
|
|
6539
|
-
className:
|
|
6650
|
+
className: cn42(
|
|
6540
6651
|
"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none",
|
|
6541
6652
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6542
6653
|
activeMenu === "root" && "placeholder:text-foreground"
|
|
@@ -6600,20 +6711,20 @@ function Filters({
|
|
|
6600
6711
|
}
|
|
6601
6712
|
}
|
|
6602
6713
|
),
|
|
6603
|
-
enableShortcut && shortcutLabel && /* @__PURE__ */
|
|
6714
|
+
enableShortcut && shortcutLabel && /* @__PURE__ */ jsx44(Kbd, { className: "absolute top-1/2 right-2 -translate-y-1/2 border bg-background", children: shortcutLabel })
|
|
6604
6715
|
] }),
|
|
6605
|
-
/* @__PURE__ */
|
|
6716
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {})
|
|
6606
6717
|
] }),
|
|
6607
|
-
/* @__PURE__ */
|
|
6718
|
+
/* @__PURE__ */ jsx44("div", { className: "relative flex max-h-full", children: /* @__PURE__ */ jsx44(
|
|
6608
6719
|
"div",
|
|
6609
6720
|
{
|
|
6610
6721
|
className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain",
|
|
6611
6722
|
role: "listbox",
|
|
6612
6723
|
id: `${rootId}-listbox`,
|
|
6613
6724
|
onMouseEnter: () => setActiveMenu("root"),
|
|
6614
|
-
children: /* @__PURE__ */
|
|
6725
|
+
children: /* @__PURE__ */ jsx44(ScrollArea, { className: "**:data-[slot=scroll-area-scrollbar]:m-0", children: (() => {
|
|
6615
6726
|
if (filteredFields.length === 0) {
|
|
6616
|
-
return /* @__PURE__ */
|
|
6727
|
+
return /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: mergedI18n.noFieldsFound });
|
|
6617
6728
|
}
|
|
6618
6729
|
return filteredFields.map((field, index) => {
|
|
6619
6730
|
const isHighlighted = highlightedIndex === index;
|
|
@@ -6654,16 +6765,16 @@ function Filters({
|
|
|
6654
6765
|
className: "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-popup-open:bg-accent data-popup-open:text-accent-foreground",
|
|
6655
6766
|
children: [
|
|
6656
6767
|
field.icon,
|
|
6657
|
-
/* @__PURE__ */
|
|
6768
|
+
/* @__PURE__ */ jsx44("span", { children: field.label })
|
|
6658
6769
|
]
|
|
6659
6770
|
}
|
|
6660
6771
|
),
|
|
6661
|
-
/* @__PURE__ */
|
|
6772
|
+
/* @__PURE__ */ jsx44(
|
|
6662
6773
|
DropdownMenuSubContent,
|
|
6663
6774
|
{
|
|
6664
6775
|
className: "w-50",
|
|
6665
6776
|
side: "right",
|
|
6666
|
-
children: /* @__PURE__ */
|
|
6777
|
+
children: /* @__PURE__ */ jsx44(
|
|
6667
6778
|
FilterSubmenuContent,
|
|
6668
6779
|
{
|
|
6669
6780
|
field,
|
|
@@ -6748,7 +6859,7 @@ function Filters({
|
|
|
6748
6859
|
className: "data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
6749
6860
|
children: [
|
|
6750
6861
|
field.icon,
|
|
6751
|
-
/* @__PURE__ */
|
|
6862
|
+
/* @__PURE__ */ jsx44("span", { children: field.label })
|
|
6752
6863
|
]
|
|
6753
6864
|
},
|
|
6754
6865
|
field.key
|
|
@@ -6775,7 +6886,7 @@ function Filters({
|
|
|
6775
6886
|
field.icon && field.icon,
|
|
6776
6887
|
field.label
|
|
6777
6888
|
] }),
|
|
6778
|
-
/* @__PURE__ */
|
|
6889
|
+
/* @__PURE__ */ jsx44(
|
|
6779
6890
|
FilterOperatorDropdown,
|
|
6780
6891
|
{
|
|
6781
6892
|
field,
|
|
@@ -6784,7 +6895,7 @@ function Filters({
|
|
|
6784
6895
|
onChange: (operator) => updateFilter(filter.id, { operator })
|
|
6785
6896
|
}
|
|
6786
6897
|
),
|
|
6787
|
-
/* @__PURE__ */
|
|
6898
|
+
/* @__PURE__ */ jsx44(
|
|
6788
6899
|
FilterValueSelector,
|
|
6789
6900
|
{
|
|
6790
6901
|
field,
|
|
@@ -6794,7 +6905,7 @@ function Filters({
|
|
|
6794
6905
|
autoFocus: filter.id === lastAddedFilterId
|
|
6795
6906
|
}
|
|
6796
6907
|
),
|
|
6797
|
-
/* @__PURE__ */
|
|
6908
|
+
/* @__PURE__ */ jsx44(FilterRemoveButton, { onClick: () => removeFilter(filter.id) })
|
|
6798
6909
|
]
|
|
6799
6910
|
},
|
|
6800
6911
|
filter.id
|
|
@@ -6819,25 +6930,26 @@ var createFilterGroup = (id, label, fields, initialFilters = []) => ({
|
|
|
6819
6930
|
|
|
6820
6931
|
// src/ui/select.tsx
|
|
6821
6932
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
6933
|
+
import { cn as cn43 } from "cn";
|
|
6822
6934
|
import { Check as Check2, ChevronDown as ChevronDown3, ChevronUp as ChevronUp2 } from "@gravity-ui/icons";
|
|
6823
|
-
import { jsx as
|
|
6935
|
+
import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
6824
6936
|
var Select = SelectPrimitive.Root;
|
|
6825
6937
|
function SelectGroup({ className, ...props }) {
|
|
6826
|
-
return /* @__PURE__ */
|
|
6938
|
+
return /* @__PURE__ */ jsx45(
|
|
6827
6939
|
SelectPrimitive.Group,
|
|
6828
6940
|
{
|
|
6829
6941
|
"data-slot": "select-group",
|
|
6830
|
-
className:
|
|
6942
|
+
className: cn43("scroll-my-1 p-1", className),
|
|
6831
6943
|
...props
|
|
6832
6944
|
}
|
|
6833
6945
|
);
|
|
6834
6946
|
}
|
|
6835
6947
|
function SelectValue({ className, ...props }) {
|
|
6836
|
-
return /* @__PURE__ */
|
|
6948
|
+
return /* @__PURE__ */ jsx45(
|
|
6837
6949
|
SelectPrimitive.Value,
|
|
6838
6950
|
{
|
|
6839
6951
|
"data-slot": "select-value",
|
|
6840
|
-
className:
|
|
6952
|
+
className: cn43("flex flex-1 text-left", className),
|
|
6841
6953
|
...props
|
|
6842
6954
|
}
|
|
6843
6955
|
);
|
|
@@ -6853,17 +6965,17 @@ function SelectTrigger({
|
|
|
6853
6965
|
{
|
|
6854
6966
|
"data-slot": "select-trigger",
|
|
6855
6967
|
"data-size": size,
|
|
6856
|
-
className:
|
|
6968
|
+
className: cn43(
|
|
6857
6969
|
"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-muted-foreground data-[size=default]:h-8 *:data-[slot=select-value]:line-clamp-1 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
6858
6970
|
className
|
|
6859
6971
|
),
|
|
6860
6972
|
...props,
|
|
6861
6973
|
children: [
|
|
6862
6974
|
children,
|
|
6863
|
-
/* @__PURE__ */
|
|
6975
|
+
/* @__PURE__ */ jsx45(
|
|
6864
6976
|
SelectPrimitive.Icon,
|
|
6865
6977
|
{
|
|
6866
|
-
render: /* @__PURE__ */
|
|
6978
|
+
render: /* @__PURE__ */ jsx45(ChevronDown3, { className: "pointer-events-none size-4 text-muted-foreground" })
|
|
6867
6979
|
}
|
|
6868
6980
|
)
|
|
6869
6981
|
]
|
|
@@ -6880,7 +6992,7 @@ function SelectContent({
|
|
|
6880
6992
|
alignItemWithTrigger = true,
|
|
6881
6993
|
...props
|
|
6882
6994
|
}) {
|
|
6883
|
-
return /* @__PURE__ */
|
|
6995
|
+
return /* @__PURE__ */ jsx45(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx45(
|
|
6884
6996
|
SelectPrimitive.Positioner,
|
|
6885
6997
|
{
|
|
6886
6998
|
side,
|
|
@@ -6894,15 +7006,15 @@ function SelectContent({
|
|
|
6894
7006
|
{
|
|
6895
7007
|
"data-slot": "select-content",
|
|
6896
7008
|
"data-align-trigger": alignItemWithTrigger,
|
|
6897
|
-
className:
|
|
7009
|
+
className: cn43(
|
|
6898
7010
|
"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-background text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-open:fade-in-0 data-open:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
6899
7011
|
className
|
|
6900
7012
|
),
|
|
6901
7013
|
...props,
|
|
6902
7014
|
children: [
|
|
6903
|
-
/* @__PURE__ */
|
|
6904
|
-
/* @__PURE__ */
|
|
6905
|
-
/* @__PURE__ */
|
|
7015
|
+
/* @__PURE__ */ jsx45(SelectScrollUpButton, {}),
|
|
7016
|
+
/* @__PURE__ */ jsx45(SelectPrimitive.List, { className: "p-1", children }),
|
|
7017
|
+
/* @__PURE__ */ jsx45(SelectScrollDownButton, {})
|
|
6906
7018
|
]
|
|
6907
7019
|
}
|
|
6908
7020
|
)
|
|
@@ -6913,11 +7025,11 @@ function SelectLabel({
|
|
|
6913
7025
|
className,
|
|
6914
7026
|
...props
|
|
6915
7027
|
}) {
|
|
6916
|
-
return /* @__PURE__ */
|
|
7028
|
+
return /* @__PURE__ */ jsx45(
|
|
6917
7029
|
SelectPrimitive.GroupLabel,
|
|
6918
7030
|
{
|
|
6919
7031
|
"data-slot": "select-label",
|
|
6920
|
-
className:
|
|
7032
|
+
className: cn43("px-1.5 py-1 text-xs text-muted-foreground", className),
|
|
6921
7033
|
...props
|
|
6922
7034
|
}
|
|
6923
7035
|
);
|
|
@@ -6931,18 +7043,18 @@ function SelectItem({
|
|
|
6931
7043
|
SelectPrimitive.Item,
|
|
6932
7044
|
{
|
|
6933
7045
|
"data-slot": "select-item",
|
|
6934
|
-
className:
|
|
7046
|
+
className: cn43(
|
|
6935
7047
|
"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
6936
7048
|
className
|
|
6937
7049
|
),
|
|
6938
7050
|
...props,
|
|
6939
7051
|
children: [
|
|
6940
|
-
/* @__PURE__ */
|
|
6941
|
-
/* @__PURE__ */
|
|
7052
|
+
/* @__PURE__ */ jsx45(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
|
|
7053
|
+
/* @__PURE__ */ jsx45(
|
|
6942
7054
|
SelectPrimitive.ItemIndicator,
|
|
6943
7055
|
{
|
|
6944
|
-
render: /* @__PURE__ */
|
|
6945
|
-
children: /* @__PURE__ */
|
|
7056
|
+
render: /* @__PURE__ */ jsx45("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
|
|
7057
|
+
children: /* @__PURE__ */ jsx45(Check2, { className: "pointer-events-none" })
|
|
6946
7058
|
}
|
|
6947
7059
|
)
|
|
6948
7060
|
]
|
|
@@ -6953,11 +7065,11 @@ function SelectSeparator({
|
|
|
6953
7065
|
className,
|
|
6954
7066
|
...props
|
|
6955
7067
|
}) {
|
|
6956
|
-
return /* @__PURE__ */
|
|
7068
|
+
return /* @__PURE__ */ jsx45(
|
|
6957
7069
|
SelectPrimitive.Separator,
|
|
6958
7070
|
{
|
|
6959
7071
|
"data-slot": "select-separator",
|
|
6960
|
-
className:
|
|
7072
|
+
className: cn43("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
6961
7073
|
...props
|
|
6962
7074
|
}
|
|
6963
7075
|
);
|
|
@@ -6966,16 +7078,16 @@ function SelectScrollUpButton({
|
|
|
6966
7078
|
className,
|
|
6967
7079
|
...props
|
|
6968
7080
|
}) {
|
|
6969
|
-
return /* @__PURE__ */
|
|
7081
|
+
return /* @__PURE__ */ jsx45(
|
|
6970
7082
|
SelectPrimitive.ScrollUpArrow,
|
|
6971
7083
|
{
|
|
6972
7084
|
"data-slot": "select-scroll-up-button",
|
|
6973
|
-
className:
|
|
7085
|
+
className: cn43(
|
|
6974
7086
|
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
6975
7087
|
className
|
|
6976
7088
|
),
|
|
6977
7089
|
...props,
|
|
6978
|
-
children: /* @__PURE__ */
|
|
7090
|
+
children: /* @__PURE__ */ jsx45(ChevronUp2, {})
|
|
6979
7091
|
}
|
|
6980
7092
|
);
|
|
6981
7093
|
}
|
|
@@ -6983,16 +7095,16 @@ function SelectScrollDownButton({
|
|
|
6983
7095
|
className,
|
|
6984
7096
|
...props
|
|
6985
7097
|
}) {
|
|
6986
|
-
return /* @__PURE__ */
|
|
7098
|
+
return /* @__PURE__ */ jsx45(
|
|
6987
7099
|
SelectPrimitive.ScrollDownArrow,
|
|
6988
7100
|
{
|
|
6989
7101
|
"data-slot": "select-scroll-down-button",
|
|
6990
|
-
className:
|
|
7102
|
+
className: cn43(
|
|
6991
7103
|
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
6992
7104
|
className
|
|
6993
7105
|
),
|
|
6994
7106
|
...props,
|
|
6995
|
-
children: /* @__PURE__ */
|
|
7107
|
+
children: /* @__PURE__ */ jsx45(ChevronDown3, {})
|
|
6996
7108
|
}
|
|
6997
7109
|
);
|
|
6998
7110
|
}
|
|
@@ -7002,7 +7114,8 @@ import {
|
|
|
7002
7114
|
forwardRef as forwardRef4,
|
|
7003
7115
|
useLayoutEffect
|
|
7004
7116
|
} from "react";
|
|
7005
|
-
import {
|
|
7117
|
+
import { cn as cn44 } from "cn";
|
|
7118
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
7006
7119
|
var componentThemeClassName = "[--ic-background:#ffffff] [--ic-foreground:#111111] [--ic-primary:#111111] [--ic-secondary:#646b75] [--ic-surface-border:#e9edf2] [--ic-border:#e3e7ec] [--ic-card:#ffffff] [--ic-card-foreground:#111111] [--ic-muted:#f5f7fa] [--ic-muted-foreground:#6d7480] [--ic-accent:#f3f5f8] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] [--ic-accent-foreground:#111111] [--ic-input:#e3e7ec] [--ic-ring:rgba(17,17,17,0.16)] [--ic-destructive:#dc2626] [--ic-paper:#fcfcfd] [--ic-popover-foreground:#111111] [--ic-brand:#0ea5e9] [--ic-brand-soft:#bae6fd] [--ic-shadow-soft:0_18px_38px_-24px_rgba(15,23,42,0.35)] [--ic-chart-1:oklch(0.52_0.19_254)] [--ic-chart-2:oklch(0.74_0.11_232)] [--ic-chart-3:oklch(0.42_0.16_262)] [--ic-chart-4:oklch(0.84_0.07_228)] [--ic-chart-5:oklch(0.62_0.14_240)] [--color-background:var(--ic-background)] [--color-foreground:var(--ic-foreground)] [--color-primary:var(--ic-primary)] [--color-secondary:var(--ic-secondary)] [--color-border:var(--ic-border)] [--color-card:var(--ic-card)] [--color-card-foreground:var(--ic-card-foreground)] [--color-muted:var(--ic-muted)] [--color-muted-foreground:var(--ic-muted-foreground)] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] [--color-input:var(--ic-input)] [--color-ring:var(--ic-ring)] [--color-destructive:var(--ic-destructive)] [--color-paper:var(--ic-paper)] [--color-popover-foreground:var(--ic-popover-foreground)] [--color-brand:var(--ic-brand)] [--color-brand-soft:var(--ic-brand-soft)] [--color-chart-1:var(--ic-chart-1)] [--color-chart-2:var(--ic-chart-2)] [--color-chart-3:var(--ic-chart-3)] [--color-chart-4:var(--ic-chart-4)] [--color-chart-5:var(--ic-chart-5)] dark:[--ic-background:#111111] dark:[--ic-foreground:#f6f3ec] dark:[--ic-primary:#f6f3ec] dark:[--ic-secondary:#cbc6bb] dark:[--ic-surface-border:#2a2a25] dark:[--ic-border:#2b2a25] dark:[--ic-card:#111111] dark:[--ic-card-foreground:#f6f3ec] dark:[--ic-muted:#171716] dark:[--ic-muted-foreground:#9a958a] dark:[--ic-accent:#1a1a18] [--color-accent:var(--ic-accent)] [--color-accent-foreground:var(--ic-accent-foreground)] dark:[--ic-accent-foreground:#f6f3ec] dark:[--ic-input:#2b2a25] dark:[--ic-ring:rgba(246,243,236,0.18)] dark:[--ic-destructive:#f87171] dark:[--ic-paper:#171716] dark:[--ic-popover-foreground:#f6f3ec] dark:[--ic-brand:#38bdf8] dark:[--ic-brand-soft:#0c4a6e] dark:[--ic-shadow-soft:0_20px_44px_-28px_rgba(0,0,0,0.6)] dark:[--ic-chart-1:oklch(0.68_0.17_250)] dark:[--ic-chart-2:oklch(0.82_0.09_225)] dark:[--ic-chart-3:oklch(0.58_0.15_260)] dark:[--ic-chart-4:oklch(0.75_0.12_235)] dark:[--ic-chart-5:oklch(0.88_0.06_220)]";
|
|
7007
7120
|
var STYLE_ID = "iconiq-skeleton-styles";
|
|
7008
7121
|
var SKELETON_CSS = `
|
|
@@ -7123,10 +7236,10 @@ var Skeleton = forwardRef4(function Skeleton2({
|
|
|
7123
7236
|
...style,
|
|
7124
7237
|
"--iconiq-skeleton-duration": `${variantDuration}s`
|
|
7125
7238
|
} : style;
|
|
7126
|
-
return /* @__PURE__ */
|
|
7239
|
+
return /* @__PURE__ */ jsx46(
|
|
7127
7240
|
"div",
|
|
7128
7241
|
{
|
|
7129
|
-
className:
|
|
7242
|
+
className: cn44(
|
|
7130
7243
|
componentThemeClassName,
|
|
7131
7244
|
"iconiq-skeleton-surface relative block h-4 w-full overflow-hidden",
|
|
7132
7245
|
showFade && "iconiq-skeleton-fade-root",
|
|
@@ -7137,7 +7250,7 @@ var Skeleton = forwardRef4(function Skeleton2({
|
|
|
7137
7250
|
style: animatedStyle,
|
|
7138
7251
|
...resolveSkeletonA11yProps({ animate: animate2, decorative, label }),
|
|
7139
7252
|
...props,
|
|
7140
|
-
children: showShimmer ? /* @__PURE__ */
|
|
7253
|
+
children: showShimmer ? /* @__PURE__ */ jsx46(
|
|
7141
7254
|
"span",
|
|
7142
7255
|
{
|
|
7143
7256
|
"aria-hidden": "true",
|
|
@@ -7152,10 +7265,10 @@ function SkeletonAvatar({
|
|
|
7152
7265
|
className,
|
|
7153
7266
|
...props
|
|
7154
7267
|
}) {
|
|
7155
|
-
return /* @__PURE__ */
|
|
7268
|
+
return /* @__PURE__ */ jsx46(
|
|
7156
7269
|
Skeleton,
|
|
7157
7270
|
{
|
|
7158
|
-
className:
|
|
7271
|
+
className: cn44("size-10", className),
|
|
7159
7272
|
decorative: true,
|
|
7160
7273
|
rounded: "full",
|
|
7161
7274
|
...props
|
|
@@ -7163,16 +7276,16 @@ function SkeletonAvatar({
|
|
|
7163
7276
|
);
|
|
7164
7277
|
}
|
|
7165
7278
|
function SkeletonText({ className, ...props }) {
|
|
7166
|
-
return /* @__PURE__ */
|
|
7279
|
+
return /* @__PURE__ */ jsx46(Skeleton, { className: cn44("h-3", className), decorative: true, ...props });
|
|
7167
7280
|
}
|
|
7168
7281
|
function SkeletonButton({
|
|
7169
7282
|
className,
|
|
7170
7283
|
...props
|
|
7171
7284
|
}) {
|
|
7172
|
-
return /* @__PURE__ */
|
|
7285
|
+
return /* @__PURE__ */ jsx46(
|
|
7173
7286
|
Skeleton,
|
|
7174
7287
|
{
|
|
7175
|
-
className:
|
|
7288
|
+
className: cn44("h-9 w-24", className),
|
|
7176
7289
|
decorative: true,
|
|
7177
7290
|
rounded: "lg",
|
|
7178
7291
|
...props
|
|
@@ -7184,11 +7297,11 @@ var ShimmerSkeleton = Skeleton;
|
|
|
7184
7297
|
// src/ui/sonner.tsx
|
|
7185
7298
|
import { GooeyToaster } from "goey-toast";
|
|
7186
7299
|
import { useTheme } from "next-themes";
|
|
7187
|
-
import { jsx as
|
|
7300
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
7188
7301
|
var Toaster = ({ closeButton = "top-left", ...props }) => {
|
|
7189
7302
|
const { theme = "system" } = useTheme();
|
|
7190
7303
|
const toasterTheme = theme === "dark" ? "dark" : "light";
|
|
7191
|
-
return /* @__PURE__ */
|
|
7304
|
+
return /* @__PURE__ */ jsx47(
|
|
7192
7305
|
GooeyToaster,
|
|
7193
7306
|
{
|
|
7194
7307
|
theme: toasterTheme,
|
|
@@ -7228,53 +7341,16 @@ import {
|
|
|
7228
7341
|
verticalListSortingStrategy
|
|
7229
7342
|
} from "@dnd-kit/sortable";
|
|
7230
7343
|
import { CSS } from "@dnd-kit/utilities";
|
|
7231
|
-
import * as
|
|
7344
|
+
import * as React15 from "react";
|
|
7232
7345
|
import * as ReactDOM from "react-dom";
|
|
7233
|
-
|
|
7234
|
-
// src/lib/compose-refs.ts
|
|
7235
|
-
import * as React12 from "react";
|
|
7236
|
-
function setRef(ref, value) {
|
|
7237
|
-
if (typeof ref === "function") {
|
|
7238
|
-
return ref(value);
|
|
7239
|
-
}
|
|
7240
|
-
if (ref !== null && ref !== void 0) {
|
|
7241
|
-
ref.current = value;
|
|
7242
|
-
}
|
|
7243
|
-
}
|
|
7244
|
-
function composeRefs(...refs) {
|
|
7245
|
-
return (node) => {
|
|
7246
|
-
let hasCleanup = false;
|
|
7247
|
-
const cleanups = refs.map((ref) => {
|
|
7248
|
-
const cleanup = setRef(ref, node);
|
|
7249
|
-
if (!hasCleanup && typeof cleanup === "function") {
|
|
7250
|
-
hasCleanup = true;
|
|
7251
|
-
}
|
|
7252
|
-
return cleanup;
|
|
7253
|
-
});
|
|
7254
|
-
if (hasCleanup) {
|
|
7255
|
-
return () => {
|
|
7256
|
-
for (let i = 0; i < cleanups.length; i++) {
|
|
7257
|
-
const cleanup = cleanups[i];
|
|
7258
|
-
if (typeof cleanup === "function") {
|
|
7259
|
-
cleanup();
|
|
7260
|
-
} else {
|
|
7261
|
-
setRef(refs[i], null);
|
|
7262
|
-
}
|
|
7263
|
-
}
|
|
7264
|
-
};
|
|
7265
|
-
}
|
|
7266
|
-
};
|
|
7267
|
-
}
|
|
7268
|
-
function useComposedRefs(...refs) {
|
|
7269
|
-
return React12.useCallback(composeRefs(...refs), refs);
|
|
7270
|
-
}
|
|
7346
|
+
import { cn as cn45 } from "cn";
|
|
7271
7347
|
|
|
7272
7348
|
// src/hooks/use-isomorphic-layout-effect.ts
|
|
7273
|
-
import * as
|
|
7274
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
7349
|
+
import * as React14 from "react";
|
|
7350
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React14.useLayoutEffect : React14.useEffect;
|
|
7275
7351
|
|
|
7276
7352
|
// src/ui/sortable.tsx
|
|
7277
|
-
import { jsx as
|
|
7353
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
7278
7354
|
var orientationConfig = {
|
|
7279
7355
|
vertical: {
|
|
7280
7356
|
modifiers: [restrictToVerticalAxis, restrictToParentElement],
|
|
@@ -7297,9 +7373,9 @@ var CONTENT_NAME = "SortableContent";
|
|
|
7297
7373
|
var ITEM_NAME = "SortableItem";
|
|
7298
7374
|
var ITEM_HANDLE_NAME = "SortableItemHandle";
|
|
7299
7375
|
var OVERLAY_NAME = "SortableOverlay";
|
|
7300
|
-
var SortableRootContext =
|
|
7376
|
+
var SortableRootContext = React15.createContext(null);
|
|
7301
7377
|
function useSortableContext(consumerName) {
|
|
7302
|
-
const context =
|
|
7378
|
+
const context = React15.useContext(SortableRootContext);
|
|
7303
7379
|
if (!context) {
|
|
7304
7380
|
throw new Error(`\`${consumerName}\` must be used within \`${ROOT_NAME}\``);
|
|
7305
7381
|
}
|
|
@@ -7319,8 +7395,8 @@ function Sortable(props) {
|
|
|
7319
7395
|
accessibility,
|
|
7320
7396
|
...sortableProps
|
|
7321
7397
|
} = props;
|
|
7322
|
-
const id =
|
|
7323
|
-
const [activeId, setActiveId] =
|
|
7398
|
+
const id = React15.useId();
|
|
7399
|
+
const [activeId, setActiveId] = React15.useState(null);
|
|
7324
7400
|
const sensors = useSensors(
|
|
7325
7401
|
useSensor(MouseSensor),
|
|
7326
7402
|
useSensor(TouchSensor),
|
|
@@ -7328,11 +7404,11 @@ function Sortable(props) {
|
|
|
7328
7404
|
coordinateGetter: sortableKeyboardCoordinates
|
|
7329
7405
|
})
|
|
7330
7406
|
);
|
|
7331
|
-
const config =
|
|
7407
|
+
const config = React15.useMemo(
|
|
7332
7408
|
() => orientationConfig[orientation],
|
|
7333
7409
|
[orientation]
|
|
7334
7410
|
);
|
|
7335
|
-
const getItemValue =
|
|
7411
|
+
const getItemValue = React15.useCallback(
|
|
7336
7412
|
(item) => {
|
|
7337
7413
|
if (typeof item === "object" && !getItemValueProp) {
|
|
7338
7414
|
throw new Error(
|
|
@@ -7343,10 +7419,10 @@ function Sortable(props) {
|
|
|
7343
7419
|
},
|
|
7344
7420
|
[getItemValueProp]
|
|
7345
7421
|
);
|
|
7346
|
-
const items =
|
|
7422
|
+
const items = React15.useMemo(() => {
|
|
7347
7423
|
return value.map((item) => getItemValue(item));
|
|
7348
7424
|
}, [value, getItemValue]);
|
|
7349
|
-
const onDragStart =
|
|
7425
|
+
const onDragStart = React15.useCallback(
|
|
7350
7426
|
(event) => {
|
|
7351
7427
|
sortableProps.onDragStart?.(event);
|
|
7352
7428
|
if (event.activatorEvent.defaultPrevented) return;
|
|
@@ -7354,7 +7430,7 @@ function Sortable(props) {
|
|
|
7354
7430
|
},
|
|
7355
7431
|
[sortableProps.onDragStart]
|
|
7356
7432
|
);
|
|
7357
|
-
const onDragEnd =
|
|
7433
|
+
const onDragEnd = React15.useCallback(
|
|
7358
7434
|
(event) => {
|
|
7359
7435
|
sortableProps.onDragEnd?.(event);
|
|
7360
7436
|
if (event.activatorEvent.defaultPrevented) return;
|
|
@@ -7376,7 +7452,7 @@ function Sortable(props) {
|
|
|
7376
7452
|
},
|
|
7377
7453
|
[value, onValueChange, onMove, getItemValue, sortableProps.onDragEnd]
|
|
7378
7454
|
);
|
|
7379
|
-
const onDragCancel =
|
|
7455
|
+
const onDragCancel = React15.useCallback(
|
|
7380
7456
|
(event) => {
|
|
7381
7457
|
sortableProps.onDragCancel?.(event);
|
|
7382
7458
|
if (event.activatorEvent.defaultPrevented) return;
|
|
@@ -7384,7 +7460,7 @@ function Sortable(props) {
|
|
|
7384
7460
|
},
|
|
7385
7461
|
[sortableProps.onDragCancel]
|
|
7386
7462
|
);
|
|
7387
|
-
const announcements =
|
|
7463
|
+
const announcements = React15.useMemo(
|
|
7388
7464
|
() => ({
|
|
7389
7465
|
onDragStart({ active }) {
|
|
7390
7466
|
const activeValue = active.id.toString();
|
|
@@ -7426,7 +7502,7 @@ function Sortable(props) {
|
|
|
7426
7502
|
}),
|
|
7427
7503
|
[value]
|
|
7428
7504
|
);
|
|
7429
|
-
const screenReaderInstructions =
|
|
7505
|
+
const screenReaderInstructions = React15.useMemo(
|
|
7430
7506
|
() => ({
|
|
7431
7507
|
draggable: `
|
|
7432
7508
|
To pick up a sortable item, press space or enter.
|
|
@@ -7436,7 +7512,7 @@ function Sortable(props) {
|
|
|
7436
7512
|
}),
|
|
7437
7513
|
[orientation]
|
|
7438
7514
|
);
|
|
7439
|
-
const contextValue =
|
|
7515
|
+
const contextValue = React15.useMemo(
|
|
7440
7516
|
() => ({
|
|
7441
7517
|
id,
|
|
7442
7518
|
items,
|
|
@@ -7459,11 +7535,11 @@ function Sortable(props) {
|
|
|
7459
7535
|
flatCursor
|
|
7460
7536
|
]
|
|
7461
7537
|
);
|
|
7462
|
-
return /* @__PURE__ */
|
|
7538
|
+
return /* @__PURE__ */ jsx48(
|
|
7463
7539
|
SortableRootContext.Provider,
|
|
7464
7540
|
{
|
|
7465
7541
|
value: contextValue,
|
|
7466
|
-
children: /* @__PURE__ */
|
|
7542
|
+
children: /* @__PURE__ */ jsx48(
|
|
7467
7543
|
DndContext,
|
|
7468
7544
|
{
|
|
7469
7545
|
collisionDetection: collisionDetection ?? config.collisionDetection,
|
|
@@ -7484,7 +7560,7 @@ function Sortable(props) {
|
|
|
7484
7560
|
}
|
|
7485
7561
|
);
|
|
7486
7562
|
}
|
|
7487
|
-
var SortableContentContext =
|
|
7563
|
+
var SortableContentContext = React15.createContext(false);
|
|
7488
7564
|
function SortableContent(props) {
|
|
7489
7565
|
const {
|
|
7490
7566
|
strategy: strategyProp,
|
|
@@ -7512,7 +7588,7 @@ function SortableContent(props) {
|
|
|
7512
7588
|
},
|
|
7513
7589
|
enabled: !withoutSlot
|
|
7514
7590
|
});
|
|
7515
|
-
return /* @__PURE__ */
|
|
7591
|
+
return /* @__PURE__ */ jsx48(SortableContentContext.Provider, { value: true, children: /* @__PURE__ */ jsx48(
|
|
7516
7592
|
SortableContext,
|
|
7517
7593
|
{
|
|
7518
7594
|
items: context.items,
|
|
@@ -7521,9 +7597,9 @@ function SortableContent(props) {
|
|
|
7521
7597
|
}
|
|
7522
7598
|
) });
|
|
7523
7599
|
}
|
|
7524
|
-
var SortableItemContext =
|
|
7600
|
+
var SortableItemContext = React15.createContext(null);
|
|
7525
7601
|
function useSortableItemContext(consumerName) {
|
|
7526
|
-
const context =
|
|
7602
|
+
const context = React15.useContext(SortableItemContext);
|
|
7527
7603
|
if (!context) {
|
|
7528
7604
|
throw new Error(`\`${consumerName}\` must be used within \`${ITEM_NAME}\``);
|
|
7529
7605
|
}
|
|
@@ -7540,8 +7616,8 @@ function SortableItem(props) {
|
|
|
7540
7616
|
ref,
|
|
7541
7617
|
...itemProps
|
|
7542
7618
|
} = props;
|
|
7543
|
-
const inSortableContent =
|
|
7544
|
-
const inSortableOverlay =
|
|
7619
|
+
const inSortableContent = React15.useContext(SortableContentContext);
|
|
7620
|
+
const inSortableOverlay = React15.useContext(SortableOverlayContext);
|
|
7545
7621
|
if (!inSortableContent && !inSortableOverlay) {
|
|
7546
7622
|
throw new Error(
|
|
7547
7623
|
`\`${ITEM_NAME}\` must be used within \`${CONTENT_NAME}\` or \`${OVERLAY_NAME}\``
|
|
@@ -7551,7 +7627,7 @@ function SortableItem(props) {
|
|
|
7551
7627
|
throw new Error(`\`${ITEM_NAME}\` value cannot be an empty string`);
|
|
7552
7628
|
}
|
|
7553
7629
|
const context = useSortableContext(ITEM_NAME);
|
|
7554
|
-
const id =
|
|
7630
|
+
const id = React15.useId();
|
|
7555
7631
|
const {
|
|
7556
7632
|
attributes,
|
|
7557
7633
|
listeners,
|
|
@@ -7561,7 +7637,7 @@ function SortableItem(props) {
|
|
|
7561
7637
|
transition,
|
|
7562
7638
|
isDragging
|
|
7563
7639
|
} = useSortable({ id: value, disabled });
|
|
7564
|
-
const onNodeRefChange =
|
|
7640
|
+
const onNodeRefChange = React15.useCallback(
|
|
7565
7641
|
(node) => {
|
|
7566
7642
|
if (disabled) return;
|
|
7567
7643
|
setNodeRef(node);
|
|
@@ -7570,14 +7646,14 @@ function SortableItem(props) {
|
|
|
7570
7646
|
[disabled, asHandle, setNodeRef, setActivatorNodeRef]
|
|
7571
7647
|
);
|
|
7572
7648
|
const composedRef = useComposedRefs(ref, onNodeRefChange);
|
|
7573
|
-
const composedStyle =
|
|
7649
|
+
const composedStyle = React15.useMemo(() => {
|
|
7574
7650
|
return {
|
|
7575
7651
|
transform: CSS.Translate.toString(transform),
|
|
7576
7652
|
transition,
|
|
7577
7653
|
...style
|
|
7578
7654
|
};
|
|
7579
7655
|
}, [transform, transition, style]);
|
|
7580
|
-
const itemContext =
|
|
7656
|
+
const itemContext = React15.useMemo(
|
|
7581
7657
|
() => ({
|
|
7582
7658
|
id,
|
|
7583
7659
|
attributes,
|
|
@@ -7596,7 +7672,7 @@ function SortableItem(props) {
|
|
|
7596
7672
|
id,
|
|
7597
7673
|
ref: composedRef,
|
|
7598
7674
|
style: composedStyle,
|
|
7599
|
-
className:
|
|
7675
|
+
className: cn45(
|
|
7600
7676
|
"focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden",
|
|
7601
7677
|
{
|
|
7602
7678
|
"touch-none select-none": asHandle,
|
|
@@ -7619,7 +7695,7 @@ function SortableItem(props) {
|
|
|
7619
7695
|
...isDragging && { dragging: "" }
|
|
7620
7696
|
}
|
|
7621
7697
|
});
|
|
7622
|
-
return /* @__PURE__ */
|
|
7698
|
+
return /* @__PURE__ */ jsx48(SortableItemContext.Provider, { value: itemContext, children: element });
|
|
7623
7699
|
}
|
|
7624
7700
|
function SortableItemHandle(props) {
|
|
7625
7701
|
const { disabled, className, render, ref, ...itemHandleProps } = props;
|
|
@@ -7627,7 +7703,7 @@ function SortableItemHandle(props) {
|
|
|
7627
7703
|
const itemContext = useSortableItemContext(ITEM_HANDLE_NAME);
|
|
7628
7704
|
const isDisabled = disabled ?? itemContext.disabled;
|
|
7629
7705
|
const { setActivatorNodeRef } = itemContext;
|
|
7630
|
-
const onActivatorNodeRef =
|
|
7706
|
+
const onActivatorNodeRef = React15.useCallback(
|
|
7631
7707
|
(node) => {
|
|
7632
7708
|
if (isDisabled) return;
|
|
7633
7709
|
setActivatorNodeRef(node);
|
|
@@ -7644,7 +7720,7 @@ function SortableItemHandle(props) {
|
|
|
7644
7720
|
"aria-controls": itemContext.id,
|
|
7645
7721
|
ref: composedRef,
|
|
7646
7722
|
disabled: isDisabled,
|
|
7647
|
-
className:
|
|
7723
|
+
className: cn45(
|
|
7648
7724
|
"select-none disabled:pointer-events-none disabled:opacity-50",
|
|
7649
7725
|
context.flatCursor ? "cursor-default" : "cursor-grab data-dragging:cursor-grabbing",
|
|
7650
7726
|
className
|
|
@@ -7661,7 +7737,7 @@ function SortableItemHandle(props) {
|
|
|
7661
7737
|
}
|
|
7662
7738
|
});
|
|
7663
7739
|
}
|
|
7664
|
-
var SortableOverlayContext =
|
|
7740
|
+
var SortableOverlayContext = React15.createContext(false);
|
|
7665
7741
|
var dropAnimation = {
|
|
7666
7742
|
sideEffects: defaultDropAnimationSideEffects({
|
|
7667
7743
|
styles: {
|
|
@@ -7674,19 +7750,19 @@ var dropAnimation = {
|
|
|
7674
7750
|
function SortableOverlay(props) {
|
|
7675
7751
|
const { container: containerProp, children, ...overlayProps } = props;
|
|
7676
7752
|
const context = useSortableContext(OVERLAY_NAME);
|
|
7677
|
-
const [mounted, setMounted] =
|
|
7753
|
+
const [mounted, setMounted] = React15.useState(false);
|
|
7678
7754
|
useIsomorphicLayoutEffect(() => setMounted(true), []);
|
|
7679
7755
|
const container = containerProp ?? (mounted ? globalThis.document?.body : null);
|
|
7680
7756
|
if (!container) return null;
|
|
7681
7757
|
return ReactDOM.createPortal(
|
|
7682
|
-
/* @__PURE__ */
|
|
7758
|
+
/* @__PURE__ */ jsx48(
|
|
7683
7759
|
DragOverlay,
|
|
7684
7760
|
{
|
|
7685
7761
|
dropAnimation,
|
|
7686
7762
|
modifiers: context.modifiers,
|
|
7687
|
-
className:
|
|
7763
|
+
className: cn45(!context.flatCursor && "cursor-grabbing"),
|
|
7688
7764
|
...overlayProps,
|
|
7689
|
-
children: /* @__PURE__ */
|
|
7765
|
+
children: /* @__PURE__ */ jsx48(SortableOverlayContext.Provider, { value: true, children: context.activeId ? typeof children === "function" ? children({ value: context.activeId }) : children : null })
|
|
7690
7766
|
}
|
|
7691
7767
|
),
|
|
7692
7768
|
container
|
|
@@ -7695,23 +7771,24 @@ function SortableOverlay(props) {
|
|
|
7695
7771
|
|
|
7696
7772
|
// src/ui/switch.tsx
|
|
7697
7773
|
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
7698
|
-
import {
|
|
7774
|
+
import { cn as cn46 } from "cn";
|
|
7775
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
7699
7776
|
function Switch({
|
|
7700
7777
|
className,
|
|
7701
7778
|
size = "default",
|
|
7702
7779
|
...props
|
|
7703
7780
|
}) {
|
|
7704
|
-
return /* @__PURE__ */
|
|
7781
|
+
return /* @__PURE__ */ jsx49(
|
|
7705
7782
|
SwitchPrimitive.Root,
|
|
7706
7783
|
{
|
|
7707
7784
|
"data-slot": "switch",
|
|
7708
7785
|
"data-size": size,
|
|
7709
|
-
className:
|
|
7786
|
+
className: cn46(
|
|
7710
7787
|
"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[background-color,border-color,box-shadow,opacity] duration-150 ease-out outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 motion-reduce:transition-none dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
7711
7788
|
className
|
|
7712
7789
|
),
|
|
7713
7790
|
...props,
|
|
7714
|
-
children: /* @__PURE__ */
|
|
7791
|
+
children: /* @__PURE__ */ jsx49(
|
|
7715
7792
|
SwitchPrimitive.Thumb,
|
|
7716
7793
|
{
|
|
7717
7794
|
"data-slot": "switch-thumb",
|
|
@@ -7738,6 +7815,7 @@ export {
|
|
|
7738
7815
|
AlertDialogPortal,
|
|
7739
7816
|
AlertDialogTitle,
|
|
7740
7817
|
AlertDialogTrigger,
|
|
7818
|
+
div_default as AnimatedDiv,
|
|
7741
7819
|
Apple,
|
|
7742
7820
|
Ariakit,
|
|
7743
7821
|
Autocomplete,
|