@nebutra/ui 0.2.3 → 2.0.0
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/animate-in-BlvjVh2S.d.ts +250 -0
- package/dist/{canonical-Drca5UMj.d.ts → canonical-Bf4czR2u.d.ts} +13 -250
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/components/index.d.ts +58 -123
- package/dist/components/index.js +219 -104
- package/dist/components/index.js.map +1 -1
- package/dist/editorial/index.d.ts +404 -0
- package/dist/editorial/index.js +868 -0
- package/dist/editorial/index.js.map +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/layout/index.js +6 -5
- package/dist/layout/index.js.map +1 -1
- package/dist/layouts/index.js +4 -13
- package/dist/layouts/index.js.map +1 -1
- package/dist/patterns/index.d.ts +1 -2
- package/dist/patterns/index.js +74 -55
- package/dist/patterns/index.js.map +1 -1
- package/dist/primitives/canonical.d.ts +3 -2
- package/dist/primitives/canonical.js +118 -72
- package/dist/primitives/canonical.js.map +1 -1
- package/dist/primitives/index.d.ts +78 -4
- package/dist/primitives/index.js +777 -453
- package/dist/primitives/index.js.map +1 -1
- package/dist/tailwind.preset.d.ts +2 -2
- package/dist/tailwind.preset.js +1 -1
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/typography/fonts.css +2 -2
- package/dist/typography/index.d.ts +4 -4
- package/dist/typography/index.js +1 -1
- package/dist/typography/index.js.map +1 -1
- package/dist/utils/auth-surfaces.d.ts +33 -0
- package/dist/utils/auth-surfaces.js +9 -0
- package/dist/utils/auth-surfaces.js.map +1 -0
- package/dist/utils/index.d.ts +2 -4
- package/dist/utils/index.js +6 -3
- package/dist/utils/index.js.map +1 -1
- package/package.json +25 -7
- package/src/typography/fonts.css +2 -2
package/dist/primitives/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
|
|
3
|
-
import { ChevronUpDown, Check, ChevronRight, ChevronDown, ArrowRight, MagnifyingGlass, Plus, Cross, Star, VerifiedCheck, MoreHorizontal, ArrowLeft, RotateClockwise, Copy, CheckCircle, Status, LoaderCircle, EyeOff, Eye, Warning, Information, Minus, Shield, RefreshClockwise, External, Message, ArrowUpRight, ChartTrendingUp, ChartTrendingDown, LockClosed, ChevronDoubleLeft, ChevronLeft, ChevronDoubleRight, Question, ChevronUp, MoreVertical, DeviceDesktop, Sun, Moon, Sparkles, Pause, Play, SpeakerOff, SpeakerVolumeLoud, SpeakerVolumeQuiet, Trash, Hash, Code, Link as Link$1, FolderOpen, FolderClosed, File, CrossCircle, ClockDashed, FaceHappy, FaceSmile, FaceUnhappy, FaceSad, Image, PlayFill, FileText } from '@nebutra/icons';
|
|
3
|
+
import { ChevronUpDown, Check, ChevronRight, ChevronDown, ArrowRight, MagnifyingGlass, Plus, Cross, Star, VerifiedCheck, MoreHorizontal, ArrowLeft, RotateClockwise, Copy, CheckCircle, Status, LoaderCircle, EyeOff, Eye, Warning, Calendar as Calendar$1, Information, Minus, Shield, RefreshClockwise, External, Message, ArrowUpRight, ChartTrendingUp, ChartTrendingDown, LockClosed, ChevronDoubleLeft, ChevronLeft, ChevronDoubleRight, Question, ChevronUp, MoreVertical, DeviceDesktop, Sun, Moon, Sparkles, Pause, Play, SpeakerOff, SpeakerVolumeLoud, SpeakerVolumeQuiet, Trash, Hash, Code, Link as Link$1, FolderOpen, FolderClosed, File, CrossCircle, ClockDashed, FaceHappy, FaceSmile, FaceUnhappy, FaceSad, Image, PlayFill, FileText } from '@nebutra/icons';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import * as
|
|
8
|
-
import
|
|
7
|
+
import * as React46 from 'react';
|
|
8
|
+
import React46__default, { useState, useMemo, useEffect, createContext, memo, useId, useRef, use, useCallback, isValidElement, Children, cloneElement, useImperativeHandle, Component, useEffectEvent, createElement, Suspense } from 'react';
|
|
9
9
|
import { useReducedMotion, AnimatePresence, motion, LayoutGroup, LazyMotion, domAnimation, useMotionValue, useMotionTemplate, m, useInView, animate, useScroll, useVelocity, useSpring, useTransform, useAnimationFrame } from 'framer-motion';
|
|
10
10
|
import { cva } from 'class-variance-authority';
|
|
11
11
|
import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
|
|
@@ -18,6 +18,7 @@ import Link from 'next/link';
|
|
|
18
18
|
import { mergeProps } from '@base-ui/react/merge-props';
|
|
19
19
|
import { useRender } from '@base-ui/react/use-render';
|
|
20
20
|
import { Separator as Separator$1 } from '@base-ui/react/separator';
|
|
21
|
+
import { DayPicker, UI, DayFlag, SelectionState } from 'react-day-picker';
|
|
21
22
|
import { Canvas, useThree, useFrame } from '@react-three/fiber';
|
|
22
23
|
import * as THREE from 'three';
|
|
23
24
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
@@ -34,6 +35,7 @@ import { Input as Input$1 } from '@base-ui/react/input';
|
|
|
34
35
|
import { ContextMenu as ContextMenu$1 } from '@base-ui/react/context-menu';
|
|
35
36
|
import { toast, Toaster as Toaster$1 } from 'sonner';
|
|
36
37
|
export { toast } from 'sonner';
|
|
38
|
+
import { parse, isValid, format, subDays, startOfWeek, eachDayOfInterval, endOfWeek, addDays, isSameDay } from 'date-fns';
|
|
37
39
|
import { Dithering, GrainGradient, MeshGradient, NeuroNoise, Waves } from '@paper-design/shaders-react';
|
|
38
40
|
import { createMap } from 'piri';
|
|
39
41
|
import DottedMap2 from 'dotted-map';
|
|
@@ -42,7 +44,6 @@ import { OTPInput, OTPInputContext } from 'input-otp';
|
|
|
42
44
|
import { useOnClickOutside, useDebounceValue } from 'usehooks-ts';
|
|
43
45
|
import { Select as Select$1 } from '@base-ui/react/select';
|
|
44
46
|
import { FormProvider, Controller, useFormContext } from 'react-hook-form';
|
|
45
|
-
import { subDays, startOfWeek, eachDayOfInterval, endOfWeek, addDays, format, isSameDay } from 'date-fns';
|
|
46
47
|
import createGlobe from 'cobe';
|
|
47
48
|
import { annotate } from 'rough-notation';
|
|
48
49
|
import useMeasure from 'react-use-measure';
|
|
@@ -225,14 +226,14 @@ var motionDurations = {
|
|
|
225
226
|
cinematic: 500
|
|
226
227
|
};
|
|
227
228
|
var easings = {
|
|
228
|
-
easeOut: [0,
|
|
229
|
+
easeOut: [0.16, 1, 0.3, 1],
|
|
229
230
|
easeInOut: [0.4, 0, 0.2, 1],
|
|
230
231
|
spring: [0.34, 1.56, 0.64, 1]};
|
|
231
232
|
var motionVariants = {
|
|
232
233
|
fadeInUp: {
|
|
233
|
-
initial: { opacity: 0,
|
|
234
|
-
animate: { opacity: 1,
|
|
235
|
-
exit: { opacity: 0,
|
|
234
|
+
initial: { opacity: 0, transform: "translateY(20px)" },
|
|
235
|
+
animate: { opacity: 1, transform: "translateY(0px)" },
|
|
236
|
+
exit: { opacity: 0, transform: "translateY(10px)" }
|
|
236
237
|
},
|
|
237
238
|
scaleIn: {
|
|
238
239
|
initial: { opacity: 0, scale: 0.95 },
|
|
@@ -242,15 +243,15 @@ var motionVariants = {
|
|
|
242
243
|
var staggerContainers = {
|
|
243
244
|
fast: {
|
|
244
245
|
initial: {},
|
|
245
|
-
animate: { transition: { staggerChildren: 0.
|
|
246
|
+
animate: { transition: { staggerChildren: 0.04, delayChildren: 0 } }
|
|
246
247
|
},
|
|
247
248
|
normal: {
|
|
248
249
|
initial: {},
|
|
249
|
-
animate: { transition: { staggerChildren: 0.
|
|
250
|
+
animate: { transition: { staggerChildren: 0.06, delayChildren: 0.04 } }
|
|
250
251
|
},
|
|
251
252
|
slow: {
|
|
252
253
|
initial: {},
|
|
253
|
-
animate: { transition: { staggerChildren: 0.
|
|
254
|
+
animate: { transition: { staggerChildren: 0.08, delayChildren: 0.05 } }
|
|
254
255
|
}
|
|
255
256
|
};
|
|
256
257
|
var viewportSettings = {
|
|
@@ -975,7 +976,7 @@ var primitiveTransition = {
|
|
|
975
976
|
// hero entrance, big delight moments
|
|
976
977
|
},
|
|
977
978
|
easing: {
|
|
978
|
-
default: "ease-
|
|
979
|
+
default: "var(--ease-brand)",
|
|
979
980
|
inOut: "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
980
981
|
}
|
|
981
982
|
};
|
|
@@ -1009,80 +1010,78 @@ var overlayTokens = {
|
|
|
1009
1010
|
}};
|
|
1010
1011
|
var overlayClassNames = {
|
|
1011
1012
|
focusRing: overlayFocusRingClassName,
|
|
1012
|
-
backdrop: "fixed inset-0 bg-black/40 backdrop-blur-sm transition-[opacity,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1013
|
+
backdrop: "fixed inset-0 bg-black/40 backdrop-blur-sm transition-[opacity,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)] data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none",
|
|
1013
1014
|
modalSurface: [
|
|
1014
1015
|
"fixed left-1/2 top-1/2 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4",
|
|
1015
1016
|
"border border-border/60 bg-background/95 p-6 text-foreground backdrop-blur-xl",
|
|
1016
1017
|
"rounded-[var(--radius-xl)]",
|
|
1017
1018
|
shadowClasses["2xl"],
|
|
1018
1019
|
"outline-none",
|
|
1019
|
-
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1020
|
+
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1020
1021
|
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
1021
1022
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1022
1023
|
].join(" "),
|
|
1023
1024
|
commandSurface: [
|
|
1024
1025
|
"fixed left-1/2 top-[18vh] w-[calc(100vw-2rem)] max-w-xl -translate-x-1/2 overflow-hidden",
|
|
1025
1026
|
"rounded-[var(--radius-lg)] border border-border/70 bg-popover text-popover-foreground",
|
|
1026
|
-
shadowClasses["2xl"]
|
|
1027
|
-
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]",
|
|
1028
|
-
"data-starting-style:translate-y-[-0.5rem] data-starting-style:scale-95 data-starting-style:opacity-0",
|
|
1029
|
-
"data-ending-style:translate-y-[-0.5rem] data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
1030
|
-
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1027
|
+
shadowClasses["2xl"]
|
|
1031
1028
|
].join(" "),
|
|
1032
1029
|
menuSurface: [
|
|
1033
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
1030
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
1034
1031
|
shadowClasses.xl,
|
|
1035
|
-
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1036
|
-
"data-[starting-style]:scale-
|
|
1032
|
+
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1033
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-[ending-style]:scale-[0.97] data-[ending-style]:opacity-0",
|
|
1037
1034
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
1038
1035
|
].join(" "),
|
|
1039
1036
|
selectSurface: [
|
|
1040
|
-
"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] overflow-hidden",
|
|
1037
|
+
"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] origin-[var(--transform-origin)] overflow-hidden",
|
|
1041
1038
|
"rounded-[var(--select-content-radius)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
1042
1039
|
"shadow-[var(--select-content-shadow)] outline-none",
|
|
1043
|
-
"transition-[opacity,transform,display] duration-[var(--select-duration)] ease-[var(--
|
|
1044
|
-
"data-starting-style:scale-
|
|
1040
|
+
"transition-[opacity,transform,display] duration-[var(--select-duration)] ease-[var(--ease-brand)]",
|
|
1041
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0",
|
|
1045
1042
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1046
1043
|
].join(" "),
|
|
1047
1044
|
navigationMenuSurface: [
|
|
1048
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
1045
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
1049
1046
|
shadowClasses.xl,
|
|
1050
|
-
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1051
|
-
"data-[starting-style]:scale-
|
|
1047
|
+
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1048
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-[ending-style]:scale-[0.97] data-[ending-style]:opacity-0",
|
|
1052
1049
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
1053
1050
|
].join(" "),
|
|
1054
1051
|
popoverSurface: [
|
|
1055
|
-
"w-72 rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md",
|
|
1052
|
+
"w-72 origin-[var(--transform-origin)] rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md",
|
|
1056
1053
|
shadowClasses.xl,
|
|
1057
|
-
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1058
|
-
"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-
|
|
1054
|
+
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1055
|
+
"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-[0.97] data-[open]:scale-100",
|
|
1059
1056
|
"motion-reduce:transition-none motion-reduce:data-[closed]:transform-none motion-reduce:data-[open]:transform-none"
|
|
1060
1057
|
].join(" "),
|
|
1061
1058
|
tooltipSurface: [
|
|
1062
|
-
"overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
1059
|
+
"origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
1063
1060
|
shadowClasses.md,
|
|
1064
|
-
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1065
|
-
"data-starting-style:scale-
|
|
1061
|
+
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1062
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0",
|
|
1063
|
+
"data-[instant]:duration-0",
|
|
1066
1064
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1067
1065
|
].join(" "),
|
|
1068
1066
|
sheetBackdrop: [
|
|
1069
1067
|
"fixed inset-0 bg-[var(--sheet-overlay-background)] backdrop-blur-[var(--sheet-overlay-blur)]",
|
|
1070
|
-
"transition-[opacity,backdrop-filter,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1068
|
+
"transition-[opacity,backdrop-filter,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1071
1069
|
"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
|
|
1072
1070
|
].join(" "),
|
|
1073
1071
|
sheetSurface: [
|
|
1074
1072
|
"fixed flex flex-col overflow-hidden border border-border bg-[var(--sheet-background)] text-foreground shadow-[var(--sheet-shadow)]",
|
|
1075
|
-
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
1073
|
+
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1076
1074
|
"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
|
|
1077
1075
|
].join(" "),
|
|
1078
|
-
closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-
|
|
1076
|
+
closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-brand)] hover:opacity-100 disabled:pointer-events-none data-[open]:bg-accent data-[open]:text-muted-foreground motion-reduce:transition-none`
|
|
1079
1077
|
};
|
|
1080
1078
|
var buttonVariants = cva(
|
|
1081
1079
|
[
|
|
1082
1080
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap",
|
|
1083
1081
|
"rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
1084
1082
|
"text-[length:var(--control-font-size-md,0.875rem)] font-[number:var(--font-weight-medium,500)]",
|
|
1085
|
-
"transition-
|
|
1083
|
+
"transition-[color,background-color,border-color,transform] duration-flow ease-[var(--ease-brand)]",
|
|
1084
|
+
"active:scale-[0.97] motion-reduce:active:scale-100 motion-reduce:transition-none",
|
|
1086
1085
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
1087
1086
|
"aria-busy:cursor-wait"
|
|
1088
1087
|
].join(" "),
|
|
@@ -1210,7 +1209,7 @@ var AlertDialogTrigger = ({
|
|
|
1210
1209
|
ref,
|
|
1211
1210
|
...props
|
|
1212
1211
|
}) => {
|
|
1213
|
-
if (asChild &&
|
|
1212
|
+
if (asChild && React46.isValidElement(children)) {
|
|
1214
1213
|
return /* @__PURE__ */ jsx(
|
|
1215
1214
|
AlertDialog$1.Trigger,
|
|
1216
1215
|
{
|
|
@@ -1294,7 +1293,7 @@ var AlertDialogAction = ({
|
|
|
1294
1293
|
ref,
|
|
1295
1294
|
...props
|
|
1296
1295
|
}) => {
|
|
1297
|
-
if (asChild &&
|
|
1296
|
+
if (asChild && React46.isValidElement(children)) {
|
|
1298
1297
|
return /* @__PURE__ */ jsx(
|
|
1299
1298
|
AlertDialog$1.Close,
|
|
1300
1299
|
{
|
|
@@ -1315,7 +1314,7 @@ var AlertDialogCancel = ({
|
|
|
1315
1314
|
ref,
|
|
1316
1315
|
...props
|
|
1317
1316
|
}) => {
|
|
1318
|
-
if (asChild &&
|
|
1317
|
+
if (asChild && React46.isValidElement(children)) {
|
|
1319
1318
|
return /* @__PURE__ */ jsx(
|
|
1320
1319
|
AlertDialog$1.Close,
|
|
1321
1320
|
{
|
|
@@ -1371,37 +1370,37 @@ var PRESETS = {
|
|
|
1371
1370
|
* Pair with `AnimateSwap`.
|
|
1372
1371
|
*/
|
|
1373
1372
|
swap: {
|
|
1374
|
-
initial: { opacity: 0,
|
|
1375
|
-
animate: { opacity: 1,
|
|
1376
|
-
exit: { opacity: 0,
|
|
1373
|
+
initial: { opacity: 0, transform: "translateY(10px)", filter: "blur(4px)" },
|
|
1374
|
+
animate: { opacity: 1, transform: "translateY(0px)", filter: "blur(0px)" },
|
|
1375
|
+
exit: { opacity: 0, transform: "translateY(-10px)", filter: "blur(4px)" },
|
|
1377
1376
|
transition: { duration: motionDurations.reveal / 1e3 }
|
|
1378
1377
|
},
|
|
1379
1378
|
/** Off-canvas panel entering from the right edge (drawer, sheet). */
|
|
1380
1379
|
slideFromRight: {
|
|
1381
|
-
initial: {
|
|
1382
|
-
animate: {
|
|
1383
|
-
exit: {
|
|
1380
|
+
initial: { transform: "translateX(100%)" },
|
|
1381
|
+
animate: { transform: "translateX(0%)" },
|
|
1382
|
+
exit: { transform: "translateX(100%)" },
|
|
1384
1383
|
transition: brandSpring.default
|
|
1385
1384
|
},
|
|
1386
1385
|
/** Off-canvas panel entering from the left edge. */
|
|
1387
1386
|
slideFromLeft: {
|
|
1388
|
-
initial: {
|
|
1389
|
-
animate: {
|
|
1390
|
-
exit: {
|
|
1387
|
+
initial: { transform: "translateX(-100%)" },
|
|
1388
|
+
animate: { transform: "translateX(0%)" },
|
|
1389
|
+
exit: { transform: "translateX(-100%)" },
|
|
1391
1390
|
transition: brandSpring.default
|
|
1392
1391
|
},
|
|
1393
1392
|
/** Off-canvas panel entering from the top edge (banner, command bar). */
|
|
1394
1393
|
slideFromTop: {
|
|
1395
|
-
initial: {
|
|
1396
|
-
animate: {
|
|
1397
|
-
exit: {
|
|
1394
|
+
initial: { transform: "translateY(-100%)" },
|
|
1395
|
+
animate: { transform: "translateY(0%)" },
|
|
1396
|
+
exit: { transform: "translateY(-100%)" },
|
|
1398
1397
|
transition: brandSpring.default
|
|
1399
1398
|
},
|
|
1400
1399
|
/** Off-canvas panel entering from the bottom edge (mobile action sheet). */
|
|
1401
1400
|
slideFromBottom: {
|
|
1402
|
-
initial: {
|
|
1403
|
-
animate: {
|
|
1404
|
-
exit: {
|
|
1401
|
+
initial: { transform: "translateY(100%)" },
|
|
1402
|
+
animate: { transform: "translateY(0%)" },
|
|
1403
|
+
exit: { transform: "translateY(100%)" },
|
|
1405
1404
|
transition: brandSpring.default
|
|
1406
1405
|
}
|
|
1407
1406
|
};
|
|
@@ -1411,7 +1410,7 @@ function MotionDiv(props) {
|
|
|
1411
1410
|
function AnimateIn(props) {
|
|
1412
1411
|
const {
|
|
1413
1412
|
children,
|
|
1414
|
-
preset = "
|
|
1413
|
+
preset = "fade",
|
|
1415
1414
|
delay = 0,
|
|
1416
1415
|
duration,
|
|
1417
1416
|
inView = false,
|
|
@@ -1419,7 +1418,7 @@ function AnimateIn(props) {
|
|
|
1419
1418
|
...rest
|
|
1420
1419
|
} = props;
|
|
1421
1420
|
const shouldReduce = useReducedMotion();
|
|
1422
|
-
const base = PRESETS[preset] || PRESETS.
|
|
1421
|
+
const base = PRESETS[preset] || PRESETS.fade;
|
|
1423
1422
|
const initial = shouldReduce ? { opacity: 0 } : base.initial;
|
|
1424
1423
|
const animate2 = shouldReduce ? { opacity: 1 } : base.animate;
|
|
1425
1424
|
const exit = shouldReduce ? { opacity: 0 } : "exit" in base ? base.exit : void 0;
|
|
@@ -1553,9 +1552,9 @@ function AnimatedBeam({
|
|
|
1553
1552
|
endYOffset = 0
|
|
1554
1553
|
}) {
|
|
1555
1554
|
const shouldReduceMotion = useReducedMotion2();
|
|
1556
|
-
const id =
|
|
1557
|
-
const [pathD, setPathD] =
|
|
1558
|
-
const [svgDimensions, setSvgDimensions] =
|
|
1555
|
+
const id = React46.useId().replace(/:/g, "");
|
|
1556
|
+
const [pathD, setPathD] = React46.useState("");
|
|
1557
|
+
const [svgDimensions, setSvgDimensions] = React46.useState({
|
|
1559
1558
|
width: 0,
|
|
1560
1559
|
height: 0
|
|
1561
1560
|
});
|
|
@@ -1567,7 +1566,7 @@ function AnimatedBeam({
|
|
|
1567
1566
|
const resolvedPathColor = pathColor ?? toneToken.pathColor;
|
|
1568
1567
|
const resolvedStartColor = gradientStartColor ?? toneToken.startColor;
|
|
1569
1568
|
const resolvedStopColor = gradientStopColor ?? toneToken.stopColor;
|
|
1570
|
-
|
|
1569
|
+
React46.useEffect(() => {
|
|
1571
1570
|
const updatePath = () => {
|
|
1572
1571
|
if (!containerRef.current || !fromRef.current || !toRef.current) {
|
|
1573
1572
|
return;
|
|
@@ -1926,7 +1925,7 @@ function AnimatedGroup({ children, className, variants, preset }) {
|
|
|
1926
1925
|
animate: "visible",
|
|
1927
1926
|
variants: containerVariants,
|
|
1928
1927
|
className: cn(className),
|
|
1929
|
-
children:
|
|
1928
|
+
children: React46.Children.map(children, (child, index) => /* @__PURE__ */ jsx(motion.div, { variants: itemVariants, children: child }, index))
|
|
1930
1929
|
}
|
|
1931
1930
|
);
|
|
1932
1931
|
}
|
|
@@ -2004,11 +2003,11 @@ function AnimatedListItem({ children }) {
|
|
|
2004
2003
|
};
|
|
2005
2004
|
return /* @__PURE__ */ jsx(motion.div, { ...animations, layout: !shouldReduceMotion, className: "mx-auto w-full", children });
|
|
2006
2005
|
}
|
|
2007
|
-
var AnimatedList =
|
|
2006
|
+
var AnimatedList = React46__default.memo(
|
|
2008
2007
|
({ children, className, delay = 1e3, ...props }) => {
|
|
2009
2008
|
const [index, setIndex] = useState(0);
|
|
2010
2009
|
const shouldReduceMotion = useReducedMotion();
|
|
2011
|
-
const childrenArray = useMemo(() =>
|
|
2010
|
+
const childrenArray = useMemo(() => React46__default.Children.toArray(children), [children]);
|
|
2012
2011
|
useEffect(() => {
|
|
2013
2012
|
if (shouldReduceMotion) {
|
|
2014
2013
|
setIndex(Math.max(childrenArray.length - 1, 0));
|
|
@@ -2197,11 +2196,11 @@ function Badge({
|
|
|
2197
2196
|
label
|
|
2198
2197
|
] });
|
|
2199
2198
|
if (asChild) {
|
|
2200
|
-
const childArray =
|
|
2199
|
+
const childArray = React46.Children.toArray(children);
|
|
2201
2200
|
const child = childArray.length === 1 ? childArray[0] : null;
|
|
2202
|
-
if (
|
|
2201
|
+
if (React46.isValidElement(child)) {
|
|
2203
2202
|
const childProps = child.props;
|
|
2204
|
-
return
|
|
2203
|
+
return React46.cloneElement(child, {
|
|
2205
2204
|
...props,
|
|
2206
2205
|
...childProps,
|
|
2207
2206
|
"data-slot": "badge",
|
|
@@ -2637,7 +2636,7 @@ var sizeClasses = {
|
|
|
2637
2636
|
xl: { root: "h-20 w-20", fallback: "text-2xl" }
|
|
2638
2637
|
};
|
|
2639
2638
|
var numericAvatarClass = "h-[var(--avatar-size)] w-[var(--avatar-size)]";
|
|
2640
|
-
var AvatarContext =
|
|
2639
|
+
var AvatarContext = React46.createContext(null);
|
|
2641
2640
|
function isPresetSize(size) {
|
|
2642
2641
|
return typeof size === "string";
|
|
2643
2642
|
}
|
|
@@ -2746,7 +2745,7 @@ var AvatarFallback = ({
|
|
|
2746
2745
|
ref,
|
|
2747
2746
|
...props
|
|
2748
2747
|
}) => {
|
|
2749
|
-
const context =
|
|
2748
|
+
const context = React46.use(AvatarContext);
|
|
2750
2749
|
const resolvedSize = size ?? context?.size ?? "md";
|
|
2751
2750
|
const fallbackLabel = ariaLabel ?? (typeof children === "string" && children.trim().length > 0 ? `Avatar with initials: ${children}` : context?.title);
|
|
2752
2751
|
return /* @__PURE__ */ jsx(
|
|
@@ -2912,7 +2911,7 @@ var GitLabIcon = () => /* @__PURE__ */ jsxs(
|
|
|
2912
2911
|
}
|
|
2913
2912
|
);
|
|
2914
2913
|
var BitbucketIcon = () => {
|
|
2915
|
-
const gradientId =
|
|
2914
|
+
const gradientId = React46.useId().replace(/:/g, "");
|
|
2916
2915
|
return /* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", height: "14", viewBox: "-2 -2 65 59", width: "14", className: "scale-[65%]", children: [
|
|
2917
2916
|
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: gradientId, x1: "104.953%", x2: "46.569%", y1: "21.921%", y2: "75.234%", children: [
|
|
2918
2917
|
/* @__PURE__ */ jsx("stop", { offset: "7%", stopColor: "white", stopOpacity: ".4" }),
|
|
@@ -3042,19 +3041,54 @@ function DiceBearAvatar({
|
|
|
3042
3041
|
] });
|
|
3043
3042
|
}
|
|
3044
3043
|
var DEFAULT_TOOLTIP_DELAY_MS = 150;
|
|
3044
|
+
var SKIP_DELAY_WINDOW_MS = 400;
|
|
3045
|
+
var lastTooltipOpenAt = 0;
|
|
3046
|
+
var skipDelayListeners = /* @__PURE__ */ new Set();
|
|
3047
|
+
function markTooltipOpened() {
|
|
3048
|
+
lastTooltipOpenAt = Date.now();
|
|
3049
|
+
for (const listener of skipDelayListeners) listener();
|
|
3050
|
+
}
|
|
3051
|
+
function shouldSkipDelay() {
|
|
3052
|
+
return Date.now() - lastTooltipOpenAt < SKIP_DELAY_WINDOW_MS;
|
|
3053
|
+
}
|
|
3054
|
+
function useSkipDelay() {
|
|
3055
|
+
const [, tick] = React46.useReducer((count) => count + 1, 0);
|
|
3056
|
+
React46.useEffect(() => {
|
|
3057
|
+
skipDelayListeners.add(tick);
|
|
3058
|
+
return () => {
|
|
3059
|
+
skipDelayListeners.delete(tick);
|
|
3060
|
+
};
|
|
3061
|
+
}, []);
|
|
3062
|
+
return shouldSkipDelay();
|
|
3063
|
+
}
|
|
3064
|
+
var TooltipInstantContext = React46.createContext(false);
|
|
3045
3065
|
var TooltipProvider = ({
|
|
3046
3066
|
children,
|
|
3047
3067
|
delayDuration = DEFAULT_TOOLTIP_DELAY_MS
|
|
3048
3068
|
}) => {
|
|
3049
|
-
|
|
3069
|
+
const skipDelay = useSkipDelay();
|
|
3070
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay: skipDelay ? 0 : delayDuration, children });
|
|
3050
3071
|
};
|
|
3051
3072
|
var Tooltip = ({
|
|
3052
3073
|
delayDuration,
|
|
3053
3074
|
children,
|
|
3075
|
+
onOpenChange,
|
|
3054
3076
|
...props
|
|
3055
3077
|
}) => {
|
|
3056
|
-
const
|
|
3057
|
-
|
|
3078
|
+
const skipDelay = useSkipDelay();
|
|
3079
|
+
const instant2 = delayDuration == null && skipDelay;
|
|
3080
|
+
const delay = delayDuration ?? (instant2 ? 0 : DEFAULT_TOOLTIP_DELAY_MS);
|
|
3081
|
+
return /* @__PURE__ */ jsx(TooltipInstantContext.Provider, { value: instant2, children: /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay, children: /* @__PURE__ */ jsx(
|
|
3082
|
+
Tooltip$1.Root,
|
|
3083
|
+
{
|
|
3084
|
+
...props,
|
|
3085
|
+
onOpenChange: (open, eventDetails) => {
|
|
3086
|
+
if (open) markTooltipOpened();
|
|
3087
|
+
onOpenChange?.(open, eventDetails);
|
|
3088
|
+
},
|
|
3089
|
+
children
|
|
3090
|
+
}
|
|
3091
|
+
) }) });
|
|
3058
3092
|
};
|
|
3059
3093
|
var TooltipTrigger = ({
|
|
3060
3094
|
asChild,
|
|
@@ -3062,7 +3096,7 @@ var TooltipTrigger = ({
|
|
|
3062
3096
|
ref,
|
|
3063
3097
|
...props
|
|
3064
3098
|
}) => {
|
|
3065
|
-
if (asChild &&
|
|
3099
|
+
if (asChild && React46.isValidElement(children)) {
|
|
3066
3100
|
return /* @__PURE__ */ jsx(
|
|
3067
3101
|
Tooltip$1.Trigger,
|
|
3068
3102
|
{
|
|
@@ -3084,25 +3118,29 @@ var TooltipContent = ({
|
|
|
3084
3118
|
alignOffset = 0,
|
|
3085
3119
|
ref,
|
|
3086
3120
|
...props
|
|
3087
|
-
}) =>
|
|
3088
|
-
|
|
3089
|
-
{
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3121
|
+
}) => {
|
|
3122
|
+
const instant2 = React46.use(TooltipInstantContext);
|
|
3123
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
3124
|
+
Tooltip$1.Positioner,
|
|
3125
|
+
{
|
|
3126
|
+
side,
|
|
3127
|
+
align,
|
|
3128
|
+
sideOffset,
|
|
3129
|
+
alignOffset,
|
|
3130
|
+
style: { zIndex: overlayZIndex.tooltip },
|
|
3131
|
+
children: /* @__PURE__ */ jsx(
|
|
3132
|
+
Tooltip$1.Popup,
|
|
3133
|
+
{
|
|
3134
|
+
ref,
|
|
3135
|
+
className: cn(overlayClassNames.tooltipSurface, className),
|
|
3136
|
+
"data-instant": instant2 || void 0,
|
|
3137
|
+
style: { zIndex: overlayZIndex.tooltip, ...style },
|
|
3138
|
+
...props
|
|
3139
|
+
}
|
|
3140
|
+
)
|
|
3141
|
+
}
|
|
3142
|
+
) });
|
|
3143
|
+
};
|
|
3106
3144
|
TooltipContent.displayName = "TooltipContent";
|
|
3107
3145
|
function getAvatarUserKey(user) {
|
|
3108
3146
|
return [user.name, user.role ?? "member", user.image ?? "no-image"].join("|");
|
|
@@ -3900,8 +3938,8 @@ function BaseBadgeButton({
|
|
|
3900
3938
|
role: "button",
|
|
3901
3939
|
"data-slot": "badge-button"
|
|
3902
3940
|
};
|
|
3903
|
-
const renderElement = asChild &&
|
|
3904
|
-
const finalProps = asChild &&
|
|
3941
|
+
const renderElement = asChild && React46.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("button", { type: "button", "aria-label": controlLabelProps["aria-label"] });
|
|
3942
|
+
const finalProps = asChild && React46.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
|
|
3905
3943
|
const element = useRender({
|
|
3906
3944
|
render: renderElement,
|
|
3907
3945
|
props: finalProps
|
|
@@ -3934,8 +3972,8 @@ function BaseBadge({
|
|
|
3934
3972
|
className: cn(baseBadgeVariants({ variant, size, appearance, shape, disabled }), className),
|
|
3935
3973
|
"data-slot": "badge"
|
|
3936
3974
|
};
|
|
3937
|
-
const renderElement = asChild &&
|
|
3938
|
-
const finalProps = asChild &&
|
|
3975
|
+
const renderElement = asChild && React46.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("span", {});
|
|
3976
|
+
const finalProps = asChild && React46.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
|
|
3939
3977
|
const element = useRender({
|
|
3940
3978
|
render: renderElement,
|
|
3941
3979
|
props: finalProps
|
|
@@ -4304,8 +4342,8 @@ function BaseButton({
|
|
|
4304
4342
|
),
|
|
4305
4343
|
...selected && { "data-state": "open" }
|
|
4306
4344
|
};
|
|
4307
|
-
const renderElement = asChild &&
|
|
4308
|
-
const finalProps = asChild &&
|
|
4345
|
+
const renderElement = asChild && React46.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("button", { type: "button", "aria-label": controlLabelProps["aria-label"] });
|
|
4346
|
+
const finalProps = asChild && React46.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
|
|
4309
4347
|
const element = useRender({
|
|
4310
4348
|
render: renderElement,
|
|
4311
4349
|
props: finalProps
|
|
@@ -4315,11 +4353,11 @@ function BaseButton({
|
|
|
4315
4353
|
function BaseButtonArrow({ icon: Icon = ChevronDown, className, ...props }) {
|
|
4316
4354
|
return /* @__PURE__ */ jsx(Icon, { "data-slot": "button-arrow", className: cn("ms-auto -me-1", className), ...props });
|
|
4317
4355
|
}
|
|
4318
|
-
var Slot =
|
|
4356
|
+
var Slot = React46.forwardRef(
|
|
4319
4357
|
({ children, className, style, ...props }, ref) => {
|
|
4320
|
-
const childArray =
|
|
4358
|
+
const childArray = React46.Children.toArray(children);
|
|
4321
4359
|
const child = childArray.length === 1 ? childArray[0] : null;
|
|
4322
|
-
if (child == null || !
|
|
4360
|
+
if (child == null || !React46.isValidElement(child)) {
|
|
4323
4361
|
return /* @__PURE__ */ jsx("span", { ref, className, style, ...props, children });
|
|
4324
4362
|
}
|
|
4325
4363
|
const childProps = child.props;
|
|
@@ -4340,7 +4378,7 @@ var Slot = React45.forwardRef(
|
|
|
4340
4378
|
className: mergedClass,
|
|
4341
4379
|
style: { ...childProps.style, ...style }
|
|
4342
4380
|
};
|
|
4343
|
-
return
|
|
4381
|
+
return React46.cloneElement(
|
|
4344
4382
|
child,
|
|
4345
4383
|
merged
|
|
4346
4384
|
);
|
|
@@ -4542,21 +4580,21 @@ var BentoCard = ({
|
|
|
4542
4580
|
children: [
|
|
4543
4581
|
/* @__PURE__ */ jsx("div", { children: background }),
|
|
4544
4582
|
/* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
4545
|
-
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none z-10 flex transform-gpu flex-col gap-1 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4546
|
-
/* @__PURE__ */ jsx(IconComponent, { className: "h-12 w-12 origin-left transform-gpu text-muted-foreground transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4583
|
+
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none z-10 flex transform-gpu flex-col gap-1 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal lg:group-hover:-translate-y-10", children: [
|
|
4584
|
+
/* @__PURE__ */ jsx(IconComponent, { className: "h-12 w-12 origin-left transform-gpu text-muted-foreground transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal ease-[var(--ease-brand)] group-hover:scale-75" }),
|
|
4547
4585
|
/* @__PURE__ */ jsx("h3", { className: "text-xl font-semibold text-foreground", children: name }),
|
|
4548
4586
|
/* @__PURE__ */ jsx("p", { className: "max-w-lg text-muted-foreground", children: description })
|
|
4549
4587
|
] }),
|
|
4550
|
-
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none flex w-full translate-y-0 transform-gpu flex-row items-center transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4588
|
+
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none flex w-full translate-y-0 transform-gpu flex-row items-center transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal group-hover:translate-y-0 group-hover:opacity-100 lg:hidden", children: /* @__PURE__ */ jsx(Button, { variant: "link", asChild: true, size: "sm", className: "pointer-events-auto p-0", children: /* @__PURE__ */ jsxs("a", { href, children: [
|
|
4551
4589
|
cta,
|
|
4552
4590
|
/* @__PURE__ */ jsx(ArrowRight, { className: "ms-2 h-4 w-4 rtl:rotate-180" })
|
|
4553
4591
|
] }) }) })
|
|
4554
4592
|
] }),
|
|
4555
|
-
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute bottom-0 hidden w-full translate-y-10 transform-gpu flex-row items-center p-4 opacity-0 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4593
|
+
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute bottom-0 hidden w-full translate-y-10 transform-gpu flex-row items-center p-4 opacity-0 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal group-hover:translate-y-0 group-hover:opacity-100 lg:flex", children: /* @__PURE__ */ jsx(Button, { variant: "link", asChild: true, size: "sm", className: "pointer-events-auto p-0", children: /* @__PURE__ */ jsxs("a", { href, children: [
|
|
4556
4594
|
cta,
|
|
4557
4595
|
/* @__PURE__ */ jsx(ArrowRight, { className: "ms-2 h-4 w-4 rtl:rotate-180" })
|
|
4558
4596
|
] }) }) }),
|
|
4559
|
-
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 transform-gpu transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4597
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 transform-gpu transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal group-hover:bg-black/[.03] group-hover:dark:bg-muted/50" })
|
|
4560
4598
|
]
|
|
4561
4599
|
}
|
|
4562
4600
|
);
|
|
@@ -4897,7 +4935,7 @@ var BoxBase = function BoxInner({
|
|
|
4897
4935
|
getSpacingClass("ml", ml)
|
|
4898
4936
|
);
|
|
4899
4937
|
const component = as ?? "div";
|
|
4900
|
-
return
|
|
4938
|
+
return React46.createElement(
|
|
4901
4939
|
component,
|
|
4902
4940
|
{
|
|
4903
4941
|
...props,
|
|
@@ -5139,7 +5177,7 @@ function assignRef(ref, value) {
|
|
|
5139
5177
|
ref.current = value;
|
|
5140
5178
|
}
|
|
5141
5179
|
}
|
|
5142
|
-
var useIsomorphicLayoutEffect = typeof window === "undefined" ?
|
|
5180
|
+
var useIsomorphicLayoutEffect = typeof window === "undefined" ? React46.useEffect : React46.useLayoutEffect;
|
|
5143
5181
|
var MiddleTruncate = ({
|
|
5144
5182
|
value,
|
|
5145
5183
|
minStartChars = DEFAULT_MIN_START_CHARS,
|
|
@@ -5151,9 +5189,9 @@ var MiddleTruncate = ({
|
|
|
5151
5189
|
ref: forwardedRef,
|
|
5152
5190
|
...props
|
|
5153
5191
|
}) => {
|
|
5154
|
-
const localRef =
|
|
5155
|
-
const [measurements, setMeasurements] =
|
|
5156
|
-
const setRef =
|
|
5192
|
+
const localRef = React46.useRef(null);
|
|
5193
|
+
const [measurements, setMeasurements] = React46.useState({ width: 0, font: "" });
|
|
5194
|
+
const setRef = React46.useCallback(
|
|
5157
5195
|
(node) => {
|
|
5158
5196
|
localRef.current = node;
|
|
5159
5197
|
assignRef(forwardedRef, node);
|
|
@@ -5195,7 +5233,7 @@ var MiddleTruncate = ({
|
|
|
5195
5233
|
observer.disconnect();
|
|
5196
5234
|
};
|
|
5197
5235
|
}, []);
|
|
5198
|
-
const parts =
|
|
5236
|
+
const parts = React46.useMemo(
|
|
5199
5237
|
() => computeMiddleTruncation(
|
|
5200
5238
|
value,
|
|
5201
5239
|
measurements.width,
|
|
@@ -5206,7 +5244,7 @@ var MiddleTruncate = ({
|
|
|
5206
5244
|
),
|
|
5207
5245
|
[ellipsis, measurements.font, measurements.width, minEndChars, minStartChars, value]
|
|
5208
5246
|
);
|
|
5209
|
-
const handleCopy =
|
|
5247
|
+
const handleCopy = React46.useCallback(
|
|
5210
5248
|
(event) => {
|
|
5211
5249
|
onCopy?.(event);
|
|
5212
5250
|
if (event.defaultPrevented) return;
|
|
@@ -5432,7 +5470,7 @@ function BulkActionBar({
|
|
|
5432
5470
|
position = "bottom",
|
|
5433
5471
|
fixed = true
|
|
5434
5472
|
}) {
|
|
5435
|
-
const [loadingActions, setLoadingActions] =
|
|
5473
|
+
const [loadingActions, setLoadingActions] = React46.useState(/* @__PURE__ */ new Set());
|
|
5436
5474
|
if (selectedCount === 0) {
|
|
5437
5475
|
return null;
|
|
5438
5476
|
}
|
|
@@ -5545,7 +5583,7 @@ function useBulkSelection({
|
|
|
5545
5583
|
items,
|
|
5546
5584
|
getItemId
|
|
5547
5585
|
}) {
|
|
5548
|
-
const [selectedIds, setSelectedIds] =
|
|
5586
|
+
const [selectedIds, setSelectedIds] = React46.useState(/* @__PURE__ */ new Set());
|
|
5549
5587
|
const selectedItems = items.filter((item) => selectedIds.has(getItemId(item)));
|
|
5550
5588
|
function isSelected(item) {
|
|
5551
5589
|
return selectedIds.has(getItemId(item));
|
|
@@ -5586,6 +5624,128 @@ function useBulkSelection({
|
|
|
5586
5624
|
selectItems
|
|
5587
5625
|
};
|
|
5588
5626
|
}
|
|
5627
|
+
|
|
5628
|
+
// src/tokens/components/calendar.ts
|
|
5629
|
+
var calendarTokens = {
|
|
5630
|
+
/** Square day cell. Matches the `sm` control height so a month reads as a form row grid. */
|
|
5631
|
+
cellSize: primitiveSizing.sm,
|
|
5632
|
+
cellRadius: primitiveRadius.md,
|
|
5633
|
+
cellFontSize: primitiveFontSize.sm,
|
|
5634
|
+
weekdayFontSize: primitiveFontSize.xs,
|
|
5635
|
+
captionFontSize: primitiveFontSize.sm,
|
|
5636
|
+
navButtonSize: primitiveSizing.tiny,
|
|
5637
|
+
navIconSize: primitiveFontSize.base,
|
|
5638
|
+
padding: primitiveSpacing[3],
|
|
5639
|
+
/** Gap between side-by-side months when `numberOfMonths > 1`. */
|
|
5640
|
+
monthGap: primitiveSpacing[4],
|
|
5641
|
+
captionGap: primitiveSpacing[2]
|
|
5642
|
+
};
|
|
5643
|
+
function getCalendarStyle(style) {
|
|
5644
|
+
return {
|
|
5645
|
+
"--calendar-cell-size": `${calendarTokens.cellSize}px`,
|
|
5646
|
+
"--calendar-cell-radius": `${calendarTokens.cellRadius}px`,
|
|
5647
|
+
"--calendar-cell-font-size": `${calendarTokens.cellFontSize}px`,
|
|
5648
|
+
"--calendar-weekday-font-size": `${calendarTokens.weekdayFontSize}px`,
|
|
5649
|
+
"--calendar-caption-font-size": `${calendarTokens.captionFontSize}px`,
|
|
5650
|
+
"--calendar-nav-button-size": `${calendarTokens.navButtonSize}px`,
|
|
5651
|
+
"--calendar-nav-icon-size": `${calendarTokens.navIconSize}px`,
|
|
5652
|
+
"--calendar-padding": `${calendarTokens.padding}px`,
|
|
5653
|
+
"--calendar-month-gap": `${calendarTokens.monthGap}px`,
|
|
5654
|
+
"--calendar-caption-gap": `${calendarTokens.captionGap}px`,
|
|
5655
|
+
...style
|
|
5656
|
+
};
|
|
5657
|
+
}
|
|
5658
|
+
var navButtonClassName = cn(
|
|
5659
|
+
"inline-flex size-[var(--calendar-nav-button-size)] items-center justify-center",
|
|
5660
|
+
"rounded-[var(--calendar-cell-radius)] text-muted-foreground",
|
|
5661
|
+
"transition-colors duration-micro ease-out",
|
|
5662
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
5663
|
+
"aria-disabled:pointer-events-none aria-disabled:opacity-40",
|
|
5664
|
+
"[&_svg]:size-[var(--calendar-nav-icon-size)]"
|
|
5665
|
+
);
|
|
5666
|
+
function CalendarDayButton({ day: _day, modifiers, className, ...props }) {
|
|
5667
|
+
const isRangeMiddle = Boolean(modifiers.range_middle);
|
|
5668
|
+
const isEndpoint = Boolean(modifiers.range_start) || Boolean(modifiers.range_end);
|
|
5669
|
+
const isPill = Boolean(modifiers.selected) && !isRangeMiddle;
|
|
5670
|
+
return /* @__PURE__ */ jsx(
|
|
5671
|
+
"button",
|
|
5672
|
+
{
|
|
5673
|
+
type: "button",
|
|
5674
|
+
"data-slot": "calendar-day-button",
|
|
5675
|
+
className: cn(
|
|
5676
|
+
"relative flex size-[var(--calendar-cell-size)] items-center justify-center",
|
|
5677
|
+
"text-[length:var(--calendar-cell-font-size)] font-normal tabular-nums",
|
|
5678
|
+
"transition-colors duration-micro ease-out",
|
|
5679
|
+
// No focus ring here: the unlayered global `:focus-visible` rule in
|
|
5680
|
+
// design-tokens/static/base.css already outranks Tailwind utilities.
|
|
5681
|
+
"disabled:pointer-events-none disabled:opacity-40",
|
|
5682
|
+
// A middle day must not round, or the band it sits in breaks into beads.
|
|
5683
|
+
isRangeMiddle ? "rounded-none" : "rounded-[var(--calendar-cell-radius)]",
|
|
5684
|
+
isPill && "bg-primary font-medium text-primary-foreground hover:bg-primary",
|
|
5685
|
+
isRangeMiddle && "bg-transparent text-accent-foreground hover:bg-accent/60",
|
|
5686
|
+
!isPill && !isRangeMiddle && "text-foreground hover:bg-accent hover:text-accent-foreground",
|
|
5687
|
+
// Today reads as an outline so it survives being selected on top of it.
|
|
5688
|
+
Boolean(modifiers.today) && !isPill && "font-medium text-primary",
|
|
5689
|
+
Boolean(modifiers.outside) && !isPill && "text-muted-foreground/60",
|
|
5690
|
+
isEndpoint && "z-10",
|
|
5691
|
+
className
|
|
5692
|
+
),
|
|
5693
|
+
...props
|
|
5694
|
+
}
|
|
5695
|
+
);
|
|
5696
|
+
}
|
|
5697
|
+
function CalendarChevron({ orientation, className, ...props }) {
|
|
5698
|
+
const Icon = orientation === "left" ? ChevronLeft : ChevronRight;
|
|
5699
|
+
return /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: cn("shrink-0", className), ...props });
|
|
5700
|
+
}
|
|
5701
|
+
function Calendar({
|
|
5702
|
+
className,
|
|
5703
|
+
classNames,
|
|
5704
|
+
showOutsideDays = true,
|
|
5705
|
+
style,
|
|
5706
|
+
...props
|
|
5707
|
+
}) {
|
|
5708
|
+
return /* @__PURE__ */ jsx(
|
|
5709
|
+
DayPicker,
|
|
5710
|
+
{
|
|
5711
|
+
"data-slot": "calendar",
|
|
5712
|
+
showOutsideDays,
|
|
5713
|
+
className: cn("p-[var(--calendar-padding)] text-foreground", className),
|
|
5714
|
+
style: getCalendarStyle(style),
|
|
5715
|
+
classNames: {
|
|
5716
|
+
[UI.Months]: "relative flex flex-col gap-[var(--calendar-month-gap)] sm:flex-row",
|
|
5717
|
+
[UI.Month]: "flex flex-col gap-[var(--calendar-caption-gap)]",
|
|
5718
|
+
[UI.MonthCaption]: "flex h-[var(--calendar-nav-button-size)] items-center justify-center",
|
|
5719
|
+
[UI.CaptionLabel]: "select-none text-[length:var(--calendar-caption-font-size)] font-medium text-foreground",
|
|
5720
|
+
[UI.Nav]: "absolute inset-x-0 top-0 z-10 flex items-center justify-between",
|
|
5721
|
+
[UI.PreviousMonthButton]: navButtonClassName,
|
|
5722
|
+
[UI.NextMonthButton]: navButtonClassName,
|
|
5723
|
+
[UI.MonthGrid]: "w-full border-collapse",
|
|
5724
|
+
[UI.Weekdays]: "flex",
|
|
5725
|
+
[UI.Weekday]: "w-[var(--calendar-cell-size)] select-none pb-1 text-[length:var(--calendar-weekday-font-size)] font-normal text-muted-foreground",
|
|
5726
|
+
[UI.Week]: "mt-0.5 flex w-full",
|
|
5727
|
+
// The cell carries the connective band; the button carries the pill.
|
|
5728
|
+
[UI.Day]: "relative p-0 text-center",
|
|
5729
|
+
[SelectionState.range_start]: "rounded-l-[var(--calendar-cell-radius)] bg-accent [&:has(+td[data-selected])]:rounded-r-none",
|
|
5730
|
+
[SelectionState.range_middle]: "bg-accent",
|
|
5731
|
+
[SelectionState.range_end]: "rounded-r-[var(--calendar-cell-radius)] bg-accent",
|
|
5732
|
+
[DayFlag.outside]: "text-muted-foreground/60",
|
|
5733
|
+
[DayFlag.disabled]: "opacity-40",
|
|
5734
|
+
[DayFlag.hidden]: "invisible",
|
|
5735
|
+
[UI.WeekNumber]: "w-[var(--calendar-cell-size)] select-none text-[length:var(--calendar-weekday-font-size)] text-muted-foreground",
|
|
5736
|
+
[UI.WeekNumberHeader]: "w-[var(--calendar-cell-size)]",
|
|
5737
|
+
[UI.Footer]: "pt-2 text-center text-xs text-muted-foreground",
|
|
5738
|
+
...classNames
|
|
5739
|
+
},
|
|
5740
|
+
components: {
|
|
5741
|
+
Chevron: CalendarChevron,
|
|
5742
|
+
DayButton: CalendarDayButton
|
|
5743
|
+
},
|
|
5744
|
+
...props
|
|
5745
|
+
}
|
|
5746
|
+
);
|
|
5747
|
+
}
|
|
5748
|
+
Calendar.displayName = "Calendar";
|
|
5589
5749
|
function CanvasRevealEffect({
|
|
5590
5750
|
animationSpeed = 0.4,
|
|
5591
5751
|
opacities = [0.3, 0.3, 0.3, 0.5, 0.5, 0.5, 0.8, 0.8, 0.8, 1],
|
|
@@ -5712,7 +5872,7 @@ function ShaderMaterial2({ source, uniforms, maxFps = 60 }) {
|
|
|
5712
5872
|
const timeLocation = material2.uniforms.u_time;
|
|
5713
5873
|
timeLocation.value = timestamp;
|
|
5714
5874
|
});
|
|
5715
|
-
const getUniforms =
|
|
5875
|
+
const getUniforms = React46__default.useCallback(() => {
|
|
5716
5876
|
const preparedUniforms = {};
|
|
5717
5877
|
for (const uniformName in uniforms) {
|
|
5718
5878
|
const uniform = uniforms[uniformName];
|
|
@@ -5823,7 +5983,7 @@ var CardDescription = ({
|
|
|
5823
5983
|
ref,
|
|
5824
5984
|
...props
|
|
5825
5985
|
}) => {
|
|
5826
|
-
return
|
|
5986
|
+
return React46.createElement(Tag, {
|
|
5827
5987
|
ref,
|
|
5828
5988
|
className: cn("text-sm text-muted-foreground", className),
|
|
5829
5989
|
...props
|
|
@@ -5917,9 +6077,9 @@ function CardSpotlight({
|
|
|
5917
6077
|
);
|
|
5918
6078
|
}
|
|
5919
6079
|
CardSpotlight.displayName = "CardSpotlight";
|
|
5920
|
-
var CarouselContext =
|
|
6080
|
+
var CarouselContext = React46.createContext(null);
|
|
5921
6081
|
function useCarousel() {
|
|
5922
|
-
const context =
|
|
6082
|
+
const context = React46.use(CarouselContext);
|
|
5923
6083
|
if (!context) {
|
|
5924
6084
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
5925
6085
|
}
|
|
@@ -5942,22 +6102,22 @@ var Carousel = ({
|
|
|
5942
6102
|
},
|
|
5943
6103
|
plugins
|
|
5944
6104
|
);
|
|
5945
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
5946
|
-
const [canScrollNext, setCanScrollNext] =
|
|
5947
|
-
const onSelect =
|
|
6105
|
+
const [canScrollPrev, setCanScrollPrev] = React46.useState(false);
|
|
6106
|
+
const [canScrollNext, setCanScrollNext] = React46.useState(false);
|
|
6107
|
+
const onSelect = React46.useCallback((api2) => {
|
|
5948
6108
|
if (!api2) {
|
|
5949
6109
|
return;
|
|
5950
6110
|
}
|
|
5951
6111
|
setCanScrollPrev(api2.canScrollPrev());
|
|
5952
6112
|
setCanScrollNext(api2.canScrollNext());
|
|
5953
6113
|
}, []);
|
|
5954
|
-
const scrollPrev =
|
|
6114
|
+
const scrollPrev = React46.useCallback(() => {
|
|
5955
6115
|
api?.scrollPrev();
|
|
5956
6116
|
}, [api]);
|
|
5957
|
-
const scrollNext =
|
|
6117
|
+
const scrollNext = React46.useCallback(() => {
|
|
5958
6118
|
api?.scrollNext();
|
|
5959
6119
|
}, [api]);
|
|
5960
|
-
const handleKeyDown =
|
|
6120
|
+
const handleKeyDown = React46.useCallback(
|
|
5961
6121
|
(event) => {
|
|
5962
6122
|
if (event.key === "ArrowLeft") {
|
|
5963
6123
|
event.preventDefault();
|
|
@@ -5969,13 +6129,13 @@ var Carousel = ({
|
|
|
5969
6129
|
},
|
|
5970
6130
|
[scrollPrev, scrollNext]
|
|
5971
6131
|
);
|
|
5972
|
-
|
|
6132
|
+
React46.useEffect(() => {
|
|
5973
6133
|
if (!api || !setApi) {
|
|
5974
6134
|
return;
|
|
5975
6135
|
}
|
|
5976
6136
|
setApi(api);
|
|
5977
6137
|
}, [api, setApi]);
|
|
5978
|
-
|
|
6138
|
+
React46.useEffect(() => {
|
|
5979
6139
|
if (!api) {
|
|
5980
6140
|
return;
|
|
5981
6141
|
}
|
|
@@ -6117,9 +6277,9 @@ var CarouselNext = ({
|
|
|
6117
6277
|
};
|
|
6118
6278
|
CarouselNext.displayName = "CarouselNext";
|
|
6119
6279
|
var THEMES = { light: "", dark: ".dark" };
|
|
6120
|
-
var ChartContext =
|
|
6280
|
+
var ChartContext = React46.createContext(null);
|
|
6121
6281
|
function useChart() {
|
|
6122
|
-
const context =
|
|
6282
|
+
const context = React46.use(ChartContext);
|
|
6123
6283
|
if (!context) {
|
|
6124
6284
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
6125
6285
|
}
|
|
@@ -6133,7 +6293,7 @@ var ChartContainer = ({
|
|
|
6133
6293
|
ref,
|
|
6134
6294
|
...props
|
|
6135
6295
|
}) => {
|
|
6136
|
-
const uniqueId =
|
|
6296
|
+
const uniqueId = React46.useId();
|
|
6137
6297
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
6138
6298
|
return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
|
|
6139
6299
|
"div",
|
|
@@ -6206,7 +6366,7 @@ var ChartTooltipContent = ({
|
|
|
6206
6366
|
labelKey
|
|
6207
6367
|
}) => {
|
|
6208
6368
|
const { config } = useChart();
|
|
6209
|
-
const tooltipLabel =
|
|
6369
|
+
const tooltipLabel = React46.useMemo(() => {
|
|
6210
6370
|
if (hideLabel || !payload?.length) {
|
|
6211
6371
|
return null;
|
|
6212
6372
|
}
|
|
@@ -6445,7 +6605,7 @@ var Checkbox = ({
|
|
|
6445
6605
|
id,
|
|
6446
6606
|
name
|
|
6447
6607
|
}) => {
|
|
6448
|
-
const [internalChecked, setInternalChecked] =
|
|
6608
|
+
const [internalChecked, setInternalChecked] = React46__default.useState(defaultChecked);
|
|
6449
6609
|
const isControlled = controlledChecked !== void 0;
|
|
6450
6610
|
const checked = isControlled ? controlledChecked : internalChecked;
|
|
6451
6611
|
return /* @__PURE__ */ jsxs(
|
|
@@ -6512,9 +6672,9 @@ function CheckboxGroup({
|
|
|
6512
6672
|
);
|
|
6513
6673
|
}
|
|
6514
6674
|
CheckboxGroup.displayName = "CheckboxGroup";
|
|
6515
|
-
var ChoiceboxContext =
|
|
6675
|
+
var ChoiceboxContext = React46.createContext(null);
|
|
6516
6676
|
function useChoiceboxContext() {
|
|
6517
|
-
const context =
|
|
6677
|
+
const context = React46.use(ChoiceboxContext);
|
|
6518
6678
|
if (!context) {
|
|
6519
6679
|
throw new Error("ChoiceboxGroup.Item must be used within a ChoiceboxGroup");
|
|
6520
6680
|
}
|
|
@@ -6568,10 +6728,10 @@ function ChoiceboxItem({
|
|
|
6568
6728
|
navigateItem,
|
|
6569
6729
|
getFirstItemValue
|
|
6570
6730
|
} = useChoiceboxContext();
|
|
6571
|
-
const ref =
|
|
6731
|
+
const ref = React46.useRef(null);
|
|
6572
6732
|
const isDisabled = groupDisabled || itemDisabled;
|
|
6573
6733
|
const isSelected = type === "radio" ? groupValue === value : Array.isArray(groupValue) && groupValue.includes(value);
|
|
6574
|
-
|
|
6734
|
+
React46.useEffect(() => {
|
|
6575
6735
|
const registeredValue = value;
|
|
6576
6736
|
registerItem(registeredValue, ref.current);
|
|
6577
6737
|
return () => registerItem(registeredValue, null);
|
|
@@ -6784,15 +6944,15 @@ function ChoiceboxGroupRoot({
|
|
|
6784
6944
|
className,
|
|
6785
6945
|
children
|
|
6786
6946
|
}) {
|
|
6787
|
-
const [internalValue, setInternalValue] =
|
|
6947
|
+
const [internalValue, setInternalValue] = React46.useState(() => {
|
|
6788
6948
|
if (controlledValue !== void 0) return controlledValue;
|
|
6789
6949
|
if (defaultValue !== void 0) return defaultValue;
|
|
6790
6950
|
return type === "checkbox" ? [] : "";
|
|
6791
6951
|
});
|
|
6792
6952
|
const currentValue = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
6793
|
-
const itemRefs =
|
|
6794
|
-
const itemOrder =
|
|
6795
|
-
const registerItem =
|
|
6953
|
+
const itemRefs = React46.useRef(/* @__PURE__ */ new Map());
|
|
6954
|
+
const itemOrder = React46.useRef([]);
|
|
6955
|
+
const registerItem = React46.useCallback((itemValue, el) => {
|
|
6796
6956
|
if (el) {
|
|
6797
6957
|
itemRefs.current.set(itemValue, el);
|
|
6798
6958
|
if (!itemOrder.current.includes(itemValue)) {
|
|
@@ -6803,7 +6963,7 @@ function ChoiceboxGroupRoot({
|
|
|
6803
6963
|
itemOrder.current = itemOrder.current.filter((v) => v !== itemValue);
|
|
6804
6964
|
}
|
|
6805
6965
|
}, []);
|
|
6806
|
-
const onItemSelect =
|
|
6966
|
+
const onItemSelect = React46.useCallback(
|
|
6807
6967
|
(itemValue) => {
|
|
6808
6968
|
if (type === "radio") {
|
|
6809
6969
|
if (controlledValue === void 0) setInternalValue(itemValue);
|
|
@@ -6817,7 +6977,7 @@ function ChoiceboxGroupRoot({
|
|
|
6817
6977
|
},
|
|
6818
6978
|
[type, currentValue, controlledValue, onChange]
|
|
6819
6979
|
);
|
|
6820
|
-
const navigateItem =
|
|
6980
|
+
const navigateItem = React46.useCallback(
|
|
6821
6981
|
(fromValue, dir) => {
|
|
6822
6982
|
const order = itemOrder.current;
|
|
6823
6983
|
let idx = order.indexOf(fromValue);
|
|
@@ -6837,7 +6997,7 @@ function ChoiceboxGroupRoot({
|
|
|
6837
6997
|
},
|
|
6838
6998
|
[onItemSelect]
|
|
6839
6999
|
);
|
|
6840
|
-
const getFirstItemValue =
|
|
7000
|
+
const getFirstItemValue = React46.useCallback(() => itemOrder.current[0], []);
|
|
6841
7001
|
if (process.env.NODE_ENV !== "production") {
|
|
6842
7002
|
if (type === "checkbox" && typeof controlledValue === "string") {
|
|
6843
7003
|
console.warn(
|
|
@@ -6850,7 +7010,7 @@ function ChoiceboxGroupRoot({
|
|
|
6850
7010
|
);
|
|
6851
7011
|
}
|
|
6852
7012
|
}
|
|
6853
|
-
const contextValue =
|
|
7013
|
+
const contextValue = React46.useMemo(
|
|
6854
7014
|
() => ({
|
|
6855
7015
|
type,
|
|
6856
7016
|
value: currentValue,
|
|
@@ -6862,7 +7022,7 @@ function ChoiceboxGroupRoot({
|
|
|
6862
7022
|
}),
|
|
6863
7023
|
[type, currentValue, onItemSelect, disabled, registerItem, navigateItem, getFirstItemValue]
|
|
6864
7024
|
);
|
|
6865
|
-
const labelId =
|
|
7025
|
+
const labelId = React46.useId();
|
|
6866
7026
|
const containerClass = cn(
|
|
6867
7027
|
"flex",
|
|
6868
7028
|
direction === "row" ? "flex-row" : "flex-col",
|
|
@@ -7136,7 +7296,7 @@ var overlayPrimitiveClassNames = {
|
|
|
7136
7296
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
7137
7297
|
].join(" ")
|
|
7138
7298
|
};
|
|
7139
|
-
var DropdownMenuContext =
|
|
7299
|
+
var DropdownMenuContext = React46.createContext(null);
|
|
7140
7300
|
function DropdownMenu({
|
|
7141
7301
|
open: controlledOpen,
|
|
7142
7302
|
defaultOpen = false,
|
|
@@ -7144,7 +7304,7 @@ function DropdownMenu({
|
|
|
7144
7304
|
children,
|
|
7145
7305
|
...props
|
|
7146
7306
|
}) {
|
|
7147
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
7307
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React46.useState(defaultOpen);
|
|
7148
7308
|
const open = controlledOpen ?? uncontrolledOpen;
|
|
7149
7309
|
function setOpen(nextOpen, eventDetails) {
|
|
7150
7310
|
if (controlledOpen === void 0) {
|
|
@@ -7163,11 +7323,11 @@ var DropdownMenuTrigger = ({
|
|
|
7163
7323
|
ref,
|
|
7164
7324
|
...props
|
|
7165
7325
|
}) => {
|
|
7166
|
-
const context =
|
|
7326
|
+
const context = React46.use(DropdownMenuContext);
|
|
7167
7327
|
function openFromTrigger() {
|
|
7168
7328
|
context?.setOpen(true);
|
|
7169
7329
|
}
|
|
7170
|
-
const childRenderElement = asChild &&
|
|
7330
|
+
const childRenderElement = asChild && React46.isValidElement(children) ? React46.cloneElement(children, {
|
|
7171
7331
|
onMouseDown: (event) => {
|
|
7172
7332
|
children.props.onMouseDown?.(event);
|
|
7173
7333
|
if (!event.defaultPrevented) {
|
|
@@ -7220,7 +7380,7 @@ var DropdownMenuSubContent = ({
|
|
|
7220
7380
|
style,
|
|
7221
7381
|
ref,
|
|
7222
7382
|
...props
|
|
7223
|
-
}) => /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, { children: /* @__PURE__ */ jsx(
|
|
7383
|
+
}) => /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, { style: { zIndex: overlayZIndex.popover }, children: /* @__PURE__ */ jsx(
|
|
7224
7384
|
Menu$1.Popup,
|
|
7225
7385
|
{
|
|
7226
7386
|
ref,
|
|
@@ -7250,6 +7410,7 @@ var DropdownMenuContent = ({
|
|
|
7250
7410
|
align,
|
|
7251
7411
|
alignOffset,
|
|
7252
7412
|
side,
|
|
7413
|
+
style: { zIndex: overlayZIndex.popover },
|
|
7253
7414
|
children: /* @__PURE__ */ jsx(
|
|
7254
7415
|
Menu$1.Popup,
|
|
7255
7416
|
{
|
|
@@ -7970,7 +8131,7 @@ var Collapse = function Collapse2({
|
|
|
7970
8131
|
}
|
|
7971
8132
|
);
|
|
7972
8133
|
};
|
|
7973
|
-
var CollapsibleContext =
|
|
8134
|
+
var CollapsibleContext = React46.createContext({});
|
|
7974
8135
|
var Collapsible = ({
|
|
7975
8136
|
className,
|
|
7976
8137
|
open: openProp,
|
|
@@ -7981,10 +8142,10 @@ var Collapsible = ({
|
|
|
7981
8142
|
ref,
|
|
7982
8143
|
...props
|
|
7983
8144
|
}) => {
|
|
7984
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
8145
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React46.useState(defaultOpen || false);
|
|
7985
8146
|
const isControlled = openProp !== void 0;
|
|
7986
8147
|
const open = isControlled ? openProp : uncontrolledOpen;
|
|
7987
|
-
const handleOpenChange =
|
|
8148
|
+
const handleOpenChange = React46.useCallback(
|
|
7988
8149
|
(nextOpen) => {
|
|
7989
8150
|
if (!isControlled) {
|
|
7990
8151
|
setUncontrolledOpen(nextOpen);
|
|
@@ -8013,8 +8174,8 @@ var CollapsibleTrigger = ({
|
|
|
8013
8174
|
ref,
|
|
8014
8175
|
...props
|
|
8015
8176
|
}) => {
|
|
8016
|
-
const { open, onOpenChange, disabled } =
|
|
8017
|
-
const handleClick =
|
|
8177
|
+
const { open, onOpenChange, disabled } = React46.use(CollapsibleContext);
|
|
8178
|
+
const handleClick = React46.useCallback(
|
|
8018
8179
|
(e) => {
|
|
8019
8180
|
if (disabled) return;
|
|
8020
8181
|
onOpenChange?.(!open);
|
|
@@ -8022,8 +8183,8 @@ var CollapsibleTrigger = ({
|
|
|
8022
8183
|
},
|
|
8023
8184
|
[disabled, open, onOpenChange, props.onClick]
|
|
8024
8185
|
);
|
|
8025
|
-
if (asChild &&
|
|
8026
|
-
return
|
|
8186
|
+
if (asChild && React46.isValidElement(children)) {
|
|
8187
|
+
return React46.cloneElement(children, {
|
|
8027
8188
|
ref,
|
|
8028
8189
|
onClick: handleClick,
|
|
8029
8190
|
"data-state": open ? "open" : "closed",
|
|
@@ -8057,7 +8218,7 @@ var CollapsibleContent = ({
|
|
|
8057
8218
|
ref,
|
|
8058
8219
|
...props
|
|
8059
8220
|
}) => {
|
|
8060
|
-
const { open } =
|
|
8221
|
+
const { open } = React46.use(CollapsibleContext);
|
|
8061
8222
|
const shouldReduceMotion = useReducedMotion();
|
|
8062
8223
|
return /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: open && /* @__PURE__ */ jsx(
|
|
8063
8224
|
motion.div,
|
|
@@ -8127,7 +8288,7 @@ function ColorBadge({
|
|
|
8127
8288
|
className
|
|
8128
8289
|
);
|
|
8129
8290
|
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8130
|
-
icon && /* @__PURE__ */ jsx("span", { className: cn("flex items-center justify-center", iconSizes[size]), children:
|
|
8291
|
+
icon && /* @__PURE__ */ jsx("span", { className: cn("flex items-center justify-center", iconSizes[size]), children: React46.isValidElement(icon) ? React46.cloneElement(icon, {
|
|
8131
8292
|
className: cn(
|
|
8132
8293
|
"size-full",
|
|
8133
8294
|
icon.props.className
|
|
@@ -8174,7 +8335,7 @@ var DialogTrigger = ({
|
|
|
8174
8335
|
ref,
|
|
8175
8336
|
...props
|
|
8176
8337
|
}) => {
|
|
8177
|
-
if (asChild &&
|
|
8338
|
+
if (asChild && React46.isValidElement(children)) {
|
|
8178
8339
|
return /* @__PURE__ */ jsx(
|
|
8179
8340
|
Dialog$1.Trigger,
|
|
8180
8341
|
{
|
|
@@ -8193,7 +8354,7 @@ var DialogClose = ({
|
|
|
8193
8354
|
ref,
|
|
8194
8355
|
...props
|
|
8195
8356
|
}) => {
|
|
8196
|
-
if (asChild &&
|
|
8357
|
+
if (asChild && React46.isValidElement(children)) {
|
|
8197
8358
|
return /* @__PURE__ */ jsx(
|
|
8198
8359
|
Dialog$1.Close,
|
|
8199
8360
|
{
|
|
@@ -8332,7 +8493,7 @@ function subscribePlatform() {
|
|
|
8332
8493
|
return () => void 0;
|
|
8333
8494
|
}
|
|
8334
8495
|
function usePlatform() {
|
|
8335
|
-
return
|
|
8496
|
+
return React46.useSyncExternalStore(subscribePlatform, getClientPlatform, () => "apple");
|
|
8336
8497
|
}
|
|
8337
8498
|
function normalizeKey(children) {
|
|
8338
8499
|
if (typeof children !== "string") {
|
|
@@ -8517,7 +8678,7 @@ var CommandResults = ({
|
|
|
8517
8678
|
CommandResults.displayName = "CommandResults";
|
|
8518
8679
|
var shortcutKeyId = (key) => {
|
|
8519
8680
|
if (typeof key === "string" || typeof key === "number") return String(key);
|
|
8520
|
-
if (
|
|
8681
|
+
if (React46.isValidElement(key) && key.key != null) return String(key.key);
|
|
8521
8682
|
return String(key);
|
|
8522
8683
|
};
|
|
8523
8684
|
var CommandShortcut = ({ className, keys, label, children, ...props }) => {
|
|
@@ -8548,7 +8709,7 @@ function Popover({ ...props }) {
|
|
|
8548
8709
|
return /* @__PURE__ */ jsx(Popover$1.Root, { "data-slot": "popover", ...props });
|
|
8549
8710
|
}
|
|
8550
8711
|
function PopoverTrigger({ asChild, children, render, ...props }) {
|
|
8551
|
-
const renderElement = asChild &&
|
|
8712
|
+
const renderElement = asChild && React46.isValidElement(children) ? children : render;
|
|
8552
8713
|
return /* @__PURE__ */ jsx(
|
|
8553
8714
|
Popover$1.Trigger,
|
|
8554
8715
|
{
|
|
@@ -8677,7 +8838,11 @@ var comboboxSizeTokens = {
|
|
|
8677
8838
|
var comboboxTriggerVariants = cva(
|
|
8678
8839
|
[
|
|
8679
8840
|
"flex w-full items-center justify-between gap-2 whitespace-nowrap",
|
|
8680
|
-
|
|
8841
|
+
// --input-radius, not the generic md step: this trigger is a form control and
|
|
8842
|
+
// should round like Input and Select do. Reading the scale step meant it
|
|
8843
|
+
// tracked whatever a language did to medium surfaces instead of what it
|
|
8844
|
+
// decided for its fields.
|
|
8845
|
+
"h-[var(--combobox-trigger-height)] rounded-[var(--input-radius,var(--radius-md))] border border-input bg-background px-[var(--combobox-trigger-padding-x)]",
|
|
8681
8846
|
"text-[length:var(--combobox-font-size)] ring-offset-background",
|
|
8682
8847
|
"transition-colors duration-micro ease-out",
|
|
8683
8848
|
"placeholder:text-muted-foreground",
|
|
@@ -8702,9 +8867,9 @@ var comboboxTriggerVariants = cva(
|
|
|
8702
8867
|
}
|
|
8703
8868
|
}
|
|
8704
8869
|
);
|
|
8705
|
-
var ComboboxContext =
|
|
8870
|
+
var ComboboxContext = React46.createContext(null);
|
|
8706
8871
|
function useComboboxContext() {
|
|
8707
|
-
const ctx =
|
|
8872
|
+
const ctx = React46.use(ComboboxContext);
|
|
8708
8873
|
if (!ctx) {
|
|
8709
8874
|
throw new Error("Combobox sub-components must be used within <Combobox>");
|
|
8710
8875
|
}
|
|
@@ -8720,7 +8885,7 @@ var ComboboxOptionItem = ({
|
|
|
8720
8885
|
}) => {
|
|
8721
8886
|
const { selectedValue, onSelect } = useComboboxContext();
|
|
8722
8887
|
const isSelected = selectedValue === value;
|
|
8723
|
-
const keywords =
|
|
8888
|
+
const keywords = React46.useMemo(() => {
|
|
8724
8889
|
if (label) return [label];
|
|
8725
8890
|
if (typeof children === "string") return [children];
|
|
8726
8891
|
return void 0;
|
|
@@ -8810,14 +8975,14 @@ function ComboboxRoot({
|
|
|
8810
8975
|
"aria-label": ariaLabel,
|
|
8811
8976
|
...props
|
|
8812
8977
|
}) {
|
|
8813
|
-
const [internalValue, setInternalValue] =
|
|
8978
|
+
const [internalValue, setInternalValue] = React46.useState(defaultValue);
|
|
8814
8979
|
const selectedValue = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
8815
8980
|
const normalizedSize = comboboxSizeMap[size];
|
|
8816
8981
|
const isErrored = errored ?? error;
|
|
8817
|
-
const selectedValueRef =
|
|
8982
|
+
const selectedValueRef = React46.useRef(selectedValue);
|
|
8818
8983
|
selectedValueRef.current = selectedValue;
|
|
8819
|
-
const [open, setOpen] =
|
|
8820
|
-
const handleSelect =
|
|
8984
|
+
const [open, setOpen] = React46.useState(false);
|
|
8985
|
+
const handleSelect = React46.useCallback(
|
|
8821
8986
|
(incoming) => {
|
|
8822
8987
|
const current = selectedValueRef.current;
|
|
8823
8988
|
const next = incoming === current ? null : incoming;
|
|
@@ -8827,19 +8992,19 @@ function ComboboxRoot({
|
|
|
8827
8992
|
},
|
|
8828
8993
|
[controlledValue, onChange]
|
|
8829
8994
|
);
|
|
8830
|
-
const selectedLabel =
|
|
8995
|
+
const selectedLabel = React46.useMemo(() => {
|
|
8831
8996
|
if (!selectedValue) return "";
|
|
8832
8997
|
if (!options) return selectedValue;
|
|
8833
8998
|
return options.find((o) => o.value === selectedValue)?.label ?? selectedValue;
|
|
8834
8999
|
}, [options, selectedValue]);
|
|
8835
|
-
const labelId =
|
|
8836
|
-
const triggerId =
|
|
8837
|
-
const listboxId =
|
|
8838
|
-
const contextValue =
|
|
9000
|
+
const labelId = React46.useId();
|
|
9001
|
+
const triggerId = React46.useId();
|
|
9002
|
+
const listboxId = React46.useId();
|
|
9003
|
+
const contextValue = React46.useMemo(
|
|
8839
9004
|
() => ({ selectedValue: selectedValue ?? null, onSelect: handleSelect }),
|
|
8840
9005
|
[selectedValue, handleSelect]
|
|
8841
9006
|
);
|
|
8842
|
-
const groupedOptions =
|
|
9007
|
+
const groupedOptions = React46.useMemo(() => {
|
|
8843
9008
|
if (!options) return null;
|
|
8844
9009
|
const grouped = /* @__PURE__ */ new Map();
|
|
8845
9010
|
for (const opt of options) {
|
|
@@ -8977,7 +9142,7 @@ var CommandMenuItem = ({
|
|
|
8977
9142
|
ref,
|
|
8978
9143
|
...props
|
|
8979
9144
|
}) => {
|
|
8980
|
-
const handleSelect =
|
|
9145
|
+
const handleSelect = React46.useCallback(
|
|
8981
9146
|
(value) => {
|
|
8982
9147
|
onSelect?.(value);
|
|
8983
9148
|
callback?.();
|
|
@@ -9250,7 +9415,7 @@ var inputControlButtonVariants = cva(
|
|
|
9250
9415
|
[
|
|
9251
9416
|
"absolute right-[var(--input-control-inset)] top-1/2 flex size-[var(--input-control-size)] -translate-y-1/2 items-center justify-center",
|
|
9252
9417
|
"rounded-[var(--radius-sm)] text-muted-foreground transition-colors duration-micro ease-out",
|
|
9253
|
-
"hover:bg-accent hover:text-foreground",
|
|
9418
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
9254
9419
|
"focus-visible:outline-none",
|
|
9255
9420
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
9256
9421
|
"[&_svg]:size-[var(--input-control-icon-size)]"
|
|
@@ -9345,16 +9510,16 @@ var Input = ({
|
|
|
9345
9510
|
...rest
|
|
9346
9511
|
} = props;
|
|
9347
9512
|
const isControlled = value !== void 0;
|
|
9348
|
-
const baseId =
|
|
9349
|
-
const inputRef =
|
|
9513
|
+
const baseId = React46.useId();
|
|
9514
|
+
const inputRef = React46.useRef(null);
|
|
9350
9515
|
const descriptionId = description && id ? `${id}-description` : void 0;
|
|
9351
9516
|
const errorId = typeof error === "string" && id ? `${id}-error` : void 0;
|
|
9352
9517
|
const prefixDescriptionId = isTextAffix(prefix) ? `${id ?? baseId}-prefix` : void 0;
|
|
9353
9518
|
const suffixDescriptionId = isTextAffix(suffix) ? `${id ?? baseId}-suffix` : void 0;
|
|
9354
|
-
const [internalValue, setInternalValue] =
|
|
9519
|
+
const [internalValue, setInternalValue] = React46.useState(
|
|
9355
9520
|
typeof defaultValue === "string" || typeof defaultValue === "number" ? String(defaultValue) : ""
|
|
9356
9521
|
);
|
|
9357
|
-
const [passwordVisible, setPasswordVisible] =
|
|
9522
|
+
const [passwordVisible, setPasswordVisible] = React46.useState(false);
|
|
9358
9523
|
const currentValue = isControlled ? String(value ?? "") : internalValue;
|
|
9359
9524
|
const clearOnEscapeEnabled = clearOnEscape ?? type === "search";
|
|
9360
9525
|
const canRevealPassword = Boolean(revealable && type === "password");
|
|
@@ -9374,7 +9539,7 @@ var Input = ({
|
|
|
9374
9539
|
errorId
|
|
9375
9540
|
);
|
|
9376
9541
|
const valueProps = isControlled ? { value } : clearable || shortcut || clearOnEscapeEnabled ? { value: currentValue } : { defaultValue };
|
|
9377
|
-
const setInputRef =
|
|
9542
|
+
const setInputRef = React46.useCallback(
|
|
9378
9543
|
(node) => {
|
|
9379
9544
|
const input = node instanceof HTMLInputElement ? node : null;
|
|
9380
9545
|
inputRef.current = input;
|
|
@@ -9382,7 +9547,7 @@ var Input = ({
|
|
|
9382
9547
|
},
|
|
9383
9548
|
[forwardedRef]
|
|
9384
9549
|
);
|
|
9385
|
-
const emitNativeInput =
|
|
9550
|
+
const emitNativeInput = React46.useCallback(
|
|
9386
9551
|
(nextValue) => {
|
|
9387
9552
|
const input = inputRef.current;
|
|
9388
9553
|
if (!input) {
|
|
@@ -9399,7 +9564,7 @@ var Input = ({
|
|
|
9399
9564
|
},
|
|
9400
9565
|
[isControlled, onValueChange]
|
|
9401
9566
|
);
|
|
9402
|
-
const syncInputValue =
|
|
9567
|
+
const syncInputValue = React46.useCallback(
|
|
9403
9568
|
(event) => {
|
|
9404
9569
|
if (!isControlled) setInternalValue(event.currentTarget.value);
|
|
9405
9570
|
onValueChange?.(event.currentTarget.value);
|
|
@@ -9407,12 +9572,12 @@ var Input = ({
|
|
|
9407
9572
|
},
|
|
9408
9573
|
[isControlled, onChange, onValueChange]
|
|
9409
9574
|
);
|
|
9410
|
-
const handleClear =
|
|
9575
|
+
const handleClear = React46.useCallback(() => {
|
|
9411
9576
|
emitNativeInput("");
|
|
9412
9577
|
onClear?.();
|
|
9413
9578
|
inputRef.current?.focus();
|
|
9414
9579
|
}, [emitNativeInput, onClear]);
|
|
9415
|
-
const handleKeyDown =
|
|
9580
|
+
const handleKeyDown = React46.useCallback(
|
|
9416
9581
|
(event) => {
|
|
9417
9582
|
onKeyDown?.(event);
|
|
9418
9583
|
if (event.defaultPrevented || event.key !== "Escape" || !clearOnEscapeEnabled || currentValue.length === 0 || disabled) {
|
|
@@ -9559,7 +9724,7 @@ function ConfirmDialog({
|
|
|
9559
9724
|
icon,
|
|
9560
9725
|
children
|
|
9561
9726
|
}) {
|
|
9562
|
-
const [isLoading, setIsLoading] =
|
|
9727
|
+
const [isLoading, setIsLoading] = React46.useState(false);
|
|
9563
9728
|
const handleConfirm = async () => {
|
|
9564
9729
|
setIsLoading(true);
|
|
9565
9730
|
try {
|
|
@@ -9664,13 +9829,13 @@ function DestructiveActionModalContent({
|
|
|
9664
9829
|
cancelLabel = "Cancel",
|
|
9665
9830
|
className
|
|
9666
9831
|
}) {
|
|
9667
|
-
const [value, setValue] =
|
|
9668
|
-
const inputRef =
|
|
9669
|
-
const inputId =
|
|
9670
|
-
const promptId =
|
|
9671
|
-
const descriptionId =
|
|
9672
|
-
const errorId =
|
|
9673
|
-
const irreversibleId =
|
|
9832
|
+
const [value, setValue] = React46.useState("");
|
|
9833
|
+
const inputRef = React46.useRef(null);
|
|
9834
|
+
const inputId = React46.useId();
|
|
9835
|
+
const promptId = React46.useId();
|
|
9836
|
+
const descriptionId = React46.useId();
|
|
9837
|
+
const errorId = React46.useId();
|
|
9838
|
+
const irreversibleId = React46.useId();
|
|
9674
9839
|
const isVerified = value === verificationPhrase;
|
|
9675
9840
|
const errorMessage2 = getErrorMessage(error);
|
|
9676
9841
|
const describedBy = [
|
|
@@ -9678,7 +9843,7 @@ function DestructiveActionModalContent({
|
|
|
9678
9843
|
errorMessage2 ? errorId : void 0,
|
|
9679
9844
|
irreversibleDescription ? irreversibleId : void 0
|
|
9680
9845
|
].filter(Boolean).join(" ");
|
|
9681
|
-
|
|
9846
|
+
React46.useEffect(() => {
|
|
9682
9847
|
if (!open) return;
|
|
9683
9848
|
const timer = window.setTimeout(() => inputRef.current?.focus(), 0);
|
|
9684
9849
|
return () => window.clearTimeout(timer);
|
|
@@ -9848,8 +10013,8 @@ function BulkActionConfirmDialogContent({
|
|
|
9848
10013
|
description,
|
|
9849
10014
|
previewItems = EMPTY_PREVIEW_ITEMS
|
|
9850
10015
|
}) {
|
|
9851
|
-
const [inputValue, setInputValue] =
|
|
9852
|
-
const [isLoading, setIsLoading] =
|
|
10016
|
+
const [inputValue, setInputValue] = React46.useState("");
|
|
10017
|
+
const [isLoading, setIsLoading] = React46.useState(false);
|
|
9853
10018
|
const needsInputConfirmation = requireInputConfirmation && itemCount >= inputConfirmationThreshold;
|
|
9854
10019
|
const confirmationText = itemCount.toString();
|
|
9855
10020
|
const isConfirmEnabled = !needsInputConfirmation || inputValue === confirmationText;
|
|
@@ -9959,8 +10124,8 @@ function BulkActionConfirmDialogContent({
|
|
|
9959
10124
|
function useConfirmDialog({
|
|
9960
10125
|
onConfirm
|
|
9961
10126
|
}) {
|
|
9962
|
-
const [isOpen, setIsOpen] =
|
|
9963
|
-
const [data, setData] =
|
|
10127
|
+
const [isOpen, setIsOpen] = React46.useState(false);
|
|
10128
|
+
const [data, setData] = React46.useState(null);
|
|
9964
10129
|
function open(newData) {
|
|
9965
10130
|
setData(newData);
|
|
9966
10131
|
setIsOpen(true);
|
|
@@ -10070,31 +10235,31 @@ var ContextCardTrigger = ({
|
|
|
10070
10235
|
children,
|
|
10071
10236
|
className
|
|
10072
10237
|
}) => {
|
|
10073
|
-
const [open, setOpen] =
|
|
10074
|
-
const triggerRef =
|
|
10075
|
-
const panelRef =
|
|
10076
|
-
const openTimerRef =
|
|
10077
|
-
const closeTimerRef =
|
|
10078
|
-
const clearTimers =
|
|
10238
|
+
const [open, setOpen] = React46.useState(false);
|
|
10239
|
+
const triggerRef = React46.useRef(null);
|
|
10240
|
+
const panelRef = React46.useRef(null);
|
|
10241
|
+
const openTimerRef = React46.useRef(null);
|
|
10242
|
+
const closeTimerRef = React46.useRef(null);
|
|
10243
|
+
const clearTimers = React46.useCallback(() => {
|
|
10079
10244
|
if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
|
|
10080
10245
|
if (closeTimerRef.current) window.clearTimeout(closeTimerRef.current);
|
|
10081
10246
|
openTimerRef.current = null;
|
|
10082
10247
|
closeTimerRef.current = null;
|
|
10083
10248
|
}, []);
|
|
10084
|
-
const scheduleOpen =
|
|
10249
|
+
const scheduleOpen = React46.useCallback(() => {
|
|
10085
10250
|
clearTimers();
|
|
10086
10251
|
openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);
|
|
10087
10252
|
}, [clearTimers, openDelay]);
|
|
10088
|
-
const scheduleClose =
|
|
10253
|
+
const scheduleClose = React46.useCallback(() => {
|
|
10089
10254
|
clearTimers();
|
|
10090
10255
|
closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);
|
|
10091
10256
|
}, [clearTimers, closeDelay]);
|
|
10092
|
-
const closeNow =
|
|
10257
|
+
const closeNow = React46.useCallback(() => {
|
|
10093
10258
|
clearTimers();
|
|
10094
10259
|
setOpen(false);
|
|
10095
10260
|
}, [clearTimers]);
|
|
10096
|
-
|
|
10097
|
-
const triggerElement =
|
|
10261
|
+
React46.useEffect(() => clearTimers, [clearTimers]);
|
|
10262
|
+
const triggerElement = React46.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
|
|
10098
10263
|
const renderTrigger = triggerElement;
|
|
10099
10264
|
return /* @__PURE__ */ jsxs(Popover$1.Root, { open, onOpenChange: setOpen, children: [
|
|
10100
10265
|
/* @__PURE__ */ jsx(
|
|
@@ -10225,7 +10390,7 @@ var ContextMenuTrigger = ({
|
|
|
10225
10390
|
ref,
|
|
10226
10391
|
...props
|
|
10227
10392
|
}) => {
|
|
10228
|
-
const renderElement = asChild &&
|
|
10393
|
+
const renderElement = asChild && React46.isValidElement(children) ? children : render;
|
|
10229
10394
|
return /* @__PURE__ */ jsx(
|
|
10230
10395
|
ContextMenu$1.Trigger,
|
|
10231
10396
|
{
|
|
@@ -10613,8 +10778,8 @@ function CopyableField({ value, label, truncate = true, className }) {
|
|
|
10613
10778
|
}
|
|
10614
10779
|
function useCopyToClipboard(options = {}) {
|
|
10615
10780
|
const { successMessage = "Copied to clipboard", showToast = true, timeout = 2e3 } = options;
|
|
10616
|
-
const [copied, setCopied] =
|
|
10617
|
-
const copy =
|
|
10781
|
+
const [copied, setCopied] = React46.useState(false);
|
|
10782
|
+
const copy = React46.useCallback(
|
|
10618
10783
|
async (value) => {
|
|
10619
10784
|
try {
|
|
10620
10785
|
await navigator.clipboard.writeText(value);
|
|
@@ -10756,7 +10921,7 @@ var EmptyStateRoot = ({
|
|
|
10756
10921
|
...props
|
|
10757
10922
|
}) => {
|
|
10758
10923
|
const actions = children ?? [action, link].filter(Boolean);
|
|
10759
|
-
const hasActions =
|
|
10924
|
+
const hasActions = React46.Children.toArray(actions).length > 0;
|
|
10760
10925
|
return /* @__PURE__ */ jsx(
|
|
10761
10926
|
"section",
|
|
10762
10927
|
{
|
|
@@ -11283,6 +11448,189 @@ function DataList({
|
|
|
11283
11448
|
);
|
|
11284
11449
|
}
|
|
11285
11450
|
DataList.displayName = "DataList";
|
|
11451
|
+
var ISO_DATE_FORMAT = "yyyy-MM-dd";
|
|
11452
|
+
function parseIsoDate(value) {
|
|
11453
|
+
if (!value) return void 0;
|
|
11454
|
+
const parsed = parse(value, ISO_DATE_FORMAT, /* @__PURE__ */ new Date());
|
|
11455
|
+
return isValid(parsed) ? parsed : void 0;
|
|
11456
|
+
}
|
|
11457
|
+
function toIsoDate(date) {
|
|
11458
|
+
return format(date, ISO_DATE_FORMAT);
|
|
11459
|
+
}
|
|
11460
|
+
function getFieldStyle(size, style) {
|
|
11461
|
+
const token = inputTokens.sizes[size];
|
|
11462
|
+
return {
|
|
11463
|
+
"--input-height": `${token.height}px`,
|
|
11464
|
+
"--input-padding-x": `${token.paddingX}px`,
|
|
11465
|
+
"--input-padding-left": `${token.affixWidth}px`,
|
|
11466
|
+
"--input-padding-right": `${token.affixWidth}px`,
|
|
11467
|
+
"--input-font-size": `${token.fontSize}px`,
|
|
11468
|
+
"--input-radius": `${token.radius}px`,
|
|
11469
|
+
"--input-affix-inset": `${token.affixInset}px`,
|
|
11470
|
+
"--input-control-inset": `${token.controlInset}px`,
|
|
11471
|
+
"--input-control-size": `${token.controlSize}px`,
|
|
11472
|
+
"--input-control-icon-size": `${token.controlIconSize}px`,
|
|
11473
|
+
"--input-icon-size": `${token.iconSize}px`,
|
|
11474
|
+
"--input-focus-ring-width": `${inputTokens.focusRingWidth}px`,
|
|
11475
|
+
borderRadius: "var(--input-radius)",
|
|
11476
|
+
outline: "none",
|
|
11477
|
+
...style
|
|
11478
|
+
};
|
|
11479
|
+
}
|
|
11480
|
+
function joinIds(...ids) {
|
|
11481
|
+
return ids.filter(Boolean).join(" ") || void 0;
|
|
11482
|
+
}
|
|
11483
|
+
function DatePicker({
|
|
11484
|
+
value,
|
|
11485
|
+
defaultValue,
|
|
11486
|
+
onValueChange,
|
|
11487
|
+
label,
|
|
11488
|
+
id,
|
|
11489
|
+
name,
|
|
11490
|
+
placeholder,
|
|
11491
|
+
description,
|
|
11492
|
+
error,
|
|
11493
|
+
size = "md",
|
|
11494
|
+
disabled,
|
|
11495
|
+
required,
|
|
11496
|
+
min,
|
|
11497
|
+
max,
|
|
11498
|
+
displayFormat = ISO_DATE_FORMAT,
|
|
11499
|
+
triggerLabel = "Open calendar",
|
|
11500
|
+
className,
|
|
11501
|
+
fieldClassName,
|
|
11502
|
+
wrapperClassName,
|
|
11503
|
+
locale,
|
|
11504
|
+
weekStartsOn,
|
|
11505
|
+
numberOfMonths,
|
|
11506
|
+
fixedWeeks,
|
|
11507
|
+
showOutsideDays,
|
|
11508
|
+
dir,
|
|
11509
|
+
...fieldProps
|
|
11510
|
+
}) {
|
|
11511
|
+
const isControlled = value !== void 0;
|
|
11512
|
+
const generatedId = React46.useId();
|
|
11513
|
+
const fieldId = id ?? generatedId;
|
|
11514
|
+
const [internalValue, setInternalValue] = React46.useState(defaultValue ?? "");
|
|
11515
|
+
const currentValue = isControlled ? value : internalValue;
|
|
11516
|
+
const selected = parseIsoDate(currentValue);
|
|
11517
|
+
const minDate = parseIsoDate(min);
|
|
11518
|
+
const maxDate = parseIsoDate(max);
|
|
11519
|
+
const [draft, setDraft] = React46.useState(null);
|
|
11520
|
+
const [open, setOpen] = React46.useState(false);
|
|
11521
|
+
const displayValue = draft ?? (selected ? format(selected, displayFormat) : currentValue ?? "");
|
|
11522
|
+
const descriptionId = description ? `${fieldId}-description` : void 0;
|
|
11523
|
+
const errorId = typeof error === "string" ? `${fieldId}-error` : void 0;
|
|
11524
|
+
const invalid = error === true || typeof error === "string";
|
|
11525
|
+
const commit = React46.useCallback(
|
|
11526
|
+
(next) => {
|
|
11527
|
+
if (!isControlled) setInternalValue(next);
|
|
11528
|
+
onValueChange?.(next);
|
|
11529
|
+
},
|
|
11530
|
+
[isControlled, onValueChange]
|
|
11531
|
+
);
|
|
11532
|
+
const handleTextChange = (event) => {
|
|
11533
|
+
const text = event.target.value;
|
|
11534
|
+
setDraft(text);
|
|
11535
|
+
if (text === "") {
|
|
11536
|
+
commit("");
|
|
11537
|
+
return;
|
|
11538
|
+
}
|
|
11539
|
+
const parsed = parse(text, displayFormat, /* @__PURE__ */ new Date());
|
|
11540
|
+
if (isValid(parsed)) commit(toIsoDate(parsed));
|
|
11541
|
+
};
|
|
11542
|
+
const handleBlur = () => setDraft(null);
|
|
11543
|
+
const handleSelect = (next) => {
|
|
11544
|
+
setDraft(null);
|
|
11545
|
+
commit(next ? toIsoDate(next) : "");
|
|
11546
|
+
setOpen(false);
|
|
11547
|
+
};
|
|
11548
|
+
const disabledMatcher = [
|
|
11549
|
+
...minDate ? [{ before: minDate }] : [],
|
|
11550
|
+
...maxDate ? [{ after: maxDate }] : []
|
|
11551
|
+
];
|
|
11552
|
+
const control = /* @__PURE__ */ jsxs(
|
|
11553
|
+
"div",
|
|
11554
|
+
{
|
|
11555
|
+
"data-slot": "date-picker",
|
|
11556
|
+
className: cn("relative flex items-center", wrapperClassName),
|
|
11557
|
+
style: getFieldStyle(size, void 0),
|
|
11558
|
+
children: [
|
|
11559
|
+
/* @__PURE__ */ jsx(
|
|
11560
|
+
"input",
|
|
11561
|
+
{
|
|
11562
|
+
type: "text",
|
|
11563
|
+
inputMode: "numeric",
|
|
11564
|
+
autoComplete: "off",
|
|
11565
|
+
"data-slot": "date-picker-input",
|
|
11566
|
+
"aria-invalid": invalid || void 0,
|
|
11567
|
+
"aria-describedby": joinIds(descriptionId, errorId),
|
|
11568
|
+
...fieldProps,
|
|
11569
|
+
id: fieldId,
|
|
11570
|
+
name,
|
|
11571
|
+
className: cn(inputVariants({ size, affix: "suffix", tone: "bordered" }), className),
|
|
11572
|
+
style: getFieldStyle(size, void 0),
|
|
11573
|
+
placeholder: placeholder ?? displayFormat,
|
|
11574
|
+
value: displayValue,
|
|
11575
|
+
onChange: handleTextChange,
|
|
11576
|
+
onBlur: handleBlur,
|
|
11577
|
+
disabled,
|
|
11578
|
+
required
|
|
11579
|
+
}
|
|
11580
|
+
),
|
|
11581
|
+
/* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
11582
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
11583
|
+
"button",
|
|
11584
|
+
{
|
|
11585
|
+
type: "button",
|
|
11586
|
+
"aria-label": triggerLabel,
|
|
11587
|
+
disabled,
|
|
11588
|
+
className: inputControlButtonVariants(),
|
|
11589
|
+
style: getFieldStyle(size, void 0),
|
|
11590
|
+
children: /* @__PURE__ */ jsx(Calendar$1, { "aria-hidden": "true" })
|
|
11591
|
+
}
|
|
11592
|
+
) }),
|
|
11593
|
+
/* @__PURE__ */ jsx(PopoverContent, { align: "start", className: "w-auto p-0", children: /* @__PURE__ */ jsx(
|
|
11594
|
+
Calendar,
|
|
11595
|
+
{
|
|
11596
|
+
mode: "single",
|
|
11597
|
+
...selected ? { selected, defaultMonth: selected } : {},
|
|
11598
|
+
onSelect: handleSelect,
|
|
11599
|
+
...disabledMatcher.length > 0 ? { disabled: disabledMatcher } : {},
|
|
11600
|
+
...minDate ? { startMonth: minDate } : {},
|
|
11601
|
+
...maxDate ? { endMonth: maxDate } : {},
|
|
11602
|
+
...locale ? { locale } : {},
|
|
11603
|
+
...weekStartsOn !== void 0 ? { weekStartsOn } : {},
|
|
11604
|
+
...numberOfMonths !== void 0 ? { numberOfMonths } : {},
|
|
11605
|
+
...fixedWeeks !== void 0 ? { fixedWeeks } : {},
|
|
11606
|
+
...showOutsideDays !== void 0 ? { showOutsideDays } : {},
|
|
11607
|
+
...dir !== void 0 ? { dir } : {},
|
|
11608
|
+
autoFocus: true
|
|
11609
|
+
}
|
|
11610
|
+
) })
|
|
11611
|
+
] })
|
|
11612
|
+
]
|
|
11613
|
+
}
|
|
11614
|
+
);
|
|
11615
|
+
if (!label && !description && typeof error !== "string") {
|
|
11616
|
+
return control;
|
|
11617
|
+
}
|
|
11618
|
+
return /* @__PURE__ */ jsxs(
|
|
11619
|
+
"div",
|
|
11620
|
+
{
|
|
11621
|
+
"data-slot": "date-picker-field",
|
|
11622
|
+
className: cn("grid gap-[var(--input-field-gap)]", fieldClassName),
|
|
11623
|
+
style: { "--input-field-gap": `${inputTokens.fieldGap}px` },
|
|
11624
|
+
children: [
|
|
11625
|
+
label && /* @__PURE__ */ jsx("label", { htmlFor: fieldId, className: "text-sm font-medium text-foreground", children: label }),
|
|
11626
|
+
control,
|
|
11627
|
+
description && !error && /* @__PURE__ */ jsx("p", { id: descriptionId, className: "text-xs text-muted-foreground", children: description }),
|
|
11628
|
+
typeof error === "string" && /* @__PURE__ */ jsx("p", { id: errorId, role: "alert", className: "text-xs font-medium text-destructive", children: error })
|
|
11629
|
+
]
|
|
11630
|
+
}
|
|
11631
|
+
);
|
|
11632
|
+
}
|
|
11633
|
+
DatePicker.displayName = "DatePicker";
|
|
11286
11634
|
var Description = function Description2({
|
|
11287
11635
|
ref,
|
|
11288
11636
|
title,
|
|
@@ -11310,7 +11658,7 @@ function DisplayCard({
|
|
|
11310
11658
|
"div",
|
|
11311
11659
|
{
|
|
11312
11660
|
className: cn(
|
|
11313
|
-
"relative flex h-36 w-[22rem] -skew-y-[8deg] select-none flex-col justify-between rounded-[var(--radius-xl)] border-2 bg-muted/70 backdrop-blur-sm px-4 py-3 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
11661
|
+
"relative flex h-36 w-[22rem] -skew-y-[8deg] select-none flex-col justify-between rounded-[var(--radius-xl)] border-2 bg-muted/70 backdrop-blur-sm px-4 py-3 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-cinematic",
|
|
11314
11662
|
"after:absolute after:-right-1 after:top-[-5%] after:h-[110%] after:w-[20rem] after:bg-gradient-to-l after:from-background after:to-transparent after:content-['']",
|
|
11315
11663
|
"hover:border-white/20 hover:bg-muted",
|
|
11316
11664
|
"[&>*]:flex [&>*]:items-center [&>*]:gap-2",
|
|
@@ -11329,10 +11677,10 @@ function DisplayCard({
|
|
|
11329
11677
|
}
|
|
11330
11678
|
var DEFAULT_CARDS = [
|
|
11331
11679
|
{
|
|
11332
|
-
className: "[grid-area:stack] hover:-translate-y-10 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-
|
|
11680
|
+
className: "[grid-area:stack] hover:-translate-y-10 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-cinematic hover:grayscale-0 before:left-0 before:top-0"
|
|
11333
11681
|
},
|
|
11334
11682
|
{
|
|
11335
|
-
className: "[grid-area:stack] translate-x-16 translate-y-10 hover:-translate-y-1 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-
|
|
11683
|
+
className: "[grid-area:stack] translate-x-16 translate-y-10 hover:-translate-y-1 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-cinematic hover:grayscale-0 before:left-0 before:top-0"
|
|
11336
11684
|
},
|
|
11337
11685
|
{
|
|
11338
11686
|
className: "[grid-area:stack] translate-x-32 translate-y-20 hover:translate-y-10"
|
|
@@ -11344,7 +11692,7 @@ function DisplayCards({ cards, className }) {
|
|
|
11344
11692
|
"div",
|
|
11345
11693
|
{
|
|
11346
11694
|
className: cn(
|
|
11347
|
-
"grid [grid-template-areas:'stack'] place-items-center opacity-100 animate-in fade-in-0 duration-
|
|
11695
|
+
"grid [grid-template-areas:'stack'] place-items-center opacity-100 animate-in fade-in-0 duration-cinematic",
|
|
11348
11696
|
className
|
|
11349
11697
|
),
|
|
11350
11698
|
children: displayCards.map((cardProps, index) => /* @__PURE__ */ jsx(DisplayCard, { ...cardProps }, index))
|
|
@@ -12004,7 +12352,7 @@ function DotPattern({
|
|
|
12004
12352
|
observer.observe(element);
|
|
12005
12353
|
return () => observer.disconnect();
|
|
12006
12354
|
}, []);
|
|
12007
|
-
const dots =
|
|
12355
|
+
const dots = React46__default.useMemo(() => {
|
|
12008
12356
|
const cols = Math.ceil(dimensions.width / width);
|
|
12009
12357
|
const rows = Math.ceil(dimensions.height / height);
|
|
12010
12358
|
const count = cols * rows;
|
|
@@ -12078,7 +12426,7 @@ function DottedMap({
|
|
|
12078
12426
|
mapSamples
|
|
12079
12427
|
});
|
|
12080
12428
|
const processedMarkers = addMarkers(markers);
|
|
12081
|
-
const { xStep, yToRowIndex } =
|
|
12429
|
+
const { xStep, yToRowIndex } = React46.useMemo(() => {
|
|
12082
12430
|
const sorted = [...points].sort((a, b) => a.y - b.y || a.x - b.x);
|
|
12083
12431
|
const rowMap = /* @__PURE__ */ new Map();
|
|
12084
12432
|
let step = 0;
|
|
@@ -12160,7 +12508,7 @@ function DottedWorldMap({
|
|
|
12160
12508
|
);
|
|
12161
12509
|
}
|
|
12162
12510
|
DottedWorldMap.displayName = "DottedWorldMap";
|
|
12163
|
-
var DrawerRootContext =
|
|
12511
|
+
var DrawerRootContext = React46.createContext({});
|
|
12164
12512
|
function formatDrawerHeight(height) {
|
|
12165
12513
|
if (height == null) {
|
|
12166
12514
|
return void 0;
|
|
@@ -12197,7 +12545,7 @@ function Drawer({
|
|
|
12197
12545
|
}
|
|
12198
12546
|
};
|
|
12199
12547
|
}
|
|
12200
|
-
const contextValue =
|
|
12548
|
+
const contextValue = React46.useMemo(() => {
|
|
12201
12549
|
const resolvedHeight = customHeight ?? height;
|
|
12202
12550
|
return resolvedHeight === void 0 ? {} : { height: resolvedHeight };
|
|
12203
12551
|
}, [customHeight, height]);
|
|
@@ -12235,7 +12583,7 @@ function DrawerContent({
|
|
|
12235
12583
|
style,
|
|
12236
12584
|
...props
|
|
12237
12585
|
}) {
|
|
12238
|
-
const rootContext =
|
|
12586
|
+
const rootContext = React46.use(DrawerRootContext);
|
|
12239
12587
|
const resolvedHeight = formatDrawerHeight(height ?? rootContext.height);
|
|
12240
12588
|
const contentStyle = resolvedHeight === void 0 ? style : {
|
|
12241
12589
|
"--drawer-height": resolvedHeight,
|
|
@@ -13167,7 +13515,7 @@ var InputOTPSlot = ({
|
|
|
13167
13515
|
ref,
|
|
13168
13516
|
...props
|
|
13169
13517
|
}) => {
|
|
13170
|
-
const inputOTPContext =
|
|
13518
|
+
const inputOTPContext = React46.use(OTPInputContext);
|
|
13171
13519
|
const slot = inputOTPContext.slots[index];
|
|
13172
13520
|
const char = slot?.char ?? "";
|
|
13173
13521
|
const hasFakeCaret = slot?.hasFakeCaret ?? false;
|
|
@@ -13835,32 +14183,20 @@ var ExpandableGallery = function ExpandableGallery2({
|
|
|
13835
14183
|
}
|
|
13836
14184
|
) });
|
|
13837
14185
|
};
|
|
13838
|
-
var buttonVariants2 = {
|
|
13839
|
-
initial: {
|
|
13840
|
-
gap: 0,
|
|
13841
|
-
paddingLeft: ".5rem",
|
|
13842
|
-
paddingRight: ".5rem"
|
|
13843
|
-
},
|
|
13844
|
-
animate: (isSelected) => ({
|
|
13845
|
-
gap: isSelected ? ".5rem" : 0,
|
|
13846
|
-
paddingLeft: isSelected ? "1rem" : ".5rem",
|
|
13847
|
-
paddingRight: isSelected ? "1rem" : ".5rem"
|
|
13848
|
-
})
|
|
13849
|
-
};
|
|
13850
14186
|
var spanVariants = {
|
|
13851
|
-
initial: {
|
|
13852
|
-
animate: {
|
|
13853
|
-
exit: {
|
|
14187
|
+
initial: { opacity: 0, transform: "translateX(-4px)" },
|
|
14188
|
+
animate: { opacity: 1, transform: "translateX(0px)" },
|
|
14189
|
+
exit: { opacity: 0, transform: "translateX(-4px)" }
|
|
13854
14190
|
};
|
|
13855
|
-
var transition2 = {
|
|
14191
|
+
var transition2 = { duration: 0.2, ease: [0.16, 1, 0.3, 1] };
|
|
13856
14192
|
function ExpandableTabs({
|
|
13857
14193
|
tabs,
|
|
13858
14194
|
className,
|
|
13859
14195
|
activeColor = "text-primary",
|
|
13860
14196
|
onChange
|
|
13861
14197
|
}) {
|
|
13862
|
-
const [selected, setSelected] =
|
|
13863
|
-
const outsideClickRef =
|
|
14198
|
+
const [selected, setSelected] = React46.useState(null);
|
|
14199
|
+
const outsideClickRef = React46.useRef(null);
|
|
13864
14200
|
const shouldReduceMotion = useReducedMotion();
|
|
13865
14201
|
const activeTransition = shouldReduceMotion ? { duration: 0 } : transition2;
|
|
13866
14202
|
useOnClickOutside(outsideClickRef, () => {
|
|
@@ -13891,36 +14227,25 @@ function ExpandableTabs({
|
|
|
13891
14227
|
const tabClassName = cn(
|
|
13892
14228
|
"relative rounded-[var(--radius-xl)] py-2 text-sm font-medium transition-colors duration-flow",
|
|
13893
14229
|
"focus-visible:outline-none",
|
|
13894
|
-
isSelected ? cn("bg-muted", activeColor) : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
14230
|
+
isSelected ? cn("bg-muted px-4", activeColor) : "px-2 text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
13895
14231
|
);
|
|
13896
14232
|
const tabContent = (
|
|
13897
14233
|
// biome-ignore lint/correctness/useJsxKeyInIterable: key is on the parent <button>
|
|
13898
|
-
/* @__PURE__ */ jsxs(
|
|
13899
|
-
|
|
13900
|
-
{
|
|
13901
|
-
|
|
13902
|
-
|
|
13903
|
-
|
|
13904
|
-
|
|
13905
|
-
|
|
13906
|
-
|
|
13907
|
-
|
|
13908
|
-
|
|
13909
|
-
|
|
13910
|
-
|
|
13911
|
-
|
|
13912
|
-
|
|
13913
|
-
initial: "initial",
|
|
13914
|
-
animate: "animate",
|
|
13915
|
-
exit: "exit",
|
|
13916
|
-
transition: activeTransition,
|
|
13917
|
-
className: "overflow-hidden",
|
|
13918
|
-
children: tab.title
|
|
13919
|
-
}
|
|
13920
|
-
) })
|
|
13921
|
-
]
|
|
13922
|
-
}
|
|
13923
|
-
)
|
|
14234
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
14235
|
+
/* @__PURE__ */ jsx(Icon, { size: 20, "aria-hidden": "true" }),
|
|
14236
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: isSelected && /* @__PURE__ */ jsx(
|
|
14237
|
+
motion.span,
|
|
14238
|
+
{
|
|
14239
|
+
variants: spanVariants,
|
|
14240
|
+
initial: "initial",
|
|
14241
|
+
animate: "animate",
|
|
14242
|
+
exit: "exit",
|
|
14243
|
+
transition: activeTransition,
|
|
14244
|
+
className: "overflow-hidden whitespace-nowrap",
|
|
14245
|
+
children: tab.title
|
|
14246
|
+
}
|
|
14247
|
+
) })
|
|
14248
|
+
] })
|
|
13924
14249
|
);
|
|
13925
14250
|
return isSelected ? /* @__PURE__ */ jsx(
|
|
13926
14251
|
"button",
|
|
@@ -14022,13 +14347,13 @@ var Textarea = ({
|
|
|
14022
14347
|
ref,
|
|
14023
14348
|
...props
|
|
14024
14349
|
}) => {
|
|
14025
|
-
const baseId =
|
|
14350
|
+
const baseId = React46.useId();
|
|
14026
14351
|
const textareaId = id ?? (label || description || typeof error === "string" ? baseId : void 0);
|
|
14027
14352
|
const resolvedInvalid = isInvalid2(error, ariaInvalid);
|
|
14028
14353
|
const descriptionId = description && textareaId ? `${textareaId}-description` : void 0;
|
|
14029
14354
|
const errorId = typeof error === "string" && textareaId ? `${textareaId}-error` : void 0;
|
|
14030
14355
|
const describedBy = joinDescriptionIds2(ariaDescribedBy, descriptionId, errorId);
|
|
14031
|
-
const handleChange =
|
|
14356
|
+
const handleChange = React46.useCallback(
|
|
14032
14357
|
(event) => {
|
|
14033
14358
|
onValueChange?.(event.currentTarget.value);
|
|
14034
14359
|
onChange?.(event);
|
|
@@ -14088,8 +14413,8 @@ var ExpandingTextarea = ({
|
|
|
14088
14413
|
ref,
|
|
14089
14414
|
...props
|
|
14090
14415
|
}) => {
|
|
14091
|
-
const textareaRef =
|
|
14092
|
-
const setTextareaRef =
|
|
14416
|
+
const textareaRef = React46.useRef(null);
|
|
14417
|
+
const setTextareaRef = React46.useCallback(
|
|
14093
14418
|
(node) => {
|
|
14094
14419
|
textareaRef.current = node;
|
|
14095
14420
|
if (typeof ref === "function") {
|
|
@@ -14102,16 +14427,16 @@ var ExpandingTextarea = ({
|
|
|
14102
14427
|
},
|
|
14103
14428
|
[ref]
|
|
14104
14429
|
);
|
|
14105
|
-
const resize =
|
|
14430
|
+
const resize = React46.useCallback(() => {
|
|
14106
14431
|
const target = textareaRef.current;
|
|
14107
14432
|
if (!target) return;
|
|
14108
14433
|
target.style.height = "auto";
|
|
14109
14434
|
target.style.height = `${target.scrollHeight}px`;
|
|
14110
14435
|
}, []);
|
|
14111
|
-
|
|
14436
|
+
React46.useLayoutEffect(() => {
|
|
14112
14437
|
resize();
|
|
14113
14438
|
}, [resize]);
|
|
14114
|
-
const handleChange =
|
|
14439
|
+
const handleChange = React46.useCallback(
|
|
14115
14440
|
(event) => {
|
|
14116
14441
|
const target = event.currentTarget;
|
|
14117
14442
|
target.style.height = "auto";
|
|
@@ -14678,7 +15003,7 @@ function textOf(node) {
|
|
|
14678
15003
|
if (node == null || typeof node === "boolean") return "";
|
|
14679
15004
|
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
14680
15005
|
if (Array.isArray(node)) return node.map(textOf).join("");
|
|
14681
|
-
if (
|
|
15006
|
+
if (React46.isValidElement(node)) {
|
|
14682
15007
|
const props = node.props;
|
|
14683
15008
|
return textOf(props.children);
|
|
14684
15009
|
}
|
|
@@ -14686,8 +15011,8 @@ function textOf(node) {
|
|
|
14686
15011
|
}
|
|
14687
15012
|
function optionsFromChildren(children) {
|
|
14688
15013
|
const options = [];
|
|
14689
|
-
|
|
14690
|
-
if (!
|
|
15014
|
+
React46.Children.forEach(children, (child) => {
|
|
15015
|
+
if (!React46.isValidElement(child)) return;
|
|
14691
15016
|
if (child.type !== "option") return;
|
|
14692
15017
|
const props = child.props;
|
|
14693
15018
|
const value = String(props.value ?? "");
|
|
@@ -14698,8 +15023,8 @@ function optionsFromChildren(children) {
|
|
|
14698
15023
|
}
|
|
14699
15024
|
function hasNativeOptionChildren(children) {
|
|
14700
15025
|
let hasNativeChildren = false;
|
|
14701
|
-
|
|
14702
|
-
if (!
|
|
15026
|
+
React46.Children.forEach(children, (child) => {
|
|
15027
|
+
if (!React46.isValidElement(child)) return;
|
|
14703
15028
|
if (child.type === "option" || child.type === "optgroup") {
|
|
14704
15029
|
hasNativeChildren = true;
|
|
14705
15030
|
}
|
|
@@ -14741,7 +15066,7 @@ function NativeSelect({
|
|
|
14741
15066
|
"aria-describedby": ariaDescribedBy,
|
|
14742
15067
|
...props
|
|
14743
15068
|
}) {
|
|
14744
|
-
const generatedId =
|
|
15069
|
+
const generatedId = React46.useId();
|
|
14745
15070
|
const selectId = id ?? generatedId;
|
|
14746
15071
|
const errorId = error ? `${selectId}-error` : void 0;
|
|
14747
15072
|
const describedBy = [ariaDescribedBy, errorId].filter(Boolean).join(" ") || void 0;
|
|
@@ -14834,12 +15159,12 @@ function OptionsListboxSelect({
|
|
|
14834
15159
|
"aria-describedby": ariaDescribedBy,
|
|
14835
15160
|
"data-testid": dataTestId
|
|
14836
15161
|
}) {
|
|
14837
|
-
const generatedId =
|
|
15162
|
+
const generatedId = React46.useId();
|
|
14838
15163
|
const selectId = id ?? generatedId;
|
|
14839
15164
|
const errorId = error ? `${selectId}-error` : void 0;
|
|
14840
15165
|
const describedBy = [ariaDescribedBy, errorId].filter(Boolean).join(" ") || void 0;
|
|
14841
15166
|
const labelId = label ? `${selectId}-label` : void 0;
|
|
14842
|
-
const options =
|
|
15167
|
+
const options = React46.useMemo(() => {
|
|
14843
15168
|
const fromProp = optionsProp?.map((o) => ({
|
|
14844
15169
|
value: String(o.value),
|
|
14845
15170
|
label: o.label,
|
|
@@ -14848,12 +15173,12 @@ function OptionsListboxSelect({
|
|
|
14848
15173
|
if (fromProp?.length) return fromProp;
|
|
14849
15174
|
return optionsFromChildren(children);
|
|
14850
15175
|
}, [optionsProp, children]);
|
|
14851
|
-
const items =
|
|
15176
|
+
const items = React46.useMemo(
|
|
14852
15177
|
() => Object.fromEntries(options.map((o) => [o.value, o.label])),
|
|
14853
15178
|
[options]
|
|
14854
15179
|
);
|
|
14855
15180
|
const isControlled = value !== void 0;
|
|
14856
|
-
const [uncontrolled, setUncontrolled] =
|
|
15181
|
+
const [uncontrolled, setUncontrolled] = React46.useState(
|
|
14857
15182
|
() => defaultValue !== void 0 ? String(defaultValue) : ""
|
|
14858
15183
|
);
|
|
14859
15184
|
const current = isControlled ? String(value ?? "") : uncontrolled;
|
|
@@ -15146,16 +15471,16 @@ function FeedbackForm({
|
|
|
15146
15471
|
initialEmotion,
|
|
15147
15472
|
onDone
|
|
15148
15473
|
}) {
|
|
15149
|
-
const promptId =
|
|
15150
|
-
const emotionName =
|
|
15151
|
-
const errorId =
|
|
15152
|
-
const textareaRef =
|
|
15153
|
-
const [emotion, setEmotion] =
|
|
15154
|
-
const [message, setMessage] =
|
|
15155
|
-
const [topic, setTopic] =
|
|
15156
|
-
const [submitting, setSubmitting] =
|
|
15157
|
-
const [error, setError] =
|
|
15158
|
-
|
|
15474
|
+
const promptId = React46.useId();
|
|
15475
|
+
const emotionName = React46.useId();
|
|
15476
|
+
const errorId = React46.useId();
|
|
15477
|
+
const textareaRef = React46.useRef(null);
|
|
15478
|
+
const [emotion, setEmotion] = React46.useState(initialEmotion);
|
|
15479
|
+
const [message, setMessage] = React46.useState("");
|
|
15480
|
+
const [topic, setTopic] = React46.useState("");
|
|
15481
|
+
const [submitting, setSubmitting] = React46.useState(false);
|
|
15482
|
+
const [error, setError] = React46.useState();
|
|
15483
|
+
React46.useEffect(() => {
|
|
15159
15484
|
textareaRef.current?.focus();
|
|
15160
15485
|
}, []);
|
|
15161
15486
|
const canSubmit = message.trim().length > 0 && !submitting && !disabled;
|
|
@@ -15245,13 +15570,13 @@ function FeedbackDefault({
|
|
|
15245
15570
|
defaultOpen = false,
|
|
15246
15571
|
className
|
|
15247
15572
|
}) {
|
|
15248
|
-
const triggerRef =
|
|
15249
|
-
const [open, setOpen] =
|
|
15250
|
-
const resolvedTopics =
|
|
15573
|
+
const triggerRef = React46.useRef(null);
|
|
15574
|
+
const [open, setOpen] = React46.useState(defaultOpen);
|
|
15575
|
+
const resolvedTopics = React46.useMemo(
|
|
15251
15576
|
() => normalizeTopics(topics, showTopics),
|
|
15252
15577
|
[topics, showTopics]
|
|
15253
15578
|
);
|
|
15254
|
-
const closeAndReturnFocus =
|
|
15579
|
+
const closeAndReturnFocus = React46.useCallback(() => {
|
|
15255
15580
|
setOpen(false);
|
|
15256
15581
|
window.requestAnimationFrame(() => triggerRef.current?.focus());
|
|
15257
15582
|
}, []);
|
|
@@ -15319,15 +15644,15 @@ function FeedbackInline({
|
|
|
15319
15644
|
defaultExpanded = false,
|
|
15320
15645
|
className
|
|
15321
15646
|
}) {
|
|
15322
|
-
const rootRef =
|
|
15323
|
-
const emotionName =
|
|
15324
|
-
const [selectedEmotion, setSelectedEmotion] =
|
|
15325
|
-
const [expanded, setExpanded] =
|
|
15326
|
-
const resolvedTopics =
|
|
15647
|
+
const rootRef = React46.useRef(null);
|
|
15648
|
+
const emotionName = React46.useId();
|
|
15649
|
+
const [selectedEmotion, setSelectedEmotion] = React46.useState();
|
|
15650
|
+
const [expanded, setExpanded] = React46.useState(defaultExpanded);
|
|
15651
|
+
const resolvedTopics = React46.useMemo(
|
|
15327
15652
|
() => normalizeTopics(topics, showTopics),
|
|
15328
15653
|
[topics, showTopics]
|
|
15329
15654
|
);
|
|
15330
|
-
|
|
15655
|
+
React46.useEffect(() => {
|
|
15331
15656
|
if (!expanded) return;
|
|
15332
15657
|
function handlePointerDown(event) {
|
|
15333
15658
|
if (!rootRef.current?.contains(event.target)) {
|
|
@@ -15344,7 +15669,6 @@ function FeedbackInline({
|
|
|
15344
15669
|
ref: rootRef,
|
|
15345
15670
|
className: cn(
|
|
15346
15671
|
"m-0 min-w-0 w-fit overflow-hidden rounded-[var(--feedback-panel-radius)] border border-border bg-card p-0 text-card-foreground shadow-sm",
|
|
15347
|
-
"transition-[max-height,width] duration-[var(--feedback-duration)] ease-[var(--feedback-easing)] motion-reduce:transition-none",
|
|
15348
15672
|
expanded ? "w-[var(--feedback-width)]" : "max-w-full",
|
|
15349
15673
|
className
|
|
15350
15674
|
),
|
|
@@ -15779,11 +16103,11 @@ var PLACEHOLDER = {
|
|
|
15779
16103
|
};
|
|
15780
16104
|
var FileCard = function FileCard2({
|
|
15781
16105
|
ref,
|
|
15782
|
-
format:
|
|
16106
|
+
format: format3,
|
|
15783
16107
|
className
|
|
15784
16108
|
}) {
|
|
15785
|
-
const Renderer = PLACEHOLDER[
|
|
15786
|
-
const bannerCls = BANNER_COLOR[
|
|
16109
|
+
const Renderer = PLACEHOLDER[format3] ?? DefaultPlaceholder;
|
|
16110
|
+
const bannerCls = BANNER_COLOR[format3];
|
|
15787
16111
|
return /* @__PURE__ */ jsxs("div", { ref, "aria-hidden": "true", className: cn("relative size-fit", className), children: [
|
|
15788
16112
|
/* @__PURE__ */ jsx(
|
|
15789
16113
|
"div",
|
|
@@ -15792,7 +16116,7 @@ var FileCard = function FileCard2({
|
|
|
15792
16116
|
"absolute -right-2 bottom-1.5 z-2 rounded px-1.5 py-0.5 text-[8px] font-medium uppercase",
|
|
15793
16117
|
bannerCls
|
|
15794
16118
|
),
|
|
15795
|
-
children:
|
|
16119
|
+
children: format3
|
|
15796
16120
|
}
|
|
15797
16121
|
),
|
|
15798
16122
|
/* @__PURE__ */ jsx("div", { className: "ring-border relative z-1 h-18 w-14 space-y-3 rounded-[var(--radius-md)] bg-card p-2 ring-1", children: /* @__PURE__ */ jsx(Renderer, {}) })
|
|
@@ -15818,7 +16142,7 @@ var countActiveClass = "text-current/80 ml-1 tabular-nums";
|
|
|
15818
16142
|
function FilterPills(props) {
|
|
15819
16143
|
const { options, size = "md", variant = "solid", className } = props;
|
|
15820
16144
|
const isMultiple = props.type === "multiple";
|
|
15821
|
-
const isActive =
|
|
16145
|
+
const isActive = React46.useCallback(
|
|
15822
16146
|
(optionValue) => {
|
|
15823
16147
|
if (isMultiple) {
|
|
15824
16148
|
return props.value.includes(optionValue);
|
|
@@ -15827,7 +16151,7 @@ function FilterPills(props) {
|
|
|
15827
16151
|
},
|
|
15828
16152
|
[isMultiple, props]
|
|
15829
16153
|
);
|
|
15830
|
-
const handleSelect =
|
|
16154
|
+
const handleSelect = React46.useCallback(
|
|
15831
16155
|
(optionValue) => {
|
|
15832
16156
|
if (isMultiple) {
|
|
15833
16157
|
const multipleProps = props;
|
|
@@ -15841,7 +16165,7 @@ function FilterPills(props) {
|
|
|
15841
16165
|
},
|
|
15842
16166
|
[isMultiple, props]
|
|
15843
16167
|
);
|
|
15844
|
-
const handleKeyDown =
|
|
16168
|
+
const handleKeyDown = React46.useCallback(
|
|
15845
16169
|
(event, optionValue) => {
|
|
15846
16170
|
if (event.key === "Enter" || event.key === " ") {
|
|
15847
16171
|
event.preventDefault();
|
|
@@ -15949,7 +16273,7 @@ var Flex = ({
|
|
|
15949
16273
|
ref,
|
|
15950
16274
|
...props
|
|
15951
16275
|
}) => {
|
|
15952
|
-
return
|
|
16276
|
+
return React46.createElement(
|
|
15953
16277
|
Component2,
|
|
15954
16278
|
{
|
|
15955
16279
|
...props,
|
|
@@ -16351,15 +16675,15 @@ var Folder = function Folder2({
|
|
|
16351
16675
|
) });
|
|
16352
16676
|
};
|
|
16353
16677
|
var Form = FormProvider;
|
|
16354
|
-
var FormFieldContext =
|
|
16678
|
+
var FormFieldContext = React46.createContext({});
|
|
16355
16679
|
var FormField = ({
|
|
16356
16680
|
...props
|
|
16357
16681
|
}) => {
|
|
16358
16682
|
return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
|
|
16359
16683
|
};
|
|
16360
16684
|
var useFormField = () => {
|
|
16361
|
-
const fieldContext =
|
|
16362
|
-
const itemContext =
|
|
16685
|
+
const fieldContext = React46.use(FormFieldContext);
|
|
16686
|
+
const itemContext = React46.use(FormItemContext);
|
|
16363
16687
|
const { getFieldState, formState } = useFormContext();
|
|
16364
16688
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
16365
16689
|
if (!fieldContext) {
|
|
@@ -16375,13 +16699,13 @@ var useFormField = () => {
|
|
|
16375
16699
|
...fieldState
|
|
16376
16700
|
};
|
|
16377
16701
|
};
|
|
16378
|
-
var FormItemContext =
|
|
16702
|
+
var FormItemContext = React46.createContext({});
|
|
16379
16703
|
var FormItem = ({
|
|
16380
16704
|
className,
|
|
16381
16705
|
ref,
|
|
16382
16706
|
...props
|
|
16383
16707
|
}) => {
|
|
16384
|
-
const id =
|
|
16708
|
+
const id = React46.useId();
|
|
16385
16709
|
return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), ...props }) });
|
|
16386
16710
|
};
|
|
16387
16711
|
FormItem.displayName = "FormItem";
|
|
@@ -16704,7 +17028,7 @@ var GeistTooltip = ({
|
|
|
16704
17028
|
rootProps,
|
|
16705
17029
|
popupProps
|
|
16706
17030
|
}) => {
|
|
16707
|
-
const [open, setOpen] =
|
|
17031
|
+
const [open, setOpen] = React46.useState(false);
|
|
16708
17032
|
const shouldReduceMotion = useReducedMotion();
|
|
16709
17033
|
const delayMs = typeof delay === "number" ? delay : delay ? 500 : 0;
|
|
16710
17034
|
const colorClasses = typeStyles[type] || typeStyles.default;
|
|
@@ -16712,7 +17036,7 @@ var GeistTooltip = ({
|
|
|
16712
17036
|
/* @__PURE__ */ jsx(
|
|
16713
17037
|
Tooltip$1.Trigger,
|
|
16714
17038
|
{
|
|
16715
|
-
render:
|
|
17039
|
+
render: React46.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
|
|
16716
17040
|
}
|
|
16717
17041
|
),
|
|
16718
17042
|
/* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open && /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
@@ -17335,7 +17659,7 @@ function GradientAnimatedText({
|
|
|
17335
17659
|
const fromColor = gradientFrom ?? colors2.from;
|
|
17336
17660
|
const toColor = gradientTo ?? colors2.to;
|
|
17337
17661
|
const styleId = `gradient-anim-${variant}`;
|
|
17338
|
-
|
|
17662
|
+
React46.useEffect(() => {
|
|
17339
17663
|
if (typeof document === "undefined") return;
|
|
17340
17664
|
if (document.getElementById(styleId)) return;
|
|
17341
17665
|
const styleEl = document.createElement("style");
|
|
@@ -17398,7 +17722,7 @@ function GridFeatureCard({
|
|
|
17398
17722
|
className,
|
|
17399
17723
|
...props
|
|
17400
17724
|
}) {
|
|
17401
|
-
const pattern =
|
|
17725
|
+
const pattern = React46.useMemo(() => generateRandomPattern(5), []);
|
|
17402
17726
|
return /* @__PURE__ */ jsxs("div", { className: cn("relative overflow-hidden p-6", className), ...props, children: [
|
|
17403
17727
|
/* @__PURE__ */ jsx(DecorativeGridOverlay, { size: gridSize, pattern }),
|
|
17404
17728
|
/* @__PURE__ */ jsx(Icon, { className: "size-6 text-foreground/75", strokeWidth: 1, "aria-hidden": true }),
|
|
@@ -17428,7 +17752,7 @@ function DecorativeGridOverlay({ size = 20, pattern }) {
|
|
|
17428
17752
|
);
|
|
17429
17753
|
}
|
|
17430
17754
|
function GridPatternSvg({ width, height, x, y, squares, ...props }) {
|
|
17431
|
-
const patternId =
|
|
17755
|
+
const patternId = React46.useId();
|
|
17432
17756
|
return /* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", ...props, children: [
|
|
17433
17757
|
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
17434
17758
|
"pattern",
|
|
@@ -17555,7 +17879,7 @@ var defaultGridSystemContext = {
|
|
|
17555
17879
|
guideWidth: `${gridTokens.guide.width}px`,
|
|
17556
17880
|
useContainer: false
|
|
17557
17881
|
};
|
|
17558
|
-
var GridSystemContext =
|
|
17882
|
+
var GridSystemContext = React46.createContext(defaultGridSystemContext);
|
|
17559
17883
|
var responsiveBreakpoints = [
|
|
17560
17884
|
["md", gridTokens.breakpoints.md],
|
|
17561
17885
|
["lg", gridTokens.breakpoints.lg]
|
|
@@ -17722,7 +18046,7 @@ var GridSystem = ({
|
|
|
17722
18046
|
...props
|
|
17723
18047
|
}) => {
|
|
17724
18048
|
const guideWidthValue = toCssLength2(guideWidth);
|
|
17725
|
-
const contextValue =
|
|
18049
|
+
const contextValue = React46.useMemo(
|
|
17726
18050
|
() => ({
|
|
17727
18051
|
debug,
|
|
17728
18052
|
guideWidth: guideWidthValue,
|
|
@@ -17767,8 +18091,8 @@ var GridRoot = ({
|
|
|
17767
18091
|
ref,
|
|
17768
18092
|
...props
|
|
17769
18093
|
}) => {
|
|
17770
|
-
const system =
|
|
17771
|
-
const id =
|
|
18094
|
+
const system = React46.use(GridSystemContext);
|
|
18095
|
+
const id = React46.useId();
|
|
17772
18096
|
const scopedClassName = toScopedClassName(id, "grid");
|
|
17773
18097
|
const baseColumns = resolveResponsiveBase(columns, 1);
|
|
17774
18098
|
const baseRows = resolveResponsiveBase(rows, 1);
|
|
@@ -17830,8 +18154,8 @@ var GridCell = ({
|
|
|
17830
18154
|
ref,
|
|
17831
18155
|
...props
|
|
17832
18156
|
}) => {
|
|
17833
|
-
const system =
|
|
17834
|
-
const id =
|
|
18157
|
+
const system = React46.use(GridSystemContext);
|
|
18158
|
+
const id = React46.useId();
|
|
17835
18159
|
const scopedClassName = toScopedClassName(id, "cell");
|
|
17836
18160
|
const gridColumn = resolveCellColumn(column, span);
|
|
17837
18161
|
const gridRow = resolveOptionalBase(row);
|
|
@@ -17989,7 +18313,7 @@ function HexGrid({
|
|
|
17989
18313
|
const hexHeight = size * Math.sqrt(3);
|
|
17990
18314
|
const horizSpacing = hexWidth * 0.75;
|
|
17991
18315
|
const vertSpacing = hexHeight;
|
|
17992
|
-
const hexagons =
|
|
18316
|
+
const hexagons = React46__default.useMemo(() => {
|
|
17993
18317
|
if (dimensions.width === 0 || dimensions.height === 0) return [];
|
|
17994
18318
|
const cols = Math.ceil(dimensions.width / horizSpacing) + 2;
|
|
17995
18319
|
const rows = Math.ceil(dimensions.height / vertSpacing) + 2;
|
|
@@ -18127,7 +18451,7 @@ var HoverCardTrigger = ({
|
|
|
18127
18451
|
ref,
|
|
18128
18452
|
...props
|
|
18129
18453
|
}) => {
|
|
18130
|
-
if (asChild &&
|
|
18454
|
+
if (asChild && React46.isValidElement(children)) {
|
|
18131
18455
|
return /* @__PURE__ */ jsx(
|
|
18132
18456
|
Popover$1.Trigger,
|
|
18133
18457
|
{
|
|
@@ -18146,8 +18470,8 @@ var HoverCard = ({
|
|
|
18146
18470
|
children,
|
|
18147
18471
|
...props
|
|
18148
18472
|
}) => {
|
|
18149
|
-
const [open, setOpen] =
|
|
18150
|
-
const timeoutRef =
|
|
18473
|
+
const [open, setOpen] = React46.useState(false);
|
|
18474
|
+
const timeoutRef = React46.useRef(null);
|
|
18151
18475
|
function handleMouseEnter() {
|
|
18152
18476
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
18153
18477
|
timeoutRef.current = setTimeout(() => setOpen(true), openDelay);
|
|
@@ -18197,14 +18521,14 @@ function InfiniteSlider({
|
|
|
18197
18521
|
const shouldReduceMotion = useReducedMotion();
|
|
18198
18522
|
const [isTransitioning, setIsTransitioning] = useState(false);
|
|
18199
18523
|
const [_key, setKey] = useState(0);
|
|
18200
|
-
const effectiveDuration =
|
|
18524
|
+
const effectiveDuration = React46.useMemo(() => {
|
|
18201
18525
|
if (speed) {
|
|
18202
18526
|
const size = direction === "horizontal" ? width : height;
|
|
18203
18527
|
return size > 0 ? (size + gap) / speed : duration;
|
|
18204
18528
|
}
|
|
18205
18529
|
return currentDuration;
|
|
18206
18530
|
}, [speed, width, height, gap, direction, currentDuration, duration]);
|
|
18207
|
-
const effectiveDurationOnHover =
|
|
18531
|
+
const effectiveDurationOnHover = React46.useMemo(() => {
|
|
18208
18532
|
if (speedOnHover) {
|
|
18209
18533
|
const size = direction === "horizontal" ? width : height;
|
|
18210
18534
|
return size > 0 ? (size + gap) / speedOnHover : durationOnHover;
|
|
@@ -19891,7 +20215,7 @@ function assignRef3(ref, value) {
|
|
|
19891
20215
|
ref.current = value;
|
|
19892
20216
|
}
|
|
19893
20217
|
}
|
|
19894
|
-
var MenubarContext =
|
|
20218
|
+
var MenubarContext = React46.createContext({ activeMenu: null, setActiveMenu: () => {
|
|
19895
20219
|
} });
|
|
19896
20220
|
var Menubar = ({
|
|
19897
20221
|
className,
|
|
@@ -19899,10 +20223,10 @@ var Menubar = ({
|
|
|
19899
20223
|
ref,
|
|
19900
20224
|
...props
|
|
19901
20225
|
}) => {
|
|
19902
|
-
const [activeMenu, setActiveMenu] =
|
|
19903
|
-
const rootRef =
|
|
20226
|
+
const [activeMenu, setActiveMenu] = React46.useState(null);
|
|
20227
|
+
const rootRef = React46.useRef(null);
|
|
19904
20228
|
const contextValue = { activeMenu, setActiveMenu };
|
|
19905
|
-
|
|
20229
|
+
React46.useEffect(() => {
|
|
19906
20230
|
function handlePointerDown(event) {
|
|
19907
20231
|
if (event.target instanceof Node && rootRef.current?.contains(event.target)) return;
|
|
19908
20232
|
setActiveMenu(null);
|
|
@@ -19933,10 +20257,10 @@ var Menubar = ({
|
|
|
19933
20257
|
) });
|
|
19934
20258
|
};
|
|
19935
20259
|
Menubar.displayName = "Menubar";
|
|
19936
|
-
var MenubarMenuContext =
|
|
20260
|
+
var MenubarMenuContext = React46.createContext({ value: "", isOpen: false });
|
|
19937
20261
|
var MenubarMenu = ({ children }) => {
|
|
19938
|
-
const { activeMenu } =
|
|
19939
|
-
const value =
|
|
20262
|
+
const { activeMenu } = React46.use(MenubarContext);
|
|
20263
|
+
const value = React46.useId();
|
|
19940
20264
|
const isOpen = activeMenu === value;
|
|
19941
20265
|
const contextValue = { value, isOpen };
|
|
19942
20266
|
return /* @__PURE__ */ jsx(MenubarMenuContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { className: "relative inline-block text-left", children }) });
|
|
@@ -19949,8 +20273,8 @@ var MenubarTrigger = ({
|
|
|
19949
20273
|
ref,
|
|
19950
20274
|
...props
|
|
19951
20275
|
}) => {
|
|
19952
|
-
const { activeMenu, setActiveMenu } =
|
|
19953
|
-
const { value, isOpen } =
|
|
20276
|
+
const { activeMenu, setActiveMenu } = React46.use(MenubarContext);
|
|
20277
|
+
const { value, isOpen } = React46.use(MenubarMenuContext);
|
|
19954
20278
|
return /* @__PURE__ */ jsx(
|
|
19955
20279
|
"button",
|
|
19956
20280
|
{
|
|
@@ -19973,10 +20297,10 @@ var MenubarTrigger = ({
|
|
|
19973
20297
|
);
|
|
19974
20298
|
};
|
|
19975
20299
|
MenubarTrigger.displayName = "MenubarTrigger";
|
|
19976
|
-
var MenubarSubContext =
|
|
20300
|
+
var MenubarSubContext = React46.createContext({ isOpen: false, setIsOpen: () => {
|
|
19977
20301
|
} });
|
|
19978
20302
|
var MenubarSub = ({ children }) => {
|
|
19979
|
-
const [isOpen, setIsOpen] =
|
|
20303
|
+
const [isOpen, setIsOpen] = React46.useState(false);
|
|
19980
20304
|
const contextValue = { isOpen, setIsOpen };
|
|
19981
20305
|
return /* @__PURE__ */ jsx(MenubarSubContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
19982
20306
|
"div",
|
|
@@ -19995,7 +20319,7 @@ var MenubarSubTrigger = ({
|
|
|
19995
20319
|
ref,
|
|
19996
20320
|
...props
|
|
19997
20321
|
}) => {
|
|
19998
|
-
const { isOpen } =
|
|
20322
|
+
const { isOpen } = React46.use(MenubarSubContext);
|
|
19999
20323
|
return /* @__PURE__ */ jsxs(
|
|
20000
20324
|
"div",
|
|
20001
20325
|
{
|
|
@@ -20021,7 +20345,7 @@ var MenubarSubContent = ({
|
|
|
20021
20345
|
ref,
|
|
20022
20346
|
...props
|
|
20023
20347
|
}) => {
|
|
20024
|
-
const { isOpen } =
|
|
20348
|
+
const { isOpen } = React46.use(MenubarSubContext);
|
|
20025
20349
|
if (!isOpen) return null;
|
|
20026
20350
|
return /* @__PURE__ */ jsx(
|
|
20027
20351
|
"div",
|
|
@@ -20049,10 +20373,10 @@ var MenubarContent = ({
|
|
|
20049
20373
|
ref,
|
|
20050
20374
|
...props
|
|
20051
20375
|
}) => {
|
|
20052
|
-
const { isOpen } =
|
|
20053
|
-
const contentRef =
|
|
20054
|
-
const [side, setSide] =
|
|
20055
|
-
|
|
20376
|
+
const { isOpen } = React46.use(MenubarMenuContext);
|
|
20377
|
+
const contentRef = React46.useRef(null);
|
|
20378
|
+
const [side, setSide] = React46.useState("bottom");
|
|
20379
|
+
React46.useLayoutEffect(() => {
|
|
20056
20380
|
if (!isOpen) {
|
|
20057
20381
|
setSide("bottom");
|
|
20058
20382
|
return;
|
|
@@ -20098,7 +20422,7 @@ var MenubarItem = ({
|
|
|
20098
20422
|
ref,
|
|
20099
20423
|
...props
|
|
20100
20424
|
}) => {
|
|
20101
|
-
const { setActiveMenu } =
|
|
20425
|
+
const { setActiveMenu } = React46.use(MenubarContext);
|
|
20102
20426
|
const activateMenuItem = (e) => {
|
|
20103
20427
|
if (disabled) {
|
|
20104
20428
|
e.preventDefault();
|
|
@@ -20112,9 +20436,9 @@ var MenubarItem = ({
|
|
|
20112
20436
|
setActiveMenu(null);
|
|
20113
20437
|
}
|
|
20114
20438
|
};
|
|
20115
|
-
if (asChild &&
|
|
20439
|
+
if (asChild && React46.isValidElement(children)) {
|
|
20116
20440
|
const child = children;
|
|
20117
|
-
return
|
|
20441
|
+
return React46.cloneElement(child, {
|
|
20118
20442
|
ref,
|
|
20119
20443
|
role: child.props.role ?? "menuitem",
|
|
20120
20444
|
tabIndex: disabled ? -1 : child.props.tabIndex ?? 0,
|
|
@@ -20355,7 +20679,7 @@ function MessageContent({
|
|
|
20355
20679
|
className,
|
|
20356
20680
|
style
|
|
20357
20681
|
}) {
|
|
20358
|
-
const content =
|
|
20682
|
+
const content = React46.useMemo(() => normalizeMessageMarkdown(children), [children]);
|
|
20359
20683
|
return /* @__PURE__ */ jsx(
|
|
20360
20684
|
"div",
|
|
20361
20685
|
{
|
|
@@ -20676,13 +21000,13 @@ var multiSelectTokens = {
|
|
|
20676
21000
|
easing: primitiveTransition.easing.default
|
|
20677
21001
|
}
|
|
20678
21002
|
};
|
|
20679
|
-
var MultiSelectContext =
|
|
21003
|
+
var MultiSelectContext = React46.createContext(null);
|
|
20680
21004
|
var ROW_SELECTOR = "[data-multi-select-row]";
|
|
20681
21005
|
var CHECKBOX_SELECTOR = "[data-multi-select-checkbox]";
|
|
20682
21006
|
var ACTION_SELECTOR = "[data-multi-select-action]";
|
|
20683
21007
|
var FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
20684
21008
|
function useMultiSelectContext(component) {
|
|
20685
|
-
const context =
|
|
21009
|
+
const context = React46.use(MultiSelectContext);
|
|
20686
21010
|
if (!context) {
|
|
20687
21011
|
throw new Error(`${component} must be used inside MultiSelectRoot.`);
|
|
20688
21012
|
}
|
|
@@ -20791,19 +21115,19 @@ function MultiSelectRoot({
|
|
|
20791
21115
|
defaultOpen = false,
|
|
20792
21116
|
onOpenChange
|
|
20793
21117
|
}) {
|
|
20794
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
20795
|
-
const triggerRef =
|
|
20796
|
-
const contentRef =
|
|
21118
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React46.useState(defaultOpen);
|
|
21119
|
+
const triggerRef = React46.useRef(null);
|
|
21120
|
+
const contentRef = React46.useRef(null);
|
|
20797
21121
|
const isControlled = open !== void 0;
|
|
20798
21122
|
const resolvedOpen = open ?? uncontrolledOpen;
|
|
20799
|
-
const setOpen =
|
|
21123
|
+
const setOpen = React46.useCallback(
|
|
20800
21124
|
(nextOpen) => {
|
|
20801
21125
|
if (!isControlled) setUncontrolledOpen(nextOpen);
|
|
20802
21126
|
onOpenChange?.(nextOpen);
|
|
20803
21127
|
},
|
|
20804
21128
|
[isControlled, onOpenChange]
|
|
20805
21129
|
);
|
|
20806
|
-
const contextValue =
|
|
21130
|
+
const contextValue = React46.useMemo(
|
|
20807
21131
|
() => ({ open: resolvedOpen, setOpen, triggerRef, contentRef }),
|
|
20808
21132
|
[resolvedOpen, setOpen]
|
|
20809
21133
|
);
|
|
@@ -20872,7 +21196,7 @@ var MultiSelectContent = ({
|
|
|
20872
21196
|
}) => {
|
|
20873
21197
|
const { open, setOpen, triggerRef, contentRef } = useMultiSelectContext("MultiSelectContent");
|
|
20874
21198
|
const cssVars = createMultiSelectCssVars(width);
|
|
20875
|
-
|
|
21199
|
+
React46.useEffect(() => {
|
|
20876
21200
|
if (!open) return;
|
|
20877
21201
|
const frame = window.requestAnimationFrame(() => focusFirstRow(contentRef.current));
|
|
20878
21202
|
return () => window.cancelAnimationFrame(frame);
|
|
@@ -21143,18 +21467,18 @@ var MultipleSelector = ({
|
|
|
21143
21467
|
inputProps,
|
|
21144
21468
|
hideClearAllButton = false
|
|
21145
21469
|
}) => {
|
|
21146
|
-
const inputRef =
|
|
21147
|
-
const [open, setOpen] =
|
|
21148
|
-
const [onScrollbar, setOnScrollbar] =
|
|
21149
|
-
const [isLoading, setIsLoading] =
|
|
21150
|
-
const dropdownRef =
|
|
21151
|
-
const [selected, setSelected] =
|
|
21152
|
-
const [options, setOptions] =
|
|
21470
|
+
const inputRef = React46.useRef(null);
|
|
21471
|
+
const [open, setOpen] = React46.useState(false);
|
|
21472
|
+
const [onScrollbar, setOnScrollbar] = React46.useState(false);
|
|
21473
|
+
const [isLoading, setIsLoading] = React46.useState(false);
|
|
21474
|
+
const dropdownRef = React46.useRef(null);
|
|
21475
|
+
const [selected, setSelected] = React46.useState(value || []);
|
|
21476
|
+
const [options, setOptions] = React46.useState(
|
|
21153
21477
|
transToGroupOption(arrayDefaultOptions, groupBy)
|
|
21154
21478
|
);
|
|
21155
|
-
const [inputValue, setInputValue] =
|
|
21479
|
+
const [inputValue, setInputValue] = React46.useState("");
|
|
21156
21480
|
const debouncedSearchTerm = useDebouncedValue(inputValue, delay || 500);
|
|
21157
|
-
|
|
21481
|
+
React46.useImperativeHandle(
|
|
21158
21482
|
ref,
|
|
21159
21483
|
() => ({
|
|
21160
21484
|
selectedValue: [...selected],
|
|
@@ -21164,13 +21488,13 @@ var MultipleSelector = ({
|
|
|
21164
21488
|
}),
|
|
21165
21489
|
[selected]
|
|
21166
21490
|
);
|
|
21167
|
-
const handleClickOutside =
|
|
21491
|
+
const handleClickOutside = React46.useCallback((event) => {
|
|
21168
21492
|
if (dropdownRef.current && !dropdownRef.current.contains(event.target) && inputRef.current && !inputRef.current.contains(event.target)) {
|
|
21169
21493
|
setOpen(false);
|
|
21170
21494
|
inputRef.current.blur();
|
|
21171
21495
|
}
|
|
21172
21496
|
}, []);
|
|
21173
|
-
const handleUnselect =
|
|
21497
|
+
const handleUnselect = React46.useCallback(
|
|
21174
21498
|
(option) => {
|
|
21175
21499
|
const newOptions = selected.filter((s) => s.value !== option.value);
|
|
21176
21500
|
setSelected(newOptions);
|
|
@@ -21178,7 +21502,7 @@ var MultipleSelector = ({
|
|
|
21178
21502
|
},
|
|
21179
21503
|
[onChange, selected]
|
|
21180
21504
|
);
|
|
21181
|
-
const handleKeyDown =
|
|
21505
|
+
const handleKeyDown = React46.useCallback(
|
|
21182
21506
|
(e) => {
|
|
21183
21507
|
const input = inputRef.current;
|
|
21184
21508
|
if (input) {
|
|
@@ -21277,18 +21601,18 @@ var MultipleSelector = ({
|
|
|
21277
21601
|
if (onSearch && debouncedSearchTerm.length > 0 && !isLoading) return Item;
|
|
21278
21602
|
return void 0;
|
|
21279
21603
|
};
|
|
21280
|
-
const EmptyItem =
|
|
21604
|
+
const EmptyItem = React46.useCallback(() => {
|
|
21281
21605
|
if (!emptyIndicator) return void 0;
|
|
21282
21606
|
if (onSearch && !creatable && Object.keys(options).length === 0) {
|
|
21283
21607
|
return /* @__PURE__ */ jsx(CommandItem, { value: "-", disabled: true, children: emptyIndicator });
|
|
21284
21608
|
}
|
|
21285
21609
|
return /* @__PURE__ */ jsx(CommandEmpty2, { children: emptyIndicator });
|
|
21286
21610
|
}, [creatable, emptyIndicator, onSearch, options]);
|
|
21287
|
-
const selectables =
|
|
21611
|
+
const selectables = React46.useMemo(
|
|
21288
21612
|
() => removePickedOption(options, selected),
|
|
21289
21613
|
[options, selected]
|
|
21290
21614
|
);
|
|
21291
|
-
const commandFilter =
|
|
21615
|
+
const commandFilter = React46.useCallback(() => {
|
|
21292
21616
|
if (commandProps?.filter) return commandProps.filter;
|
|
21293
21617
|
if (creatable) {
|
|
21294
21618
|
return (value2, search) => {
|
|
@@ -21473,7 +21797,7 @@ MultipleSelector.displayName = "MultipleSelector";
|
|
|
21473
21797
|
var navigationMenuTriggerStyle = cva(
|
|
21474
21798
|
`group inline-flex h-10 w-max items-center justify-center rounded-[var(--radius-md)] bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground ${overlayClassNames.focusRing} disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50`
|
|
21475
21799
|
);
|
|
21476
|
-
var NavigationMenuContext =
|
|
21800
|
+
var NavigationMenuContext = React46.createContext({ value: "", onValueChange: () => {
|
|
21477
21801
|
} });
|
|
21478
21802
|
var NavigationMenu = ({
|
|
21479
21803
|
className,
|
|
@@ -21483,7 +21807,7 @@ var NavigationMenu = ({
|
|
|
21483
21807
|
ref,
|
|
21484
21808
|
...props
|
|
21485
21809
|
}) => {
|
|
21486
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
21810
|
+
const [uncontrolledValue, setUncontrolledValue] = React46.useState("");
|
|
21487
21811
|
const value = controlledValue !== void 0 ? controlledValue : uncontrolledValue;
|
|
21488
21812
|
const setValue = onValueChange || setUncontrolledValue;
|
|
21489
21813
|
const contextValue = { value, onValueChange: setValue };
|
|
@@ -21514,7 +21838,7 @@ var NavigationMenuList = ({
|
|
|
21514
21838
|
}
|
|
21515
21839
|
);
|
|
21516
21840
|
NavigationMenuList.displayName = "NavigationMenuList";
|
|
21517
|
-
var NavigationMenuItemContext =
|
|
21841
|
+
var NavigationMenuItemContext = React46.createContext({ value: "" });
|
|
21518
21842
|
var NavigationMenuItem = ({
|
|
21519
21843
|
className,
|
|
21520
21844
|
value,
|
|
@@ -21522,7 +21846,7 @@ var NavigationMenuItem = ({
|
|
|
21522
21846
|
ref,
|
|
21523
21847
|
...props
|
|
21524
21848
|
}) => {
|
|
21525
|
-
const defaultId =
|
|
21849
|
+
const defaultId = React46.useId();
|
|
21526
21850
|
const itemValue = value || defaultId;
|
|
21527
21851
|
const contextValue = { value: itemValue };
|
|
21528
21852
|
return /* @__PURE__ */ jsx(NavigationMenuItemContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("li", { ref, className: cn("relative", className), ...props, children }) });
|
|
@@ -21534,8 +21858,8 @@ var NavigationMenuTrigger = ({
|
|
|
21534
21858
|
ref,
|
|
21535
21859
|
...props
|
|
21536
21860
|
}) => {
|
|
21537
|
-
const { value: contextValue, onValueChange } =
|
|
21538
|
-
const { value: itemValue } =
|
|
21861
|
+
const { value: contextValue, onValueChange } = React46.use(NavigationMenuContext);
|
|
21862
|
+
const { value: itemValue } = React46.use(NavigationMenuItemContext);
|
|
21539
21863
|
const isOpen = contextValue === itemValue;
|
|
21540
21864
|
return /* @__PURE__ */ jsxs(
|
|
21541
21865
|
"button",
|
|
@@ -21568,8 +21892,8 @@ var NavigationMenuContent = ({
|
|
|
21568
21892
|
ref,
|
|
21569
21893
|
...props
|
|
21570
21894
|
}) => {
|
|
21571
|
-
const { value: contextValue } =
|
|
21572
|
-
const { value: itemValue } =
|
|
21895
|
+
const { value: contextValue } = React46.use(NavigationMenuContext);
|
|
21896
|
+
const { value: itemValue } = React46.use(NavigationMenuItemContext);
|
|
21573
21897
|
const isOpen = contextValue === itemValue;
|
|
21574
21898
|
if (!isOpen) return null;
|
|
21575
21899
|
return /* @__PURE__ */ jsx(
|
|
@@ -21600,10 +21924,10 @@ var NavigationMenuLink = ({
|
|
|
21600
21924
|
ref,
|
|
21601
21925
|
...props
|
|
21602
21926
|
}) => {
|
|
21603
|
-
const { onValueChange } =
|
|
21604
|
-
if (asChild &&
|
|
21927
|
+
const { onValueChange } = React46.use(NavigationMenuContext);
|
|
21928
|
+
if (asChild && React46.isValidElement(children)) {
|
|
21605
21929
|
const child = children;
|
|
21606
|
-
return
|
|
21930
|
+
return React46.cloneElement(child, {
|
|
21607
21931
|
ref,
|
|
21608
21932
|
"data-active": active ? "" : void 0,
|
|
21609
21933
|
onClick: (e) => {
|
|
@@ -23643,7 +23967,7 @@ var radioControlClassName = cn(
|
|
|
23643
23967
|
"relative inline-flex shrink-0 items-center justify-center rounded-[var(--radius-full)] border-[length:var(--radio-border-width)] border-border bg-background text-foreground",
|
|
23644
23968
|
"size-[var(--radio-control-size)]",
|
|
23645
23969
|
"transition-[background-color,border-color,box-shadow] duration-[var(--radio-motion-duration)] ease-[var(--radio-motion-easing)]",
|
|
23646
|
-
"after:size-[var(--radio-dot-size)] after:scale-
|
|
23970
|
+
"after:size-[var(--radio-dot-size)] after:scale-95 after:rounded-[var(--radius-full)] after:bg-current after:opacity-0 after:transition-[opacity,transform] after:duration-[var(--radio-motion-duration)] after:ease-[var(--radio-motion-easing)] after:content-['']",
|
|
23647
23971
|
"peer-checked:border-[var(--neutral-12)] peer-checked:after:scale-100 peer-checked:after:opacity-100",
|
|
23648
23972
|
"peer-focus-visible:outline-none",
|
|
23649
23973
|
"peer-disabled:border-[var(--neutral-5)] peer-disabled:bg-muted peer-disabled:text-[var(--neutral-8)]"
|
|
@@ -24493,7 +24817,7 @@ var wrap = (min, max, v) => {
|
|
|
24493
24817
|
const rangeSize = max - min;
|
|
24494
24818
|
return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
|
|
24495
24819
|
};
|
|
24496
|
-
var ScrollVelocityContext =
|
|
24820
|
+
var ScrollVelocityContext = React46__default.createContext(null);
|
|
24497
24821
|
function ScrollVelocityContainer({
|
|
24498
24822
|
children,
|
|
24499
24823
|
className,
|
|
@@ -24797,21 +25121,21 @@ function Scroller({
|
|
|
24797
25121
|
style,
|
|
24798
25122
|
...props
|
|
24799
25123
|
}) {
|
|
24800
|
-
const viewportRef =
|
|
24801
|
-
const childrenContainerRef =
|
|
24802
|
-
const [edgeState, setEdgeState] =
|
|
25124
|
+
const viewportRef = React46.useRef(null);
|
|
25125
|
+
const childrenContainerRef = React46.useRef(null);
|
|
25126
|
+
const [edgeState, setEdgeState] = React46.useState({
|
|
24803
25127
|
left: false,
|
|
24804
25128
|
right: false,
|
|
24805
25129
|
top: false,
|
|
24806
25130
|
bottom: false
|
|
24807
25131
|
});
|
|
24808
25132
|
const resolvedButtonAxis = resolveButtonAxis(overflow, buttonAxis);
|
|
24809
|
-
const updateEdgeState =
|
|
25133
|
+
const updateEdgeState = React46.useCallback(() => {
|
|
24810
25134
|
const viewport2 = viewportRef.current;
|
|
24811
25135
|
if (!viewport2) return;
|
|
24812
25136
|
setEdgeState(getEdgeState(viewport2));
|
|
24813
25137
|
}, []);
|
|
24814
|
-
|
|
25138
|
+
React46.useEffect(() => {
|
|
24815
25139
|
updateEdgeState();
|
|
24816
25140
|
const viewport2 = viewportRef.current;
|
|
24817
25141
|
const childrenContainer = childrenContainerRef.current;
|
|
@@ -24825,7 +25149,7 @@ function Scroller({
|
|
|
24825
25149
|
window.removeEventListener("resize", updateEdgeState);
|
|
24826
25150
|
};
|
|
24827
25151
|
}, [updateEdgeState]);
|
|
24828
|
-
const scrollToSibling =
|
|
25152
|
+
const scrollToSibling = React46.useCallback(
|
|
24829
25153
|
(direction) => {
|
|
24830
25154
|
const viewport2 = viewportRef.current;
|
|
24831
25155
|
if (!viewport2) return;
|
|
@@ -25064,7 +25388,7 @@ var SheetTrigger = ({
|
|
|
25064
25388
|
ref,
|
|
25065
25389
|
...props
|
|
25066
25390
|
}) => {
|
|
25067
|
-
if (asChild &&
|
|
25391
|
+
if (asChild && React46.isValidElement(children)) {
|
|
25068
25392
|
return /* @__PURE__ */ jsx(
|
|
25069
25393
|
Dialog$1.Trigger,
|
|
25070
25394
|
{
|
|
@@ -25084,7 +25408,7 @@ var SheetClose = ({
|
|
|
25084
25408
|
ref,
|
|
25085
25409
|
...props
|
|
25086
25410
|
}) => {
|
|
25087
|
-
if (asChild &&
|
|
25411
|
+
if (asChild && React46.isValidElement(children)) {
|
|
25088
25412
|
return /* @__PURE__ */ jsx(
|
|
25089
25413
|
Dialog$1.Close,
|
|
25090
25414
|
{
|
|
@@ -25365,9 +25689,9 @@ var ShowMore = ({
|
|
|
25365
25689
|
ref,
|
|
25366
25690
|
...props
|
|
25367
25691
|
}) => {
|
|
25368
|
-
const wasExpanded =
|
|
25692
|
+
const wasExpanded = React46.useRef(expanded);
|
|
25369
25693
|
const label = expanded ? expandedLabel : getCollapsedLabel(hiddenCount, collapsedLabel);
|
|
25370
|
-
|
|
25694
|
+
React46.useEffect(() => {
|
|
25371
25695
|
if (focusOnExpand && expanded && !wasExpanded.current) {
|
|
25372
25696
|
focusTargetRef?.current?.focus();
|
|
25373
25697
|
}
|
|
@@ -25520,9 +25844,9 @@ var Slider = ({
|
|
|
25520
25844
|
valueMode: _valueMode,
|
|
25521
25845
|
...inputProps
|
|
25522
25846
|
} = props;
|
|
25523
|
-
const generatedId =
|
|
25847
|
+
const generatedId = React46.useId();
|
|
25524
25848
|
const sliderId = id ?? generatedId;
|
|
25525
|
-
const [internalValue, setInternalValue] =
|
|
25849
|
+
const [internalValue, setInternalValue] = React46.useState(
|
|
25526
25850
|
() => normalizeSliderValue(defaultValue, min)
|
|
25527
25851
|
);
|
|
25528
25852
|
const currentValue = clamp(normalizeSliderValue(value, internalValue), min, max);
|
|
@@ -25900,7 +26224,7 @@ var Stack = ({
|
|
|
25900
26224
|
ref,
|
|
25901
26225
|
...props
|
|
25902
26226
|
}) => {
|
|
25903
|
-
return
|
|
26227
|
+
return React46.createElement(
|
|
25904
26228
|
Component2,
|
|
25905
26229
|
{
|
|
25906
26230
|
...props,
|
|
@@ -26464,9 +26788,9 @@ var SubagentTool = memo(function SubagentTool2({
|
|
|
26464
26788
|
}
|
|
26465
26789
|
);
|
|
26466
26790
|
});
|
|
26467
|
-
var SwitchContext =
|
|
26791
|
+
var SwitchContext = React46.createContext(null);
|
|
26468
26792
|
function useSwitchContext() {
|
|
26469
|
-
const context =
|
|
26793
|
+
const context = React46.use(SwitchContext);
|
|
26470
26794
|
if (!context) {
|
|
26471
26795
|
throw new Error("Switch.Control must be rendered inside Switch.");
|
|
26472
26796
|
}
|
|
@@ -26514,9 +26838,9 @@ var SwitchRoot = function SwitchRoot2({
|
|
|
26514
26838
|
ref,
|
|
26515
26839
|
...props
|
|
26516
26840
|
}) {
|
|
26517
|
-
const generatedName =
|
|
26841
|
+
const generatedName = React46.useId();
|
|
26518
26842
|
const resolvedName = name ?? generatedName;
|
|
26519
|
-
const context =
|
|
26843
|
+
const context = React46.useMemo(
|
|
26520
26844
|
() => ({
|
|
26521
26845
|
defaultValue,
|
|
26522
26846
|
disabled,
|
|
@@ -26720,7 +27044,7 @@ var tabsContentVariants = cva(
|
|
|
26720
27044
|
}
|
|
26721
27045
|
}
|
|
26722
27046
|
);
|
|
26723
|
-
var TabsContext =
|
|
27047
|
+
var TabsContext = React46.createContext({
|
|
26724
27048
|
activationMode: "manual",
|
|
26725
27049
|
disabled: false,
|
|
26726
27050
|
shape: "default",
|
|
@@ -26778,7 +27102,7 @@ function Tabs({
|
|
|
26778
27102
|
}) {
|
|
26779
27103
|
const rootValue = selected ?? value;
|
|
26780
27104
|
const rootDefaultValue = defaultValue ?? getFirstEnabledValue(tabs);
|
|
26781
|
-
const context =
|
|
27105
|
+
const context = React46.useMemo(
|
|
26782
27106
|
() => ({ activationMode, disabled, shape, size, variant }),
|
|
26783
27107
|
[activationMode, disabled, shape, size, variant]
|
|
26784
27108
|
);
|
|
@@ -26864,11 +27188,11 @@ function TabsList({
|
|
|
26864
27188
|
children,
|
|
26865
27189
|
...props
|
|
26866
27190
|
}) {
|
|
26867
|
-
const context =
|
|
27191
|
+
const context = React46.use(TabsContext);
|
|
26868
27192
|
const resolvedVariant = variant ?? context.variant;
|
|
26869
27193
|
const resolvedShape = shape ?? context.shape;
|
|
26870
27194
|
const resolvedActivateOnFocus = activateOnFocus ?? context.activationMode === "automatic";
|
|
26871
|
-
const listContext =
|
|
27195
|
+
const listContext = React46.useMemo(
|
|
26872
27196
|
() => ({ ...context, shape: resolvedShape, variant: resolvedVariant }),
|
|
26873
27197
|
[context, resolvedShape, resolvedVariant]
|
|
26874
27198
|
);
|
|
@@ -26905,7 +27229,7 @@ function TabsList({
|
|
|
26905
27229
|
) });
|
|
26906
27230
|
}
|
|
26907
27231
|
function TabsTrigger({ badge, children, className, disabled, icon, ...props }) {
|
|
26908
|
-
const context =
|
|
27232
|
+
const context = React46.use(TabsContext);
|
|
26909
27233
|
const isDisabled = disabled ?? context.disabled;
|
|
26910
27234
|
return /* @__PURE__ */ jsxs(
|
|
26911
27235
|
BaseTrigger,
|
|
@@ -27303,10 +27627,10 @@ var ThemeSwitcher = ({
|
|
|
27303
27627
|
ref,
|
|
27304
27628
|
...props
|
|
27305
27629
|
}) => {
|
|
27306
|
-
const generatedName =
|
|
27630
|
+
const generatedName = React46.useId();
|
|
27307
27631
|
const radioName = name ?? generatedName;
|
|
27308
27632
|
const { isProviderBound, theme, forcedTheme, setTheme } = useTheme();
|
|
27309
|
-
const [fallbackValue, setFallbackValue] =
|
|
27633
|
+
const [fallbackValue, setFallbackValue] = React46.useState(defaultValue);
|
|
27310
27634
|
const providerTheme = isThemeSwitcherValue(theme) ? theme : "system";
|
|
27311
27635
|
const selectedTheme = forcedTheme ?? value ?? (isProviderBound ? providerTheme : fallbackValue);
|
|
27312
27636
|
const isReadOnly = disabled || forcedTheme !== void 0;
|
|
@@ -27450,15 +27774,15 @@ var ThemeToggle = ({
|
|
|
27450
27774
|
ref,
|
|
27451
27775
|
...props
|
|
27452
27776
|
}) => {
|
|
27453
|
-
const rawId =
|
|
27777
|
+
const rawId = React46.useId();
|
|
27454
27778
|
const maskId = `theme-toggle-mask-${rawId.replace(/:/g, "")}`;
|
|
27455
27779
|
const shouldReduceMotion = useReducedMotion2();
|
|
27456
|
-
const lastSoundAt =
|
|
27457
|
-
const [mounted, setMounted] =
|
|
27458
|
-
const [internalValue, setInternalValue] =
|
|
27780
|
+
const lastSoundAt = React46.useRef(0);
|
|
27781
|
+
const [mounted, setMounted] = React46.useState(false);
|
|
27782
|
+
const [internalValue, setInternalValue] = React46.useState(
|
|
27459
27783
|
defaultValue ?? "light"
|
|
27460
27784
|
);
|
|
27461
|
-
|
|
27785
|
+
React46.useEffect(() => {
|
|
27462
27786
|
if (value === void 0 && defaultValue === void 0) {
|
|
27463
27787
|
setInternalValue(readDocumentTheme());
|
|
27464
27788
|
}
|
|
@@ -27473,7 +27797,7 @@ var ThemeToggle = ({
|
|
|
27473
27797
|
whileHover: { scale: themeToggleTokens.motion.hoverScale },
|
|
27474
27798
|
whileTap: { scale: themeToggleTokens.motion.tapScale }
|
|
27475
27799
|
} : {};
|
|
27476
|
-
|
|
27800
|
+
React46.useEffect(() => {
|
|
27477
27801
|
if (applyToDocument && mounted) {
|
|
27478
27802
|
applyDocumentTheme(currentValue);
|
|
27479
27803
|
}
|
|
@@ -27688,7 +28012,7 @@ function Toaster({
|
|
|
27688
28012
|
);
|
|
27689
28013
|
}
|
|
27690
28014
|
function useToasts() {
|
|
27691
|
-
const message =
|
|
28015
|
+
const message = React46.useCallback(
|
|
27692
28016
|
({
|
|
27693
28017
|
text,
|
|
27694
28018
|
preserve,
|
|
@@ -27734,16 +28058,16 @@ function useToasts() {
|
|
|
27734
28058
|
},
|
|
27735
28059
|
[]
|
|
27736
28060
|
);
|
|
27737
|
-
const success =
|
|
28061
|
+
const success = React46.useCallback((text, options = {}) => {
|
|
27738
28062
|
return toast.success(text, toExternalToast(options));
|
|
27739
28063
|
}, []);
|
|
27740
|
-
const warning =
|
|
28064
|
+
const warning = React46.useCallback((text, options = {}) => {
|
|
27741
28065
|
return toast.warning(text, toExternalToast(options));
|
|
27742
28066
|
}, []);
|
|
27743
|
-
const error =
|
|
28067
|
+
const error = React46.useCallback((text, options = {}) => {
|
|
27744
28068
|
return toast.error(text, toExternalToast(options));
|
|
27745
28069
|
}, []);
|
|
27746
|
-
const dismiss =
|
|
28070
|
+
const dismiss = React46.useCallback((id) => toast.dismiss(id), []);
|
|
27747
28071
|
return {
|
|
27748
28072
|
dismiss,
|
|
27749
28073
|
error,
|
|
@@ -27852,13 +28176,13 @@ var Toggle = ({
|
|
|
27852
28176
|
...inputProps
|
|
27853
28177
|
}) => {
|
|
27854
28178
|
const isControlled = checkedProp !== void 0;
|
|
27855
|
-
const [internalChecked, setInternalChecked] =
|
|
27856
|
-
const generatedId =
|
|
28179
|
+
const [internalChecked, setInternalChecked] = React46.useState(defaultChecked);
|
|
28180
|
+
const generatedId = React46.useId();
|
|
27857
28181
|
const inputId = id ?? generatedId;
|
|
27858
28182
|
const checked = isControlled ? checkedProp : internalChecked;
|
|
27859
28183
|
const hasVisibleLabel = children != null;
|
|
27860
28184
|
const visualDirection = direction === "switch-last" ? "label-first" : direction;
|
|
27861
|
-
|
|
28185
|
+
React46.useEffect(() => {
|
|
27862
28186
|
if (process.env.NODE_ENV !== "production" && !hasVisibleLabel && ariaLabel === void 0 && ariaLabelledBy === void 0) {
|
|
27863
28187
|
globalThis.console.warn(
|
|
27864
28188
|
"Toggle requires an accessible name. Pass children, aria-label, or aria-labelledby."
|
|
@@ -27987,21 +28311,21 @@ var toggleGroupItemVariants = cva(
|
|
|
27987
28311
|
}
|
|
27988
28312
|
}
|
|
27989
28313
|
);
|
|
27990
|
-
var ToggleGroupTypeContext =
|
|
27991
|
-
var ToggleGroupValueContext =
|
|
27992
|
-
var ToggleGroupChangeContext =
|
|
28314
|
+
var ToggleGroupTypeContext = React46.createContext(null);
|
|
28315
|
+
var ToggleGroupValueContext = React46.createContext(null);
|
|
28316
|
+
var ToggleGroupChangeContext = React46.createContext(
|
|
27993
28317
|
null
|
|
27994
28318
|
);
|
|
27995
|
-
var ToggleGroupDisabledContext =
|
|
27996
|
-
var ToggleGroupVariantContext =
|
|
27997
|
-
var ToggleGroupSizeContext =
|
|
28319
|
+
var ToggleGroupDisabledContext = React46.createContext(void 0);
|
|
28320
|
+
var ToggleGroupVariantContext = React46.createContext(void 0);
|
|
28321
|
+
var ToggleGroupSizeContext = React46.createContext(void 0);
|
|
27998
28322
|
function useToggleGroup() {
|
|
27999
|
-
const type =
|
|
28000
|
-
const value =
|
|
28001
|
-
const onValueChange =
|
|
28002
|
-
const disabled =
|
|
28003
|
-
const variant =
|
|
28004
|
-
const size =
|
|
28323
|
+
const type = React46.use(ToggleGroupTypeContext);
|
|
28324
|
+
const value = React46.use(ToggleGroupValueContext);
|
|
28325
|
+
const onValueChange = React46.use(ToggleGroupChangeContext);
|
|
28326
|
+
const disabled = React46.use(ToggleGroupDisabledContext);
|
|
28327
|
+
const variant = React46.use(ToggleGroupVariantContext);
|
|
28328
|
+
const size = React46.use(ToggleGroupSizeContext);
|
|
28005
28329
|
if (type === null || value === null || onValueChange === null) {
|
|
28006
28330
|
throw new Error("ToggleGroup internal components must be used within a ToggleGroup");
|
|
28007
28331
|
}
|
|
@@ -28020,7 +28344,7 @@ var ToggleGroup = ({
|
|
|
28020
28344
|
ref,
|
|
28021
28345
|
...props
|
|
28022
28346
|
}) => {
|
|
28023
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
28347
|
+
const [uncontrolledValue, setUncontrolledValue] = React46.useState(
|
|
28024
28348
|
defaultValue !== void 0 ? defaultValue : type === "single" ? "" : []
|
|
28025
28349
|
);
|
|
28026
28350
|
const isControlled = controlledValue !== void 0;
|
|
@@ -28747,7 +29071,7 @@ function VideoText({
|
|
|
28747
29071
|
as: Component2 = "div"
|
|
28748
29072
|
}) {
|
|
28749
29073
|
const [svgMask, setSvgMask] = useState("");
|
|
28750
|
-
const content =
|
|
29074
|
+
const content = React46__default.Children.toArray(children).join("");
|
|
28751
29075
|
useEffect(() => {
|
|
28752
29076
|
const updateSvgMask = () => {
|
|
28753
29077
|
const responsiveFontSize = typeof fontSize === "number" ? `${fontSize}vw` : fontSize;
|
|
@@ -29185,6 +29509,6 @@ function XPostSkeleton({ className }) {
|
|
|
29185
29509
|
);
|
|
29186
29510
|
}
|
|
29187
29511
|
|
|
29188
|
-
export { ANIMATED_GRADIENT_CSS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentPlan, Alert, AlertContent, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertIcon, AlertTitle, AlertToolbar, AnimateIn, AnimateInGroup, AnimateSwap, AnimatedBeam, AnimatedCircularProgressBar, AnimatedExportIcon, AnimatedGradientText, AnimatedGroup, AnimatedHikeCard, AnimatedList, AnimatedListItem, AnimatedShinyText, AnimatedSpan, AnimatedThemeToggler, Announcement, AnnouncementTag, AnnouncementTitle, AppleLiquidGlassSwitcher, AspectRatio, AssistedPasswordConfirmation, AuroraBackground, AuroraText, Avatar, AvatarCircles, AvatarFallback, AvatarGroup, AvatarImage, AvatarSmartGroup, AvatarWithIcon, Awards, Badge, Badge1, BarsLoader, BaseBadge, BaseBadgeButton, BaseBadgeDot, BaseButton, BaseButtonArrow, BentoCard, BentoGrid, BitbucketAvatar, Book, BorderTrail, Box, BrandMark, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Browser, BrowserMockup, BulkActionBar, BulkActionConfirmDialog, Button, ButtonLink, CanvasRevealEffect, Card, CardContent, CardDescription, CardErrorBoundary, CardFooter, CardHeader, CardSpotlight, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, CheckGlyph, Checkbox, CheckboxGroup, ChoiceboxGroup, CircularLoader, CircularUI, ClassicLoader, ClientXPostCard, CodeBlock, CodeBlockLanguageIcon, Collapse, CollapseGroup, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorBadge, Combobox, ComboboxEmpty, ComboboxGroupSub, ComboboxInput, ComboboxList, ComboboxOptionItem, ComboboxRoot, ComboboxSeparator, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandMenu, CommandMenuEmpty, CommandMenuGroup, CommandMenuInput, CommandMenuItem, CommandMenuList, CommandMenuResults, CommandMenuRoot, CommandMenuSeparator, CommandMenuShortcut, CommandResults, CommandSeparator, CommandShortcut, CompactBulkActionBar, Confetti, ConfettiButton, ConfirmDeleteDialog, ConfirmDialog, ContextCard, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyCodeButton, CopyIdButton, CopyLinkButton, CopyMenuItem, CopyableField, DITHERING_SHAPES, DITHERING_TYPES, DataList, Description, DestructiveActionModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiceBearAvatar, DisplayCards, DitheringBackground, DitheringShader, DotPattern, DotsLoader, DottedMap, DottedWorldMap, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuEmpty, DropdownMenuFilterInput, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DualModeImage, DynamicIslandTOC, EditTool, EmptyState, EmptyStateIcon, EmptyStateRoot, Enable2FACard, Entity, ErrorSurface as Error, ErrorBoundary, ErrorMessage, ExpandableGallery, ExpandableTabs, ExpandingTextarea, FallbackCard, FeatureArrowCard, FeatureCard, CardContent as FeatureCardContent, FeatureCardDecorator, FeatureCardHeader, FeatureCheckItem, FeatureGate, FeatureIconItem, Feedback, Field, FileAttachment, FileCard, FilterPills, Flex, FlickeringGrid, FloatingBulkActionBar, Folder, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gauge, GeistTooltip, GitHubAvatar, GitHubCalendar, GitLabAvatar, GithubInlineDiff, Globe, GradientAnimatedText, GrainCloudsBackground, GrainGradientBackground, Grid, GridCell, GridFeatureCard, GridPatternCard, GridPatternCardBody, GridRoot, GridSystem, Heading, HexGrid, Highlighter, HoverCard, HoverCardContent, HoverCardTrigger, IndeterminateGlyph, InfiniteSlider, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InteractiveCard, InteractiveFrostedGlassCard, IphoneMockup, Kbd, KpiCard, LINE_SHADOW_CSS, Label, LetterGlitch, LightRays, LineShadowText, Loader, LoadingDots, MCP_DEFAULT_MAX_ARGS_SHOWN, MCP_DEFAULT_MAX_ARG_VALUE_CHARS, MCP_DEFAULT_MAX_OUTPUT_CHARS, MacbookPro, MagicCard, Material, McpTool, Menu, MenuButton, MenuContainer, MenuItem, MenuItemLocked, MenuLink, MenuSection, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MeshGradientBg, MessageContent, MessageWithReactions, MetricCard, MetricCardBordered, MetricGrid, MiddleTruncate, Modal, MultiSelectContent, MultiSelectRoot, MultiSelectRow, MultiSelectTrigger, MultipleSelector, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NeuroNoiseBg, NoisePatternCard, NoisePatternCardBody, Note, NotificationMessageList, Pagination, PaginationControl, PanelErrorBoundary, Phone, Popover, PopoverAnchor, PopoverContent, PopoverPositioner, PopoverTrigger, PricingCard, PricingCardBadge, PricingCardBody, PricingCardDescription, PricingCardHeader, PricingCardList, PricingCardListItem, PricingCardMainPrice, PricingCardOriginalPrice, PricingCardPeriod, PricingCardPlan, PricingCardPlanName, PricingCardPrice, PricingCardRoot, PricingCardSeparator, Progress, ProgressStepper, ProgressiveBlur, ProjectBanner, PulseDotLoader, PulseLoader, QuestionPrompt, QuestionTool, RadioGroup, RadioGroupCard, RadioGroupCardItem, RadioGroupItem, RadioGroupStacked, RadioGroupStackedItem, ReactionBadge, ReactionChip, RelativeTimeCard, ResizableHandle, ResizablePanel, ResizablePanelGroup, SEARCH_DEFAULT_MAX_HEIGHT_PX, Safari, ScrollVelocityContainer, ScrollVelocityRow, Scroller, SearchTool, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShineBorder, ShowMore, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, SliderNumberFlow, Spinner2 as Spinner, SplitButton, SplitButtonMenuItem, Stack, StarsCanvas, StatItem, StatusBadge2 as StatusBadge, StatusDot, Stepper, StepperContent, StepperNavigation, StepperProvider, SubagentTool, Switch, Table, TableBody, TableCaption, TableCell, TableCol, TableColgroup, TableErrorBoundary, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Terminal, TerminalLoader, Text, TextBlinkLoader, TextDotsLoader, TextLoop, TextScramble, TextShimmer, TextShimmerLoader, Textarea, ThemeSwitcher, ThemeToggle, Toaster, TodoTool, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeExpander, TreeIcon, TreeLabel, TreeLines, TreeNode, TreeNodeContent, TreeNodeTrigger, TreeProvider, TreeView, TypingAnimation, TypingLoader, UpgradeBanner, VideoPlayer, VideoText, WarpBackground, WaveAnimation, WaveLoader, WavesBg, WordFadeIn, XPostCard, XPostSkeleton, alertVariants, ariaPatterns, badgeVariants, baseBadgeVariants, baseButtonVariants, breakpoints, buttonVariants, choiceboxItemVariants, colorBadgeSizes, colorBadgeVariants, containerWidths, contrastRequirements, fixNumberedListBreaks, flexLayouts, focusRing, formatShortRelative, getCurrentBreakpoint, getDensitySpacing, getSpacing, gridLayouts, isBreakpoint, labelVariants, mediaQueries, minTouchTarget, navigationMenuTriggerStyle, normalizeCodeBlockLanguage, normalizeCodeFenceLanguages, normalizeMessageMarkdown, prefersReducedMotion, progressIndicatorVariants, progressVariants, resolveCodeBlockLanguageIcon, responsive, responsivePatterns, skipLinkStyle, spacing, spacingPatterns, spacingToCss, statusBadgeVariants, tabsContentVariants, tabsListVariants, tabsTriggerVariants, toggleGroupItemVariants, toggleGroupVariants, useBulkSelection, useCarousel, useChart, useConfirmDialog, useCopyToClipboard, useDebounce, useFeatureGate, useFormField, useStepper, useStepperContext, useToasts, visuallyHidden, withErrorBoundary, wrap, zIndex };
|
|
29512
|
+
export { ANIMATED_GRADIENT_CSS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentPlan, Alert, AlertContent, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertIcon, AlertTitle, AlertToolbar, AnimateIn, AnimateInGroup, AnimateSwap, AnimatedBeam, AnimatedCircularProgressBar, AnimatedExportIcon, AnimatedGradientText, AnimatedGroup, AnimatedHikeCard, AnimatedList, AnimatedListItem, AnimatedShinyText, AnimatedSpan, AnimatedThemeToggler, Announcement, AnnouncementTag, AnnouncementTitle, AppleLiquidGlassSwitcher, AspectRatio, AssistedPasswordConfirmation, AuroraBackground, AuroraText, Avatar, AvatarCircles, AvatarFallback, AvatarGroup, AvatarImage, AvatarSmartGroup, AvatarWithIcon, Awards, Badge, Badge1, BarsLoader, BaseBadge, BaseBadgeButton, BaseBadgeDot, BaseButton, BaseButtonArrow, BentoCard, BentoGrid, BitbucketAvatar, Book, BorderTrail, Box, BrandMark, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Browser, BrowserMockup, BulkActionBar, BulkActionConfirmDialog, Button, ButtonLink, Calendar, CanvasRevealEffect, Card, CardContent, CardDescription, CardErrorBoundary, CardFooter, CardHeader, CardSpotlight, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, CheckGlyph, Checkbox, CheckboxGroup, ChoiceboxGroup, CircularLoader, CircularUI, ClassicLoader, ClientXPostCard, CodeBlock, CodeBlockLanguageIcon, Collapse, CollapseGroup, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorBadge, Combobox, ComboboxEmpty, ComboboxGroupSub, ComboboxInput, ComboboxList, ComboboxOptionItem, ComboboxRoot, ComboboxSeparator, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandMenu, CommandMenuEmpty, CommandMenuGroup, CommandMenuInput, CommandMenuItem, CommandMenuList, CommandMenuResults, CommandMenuRoot, CommandMenuSeparator, CommandMenuShortcut, CommandResults, CommandSeparator, CommandShortcut, CompactBulkActionBar, Confetti, ConfettiButton, ConfirmDeleteDialog, ConfirmDialog, ContextCard, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyCodeButton, CopyIdButton, CopyLinkButton, CopyMenuItem, CopyableField, DITHERING_SHAPES, DITHERING_TYPES, DataList, DatePicker, Description, DestructiveActionModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiceBearAvatar, DisplayCards, DitheringBackground, DitheringShader, DotPattern, DotsLoader, DottedMap, DottedWorldMap, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuEmpty, DropdownMenuFilterInput, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DualModeImage, DynamicIslandTOC, EditTool, EmptyState, EmptyStateIcon, EmptyStateRoot, Enable2FACard, Entity, ErrorSurface as Error, ErrorBoundary, ErrorMessage, ExpandableGallery, ExpandableTabs, ExpandingTextarea, FallbackCard, FeatureArrowCard, FeatureCard, CardContent as FeatureCardContent, FeatureCardDecorator, FeatureCardHeader, FeatureCheckItem, FeatureGate, FeatureIconItem, Feedback, Field, FileAttachment, FileCard, FilterPills, Flex, FlickeringGrid, FloatingBulkActionBar, Folder, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gauge, GeistTooltip, GitHubAvatar, GitHubCalendar, GitLabAvatar, GithubInlineDiff, Globe, GradientAnimatedText, GrainCloudsBackground, GrainGradientBackground, Grid, GridCell, GridFeatureCard, GridPatternCard, GridPatternCardBody, GridRoot, GridSystem, Heading, HexGrid, Highlighter, HoverCard, HoverCardContent, HoverCardTrigger, ISO_DATE_FORMAT, IndeterminateGlyph, InfiniteSlider, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InteractiveCard, InteractiveFrostedGlassCard, IphoneMockup, Kbd, KpiCard, LINE_SHADOW_CSS, Label, LetterGlitch, LightRays, LineShadowText, Loader, LoadingDots, MCP_DEFAULT_MAX_ARGS_SHOWN, MCP_DEFAULT_MAX_ARG_VALUE_CHARS, MCP_DEFAULT_MAX_OUTPUT_CHARS, MacbookPro, MagicCard, Material, McpTool, Menu, MenuButton, MenuContainer, MenuItem, MenuItemLocked, MenuLink, MenuSection, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MeshGradientBg, MessageContent, MessageWithReactions, MetricCard, MetricCardBordered, MetricGrid, MiddleTruncate, Modal, MultiSelectContent, MultiSelectRoot, MultiSelectRow, MultiSelectTrigger, MultipleSelector, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NeuroNoiseBg, NoisePatternCard, NoisePatternCardBody, Note, NotificationMessageList, Pagination, PaginationControl, PanelErrorBoundary, Phone, Popover, PopoverAnchor, PopoverContent, PopoverPositioner, PopoverTrigger, PricingCard, PricingCardBadge, PricingCardBody, PricingCardDescription, PricingCardHeader, PricingCardList, PricingCardListItem, PricingCardMainPrice, PricingCardOriginalPrice, PricingCardPeriod, PricingCardPlan, PricingCardPlanName, PricingCardPrice, PricingCardRoot, PricingCardSeparator, Progress, ProgressStepper, ProgressiveBlur, ProjectBanner, PulseDotLoader, PulseLoader, QuestionPrompt, QuestionTool, RadioGroup, RadioGroupCard, RadioGroupCardItem, RadioGroupItem, RadioGroupStacked, RadioGroupStackedItem, ReactionBadge, ReactionChip, RelativeTimeCard, ResizableHandle, ResizablePanel, ResizablePanelGroup, SEARCH_DEFAULT_MAX_HEIGHT_PX, Safari, ScrollVelocityContainer, ScrollVelocityRow, Scroller, SearchTool, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShineBorder, ShowMore, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, SliderNumberFlow, Spinner2 as Spinner, SplitButton, SplitButtonMenuItem, Stack, StarsCanvas, StatItem, StatusBadge2 as StatusBadge, StatusDot, Stepper, StepperContent, StepperNavigation, StepperProvider, SubagentTool, Switch, Table, TableBody, TableCaption, TableCell, TableCol, TableColgroup, TableErrorBoundary, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Terminal, TerminalLoader, Text, TextBlinkLoader, TextDotsLoader, TextLoop, TextScramble, TextShimmer, TextShimmerLoader, Textarea, ThemeSwitcher, ThemeToggle, Toaster, TodoTool, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeExpander, TreeIcon, TreeLabel, TreeLines, TreeNode, TreeNodeContent, TreeNodeTrigger, TreeProvider, TreeView, TypingAnimation, TypingLoader, UpgradeBanner, VideoPlayer, VideoText, WarpBackground, WaveAnimation, WaveLoader, WavesBg, WordFadeIn, XPostCard, XPostSkeleton, alertVariants, ariaPatterns, badgeVariants, baseBadgeVariants, baseButtonVariants, breakpoints, buttonVariants, choiceboxItemVariants, colorBadgeSizes, colorBadgeVariants, containerWidths, contrastRequirements, fixNumberedListBreaks, flexLayouts, focusRing, formatShortRelative, getCurrentBreakpoint, getDensitySpacing, getSpacing, gridLayouts, isBreakpoint, labelVariants, mediaQueries, minTouchTarget, navigationMenuTriggerStyle, normalizeCodeBlockLanguage, normalizeCodeFenceLanguages, normalizeMessageMarkdown, parseIsoDate, prefersReducedMotion, progressIndicatorVariants, progressVariants, resolveCodeBlockLanguageIcon, responsive, responsivePatterns, skipLinkStyle, spacing, spacingPatterns, spacingToCss, statusBadgeVariants, tabsContentVariants, tabsListVariants, tabsTriggerVariants, toIsoDate, toggleGroupItemVariants, toggleGroupVariants, useBulkSelection, useCarousel, useChart, useConfirmDialog, useCopyToClipboard, useDebounce, useFeatureGate, useFormField, useStepper, useStepperContext, useToasts, visuallyHidden, withErrorBoundary, wrap, zIndex };
|
|
29189
29513
|
//# sourceMappingURL=index.js.map
|
|
29190
29514
|
//# sourceMappingURL=index.js.map
|