@rock.star/ui 1.1.4 → 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 +4 -3
- package/dist/index.js +629 -352
- 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/ui/index.js +355 -323
- 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
|
),
|
|
@@ -3555,9 +3828,9 @@ function useMediaQuery(query) {
|
|
|
3555
3828
|
|
|
3556
3829
|
// src/ui/farmer/div.tsx
|
|
3557
3830
|
import { motion as motion5 } from "motion/react";
|
|
3558
|
-
import
|
|
3831
|
+
import React10 from "react";
|
|
3559
3832
|
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
3560
|
-
var AnimatedDiv =
|
|
3833
|
+
var AnimatedDiv = React10.forwardRef(
|
|
3561
3834
|
({ variants, mobileVariants, className, children, infinity, ...motionProps }, ref) => {
|
|
3562
3835
|
const isDesktop = useMediaQuery("(min-width: 768px)");
|
|
3563
3836
|
const selectedVariants = !isDesktop && mobileVariants ? mobileVariants : variants;
|
|
@@ -3879,15 +4152,17 @@ var kanbanOrderCardLayoutTransition = {
|
|
|
3879
4152
|
// src/ui/field.tsx
|
|
3880
4153
|
import { cva as cva7 } from "class-variance-authority";
|
|
3881
4154
|
import { useMemo as useMemo3 } from "react";
|
|
4155
|
+
import { cn as cn30 } from "cn";
|
|
3882
4156
|
|
|
3883
4157
|
// src/ui/label.tsx
|
|
4158
|
+
import { cn as cn29 } from "cn";
|
|
3884
4159
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
3885
4160
|
function Label({ className, ...props }) {
|
|
3886
4161
|
return /* @__PURE__ */ jsx30(
|
|
3887
4162
|
"label",
|
|
3888
4163
|
{
|
|
3889
4164
|
"data-slot": "label",
|
|
3890
|
-
className:
|
|
4165
|
+
className: cn29(
|
|
3891
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",
|
|
3892
4167
|
className
|
|
3893
4168
|
),
|
|
@@ -3903,7 +4178,7 @@ function FieldSet({ className, ...props }) {
|
|
|
3903
4178
|
"fieldset",
|
|
3904
4179
|
{
|
|
3905
4180
|
"data-slot": "field-set",
|
|
3906
|
-
className:
|
|
4181
|
+
className: cn30(
|
|
3907
4182
|
"flex flex-col gap-1 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
|
|
3908
4183
|
className
|
|
3909
4184
|
),
|
|
@@ -3921,7 +4196,7 @@ function FieldLegend({
|
|
|
3921
4196
|
{
|
|
3922
4197
|
"data-slot": "field-legend",
|
|
3923
4198
|
"data-variant": variant,
|
|
3924
|
-
className:
|
|
4199
|
+
className: cn30(
|
|
3925
4200
|
"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base",
|
|
3926
4201
|
className
|
|
3927
4202
|
),
|
|
@@ -3934,7 +4209,7 @@ function FieldGroup({ className, ...props }) {
|
|
|
3934
4209
|
"div",
|
|
3935
4210
|
{
|
|
3936
4211
|
"data-slot": "field-group",
|
|
3937
|
-
className:
|
|
4212
|
+
className: cn30(
|
|
3938
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",
|
|
3939
4214
|
className
|
|
3940
4215
|
),
|
|
@@ -3968,7 +4243,7 @@ function Field({
|
|
|
3968
4243
|
role: "group",
|
|
3969
4244
|
"data-slot": "field",
|
|
3970
4245
|
"data-orientation": orientation,
|
|
3971
|
-
className:
|
|
4246
|
+
className: cn30(fieldVariants({ orientation }), className),
|
|
3972
4247
|
...props
|
|
3973
4248
|
}
|
|
3974
4249
|
);
|
|
@@ -3978,7 +4253,7 @@ function FieldContent({ className, ...props }) {
|
|
|
3978
4253
|
"div",
|
|
3979
4254
|
{
|
|
3980
4255
|
"data-slot": "field-content",
|
|
3981
|
-
className:
|
|
4256
|
+
className: cn30(
|
|
3982
4257
|
"group/field-content flex flex-1 flex-col gap-0.5 leading-snug",
|
|
3983
4258
|
className
|
|
3984
4259
|
),
|
|
@@ -3994,7 +4269,7 @@ function FieldLabel({
|
|
|
3994
4269
|
Label,
|
|
3995
4270
|
{
|
|
3996
4271
|
"data-slot": "field-label",
|
|
3997
|
-
className:
|
|
4272
|
+
className: cn30(
|
|
3998
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",
|
|
3999
4274
|
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
|
|
4000
4275
|
className
|
|
@@ -4008,7 +4283,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
4008
4283
|
"div",
|
|
4009
4284
|
{
|
|
4010
4285
|
"data-slot": "field-label",
|
|
4011
|
-
className:
|
|
4286
|
+
className: cn30(
|
|
4012
4287
|
"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50",
|
|
4013
4288
|
className
|
|
4014
4289
|
),
|
|
@@ -4021,7 +4296,7 @@ function FieldDescription({ className, ...props }) {
|
|
|
4021
4296
|
"p",
|
|
4022
4297
|
{
|
|
4023
4298
|
"data-slot": "field-description",
|
|
4024
|
-
className:
|
|
4299
|
+
className: cn30(
|
|
4025
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",
|
|
4026
4301
|
"last:mt-0 nth-last-2:-mt-1",
|
|
4027
4302
|
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
@@ -4041,7 +4316,7 @@ function FieldSeparator({
|
|
|
4041
4316
|
{
|
|
4042
4317
|
"data-slot": "field-separator",
|
|
4043
4318
|
"data-content": !!children,
|
|
4044
|
-
className:
|
|
4319
|
+
className: cn30(
|
|
4045
4320
|
"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
|
|
4046
4321
|
className
|
|
4047
4322
|
),
|
|
@@ -4091,7 +4366,7 @@ function FieldError({
|
|
|
4091
4366
|
{
|
|
4092
4367
|
role: "alert",
|
|
4093
4368
|
"data-slot": "field-error",
|
|
4094
|
-
className:
|
|
4369
|
+
className: cn30("text-sm font-normal text-destructive", className),
|
|
4095
4370
|
...props,
|
|
4096
4371
|
children: content
|
|
4097
4372
|
}
|
|
@@ -4100,7 +4375,8 @@ function FieldError({
|
|
|
4100
4375
|
|
|
4101
4376
|
// src/ui/image.tsx
|
|
4102
4377
|
import NextImage from "next/image";
|
|
4103
|
-
import { useCallback as
|
|
4378
|
+
import { useCallback as useCallback3, useState as useState5 } from "react";
|
|
4379
|
+
import { cn as cn31 } from "cn";
|
|
4104
4380
|
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4105
4381
|
function srcValue(src) {
|
|
4106
4382
|
if (!src) return null;
|
|
@@ -4132,16 +4408,16 @@ function Image({
|
|
|
4132
4408
|
const loaded = hasSource && loadedSrc === currentSrc && !failed;
|
|
4133
4409
|
const shouldPreload = preload ?? loading === "eager";
|
|
4134
4410
|
const imageLoading = shouldPreload ? "eager" : loading;
|
|
4135
|
-
const markLoaded =
|
|
4411
|
+
const markLoaded = useCallback3(() => {
|
|
4136
4412
|
if (!currentSrc) return;
|
|
4137
4413
|
setFailedSrc(null);
|
|
4138
4414
|
setLoadedSrc(currentSrc);
|
|
4139
4415
|
}, [currentSrc]);
|
|
4140
|
-
const markFailed =
|
|
4416
|
+
const markFailed = useCallback3(() => {
|
|
4141
4417
|
if (!currentSrc) return;
|
|
4142
4418
|
setFailedSrc(currentSrc);
|
|
4143
4419
|
}, [currentSrc]);
|
|
4144
|
-
return /* @__PURE__ */ jsxs17("section", { className:
|
|
4420
|
+
return /* @__PURE__ */ jsxs17("section", { className: cn31("relative block overflow-hidden", wrapper), children: [
|
|
4145
4421
|
showSkeleton && !loaded && !failed && hasSource && /* @__PURE__ */ jsx32(Skeleton, { className: "absolute inset-0 size-full" }),
|
|
4146
4422
|
hasSource && !failed ? /* @__PURE__ */ jsx32(
|
|
4147
4423
|
NextImage,
|
|
@@ -4153,7 +4429,7 @@ function Image({
|
|
|
4153
4429
|
loading: imageLoading,
|
|
4154
4430
|
preload: shouldPreload,
|
|
4155
4431
|
fetchPriority: fetchPriority ?? (imageLoading === "eager" ? "high" : void 0),
|
|
4156
|
-
className:
|
|
4432
|
+
className: cn31(
|
|
4157
4433
|
"transition-opacity duration-200",
|
|
4158
4434
|
loaded ? "opacity-100" : "opacity-0",
|
|
4159
4435
|
className
|
|
@@ -4173,8 +4449,9 @@ function Image({
|
|
|
4173
4449
|
}
|
|
4174
4450
|
|
|
4175
4451
|
// src/ui/input-otp.tsx
|
|
4176
|
-
import * as
|
|
4452
|
+
import * as React11 from "react";
|
|
4177
4453
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
4454
|
+
import { cn as cn32 } from "cn";
|
|
4178
4455
|
import { MinusIcon } from "lucide-react";
|
|
4179
4456
|
import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4180
4457
|
function InputOTP({
|
|
@@ -4186,12 +4463,12 @@ function InputOTP({
|
|
|
4186
4463
|
OTPInput,
|
|
4187
4464
|
{
|
|
4188
4465
|
"data-slot": "input-otp",
|
|
4189
|
-
containerClassName:
|
|
4466
|
+
containerClassName: cn32(
|
|
4190
4467
|
"cn-input-otp flex items-center has-disabled:opacity-50",
|
|
4191
4468
|
containerClassName
|
|
4192
4469
|
),
|
|
4193
4470
|
spellCheck: false,
|
|
4194
|
-
className:
|
|
4471
|
+
className: cn32("disabled:cursor-not-allowed", className),
|
|
4195
4472
|
...props
|
|
4196
4473
|
}
|
|
4197
4474
|
);
|
|
@@ -4201,7 +4478,7 @@ function InputOTPGroup({ className, ...props }) {
|
|
|
4201
4478
|
"div",
|
|
4202
4479
|
{
|
|
4203
4480
|
"data-slot": "input-otp-group",
|
|
4204
|
-
className:
|
|
4481
|
+
className: cn32(
|
|
4205
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",
|
|
4206
4483
|
className
|
|
4207
4484
|
),
|
|
@@ -4214,14 +4491,14 @@ function InputOTPSlot({
|
|
|
4214
4491
|
className,
|
|
4215
4492
|
...props
|
|
4216
4493
|
}) {
|
|
4217
|
-
const inputOTPContext =
|
|
4494
|
+
const inputOTPContext = React11.useContext(OTPInputContext);
|
|
4218
4495
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
4219
4496
|
return /* @__PURE__ */ jsxs18(
|
|
4220
4497
|
"div",
|
|
4221
4498
|
{
|
|
4222
4499
|
"data-slot": "input-otp-slot",
|
|
4223
4500
|
"data-active": isActive,
|
|
4224
|
-
className:
|
|
4501
|
+
className: cn32(
|
|
4225
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",
|
|
4226
4503
|
className
|
|
4227
4504
|
),
|
|
@@ -4250,6 +4527,7 @@ function InputOTPSeparator({ ...props }) {
|
|
|
4250
4527
|
import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
|
|
4251
4528
|
import { useRender as useRender4 } from "@base-ui/react/use-render";
|
|
4252
4529
|
import { cva as cva8 } from "class-variance-authority";
|
|
4530
|
+
import { cn as cn33 } from "cn";
|
|
4253
4531
|
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
4254
4532
|
function ItemGroup({ className, ...props }) {
|
|
4255
4533
|
return /* @__PURE__ */ jsx34(
|
|
@@ -4257,7 +4535,7 @@ function ItemGroup({ className, ...props }) {
|
|
|
4257
4535
|
{
|
|
4258
4536
|
role: "list",
|
|
4259
4537
|
"data-slot": "item-group",
|
|
4260
|
-
className:
|
|
4538
|
+
className: cn33(
|
|
4261
4539
|
"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
|
|
4262
4540
|
className
|
|
4263
4541
|
),
|
|
@@ -4274,7 +4552,7 @@ function ItemSeparator({
|
|
|
4274
4552
|
{
|
|
4275
4553
|
"data-slot": "item-separator",
|
|
4276
4554
|
orientation: "horizontal",
|
|
4277
|
-
className:
|
|
4555
|
+
className: cn33("my-2", className),
|
|
4278
4556
|
...props
|
|
4279
4557
|
}
|
|
4280
4558
|
);
|
|
@@ -4311,7 +4589,7 @@ function Item({
|
|
|
4311
4589
|
defaultTagName: "div",
|
|
4312
4590
|
props: mergeProps4(
|
|
4313
4591
|
{
|
|
4314
|
-
className:
|
|
4592
|
+
className: cn33(itemVariants({ variant, size, className }))
|
|
4315
4593
|
},
|
|
4316
4594
|
props
|
|
4317
4595
|
),
|
|
@@ -4348,7 +4626,7 @@ function ItemMedia({
|
|
|
4348
4626
|
{
|
|
4349
4627
|
"data-slot": "item-media",
|
|
4350
4628
|
"data-variant": variant,
|
|
4351
|
-
className:
|
|
4629
|
+
className: cn33(itemMediaVariants({ variant, className })),
|
|
4352
4630
|
...props
|
|
4353
4631
|
}
|
|
4354
4632
|
);
|
|
@@ -4358,7 +4636,7 @@ function ItemContent({ className, ...props }) {
|
|
|
4358
4636
|
"div",
|
|
4359
4637
|
{
|
|
4360
4638
|
"data-slot": "item-content",
|
|
4361
|
-
className:
|
|
4639
|
+
className: cn33(
|
|
4362
4640
|
"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
|
|
4363
4641
|
className
|
|
4364
4642
|
),
|
|
@@ -4371,7 +4649,7 @@ function ItemTitle({ className, ...props }) {
|
|
|
4371
4649
|
"div",
|
|
4372
4650
|
{
|
|
4373
4651
|
"data-slot": "item-title",
|
|
4374
|
-
className:
|
|
4652
|
+
className: cn33(
|
|
4375
4653
|
"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
|
|
4376
4654
|
className
|
|
4377
4655
|
),
|
|
@@ -4384,7 +4662,7 @@ function ItemDescription({ className, ...props }) {
|
|
|
4384
4662
|
"p",
|
|
4385
4663
|
{
|
|
4386
4664
|
"data-slot": "item-description",
|
|
4387
|
-
className:
|
|
4665
|
+
className: cn33(
|
|
4388
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",
|
|
4389
4667
|
className
|
|
4390
4668
|
),
|
|
@@ -4397,7 +4675,7 @@ function ItemActions({ className, ...props }) {
|
|
|
4397
4675
|
"div",
|
|
4398
4676
|
{
|
|
4399
4677
|
"data-slot": "item-actions",
|
|
4400
|
-
className:
|
|
4678
|
+
className: cn33("flex items-center gap-2", className),
|
|
4401
4679
|
...props
|
|
4402
4680
|
}
|
|
4403
4681
|
);
|
|
@@ -4407,7 +4685,7 @@ function ItemHeader({ className, ...props }) {
|
|
|
4407
4685
|
"div",
|
|
4408
4686
|
{
|
|
4409
4687
|
"data-slot": "item-header",
|
|
4410
|
-
className:
|
|
4688
|
+
className: cn33(
|
|
4411
4689
|
"flex basis-full items-center justify-between gap-2",
|
|
4412
4690
|
className
|
|
4413
4691
|
),
|
|
@@ -4420,7 +4698,7 @@ function ItemFooter({ className, ...props }) {
|
|
|
4420
4698
|
"div",
|
|
4421
4699
|
{
|
|
4422
4700
|
"data-slot": "item-footer",
|
|
4423
|
-
className:
|
|
4701
|
+
className: cn33(
|
|
4424
4702
|
"flex basis-full items-center justify-between gap-2",
|
|
4425
4703
|
className
|
|
4426
4704
|
),
|
|
@@ -4460,7 +4738,7 @@ import {
|
|
|
4460
4738
|
useQueryStates
|
|
4461
4739
|
} from "nuqs";
|
|
4462
4740
|
import { NuqsAdapter } from "nuqs/adapters/next/app";
|
|
4463
|
-
import * as
|
|
4741
|
+
import * as React12 from "react";
|
|
4464
4742
|
var SEARCH_DELAY = 500;
|
|
4465
4743
|
var PRODUCT_SEARCH_DELAY = 800;
|
|
4466
4744
|
function isSearchPath(pathname) {
|
|
@@ -4482,7 +4760,7 @@ function useSearchParams() {
|
|
|
4482
4760
|
const pathname = usePathname();
|
|
4483
4761
|
const router = useRouter2();
|
|
4484
4762
|
const nativeSearchParams = useNextSearchParams();
|
|
4485
|
-
const [isPending, startTransition] =
|
|
4763
|
+
const [isPending, startTransition] = React12.useTransition();
|
|
4486
4764
|
const [params, setParams] = useQueryStates(searchParams, {
|
|
4487
4765
|
urlKeys: searchParamKeys,
|
|
4488
4766
|
history: "replace",
|
|
@@ -4490,18 +4768,18 @@ function useSearchParams() {
|
|
|
4490
4768
|
scroll: false,
|
|
4491
4769
|
startTransition
|
|
4492
4770
|
});
|
|
4493
|
-
const productQueryRef =
|
|
4494
|
-
const productNavigationQueuedRef =
|
|
4771
|
+
const productQueryRef = React12.useRef(params.query);
|
|
4772
|
+
const productNavigationQueuedRef = React12.useRef(false);
|
|
4495
4773
|
const onSearchPath = isSearchPath(pathname);
|
|
4496
4774
|
const cart = hasFlagSearchParam(nativeSearchParams, "cart");
|
|
4497
4775
|
const notification = hasFlagSearchParam(nativeSearchParams, "notification");
|
|
4498
|
-
const updateParams =
|
|
4776
|
+
const updateParams = React12.useCallback(
|
|
4499
4777
|
(values, options) => {
|
|
4500
4778
|
void setParams(values, options);
|
|
4501
4779
|
},
|
|
4502
4780
|
[setParams]
|
|
4503
4781
|
);
|
|
4504
|
-
const setQuery =
|
|
4782
|
+
const setQuery = React12.useCallback(
|
|
4505
4783
|
(value) => {
|
|
4506
4784
|
const update = setParams(
|
|
4507
4785
|
{ query: value, page: 1 },
|
|
@@ -4528,13 +4806,13 @@ function useSearchParams() {
|
|
|
4528
4806
|
},
|
|
4529
4807
|
[onSearchPath, router, setParams]
|
|
4530
4808
|
);
|
|
4531
|
-
const commitQuery =
|
|
4809
|
+
const commitQuery = React12.useCallback(() => {
|
|
4532
4810
|
const query = params.query.trim();
|
|
4533
4811
|
if (!query || onSearchPath) return;
|
|
4534
4812
|
pendingSearchFocus = true;
|
|
4535
4813
|
router.push(searchHref(query), { scroll: true });
|
|
4536
4814
|
}, [onSearchPath, params.query, router]);
|
|
4537
|
-
const setCategory =
|
|
4815
|
+
const setCategory = React12.useCallback(
|
|
4538
4816
|
(value) => {
|
|
4539
4817
|
updateParams(
|
|
4540
4818
|
{ category: value, page: 1 },
|
|
@@ -4543,7 +4821,7 @@ function useSearchParams() {
|
|
|
4543
4821
|
},
|
|
4544
4822
|
[updateParams]
|
|
4545
4823
|
);
|
|
4546
|
-
const setProductStatus =
|
|
4824
|
+
const setProductStatus = React12.useCallback(
|
|
4547
4825
|
(value) => {
|
|
4548
4826
|
updateParams(
|
|
4549
4827
|
{ productStatus: value, page: 1 },
|
|
@@ -4552,7 +4830,7 @@ function useSearchParams() {
|
|
|
4552
4830
|
},
|
|
4553
4831
|
[updateParams]
|
|
4554
4832
|
);
|
|
4555
|
-
const setUser =
|
|
4833
|
+
const setUser = React12.useCallback(
|
|
4556
4834
|
(value) => {
|
|
4557
4835
|
updateParams(
|
|
4558
4836
|
{ user: value },
|
|
@@ -4566,7 +4844,7 @@ function useSearchParams() {
|
|
|
4566
4844
|
},
|
|
4567
4845
|
[updateParams]
|
|
4568
4846
|
);
|
|
4569
|
-
const setPage =
|
|
4847
|
+
const setPage = React12.useCallback(
|
|
4570
4848
|
(value) => {
|
|
4571
4849
|
updateParams(
|
|
4572
4850
|
{ page: value },
|
|
@@ -4575,7 +4853,7 @@ function useSearchParams() {
|
|
|
4575
4853
|
},
|
|
4576
4854
|
[updateParams]
|
|
4577
4855
|
);
|
|
4578
|
-
const setUserTransaction =
|
|
4856
|
+
const setUserTransaction = React12.useCallback(
|
|
4579
4857
|
(value) => {
|
|
4580
4858
|
updateParams(
|
|
4581
4859
|
{ user: value, transaction: "", transactionPage: 1 },
|
|
@@ -4584,7 +4862,7 @@ function useSearchParams() {
|
|
|
4584
4862
|
},
|
|
4585
4863
|
[updateParams]
|
|
4586
4864
|
);
|
|
4587
|
-
const setTransactionDetail =
|
|
4865
|
+
const setTransactionDetail = React12.useCallback(
|
|
4588
4866
|
(value) => {
|
|
4589
4867
|
updateParams(
|
|
4590
4868
|
{ transaction: value },
|
|
@@ -4593,19 +4871,19 @@ function useSearchParams() {
|
|
|
4593
4871
|
},
|
|
4594
4872
|
[updateParams]
|
|
4595
4873
|
);
|
|
4596
|
-
const clearTransactionDetail =
|
|
4874
|
+
const clearTransactionDetail = React12.useCallback(() => {
|
|
4597
4875
|
updateParams(
|
|
4598
4876
|
{ transaction: "" },
|
|
4599
4877
|
{ history: "replace", shallow: false, scroll: false }
|
|
4600
4878
|
);
|
|
4601
4879
|
}, [updateParams]);
|
|
4602
|
-
const clearUserTransaction =
|
|
4880
|
+
const clearUserTransaction = React12.useCallback(() => {
|
|
4603
4881
|
updateParams(
|
|
4604
4882
|
{ user: "", transaction: "", transactionPage: 1 },
|
|
4605
4883
|
{ history: "replace", shallow: false, scroll: false }
|
|
4606
4884
|
);
|
|
4607
4885
|
}, [updateParams]);
|
|
4608
|
-
const clearAll =
|
|
4886
|
+
const clearAll = React12.useCallback(() => {
|
|
4609
4887
|
updateParams(
|
|
4610
4888
|
{
|
|
4611
4889
|
query: "",
|
|
@@ -4623,7 +4901,7 @@ function useSearchParams() {
|
|
|
4623
4901
|
}
|
|
4624
4902
|
);
|
|
4625
4903
|
}, [updateParams]);
|
|
4626
|
-
const setCart =
|
|
4904
|
+
const setCart = React12.useCallback(
|
|
4627
4905
|
(value) => {
|
|
4628
4906
|
window.history.replaceState(
|
|
4629
4907
|
null,
|
|
@@ -4633,10 +4911,10 @@ function useSearchParams() {
|
|
|
4633
4911
|
},
|
|
4634
4912
|
[nativeSearchParams, pathname]
|
|
4635
4913
|
);
|
|
4636
|
-
const toggleCart =
|
|
4914
|
+
const toggleCart = React12.useCallback(() => {
|
|
4637
4915
|
setCart(!cart);
|
|
4638
4916
|
}, [cart, setCart]);
|
|
4639
|
-
const setNotification =
|
|
4917
|
+
const setNotification = React12.useCallback(
|
|
4640
4918
|
(value) => {
|
|
4641
4919
|
window.history.replaceState(
|
|
4642
4920
|
null,
|
|
@@ -4694,7 +4972,8 @@ import {
|
|
|
4694
4972
|
BlobSpeech,
|
|
4695
4973
|
JellyBlobMascot
|
|
4696
4974
|
} from "feral-blob";
|
|
4697
|
-
import * as
|
|
4975
|
+
import * as React13 from "react";
|
|
4976
|
+
import { cn as cn34 } from "cn";
|
|
4698
4977
|
import {
|
|
4699
4978
|
BlobSpeech as BlobSpeech2,
|
|
4700
4979
|
JellyBlobMascot as JellyBlobMascot2,
|
|
@@ -4706,7 +4985,7 @@ function JellyBlob({ ...props }) {
|
|
|
4706
4985
|
JellyBlobMascot,
|
|
4707
4986
|
{
|
|
4708
4987
|
...props,
|
|
4709
|
-
className:
|
|
4988
|
+
className: cn34("h-auto w-full", props.className)
|
|
4710
4989
|
}
|
|
4711
4990
|
) });
|
|
4712
4991
|
}
|
|
@@ -4736,7 +5015,7 @@ function JellyMini({
|
|
|
4736
5015
|
"span",
|
|
4737
5016
|
{
|
|
4738
5017
|
"aria-hidden": "true",
|
|
4739
|
-
className:
|
|
5018
|
+
className: cn34(
|
|
4740
5019
|
"inline-flex size-5 shrink-0 items-center justify-center select-none",
|
|
4741
5020
|
className
|
|
4742
5021
|
),
|
|
@@ -4752,10 +5031,10 @@ function JellyMini({
|
|
|
4752
5031
|
}
|
|
4753
5032
|
);
|
|
4754
5033
|
}
|
|
4755
|
-
var JellyMascotContext =
|
|
5034
|
+
var JellyMascotContext = React13.createContext(null);
|
|
4756
5035
|
function useJellyMood() {
|
|
4757
|
-
const state =
|
|
4758
|
-
return
|
|
5036
|
+
const state = React13.useContext(JellyMascotContext);
|
|
5037
|
+
return React13.useCallback(
|
|
4759
5038
|
(mood) => {
|
|
4760
5039
|
if (!mood || !state) return {};
|
|
4761
5040
|
return {
|
|
@@ -4798,7 +5077,7 @@ function JellyMascotProvider({
|
|
|
4798
5077
|
...blobProps
|
|
4799
5078
|
}) {
|
|
4800
5079
|
const { mounted } = useMounted();
|
|
4801
|
-
const [previewMood, setPreviewMood] =
|
|
5080
|
+
const [previewMood, setPreviewMood] = React13.useState(
|
|
4802
5081
|
null
|
|
4803
5082
|
);
|
|
4804
5083
|
const activeMood = previewMood ?? mood;
|
|
@@ -4823,13 +5102,13 @@ function JellyMascotFace({
|
|
|
4823
5102
|
size = "md",
|
|
4824
5103
|
className
|
|
4825
5104
|
}) {
|
|
4826
|
-
const mascot =
|
|
5105
|
+
const mascot = React13.useContext(JellyMascotContext);
|
|
4827
5106
|
if (!mascot) return null;
|
|
4828
5107
|
return /* @__PURE__ */ jsxs19(
|
|
4829
5108
|
"div",
|
|
4830
5109
|
{
|
|
4831
5110
|
"aria-hidden": "true",
|
|
4832
|
-
className:
|
|
5111
|
+
className: cn34(
|
|
4833
5112
|
"flex flex-col items-center select-none",
|
|
4834
5113
|
SIZE_WRAPPER[size],
|
|
4835
5114
|
className
|
|
@@ -4861,7 +5140,7 @@ function JellyMascot({
|
|
|
4861
5140
|
className,
|
|
4862
5141
|
...config
|
|
4863
5142
|
}) {
|
|
4864
|
-
const existing =
|
|
5143
|
+
const existing = React13.useContext(JellyMascotContext);
|
|
4865
5144
|
if (existing) return /* @__PURE__ */ jsx35(JellyMascotFace, { size, className });
|
|
4866
5145
|
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsx35(JellyMascotFace, { size, className }) });
|
|
4867
5146
|
}
|
|
@@ -4879,7 +5158,7 @@ function JellyEmpty({
|
|
|
4879
5158
|
className,
|
|
4880
5159
|
...config
|
|
4881
5160
|
}) {
|
|
4882
|
-
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsxs19(Empty, { className:
|
|
5161
|
+
return /* @__PURE__ */ jsx35(JellyMascotProvider, { ...config, children: /* @__PURE__ */ jsxs19(Empty, { className: cn34("gap-4", className), children: [
|
|
4883
5162
|
/* @__PURE__ */ jsxs19(EmptyHeader, { className: "gap-2", children: [
|
|
4884
5163
|
/* @__PURE__ */ jsx35(JellyMascotFace, { size }),
|
|
4885
5164
|
title ? /* @__PURE__ */ jsx35(EmptyTitle, { className: "text-base font-semibold sm:text-lg", children: title }) : null,
|
|
@@ -4890,13 +5169,14 @@ function JellyEmpty({
|
|
|
4890
5169
|
}
|
|
4891
5170
|
|
|
4892
5171
|
// src/ui/kbd.tsx
|
|
5172
|
+
import { cn as cn35 } from "cn";
|
|
4893
5173
|
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
4894
5174
|
function Kbd({ className, ...props }) {
|
|
4895
5175
|
return /* @__PURE__ */ jsx36(
|
|
4896
5176
|
"kbd",
|
|
4897
5177
|
{
|
|
4898
5178
|
"data-slot": "kbd",
|
|
4899
|
-
className:
|
|
5179
|
+
className: cn35(
|
|
4900
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",
|
|
4901
5181
|
className
|
|
4902
5182
|
),
|
|
@@ -4909,20 +5189,21 @@ function KbdGroup({ className, ...props }) {
|
|
|
4909
5189
|
"kbd",
|
|
4910
5190
|
{
|
|
4911
5191
|
"data-slot": "kbd-group",
|
|
4912
|
-
className:
|
|
5192
|
+
className: cn35("inline-flex items-center gap-1", className),
|
|
4913
5193
|
...props
|
|
4914
5194
|
}
|
|
4915
5195
|
);
|
|
4916
5196
|
}
|
|
4917
5197
|
|
|
4918
5198
|
// src/ui/message.tsx
|
|
5199
|
+
import { cn as cn36 } from "cn";
|
|
4919
5200
|
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
4920
5201
|
function MessageGroup({ className, ...props }) {
|
|
4921
5202
|
return /* @__PURE__ */ jsx37(
|
|
4922
5203
|
"div",
|
|
4923
5204
|
{
|
|
4924
5205
|
"data-slot": "message-group",
|
|
4925
|
-
className:
|
|
5206
|
+
className: cn36("flex min-w-0 flex-col gap-2", className),
|
|
4926
5207
|
...props
|
|
4927
5208
|
}
|
|
4928
5209
|
);
|
|
@@ -4937,7 +5218,7 @@ function Message({
|
|
|
4937
5218
|
{
|
|
4938
5219
|
"data-slot": "message",
|
|
4939
5220
|
"data-align": align,
|
|
4940
|
-
className:
|
|
5221
|
+
className: cn36(
|
|
4941
5222
|
"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse",
|
|
4942
5223
|
className
|
|
4943
5224
|
),
|
|
@@ -4950,7 +5231,7 @@ function MessageAvatar({ className, ...props }) {
|
|
|
4950
5231
|
"div",
|
|
4951
5232
|
{
|
|
4952
5233
|
"data-slot": "message-avatar",
|
|
4953
|
-
className:
|
|
5234
|
+
className: cn36(
|
|
4954
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",
|
|
4955
5236
|
className
|
|
4956
5237
|
),
|
|
@@ -4963,7 +5244,7 @@ function MessageContent({ className, ...props }) {
|
|
|
4963
5244
|
"div",
|
|
4964
5245
|
{
|
|
4965
5246
|
"data-slot": "message-content",
|
|
4966
|
-
className:
|
|
5247
|
+
className: cn36(
|
|
4967
5248
|
"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end",
|
|
4968
5249
|
className
|
|
4969
5250
|
),
|
|
@@ -4976,7 +5257,7 @@ function MessageHeader({ className, ...props }) {
|
|
|
4976
5257
|
"div",
|
|
4977
5258
|
{
|
|
4978
5259
|
"data-slot": "message-header",
|
|
4979
|
-
className:
|
|
5260
|
+
className: cn36(
|
|
4980
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",
|
|
4981
5262
|
className
|
|
4982
5263
|
),
|
|
@@ -4989,7 +5270,7 @@ function MessageFooter({ className, ...props }) {
|
|
|
4989
5270
|
"div",
|
|
4990
5271
|
{
|
|
4991
5272
|
"data-slot": "message-footer",
|
|
4992
|
-
className:
|
|
5273
|
+
className: cn36(
|
|
4993
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",
|
|
4994
5275
|
className
|
|
4995
5276
|
),
|
|
@@ -5005,6 +5286,7 @@ import {
|
|
|
5005
5286
|
useMessageScrollerScrollable,
|
|
5006
5287
|
useMessageScrollerVisibility
|
|
5007
5288
|
} from "@shadcn/react/message-scroller";
|
|
5289
|
+
import { cn as cn37 } from "cn";
|
|
5008
5290
|
import { ArrowDownIcon } from "lucide-react";
|
|
5009
5291
|
import { Fragment as Fragment2, jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5010
5292
|
function MessageScrollerProvider(props) {
|
|
@@ -5018,7 +5300,7 @@ function MessageScroller({
|
|
|
5018
5300
|
MessageScrollerPrimitive.Root,
|
|
5019
5301
|
{
|
|
5020
5302
|
"data-slot": "message-scroller",
|
|
5021
|
-
className:
|
|
5303
|
+
className: cn37(
|
|
5022
5304
|
"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",
|
|
5023
5305
|
className
|
|
5024
5306
|
),
|
|
@@ -5034,7 +5316,7 @@ function MessageScrollerViewport({
|
|
|
5034
5316
|
MessageScrollerPrimitive.Viewport,
|
|
5035
5317
|
{
|
|
5036
5318
|
"data-slot": "message-scroller-viewport",
|
|
5037
|
-
className:
|
|
5319
|
+
className: cn37(
|
|
5038
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",
|
|
5039
5321
|
className
|
|
5040
5322
|
),
|
|
@@ -5050,7 +5332,7 @@ function MessageScrollerContent({
|
|
|
5050
5332
|
MessageScrollerPrimitive.Content,
|
|
5051
5333
|
{
|
|
5052
5334
|
"data-slot": "message-scroller-content",
|
|
5053
|
-
className:
|
|
5335
|
+
className: cn37("flex h-max min-h-full flex-col gap-6", className),
|
|
5054
5336
|
...props
|
|
5055
5337
|
}
|
|
5056
5338
|
);
|
|
@@ -5065,7 +5347,7 @@ function MessageScrollerItem({
|
|
|
5065
5347
|
{
|
|
5066
5348
|
"data-slot": "message-scroller-item",
|
|
5067
5349
|
scrollAnchor,
|
|
5068
|
-
className:
|
|
5350
|
+
className: cn37(
|
|
5069
5351
|
"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",
|
|
5070
5352
|
className
|
|
5071
5353
|
),
|
|
@@ -5090,7 +5372,7 @@ function MessageScrollerButton({
|
|
|
5090
5372
|
"data-variant": variant,
|
|
5091
5373
|
"data-size": size,
|
|
5092
5374
|
direction,
|
|
5093
|
-
className:
|
|
5375
|
+
className: cn37(
|
|
5094
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",
|
|
5095
5377
|
className
|
|
5096
5378
|
),
|
|
@@ -5105,7 +5387,7 @@ function MessageScrollerButton({
|
|
|
5105
5387
|
}
|
|
5106
5388
|
|
|
5107
5389
|
// src/ui/otp.tsx
|
|
5108
|
-
import {
|
|
5390
|
+
import { cn as cn38 } from "cn";
|
|
5109
5391
|
import {
|
|
5110
5392
|
AnimatePresence as AnimatePresence2,
|
|
5111
5393
|
animate,
|
|
@@ -5113,7 +5395,6 @@ import {
|
|
|
5113
5395
|
useReducedMotion
|
|
5114
5396
|
} from "motion/react";
|
|
5115
5397
|
import { Fragment as Fragment3, useEffect as useEffect7, useId as useId2, useRef as useRef4, useState as useState9 } from "react";
|
|
5116
|
-
import { twMerge as twMerge2 } from "tailwind-merge";
|
|
5117
5398
|
import { jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5118
5399
|
var EASE_OUT = [0.16, 1, 0.3, 1];
|
|
5119
5400
|
var EASE_IN_OUT = [0.77, 0, 0.175, 1];
|
|
@@ -5148,9 +5429,6 @@ var SPRING_MOUSE = {
|
|
|
5148
5429
|
damping: 15,
|
|
5149
5430
|
mass: 0.3
|
|
5150
5431
|
};
|
|
5151
|
-
function otpCn(...inputs) {
|
|
5152
|
-
return twMerge2(clsx2(inputs));
|
|
5153
|
-
}
|
|
5154
5432
|
function OTPInput2({
|
|
5155
5433
|
length = 6,
|
|
5156
5434
|
value: controlledValue,
|
|
@@ -5282,7 +5560,7 @@ function OTPInput2({
|
|
|
5282
5560
|
const showSuccess = status === "success";
|
|
5283
5561
|
const activeIndex = focused ? active : -1;
|
|
5284
5562
|
const message = showSuccess ? successMessage : status === "error" ? errorMessage : hint;
|
|
5285
|
-
return /* @__PURE__ */ jsxs21("div", { className:
|
|
5563
|
+
return /* @__PURE__ */ jsxs21("div", { className: cn38("inline-flex flex-col gap-2", className), children: [
|
|
5286
5564
|
label ? /* @__PURE__ */ jsx39(
|
|
5287
5565
|
"label",
|
|
5288
5566
|
{
|
|
@@ -5341,7 +5619,7 @@ function OTPInput2({
|
|
|
5341
5619
|
"data-otp-slot": true,
|
|
5342
5620
|
"data-active": isActive,
|
|
5343
5621
|
"data-filled": char !== "",
|
|
5344
|
-
className:
|
|
5622
|
+
className: cn38(
|
|
5345
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",
|
|
5346
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",
|
|
5347
5625
|
isActive && !showSuccess && status !== "error" && "border-brand border-2 ring-0",
|
|
@@ -5358,7 +5636,7 @@ function OTPInput2({
|
|
|
5358
5636
|
repeat: Number.POSITIVE_INFINITY,
|
|
5359
5637
|
ease: "linear"
|
|
5360
5638
|
},
|
|
5361
|
-
className:
|
|
5639
|
+
className: cn38(
|
|
5362
5640
|
"bg-brand pointer-events-none absolute top-1/2 h-6 w-px -translate-y-1/2",
|
|
5363
5641
|
char ? "right-3" : "left-1/2 -translate-x-1/2"
|
|
5364
5642
|
)
|
|
@@ -5481,7 +5759,7 @@ function OTPInput2({
|
|
|
5481
5759
|
"p",
|
|
5482
5760
|
{
|
|
5483
5761
|
"aria-live": "polite",
|
|
5484
|
-
className:
|
|
5762
|
+
className: cn38(
|
|
5485
5763
|
"text-sm",
|
|
5486
5764
|
showSuccess ? "text-emerald-500" : status === "error" ? "text-destructive" : "text-muted-foreground"
|
|
5487
5765
|
),
|
|
@@ -5500,6 +5778,7 @@ function toSlots(raw, length) {
|
|
|
5500
5778
|
|
|
5501
5779
|
// src/ui/popover.tsx
|
|
5502
5780
|
import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
|
|
5781
|
+
import { cn as cn39 } from "cn";
|
|
5503
5782
|
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
5504
5783
|
function Popover({ ...props }) {
|
|
5505
5784
|
return /* @__PURE__ */ jsx40(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
@@ -5527,7 +5806,7 @@ function PopoverContent({
|
|
|
5527
5806
|
PopoverPrimitive.Popup,
|
|
5528
5807
|
{
|
|
5529
5808
|
"data-slot": "popover-content",
|
|
5530
|
-
className:
|
|
5809
|
+
className: cn39(
|
|
5531
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",
|
|
5532
5811
|
className
|
|
5533
5812
|
),
|
|
@@ -5542,7 +5821,7 @@ function PopoverHeader({ className, ...props }) {
|
|
|
5542
5821
|
"div",
|
|
5543
5822
|
{
|
|
5544
5823
|
"data-slot": "popover-header",
|
|
5545
|
-
className:
|
|
5824
|
+
className: cn39("flex flex-col gap-0.5 text-sm", className),
|
|
5546
5825
|
...props
|
|
5547
5826
|
}
|
|
5548
5827
|
);
|
|
@@ -5552,7 +5831,7 @@ function PopoverTitle({ className, ...props }) {
|
|
|
5552
5831
|
PopoverPrimitive.Title,
|
|
5553
5832
|
{
|
|
5554
5833
|
"data-slot": "popover-title",
|
|
5555
|
-
className:
|
|
5834
|
+
className: cn39("font-medium", className),
|
|
5556
5835
|
...props
|
|
5557
5836
|
}
|
|
5558
5837
|
);
|
|
@@ -5565,7 +5844,7 @@ function PopoverDescription({
|
|
|
5565
5844
|
PopoverPrimitive.Description,
|
|
5566
5845
|
{
|
|
5567
5846
|
"data-slot": "popover-description",
|
|
5568
|
-
className:
|
|
5847
|
+
className: cn39("text-muted-foreground", className),
|
|
5569
5848
|
...props
|
|
5570
5849
|
}
|
|
5571
5850
|
);
|
|
@@ -5574,10 +5853,10 @@ function PopoverDescription({
|
|
|
5574
5853
|
// src/ui/quantity.tsx
|
|
5575
5854
|
import { NumberField } from "@base-ui/react/number-field";
|
|
5576
5855
|
import { Minus, Plus } from "@gravity-ui/icons";
|
|
5577
|
-
import * as
|
|
5856
|
+
import * as React14 from "react";
|
|
5578
5857
|
import { jsx as jsx41, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5579
|
-
var QuantityInput =
|
|
5580
|
-
const id =
|
|
5858
|
+
var QuantityInput = React14.forwardRef(function QuantityInput2({ ...props }, ref) {
|
|
5859
|
+
const id = React14.useId();
|
|
5581
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: [
|
|
5582
5861
|
/* @__PURE__ */ jsx41(
|
|
5583
5862
|
NumberField.Decrement,
|
|
@@ -5615,13 +5894,14 @@ var QuantityInput = React13.forwardRef(function QuantityInput2({ ...props }, ref
|
|
|
5615
5894
|
// src/ui/radio-group.tsx
|
|
5616
5895
|
import { Radio as RadioPrimitive } from "@base-ui/react/radio";
|
|
5617
5896
|
import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
|
|
5897
|
+
import { cn as cn40 } from "cn";
|
|
5618
5898
|
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
5619
5899
|
function RadioGroup({ className, ...props }) {
|
|
5620
5900
|
return /* @__PURE__ */ jsx42(
|
|
5621
5901
|
RadioGroupPrimitive,
|
|
5622
5902
|
{
|
|
5623
5903
|
"data-slot": "radio-group",
|
|
5624
|
-
className:
|
|
5904
|
+
className: cn40("grid w-full gap-2", className),
|
|
5625
5905
|
...props
|
|
5626
5906
|
}
|
|
5627
5907
|
);
|
|
@@ -5631,7 +5911,7 @@ function RadioGroupItem({ className, ...props }) {
|
|
|
5631
5911
|
RadioPrimitive.Root,
|
|
5632
5912
|
{
|
|
5633
5913
|
"data-slot": "radio-group-item",
|
|
5634
|
-
className:
|
|
5914
|
+
className: cn40(
|
|
5635
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",
|
|
5636
5916
|
className
|
|
5637
5917
|
),
|
|
@@ -5653,7 +5933,7 @@ import { useRender as useRender5 } from "@base-ui/react/use-render";
|
|
|
5653
5933
|
import { cva as cva9 } from "class-variance-authority";
|
|
5654
5934
|
import {
|
|
5655
5935
|
createContext as createContext5,
|
|
5656
|
-
useCallback as
|
|
5936
|
+
useCallback as useCallback6,
|
|
5657
5937
|
useContext as useContext6,
|
|
5658
5938
|
useEffect as useEffect8,
|
|
5659
5939
|
useId as useId4,
|
|
@@ -5664,6 +5944,7 @@ import {
|
|
|
5664
5944
|
|
|
5665
5945
|
// src/ui/tooltip.tsx
|
|
5666
5946
|
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
5947
|
+
import { cn as cn41 } from "cn";
|
|
5667
5948
|
import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
5668
5949
|
function TooltipProvider({
|
|
5669
5950
|
delay = 0,
|
|
@@ -5705,7 +5986,7 @@ function TooltipContent({
|
|
|
5705
5986
|
TooltipPrimitive.Popup,
|
|
5706
5987
|
{
|
|
5707
5988
|
"data-slot": "tooltip-content",
|
|
5708
|
-
className:
|
|
5989
|
+
className: cn41(
|
|
5709
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",
|
|
5710
5991
|
className
|
|
5711
5992
|
),
|
|
@@ -5721,6 +6002,7 @@ function TooltipContent({
|
|
|
5721
6002
|
}
|
|
5722
6003
|
|
|
5723
6004
|
// src/ui/reui/filters.tsx
|
|
6005
|
+
import { cn as cn42 } from "cn";
|
|
5724
6006
|
import { AlertCircleIcon, CheckIcon as CheckIcon2, PlusIcon, XIcon } from "lucide-react";
|
|
5725
6007
|
import { Fragment as Fragment4, jsx as jsx44, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5726
6008
|
var DEFAULT_I18N = {
|
|
@@ -5891,7 +6173,7 @@ function FilterInput({
|
|
|
5891
6173
|
return /* @__PURE__ */ jsxs24(
|
|
5892
6174
|
InputGroup,
|
|
5893
6175
|
{
|
|
5894
|
-
className:
|
|
6176
|
+
className: cn42(
|
|
5895
6177
|
"w-36",
|
|
5896
6178
|
// Height follows each style's own control ladder. `default` sets no
|
|
5897
6179
|
// height on purpose so the style's `.cn-input-group` applies (h-8 nova,
|
|
@@ -5915,7 +6197,7 @@ function FilterInput({
|
|
|
5915
6197
|
"aria-describedby": !isValid && validationMessage ? `${field?.key || "input"}-error` : void 0,
|
|
5916
6198
|
onBlur: handleBlur,
|
|
5917
6199
|
onKeyDown: handleKeyDown,
|
|
5918
|
-
className:
|
|
6200
|
+
className: cn42(
|
|
5919
6201
|
context.size == "sm" && "h-7! text-xs",
|
|
5920
6202
|
context.size == "lg" && "h-9!"
|
|
5921
6203
|
),
|
|
@@ -6025,7 +6307,7 @@ function useFieldOptions(field, searchInput, enabled) {
|
|
|
6025
6307
|
cancelled = true;
|
|
6026
6308
|
};
|
|
6027
6309
|
}, [isAsync, enabled, debouncedQuery]);
|
|
6028
|
-
const resolveSelected =
|
|
6310
|
+
const resolveSelected = useCallback6(
|
|
6029
6311
|
(values) => {
|
|
6030
6312
|
const cache = getFieldOptionCache(field);
|
|
6031
6313
|
return values.map(
|
|
@@ -6127,7 +6409,7 @@ function FilterOperatorDropdown({
|
|
|
6127
6409
|
DropdownMenuItem,
|
|
6128
6410
|
{
|
|
6129
6411
|
onClick: () => onChange(op.value),
|
|
6130
|
-
className:
|
|
6412
|
+
className: cn42(
|
|
6131
6413
|
"flex items-center justify-between data-highlighted:bg-accent data-highlighted:text-accent-foreground"
|
|
6132
6414
|
),
|
|
6133
6415
|
children: [
|
|
@@ -6135,7 +6417,7 @@ function FilterOperatorDropdown({
|
|
|
6135
6417
|
/* @__PURE__ */ jsx44(
|
|
6136
6418
|
CheckIcon2,
|
|
6137
6419
|
{
|
|
6138
|
-
className:
|
|
6420
|
+
className: cn42(
|
|
6139
6421
|
"ms-auto text-primary",
|
|
6140
6422
|
op.value === operator ? "opacity-100" : "opacity-0"
|
|
6141
6423
|
)
|
|
@@ -6225,7 +6507,7 @@ function SelectOptionsPopover({
|
|
|
6225
6507
|
"data-highlighted": isHighlighted || void 0,
|
|
6226
6508
|
onMouseEnter: () => setHighlightedIndex(overallIndex),
|
|
6227
6509
|
checked: isSelected,
|
|
6228
|
-
className:
|
|
6510
|
+
className: cn42(
|
|
6229
6511
|
"data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
6230
6512
|
option.className
|
|
6231
6513
|
),
|
|
@@ -6256,7 +6538,7 @@ function SelectOptionsPopover({
|
|
|
6256
6538
|
placeholder: context.i18n.placeholders.searchField(
|
|
6257
6539
|
field.label || ""
|
|
6258
6540
|
),
|
|
6259
|
-
className:
|
|
6541
|
+
className: cn42(
|
|
6260
6542
|
"h-8 rounded-none border-0 border-input bg-transparent! px-2 text-sm shadow-none",
|
|
6261
6543
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6262
6544
|
open && "placeholder:text-foreground"
|
|
@@ -6361,7 +6643,7 @@ function SelectOptionsPopover({
|
|
|
6361
6643
|
DropdownMenuContent,
|
|
6362
6644
|
{
|
|
6363
6645
|
align: "start",
|
|
6364
|
-
className:
|
|
6646
|
+
className: cn42("w-50 px-0", field.className),
|
|
6365
6647
|
children: renderMenuContent()
|
|
6366
6648
|
}
|
|
6367
6649
|
)
|
|
@@ -6392,7 +6674,7 @@ function FilterValueSelector({
|
|
|
6392
6674
|
placeholder: field.placeholder,
|
|
6393
6675
|
pattern: field.pattern,
|
|
6394
6676
|
field,
|
|
6395
|
-
className:
|
|
6677
|
+
className: cn42("w-36", field.className),
|
|
6396
6678
|
autoFocus
|
|
6397
6679
|
}
|
|
6398
6680
|
);
|
|
@@ -6409,7 +6691,7 @@ var FiltersContent = ({
|
|
|
6409
6691
|
}) => {
|
|
6410
6692
|
const context = useFilterContext();
|
|
6411
6693
|
const fieldsMap = useMemo4(() => getFieldsMap(fields), [fields]);
|
|
6412
|
-
const updateFilter =
|
|
6694
|
+
const updateFilter = useCallback6(
|
|
6413
6695
|
(filterId, updates) => {
|
|
6414
6696
|
onChange(
|
|
6415
6697
|
filters.map((filter) => {
|
|
@@ -6426,7 +6708,7 @@ var FiltersContent = ({
|
|
|
6426
6708
|
},
|
|
6427
6709
|
[filters, onChange]
|
|
6428
6710
|
);
|
|
6429
|
-
const removeFilter =
|
|
6711
|
+
const removeFilter = useCallback6(
|
|
6430
6712
|
(filterId) => {
|
|
6431
6713
|
onChange(filters.filter((filter) => filter.id !== filterId));
|
|
6432
6714
|
},
|
|
@@ -6435,7 +6717,7 @@ var FiltersContent = ({
|
|
|
6435
6717
|
return /* @__PURE__ */ jsx44(
|
|
6436
6718
|
"div",
|
|
6437
6719
|
{
|
|
6438
|
-
className:
|
|
6720
|
+
className: cn42(
|
|
6439
6721
|
filtersContainerVariants({
|
|
6440
6722
|
variant: context.variant,
|
|
6441
6723
|
size: context.size
|
|
@@ -6560,7 +6842,7 @@ function FilterSubmenuContent({
|
|
|
6560
6842
|
"data-highlighted": isHighlighted || void 0,
|
|
6561
6843
|
onMouseEnter: () => setHighlightedIndex(index),
|
|
6562
6844
|
checked: isSelected,
|
|
6563
|
-
className:
|
|
6845
|
+
className: cn42(
|
|
6564
6846
|
"data-highlighted:bg-accent data-highlighted:text-accent-foreground",
|
|
6565
6847
|
option.className
|
|
6566
6848
|
),
|
|
@@ -6594,7 +6876,7 @@ function FilterSubmenuContent({
|
|
|
6594
6876
|
"aria-controls": `${baseId}-listbox`,
|
|
6595
6877
|
"aria-activedescendant": highlightedIndex >= 0 ? `${baseId}-item-${highlightedIndex}` : void 0,
|
|
6596
6878
|
placeholder: i18n.placeholders.searchField(field.label || ""),
|
|
6597
|
-
className:
|
|
6879
|
+
className: cn42(
|
|
6598
6880
|
"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none",
|
|
6599
6881
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6600
6882
|
isActive && "placeholder:text-foreground"
|
|
@@ -6783,7 +7065,7 @@ function Filters({
|
|
|
6783
7065
|
[i18n]
|
|
6784
7066
|
);
|
|
6785
7067
|
const fieldsMap = useMemo4(() => getFieldsMap(fields), [fields]);
|
|
6786
|
-
const updateFilter =
|
|
7068
|
+
const updateFilter = useCallback6(
|
|
6787
7069
|
(filterId, updates) => {
|
|
6788
7070
|
onChange(
|
|
6789
7071
|
filters.map((filter) => {
|
|
@@ -6800,13 +7082,13 @@ function Filters({
|
|
|
6800
7082
|
},
|
|
6801
7083
|
[filters, onChange]
|
|
6802
7084
|
);
|
|
6803
|
-
const removeFilter =
|
|
7085
|
+
const removeFilter = useCallback6(
|
|
6804
7086
|
(filterId) => {
|
|
6805
7087
|
onChange(filters.filter((filter) => filter.id !== filterId));
|
|
6806
7088
|
},
|
|
6807
7089
|
[filters, onChange]
|
|
6808
7090
|
);
|
|
6809
|
-
const addFilter =
|
|
7091
|
+
const addFilter = useCallback6(
|
|
6810
7092
|
(fieldKey) => {
|
|
6811
7093
|
const field = fieldsMap[fieldKey];
|
|
6812
7094
|
if (field && field.key) {
|
|
@@ -6865,7 +7147,7 @@ function Filters({
|
|
|
6865
7147
|
return /* @__PURE__ */ jsx44(FilterContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs24(
|
|
6866
7148
|
"div",
|
|
6867
7149
|
{
|
|
6868
|
-
className:
|
|
7150
|
+
className: cn42(filtersContainerVariants({ variant, size }), className),
|
|
6869
7151
|
children: [
|
|
6870
7152
|
selectableFields.length > 0 && /* @__PURE__ */ jsxs24(
|
|
6871
7153
|
DropdownMenu,
|
|
@@ -6885,7 +7167,7 @@ function Filters({
|
|
|
6885
7167
|
/* @__PURE__ */ jsxs24(
|
|
6886
7168
|
DropdownMenuContent,
|
|
6887
7169
|
{
|
|
6888
|
-
className:
|
|
7170
|
+
className: cn42("w-55", menuPopupClassName),
|
|
6889
7171
|
align: "start",
|
|
6890
7172
|
children: [
|
|
6891
7173
|
showSearchInput && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
@@ -6898,7 +7180,7 @@ function Filters({
|
|
|
6898
7180
|
"aria-controls": `${rootId}-listbox`,
|
|
6899
7181
|
"aria-activedescendant": highlightedIndex >= 0 ? `${rootId}-item-${highlightedIndex}` : void 0,
|
|
6900
7182
|
placeholder: mergedI18n.searchFields,
|
|
6901
|
-
className:
|
|
7183
|
+
className: cn42(
|
|
6902
7184
|
"h-8 rounded-none border-0 bg-transparent! px-2 text-sm shadow-none",
|
|
6903
7185
|
"focus-visible:border-border focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
6904
7186
|
activeMenu === "root" && "placeholder:text-foreground"
|
|
@@ -7181,6 +7463,7 @@ var createFilterGroup = (id, label, fields, initialFilters = []) => ({
|
|
|
7181
7463
|
|
|
7182
7464
|
// src/ui/select.tsx
|
|
7183
7465
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
7466
|
+
import { cn as cn43 } from "cn";
|
|
7184
7467
|
import { Check as Check2, ChevronDown as ChevronDown3, ChevronUp as ChevronUp2 } from "@gravity-ui/icons";
|
|
7185
7468
|
import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
7186
7469
|
var Select = SelectPrimitive.Root;
|
|
@@ -7189,7 +7472,7 @@ function SelectGroup({ className, ...props }) {
|
|
|
7189
7472
|
SelectPrimitive.Group,
|
|
7190
7473
|
{
|
|
7191
7474
|
"data-slot": "select-group",
|
|
7192
|
-
className:
|
|
7475
|
+
className: cn43("scroll-my-1 p-1", className),
|
|
7193
7476
|
...props
|
|
7194
7477
|
}
|
|
7195
7478
|
);
|
|
@@ -7199,7 +7482,7 @@ function SelectValue({ className, ...props }) {
|
|
|
7199
7482
|
SelectPrimitive.Value,
|
|
7200
7483
|
{
|
|
7201
7484
|
"data-slot": "select-value",
|
|
7202
|
-
className:
|
|
7485
|
+
className: cn43("flex flex-1 text-left", className),
|
|
7203
7486
|
...props
|
|
7204
7487
|
}
|
|
7205
7488
|
);
|
|
@@ -7215,7 +7498,7 @@ function SelectTrigger({
|
|
|
7215
7498
|
{
|
|
7216
7499
|
"data-slot": "select-trigger",
|
|
7217
7500
|
"data-size": size,
|
|
7218
|
-
className:
|
|
7501
|
+
className: cn43(
|
|
7219
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",
|
|
7220
7503
|
className
|
|
7221
7504
|
),
|
|
@@ -7256,7 +7539,7 @@ function SelectContent({
|
|
|
7256
7539
|
{
|
|
7257
7540
|
"data-slot": "select-content",
|
|
7258
7541
|
"data-align-trigger": alignItemWithTrigger,
|
|
7259
|
-
className:
|
|
7542
|
+
className: cn43(
|
|
7260
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",
|
|
7261
7544
|
className
|
|
7262
7545
|
),
|
|
@@ -7279,7 +7562,7 @@ function SelectLabel({
|
|
|
7279
7562
|
SelectPrimitive.GroupLabel,
|
|
7280
7563
|
{
|
|
7281
7564
|
"data-slot": "select-label",
|
|
7282
|
-
className:
|
|
7565
|
+
className: cn43("px-1.5 py-1 text-xs text-muted-foreground", className),
|
|
7283
7566
|
...props
|
|
7284
7567
|
}
|
|
7285
7568
|
);
|
|
@@ -7293,7 +7576,7 @@ function SelectItem({
|
|
|
7293
7576
|
SelectPrimitive.Item,
|
|
7294
7577
|
{
|
|
7295
7578
|
"data-slot": "select-item",
|
|
7296
|
-
className:
|
|
7579
|
+
className: cn43(
|
|
7297
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",
|
|
7298
7581
|
className
|
|
7299
7582
|
),
|
|
@@ -7319,7 +7602,7 @@ function SelectSeparator({
|
|
|
7319
7602
|
SelectPrimitive.Separator,
|
|
7320
7603
|
{
|
|
7321
7604
|
"data-slot": "select-separator",
|
|
7322
|
-
className:
|
|
7605
|
+
className: cn43("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
7323
7606
|
...props
|
|
7324
7607
|
}
|
|
7325
7608
|
);
|
|
@@ -7332,7 +7615,7 @@ function SelectScrollUpButton({
|
|
|
7332
7615
|
SelectPrimitive.ScrollUpArrow,
|
|
7333
7616
|
{
|
|
7334
7617
|
"data-slot": "select-scroll-up-button",
|
|
7335
|
-
className:
|
|
7618
|
+
className: cn43(
|
|
7336
7619
|
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
7337
7620
|
className
|
|
7338
7621
|
),
|
|
@@ -7349,7 +7632,7 @@ function SelectScrollDownButton({
|
|
|
7349
7632
|
SelectPrimitive.ScrollDownArrow,
|
|
7350
7633
|
{
|
|
7351
7634
|
"data-slot": "select-scroll-down-button",
|
|
7352
|
-
className:
|
|
7635
|
+
className: cn43(
|
|
7353
7636
|
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-background py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
7354
7637
|
className
|
|
7355
7638
|
),
|
|
@@ -7364,6 +7647,7 @@ import {
|
|
|
7364
7647
|
forwardRef as forwardRef4,
|
|
7365
7648
|
useLayoutEffect
|
|
7366
7649
|
} from "react";
|
|
7650
|
+
import { cn as cn44 } from "cn";
|
|
7367
7651
|
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
7368
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)]";
|
|
7369
7653
|
var STYLE_ID = "iconiq-skeleton-styles";
|
|
@@ -7488,7 +7772,7 @@ var Skeleton = forwardRef4(function Skeleton2({
|
|
|
7488
7772
|
return /* @__PURE__ */ jsx46(
|
|
7489
7773
|
"div",
|
|
7490
7774
|
{
|
|
7491
|
-
className:
|
|
7775
|
+
className: cn44(
|
|
7492
7776
|
componentThemeClassName,
|
|
7493
7777
|
"iconiq-skeleton-surface relative block h-4 w-full overflow-hidden",
|
|
7494
7778
|
showFade && "iconiq-skeleton-fade-root",
|
|
@@ -7517,7 +7801,7 @@ function SkeletonAvatar({
|
|
|
7517
7801
|
return /* @__PURE__ */ jsx46(
|
|
7518
7802
|
Skeleton,
|
|
7519
7803
|
{
|
|
7520
|
-
className:
|
|
7804
|
+
className: cn44("size-10", className),
|
|
7521
7805
|
decorative: true,
|
|
7522
7806
|
rounded: "full",
|
|
7523
7807
|
...props
|
|
@@ -7525,7 +7809,7 @@ function SkeletonAvatar({
|
|
|
7525
7809
|
);
|
|
7526
7810
|
}
|
|
7527
7811
|
function SkeletonText({ className, ...props }) {
|
|
7528
|
-
return /* @__PURE__ */ jsx46(Skeleton, { className:
|
|
7812
|
+
return /* @__PURE__ */ jsx46(Skeleton, { className: cn44("h-3", className), decorative: true, ...props });
|
|
7529
7813
|
}
|
|
7530
7814
|
function SkeletonButton({
|
|
7531
7815
|
className,
|
|
@@ -7534,7 +7818,7 @@ function SkeletonButton({
|
|
|
7534
7818
|
return /* @__PURE__ */ jsx46(
|
|
7535
7819
|
Skeleton,
|
|
7536
7820
|
{
|
|
7537
|
-
className:
|
|
7821
|
+
className: cn44("h-9 w-24", className),
|
|
7538
7822
|
decorative: true,
|
|
7539
7823
|
rounded: "lg",
|
|
7540
7824
|
...props
|
|
@@ -7592,44 +7876,7 @@ import {
|
|
|
7592
7876
|
import { CSS } from "@dnd-kit/utilities";
|
|
7593
7877
|
import * as React16 from "react";
|
|
7594
7878
|
import * as ReactDOM from "react-dom";
|
|
7595
|
-
|
|
7596
|
-
// src/lib/compose-refs.ts
|
|
7597
|
-
import * as React14 from "react";
|
|
7598
|
-
function setRef(ref, value) {
|
|
7599
|
-
if (typeof ref === "function") {
|
|
7600
|
-
return ref(value);
|
|
7601
|
-
}
|
|
7602
|
-
if (ref !== null && ref !== void 0) {
|
|
7603
|
-
ref.current = value;
|
|
7604
|
-
}
|
|
7605
|
-
}
|
|
7606
|
-
function composeRefs(...refs) {
|
|
7607
|
-
return (node) => {
|
|
7608
|
-
let hasCleanup = false;
|
|
7609
|
-
const cleanups = refs.map((ref) => {
|
|
7610
|
-
const cleanup = setRef(ref, node);
|
|
7611
|
-
if (!hasCleanup && typeof cleanup === "function") {
|
|
7612
|
-
hasCleanup = true;
|
|
7613
|
-
}
|
|
7614
|
-
return cleanup;
|
|
7615
|
-
});
|
|
7616
|
-
if (hasCleanup) {
|
|
7617
|
-
return () => {
|
|
7618
|
-
for (let i = 0; i < cleanups.length; i++) {
|
|
7619
|
-
const cleanup = cleanups[i];
|
|
7620
|
-
if (typeof cleanup === "function") {
|
|
7621
|
-
cleanup();
|
|
7622
|
-
} else {
|
|
7623
|
-
setRef(refs[i], null);
|
|
7624
|
-
}
|
|
7625
|
-
}
|
|
7626
|
-
};
|
|
7627
|
-
}
|
|
7628
|
-
};
|
|
7629
|
-
}
|
|
7630
|
-
function useComposedRefs(...refs) {
|
|
7631
|
-
return React14.useCallback(composeRefs(...refs), refs);
|
|
7632
|
-
}
|
|
7879
|
+
import { cn as cn45 } from "cn";
|
|
7633
7880
|
|
|
7634
7881
|
// src/hooks/use-isomorphic-layout-effect.ts
|
|
7635
7882
|
import * as React15 from "react";
|
|
@@ -7958,7 +8205,7 @@ function SortableItem(props) {
|
|
|
7958
8205
|
id,
|
|
7959
8206
|
ref: composedRef,
|
|
7960
8207
|
style: composedStyle,
|
|
7961
|
-
className:
|
|
8208
|
+
className: cn45(
|
|
7962
8209
|
"focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden",
|
|
7963
8210
|
{
|
|
7964
8211
|
"touch-none select-none": asHandle,
|
|
@@ -8006,7 +8253,7 @@ function SortableItemHandle(props) {
|
|
|
8006
8253
|
"aria-controls": itemContext.id,
|
|
8007
8254
|
ref: composedRef,
|
|
8008
8255
|
disabled: isDisabled,
|
|
8009
|
-
className:
|
|
8256
|
+
className: cn45(
|
|
8010
8257
|
"select-none disabled:pointer-events-none disabled:opacity-50",
|
|
8011
8258
|
context.flatCursor ? "cursor-default" : "cursor-grab data-dragging:cursor-grabbing",
|
|
8012
8259
|
className
|
|
@@ -8046,7 +8293,7 @@ function SortableOverlay(props) {
|
|
|
8046
8293
|
{
|
|
8047
8294
|
dropAnimation,
|
|
8048
8295
|
modifiers: context.modifiers,
|
|
8049
|
-
className:
|
|
8296
|
+
className: cn45(!context.flatCursor && "cursor-grabbing"),
|
|
8050
8297
|
...overlayProps,
|
|
8051
8298
|
children: /* @__PURE__ */ jsx48(SortableOverlayContext.Provider, { value: true, children: context.activeId ? typeof children === "function" ? children({ value: context.activeId }) : children : null })
|
|
8052
8299
|
}
|
|
@@ -8057,6 +8304,7 @@ function SortableOverlay(props) {
|
|
|
8057
8304
|
|
|
8058
8305
|
// src/ui/switch.tsx
|
|
8059
8306
|
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
8307
|
+
import { cn as cn46 } from "cn";
|
|
8060
8308
|
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
8061
8309
|
function Switch({
|
|
8062
8310
|
className,
|
|
@@ -8068,7 +8316,7 @@ function Switch({
|
|
|
8068
8316
|
{
|
|
8069
8317
|
"data-slot": "switch",
|
|
8070
8318
|
"data-size": size,
|
|
8071
|
-
className:
|
|
8319
|
+
className: cn46(
|
|
8072
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",
|
|
8073
8321
|
className
|
|
8074
8322
|
),
|
|
@@ -8085,6 +8333,7 @@ function Switch({
|
|
|
8085
8333
|
}
|
|
8086
8334
|
|
|
8087
8335
|
// src/icon/bell.tsx
|
|
8336
|
+
import { cn as cn47 } from "cn";
|
|
8088
8337
|
import {
|
|
8089
8338
|
LazyMotion,
|
|
8090
8339
|
domMin,
|
|
@@ -8203,7 +8452,7 @@ var BellIcon = forwardRef5(
|
|
|
8203
8452
|
return /* @__PURE__ */ jsx50(LazyMotion, { features: domMin, strict: true, children: /* @__PURE__ */ jsx50(
|
|
8204
8453
|
m.div,
|
|
8205
8454
|
{
|
|
8206
|
-
className:
|
|
8455
|
+
className: cn47("relative inline-flex", className),
|
|
8207
8456
|
onMouseEnter: handleEnter,
|
|
8208
8457
|
onMouseLeave: handleLeave,
|
|
8209
8458
|
...props,
|
|
@@ -8237,13 +8486,14 @@ var BellIcon = forwardRef5(
|
|
|
8237
8486
|
BellIcon.displayName = "BellIcon";
|
|
8238
8487
|
|
|
8239
8488
|
// src/icon/icon-swap.tsx
|
|
8489
|
+
import { cn as cn48 } from "cn";
|
|
8240
8490
|
import { jsx as jsx51, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8241
8491
|
function IconSwap({ active, first, second, className }) {
|
|
8242
8492
|
return /* @__PURE__ */ jsxs27(
|
|
8243
8493
|
"span",
|
|
8244
8494
|
{
|
|
8245
8495
|
"aria-hidden": "true",
|
|
8246
|
-
className:
|
|
8496
|
+
className: cn48("t-icon-swap", className),
|
|
8247
8497
|
"data-state": active ? "b" : "a",
|
|
8248
8498
|
children: [
|
|
8249
8499
|
/* @__PURE__ */ jsx51("span", { className: "t-icon", "data-icon": "a", children: first }),
|
|
@@ -8254,6 +8504,7 @@ function IconSwap({ active, first, second, className }) {
|
|
|
8254
8504
|
}
|
|
8255
8505
|
|
|
8256
8506
|
// src/icon/loader.tsx
|
|
8507
|
+
import { cn as cn49 } from "cn";
|
|
8257
8508
|
import React17 from "react";
|
|
8258
8509
|
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
8259
8510
|
var Loader = React17.forwardRef(
|
|
@@ -8263,7 +8514,7 @@ var Loader = React17.forwardRef(
|
|
|
8263
8514
|
"div",
|
|
8264
8515
|
{
|
|
8265
8516
|
ref,
|
|
8266
|
-
className:
|
|
8517
|
+
className: cn49("loader-wrapper", className),
|
|
8267
8518
|
style: {
|
|
8268
8519
|
"--spinner-size": `${size}px`,
|
|
8269
8520
|
"--spinner-color": color,
|
|
@@ -8277,11 +8528,8 @@ var Loader = React17.forwardRef(
|
|
|
8277
8528
|
);
|
|
8278
8529
|
Loader.displayName = "SpellUI.Loader";
|
|
8279
8530
|
|
|
8280
|
-
// src/
|
|
8281
|
-
|
|
8282
|
-
if (!countryCode) return "";
|
|
8283
|
-
return `https://flagcdn.com/${size}x${Math.floor(Number(size) * 0.75)}/${countryCode.toLowerCase()}.png`;
|
|
8284
|
-
}
|
|
8531
|
+
// src/index.ts
|
|
8532
|
+
import { cn as cn50 } from "cn";
|
|
8285
8533
|
export {
|
|
8286
8534
|
Accordion,
|
|
8287
8535
|
AccordionContent,
|
|
@@ -8511,6 +8759,7 @@ export {
|
|
|
8511
8759
|
SPRING_SWAP,
|
|
8512
8760
|
ScrollArea,
|
|
8513
8761
|
ScrollBar,
|
|
8762
|
+
SearchParams,
|
|
8514
8763
|
Select,
|
|
8515
8764
|
SelectContent,
|
|
8516
8765
|
SelectGroup,
|
|
@@ -8542,35 +8791,63 @@ export {
|
|
|
8542
8791
|
Top,
|
|
8543
8792
|
activityItemAnimation,
|
|
8544
8793
|
badgeVariants,
|
|
8794
|
+
buildFlagSearchParamHref,
|
|
8545
8795
|
buttonGroupVariants,
|
|
8546
8796
|
buttonVariants,
|
|
8547
|
-
cn,
|
|
8797
|
+
cn50 as cn,
|
|
8798
|
+
composeRefs,
|
|
8548
8799
|
createFilter,
|
|
8549
8800
|
createFilterGroup,
|
|
8550
8801
|
fromLeftChildren,
|
|
8551
8802
|
fromLeftVariant,
|
|
8552
8803
|
fromRightVariant,
|
|
8553
8804
|
fromTopVariant,
|
|
8554
|
-
|
|
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,
|
|
8555
8819
|
getSkeletonVariantDuration,
|
|
8556
8820
|
hamFastFadeContainer,
|
|
8821
|
+
hasFlagSearchParam,
|
|
8557
8822
|
headingFromLeft,
|
|
8823
|
+
isNativeApp,
|
|
8558
8824
|
kanbanOrderCardAnimation,
|
|
8559
8825
|
kanbanOrderCardLayoutTransition,
|
|
8560
8826
|
kanbanOrderCardReducedMotionAnimation,
|
|
8561
8827
|
mobileNavItemSideways,
|
|
8828
|
+
nativeSharedFileToFile,
|
|
8562
8829
|
opacityVariant,
|
|
8830
|
+
openExternalUrl,
|
|
8831
|
+
openNativeAppSettings,
|
|
8832
|
+
openUpiPaymentUrl,
|
|
8833
|
+
pickNativeChooserImageFiles,
|
|
8834
|
+
pickNativeImageFiles,
|
|
8563
8835
|
popUp,
|
|
8564
8836
|
popUpFromBottomForText,
|
|
8565
8837
|
resolveSkeletonA11yProps,
|
|
8838
|
+
saveNativeShareImage,
|
|
8566
8839
|
searchBarSlideAnimation,
|
|
8567
8840
|
searchFocus,
|
|
8841
|
+
searchParamKeys,
|
|
8842
|
+
searchParams,
|
|
8843
|
+
shareNativeOrWeb,
|
|
8568
8844
|
skeletonRoundedClasses,
|
|
8569
8845
|
skeletonVariantDefaultDuration,
|
|
8570
8846
|
svgVariant,
|
|
8571
8847
|
useAutocompleteFilter,
|
|
8572
8848
|
useCarousel,
|
|
8573
8849
|
useComboboxAnchor,
|
|
8850
|
+
useComposedRefs,
|
|
8574
8851
|
useJellyMood,
|
|
8575
8852
|
useMediaQuery,
|
|
8576
8853
|
useMessageScroller,
|