@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.
Files changed (40) hide show
  1. package/dist/animate-in-BlvjVh2S.d.ts +250 -0
  2. package/dist/{canonical-Drca5UMj.d.ts → canonical-Bf4czR2u.d.ts} +13 -250
  3. package/dist/chat/index.d.ts +1 -0
  4. package/dist/chat/index.js +3 -0
  5. package/dist/chat/index.js.map +1 -0
  6. package/dist/components/index.d.ts +58 -123
  7. package/dist/components/index.js +219 -104
  8. package/dist/components/index.js.map +1 -1
  9. package/dist/editorial/index.d.ts +404 -0
  10. package/dist/editorial/index.js +868 -0
  11. package/dist/editorial/index.js.map +1 -0
  12. package/dist/icons/index.d.ts +1 -0
  13. package/dist/layout/index.js +6 -5
  14. package/dist/layout/index.js.map +1 -1
  15. package/dist/layouts/index.js +4 -13
  16. package/dist/layouts/index.js.map +1 -1
  17. package/dist/patterns/index.d.ts +1 -2
  18. package/dist/patterns/index.js +74 -55
  19. package/dist/patterns/index.js.map +1 -1
  20. package/dist/primitives/canonical.d.ts +3 -2
  21. package/dist/primitives/canonical.js +118 -72
  22. package/dist/primitives/canonical.js.map +1 -1
  23. package/dist/primitives/index.d.ts +78 -4
  24. package/dist/primitives/index.js +777 -453
  25. package/dist/primitives/index.js.map +1 -1
  26. package/dist/tailwind.preset.d.ts +2 -2
  27. package/dist/tailwind.preset.js +1 -1
  28. package/dist/tailwind.preset.js.map +1 -1
  29. package/dist/typography/fonts.css +2 -2
  30. package/dist/typography/index.d.ts +4 -4
  31. package/dist/typography/index.js +1 -1
  32. package/dist/typography/index.js.map +1 -1
  33. package/dist/utils/auth-surfaces.d.ts +33 -0
  34. package/dist/utils/auth-surfaces.js +9 -0
  35. package/dist/utils/auth-surfaces.js.map +1 -0
  36. package/dist/utils/index.d.ts +2 -4
  37. package/dist/utils/index.js +6 -3
  38. package/dist/utils/index.js.map +1 -1
  39. package/package.json +25 -7
  40. package/src/typography/fonts.css +2 -2
@@ -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 React45 from 'react';
8
- import React45__default, { useState, useMemo, useEffect, createContext, memo, useId, useRef, use, useCallback, isValidElement, Children, cloneElement, useImperativeHandle, Component, useEffectEvent, createElement, Suspense } from 'react';
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, 0, 0.2, 1],
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, y: 20 },
234
- animate: { opacity: 1, y: 0 },
235
- exit: { opacity: 0, y: 10 }
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.05, delayChildren: 0.1 } }
246
+ animate: { transition: { staggerChildren: 0.04, delayChildren: 0 } }
246
247
  },
247
248
  normal: {
248
249
  initial: {},
249
- animate: { transition: { staggerChildren: 0.1, delayChildren: 0.2 } }
250
+ animate: { transition: { staggerChildren: 0.06, delayChildren: 0.04 } }
250
251
  },
