@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/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() {
|
|
@@ -1220,10 +1222,226 @@ function getNativeStatusBarPlugin() {
|
|
|
1220
1222
|
if (!isNativeApp()) return null;
|
|
1221
1223
|
return window.Capacitor?.Plugins?.StatusBar ?? null;
|
|
1222
1224
|
}
|
|
1225
|
+
function getNativeBrowserPlugin() {
|
|
1226
|
+
if (!isNativeApp()) return null;
|
|
1227
|
+
return window.Capacitor?.Plugins?.Browser ?? null;
|
|
1228
|
+
}
|
|
1229
|
+
function getNativeSharePlugin() {
|
|
1230
|
+
if (!isNativeApp()) return null;
|
|
1231
|
+
return window.Capacitor?.Plugins?.Share ?? null;
|
|
1232
|
+
}
|
|
1233
|
+
function getNativeCameraPlugin() {
|
|
1234
|
+
if (!isNativeApp()) return null;
|
|
1235
|
+
return window.Capacitor?.Plugins?.Camera ?? null;
|
|
1236
|
+
}
|
|
1237
|
+
function getNativeImagePickerPlugin() {
|
|
1238
|
+
if (!isNativeApp()) return null;
|
|
1239
|
+
return window.Capacitor?.Plugins?.NativeImagePicker ?? null;
|
|
1240
|
+
}
|
|
1241
|
+
function getNativeShareFilePlugin() {
|
|
1242
|
+
if (!isNativeApp()) return null;
|
|
1243
|
+
return window.Capacitor?.Plugins?.NativeShareFile ?? null;
|
|
1244
|
+
}
|
|
1223
1245
|
function getNativeThemePlugin() {
|
|
1224
1246
|
if (!isNativeApp()) return null;
|
|
1225
1247
|
return window.Capacitor?.Plugins?.NativeTheme ?? null;
|
|
1226
1248
|
}
|
|
1249
|
+
function getNativePaymentPlugin() {
|
|
1250
|
+
if (!isNativeApp()) return null;
|
|
1251
|
+
return window.Capacitor?.Plugins?.NativePayment ?? null;
|
|
1252
|
+
}
|
|
1253
|
+
function getNativeShareTargetPlugin() {
|
|
1254
|
+
if (!isNativeApp()) return null;
|
|
1255
|
+
return window.Capacitor?.Plugins?.NativeShareTarget ?? null;
|
|
1256
|
+
}
|
|
1257
|
+
function getNativeAppSettingsPlugin() {
|
|
1258
|
+
if (!isNativeApp()) return null;
|
|
1259
|
+
return window.Capacitor?.Plugins?.NativeAppSettings ?? null;
|
|
1260
|
+
}
|
|
1261
|
+
function getNativeInAppUpdatePlugin() {
|
|
1262
|
+
if (!isNativeApp()) return null;
|
|
1263
|
+
return window.Capacitor?.Plugins?.NativeInAppUpdate ?? null;
|
|
1264
|
+
}
|
|
1265
|
+
async function openNativeAppSettings() {
|
|
1266
|
+
const settings = getNativeAppSettingsPlugin();
|
|
1267
|
+
if (!settings?.openAppSettings) return false;
|
|
1268
|
+
try {
|
|
1269
|
+
await settings.openAppSettings();
|
|
1270
|
+
return true;
|
|
1271
|
+
} catch {
|
|
1272
|
+
return false;
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
async function openUpiPaymentUrl(url, options = {}) {
|
|
1276
|
+
if (typeof window === "undefined") return false;
|
|
1277
|
+
if (options.isNative ?? isNativeApp()) {
|
|
1278
|
+
const payment = getNativePaymentPlugin();
|
|
1279
|
+
if (payment?.openUpiUrl) {
|
|
1280
|
+
const result = await payment.openUpiUrl({
|
|
1281
|
+
url,
|
|
1282
|
+
title: options.title
|
|
1283
|
+
});
|
|
1284
|
+
return result.opened;
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
window.location.href = url;
|
|
1288
|
+
return true;
|
|
1289
|
+
}
|
|
1290
|
+
async function openExternalUrl(url, options = {}) {
|
|
1291
|
+
if (typeof window === "undefined") return false;
|
|
1292
|
+
if (options.isNative ?? isNativeApp()) {
|
|
1293
|
+
const browser = getNativeBrowserPlugin();
|
|
1294
|
+
if (browser?.open) {
|
|
1295
|
+
await browser.open({ url });
|
|
1296
|
+
return true;
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
const opened = window.open(
|
|
1300
|
+
url,
|
|
1301
|
+
options.target ?? "_blank",
|
|
1302
|
+
options.features ?? "noopener,noreferrer"
|
|
1303
|
+
);
|
|
1304
|
+
return opened != null;
|
|
1305
|
+
}
|
|
1306
|
+
async function saveNativeShareImage(dataUrl, options = {}) {
|
|
1307
|
+
if (!(options.isNative ?? isNativeApp())) return null;
|
|
1308
|
+
const plugin = getNativeShareFilePlugin();
|
|
1309
|
+
if (!plugin?.saveImage) return null;
|
|
1310
|
+
try {
|
|
1311
|
+
const result = await plugin.saveImage({
|
|
1312
|
+
data: dataUrl,
|
|
1313
|
+
fileName: options.fileName
|
|
1314
|
+
});
|
|
1315
|
+
return result.path ?? null;
|
|
1316
|
+
} catch {
|
|
1317
|
+
return null;
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
async function shareNativeOrWeb(data, options = {}) {
|
|
1321
|
+
if (typeof window === "undefined") return false;
|
|
1322
|
+
if (options.isNative ?? isNativeApp()) {
|
|
1323
|
+
const share = getNativeSharePlugin();
|
|
1324
|
+
if (share?.share) {
|
|
1325
|
+
await share.share(data);
|
|
1326
|
+
return true;
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
const { files: _files, ...webData } = data;
|
|
1330
|
+
if (typeof navigator.share === "function") {
|
|
1331
|
+
await navigator.share(webData);
|
|
1332
|
+
return true;
|
|
1333
|
+
}
|
|
1334
|
+
return false;
|
|
1335
|
+
}
|
|
1336
|
+
function isNativePickerCancel(error) {
|
|
1337
|
+
if (!(error instanceof Error)) return false;
|
|
1338
|
+
const message = error.message.toLowerCase();
|
|
1339
|
+
return message.includes("cancel") || message.includes("dismiss") || message.includes("no image") || message.includes("user denied");
|
|
1340
|
+
}
|
|
1341
|
+
function imageTypeFromFormat(format, fallback) {
|
|
1342
|
+
if (!format) return fallback;
|
|
1343
|
+
const normalized = format.toLowerCase();
|
|
1344
|
+
if (normalized === "jpg") return "image/jpeg";
|
|
1345
|
+
if (normalized === "jpeg") return "image/jpeg";
|
|
1346
|
+
if (normalized === "png") return "image/png";
|
|
1347
|
+
if (normalized === "webp") return "image/webp";
|
|
1348
|
+
if (normalized === "heic") return "image/heic";
|
|
1349
|
+
if (normalized === "heif") return "image/heif";
|
|
1350
|
+
return fallback;
|
|
1351
|
+
}
|
|
1352
|
+
function imageExtensionFromType(type) {
|
|
1353
|
+
if (type.includes("png")) return "png";
|
|
1354
|
+
if (type.includes("webp")) return "webp";
|
|
1355
|
+
if (type.includes("heic")) return "heic";
|
|
1356
|
+
if (type.includes("heif")) return "heif";
|
|
1357
|
+
return "jpg";
|
|
1358
|
+
}
|
|
1359
|
+
function nativeSharedFileToFile(sharedFile, fallbackName = "native-image.jpg") {
|
|
1360
|
+
const binary = atob(sharedFile.data);
|
|
1361
|
+
const bytes = new Uint8Array(binary.length);
|
|
1362
|
+
for (let index = 0; index < binary.length; index++) {
|
|
1363
|
+
bytes[index] = binary.charCodeAt(index);
|
|
1364
|
+
}
|
|
1365
|
+
return new File([bytes], sharedFile.name || fallbackName, {
|
|
1366
|
+
type: sharedFile.type || "image/jpeg",
|
|
1367
|
+
lastModified: Date.now()
|
|
1368
|
+
});
|
|
1369
|
+
}
|
|
1370
|
+
async function nativePhotoToFile(photo, index, prefix) {
|
|
1371
|
+
const src = photo.webPath ?? photo.path;
|
|
1372
|
+
if (!src) {
|
|
1373
|
+
throw new Error("Unable to read selected image.");
|
|
1374
|
+
}
|
|
1375
|
+
const response = await fetch(src);
|
|
1376
|
+
if (!response.ok) {
|
|
1377
|
+
throw new Error("Unable to read selected image.");
|
|
1378
|
+
}
|
|
1379
|
+
const blob = await response.blob();
|
|
1380
|
+
const type = blob.type || imageTypeFromFormat(photo.format, "image/jpeg");
|
|
1381
|
+
const extension = imageExtensionFromType(type);
|
|
1382
|
+
return new File([blob], `${prefix}-${Date.now()}-${index}.${extension}`, {
|
|
1383
|
+
type,
|
|
1384
|
+
lastModified: Date.now()
|
|
1385
|
+
});
|
|
1386
|
+
}
|
|
1387
|
+
async function pickNativeImageFiles({
|
|
1388
|
+
isNative,
|
|
1389
|
+
multiple = false,
|
|
1390
|
+
limit = multiple ? 10 : 1,
|
|
1391
|
+
quality = 85,
|
|
1392
|
+
prefix = "image"
|
|
1393
|
+
}) {
|
|
1394
|
+
if (!(isNative ?? isNativeApp())) return null;
|
|
1395
|
+
const camera = getNativeCameraPlugin();
|
|
1396
|
+
if (!camera) return null;
|
|
1397
|
+
try {
|
|
1398
|
+
const photos = multiple && camera.pickImages ? (await camera.pickImages({ limit, quality })).photos : [
|
|
1399
|
+
await camera.getPhoto?.({
|
|
1400
|
+
allowEditing: false,
|
|
1401
|
+
quality,
|
|
1402
|
+
resultType: "uri",
|
|
1403
|
+
source: "PROMPT"
|
|
1404
|
+
})
|
|
1405
|
+
].filter((photo) => Boolean(photo));
|
|
1406
|
+
return Promise.all(
|
|
1407
|
+
photos.slice(0, limit).map((photo, index) => nativePhotoToFile(photo, index, prefix))
|
|
1408
|
+
);
|
|
1409
|
+
} catch (error) {
|
|
1410
|
+
if (isNativePickerCancel(error)) return [];
|
|
1411
|
+
throw error;
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
async function pickNativeChooserImageFiles({
|
|
1415
|
+
isNative,
|
|
1416
|
+
limit = 1,
|
|
1417
|
+
title = "Select image"
|
|
1418
|
+
}) {
|
|
1419
|
+
if (!(isNative ?? isNativeApp())) return null;
|
|
1420
|
+
const picker = getNativeImagePickerPlugin();
|
|
1421
|
+
if (!picker?.pickImages) return null;
|
|
1422
|
+
try {
|
|
1423
|
+
const result = await picker.pickImages({
|
|
1424
|
+
limit,
|
|
1425
|
+
title
|
|
1426
|
+
});
|
|
1427
|
+
return (result.files ?? []).filter((file) => file.type?.startsWith("image/")).slice(0, limit).map((file) => nativeSharedFileToFile(file));
|
|
1428
|
+
} catch (error) {
|
|
1429
|
+
if (isNativePickerCancel(error)) return [];
|
|
1430
|
+
throw error;
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
// src/lib/openai.ts
|
|
1435
|
+
import { OpenAI as AI } from "openai";
|
|
1436
|
+
var client;
|
|
1437
|
+
function getOpenAI() {
|
|
1438
|
+
const apiKey = process.env.OPENAI_API_KEY;
|
|
1439
|
+
if (!apiKey) {
|
|
1440
|
+
throw new Error("OPENAI_API_KEY is not configured");
|
|
1441
|
+
}
|
|
1442
|
+
client ??= new AI({ apiKey });
|
|
1443
|
+
return client;
|
|
1444
|
+
}
|
|
1227
1445
|
|
|
1228
1446
|
// src/lib/parms.ts
|
|
1229
1447
|
import {
|
|
@@ -1292,6 +1510,44 @@ function buildFlagSearchParamHref(pathname, searchParams2, key, enabled) {
|
|
|
1292
1510
|
return query ? `${pathname}?${query}` : pathname;
|
|
1293
1511
|
}
|
|
1294
1512
|
|
|
1513
|
+
// src/lib/compose-refs.ts
|
|
1514
|
+
import * as React from "react";
|
|
1515
|
+
function setRef(ref, value) {
|
|
1516
|
+
if (typeof ref === "function") {
|
|
1517
|
+
return ref(value);
|
|
1518
|
+
}
|
|
1519
|
+
if (ref !== null && ref !== void 0) {
|
|
1520
|
+
ref.current = value;
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
function composeRefs(...refs) {
|
|
1524
|
+
return (node) => {
|
|
1525
|
+
let hasCleanup = false;
|
|
1526
|
+
const cleanups = refs.map((ref) => {
|
|
1527
|
+
const cleanup = setRef(ref, node);
|
|
1528
|
+
if (!hasCleanup && typeof cleanup === "function") {
|
|
1529
|
+
hasCleanup = true;
|
|
1530
|
+
}
|
|
1531
|
+
return cleanup;
|
|
1532
|
+
});
|
|
1533
|
+
if (hasCleanup) {
|
|
1534
|
+
return () => {
|
|
1535
|
+
for (let i = 0; i < cleanups.length; i++) {
|
|
1536
|
+
const cleanup = cleanups[i];
|
|
1537
|
+
if (typeof cleanup === "function") {
|
|
1538
|
+
cleanup();
|
|
1539
|
+
} else {
|
|
1540
|
+
setRef(refs[i], null);
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
};
|
|
1544
|
+
}
|
|
1545
|
+
};
|
|
1546
|
+
}
|
|
1547
|
+
function useComposedRefs(...refs) {
|
|
1548
|
+
return React.useCallback(composeRefs(...refs), refs);
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1295
1551
|
// src/ui/bridge.tsx
|
|
1296
1552
|
function getAppPath(value) {
|
|
1297
1553
|
try {
|
|
@@ -1338,7 +1594,7 @@ function syncNativeAppearance() {
|
|
|
1338
1594
|
}
|
|
1339
1595
|
function NativeAppBridge() {
|
|
1340
1596
|
const router = useRouter();
|
|
1341
|
-
|
|
1597
|
+
React2.useEffect(() => {
|
|
1342
1598
|
if (!isNativeApp()) return;
|
|
1343
1599
|
const root = document.documentElement;
|
|
1344
1600
|
const platform = getNativePlatform();
|
|
@@ -1392,13 +1648,14 @@ function NativeAppBridge() {
|
|
|
1392
1648
|
import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
|
|
1393
1649
|
import { useRender as useRender2 } from "@base-ui/react/use-render";
|
|
1394
1650
|
import { cva as cva3 } from "class-variance-authority";
|
|
1651
|
+
import { cn as cn12 } from "cn";
|
|
1395
1652
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1396
1653
|
function BubbleGroup({ className, ...props }) {
|
|
1397
1654
|
return /* @__PURE__ */ jsx12(
|
|
1398
1655
|
"div",
|
|
1399
1656
|
{
|
|
1400
1657
|
"data-slot": "bubble-group",
|
|
1401
|
-
className:
|
|
1658
|
+
className: cn12("flex min-w-0 flex-col gap-2", className),
|
|
1402
1659
|
...props
|
|
1403
1660
|
}
|
|
1404
1661
|
);
|
|
@@ -1434,7 +1691,7 @@ function Bubble({
|
|
|
1434
1691
|
"data-slot": "bubble",
|
|
1435
1692
|
"data-variant": variant,
|
|
1436
1693
|
"data-align": align,
|
|
1437
|
-
className:
|
|
1694
|
+
className: cn12(bubbleVariants({ variant }), className),
|
|
1438
1695
|
...props
|
|
1439
1696
|
}
|
|
1440
1697
|
);
|
|
@@ -1448,7 +1705,7 @@ function BubbleContent({
|
|
|
1448
1705
|
defaultTagName: "div",
|
|
1449
1706
|
props: mergeProps2(
|
|
1450
1707
|
{
|
|
1451
|
-
className:
|
|
1708
|
+
className: cn12(
|
|
1452
1709
|
"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",
|
|
1453
1710
|
className
|
|
1454
1711
|
)
|
|
@@ -1492,7 +1749,7 @@ function BubbleReactions({
|
|
|
1492
1749
|
"data-slot": "bubble-reactions",
|
|
1493
1750
|
"data-align": align,
|
|
1494
1751
|
"data-side": side,
|
|
1495
|
-
className:
|
|
1752
|
+
className: cn12(bubbleReactionsVariants({ side, align }), className),
|
|
1496
1753
|
...props
|
|
1497
1754
|
}
|
|
1498
1755
|
);
|
|
@@ -1502,9 +1759,11 @@ function BubbleReactions({
|
|
|
1502
1759
|
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
1503
1760
|
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
1504
1761
|
import { cva as cva4 } from "class-variance-authority";
|
|
1762
|
+
import { cn as cn14 } from "cn";
|
|
1505
1763
|
|
|
1506
1764
|
// src/ui/separator.tsx
|
|
1507
1765
|
import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
|
|
1766
|
+
import { cn as cn13 } from "cn";
|
|
1508
1767
|
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
1509
1768
|
function Separator({
|
|
1510
1769
|
className,
|
|
@@ -1516,7 +1775,7 @@ function Separator({
|
|
|
1516
1775
|
{
|
|
1517
1776
|
"data-slot": "separator",
|
|
1518
1777
|
orientation,
|
|
1519
|
-
className:
|
|
1778
|
+
className: cn13(
|
|
1520
1779
|
"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
|
|
1521
1780
|
className
|
|
1522
1781
|
),
|
|
@@ -1552,7 +1811,7 @@ function ButtonGroup({
|
|
|
1552
1811
|
role: "group",
|
|
1553
1812
|
"data-slot": "button-group",
|
|
1554
1813
|
"data-orientation": orientation,
|
|
1555
|
-
className:
|
|
1814
|
+
className: cn14(buttonGroupVariants({ orientation }), className),
|
|
1556
1815
|
...props
|
|
1557
1816
|
}
|
|
1558
1817
|
);
|
|
@@ -1566,7 +1825,7 @@ function ButtonGroupText({
|
|
|
1566
1825
|
defaultTagName: "div",
|
|
1567
1826
|
props: mergeProps3(
|
|
1568
1827
|
{
|
|
1569
|
-
className:
|
|
1828
|
+
className: cn14(
|
|
1570
1829
|
"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",
|
|
1571
1830
|
className
|
|
1572
1831
|
)
|
|
@@ -1589,7 +1848,7 @@ function ButtonGroupSeparator({
|
|
|
1589
1848
|
{
|
|
1590
1849
|
"data-slot": "button-group-separator",
|
|
1591
1850
|
orientation,
|
|
1592
|
-
className:
|
|
1851
|
+
className: cn14(
|
|
1593
1852
|
"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
|
|
1594
1853
|
className
|
|
1595
1854
|
),
|
|
@@ -1599,16 +1858,17 @@ function ButtonGroupSeparator({
|
|
|
1599
1858
|
}
|
|
1600
1859
|
|
|
1601
1860
|
// src/ui/card.tsx
|
|
1602
|
-
import * as
|
|
1861
|
+
import * as React3 from "react";
|
|
1862
|
+
import { cn as cn15 } from "cn";
|
|
1603
1863
|
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
1604
|
-
var Card =
|
|
1864
|
+
var Card = React3.forwardRef(function Card2({ className, size = "default", ...props }, ref) {
|
|
1605
1865
|
return /* @__PURE__ */ jsx15(
|
|
1606
1866
|
"div",
|
|
1607
1867
|
{
|
|
1608
1868
|
ref,
|
|
1609
1869
|
"data-slot": "card",
|
|
1610
1870
|
"data-size": size,
|
|
1611
|
-
className:
|
|
1871
|
+
className: cn15(
|
|
1612
1872
|
"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",
|
|
1613
1873
|
className
|
|
1614
1874
|
),
|
|
@@ -1621,7 +1881,7 @@ function CardHeader({ className, ...props }) {
|
|
|
1621
1881
|
"div",
|
|
1622
1882
|
{
|
|
1623
1883
|
"data-slot": "card-header",
|
|
1624
|
-
className:
|
|
1884
|
+
className: cn15(
|
|
1625
1885
|
"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)",
|
|
1626
1886
|
className
|
|
1627
1887
|
),
|
|
@@ -1634,7 +1894,7 @@ function CardTitle({ className, ...props }) {
|
|
|
1634
1894
|
"div",
|
|
1635
1895
|
{
|
|
1636
1896
|
"data-slot": "card-title",
|
|
1637
|
-
className:
|
|
1897
|
+
className: cn15(
|
|
1638
1898
|
"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
|
|
1639
1899
|
className
|
|
1640
1900
|
),
|
|
@@ -1647,7 +1907,7 @@ function CardDescription({ className, ...props }) {
|
|
|
1647
1907
|
"div",
|
|
1648
1908
|
{
|
|
1649
1909
|
"data-slot": "card-description",
|
|
1650
|
-
className:
|
|
1910
|
+
className: cn15("text-sm text-muted-foreground", className),
|
|
1651
1911
|
...props
|
|
1652
1912
|
}
|
|
1653
1913
|
);
|
|
@@ -1657,7 +1917,7 @@ function CardAction({ className, ...props }) {
|
|
|
1657
1917
|
"div",
|
|
1658
1918
|
{
|
|
1659
1919
|
"data-slot": "card-action",
|
|
1660
|
-
className:
|
|
1920
|
+
className: cn15(
|
|
1661
1921
|
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
1662
1922
|
className
|
|
1663
1923
|
),
|
|
@@ -1670,7 +1930,7 @@ function CardContent({ className, ...props }) {
|
|
|
1670
1930
|
"div",
|
|
1671
1931
|
{
|
|
1672
1932
|
"data-slot": "card-content",
|
|
1673
|
-
className:
|
|
1933
|
+
className: cn15("px-(--card-spacing)", className),
|
|
1674
1934
|
...props
|
|
1675
1935
|
}
|
|
1676
1936
|
);
|
|
@@ -1680,7 +1940,7 @@ function CardFooter({ className, ...props }) {
|
|
|
1680
1940
|
"div",
|
|
1681
1941
|
{
|
|
1682
1942
|
"data-slot": "card-footer",
|
|
1683
|
-
className:
|
|
1943
|
+
className: cn15(
|
|
1684
1944
|
"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)",
|
|
1685
1945
|
className
|
|
1686
1946
|
),
|
|
@@ -1692,11 +1952,12 @@ function CardFooter({ className, ...props }) {
|
|
|
1692
1952
|
// src/ui/carousel.tsx
|
|
1693
1953
|
import useEmblaCarousel from "embla-carousel-react";
|
|
1694
1954
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
1695
|
-
import * as
|
|
1955
|
+
import * as React4 from "react";
|
|
1956
|
+
import { cn as cn16 } from "cn";
|
|
1696
1957
|
import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1697
|
-
var CarouselContext =
|
|
1958
|
+
var CarouselContext = React4.createContext(null);
|
|
1698
1959
|
function useCarousel() {
|
|
1699
|
-
const context =
|
|
1960
|
+
const context = React4.useContext(CarouselContext);
|
|
1700
1961
|
if (!context) {
|
|
1701
1962
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
1702
1963
|
}
|
|
@@ -1718,20 +1979,20 @@ function Carousel({
|
|
|
1718
1979
|
},
|
|
1719
1980
|
plugins
|
|
1720
1981
|
);
|
|
1721
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
1722
|
-
const [canScrollNext, setCanScrollNext] =
|
|
1723
|
-
const onSelect =
|
|
1982
|
+
const [canScrollPrev, setCanScrollPrev] = React4.useState(false);
|
|
1983
|
+
const [canScrollNext, setCanScrollNext] = React4.useState(false);
|
|
1984
|
+
const onSelect = React4.useCallback((api2) => {
|
|
1724
1985
|
if (!api2) return;
|
|
1725
1986
|
setCanScrollPrev(api2.canScrollPrev());
|
|
1726
1987
|
setCanScrollNext(api2.canScrollNext());
|
|
1727
1988
|
}, []);
|
|
1728
|
-
const scrollPrev =
|
|
1989
|
+
const scrollPrev = React4.useCallback(() => {
|
|
1729
1990
|
api?.scrollPrev();
|
|
1730
1991
|
}, [api]);
|
|
1731
|
-
const scrollNext =
|
|
1992
|
+
const scrollNext = React4.useCallback(() => {
|
|
1732
1993
|
api?.scrollNext();
|
|
1733
1994
|
}, [api]);
|
|
1734
|
-
const handleKeyDown =
|
|
1995
|
+
const handleKeyDown = React4.useCallback(
|
|
1735
1996
|
(event) => {
|
|
1736
1997
|
if (event.key === "ArrowLeft") {
|
|
1737
1998
|
event.preventDefault();
|
|
@@ -1743,11 +2004,11 @@ function Carousel({
|
|
|
1743
2004
|
},
|
|
1744
2005
|
[scrollPrev, scrollNext]
|
|
1745
2006
|
);
|
|
1746
|
-
|
|
2007
|
+
React4.useEffect(() => {
|
|
1747
2008
|
if (!api || !setApi) return;
|
|
1748
2009
|
setApi(api);
|
|
1749
2010
|
}, [api, setApi]);
|
|
1750
|
-
|
|
2011
|
+
React4.useEffect(() => {
|
|
1751
2012
|
if (!api) return;
|
|
1752
2013
|
api.on("reInit", onSelect);
|
|
1753
2014
|
api.on("select", onSelect);
|
|
@@ -1774,7 +2035,7 @@ function Carousel({
|
|
|
1774
2035
|
"div",
|
|
1775
2036
|
{
|
|
1776
2037
|
onKeyDownCapture: handleKeyDown,
|
|
1777
|
-
className:
|
|
2038
|
+
className: cn16("relative", className),
|
|
1778
2039
|
role: "region",
|
|
1779
2040
|
"aria-roledescription": "carousel",
|
|
1780
2041
|
"data-slot": "carousel",
|
|
@@ -1796,7 +2057,7 @@ function CarouselContent({ className, ...props }) {
|
|
|
1796
2057
|
children: /* @__PURE__ */ jsx16(
|
|
1797
2058
|
"div",
|
|
1798
2059
|
{
|
|
1799
|
-
className:
|
|
2060
|
+
className: cn16(
|
|
1800
2061
|
"flex",
|
|
1801
2062
|
orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
|
|
1802
2063
|
className
|
|
@@ -1815,7 +2076,7 @@ function CarouselItem({ className, ...props }) {
|
|
|
1815
2076
|
role: "group",
|
|
1816
2077
|
"aria-roledescription": "slide",
|
|
1817
2078
|
"data-slot": "carousel-item",
|
|
1818
|
-
className:
|
|
2079
|
+
className: cn16(
|
|
1819
2080
|
"min-w-0 shrink-0 grow-0 basis-full",
|
|
1820
2081
|
orientation === "horizontal" ? "pl-4" : "pt-4",
|
|
1821
2082
|
className
|
|
@@ -1837,7 +2098,7 @@ function CarouselPrevious({
|
|
|
1837
2098
|
"data-slot": "carousel-previous",
|
|
1838
2099
|
variant,
|
|
1839
2100
|
size,
|
|
1840
|
-
className:
|
|
2101
|
+
className: cn16(
|
|
1841
2102
|
"absolute touch-manipulation rounded-full",
|
|
1842
2103
|
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",
|
|
1843
2104
|
className
|
|
@@ -1865,7 +2126,7 @@ function CarouselNext({
|
|
|
1865
2126
|
"data-slot": "carousel-next",
|
|
1866
2127
|
variant,
|
|
1867
2128
|
size,
|
|
1868
|
-
className:
|
|
2129
|
+
className: cn16(
|
|
1869
2130
|
"absolute touch-manipulation rounded-full",
|
|
1870
2131
|
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",
|
|
1871
2132
|
className
|
|
@@ -1882,14 +2143,15 @@ function CarouselNext({
|
|
|
1882
2143
|
}
|
|
1883
2144
|
|
|
1884
2145
|
// src/ui/chart.tsx
|
|
1885
|
-
import * as
|
|
2146
|
+
import * as React5 from "react";
|
|
1886
2147
|
import * as RechartsPrimitive from "recharts";
|
|
2148
|
+
import { cn as cn17 } from "cn";
|
|
1887
2149
|
import { Fragment, jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1888
2150
|
var THEMES = { light: "", dark: ".dark" };
|
|
1889
2151
|
var INITIAL_DIMENSION = { width: 320, height: 200 };
|
|
1890
|
-
var ChartContext =
|
|
2152
|
+
var ChartContext = React5.createContext(null);
|
|
1891
2153
|
function useChart() {
|
|
1892
|
-
const context =
|
|
2154
|
+
const context = React5.useContext(ChartContext);
|
|
1893
2155
|
if (!context) {
|
|
1894
2156
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
1895
2157
|
}
|
|
@@ -1903,14 +2165,14 @@ function ChartContainer({
|
|
|
1903
2165
|
initialDimension = INITIAL_DIMENSION,
|
|
1904
2166
|
...props
|
|
1905
2167
|
}) {
|
|
1906
|
-
const uniqueId =
|
|
2168
|
+
const uniqueId = React5.useId();
|
|
1907
2169
|
const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
|
|
1908
2170
|
return /* @__PURE__ */ jsx17(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs9(
|
|
1909
2171
|
"div",
|
|
1910
2172
|
{
|
|
1911
2173
|
"data-slot": "chart",
|
|
1912
2174
|
"data-chart": chartId,
|
|
1913
|
-
className:
|
|
2175
|
+
className: cn17(
|
|
1914
2176
|
"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",
|
|
1915
2177
|
className
|
|
1916
2178
|
),
|
|
@@ -1970,7 +2232,7 @@ function ChartTooltipContent({
|
|
|
1970
2232
|
labelKey
|
|
1971
2233
|
}) {
|
|
1972
2234
|
const { config } = useChart();
|
|
1973
|
-
const tooltipLabel =
|
|
2235
|
+
const tooltipLabel = React5.useMemo(() => {
|
|
1974
2236
|
if (hideLabel || !payload?.length) {
|
|
1975
2237
|
return null;
|
|
1976
2238
|
}
|
|
@@ -1979,12 +2241,12 @@ function ChartTooltipContent({
|
|
|
1979
2241
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1980
2242
|
const value = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
|
|
1981
2243
|
if (labelFormatter) {
|
|
1982
|
-
return /* @__PURE__ */ jsx17("div", { className:
|
|
2244
|
+
return /* @__PURE__ */ jsx17("div", { className: cn17("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
1983
2245
|
}
|
|
1984
2246
|
if (!value) {
|
|
1985
2247
|
return null;
|
|
1986
2248
|
}
|
|
1987
|
-
return /* @__PURE__ */ jsx17("div", { className:
|
|
2249
|
+
return /* @__PURE__ */ jsx17("div", { className: cn17("font-medium", labelClassName), children: value });
|
|
1988
2250
|
}, [
|
|
1989
2251
|
label,
|
|
1990
2252
|
labelFormatter,
|
|
@@ -2001,7 +2263,7 @@ function ChartTooltipContent({
|
|
|
2001
2263
|
return /* @__PURE__ */ jsxs9(
|
|
2002
2264
|
"div",
|
|
2003
2265
|
{
|
|
2004
|
-
className:
|
|
2266
|
+
className: cn17(
|
|
2005
2267
|
"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",
|
|
2006
2268
|
className
|
|
2007
2269
|
),
|
|
@@ -2014,7 +2276,7 @@ function ChartTooltipContent({
|
|
|
2014
2276
|
return /* @__PURE__ */ jsx17(
|
|
2015
2277
|
"div",
|
|
2016
2278
|
{
|
|
2017
|
-
className:
|
|
2279
|
+
className: cn17(
|
|
2018
2280
|
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
|
|
2019
2281
|
indicator === "dot" && "items-center"
|
|
2020
2282
|
),
|
|
@@ -2022,7 +2284,7 @@ function ChartTooltipContent({
|
|
|
2022
2284
|
itemConfig?.icon ? /* @__PURE__ */ jsx17(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx17(
|
|
2023
2285
|
"div",
|
|
2024
2286
|
{
|
|
2025
|
-
className:
|
|
2287
|
+
className: cn17(
|
|
2026
2288
|
"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
|
|
2027
2289
|
{
|
|
2028
2290
|
"h-2.5 w-2.5": indicator === "dot",
|
|
@@ -2040,7 +2302,7 @@ function ChartTooltipContent({
|
|
|
2040
2302
|
/* @__PURE__ */ jsxs9(
|
|
2041
2303
|
"div",
|
|
2042
2304
|
{
|
|
2043
|
-
className:
|
|
2305
|
+
className: cn17(
|
|
2044
2306
|
"flex flex-1 justify-between leading-none",
|
|
2045
2307
|
nestLabel ? "items-end" : "items-center"
|
|
2046
2308
|
),
|
|
@@ -2077,7 +2339,7 @@ function ChartLegendContent({
|
|
|
2077
2339
|
return /* @__PURE__ */ jsx17(
|
|
2078
2340
|
"div",
|
|
2079
2341
|
{
|
|
2080
|
-
className:
|
|
2342
|
+
className: cn17(
|
|
2081
2343
|
"flex items-center justify-center gap-4",
|
|
2082
2344
|
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
2083
2345
|
className
|
|
@@ -2088,7 +2350,7 @@ function ChartLegendContent({
|
|
|
2088
2350
|
return /* @__PURE__ */ jsxs9(
|
|
2089
2351
|
"div",
|
|
2090
2352
|
{
|
|
2091
|
-
className:
|
|
2353
|
+
className: cn17(
|
|
2092
2354
|
"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
|
|
2093
2355
|
),
|
|
2094
2356
|
children: [
|
|
@@ -2126,13 +2388,14 @@ function getPayloadConfigFromPayload(config, payload, key) {
|
|
|
2126
2388
|
|
|
2127
2389
|
// src/ui/checkbox.tsx
|
|
2128
2390
|
import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox";
|
|
2391
|
+
import { cn as cn18 } from "cn";
|
|
2129
2392
|
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
2130
2393
|
function Checkbox({ className, children, ...props }) {
|
|
2131
2394
|
return /* @__PURE__ */ jsx18(
|
|
2132
2395
|
CheckboxPrimitive.Root,
|
|
2133
2396
|
{
|
|
2134
2397
|
"data-slot": "checkbox",
|
|
2135
|
-
className:
|
|
2398
|
+
className: cn18(
|
|
2136
2399
|
"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",
|
|
2137
2400
|
className
|
|
2138
2401
|
),
|
|
@@ -2151,20 +2414,23 @@ function Checkbox({ className, children, ...props }) {
|
|
|
2151
2414
|
|
|
2152
2415
|
// src/ui/combobox.tsx
|
|
2153
2416
|
import { Combobox as ComboboxPrimitive } from "@base-ui/react";
|
|
2154
|
-
import * as
|
|
2417
|
+
import * as React6 from "react";
|
|
2418
|
+
import { cn as cn21 } from "cn";
|
|
2155
2419
|
import { Check, ChevronDown as ChevronDown2, Xmark as Xmark2 } from "@gravity-ui/icons";
|
|
2156
2420
|
|
|
2157
2421
|
// src/ui/input-group.tsx
|
|
2158
2422
|
import { cva as cva5 } from "class-variance-authority";
|
|
2423
|
+
import { cn as cn20 } from "cn";
|
|
2159
2424
|
|
|
2160
2425
|
// src/ui/textarea.tsx
|
|
2426
|
+
import { cn as cn19 } from "cn";
|
|
2161
2427
|
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
2162
2428
|
function Textarea({ className, ...props }) {
|
|
2163
2429
|
return /* @__PURE__ */ jsx19(
|
|
2164
2430
|
"textarea",
|
|
2165
2431
|
{
|
|
2166
2432
|
"data-slot": "textarea",
|
|
2167
|
-
className:
|
|
2433
|
+
className: cn19(
|
|
2168
2434
|
"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",
|
|
2169
2435
|
className
|
|
2170
2436
|
),
|
|
@@ -2181,7 +2447,7 @@ function InputGroup({ className, ...props }) {
|
|
|
2181
2447
|
{
|
|
2182
2448
|
"data-slot": "input-group",
|
|
2183
2449
|
role: "group",
|
|
2184
|
-
className:
|
|
2450
|
+
className: cn20(
|
|
2185
2451
|
"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",
|
|
2186
2452
|
className
|
|
2187
2453
|
),
|
|
@@ -2217,7 +2483,7 @@ function InputGroupAddon({
|
|
|
2217
2483
|
role: "group",
|
|
2218
2484
|
"data-slot": "input-group-addon",
|
|
2219
2485
|
"data-align": align,
|
|
2220
|
-
className:
|
|
2486
|
+
className: cn20(inputGroupAddonVariants({ align }), className),
|
|
2221
2487
|
onClick: (e) => {
|
|
2222
2488
|
if (e.target.closest("button")) {
|
|
2223
2489
|
return;
|
|
@@ -2261,7 +2527,7 @@ function InputGroupButton({
|
|
|
2261
2527
|
type,
|
|
2262
2528
|
"data-size": size,
|
|
2263
2529
|
variant,
|
|
2264
|
-
className:
|
|
2530
|
+
className: cn20(inputGroupButtonVariants({ size }), className),
|
|
2265
2531
|
...props
|
|
2266
2532
|
}
|
|
2267
2533
|
);
|
|
@@ -2270,7 +2536,7 @@ function InputGroupText({ className, ...props }) {
|
|
|
2270
2536
|
return /* @__PURE__ */ jsx20(
|
|
2271
2537
|
"span",
|
|
2272
2538
|
{
|
|
2273
|
-
className:
|
|
2539
|
+
className: cn20(
|
|
2274
2540
|
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
2275
2541
|
className
|
|
2276
2542
|
),
|
|
@@ -2286,7 +2552,7 @@ function InputGroupInput({
|
|
|
2286
2552
|
Input,
|
|
2287
2553
|
{
|
|
2288
2554
|
"data-slot": "input-group-control",
|
|
2289
|
-
className:
|
|
2555
|
+
className: cn20(
|
|
2290
2556
|
"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",
|
|
2291
2557
|
className
|
|
2292
2558
|
),
|
|
@@ -2302,7 +2568,7 @@ function InputGroupTextarea({
|
|
|
2302
2568
|
Textarea,
|
|
2303
2569
|
{
|
|
2304
2570
|
"data-slot": "input-group-control",
|
|
2305
|
-
className:
|
|
2571
|
+
className: cn20(
|
|
2306
2572
|
"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",
|
|
2307
2573
|
className
|
|
2308
2574
|
),
|
|
@@ -2326,7 +2592,7 @@ function ComboboxTrigger({
|
|
|
2326
2592
|
ComboboxPrimitive.Trigger,
|
|
2327
2593
|
{
|
|
2328
2594
|
"data-slot": "combobox-trigger",
|
|
2329
|
-
className:
|
|
2595
|
+
className: cn21("[&_svg:not([class*='size-'])]:size-4", className),
|
|
2330
2596
|
...props,
|
|
2331
2597
|
children: [
|
|
2332
2598
|
children,
|
|
@@ -2341,7 +2607,7 @@ function ComboboxClear({ className, ...props }) {
|
|
|
2341
2607
|
{
|
|
2342
2608
|
"data-slot": "combobox-clear",
|
|
2343
2609
|
render: /* @__PURE__ */ jsx21(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
|
|
2344
|
-
className:
|
|
2610
|
+
className: cn21(className),
|
|
2345
2611
|
...props,
|
|
2346
2612
|
children: /* @__PURE__ */ jsx21(Xmark2, { className: "pointer-events-none" })
|
|
2347
2613
|
}
|
|
@@ -2357,7 +2623,7 @@ function ComboboxInput({
|
|
|
2357
2623
|
endContent,
|
|
2358
2624
|
...props
|
|
2359
2625
|
}) {
|
|
2360
|
-
return /* @__PURE__ */ jsxs10(InputGroup, { className:
|
|
2626
|
+
return /* @__PURE__ */ jsxs10(InputGroup, { className: cn21("w-auto", className), children: [
|
|
2361
2627
|
/* @__PURE__ */ jsx21(
|
|
2362
2628
|
ComboboxPrimitive.Input,
|
|
2363
2629
|
{
|
|
@@ -2407,7 +2673,7 @@ function ComboboxContent({
|
|
|
2407
2673
|
{
|
|
2408
2674
|
"data-slot": "combobox-content",
|
|
2409
2675
|
"data-chips": !!anchor,
|
|
2410
|
-
className:
|
|
2676
|
+
className: cn21(
|
|
2411
2677
|
"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",
|
|
2412
2678
|
className
|
|
2413
2679
|
),
|
|
@@ -2422,7 +2688,7 @@ function ComboboxList({ className, ...props }) {
|
|
|
2422
2688
|
ComboboxPrimitive.List,
|
|
2423
2689
|
{
|
|
2424
2690
|
"data-slot": "combobox-list",
|
|
2425
|
-
className:
|
|
2691
|
+
className: cn21(
|
|
2426
2692
|
"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",
|
|
2427
2693
|
className
|
|
2428
2694
|
),
|
|
@@ -2439,7 +2705,7 @@ function ComboboxItem({
|
|
|
2439
2705
|
ComboboxPrimitive.Item,
|
|
2440
2706
|
{
|
|
2441
2707
|
"data-slot": "combobox-item",
|
|
2442
|
-
className:
|
|
2708
|
+
className: cn21(
|
|
2443
2709
|
"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",
|
|
2444
2710
|
className
|
|
2445
2711
|
),
|
|
@@ -2462,7 +2728,7 @@ function ComboboxGroup({ className, ...props }) {
|
|
|
2462
2728
|
ComboboxPrimitive.Group,
|
|
2463
2729
|
{
|
|
2464
2730
|
"data-slot": "combobox-group",
|
|
2465
|
-
className:
|
|
2731
|
+
className: cn21(className),
|
|
2466
2732
|
...props
|
|
2467
2733
|
}
|
|
2468
2734
|
);
|
|
@@ -2475,7 +2741,7 @@ function ComboboxLabel({
|
|
|
2475
2741
|
ComboboxPrimitive.GroupLabel,
|
|
2476
2742
|
{
|
|
2477
2743
|
"data-slot": "combobox-label",
|
|
2478
|
-
className:
|
|
2744
|
+
className: cn21("px-2 py-1.5 text-xs text-muted-foreground", className),
|
|
2479
2745
|
...props
|
|
2480
2746
|
}
|
|
2481
2747
|
);
|
|
@@ -2488,7 +2754,7 @@ function ComboboxEmpty({ className, ...props }) {
|
|
|
2488
2754
|
ComboboxPrimitive.Empty,
|
|
2489
2755
|
{
|
|
2490
2756
|
"data-slot": "combobox-empty",
|
|
2491
|
-
className:
|
|
2757
|
+
className: cn21(
|
|
2492
2758
|
"hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex",
|
|
2493
2759
|
className
|
|
2494
2760
|
),
|
|
@@ -2504,7 +2770,7 @@ function ComboboxSeparator({
|
|
|
2504
2770
|
ComboboxPrimitive.Separator,
|
|
2505
2771
|
{
|
|
2506
2772
|
"data-slot": "combobox-separator",
|
|
2507
|
-
className:
|
|
2773
|
+
className: cn21("-mx-1 my-1 h-px bg-border", className),
|
|
2508
2774
|
...props
|
|
2509
2775
|
}
|
|
2510
2776
|
);
|
|
@@ -2517,7 +2783,7 @@ function ComboboxChips({
|
|
|
2517
2783
|
ComboboxPrimitive.Chips,
|
|
2518
2784
|
{
|
|
2519
2785
|
"data-slot": "combobox-chips",
|
|
2520
|
-
className:
|
|
2786
|
+
className: cn21(
|
|
2521
2787
|
"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",
|
|
2522
2788
|
className
|
|
2523
2789
|
),
|
|
@@ -2535,7 +2801,7 @@ function ComboboxChip({
|
|
|
2535
2801
|
ComboboxPrimitive.Chip,
|
|
2536
2802
|
{
|
|
2537
2803
|
"data-slot": "combobox-chip",
|
|
2538
|
-
className:
|
|
2804
|
+
className: cn21(
|
|
2539
2805
|
"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",
|
|
2540
2806
|
className
|
|
2541
2807
|
),
|
|
@@ -2563,21 +2829,23 @@ function ComboboxChipsInput({
|
|
|
2563
2829
|
ComboboxPrimitive.Input,
|
|
2564
2830
|
{
|
|
2565
2831
|
"data-slot": "combobox-chip-input",
|
|
2566
|
-
className:
|
|
2832
|
+
className: cn21("min-w-16 flex-1 outline-none", className),
|
|
2567
2833
|
...props
|
|
2568
2834
|
}
|
|
2569
2835
|
);
|
|
2570
2836
|
}
|
|
2571
2837
|
function useComboboxAnchor() {
|
|
2572
|
-
return
|
|
2838
|
+
return React6.useRef(null);
|
|
2573
2839
|
}
|
|
2574
2840
|
|
|
2575
2841
|
// src/ui/command.tsx
|
|
2576
2842
|
import { Command as CommandPrimitive } from "cmdk";
|
|
2843
|
+
import { cn as cn23 } from "cn";
|
|
2577
2844
|
import { Magnifier } from "@gravity-ui/icons";
|
|
2578
2845
|
|
|
2579
2846
|
// src/ui/dialog.tsx
|
|
2580
2847
|
import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
|
|
2848
|
+
import { cn as cn22 } from "cn";
|
|
2581
2849
|
import { Xmark as Xmark3 } from "@gravity-ui/icons";
|
|
2582
2850
|
import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2583
2851
|
function Dialog({ ...props }) {
|
|
@@ -2600,7 +2868,7 @@ function DialogOverlay({
|
|
|
2600
2868
|
DialogPrimitive.Backdrop,
|
|
2601
2869
|
{
|
|
2602
2870
|
"data-slot": "dialog-overlay",
|
|
2603
|
-
className:
|
|
2871
|
+
className: cn22(
|
|
2604
2872
|
"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",
|
|
2605
2873
|
className
|
|
2606
2874
|
),
|
|
@@ -2620,7 +2888,7 @@ function DialogContent({
|
|
|
2620
2888
|
DialogPrimitive.Popup,
|
|
2621
2889
|
{
|
|
2622
2890
|
"data-slot": "dialog-content",
|
|
2623
|
-
className:
|
|
2891
|
+
className: cn22(
|
|
2624
2892
|
"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",
|
|
2625
2893
|
className
|
|
2626
2894
|
),
|
|
@@ -2655,7 +2923,7 @@ function DialogHeader({ className, ...props }) {
|
|
|
2655
2923
|
"div",
|
|
2656
2924
|
{
|
|
2657
2925
|
"data-slot": "dialog-header",
|
|
2658
|
-
className:
|
|
2926
|
+
className: cn22("flex flex-col gap-2", className),
|
|
2659
2927
|
...props
|
|
2660
2928
|
}
|
|
2661
2929
|
);
|
|
@@ -2670,7 +2938,7 @@ function DialogFooter({
|
|
|
2670
2938
|
"div",
|
|
2671
2939
|
{
|
|
2672
2940
|
"data-slot": "dialog-footer",
|
|
2673
|
-
className:
|
|
2941
|
+
className: cn22(
|
|
2674
2942
|
"flex shrink-0 flex-col-reverse items-center justify-center gap-2 p-4 pt-0 sm:flex-row",
|
|
2675
2943
|
className
|
|
2676
2944
|
),
|
|
@@ -2687,7 +2955,7 @@ function DialogTitle({ className, ...props }) {
|
|
|
2687
2955
|
DialogPrimitive.Title,
|
|
2688
2956
|
{
|
|
2689
2957
|
"data-slot": "dialog-title",
|
|
2690
|
-
className:
|
|
2958
|
+
className: cn22("text-base leading-none font-medium", className),
|
|
2691
2959
|
...props
|
|
2692
2960
|
}
|
|
2693
2961
|
);
|
|
@@ -2700,7 +2968,7 @@ function DialogDescription({
|
|
|
2700
2968
|
DialogPrimitive.Description,
|
|
2701
2969
|
{
|
|
2702
2970
|
"data-slot": "dialog-description",
|
|
2703
|
-
className:
|
|
2971
|
+
className: cn22(
|
|
2704
2972
|
"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
2705
2973
|
className
|
|
2706
2974
|
),
|
|
@@ -2719,7 +2987,7 @@ function Command({
|
|
|
2719
2987
|
CommandPrimitive,
|
|
2720
2988
|
{
|
|
2721
2989
|
"data-slot": "command",
|
|
2722
|
-
className:
|
|
2990
|
+
className: cn23(
|
|
2723
2991
|
"flex size-full flex-col overflow-hidden rounded-xl! bg-background text-popover-foreground outline-none",
|
|
2724
2992
|
className
|
|
2725
2993
|
),
|
|
@@ -2743,7 +3011,7 @@ function CommandDialog({
|
|
|
2743
3011
|
/* @__PURE__ */ jsx23(
|
|
2744
3012
|
DialogContent,
|
|
2745
3013
|
{
|
|
2746
|
-
className:
|
|
3014
|
+
className: cn23(
|
|
2747
3015
|
"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0",
|
|
2748
3016
|
className
|
|
2749
3017
|
),
|
|
@@ -2764,7 +3032,7 @@ function CommandInput({
|
|
|
2764
3032
|
InputGroup,
|
|
2765
3033
|
{
|
|
2766
3034
|
"data-slot": "command-input-wrapper",
|
|
2767
|
-
className:
|
|
3035
|
+
className: cn23(
|
|
2768
3036
|
"h-8! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!",
|
|
2769
3037
|
className
|
|
2770
3038
|
),
|
|
@@ -2793,7 +3061,7 @@ function CommandList({
|
|
|
2793
3061
|
CommandPrimitive.List,
|
|
2794
3062
|
{
|
|
2795
3063
|
"data-slot": "command-list",
|
|
2796
|
-
className:
|
|
3064
|
+
className: cn23(
|
|
2797
3065
|
"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
|
|
2798
3066
|
className
|
|
2799
3067
|
),
|
|
@@ -2809,7 +3077,7 @@ function CommandEmpty({
|
|
|
2809
3077
|
CommandPrimitive.Empty,
|
|
2810
3078
|
{
|
|
2811
3079
|
"data-slot": "command-empty",
|
|
2812
|
-
className:
|
|
3080
|
+
className: cn23("py-6 text-center text-sm", className),
|
|
2813
3081
|
...props
|
|
2814
3082
|
}
|
|
2815
3083
|
);
|
|
@@ -2822,7 +3090,7 @@ function CommandGroup({
|
|
|
2822
3090
|
CommandPrimitive.Group,
|
|
2823
3091
|
{
|
|
2824
3092
|
"data-slot": "command-group",
|
|
2825
|
-
className:
|
|
3093
|
+
className: cn23(
|
|
2826
3094
|
"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",
|
|
2827
3095
|
className
|
|
2828
3096
|
),
|
|
@@ -2838,7 +3106,7 @@ function CommandSeparator({
|
|
|
2838
3106
|
CommandPrimitive.Separator,
|
|
2839
3107
|
{
|
|
2840
3108
|
"data-slot": "command-separator",
|
|
2841
|
-
className:
|
|
3109
|
+
className: cn23("-mx-1 h-px bg-border", className),
|
|
2842
3110
|
...props
|
|
2843
3111
|
}
|
|
2844
3112
|
);
|
|
@@ -2852,7 +3120,7 @@ function CommandItem({
|
|
|
2852
3120
|
CommandPrimitive.Item,
|
|
2853
3121
|
{
|
|
2854
3122
|
"data-slot": "command-item",
|
|
2855
|
-
className:
|
|
3123
|
+
className: cn23(
|
|
2856
3124
|
"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",
|
|
2857
3125
|
className
|
|
2858
3126
|
),
|
|
@@ -2869,7 +3137,7 @@ function CommandShortcut({
|
|
|
2869
3137
|
"span",
|
|
2870
3138
|
{
|
|
2871
3139
|
"data-slot": "command-shortcut",
|
|
2872
|
-
className:
|
|
3140
|
+
className: cn23(
|
|
2873
3141
|
"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",
|
|
2874
3142
|
className
|
|
2875
3143
|
),
|
|
@@ -2879,7 +3147,8 @@ function CommandShortcut({
|
|
|
2879
3147
|
}
|
|
2880
3148
|
|
|
2881
3149
|
// src/ui/dashed.tsx
|
|
2882
|
-
import * as
|
|
3150
|
+
import * as React7 from "react";
|
|
3151
|
+
import { cn as cn24 } from "cn";
|
|
2883
3152
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2884
3153
|
function DashedSeparator({
|
|
2885
3154
|
className,
|
|
@@ -2887,9 +3156,9 @@ function DashedSeparator({
|
|
|
2887
3156
|
minimumGap = 8,
|
|
2888
3157
|
thickness = 1
|
|
2889
3158
|
}) {
|
|
2890
|
-
const containerRef =
|
|
2891
|
-
const [dashCount, setDashCount] =
|
|
2892
|
-
|
|
3159
|
+
const containerRef = React7.useRef(null);
|
|
3160
|
+
const [dashCount, setDashCount] = React7.useState(0);
|
|
3161
|
+
React7.useEffect(() => {
|
|
2893
3162
|
const element = containerRef.current;
|
|
2894
3163
|
if (!element) return;
|
|
2895
3164
|
const updateDashCount = () => {
|
|
@@ -2910,7 +3179,7 @@ function DashedSeparator({
|
|
|
2910
3179
|
{
|
|
2911
3180
|
ref: containerRef,
|
|
2912
3181
|
"aria-hidden": "true",
|
|
2913
|
-
className:
|
|
3182
|
+
className: cn24(
|
|
2914
3183
|
"flex w-full items-center justify-between overflow-hidden text-border",
|
|
2915
3184
|
className
|
|
2916
3185
|
),
|
|
@@ -2931,8 +3200,9 @@ function DashedSeparator({
|
|
|
2931
3200
|
}
|
|
2932
3201
|
|
|
2933
3202
|
// src/ui/dock.tsx
|
|
3203
|
+
import { cn as cn25 } from "cn";
|
|
2934
3204
|
import { motion as motion4 } from "motion/react";
|
|
2935
|
-
import * as
|
|
3205
|
+
import * as React8 from "react";
|
|
2936
3206
|
import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2937
3207
|
var floatingAnimation = {
|
|
2938
3208
|
initial: { y: 0 },
|
|
@@ -2945,7 +3215,7 @@ var floatingAnimation = {
|
|
|
2945
3215
|
}
|
|
2946
3216
|
}
|
|
2947
3217
|
};
|
|
2948
|
-
var DockIconButton =
|
|
3218
|
+
var DockIconButton = React8.forwardRef(
|
|
2949
3219
|
({ icon: Icon, label, onClick, className }, ref) => {
|
|
2950
3220
|
return /* @__PURE__ */ jsxs13(
|
|
2951
3221
|
motion4.button,
|
|
@@ -2954,7 +3224,7 @@ var DockIconButton = React7.forwardRef(
|
|
|
2954
3224
|
whileHover: { scale: 1.1, y: -2 },
|
|
2955
3225
|
whileTap: { scale: 0.95 },
|
|
2956
3226
|
onClick,
|
|
2957
|
-
className:
|
|
3227
|
+
className: cn25(
|
|
2958
3228
|
"group relative rounded-lg p-3",
|
|
2959
3229
|
"transition-colors hover:bg-secondary",
|
|
2960
3230
|
className
|
|
@@ -2964,7 +3234,7 @@ var DockIconButton = React7.forwardRef(
|
|
|
2964
3234
|
/* @__PURE__ */ jsx25(
|
|
2965
3235
|
"span",
|
|
2966
3236
|
{
|
|
2967
|
-
className:
|
|
3237
|
+
className: cn25(
|
|
2968
3238
|
"absolute -top-8 left-1/2 -translate-x-1/2",
|
|
2969
3239
|
"rounded px-2 py-1 text-xs",
|
|
2970
3240
|
"bg-background text-popover-foreground",
|
|
@@ -2980,13 +3250,13 @@ var DockIconButton = React7.forwardRef(
|
|
|
2980
3250
|
}
|
|
2981
3251
|
);
|
|
2982
3252
|
DockIconButton.displayName = "DockIconButton";
|
|
2983
|
-
var Dock =
|
|
3253
|
+
var Dock = React8.forwardRef(
|
|
2984
3254
|
({ items, className }, ref) => {
|
|
2985
3255
|
return /* @__PURE__ */ jsx25(
|
|
2986
3256
|
"div",
|
|
2987
3257
|
{
|
|
2988
3258
|
ref,
|
|
2989
|
-
className:
|
|
3259
|
+
className: cn25(
|
|
2990
3260
|
"flex h-64 w-full items-center justify-center p-2",
|
|
2991
3261
|
className
|
|
2992
3262
|
),
|
|
@@ -2996,7 +3266,7 @@ var Dock = React7.forwardRef(
|
|
|
2996
3266
|
initial: "initial",
|
|
2997
3267
|
animate: "animate",
|
|
2998
3268
|
variants: floatingAnimation,
|
|
2999
|
-
className:
|
|
3269
|
+
className: cn25(
|
|
3000
3270
|
"flex items-center gap-1 rounded-2xl p-2",
|
|
3001
3271
|
"border shadow-lg backdrop-blur-lg",
|
|
3002
3272
|
"border-border bg-background/90",
|
|
@@ -3013,11 +3283,12 @@ Dock.displayName = "Dock";
|
|
|
3013
3283
|
|
|
3014
3284
|
// src/ui/drawer.tsx
|
|
3015
3285
|
import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
|
|
3016
|
-
import * as
|
|
3286
|
+
import * as React9 from "react";
|
|
3287
|
+
import { cn as cn26 } from "cn";
|
|
3017
3288
|
import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3018
|
-
var DrawerContext =
|
|
3289
|
+
var DrawerContext = React9.createContext(null);
|
|
3019
3290
|
function useDrawer() {
|
|
3020
|
-
const context =
|
|
3291
|
+
const context = React9.useContext(DrawerContext);
|
|
3021
3292
|
if (!context) {
|
|
3022
3293
|
throw new Error("useDrawer must be used within a Drawer.");
|
|
3023
3294
|
}
|
|
@@ -3032,7 +3303,7 @@ function Drawer({
|
|
|
3032
3303
|
}) {
|
|
3033
3304
|
const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
|
|
3034
3305
|
const resolvedShowSwipeHandle = showSwipeHandle ?? (swipeDirection === "down" || swipeDirection === "up");
|
|
3035
|
-
const contextValue =
|
|
3306
|
+
const contextValue = React9.useMemo(
|
|
3036
3307
|
() => ({
|
|
3037
3308
|
hasSnapPoints,
|
|
3038
3309
|
modal,
|
|
@@ -3069,7 +3340,7 @@ function DrawerOverlay({
|
|
|
3069
3340
|
DrawerPrimitive.Backdrop,
|
|
3070
3341
|
{
|
|
3071
3342
|
"data-slot": "drawer-overlay",
|
|
3072
|
-
className:
|
|
3343
|
+
className: cn26(
|
|
3073
3344
|
"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",
|
|
3074
3345
|
className
|
|
3075
3346
|
),
|
|
@@ -3086,7 +3357,7 @@ function DrawerSwipeHandle({
|
|
|
3086
3357
|
{
|
|
3087
3358
|
"data-slot": "drawer-swipe-handle",
|
|
3088
3359
|
"aria-hidden": "true",
|
|
3089
|
-
className:
|
|
3360
|
+
className: cn26(
|
|
3090
3361
|
"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",
|
|
3091
3362
|
className
|
|
3092
3363
|
),
|
|
@@ -3115,7 +3386,7 @@ function DrawerContent({
|
|
|
3115
3386
|
"data-slot": "drawer-popup",
|
|
3116
3387
|
"data-swipe-axis": swipeAxis,
|
|
3117
3388
|
"data-snap-points": hasSnapPoints ? "" : void 0,
|
|
3118
|
-
className:
|
|
3389
|
+
className: cn26(
|
|
3119
3390
|
// Base.
|
|
3120
3391
|
"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",
|
|
3121
3392
|
// Nested.
|
|
@@ -3149,7 +3420,7 @@ function DrawerContent({
|
|
|
3149
3420
|
DrawerPrimitive.Content,
|
|
3150
3421
|
{
|
|
3151
3422
|
"data-slot": "drawer-content",
|
|
3152
|
-
className:
|
|
3423
|
+
className: cn26(
|
|
3153
3424
|
"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"
|
|
3154
3425
|
),
|
|
3155
3426
|
children
|
|
@@ -3167,7 +3438,7 @@ function DrawerHeader({ className, ...props }) {
|
|
|
3167
3438
|
"div",
|
|
3168
3439
|
{
|
|
3169
3440
|
"data-slot": "drawer-header",
|
|
3170
|
-
className:
|
|
3441
|
+
className: cn26(
|
|
3171
3442
|
"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",
|
|
3172
3443
|
className
|
|
3173
3444
|
),
|
|
@@ -3180,7 +3451,7 @@ function DrawerFooter({ className, ...props }) {
|
|
|
3180
3451
|
"div",
|
|
3181
3452
|
{
|
|
3182
3453
|
"data-slot": "drawer-footer",
|
|
3183
|
-
className:
|
|
3454
|
+
className: cn26("mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0", className),
|
|
3184
3455
|
...props
|
|
3185
3456
|
}
|
|
3186
3457
|
);
|
|
@@ -3190,7 +3461,7 @@ function DrawerTitle({ className, ...props }) {
|
|
|
3190
3461
|
DrawerPrimitive.Title,
|
|
3191
3462
|
{
|
|
3192
3463
|
"data-slot": "drawer-title",
|
|
3193
|
-
className:
|
|
3464
|
+
className: cn26(
|
|
3194
3465
|
"font-heading text-base font-medium text-foreground",
|
|
3195
3466
|
className
|
|
3196
3467
|
),
|
|
@@ -3206,7 +3477,7 @@ function DrawerDescription({
|
|
|
3206
3477
|
DrawerPrimitive.Description,
|
|
3207
3478
|
{
|
|
3208
3479
|
"data-slot": "drawer-description",
|
|
3209
|
-
className:
|
|
3480
|
+
className: cn26("text-sm text-balance text-muted-foreground", className),
|
|
3210
3481
|
...props
|
|
3211
3482
|
}
|
|
3212
3483
|
);
|
|
@@ -3214,6 +3485,7 @@ function DrawerDescription({
|
|
|
3214
3485
|
|
|
3215
3486
|
// src/ui/dropdown-menu.tsx
|
|
3216
3487
|
import { Menu as MenuPrimitive } from "@base-ui/react/menu";
|
|
3488
|
+
import { cn as cn27 } from "cn";
|
|
3217
3489
|
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
3218
3490
|
import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3219
3491
|
function DropdownMenu({ ...props }) {
|
|
@@ -3245,7 +3517,7 @@ function DropdownMenuContent({
|
|
|
3245
3517
|
MenuPrimitive.Popup,
|
|
3246
3518
|
{
|
|
3247
3519
|
"data-slot": "dropdown-menu-content",
|
|
3248
|
-
className:
|
|
3520
|
+
className: cn27(
|
|
3249
3521
|
"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",
|
|
3250
3522
|
className
|
|
3251
3523
|
),
|
|
@@ -3268,7 +3540,7 @@ function DropdownMenuLabel({
|
|
|
3268
3540
|
{
|
|
3269
3541
|
"data-slot": "dropdown-menu-label",
|
|
3270
3542
|
"data-inset": inset,
|
|
3271
|
-
className:
|
|
3543
|
+
className: cn27(
|
|
3272
3544
|
"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",
|
|
3273
3545
|
className
|
|
3274
3546
|
),
|
|
@@ -3288,7 +3560,7 @@ function DropdownMenuItem({
|
|
|
3288
3560
|
"data-slot": "dropdown-menu-item",
|
|
3289
3561
|
"data-inset": inset,
|
|
3290
3562
|
"data-variant": variant,
|
|
3291
|
-
className:
|
|
3563
|
+
className: cn27(
|
|
3292
3564
|
"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",
|
|
3293
3565
|
className
|
|
3294
3566
|
),
|
|
@@ -3310,7 +3582,7 @@ function DropdownMenuSubTrigger({
|
|
|
3310
3582
|
{
|
|
3311
3583
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
3312
3584
|
"data-inset": inset,
|
|
3313
|
-
className:
|
|
3585
|
+
className: cn27(
|
|
3314
3586
|
"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",
|
|
3315
3587
|
className
|
|
3316
3588
|
),
|
|
@@ -3334,7 +3606,7 @@ function DropdownMenuSubContent({
|
|
|
3334
3606
|
DropdownMenuContent,
|
|
3335
3607
|
{
|
|
3336
3608
|
"data-slot": "dropdown-menu-sub-content",
|
|
3337
|
-
className:
|
|
3609
|
+
className: cn27(
|
|
3338
3610
|
"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",
|
|
3339
3611
|
className
|
|
3340
3612
|
),
|
|
@@ -3358,7 +3630,7 @@ function DropdownMenuCheckboxItem({
|
|
|
3358
3630
|
{
|
|
3359
3631
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
3360
3632
|
"data-inset": inset,
|
|
3361
|
-
className:
|
|
3633
|
+
className: cn27(
|
|
3362
3634
|
"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",
|
|
3363
3635
|
className
|
|
3364
3636
|
),
|
|
@@ -3398,7 +3670,7 @@ function DropdownMenuRadioItem({
|
|
|
3398
3670
|
{
|
|
3399
3671
|
"data-slot": "dropdown-menu-radio-item",
|
|
3400
3672
|
"data-inset": inset,
|
|
3401
|
-
className:
|
|
3673
|
+
className: cn27(
|
|
3402
3674
|
"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",
|
|
3403
3675
|
className
|
|
3404
3676
|
),
|
|
@@ -3425,7 +3697,7 @@ function DropdownMenuSeparator({
|
|
|
3425
3697
|
MenuPrimitive.Separator,
|
|
3426
3698
|
{
|
|
3427
3699
|
"data-slot": "dropdown-menu-separator",
|
|
3428
|
-
className:
|
|
3700
|
+
className: cn27("-mx-1 my-1 h-px bg-border", className),
|
|
3429
3701
|
...props
|
|
3430
3702
|
}
|
|
3431
3703
|
);
|
|
@@ -3438,7 +3710,7 @@ function DropdownMenuShortcut({
|
|
|
3438
3710
|
"span",
|
|
3439
3711
|
{
|
|
3440
3712
|
"data-slot": "dropdown-menu-shortcut",
|
|
3441
|
-
className:
|
|
3713
|
+
className: cn27(
|
|
3442
3714
|
"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground",
|
|
3443
3715
|
className
|
|
3444
3716
|
),
|
|
@@ -3449,13 +3721,14 @@ function DropdownMenuShortcut({
|
|
|
3449
3721
|
|
|
3450
3722
|
// src/ui/empty.tsx
|
|
3451
3723
|
import { cva as cva6 } from "class-variance-authority";
|
|
3724
|
+
import { cn as cn28 } from "cn";
|
|
3452
3725
|
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
3453
3726
|
function Empty({ className, ...props }) {
|
|
3454
3727
|
return /* @__PURE__ */ jsx28(
|
|
3455
3728
|
"div",
|
|
3456
3729
|
{
|
|
3457
3730
|
"data-slot": "empty",
|
|
3458
|
-
className:
|
|
3731
|
+
className: cn28(
|
|
3459
3732
|
"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",
|
|
3460
3733
|
className
|
|
3461
3734
|
),
|
|
@@ -3468,7 +3741,7 @@ function EmptyHeader({ className, ...props }) {
|
|
|
3468
3741
|
"div",
|
|
3469
3742
|
{
|
|
3470
3743
|
"data-slot": "empty-header",
|
|
3471
|
-
className:
|
|
3744
|
+
className: cn28("flex max-w-sm flex-col items-center gap-2", className),
|
|
3472
3745
|
...props
|
|
3473
3746
|
}
|
|
3474
3747
|
);
|
|
@@ -3497,7 +3770,7 @@ function EmptyMedia({
|
|
|
3497
3770
|
{
|
|
3498
3771
|
"data-slot": "empty-icon",
|
|
3499
3772
|
"data-variant": variant,
|
|
3500
|
-
className:
|
|
3773
|
+
className: cn28(emptyMediaVariants({ variant, className })),
|
|
3501
3774
|
...props
|
|
3502
3775
|
}
|
|
3503
3776
|
);
|
|
@@ -3507,7 +3780,7 @@ function EmptyTitle({ className, ...props }) {
|
|
|
3507
3780
|
"div",
|
|
3508
3781
|
{
|
|
3509
3782
|
"data-slot": "empty-title",
|
|
3510
|
-
className:
|
|
3783
|
+
className: cn28("text-sm font-medium tracking-tight", className),
|
|
3511
3784
|
...props
|
|
3512
3785
|
}
|
|
3513
3786
|
);
|
|
@@ -3517,7 +3790,7 @@ function EmptyDescription({ className, ...props }) {
|
|
|
3517
3790
|
"div",
|
|
3518
3791
|
{
|
|
3519
3792
|
"data-slot": "empty-description",
|
|
3520
|
-
className:
|
|
3793
|
+
className: cn28(
|
|
3521
3794
|
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
3522
3795
|
className
|
|
3523
3796
|
),
|
|
@@ -3530,7 +3803,7 @@ function EmptyContent({ className, ...props }) {
|
|
|
3530
3803
|
"div",
|
|
3531
3804
|
{
|
|
3532
3805
|
"data-slot": "empty-content",
|
|
3533
|
-
className:
|
|
3806
|
+
className: cn28(
|
|
3534
3807
|
"flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",
|
|
3535
3808
|
className
|
|
3536
3809
|
),
|
|
@@ -3553,6 +3826,37 @@ function useMediaQuery(query) {
|
|
|
3553
3826
|
return matches;
|
|
3554
3827
|
}
|
|
3555
3828
|
|
|
3829
|
+
// src/ui/farmer/div.tsx
|
|
3830
|
+
import { motion as motion5 } from "motion/react";
|
|
3831
|
+
import React10 from "react";
|
|
3832
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
3833
|
+
var AnimatedDiv = React10.forwardRef(
|
|
3834
|
+
({ variants, mobileVariants, className, children, infinity, ...motionProps }, ref) => {
|
|
3835
|
+
const isDesktop = useMediaQuery("(min-width: 768px)");
|
|
3836
|
+
const selectedVariants = !isDesktop && mobileVariants ? mobileVariants : variants;
|
|
3837
|
+
return /* @__PURE__ */ jsx29(
|
|
3838
|
+
motion5.div,
|
|
3839
|
+
{
|
|
3840
|
+
ref,
|
|
3841
|
+
layout: true,
|
|
3842
|
+
className,
|
|
3843
|
+
initial: "hidden",
|
|
3844
|
+
transition: {
|
|
3845
|
+
staggerChildren: 0.1,
|
|
3846
|
+
delayChildren: 0.2
|
|
3847
|
+
},
|
|
3848
|
+
variants: selectedVariants,
|
|
3849
|
+
viewport: { once: !infinity },
|
|
3850
|
+
whileInView: "visible",
|
|
3851
|
+
...motionProps,
|
|
3852
|
+
children
|
|
3853
|
+
}
|
|
3854
|
+
);
|
|
3855
|
+
}
|
|
3856
|
+
);
|
|
3857
|
+
AnimatedDiv.displayName = "AnimatedDiv";
|
|
3858
|
+
var div_default = AnimatedDiv;
|
|
3859
|
+
|
|
3556
3860
|
// src/ui/farmer/FramerMotionVariants.ts
|
|
3557
3861
|
var activityItemAnimation = {
|
|
3558
3862
|
hidden: {
|
|
@@ -3848,15 +4152,17 @@ var kanbanOrderCardLayoutTransition = {
|
|
|
3848
4152
|
// src/ui/field.tsx
|
|
3849
4153
|
import { cva as cva7 } from "class-variance-authority";
|
|
3850
4154
|
import { useMemo as useMemo3 } from "react";
|
|
4155
|
+
import { cn as cn30 } from "cn";
|
|
3851
4156
|
|
|
3852
4157
|
// src/ui/label.tsx
|
|
3853
|
-
import {
|
|
4158
|
+
import { cn as cn29 } from "cn";
|
|
4159
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
3854
4160
|
function Label({ className, ...props }) {
|
|
3855
|
-
return /* @__PURE__ */
|
|
4161
|
+
return /* @__PURE__ */ jsx30(
|
|
3856
4162
|
"label",
|
|
3857
4163
|
{
|
|
3858
4164
|
"data-slot": "label",
|
|
3859
|
-
className:
|
|
4165
|
+
className: cn29(
|
|
3860
4166
|
"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",
|
|
3861
4167
|
className
|
|
3862
4168
|
),
|
|
@@ -3866,13 +4172,13 @@ function Label({ className, ...props }) {
|
|
|
3866
4172
|
}
|
|
3867
4173
|
|
|
3868
4174
|
// src/ui/field.tsx
|
|
3869
|
-
import { jsx as
|
|
4175
|
+
import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3870
4176
|
function FieldSet({ className, ...props }) {
|
|
3871
|
-
return /* @__PURE__ */
|
|
4177
|
+
return /* @__PURE__ */ jsx31(
|
|
3872
4178
|
"fieldset",
|
|
3873
4179
|
{
|
|
3874
4180
|
"data-slot": "field-set",
|
|
3875
|
-
className:
|
|
4181
|
+
className: cn30(
|
|
3876
4182
|
"flex flex-col gap-1 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
|
|
3877
4183
|
className
|
|
3878
4184
|
),
|
|
@@ -3885,12 +4191,12 @@ function FieldLegend({
|
|
|
3885
4191
|
variant = "legend",
|
|
3886
4192
|
...props
|
|
3887
4193
|
}) {
|
|
3888
|
-
return /* @__PURE__ */
|
|
4194
|
+
return /* @__PURE__ */ jsx31(
|
|
3889
4195
|
"legend",
|
|
3890
4196
|
{
|
|
3891
4197
|
"data-slot": "field-legend",
|
|
3892
4198
|
"data-variant": variant,
|
|
3893
|
-
className:
|
|
4199
|
+
className: cn30(
|
|
3894
4200
|
"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base",
|
|
3895
4201
|
className
|
|
3896
4202
|
),
|
|
@@ -3899,11 +4205,11 @@ function FieldLegend({
|
|
|
3899
4205
|
);
|
|
3900
4206
|
}
|
|
3901
4207
|
function FieldGroup({ className, ...props }) {
|
|
3902
|
-
return /* @__PURE__ */
|
|
4208
|
+
return /* @__PURE__ */ jsx31(
|
|
3903
4209
|
"div",
|
|
3904
4210
|
{
|
|
3905
4211
|
"data-slot": "field-group",
|
|
3906
|
-
className:
|
|
4212
|
+
className: cn30(
|
|
3907
4213
|
"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",
|
|
3908
4214
|
className
|
|
3909
4215
|
),
|
|
@@ -3931,23 +4237,23 @@ function Field({
|
|
|
3931
4237
|
orientation = "vertical",
|
|
3932
4238
|
...props
|
|
3933
4239
|
}) {
|
|
3934
|
-
return /* @__PURE__ */
|
|
4240
|
+
return /* @__PURE__ */ jsx31(
|
|
3935
4241
|
"div",
|
|
3936
4242
|
{
|
|
3937
4243
|
role: "group",
|
|
3938
4244
|
"data-slot": "field",
|
|
3939
4245
|
"data-orientation": orientation,
|
|
3940
|
-
className:
|
|
4246
|
+
className: cn30(fieldVariants({ orientation }), className),
|
|
3941
4247
|
...props
|
|
3942
4248
|
}
|
|
3943
4249
|
);
|
|
3944
4250
|
}
|
|
3945
4251
|
function FieldContent({ className, ...props }) {
|
|
3946
|
-
return /* @__PURE__ */
|
|
4252
|
+
return /* @__PURE__ */ jsx31(
|
|
3947
4253
|
"div",
|
|
3948
4254
|
{
|
|
3949
4255
|
"data-slot": "field-content",
|
|
3950
|
-
className:
|
|
4256
|
+
className: cn30(
|
|
3951
4257
|
"group/field-content flex flex-1 flex-col gap-0.5 leading-snug",
|
|
3952
4258
|
className
|
|
3953
4259
|
),
|
|
@@ -3959,11 +4265,11 @@ function FieldLabel({
|
|
|
3959
4265
|
className,
|
|
3960
4266
|
...props
|
|
3961
4267
|
}) {
|
|
3962
|
-
return /* @__PURE__ */
|
|
4268
|
+
return /* @__PURE__ */ jsx31(
|
|
3963
4269
|
Label,
|
|
3964
4270
|
{
|
|
3965
4271
|
"data-slot": "field-label",
|
|
3966
|
-
className:
|
|
4272
|
+
className: cn30(
|
|
3967
4273
|
"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",
|
|
3968
4274
|
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
|
|
3969
4275
|
className
|
|
@@ -3973,11 +4279,11 @@ function FieldLabel({
|
|
|
3973
4279
|
);
|
|
3974
4280
|
}
|
|
3975
4281
|
function FieldTitle({ className, ...props }) {
|
|
3976
|
-
return /* @__PURE__ */
|
|
4282
|
+
return /* @__PURE__ */ jsx31(
|
|
3977
4283
|
"div",
|
|
3978
4284
|
{
|
|
3979
4285
|
"data-slot": "field-label",
|
|
3980
|
-
className:
|
|
4286
|
+
className: cn30(
|
|
3981
4287
|
"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50",
|
|
3982
4288
|
className
|
|
3983
4289
|
),
|
|
@@ -3986,11 +4292,11 @@ function FieldTitle({ className, ...props }) {
|
|
|
3986
4292
|
);
|
|
3987
4293
|
}
|
|
3988
4294
|
function FieldDescription({ className, ...props }) {
|
|
3989
|
-
return /* @__PURE__ */
|
|
4295
|
+
return /* @__PURE__ */ jsx31(
|
|
3990
4296
|
"p",
|
|
3991
4297
|
{
|
|
3992
4298
|
"data-slot": "field-description",
|
|
3993
|
-
className:
|
|
4299
|
+
className: cn30(
|
|
3994
4300
|
"text-left text-[10px] leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
|
|
3995
4301
|
"last:mt-0 nth-last-2:-mt-1",
|
|
3996
4302
|
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
@@ -4010,14 +4316,14 @@ function FieldSeparator({
|
|
|
4010
4316
|
{
|
|
4011
4317
|
"data-slot": "field-separator",
|
|
4012
4318
|
"data-content": !!children,
|
|
4013
|
-
className:
|
|
4319
|
+
className: cn30(
|
|
4014
4320
|
"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
|
|
4015
4321
|
className
|
|
4016
4322
|
),
|
|
4017
4323
|
...props,
|
|
4018
4324
|
children: [
|
|
4019
|
-
/* @__PURE__ */
|
|
4020
|
-
children && /* @__PURE__ */
|
|
4325
|
+
/* @__PURE__ */ jsx31(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
4326
|
+
children && /* @__PURE__ */ jsx31(
|
|
4021
4327
|
"span",
|
|
4022
4328
|
{
|
|
4023
4329
|
className: "relative mx-auto block w-fit px-2 text-muted-foreground",
|
|
@@ -4048,19 +4354,19 @@ function FieldError({
|
|
|
4048
4354
|
if (uniqueErrors?.length == 1) {
|
|
4049
4355
|
return uniqueErrors[0]?.message;
|
|
4050
4356
|
}
|
|
4051
|
-
return /* @__PURE__ */
|
|
4052
|
-
(error, index) => error?.message && /* @__PURE__ */
|
|
4357
|
+
return /* @__PURE__ */ jsx31("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
4358
|
+
(error, index) => error?.message && /* @__PURE__ */ jsx31("li", { children: error.message }, index)
|
|
4053
4359
|
) });
|
|
4054
4360
|
}, [children, errors]);
|
|
4055
4361
|
if (!content) {
|
|
4056
4362
|
return null;
|
|
4057
4363
|
}
|
|
4058
|
-
return /* @__PURE__ */
|
|
4364
|
+
return /* @__PURE__ */ jsx31(
|
|
4059
4365
|
"div",
|
|
4060
4366
|
{
|
|
4061
4367
|
role: "alert",
|
|
4062
4368
|
"data-slot": "field-error",
|
|
4063
|
-
className:
|
|
4369
|
+
className: cn30("text-sm font-normal text-destructive", className),
|
|
4064
4370
|
...props,
|
|
4065
4371
|
children: content
|
|
4066
4372
|
}
|
|
@@ -4069,8 +4375,9 @@ function FieldError({
|
|
|
4069
4375
|
|
|
4070
4376
|
// src/ui/image.tsx
|
|
4071
4377
|
import NextImage from "next/image";
|
|
4072
|
-
import { useCallback as
|
|
4073
|
-
import {
|
|
4378
|
+
import { useCallback as useCallback3, useState as useState5 } from "react";
|
|
4379
|
+
import { cn as cn31 } from "cn";
|
|
4380
|
+
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4074
4381
|
function srcValue(src) {
|
|
4075
4382
|
if (!src) return null;
|
|
4076
4383
|
if (typeof src === "string") return src;
|
|
@@ -4090,7 +4397,7 @@ function Image({
|
|
|
4090
4397
|
onLoad,
|
|
4091
4398
|
onError,
|
|
4092
4399
|
children,
|
|
4093
|
-
fallback = /* @__PURE__ */
|
|
4400
|
+
fallback = /* @__PURE__ */ jsx32(JellyMini, { mood: "curious", className: "size-full p-4" }),
|
|
4094
4401
|
...props
|
|
4095
4402
|
}) {
|
|
4096
4403
|
const currentSrc = srcValue(src);
|
|
@@ -4101,18 +4408,18 @@ function Image({
|
|
|
4101
4408
|
const loaded = hasSource && loadedSrc === currentSrc && !failed;
|
|
4102
4409
|
const shouldPreload = preload ?? loading === "eager";
|
|
4103
4410
|
const imageLoading = shouldPreload ? "eager" : loading;
|
|
4104
|
-
const markLoaded =
|
|
4411
|
+
const markLoaded = useCallback3(() => {
|
|
4105
4412
|
if (!currentSrc) return;
|
|
4106
4413
|
setFailedSrc(null);
|
|
4107
4414
|
setLoadedSrc(currentSrc);
|
|
4108
4415
|
}, [currentSrc]);
|
|
4109
|
-
const markFailed =
|
|
4416
|
+
const markFailed = useCallback3(() => {
|
|
4110
4417
|
if (!currentSrc) return;
|
|
4111
4418
|
setFailedSrc(currentSrc);
|
|
4112
4419
|
}, [currentSrc]);
|
|
4113
|
-
return /* @__PURE__ */ jsxs17("section", { className:
|
|
4114
|
-
showSkeleton && !loaded && !failed && hasSource && /* @__PURE__ */
|
|
4115
|
-
hasSource && !failed ? /* @__PURE__ */
|
|
4420
|
+
return /* @__PURE__ */ jsxs17("section", { className: cn31("relative block overflow-hidden", wrapper), children: [
|
|
4421
|
+
showSkeleton && !loaded && !failed && hasSource && /* @__PURE__ */ jsx32(Skeleton, { className: "absolute inset-0 size-full" }),
|
|
4422
|
+
hasSource && !failed ? /* @__PURE__ */ jsx32(
|
|
4116
4423
|
NextImage,
|
|
4117
4424
|
{
|
|
4118
4425
|
...props,
|
|
@@ -4122,7 +4429,7 @@ function Image({
|
|
|
4122
4429
|
loading: imageLoading,
|
|
4123
4430
|
preload: shouldPreload,
|
|
4124
4431
|
fetchPriority: fetchPriority ?? (imageLoading === "eager" ? "high" : void 0),
|
|
4125
|
-
className:
|
|
4432
|
+
className: cn31(
|
|
4126
4433
|
"transition-opacity duration-200",
|
|
4127
4434
|
loaded ? "opacity-100" : "opacity-0",
|
|
4128
4435
|
className
|
|
@@ -4142,35 +4449,36 @@ function Image({
|
|
|
4142
4449
|
}
|
|
4143
4450
|
|
|
4144
4451
|
// src/ui/input-otp.tsx
|
|
4145
|
-
import * as
|
|
4452
|
+
import * as React11 from "react";
|
|
4146
4453
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
4454
|
+
import { cn as cn32 } from "cn";
|
|
4147
4455
|
import { MinusIcon } from "lucide-react";
|
|
4148
|
-
import { jsx as
|
|
4456
|
+
import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4149
4457
|
function InputOTP({
|
|
4150
4458
|
className,
|
|
4151
4459
|
containerClassName,
|
|
4152
4460
|
...props
|
|
4153
4461
|
}) {
|
|
4154
|
-
return /* @__PURE__ */
|
|
4462
|
+
return /* @__PURE__ */ jsx33(
|
|
4155
4463
|
OTPInput,
|
|
4156
4464
|
{
|
|
4157
4465
|
"data-slot": "input-otp",
|
|
4158
|
-
containerClassName:
|
|
4466
|
+
containerClassName: cn32(
|
|
4159
4467
|
"cn-input-otp flex items-center has-disabled:opacity-50",
|
|
4160
4468
|
containerClassName
|
|
4161
4469
|
),
|
|
4162
4470
|
spellCheck: false,
|
|
4163
|
-
className:
|
|
4471
|
+
className: cn32("disabled:cursor-not-allowed", className),
|
|
4164
4472
|
...props
|
|
4165
4473
|
}
|
|
4166
4474
|
);
|
|
4167
4475
|
}
|
|
4168
4476
|
function InputOTPGroup({ className, ...props }) {
|
|
4169
|
-
return /* @__PURE__ */
|
|
4477
|
+
return /* @__PURE__ */ jsx33(
|
|
4170
4478
|
"div",
|
|
4171
4479
|
{
|
|
4172
4480
|
"data-slot": "input-otp-group",
|
|
4173
|
-
className:
|
|
4481
|
+
className: cn32(
|
|
4174
4482
|
"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",
|
|
4175
4483
|
className
|
|
4176
4484
|
),
|
|
@@ -4183,34 +4491,34 @@ function InputOTPSlot({
|
|
|
4183
4491
|
className,
|
|
4184
4492
|
...props
|
|
4185
4493
|
}) {
|
|
4186
|
-
const inputOTPContext =
|
|
4494
|
+
const inputOTPContext = React11.useContext(OTPInputContext);
|
|
4187
4495
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
4188
4496
|
return /* @__PURE__ */ jsxs18(
|
|
4189
4497
|
"div",
|
|
4190
4498
|
{
|
|
4191
4499
|
"data-slot": "input-otp-slot",
|
|
4192
4500
|
"data-active": isActive,
|
|
4193
|
-
className:
|
|
4501
|
+
className: cn32(
|
|
4194
4502
|
"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",
|
|
4195
4503
|
className
|
|
4196
4504
|
),
|
|
4197
4505
|
...props,
|
|
4198
4506
|
children: [
|
|
4199
4507
|
char,
|
|
4200
|
-
hasFakeCaret && /* @__PURE__ */
|
|
4508
|
+
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" }) })
|
|
4201
4509
|
]
|
|
4202
4510
|
}
|
|
4203
4511
|
);
|
|
4204
4512
|
}
|
|
4205
4513
|
function InputOTPSeparator({ ...props }) {
|
|
4206
|
-
return /* @__PURE__ */
|
|
4514
|
+
return /* @__PURE__ */ jsx33(
|
|
4207
4515
|
"div",
|
|
4208
4516
|
{
|
|
4209
4517
|
"data-slot": "input-otp-separator",
|
|
4210
4518
|
className: "flex items-center [&_svg:not([class*='size-'])]:size-4",
|
|
4211
4519
|
role: "separator",
|
|
4212
4520
|
...props,
|
|
4213
|
-
children: /* @__PURE__ */
|
|
4521
|
+
children: /* @__PURE__ */ jsx33(MinusIcon, {})
|
|
4214
4522
|
}
|
|
4215
4523
|
);
|
|
4216
4524
|
}
|
|
@@ -4219,14 +4527,15 @@ function InputOTPSeparator({ ...props }) {
|
|
|
4219
4527
|
import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
|
|
4220
4528
|
import { useRender as useRender4 } from "@base-ui/react/use-render";
|
|
4221
4529
|
import { cva as cva8 } from "class-variance-authority";
|
|
4222
|
-
import {
|
|
4530
|
+
import { cn as cn33 } from "cn";
|
|
4531
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
4223
4532
|
function ItemGroup({ className, ...props }) {
|
|
4224
|
-
return /* @__PURE__ */
|
|
4533
|
+
return /* @__PURE__ */ jsx34(
|
|
4225
4534
|
"div",
|
|
4226
4535
|
{
|
|
4227
4536
|
role: "list",
|
|
4228
4537
|
"data-slot": "item-group",
|
|
4229
|
-
className:
|
|
4538
|
+
className: cn33(
|
|
4230
4539
|
"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
|
|
4231
4540
|
className
|
|
4232
4541
|
),
|
|
@@ -4238,12 +4547,12 @@ function ItemSeparator({
|
|
|
4238
4547
|
className,
|
|
4239
4548
|
...props
|
|
4240
4549
|
}) {
|
|
4241
|
-
return /* @__PURE__ */
|
|
4550
|
+
return /* @__PURE__ */ jsx34(
|
|
4242
4551
|
Separator,
|
|
4243
4552
|
{
|
|
4244
4553
|
"data-slot": "item-separator",
|
|
4245
4554
|
orientation: "horizontal",
|
|
4246
|
-
className:
|
|
4555
|
+
className: cn33("my-2", className),
|
|
4247
4556
|
...props
|
|
4248
4557
|
}
|
|
4249
4558
|
);
|
|
@@ -4280,7 +4589,7 @@ function Item({
|
|
|
4280
4589
|
defaultTagName: "div",
|
|
4281
4590
|
props: mergeProps4(
|
|
4282
4591
|
{
|
|
4283
|
-
className:
|
|
4592
|
+
className: cn33(itemVariants({ variant, size, className }))
|
|
4284
4593
|
},
|
|
4285
4594
|
props
|
|
4286
4595
|
),
|
|
@@ -4312,22 +4621,22 @@ function ItemMedia({
|
|
|
4312
4621
|
variant = "default",
|
|
4313
4622
|
...props
|
|
4314
4623
|
}) {
|
|
4315
|
-
return /* @__PURE__ */
|
|
4624
|
+
return /* @__PURE__ */ jsx34(
|
|
4316
4625
|
"div",
|
|
4317
4626
|
{
|
|
4318
4627
|
"data-slot": "item-media",
|
|
4319
4628
|
"data-variant": variant,
|
|
4320
|
-
className:
|
|
4629
|
+
className: cn33(itemMediaVariants({ variant, className })),
|
|
4321
4630
|
...props
|
|
4322
4631
|
}
|
|
4323
4632
|
);
|
|
4324
4633
|
}
|
|
4325
4634
|
function ItemContent({ className, ...props }) {
|
|
4326
|
-
return /* @__PURE__ */
|
|
4635
|
+
return /* @__PURE__ */ jsx34(
|
|
4327
4636
|
"div",
|
|
4328
4637
|
{
|
|
4329
4638
|
"data-slot": "item-content",
|
|
4330
|
-
className:
|
|
4639
|
+
className: cn33(
|
|
4331
4640
|
"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
|
|
4332
4641
|
className
|
|
4333
4642
|
),
|
|
@@ -4336,11 +4645,11 @@ function ItemContent({ className, ...props }) {
|
|
|
4336
4645
|
);
|
|
4337
4646
|
}
|
|
4338
4647
|
function ItemTitle({ className, ...props }) {
|
|
4339
|
-
return /* @__PURE__ */
|
|
4648
|
+
return /* @__PURE__ */ jsx34(
|
|
4340
4649
|
"div",
|
|
4341
4650
|
{
|
|
4342
4651
|
"data-slot": "item-title",
|
|
4343
|
-
className:
|
|
4652
|
+
className: cn33(
|
|
4344
4653
|
"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
|
|
4345
4654
|
className
|
|
4346
4655
|
),
|
|
@@ -4349,11 +4658,11 @@ function ItemTitle({ className, ...props }) {
|
|
|
4349
4658
|
);
|
|
4350
4659
|
}
|
|
4351
4660
|
function ItemDescription({ className, ...props }) {
|
|
4352
|
-
return /* @__PURE__ */
|
|
4661
|
+
return /* @__PURE__ */ jsx34(
|
|
4353
4662
|
"p",
|
|
4354
4663
|
{
|
|
4355
4664
|
"data-slot": "item-description",
|
|
4356
|
-
className:
|
|
4665
|
+
className: cn33(
|
|
4357
4666
|
"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",
|
|
4358
4667
|
className
|
|
4359
4668
|
),
|
|
@@ -4362,21 +4671,21 @@ function ItemDescription({ className, ...props }) {
|
|
|
4362
4671
|
);
|
|
4363
4672
|
}
|
|
4364
4673
|
function ItemActions({ className, ...props }) {
|
|
4365
|
-
return /* @__PURE__ */
|
|
4674
|
+
return /* @__PURE__ */ jsx34(
|
|
4366
4675
|
"div",
|
|
4367
4676
|
{
|
|
4368
4677
|
"data-slot": "item-actions",
|
|
4369
|
-
className:
|
|
4678
|
+
className: cn33("flex items-center gap-2", className),
|
|
4370
4679
|
...props
|
|
4371
4680
|
}
|
|
4372
4681
|
);
|
|
4373
4682
|
}
|
|
4374
4683
|
function ItemHeader({ className, ...props }) {
|
|
4375
|
-
return /* @__PURE__ */
|
|
4684
|
+
return /* @__PURE__ */ jsx34(
|
|
4376
4685
|
"div",
|
|
4377
4686
|
{
|
|
4378
4687
|
"data-slot": "item-header",
|
|
4379
|
-
className:
|
|
4688
|
+
className: cn33(
|
|
4380
4689
|
"flex basis-full items-center justify-between gap-2",
|
|
4381
4690
|
className
|
|
4382
4691
|
),
|
|
@@ -4385,11 +4694,11 @@ function ItemHeader({ className, ...props }) {
|
|
|
4385
4694
|
);
|
|
4386
4695
|
}
|
|
4387
4696
|
function ItemFooter({ className, ...props }) {
|
|
4388
|
-
return /* @__PURE__ */
|
|
4697
|
+
return /* @__PURE__ */ jsx34(
|
|
4389
4698
|
"div",
|
|
4390
4699
|
{
|
|
4391
4700
|
"data-slot": "item-footer",
|
|
4392
|
-
className:
|
|
4701
|
+
className: cn33(
|
|
4393
4702
|
"flex basis-full items-center justify-between gap-2",
|
|
4394
4703
|
className
|
|
4395
4704
|
),
|
|
@@ -4429,7 +4738,7 @@ import {
|
|
|
4429
4738
|
useQueryStates
|
|
4430
4739
|
} from "nuqs";
|
|
4431
4740
|
import { NuqsAdapter } from "nuqs/adapters/next/app";
|
|
4432
|
-
import * as
|
|
4741
|
+
import * as React12 from "react";
|
|
4433
4742
|
var SEARCH_DELAY = 500;
|
|
4434
4743
|
var PRODUCT_SEARCH_DELAY = 800;
|
|
4435
4744
|
function isSearchPath(pathname) {
|
|
@@ -4451,7 +4760,7 @@ function useSearchParams() {
|
|
|
4451
4760
|
const pathname = usePathname();
|
|
4452
4761
|
const router = useRouter2();
|
|
4453
4762
|
const nativeSearchParams = useNextSearchParams();
|
|
4454
|
-
const [isPending, startTransition] =
|
|
4763
|
+
const [isPending, startTransition] = React12.useTransition();
|
|
4455
4764
|
const [params, setParams] = useQueryStates(searchParams, {
|
|
4456
4765
|
urlKeys: searchParamKeys,
|
|
4457
4766
|
history: "replace",
|
|
@@ -4459,18 +4768,18 @@ function useSearchParams() {
|
|
|
4459
4768
|
scroll: false,
|
|
4460
4769
|
startTransition
|
|
4461
4770
|
});
|
|
4462
|
-
const productQueryRef =
|
|
4463
|
-
const productNavigationQueuedRef =
|
|
4771
|
+
const productQueryRef = React12.useRef(params.query);
|
|
4772
|
+
const productNavigationQueuedRef = React12.useRef(false);
|
|
4464
4773
|
const onSearchPath = isSearchPath(pathname);
|
|
4465
4774
|
const cart = hasFlagSearchParam(nativeSearchParams, "cart");
|
|
4466
4775
|
const notification = hasFlagSearchParam(nativeSearchParams, "notification");
|
|
4467
|
-
const updateParams =
|
|
4776
|
+
const updateParams = React12.useCallback(
|
|
4468
4777
|
(values, options) => {
|
|
4469
4778
|
void setParams(values, options);
|
|
4470
4779
|
},
|
|
4471
4780
|
[setParams]
|
|
4472
4781
|
);
|
|
4473
|
-
const setQuery =
|
|
4782
|
+
const setQuery = React12.useCallback(
|
|
4474
4783
|
(value) => {
|
|
4475
4784
|
const update = setParams(
|
|
4476
4785
|
{ query: value, page: 1 },
|
|
@@ -4497,13 +4806,13 @@ function useSearchParams() {
|
|
|
4497
4806
|
},
|
|
4498
4807
|
[onSearchPath, router, setParams]
|
|
4499
4808
|
);
|
|
4500
|
-
const commitQuery =
|
|
4809
|
+
const commitQuery = React12.useCallback(() => {
|
|
4501
4810
|
const query = params.query.trim();
|
|
4502
4811
|
if (!query || onSearchPath) return;
|
|
4503
4812
|
pendingSearchFocus = true;
|
|
4504
4813
|
router.push(searchHref(query), { scroll: true });
|
|
4505
4814
|
}, [onSearchPath, params.query, router]);
|
|
4506
|
-
const setCategory =
|
|
4815
|
+
const setCategory = React12.useCallback(
|
|
4507
4816
|
(value) => {
|
|
4508
4817
|
updateParams(
|
|
4509
4818
|
{ category: value, page: 1 },
|
|
@@ -4512,7 +4821,7 @@ function useSearchParams() {
|
|
|
4512
4821
|
},
|
|
4513
4822
|
[updateParams]
|
|
4514
4823
|
);
|
|
4515
|
-
const setProductStatus =
|
|
4824
|
+
const setProductStatus = React12.useCallback(
|
|
4516
4825
|
(value) => {
|
|
4517
4826
|
updateParams(
|
|
4518
4827
|
{ productStatus: value, page: 1 },
|
|
@@ -4521,7 +4830,7 @@ function useSearchParams() {
|
|
|
4521
4830
|
},
|
|
4522
4831
|
[updateParams]
|
|
4523
4832
|
);
|
|
4524
|
-
const setUser =
|
|
4833
|
+
const setUser = React12.useCallback(
|
|
4525
4834
|
(value) => {
|
|
4526
4835
|
updateParams(
|
|
4527
4836
|
{ user: value },
|
|
@@ -4535,7 +4844,7 @@ function useSearchParams() {
|
|
|
4535
4844
|
},
|
|
4536
4845
|
[updateParams]
|
|
4537
4846
|
);
|
|
4538
|
-
const setPage =
|
|
4847
|
+
const setPage = React12.useCallback(
|
|
4539
4848
|
(value) => {
|
|
4540
4849
|
updateParams(
|
|
4541
4850
|
{ page: value },
|
|
@@ -4544,7 +4853,7 @@ function useSearchParams() {
|
|
|
4544
4853
|
},
|
|
4545
4854
|
[updateParams]
|
|
4546
4855
|
);
|
|
4547
|
-
const setUserTransaction =
|
|
4856
|
+
const setUserTransaction = React12.useCallback(
|
|
4548
4857
|
(value) => {
|
|
4549
4858
|
updateParams(
|
|
4550
4859
|
{ user: value, transaction: "", transactionPage: 1 },
|
|
@@ -4553,7 +4862,7 @@ function useSearchParams() {
|
|
|
4553
4862
|
},
|
|
4554
4863
|
[updateParams]
|
|
4555
4864
|
);
|
|
4556
|
-
const setTransactionDetail =
|
|
4865
|
+
const setTransactionDetail = React12.useCallback(
|
|
4557
4866
|
(value) => {
|
|
4558
4867
|
updateParams(
|
|
4559
4868
|
{ transaction: value },
|
|
@@ -4562,19 +4871,19 @@ function useSearchParams() {
|
|
|
4562
4871
|
},
|
|
4563
4872
|
[updateParams]
|
|
4564
4873
|
);
|
|
4565
|
-
const clearTransactionDetail =
|
|
4874
|
+
const clearTransactionDetail = React12.useCallback(() => {
|
|
4566
4875
|
updateParams(
|
|
4567
4876
|
{ transaction: "" },
|
|
4568
4877
|
{ history: "replace", shallow: false, scroll: false }
|
|
4569
4878
|
);
|
|
4570
4879
|
}, [updateParams]);
|
|
4571
|
-
const clearUserTransaction =
|
|
4880
|
+
const clearUserTransaction = React12.useCallback(() => {
|
|
4572
4881
|
updateParams(
|
|
4573
4882
|
{ user: "", transaction: "", transactionPage: 1 },
|
|
4574
4883
|
{ history: "replace", shallow: false, scroll: false }
|
|
4575
4884
|
);
|
|
4576
4885
|
}, [updateParams]);
|
|
4577
|
-
const clearAll =
|
|
4886
|
+
const clearAll = React12.useCallback(() => {
|
|
4578
4887
|
updateParams(
|
|
4579
4888
|
{
|
|
4580
4889
|
query: "",
|
|
@@ -4592,7 +4901,7 @@ function useSearchParams() {
|
|
|
4592
4901
|
}
|
|
4593
4902
|
);
|
|
4594
4903
|
}, [updateParams]);
|
|
4595
|
-
const setCart =
|
|
4904
|
+
const setCart = React12.useCallback(
|
|
4596
4905
|
(value) => {
|
|
4597
4906
|
window.history.replaceState(
|
|
4598
4907
|
null,
|
|
@@ -4602,10 +4911,10 @@ function useSearchParams() {
|
|
|
4602
4911
|
},
|
|
4603
4912
|
[nativeSearchParams, pathname]
|
|
4604
4913
|
);
|
|
4605
|
-
const toggleCart =
|
|
4914
|
+
const toggleCart = React12.useCallback(() => {
|
|
4606
4915
|
setCart(!cart);
|
|
4607
4916
|
}, [cart, setCart]);
|
|
4608
|
-
const setNotification =
|
|
4917
|
+
const setNotification = React12.useCallback(
|
|
4609
4918
|
(value) => {
|
|
4610
4919
|
window.history.replaceState(
|
|
4611
4920
|
null,
|
|
@@ -4663,19 +4972,20 @@ import {
|
|
|
4663
4972
|
BlobSpeech,
|
|
4664
4973
|
JellyBlobMascot
|
|
4665
4974
|
} from "feral-blob";
|
|
4666
|
-
import * as
|
|
4975
|
+
import * as React13 from "react";
|
|
4976
|
+
import { cn as cn34 } from "cn";
|
|
4667
4977
|
import {
|
|
4668
4978
|
BlobSpeech as BlobSpeech2,
|
|
4669
4979
|
JellyBlobMascot as JellyBlobMascot2,
|
|
4670
4980
|
JellyBlobMascotDemo
|
|
4671
4981
|
} from "feral-blob";
|
|
4672
|
-
import { jsx as
|
|
4982
|
+
import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4673
4983
|
function JellyBlob({ ...props }) {
|
|
4674
|
-
return /* @__PURE__ */
|
|
4984
|
+
return /* @__PURE__ */ jsx35("span", { className: "inline-block", children: /* @__PURE__ */ jsx35(
|
|
4675
4985
|
JellyBlobMascot,
|
|
4676
4986
|
{
|
|
4677
4987
|
...props,
|
|
4678
|
-
className:
|
|
4988
|
+
className: cn34("h-auto w-full", props.className)
|
|
4679
4989
|
}
|
|
4680
4990
|
) });
|
|
4681
4991
|
}
|
|
@@ -4701,15 +5011,15 @@ function JellyMini({
|
|
|
4701
5011
|
...props
|
|
4702
5012
|
}) {
|
|
4703
5013
|
const { mounted } = useMounted();
|
|
4704
|
-
return /* @__PURE__ */
|
|
5014
|
+
return /* @__PURE__ */ jsx35(
|
|
4705
5015
|
"span",
|
|
4706
5016
|
{
|
|
4707
5017
|
"aria-hidden": "true",
|
|
4708
|
-
className:
|
|
5018
|
+
className: cn34(
|
|
4709
5019
|
"inline-flex size-5 shrink-0 items-center justify-center select-none",
|
|
4710
5020
|
className
|
|
4711
5021
|
),
|
|
4712
|
-
children: mounted ? /* @__PURE__ */
|
|
5022
|
+
children: mounted ? /* @__PURE__ */ jsx35(
|
|
4713
5023
|
JellyBlobMascot,
|
|
4714
5024
|
{
|
|
4715
5025
|
...props,
|
|
@@ -4721,10 +5031,10 @@ function JellyMini({
|
|
|
4721
5031
|
}
|
|
4722
5032
|
);
|
|
4723
5033
|
}
|
|
4724
|
-
var JellyMascotContext =
|
|
5034
|
+
var JellyMascotContext = React13.createContext(null);
|
|
4725
5035
|
function useJellyMood() {
|
|
4726
|
-
const state =
|
|
4727
|
-
return
|
|
5036
|
+
const state = React13.useContext(JellyMascotContext);
|
|
5037
|
+
return React13.useCallback(
|
|
4728
5038
|
(mood) => {
|
|
4729
5039
|
if (!mood || !state) return {};
|
|
4730
5040
|
return {
|
|
@@ -4751,14 +5061,14 @@ function JellyAction({
|
|
|
4751
5061
|
...props
|
|
4752
5062
|
}) {
|
|
4753
5063
|
const preview = useJellyMood();
|
|
4754
|
-
return /* @__PURE__ */
|
|
5064
|
+
return /* @__PURE__ */ jsx35(Button, { ...props, ...withPreviewHandlers(preview, { ...props, mood }) });
|
|
4755
5065
|
}
|
|
4756
5066
|
function JellyLink({
|
|
4757
5067
|
mood,
|
|
4758
5068
|
...props
|
|
4759
5069
|
}) {
|
|
4760
5070
|
const preview = useJellyMood();
|
|
4761
|
-
return /* @__PURE__ */
|
|
5071
|
+
return /* @__PURE__ */ jsx35("a", { ...props, ...withPreviewHandlers(preview, { ...props, mood }) });
|
|
4762
5072
|
}
|
|
4763
5073
|
function JellyMascotProvider({
|
|
4764
5074
|
mood = "neutral",
|
|
@@ -4767,7 +5077,7 @@ function JellyMascotProvider({
|
|
|
4767
5077
|
...blobProps
|
|
4768
5078
|
}) {
|
|
4769
5079
|
const { mounted } = useMounted();
|
|
4770
|
-
const [previewMood, setPreviewMood] =
|
|
5080
|
+
const [previewMood, setPreviewMood] = React13.useState(
|
|
4771
5081
|
null
|
|
4772
5082
|
);
|
|
4773
5083
|
const activeMood = previewMood ?? mood;
|
|
@@ -4780,7 +5090,7 @@ function JellyMascotProvider({
|
|
|
4780
5090
|
blobProps,
|
|
4781
5091
|
setPreview: setPreviewMood
|
|
4782
5092
|
};
|
|
4783
|
-
return /* @__PURE__ */
|
|
5093
|
+
return /* @__PURE__ */ jsx35(JellyMascotContext.Provider, { value, children });
|
|
4784
5094
|
}
|
|
4785
5095
|
var SIZE_WRAPPER = {
|
|
4786
5096
|
sm: "w-20",
|
|
@@ -4792,26 +5102,26 @@ function JellyMascotFace({
|
|
|
4792
5102
|
size = "md",
|
|
4793
5103
|
className
|
|
4794
5104
|
}) {
|
|
4795
|
-
const mascot =
|
|
5105
|
+
const mascot = React13.useContext(JellyMascotContext);
|
|
4796
5106
|
if (!mascot) return null;
|
|
4797
5107
|
return /* @__PURE__ */ jsxs19(
|
|
4798
5108
|
"div",
|
|
4799
5109
|
{
|
|
4800
5110
|
"aria-hidden": "true",
|
|
4801
|
-
className:
|
|
5111
|
+
className: cn34(
|
|
4802
5112
|
"flex flex-col items-center select-none",
|
|
4803
5113
|
SIZE_WRAPPER[size],
|
|
4804
5114
|
className
|
|
4805
5115
|
),
|
|
4806
5116
|
children: [
|
|
4807
|
-
mascot.speech ? /* @__PURE__ */
|
|
5117
|
+
mascot.speech ? /* @__PURE__ */ jsx35(
|
|
4808
5118
|
BlobSpeech,
|
|
4809
5119
|
{
|
|
4810
5120
|
mood: mascot.mood,
|
|
4811
5121
|
messages: { [mascot.mood]: mascot.speech }
|
|
4812
5122
|
}
|
|
4813
5123
|
) : null,
|
|
4814
|
-
mascot.mounted ? /* @__PURE__ */
|
|
5124
|
+
mascot.mounted ? /* @__PURE__ */ jsx35(
|
|
4815
5125
|
JellyBlobMascot,
|
|
4816
5126
|
{
|
|
4817
5127
|
...mascot.blobProps,
|
|
@@ -4830,15 +5140,15 @@ function JellyMascot({
|
|
|
4830
5140
|
className,
|
|
4831
5141
|
...config
|
|
4832
5142
|
}) {
|
|
4833
|
-
const existing =
|
|
4834
|
-
if (existing) return /* @__PURE__ */
|
|
4835
|
-
return /* @__PURE__ */
|
|
5143
|
+
const existing = React13.useContext(JellyMascotContext);
|
|
5144
|
+
if (existing) return /* @__PURE__ */ jsx35(JellyMascotFace, { size, className });
|
|
5145
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsx35(JellyMascotFace, { size, className }) });
|
|
4836
5146
|
}
|
|
4837
5147
|
function JellyGroup({
|
|
4838
5148
|
children,
|
|
4839
5149
|
...config
|
|
4840
5150
|
}) {
|
|
4841
|
-
return /* @__PURE__ */
|
|
5151
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children });
|
|
4842
5152
|
}
|
|
4843
5153
|
function JellyEmpty({
|
|
4844
5154
|
title,
|
|
@@ -4848,24 +5158,25 @@ function JellyEmpty({
|
|
|
4848
5158
|
className,
|
|
4849
5159
|
...config
|
|
4850
5160
|
}) {
|
|
4851
|
-
return /* @__PURE__ */
|
|
5161
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsxs19(Empty, { className: cn34("gap-4", className), children: [
|
|
4852
5162
|
/* @__PURE__ */ jsxs19(EmptyHeader, { className: "gap-2", children: [
|
|
4853
|
-
/* @__PURE__ */
|
|
4854
|
-
title ? /* @__PURE__ */
|
|
4855
|
-
description ? /* @__PURE__ */
|
|
5163
|
+
/* @__PURE__ */ jsx35(JellyMascotFace, { size }),
|
|
5164
|
+
title ? /* @__PURE__ */ jsx35(EmptyTitle, { className: "text-base font-semibold sm:text-lg", children: title }) : null,
|
|
5165
|
+
description ? /* @__PURE__ */ jsx35(EmptyDescription, { className: "max-w-sm", children: description }) : null
|
|
4856
5166
|
] }),
|
|
4857
|
-
actions ? /* @__PURE__ */
|
|
5167
|
+
actions ? /* @__PURE__ */ jsx35(EmptyContent, { children: actions }) : null
|
|
4858
5168
|
] }) });
|
|
4859
5169
|
}
|
|
4860
5170
|
|
|
4861
5171
|
// src/ui/kbd.tsx
|
|
4862
|
-
import {
|
|
5172
|
+
import { cn as cn35 } from "cn";
|
|
5173
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
4863
5174
|
function Kbd({ className, ...props }) {
|
|
4864
|
-
return /* @__PURE__ */
|
|
5175
|
+
return /* @__PURE__ */ jsx36(
|
|
4865
5176
|
"kbd",
|
|
4866
5177
|
{
|
|
4867
5178
|
"data-slot": "kbd",
|
|
4868
|
-
className:
|
|
5179
|
+
className: cn35(
|
|
4869
5180
|
"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",
|
|
4870
5181
|
className
|
|
4871
5182
|
),
|
|
@@ -4874,24 +5185,25 @@ function Kbd({ className, ...props }) {
|
|
|
4874
5185
|
);
|
|
4875
5186
|
}
|
|
4876
5187
|
function KbdGroup({ className, ...props }) {
|
|
4877
|
-
return /* @__PURE__ */
|
|
5188
|
+
return /* @__PURE__ */ jsx36(
|
|
4878
5189
|
"kbd",
|
|
4879
5190
|
{
|
|
4880
5191
|
"data-slot": "kbd-group",
|
|
4881
|
-
className:
|
|
5192
|
+
className: cn35("inline-flex items-center gap-1", className),
|
|
4882
5193
|
...props
|
|
4883
5194
|
}
|
|
4884
5195
|
);
|
|
4885
5196
|
}
|
|
4886
5197
|
|
|
4887
5198
|
// src/ui/message.tsx
|
|
4888
|
-
import {
|
|
5199
|
+
import { cn as cn36 } from "cn";
|
|
5200
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
4889
5201
|
function MessageGroup({ className, ...props }) {
|
|
4890
|
-
return /* @__PURE__ */
|
|
5202
|
+
return /* @__PURE__ */ jsx37(
|
|
4891
5203
|
"div",
|
|
4892
5204
|
{
|
|
4893
5205
|
"data-slot": "message-group",
|
|
4894
|
-
className:
|
|
5206
|
+
className: cn36("flex min-w-0 flex-col gap-2", className),
|
|
4895
5207
|
...props
|
|
4896
5208
|
}
|
|
4897
5209
|
);
|
|
@@ -4901,12 +5213,12 @@ function Message({
|
|
|
4901
5213
|
align = "start",
|
|
4902
5214
|
...props
|
|
4903
5215
|
}) {
|
|
4904
|
-
return /* @__PURE__ */
|
|
5216
|
+
return /* @__PURE__ */ jsx37(
|
|
4905
5217
|
"div",
|
|
4906
5218
|
{
|
|
4907
5219
|
"data-slot": "message",
|
|
4908
5220
|
"data-align": align,
|
|
4909
|
-
className:
|
|
5221
|
+
className: cn36(
|
|
4910
5222
|
"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse",
|
|
4911
5223
|
className
|
|
4912
5224
|
),
|
|
@@ -4915,11 +5227,11 @@ function Message({
|
|
|
4915
5227
|
);
|
|
4916
5228
|
}
|
|
4917
5229
|
function MessageAvatar({ className, ...props }) {
|
|
4918
|
-
return /* @__PURE__ */
|
|
5230
|
+
return /* @__PURE__ */ jsx37(
|
|
4919
5231
|
"div",
|
|
4920
5232
|
{
|
|
4921
5233
|
"data-slot": "message-avatar",
|
|
4922
|
-
className:
|
|
5234
|
+
className: cn36(
|
|
4923
5235
|
"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",
|
|
4924
5236
|
className
|
|
4925
5237
|
),
|
|
@@ -4928,11 +5240,11 @@ function MessageAvatar({ className, ...props }) {
|
|
|
4928
5240
|
);
|
|
4929
5241
|
}
|
|
4930
5242
|
function MessageContent({ className, ...props }) {
|
|
4931
|
-
return /* @__PURE__ */
|
|
5243
|
+
return /* @__PURE__ */ jsx37(
|
|
4932
5244
|
"div",
|
|
4933
5245
|
{
|
|
4934
5246
|
"data-slot": "message-content",
|
|
4935
|
-
className:
|
|
5247
|
+
className: cn36(
|
|
4936
5248
|
"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end",
|
|
4937
5249
|
className
|
|
4938
5250
|
),
|
|
@@ -4941,11 +5253,11 @@ function MessageContent({ className, ...props }) {
|
|
|
4941
5253
|
);
|
|
4942
5254
|
}
|
|
4943
5255
|
function MessageHeader({ className, ...props }) {
|
|
4944
|
-
return /* @__PURE__ */
|
|
5256
|
+
return /* @__PURE__ */ jsx37(
|
|
4945
5257
|
"div",
|
|
4946
5258
|
{
|
|
4947
5259
|
"data-slot": "message-header",
|
|
4948
|
-
className:
|
|
5260
|
+
className: cn36(
|
|
4949
5261
|
"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",
|
|
4950
5262
|
className
|
|
4951
5263
|
),
|
|
@@ -4954,11 +5266,11 @@ function MessageHeader({ className, ...props }) {
|
|
|
4954
5266
|
);
|
|
4955
5267
|
}
|
|
4956
5268
|
function MessageFooter({ className, ...props }) {
|
|
4957
|
-
return /* @__PURE__ */
|
|
5269
|
+
return /* @__PURE__ */ jsx37(
|
|
4958
5270
|
"div",
|
|
4959
5271
|
{
|
|
4960
5272
|
"data-slot": "message-footer",
|
|
4961
|
-
className:
|
|
5273
|
+
className: cn36(
|
|
4962
5274
|
"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",
|
|
4963
5275
|
className
|
|
4964
5276
|
),
|
|
@@ -4974,20 +5286,21 @@ import {
|
|
|
4974
5286
|
useMessageScrollerScrollable,
|
|
4975
5287
|
useMessageScrollerVisibility
|
|
4976
5288
|
} from "@shadcn/react/message-scroller";
|
|
5289
|
+
import { cn as cn37 } from "cn";
|
|
4977
5290
|
import { ArrowDownIcon } from "lucide-react";
|
|
4978
|
-
import { Fragment as Fragment2, jsx as
|
|
5291
|
+
import { Fragment as Fragment2, jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4979
5292
|
function MessageScrollerProvider(props) {
|
|
4980
|
-
return /* @__PURE__ */
|
|
5293
|
+
return /* @__PURE__ */ jsx38(MessageScrollerPrimitive.Provider, { ...props });
|
|
4981
5294
|
}
|
|
4982
5295
|
function MessageScroller({
|
|
4983
5296
|
className,
|
|
4984
5297
|
...props
|
|
4985
5298
|
}) {
|
|
4986
|
-
return /* @__PURE__ */
|
|
5299
|
+
return /* @__PURE__ */ jsx38(
|
|
4987
5300
|
MessageScrollerPrimitive.Root,
|
|
4988
5301
|
{
|
|
4989
5302
|
"data-slot": "message-scroller",
|
|
4990
|
-
className:
|
|
5303
|
+
className: cn37(
|
|
4991
5304
|
"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",
|
|
4992
5305
|
className
|
|
4993
5306
|
),
|
|
@@ -4999,11 +5312,11 @@ function MessageScrollerViewport({
|
|
|
4999
5312
|
className,
|
|
5000
5313
|
...props
|
|
5001
5314
|
}) {
|
|
5002
|
-
return /* @__PURE__ */
|
|
5315
|
+
return /* @__PURE__ */ jsx38(
|
|
5003
5316
|
MessageScrollerPrimitive.Viewport,
|
|
5004
5317
|
{
|
|
5005
5318
|
"data-slot": "message-scroller-viewport",
|
|
5006
|
-
className:
|
|
5319
|
+
className: cn37(
|
|
5007
5320
|
"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",
|
|
5008
5321
|
className
|
|
5009
5322
|
),
|
|
@@ -5015,11 +5328,11 @@ function MessageScrollerContent({
|
|
|
5015
5328
|
className,
|
|
5016
5329
|
...props
|
|
5017
5330
|
}) {
|
|
5018
|
-
return /* @__PURE__ */
|
|
5331
|
+
return /* @__PURE__ */ jsx38(
|
|
5019
5332
|
MessageScrollerPrimitive.Content,
|
|
5020
5333
|
{
|
|
5021
5334
|
"data-slot": "message-scroller-content",
|
|
5022
|
-
className:
|
|
5335
|
+
className: cn37("flex h-max min-h-full flex-col gap-6", className),
|
|
5023
5336
|
...props
|
|
5024
5337
|
}
|
|
5025
5338
|
);
|
|
@@ -5029,12 +5342,12 @@ function MessageScrollerItem({
|
|
|
5029
5342
|
scrollAnchor = false,
|
|
5030
5343
|
...props
|
|
5031
5344
|
}) {
|
|
5032
|
-
return /* @__PURE__ */
|
|
5345
|
+
return /* @__PURE__ */ jsx38(
|
|
5033
5346
|
MessageScrollerPrimitive.Item,
|
|
5034
5347
|
{
|
|
5035
5348
|
"data-slot": "message-scroller-item",
|
|
5036
5349
|
scrollAnchor,
|
|
5037
|
-
className:
|
|
5350
|
+
className: cn37(
|
|
5038
5351
|
"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",
|
|
5039
5352
|
className
|
|
5040
5353
|
),
|
|
@@ -5051,7 +5364,7 @@ function MessageScrollerButton({
|
|
|
5051
5364
|
size = "icon-sm",
|
|
5052
5365
|
...props
|
|
5053
5366
|
}) {
|
|
5054
|
-
return /* @__PURE__ */
|
|
5367
|
+
return /* @__PURE__ */ jsx38(
|
|
5055
5368
|
MessageScrollerPrimitive.Button,
|
|
5056
5369
|
{
|
|
5057
5370
|
"data-slot": "message-scroller-button",
|
|
@@ -5059,31 +5372,30 @@ function MessageScrollerButton({
|
|
|
5059
5372
|
"data-variant": variant,
|
|
5060
5373
|
"data-size": size,
|
|
5061
5374
|
direction,
|
|
5062
|
-
className:
|
|
5375
|
+
className: cn37(
|
|
5063
5376
|
"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",
|
|
5064
5377
|
className
|
|
5065
5378
|
),
|
|
5066
|
-
render: render ?? /* @__PURE__ */
|
|
5379
|
+
render: render ?? /* @__PURE__ */ jsx38(Button, { variant, size }),
|
|
5067
5380
|
...props,
|
|
5068
5381
|
children: children ?? /* @__PURE__ */ jsxs20(Fragment2, { children: [
|
|
5069
|
-
/* @__PURE__ */
|
|
5070
|
-
/* @__PURE__ */
|
|
5382
|
+
/* @__PURE__ */ jsx38(ArrowDownIcon, {}),
|
|
5383
|
+
/* @__PURE__ */ jsx38("span", { className: "sr-only", children: direction === "end" ? "Scroll to end" : "Scroll to start" })
|
|
5071
5384
|
] })
|
|
5072
5385
|
}
|
|
5073
5386
|
);
|
|
5074
5387
|
}
|
|
5075
5388
|
|
|
5076
5389
|
// src/ui/otp.tsx
|
|
5077
|
-
import {
|
|
5390
|
+
import { cn as cn38 } from "cn";
|
|
5078
5391
|
import {
|
|
5079
5392
|
AnimatePresence as AnimatePresence2,
|
|
5080
5393
|
animate,
|
|
5081
|
-
motion as
|
|
5394
|
+
motion as motion6,
|
|
5082
5395
|
useReducedMotion
|
|
5083
5396
|
} from "motion/react";
|
|
5084
5397
|
import { Fragment as Fragment3, useEffect as useEffect7, useId as useId2, useRef as useRef4, useState as useState9 } from "react";
|
|
5085
|
-
import {
|
|
5086
|
-
import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5398
|
+
import { jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5087
5399
|
var EASE_OUT = [0.16, 1, 0.3, 1];
|
|
5088
5400
|
var EASE_IN_OUT = [0.77, 0, 0.175, 1];
|
|
5089
5401
|
var EASE_DRAWER = [0.32, 0.72, 0, 1];
|
|
@@ -5117,9 +5429,6 @@ var SPRING_MOUSE = {
|
|
|
5117
5429
|
damping: 15,
|
|
5118
5430
|
mass: 0.3
|
|
5119
5431
|
};
|
|
5120
|
-
function otpCn(...inputs) {
|
|
5121
|
-
return twMerge2(clsx2(inputs));
|
|
5122
|
-
}
|
|
5123
5432
|
function OTPInput2({
|
|
5124
5433
|
length = 6,
|
|
5125
5434
|
value: controlledValue,
|
|
@@ -5251,8 +5560,8 @@ function OTPInput2({
|
|
|
5251
5560
|
const showSuccess = status === "success";
|
|
5252
5561
|
const activeIndex = focused ? active : -1;
|
|
5253
5562
|
const message = showSuccess ? successMessage : status === "error" ? errorMessage : hint;
|
|
5254
|
-
return /* @__PURE__ */ jsxs21("div", { className:
|
|
5255
|
-
label ? /* @__PURE__ */
|
|
5563
|
+
return /* @__PURE__ */ jsxs21("div", { className: cn38("inline-flex flex-col gap-2", className), children: [
|
|
5564
|
+
label ? /* @__PURE__ */ jsx39(
|
|
5256
5565
|
"label",
|
|
5257
5566
|
{
|
|
5258
5567
|
htmlFor: `${uid}-input`,
|
|
@@ -5273,7 +5582,7 @@ function OTPInput2({
|
|
|
5273
5582
|
inputRef.current?.focus();
|
|
5274
5583
|
},
|
|
5275
5584
|
children: [
|
|
5276
|
-
/* @__PURE__ */
|
|
5585
|
+
/* @__PURE__ */ jsx39(
|
|
5277
5586
|
"input",
|
|
5278
5587
|
{
|
|
5279
5588
|
ref: inputRef,
|
|
@@ -5300,7 +5609,7 @@ function OTPInput2({
|
|
|
5300
5609
|
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"
|
|
5301
5610
|
}
|
|
5302
5611
|
),
|
|
5303
|
-
/* @__PURE__ */
|
|
5612
|
+
/* @__PURE__ */ jsx39("div", { ref: slotsRef, className: "flex items-center gap-3", children: Array.from({ length }, (_, i) => {
|
|
5304
5613
|
const char = slots[i] ?? "";
|
|
5305
5614
|
const isActive = i === activeIndex;
|
|
5306
5615
|
return /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
@@ -5310,15 +5619,15 @@ function OTPInput2({
|
|
|
5310
5619
|
"data-otp-slot": true,
|
|
5311
5620
|
"data-active": isActive,
|
|
5312
5621
|
"data-filled": char !== "",
|
|
5313
|
-
className:
|
|
5622
|
+
className: cn38(
|
|
5314
5623
|
"relative grid size-11 place-items-center overflow-hidden rounded-xl border bg-card text-xl font-semibold tabular-nums transition-colors duration-200",
|
|
5315
5624
|
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",
|
|
5316
5625
|
isActive && !showSuccess && status !== "error" && "border-brand border-2 ring-0",
|
|
5317
5626
|
disabled && "opacity-50"
|
|
5318
5627
|
),
|
|
5319
5628
|
children: [
|
|
5320
|
-
isActive && !showSuccess ? /* @__PURE__ */
|
|
5321
|
-
|
|
5629
|
+
isActive && !showSuccess ? /* @__PURE__ */ jsx39(
|
|
5630
|
+
motion6.span,
|
|
5322
5631
|
{
|
|
5323
5632
|
"aria-hidden": true,
|
|
5324
5633
|
animate: reduce ? void 0 : { opacity: [1, 1, 0, 0] },
|
|
@@ -5327,14 +5636,14 @@ function OTPInput2({
|
|
|
5327
5636
|
repeat: Number.POSITIVE_INFINITY,
|
|
5328
5637
|
ease: "linear"
|
|
5329
5638
|
},
|
|
5330
|
-
className:
|
|
5639
|
+
className: cn38(
|
|
5331
5640
|
"bg-brand pointer-events-none absolute top-1/2 h-6 w-px -translate-y-1/2",
|
|
5332
5641
|
char ? "right-3" : "left-1/2 -translate-x-1/2"
|
|
5333
5642
|
)
|
|
5334
5643
|
}
|
|
5335
5644
|
) : null,
|
|
5336
|
-
/* @__PURE__ */
|
|
5337
|
-
|
|
5645
|
+
/* @__PURE__ */ jsx39(AnimatePresence2, { initial: false, children: char ? /* @__PURE__ */ jsx39(
|
|
5646
|
+
motion6.span,
|
|
5338
5647
|
{
|
|
5339
5648
|
initial: reduce ? {
|
|
5340
5649
|
opacity: 0
|
|
@@ -5371,11 +5680,11 @@ function OTPInput2({
|
|
|
5371
5680
|
]
|
|
5372
5681
|
}
|
|
5373
5682
|
),
|
|
5374
|
-
i === 2 ? /* @__PURE__ */
|
|
5683
|
+
i === 2 ? /* @__PURE__ */ jsx39("span", { "aria-hidden": "true", className: "h-0.5 w-4 bg-primary" }) : null
|
|
5375
5684
|
] }, `${uid}-${i}`);
|
|
5376
5685
|
}) }),
|
|
5377
|
-
/* @__PURE__ */
|
|
5378
|
-
|
|
5686
|
+
/* @__PURE__ */ jsx39(AnimatePresence2, { children: showSuccess ? /* @__PURE__ */ jsx39(
|
|
5687
|
+
motion6.span,
|
|
5379
5688
|
{
|
|
5380
5689
|
initial: reduce ? {
|
|
5381
5690
|
opacity: 0
|
|
@@ -5416,9 +5725,9 @@ function OTPInput2({
|
|
|
5416
5725
|
strokeLinecap: "round",
|
|
5417
5726
|
strokeLinejoin: "round",
|
|
5418
5727
|
children: [
|
|
5419
|
-
/* @__PURE__ */
|
|
5420
|
-
/* @__PURE__ */
|
|
5421
|
-
|
|
5728
|
+
/* @__PURE__ */ jsx39("title", { children: "Verified" }),
|
|
5729
|
+
/* @__PURE__ */ jsx39(
|
|
5730
|
+
motion6.path,
|
|
5422
5731
|
{
|
|
5423
5732
|
d: "M5 13l4 4L19 7",
|
|
5424
5733
|
initial: reduce ? {
|
|
@@ -5446,11 +5755,11 @@ function OTPInput2({
|
|
|
5446
5755
|
]
|
|
5447
5756
|
}
|
|
5448
5757
|
),
|
|
5449
|
-
message ? /* @__PURE__ */
|
|
5758
|
+
message ? /* @__PURE__ */ jsx39(
|
|
5450
5759
|
"p",
|
|
5451
5760
|
{
|
|
5452
5761
|
"aria-live": "polite",
|
|
5453
|
-
className:
|
|
5762
|
+
className: cn38(
|
|
5454
5763
|
"text-sm",
|
|
5455
5764
|
showSuccess ? "text-emerald-500" : status === "error" ? "text-destructive" : "text-muted-foreground"
|
|
5456
5765
|
),
|
|
@@ -5469,12 +5778,13 @@ function toSlots(raw, length) {
|
|
|
5469
5778
|
|
|
5470
5779
|
// src/ui/popover.tsx
|
|
5471
5780
|
import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
|
|
5472
|
-
import {
|
|
5781
|
+
import { cn as cn39 } from "cn";
|
|
5782
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
5473
5783
|
function Popover({ ...props }) {
|
|
5474
|
-
return /* @__PURE__ */
|
|
5784
|
+
return /* @__PURE__ */ jsx40(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
5475
5785
|
}
|
|
5476
5786
|
function PopoverTrigger({ ...props }) {
|
|
5477
|
-
return /* @__PURE__ */
|
|
5787
|
+
return /* @__PURE__ */ jsx40(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
5478
5788
|
}
|
|
5479
5789
|
function PopoverContent({
|
|
5480
5790
|
className,
|
|
@@ -5484,7 +5794,7 @@ function PopoverContent({
|
|
|
5484
5794
|
sideOffset = 4,
|
|
5485
5795
|
...props
|
|
5486
5796
|
}) {
|
|
5487
|
-
return /* @__PURE__ */
|
|
5797
|
+
return /* @__PURE__ */ jsx40(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx40(
|
|
5488
5798
|
PopoverPrimitive.Positioner,
|
|
5489
5799
|
{
|
|
5490
5800
|
align,
|
|
@@ -5492,11 +5802,11 @@ function PopoverContent({
|
|
|
5492
5802
|
side,
|
|
5493
5803
|
sideOffset,
|
|
5494
5804
|
className: "isolate z-50",
|
|
5495
|
-
children: /* @__PURE__ */
|
|
5805
|
+
children: /* @__PURE__ */ jsx40(
|
|
5496
5806
|
PopoverPrimitive.Popup,
|
|
5497
5807
|
{
|
|
5498
5808
|
"data-slot": "popover-content",
|
|
5499
|
-
className:
|
|
5809
|
+
className: cn39(
|
|
5500
5810
|
"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",
|
|
5501
5811
|
className
|
|
5502
5812
|
),
|
|
@@ -5507,21 +5817,21 @@ function PopoverContent({
|
|
|
5507
5817
|
) });
|
|
5508
5818
|
}
|
|
5509
5819
|
function PopoverHeader({ className, ...props }) {
|
|
5510
|
-
return /* @__PURE__ */
|
|
5820
|
+
return /* @__PURE__ */ jsx40(
|
|
5511
5821
|
"div",
|
|
5512
5822
|
{
|
|
5513
5823
|
"data-slot": "popover-header",
|
|
5514
|
-
className:
|
|
5824
|
+
className: cn39("flex flex-col gap-0.5 text-sm", className),
|
|
5515
5825
|
...props
|
|
5516
5826
|
}
|
|
5517
5827
|
);
|
|
5518
5828
|
}
|
|
5519
5829
|
function PopoverTitle({ className, ...props }) {
|
|
5520
|
-
return /* @__PURE__ */
|
|
5830
|
+
return /* @__PURE__ */ jsx40(
|
|
5521
5831
|
PopoverPrimitive.Title,
|
|
5522
5832
|
{
|
|
5523
5833
|
"data-slot": "popover-title",
|
|
5524
|
-
className:
|
|
5834
|
+
className: cn39("font-medium", className),
|
|
5525
5835
|
...props
|
|
5526
5836
|
}
|
|
5527
5837
|
);
|
|
@@ -5530,11 +5840,11 @@ function PopoverDescription({
|
|
|
5530
5840
|
className,
|
|
5531
5841
|
...props
|
|
5532
5842
|
}) {
|
|
5533
|
-
return /* @__PURE__ */
|
|
5843
|
+
return /* @__PURE__ */ jsx40(
|
|
5534
5844
|
PopoverPrimitive.Description,
|
|
5535
5845
|
{
|
|
5536
5846
|
"data-slot": "popover-description",
|
|
5537
|
-
className:
|
|
5847
|
+
className: cn39("text-muted-foreground", className),
|
|
5538
5848
|
...props
|
|
5539
5849
|
}
|
|
5540
5850
|
);
|
|
@@ -5543,12 +5853,12 @@ function PopoverDescription({
|
|
|
5543
5853
|
// src/ui/quantity.tsx
|
|
5544
5854
|
import { NumberField } from "@base-ui/react/number-field";
|
|
5545
5855
|
import { Minus, Plus } from "@gravity-ui/icons";
|
|
5546
|
-
import * as
|
|
5547
|
-
import { jsx as
|
|
5548
|
-
var QuantityInput =
|
|
5549
|
-
const id =
|
|
5550
|
-
return /* @__PURE__ */
|
|
5551
|
-
/* @__PURE__ */
|
|
5856
|
+
import * as React14 from "react";
|
|
5857
|
+
import { jsx as jsx41, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5858
|
+
var QuantityInput = React14.forwardRef(function QuantityInput2({ ...props }, ref) {
|
|
5859
|
+
const id = React14.useId();
|
|
5860
|
+
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: [
|
|
5861
|
+
/* @__PURE__ */ jsx41(
|
|
5552
5862
|
NumberField.Decrement,
|
|
5553
5863
|
{
|
|
5554
5864
|
className: buttonVariants({
|
|
@@ -5556,10 +5866,10 @@ var QuantityInput = React12.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5556
5866
|
size: "icon-sm",
|
|
5557
5867
|
className: "rounded-full! border-border!"
|
|
5558
5868
|
}),
|
|
5559
|
-
children: /* @__PURE__ */
|
|
5869
|
+
children: /* @__PURE__ */ jsx41(Minus, {})
|
|
5560
5870
|
}
|
|
5561
5871
|
),
|
|
5562
|
-
/* @__PURE__ */
|
|
5872
|
+
/* @__PURE__ */ jsx41(
|
|
5563
5873
|
NumberField.Input,
|
|
5564
5874
|
{
|
|
5565
5875
|
ref,
|
|
@@ -5567,7 +5877,7 @@ var QuantityInput = React12.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5567
5877
|
"data-no-ring": true
|
|
5568
5878
|
}
|
|
5569
5879
|
),
|
|
5570
|
-
/* @__PURE__ */
|
|
5880
|
+
/* @__PURE__ */ jsx41(
|
|
5571
5881
|
NumberField.Increment,
|
|
5572
5882
|
{
|
|
5573
5883
|
className: buttonVariants({
|
|
@@ -5575,7 +5885,7 @@ var QuantityInput = React12.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5575
5885
|
size: "icon-sm",
|
|
5576
5886
|
className: "rounded-full! border-border!"
|
|
5577
5887
|
}),
|
|
5578
|
-
children: /* @__PURE__ */
|
|
5888
|
+
children: /* @__PURE__ */ jsx41(Plus, {})
|
|
5579
5889
|
}
|
|
5580
5890
|
)
|
|
5581
5891
|
] }) });
|
|
@@ -5584,33 +5894,34 @@ var QuantityInput = React12.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5584
5894
|
// src/ui/radio-group.tsx
|
|
5585
5895
|
import { Radio as RadioPrimitive } from "@base-ui/react/radio";
|
|
5586
5896
|
import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
|
|
5587
|
-
import {
|
|
5897
|
+
import { cn as cn40 } from "cn";
|
|
5898
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
5588
5899
|
function RadioGroup({ className, ...props }) {
|
|
5589
|
-
return /* @__PURE__ */
|
|
5900
|
+
return /* @__PURE__ */ jsx42(
|
|
5590
5901
|
RadioGroupPrimitive,
|
|
5591
5902
|
{
|
|
5592
5903
|
"data-slot": "radio-group",
|
|
5593
|
-
className:
|
|
5904
|
+
className: cn40("grid w-full gap-2", className),
|
|
5594
5905
|
...props
|
|
5595
5906
|
}
|
|
5596
5907
|
);
|
|
5597
5908
|
}
|
|
5598
5909
|
function RadioGroupItem({ className, ...props }) {
|
|
5599
|
-
return /* @__PURE__ */
|
|
5910
|
+
return /* @__PURE__ */ jsx42(
|
|
5600
5911
|
RadioPrimitive.Root,
|
|
5601
5912
|
{
|
|
5602
5913
|
"data-slot": "radio-group-item",
|
|
5603
|
-
className:
|
|
5914
|
+
className: cn40(
|
|
5604
5915
|
"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",
|
|
5605
5916
|
className
|
|
5606
5917
|
),
|
|
5607
5918
|
...props,
|
|
5608
|
-
children: /* @__PURE__ */
|
|
5919
|
+
children: /* @__PURE__ */ jsx42(
|
|
5609
5920
|
RadioPrimitive.Indicator,
|
|
5610
5921
|
{
|
|
5611
5922
|
"data-slot": "radio-group-indicator",
|
|
5612
5923
|
className: "flex size-4 items-center justify-center",
|
|
5613
|
-
children: /* @__PURE__ */
|
|
5924
|
+
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" })
|
|
5614
5925
|
}
|
|
5615
5926
|
)
|
|
5616
5927
|
}
|
|
@@ -5622,7 +5933,7 @@ import { useRender as useRender5 } from "@base-ui/react/use-render";
|
|
|
5622
5933
|
import { cva as cva9 } from "class-variance-authority";
|
|
5623
5934
|
import {
|
|
5624
5935
|
createContext as createContext5,
|
|
5625
|
-
useCallback as
|
|
5936
|
+
useCallback as useCallback6,
|
|
5626
5937
|
useContext as useContext6,
|
|
5627
5938
|
useEffect as useEffect8,
|
|
5628
5939
|
useId as useId4,
|
|
@@ -5633,12 +5944,13 @@ import {
|
|
|
5633
5944
|
|
|
5634
5945
|
// src/ui/tooltip.tsx
|
|
5635
5946
|
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
5636
|
-
import {
|
|
5947
|
+
import { cn as cn41 } from "cn";
|
|
5948
|
+
import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
5637
5949
|
function TooltipProvider({
|
|
5638
5950
|
delay = 0,
|
|
5639
5951
|
...props
|
|
5640
5952
|
}) {
|
|
5641
|
-
return /* @__PURE__ */
|
|
5953
|
+
return /* @__PURE__ */ jsx43(
|
|
5642
5954
|
TooltipPrimitive.Provider,
|
|
5643
5955
|
{
|
|
5644
5956
|
"data-slot": "tooltip-provider",
|
|
@@ -5648,10 +5960,10 @@ function TooltipProvider({
|
|
|
5648
5960
|
);
|
|
5649
5961
|
}
|
|
5650
5962
|
function Tooltip2({ ...props }) {
|
|
5651
|
-
return /* @__PURE__ */
|
|
5963
|
+
return /* @__PURE__ */ jsx43(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
5652
5964
|
}
|
|
5653
5965
|
function TooltipTrigger({ ...props }) {
|
|
5654
|
-
return /* @__PURE__ */
|
|
5966
|
+
return /* @__PURE__ */ jsx43(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
5655
5967
|
}
|
|
5656
5968
|
function TooltipContent({
|
|
5657
5969
|
className,
|
|
@@ -5662,7 +5974,7 @@ function TooltipContent({
|
|
|
5662
5974
|
children,
|
|
5663
5975
|
...props
|
|
5664
5976
|
}) {
|
|
5665
|
-
return /* @__PURE__ */
|
|
5977
|
+
return /* @__PURE__ */ jsx43(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx43(
|
|
5666
5978
|
TooltipPrimitive.Positioner,
|
|
5667
5979
|
{
|
|
5668
5980
|
align,
|
|
@@ -5674,14 +5986,14 @@ function TooltipContent({
|
|
|
5674
5986
|
TooltipPrimitive.Popup,
|
|
5675
5987
|
{
|
|
5676
5988
|
"data-slot": "tooltip-content",
|
|
5677
|
-
className:
|
|
5989
|
+
className: cn41(
|
|
5678
5990
|
"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",
|
|
5679
5991
|
className
|
|
5680
5992
|
),
|
|
5681
5993
|
...props,
|
|
5682
5994
|
children: [
|
|
5683
5995
|
children,
|
|
5684
|
-
/* @__PURE__ */
|
|
5996
|
+
/* @__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" })
|
|
5685
5997
|
]
|
|
5686
5998
|
}
|
|
5687
5999
|
)
|
|
@@ -5690,8 +6002,9 @@ function TooltipContent({
|
|
|
5690
6002
|
}
|
|
5691
6003
|
|
|
5692
6004
|
// src/ui/reui/filters.tsx
|
|
6005
|
+
import { cn as cn42 } from "cn";
|
|
5693
6006
|
import { AlertCircleIcon, CheckIcon as CheckIcon2, PlusIcon, XIcon } from "lucide-react";
|
|
5694
|
-
import { Fragment as Fragment4, jsx as
|
|
6007
|
+
import { Fragment as Fragment4, jsx as jsx44, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5695
6008
|
var DEFAULT_I18N = {
|
|
5696
6009
|
// UI Labels
|
|
5697
6010
|
addFilter: "Filter",
|
|
@@ -5860,7 +6173,7 @@ function FilterInput({
|
|
|
5860
6173
|
return /* @__PURE__ */ jsxs24(
|
|
5861
6174
|
InputGroup,
|
|
5862
6175
|
{
|
|
5863
|
-
className:
|
|
6176
|
+
className: cn42(
|
|
5864
6177
|
"w-36",
|
|
5865
6178
|
// Height follows each style's own control ladder. `default` sets no
|
|
5866
6179
|
// height on purpose so the style's `.cn-input-group` applies (h-8 nova,
|
|
@@ -5875,8 +6188,8 @@ function FilterInput({
|
|
|
5875
6188
|
className
|
|
5876
6189
|
),
|
|
5877
6190
|
children: [
|
|
5878
|
-
field?.prefix && /* @__PURE__ */
|
|
5879
|
-
/* @__PURE__ */
|
|
6191
|
+
field?.prefix && /* @__PURE__ */ jsx44(InputGroupAddon, { children: /* @__PURE__ */ jsx44(InputGroupText, { children: field.prefix }) }),
|
|
6192
|
+
/* @__PURE__ */ jsx44(
|
|
5880
6193
|
InputGroupInput,
|
|
5881
6194
|
{
|
|
5882
6195
|
ref: inputRef,
|
|
@@ -5884,29 +6197,29 @@ function FilterInput({
|
|
|
5884
6197
|
"aria-describedby": !isValid && validationMessage ? `${field?.key || "input"}-error` : void 0,
|
|
5885
6198
|
onBlur: handleBlur,
|
|
5886
6199
|
onKeyDown: handleKeyDown,
|
|
5887
|
-
className:
|
|
6200
|
+
className: cn42(
|
|
5888
6201
|
context.size == "sm" && "h-7! text-xs",
|
|
5889
6202
|
context.size == "lg" && "h-9!"
|
|
5890
6203
|
),
|
|
5891
6204
|
...props
|
|
5892
6205
|
}
|
|
5893
6206
|
),
|
|
5894
|
-
!isValid && validationMessage && /* @__PURE__ */
|
|
5895
|
-
/* @__PURE__ */
|
|
5896
|
-
/* @__PURE__ */
|
|
6207
|
+
!isValid && validationMessage && /* @__PURE__ */ jsx44(InputGroupAddon, { align: "inline-end", children: /* @__PURE__ */ jsxs24(Tooltip2, { children: [
|
|
6208
|
+
/* @__PURE__ */ jsx44(TooltipTrigger, { render: /* @__PURE__ */ jsx44(InputGroupButton, { size: "icon-xs" }), children: /* @__PURE__ */ jsx44(AlertCircleIcon, { className: "size-3.5 text-destructive" }) }),
|
|
6209
|
+
/* @__PURE__ */ jsx44(TooltipContent, { children: /* @__PURE__ */ jsx44("p", { className: "text-sm", children: validationMessage }) })
|
|
5897
6210
|
] }) }),
|
|
5898
|
-
field?.suffix && /* @__PURE__ */
|
|
6211
|
+
field?.suffix && /* @__PURE__ */ jsx44(InputGroupAddon, { align: "inline-end", children: /* @__PURE__ */ jsx44(InputGroupText, { children: field.suffix }) })
|
|
5899
6212
|
]
|
|
5900
6213
|
}
|
|
5901
6214
|
);
|
|
5902
6215
|
}
|
|
5903
6216
|
function FilterRemoveButton({
|
|
5904
6217
|
className,
|
|
5905
|
-
icon = /* @__PURE__ */
|
|
6218
|
+
icon = /* @__PURE__ */ jsx44(XIcon, {}),
|
|
5906
6219
|
...props
|
|
5907
6220
|
}) {
|
|
5908
6221
|
const context = useFilterContext();
|
|
5909
|
-
return /* @__PURE__ */
|
|
6222
|
+
return /* @__PURE__ */ jsx44(
|
|
5910
6223
|
Button,
|
|
5911
6224
|
{
|
|
5912
6225
|
variant: "outline",
|
|
@@ -5994,7 +6307,7 @@ function useFieldOptions(field, searchInput, enabled) {
|
|
|
5994
6307
|
cancelled = true;
|
|
5995
6308
|
};
|
|
5996
6309
|
}, [isAsync, enabled, debouncedQuery]);
|
|
5997
|
-
const resolveSelected =
|
|
6310
|
+
const resolveSelected = useCallback6(
|
|
5998
6311
|
(values) => {
|
|
5999
6312
|
const cache = getFieldOptionCache(field);
|
|
6000
6313
|
return values.map(
|
|
@@ -6078,10 +6391,10 @@ function FilterOperatorDropdown({
|
|
|
6078
6391
|
);
|
|
6079
6392
|
const operatorLabel = operators.find((op) => op.value === operator)?.label || context.i18n.helpers.formatOperator(operator);
|
|
6080
6393
|
return /* @__PURE__ */ jsxs24(DropdownMenu, { children: [
|
|
6081
|
-
/* @__PURE__ */
|
|
6394
|
+
/* @__PURE__ */ jsx44(
|
|
6082
6395
|
DropdownMenuTrigger,
|
|
6083
6396
|
{
|
|
6084
|
-
render: /* @__PURE__ */
|
|
6397
|
+
render: /* @__PURE__ */ jsx44(
|
|
6085
6398
|
Button,
|
|
6086
6399
|
{
|
|
6087
6400
|
variant: "outline",
|
|
@@ -6092,19 +6405,19 @@ function FilterOperatorDropdown({
|
|
|
6092
6405
|
)
|
|
6093
6406
|
}
|
|
6094
6407
|
),
|
|
6095
|
-
/* @__PURE__ */
|
|
6408
|
+
/* @__PURE__ */ jsx44(DropdownMenuContent, { align: "start", className: "w-fit min-w-fit", children: operators.map((op) => /* @__PURE__ */ jsxs24(
|
|
6096
6409
|
DropdownMenuItem,
|
|
6097
6410
|
{
|
|
6098
6411
|
onClick: () => onChange(op.value),
|
|
6099
|
-
className:
|
|
6412
|
+
className: cn42(
|
|
6100
6413
|
"flex items-center justify-between data-highlighted:bg-accent data-highlighted:text-accent-foreground"
|
|
6101
6414
|
),
|
|
6102
6415
|
children: [
|
|
6103
|
-
/* @__PURE__ */
|
|
6104
|
-
/* @__PURE__ */
|
|
6416
|
+
/* @__PURE__ */ jsx44("span", { children: op.label }),
|
|
6417
|
+
/* @__PURE__ */ jsx44(
|
|
6105
6418
|
CheckIcon2,
|
|
6106
6419
|
{
|
|
6107
|
-
className:
|
|
6420
|
+
className: cn42(
|
|
6108
6421
|
"ms-auto text-primary",
|
|
6109
6422
|
op.value === operator ? "opacity-100" : "opacity-0"
|
|
6110
6423
|
)
|
|
@@ -6194,7 +6507,7 @@ function SelectOptionsPopover({
|
|
|
6194
6507
|
"data-highlighted": isHighlighted || void 0,
|
|
6195
6508
|
onMouseEnter: () => setHighlightedIndex(overallIndex),
|
|
6196
6509
|
checked: isSelected,
|
|
6197
|
-
className:
|
|
6510
|
+
className: cn42(
|
|
6198
6511
|
"data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
6199
6512
|
option.className
|
|
6200
6513
|
),
|
|
@@ -6204,7 +6517,7 @@ function SelectOptionsPopover({
|
|
|
6204
6517
|
onCheckedChange: () => toggleOption(option),
|
|
6205
6518
|
children: [
|
|
6206
6519
|
option.icon && option.icon,
|
|
6207
|
-
/* @__PURE__ */
|
|
6520
|
+
/* @__PURE__ */ jsx44("span", { className: "truncate", children: option.label })
|
|
6208
6521
|
]
|
|
6209
6522
|
},
|
|
6210
6523
|
String(option.value)
|
|
@@ -6212,7 +6525,7 @@ function SelectOptionsPopover({
|
|
|
6212
6525
|
};
|
|
6213
6526
|
const renderMenuContent = () => /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6214
6527
|
field.searchable !== false && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6215
|
-
/* @__PURE__ */
|
|
6528
|
+
/* @__PURE__ */ jsx44(
|
|
6216
6529
|
Input,
|
|
6217
6530
|
{
|
|
6218
6531
|
ref: inputRef,
|
|
@@ -6225,7 +6538,7 @@ function SelectOptionsPopover({
|
|
|
6225
6538
|
placeholder: context.i18n.placeholders.searchField(
|
|
6226
6539
|
field.label || ""
|
|
6227
6540
|
),
|
|
6228
|
-
className:
|
|
6541
|
+
className: cn42(
|
|
6229
6542
|
"h-8 rounded-none border-0 border-input bg-transparent! px-2 text-sm shadow-none",
|
|
6230
6543
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6231
6544
|
open && "placeholder:text-foreground"
|
|
@@ -6273,24 +6586,24 @@ function SelectOptionsPopover({
|
|
|
6273
6586
|
}
|
|
6274
6587
|
}
|
|
6275
6588
|
),
|
|
6276
|
-
/* @__PURE__ */
|
|
6589
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {})
|
|
6277
6590
|
] }),
|
|
6278
|
-
/* @__PURE__ */
|
|
6591
|
+
/* @__PURE__ */ jsx44("div", { className: "relative flex max-h-full", children: /* @__PURE__ */ jsx44(
|
|
6279
6592
|
"div",
|
|
6280
6593
|
{
|
|
6281
6594
|
className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain",
|
|
6282
6595
|
role: "listbox",
|
|
6283
6596
|
id: `${baseId}-listbox`,
|
|
6284
|
-
children: isAsync && loading && allFilteredOptions.length === 0 ? /* @__PURE__ */
|
|
6597
|
+
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({
|
|
6285
6598
|
options: allFilteredOptions,
|
|
6286
6599
|
highlightedIndex,
|
|
6287
6600
|
renderOption: renderOptionItem
|
|
6288
6601
|
}) : /* @__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: [
|
|
6289
|
-
filteredSelectedOptions.length > 0 && /* @__PURE__ */
|
|
6602
|
+
filteredSelectedOptions.length > 0 && /* @__PURE__ */ jsx44(DropdownMenuGroup, { className: "px-1", children: filteredSelectedOptions.map(
|
|
6290
6603
|
(option, index) => renderOptionItem(option, index)
|
|
6291
6604
|
) }),
|
|
6292
|
-
filteredSelectedOptions.length > 0 && filteredUnselectedOptions.length > 0 && /* @__PURE__ */
|
|
6293
|
-
filteredUnselectedOptions.length > 0 && /* @__PURE__ */
|
|
6605
|
+
filteredSelectedOptions.length > 0 && filteredUnselectedOptions.length > 0 && /* @__PURE__ */ jsx44(DropdownMenuSeparator, { className: "mx-0" }),
|
|
6606
|
+
filteredUnselectedOptions.length > 0 && /* @__PURE__ */ jsx44(DropdownMenuGroup, { className: "px-1", children: filteredUnselectedOptions.map(
|
|
6294
6607
|
(option, index) => renderOptionItem(
|
|
6295
6608
|
option,
|
|
6296
6609
|
index + filteredSelectedOptions.length
|
|
@@ -6301,7 +6614,7 @@ function SelectOptionsPopover({
|
|
|
6301
6614
|
) })
|
|
6302
6615
|
] });
|
|
6303
6616
|
if (inline) {
|
|
6304
|
-
return /* @__PURE__ */
|
|
6617
|
+
return /* @__PURE__ */ jsx44("div", { className: "w-full", children: renderMenuContent() });
|
|
6305
6618
|
}
|
|
6306
6619
|
return /* @__PURE__ */ jsxs24(
|
|
6307
6620
|
DropdownMenu,
|
|
@@ -6314,23 +6627,23 @@ function SelectOptionsPopover({
|
|
|
6314
6627
|
}
|
|
6315
6628
|
},
|
|
6316
6629
|
children: [
|
|
6317
|
-
/* @__PURE__ */
|
|
6630
|
+
/* @__PURE__ */ jsx44(
|
|
6318
6631
|
DropdownMenuTrigger,
|
|
6319
6632
|
{
|
|
6320
|
-
render: /* @__PURE__ */
|
|
6633
|
+
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(
|
|
6321
6634
|
values,
|
|
6322
6635
|
isAsync ? resolveSelected(values) : field.options || []
|
|
6323
6636
|
) : /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6324
|
-
selectedOptions.length > 0 && /* @__PURE__ */
|
|
6637
|
+
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))) }),
|
|
6325
6638
|
selectedOptions.length === 1 ? selectedOptions[0].label : selectedOptions.length > 1 ? `${selectedOptions.length} ${context.i18n.selectedCount}` : context.i18n.select
|
|
6326
6639
|
] }) }) })
|
|
6327
6640
|
}
|
|
6328
6641
|
),
|
|
6329
|
-
/* @__PURE__ */
|
|
6642
|
+
/* @__PURE__ */ jsx44(
|
|
6330
6643
|
DropdownMenuContent,
|
|
6331
6644
|
{
|
|
6332
6645
|
align: "start",
|
|
6333
|
-
className:
|
|
6646
|
+
className: cn42("w-50 px-0", field.className),
|
|
6334
6647
|
children: renderMenuContent()
|
|
6335
6648
|
}
|
|
6336
6649
|
)
|
|
@@ -6349,10 +6662,10 @@ function FilterValueSelector({
|
|
|
6349
6662
|
return null;
|
|
6350
6663
|
}
|
|
6351
6664
|
if (field.customRenderer) {
|
|
6352
|
-
return /* @__PURE__ */
|
|
6665
|
+
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 }) });
|
|
6353
6666
|
}
|
|
6354
6667
|
if (field.type === "text") {
|
|
6355
|
-
return /* @__PURE__ */
|
|
6668
|
+
return /* @__PURE__ */ jsx44(
|
|
6356
6669
|
FilterInput,
|
|
6357
6670
|
{
|
|
6358
6671
|
type: "text",
|
|
@@ -6361,15 +6674,15 @@ function FilterValueSelector({
|
|
|
6361
6674
|
placeholder: field.placeholder,
|
|
6362
6675
|
pattern: field.pattern,
|
|
6363
6676
|
field,
|
|
6364
|
-
className:
|
|
6677
|
+
className: cn42("w-36", field.className),
|
|
6365
6678
|
autoFocus
|
|
6366
6679
|
}
|
|
6367
6680
|
);
|
|
6368
6681
|
}
|
|
6369
6682
|
if (field.type === "select" || field.type === "multiselect") {
|
|
6370
|
-
return /* @__PURE__ */
|
|
6683
|
+
return /* @__PURE__ */ jsx44(SelectOptionsPopover, { field, values, onChange });
|
|
6371
6684
|
}
|
|
6372
|
-
return /* @__PURE__ */
|
|
6685
|
+
return /* @__PURE__ */ jsx44(SelectOptionsPopover, { field, values, onChange });
|
|
6373
6686
|
}
|
|
6374
6687
|
var FiltersContent = ({
|
|
6375
6688
|
filters,
|
|
@@ -6378,7 +6691,7 @@ var FiltersContent = ({
|
|
|
6378
6691
|
}) => {
|
|
6379
6692
|
const context = useFilterContext();
|
|
6380
6693
|
const fieldsMap = useMemo4(() => getFieldsMap(fields), [fields]);
|
|
6381
|
-
const updateFilter =
|
|
6694
|
+
const updateFilter = useCallback6(
|
|
6382
6695
|
(filterId, updates) => {
|
|
6383
6696
|
onChange(
|
|
6384
6697
|
filters.map((filter) => {
|
|
@@ -6395,16 +6708,16 @@ var FiltersContent = ({
|
|
|
6395
6708
|
},
|
|
6396
6709
|
[filters, onChange]
|
|
6397
6710
|
);
|
|
6398
|
-
const removeFilter =
|
|
6711
|
+
const removeFilter = useCallback6(
|
|
6399
6712
|
(filterId) => {
|
|
6400
6713
|
onChange(filters.filter((filter) => filter.id !== filterId));
|
|
6401
6714
|
},
|
|
6402
6715
|
[filters, onChange]
|
|
6403
6716
|
);
|
|
6404
|
-
return /* @__PURE__ */
|
|
6717
|
+
return /* @__PURE__ */ jsx44(
|
|
6405
6718
|
"div",
|
|
6406
6719
|
{
|
|
6407
|
-
className:
|
|
6720
|
+
className: cn42(
|
|
6408
6721
|
filtersContainerVariants({
|
|
6409
6722
|
variant: context.variant,
|
|
6410
6723
|
size: context.size
|
|
@@ -6423,7 +6736,7 @@ var FiltersContent = ({
|
|
|
6423
6736
|
field.icon && field.icon,
|
|
6424
6737
|
field.label
|
|
6425
6738
|
] }),
|
|
6426
|
-
/* @__PURE__ */
|
|
6739
|
+
/* @__PURE__ */ jsx44(
|
|
6427
6740
|
FilterOperatorDropdown,
|
|
6428
6741
|
{
|
|
6429
6742
|
field,
|
|
@@ -6432,7 +6745,7 @@ var FiltersContent = ({
|
|
|
6432
6745
|
onChange: (operator) => updateFilter(filter.id, { operator })
|
|
6433
6746
|
}
|
|
6434
6747
|
),
|
|
6435
|
-
/* @__PURE__ */
|
|
6748
|
+
/* @__PURE__ */ jsx44(
|
|
6436
6749
|
FilterValueSelector,
|
|
6437
6750
|
{
|
|
6438
6751
|
field,
|
|
@@ -6442,7 +6755,7 @@ var FiltersContent = ({
|
|
|
6442
6755
|
autoFocus: false
|
|
6443
6756
|
}
|
|
6444
6757
|
),
|
|
6445
|
-
/* @__PURE__ */
|
|
6758
|
+
/* @__PURE__ */ jsx44(FilterRemoveButton, { onClick: () => removeFilter(filter.id) })
|
|
6446
6759
|
]
|
|
6447
6760
|
},
|
|
6448
6761
|
filter.id
|
|
@@ -6529,7 +6842,7 @@ function FilterSubmenuContent({
|
|
|
6529
6842
|
"data-highlighted": isHighlighted || void 0,
|
|
6530
6843
|
onMouseEnter: () => setHighlightedIndex(index),
|
|
6531
6844
|
checked: isSelected,
|
|
6532
|
-
className:
|
|
6845
|
+
className: cn42(
|
|
6533
6846
|
"data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
6534
6847
|
option.className
|
|
6535
6848
|
),
|
|
@@ -6539,7 +6852,7 @@ function FilterSubmenuContent({
|
|
|
6539
6852
|
onCheckedChange: () => onToggle(option.value, isSelected),
|
|
6540
6853
|
children: [
|
|
6541
6854
|
option.icon && option.icon,
|
|
6542
|
-
/* @__PURE__ */
|
|
6855
|
+
/* @__PURE__ */ jsx44("span", { className: "truncate", children: option.label })
|
|
6543
6856
|
]
|
|
6544
6857
|
},
|
|
6545
6858
|
String(option.value)
|
|
@@ -6552,7 +6865,7 @@ function FilterSubmenuContent({
|
|
|
6552
6865
|
}, [isActive, filteredOptions.length]);
|
|
6553
6866
|
return /* @__PURE__ */ jsxs24("div", { className: "flex flex-col", onMouseEnter: onActive, children: [
|
|
6554
6867
|
field.searchable !== false && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6555
|
-
/* @__PURE__ */
|
|
6868
|
+
/* @__PURE__ */ jsx44(
|
|
6556
6869
|
Input,
|
|
6557
6870
|
{
|
|
6558
6871
|
ref: inputRef,
|
|
@@ -6563,7 +6876,7 @@ function FilterSubmenuContent({
|
|
|
6563
6876
|
"aria-controls": `${baseId}-listbox`,
|
|
6564
6877
|
"aria-activedescendant": highlightedIndex >= 0 ? `${baseId}-item-${highlightedIndex}` : void 0,
|
|
6565
6878
|
placeholder: i18n.placeholders.searchField(field.label || ""),
|
|
6566
|
-
className:
|
|
6879
|
+
className: cn42(
|
|
6567
6880
|
"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none",
|
|
6568
6881
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6569
6882
|
isActive && "placeholder:text-foreground"
|
|
@@ -6615,9 +6928,9 @@ function FilterSubmenuContent({
|
|
|
6615
6928
|
}
|
|
6616
6929
|
}
|
|
6617
6930
|
),
|
|
6618
|
-
/* @__PURE__ */
|
|
6931
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {})
|
|
6619
6932
|
] }),
|
|
6620
|
-
/* @__PURE__ */
|
|
6933
|
+
/* @__PURE__ */ jsx44("div", { className: "relative flex max-h-full", children: /* @__PURE__ */ jsx44(
|
|
6621
6934
|
"div",
|
|
6622
6935
|
{
|
|
6623
6936
|
className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain outline-hidden",
|
|
@@ -6662,11 +6975,11 @@ function FilterSubmenuContent({
|
|
|
6662
6975
|
e.stopPropagation();
|
|
6663
6976
|
}
|
|
6664
6977
|
},
|
|
6665
|
-
children: isAsync && loading && filteredOptions.length === 0 ? /* @__PURE__ */
|
|
6978
|
+
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({
|
|
6666
6979
|
options: filteredOptions,
|
|
6667
6980
|
highlightedIndex,
|
|
6668
6981
|
renderOption: renderOptionItem
|
|
6669
|
-
}) : /* @__PURE__ */
|
|
6982
|
+
}) : /* @__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(
|
|
6670
6983
|
(option, index) => renderOptionItem(option, index)
|
|
6671
6984
|
) }) })
|
|
6672
6985
|
}
|
|
@@ -6752,7 +7065,7 @@ function Filters({
|
|
|
6752
7065
|
[i18n]
|
|
6753
7066
|
);
|
|
6754
7067
|
const fieldsMap = useMemo4(() => getFieldsMap(fields), [fields]);
|
|
6755
|
-
const updateFilter =
|
|
7068
|
+
const updateFilter = useCallback6(
|
|
6756
7069
|
(filterId, updates) => {
|
|
6757
7070
|
onChange(
|
|
6758
7071
|
filters.map((filter) => {
|
|
@@ -6769,13 +7082,13 @@ function Filters({
|
|
|
6769
7082
|
},
|
|
6770
7083
|
[filters, onChange]
|
|
6771
7084
|
);
|
|
6772
|
-
const removeFilter =
|
|
7085
|
+
const removeFilter = useCallback6(
|
|
6773
7086
|
(filterId) => {
|
|
6774
7087
|
onChange(filters.filter((filter) => filter.id !== filterId));
|
|
6775
7088
|
},
|
|
6776
7089
|
[filters, onChange]
|
|
6777
7090
|
);
|
|
6778
|
-
const addFilter =
|
|
7091
|
+
const addFilter = useCallback6(
|
|
6779
7092
|
(fieldKey) => {
|
|
6780
7093
|
const field = fieldsMap[fieldKey];
|
|
6781
7094
|
if (field && field.key) {
|
|
@@ -6814,7 +7127,7 @@ function Filters({
|
|
|
6814
7127
|
}, [addFilterOpen, filteredFields.length]);
|
|
6815
7128
|
const triggerButton = useRender5({
|
|
6816
7129
|
render: trigger ?? /* @__PURE__ */ jsxs24(Button, { variant: "outline", children: [
|
|
6817
|
-
/* @__PURE__ */
|
|
7130
|
+
/* @__PURE__ */ jsx44(PlusIcon, {}),
|
|
6818
7131
|
mergedI18n.addFilter
|
|
6819
7132
|
] }),
|
|
6820
7133
|
defaultTagName: "button"
|
|
@@ -6831,10 +7144,10 @@ function Filters({
|
|
|
6831
7144
|
}),
|
|
6832
7145
|
[variant, size, radius, mergedI18n, className, trigger, allowMultiple]
|
|
6833
7146
|
);
|
|
6834
|
-
return /* @__PURE__ */
|
|
7147
|
+
return /* @__PURE__ */ jsx44(FilterContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs24(
|
|
6835
7148
|
"div",
|
|
6836
7149
|
{
|
|
6837
|
-
className:
|
|
7150
|
+
className: cn42(filtersContainerVariants({ variant, size }), className),
|
|
6838
7151
|
children: [
|
|
6839
7152
|
selectableFields.length > 0 && /* @__PURE__ */ jsxs24(
|
|
6840
7153
|
DropdownMenu,
|
|
@@ -6850,16 +7163,16 @@ function Filters({
|
|
|
6850
7163
|
}
|
|
6851
7164
|
},
|
|
6852
7165
|
children: [
|
|
6853
|
-
/* @__PURE__ */
|
|
7166
|
+
/* @__PURE__ */ jsx44(DropdownMenuTrigger, { render: triggerButton }),
|
|
6854
7167
|
/* @__PURE__ */ jsxs24(
|
|
6855
7168
|
DropdownMenuContent,
|
|
6856
7169
|
{
|
|
6857
|
-
className:
|
|
7170
|
+
className: cn42("w-55", menuPopupClassName),
|
|
6858
7171
|
align: "start",
|
|
6859
7172
|
children: [
|
|
6860
7173
|
showSearchInput && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
6861
7174
|
/* @__PURE__ */ jsxs24("div", { className: "relative", children: [
|
|
6862
|
-
/* @__PURE__ */
|
|
7175
|
+
/* @__PURE__ */ jsx44(
|
|
6863
7176
|
Input,
|
|
6864
7177
|
{
|
|
6865
7178
|
ref: rootInputRef,
|
|
@@ -6867,7 +7180,7 @@ function Filters({
|
|
|
6867
7180
|
"aria-controls": `${rootId}-listbox`,
|
|
6868
7181
|
"aria-activedescendant": highlightedIndex >= 0 ? `${rootId}-item-${highlightedIndex}` : void 0,
|
|
6869
7182
|
placeholder: mergedI18n.searchFields,
|
|
6870
|
-
className:
|
|
7183
|
+
className: cn42(
|
|
6871
7184
|
"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none",
|
|
6872
7185
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6873
7186
|
activeMenu === "root" && "placeholder:text-foreground"
|
|
@@ -6931,20 +7244,20 @@ function Filters({
|
|
|
6931
7244
|
}
|
|
6932
7245
|
}
|
|
6933
7246
|
),
|
|
6934
|
-
enableShortcut && shortcutLabel && /* @__PURE__ */
|
|
7247
|
+
enableShortcut && shortcutLabel && /* @__PURE__ */ jsx44(Kbd, { className: "absolute top-1/2 right-2 -translate-y-1/2 border bg-background", children: shortcutLabel })
|
|
6935
7248
|
] }),
|
|
6936
|
-
/* @__PURE__ */
|
|
7249
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {})
|
|
6937
7250
|
] }),
|
|
6938
|
-
/* @__PURE__ */
|
|
7251
|
+
/* @__PURE__ */ jsx44("div", { className: "relative flex max-h-full", children: /* @__PURE__ */ jsx44(
|
|
6939
7252
|
"div",
|
|
6940
7253
|
{
|
|
6941
7254
|
className: "flex max-h-[min(var(--available-height),24rem)] w-full scroll-pt-2 scroll-pb-2 flex-col overscroll-contain",
|
|
6942
7255
|
role: "listbox",
|
|
6943
7256
|
id: `${rootId}-listbox`,
|
|
6944
7257
|
onMouseEnter: () => setActiveMenu("root"),
|
|
6945
|
-
children: /* @__PURE__ */
|
|
7258
|
+
children: /* @__PURE__ */ jsx44(ScrollArea, { className: "**:data-[slot=scroll-area-scrollbar]:m-0", children: (() => {
|
|
6946
7259
|
if (filteredFields.length === 0) {
|
|
6947
|
-
return /* @__PURE__ */
|
|
7260
|
+
return /* @__PURE__ */ jsx44("div", { className: "py-2 text-center text-sm text-muted-foreground", children: mergedI18n.noFieldsFound });
|
|
6948
7261
|
}
|
|
6949
7262
|
return filteredFields.map((field, index) => {
|
|
6950
7263
|
const isHighlighted = highlightedIndex === index;
|
|
@@ -6985,16 +7298,16 @@ function Filters({
|
|
|
6985
7298
|
className: "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-popup-open:bg-accent data-popup-open:text-accent-foreground",
|
|
6986
7299
|
children: [
|
|
6987
7300
|
field.icon,
|
|
6988
|
-
/* @__PURE__ */
|
|
7301
|
+
/* @__PURE__ */ jsx44("span", { children: field.label })
|
|
6989
7302
|
]
|
|
6990
7303
|
}
|
|
6991
7304
|
),
|
|
6992
|
-
/* @__PURE__ */
|
|
7305
|
+
/* @__PURE__ */ jsx44(
|
|
6993
7306
|
DropdownMenuSubContent,
|
|
6994
7307
|
{
|
|
6995
7308
|
className: "w-50",
|
|
6996
7309
|
side: "right",
|
|
6997
|
-
children: /* @__PURE__ */
|
|
7310
|
+
children: /* @__PURE__ */ jsx44(
|
|
6998
7311
|
FilterSubmenuContent,
|
|
6999
7312
|
{
|
|
7000
7313
|
field,
|
|
@@ -7079,7 +7392,7 @@ function Filters({
|
|
|
7079
7392
|
className: "data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
7080
7393
|
children: [
|
|
7081
7394
|
field.icon,
|
|
7082
|
-
/* @__PURE__ */
|
|
7395
|
+
/* @__PURE__ */ jsx44("span", { children: field.label })
|
|
7083
7396
|
]
|
|
7084
7397
|
},
|
|
7085
7398
|
field.key
|
|
@@ -7106,7 +7419,7 @@ function Filters({
|
|
|
7106
7419
|
field.icon && field.icon,
|
|
7107
7420
|
field.label
|
|
7108
7421
|
] }),
|
|
7109
|
-
/* @__PURE__ */
|
|
7422
|
+
/* @__PURE__ */ jsx44(
|
|
7110
7423
|
FilterOperatorDropdown,
|
|
7111
7424
|
{
|
|
7112
7425
|
field,
|
|
@@ -7115,7 +7428,7 @@ function Filters({
|
|
|
7115
7428
|
onChange: (operator) => updateFilter(filter.id, { operator })
|
|
7116
7429
|
}
|
|
7117
7430
|
),
|
|
7118
|
-
/* @__PURE__ */
|
|
7431
|
+
/* @__PURE__ */ jsx44(
|
|
7119
7432
|
FilterValueSelector,
|
|
7120
7433
|
{
|
|
7121
7434
|
field,
|
|
@@ -7125,7 +7438,7 @@ function Filters({
|
|
|
7125
7438
|
autoFocus: filter.id === lastAddedFilterId
|
|
7126
7439
|
}
|
|
7127
7440
|
),
|
|
7128
|
-
/* @__PURE__ */
|
|
7441
|
+
/* @__PURE__ */ jsx44(FilterRemoveButton, { onClick: () => removeFilter(filter.id) })
|
|
7129
7442
|
]
|
|
7130
7443
|
},
|
|
7131
7444
|
filter.id
|
|
@@ -7150,25 +7463,26 @@ var createFilterGroup = (id, label, fields, initialFilters = []) => ({
|
|
|
7150
7463
|
|
|
7151
7464
|
// src/ui/select.tsx
|
|
7152
7465
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
7466
|
+
import { cn as cn43 } from "cn";
|
|
7153
7467
|
import { Check as Check2, ChevronDown as ChevronDown3, ChevronUp as ChevronUp2 } from "@gravity-ui/icons";
|
|
7154
|
-
import { jsx as
|
|
7468
|
+
import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
7155
7469
|
var Select = SelectPrimitive.Root;
|
|
7156
7470
|
function SelectGroup({ className, ...props }) {
|
|
7157
|
-
return /* @__PURE__ */
|
|
7471
|
+
return /* @__PURE__ */ jsx45(
|
|
7158
7472
|
SelectPrimitive.Group,
|
|
7159
7473
|
{
|
|
7160
7474
|
"data-slot": "select-group",
|
|
7161
|
-
className:
|
|
7475
|
+
className: cn43("scroll-my-1 p-1", className),
|
|
7162
7476
|
...props
|
|
7163
7477
|
}
|
|
7164
7478
|
);
|
|
7165
7479
|
}
|
|
7166
7480
|
function SelectValue({ className, ...props }) {
|
|
7167
|
-
return /* @__PURE__ */
|
|
7481
|
+
return /* @__PURE__ */ jsx45(
|
|
7168
7482
|
SelectPrimitive.Value,
|
|
7169
7483
|
{
|
|
7170
7484
|
"data-slot": "select-value",
|
|
7171
|
-
className:
|
|
7485
|
+
className: cn43("flex flex-1 text-left", className),
|
|
7172
7486
|
...props
|
|
7173
7487
|
}
|
|
7174
7488
|
);
|
|
@@ -7184,17 +7498,17 @@ function SelectTrigger({
|
|
|
7184
7498
|
{
|
|
7185
7499
|
"data-slot": "select-trigger",
|
|
7186
7500
|
"data-size": size,
|
|
7187
|
-
className:
|
|
7501
|
+
className: cn43(
|
|
7188
7502
|
"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",
|
|
7189
7503
|
className
|
|
7190
7504
|
),
|
|
7191
7505
|
...props,
|
|
7192
7506
|
children: [
|
|
7193
7507
|
children,
|
|
7194
|
-
/* @__PURE__ */
|
|
7508
|
+
/* @__PURE__ */ jsx45(
|
|
7195
7509
|
SelectPrimitive.Icon,
|
|
7196
7510
|
{
|
|
7197
|
-
render: /* @__PURE__ */
|
|
7511
|
+
render: /* @__PURE__ */ jsx45(ChevronDown3, { className: "pointer-events-none size-4 text-muted-foreground" })
|
|
7198
7512
|
}
|
|
7199
7513
|
)
|
|
7200
7514
|
]
|
|
@@ -7211,7 +7525,7 @@ function SelectContent({
|
|
|
7211
7525
|
alignItemWithTrigger = true,
|
|
7212
7526
|
...props
|
|
7213
7527
|
}) {
|
|
7214
|
-
return /* @__PURE__ */
|
|
7528
|
+
return /* @__PURE__ */ jsx45(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx45(
|
|
7215
7529
|
SelectPrimitive.Positioner,
|
|
7216
7530
|
{
|
|
7217
7531
|
side,
|
|
@@ -7225,15 +7539,15 @@ function SelectContent({
|
|
|
7225
7539
|
{
|
|
7226
7540
|
"data-slot": "select-content",
|
|
7227
7541
|
"data-align-trigger": alignItemWithTrigger,
|
|
7228
|
-
className:
|
|
7542
|
+
className: cn43(
|
|
7229
7543
|
"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",
|
|
7230
7544
|
className
|
|
7231
7545
|
),
|
|
7232
7546
|
...props,
|
|
7233
7547
|
children: [
|
|
7234
|
-
/* @__PURE__ */
|
|
7235
|
-
/* @__PURE__ */
|
|
7236
|
-
/* @__PURE__ */
|
|
7548
|
+
/* @__PURE__ */ jsx45(SelectScrollUpButton, {}),
|
|
7549
|
+
/* @__PURE__ */ jsx45(SelectPrimitive.List, { className: "p-1", children }),
|
|
7550
|
+
/* @__PURE__ */ jsx45(SelectScrollDownButton, {})
|
|
7237
7551
|
]
|
|
7238
7552
|
}
|
|
7239
7553
|
)
|
|
@@ -7244,11 +7558,11 @@ function SelectLabel({
|
|
|
7244
7558
|
className,
|
|
7245
7559
|
...props
|
|
7246
7560
|
}) {
|
|
7247
|
-
return /* @__PURE__ */
|
|
7561
|
+
return /* @__PURE__ */ jsx45(
|
|
7248
7562
|
SelectPrimitive.GroupLabel,
|
|
7249
7563
|
{
|
|
7250
7564
|
"data-slot": "select-label",
|
|
7251
|
-
className:
|
|
7565
|
+
className: cn43("px-1.5 py-1 text-xs text-muted-foreground", className),
|
|
7252
7566
|
...props
|
|
7253
7567
|
}
|
|
7254
7568
|
);
|
|
@@ -7262,18 +7576,18 @@ function SelectItem({
|
|
|
7262
7576
|
SelectPrimitive.Item,
|
|
7263
7577
|
{
|
|
7264
7578
|
"data-slot": "select-item",
|
|
7265
|
-
className:
|
|
7579
|
+
className: cn43(
|
|
7266
7580
|
"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",
|
|
7267
7581
|
className
|
|
7268
7582
|
),
|
|
7269
7583
|
...props,
|
|
7270
7584
|
children: [
|
|
7271
|
-
/* @__PURE__ */
|
|
7272
|
-
/* @__PURE__ */
|
|
7585
|
+
/* @__PURE__ */ jsx45(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
|
|
7586
|
+
/* @__PURE__ */ jsx45(
|
|
7273
7587
|
SelectPrimitive.ItemIndicator,
|
|
7274
7588
|
{
|
|
7275
|
-
render: /* @__PURE__ */
|
|
7276
|
-
children: /* @__PURE__ */
|
|
7589
|
+
render: /* @__PURE__ */ jsx45("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
|
|
7590
|
+
children: /* @__PURE__ */ jsx45(Check2, { className: "pointer-events-none" })
|
|
7277
7591
|
}
|
|
7278
7592
|
)
|
|
7279
7593
|
]
|
|
@@ -7284,11 +7598,11 @@ function SelectSeparator({
|
|
|
7284
7598
|
className,
|
|
7285
7599
|
...props
|
|
7286
7600
|
}) {
|
|
7287
|
-
return /* @__PURE__ */
|
|
7601
|
+
return /* @__PURE__ */ jsx45(
|
|
7288
7602
|
SelectPrimitive.Separator,
|
|
7289
7603
|
{
|
|
7290
7604
|
"data-slot": "select-separator",
|
|
7291
|
-
className:
|
|
7605
|
+
className: cn43("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
7292
7606
|
...props
|
|
7293
7607
|
}
|
|
7294
7608
|
);
|
|
@@ -7297,16 +7611,16 @@ function SelectScrollUpButton({
|
|
|
7297
7611
|
className,
|
|
7298
7612
|
...props
|
|
7299
7613
|
}) {
|
|
7300
|
-
return /* @__PURE__ */
|
|
7614
|
+
return /* @__PURE__ */ jsx45(
|
|
7301
7615
|
SelectPrimitive.ScrollUpArrow,
|
|
7302
7616
|
{
|
|
7303
7617
|
"data-slot": "select-scroll-up-button",
|
|
7304
|
-
className:
|
|
7618
|
+
className: cn43(
|
|
7305
7619
|
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
7306
7620
|
className
|
|
7307
7621
|
),
|
|
7308
7622
|
...props,
|
|
7309
|
-
children: /* @__PURE__ */
|
|
7623
|
+
children: /* @__PURE__ */ jsx45(ChevronUp2, {})
|
|
7310
7624
|
}
|
|
7311
7625
|
);
|
|
7312
7626
|
}
|
|
@@ -7314,16 +7628,16 @@ function SelectScrollDownButton({
|
|
|
7314
7628
|
className,
|
|
7315
7629
|
...props
|
|
7316
7630
|
}) {
|
|
7317
|
-
return /* @__PURE__ */
|
|
7631
|
+
return /* @__PURE__ */ jsx45(
|
|
7318
7632
|
SelectPrimitive.ScrollDownArrow,
|
|
7319
7633
|
{
|
|
7320
7634
|
"data-slot": "select-scroll-down-button",
|
|
7321
|
-
className:
|
|
7635
|
+
className: cn43(
|
|
7322
7636
|
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
7323
7637
|
className
|
|
7324
7638
|
),
|
|
7325
7639
|
...props,
|
|
7326
|
-
children: /* @__PURE__ */
|
|
7640
|
+
children: /* @__PURE__ */ jsx45(ChevronDown3, {})
|
|
7327
7641
|
}
|
|
7328
7642
|
);
|
|
7329
7643
|
}
|
|
@@ -7333,7 +7647,8 @@ import {
|
|
|
7333
7647
|
forwardRef as forwardRef4,
|
|
7334
7648
|
useLayoutEffect
|
|
7335
7649
|
} from "react";
|
|
7336
|
-
import {
|
|
7650
|
+
import { cn as cn44 } from "cn";
|
|
7651
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
7337
7652
|
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)]";
|
|
7338
7653
|
var STYLE_ID = "iconiq-skeleton-styles";
|
|
7339
7654
|
var SKELETON_CSS = `
|
|
@@ -7454,10 +7769,10 @@ var Skeleton = forwardRef4(function Skeleton2({
|
|
|
7454
7769
|
...style,
|
|
7455
7770
|
"--iconiq-skeleton-duration": `${variantDuration}s`
|
|
7456
7771
|
} : style;
|
|
7457
|
-
return /* @__PURE__ */
|
|
7772
|
+
return /* @__PURE__ */ jsx46(
|
|
7458
7773
|
"div",
|
|
7459
7774
|
{
|
|
7460
|
-
className:
|
|
7775
|
+
className: cn44(
|
|
7461
7776
|
componentThemeClassName,
|
|
7462
7777
|
"iconiq-skeleton-surface relative block h-4 w-full overflow-hidden",
|
|
7463
7778
|
showFade && "iconiq-skeleton-fade-root",
|
|
@@ -7468,7 +7783,7 @@ var Skeleton = forwardRef4(function Skeleton2({
|
|
|
7468
7783
|
style: animatedStyle,
|
|
7469
7784
|
...resolveSkeletonA11yProps({ animate: animate2, decorative, label }),
|
|
7470
7785
|
...props,
|
|
7471
|
-
children: showShimmer ? /* @__PURE__ */
|
|
7786
|
+
children: showShimmer ? /* @__PURE__ */ jsx46(
|
|
7472
7787
|
"span",
|
|
7473
7788
|
{
|
|
7474
7789
|
"aria-hidden": "true",
|
|
@@ -7483,10 +7798,10 @@ function SkeletonAvatar({
|
|
|
7483
7798
|
className,
|
|
7484
7799
|
...props
|
|
7485
7800
|
}) {
|
|
7486
|
-
return /* @__PURE__ */
|
|
7801
|
+
return /* @__PURE__ */ jsx46(
|
|
7487
7802
|
Skeleton,
|
|
7488
7803
|
{
|
|
7489
|
-
className:
|
|
7804
|
+
className: cn44("size-10", className),
|
|
7490
7805
|
decorative: true,
|
|
7491
7806
|
rounded: "full",
|
|
7492
7807
|
...props
|
|
@@ -7494,16 +7809,16 @@ function SkeletonAvatar({
|
|
|
7494
7809
|
);
|
|
7495
7810
|
}
|
|
7496
7811
|
function SkeletonText({ className, ...props }) {
|
|
7497
|
-
return /* @__PURE__ */
|
|
7812
|
+
return /* @__PURE__ */ jsx46(Skeleton, { className: cn44("h-3", className), decorative: true, ...props });
|
|
7498
7813
|
}
|
|
7499
7814
|
function SkeletonButton({
|
|
7500
7815
|
className,
|
|
7501
7816
|
...props
|
|
7502
7817
|
}) {
|
|
7503
|
-
return /* @__PURE__ */
|
|
7818
|
+
return /* @__PURE__ */ jsx46(
|
|
7504
7819
|
Skeleton,
|
|
7505
7820
|
{
|
|
7506
|
-
className:
|
|
7821
|
+
className: cn44("h-9 w-24", className),
|
|
7507
7822
|
decorative: true,
|
|
7508
7823
|
rounded: "lg",
|
|
7509
7824
|
...props
|
|
@@ -7515,11 +7830,11 @@ var ShimmerSkeleton = Skeleton;
|
|
|
7515
7830
|
// src/ui/sonner.tsx
|
|
7516
7831
|
import { GooeyToaster } from "goey-toast";
|
|
7517
7832
|
import { useTheme } from "next-themes";
|
|
7518
|
-
import { jsx as
|
|
7833
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
7519
7834
|
var Toaster = ({ closeButton = "top-left", ...props }) => {
|
|
7520
7835
|
const { theme = "system" } = useTheme();
|
|
7521
7836
|
const toasterTheme = theme === "dark" ? "dark" : "light";
|
|
7522
|
-
return /* @__PURE__ */
|
|
7837
|
+
return /* @__PURE__ */ jsx47(
|
|
7523
7838
|
GooeyToaster,
|
|
7524
7839
|
{
|
|
7525
7840
|
theme: toasterTheme,
|
|
@@ -7559,53 +7874,16 @@ import {
|
|
|
7559
7874
|
verticalListSortingStrategy
|
|
7560
7875
|
} from "@dnd-kit/sortable";
|
|
7561
7876
|
import { CSS } from "@dnd-kit/utilities";
|
|
7562
|
-
import * as
|
|
7877
|
+
import * as React16 from "react";
|
|
7563
7878
|
import * as ReactDOM from "react-dom";
|
|
7564
|
-
|
|
7565
|
-
// src/lib/compose-refs.ts
|
|
7566
|
-
import * as React13 from "react";
|
|
7567
|
-
function setRef(ref, value) {
|
|
7568
|
-
if (typeof ref === "function") {
|
|
7569
|
-
return ref(value);
|
|
7570
|
-
}
|
|
7571
|
-
if (ref !== null && ref !== void 0) {
|
|
7572
|
-
ref.current = value;
|
|
7573
|
-
}
|
|
7574
|
-
}
|
|
7575
|
-
function composeRefs(...refs) {
|
|
7576
|
-
return (node) => {
|
|
7577
|
-
let hasCleanup = false;
|
|
7578
|
-
const cleanups = refs.map((ref) => {
|
|
7579
|
-
const cleanup = setRef(ref, node);
|
|
7580
|
-
if (!hasCleanup && typeof cleanup === "function") {
|
|
7581
|
-
hasCleanup = true;
|
|
7582
|
-
}
|
|
7583
|
-
return cleanup;
|
|
7584
|
-
});
|
|
7585
|
-
if (hasCleanup) {
|
|
7586
|
-
return () => {
|
|
7587
|
-
for (let i = 0; i < cleanups.length; i++) {
|
|
7588
|
-
const cleanup = cleanups[i];
|
|
7589
|
-
if (typeof cleanup === "function") {
|
|
7590
|
-
cleanup();
|
|
7591
|
-
} else {
|
|
7592
|
-
setRef(refs[i], null);
|
|
7593
|
-
}
|
|
7594
|
-
}
|
|
7595
|
-
};
|
|
7596
|
-
}
|
|
7597
|
-
};
|
|
7598
|
-
}
|
|
7599
|
-
function useComposedRefs(...refs) {
|
|
7600
|
-
return React13.useCallback(composeRefs(...refs), refs);
|
|
7601
|
-
}
|
|
7879
|
+
import { cn as cn45 } from "cn";
|
|
7602
7880
|
|
|
7603
7881
|
// src/hooks/use-isomorphic-layout-effect.ts
|
|
7604
|
-
import * as
|
|
7605
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
7882
|
+
import * as React15 from "react";
|
|
7883
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React15.useLayoutEffect : React15.useEffect;
|
|
7606
7884
|
|
|
7607
7885
|
// src/ui/sortable.tsx
|
|
7608
|
-
import { jsx as
|
|
7886
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
7609
7887
|
var orientationConfig = {
|
|
7610
7888
|
vertical: {
|
|
7611
7889
|
modifiers: [restrictToVerticalAxis, restrictToParentElement],
|
|
@@ -7628,9 +7906,9 @@ var CONTENT_NAME = "SortableContent";
|
|
|
7628
7906
|
var ITEM_NAME = "SortableItem";
|
|
7629
7907
|
var ITEM_HANDLE_NAME = "SortableItemHandle";
|
|
7630
7908
|
var OVERLAY_NAME = "SortableOverlay";
|
|
7631
|
-
var SortableRootContext =
|
|
7909
|
+
var SortableRootContext = React16.createContext(null);
|
|
7632
7910
|
function useSortableContext(consumerName) {
|
|
7633
|
-
const context =
|
|
7911
|
+
const context = React16.useContext(SortableRootContext);
|
|
7634
7912
|
if (!context) {
|
|
7635
7913
|
throw new Error(`\`${consumerName}\` must be used within \`${ROOT_NAME}\``);
|
|
7636
7914
|
}
|
|
@@ -7650,8 +7928,8 @@ function Sortable(props) {
|
|
|
7650
7928
|
accessibility,
|
|
7651
7929
|
...sortableProps
|
|
7652
7930
|
} = props;
|
|
7653
|
-
const id =
|
|
7654
|
-
const [activeId, setActiveId] =
|
|
7931
|
+
const id = React16.useId();
|
|
7932
|
+
const [activeId, setActiveId] = React16.useState(null);
|
|
7655
7933
|
const sensors = useSensors(
|
|
7656
7934
|
useSensor(MouseSensor),
|
|
7657
7935
|
useSensor(TouchSensor),
|
|
@@ -7659,11 +7937,11 @@ function Sortable(props) {
|
|
|
7659
7937
|
coordinateGetter: sortableKeyboardCoordinates
|
|
7660
7938
|
})
|
|
7661
7939
|
);
|
|
7662
|
-
const config =
|
|
7940
|
+
const config = React16.useMemo(
|
|
7663
7941
|
() => orientationConfig[orientation],
|
|
7664
7942
|
[orientation]
|
|
7665
7943
|
);
|
|
7666
|
-
const getItemValue =
|
|
7944
|
+
const getItemValue = React16.useCallback(
|
|
7667
7945
|
(item) => {
|
|
7668
7946
|
if (typeof item === "object" && !getItemValueProp) {
|
|
7669
7947
|
throw new Error(
|
|
@@ -7674,10 +7952,10 @@ function Sortable(props) {
|
|
|
7674
7952
|
},
|
|
7675
7953
|
[getItemValueProp]
|
|
7676
7954
|
);
|
|
7677
|
-
const items =
|
|
7955
|
+
const items = React16.useMemo(() => {
|
|
7678
7956
|
return value.map((item) => getItemValue(item));
|
|
7679
7957
|
}, [value, getItemValue]);
|
|
7680
|
-
const onDragStart =
|
|
7958
|
+
const onDragStart = React16.useCallback(
|
|
7681
7959
|
(event) => {
|
|
7682
7960
|
sortableProps.onDragStart?.(event);
|
|
7683
7961
|
if (event.activatorEvent.defaultPrevented) return;
|
|
@@ -7685,7 +7963,7 @@ function Sortable(props) {
|
|
|
7685
7963
|
},
|
|
7686
7964
|
[sortableProps.onDragStart]
|
|
7687
7965
|
);
|
|
7688
|
-
const onDragEnd =
|
|
7966
|
+
const onDragEnd = React16.useCallback(
|
|
7689
7967
|
(event) => {
|
|
7690
7968
|
sortableProps.onDragEnd?.(event);
|
|
7691
7969
|
if (event.activatorEvent.defaultPrevented) return;
|
|
@@ -7707,7 +7985,7 @@ function Sortable(props) {
|
|
|
7707
7985
|
},
|
|
7708
7986
|
[value, onValueChange, onMove, getItemValue, sortableProps.onDragEnd]
|
|
7709
7987
|
);
|
|
7710
|
-
const onDragCancel =
|
|
7988
|
+
const onDragCancel = React16.useCallback(
|
|
7711
7989
|
(event) => {
|
|
7712
7990
|
sortableProps.onDragCancel?.(event);
|
|
7713
7991
|
if (event.activatorEvent.defaultPrevented) return;
|
|
@@ -7715,7 +7993,7 @@ function Sortable(props) {
|
|
|
7715
7993
|
},
|
|
7716
7994
|
[sortableProps.onDragCancel]
|
|
7717
7995
|
);
|
|
7718
|
-
const announcements =
|
|
7996
|
+
const announcements = React16.useMemo(
|
|
7719
7997
|
() => ({
|
|
7720
7998
|
onDragStart({ active }) {
|
|
7721
7999
|
const activeValue = active.id.toString();
|
|
@@ -7757,7 +8035,7 @@ function Sortable(props) {
|
|
|
7757
8035
|
}),
|
|
7758
8036
|
[value]
|
|
7759
8037
|
);
|
|
7760
|
-
const screenReaderInstructions =
|
|
8038
|
+
const screenReaderInstructions = React16.useMemo(
|
|
7761
8039
|
() => ({
|
|
7762
8040
|
draggable: `
|
|
7763
8041
|
To pick up a sortable item, press space or enter.
|
|
@@ -7767,7 +8045,7 @@ function Sortable(props) {
|
|
|
7767
8045
|
}),
|
|
7768
8046
|
[orientation]
|
|
7769
8047
|
);
|
|
7770
|
-
const contextValue =
|
|
8048
|
+
const contextValue = React16.useMemo(
|
|
7771
8049
|
() => ({
|
|
7772
8050
|
id,
|
|
7773
8051
|
items,
|
|
@@ -7790,11 +8068,11 @@ function Sortable(props) {
|
|
|
7790
8068
|
flatCursor
|
|
7791
8069
|
]
|
|
7792
8070
|
);
|
|
7793
|
-
return /* @__PURE__ */
|
|
8071
|
+
return /* @__PURE__ */ jsx48(
|
|
7794
8072
|
SortableRootContext.Provider,
|
|
7795
8073
|
{
|
|
7796
8074
|
value: contextValue,
|
|
7797
|
-
children: /* @__PURE__ */
|
|
8075
|
+
children: /* @__PURE__ */ jsx48(
|
|
7798
8076
|
DndContext,
|
|
7799
8077
|
{
|
|
7800
8078
|
collisionDetection: collisionDetection ?? config.collisionDetection,
|
|
@@ -7815,7 +8093,7 @@ function Sortable(props) {
|
|
|
7815
8093
|
}
|
|
7816
8094
|
);
|
|
7817
8095
|
}
|
|
7818
|
-
var SortableContentContext =
|
|
8096
|
+
var SortableContentContext = React16.createContext(false);
|
|
7819
8097
|
function SortableContent(props) {
|
|
7820
8098
|
const {
|
|
7821
8099
|
strategy: strategyProp,
|
|
@@ -7843,7 +8121,7 @@ function SortableContent(props) {
|
|
|
7843
8121
|
},
|
|
7844
8122
|
enabled: !withoutSlot
|
|
7845
8123
|
});
|
|
7846
|
-
return /* @__PURE__ */
|
|
8124
|
+
return /* @__PURE__ */ jsx48(SortableContentContext.Provider, { value: true, children: /* @__PURE__ */ jsx48(
|
|
7847
8125
|
SortableContext,
|
|
7848
8126
|
{
|
|
7849
8127
|
items: context.items,
|
|
@@ -7852,9 +8130,9 @@ function SortableContent(props) {
|
|
|
7852
8130
|
}
|
|
7853
8131
|
) });
|
|
7854
8132
|
}
|
|
7855
|
-
var SortableItemContext =
|
|
8133
|
+
var SortableItemContext = React16.createContext(null);
|
|
7856
8134
|
function useSortableItemContext(consumerName) {
|
|
7857
|
-
const context =
|
|
8135
|
+
const context = React16.useContext(SortableItemContext);
|
|
7858
8136
|
if (!context) {
|
|
7859
8137
|
throw new Error(`\`${consumerName}\` must be used within \`${ITEM_NAME}\``);
|
|
7860
8138
|
}
|
|
@@ -7871,8 +8149,8 @@ function SortableItem(props) {
|
|
|
7871
8149
|
ref,
|
|
7872
8150
|
...itemProps
|
|
7873
8151
|
} = props;
|
|
7874
|
-
const inSortableContent =
|
|
7875
|
-
const inSortableOverlay =
|
|
8152
|
+
const inSortableContent = React16.useContext(SortableContentContext);
|
|
8153
|
+
const inSortableOverlay = React16.useContext(SortableOverlayContext);
|
|
7876
8154
|
if (!inSortableContent && !inSortableOverlay) {
|
|
7877
8155
|
throw new Error(
|
|
7878
8156
|
`\`${ITEM_NAME}\` must be used within \`${CONTENT_NAME}\` or \`${OVERLAY_NAME}\``
|
|
@@ -7882,7 +8160,7 @@ function SortableItem(props) {
|
|
|
7882
8160
|
throw new Error(`\`${ITEM_NAME}\` value cannot be an empty string`);
|
|
7883
8161
|
}
|
|
7884
8162
|
const context = useSortableContext(ITEM_NAME);
|
|
7885
|
-
const id =
|
|
8163
|
+
const id = React16.useId();
|
|
7886
8164
|
const {
|
|
7887
8165
|
attributes,
|
|
7888
8166
|
listeners,
|
|
@@ -7892,7 +8170,7 @@ function SortableItem(props) {
|
|
|
7892
8170
|
transition,
|
|
7893
8171
|
isDragging
|
|
7894
8172
|
} = useSortable({ id: value, disabled });
|
|
7895
|
-
const onNodeRefChange =
|
|
8173
|
+
const onNodeRefChange = React16.useCallback(
|
|
7896
8174
|
(node) => {
|
|
7897
8175
|
if (disabled) return;
|
|
7898
8176
|
setNodeRef(node);
|
|
@@ -7901,14 +8179,14 @@ function SortableItem(props) {
|
|
|
7901
8179
|
[disabled, asHandle, setNodeRef, setActivatorNodeRef]
|
|
7902
8180
|
);
|
|
7903
8181
|
const composedRef = useComposedRefs(ref, onNodeRefChange);
|
|
7904
|
-
const composedStyle =
|
|
8182
|
+
const composedStyle = React16.useMemo(() => {
|
|
7905
8183
|
return {
|
|
7906
8184
|
transform: CSS.Translate.toString(transform),
|
|
7907
8185
|
transition,
|
|
7908
8186
|
...style
|
|
7909
8187
|
};
|
|
7910
8188
|
}, [transform, transition, style]);
|
|
7911
|
-
const itemContext =
|
|
8189
|
+
const itemContext = React16.useMemo(
|
|
7912
8190
|
() => ({
|
|
7913
8191
|
id,
|
|
7914
8192
|
attributes,
|
|
@@ -7927,7 +8205,7 @@ function SortableItem(props) {
|
|
|
7927
8205
|
id,
|
|
7928
8206
|
ref: composedRef,
|
|
7929
8207
|
style: composedStyle,
|
|
7930
|
-
className:
|
|
8208
|
+
className: cn45(
|
|
7931
8209
|
"focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden",
|
|
7932
8210
|
{
|
|
7933
8211
|
"touch-none select-none": asHandle,
|
|
@@ -7950,7 +8228,7 @@ function SortableItem(props) {
|
|
|
7950
8228
|
...isDragging && { dragging: "" }
|
|
7951
8229
|
}
|
|
7952
8230
|
});
|
|
7953
|
-
return /* @__PURE__ */
|
|
8231
|
+
return /* @__PURE__ */ jsx48(SortableItemContext.Provider, { value: itemContext, children: element });
|
|
7954
8232
|
}
|
|
7955
8233
|
function SortableItemHandle(props) {
|
|
7956
8234
|
const { disabled, className, render, ref, ...itemHandleProps } = props;
|
|
@@ -7958,7 +8236,7 @@ function SortableItemHandle(props) {
|
|
|
7958
8236
|
const itemContext = useSortableItemContext(ITEM_HANDLE_NAME);
|
|
7959
8237
|
const isDisabled = disabled ?? itemContext.disabled;
|
|
7960
8238
|
const { setActivatorNodeRef } = itemContext;
|
|
7961
|
-
const onActivatorNodeRef =
|
|
8239
|
+
const onActivatorNodeRef = React16.useCallback(
|
|
7962
8240
|
(node) => {
|
|
7963
8241
|
if (isDisabled) return;
|
|
7964
8242
|
setActivatorNodeRef(node);
|
|
@@ -7975,7 +8253,7 @@ function SortableItemHandle(props) {
|
|
|
7975
8253
|
"aria-controls": itemContext.id,
|
|
7976
8254
|
ref: composedRef,
|
|
7977
8255
|
disabled: isDisabled,
|
|
7978
|
-
className:
|
|
8256
|
+
className: cn45(
|
|
7979
8257
|
"select-none disabled:pointer-events-none disabled:opacity-50",
|
|
7980
8258
|
context.flatCursor ? "cursor-default" : "cursor-grab data-dragging:cursor-grabbing",
|
|
7981
8259
|
className
|
|
@@ -7992,7 +8270,7 @@ function SortableItemHandle(props) {
|
|
|
7992
8270
|
}
|
|
7993
8271
|
});
|
|
7994
8272
|
}
|
|
7995
|
-
var SortableOverlayContext =
|
|
8273
|
+
var SortableOverlayContext = React16.createContext(false);
|
|
7996
8274
|
var dropAnimation = {
|
|
7997
8275
|
sideEffects: defaultDropAnimationSideEffects({
|
|
7998
8276
|
styles: {
|
|
@@ -8005,19 +8283,19 @@ var dropAnimation = {
|
|
|
8005
8283
|
function SortableOverlay(props) {
|
|
8006
8284
|
const { container: containerProp, children, ...overlayProps } = props;
|
|
8007
8285
|
const context = useSortableContext(OVERLAY_NAME);
|
|
8008
|
-
const [mounted, setMounted] =
|
|
8286
|
+
const [mounted, setMounted] = React16.useState(false);
|
|
8009
8287
|
useIsomorphicLayoutEffect(() => setMounted(true), []);
|
|
8010
8288
|
const container = containerProp ?? (mounted ? globalThis.document?.body : null);
|
|
8011
8289
|
if (!container) return null;
|
|
8012
8290
|
return ReactDOM.createPortal(
|
|
8013
|
-
/* @__PURE__ */
|
|
8291
|
+
/* @__PURE__ */ jsx48(
|
|
8014
8292
|
DragOverlay,
|
|
8015
8293
|
{
|
|
8016
8294
|
dropAnimation,
|
|
8017
8295
|
modifiers: context.modifiers,
|
|
8018
|
-
className:
|
|
8296
|
+
className: cn45(!context.flatCursor && "cursor-grabbing"),
|
|
8019
8297
|
...overlayProps,
|
|
8020
|
-
children: /* @__PURE__ */
|
|
8298
|
+
children: /* @__PURE__ */ jsx48(SortableOverlayContext.Provider, { value: true, children: context.activeId ? typeof children === "function" ? children({ value: context.activeId }) : children : null })
|
|
8021
8299
|
}
|
|
8022
8300
|
),
|
|
8023
8301
|
container
|
|
@@ -8026,23 +8304,24 @@ function SortableOverlay(props) {
|
|
|
8026
8304
|
|
|
8027
8305
|
// src/ui/switch.tsx
|
|
8028
8306
|
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
8029
|
-
import {
|
|
8307
|
+
import { cn as cn46 } from "cn";
|
|
8308
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
8030
8309
|
function Switch({
|
|
8031
8310
|
className,
|
|
8032
8311
|
size = "default",
|
|
8033
8312
|
...props
|
|
8034
8313
|
}) {
|
|
8035
|
-
return /* @__PURE__ */
|
|
8314
|
+
return /* @__PURE__ */ jsx49(
|
|
8036
8315
|
SwitchPrimitive.Root,
|
|
8037
8316
|
{
|
|
8038
8317
|
"data-slot": "switch",
|
|
8039
8318
|
"data-size": size,
|
|
8040
|
-
className:
|
|
8319
|
+
className: cn46(
|
|
8041
8320
|
"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",
|
|
8042
8321
|
className
|
|
8043
8322
|
),
|
|
8044
8323
|
...props,
|
|
8045
|
-
children: /* @__PURE__ */
|
|
8324
|
+
children: /* @__PURE__ */ jsx49(
|
|
8046
8325
|
SwitchPrimitive.Thumb,
|
|
8047
8326
|
{
|
|
8048
8327
|
"data-slot": "switch-thumb",
|
|
@@ -8054,6 +8333,7 @@ function Switch({
|
|
|
8054
8333
|
}
|
|
8055
8334
|
|
|
8056
8335
|
// src/icon/bell.tsx
|
|
8336
|
+
import { cn as cn47 } from "cn";
|
|
8057
8337
|
import {
|
|
8058
8338
|
LazyMotion,
|
|
8059
8339
|
domMin,
|
|
@@ -8069,7 +8349,7 @@ import {
|
|
|
8069
8349
|
useRef as useRef6,
|
|
8070
8350
|
useState as useState12
|
|
8071
8351
|
} from "react";
|
|
8072
|
-
import { jsx as
|
|
8352
|
+
import { jsx as jsx50, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
8073
8353
|
var BellIcon = forwardRef5(
|
|
8074
8354
|
({
|
|
8075
8355
|
onMouseEnter,
|
|
@@ -8169,10 +8449,10 @@ var BellIcon = forwardRef5(
|
|
|
8169
8449
|
}
|
|
8170
8450
|
}
|
|
8171
8451
|
};
|
|
8172
|
-
return /* @__PURE__ */
|
|
8452
|
+
return /* @__PURE__ */ jsx50(LazyMotion, { features: domMin, strict: true, children: /* @__PURE__ */ jsx50(
|
|
8173
8453
|
m.div,
|
|
8174
8454
|
{
|
|
8175
|
-
className:
|
|
8455
|
+
className: cn47("relative inline-flex", className),
|
|
8176
8456
|
onMouseEnter: handleEnter,
|
|
8177
8457
|
onMouseLeave: handleLeave,
|
|
8178
8458
|
...props,
|
|
@@ -8194,8 +8474,8 @@ var BellIcon = forwardRef5(
|
|
|
8194
8474
|
variants: bellVariants,
|
|
8195
8475
|
style: { transformOrigin: "top center" },
|
|
8196
8476
|
children: [
|
|
8197
|
-
/* @__PURE__ */
|
|
8198
|
-
/* @__PURE__ */
|
|
8477
|
+
/* @__PURE__ */ jsx50(m.path, { d: "M10.268 21a2 2 0 0 0 3.464 0", variants: clapperVariants }),
|
|
8478
|
+
/* @__PURE__ */ jsx50("path", { d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326" })
|
|
8199
8479
|
]
|
|
8200
8480
|
}
|
|
8201
8481
|
)
|
|
@@ -8206,51 +8486,50 @@ var BellIcon = forwardRef5(
|
|
|
8206
8486
|
BellIcon.displayName = "BellIcon";
|
|
8207
8487
|
|
|
8208
8488
|
// src/icon/icon-swap.tsx
|
|
8209
|
-
import {
|
|
8489
|
+
import { cn as cn48 } from "cn";
|
|
8490
|
+
import { jsx as jsx51, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8210
8491
|
function IconSwap({ active, first, second, className }) {
|
|
8211
8492
|
return /* @__PURE__ */ jsxs27(
|
|
8212
8493
|
"span",
|
|
8213
8494
|
{
|
|
8214
8495
|
"aria-hidden": "true",
|
|
8215
|
-
className:
|
|
8496
|
+
className: cn48("t-icon-swap", className),
|
|
8216
8497
|
"data-state": active ? "b" : "a",
|
|
8217
8498
|
children: [
|
|
8218
|
-
/* @__PURE__ */
|
|
8219
|
-
/* @__PURE__ */
|
|
8499
|
+
/* @__PURE__ */ jsx51("span", { className: "t-icon", "data-icon": "a", children: first }),
|
|
8500
|
+
/* @__PURE__ */ jsx51("span", { className: "t-icon", "data-icon": "b", children: second })
|
|
8220
8501
|
]
|
|
8221
8502
|
}
|
|
8222
8503
|
);
|
|
8223
8504
|
}
|
|
8224
8505
|
|
|
8225
8506
|
// src/icon/loader.tsx
|
|
8226
|
-
import
|
|
8227
|
-
import
|
|
8228
|
-
|
|
8507
|
+
import { cn as cn49 } from "cn";
|
|
8508
|
+
import React17 from "react";
|
|
8509
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
8510
|
+
var Loader = React17.forwardRef(
|
|
8229
8511
|
({ className, size = 16, color = "currentColor", style, ...props }, ref) => {
|
|
8230
8512
|
const bars = Array(12).fill(0);
|
|
8231
|
-
return /* @__PURE__ */
|
|
8513
|
+
return /* @__PURE__ */ jsx52(
|
|
8232
8514
|
"div",
|
|
8233
8515
|
{
|
|
8234
8516
|
ref,
|
|
8235
|
-
className:
|
|
8517
|
+
className: cn49("loader-wrapper", className),
|
|
8236
8518
|
style: {
|
|
8237
8519
|
"--spinner-size": `${size}px`,
|
|
8238
8520
|
"--spinner-color": color,
|
|
8239
8521
|
...style
|
|
8240
8522
|
},
|
|
8241
8523
|
...props,
|
|
8242
|
-
children: /* @__PURE__ */
|
|
8524
|
+
children: /* @__PURE__ */ jsx52("div", { className: "loader-spinner", children: bars.map((_, i) => /* @__PURE__ */ jsx52("div", { className: "loader-bar" }, `spinner-bar-${i}`)) })
|
|
8243
8525
|
}
|
|
8244
8526
|
);
|
|
8245
8527
|
}
|
|
8246
8528
|
);
|
|
8247
8529
|
Loader.displayName = "SpellUI.Loader";
|
|
8248
8530
|
|
|
8249
|
-
// src/
|
|
8250
|
-
|
|
8251
|
-
if (!countryCode) return "";
|
|
8252
|
-
return `https://flagcdn.com/${size}x${Math.floor(Number(size) * 0.75)}/${countryCode.toLowerCase()}.png`;
|
|
8253
|
-
}
|
|
8531
|
+
// src/index.ts
|
|
8532
|
+
import { cn as cn50 } from "cn";
|
|
8254
8533
|
export {
|
|
8255
8534
|
Accordion,
|
|
8256
8535
|
AccordionContent,
|
|
@@ -8268,6 +8547,7 @@ export {
|
|
|
8268
8547
|
AlertDialogPortal,
|
|
8269
8548
|
AlertDialogTitle,
|
|
8270
8549
|
AlertDialogTrigger,
|
|
8550
|
+
div_default as AnimatedDiv,
|
|
8271
8551
|
Apple,
|
|
8272
8552
|
Ariakit,
|
|
8273
8553
|
Autocomplete,
|
|
@@ -8479,6 +8759,7 @@ export {
|
|
|
8479
8759
|
SPRING_SWAP,
|
|
8480
8760
|
ScrollArea,
|
|
8481
8761
|
ScrollBar,
|
|
8762
|
+
SearchParams,
|
|
8482
8763
|
Select,
|
|
8483
8764
|
SelectContent,
|
|
8484
8765
|
SelectGroup,
|
|
@@ -8510,35 +8791,63 @@ export {
|
|
|
8510
8791
|
Top,
|
|
8511
8792
|
activityItemAnimation,
|
|
8512
8793
|
badgeVariants,
|
|
8794
|
+
buildFlagSearchParamHref,
|
|
8513
8795
|
buttonGroupVariants,
|
|
8514
8796
|
buttonVariants,
|
|
8515
|
-
cn,
|
|
8797
|
+
cn50 as cn,
|
|
8798
|
+
composeRefs,
|
|
8516
8799
|
createFilter,
|
|
8517
8800
|
createFilterGroup,
|
|
8518
8801
|
fromLeftChildren,
|
|
8519
8802
|
fromLeftVariant,
|
|
8520
8803
|
fromRightVariant,
|
|
8521
8804
|
fromTopVariant,
|
|
8522
|
-
|
|
8805
|
+
getNativeAppPlugin,
|
|
8806
|
+
getNativeAppSettingsPlugin,
|
|
8807
|
+
getNativeBrowserPlugin,
|
|
8808
|
+
getNativeCameraPlugin,
|
|
8809
|
+
getNativeImagePickerPlugin,
|
|
8810
|
+
getNativeInAppUpdatePlugin,
|
|
8811
|
+
getNativePaymentPlugin,
|
|
8812
|
+
getNativePlatform,
|
|
8813
|
+
getNativeShareFilePlugin,
|
|
8814
|
+
getNativeSharePlugin,
|
|
8815
|
+
getNativeShareTargetPlugin,
|
|
8816
|
+
getNativeStatusBarPlugin,
|
|
8817
|
+
getNativeThemePlugin,
|
|
8818
|
+
getOpenAI,
|
|
8523
8819
|
getSkeletonVariantDuration,
|
|
8524
8820
|
hamFastFadeContainer,
|
|
8821
|
+
hasFlagSearchParam,
|
|
8525
8822
|
headingFromLeft,
|
|
8823
|
+
isNativeApp,
|
|
8526
8824
|
kanbanOrderCardAnimation,
|
|
8527
8825
|
kanbanOrderCardLayoutTransition,
|
|
8528
8826
|
kanbanOrderCardReducedMotionAnimation,
|
|
8529
8827
|
mobileNavItemSideways,
|
|
8828
|
+
nativeSharedFileToFile,
|
|
8530
8829
|
opacityVariant,
|
|
8830
|
+
openExternalUrl,
|
|
8831
|
+
openNativeAppSettings,
|
|
8832
|
+
openUpiPaymentUrl,
|
|
8833
|
+
pickNativeChooserImageFiles,
|
|
8834
|
+
pickNativeImageFiles,
|
|
8531
8835
|
popUp,
|
|
8532
8836
|
popUpFromBottomForText,
|
|
8533
8837
|
resolveSkeletonA11yProps,
|
|
8838
|
+
saveNativeShareImage,
|
|
8534
8839
|
searchBarSlideAnimation,
|
|
8535
8840
|
searchFocus,
|
|
8841
|
+
searchParamKeys,
|
|
8842
|
+
searchParams,
|
|
8843
|
+
shareNativeOrWeb,
|
|
8536
8844
|
skeletonRoundedClasses,
|
|
8537
8845
|
skeletonVariantDefaultDuration,
|
|
8538
8846
|
svgVariant,
|
|
8539
8847
|
useAutocompleteFilter,
|
|
8540
8848
|
useCarousel,
|
|
8541
8849
|
useComboboxAnchor,
|
|
8850
|
+
useComposedRefs,
|
|
8542
8851
|
useJellyMood,
|
|
8543
8852
|
useMediaQuery,
|
|
8544
8853
|
useMessageScroller,
|