@nebutra/ui 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{canonical-CrO71UPO.d.ts → canonical-Drca5UMj.d.ts} +354 -103
- package/dist/components/index.js +289 -103
- package/dist/components/index.js.map +1 -1
- package/dist/layout/index.d.ts +2 -2
- package/dist/layout/index.js +110 -21
- package/dist/layout/index.js.map +1 -1
- package/dist/layouts/index.d.ts +80 -2
- package/dist/layouts/index.js +22 -11
- package/dist/layouts/index.js.map +1 -1
- package/dist/patterns/index.d.ts +3 -3
- package/dist/patterns/index.js +149 -53
- package/dist/patterns/index.js.map +1 -1
- package/dist/primitives/canonical.d.ts +2 -2
- package/dist/primitives/canonical.js +507 -141
- package/dist/primitives/canonical.js.map +1 -1
- package/dist/primitives/index.d.ts +138 -20
- package/dist/primitives/index.js +1415 -847
- package/dist/primitives/index.js.map +1 -1
- package/dist/typography/fonts.css +21 -26
- package/dist/utils/index.d.ts +31 -1
- package/dist/utils/index.js +10 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +23 -7
- package/src/styles/sources.css +10 -0
- package/src/typography/fonts.css +21 -26
package/dist/primitives/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
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,
|
|
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';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import * as React45 from 'react';
|
|
8
8
|
import React45__default, { useState, useMemo, useEffect, createContext, memo, useId, useRef, use, useCallback, isValidElement, Children, cloneElement, useImperativeHandle, Component, useEffectEvent, createElement, Suspense } from 'react';
|
|
9
|
-
import { useReducedMotion, AnimatePresence, motion, LayoutGroup,
|
|
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';
|
|
12
|
-
import { colors, flow, emerge, motionDurationSec
|
|
12
|
+
import { colors, brandSpring, flow, emerge, motionDurationSec } from '@nebutra/brand';
|
|
13
13
|
export { brandSpring } from '@nebutra/brand';
|
|
14
14
|
import Image4 from 'next/image';
|
|
15
15
|
import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
|
|
@@ -140,6 +140,10 @@ function cn(...inputs) {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
// src/utils/primitive-props.ts
|
|
143
|
+
function asPlainStyle(style) {
|
|
144
|
+
if (style == null || typeof style === "function") return {};
|
|
145
|
+
return style;
|
|
146
|
+
}
|
|
143
147
|
function withHtmlProps(Component2) {
|
|
144
148
|
return Component2;
|
|
145
149
|
}
|
|
@@ -172,7 +176,7 @@ var AccordionTrigger = ({
|
|
|
172
176
|
{
|
|
173
177
|
ref,
|
|
174
178
|
className: cn(
|
|
175
|
-
"font-medium flex flex-1 items-center justify-between transition-[color,box-shadow] duration-flow ease-out hover:text-muted-foreground focus-visible:
|
|
179
|
+
"font-medium flex flex-1 items-center justify-between transition-[color,box-shadow] duration-flow ease-out hover:text-muted-foreground focus-visible:outline-none [&[data-panel-open]>svg]:rotate-45",
|
|
176
180
|
size === "small" ? "py-2.5 text-sm" : "py-4 text-[15px]",
|
|
177
181
|
className
|
|
178
182
|
),
|
|
@@ -211,6 +215,47 @@ var AccordionContent = ({
|
|
|
211
215
|
);
|
|
212
216
|
AccordionContent.displayName = "AccordionContent";
|
|
213
217
|
|
|
218
|
+
// src/tokens/motion.ts
|
|
219
|
+
var motionDurations = {
|
|
220
|
+
/** 200ms — state flow (modal, dropdown, tab — default) */
|
|
221
|
+
flow: 200,
|
|
222
|
+
/** 300ms — content unveil (slide, expand, accordion, drawer) */
|
|
223
|
+
reveal: 300,
|
|
224
|
+
/** 500ms — hero-grade cinematic (landing entrance, big delight) */
|
|
225
|
+
cinematic: 500
|
|
226
|
+
};
|
|
227
|
+
var easings = {
|
|
228
|
+
easeOut: [0, 0, 0.2, 1],
|
|
229
|
+
easeInOut: [0.4, 0, 0.2, 1],
|
|
230
|
+
spring: [0.34, 1.56, 0.64, 1]};
|
|
231
|
+
var motionVariants = {
|
|
232
|
+
fadeInUp: {
|
|
233
|
+
initial: { opacity: 0, y: 20 },
|
|
234
|
+
animate: { opacity: 1, y: 0 },
|
|
235
|
+
exit: { opacity: 0, y: 10 }
|
|
236
|
+
},
|
|
237
|
+
scaleIn: {
|
|
238
|
+
initial: { opacity: 0, scale: 0.95 },
|
|
239
|
+
animate: { opacity: 1, scale: 1 },
|
|
240
|
+
exit: { opacity: 0, scale: 0.95 }
|
|
241
|
+
}};
|
|
242
|
+
var staggerContainers = {
|
|
243
|
+
fast: {
|
|
244
|
+
initial: {},
|
|
245
|
+
animate: { transition: { staggerChildren: 0.05, delayChildren: 0.1 } }
|
|
246
|
+
},
|
|
247
|
+
normal: {
|
|
248
|
+
initial: {},
|
|
249
|
+
animate: { transition: { staggerChildren: 0.1, delayChildren: 0.2 } }
|
|
250
|
+
},
|
|
251
|
+
slow: {
|
|
252
|
+
initial: {},
|
|
253
|
+
animate: { transition: { staggerChildren: 0.15, delayChildren: 0.3 } }
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
var viewportSettings = {
|
|
257
|
+
once: { once: true, margin: "-100px" }};
|
|
258
|
+
|
|
214
259
|
// src/utils/brand-colors.ts
|
|
215
260
|
var BRAND_FALLBACK = {
|
|
216
261
|
/** VI 云毓蓝 — identity only */
|
|
@@ -282,7 +327,7 @@ var StatusBadge = ({ status }) => {
|
|
|
282
327
|
className: cn("rounded px-1.5 py-0.5 text-xs", colorClasses[status]),
|
|
283
328
|
initial: { scale: 1 },
|
|
284
329
|
animate: { scale: [1, 1.08, 1] },
|
|
285
|
-
transition: { duration: 0.35, ease:
|
|
330
|
+
transition: { duration: 0.35, ease: easings.spring },
|
|
286
331
|
children: status
|
|
287
332
|
},
|
|
288
333
|
status
|
|
@@ -381,7 +426,7 @@ var AgentPlan = ({
|
|
|
381
426
|
opacity: 1,
|
|
382
427
|
overflow: "visible",
|
|
383
428
|
transition: {
|
|
384
|
-
duration:
|
|
429
|
+
duration: motionDurations.reveal / 1e3,
|
|
385
430
|
staggerChildren: prefersReducedMotion2 ? 0 : 0.05,
|
|
386
431
|
ease: [0.2, 0.65, 0.3, 0.9]
|
|
387
432
|
}
|
|
@@ -400,7 +445,7 @@ var AgentPlan = ({
|
|
|
400
445
|
{
|
|
401
446
|
className: "overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card shadow",
|
|
402
447
|
initial: { opacity: 0, y: 10 },
|
|
403
|
-
animate: { opacity: 1, y: 0, transition: { duration:
|
|
448
|
+
animate: { opacity: 1, y: 0, transition: { duration: motionDurations.reveal / 1e3 } },
|
|
404
449
|
children: /* @__PURE__ */ jsx(LayoutGroup, { children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden p-4", children: /* @__PURE__ */ jsx("ul", { className: "space-y-1 overflow-hidden", children: tasks.map((task, index) => {
|
|
405
450
|
const isExpanded = expandedTasks.includes(task.id);
|
|
406
451
|
const isCompleted = task.status === "completed";
|
|
@@ -781,7 +826,7 @@ function Alert({
|
|
|
781
826
|
className: cn(
|
|
782
827
|
"group shrink-0 size-4 inline-flex items-center justify-center rounded-[var(--radius-sm)]",
|
|
783
828
|
"opacity-70 hover:opacity-100 transition-opacity",
|
|
784
|
-
"focus-visible:outline-none
|
|
829
|
+
"focus-visible:outline-none"
|
|
785
830
|
),
|
|
786
831
|
children: /* @__PURE__ */ jsx(Cross, { className: "size-4" })
|
|
787
832
|
}
|
|
@@ -948,7 +993,7 @@ var shadowClasses = {
|
|
|
948
993
|
"2xl": "shadow-2xl"};
|
|
949
994
|
|
|
950
995
|
// src/tokens/components/overlay.ts
|
|
951
|
-
var overlayFocusRingClassName = "outline-none
|
|
996
|
+
var overlayFocusRingClassName = "outline-none";
|
|
952
997
|
var overlayZIndex = {
|
|
953
998
|
backdrop: 1040,
|
|
954
999
|
modal: 1050,
|
|
@@ -1038,7 +1083,6 @@ var buttonVariants = cva(
|
|
|
1038
1083
|
"rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
1039
1084
|
"text-[length:var(--control-font-size-md,0.875rem)] font-[number:var(--font-weight-medium,500)]",
|
|
1040
1085
|
"transition-colors duration-micro ease-out",
|
|
1041
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1042
1086
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
1043
1087
|
"aria-busy:cursor-wait"
|
|
1044
1088
|
].join(" "),
|
|
@@ -1065,8 +1109,30 @@ var buttonVariants = cva(
|
|
|
1065
1109
|
},
|
|
1066
1110
|
shape: {
|
|
1067
1111
|
default: "",
|
|
1068
|
-
|
|
1069
|
-
|
|
1112
|
+
// Radius from --btn-default-radius / --radius-md — brand-switchable.
|
|
1113
|
+
// Do not hardcode rounded-md here; a language must be able to retarget
|
|
1114
|
+
// the corner treatment of every icon trigger at once.
|
|
1115
|
+
square: "rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
1116
|
+
// Pill radius token, not Tailwind rounded-full — same 9999px default,
|
|
1117
|
+
// but a brand that ships a softer "circle" can override --radius-pill.
|
|
1118
|
+
circle: "rounded-[var(--radius-pill,9999px)]",
|
|
1119
|
+
pill: "rounded-[var(--radius-pill,9999px)]"
|
|
1120
|
+
},
|
|
1121
|
+
// Icon-only box size — orthogonal to `size` (which tunes text-button
|
|
1122
|
+
// height/padding/font together) and to `shape` (which picks the
|
|
1123
|
+
// corner treatment). Only takes effect combined with shape="square"
|
|
1124
|
+
// or shape="circle" (see compoundVariants below); every other
|
|
1125
|
+
// combination ignores it. 28/32/36 cover the icon-trigger sizes that
|
|
1126
|
+
// actually occur in the app — 24/40/48 are already reachable via
|
|
1127
|
+
// shape + size (tiny/default/lg). Heights read --control-height-icon-*
|
|
1128
|
+
// so density-aware Brand Packages can scale them with the ladder.
|
|
1129
|
+
iconSize: {
|
|
1130
|
+
sm: "",
|
|
1131
|
+
// 28px default
|
|
1132
|
+
md: "",
|
|
1133
|
+
// 32px default
|
|
1134
|
+
lg: ""
|
|
1135
|
+
// 36px default
|
|
1070
1136
|
}
|
|
1071
1137
|
},
|
|
1072
1138
|
compoundVariants: [
|
|
@@ -1077,22 +1143,56 @@ var buttonVariants = cva(
|
|
|
1077
1143
|
{
|
|
1078
1144
|
shape: "circle",
|
|
1079
1145
|
size: "tiny",
|
|
1080
|
-
className: "w-[var(--control-height-tiny,1.5rem)] px-0
|
|
1146
|
+
className: "w-[var(--control-height-tiny,1.5rem)] px-0"
|
|
1081
1147
|
},
|
|
1082
1148
|
{
|
|
1083
1149
|
shape: "circle",
|
|
1084
1150
|
size: "sm",
|
|
1085
|
-
className: "w-[var(--control-height-sm,2rem)] px-0
|
|
1151
|
+
className: "w-[var(--control-height-sm,2rem)] px-0"
|
|
1086
1152
|
},
|
|
1087
1153
|
{
|
|
1088
1154
|
shape: "circle",
|
|
1089
1155
|
size: "default",
|
|
1090
|
-
className: "w-[var(--control-height-md,2.5rem)] px-0
|
|
1156
|
+
className: "w-[var(--control-height-md,2.5rem)] px-0"
|
|
1091
1157
|
},
|
|
1092
1158
|
{
|
|
1093
1159
|
shape: "circle",
|
|
1094
1160
|
size: "lg",
|
|
1095
|
-
className: "w-[var(--control-height-lg,3rem)] px-0
|
|
1161
|
+
className: "w-[var(--control-height-lg,3rem)] px-0"
|
|
1162
|
+
},
|
|
1163
|
+
// iconSize wins over the size-driven box above — matched on shape +
|
|
1164
|
+
// iconSize only, so it applies regardless of whatever `size` was
|
|
1165
|
+
// passed (or left at its "default" fallback). Corner treatment stays
|
|
1166
|
+
// on the shape variant (token-backed); only the box is set here.
|
|
1167
|
+
{
|
|
1168
|
+
shape: "square",
|
|
1169
|
+
iconSize: "sm",
|
|
1170
|
+
className: "h-[var(--control-height-icon-sm,1.75rem)] w-[var(--control-height-icon-sm,1.75rem)] px-0"
|
|
1171
|
+
},
|
|
1172
|
+
{
|
|
1173
|
+
shape: "square",
|
|
1174
|
+
iconSize: "md",
|
|
1175
|
+
className: "h-[var(--control-height-icon-md,2rem)] w-[var(--control-height-icon-md,2rem)] px-0"
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
shape: "square",
|
|
1179
|
+
iconSize: "lg",
|
|
1180
|
+
className: "h-[var(--control-height-icon-lg,2.25rem)] w-[var(--control-height-icon-lg,2.25rem)] px-0"
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
shape: "circle",
|
|
1184
|
+
iconSize: "sm",
|
|
1185
|
+
className: "h-[var(--control-height-icon-sm,1.75rem)] w-[var(--control-height-icon-sm,1.75rem)] px-0"
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
shape: "circle",
|
|
1189
|
+
iconSize: "md",
|
|
1190
|
+
className: "h-[var(--control-height-icon-md,2rem)] w-[var(--control-height-icon-md,2rem)] px-0"
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
shape: "circle",
|
|
1194
|
+
iconSize: "lg",
|
|
1195
|
+
className: "h-[var(--control-height-icon-lg,2.25rem)] w-[var(--control-height-icon-lg,2.25rem)] px-0"
|
|
1096
1196
|
}
|
|
1097
1197
|
],
|
|
1098
1198
|
defaultVariants: {
|
|
@@ -1237,46 +1337,6 @@ var AlertDialogCancel = ({
|
|
|
1237
1337
|
);
|
|
1238
1338
|
};
|
|
1239
1339
|
AlertDialogCancel.displayName = "AlertDialogCancel";
|
|
1240
|
-
|
|
1241
|
-
// src/tokens/motion.ts
|
|
1242
|
-
var motionDurations = {
|
|
1243
|
-
/** 200ms — state flow (modal, dropdown, tab — default) */
|
|
1244
|
-
flow: 200,
|
|
1245
|
-
/** 300ms — content unveil (slide, expand, accordion, drawer) */
|
|
1246
|
-
reveal: 300,
|
|
1247
|
-
/** 500ms — hero-grade cinematic (landing entrance, big delight) */
|
|
1248
|
-
cinematic: 500
|
|
1249
|
-
};
|
|
1250
|
-
var easings = {
|
|
1251
|
-
easeOut: [0, 0, 0.2, 1],
|
|
1252
|
-
easeInOut: [0.4, 0, 0.2, 1]};
|
|
1253
|
-
var motionVariants = {
|
|
1254
|
-
fadeInUp: {
|
|
1255
|
-
initial: { opacity: 0, y: 20 },
|
|
1256
|
-
animate: { opacity: 1, y: 0 },
|
|
1257
|
-
exit: { opacity: 0, y: 10 }
|
|
1258
|
-
},
|
|
1259
|
-
scaleIn: {
|
|
1260
|
-
initial: { opacity: 0, scale: 0.95 },
|
|
1261
|
-
animate: { opacity: 1, scale: 1 },
|
|
1262
|
-
exit: { opacity: 0, scale: 0.95 }
|
|
1263
|
-
}};
|
|
1264
|
-
var staggerContainers = {
|
|
1265
|
-
fast: {
|
|
1266
|
-
initial: {},
|
|
1267
|
-
animate: { transition: { staggerChildren: 0.05, delayChildren: 0.1 } }
|
|
1268
|
-
},
|
|
1269
|
-
normal: {
|
|
1270
|
-
initial: {},
|
|
1271
|
-
animate: { transition: { staggerChildren: 0.1, delayChildren: 0.2 } }
|
|
1272
|
-
},
|
|
1273
|
-
slow: {
|
|
1274
|
-
initial: {},
|
|
1275
|
-
animate: { transition: { staggerChildren: 0.15, delayChildren: 0.3 } }
|
|
1276
|
-
}
|
|
1277
|
-
};
|
|
1278
|
-
var viewportSettings = {
|
|
1279
|
-
once: { once: true, margin: "-100px" }};
|
|
1280
1340
|
var fadeInVariant = {
|
|
1281
1341
|
initial: { opacity: 0 },
|
|
1282
1342
|
animate: { opacity: 1 },
|
|
@@ -1303,13 +1363,61 @@ var PRESETS = {
|
|
|
1303
1363
|
/** Fade + rise */
|
|
1304
1364
|
fadeUp: motionVariants.fadeInUp,
|
|
1305
1365
|
/** Scale in */
|
|
1306
|
-
scale: motionVariants.scaleIn
|
|
1366
|
+
scale: motionVariants.scaleIn,
|
|
1367
|
+
/**
|
|
1368
|
+
* Keyed content swap — short, symmetric, blur-softened. Rises in, sinks out.
|
|
1369
|
+
* Shorter and shallower than `emerge` on purpose: a swap replaces content the
|
|
1370
|
+
* reader is already looking at, so it must resolve inside the reveal rail.
|
|
1371
|
+
* Pair with `AnimateSwap`.
|
|
1372
|
+
*/
|
|
1373
|
+
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)" },
|
|
1377
|
+
transition: { duration: motionDurations.reveal / 1e3 }
|
|
1378
|
+
},
|
|
1379
|
+
/** Off-canvas panel entering from the right edge (drawer, sheet). */
|
|
1380
|
+
slideFromRight: {
|
|
1381
|
+
initial: { x: "100%" },
|
|
1382
|
+
animate: { x: 0 },
|
|
1383
|
+
exit: { x: "100%" },
|
|
1384
|
+
transition: brandSpring.default
|
|
1385
|
+
},
|
|
1386
|
+
/** Off-canvas panel entering from the left edge. */
|
|
1387
|
+
slideFromLeft: {
|
|
1388
|
+
initial: { x: "-100%" },
|
|
1389
|
+
animate: { x: 0 },
|
|
1390
|
+
exit: { x: "-100%" },
|
|
1391
|
+
transition: brandSpring.default
|
|
1392
|
+
},
|
|
1393
|
+
/** Off-canvas panel entering from the top edge (banner, command bar). */
|
|
1394
|
+
slideFromTop: {
|
|
1395
|
+
initial: { y: "-100%" },
|
|
1396
|
+
animate: { y: 0 },
|
|
1397
|
+
exit: { y: "-100%" },
|
|
1398
|
+
transition: brandSpring.default
|
|
1399
|
+
},
|
|
1400
|
+
/** Off-canvas panel entering from the bottom edge (mobile action sheet). */
|
|
1401
|
+
slideFromBottom: {
|
|
1402
|
+
initial: { y: "100%" },
|
|
1403
|
+
animate: { y: 0 },
|
|
1404
|
+
exit: { y: "100%" },
|
|
1405
|
+
transition: brandSpring.default
|
|
1406
|
+
}
|
|
1307
1407
|
};
|
|
1308
1408
|
function MotionDiv(props) {
|
|
1309
1409
|
return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(m.div, { ...props }) });
|
|
1310
1410
|
}
|
|
1311
1411
|
function AnimateIn(props) {
|
|
1312
|
-
const {
|
|
1412
|
+
const {
|
|
1413
|
+
children,
|
|
1414
|
+
preset = "emerge",
|
|
1415
|
+
delay = 0,
|
|
1416
|
+
duration,
|
|
1417
|
+
inView = false,
|
|
1418
|
+
className,
|
|
1419
|
+
...rest
|
|
1420
|
+
} = props;
|
|
1313
1421
|
const shouldReduce = useReducedMotion();
|
|
1314
1422
|
const base = PRESETS[preset] || PRESETS.emerge;
|
|
1315
1423
|
const initial = shouldReduce ? { opacity: 0 } : base.initial;
|
|
@@ -1324,6 +1432,7 @@ function AnimateIn(props) {
|
|
|
1324
1432
|
return /* @__PURE__ */ jsx(
|
|
1325
1433
|
MotionDiv,
|
|
1326
1434
|
{
|
|
1435
|
+
...rest,
|
|
1327
1436
|
className,
|
|
1328
1437
|
initial,
|
|
1329
1438
|
whileInView: animate2,
|
|
@@ -1337,6 +1446,7 @@ function AnimateIn(props) {
|
|
|
1337
1446
|
return /* @__PURE__ */ jsx(
|
|
1338
1447
|
MotionDiv,
|
|
1339
1448
|
{
|
|
1449
|
+
...rest,
|
|
1340
1450
|
className,
|
|
1341
1451
|
initial,
|
|
1342
1452
|
animate: animate2,
|
|
@@ -1346,6 +1456,10 @@ function AnimateIn(props) {
|
|
|
1346
1456
|
}
|
|
1347
1457
|
);
|
|
1348
1458
|
}
|
|
1459
|
+
function AnimateSwap(props) {
|
|
1460
|
+
const { swapKey, ...animateInProps } = props;
|
|
1461
|
+
return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(AnimateIn, { ...animateInProps }, swapKey) }) });
|
|
1462
|
+
}
|
|
1349
1463
|
function AnimateInGroup(props) {
|
|
1350
1464
|
const { children, stagger = "normal", inView = false, className } = props;
|
|
1351
1465
|
const shouldReduce = useReducedMotion();
|
|
@@ -1973,7 +2087,7 @@ function AnimatedShinyText({
|
|
|
1973
2087
|
);
|
|
1974
2088
|
}
|
|
1975
2089
|
var badgeVariants = cva(
|
|
1976
|
-
"inline-flex justify-center items-center align-middle shrink-0 rounded-full font-sans font-medium whitespace-nowrap tabular-nums transition-colors focus-visible:outline-none
|
|
2090
|
+
"inline-flex justify-center items-center align-middle shrink-0 rounded-full font-sans font-medium whitespace-nowrap tabular-nums transition-colors focus-visible:outline-none border border-transparent",
|
|
1977
2091
|
{
|
|
1978
2092
|
variants: {
|
|
1979
2093
|
variant: {
|
|
@@ -1995,15 +2109,26 @@ var badgeVariants = cva(
|
|
|
1995
2109
|
purple: "bg-secondary text-secondary-foreground fill-current",
|
|
1996
2110
|
"purple-subtle": "bg-secondary/40 text-secondary-foreground fill-current border-transparent",
|
|
1997
2111
|
amber: "bg-warning text-warning-foreground fill-current",
|
|
1998
|
-
"amber-subtle":
|
|
2112
|
+
"amber-subtle": (
|
|
2113
|
+
// --warning is a FILL (2.13:1). As ink on its own tint it measured 1.91:1.
|
|
2114
|
+
// --warning-strong is the AA-safe amber foreground: 5.01:1 light / 6.20:1 dark.
|
|
2115
|
+
"bg-warning/10 text-[hsl(var(--warning-strong))] fill-current border-transparent"
|
|
2116
|
+
),
|
|
1999
2117
|
red: "bg-destructive text-destructive-foreground fill-current",
|
|
2000
|
-
"red-subtle":
|
|
2118
|
+
"red-subtle": (
|
|
2119
|
+
// --destructive is fill-only in dark (2.01:1 as ink on its own tint).
|
|
2120
|
+
// --destructive-strong: 4.58:1 light / 4.97:1 dark.
|
|
2121
|
+
"bg-destructive/10 text-[hsl(var(--destructive-strong))] fill-current border-transparent"
|
|
2122
|
+
),
|
|
2001
2123
|
pink: "bg-accent text-accent-foreground fill-current",
|
|
2002
2124
|
"pink-subtle": "bg-accent/40 text-accent-foreground fill-current border-transparent",
|
|
2003
2125
|
green: "bg-success text-success-foreground fill-current",
|
|
2004
|
-
"green-subtle":
|
|
2126
|
+
"green-subtle": (
|
|
2127
|
+
// --success-strong closes the 4.49:1 light gap: 4.99:1 light / 4.83:1 dark.
|
|
2128
|
+
"bg-success/10 text-[hsl(var(--success-strong))] fill-current border-transparent"
|
|
2129
|
+
),
|
|
2005
2130
|
teal: "bg-info text-info-foreground fill-current",
|
|
2006
|
-
"teal-subtle": "bg-info/
|
|
2131
|
+
"teal-subtle": "bg-info/10 text-info fill-current border-transparent",
|
|
2007
2132
|
inverted: "bg-foreground text-background fill-current",
|
|
2008
2133
|
// Special visual treatments (intentional product design, not brand hex)
|
|
2009
2134
|
trial: "bg-gradient-to-br from-trial-start to-trial-end text-primary-foreground fill-current",
|
|
@@ -2344,7 +2469,7 @@ function AssistedPasswordConfirmation({
|
|
|
2344
2469
|
children: /* @__PURE__ */ jsx(
|
|
2345
2470
|
motion.input,
|
|
2346
2471
|
{
|
|
2347
|
-
className: "h-full w-full rounded-[var(--radius-xl)] border-2 border-border bg-background px-3.5 py-3 tracking-[0.4em] text-foreground outline-none transition-colors placeholder:tracking-normal focus-visible:border-ring
|
|
2472
|
+
className: "h-full w-full rounded-[var(--radius-xl)] border-2 border-border bg-background px-3.5 py-3 tracking-[0.4em] text-foreground outline-none transition-colors placeholder:tracking-normal focus-visible:border-ring",
|
|
2348
2473
|
type: "password",
|
|
2349
2474
|
placeholder,
|
|
2350
2475
|
value: confirmPassword,
|
|
@@ -2528,9 +2653,18 @@ function getAvatarFallbackClass(size) {
|
|
|
2528
2653
|
}
|
|
2529
2654
|
function getAvatarStyle(size, style) {
|
|
2530
2655
|
if (typeof size !== "number") return style;
|
|
2531
|
-
|
|
2656
|
+
const numericVars = {
|
|
2532
2657
|
"--avatar-size": `${size}px`,
|
|
2533
|
-
"--avatar-font-size": `${Math.max(10, Math.round(size * 0.375))}px
|
|
2658
|
+
"--avatar-font-size": `${Math.max(10, Math.round(size * 0.375))}px`
|
|
2659
|
+
};
|
|
2660
|
+
if (typeof style === "function") {
|
|
2661
|
+
return (state) => ({
|
|
2662
|
+
...numericVars,
|
|
2663
|
+
...style(state)
|
|
2664
|
+
});
|
|
2665
|
+
}
|
|
2666
|
+
return {
|
|
2667
|
+
...numericVars,
|
|
2534
2668
|
...style
|
|
2535
2669
|
};
|
|
2536
2670
|
}
|
|
@@ -3000,7 +3134,7 @@ function AvatarSmartGroup({
|
|
|
3000
3134
|
{
|
|
3001
3135
|
type: "button",
|
|
3002
3136
|
"aria-label": user.role ? `${user.name}, ${user.role}` : user.name,
|
|
3003
|
-
className: `rounded-full ring-2 ${ringColor} transition-transform duration-
|
|
3137
|
+
className: `rounded-full ring-2 ${ringColor} transition-transform duration-micro cursor-pointer border-none bg-transparent p-0 outline-none`,
|
|
3004
3138
|
style: {
|
|
3005
3139
|
marginLeft: index > 0 && overlap < 0 ? `${overlap}px` : void 0,
|
|
3006
3140
|
transform: activeKey === userKey ? `scale(${hoverScale})` : "scale(1)",
|
|
@@ -3574,7 +3708,7 @@ var Badge1 = ({
|
|
|
3574
3708
|
return /* @__PURE__ */ jsx(Badge, { className: badgeClassName, icon, size, variant, ...props, children });
|
|
3575
3709
|
};
|
|
3576
3710
|
var baseBadgeVariants = cva(
|
|
3577
|
-
"inline-flex items-center justify-center border border-transparent font-medium focus-visible:outline-none
|
|
3711
|
+
"inline-flex items-center justify-center border border-transparent font-medium focus-visible:outline-none [&_svg]:-ms-px [&_svg]:shrink-0",
|
|
3578
3712
|
{
|
|
3579
3713
|
variants: {
|
|
3580
3714
|
variant: {
|
|
@@ -3809,7 +3943,7 @@ function BaseBadge({
|
|
|
3809
3943
|
return element;
|
|
3810
3944
|
}
|
|
3811
3945
|
var baseButtonVariants = cva(
|
|
3812
|
-
"cursor-pointer group whitespace-nowrap
|
|
3946
|
+
"cursor-pointer group whitespace-nowrap inline-flex items-center justify-center has-data-[arrow=true]:justify-between whitespace-nowrap text-sm font-medium ring-offset-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-60 [&_svg]:shrink-0",
|
|
3813
3947
|
{
|
|
3814
3948
|
variants: {
|
|
3815
3949
|
variant: {
|
|
@@ -3851,12 +3985,12 @@ var baseButtonVariants = cva(
|
|
|
3851
3985
|
circle: "rounded-full"
|
|
3852
3986
|
},
|
|
3853
3987
|
mode: {
|
|
3854
|
-
default: "
|
|
3855
|
-
icon: "
|
|
3988
|
+
default: "",
|
|
3989
|
+
icon: "",
|
|
3856
3990
|
link: "text-primary h-auto p-0 bg-transparent rounded-none hover:bg-transparent data-[state=open]:bg-transparent",
|
|
3857
3991
|
input: `
|
|
3858
3992
|
justify-start font-normal hover:bg-background [&_svg]:transition-colors [&_svg]:hover:text-foreground data-[state=open]:bg-background
|
|
3859
|
-
focus-visible:border-ring
|
|
3993
|
+
focus-visible:border-ring
|
|
3860
3994
|
[[data-state=open]>&]:border-ring [[data-state=open]>&]:outline-none [[data-state=open]>&]:ring-[3px]
|
|
3861
3995
|
[[data-state=open]>&]:ring-ring/30
|
|
3862
3996
|
aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20
|
|
@@ -4225,7 +4359,10 @@ function Spinner({ className }) {
|
|
|
4225
4359
|
}
|
|
4226
4360
|
);
|
|
4227
4361
|
}
|
|
4228
|
-
function getIconSizeClass(size) {
|
|
4362
|
+
function getIconSizeClass(size, iconSize2) {
|
|
4363
|
+
if (iconSize2 === "sm") return "[&>svg]:size-3.5";
|
|
4364
|
+
if (iconSize2 === "md") return "[&>svg]:size-3.5";
|
|
4365
|
+
if (iconSize2 === "lg") return "[&>svg]:size-4";
|
|
4229
4366
|
switch (size) {
|
|
4230
4367
|
case "tiny":
|
|
4231
4368
|
return "[&>svg]:size-3";
|
|
@@ -4240,7 +4377,10 @@ function getIconSizeClass(size) {
|
|
|
4240
4377
|
return "[&>svg]:size-4";
|
|
4241
4378
|
}
|
|
4242
4379
|
}
|
|
4243
|
-
function getSpinnerSizeClass(size) {
|
|
4380
|
+
function getSpinnerSizeClass(size, iconSize2) {
|
|
4381
|
+
if (iconSize2 === "sm") return "size-3.5";
|
|
4382
|
+
if (iconSize2 === "md") return "size-3.5";
|
|
4383
|
+
if (iconSize2 === "lg") return "size-4";
|
|
4244
4384
|
switch (size) {
|
|
4245
4385
|
case "tiny":
|
|
4246
4386
|
return "size-3";
|
|
@@ -4265,10 +4405,10 @@ function resolveShadowClass(shadow) {
|
|
|
4265
4405
|
const level = shadow === true ? "md" : shadow;
|
|
4266
4406
|
return SHADOW_CLASSES[level];
|
|
4267
4407
|
}
|
|
4268
|
-
function ButtonContent({ loading, prefix, suffix, size, children }) {
|
|
4269
|
-
const iconSizeClass = getIconSizeClass(size);
|
|
4408
|
+
function ButtonContent({ loading, prefix, suffix, size, iconSize: iconSize2, children }) {
|
|
4409
|
+
const iconSizeClass = getIconSizeClass(size, iconSize2);
|
|
4270
4410
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4271
|
-
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size) }),
|
|
4411
|
+
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size, iconSize2) }),
|
|
4272
4412
|
prefix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: prefix }),
|
|
4273
4413
|
children,
|
|
4274
4414
|
suffix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: suffix })
|
|
@@ -4279,6 +4419,7 @@ var Button = ({
|
|
|
4279
4419
|
variant,
|
|
4280
4420
|
size,
|
|
4281
4421
|
shape,
|
|
4422
|
+
iconSize: iconSize2,
|
|
4282
4423
|
asChild = false,
|
|
4283
4424
|
loading = false,
|
|
4284
4425
|
disabled,
|
|
@@ -4296,11 +4437,21 @@ var Button = ({
|
|
|
4296
4437
|
Comp,
|
|
4297
4438
|
{
|
|
4298
4439
|
ref,
|
|
4299
|
-
className: cn(buttonVariants({ variant, size, shape }), shadowClass, className),
|
|
4440
|
+
className: cn(buttonVariants({ variant, size, shape, iconSize: iconSize2 }), shadowClass, className),
|
|
4300
4441
|
disabled: isDisabled,
|
|
4301
4442
|
"aria-busy": loading || void 0,
|
|
4302
4443
|
...props,
|
|
4303
|
-
children: asChild ? children : /* @__PURE__ */ jsx(
|
|
4444
|
+
children: asChild ? children : /* @__PURE__ */ jsx(
|
|
4445
|
+
ButtonContent,
|
|
4446
|
+
{
|
|
4447
|
+
loading,
|
|
4448
|
+
prefix,
|
|
4449
|
+
suffix,
|
|
4450
|
+
size,
|
|
4451
|
+
iconSize: iconSize2,
|
|
4452
|
+
children
|
|
4453
|
+
}
|
|
4454
|
+
)
|
|
4304
4455
|
}
|
|
4305
4456
|
);
|
|
4306
4457
|
};
|
|
@@ -4310,6 +4461,7 @@ var ButtonLink = ({
|
|
|
4310
4461
|
variant,
|
|
4311
4462
|
size,
|
|
4312
4463
|
shape,
|
|
4464
|
+
iconSize: iconSize2,
|
|
4313
4465
|
prefix,
|
|
4314
4466
|
suffix,
|
|
4315
4467
|
shadow,
|
|
@@ -4329,14 +4481,24 @@ var ButtonLink = ({
|
|
|
4329
4481
|
{
|
|
4330
4482
|
ref,
|
|
4331
4483
|
className: cn(
|
|
4332
|
-
buttonVariants({ variant, size, shape }),
|
|
4484
|
+
buttonVariants({ variant, size, shape, iconSize: iconSize2 }),
|
|
4333
4485
|
shadowClass,
|
|
4334
4486
|
loading && "pointer-events-none opacity-50",
|
|
4335
4487
|
className
|
|
4336
4488
|
),
|
|
4337
4489
|
...loadingProps,
|
|
4338
4490
|
...props,
|
|
4339
|
-
children: /* @__PURE__ */ jsx(
|
|
4491
|
+
children: /* @__PURE__ */ jsx(
|
|
4492
|
+
ButtonContent,
|
|
4493
|
+
{
|
|
4494
|
+
loading,
|
|
4495
|
+
prefix,
|
|
4496
|
+
suffix,
|
|
4497
|
+
size,
|
|
4498
|
+
iconSize: iconSize2,
|
|
4499
|
+
children
|
|
4500
|
+
}
|
|
4501
|
+
)
|
|
4340
4502
|
}
|
|
4341
4503
|
);
|
|
4342
4504
|
};
|
|
@@ -5140,7 +5302,7 @@ function Browser(props) {
|
|
|
5140
5302
|
type: "button",
|
|
5141
5303
|
onClick: handleCopy,
|
|
5142
5304
|
"aria-label": copied ? "Address copied" : "Copy address",
|
|
5143
|
-
className: "flex-shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none
|
|
5305
|
+
className: "flex-shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none",
|
|
5144
5306
|
children: copied ? /* @__PURE__ */ jsx(Check, { className: "size-3" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3" })
|
|
5145
5307
|
}
|
|
5146
5308
|
)
|
|
@@ -5307,7 +5469,7 @@ function BulkActionBar({
|
|
|
5307
5469
|
{
|
|
5308
5470
|
className: cn(
|
|
5309
5471
|
"z-50 flex items-center gap-3 rounded-[var(--radius-lg)] border bg-background/95 px-4 py-2.5 shadow-lg backdrop-blur-sm",
|
|
5310
|
-
"animate-in slide-in-from-bottom-2 duration-
|
|
5472
|
+
"animate-in slide-in-from-bottom-2 duration-reveal",
|
|
5311
5473
|
fixed && position === "bottom" && "fixed bottom-4 left-1/2 -translate-x-1/2",
|
|
5312
5474
|
fixed && position === "top" && "fixed top-4 left-1/2 -translate-x-1/2",
|
|
5313
5475
|
!fixed && "relative",
|
|
@@ -5724,7 +5886,7 @@ function CardSpotlight({
|
|
|
5724
5886
|
/* @__PURE__ */ jsx(
|
|
5725
5887
|
motion.div,
|
|
5726
5888
|
{
|
|
5727
|
-
className: "pointer-events-none absolute z-0 -inset-px rounded-[var(--radius-md)] opacity-0 transition duration-
|
|
5889
|
+
className: "pointer-events-none absolute z-0 -inset-px rounded-[var(--radius-md)] opacity-0 transition duration-reveal motion-reduce:transition-none group-hover/spotlight:opacity-100",
|
|
5728
5890
|
style: {
|
|
5729
5891
|
backgroundColor: color,
|
|
5730
5892
|
maskImage: useMotionTemplate`
|
|
@@ -6193,8 +6355,68 @@ function getPayloadConfigFromPayload(config, payload, key) {
|
|
|
6193
6355
|
}
|
|
6194
6356
|
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
6195
6357
|
}
|
|
6358
|
+
var DEFAULT_STROKE_WIDTH = 1.6;
|
|
6359
|
+
function CheckGlyph({
|
|
6360
|
+
size = 16,
|
|
6361
|
+
width,
|
|
6362
|
+
height,
|
|
6363
|
+
strokeWidth = DEFAULT_STROKE_WIDTH,
|
|
6364
|
+
...props
|
|
6365
|
+
}) {
|
|
6366
|
+
return /* @__PURE__ */ jsx(
|
|
6367
|
+
"svg",
|
|
6368
|
+
{
|
|
6369
|
+
"aria-hidden": "true",
|
|
6370
|
+
className: "shrink-0",
|
|
6371
|
+
viewBox: "0 0 16 16",
|
|
6372
|
+
width: width ?? size,
|
|
6373
|
+
height: height ?? size,
|
|
6374
|
+
...props,
|
|
6375
|
+
children: /* @__PURE__ */ jsx(
|
|
6376
|
+
"path",
|
|
6377
|
+
{
|
|
6378
|
+
d: "M11.2 5.6L6.8 10L4.8 8",
|
|
6379
|
+
strokeLinecap: "round",
|
|
6380
|
+
strokeLinejoin: "round",
|
|
6381
|
+
strokeWidth
|
|
6382
|
+
}
|
|
6383
|
+
)
|
|
6384
|
+
}
|
|
6385
|
+
);
|
|
6386
|
+
}
|
|
6387
|
+
function IndeterminateGlyph({
|
|
6388
|
+
size = 16,
|
|
6389
|
+
width,
|
|
6390
|
+
height,
|
|
6391
|
+
strokeWidth = DEFAULT_STROKE_WIDTH,
|
|
6392
|
+
...props
|
|
6393
|
+
}) {
|
|
6394
|
+
return /* @__PURE__ */ jsx(
|
|
6395
|
+
"svg",
|
|
6396
|
+
{
|
|
6397
|
+
"aria-hidden": "true",
|
|
6398
|
+
className: "shrink-0",
|
|
6399
|
+
viewBox: "0 0 16 16",
|
|
6400
|
+
width: width ?? size,
|
|
6401
|
+
height: height ?? size,
|
|
6402
|
+
...props,
|
|
6403
|
+
children: /* @__PURE__ */ jsx(
|
|
6404
|
+
"line",
|
|
6405
|
+
{
|
|
6406
|
+
x1: "4",
|
|
6407
|
+
x2: "12",
|
|
6408
|
+
y1: "8",
|
|
6409
|
+
y2: "8",
|
|
6410
|
+
strokeLinecap: "round",
|
|
6411
|
+
strokeLinejoin: "round",
|
|
6412
|
+
strokeWidth
|
|
6413
|
+
}
|
|
6414
|
+
)
|
|
6415
|
+
}
|
|
6416
|
+
);
|
|
6417
|
+
}
|
|
6196
6418
|
var getInputClasses = (checked, disabled, indeterminate) => {
|
|
6197
|
-
let className = "relative border w-4 h-4 duration-
|
|
6419
|
+
let className = "relative border w-4 h-4 duration-micro rounded inline-flex items-center justify-center";
|
|
6198
6420
|
if (disabled) {
|
|
6199
6421
|
if (!checked || indeterminate) {
|
|
6200
6422
|
className += " bg-geist-gray-100 border-geist-gray-500";
|
|
@@ -6257,26 +6479,7 @@ var Checkbox = ({
|
|
|
6257
6479
|
className: "sr-only"
|
|
6258
6480
|
}
|
|
6259
6481
|
),
|
|
6260
|
-
/* @__PURE__ */ jsx("span", { className: getInputClasses(checked, disabled, indeterminate), children: /* @__PURE__ */ jsx(
|
|
6261
|
-
"line",
|
|
6262
|
-
{
|
|
6263
|
-
strokeLinecap: "round",
|
|
6264
|
-
strokeLinejoin: "round",
|
|
6265
|
-
strokeWidth: "2",
|
|
6266
|
-
x1: "5",
|
|
6267
|
-
x2: "15",
|
|
6268
|
-
y1: "10",
|
|
6269
|
-
y2: "10"
|
|
6270
|
-
}
|
|
6271
|
-
) : /* @__PURE__ */ jsx(
|
|
6272
|
-
"path",
|
|
6273
|
-
{
|
|
6274
|
-
d: "M14 7L8.5 12.5L6 10",
|
|
6275
|
-
strokeLinecap: "round",
|
|
6276
|
-
strokeLinejoin: "round",
|
|
6277
|
-
strokeWidth: "2"
|
|
6278
|
-
}
|
|
6279
|
-
) }) }),
|
|
6482
|
+
/* @__PURE__ */ jsx("span", { className: getInputClasses(checked, disabled, indeterminate), children: indeterminate ? /* @__PURE__ */ jsx(IndeterminateGlyph, {}) : /* @__PURE__ */ jsx(CheckGlyph, {}) }),
|
|
6280
6483
|
children && /* @__PURE__ */ jsx("span", { className: "ml-2", children })
|
|
6281
6484
|
]
|
|
6282
6485
|
}
|
|
@@ -6321,8 +6524,8 @@ var choiceboxItemVariants = cva(
|
|
|
6321
6524
|
[
|
|
6322
6525
|
"relative flex flex-1 flex-col gap-1 rounded-[var(--radius-lg)] border p-4",
|
|
6323
6526
|
"cursor-pointer select-none",
|
|
6324
|
-
"transition-colors duration-
|
|
6325
|
-
"focus-visible:outline-none
|
|
6527
|
+
"transition-colors duration-micro ease-out",
|
|
6528
|
+
"focus-visible:outline-none"
|
|
6326
6529
|
].join(" "),
|
|
6327
6530
|
{
|
|
6328
6531
|
variants: {
|
|
@@ -6901,6 +7104,11 @@ var overlayPrimitiveClassNames = {
|
|
|
6901
7104
|
"data-[highlighted]:bg-accent data-[popup-open]:bg-accent"
|
|
6902
7105
|
].join(" "),
|
|
6903
7106
|
menuCheckboxItem: [menuItemBaseClassName, menuHighlightedClassName, "pl-8"].join(" "),
|
|
7107
|
+
menuFilterInput: [
|
|
7108
|
+
"h-7 w-full rounded-[var(--radius-sm)] bg-muted px-2 text-sm text-foreground",
|
|
7109
|
+
"placeholder:text-muted-foreground outline-none"
|
|
7110
|
+
].join(" "),
|
|
7111
|
+
menuEmpty: "px-2 py-3 text-center text-sm text-muted-foreground",
|
|
6904
7112
|
menuIndicator: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center text-muted-foreground",
|
|
6905
7113
|
menubarRoot: "flex h-10 items-center space-x-1 rounded-[var(--radius-md)] border border-border bg-background p-1 outline-none",
|
|
6906
7114
|
menubarTrigger: [
|
|
@@ -7110,6 +7318,40 @@ var DropdownMenuRadioItem = ({
|
|
|
7110
7318
|
}
|
|
7111
7319
|
);
|
|
7112
7320
|
DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
|
|
7321
|
+
var MENU_RESERVED_KEYS = /* @__PURE__ */ new Set(["ArrowUp", "ArrowDown", "Enter", "Tab"]);
|
|
7322
|
+
var DropdownMenuFilterInput = ({
|
|
7323
|
+
className,
|
|
7324
|
+
onKeyDown,
|
|
7325
|
+
ref,
|
|
7326
|
+
...props
|
|
7327
|
+
}) => /* @__PURE__ */ jsx(
|
|
7328
|
+
"input",
|
|
7329
|
+
{
|
|
7330
|
+
ref,
|
|
7331
|
+
type: "search",
|
|
7332
|
+
className: cn(overlayPrimitiveClassNames.menuFilterInput, className),
|
|
7333
|
+
onKeyDown: (event) => {
|
|
7334
|
+
onKeyDown?.(event);
|
|
7335
|
+
if (!MENU_RESERVED_KEYS.has(event.key)) {
|
|
7336
|
+
event.stopPropagation();
|
|
7337
|
+
}
|
|
7338
|
+
},
|
|
7339
|
+
...props
|
|
7340
|
+
}
|
|
7341
|
+
);
|
|
7342
|
+
DropdownMenuFilterInput.displayName = "DropdownMenuFilterInput";
|
|
7343
|
+
var DropdownMenuEmpty = ({
|
|
7344
|
+
className,
|
|
7345
|
+
...props
|
|
7346
|
+
}) => /* @__PURE__ */ jsx(
|
|
7347
|
+
"div",
|
|
7348
|
+
{
|
|
7349
|
+
role: "presentation",
|
|
7350
|
+
className: cn(overlayPrimitiveClassNames.menuEmpty, className),
|
|
7351
|
+
...props
|
|
7352
|
+
}
|
|
7353
|
+
);
|
|
7354
|
+
DropdownMenuEmpty.displayName = "DropdownMenuEmpty";
|
|
7113
7355
|
var DropdownMenuLabel = ({
|
|
7114
7356
|
className,
|
|
7115
7357
|
inset,
|
|
@@ -8439,7 +8681,6 @@ var comboboxTriggerVariants = cva(
|
|
|
8439
8681
|
"text-[length:var(--combobox-font-size)] ring-offset-background",
|
|
8440
8682
|
"transition-colors duration-micro ease-out",
|
|
8441
8683
|
"placeholder:text-muted-foreground",
|
|
8442
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
8443
8684
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
8444
8685
|
"[&>span]:line-clamp-1 [&>span]:text-left"
|
|
8445
8686
|
].join(" "),
|
|
@@ -8451,7 +8692,7 @@ var comboboxTriggerVariants = cva(
|
|
|
8451
8692
|
large: ""
|
|
8452
8693
|
},
|
|
8453
8694
|
error: {
|
|
8454
|
-
true: "border-destructive
|
|
8695
|
+
true: "border-destructive",
|
|
8455
8696
|
false: ""
|
|
8456
8697
|
}
|
|
8457
8698
|
},
|
|
@@ -8936,11 +9177,11 @@ var formControlInvalidClassNames = {
|
|
|
8936
9177
|
};
|
|
8937
9178
|
var inputVariants = cva(
|
|
8938
9179
|
[
|
|
8939
|
-
"flex h-[var(--input-height)] w-full rounded-[var(--input-radius)]
|
|
8940
|
-
"px-[var(--input-padding-x)] text-[length:var(--input-font-size)] text-foreground
|
|
9180
|
+
"flex h-[var(--input-height)] w-full rounded-[var(--input-radius)]",
|
|
9181
|
+
"px-[var(--input-padding-x)] text-[length:var(--input-font-size)] text-foreground",
|
|
8941
9182
|
"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out",
|
|
8942
9183
|
"placeholder:text-muted-foreground",
|
|
8943
|
-
|
|
9184
|
+
"outline-none",
|
|
8944
9185
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
8945
9186
|
"read-only:bg-muted/70 read-only:cursor-default",
|
|
8946
9187
|
"file:h-full file:border-0 file:border-e file:border-solid file:border-input file:bg-transparent",
|
|
@@ -8963,11 +9204,31 @@ var inputVariants = cva(
|
|
|
8963
9204
|
prefix: "pl-[var(--input-padding-left)]",
|
|
8964
9205
|
suffix: "pr-[var(--input-padding-right)]",
|
|
8965
9206
|
both: "pl-[var(--input-padding-left)] pr-[var(--input-padding-right)]"
|
|
9207
|
+
},
|
|
9208
|
+
/**
|
|
9209
|
+
* `bare` drops the field's own stroke, fill and lift so it can sit inside
|
|
9210
|
+
* a container that already provides them — a footer subscribe group, a
|
|
9211
|
+
* search well, a segmented composer. Those surfaces were each being built
|
|
9212
|
+
* by hand with a raw <input>, because overriding the bordered look from
|
|
9213
|
+
* outside is not reliable: `border-transparent` passed via className and
|
|
9214
|
+
* `border-input` from the base are both border-color utilities, so which
|
|
9215
|
+
* one wins depends on their order in the generated stylesheet rather than
|
|
9216
|
+
* on the order they were written. That is why the stroke, fill and shadow
|
|
9217
|
+
* live in this variant instead of the base — the two tones now never emit
|
|
9218
|
+
* a competing declaration.
|
|
9219
|
+
*
|
|
9220
|
+
* A bare field draws no focus ring of its own. The container owns it, so
|
|
9221
|
+
* the ring surrounds the whole group rather than a box inside it.
|
|
9222
|
+
*/
|
|
9223
|
+
tone: {
|
|
9224
|
+
bordered: `border border-input bg-background shadow-xs ${formControlFocusClassNames.input}`,
|
|
9225
|
+
bare: "border-0 bg-transparent shadow-none"
|
|
8966
9226
|
}
|
|
8967
9227
|
},
|
|
8968
9228
|
defaultVariants: {
|
|
8969
9229
|
size: "md",
|
|
8970
|
-
affix: "none"
|
|
9230
|
+
affix: "none",
|
|
9231
|
+
tone: "bordered"
|
|
8971
9232
|
}
|
|
8972
9233
|
}
|
|
8973
9234
|
);
|
|
@@ -8990,7 +9251,7 @@ var inputControlButtonVariants = cva(
|
|
|
8990
9251
|
"absolute right-[var(--input-control-inset)] top-1/2 flex size-[var(--input-control-size)] -translate-y-1/2 items-center justify-center",
|
|
8991
9252
|
"rounded-[var(--radius-sm)] text-muted-foreground transition-colors duration-micro ease-out",
|
|
8992
9253
|
"hover:bg-accent hover:text-foreground",
|
|
8993
|
-
"focus-visible:outline-none
|
|
9254
|
+
"focus-visible:outline-none",
|
|
8994
9255
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
8995
9256
|
"[&_svg]:size-[var(--input-control-icon-size)]"
|
|
8996
9257
|
].join(" ")
|
|
@@ -9029,7 +9290,7 @@ function getInputStyle(size, style) {
|
|
|
9029
9290
|
"--input-focus-ring-width": `${inputTokens.focusRingWidth}px`,
|
|
9030
9291
|
borderRadius: "var(--input-radius)",
|
|
9031
9292
|
outline: "none",
|
|
9032
|
-
...style
|
|
9293
|
+
...asPlainStyle(style)
|
|
9033
9294
|
};
|
|
9034
9295
|
}
|
|
9035
9296
|
function getAffixMode(prefix, hasRightAdornment) {
|
|
@@ -9055,6 +9316,7 @@ var Input = ({
|
|
|
9055
9316
|
className,
|
|
9056
9317
|
type = "text",
|
|
9057
9318
|
size = "md",
|
|
9319
|
+
tone = "bordered",
|
|
9058
9320
|
prefix,
|
|
9059
9321
|
suffix,
|
|
9060
9322
|
clearable,
|
|
@@ -9174,7 +9436,7 @@ var Input = ({
|
|
|
9174
9436
|
"aria-describedby": describedBy,
|
|
9175
9437
|
"aria-busy": loading || void 0,
|
|
9176
9438
|
className: cn(
|
|
9177
|
-
inputVariants({ size, affix }),
|
|
9439
|
+
inputVariants({ size, affix, tone }),
|
|
9178
9440
|
type === "file" && "p-0 pr-[var(--input-padding-x)] text-muted-foreground",
|
|
9179
9441
|
className
|
|
9180
9442
|
),
|
|
@@ -9891,7 +10153,7 @@ var ContextCardTrigger = ({
|
|
|
9891
10153
|
"transition-[opacity,transform,display] duration-[var(--context-card-duration)] ease-[var(--context-card-easing)]",
|
|
9892
10154
|
"data-starting-style:opacity-0 data-ending-style:opacity-0 data-starting-style:scale-[0.98] data-ending-style:scale-[0.98]",
|
|
9893
10155
|
"motion-reduce:transition-none motion-reduce:data-starting-style:scale-100 motion-reduce:data-ending-style:scale-100",
|
|
9894
|
-
"
|
|
10156
|
+
"",
|
|
9895
10157
|
"data-[side=bottom]:origin-top data-[side=left]:origin-right data-[side=right]:origin-left data-[side=top]:origin-bottom",
|
|
9896
10158
|
className
|
|
9897
10159
|
),
|
|
@@ -10195,20 +10457,27 @@ var ContextMenu = Object.assign(ContextMenuRoot, {
|
|
|
10195
10457
|
SubTrigger: ContextMenuSubTrigger,
|
|
10196
10458
|
SubContent: ContextMenuSubContent
|
|
10197
10459
|
});
|
|
10460
|
+
var COPIED_TINT = "text-[hsl(var(--success-strong))]";
|
|
10461
|
+
function CopiedAnnouncement({ copied, message }) {
|
|
10462
|
+
return /* @__PURE__ */ jsx("span", { "aria-live": "polite", className: "sr-only", children: copied ? message : "" });
|
|
10463
|
+
}
|
|
10198
10464
|
function CopyButton({
|
|
10199
10465
|
value,
|
|
10200
10466
|
label,
|
|
10467
|
+
copiedLabel = "Copied",
|
|
10201
10468
|
successMessage = "Copied to clipboard",
|
|
10202
10469
|
tooltipText = "Copy",
|
|
10203
10470
|
iconType = "copy",
|
|
10471
|
+
iconPosition = "leading",
|
|
10204
10472
|
showToast = true,
|
|
10473
|
+
timeout = 2e3,
|
|
10205
10474
|
onCopied,
|
|
10206
10475
|
variant = "ghost",
|
|
10207
10476
|
size = "icon",
|
|
10208
10477
|
className,
|
|
10209
10478
|
...props
|
|
10210
10479
|
}) {
|
|
10211
|
-
const
|
|
10480
|
+
const { copied, copy } = useCopyToClipboard({ successMessage, showToast, timeout });
|
|
10212
10481
|
const IconComponent = {
|
|
10213
10482
|
copy: Copy,
|
|
10214
10483
|
link: Link$1,
|
|
@@ -10216,38 +10485,30 @@ function CopyButton({
|
|
|
10216
10485
|
hash: Hash
|
|
10217
10486
|
}[iconType];
|
|
10218
10487
|
const handleCopy = async () => {
|
|
10219
|
-
|
|
10220
|
-
await navigator.clipboard.writeText(value);
|
|
10221
|
-
setCopied(true);
|
|
10222
|
-
if (showToast) {
|
|
10223
|
-
toast.success(successMessage);
|
|
10224
|
-
}
|
|
10225
|
-
onCopied?.(value);
|
|
10226
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
10227
|
-
} catch (error) {
|
|
10228
|
-
console.error("Failed to copy:", error);
|
|
10229
|
-
toast.error("Failed to copy to clipboard");
|
|
10230
|
-
}
|
|
10488
|
+
if (await copy(value)) onCopied?.(value);
|
|
10231
10489
|
};
|
|
10490
|
+
const icon = copied ? /* @__PURE__ */ jsx(Check, { className: COPIED_TINT }) : /* @__PURE__ */ jsx(IconComponent, {});
|
|
10491
|
+
const iconSlot = iconPosition === "trailing" ? { suffix: icon } : { prefix: icon };
|
|
10232
10492
|
const button = /* @__PURE__ */ jsxs(
|
|
10233
10493
|
Button,
|
|
10234
10494
|
{
|
|
10235
10495
|
variant,
|
|
10236
10496
|
size,
|
|
10237
10497
|
onClick: handleCopy,
|
|
10238
|
-
className: cn("transition-colors",
|
|
10498
|
+
className: cn("transition-colors", className),
|
|
10499
|
+
...iconSlot,
|
|
10239
10500
|
...props,
|
|
10240
10501
|
children: [
|
|
10241
|
-
|
|
10242
|
-
label && /* @__PURE__ */ jsx("span", { className: "
|
|
10243
|
-
/* @__PURE__ */ jsx(
|
|
10502
|
+
label && /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: copied && copiedLabel ? copiedLabel : label }),
|
|
10503
|
+
!label && /* @__PURE__ */ jsx("span", { className: "sr-only", children: tooltipText }),
|
|
10504
|
+
/* @__PURE__ */ jsx(CopiedAnnouncement, { copied, message: successMessage })
|
|
10244
10505
|
]
|
|
10245
10506
|
}
|
|
10246
10507
|
);
|
|
10247
10508
|
if (!label) {
|
|
10248
10509
|
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
10249
10510
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: button }),
|
|
10250
|
-
/* @__PURE__ */ jsx(TooltipContent, { children: /* @__PURE__ */ jsx("p", { children: copied ? "Copied
|
|
10511
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: /* @__PURE__ */ jsx("p", { children: copied ? "Copied" : tooltipText }) })
|
|
10251
10512
|
] });
|
|
10252
10513
|
}
|
|
10253
10514
|
return button;
|
|
@@ -10303,6 +10564,36 @@ function CopyCodeButton({
|
|
|
10303
10564
|
}
|
|
10304
10565
|
);
|
|
10305
10566
|
}
|
|
10567
|
+
function CopyMenuItem({
|
|
10568
|
+
value,
|
|
10569
|
+
children,
|
|
10570
|
+
successMessage = "Copied to clipboard",
|
|
10571
|
+
showToast = false,
|
|
10572
|
+
timeout = 2e3,
|
|
10573
|
+
closeOnCopy = false,
|
|
10574
|
+
onCopied,
|
|
10575
|
+
className,
|
|
10576
|
+
...props
|
|
10577
|
+
}) {
|
|
10578
|
+
const { copied, copy } = useCopyToClipboard({ successMessage, showToast, timeout });
|
|
10579
|
+
const handleCopy = async () => {
|
|
10580
|
+
if (await copy(value)) onCopied?.(value);
|
|
10581
|
+
};
|
|
10582
|
+
return /* @__PURE__ */ jsxs(
|
|
10583
|
+
DropdownMenuItem,
|
|
10584
|
+
{
|
|
10585
|
+
closeOnClick: closeOnCopy,
|
|
10586
|
+
onClick: handleCopy,
|
|
10587
|
+
className: cn("cursor-pointer", className),
|
|
10588
|
+
...props,
|
|
10589
|
+
children: [
|
|
10590
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1", children }),
|
|
10591
|
+
copied ? /* @__PURE__ */ jsx(Check, { "aria-hidden": "true", className: cn("size-4", COPIED_TINT) }) : /* @__PURE__ */ jsx(Copy, { "aria-hidden": "true", className: "size-4 text-muted-foreground" }),
|
|
10592
|
+
/* @__PURE__ */ jsx(CopiedAnnouncement, { copied, message: successMessage })
|
|
10593
|
+
]
|
|
10594
|
+
}
|
|
10595
|
+
);
|
|
10596
|
+
}
|
|
10306
10597
|
function CopyableField({ value, label, truncate = true, className }) {
|
|
10307
10598
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", className), children: [
|
|
10308
10599
|
label && /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground shrink-0", children: [
|
|
@@ -10343,35 +10634,684 @@ function useCopyToClipboard(options = {}) {
|
|
|
10343
10634
|
);
|
|
10344
10635
|
return { copied, copy };
|
|
10345
10636
|
}
|
|
10346
|
-
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
|
|
10351
|
-
|
|
10352
|
-
|
|
10353
|
-
|
|
10354
|
-
|
|
10355
|
-
|
|
10356
|
-
|
|
10357
|
-
|
|
10358
|
-
|
|
10359
|
-
|
|
10360
|
-
|
|
10361
|
-
|
|
10362
|
-
|
|
10363
|
-
|
|
10364
|
-
|
|
10365
|
-
|
|
10366
|
-
|
|
10367
|
-
|
|
10368
|
-
|
|
10369
|
-
|
|
10370
|
-
|
|
10371
|
-
|
|
10372
|
-
|
|
10373
|
-
|
|
10374
|
-
|
|
10637
|
+
|
|
10638
|
+
// src/tokens/components/empty-state.ts
|
|
10639
|
+
var emptyStateTokens = {
|
|
10640
|
+
root: {
|
|
10641
|
+
minHeight: {
|
|
10642
|
+
sm: primitiveSpacing[16] * 2,
|
|
10643
|
+
md: primitiveSpacing[24] * 2,
|
|
10644
|
+
lg: primitiveSpacing[16] * 4
|
|
10645
|
+
},
|
|
10646
|
+
paddingX: {
|
|
10647
|
+
sm: primitiveSpacing[4],
|
|
10648
|
+
md: primitiveSpacing[6],
|
|
10649
|
+
lg: primitiveSpacing[8]
|
|
10650
|
+
},
|
|
10651
|
+
paddingY: {
|
|
10652
|
+
sm: primitiveSpacing[8],
|
|
10653
|
+
md: primitiveSpacing[10],
|
|
10654
|
+
lg: primitiveSpacing[14]
|
|
10655
|
+
},
|
|
10656
|
+
radius: primitiveRadius.lg
|
|
10657
|
+
},
|
|
10658
|
+
content: {
|
|
10659
|
+
maxWidth: primitiveSpacing[14] * 8,
|
|
10660
|
+
descriptionMaxWidth: primitiveSpacing[12] * 8,
|
|
10661
|
+
stackGap: primitiveSpacing[4],
|
|
10662
|
+
copyGap: primitiveSpacing[2],
|
|
10663
|
+
actionsGap: primitiveSpacing[2]
|
|
10664
|
+
},
|
|
10665
|
+
icon: {
|
|
10666
|
+
size: primitiveSizing.lg,
|
|
10667
|
+
radius: primitiveRadius.lg
|
|
10668
|
+
},
|
|
10669
|
+
typography: {
|
|
10670
|
+
title: {
|
|
10671
|
+
sm: primitiveFontSize.sm,
|
|
10672
|
+
md: primitiveFontSize.base,
|
|
10673
|
+
lg: primitiveFontSize.lg
|
|
10674
|
+
},
|
|
10675
|
+
description: {
|
|
10676
|
+
sm: primitiveFontSize.xs,
|
|
10677
|
+
md: primitiveFontSize.sm,
|
|
10678
|
+
lg: primitiveFontSize.sm
|
|
10679
|
+
},
|
|
10680
|
+
titleWeight: primitiveFontWeight.semibold,
|
|
10681
|
+
titleLineHeight: primitiveSpacing[6],
|
|
10682
|
+
descriptionLineHeight: primitiveSpacing[6]
|
|
10683
|
+
}
|
|
10684
|
+
};
|
|
10685
|
+
var variantClassName = {
|
|
10686
|
+
"blank-slate": "border border-dashed border-border bg-background",
|
|
10687
|
+
informational: "border border-border bg-card",
|
|
10688
|
+
educational: "border border-border bg-card",
|
|
10689
|
+
guide: "border border-border bg-muted/30",
|
|
10690
|
+
"no-results": "border border-dashed border-border bg-background",
|
|
10691
|
+
cleared: "border border-dashed border-border bg-muted/20",
|
|
10692
|
+
permission: "border border-border bg-card",
|
|
10693
|
+
error: "border border-destructive/25 bg-destructive/5"
|
|
10694
|
+
};
|
|
10695
|
+
var iconToneClassName = {
|
|
10696
|
+
"blank-slate": "text-muted-foreground",
|
|
10697
|
+
informational: "text-primary",
|
|
10698
|
+
educational: "text-primary",
|
|
10699
|
+
guide: "text-primary",
|
|
10700
|
+
"no-results": "text-muted-foreground",
|
|
10701
|
+
cleared: "text-muted-foreground",
|
|
10702
|
+
permission: "text-muted-foreground",
|
|
10703
|
+
error: "text-destructive"
|
|
10704
|
+
};
|
|
10705
|
+
var emptyStateCssVars = (size) => ({
|
|
10706
|
+
"--empty-state-min-height": `${emptyStateTokens.root.minHeight[size]}px`,
|
|
10707
|
+
"--empty-state-padding-x": `${emptyStateTokens.root.paddingX[size]}px`,
|
|
10708
|
+
"--empty-state-padding-y": `${emptyStateTokens.root.paddingY[size]}px`,
|
|
10709
|
+
"--empty-state-radius": `${emptyStateTokens.root.radius}px`,
|
|
10710
|
+
"--empty-state-content-max-width": `${emptyStateTokens.content.maxWidth}px`,
|
|
10711
|
+
"--empty-state-description-max-width": `${emptyStateTokens.content.descriptionMaxWidth}px`,
|
|
10712
|
+
"--empty-state-stack-gap": `${emptyStateTokens.content.stackGap}px`,
|
|
10713
|
+
"--empty-state-copy-gap": `${emptyStateTokens.content.copyGap}px`,
|
|
10714
|
+
"--empty-state-actions-gap": `${emptyStateTokens.content.actionsGap}px`,
|
|
10715
|
+
"--empty-state-icon-size": `${emptyStateTokens.icon.size}px`,
|
|
10716
|
+
"--empty-state-icon-radius": `${emptyStateTokens.icon.radius}px`,
|
|
10717
|
+
"--empty-state-title-size": `${emptyStateTokens.typography.title[size]}px`,
|
|
10718
|
+
"--empty-state-description-size": `${emptyStateTokens.typography.description[size]}px`,
|
|
10719
|
+
"--empty-state-title-weight": `${emptyStateTokens.typography.titleWeight}`,
|
|
10720
|
+
"--empty-state-title-line-height": `${emptyStateTokens.typography.titleLineHeight}px`,
|
|
10721
|
+
"--empty-state-description-line-height": `${emptyStateTokens.typography.descriptionLineHeight}px`
|
|
10722
|
+
});
|
|
10723
|
+
var EmptyStateIcon = ({
|
|
10724
|
+
className,
|
|
10725
|
+
icon,
|
|
10726
|
+
ref,
|
|
10727
|
+
...props
|
|
10728
|
+
}) => /* @__PURE__ */ jsx(
|
|
10729
|
+
"div",
|
|
10730
|
+
{
|
|
10731
|
+
ref,
|
|
10732
|
+
"aria-hidden": "true",
|
|
10733
|
+
className: cn(
|
|
10734
|
+
"flex size-[var(--empty-state-icon-size)] shrink-0 items-center justify-center rounded-[var(--empty-state-icon-radius)] bg-muted",
|
|
10735
|
+
className
|
|
10736
|
+
),
|
|
10737
|
+
...props,
|
|
10738
|
+
children: icon
|
|
10739
|
+
}
|
|
10740
|
+
);
|
|
10741
|
+
EmptyStateIcon.displayName = "EmptyState.Icon";
|
|
10742
|
+
var EmptyStateRoot = ({
|
|
10743
|
+
className,
|
|
10744
|
+
title,
|
|
10745
|
+
description,
|
|
10746
|
+
icon,
|
|
10747
|
+
children,
|
|
10748
|
+
action,
|
|
10749
|
+
link,
|
|
10750
|
+
style,
|
|
10751
|
+
variant = "blank-slate",
|
|
10752
|
+
size = "md",
|
|
10753
|
+
align = "center",
|
|
10754
|
+
live = false,
|
|
10755
|
+
ref,
|
|
10756
|
+
...props
|
|
10757
|
+
}) => {
|
|
10758
|
+
const actions = children ?? [action, link].filter(Boolean);
|
|
10759
|
+
const hasActions = React45.Children.toArray(actions).length > 0;
|
|
10760
|
+
return /* @__PURE__ */ jsx(
|
|
10761
|
+
"section",
|
|
10762
|
+
{
|
|
10763
|
+
ref,
|
|
10764
|
+
"aria-live": live ? "polite" : void 0,
|
|
10765
|
+
className: cn(
|
|
10766
|
+
"flex min-h-[var(--empty-state-min-height)] w-full flex-col justify-center rounded-[var(--empty-state-radius)] px-[var(--empty-state-padding-x)] py-[var(--empty-state-padding-y)]",
|
|
10767
|
+
variantClassName[variant],
|
|
10768
|
+
align === "center" ? "items-center text-center" : "items-start text-left",
|
|
10769
|
+
className
|
|
10770
|
+
),
|
|
10771
|
+
style: { ...emptyStateCssVars(size), ...style },
|
|
10772
|
+
...props,
|
|
10773
|
+
children: /* @__PURE__ */ jsxs(
|
|
10774
|
+
"div",
|
|
10775
|
+
{
|
|
10776
|
+
className: cn(
|
|
10777
|
+
"flex max-w-[var(--empty-state-content-max-width)] flex-col gap-[var(--empty-state-stack-gap)]",
|
|
10778
|
+
align === "center" ? "items-center" : "items-start"
|
|
10779
|
+
),
|
|
10780
|
+
children: [
|
|
10781
|
+
icon ? /* @__PURE__ */ jsx("div", { className: cn("[&>div]:bg-muted", iconToneClassName[variant]), children: icon }) : null,
|
|
10782
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-[var(--empty-state-copy-gap)]", children: [
|
|
10783
|
+
/* @__PURE__ */ jsx("h3", { className: "font-[var(--empty-state-title-weight)] text-[length:var(--empty-state-title-size)] leading-[var(--empty-state-title-line-height)] text-foreground", children: title }),
|
|
10784
|
+
description ? /* @__PURE__ */ jsx("p", { className: "max-w-[var(--empty-state-description-max-width)] text-[length:var(--empty-state-description-size)] leading-[var(--empty-state-description-line-height)] text-muted-foreground", children: description }) : null
|
|
10785
|
+
] }),
|
|
10786
|
+
hasActions ? /* @__PURE__ */ jsx(
|
|
10787
|
+
"div",
|
|
10788
|
+
{
|
|
10789
|
+
className: cn(
|
|
10790
|
+
"flex flex-wrap gap-[var(--empty-state-actions-gap)]",
|
|
10791
|
+
align === "center" ? "justify-center" : "justify-start"
|
|
10792
|
+
),
|
|
10793
|
+
children: actions
|
|
10794
|
+
}
|
|
10795
|
+
) : null
|
|
10796
|
+
]
|
|
10797
|
+
}
|
|
10798
|
+
)
|
|
10799
|
+
}
|
|
10800
|
+
);
|
|
10801
|
+
};
|
|
10802
|
+
EmptyStateRoot.displayName = "EmptyState.Root";
|
|
10803
|
+
var EmptyState = {
|
|
10804
|
+
Root: EmptyStateRoot,
|
|
10805
|
+
Icon: EmptyStateIcon
|
|
10806
|
+
};
|
|
10807
|
+
function asCssLength(value) {
|
|
10808
|
+
if (value === void 0) return void 0;
|
|
10809
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
10810
|
+
}
|
|
10811
|
+
function shapeRadiusClass(props) {
|
|
10812
|
+
if (props.pill) return "rounded-full";
|
|
10813
|
+
if (props.squared) return "rounded-[var(--radius-sm)]";
|
|
10814
|
+
return "rounded-[var(--radius-md)]";
|
|
10815
|
+
}
|
|
10816
|
+
function Skeleton(props) {
|
|
10817
|
+
const {
|
|
10818
|
+
width,
|
|
10819
|
+
height,
|
|
10820
|
+
boxHeight,
|
|
10821
|
+
pill: _pill,
|
|
10822
|
+
rounded: _rounded,
|
|
10823
|
+
squared: _squared,
|
|
10824
|
+
animated: animatedProp,
|
|
10825
|
+
show: showProp,
|
|
10826
|
+
children,
|
|
10827
|
+
isLoaded,
|
|
10828
|
+
disableAnimation,
|
|
10829
|
+
className,
|
|
10830
|
+
style,
|
|
10831
|
+
...rest
|
|
10832
|
+
} = props;
|
|
10833
|
+
const show = showProp !== void 0 ? showProp : !isLoaded;
|
|
10834
|
+
const animated = animatedProp !== void 0 ? animatedProp : !disableAnimation;
|
|
10835
|
+
if (!show && children) {
|
|
10836
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
10837
|
+
}
|
|
10838
|
+
const sizeStyle = {
|
|
10839
|
+
width: asCssLength(width),
|
|
10840
|
+
height: asCssLength(height),
|
|
10841
|
+
minHeight: asCssLength(boxHeight)
|
|
10842
|
+
};
|
|
10843
|
+
return /* @__PURE__ */ jsx(
|
|
10844
|
+
"div",
|
|
10845
|
+
{
|
|
10846
|
+
"aria-busy": "true",
|
|
10847
|
+
"aria-hidden": "true",
|
|
10848
|
+
"data-loaded": !show,
|
|
10849
|
+
className: cn(
|
|
10850
|
+
"bg-muted",
|
|
10851
|
+
shapeRadiusClass(props),
|
|
10852
|
+
animated && "animate-pulse motion-reduce:animate-none",
|
|
10853
|
+
className
|
|
10854
|
+
),
|
|
10855
|
+
style: { ...sizeStyle, ...style },
|
|
10856
|
+
...rest,
|
|
10857
|
+
children: children && // biome-ignore lint/a11y/useSemanticElements: this <div> isn't a landmark; `inert` is the relevant a11y signal.
|
|
10858
|
+
/* @__PURE__ */ jsx("div", { className: "invisible", inert: true, "aria-hidden": "true", children })
|
|
10859
|
+
}
|
|
10860
|
+
);
|
|
10861
|
+
}
|
|
10862
|
+
function SkeletonText({
|
|
10863
|
+
lines = 3,
|
|
10864
|
+
className,
|
|
10865
|
+
...props
|
|
10866
|
+
}) {
|
|
10867
|
+
return /* @__PURE__ */ jsx("div", { className: cn("space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
10868
|
+
Skeleton,
|
|
10869
|
+
{
|
|
10870
|
+
height: 16,
|
|
10871
|
+
className: cn(i === lines - 1 ? "w-[60%]" : i === 0 ? "w-full" : "w-[80%]")
|
|
10872
|
+
},
|
|
10873
|
+
i
|
|
10874
|
+
)) });
|
|
10875
|
+
}
|
|
10876
|
+
function SkeletonAvatar({
|
|
10877
|
+
size = "md",
|
|
10878
|
+
className,
|
|
10879
|
+
...props
|
|
10880
|
+
}) {
|
|
10881
|
+
const px = size === "sm" ? 32 : size === "lg" ? 48 : 40;
|
|
10882
|
+
return /* @__PURE__ */ jsx(Skeleton, { pill: true, width: px, height: px, className, ...props });
|
|
10883
|
+
}
|
|
10884
|
+
function SkeletonCard({ className, ...props }) {
|
|
10885
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4 p-4", className), ...props, children: [
|
|
10886
|
+
/* @__PURE__ */ jsx(Skeleton, { height: 128, className: "w-full" }),
|
|
10887
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
10888
|
+
/* @__PURE__ */ jsx(Skeleton, { height: 16, className: "w-3/4" }),
|
|
10889
|
+
/* @__PURE__ */ jsx(Skeleton, { height: 16, className: "w-1/2" })
|
|
10890
|
+
] })
|
|
10891
|
+
] });
|
|
10892
|
+
}
|
|
10893
|
+
|
|
10894
|
+
// src/tokens/components/table.ts
|
|
10895
|
+
var tableTokens = {
|
|
10896
|
+
wrapper: {
|
|
10897
|
+
minWidth: 248,
|
|
10898
|
+
padding: primitiveSpacing[6],
|
|
10899
|
+
radius: primitiveRadius.lg
|
|
10900
|
+
},
|
|
10901
|
+
row: {
|
|
10902
|
+
radius: primitiveRadius.sm
|
|
10903
|
+
},
|
|
10904
|
+
cell: {
|
|
10905
|
+
paddingX: primitiveSpacing[2],
|
|
10906
|
+
paddingY: 10
|
|
10907
|
+
},
|
|
10908
|
+
header: {
|
|
10909
|
+
height: primitiveSpacing[10]
|
|
10910
|
+
},
|
|
10911
|
+
typography: {
|
|
10912
|
+
size: primitiveFontSize.sm,
|
|
10913
|
+
headingWeight: primitiveFontWeight.medium,
|
|
10914
|
+
bodyWeight: primitiveFontWeight.normal
|
|
10915
|
+
},
|
|
10916
|
+
spacer: {
|
|
10917
|
+
bodyTop: primitiveSpacing[3]
|
|
10918
|
+
},
|
|
10919
|
+
motion: {
|
|
10920
|
+
duration: primitiveTransition.duration.micro,
|
|
10921
|
+
easing: primitiveTransition.easing.default
|
|
10922
|
+
}
|
|
10923
|
+
};
|
|
10924
|
+
var ALIGNMENT_CLASS = {
|
|
10925
|
+
start: "text-left",
|
|
10926
|
+
center: "text-center",
|
|
10927
|
+
end: "text-right"
|
|
10928
|
+
};
|
|
10929
|
+
function createTableVars(style, bare) {
|
|
10930
|
+
return {
|
|
10931
|
+
"--table-min-width": `${tableTokens.wrapper.minWidth}px`,
|
|
10932
|
+
"--table-padding": `${tableTokens.wrapper.padding}px`,
|
|
10933
|
+
"--table-radius": `${tableTokens.wrapper.radius}px`,
|
|
10934
|
+
"--table-row-radius": `${tableTokens.row.radius}px`,
|
|
10935
|
+
"--table-cell-padding-x": `${tableTokens.cell.paddingX}px`,
|
|
10936
|
+
"--table-cell-padding-y": `${tableTokens.cell.paddingY}px`,
|
|
10937
|
+
"--table-header-height": `${tableTokens.header.height}px`,
|
|
10938
|
+
"--table-font-size": `${tableTokens.typography.size}px`,
|
|
10939
|
+
"--table-heading-weight": tableTokens.typography.headingWeight,
|
|
10940
|
+
"--table-body-weight": tableTokens.typography.bodyWeight,
|
|
10941
|
+
"--table-body-spacer": bare ? "0px" : `${tableTokens.spacer.bodyTop}px`,
|
|
10942
|
+
"--table-motion-duration": `${tableTokens.motion.duration}ms`,
|
|
10943
|
+
"--table-motion-easing": tableTokens.motion.easing,
|
|
10944
|
+
...style
|
|
10945
|
+
};
|
|
10946
|
+
}
|
|
10947
|
+
var TableRoot = ({
|
|
10948
|
+
className,
|
|
10949
|
+
wrapperClassName,
|
|
10950
|
+
wrapperStyle,
|
|
10951
|
+
style,
|
|
10952
|
+
bare = false,
|
|
10953
|
+
ref,
|
|
10954
|
+
...props
|
|
10955
|
+
}) => /* @__PURE__ */ jsx(
|
|
10956
|
+
"div",
|
|
10957
|
+
{
|
|
10958
|
+
className: cn(
|
|
10959
|
+
"relative w-full overflow-auto",
|
|
10960
|
+
!bare && "min-w-[var(--table-min-width)] rounded-[var(--table-radius)] border border-border bg-card p-[var(--table-padding)]",
|
|
10961
|
+
wrapperClassName
|
|
10962
|
+
),
|
|
10963
|
+
style: createTableVars(wrapperStyle, bare),
|
|
10964
|
+
children: /* @__PURE__ */ jsx(
|
|
10965
|
+
"table",
|
|
10966
|
+
{
|
|
10967
|
+
ref,
|
|
10968
|
+
className: cn(
|
|
10969
|
+
"w-full border-collapse caption-bottom text-[length:var(--table-font-size)] font-[var(--table-body-weight)] text-foreground",
|
|
10970
|
+
className
|
|
10971
|
+
),
|
|
10972
|
+
style,
|
|
10973
|
+
...props
|
|
10974
|
+
}
|
|
10975
|
+
)
|
|
10976
|
+
}
|
|
10977
|
+
);
|
|
10978
|
+
TableRoot.displayName = "Table";
|
|
10979
|
+
var TableColgroup = ({
|
|
10980
|
+
className,
|
|
10981
|
+
ref,
|
|
10982
|
+
...props
|
|
10983
|
+
}) => /* @__PURE__ */ jsx("colgroup", { ref, className, ...props });
|
|
10984
|
+
TableColgroup.displayName = "TableColgroup";
|
|
10985
|
+
var TableCol = ({
|
|
10986
|
+
className,
|
|
10987
|
+
ref,
|
|
10988
|
+
...props
|
|
10989
|
+
}) => /* @__PURE__ */ jsx("col", { ref, className, ...props });
|
|
10990
|
+
TableCol.displayName = "TableCol";
|
|
10991
|
+
var TableHeader = ({
|
|
10992
|
+
className,
|
|
10993
|
+
ref,
|
|
10994
|
+
...props
|
|
10995
|
+
}) => /* @__PURE__ */ jsx("thead", { ref, className: cn("border-b border-border", className), ...props });
|
|
10996
|
+
TableHeader.displayName = "TableHeader";
|
|
10997
|
+
var TableBody = ({
|
|
10998
|
+
className,
|
|
10999
|
+
striped = false,
|
|
11000
|
+
bordered = false,
|
|
11001
|
+
interactive = false,
|
|
11002
|
+
virtualize = false,
|
|
11003
|
+
ref,
|
|
11004
|
+
...props
|
|
11005
|
+
}) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11006
|
+
/* @__PURE__ */ jsx("tbody", { "aria-hidden": "true", className: "table-row h-[var(--table-body-spacer)]" }),
|
|
11007
|
+
/* @__PURE__ */ jsx(
|
|
11008
|
+
"tbody",
|
|
11009
|
+
{
|
|
11010
|
+
ref,
|
|
11011
|
+
"data-virtualized": virtualize ? "" : void 0,
|
|
11012
|
+
className: cn(
|
|
11013
|
+
"[&_tr:last-child]:border-b-0",
|
|
11014
|
+
striped && "[&_tr:where(:nth-child(odd))]:bg-muted/45",
|
|
11015
|
+
bordered && "[&_tr]:border-b [&_tr]:border-border",
|
|
11016
|
+
interactive && "[&_tr]:cursor-default [&_tr:hover]:bg-muted/70 [&_tr:focus-within]:bg-muted/70",
|
|
11017
|
+
className
|
|
11018
|
+
),
|
|
11019
|
+
...props
|
|
11020
|
+
}
|
|
11021
|
+
)
|
|
11022
|
+
] });
|
|
11023
|
+
TableBody.displayName = "TableBody";
|
|
11024
|
+
var TableFooter = ({
|
|
11025
|
+
className,
|
|
11026
|
+
ref,
|
|
11027
|
+
...props
|
|
11028
|
+
}) => /* @__PURE__ */ jsx("tfoot", { ref, className: cn("border-t border-border", className), ...props });
|
|
11029
|
+
TableFooter.displayName = "TableFooter";
|
|
11030
|
+
var TableRow = ({
|
|
11031
|
+
className,
|
|
11032
|
+
ref,
|
|
11033
|
+
...props
|
|
11034
|
+
}) => /* @__PURE__ */ jsx(
|
|
11035
|
+
"tr",
|
|
11036
|
+
{
|
|
11037
|
+
ref,
|
|
11038
|
+
className: cn(
|
|
11039
|
+
"[&_td:first-child]:rounded-l-[var(--table-row-radius)] [&_td:last-child]:rounded-r-[var(--table-row-radius)] transition-colors duration-[var(--table-motion-duration)] ease-[var(--table-motion-easing)] motion-reduce:transition-none",
|
|
11040
|
+
className
|
|
11041
|
+
),
|
|
11042
|
+
...props
|
|
11043
|
+
}
|
|
11044
|
+
);
|
|
11045
|
+
TableRow.displayName = "TableRow";
|
|
11046
|
+
var TableHead = ({
|
|
11047
|
+
className,
|
|
11048
|
+
numeric = false,
|
|
11049
|
+
alignment,
|
|
11050
|
+
scope = "col",
|
|
11051
|
+
ref,
|
|
11052
|
+
...props
|
|
11053
|
+
}) => /* @__PURE__ */ jsx(
|
|
11054
|
+
"th",
|
|
11055
|
+
{
|
|
11056
|
+
ref,
|
|
11057
|
+
scope,
|
|
11058
|
+
className: cn(
|
|
11059
|
+
"h-[var(--table-header-height)] px-[var(--table-cell-padding-x)] text-left align-middle font-[var(--table-heading-weight)] text-muted-foreground",
|
|
11060
|
+
"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-px",
|
|
11061
|
+
!alignment && "last:text-right",
|
|
11062
|
+
numeric && "text-right font-mono tabular-nums",
|
|
11063
|
+
alignment && ALIGNMENT_CLASS[alignment],
|
|
11064
|
+
className
|
|
11065
|
+
),
|
|
11066
|
+
...props
|
|
11067
|
+
}
|
|
11068
|
+
);
|
|
11069
|
+
TableHead.displayName = "TableHead";
|
|
11070
|
+
var TableCell = ({
|
|
11071
|
+
className,
|
|
11072
|
+
numeric = false,
|
|
11073
|
+
alignment,
|
|
11074
|
+
ref,
|
|
11075
|
+
...props
|
|
11076
|
+
}) => /* @__PURE__ */ jsx(
|
|
11077
|
+
"td",
|
|
11078
|
+
{
|
|
11079
|
+
ref,
|
|
11080
|
+
className: cn(
|
|
11081
|
+
"px-[var(--table-cell-padding-x)] py-[var(--table-cell-padding-y)] align-middle",
|
|
11082
|
+
"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-px",
|
|
11083
|
+
!alignment && "last:text-right",
|
|
11084
|
+
numeric && "text-right font-mono tabular-nums",
|
|
11085
|
+
alignment && ALIGNMENT_CLASS[alignment],
|
|
11086
|
+
className
|
|
11087
|
+
),
|
|
11088
|
+
...props
|
|
11089
|
+
}
|
|
11090
|
+
);
|
|
11091
|
+
TableCell.displayName = "TableCell";
|
|
11092
|
+
var TableCaption = ({
|
|
11093
|
+
className,
|
|
11094
|
+
ref,
|
|
11095
|
+
...props
|
|
11096
|
+
}) => /* @__PURE__ */ jsx("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props });
|
|
11097
|
+
TableCaption.displayName = "TableCaption";
|
|
11098
|
+
var Table = TableRoot;
|
|
11099
|
+
Table.Body = TableBody;
|
|
11100
|
+
Table.Caption = TableCaption;
|
|
11101
|
+
Table.Cell = TableCell;
|
|
11102
|
+
Table.Col = TableCol;
|
|
11103
|
+
Table.Colgroup = TableColgroup;
|
|
11104
|
+
Table.Footer = TableFooter;
|
|
11105
|
+
Table.Head = TableHead;
|
|
11106
|
+
Table.Header = TableHeader;
|
|
11107
|
+
Table.Row = TableRow;
|
|
11108
|
+
var DEFAULT_MIN_BODY_ROWS = 5;
|
|
11109
|
+
var DEFAULT_ROW_HEIGHT = 44;
|
|
11110
|
+
var alignClassName = {
|
|
11111
|
+
start: "justify-start text-left",
|
|
11112
|
+
center: "justify-center text-center",
|
|
11113
|
+
end: "justify-end text-right"
|
|
11114
|
+
};
|
|
11115
|
+
function AlignedCellContent({
|
|
11116
|
+
align,
|
|
11117
|
+
className,
|
|
11118
|
+
children
|
|
11119
|
+
}) {
|
|
11120
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex min-w-0 items-center gap-2", alignClassName[align], className), children });
|
|
11121
|
+
}
|
|
11122
|
+
function hasError(error) {
|
|
11123
|
+
return error !== void 0 && error !== null && error !== false && error !== "";
|
|
11124
|
+
}
|
|
11125
|
+
function resolveStatus(status, error, rows) {
|
|
11126
|
+
if (status === "error" || hasError(error)) return "error";
|
|
11127
|
+
if (status === "loading") return "loading";
|
|
11128
|
+
if (status === "empty" || rows.length === 0) return "empty";
|
|
11129
|
+
return "idle";
|
|
11130
|
+
}
|
|
11131
|
+
function DataList({
|
|
11132
|
+
columns,
|
|
11133
|
+
rows,
|
|
11134
|
+
getRowKey,
|
|
11135
|
+
status,
|
|
11136
|
+
isRefreshing = false,
|
|
11137
|
+
error,
|
|
11138
|
+
errorTitle = "Something went wrong",
|
|
11139
|
+
onRetry,
|
|
11140
|
+
retryLabel = "Try again",
|
|
11141
|
+
emptyTitle = "Nothing here",
|
|
11142
|
+
emptyDescription,
|
|
11143
|
+
emptyIcon,
|
|
11144
|
+
emptyAction,
|
|
11145
|
+
minBodyRows = DEFAULT_MIN_BODY_ROWS,
|
|
11146
|
+
rowHeight = DEFAULT_ROW_HEIGHT,
|
|
11147
|
+
pagination,
|
|
11148
|
+
striped = false,
|
|
11149
|
+
interactive = false,
|
|
11150
|
+
onRowClick,
|
|
11151
|
+
label,
|
|
11152
|
+
className,
|
|
11153
|
+
scrollClassName,
|
|
11154
|
+
style,
|
|
11155
|
+
"data-testid": dataTestId
|
|
11156
|
+
}) {
|
|
11157
|
+
const resolved = resolveStatus(status, error, rows);
|
|
11158
|
+
const columnCount = Math.max(columns.length, 1);
|
|
11159
|
+
const reservedFloor = Math.max(minBodyRows, 0) * rowHeight;
|
|
11160
|
+
const skeletonRowCount = Math.max(minBodyRows, 1);
|
|
11161
|
+
const rowsAreInteractive = interactive || onRowClick !== void 0;
|
|
11162
|
+
const busy = resolved === "loading" || isRefreshing;
|
|
11163
|
+
const handleRowKeyDown = (event, row, index) => {
|
|
11164
|
+
if (onRowClick === void 0) return;
|
|
11165
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
11166
|
+
event.preventDefault();
|
|
11167
|
+
onRowClick(row, index);
|
|
11168
|
+
};
|
|
11169
|
+
const header = /* @__PURE__ */ jsx(
|
|
11170
|
+
TableHeader,
|
|
11171
|
+
{
|
|
11172
|
+
className: "border-b-0",
|
|
11173
|
+
children: /* @__PURE__ */ jsx(TableRow, { children: columns.map((column) => /* @__PURE__ */ jsx(
|
|
11174
|
+
TableHead,
|
|
11175
|
+
{
|
|
11176
|
+
numeric: column.numeric ?? false,
|
|
11177
|
+
style: column.width === void 0 ? void 0 : { width: column.width },
|
|
11178
|
+
className: cn(
|
|
11179
|
+
// Cell x-padding is 8px in the primitive, which is tight once the
|
|
11180
|
+
// card padding is zeroed. 12px restores the rhythm.
|
|
11181
|
+
"bg-muted/45 px-3 text-xs uppercase tracking-[0.04em] text-muted-foreground",
|
|
11182
|
+
"first:rounded-l-[var(--table-row-radius)] last:rounded-r-[var(--table-row-radius)]",
|
|
11183
|
+
column.headClassName
|
|
11184
|
+
),
|
|
11185
|
+
children: /* @__PURE__ */ jsx(AlignedCellContent, { align: column.align ?? "start", children: column.header })
|
|
11186
|
+
},
|
|
11187
|
+
column.id
|
|
11188
|
+
)) })
|
|
11189
|
+
}
|
|
11190
|
+
);
|
|
11191
|
+
let body;
|
|
11192
|
+
if (resolved === "error") {
|
|
11193
|
+
body = /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(TableCell, { colSpan: columnCount, className: "px-3", style: { height: reservedFloor }, children: /* @__PURE__ */ jsx(
|
|
11194
|
+
EmptyStateRoot,
|
|
11195
|
+
{
|
|
11196
|
+
live: true,
|
|
11197
|
+
variant: "error",
|
|
11198
|
+
size: "sm",
|
|
11199
|
+
className: "min-h-0 border-0 bg-destructive/5 px-4 py-4",
|
|
11200
|
+
title: errorTitle,
|
|
11201
|
+
description: error,
|
|
11202
|
+
...onRetry === void 0 ? {} : {
|
|
11203
|
+
action: /* @__PURE__ */ jsx(Button, { type: "button", variant: "secondary", size: "sm", onClick: onRetry, children: retryLabel })
|
|
11204
|
+
}
|
|
11205
|
+
}
|
|
11206
|
+
) }) });
|
|
11207
|
+
} else if (resolved === "loading") {
|
|
11208
|
+
body = Array.from({ length: skeletonRowCount }).map((_, rowIndex) => /* @__PURE__ */ jsx(TableRow, { "aria-hidden": "true", children: columns.map((column) => /* @__PURE__ */ jsx(TableCell, { className: "px-3", style: { height: rowHeight }, children: /* @__PURE__ */ jsx(AlignedCellContent, { align: column.align ?? "start", children: /* @__PURE__ */ jsx(Skeleton, { height: 12, style: { width: column.loadingWidth ?? "60%", minWidth: 40 } }) }) }, column.id)) }, `data-list-skeleton-${rowIndex}`));
|
|
11209
|
+
} else if (resolved === "empty") {
|
|
11210
|
+
body = /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(TableCell, { colSpan: columnCount, className: "px-3", style: { height: reservedFloor }, children: /* @__PURE__ */ jsx(
|
|
11211
|
+
EmptyStateRoot,
|
|
11212
|
+
{
|
|
11213
|
+
live: true,
|
|
11214
|
+
variant: "no-results",
|
|
11215
|
+
size: "sm",
|
|
11216
|
+
className: "min-h-0 border-0 bg-transparent px-4 py-4",
|
|
11217
|
+
title: emptyTitle,
|
|
11218
|
+
...emptyDescription === void 0 ? {} : { description: emptyDescription },
|
|
11219
|
+
...emptyIcon === void 0 ? {} : { icon: emptyIcon },
|
|
11220
|
+
...emptyAction === void 0 ? {} : { action: emptyAction }
|
|
11221
|
+
}
|
|
11222
|
+
) }) });
|
|
11223
|
+
} else {
|
|
11224
|
+
body = rows.map((row, rowIndex) => /* @__PURE__ */ jsx(
|
|
11225
|
+
TableRow,
|
|
11226
|
+
{
|
|
11227
|
+
...onRowClick === void 0 ? {} : {
|
|
11228
|
+
tabIndex: 0,
|
|
11229
|
+
onClick: () => onRowClick(row, rowIndex),
|
|
11230
|
+
onKeyDown: (event) => handleRowKeyDown(event, row, rowIndex)
|
|
11231
|
+
},
|
|
11232
|
+
className: cn(onRowClick !== void 0 && "cursor-pointer"),
|
|
11233
|
+
children: columns.map((column) => /* @__PURE__ */ jsx(
|
|
11234
|
+
TableCell,
|
|
11235
|
+
{
|
|
11236
|
+
numeric: column.numeric ?? false,
|
|
11237
|
+
className: cn("px-3", column.cellClassName),
|
|
11238
|
+
style: { height: rowHeight },
|
|
11239
|
+
children: /* @__PURE__ */ jsx(AlignedCellContent, { align: column.align ?? "start", children: column.cell(row, rowIndex) })
|
|
11240
|
+
},
|
|
11241
|
+
column.id
|
|
11242
|
+
))
|
|
11243
|
+
},
|
|
11244
|
+
getRowKey(row, rowIndex)
|
|
11245
|
+
));
|
|
11246
|
+
}
|
|
11247
|
+
return /* @__PURE__ */ jsxs(
|
|
11248
|
+
"div",
|
|
11249
|
+
{
|
|
11250
|
+
className: cn("relative w-full min-w-0", className),
|
|
11251
|
+
style,
|
|
11252
|
+
"data-status": resolved,
|
|
11253
|
+
"data-refreshing": isRefreshing ? "" : void 0,
|
|
11254
|
+
"data-testid": dataTestId,
|
|
11255
|
+
"aria-busy": busy || void 0,
|
|
11256
|
+
children: [
|
|
11257
|
+
isRefreshing ? /* @__PURE__ */ jsx(
|
|
11258
|
+
"div",
|
|
11259
|
+
{
|
|
11260
|
+
"aria-hidden": "true",
|
|
11261
|
+
className: "pointer-events-none absolute inset-x-0 top-0 z-10 h-0.5 overflow-hidden rounded-full",
|
|
11262
|
+
children: /* @__PURE__ */ jsx("div", { className: "h-full w-full animate-pulse bg-primary/70 motion-reduce:animate-none" })
|
|
11263
|
+
}
|
|
11264
|
+
) : null,
|
|
11265
|
+
/* @__PURE__ */ jsxs(
|
|
11266
|
+
Table,
|
|
11267
|
+
{
|
|
11268
|
+
"aria-label": label,
|
|
11269
|
+
wrapperClassName: cn(
|
|
11270
|
+
"min-w-0 rounded-none border-0 bg-transparent p-0",
|
|
11271
|
+
resolved === "idle" && isRefreshing && "opacity-70 transition-opacity motion-reduce:transition-none",
|
|
11272
|
+
scrollClassName
|
|
11273
|
+
),
|
|
11274
|
+
children: [
|
|
11275
|
+
header,
|
|
11276
|
+
/* @__PURE__ */ jsx(TableBody, { striped, interactive: rowsAreInteractive, children: body })
|
|
11277
|
+
]
|
|
11278
|
+
}
|
|
11279
|
+
),
|
|
11280
|
+
pagination === void 0 ? null : /* @__PURE__ */ jsx("div", { className: "mt-3 rounded-[var(--radius-md)] bg-muted/35 px-3 py-2", children: pagination })
|
|
11281
|
+
]
|
|
11282
|
+
}
|
|
11283
|
+
);
|
|
11284
|
+
}
|
|
11285
|
+
DataList.displayName = "DataList";
|
|
11286
|
+
var Description = function Description2({
|
|
11287
|
+
ref,
|
|
11288
|
+
title,
|
|
11289
|
+
content,
|
|
11290
|
+
tooltip,
|
|
11291
|
+
className
|
|
11292
|
+
}) {
|
|
11293
|
+
return /* @__PURE__ */ jsxs("dl", { ref, className: cn("font-sans", className), children: [
|
|
11294
|
+
/* @__PURE__ */ jsxs("dt", { className: "flex items-center gap-1 text-muted-foreground text-sm capitalize", children: [
|
|
11295
|
+
title,
|
|
11296
|
+
tooltip && /* @__PURE__ */ jsx(ContextCard.Trigger, { content: tooltip, side: "top", sideOffset: 6, children: /* @__PURE__ */ jsx(Information, { "aria-hidden": "true", className: "size-3.5 shrink-0 text-muted-foreground" }) })
|
|
11297
|
+
] }),
|
|
11298
|
+
/* @__PURE__ */ jsx("dd", { className: "mt-1 font-medium text-foreground text-sm", children: content })
|
|
11299
|
+
] });
|
|
11300
|
+
};
|
|
11301
|
+
function DisplayCard({
|
|
11302
|
+
className,
|
|
11303
|
+
icon = /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-blue-300" }),
|
|
11304
|
+
title = "Featured",
|
|
11305
|
+
description = "Discover amazing content",
|
|
11306
|
+
date = "Just now",
|
|
11307
|
+
titleClassName = "text-blue-500"
|
|
11308
|
+
}) {
|
|
11309
|
+
return /* @__PURE__ */ jsxs(
|
|
11310
|
+
"div",
|
|
11311
|
+
{
|
|
11312
|
+
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",
|
|
11314
|
+
"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-['']",
|
|
10375
11315
|
"hover:border-white/20 hover:bg-muted",
|
|
10376
11316
|
"[&>*]:flex [&>*]:items-center [&>*]:gap-2",
|
|
10377
11317
|
className
|
|
@@ -11425,7 +12365,7 @@ function CircleProgress({ percentage, reduceMotion }) {
|
|
|
11425
12365
|
cy: size / 2,
|
|
11426
12366
|
r: radius,
|
|
11427
12367
|
fill: "none",
|
|
11428
|
-
stroke: "var(--muted)",
|
|
12368
|
+
stroke: "hsl(var(--muted))",
|
|
11429
12369
|
strokeWidth
|
|
11430
12370
|
}
|
|
11431
12371
|
),
|
|
@@ -11436,7 +12376,7 @@ function CircleProgress({ percentage, reduceMotion }) {
|
|
|
11436
12376
|
cy: size / 2,
|
|
11437
12377
|
r: radius,
|
|
11438
12378
|
fill: "none",
|
|
11439
|
-
stroke: "var(--foreground)",
|
|
12379
|
+
stroke: "hsl(var(--foreground))",
|
|
11440
12380
|
strokeWidth,
|
|
11441
12381
|
strokeDasharray: circumference,
|
|
11442
12382
|
initial: false,
|
|
@@ -11519,7 +12459,7 @@ function TocClosedPill({
|
|
|
11519
12459
|
},
|
|
11520
12460
|
transition: reduceMotion ? { duration: 0 } : { ...islandTween, delay: isExpanded ? 0 : motionDurationSec.micro },
|
|
11521
12461
|
className: cn(
|
|
11522
|
-
"absolute inset-0 flex w-full items-center gap-4 border-0 bg-transparent px-4 text-left text-foreground outline-none
|
|
12462
|
+
"absolute inset-0 flex w-full items-center gap-4 border-0 bg-transparent px-4 text-left text-foreground outline-none sm:px-5",
|
|
11523
12463
|
isExpanded && "pointer-events-none"
|
|
11524
12464
|
),
|
|
11525
12465
|
children: [
|
|
@@ -11636,7 +12576,7 @@ function TocMenuItem({
|
|
|
11636
12576
|
style: { paddingLeft: `${paddingLeft}px` },
|
|
11637
12577
|
className: cn(
|
|
11638
12578
|
"group flex w-full shrink-0 cursor-pointer items-center rounded-[var(--radius-lg)] border-none py-2 pr-3 text-left text-sm transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal ease-out",
|
|
11639
|
-
"focus-visible:outline-none
|
|
12579
|
+
"focus-visible:outline-none",
|
|
11640
12580
|
isActive && "bg-foreground/10 font-medium text-foreground",
|
|
11641
12581
|
!isActive && isHovered && "bg-foreground/5 text-foreground/85",
|
|
11642
12582
|
!isActive && !isHovered && "bg-transparent text-foreground/45"
|
|
@@ -12075,293 +13015,123 @@ function ApprovalFooter({ isPending, approval }) {
|
|
|
12075
13015
|
"button",
|
|
12076
13016
|
{
|
|
12077
13017
|
type: "button",
|
|
12078
|
-
onClick: handleReject,
|
|
12079
|
-
className: "h-7 rounded-[var(--radius-sm)] border border-border bg-transparent px-2 text-xs font-medium text-foreground transition-colors duration-micro hover:bg-accent",
|
|
12080
|
-
children: rejectLabel
|
|
12081
|
-
}
|
|
12082
|
-
),
|
|
12083
|
-
/* @__PURE__ */ jsx(
|
|
12084
|
-
"button",
|
|
12085
|
-
{
|
|
12086
|
-
type: "button",
|
|
12087
|
-
onClick: handleApprove,
|
|
12088
|
-
className: "h-7 rounded-[var(--radius-sm)] bg-primary px-2 text-xs font-medium text-primary-foreground transition-colors duration-micro hover:bg-primary/90",
|
|
12089
|
-
children: approveLabel
|
|
12090
|
-
}
|
|
12091
|
-
)
|
|
12092
|
-
] })
|
|
12093
|
-
] });
|
|
12094
|
-
}
|
|
12095
|
-
function EditTool({
|
|
12096
|
-
state = "completed",
|
|
12097
|
-
variant = "edit",
|
|
12098
|
-
filePath,
|
|
12099
|
-
oldContent,
|
|
12100
|
-
newContent,
|
|
12101
|
-
approval,
|
|
12102
|
-
maxDiffLines = 2e3,
|
|
12103
|
-
className
|
|
12104
|
-
}) {
|
|
12105
|
-
const isPending = state === "pending";
|
|
12106
|
-
const isWaiting = state === "waiting";
|
|
12107
|
-
const isWrite = variant === "write";
|
|
12108
|
-
const fileName = filePath?.split("/").pop();
|
|
12109
|
-
const diffOps = getDiffOps({ isWaiting, isWrite, oldContent, newContent, maxDiffLines });
|
|
12110
|
-
const exceededCap = !isWaiting && diffOps === null && (oldContent !== void 0 || newContent !== void 0);
|
|
12111
|
-
const stats = diffOps ? countDiffStats(diffOps) : null;
|
|
12112
|
-
const diffLineCounts = /* @__PURE__ */ new Map();
|
|
12113
|
-
useEffect(() => {
|
|
12114
|
-
if (!isPending || !approval) return;
|
|
12115
|
-
const onKey = (e) => {
|
|
12116
|
-
if (e.key === "Escape") approval.onReject?.();
|
|
12117
|
-
};
|
|
12118
|
-
window.addEventListener("keydown", onKey);
|
|
12119
|
-
return () => window.removeEventListener("keydown", onKey);
|
|
12120
|
-
}, [isPending, approval]);
|
|
12121
|
-
const headerLabel = isWaiting ? "Generating..." : isPending ? `${isWrite ? "Creating" : "Editing"}${fileName ? ` ${fileName}` : ""}` : `${isWrite ? "Created" : "Edited"}${fileName ? ` ${fileName}` : ""}`;
|
|
12122
|
-
const hasBody = diffOps && diffOps.length > 0 || exceededCap;
|
|
12123
|
-
return /* @__PURE__ */ jsxs(
|
|
12124
|
-
"section",
|
|
12125
|
-
{
|
|
12126
|
-
"aria-label": fileName ? `${headerLabel} (${fileName})` : headerLabel,
|
|
12127
|
-
className: cn(
|
|
12128
|
-
"w-full overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card",
|
|
12129
|
-
className
|
|
12130
|
-
),
|
|
12131
|
-
children: [
|
|
12132
|
-
/* @__PURE__ */ jsxs(
|
|
12133
|
-
"header",
|
|
12134
|
-
{
|
|
12135
|
-
className: cn(
|
|
12136
|
-
"flex h-7 items-center justify-between bg-muted px-2.5",
|
|
12137
|
-
hasBody || approval ? "border-b border-border" : ""
|
|
12138
|
-
),
|
|
12139
|
-
children: [
|
|
12140
|
-
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-1.5", children: isPending || isWaiting ? /* @__PURE__ */ jsx(TextShimmer, { as: "span", className: "text-xs", children: headerLabel }) : /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: headerLabel }) }),
|
|
12141
|
-
stats && !isPending && !isWaiting && (stats.added > 0 || stats.removed > 0) && /* @__PURE__ */ jsxs("span", { className: "inline-flex shrink-0 gap-2 font-mono text-[11px] text-muted-foreground", children: [
|
|
12142
|
-
stats.added > 0 && /* @__PURE__ */ jsxs("span", { className: "text-success", children: [
|
|
12143
|
-
"+",
|
|
12144
|
-
stats.added
|
|
12145
|
-
] }),
|
|
12146
|
-
stats.removed > 0 && /* @__PURE__ */ jsxs("span", { className: "text-destructive", children: [
|
|
12147
|
-
"-",
|
|
12148
|
-
stats.removed
|
|
12149
|
-
] })
|
|
12150
|
-
] })
|
|
12151
|
-
]
|
|
12152
|
-
}
|
|
12153
|
-
),
|
|
12154
|
-
exceededCap && /* @__PURE__ */ jsxs("div", { className: "bg-background p-3 text-xs text-muted-foreground", children: [
|
|
12155
|
-
"Diff exceeds ",
|
|
12156
|
-
maxDiffLines.toLocaleString(),
|
|
12157
|
-
" lines: open the file to view changes."
|
|
12158
|
-
] }),
|
|
12159
|
-
diffOps && diffOps.length > 0 && /* @__PURE__ */ jsx("div", { className: "overflow-x-auto bg-background font-mono text-[12px] leading-[1.5]", children: diffOps.map((op) => {
|
|
12160
|
-
const stableKey = getDiffLineKey(op, diffLineCounts);
|
|
12161
|
-
return /* @__PURE__ */ jsxs(
|
|
12162
|
-
"div",
|
|
12163
|
-
{
|
|
12164
|
-
className: cn(
|
|
12165
|
-
"flex min-w-0 items-start",
|
|
12166
|
-
op.type === "add" && "bg-[hsl(var(--success)/0.1)] text-success",
|
|
12167
|
-
op.type === "remove" && "bg-[hsl(var(--destructive)/0.1)] text-destructive",
|
|
12168
|
-
op.type === "context" && "text-foreground/80"
|
|
12169
|
-
),
|
|
12170
|
-
children: [
|
|
12171
|
-
/* @__PURE__ */ jsx(
|
|
12172
|
-
"span",
|
|
12173
|
-
{
|
|
12174
|
-
"aria-hidden": "true",
|
|
12175
|
-
className: cn(
|
|
12176
|
-
"w-4 shrink-0 select-none text-center",
|
|
12177
|
-
op.type === "add" && "text-success",
|
|
12178
|
-
op.type === "remove" && "text-destructive",
|
|
12179
|
-
op.type === "context" && "text-muted-foreground/60"
|
|
12180
|
-
),
|
|
12181
|
-
children: op.type === "add" ? "+" : op.type === "remove" ? "-" : " "
|
|
12182
|
-
}
|
|
12183
|
-
),
|
|
12184
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 whitespace-pre pr-2", children: op.text || " " })
|
|
12185
|
-
]
|
|
12186
|
-
},
|
|
12187
|
-
stableKey
|
|
12188
|
-
);
|
|
12189
|
-
}) }),
|
|
12190
|
-
approval && /* @__PURE__ */ jsx(ApprovalFooter, { isPending, approval })
|
|
12191
|
-
]
|
|
12192
|
-
}
|
|
12193
|
-
);
|
|
12194
|
-
}
|
|
12195
|
-
|
|
12196
|
-
// src/tokens/components/empty-state.ts
|
|
12197
|
-
var emptyStateTokens = {
|
|
12198
|
-
root: {
|
|
12199
|
-
minHeight: {
|
|
12200
|
-
sm: primitiveSpacing[16] * 2,
|
|
12201
|
-
md: primitiveSpacing[24] * 2,
|
|
12202
|
-
lg: primitiveSpacing[16] * 4
|
|
12203
|
-
},
|
|
12204
|
-
paddingX: {
|
|
12205
|
-
sm: primitiveSpacing[4],
|
|
12206
|
-
md: primitiveSpacing[6],
|
|
12207
|
-
lg: primitiveSpacing[8]
|
|
12208
|
-
},
|
|
12209
|
-
paddingY: {
|
|
12210
|
-
sm: primitiveSpacing[8],
|
|
12211
|
-
md: primitiveSpacing[10],
|
|
12212
|
-
lg: primitiveSpacing[14]
|
|
12213
|
-
},
|
|
12214
|
-
radius: primitiveRadius.lg
|
|
12215
|
-
},
|
|
12216
|
-
content: {
|
|
12217
|
-
maxWidth: primitiveSpacing[14] * 8,
|
|
12218
|
-
descriptionMaxWidth: primitiveSpacing[12] * 8,
|
|
12219
|
-
stackGap: primitiveSpacing[4],
|
|
12220
|
-
copyGap: primitiveSpacing[2],
|
|
12221
|
-
actionsGap: primitiveSpacing[2]
|
|
12222
|
-
},
|
|
12223
|
-
icon: {
|
|
12224
|
-
size: primitiveSizing.lg,
|
|
12225
|
-
radius: primitiveRadius.lg
|
|
12226
|
-
},
|
|
12227
|
-
typography: {
|
|
12228
|
-
title: {
|
|
12229
|
-
sm: primitiveFontSize.sm,
|
|
12230
|
-
md: primitiveFontSize.base,
|
|
12231
|
-
lg: primitiveFontSize.lg
|
|
12232
|
-
},
|
|
12233
|
-
description: {
|
|
12234
|
-
sm: primitiveFontSize.xs,
|
|
12235
|
-
md: primitiveFontSize.sm,
|
|
12236
|
-
lg: primitiveFontSize.sm
|
|
12237
|
-
},
|
|
12238
|
-
titleWeight: primitiveFontWeight.semibold,
|
|
12239
|
-
titleLineHeight: primitiveSpacing[6],
|
|
12240
|
-
descriptionLineHeight: primitiveSpacing[6]
|
|
12241
|
-
}
|
|
12242
|
-
};
|
|
12243
|
-
var variantClassName = {
|
|
12244
|
-
"blank-slate": "border border-dashed border-border bg-background",
|
|
12245
|
-
informational: "border border-border bg-card",
|
|
12246
|
-
educational: "border border-border bg-card",
|
|
12247
|
-
guide: "border border-border bg-muted/30",
|
|
12248
|
-
"no-results": "border border-dashed border-border bg-background",
|
|
12249
|
-
cleared: "border border-dashed border-border bg-muted/20",
|
|
12250
|
-
permission: "border border-border bg-card",
|
|
12251
|
-
error: "border border-destructive/25 bg-destructive/5"
|
|
12252
|
-
};
|
|
12253
|
-
var iconToneClassName = {
|
|
12254
|
-
"blank-slate": "text-muted-foreground",
|
|
12255
|
-
informational: "text-primary",
|
|
12256
|
-
educational: "text-primary",
|
|
12257
|
-
guide: "text-primary",
|
|
12258
|
-
"no-results": "text-muted-foreground",
|
|
12259
|
-
cleared: "text-muted-foreground",
|
|
12260
|
-
permission: "text-muted-foreground",
|
|
12261
|
-
error: "text-destructive"
|
|
12262
|
-
};
|
|
12263
|
-
var emptyStateCssVars = (size) => ({
|
|
12264
|
-
"--empty-state-min-height": `${emptyStateTokens.root.minHeight[size]}px`,
|
|
12265
|
-
"--empty-state-padding-x": `${emptyStateTokens.root.paddingX[size]}px`,
|
|
12266
|
-
"--empty-state-padding-y": `${emptyStateTokens.root.paddingY[size]}px`,
|
|
12267
|
-
"--empty-state-radius": `${emptyStateTokens.root.radius}px`,
|
|
12268
|
-
"--empty-state-content-max-width": `${emptyStateTokens.content.maxWidth}px`,
|
|
12269
|
-
"--empty-state-description-max-width": `${emptyStateTokens.content.descriptionMaxWidth}px`,
|
|
12270
|
-
"--empty-state-stack-gap": `${emptyStateTokens.content.stackGap}px`,
|
|
12271
|
-
"--empty-state-copy-gap": `${emptyStateTokens.content.copyGap}px`,
|
|
12272
|
-
"--empty-state-actions-gap": `${emptyStateTokens.content.actionsGap}px`,
|
|
12273
|
-
"--empty-state-icon-size": `${emptyStateTokens.icon.size}px`,
|
|
12274
|
-
"--empty-state-icon-radius": `${emptyStateTokens.icon.radius}px`,
|
|
12275
|
-
"--empty-state-title-size": `${emptyStateTokens.typography.title[size]}px`,
|
|
12276
|
-
"--empty-state-description-size": `${emptyStateTokens.typography.description[size]}px`,
|
|
12277
|
-
"--empty-state-title-weight": `${emptyStateTokens.typography.titleWeight}`,
|
|
12278
|
-
"--empty-state-title-line-height": `${emptyStateTokens.typography.titleLineHeight}px`,
|
|
12279
|
-
"--empty-state-description-line-height": `${emptyStateTokens.typography.descriptionLineHeight}px`
|
|
12280
|
-
});
|
|
12281
|
-
var EmptyStateIcon = ({
|
|
12282
|
-
className,
|
|
12283
|
-
icon,
|
|
12284
|
-
ref,
|
|
12285
|
-
...props
|
|
12286
|
-
}) => /* @__PURE__ */ jsx(
|
|
12287
|
-
"div",
|
|
12288
|
-
{
|
|
12289
|
-
ref,
|
|
12290
|
-
"aria-hidden": "true",
|
|
12291
|
-
className: cn(
|
|
12292
|
-
"flex size-[var(--empty-state-icon-size)] shrink-0 items-center justify-center rounded-[var(--empty-state-icon-radius)] bg-muted",
|
|
12293
|
-
className
|
|
12294
|
-
),
|
|
12295
|
-
...props,
|
|
12296
|
-
children: icon
|
|
12297
|
-
}
|
|
12298
|
-
);
|
|
12299
|
-
EmptyStateIcon.displayName = "EmptyState.Icon";
|
|
12300
|
-
var EmptyStateRoot = ({
|
|
12301
|
-
className,
|
|
12302
|
-
title,
|
|
12303
|
-
description,
|
|
12304
|
-
icon,
|
|
12305
|
-
children,
|
|
12306
|
-
action,
|
|
12307
|
-
link,
|
|
12308
|
-
style,
|
|
12309
|
-
variant = "blank-slate",
|
|
12310
|
-
size = "md",
|
|
12311
|
-
align = "center",
|
|
12312
|
-
live = false,
|
|
12313
|
-
ref,
|
|
12314
|
-
...props
|
|
12315
|
-
}) => {
|
|
12316
|
-
const actions = children ?? [action, link].filter(Boolean);
|
|
12317
|
-
const hasActions = React45.Children.toArray(actions).length > 0;
|
|
12318
|
-
return /* @__PURE__ */ jsx(
|
|
13018
|
+
onClick: handleReject,
|
|
13019
|
+
className: "h-7 rounded-[var(--radius-sm)] border border-border bg-transparent px-2 text-xs font-medium text-foreground transition-colors duration-micro hover:bg-accent",
|
|
13020
|
+
children: rejectLabel
|
|
13021
|
+
}
|
|
13022
|
+
),
|
|
13023
|
+
/* @__PURE__ */ jsx(
|
|
13024
|
+
"button",
|
|
13025
|
+
{
|
|
13026
|
+
type: "button",
|
|
13027
|
+
onClick: handleApprove,
|
|
13028
|
+
className: "h-7 rounded-[var(--radius-sm)] bg-primary px-2 text-xs font-medium text-primary-foreground transition-colors duration-micro hover:bg-primary/90",
|
|
13029
|
+
children: approveLabel
|
|
13030
|
+
}
|
|
13031
|
+
)
|
|
13032
|
+
] })
|
|
13033
|
+
] });
|
|
13034
|
+
}
|
|
13035
|
+
function EditTool({
|
|
13036
|
+
state = "completed",
|
|
13037
|
+
variant = "edit",
|
|
13038
|
+
filePath,
|
|
13039
|
+
oldContent,
|
|
13040
|
+
newContent,
|
|
13041
|
+
approval,
|
|
13042
|
+
maxDiffLines = 2e3,
|
|
13043
|
+
className
|
|
13044
|
+
}) {
|
|
13045
|
+
const isPending = state === "pending";
|
|
13046
|
+
const isWaiting = state === "waiting";
|
|
13047
|
+
const isWrite = variant === "write";
|
|
13048
|
+
const fileName = filePath?.split("/").pop();
|
|
13049
|
+
const diffOps = getDiffOps({ isWaiting, isWrite, oldContent, newContent, maxDiffLines });
|
|
13050
|
+
const exceededCap = !isWaiting && diffOps === null && (oldContent !== void 0 || newContent !== void 0);
|
|
13051
|
+
const stats = diffOps ? countDiffStats(diffOps) : null;
|
|
13052
|
+
const diffLineCounts = /* @__PURE__ */ new Map();
|
|
13053
|
+
useEffect(() => {
|
|
13054
|
+
if (!isPending || !approval) return;
|
|
13055
|
+
const onKey = (e) => {
|
|
13056
|
+
if (e.key === "Escape") approval.onReject?.();
|
|
13057
|
+
};
|
|
13058
|
+
window.addEventListener("keydown", onKey);
|
|
13059
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
13060
|
+
}, [isPending, approval]);
|
|
13061
|
+
const headerLabel = isWaiting ? "Generating..." : isPending ? `${isWrite ? "Creating" : "Editing"}${fileName ? ` ${fileName}` : ""}` : `${isWrite ? "Created" : "Edited"}${fileName ? ` ${fileName}` : ""}`;
|
|
13062
|
+
const hasBody = diffOps && diffOps.length > 0 || exceededCap;
|
|
13063
|
+
return /* @__PURE__ */ jsxs(
|
|
12319
13064
|
"section",
|
|
12320
13065
|
{
|
|
12321
|
-
|
|
12322
|
-
"aria-live": live ? "polite" : void 0,
|
|
13066
|
+
"aria-label": fileName ? `${headerLabel} (${fileName})` : headerLabel,
|
|
12323
13067
|
className: cn(
|
|
12324
|
-
"
|
|
12325
|
-
variantClassName[variant],
|
|
12326
|
-
align === "center" ? "items-center text-center" : "items-start text-left",
|
|
13068
|
+
"w-full overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card",
|
|
12327
13069
|
className
|
|
12328
13070
|
),
|
|
12329
|
-
|
|
12330
|
-
|
|
12331
|
-
|
|
12332
|
-
|
|
12333
|
-
|
|
12334
|
-
|
|
12335
|
-
|
|
12336
|
-
|
|
12337
|
-
|
|
12338
|
-
|
|
12339
|
-
|
|
12340
|
-
|
|
12341
|
-
|
|
12342
|
-
|
|
12343
|
-
|
|
12344
|
-
|
|
12345
|
-
|
|
12346
|
-
|
|
12347
|
-
|
|
12348
|
-
|
|
12349
|
-
|
|
13071
|
+
children: [
|
|
13072
|
+
/* @__PURE__ */ jsxs(
|
|
13073
|
+
"header",
|
|
13074
|
+
{
|
|
13075
|
+
className: cn(
|
|
13076
|
+
"flex h-7 items-center justify-between bg-muted px-2.5",
|
|
13077
|
+
hasBody || approval ? "border-b border-border" : ""
|
|
13078
|
+
),
|
|
13079
|
+
children: [
|
|
13080
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-1.5", children: isPending || isWaiting ? /* @__PURE__ */ jsx(TextShimmer, { as: "span", className: "text-xs", children: headerLabel }) : /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: headerLabel }) }),
|
|
13081
|
+
stats && !isPending && !isWaiting && (stats.added > 0 || stats.removed > 0) && /* @__PURE__ */ jsxs("span", { className: "inline-flex shrink-0 gap-2 font-mono text-[11px] text-muted-foreground", children: [
|
|
13082
|
+
stats.added > 0 && /* @__PURE__ */ jsxs("span", { className: "text-success", children: [
|
|
13083
|
+
"+",
|
|
13084
|
+
stats.added
|
|
13085
|
+
] }),
|
|
13086
|
+
stats.removed > 0 && /* @__PURE__ */ jsxs("span", { className: "text-destructive", children: [
|
|
13087
|
+
"-",
|
|
13088
|
+
stats.removed
|
|
13089
|
+
] })
|
|
13090
|
+
] })
|
|
13091
|
+
]
|
|
13092
|
+
}
|
|
13093
|
+
),
|
|
13094
|
+
exceededCap && /* @__PURE__ */ jsxs("div", { className: "bg-background p-3 text-xs text-muted-foreground", children: [
|
|
13095
|
+
"Diff exceeds ",
|
|
13096
|
+
maxDiffLines.toLocaleString(),
|
|
13097
|
+
" lines: open the file to view changes."
|
|
13098
|
+
] }),
|
|
13099
|
+
diffOps && diffOps.length > 0 && /* @__PURE__ */ jsx("div", { className: "overflow-x-auto bg-background font-mono text-[12px] leading-[1.5]", children: diffOps.map((op) => {
|
|
13100
|
+
const stableKey = getDiffLineKey(op, diffLineCounts);
|
|
13101
|
+
return /* @__PURE__ */ jsxs(
|
|
13102
|
+
"div",
|
|
13103
|
+
{
|
|
13104
|
+
className: cn(
|
|
13105
|
+
"flex min-w-0 items-start",
|
|
13106
|
+
op.type === "add" && "bg-[hsl(var(--success)/0.1)] text-success",
|
|
13107
|
+
op.type === "remove" && "bg-[hsl(var(--destructive)/0.1)] text-destructive",
|
|
13108
|
+
op.type === "context" && "text-foreground/80"
|
|
13109
|
+
),
|
|
13110
|
+
children: [
|
|
13111
|
+
/* @__PURE__ */ jsx(
|
|
13112
|
+
"span",
|
|
13113
|
+
{
|
|
13114
|
+
"aria-hidden": "true",
|
|
13115
|
+
className: cn(
|
|
13116
|
+
"w-4 shrink-0 select-none text-center",
|
|
13117
|
+
op.type === "add" && "text-success",
|
|
13118
|
+
op.type === "remove" && "text-destructive",
|
|
13119
|
+
op.type === "context" && "text-muted-foreground/60"
|
|
13120
|
+
),
|
|
13121
|
+
children: op.type === "add" ? "+" : op.type === "remove" ? "-" : " "
|
|
13122
|
+
}
|
|
12350
13123
|
),
|
|
12351
|
-
children:
|
|
12352
|
-
|
|
12353
|
-
|
|
12354
|
-
|
|
12355
|
-
|
|
12356
|
-
|
|
13124
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 whitespace-pre pr-2", children: op.text || " " })
|
|
13125
|
+
]
|
|
13126
|
+
},
|
|
13127
|
+
stableKey
|
|
13128
|
+
);
|
|
13129
|
+
}) }),
|
|
13130
|
+
approval && /* @__PURE__ */ jsx(ApprovalFooter, { isPending, approval })
|
|
13131
|
+
]
|
|
12357
13132
|
}
|
|
12358
13133
|
);
|
|
12359
|
-
}
|
|
12360
|
-
EmptyStateRoot.displayName = "EmptyState.Root";
|
|
12361
|
-
var EmptyState = {
|
|
12362
|
-
Root: EmptyStateRoot,
|
|
12363
|
-
Icon: EmptyStateIcon
|
|
12364
|
-
};
|
|
13134
|
+
}
|
|
12365
13135
|
var InputOTP = ({
|
|
12366
13136
|
className,
|
|
12367
13137
|
containerClassName,
|
|
@@ -12506,6 +13276,7 @@ function EntityRoot({
|
|
|
12506
13276
|
as,
|
|
12507
13277
|
left,
|
|
12508
13278
|
right,
|
|
13279
|
+
chevron = false,
|
|
12509
13280
|
children,
|
|
12510
13281
|
className,
|
|
12511
13282
|
...props
|
|
@@ -12518,8 +13289,9 @@ function EntityRoot({
|
|
|
12518
13289
|
{
|
|
12519
13290
|
className: cn(
|
|
12520
13291
|
"flex w-full items-center gap-3 px-4 py-3 text-left",
|
|
12521
|
-
// Clickable rows get hover + focus-visible affordance
|
|
12522
|
-
|
|
13292
|
+
// Clickable rows get hover + focus-visible affordance, plus `group`
|
|
13293
|
+
// so trailing affordances (the chevron below) can react to hover.
|
|
13294
|
+
isButton && "group cursor-pointer transition-colors hover:bg-accent/40 focus-visible:outline-none",
|
|
12523
13295
|
className
|
|
12524
13296
|
),
|
|
12525
13297
|
...buttonDefaults,
|
|
@@ -12527,7 +13299,16 @@ function EntityRoot({
|
|
|
12527
13299
|
children: [
|
|
12528
13300
|
left && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center", children: left }),
|
|
12529
13301
|
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 items-center gap-3", children }),
|
|
12530
|
-
right && /* @__PURE__ */
|
|
13302
|
+
(right || isButton && chevron) && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
13303
|
+
right,
|
|
13304
|
+
isButton && chevron && /* @__PURE__ */ jsx(
|
|
13305
|
+
ChevronRight,
|
|
13306
|
+
{
|
|
13307
|
+
className: "h-3.5 w-3.5 shrink-0 text-neutral-10 transition-transform group-hover:translate-x-0.5",
|
|
13308
|
+
"aria-hidden": "true"
|
|
13309
|
+
}
|
|
13310
|
+
)
|
|
13311
|
+
] })
|
|
12531
13312
|
]
|
|
12532
13313
|
}
|
|
12533
13314
|
);
|
|
@@ -13108,8 +13889,8 @@ function ExpandableTabs({
|
|
|
13108
13889
|
const Icon = tab.icon;
|
|
13109
13890
|
const isSelected = selected === index;
|
|
13110
13891
|
const tabClassName = cn(
|
|
13111
|
-
"relative rounded-[var(--radius-xl)] py-2 text-sm font-medium transition-colors duration-
|
|
13112
|
-
"focus-visible:outline-none
|
|
13892
|
+
"relative rounded-[var(--radius-xl)] py-2 text-sm font-medium transition-colors duration-flow",
|
|
13893
|
+
"focus-visible:outline-none",
|
|
13113
13894
|
isSelected ? cn("bg-muted", activeColor) : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
13114
13895
|
);
|
|
13115
13896
|
const tabContent = (
|
|
@@ -13210,7 +13991,7 @@ function getTextareaStyle(size, style) {
|
|
|
13210
13991
|
"--textarea-focus-ring-width": `${textareaTokens.focusRingWidth}px`,
|
|
13211
13992
|
borderRadius: "var(--textarea-radius)",
|
|
13212
13993
|
outline: "none",
|
|
13213
|
-
...style
|
|
13994
|
+
...asPlainStyle(style)
|
|
13214
13995
|
};
|
|
13215
13996
|
}
|
|
13216
13997
|
function getTextareaFieldStyle() {
|
|
@@ -13851,7 +14632,7 @@ function getSelectTriggerStyle(size, style) {
|
|
|
13851
14632
|
"--select-focus-ring-width": `${selectTokens.focusRingWidth}px`,
|
|
13852
14633
|
borderRadius: "var(--select-radius)",
|
|
13853
14634
|
outline: "none",
|
|
13854
|
-
...style
|
|
14635
|
+
...asPlainStyle(style)
|
|
13855
14636
|
};
|
|
13856
14637
|
}
|
|
13857
14638
|
function getNativeSelectStyle(size, style) {
|
|
@@ -13870,7 +14651,7 @@ function getNativeSelectStyle(size, style) {
|
|
|
13870
14651
|
"--select-message-gap": `${selectTokens.messageGap}px`,
|
|
13871
14652
|
"--select-duration": `${selectTokens.motion.duration}ms`,
|
|
13872
14653
|
"--select-easing": selectTokens.motion.easing,
|
|
13873
|
-
...style
|
|
14654
|
+
...asPlainStyle(style)
|
|
13874
14655
|
};
|
|
13875
14656
|
}
|
|
13876
14657
|
function getSelectContentStyle(style) {
|
|
@@ -13890,7 +14671,7 @@ function getSelectContentStyle(style) {
|
|
|
13890
14671
|
"--select-item-indicator-size": `${selectTokens.item.indicatorSize}px`,
|
|
13891
14672
|
"--select-item-indicator-icon-size": `${selectTokens.item.indicatorIconSize}px`,
|
|
13892
14673
|
zIndex: overlayZIndex.popover,
|
|
13893
|
-
...style
|
|
14674
|
+
...asPlainStyle(style)
|
|
13894
14675
|
};
|
|
13895
14676
|
}
|
|
13896
14677
|
function textOf(node) {
|
|
@@ -14501,7 +15282,7 @@ function FeedbackDefault({
|
|
|
14501
15282
|
"button",
|
|
14502
15283
|
{
|
|
14503
15284
|
"aria-label": "Close feedback",
|
|
14504
|
-
className: "inline-flex size-7 items-center justify-center rounded-[var(--feedback-radius)] text-muted-foreground transition-[background-color,color] duration-[var(--feedback-duration)] ease-[var(--feedback-easing)] hover:bg-accent hover:text-accent-foreground focus-visible:outline-none
|
|
15285
|
+
className: "inline-flex size-7 items-center justify-center rounded-[var(--feedback-radius)] text-muted-foreground transition-[background-color,color] duration-[var(--feedback-duration)] ease-[var(--feedback-easing)] hover:bg-accent hover:text-accent-foreground focus-visible:outline-none",
|
|
14505
15286
|
onClick: closeAndReturnFocus,
|
|
14506
15287
|
type: "button",
|
|
14507
15288
|
children: /* @__PURE__ */ jsx(Cross, { "aria-hidden": "true", size: 14 })
|
|
@@ -14747,7 +15528,7 @@ function FileAttachment({
|
|
|
14747
15528
|
className: cn(
|
|
14748
15529
|
"absolute -right-1.5 -top-1.5 z-10 flex size-4 items-center justify-center",
|
|
14749
15530
|
"rounded-full border border-border bg-background text-muted-foreground",
|
|
14750
|
-
"opacity-0 transition-opacity duration-
|
|
15531
|
+
"opacity-0 transition-opacity duration-micro ease-out",
|
|
14751
15532
|
"group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100",
|
|
14752
15533
|
"hover:text-foreground active:scale-[0.97]"
|
|
14753
15534
|
),
|
|
@@ -15017,7 +15798,7 @@ var FileCard = function FileCard2({
|
|
|
15017
15798
|
/* @__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, {}) })
|
|
15018
15799
|
] });
|
|
15019
15800
|
};
|
|
15020
|
-
var pillBaseClass = "inline-flex items-center justify-center shrink-0 whitespace-nowrap rounded-full font-medium border transition-colors duration-
|
|
15801
|
+
var pillBaseClass = "inline-flex items-center justify-center shrink-0 whitespace-nowrap rounded-full font-medium border transition-colors duration-flow cursor-pointer focus-visible:outline-none";
|
|
15021
15802
|
var pillSizeClass = {
|
|
15022
15803
|
sm: "h-8 px-3 text-xs gap-1.5",
|
|
15023
15804
|
md: "h-9 px-4 text-sm gap-1.5"
|
|
@@ -17665,9 +18446,9 @@ function InteractiveFrostedGlassCard({
|
|
|
17665
18446
|
element.removeEventListener("pointerleave", handlePointerLeave);
|
|
17666
18447
|
};
|
|
17667
18448
|
}, []);
|
|
17668
|
-
const cardClasses = isElevated ? `group relative w-full overflow-hidden rounded-[var(--radius-3xl)] border border-cyan/25 bg-neutral-950/60 p-8 backdrop-blur-3xl transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-500 hover:border-cyan/40 shadow-
|
|
17669
|
-
const glowColor = isElevated ? `radial-gradient(600px circle at ${mousePosition.x}px ${mousePosition.y}px,
|
|
17670
|
-
const iconBgClass = isElevated ? "flex h-12 w-12 items-center justify-center rounded-[var(--radius-2xl)] bg-cyan/10 text-cyan backdrop-blur-md border border-cyan/20 shadow-
|
|
18449
|
+
const cardClasses = isElevated ? `group relative w-full overflow-hidden rounded-[var(--radius-3xl)] border border-cyan/25 bg-neutral-950/60 p-8 backdrop-blur-3xl transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-500 hover:border-cyan/40 shadow-glow-accent hover:shadow-glow-accent-lg` : `group relative w-full overflow-hidden rounded-[var(--radius-3xl)] border border-white/10 bg-white/5 p-8 backdrop-blur-2xl transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-500 hover:border-white/20 shadow-none hover:shadow-[0_4px_16px_rgba(255,255,255,0.05)]`;
|
|
18450
|
+
const glowColor = isElevated ? `radial-gradient(600px circle at ${mousePosition.x}px ${mousePosition.y}px, color-mix(in srgb, var(--brand-accent) 15%, transparent), transparent 40%)` : `radial-gradient(600px circle at ${mousePosition.x}px ${mousePosition.y}px, rgba(255,255,255,0.06), transparent 40%)`;
|
|
18451
|
+
const iconBgClass = isElevated ? "flex h-12 w-12 items-center justify-center rounded-[var(--radius-2xl)] bg-cyan/10 text-cyan backdrop-blur-md border border-cyan/20 shadow-glow-accent-sm" : "flex h-12 w-12 items-center justify-center rounded-[var(--radius-2xl)] bg-white/5 text-white/80 backdrop-blur-md border border-white/10";
|
|
17671
18452
|
const noiseFilterId = `cardNoise_${variant}`;
|
|
17672
18453
|
return /* @__PURE__ */ jsxs(
|
|
17673
18454
|
"div",
|
|
@@ -18317,7 +19098,7 @@ function getSpinnerStyle(size, style) {
|
|
|
18317
19098
|
"--spinner-bar-radius": `${spinnerTokens.barRadius}px`,
|
|
18318
19099
|
"--spinner-duration": `${spinnerTokens.motion.duration}ms`,
|
|
18319
19100
|
"--spinner-easing": spinnerTokens.motion.easing,
|
|
18320
|
-
...style
|
|
19101
|
+
...asPlainStyle(style)
|
|
18321
19102
|
};
|
|
18322
19103
|
}
|
|
18323
19104
|
function getBarOpacity(index) {
|
|
@@ -18615,7 +19396,7 @@ function MagicCard({
|
|
|
18615
19396
|
radial-gradient(${gradientSize}px circle at ${mouseX}px ${mouseY}px,
|
|
18616
19397
|
${gradientFrom},
|
|
18617
19398
|
${gradientTo},
|
|
18618
|
-
var(--border) 100%
|
|
19399
|
+
hsl(var(--border)) 100%
|
|
18619
19400
|
)
|
|
18620
19401
|
`;
|
|
18621
19402
|
const spotlightGradient = useMotionTemplate`
|
|
@@ -18668,9 +19449,9 @@ function MagicCard({
|
|
|
18668
19449
|
/* @__PURE__ */ jsx(
|
|
18669
19450
|
motion.div,
|
|
18670
19451
|
{
|
|
18671
|
-
className: "bg-border pointer-events-none absolute inset-0 rounded-[inherit] duration-
|
|
19452
|
+
className: "bg-border pointer-events-none absolute inset-0 rounded-[inherit] duration-reveal group-hover:opacity-100",
|
|
18672
19453
|
style: {
|
|
18673
|
-
background: shouldReduceMotion ? `linear-gradient(135deg, ${gradientFrom}, ${gradientTo}, var(--border) 100%)` : borderGradient
|
|
19454
|
+
background: shouldReduceMotion ? `linear-gradient(135deg, ${gradientFrom}, ${gradientTo}, hsl(var(--border)) 100%)` : borderGradient
|
|
18674
19455
|
}
|
|
18675
19456
|
}
|
|
18676
19457
|
),
|
|
@@ -18678,7 +19459,7 @@ function MagicCard({
|
|
|
18678
19459
|
/* @__PURE__ */ jsx(
|
|
18679
19460
|
motion.div,
|
|
18680
19461
|
{
|
|
18681
|
-
className: "pointer-events-none absolute inset-px rounded-[inherit] opacity-0 transition-opacity duration-
|
|
19462
|
+
className: "pointer-events-none absolute inset-px rounded-[inherit] opacity-0 transition-opacity duration-reveal group-hover:opacity-100",
|
|
18682
19463
|
style: {
|
|
18683
19464
|
background: shouldReduceMotion ? "transparent" : spotlightGradient,
|
|
18684
19465
|
opacity: gradientOpacity
|
|
@@ -18890,7 +19671,7 @@ function McpTool({
|
|
|
18890
19671
|
{
|
|
18891
19672
|
"aria-hidden": "true",
|
|
18892
19673
|
className: cn(
|
|
18893
|
-
"size-3 shrink-0 text-muted-foreground transition-transform duration-
|
|
19674
|
+
"size-3 shrink-0 text-muted-foreground transition-transform duration-flow ease-out",
|
|
18894
19675
|
isOpen ? "rotate-90" : "rotate-0"
|
|
18895
19676
|
)
|
|
18896
19677
|
}
|
|
@@ -19563,7 +20344,7 @@ function getMessageContentStyle(density, style) {
|
|
|
19563
20344
|
"--message-content-paragraph-margin": `${densityToken.paragraphMargin}px`,
|
|
19564
20345
|
"--message-content-heading-margin": `${densityToken.headingMargin}px`,
|
|
19565
20346
|
"--message-content-pre-margin": `${densityToken.preMargin}px`,
|
|
19566
|
-
...style
|
|
20347
|
+
...asPlainStyle(style)
|
|
19567
20348
|
};
|
|
19568
20349
|
}
|
|
19569
20350
|
function MessageContent({
|
|
@@ -19630,8 +20411,8 @@ function MetricCard({
|
|
|
19630
20411
|
}
|
|
19631
20412
|
};
|
|
19632
20413
|
const trendColors = {
|
|
19633
|
-
up: "text-
|
|
19634
|
-
down: "text-
|
|
20414
|
+
up: "text-[hsl(var(--success-strong))]",
|
|
20415
|
+
down: "text-[hsl(var(--destructive-strong))]",
|
|
19635
20416
|
neutral: "text-muted-foreground"
|
|
19636
20417
|
};
|
|
19637
20418
|
const TrendIcon = trend === "up" ? ChartTrendingUp : trend === "down" ? ChartTrendingDown : Minus;
|
|
@@ -19669,9 +20450,9 @@ function MetricCardBordered({ className, ...props }) {
|
|
|
19669
20450
|
}
|
|
19670
20451
|
function StatItem({ label, value, color = "neutral", className }) {
|
|
19671
20452
|
const colorClasses = {
|
|
19672
|
-
success: "bg-
|
|
19673
|
-
warning: "bg-
|
|
19674
|
-
error: "bg-
|
|
20453
|
+
success: "bg-success",
|
|
20454
|
+
warning: "bg-warning",
|
|
20455
|
+
error: "bg-destructive",
|
|
19675
20456
|
info: "bg-info",
|
|
19676
20457
|
neutral: "bg-muted-foreground"
|
|
19677
20458
|
};
|
|
@@ -20052,7 +20833,7 @@ var MultiSelectTrigger = ({
|
|
|
20052
20833
|
"gap-[var(--multi-select-trigger-gap)] rounded-[var(--multi-select-trigger-radius)] border border-input bg-background",
|
|
20053
20834
|
"px-[var(--multi-select-trigger-padding-x)] text-left text-[length:var(--multi-select-trigger-font-size)] text-foreground shadow-xs",
|
|
20054
20835
|
"transition-[background-color,border-color,box-shadow,color] duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]",
|
|
20055
|
-
"hover:bg-accent/60 focus-visible:border-ring focus-visible:outline-none
|
|
20836
|
+
"hover:bg-accent/60 focus-visible:border-ring focus-visible:outline-none",
|
|
20056
20837
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
20057
20838
|
className
|
|
20058
20839
|
),
|
|
@@ -20243,7 +21024,7 @@ var MultiSelectRow = ({
|
|
|
20243
21024
|
"peer size-[var(--multi-select-checkbox-size)] appearance-none rounded-[var(--radius-sm)] border border-input bg-background",
|
|
20244
21025
|
"transition-[background-color,border-color,box-shadow] duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]",
|
|
20245
21026
|
"hover:border-ring checked:border-primary checked:bg-primary",
|
|
20246
|
-
"focus-visible:outline-none
|
|
21027
|
+
"focus-visible:outline-none"
|
|
20247
21028
|
)
|
|
20248
21029
|
}
|
|
20249
21030
|
),
|
|
@@ -20273,7 +21054,7 @@ var MultiSelectRow = ({
|
|
|
20273
21054
|
className: cn(
|
|
20274
21055
|
"min-w-[var(--multi-select-action-min-width)] shrink-0 rounded-[var(--radius-sm)] px-2 py-1 text-right text-[length:var(--multi-select-row-description-size)] font-medium text-muted-foreground",
|
|
20275
21056
|
"opacity-0 transition-[background-color,color,opacity] duration-[var(--multi-select-duration)] ease-[var(--multi-select-easing)]",
|
|
20276
|
-
"hover:bg-background hover:text-foreground focus-visible:bg-background focus-visible:text-foreground focus-visible:opacity-100 focus-visible:outline-none
|
|
21057
|
+
"hover:bg-background hover:text-foreground focus-visible:bg-background focus-visible:text-foreground focus-visible:opacity-100 focus-visible:outline-none",
|
|
20277
21058
|
"group-hover:opacity-100 group-focus-within:opacity-100"
|
|
20278
21059
|
),
|
|
20279
21060
|
children: action.label
|
|
@@ -21233,37 +22014,6 @@ var switchTokens = {
|
|
|
21233
22014
|
}
|
|
21234
22015
|
};
|
|
21235
22016
|
|
|
21236
|
-
// src/tokens/components/table.ts
|
|
21237
|
-
var tableTokens = {
|
|
21238
|
-
wrapper: {
|
|
21239
|
-
minWidth: 248,
|
|
21240
|
-
padding: primitiveSpacing[6],
|
|
21241
|
-
radius: primitiveRadius.lg
|
|
21242
|
-
},
|
|
21243
|
-
row: {
|
|
21244
|
-
radius: primitiveRadius.sm
|
|
21245
|
-
},
|
|
21246
|
-
cell: {
|
|
21247
|
-
paddingX: primitiveSpacing[2],
|
|
21248
|
-
paddingY: 10
|
|
21249
|
-
},
|
|
21250
|
-
header: {
|
|
21251
|
-
height: primitiveSpacing[10]
|
|
21252
|
-
},
|
|
21253
|
-
typography: {
|
|
21254
|
-
size: primitiveFontSize.sm,
|
|
21255
|
-
headingWeight: primitiveFontWeight.medium,
|
|
21256
|
-
bodyWeight: primitiveFontWeight.normal
|
|
21257
|
-
},
|
|
21258
|
-
spacer: {
|
|
21259
|
-
bodyTop: primitiveSpacing[3]
|
|
21260
|
-
},
|
|
21261
|
-
motion: {
|
|
21262
|
-
duration: primitiveTransition.duration.micro,
|
|
21263
|
-
easing: primitiveTransition.easing.default
|
|
21264
|
-
}
|
|
21265
|
-
};
|
|
21266
|
-
|
|
21267
22017
|
// src/tokens/components/tabs.ts
|
|
21268
22018
|
var tabsSizes = {
|
|
21269
22019
|
xs: {
|
|
@@ -21662,7 +22412,7 @@ function NotificationMessageList({
|
|
|
21662
22412
|
/* @__PURE__ */ jsx("div", { className: "relative z-0 space-y-2", children: messages.map((msg, i) => /* @__PURE__ */ jsxs(
|
|
21663
22413
|
"div",
|
|
21664
22414
|
{
|
|
21665
|
-
className: "notification-animate-scale-up flex cursor-pointer items-start gap-3 rounded-[var(--radius-lg)] border p-3 transition duration-
|
|
22415
|
+
className: "notification-animate-scale-up flex cursor-pointer items-start gap-3 rounded-[var(--radius-lg)] border p-3 transition duration-reveal ease-in-out hover:bg-muted/50",
|
|
21666
22416
|
style: { animationDelay: `${i * animationDelay}ms` },
|
|
21667
22417
|
children: [
|
|
21668
22418
|
/* @__PURE__ */ jsx(
|
|
@@ -21726,7 +22476,7 @@ function PaginationRail({
|
|
|
21726
22476
|
"group flex min-h-[var(--pagination-min-height)] min-w-0 items-center gap-[var(--pagination-gap)] rounded-[var(--pagination-radius)] border border-border bg-background",
|
|
21727
22477
|
"px-[var(--pagination-padding-x)] py-[var(--pagination-padding-y)] text-foreground shadow-xs",
|
|
21728
22478
|
"transition-[background-color,border-color,box-shadow,color,transform] duration-[var(--pagination-duration)] ease-[var(--pagination-easing)]",
|
|
21729
|
-
"hover:border-ring hover:bg-accent focus-visible:outline-none
|
|
22479
|
+
"hover:border-ring hover:bg-accent focus-visible:outline-none",
|
|
21730
22480
|
"motion-reduce:transition-none",
|
|
21731
22481
|
isPrevious ? "justify-start text-left" : "justify-end text-right"
|
|
21732
22482
|
),
|
|
@@ -22288,7 +23038,7 @@ var variantMap = {
|
|
|
22288
23038
|
cta: "text-foreground decoration-border hover:text-foreground hover:decoration-foreground"
|
|
22289
23039
|
}
|
|
22290
23040
|
};
|
|
22291
|
-
var ctaBase = "font-medium underline underline-offset-[5px] transition-colors duration-
|
|
23041
|
+
var ctaBase = "font-medium underline underline-offset-[5px] transition-colors duration-micro";
|
|
22292
23042
|
function ProjectBanner({
|
|
22293
23043
|
variant = "info",
|
|
22294
23044
|
label,
|
|
@@ -22895,7 +23645,7 @@ var radioControlClassName = cn(
|
|
|
22895
23645
|
"transition-[background-color,border-color,box-shadow] duration-[var(--radio-motion-duration)] ease-[var(--radio-motion-easing)]",
|
|
22896
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-['']",
|
|
22897
23647
|
"peer-checked:border-[var(--neutral-12)] peer-checked:after:scale-100 peer-checked:after:opacity-100",
|
|
22898
|
-
"peer-focus-visible:outline-none
|
|
23648
|
+
"peer-focus-visible:outline-none",
|
|
22899
23649
|
"peer-disabled:border-[var(--neutral-5)] peer-disabled:bg-muted peer-disabled:text-[var(--neutral-8)]"
|
|
22900
23650
|
);
|
|
22901
23651
|
function useRadioGroupContext() {
|
|
@@ -23109,7 +23859,10 @@ var RadioGroupCardItem = ({
|
|
|
23109
23859
|
{
|
|
23110
23860
|
ref,
|
|
23111
23861
|
className: cn(
|
|
23112
|
-
|
|
23862
|
+
// Base UI radio emits `data-checked` / `data-unchecked`. The Radix-era
|
|
23863
|
+
// `data-state-checked:` selectors this shipped with never matched, so the
|
|
23864
|
+
// selected card had no visual state at all.
|
|
23865
|
+
"relative flex flex-col items-center justify-center rounded-[var(--radius-lg)] border-2 border-muted bg-popover p-4 hover:bg-accent outline-none hover:text-accent-foreground data-[checked]:border-primary focus-visible:outline-none",
|
|
23113
23866
|
className
|
|
23114
23867
|
),
|
|
23115
23868
|
...props,
|
|
@@ -23137,7 +23890,9 @@ var RadioGroupStackedItem = ({
|
|
|
23137
23890
|
{
|
|
23138
23891
|
ref,
|
|
23139
23892
|
className: cn(
|
|
23140
|
-
|
|
23893
|
+
// Base UI radio emits `data-checked` / `data-unchecked`; the Radix-era
|
|
23894
|
+
// `data-state-checked:` selectors never matched.
|
|
23895
|
+
"relative flex w-full flex-row items-center justify-between rounded-[var(--radius-lg)] border px-4 py-3 text-left hover:bg-accent outline-none focus-visible:outline-none data-[checked]:border-primary data-[checked]:bg-primary/5",
|
|
23141
23896
|
className
|
|
23142
23897
|
),
|
|
23143
23898
|
...props,
|
|
@@ -23172,8 +23927,8 @@ function ReactionChip({
|
|
|
23172
23927
|
const isActive = selected === em;
|
|
23173
23928
|
const btnClassName = cn(
|
|
23174
23929
|
"rounded-full p-1 text-base leading-none",
|
|
23175
|
-
"transition-transform duration-
|
|
23176
|
-
"hover:scale-110 focus-visible:scale-110 focus-visible:outline-none
|
|
23930
|
+
"transition-transform duration-micro ease-out",
|
|
23931
|
+
"hover:scale-110 focus-visible:scale-110 focus-visible:outline-none",
|
|
23177
23932
|
isActive && "bg-muted ring-1 ring-border dark:bg-muted/70"
|
|
23178
23933
|
);
|
|
23179
23934
|
const handleMouseDown = (evt) => evt.preventDefault();
|
|
@@ -23222,7 +23977,7 @@ function ReactionBadge({ emoji, count, bump = false, className }) {
|
|
|
23222
23977
|
className: cn(
|
|
23223
23978
|
"inline-flex items-center gap-1 rounded-full",
|
|
23224
23979
|
"bg-muted px-2 py-0.5 text-xs text-foreground/80 ring-1 ring-border",
|
|
23225
|
-
"transition-transform duration-
|
|
23980
|
+
"transition-transform duration-micro ease-out",
|
|
23226
23981
|
bump ? "scale-110" : "scale-100",
|
|
23227
23982
|
className
|
|
23228
23983
|
),
|
|
@@ -23270,7 +24025,7 @@ function MessageWithReactions({
|
|
|
23270
24025
|
className
|
|
23271
24026
|
),
|
|
23272
24027
|
children: [
|
|
23273
|
-
children
|
|
24028
|
+
children ?? (text ? /* @__PURE__ */ jsx("p", { className: "text-pretty", children: text }) : null),
|
|
23274
24029
|
activeReactions.length > 0 && /* @__PURE__ */ jsx(
|
|
23275
24030
|
"div",
|
|
23276
24031
|
{
|
|
@@ -23286,7 +24041,7 @@ function MessageWithReactions({
|
|
|
23286
24041
|
className: cn(
|
|
23287
24042
|
"pointer-events-none absolute -top-3 right-0 z-10",
|
|
23288
24043
|
"translate-y-1 opacity-0",
|
|
23289
|
-
"transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
24044
|
+
"transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-micro ease-out",
|
|
23290
24045
|
"group-hover:pointer-events-auto group-hover:translate-y-0 group-hover:opacity-100",
|
|
23291
24046
|
"focus-within:pointer-events-auto focus-within:translate-y-0 focus-within:opacity-100"
|
|
23292
24047
|
),
|
|
@@ -23466,7 +24221,7 @@ var ResizableHandle = ({
|
|
|
23466
24221
|
Separator$2,
|
|
23467
24222
|
{
|
|
23468
24223
|
className: cn(
|
|
23469
|
-
"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none
|
|
24224
|
+
"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
|
|
23470
24225
|
className
|
|
23471
24226
|
),
|
|
23472
24227
|
...props,
|
|
@@ -24014,7 +24769,7 @@ function ScrollerButton({
|
|
|
24014
24769
|
"absolute z-20 grid size-[var(--scroller-button-size)] place-items-center rounded-[var(--scroller-button-radius)]",
|
|
24015
24770
|
"border border-border bg-background text-muted-foreground shadow-[var(--scroller-button-shadow)]",
|
|
24016
24771
|
"transition-[background-color,border-color,color,opacity,transform] duration-[var(--scroller-duration)] ease-[var(--scroller-easing)]",
|
|
24017
|
-
"hover:border-ring hover:text-foreground focus-visible:outline-none
|
|
24772
|
+
"hover:border-ring hover:text-foreground focus-visible:outline-none",
|
|
24018
24773
|
"disabled:pointer-events-none disabled:opacity-0 motion-reduce:transition-none",
|
|
24019
24774
|
axis === "x" && direction === "previous" && "left-[var(--scroller-button-offset)] top-1/2 -translate-y-1/2",
|
|
24020
24775
|
axis === "x" && direction === "next" && "right-[var(--scroller-button-offset)] top-1/2 -translate-y-1/2",
|
|
@@ -24109,7 +24864,7 @@ function Scroller({
|
|
|
24109
24864
|
onScroll: updateEdgeState,
|
|
24110
24865
|
className: cn(
|
|
24111
24866
|
"h-[var(--scroller-height)] rounded-[var(--scroller-radius)] outline-none",
|
|
24112
|
-
"scroll-smooth overscroll-contain
|
|
24867
|
+
"scroll-smooth overscroll-contain motion-reduce:scroll-auto",
|
|
24113
24868
|
resolveScrollClasses(overflow)
|
|
24114
24869
|
),
|
|
24115
24870
|
children: /* @__PURE__ */ jsx(
|
|
@@ -24236,7 +24991,7 @@ function SearchTool({
|
|
|
24236
24991
|
{
|
|
24237
24992
|
"aria-hidden": "true",
|
|
24238
24993
|
className: cn(
|
|
24239
|
-
"size-3 shrink-0 text-muted-foreground transition-transform duration-
|
|
24994
|
+
"size-3 shrink-0 text-muted-foreground transition-transform duration-flow ease-out",
|
|
24240
24995
|
isOpen ? "rotate-90" : "rotate-0"
|
|
24241
24996
|
)
|
|
24242
24997
|
}
|
|
@@ -24288,7 +25043,7 @@ function getSheetStyle(style) {
|
|
|
24288
25043
|
"--sheet-shadow": sheetTokens.surface.shadow,
|
|
24289
25044
|
"--sheet-duration": `${overlayTokens.motion.duration}ms`,
|
|
24290
25045
|
"--sheet-easing": overlayTokens.motion.easing,
|
|
24291
|
-
...style
|
|
25046
|
+
...asPlainStyle(style)
|
|
24292
25047
|
};
|
|
24293
25048
|
}
|
|
24294
25049
|
function Sheet({ modal = "trap-focus", disablePointerDismissal = true, ...props }) {
|
|
@@ -24660,7 +25415,7 @@ var ShowMore = ({
|
|
|
24660
25415
|
"h-[var(--show-more-trigger-height)] rounded-[var(--show-more-radius)] px-[var(--show-more-trigger-padding-x)]",
|
|
24661
25416
|
"transition-[background-color,border-color,color] duration-[var(--show-more-duration)] ease-[var(--show-more-easing)]",
|
|
24662
25417
|
"hover:border-border hover:bg-muted",
|
|
24663
|
-
"focus-visible:outline-none
|
|
25418
|
+
"focus-visible:outline-none",
|
|
24664
25419
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
24665
25420
|
"motion-reduce:transition-none",
|
|
24666
25421
|
buttonClassName
|
|
@@ -24679,106 +25434,20 @@ var ShowMore = ({
|
|
|
24679
25434
|
}
|
|
24680
25435
|
)
|
|
24681
25436
|
]
|
|
24682
|
-
}
|
|
24683
|
-
) }),
|
|
24684
|
-
!noBorder && /* @__PURE__ */ jsx(
|
|
24685
|
-
"div",
|
|
24686
|
-
{
|
|
24687
|
-
"aria-hidden": "true",
|
|
24688
|
-
className: cn("h-px flex-1 bg-[var(--neutral-7)]", dividerClassName)
|
|
24689
|
-
}
|
|
24690
|
-
)
|
|
24691
|
-
]
|
|
24692
|
-
}
|
|
24693
|
-
);
|
|
24694
|
-
};
|
|
24695
|
-
ShowMore.displayName = "ShowMore";
|
|
24696
|
-
function asCssLength(value) {
|
|
24697
|
-
if (value === void 0) return void 0;
|
|
24698
|
-
return typeof value === "number" ? `${value}px` : value;
|
|
24699
|
-
}
|
|
24700
|
-
function shapeRadiusClass(props) {
|
|
24701
|
-
if (props.pill) return "rounded-full";
|
|
24702
|
-
if (props.squared) return "rounded-[var(--radius-sm)]";
|
|
24703
|
-
return "rounded-[var(--radius-md)]";
|
|
24704
|
-
}
|
|
24705
|
-
function Skeleton(props) {
|
|
24706
|
-
const {
|
|
24707
|
-
width,
|
|
24708
|
-
height,
|
|
24709
|
-
boxHeight,
|
|
24710
|
-
pill: _pill,
|
|
24711
|
-
rounded: _rounded,
|
|
24712
|
-
squared: _squared,
|
|
24713
|
-
animated: animatedProp,
|
|
24714
|
-
show: showProp,
|
|
24715
|
-
children,
|
|
24716
|
-
isLoaded,
|
|
24717
|
-
disableAnimation,
|
|
24718
|
-
className,
|
|
24719
|
-
style,
|
|
24720
|
-
...rest
|
|
24721
|
-
} = props;
|
|
24722
|
-
const show = showProp !== void 0 ? showProp : !isLoaded;
|
|
24723
|
-
const animated = animatedProp !== void 0 ? animatedProp : !disableAnimation;
|
|
24724
|
-
if (!show && children) {
|
|
24725
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
24726
|
-
}
|
|
24727
|
-
const sizeStyle = {
|
|
24728
|
-
width: asCssLength(width),
|
|
24729
|
-
height: asCssLength(height),
|
|
24730
|
-
minHeight: asCssLength(boxHeight)
|
|
24731
|
-
};
|
|
24732
|
-
return /* @__PURE__ */ jsx(
|
|
24733
|
-
"div",
|
|
24734
|
-
{
|
|
24735
|
-
"aria-busy": "true",
|
|
24736
|
-
"aria-hidden": "true",
|
|
24737
|
-
"data-loaded": !show,
|
|
24738
|
-
className: cn(
|
|
24739
|
-
"bg-muted",
|
|
24740
|
-
shapeRadiusClass(props),
|
|
24741
|
-
animated && "animate-pulse motion-reduce:animate-none",
|
|
24742
|
-
className
|
|
24743
|
-
),
|
|
24744
|
-
style: { ...sizeStyle, ...style },
|
|
24745
|
-
...rest,
|
|
24746
|
-
children: children && // biome-ignore lint/a11y/useSemanticElements: this <div> isn't a landmark; `inert` is the relevant a11y signal.
|
|
24747
|
-
/* @__PURE__ */ jsx("div", { className: "invisible", inert: true, "aria-hidden": "true", children })
|
|
25437
|
+
}
|
|
25438
|
+
) }),
|
|
25439
|
+
!noBorder && /* @__PURE__ */ jsx(
|
|
25440
|
+
"div",
|
|
25441
|
+
{
|
|
25442
|
+
"aria-hidden": "true",
|
|
25443
|
+
className: cn("h-px flex-1 bg-[var(--neutral-7)]", dividerClassName)
|
|
25444
|
+
}
|
|
25445
|
+
)
|
|
25446
|
+
]
|
|
24748
25447
|
}
|
|
24749
25448
|
);
|
|
24750
|
-
}
|
|
24751
|
-
|
|
24752
|
-
lines = 3,
|
|
24753
|
-
className,
|
|
24754
|
-
...props
|
|
24755
|
-
}) {
|
|
24756
|
-
return /* @__PURE__ */ jsx("div", { className: cn("space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
24757
|
-
Skeleton,
|
|
24758
|
-
{
|
|
24759
|
-
height: 16,
|
|
24760
|
-
className: cn(i === lines - 1 ? "w-[60%]" : i === 0 ? "w-full" : "w-[80%]")
|
|
24761
|
-
},
|
|
24762
|
-
i
|
|
24763
|
-
)) });
|
|
24764
|
-
}
|
|
24765
|
-
function SkeletonAvatar({
|
|
24766
|
-
size = "md",
|
|
24767
|
-
className,
|
|
24768
|
-
...props
|
|
24769
|
-
}) {
|
|
24770
|
-
const px = size === "sm" ? 32 : size === "lg" ? 48 : 40;
|
|
24771
|
-
return /* @__PURE__ */ jsx(Skeleton, { pill: true, width: px, height: px, className, ...props });
|
|
24772
|
-
}
|
|
24773
|
-
function SkeletonCard({ className, ...props }) {
|
|
24774
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4 p-4", className), ...props, children: [
|
|
24775
|
-
/* @__PURE__ */ jsx(Skeleton, { height: 128, className: "w-full" }),
|
|
24776
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
24777
|
-
/* @__PURE__ */ jsx(Skeleton, { height: 16, className: "w-3/4" }),
|
|
24778
|
-
/* @__PURE__ */ jsx(Skeleton, { height: 16, className: "w-1/2" })
|
|
24779
|
-
] })
|
|
24780
|
-
] });
|
|
24781
|
-
}
|
|
25449
|
+
};
|
|
25450
|
+
ShowMore.displayName = "ShowMore";
|
|
24782
25451
|
function isArraySliderProps(props) {
|
|
24783
25452
|
return props.valueMode === "array" || Array.isArray(props.value) || Array.isArray(props.defaultValue);
|
|
24784
25453
|
}
|
|
@@ -24813,7 +25482,7 @@ function getSliderStyle(progress, style) {
|
|
|
24813
25482
|
"--slider-duration": `${sliderTokens.motion.duration}ms`,
|
|
24814
25483
|
"--slider-easing": sliderTokens.motion.easing,
|
|
24815
25484
|
"--slider-progress": `${progress}%`,
|
|
24816
|
-
...style
|
|
25485
|
+
...asPlainStyle(style)
|
|
24817
25486
|
};
|
|
24818
25487
|
}
|
|
24819
25488
|
function formatSliderValue(value, unit) {
|
|
@@ -24929,7 +25598,7 @@ var Slider = ({
|
|
|
24929
25598
|
onBlur,
|
|
24930
25599
|
className: cn(
|
|
24931
25600
|
"h-[var(--slider-height)] w-full cursor-pointer appearance-none rounded-[var(--slider-radius)] bg-[linear-gradient(to_right,var(--slider-track-fill)_0,var(--slider-track-fill)_var(--slider-progress),var(--slider-track-background)_var(--slider-progress),var(--slider-track-background)_100%)] bg-[length:100%_var(--slider-track-height)] bg-center bg-no-repeat outline-none",
|
|
24932
|
-
"
|
|
25601
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
24933
25602
|
"[&::-moz-range-thumb]:size-[var(--slider-thumb-size)] [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-border [&::-moz-range-thumb]:bg-[var(--slider-thumb-background)] [&::-moz-range-thumb]:shadow-[var(--slider-thumb-shadow)]",
|
|
24934
25603
|
"[&::-webkit-slider-thumb]:size-[var(--slider-thumb-size)] [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-border [&::-webkit-slider-thumb]:bg-[var(--slider-thumb-background)] [&::-webkit-slider-thumb]:shadow-[var(--slider-thumb-shadow)]",
|
|
24935
25604
|
"[&::-moz-range-thumb]:transition-transform [&::-moz-range-thumb]:duration-[var(--slider-duration)] [&::-moz-range-thumb]:ease-[var(--slider-easing)]",
|
|
@@ -24962,7 +25631,7 @@ var SliderNumberFlow = ({
|
|
|
24962
25631
|
/* @__PURE__ */ jsx(
|
|
24963
25632
|
Slider$1.Thumb,
|
|
24964
25633
|
{
|
|
24965
|
-
className: "relative block h-5 w-5 rounded-full border border-border bg-background shadow-xs ring-1 ring-border/40 focus-visible:outline-none
|
|
25634
|
+
className: "relative block h-5 w-5 rounded-full border border-border bg-background shadow-xs ring-1 ring-border/40 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
|
|
24966
25635
|
"aria-label": "Slider Value",
|
|
24967
25636
|
children: (Array.isArray(value) ? value[0] : value) != null && /* @__PURE__ */ jsx(
|
|
24968
25637
|
NumberFlow,
|
|
@@ -25406,10 +26075,10 @@ function StatusBadge2({
|
|
|
25406
26075
|
...props
|
|
25407
26076
|
}) {
|
|
25408
26077
|
const iconColorClasses = {
|
|
25409
|
-
success: "text-
|
|
25410
|
-
error: "text-
|
|
25411
|
-
warning: "text-
|
|
25412
|
-
info: "text-
|
|
26078
|
+
success: "text-[hsl(var(--success-strong))]",
|
|
26079
|
+
error: "text-[hsl(var(--destructive-strong))]",
|
|
26080
|
+
warning: "text-[hsl(var(--warning-strong))]",
|
|
26081
|
+
info: "text-info",
|
|
25413
26082
|
default: "text-muted-foreground"
|
|
25414
26083
|
};
|
|
25415
26084
|
return /* @__PURE__ */ jsxs("span", { className: cn(statusBadgeVariants({ status }), className), ...props, children: [
|
|
@@ -25614,9 +26283,9 @@ function Stepper({
|
|
|
25614
26283
|
"relative flex items-center justify-center rounded-full border-2 transition-[background-color,border-color,box-shadow,color,opacity,transform]",
|
|
25615
26284
|
config.icon,
|
|
25616
26285
|
status === "completed" && "border-primary bg-primary text-white",
|
|
25617
|
-
status === "current" && "border-primary bg-
|
|
25618
|
-
status === "pending" && "border-
|
|
25619
|
-
status === "error" && "border-
|
|
26286
|
+
status === "current" && "border-primary bg-background text-primary",
|
|
26287
|
+
status === "pending" && "border-neutral-6 bg-background text-muted-foreground",
|
|
26288
|
+
status === "error" && "border-destructive bg-destructive text-destructive-foreground",
|
|
25620
26289
|
clickable && "cursor-pointer hover:scale-105"
|
|
25621
26290
|
),
|
|
25622
26291
|
children: status === "completed" ? /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx("span", { className: cn("font-medium", config.text), children: index + 1 })
|
|
@@ -25628,7 +26297,7 @@ function Stepper({
|
|
|
25628
26297
|
className: cn(
|
|
25629
26298
|
"transition-colors",
|
|
25630
26299
|
orientation === "horizontal" ? cn(config.connector, "mx-2") : "my-2 h-8 w-0.5",
|
|
25631
|
-
index < currentStep ? "bg-primary" : "bg-
|
|
26300
|
+
index < currentStep ? "bg-primary" : "bg-neutral-4"
|
|
25632
26301
|
)
|
|
25633
26302
|
}
|
|
25634
26303
|
)
|
|
@@ -25643,8 +26312,8 @@ function Stepper({
|
|
|
25643
26312
|
"font-medium",
|
|
25644
26313
|
config.text,
|
|
25645
26314
|
status === "completed" && "text-primary",
|
|
25646
|
-
status === "current" && "text-
|
|
25647
|
-
status === "pending" && "text-
|
|
26315
|
+
status === "current" && "text-foreground",
|
|
26316
|
+
status === "pending" && "text-muted-foreground"
|
|
25648
26317
|
),
|
|
25649
26318
|
children: [
|
|
25650
26319
|
step.title,
|
|
@@ -25745,7 +26414,7 @@ function ProgressStepper({
|
|
|
25745
26414
|
}) {
|
|
25746
26415
|
const progress = (currentStep + 1) / totalSteps * 100;
|
|
25747
26416
|
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-2", className), children: [
|
|
25748
|
-
/* @__PURE__ */ jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-
|
|
26417
|
+
/* @__PURE__ */ jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-neutral-4", children: /* @__PURE__ */ jsx(
|
|
25749
26418
|
"div",
|
|
25750
26419
|
{
|
|
25751
26420
|
className: "h-full rounded-full bg-primary transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-300",
|
|
@@ -25818,7 +26487,7 @@ function getSwitchStyle(size, style) {
|
|
|
25818
26487
|
"--switch-control-radius": `${switchTokens.controlRadius}px`,
|
|
25819
26488
|
"--switch-duration": `${switchTokens.motion.duration}ms`,
|
|
25820
26489
|
"--switch-easing": switchTokens.motion.easing,
|
|
25821
|
-
...style
|
|
26490
|
+
...asPlainStyle(style)
|
|
25822
26491
|
};
|
|
25823
26492
|
}
|
|
25824
26493
|
function getSwitchControlStyle(size, style) {
|
|
@@ -25829,7 +26498,7 @@ function getSwitchControlStyle(size, style) {
|
|
|
25829
26498
|
"--switch-control-padding-x": `${sizeTokens.paddingX}px`,
|
|
25830
26499
|
"--switch-icon-size": `${sizeTokens.iconSize}px`,
|
|
25831
26500
|
"--switch-font-size": `${sizeTokens.fontSize}px`,
|
|
25832
|
-
...style
|
|
26501
|
+
...asPlainStyle(style)
|
|
25833
26502
|
};
|
|
25834
26503
|
}
|
|
25835
26504
|
var SwitchRoot = function SwitchRoot2({
|
|
@@ -25939,7 +26608,7 @@ var SwitchControl = function SwitchControl2({
|
|
|
25939
26608
|
"inline-flex h-full w-full items-center justify-center gap-1.5 whitespace-nowrap rounded-[var(--switch-control-radius)] px-[var(--switch-control-padding-x)] font-medium text-[length:var(--switch-font-size)]",
|
|
25940
26609
|
"text-muted-foreground transition-[background-color,box-shadow,color] duration-[var(--switch-duration)] ease-[var(--switch-easing)]",
|
|
25941
26610
|
"peer-checked:bg-background peer-checked:text-foreground peer-checked:shadow-sm",
|
|
25942
|
-
"
|
|
26611
|
+
"",
|
|
25943
26612
|
"peer-disabled:pointer-events-none peer-disabled:text-muted-foreground/60",
|
|
25944
26613
|
"[&_svg]:size-[var(--switch-icon-size)]"
|
|
25945
26614
|
),
|
|
@@ -25958,177 +26627,6 @@ SwitchControl.displayName = "Switch.Control";
|
|
|
25958
26627
|
var Switch = Object.assign(SwitchRoot, {
|
|
25959
26628
|
Control: SwitchControl
|
|
25960
26629
|
});
|
|
25961
|
-
function createTableVars(style) {
|
|
25962
|
-
return {
|
|
25963
|
-
"--table-min-width": `${tableTokens.wrapper.minWidth}px`,
|
|
25964
|
-
"--table-padding": `${tableTokens.wrapper.padding}px`,
|
|
25965
|
-
"--table-radius": `${tableTokens.wrapper.radius}px`,
|
|
25966
|
-
"--table-row-radius": `${tableTokens.row.radius}px`,
|
|
25967
|
-
"--table-cell-padding-x": `${tableTokens.cell.paddingX}px`,
|
|
25968
|
-
"--table-cell-padding-y": `${tableTokens.cell.paddingY}px`,
|
|
25969
|
-
"--table-header-height": `${tableTokens.header.height}px`,
|
|
25970
|
-
"--table-font-size": `${tableTokens.typography.size}px`,
|
|
25971
|
-
"--table-heading-weight": tableTokens.typography.headingWeight,
|
|
25972
|
-
"--table-body-weight": tableTokens.typography.bodyWeight,
|
|
25973
|
-
"--table-body-spacer": `${tableTokens.spacer.bodyTop}px`,
|
|
25974
|
-
"--table-motion-duration": `${tableTokens.motion.duration}ms`,
|
|
25975
|
-
"--table-motion-easing": tableTokens.motion.easing,
|
|
25976
|
-
...style
|
|
25977
|
-
};
|
|
25978
|
-
}
|
|
25979
|
-
var TableRoot = ({
|
|
25980
|
-
className,
|
|
25981
|
-
wrapperClassName,
|
|
25982
|
-
wrapperStyle,
|
|
25983
|
-
style,
|
|
25984
|
-
ref,
|
|
25985
|
-
...props
|
|
25986
|
-
}) => /* @__PURE__ */ jsx(
|
|
25987
|
-
"div",
|
|
25988
|
-
{
|
|
25989
|
-
className: cn(
|
|
25990
|
-
"relative w-full min-w-[var(--table-min-width)] overflow-auto rounded-[var(--table-radius)] border border-border bg-card p-[var(--table-padding)]",
|
|
25991
|
-
wrapperClassName
|
|
25992
|
-
),
|
|
25993
|
-
style: createTableVars(wrapperStyle),
|
|
25994
|
-
children: /* @__PURE__ */ jsx(
|
|
25995
|
-
"table",
|
|
25996
|
-
{
|
|
25997
|
-
ref,
|
|
25998
|
-
className: cn(
|
|
25999
|
-
"w-full border-collapse caption-bottom text-[length:var(--table-font-size)] font-[var(--table-body-weight)] text-foreground",
|
|
26000
|
-
className
|
|
26001
|
-
),
|
|
26002
|
-
style,
|
|
26003
|
-
...props
|
|
26004
|
-
}
|
|
26005
|
-
)
|
|
26006
|
-
}
|
|
26007
|
-
);
|
|
26008
|
-
TableRoot.displayName = "Table";
|
|
26009
|
-
var TableColgroup = ({
|
|
26010
|
-
className,
|
|
26011
|
-
ref,
|
|
26012
|
-
...props
|
|
26013
|
-
}) => /* @__PURE__ */ jsx("colgroup", { ref, className, ...props });
|
|
26014
|
-
TableColgroup.displayName = "TableColgroup";
|
|
26015
|
-
var TableCol = ({
|
|
26016
|
-
className,
|
|
26017
|
-
ref,
|
|
26018
|
-
...props
|
|
26019
|
-
}) => /* @__PURE__ */ jsx("col", { ref, className, ...props });
|
|
26020
|
-
TableCol.displayName = "TableCol";
|
|
26021
|
-
var TableHeader = ({
|
|
26022
|
-
className,
|
|
26023
|
-
ref,
|
|
26024
|
-
...props
|
|
26025
|
-
}) => /* @__PURE__ */ jsx("thead", { ref, className: cn("border-b border-border", className), ...props });
|
|
26026
|
-
TableHeader.displayName = "TableHeader";
|
|
26027
|
-
var TableBody = ({
|
|
26028
|
-
className,
|
|
26029
|
-
striped = false,
|
|
26030
|
-
bordered = false,
|
|
26031
|
-
interactive = false,
|
|
26032
|
-
virtualize = false,
|
|
26033
|
-
ref,
|
|
26034
|
-
...props
|
|
26035
|
-
}) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26036
|
-
/* @__PURE__ */ jsx("tbody", { "aria-hidden": "true", className: "table-row h-[var(--table-body-spacer)]" }),
|
|
26037
|
-
/* @__PURE__ */ jsx(
|
|
26038
|
-
"tbody",
|
|
26039
|
-
{
|
|
26040
|
-
ref,
|
|
26041
|
-
"data-virtualized": virtualize ? "" : void 0,
|
|
26042
|
-
className: cn(
|
|
26043
|
-
"[&_tr:last-child]:border-b-0",
|
|
26044
|
-
striped && "[&_tr:where(:nth-child(odd))]:bg-muted/45",
|
|
26045
|
-
bordered && "[&_tr]:border-b [&_tr]:border-border",
|
|
26046
|
-
interactive && "[&_tr]:cursor-default [&_tr:hover]:bg-muted/70 [&_tr:focus-within]:bg-muted/70",
|
|
26047
|
-
className
|
|
26048
|
-
),
|
|
26049
|
-
...props
|
|
26050
|
-
}
|
|
26051
|
-
)
|
|
26052
|
-
] });
|
|
26053
|
-
TableBody.displayName = "TableBody";
|
|
26054
|
-
var TableFooter = ({
|
|
26055
|
-
className,
|
|
26056
|
-
ref,
|
|
26057
|
-
...props
|
|
26058
|
-
}) => /* @__PURE__ */ jsx("tfoot", { ref, className: cn("border-t border-border", className), ...props });
|
|
26059
|
-
TableFooter.displayName = "TableFooter";
|
|
26060
|
-
var TableRow = ({
|
|
26061
|
-
className,
|
|
26062
|
-
ref,
|
|
26063
|
-
...props
|
|
26064
|
-
}) => /* @__PURE__ */ jsx(
|
|
26065
|
-
"tr",
|
|
26066
|
-
{
|
|
26067
|
-
ref,
|
|
26068
|
-
className: cn(
|
|
26069
|
-
"[&_td:first-child]:rounded-l-[var(--table-row-radius)] [&_td:last-child]:rounded-r-[var(--table-row-radius)] transition-colors duration-[var(--table-motion-duration)] ease-[var(--table-motion-easing)] motion-reduce:transition-none",
|
|
26070
|
-
className
|
|
26071
|
-
),
|
|
26072
|
-
...props
|
|
26073
|
-
}
|
|
26074
|
-
);
|
|
26075
|
-
TableRow.displayName = "TableRow";
|
|
26076
|
-
var TableHead = ({
|
|
26077
|
-
className,
|
|
26078
|
-
numeric = false,
|
|
26079
|
-
scope = "col",
|
|
26080
|
-
ref,
|
|
26081
|
-
...props
|
|
26082
|
-
}) => /* @__PURE__ */ jsx(
|
|
26083
|
-
"th",
|
|
26084
|
-
{
|
|
26085
|
-
ref,
|
|
26086
|
-
scope,
|
|
26087
|
-
className: cn(
|
|
26088
|
-
"h-[var(--table-header-height)] px-[var(--table-cell-padding-x)] text-left align-middle font-[var(--table-heading-weight)] text-muted-foreground",
|
|
26089
|
-
"last:text-right [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-px",
|
|
26090
|
-
numeric && "text-right font-mono tabular-nums",
|
|
26091
|
-
className
|
|
26092
|
-
),
|
|
26093
|
-
...props
|
|
26094
|
-
}
|
|
26095
|
-
);
|
|
26096
|
-
TableHead.displayName = "TableHead";
|
|
26097
|
-
var TableCell = ({
|
|
26098
|
-
className,
|
|
26099
|
-
numeric = false,
|
|
26100
|
-
ref,
|
|
26101
|
-
...props
|
|
26102
|
-
}) => /* @__PURE__ */ jsx(
|
|
26103
|
-
"td",
|
|
26104
|
-
{
|
|
26105
|
-
ref,
|
|
26106
|
-
className: cn(
|
|
26107
|
-
"px-[var(--table-cell-padding-x)] py-[var(--table-cell-padding-y)] align-middle",
|
|
26108
|
-
"last:text-right [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-px",
|
|
26109
|
-
numeric && "text-right font-mono tabular-nums",
|
|
26110
|
-
className
|
|
26111
|
-
),
|
|
26112
|
-
...props
|
|
26113
|
-
}
|
|
26114
|
-
);
|
|
26115
|
-
TableCell.displayName = "TableCell";
|
|
26116
|
-
var TableCaption = ({
|
|
26117
|
-
className,
|
|
26118
|
-
ref,
|
|
26119
|
-
...props
|
|
26120
|
-
}) => /* @__PURE__ */ jsx("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props });
|
|
26121
|
-
TableCaption.displayName = "TableCaption";
|
|
26122
|
-
var Table = TableRoot;
|
|
26123
|
-
Table.Body = TableBody;
|
|
26124
|
-
Table.Caption = TableCaption;
|
|
26125
|
-
Table.Cell = TableCell;
|
|
26126
|
-
Table.Col = TableCol;
|
|
26127
|
-
Table.Colgroup = TableColgroup;
|
|
26128
|
-
Table.Footer = TableFooter;
|
|
26129
|
-
Table.Head = TableHead;
|
|
26130
|
-
Table.Header = TableHeader;
|
|
26131
|
-
Table.Row = TableRow;
|
|
26132
26630
|
var BaseRoot = withHtmlProps(Tabs$1.Root);
|
|
26133
26631
|
var BaseList = withHtmlProps(Tabs$1.List);
|
|
26134
26632
|
var BaseTrigger = withHtmlProps(Tabs$1.Tab);
|
|
@@ -26173,7 +26671,7 @@ var tabsListVariants = cva(
|
|
|
26173
26671
|
}
|
|
26174
26672
|
);
|
|
26175
26673
|
var tabsTriggerVariants = cva(
|
|
26176
|
-
"relative inline-flex h-[calc(var(--tabs-height)-var(--tabs-padding)*2)] min-w-[var(--tabs-trigger-min-width)] shrink-0 cursor-pointer items-center justify-center gap-[var(--tabs-trigger-gap)] whitespace-nowrap rounded-[var(--tabs-trigger-radius)] px-[var(--tabs-trigger-padding-x)] font-medium text-[length:var(--tabs-font-size)] outline-none transition-[background-color,border-color,box-shadow,color,opacity] duration-[var(--tabs-duration)] ease-[var(--tabs-easing)]
|
|
26674
|
+
"relative inline-flex h-[calc(var(--tabs-height)-var(--tabs-padding)*2)] min-w-[var(--tabs-trigger-min-width)] shrink-0 cursor-pointer items-center justify-center gap-[var(--tabs-trigger-gap)] whitespace-nowrap rounded-[var(--tabs-trigger-radius)] px-[var(--tabs-trigger-padding-x)] font-medium text-[length:var(--tabs-font-size)] outline-none transition-[background-color,border-color,box-shadow,color,opacity] duration-[var(--tabs-duration)] ease-[var(--tabs-easing)] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&_svg]:size-[var(--tabs-icon-size)] [&_svg]:shrink-0",
|
|
26177
26675
|
{
|
|
26178
26676
|
variants: {
|
|
26179
26677
|
variant: {
|
|
@@ -26210,7 +26708,7 @@ var tabsIndicatorVariants = cva(
|
|
|
26210
26708
|
}
|
|
26211
26709
|
);
|
|
26212
26710
|
var tabsContentVariants = cva(
|
|
26213
|
-
"mt-[var(--tabs-panel-gap)] text-[length:var(--tabs-font-size)] text-muted-foreground focus-visible:outline-none
|
|
26711
|
+
"mt-[var(--tabs-panel-gap)] text-[length:var(--tabs-font-size)] text-muted-foreground focus-visible:outline-none",
|
|
26214
26712
|
{
|
|
26215
26713
|
variants: {
|
|
26216
26714
|
variant: {
|
|
@@ -26252,7 +26750,7 @@ function getTabsStyle(size, style) {
|
|
|
26252
26750
|
"--tabs-badge-font-size": `${tabsTokens.badgeFontSize}px`,
|
|
26253
26751
|
"--tabs-duration": `${tabsTokens.motion.duration}ms`,
|
|
26254
26752
|
"--tabs-easing": tabsTokens.motion.easing,
|
|
26255
|
-
...style
|
|
26753
|
+
...asPlainStyle(style)
|
|
26256
26754
|
};
|
|
26257
26755
|
}
|
|
26258
26756
|
function getFirstEnabledValue(tabs) {
|
|
@@ -26787,7 +27285,7 @@ function getThemeSwitcherStyle(size, style) {
|
|
|
26787
27285
|
"--theme-switcher-focus-ring-offset": `${themeSwitcherTokens.focusRingOffset}px`,
|
|
26788
27286
|
"--theme-switcher-duration": `${themeSwitcherTokens.motion.duration}ms`,
|
|
26789
27287
|
"--theme-switcher-easing": themeSwitcherTokens.motion.easing,
|
|
26790
|
-
...style
|
|
27288
|
+
...asPlainStyle(style)
|
|
26791
27289
|
};
|
|
26792
27290
|
}
|
|
26793
27291
|
function isThemeSwitcherValue(value) {
|
|
@@ -26881,7 +27379,7 @@ function getThemeToggleStyle(size, style) {
|
|
|
26881
27379
|
"--theme-toggle-radius": `${token.radius}px`,
|
|
26882
27380
|
"--theme-toggle-duration": `${themeToggleTokens.motion.duration}ms`,
|
|
26883
27381
|
"--theme-toggle-easing": themeToggleTokens.motion.easing,
|
|
26884
|
-
...style
|
|
27382
|
+
...asPlainStyle(style)
|
|
26885
27383
|
};
|
|
26886
27384
|
}
|
|
26887
27385
|
function readDocumentTheme() {
|
|
@@ -27006,7 +27504,6 @@ var ThemeToggle = ({
|
|
|
27006
27504
|
"inline-flex size-[var(--theme-toggle-size)] shrink-0 items-center justify-center rounded-[var(--theme-toggle-radius)] p-[var(--theme-toggle-padding)] text-foreground",
|
|
27007
27505
|
"transition-[background-color,color,box-shadow] duration-[var(--theme-toggle-duration)] ease-[var(--theme-toggle-easing)]",
|
|
27008
27506
|
"hover:bg-accent hover:text-accent-foreground",
|
|
27009
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
27010
27507
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
27011
27508
|
"motion-reduce:transition-none",
|
|
27012
27509
|
className
|
|
@@ -27331,7 +27828,7 @@ function getToggleStyle(size, color, style) {
|
|
|
27331
27828
|
"--toggle-thumb": colorTokens.thumb,
|
|
27332
27829
|
"--toggle-icon-on": colorTokens.iconOn,
|
|
27333
27830
|
"--toggle-icon-off": colorTokens.iconOff,
|
|
27334
|
-
...style
|
|
27831
|
+
...asPlainStyle(style)
|
|
27335
27832
|
};
|
|
27336
27833
|
}
|
|
27337
27834
|
var Toggle = ({
|
|
@@ -27405,7 +27902,7 @@ var Toggle = ({
|
|
|
27405
27902
|
"border-[var(--toggle-track-border)] transition-[background-color,border-color] duration-[var(--toggle-duration)] ease-[var(--toggle-easing)]",
|
|
27406
27903
|
"peer-checked:bg-[var(--toggle-track-on)]",
|
|
27407
27904
|
"peer-checked:[&>span]:translate-x-[var(--toggle-thumb-translate)] peer-checked:[&>span]:text-[var(--toggle-icon-on)]",
|
|
27408
|
-
"
|
|
27905
|
+
"",
|
|
27409
27906
|
"peer-disabled:cursor-not-allowed peer-disabled:opacity-60",
|
|
27410
27907
|
"motion-reduce:transition-none"
|
|
27411
27908
|
),
|
|
@@ -27458,7 +27955,10 @@ var toggleGroupVariants = cva(
|
|
|
27458
27955
|
variants: {
|
|
27459
27956
|
variant: {
|
|
27460
27957
|
default: "",
|
|
27461
|
-
outline: "bg-transparent border"
|
|
27958
|
+
outline: "bg-transparent border",
|
|
27959
|
+
// Segmented pill look — theme-toggle / mode-pills style. Rounded-full
|
|
27960
|
+
// track with a rounded-full active segment (see toggleGroupItemVariants).
|
|
27961
|
+
pill: "rounded-full bg-neutral-2 p-0.5"
|
|
27462
27962
|
}
|
|
27463
27963
|
},
|
|
27464
27964
|
defaultVariants: {
|
|
@@ -27467,12 +27967,13 @@ var toggleGroupVariants = cva(
|
|
|
27467
27967
|
}
|
|
27468
27968
|
);
|
|
27469
27969
|
var toggleGroupItemVariants = cva(
|
|
27470
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--radius-md)] px-3 py-1.5 text-sm font-medium ring-offset-background transition-[background-color,box-shadow,color,opacity] duration-flow ease-out motion-reduce:transition-none
|
|
27970
|
+
"inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-[var(--radius-md)] px-3 py-1.5 text-sm font-medium ring-offset-background transition-[background-color,box-shadow,color,opacity] duration-flow ease-out motion-reduce:transition-none disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-background data-[state=on]:text-foreground data-[state=on]:shadow-sm",
|
|
27471
27971
|
{
|
|
27472
27972
|
variants: {
|
|
27473
27973
|
variant: {
|
|
27474
27974
|
default: "",
|
|
27475
|
-
outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground"
|
|
27975
|
+
outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
|
|
27976
|
+
pill: "rounded-full text-neutral-11 hover:text-neutral-12 data-[state=on]:bg-primary/5 data-[state=on]:text-primary data-[state=on]:shadow-none"
|
|
27476
27977
|
},
|
|
27477
27978
|
size: {
|
|
27478
27979
|
default: "h-9 px-3",
|
|
@@ -27530,7 +28031,17 @@ var ToggleGroup = ({
|
|
|
27530
28031
|
}
|
|
27531
28032
|
onValueChange?.(newValue);
|
|
27532
28033
|
}
|
|
27533
|
-
return /* @__PURE__ */ jsx(
|
|
28034
|
+
return /* @__PURE__ */ jsx(
|
|
28035
|
+
"div",
|
|
28036
|
+
{
|
|
28037
|
+
ref,
|
|
28038
|
+
role: type === "single" ? "radiogroup" : "group",
|
|
28039
|
+
"data-toggle-group-root": "",
|
|
28040
|
+
className: cn(toggleGroupVariants({ variant }), className),
|
|
28041
|
+
...props,
|
|
28042
|
+
children: /* @__PURE__ */ jsx(ToggleGroupTypeContext.Provider, { value: type, children: /* @__PURE__ */ jsx(ToggleGroupValueContext.Provider, { value, children: /* @__PURE__ */ jsx(ToggleGroupChangeContext.Provider, { value: changeToggleGroupValue, children: /* @__PURE__ */ jsx(ToggleGroupDisabledContext.Provider, { value: disabled, children: /* @__PURE__ */ jsx(ToggleGroupVariantContext.Provider, { value: variant, children: /* @__PURE__ */ jsx(ToggleGroupSizeContext.Provider, { value: size, children }) }) }) }) }) })
|
|
28043
|
+
}
|
|
28044
|
+
);
|
|
27534
28045
|
};
|
|
27535
28046
|
ToggleGroup.displayName = "ToggleGroup";
|
|
27536
28047
|
var ToggleGroupItem = ({
|
|
@@ -27548,7 +28059,8 @@ var ToggleGroupItem = ({
|
|
|
27548
28059
|
function toggleItemSelection(event) {
|
|
27549
28060
|
if (isDisabled) return;
|
|
27550
28061
|
if (context.type === "single") {
|
|
27551
|
-
|
|
28062
|
+
if (isSelected) return;
|
|
28063
|
+
context.onValueChange(value);
|
|
27552
28064
|
} else {
|
|
27553
28065
|
const currentArray = Array.isArray(context.value) ? context.value : [];
|
|
27554
28066
|
context.onValueChange(
|
|
@@ -27557,26 +28069,75 @@ var ToggleGroupItem = ({
|
|
|
27557
28069
|
}
|
|
27558
28070
|
props.onClick?.(event);
|
|
27559
28071
|
}
|
|
27560
|
-
|
|
27561
|
-
|
|
27562
|
-
|
|
27563
|
-
|
|
27564
|
-
|
|
27565
|
-
|
|
27566
|
-
"data-
|
|
27567
|
-
|
|
27568
|
-
|
|
27569
|
-
|
|
27570
|
-
|
|
27571
|
-
|
|
27572
|
-
|
|
27573
|
-
|
|
27574
|
-
|
|
27575
|
-
|
|
27576
|
-
|
|
27577
|
-
|
|
27578
|
-
|
|
28072
|
+
function handleItemKeyDown(event) {
|
|
28073
|
+
props.onKeyDown?.(event);
|
|
28074
|
+
if (context.type !== "single" || event.defaultPrevented) return;
|
|
28075
|
+
const container = event.currentTarget.closest("[data-toggle-group-root]");
|
|
28076
|
+
if (!container) return;
|
|
28077
|
+
const items = Array.from(
|
|
28078
|
+
container.querySelectorAll("[data-toggle-item]:not(:disabled)")
|
|
28079
|
+
);
|
|
28080
|
+
const currentIndex = items.indexOf(event.currentTarget);
|
|
28081
|
+
if (currentIndex === -1 || items.length === 0) return;
|
|
28082
|
+
const focusAndSelect = (targetIndex) => {
|
|
28083
|
+
const wrapped = (targetIndex % items.length + items.length) % items.length;
|
|
28084
|
+
const target = items[wrapped];
|
|
28085
|
+
if (!target) return;
|
|
28086
|
+
target.focus();
|
|
28087
|
+
const targetValue = target.dataset.toggleValue;
|
|
28088
|
+
if (targetValue !== void 0) context.onValueChange(targetValue);
|
|
28089
|
+
};
|
|
28090
|
+
switch (event.key) {
|
|
28091
|
+
case "ArrowRight":
|
|
28092
|
+
case "ArrowDown":
|
|
28093
|
+
event.preventDefault();
|
|
28094
|
+
focusAndSelect(currentIndex + 1);
|
|
28095
|
+
break;
|
|
28096
|
+
case "ArrowLeft":
|
|
28097
|
+
case "ArrowUp":
|
|
28098
|
+
event.preventDefault();
|
|
28099
|
+
focusAndSelect(currentIndex - 1);
|
|
28100
|
+
break;
|
|
28101
|
+
case "Home":
|
|
28102
|
+
event.preventDefault();
|
|
28103
|
+
focusAndSelect(0);
|
|
28104
|
+
break;
|
|
28105
|
+
case "End":
|
|
28106
|
+
event.preventDefault();
|
|
28107
|
+
focusAndSelect(items.length - 1);
|
|
28108
|
+
break;
|
|
27579
28109
|
}
|
|
28110
|
+
}
|
|
28111
|
+
const rovingTabIndex = context.type === "single" ? isSelected || context.value === "" ? 0 : -1 : void 0;
|
|
28112
|
+
return (
|
|
28113
|
+
// biome-ignore lint/a11y/useAriaPropsSupportedByRole: see comment above.
|
|
28114
|
+
/* @__PURE__ */ jsx(
|
|
28115
|
+
"button",
|
|
28116
|
+
{
|
|
28117
|
+
ref,
|
|
28118
|
+
type: "button",
|
|
28119
|
+
disabled: isDisabled,
|
|
28120
|
+
"data-state": isSelected ? "on" : "off",
|
|
28121
|
+
"data-toggle-item": "",
|
|
28122
|
+
"data-toggle-value": value,
|
|
28123
|
+
role: context.type === "single" ? "radio" : void 0,
|
|
28124
|
+
"aria-checked": context.type === "single" ? isSelected : void 0,
|
|
28125
|
+
"aria-pressed": context.type === "multiple" ? isSelected : void 0,
|
|
28126
|
+
tabIndex: rovingTabIndex,
|
|
28127
|
+
className: cn(
|
|
28128
|
+
toggleGroupItemVariants({
|
|
28129
|
+
variant: variant ?? context.variant,
|
|
28130
|
+
size: size ?? context.size
|
|
28131
|
+
}),
|
|
28132
|
+
className,
|
|
28133
|
+
"focus-visible:z-10"
|
|
28134
|
+
),
|
|
28135
|
+
onClick: toggleItemSelection,
|
|
28136
|
+
...props,
|
|
28137
|
+
onKeyDown: handleItemKeyDown,
|
|
28138
|
+
children
|
|
28139
|
+
}
|
|
28140
|
+
)
|
|
27580
28141
|
);
|
|
27581
28142
|
};
|
|
27582
28143
|
ToggleGroupItem.displayName = "ToggleGroupItem";
|
|
@@ -28247,9 +28808,13 @@ var Beam = ({ seed, width, x, delay, duration }) => {
|
|
|
28247
28808
|
"--x": `${x}`,
|
|
28248
28809
|
"--width": `${width}`,
|
|
28249
28810
|
"--aspect-ratio": `${aspectRatio}`,
|
|
28250
|
-
|
|
28811
|
+
// Not `--background`. That is the core semantic surface token, and
|
|
28812
|
+
// setting it here overrides it for the whole subtree — any descendant
|
|
28813
|
+
// resolving hsl(var(--background)) would get hsl(a gradient) and lose
|
|
28814
|
+
// its declaration entirely.
|
|
28815
|
+
"--beam-fill": `linear-gradient(hsl(${hue} 80% 60%), transparent)`
|
|
28251
28816
|
},
|
|
28252
|
-
className: "absolute left-[var(--x)] top-0 [aspect-ratio:1/var(--aspect-ratio)] [background:var(--
|
|
28817
|
+
className: "absolute left-[var(--x)] top-0 [aspect-ratio:1/var(--aspect-ratio)] [background:var(--beam-fill)] [width:var(--width)]",
|
|
28253
28818
|
initial: { y: "100cqmax", x: "-50%" },
|
|
28254
28819
|
animate: { y: "-100%", x: "-50%" },
|
|
28255
28820
|
transition: {
|
|
@@ -28270,7 +28835,10 @@ var WarpBackground = ({
|
|
|
28270
28835
|
beamDelayMax = 3,
|
|
28271
28836
|
beamDelayMin = 0,
|
|
28272
28837
|
beamDuration = 3,
|
|
28273
|
-
|
|
28838
|
+
// hsl(), because this lands in a gradient colour stop and --border holds bare
|
|
28839
|
+
// HSL channels. Unwrapped it invalidates the whole background shorthand and
|
|
28840
|
+
// the grid does not draw at all.
|
|
28841
|
+
gridColor = "hsl(var(--border))",
|
|
28274
28842
|
...props
|
|
28275
28843
|
}) => {
|
|
28276
28844
|
const shouldReduceMotion = useReducedMotion();
|
|
@@ -28617,6 +29185,6 @@ function XPostSkeleton({ className }) {
|
|
|
28617
29185
|
);
|
|
28618
29186
|
}
|
|
28619
29187
|
|
|
28620
|
-
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, 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, 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, CopyableField, DITHERING_SHAPES, DITHERING_TYPES, 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, 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, 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 };
|
|
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 };
|
|
28621
29189
|
//# sourceMappingURL=index.js.map
|
|
28622
29190
|
//# sourceMappingURL=index.js.map
|