251
252
  slow: {
252
253
  initial: {},
253
- animate: { transition: { staggerChildren: 0.15, delayChildren: 0.3 } }
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-out",
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-out)] data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none",
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-out)]",
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-out)]",
1036
- "data-[starting-style]:scale-95 data-[starting-style]:opacity-0 data-[ending-style]:scale-95 data-[ending-style]:opacity-0",
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(--select-easing)]",
1044
- "data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
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-out)]",
1051
- "data-[starting-style]:scale-95 data-[starting-style]:opacity-0 data-[ending-style]:scale-95 data-[ending-style]:opacity-0",
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-out)]",
1058
- "data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-95 data-[open]:scale-100",
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-out)]",
1065
- "data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
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-out)]",
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-out)]",
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-out)] hover:opacity-100 disabled:pointer-events-none data-[open]:bg-accent data-[open]:text-muted-foreground motion-reduce:transition-none`
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-colors duration-micro ease-out",
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 && React45.isValidElement(children)) {
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 && React45.isValidElement(children)) {
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 && React45.isValidElement(children)) {
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, y: 10, filter: "blur(4px)" },
1375
- animate: { opacity: 1, y: 0, filter: "blur(0px)" },
1376
- exit: { opacity: 0, y: -10, filter: "blur(4px)" },
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: { x: "100%" },
1382
- animate: { x: 0 },
1383
- exit: { x: "100%" },
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: { x: "-100%" },
1389
- animate: { x: 0 },
1390
- exit: { x: "-100%" },
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: { y: "-100%" },
1396
- animate: { y: 0 },
1397
- exit: { y: "-100%" },
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: { y: "100%" },
1403
- animate: { y: 0 },
1404
- exit: { y: "100%" },
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 = "emerge",
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.emerge;
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 = React45.useId().replace(/:/g, "");
1557
- const [pathD, setPathD] = React45.useState("");
1558
- const [svgDimensions, setSvgDimensions] = React45.useState({
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
- React45.useEffect(() => {
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: React45.Children.map(children, (child, index) => /* @__PURE__ */ jsx(motion.div, { variants: itemVariants, children: child }, index))
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 = React45__default.memo(
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(() => React45__default.Children.toArray(children), [children]);
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 = React45.Children.toArray(children);
2199
+ const childArray = React46.Children.toArray(children);
2201
2200
  const child = childArray.length === 1 ? childArray[0] : null;
2202
- if (React45.isValidElement(child)) {
2201
+ if (React46.isValidElement(child)) {
2203
2202
  const childProps = child.props;
2204
- return React45.cloneElement(child, {
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 = React45.createContext(null);
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 = React45.use(AvatarContext);
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 = React45.useId().replace(/:/g, "");
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
- return /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay: delayDuration, children });
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 delay = delayDuration ?? DEFAULT_TOOLTIP_DELAY_MS;
3057
- return /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay, children: /* @__PURE__ */ jsx(Tooltip$1.Root, { ...props, children }) });
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 && React45.isValidElement(children)) {
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
- }) => /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
3088
- Tooltip$1.Positioner,
3089
- {
3090
- side,
3091
- align,
3092
- sideOffset,
3093
- alignOffset,
3094
- style: { zIndex: overlayZIndex.tooltip },
3095
- children: /* @__PURE__ */ jsx(
3096
- Tooltip$1.Popup,
3097
- {
3098
- ref,
3099
- className: cn(overlayClassNames.tooltipSurface, className),
3100
- style: { zIndex: overlayZIndex.tooltip, ...style },
3101
- ...props
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 && React45.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("button", { type: "button", "aria-label": controlLabelProps["aria-label"] });
3904
- const finalProps = asChild && React45.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
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 && React45.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("span", {});
3938
- const finalProps = asChild && React45.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
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 && React45.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("button", { type: "button", "aria-label": controlLabelProps["aria-label"] });
4308
- const finalProps = asChild && React45.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
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 = React45.forwardRef(
4356
+ var Slot = React46.forwardRef(
4319
4357
  ({ children, className, style, ...props }, ref) => {
4320
- const childArray = React45.Children.toArray(children);
4358
+ const childArray = React46.Children.toArray(children);
4321
4359
  const child = childArray.length === 1 ? childArray[0] : null;
4322
- if (child == null || !React45.isValidElement(child)) {
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 React45.cloneElement(
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-300 lg:group-hover:-translate-y-10", children: [
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-300 ease-in-out group-hover:scale-75" }),
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-300 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: [
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-300 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: [
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-300 group-hover:bg-black/[.03] group-hover:dark:bg-muted/50" })
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 React45.createElement(
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" ? React45.useEffect : React45.useLayoutEffect;
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 = React45.useRef(null);
5155
- const [measurements, setMeasurements] = React45.useState({ width: 0, font: "" });
5156
- const setRef = React45.useCallback(
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 = React45.useMemo(
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 = React45.useCallback(
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] = React45.useState(/* @__PURE__ */ new Set());
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] = React45.useState(/* @__PURE__ */ new Set());
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 = React45__default.useCallback(() => {
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 React45.createElement(Tag, {
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 = React45.createContext(null);
6080
+ var CarouselContext = React46.createContext(null);
5921
6081
  function useCarousel() {
5922
- const context = React45.use(CarouselContext);
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] = React45.useState(false);
5946
- const [canScrollNext, setCanScrollNext] = React45.useState(false);
5947
- const onSelect = React45.useCallback((api2) => {
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 = React45.useCallback(() => {
6114
+ const scrollPrev = React46.useCallback(() => {
5955
6115
  api?.scrollPrev();
5956
6116
  }, [api]);
5957
- const scrollNext = React45.useCallback(() => {
6117
+ const scrollNext = React46.useCallback(() => {
5958
6118
  api?.scrollNext();
5959
6119
  }, [api]);
5960
- const handleKeyDown = React45.useCallback(
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
- React45.useEffect(() => {
6132
+ React46.useEffect(() => {
5973
6133
  if (!api || !setApi) {
5974
6134
  return;
5975
6135
  }
5976
6136
  setApi(api);
5977
6137
  }, [api, setApi]);
5978
- React45.useEffect(() => {
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 = React45.createContext(null);
6280
+ var ChartContext = React46.createContext(null);
6121
6281
  function useChart() {
6122
- const context = React45.use(ChartContext);
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 = React45.useId();
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 = React45.useMemo(() => {
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] = React45__default.useState(defaultChecked);
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 = React45.createContext(null);
6675
+ var ChoiceboxContext = React46.createContext(null);
6516
6676
  function useChoiceboxContext() {
6517
- const context = React45.use(ChoiceboxContext);
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 = React45.useRef(null);
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
- React45.useEffect(() => {
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] = React45.useState(() => {
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 = React45.useRef(/* @__PURE__ */ new Map());
6794
- const itemOrder = React45.useRef([]);
6795
- const registerItem = React45.useCallback((itemValue, el) => {
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(() => itemOrder.current[0], []);
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 = React45.useMemo(
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 = React45.useId();
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 = React45.createContext(null);
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] = React45.useState(defaultOpen);
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 = React45.use(DropdownMenuContext);
7326
+ const context = React46.use(DropdownMenuContext);
7167
7327
  function openFromTrigger() {
7168
7328
  context?.setOpen(true);
7169
7329
  }
7170
- const childRenderElement = asChild && React45.isValidElement(children) ? React45.cloneElement(children, {
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 = React45.createContext({});
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] = React45.useState(defaultOpen || false);
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 = React45.useCallback(
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 } = React45.use(CollapsibleContext);
8017
- const handleClick = React45.useCallback(
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 && React45.isValidElement(children)) {
8026
- return React45.cloneElement(children, {
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 } = React45.use(CollapsibleContext);
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: React45.isValidElement(icon) ? React45.cloneElement(icon, {
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 && React45.isValidElement(children)) {
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 && React45.isValidElement(children)) {
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 React45.useSyncExternalStore(subscribePlatform, getClientPlatform, () => "apple");
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 (React45.isValidElement(key) && key.key != null) return String(key.key);
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 && React45.isValidElement(children) ? children : render;
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
- "h-[var(--combobox-trigger-height)] rounded-[var(--radius-md)] border border-input bg-background px-[var(--combobox-trigger-padding-x)]",
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 = React45.createContext(null);
8870
+ var ComboboxContext = React46.createContext(null);
8706
8871
  function useComboboxContext() {
8707
- const ctx = React45.use(ComboboxContext);
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 = React45.useMemo(() => {
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] = React45.useState(defaultValue);
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 = React45.useRef(selectedValue);
8982
+ const selectedValueRef = React46.useRef(selectedValue);
8818
8983
  selectedValueRef.current = selectedValue;
8819
- const [open, setOpen] = React45.useState(false);
8820
- const handleSelect = React45.useCallback(
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 = React45.useMemo(() => {
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 = React45.useId();
8836
- const triggerId = React45.useId();
8837
- const listboxId = React45.useId();
8838
- const contextValue = React45.useMemo(
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 = React45.useMemo(() => {
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 = React45.useCallback(
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 = React45.useId();
9349
- const inputRef = React45.useRef(null);
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] = React45.useState(
9519
+ const [internalValue, setInternalValue] = React46.useState(
9355
9520
  typeof defaultValue === "string" || typeof defaultValue === "number" ? String(defaultValue) : ""
9356
9521
  );
9357
- const [passwordVisible, setPasswordVisible] = React45.useState(false);
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(() => {
9575
+ const handleClear = React46.useCallback(() => {
9411
9576
  emitNativeInput("");
9412
9577
  onClear?.();
9413
9578
  inputRef.current?.focus();
9414
9579
  }, [emitNativeInput, onClear]);
9415
- const handleKeyDown = React45.useCallback(
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] = React45.useState(false);
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] = React45.useState("");
9668
- const inputRef = React45.useRef(null);
9669
- const inputId = React45.useId();
9670
- const promptId = React45.useId();
9671
- const descriptionId = React45.useId();
9672
- const errorId = React45.useId();
9673
- const irreversibleId = React45.useId();
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
- React45.useEffect(() => {
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] = React45.useState("");
9852
- const [isLoading, setIsLoading] = React45.useState(false);
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] = React45.useState(false);
9963
- const [data, setData] = React45.useState(null);
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] = React45.useState(false);
10074
- const triggerRef = React45.useRef(null);
10075
- const panelRef = React45.useRef(null);
10076
- const openTimerRef = React45.useRef(null);
10077
- const closeTimerRef = React45.useRef(null);
10078
- const clearTimers = React45.useCallback(() => {
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 = React45.useCallback(() => {
10249
+ const scheduleOpen = React46.useCallback(() => {
10085
10250
  clearTimers();
10086
10251
  openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);
10087
10252
  }, [clearTimers, openDelay]);
10088
- const scheduleClose = React45.useCallback(() => {
10253
+ const scheduleClose = React46.useCallback(() => {
10089
10254
  clearTimers();
10090
10255
  closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);
10091
10256
  }, [clearTimers, closeDelay]);
10092
- const closeNow = React45.useCallback(() => {
10257
+ const closeNow = React46.useCallback(() => {
10093
10258
  clearTimers();
10094
10259
  setOpen(false);
10095
10260
  }, [clearTimers]);
10096
- React45.useEffect(() => clearTimers, [clearTimers]);
10097
- const triggerElement = React45.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children });
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 && React45.isValidElement(children) ? children : render;
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] = React45.useState(false);
10617
- const copy = React45.useCallback(
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 = React45.Children.toArray(actions).length > 0;
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-700",
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-700 hover:grayscale-0 before:left-0 before:top-0"
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-700 hover:grayscale-0 before:left-0 before:top-0"
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-700",
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 = React45__default.useMemo(() => {
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 } = React45.useMemo(() => {
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 = React45.createContext({});
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 = React45.useMemo(() => {
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 = React45.use(DrawerRootContext);
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 = React45.use(OTPInputContext);
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: { width: 0, opacity: 0 },
13852
- animate: { width: "auto", opacity: 1 },
13853
- exit: { width: 0, opacity: 0 }
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 = { delay: 0.1, type: "spring", bounce: 0, duration: 0.6 };
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] = React45.useState(null);
13863
- const outsideClickRef = React45.useRef(null);
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
- motion.span,
13900
- {
13901
- variants: buttonVariants2,
13902
- initial: false,
13903
- animate: "animate",
13904
- custom: isSelected,
13905
- transition: activeTransition,
13906
- className: "flex items-center",
13907
- children: [
13908
- /* @__PURE__ */ jsx(Icon, { size: 20, "aria-hidden": "true" }),
13909
- /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: isSelected && /* @__PURE__ */ jsx(
13910
- motion.span,
13911
- {
13912
- variants: spanVariants,
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 = React45.useId();
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 = React45.useCallback(
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 = React45.useRef(null);
14092
- const setTextareaRef = React45.useCallback(
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 = React45.useCallback(() => {
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
- React45.useLayoutEffect(() => {
14436
+ React46.useLayoutEffect(() => {
14112
14437
  resize();
14113
14438
  }, [resize]);
14114
- const handleChange = React45.useCallback(
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 (React45.isValidElement(node)) {
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
- React45.Children.forEach(children, (child) => {
14690
- if (!React45.isValidElement(child)) return;
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
- React45.Children.forEach(children, (child) => {
14702
- if (!React45.isValidElement(child)) return;
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 = React45.useId();
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 = React45.useId();
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 = React45.useMemo(() => {
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 = React45.useMemo(
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] = React45.useState(
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 = React45.useId();
15150
- const emotionName = React45.useId();
15151
- const errorId = React45.useId();
15152
- const textareaRef = React45.useRef(null);
15153
- const [emotion, setEmotion] = React45.useState(initialEmotion);
15154
- const [message, setMessage] = React45.useState("");
15155
- const [topic, setTopic] = React45.useState("");
15156
- const [submitting, setSubmitting] = React45.useState(false);
15157
- const [error, setError] = React45.useState();
15158
- React45.useEffect(() => {
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 = React45.useRef(null);
15249
- const [open, setOpen] = React45.useState(defaultOpen);
15250
- const resolvedTopics = React45.useMemo(
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 = React45.useCallback(() => {
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 = React45.useRef(null);
15323
- const emotionName = React45.useId();
15324
- const [selectedEmotion, setSelectedEmotion] = React45.useState();
15325
- const [expanded, setExpanded] = React45.useState(defaultExpanded);
15326
- const resolvedTopics = React45.useMemo(
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
- React45.useEffect(() => {
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: format2,
16106
+ format: format3,
15783
16107
  className
15784
16108
  }) {
15785
- const Renderer = PLACEHOLDER[format2] ?? DefaultPlaceholder;
15786
- const bannerCls = BANNER_COLOR[format2];
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: format2
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(
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 React45.createElement(
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 = React45.createContext({});
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 = React45.use(FormFieldContext);
16362
- const itemContext = React45.use(FormItemContext);
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 = React45.createContext({});
16702
+ var FormItemContext = React46.createContext({});
16379
16703
  var FormItem = ({
16380
16704
  className,
16381
16705
  ref,
16382
16706
  ...props
16383
16707
  }) => {
16384
- const id = React45.useId();
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] = React45.useState(false);
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: React45.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
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
- React45.useEffect(() => {
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 = React45.useMemo(() => generateRandomPattern(5), []);
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 = React45.useId();
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 = React45.createContext(defaultGridSystemContext);
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 = React45.useMemo(
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 = React45.use(GridSystemContext);
17771
- const id = React45.useId();
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 = React45.use(GridSystemContext);
17834
- const id = React45.useId();
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 = React45__default.useMemo(() => {
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 && React45.isValidElement(children)) {
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] = React45.useState(false);
18150
- const timeoutRef = React45.useRef(null);
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 = React45.useMemo(() => {
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 = React45.useMemo(() => {
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 = React45.createContext({ activeMenu: null, setActiveMenu: () => {
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] = React45.useState(null);
19903
- const rootRef = React45.useRef(null);
20226
+ const [activeMenu, setActiveMenu] = React46.useState(null);
20227
+ const rootRef = React46.useRef(null);
19904
20228
  const contextValue = { activeMenu, setActiveMenu };
19905
- React45.useEffect(() => {
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 = React45.createContext({ value: "", isOpen: false });
20260
+ var MenubarMenuContext = React46.createContext({ value: "", isOpen: false });
19937
20261
  var MenubarMenu = ({ children }) => {
19938
- const { activeMenu } = React45.use(MenubarContext);
19939
- const value = React45.useId();
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 } = React45.use(MenubarContext);
19953
- const { value, isOpen } = React45.use(MenubarMenuContext);
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 = React45.createContext({ isOpen: false, setIsOpen: () => {
20300
+ var MenubarSubContext = React46.createContext({ isOpen: false, setIsOpen: () => {
19977
20301
  } });
19978
20302
  var MenubarSub = ({ children }) => {
19979
- const [isOpen, setIsOpen] = React45.useState(false);
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 } = React45.use(MenubarSubContext);
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 } = React45.use(MenubarSubContext);
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 } = React45.use(MenubarMenuContext);
20053
- const contentRef = React45.useRef(null);
20054
- const [side, setSide] = React45.useState("bottom");
20055
- React45.useLayoutEffect(() => {
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 } = React45.use(MenubarContext);
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 && React45.isValidElement(children)) {
20439
+ if (asChild && React46.isValidElement(children)) {
20116
20440
  const child = children;
20117
- return React45.cloneElement(child, {
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 = React45.useMemo(() => normalizeMessageMarkdown(children), [children]);
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 = React45.createContext(null);
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 = React45.use(MultiSelectContext);
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] = React45.useState(defaultOpen);
20795
- const triggerRef = React45.useRef(null);
20796
- const contentRef = React45.useRef(null);
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 = React45.useCallback(
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 = React45.useMemo(
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
- React45.useEffect(() => {
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 = React45.useRef(null);
21147
- const [open, setOpen] = React45.useState(false);
21148
- const [onScrollbar, setOnScrollbar] = React45.useState(false);
21149
- const [isLoading, setIsLoading] = React45.useState(false);
21150
- const dropdownRef = React45.useRef(null);
21151
- const [selected, setSelected] = React45.useState(value || []);
21152
- const [options, setOptions] = React45.useState(
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] = React45.useState("");
21479
+ const [inputValue, setInputValue] = React46.useState("");
21156
21480
  const debouncedSearchTerm = useDebouncedValue(inputValue, delay || 500);
21157
- React45.useImperativeHandle(
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 = React45.useCallback((event) => {
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 = React45.useCallback(
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 = React45.useCallback(
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 = React45.useCallback(() => {
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 = React45.useMemo(
21611
+ const selectables = React46.useMemo(
21288
21612
  () => removePickedOption(options, selected),
21289
21613
  [options, selected]
21290
21614
  );
21291
- const commandFilter = React45.useCallback(() => {
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 = React45.createContext({ value: "", onValueChange: () => {
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] = React45.useState("");
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 = React45.createContext({ value: "" });
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 = React45.useId();
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 } = React45.use(NavigationMenuContext);
21538
- const { value: itemValue } = React45.use(NavigationMenuItemContext);
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 } = React45.use(NavigationMenuContext);
21572
- const { value: itemValue } = React45.use(NavigationMenuItemContext);
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 } = React45.use(NavigationMenuContext);
21604
- if (asChild && React45.isValidElement(children)) {
21927
+ const { onValueChange } = React46.use(NavigationMenuContext);
21928
+ if (asChild && React46.isValidElement(children)) {
21605
21929
  const child = children;
21606
- return React45.cloneElement(child, {
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-0 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-['']",
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 = React45__default.createContext(null);
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 = React45.useRef(null);
24801
- const childrenContainerRef = React45.useRef(null);
24802
- const [edgeState, setEdgeState] = React45.useState({
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 = React45.useCallback(() => {
25133
+ const updateEdgeState = React46.useCallback(() => {
24810
25134
  const viewport2 = viewportRef.current;
24811
25135
  if (!viewport2) return;
24812
25136
  setEdgeState(getEdgeState(viewport2));
24813
25137
  }, []);
24814
- React45.useEffect(() => {
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 = React45.useCallback(
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 && React45.isValidElement(children)) {
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 && React45.isValidElement(children)) {
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 = React45.useRef(expanded);
25692
+ const wasExpanded = React46.useRef(expanded);
25369
25693
  const label = expanded ? expandedLabel : getCollapsedLabel(hiddenCount, collapsedLabel);
25370
- React45.useEffect(() => {
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 = React45.useId();
25847
+ const generatedId = React46.useId();
25524
25848
  const sliderId = id ?? generatedId;
25525
- const [internalValue, setInternalValue] = React45.useState(
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 React45.createElement(
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 = React45.createContext(null);
26791
+ var SwitchContext = React46.createContext(null);
26468
26792
  function useSwitchContext() {
26469
- const context = React45.use(SwitchContext);
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 = React45.useId();
26841
+ const generatedName = React46.useId();
26518
26842
  const resolvedName = name ?? generatedName;
26519
- const context = React45.useMemo(
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 = React45.createContext({
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 = React45.useMemo(
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 = React45.use(TabsContext);
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 = React45.useMemo(
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 = React45.use(TabsContext);
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 = React45.useId();
27630
+ const generatedName = React46.useId();
27307
27631
  const radioName = name ?? generatedName;
27308
27632
  const { isProviderBound, theme, forcedTheme, setTheme } = useTheme();
27309
- const [fallbackValue, setFallbackValue] = React45.useState(defaultValue);
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 = React45.useId();
27777
+ const rawId = React46.useId();
27454
27778
  const maskId = `theme-toggle-mask-${rawId.replace(/:/g, "")}`;
27455
27779
  const shouldReduceMotion = useReducedMotion2();
27456
- const lastSoundAt = React45.useRef(0);
27457
- const [mounted, setMounted] = React45.useState(false);
27458
- const [internalValue, setInternalValue] = React45.useState(
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
- React45.useEffect(() => {
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
- React45.useEffect(() => {
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 = React45.useCallback(
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 = React45.useCallback((text, options = {}) => {
28061
+ const success = React46.useCallback((text, options = {}) => {
27738
28062
  return toast.success(text, toExternalToast(options));
27739
28063
  }, []);
27740
- const warning = React45.useCallback((text, options = {}) => {
28064
+ const warning = React46.useCallback((text, options = {}) => {
27741
28065
  return toast.warning(text, toExternalToast(options));
27742
28066
  }, []);
27743
- const error = React45.useCallback((text, options = {}) => {
28067
+ const error = React46.useCallback((text, options = {}) => {
27744
28068
  return toast.error(text, toExternalToast(options));
27745
28069
  }, []);
27746
- const dismiss = React45.useCallback((id) => toast.dismiss(id), []);
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] = React45.useState(defaultChecked);
27856
- const generatedId = React45.useId();
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
- React45.useEffect(() => {
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 = React45.createContext(null);
27991
- var ToggleGroupValueContext = React45.createContext(null);
27992
- var ToggleGroupChangeContext = React45.createContext(
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 = React45.createContext(void 0);
27996
- var ToggleGroupVariantContext = React45.createContext(void 0);
27997
- var ToggleGroupSizeContext = React45.createContext(void 0);
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 = React45.use(ToggleGroupTypeContext);
28000
- const value = React45.use(ToggleGroupValueContext);
28001
- const onValueChange = React45.use(ToggleGroupChangeContext);
28002
- const disabled = React45.use(ToggleGroupDisabledContext);
28003
- const variant = React45.use(ToggleGroupVariantContext);
28004
- const size = React45.use(ToggleGroupSizeContext);
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] = React45.useState(
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 = React45__default.Children.toArray(children).join("");
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