@nebutra/ui 0.2.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animate-in-BlvjVh2S.d.ts +250 -0
- package/dist/{canonical-Drca5UMj.d.ts → canonical-DEhT4VfS.d.ts} +83 -369
- package/dist/card-DunB1gKE.d.ts +105 -0
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/components/index.d.ts +90 -126
- package/dist/components/index.js +433 -182
- package/dist/components/index.js.map +1 -1
- package/dist/editorial/index.d.ts +404 -0
- package/dist/editorial/index.js +942 -0
- package/dist/editorial/index.js.map +1 -0
- package/dist/empty-state-bmfHCOuN.d.ts +86 -0
- package/dist/hooks/index.d.ts +18 -1
- package/dist/hooks/index.js +120 -5
- package/dist/hooks/index.js.map +1 -1
- package/dist/icons/index.d.ts +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/layout/index.d.ts +17 -58
- package/dist/layout/index.js +368 -127
- package/dist/layout/index.js.map +1 -1
- package/dist/layouts/index.d.ts +1 -1
- package/dist/layouts/index.js +93 -28
- package/dist/layouts/index.js.map +1 -1
- package/dist/patterns/index.d.ts +39 -46
- package/dist/patterns/index.js +534 -323
- package/dist/patterns/index.js.map +1 -1
- package/dist/primitives/canonical.d.ts +5 -2
- package/dist/primitives/canonical.js +598 -288
- package/dist/primitives/canonical.js.map +1 -1
- package/dist/primitives/index.d.ts +165 -63
- package/dist/primitives/index.js +1251 -983
- package/dist/primitives/index.js.map +1 -1
- package/dist/tailwind.preset.d.ts +32 -32
- package/dist/tailwind.preset.js +24 -20
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/theme/index.d.ts +1 -110
- package/dist/typography/fonts.css +8 -16
- package/dist/typography/index.d.ts +29 -45
- package/dist/typography/index.js +26 -14
- package/dist/typography/index.js.map +1 -1
- package/dist/utils/auth-surfaces.d.ts +33 -0
- package/dist/utils/auth-surfaces.js +9 -0
- package/dist/utils/auth-surfaces.js.map +1 -0
- package/dist/utils/index.d.ts +20 -16
- package/dist/utils/index.js +99 -20
- package/dist/utils/index.js.map +1 -1
- package/package.json +25 -11
- package/src/typography/fonts.css +8 -16
- package/dist/styles/brand-override.css +0 -61
- package/src/styles/brand-override.css +0 -61
package/dist/primitives/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
|
|
3
|
-
import { ChevronUpDown, Check, ChevronRight, ChevronDown, ArrowRight, MagnifyingGlass, Plus, Cross, Star, VerifiedCheck, MoreHorizontal, ArrowLeft, RotateClockwise, Copy, CheckCircle, Status, LoaderCircle, EyeOff, Eye, Warning, Information, Minus, Shield, RefreshClockwise, External, Message, ArrowUpRight, ChartTrendingUp, ChartTrendingDown, LockClosed, ChevronDoubleLeft, ChevronLeft, ChevronDoubleRight, Question, ChevronUp, MoreVertical, DeviceDesktop, Sun, Moon, Sparkles, Pause, Play, SpeakerOff, SpeakerVolumeLoud, SpeakerVolumeQuiet, Trash, Hash, Code, Link as Link$1, FolderOpen, FolderClosed, File, CrossCircle, ClockDashed, FaceHappy, FaceSmile, FaceUnhappy, FaceSad, Image, PlayFill, FileText } from '@nebutra/icons';
|
|
3
|
+
import { ChevronUpDown, Check, ChevronRight, ChevronDown, ArrowRight, MagnifyingGlass, Plus, Cross, Star, VerifiedCheck, MoreHorizontal, ArrowLeft, RotateClockwise, Copy, CheckCircle, Status, LoaderCircle, EyeOff, Eye, Warning, Calendar as Calendar$1, Information, Minus, Shield, RefreshClockwise, External, Message, ArrowUpRight, ChartTrendingUp, ChartTrendingDown, LockClosed, ChevronDoubleLeft, ChevronLeft, ChevronDoubleRight, Question, ChevronUp, MoreVertical, DeviceDesktop, Sun, Moon, Sparkles, Pause, Play, SpeakerOff, SpeakerVolumeLoud, SpeakerVolumeQuiet, Trash, Hash, Code, Link as Link$1, FolderOpen, FolderClosed, File, CrossCircle, ClockDashed, FaceHappy, FaceSmile, FaceUnhappy, FaceSad, Image, PlayFill, FileText } from '@nebutra/icons';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
|
-
import {
|
|
5
|
+
import { extendTailwindMerge } 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
9
|
import { useReducedMotion, AnimatePresence, motion, LayoutGroup, LazyMotion, domAnimation, useMotionValue, useMotionTemplate, m, useInView, animate, useScroll, useVelocity, useSpring, useTransform, useAnimationFrame } from 'framer-motion';
|
|
10
|
+
import { tokenColor, fontStack, tokenValue } from '@nebutra/tokens/values';
|
|
10
11
|
import { cva } from 'class-variance-authority';
|
|
11
12
|
import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
|
|
12
13
|
import { colors, brandSpring, flow, emerge, motionDurationSec } from '@nebutra/brand';
|
|
@@ -18,6 +19,7 @@ import Link from 'next/link';
|
|
|
18
19
|
import { mergeProps } from '@base-ui/react/merge-props';
|
|
19
20
|
import { useRender } from '@base-ui/react/use-render';
|
|
20
21
|
import { Separator as Separator$1 } from '@base-ui/react/separator';
|
|
22
|
+
import { DayPicker, UI, DayFlag, SelectionState } from 'react-day-picker';
|
|
21
23
|
import { Canvas, useThree, useFrame } from '@react-three/fiber';
|
|
22
24
|
import * as THREE from 'three';
|
|
23
25
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
@@ -34,6 +36,7 @@ import { Input as Input$1 } from '@base-ui/react/input';
|
|
|
34
36
|
import { ContextMenu as ContextMenu$1 } from '@base-ui/react/context-menu';
|
|
35
37
|
import { toast, Toaster as Toaster$1 } from 'sonner';
|
|
36
38
|
export { toast } from 'sonner';
|
|
39
|
+
import { parse, isValid, format, subDays, startOfWeek, eachDayOfInterval, endOfWeek, addDays, isSameDay } from 'date-fns';
|
|
37
40
|
import { Dithering, GrainGradient, MeshGradient, NeuroNoise, Waves } from '@paper-design/shaders-react';
|
|
38
41
|
import { createMap } from 'piri';
|
|
39
42
|
import DottedMap2 from 'dotted-map';
|
|
@@ -42,7 +45,6 @@ import { OTPInput, OTPInputContext } from 'input-otp';
|
|
|
42
45
|
import { useOnClickOutside, useDebounceValue } from 'usehooks-ts';
|
|
43
46
|
import { Select as Select$1 } from '@base-ui/react/select';
|
|
44
47
|
import { FormProvider, Controller, useFormContext } from 'react-hook-form';
|
|
45
|
-
import { subDays, startOfWeek, eachDayOfInterval, endOfWeek, addDays, format, isSameDay } from 'date-fns';
|
|
46
48
|
import createGlobe from 'cobe';
|
|
47
49
|
import { annotate } from 'rough-notation';
|
|
48
50
|
import useMeasure from 'react-use-measure';
|
|
@@ -89,7 +91,7 @@ var skipLinkStyle = {
|
|
|
89
91
|
whiteSpace: "normal",
|
|
90
92
|
backgroundColor: "canvas.default",
|
|
91
93
|
color: "fg.default",
|
|
92
|
-
zIndex:
|
|
94
|
+
zIndex: "var(--layer-devtools)",
|
|
93
95
|
...focusRing
|
|
94
96
|
}
|
|
95
97
|
};
|
|
@@ -135,6 +137,80 @@ var contrastRequirements = {
|
|
|
135
137
|
/** WCAG AAA for large text */
|
|
136
138
|
largeTextAAA: 4.5
|
|
137
139
|
};
|
|
140
|
+
|
|
141
|
+
// src/utils/tw-merge-theme.generated.ts
|
|
142
|
+
var TW_MERGE_THEME = {
|
|
143
|
+
breakpoint: ["3xl", "shell", "tight", "xs"],
|
|
144
|
+
container: ["content", "text", "wide"],
|
|
145
|
+
ease: ["brand", "in", "in-out", "out", "spring"],
|
|
146
|
+
font: ["cn", "display", "heading", "mono", "sans"],
|
|
147
|
+
leading: ["display", "heading"],
|
|
148
|
+
radius: ["2xl", "3xl", "button", "card", "full", "lg", "md", "none", "panel", "sm", "xl", "xs"],
|
|
149
|
+
shadow: [
|
|
150
|
+
"2xl",
|
|
151
|
+
"ambient-glow",
|
|
152
|
+
"ambient-lg",
|
|
153
|
+
"ambient-md",
|
|
154
|
+
"ambient-sm",
|
|
155
|
+
"brand",
|
|
156
|
+
"brand-lg",
|
|
157
|
+
"glass-lg",
|
|
158
|
+
"glass-md",
|
|
159
|
+
"glass-sm",
|
|
160
|
+
"glow-accent",
|
|
161
|
+
"glow-accent-lg",
|
|
162
|
+
"glow-accent-sm",
|
|
163
|
+
"glow-primary",
|
|
164
|
+
"lg",
|
|
165
|
+
"md",
|
|
166
|
+
"sheen",
|
|
167
|
+
"sm",
|
|
168
|
+
"xl",
|
|
169
|
+
"xs"
|
|
170
|
+
],
|
|
171
|
+
text: [
|
|
172
|
+
"2xl",
|
|
173
|
+
"2xs",
|
|
174
|
+
"3xl",
|
|
175
|
+
"4xl",
|
|
176
|
+
"5xl",
|
|
177
|
+
"6xl",
|
|
178
|
+
"7xl",
|
|
179
|
+
"8xl",
|
|
180
|
+
"9xl",
|
|
181
|
+
"base",
|
|
182
|
+
"body",
|
|
183
|
+
"display",
|
|
184
|
+
"label",
|
|
185
|
+
"lg",
|
|
186
|
+
"meta",
|
|
187
|
+
"sm",
|
|
188
|
+
"ui",
|
|
189
|
+
"xl",
|
|
190
|
+
"xs"
|
|
191
|
+
],
|
|
192
|
+
tracking: ["display", "heading", "label", "tight"]
|
|
193
|
+
};
|
|
194
|
+
var TW_MERGE_CLASS_GROUPS = {
|
|
195
|
+
duration: [{ duration: ["cinematic", "flow", "micro", "reveal"] }]
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// src/utils/cn.ts
|
|
199
|
+
var twMerge = extendTailwindMerge({
|
|
200
|
+
extend: {
|
|
201
|
+
theme: Object.fromEntries(
|
|
202
|
+
Object.entries(TW_MERGE_THEME).map(([key, values]) => [key, [...values]])
|
|
203
|
+
),
|
|
204
|
+
classGroups: Object.fromEntries(
|
|
205
|
+
Object.entries(TW_MERGE_CLASS_GROUPS).map(([key, groups]) => [
|
|
206
|
+
key,
|
|
207
|
+
groups.map(
|
|
208
|
+
(group) => Object.fromEntries(Object.entries(group).map(([k, v]) => [k, [...v]]))
|
|
209
|
+
)
|
|
210
|
+
])
|
|
211
|
+
)
|
|
212
|
+
}
|
|
213
|
+
});
|
|
138
214
|
function cn(...inputs) {
|
|
139
215
|
return twMerge(clsx(inputs));
|
|
140
216
|
}
|
|
@@ -147,17 +223,17 @@ function asPlainStyle(style) {
|
|
|
147
223
|
function withHtmlProps(Component2) {
|
|
148
224
|
return Component2;
|
|
149
225
|
}
|
|
150
|
-
var
|
|
151
|
-
var
|
|
152
|
-
var
|
|
153
|
-
var
|
|
226
|
+
var AccordionItemBase = withHtmlProps(Accordion$1.Item);
|
|
227
|
+
var AccordionHeaderBase = withHtmlProps(Accordion$1.Header);
|
|
228
|
+
var AccordionTriggerBase = withHtmlProps(Accordion$1.Trigger);
|
|
229
|
+
var AccordionPanelBase = withHtmlProps(Accordion$1.Panel);
|
|
154
230
|
var Accordion = Accordion$1.Root;
|
|
155
231
|
var AccordionItem = ({
|
|
156
232
|
className,
|
|
157
233
|
ref,
|
|
158
234
|
...props
|
|
159
235
|
}) => /* @__PURE__ */ jsx(
|
|
160
|
-
|
|
236
|
+
AccordionItemBase,
|
|
161
237
|
{
|
|
162
238
|
ref,
|
|
163
239
|
className: cn("border-b border-border/70 last:border-b-0", className),
|
|
@@ -171,8 +247,8 @@ var AccordionTrigger = ({
|
|
|
171
247
|
size = "default",
|
|
172
248
|
ref,
|
|
173
249
|
...props
|
|
174
|
-
}) => /* @__PURE__ */ jsx(
|
|
175
|
-
|
|
250
|
+
}) => /* @__PURE__ */ jsx(AccordionHeaderBase, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
251
|
+
AccordionTriggerBase,
|
|
176
252
|
{
|
|
177
253
|
ref,
|
|
178
254
|
className: cn(
|
|
@@ -204,11 +280,11 @@ var AccordionContent = ({
|
|
|
204
280
|
ref,
|
|
205
281
|
...props
|
|
206
282
|
}) => /* @__PURE__ */ jsx(
|
|
207
|
-
|
|
283
|
+
AccordionPanelBase,
|
|
208
284
|
{
|
|
209
285
|
ref,
|
|
210
286
|
...keepMounted ? { keepMounted: true } : {},
|
|
211
|
-
className: "text-sm leading-relaxed data-[
|
|
287
|
+
className: "text-sm leading-relaxed h-[var(--accordion-panel-height,auto)] data-[starting-style]:h-0 data-[ending-style]:h-0 overflow-hidden text-muted-foreground transition-[height,opacity] duration-flow ease-out",
|
|
212
288
|
...props,
|
|
213
289
|
children: /* @__PURE__ */ jsx("div", { className: cn(size === "small" ? "pb-2.5 pt-0" : "pb-4 pt-0", className), children })
|
|
214
290
|
}
|
|
@@ -225,14 +301,14 @@ var motionDurations = {
|
|
|
225
301
|
cinematic: 500
|
|
226
302
|
};
|
|
227
303
|
var easings = {
|
|
228
|
-
easeOut: [0,
|
|
304
|
+
easeOut: [0.16, 1, 0.3, 1],
|
|
229
305
|
easeInOut: [0.4, 0, 0.2, 1],
|
|
230
306
|
spring: [0.34, 1.56, 0.64, 1]};
|
|
231
307
|
var motionVariants = {
|
|
232
308
|
fadeInUp: {
|
|
233
|
-
initial: { opacity: 0,
|
|
234
|
-
animate: { opacity: 1,
|
|
235
|
-
exit: { opacity: 0,
|
|
309
|
+
initial: { opacity: 0, transform: "translateY(20px)" },
|
|
310
|
+
animate: { opacity: 1, transform: "translateY(0px)" },
|
|
311
|
+
exit: { opacity: 0, transform: "translateY(10px)" }
|
|
236
312
|
},
|
|
237
313
|
scaleIn: {
|
|
238
314
|
initial: { opacity: 0, scale: 0.95 },
|
|
@@ -242,30 +318,35 @@ var motionVariants = {
|
|
|
242
318
|
var staggerContainers = {
|
|
243
319
|
fast: {
|
|
244
320
|
initial: {},
|
|
245
|
-
animate: { transition: { staggerChildren: 0.
|
|
321
|
+
animate: { transition: { staggerChildren: 0.04, delayChildren: 0 } }
|
|
246
322
|
},
|
|
247
323
|
normal: {
|
|
248
324
|
initial: {},
|
|
249
|
-
animate: { transition: { staggerChildren: 0.
|
|
325
|
+
animate: { transition: { staggerChildren: 0.06, delayChildren: 0.04 } }
|
|
250
326
|
},
|
|
251
327
|
slow: {
|
|
252
328
|
initial: {},
|
|
253
|
-
animate: { transition: { staggerChildren: 0.
|
|
329
|
+
animate: { transition: { staggerChildren: 0.08, delayChildren: 0.05 } }
|
|
254
330
|
}
|
|
255
331
|
};
|
|
256
332
|
var viewportSettings = {
|
|
257
333
|
once: { once: true, margin: "-100px" }};
|
|
258
|
-
|
|
259
|
-
// src/utils/brand-colors.ts
|
|
260
334
|
var BRAND_FALLBACK = {
|
|
261
335
|
/** VI 云毓蓝 — identity only */
|
|
262
|
-
primary: "
|
|
263
|
-
accent: "
|
|
264
|
-
tertiary: "
|
|
265
|
-
primaryDark: "
|
|
266
|
-
backDark: "
|
|
267
|
-
/**
|
|
268
|
-
productPrimary: "
|
|
336
|
+
primary: tokenColor("--brand-primary"),
|
|
337
|
+
accent: tokenColor("--brand-accent"),
|
|
338
|
+
tertiary: tokenColor("--brand-tertiary"),
|
|
339
|
+
primaryDark: tokenColor("--nebutra-blue-600"),
|
|
340
|
+
backDark: tokenColor("--nebutra-blue-950"),
|
|
341
|
+
/** Product action — semantic --primary */
|
|
342
|
+
productPrimary: tokenColor("--primary"),
|
|
343
|
+
/**
|
|
344
|
+
* Brand mark fallback (= product action: the factory recipe sets
|
|
345
|
+
* --brand-mark: var(--primary)). Skins may diverge.
|
|
346
|
+
*/
|
|
347
|
+
brandMark: tokenColor("--primary"),
|
|
348
|
+
brandMarkForeground: tokenColor("--primary-foreground")
|
|
349
|
+
};
|
|
269
350
|
function readCssVar(name, fallback) {
|
|
270
351
|
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
271
352
|
return fallback;
|
|
@@ -281,7 +362,10 @@ function asCssColor(value, fallback) {
|
|
|
281
362
|
return `hsl(${v})`;
|
|
282
363
|
}
|
|
283
364
|
function getProductPrimary() {
|
|
284
|
-
return asCssColor(
|
|
365
|
+
return asCssColor(
|
|
366
|
+
readCssVar("--primary", tokenValue("--primary")),
|
|
367
|
+
BRAND_FALLBACK.productPrimary
|
|
368
|
+
);
|
|
285
369
|
}
|
|
286
370
|
function getBrandPrimary() {
|
|
287
371
|
return asCssVarColor("--brand-primary", BRAND_FALLBACK.primary);
|
|
@@ -302,23 +386,23 @@ var StatusIcon = ({
|
|
|
302
386
|
const sizeClass = size === "sm" ? "h-3.5 w-3.5" : "h-4.5 w-4.5";
|
|
303
387
|
switch (status) {
|
|
304
388
|
case "completed":
|
|
305
|
-
return /* @__PURE__ */ jsx(CheckCircle, { className: cn(sizeClass, "text-
|
|
389
|
+
return /* @__PURE__ */ jsx(CheckCircle, { className: cn(sizeClass, "text-success-strong") });
|
|
306
390
|
case "in-progress":
|
|
307
391
|
return /* @__PURE__ */ jsx(ClockDashed, { className: cn(sizeClass, "text-primary") });
|
|
308
392
|
case "need-help":
|
|
309
|
-
return /* @__PURE__ */ jsx(Warning, { className: cn(sizeClass, "text-
|
|
393
|
+
return /* @__PURE__ */ jsx(Warning, { className: cn(sizeClass, "text-warning-strong") });
|
|
310
394
|
case "failed":
|
|
311
|
-
return /* @__PURE__ */ jsx(CrossCircle, { className: cn(sizeClass, "text-
|
|
395
|
+
return /* @__PURE__ */ jsx(CrossCircle, { className: cn(sizeClass, "text-destructive-strong") });
|
|
312
396
|
default:
|
|
313
397
|
return /* @__PURE__ */ jsx(Status, { className: cn(sizeClass, "text-muted-foreground") });
|
|
314
398
|
}
|
|
315
399
|
};
|
|
316
400
|
var StatusBadge = ({ status }) => {
|
|
317
401
|
const colorClasses = {
|
|
318
|
-
completed: "bg-
|
|
402
|
+
completed: "bg-success/15 text-success-strong",
|
|
319
403
|
"in-progress": "bg-primary/10 text-primary",
|
|
320
|
-
"need-help": "bg-
|
|
321
|
-
failed: "bg-
|
|
404
|
+
"need-help": "bg-warning/15 text-warning-strong",
|
|
405
|
+
failed: "bg-destructive/15 text-destructive-strong",
|
|
322
406
|
pending: "bg-muted text-muted-foreground"
|
|
323
407
|
};
|
|
324
408
|
return /* @__PURE__ */ jsx(
|
|
@@ -712,7 +796,7 @@ var alertVariants = cva("flex items-stretch w-full gap-2 group-[.toaster]:w-(--w
|
|
|
712
796
|
{
|
|
713
797
|
variant: "destructive",
|
|
714
798
|
appearance: "outline",
|
|
715
|
-
className: "border border-border bg-background text-destructive [&_[data-slot=alert-close]]:text-foreground"
|
|
799
|
+
className: "border border-border bg-background text-destructive-strong [&_[data-slot=alert-close]]:text-foreground"
|
|
716
800
|
},
|
|
717
801
|
{
|
|
718
802
|
variant: "success",
|
|
@@ -782,7 +866,7 @@ var alertVariants = cva("flex items-stretch w-full gap-2 group-[.toaster]:w-(--w
|
|
|
782
866
|
{
|
|
783
867
|
variant: "mono",
|
|
784
868
|
icon: "destructive",
|
|
785
|
-
className: "[&_[data-slot=alert-icon]]:text-destructive"
|
|
869
|
+
className: "[&_[data-slot=alert-icon]]:text-destructive-strong"
|
|
786
870
|
},
|
|
787
871
|
{
|
|
788
872
|
variant: "mono",
|
|
@@ -804,6 +888,7 @@ function Alert({
|
|
|
804
888
|
appearance,
|
|
805
889
|
close = false,
|
|
806
890
|
onClose,
|
|
891
|
+
closeLabel = "Dismiss",
|
|
807
892
|
children,
|
|
808
893
|
...props
|
|
809
894
|
}) {
|
|
@@ -821,7 +906,7 @@ function Alert({
|
|
|
821
906
|
{
|
|
822
907
|
type: "button",
|
|
823
908
|
onClick: onClose,
|
|
824
|
-
"aria-label":
|
|
909
|
+
"aria-label": closeLabel,
|
|
825
910
|
"data-slot": "alert-close",
|
|
826
911
|
className: cn(
|
|
827
912
|
"group shrink-0 size-4 inline-flex items-center justify-center rounded-[var(--radius-sm)]",
|
|
@@ -865,7 +950,7 @@ function AlertContent({ className, ...props }) {
|
|
|
865
950
|
);
|
|
866
951
|
}
|
|
867
952
|
({
|
|
868
|
-
// Nebutra Blue (云毓蓝) — technology & trust
|
|
953
|
+
// Nebutra Blue (云毓蓝) — technology & trust
|
|
869
954
|
blue50: colors.primary[50],
|
|
870
955
|
blue100: colors.primary[100],
|
|
871
956
|
blue200: colors.primary[200],
|
|
@@ -878,7 +963,7 @@ function AlertContent({ className, ...props }) {
|
|
|
878
963
|
blue800: colors.primary[800],
|
|
879
964
|
blue900: colors.primary[900],
|
|
880
965
|
blue950: colors.primary[950],
|
|
881
|
-
// Nebutra Cyan (云毓青) — data flow & intelligence
|
|
966
|
+
// Nebutra Cyan (云毓青) — data flow & intelligence
|
|
882
967
|
cyan50: colors.accent[50],
|
|
883
968
|
cyan100: colors.accent[100],
|
|
884
969
|
cyan200: colors.accent[200],
|
|
@@ -903,6 +988,13 @@ function AlertContent({ className, ...props }) {
|
|
|
903
988
|
neutral800: colors.neutral[800],
|
|
904
989
|
neutral900: colors.neutral[900],
|
|
905
990
|
neutral950: colors.neutral[950],
|
|
991
|
+
// deepest — used as dark background
|
|
992
|
+
// Semantic raw colors — VI §Color Specifications. The 500s are the status
|
|
993
|
+
// tokens; the 600 hover steps have no token of their own.
|
|
994
|
+
// NOTE: info = brand blue, not sky/teal
|
|
995
|
+
red500: tokenColor("--status-danger"),
|
|
996
|
+
green500: tokenColor("--status-success"),
|
|
997
|
+
amber500: tokenColor("--status-warning"),
|
|
906
998
|
white: colors.white,
|
|
907
999
|
black: colors.black
|
|
908
1000
|
});
|
|
@@ -958,6 +1050,18 @@ var primitiveFontWeight = {
|
|
|
958
1050
|
normal: 400,
|
|
959
1051
|
medium: 500,
|
|
960
1052
|
semibold: 600};
|
|
1053
|
+
({
|
|
1054
|
+
/** Default body/UI stack — Geist with CJK falling through to MiSans */
|
|
1055
|
+
sans: fontStack("--font-sans"),
|
|
1056
|
+
/** CJK-locale stack (same order as sans, minus Latin-only system faces) */
|
|
1057
|
+
cnSans: fontStack("--font-cn"),
|
|
1058
|
+
/** Display / hero headlines */
|
|
1059
|
+
display: fontStack("--font-display"),
|
|
1060
|
+
/** Headings */
|
|
1061
|
+
heading: fontStack("--font-heading"),
|
|
1062
|
+
/** Code / monospace */
|
|
1063
|
+
mono: fontStack("--font-mono")
|
|
1064
|
+
});
|
|
961
1065
|
var primitiveShadow = {
|
|
962
1066
|
sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
963
1067
|
md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
|
@@ -975,7 +1079,7 @@ var primitiveTransition = {
|
|
|
975
1079
|
// hero entrance, big delight moments
|
|
976
1080
|
},
|
|
977
1081
|
easing: {
|
|
978
|
-
default: "ease-
|
|
1082
|
+
default: "var(--ease-brand)",
|
|
979
1083
|
inOut: "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
980
1084
|
}
|
|
981
1085
|
};
|
|
@@ -1009,80 +1113,85 @@ var overlayTokens = {
|
|
|
1009
1113
|
}};
|
|
1010
1114
|
var overlayClassNames = {
|
|
1011
1115
|
focusRing: overlayFocusRingClassName,
|
|
1012
|
-
backdrop:
|
|
1116
|
+
backdrop: (
|
|
1117
|
+
// allow-palette: dialog backdrop dims arbitrary app content behind it, must stay dark in both themes
|
|
1118
|
+
"fixed inset-0 bg-black/40 transition-[opacity] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)] data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)] motion-reduce:transition-none"
|
|
1119
|
+
),
|
|
1013
1120
|
modalSurface: [
|
|
1014
1121
|
"fixed left-1/2 top-1/2 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4",
|
|
1015
|
-
"
|
|
1122
|
+
"bg-background p-6 text-foreground",
|
|
1016
1123
|
"rounded-[var(--radius-xl)]",
|
|
1017
|
-
|
|
1124
|
+
"shadow-[0_0_0_1px_var(--edge-soft),var(--elevation-overlay)]",
|
|
1018
1125
|
"outline-none",
|
|
1019
|
-
"transition-[opacity,transform
|
|
1020
|
-
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
1126
|
+
"transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1127
|
+
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
1021
1128
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1022
1129
|
].join(" "),
|
|
1023
1130
|
commandSurface: [
|
|
1024
1131
|
"fixed left-1/2 top-[18vh] w-[calc(100vw-2rem)] max-w-xl -translate-x-1/2 overflow-hidden",
|
|
1025
1132
|
"rounded-[var(--radius-lg)] border border-border/70 bg-popover text-popover-foreground",
|
|
1026
|
-
shadowClasses["2xl"]
|
|
1027
|
-
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-out)]",
|
|
1028
|
-
"data-starting-style:translate-y-[-0.5rem] data-starting-style:scale-95 data-starting-style:opacity-0",
|
|
1029
|
-
"data-ending-style:translate-y-[-0.5rem] data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
1030
|
-
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1133
|
+
shadowClasses["2xl"]
|
|
1031
1134
|
].join(" "),
|
|
1032
1135
|
menuSurface: [
|
|
1033
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
1136
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
1034
1137
|
shadowClasses.xl,
|
|
1035
|
-
"outline-none transition-[opacity,transform
|
|
1036
|
-
"data-[starting-style]:scale-
|
|
1138
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1139
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
1037
1140
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
1038
1141
|
].join(" "),
|
|
1039
1142
|
selectSurface: [
|
|
1040
|
-
"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] overflow-hidden",
|
|
1143
|
+
"max-h-[var(--select-content-max-height)] min-w-[var(--select-content-min-width)] origin-[var(--transform-origin)] overflow-hidden",
|
|
1041
1144
|
"rounded-[var(--select-content-radius)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
1042
1145
|
"shadow-[var(--select-content-shadow)] outline-none",
|
|
1043
|
-
"transition-[opacity,transform
|
|
1044
|
-
"data-starting-style:scale-
|
|
1146
|
+
"transition-[opacity,transform] duration-[var(--select-duration)] ease-[var(--ease-brand)]",
|
|
1147
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0",
|
|
1045
1148
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1046
1149
|
].join(" "),
|
|
1047
1150
|
navigationMenuSurface: [
|
|
1048
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
1151
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-xl)] border border-border/70 bg-popover/95 text-popover-foreground backdrop-blur-md",
|
|
1049
1152
|
shadowClasses.xl,
|
|
1050
|
-
"outline-none transition-[opacity,transform
|
|
1051
|
-
"data-[starting-style]:scale-
|
|
1153
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1154
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
1052
1155
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
1053
1156
|
].join(" "),
|
|
1054
1157
|
popoverSurface: [
|
|
1055
|
-
"w-72 rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md",
|
|
1158
|
+
"w-72 origin-[var(--transform-origin)] rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-4 text-popover-foreground backdrop-blur-md",
|
|
1056
1159
|
shadowClasses.xl,
|
|
1057
|
-
"outline-none transition-[opacity,transform
|
|
1058
|
-
"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-
|
|
1160
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1161
|
+
"data-[open]:opacity-100 data-[closed]:opacity-0 data-[closed]:scale-[0.97] data-[open]:scale-100 data-[closed]:duration-[var(--motion-duration-micro)]",
|
|
1059
1162
|
"motion-reduce:transition-none motion-reduce:data-[closed]:transform-none motion-reduce:data-[open]:transform-none"
|
|
1060
1163
|
].join(" "),
|
|
1061
1164
|
tooltipSurface: [
|
|
1062
|
-
"overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
1165
|
+
"origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
1063
1166
|
shadowClasses.md,
|
|
1064
|
-
"transition-[opacity,transform
|
|
1065
|
-
"data-starting-style:scale-
|
|
1167
|
+
"transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1168
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)]",
|
|
1169
|
+
"data-[instant]:duration-0",
|
|
1066
1170
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
1067
1171
|
].join(" "),
|
|
1068
1172
|
sheetBackdrop: [
|
|
1069
1173
|
"fixed inset-0 bg-[var(--sheet-overlay-background)] backdrop-blur-[var(--sheet-overlay-blur)]",
|
|
1070
|
-
"transition-[opacity
|
|
1071
|
-
"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
|
|
1174
|
+
"transition-[opacity] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1175
|
+
"data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)] motion-reduce:transition-none"
|
|
1072
1176
|
].join(" "),
|
|
1073
1177
|
sheetSurface: [
|
|
1074
1178
|
"fixed flex flex-col overflow-hidden border border-border bg-[var(--sheet-background)] text-foreground shadow-[var(--sheet-shadow)]",
|
|
1075
|
-
"outline-none transition-[opacity,transform
|
|
1076
|
-
"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
|
|
1179
|
+
"outline-none transition-[opacity,transform] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
1180
|
+
"data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-[var(--motion-duration-micro)] motion-reduce:transition-none"
|
|
1077
1181
|
].join(" "),
|
|
1078
|
-
closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-
|
|
1182
|
+
closeButton: `absolute right-4 top-4 rounded-[var(--radius-sm)] opacity-70 ring-offset-background ${overlayFocusRingClassName} transition-opacity duration-[var(--motion-duration-micro)] ease-[var(--ease-brand)] hover:opacity-100 disabled:pointer-events-none data-[open]:bg-accent data-[open]:text-muted-foreground motion-reduce:transition-none`
|
|
1079
1183
|
};
|
|
1080
1184
|
var buttonVariants = cva(
|
|
1081
1185
|
[
|
|
1082
1186
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap",
|
|
1083
1187
|
"rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
1084
1188
|
"text-[length:var(--control-font-size-md,0.875rem)] font-[number:var(--font-weight-medium,500)]",
|
|
1085
|
-
|
|
1189
|
+
// `transform` is in the property list on purpose: without it the
|
|
1190
|
+
// active:scale-[0.97] press snapped instantly and the button felt dead
|
|
1191
|
+
// under the finger. Duration/ease stay on the flow rail — motion
|
|
1192
|
+
// governance pins them (primitives/__tests__/motion-governance.test.ts).
|
|
1193
|
+
"transition-[color,background-color,border-color,box-shadow,transform] duration-flow ease-[var(--ease-brand)]",
|
|
1194
|
+
"active:scale-[0.97] motion-reduce:active:scale-100 motion-reduce:transition-none",
|
|
1086
1195
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
1087
1196
|
"aria-busy:cursor-wait"
|
|
1088
1197
|
].join(" "),
|
|
@@ -1091,7 +1200,7 @@ var buttonVariants = cva(
|
|
|
1091
1200
|
variant: {
|
|
1092
1201
|
// Recipe-driven via packages/design/tokens/recipe.css (.btn-brand-default)
|
|
1093
1202
|
default: "btn-brand-default",
|
|
1094
|
-
ink: "bg-
|
|
1203
|
+
ink: "bg-neutral-12 text-neutral-1 ring-1 ring-inset ring-neutral-1/5 hover:bg-neutral-11 hover:-translate-y-px active:translate-y-0 transition-[transform,background-color] duration-micro",
|
|
1095
1204
|
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
1096
1205
|
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
1097
1206
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
@@ -1371,37 +1480,37 @@ var PRESETS = {
|
|
|
1371
1480
|
* Pair with `AnimateSwap`.
|
|
1372
1481
|
*/
|
|
1373
1482
|
swap: {
|
|
1374
|
-
initial: { opacity: 0,
|
|
1375
|
-
animate: { opacity: 1,
|
|
1376
|
-
exit: { opacity: 0,
|
|
1483
|
+
initial: { opacity: 0, transform: "translateY(10px)", filter: "blur(4px)" },
|
|
1484
|
+
animate: { opacity: 1, transform: "translateY(0px)", filter: "blur(0px)" },
|
|
1485
|
+
exit: { opacity: 0, transform: "translateY(-10px)", filter: "blur(4px)" },
|
|
1377
1486
|
transition: { duration: motionDurations.reveal / 1e3 }
|
|
1378
1487
|
},
|
|
1379
1488
|
/** Off-canvas panel entering from the right edge (drawer, sheet). */
|
|
1380
1489
|
slideFromRight: {
|
|
1381
|
-
initial: {
|
|
1382
|
-
animate: {
|
|
1383
|
-
exit: {
|
|
1490
|
+
initial: { transform: "translateX(100%)" },
|
|
1491
|
+
animate: { transform: "translateX(0%)" },
|
|
1492
|
+
exit: { transform: "translateX(100%)" },
|
|
1384
1493
|
transition: brandSpring.default
|
|
1385
1494
|
},
|
|
1386
1495
|
/** Off-canvas panel entering from the left edge. */
|
|
1387
1496
|
slideFromLeft: {
|
|
1388
|
-
initial: {
|
|
1389
|
-
animate: {
|
|
1390
|
-
exit: {
|
|
1497
|
+
initial: { transform: "translateX(-100%)" },
|
|
1498
|
+
animate: { transform: "translateX(0%)" },
|
|
1499
|
+
exit: { transform: "translateX(-100%)" },
|
|
1391
1500
|
transition: brandSpring.default
|
|
1392
1501
|
},
|
|
1393
1502
|
/** Off-canvas panel entering from the top edge (banner, command bar). */
|
|
1394
1503
|
slideFromTop: {
|
|
1395
|
-
initial: {
|
|
1396
|
-
animate: {
|
|
1397
|
-
exit: {
|
|
1504
|
+
initial: { transform: "translateY(-100%)" },
|
|
1505
|
+
animate: { transform: "translateY(0%)" },
|
|
1506
|
+
exit: { transform: "translateY(-100%)" },
|
|
1398
1507
|
transition: brandSpring.default
|
|
1399
1508
|
},
|
|
1400
1509
|
/** Off-canvas panel entering from the bottom edge (mobile action sheet). */
|
|
1401
1510
|
slideFromBottom: {
|
|
1402
|
-
initial: {
|
|
1403
|
-
animate: {
|
|
1404
|
-
exit: {
|
|
1511
|
+
initial: { transform: "translateY(100%)" },
|
|
1512
|
+
animate: { transform: "translateY(0%)" },
|
|
1513
|
+
exit: { transform: "translateY(100%)" },
|
|
1405
1514
|
transition: brandSpring.default
|
|
1406
1515
|
}
|
|
1407
1516
|
};
|
|
@@ -1411,7 +1520,7 @@ function MotionDiv(props) {
|
|
|
1411
1520
|
function AnimateIn(props) {
|
|
1412
1521
|
const {
|
|
1413
1522
|
children,
|
|
1414
|
-
preset = "
|
|
1523
|
+
preset = "fade",
|
|
1415
1524
|
delay = 0,
|
|
1416
1525
|
duration,
|
|
1417
1526
|
inView = false,
|
|
@@ -1419,7 +1528,7 @@ function AnimateIn(props) {
|
|
|
1419
1528
|
...rest
|
|
1420
1529
|
} = props;
|
|
1421
1530
|
const shouldReduce = useReducedMotion();
|
|
1422
|
-
const base = PRESETS[preset] || PRESETS.
|
|
1531
|
+
const base = PRESETS[preset] || PRESETS.fade;
|
|
1423
1532
|
const initial = shouldReduce ? { opacity: 0 } : base.initial;
|
|
1424
1533
|
const animate2 = shouldReduce ? { opacity: 1 } : base.animate;
|
|
1425
1534
|
const exit = shouldReduce ? { opacity: 0 } : "exit" in base ? base.exit : void 0;
|
|
@@ -2078,7 +2187,7 @@ function AnimatedShinyText({
|
|
|
2078
2187
|
className: cn(
|
|
2079
2188
|
"mx-auto max-w-md text-muted-foreground/70",
|
|
2080
2189
|
// Shine gradient
|
|
2081
|
-
"bg-gradient-to-r from-transparent via-
|
|
2190
|
+
"bg-gradient-to-r from-transparent via-foreground/80 via-50% to-transparent",
|
|
2082
2191
|
className
|
|
2083
2192
|
),
|
|
2084
2193
|
...props,
|
|
@@ -2131,8 +2240,14 @@ var badgeVariants = cva(
|
|
|
2131
2240
|
"teal-subtle": "bg-info/10 text-info fill-current border-transparent",
|
|
2132
2241
|
inverted: "bg-foreground text-background fill-current",
|
|
2133
2242
|
// Special visual treatments (intentional product design, not brand hex)
|
|
2134
|
-
trial:
|
|
2135
|
-
|
|
2243
|
+
trial: (
|
|
2244
|
+
// allow-palette: the trial gradient is fixed and vivid in both themes, so its ink is fixed white
|
|
2245
|
+
"bg-gradient-to-br from-trial-start to-trial-end text-white fill-current"
|
|
2246
|
+
),
|
|
2247
|
+
turbo: (
|
|
2248
|
+
// allow-palette: the turbo gradient is fixed and vivid in both themes, so its ink is fixed white
|
|
2249
|
+
"bg-gradient-to-br from-turbo-start to-turbo-end text-white fill-current"
|
|
2250
|
+
),
|
|
2136
2251
|
pill: "bg-background text-foreground fill-foreground border-border hover:bg-muted/50 focus-visible:bg-muted/50",
|
|
2137
2252
|
beta: "border-transparent bg-muted text-muted-foreground",
|
|
2138
2253
|
new: "border-transparent bg-primary/10 text-primary",
|
|
@@ -2295,62 +2410,66 @@ function AppleLiquidGlassSwitcher({
|
|
|
2295
2410
|
setInternalValue(newValue);
|
|
2296
2411
|
}
|
|
2297
2412
|
};
|
|
2298
|
-
return
|
|
2299
|
-
|
|
2300
|
-
/* @__PURE__ */
|
|
2301
|
-
/* @__PURE__ */ jsx("
|
|
2302
|
-
|
|
2303
|
-
{
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
{
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
motion.div,
|
|
2336
|
-
{
|
|
2337
|
-
...shouldReduceMotion ? {} : { layoutId: "apple-glass-switcher-active" },
|
|
2338
|
-
className: "absolute inset-0 rounded-full bg-white/20 shadow-[inset_0_1px_1px_rgba(255,255,255,0.4),0_2px_10px_rgba(0,0,0,0.2)] backdrop-blur-md",
|
|
2339
|
-
initial: false,
|
|
2340
|
-
transition: shouldReduceMotion ? { duration: 0 } : {
|
|
2341
|
-
type: "spring",
|
|
2342
|
-
stiffness: 400,
|
|
2343
|
-
damping: 30
|
|
2413
|
+
return (
|
|
2414
|
+
// allow-palette: fixed dark liquid-glass pill, deliberately identical across themes
|
|
2415
|
+
/* @__PURE__ */ jsxs("fieldset", { className: "relative inline-flex items-center p-1.5 rounded-full bg-black/40 dark:bg-black/60 border border-white/10 shadow-[0_8px_32px_0_rgba(0,0,0,0.3)] backdrop-blur-[20px] overflow-hidden", children: [
|
|
2416
|
+
/* @__PURE__ */ jsx("legend", { className: "sr-only", children: "Choose theme" }),
|
|
2417
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 z-0 opacity-[0.15] mix-blend-overlay", children: /* @__PURE__ */ jsxs("svg", { "aria-hidden": "true", className: "w-full h-full", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2418
|
+
/* @__PURE__ */ jsx("filter", { id: "noise", children: /* @__PURE__ */ jsx(
|
|
2419
|
+
"feTurbulence",
|
|
2420
|
+
{
|
|
2421
|
+
type: "fractalNoise",
|
|
2422
|
+
baseFrequency: "0.8",
|
|
2423
|
+
numOctaves: "4",
|
|
2424
|
+
stitchTiles: "stitch"
|
|
2425
|
+
}
|
|
2426
|
+
) }),
|
|
2427
|
+
/* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", filter: "url(#noise)" })
|
|
2428
|
+
] }) }),
|
|
2429
|
+
/* @__PURE__ */ jsx("div", { className: "relative z-10 flex w-full", children: themeOptions.map((option) => {
|
|
2430
|
+
const isActive = activeValue === option.value;
|
|
2431
|
+
return /* @__PURE__ */ jsxs(
|
|
2432
|
+
"label",
|
|
2433
|
+
{
|
|
2434
|
+
htmlFor: `theme-switch-${option.value}`,
|
|
2435
|
+
className: `relative cursor-pointer p-3 rounded-full transition-colors duration-300 ease-in-out ${// allow-palette: fixed dark liquid-glass pill, deliberately identical across themes
|
|
2436
|
+
isActive ? "text-white" : "text-white/50 hover:text-white/80"}`,
|
|
2437
|
+
title: option.label,
|
|
2438
|
+
children: [
|
|
2439
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: option.label }),
|
|
2440
|
+
/* @__PURE__ */ jsx(
|
|
2441
|
+
"input",
|
|
2442
|
+
{
|
|
2443
|
+
id: `theme-switch-${option.value}`,
|
|
2444
|
+
className: "sr-only",
|
|
2445
|
+
type: "radio",
|
|
2446
|
+
name: "theme",
|
|
2447
|
+
value: option.value,
|
|
2448
|
+
checked: isActive,
|
|
2449
|
+
onChange: () => handleChange(option.value)
|
|
2344
2450
|
}
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2451
|
+
),
|
|
2452
|
+
isActive && /* @__PURE__ */ jsx(
|
|
2453
|
+
motion.div,
|
|
2454
|
+
{
|
|
2455
|
+
...shouldReduceMotion ? {} : { layoutId: "apple-glass-switcher-active" },
|
|
2456
|
+
className: "absolute inset-0 rounded-full bg-white/20 shadow-[inset_0_1px_1px_rgba(255,255,255,0.4),0_2px_10px_rgba(0,0,0,0.2)] backdrop-blur-md",
|
|
2457
|
+
initial: false,
|
|
2458
|
+
transition: shouldReduceMotion ? { duration: 0 } : {
|
|
2459
|
+
type: "spring",
|
|
2460
|
+
stiffness: 400,
|
|
2461
|
+
damping: 30
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
),
|
|
2465
|
+
/* @__PURE__ */ jsx("span", { className: "relative z-10 flex items-center justify-center", children: option.icon })
|
|
2466
|
+
]
|
|
2467
|
+
},
|
|
2468
|
+
option.value
|
|
2469
|
+
);
|
|
2470
|
+
}) })
|
|
2471
|
+
] })
|
|
2472
|
+
);
|
|
2354
2473
|
}
|
|
2355
2474
|
var AspectRatio = ({
|
|
2356
2475
|
ratio = 1,
|
|
@@ -2376,7 +2495,8 @@ function AssistedPasswordConfirmation({
|
|
|
2376
2495
|
onConfirmChange,
|
|
2377
2496
|
onMatch,
|
|
2378
2497
|
className,
|
|
2379
|
-
showHint = true
|
|
2498
|
+
showHint = true,
|
|
2499
|
+
inputLabel = "Confirm password"
|
|
2380
2500
|
}) {
|
|
2381
2501
|
const [confirmPassword, setConfirmPassword] = useState("");
|
|
2382
2502
|
const [shake, setShake] = useState(false);
|
|
@@ -2403,7 +2523,7 @@ function AssistedPasswordConfirmation({
|
|
|
2403
2523
|
}, [passwordsMatch, confirmPassword.length, onMatch]);
|
|
2404
2524
|
const getLetterStatus = (letter, index) => {
|
|
2405
2525
|
if (!confirmPassword[index]) return "";
|
|
2406
|
-
return confirmPassword[index] === letter ? "bg-
|
|
2526
|
+
return confirmPassword[index] === letter ? "bg-success/20" : "bg-destructive/20";
|
|
2407
2527
|
};
|
|
2408
2528
|
const bounceAnimation = {
|
|
2409
2529
|
x: shouldReduceMotion ? 0 : shake ? [-10, 10, -10, 10, 0] : 0,
|
|
@@ -2475,7 +2595,7 @@ function AssistedPasswordConfirmation({
|
|
|
2475
2595
|
value: confirmPassword,
|
|
2476
2596
|
onChange: handleConfirmPasswordChange,
|
|
2477
2597
|
animate: borderAnimation,
|
|
2478
|
-
"aria-label":
|
|
2598
|
+
"aria-label": inputLabel
|
|
2479
2599
|
}
|
|
2480
2600
|
)
|
|
2481
2601
|
}
|
|
@@ -2850,7 +2970,7 @@ function AvatarCircles({
|
|
|
2850
2970
|
children: /* @__PURE__ */ jsx(
|
|
2851
2971
|
Image4,
|
|
2852
2972
|
{
|
|
2853
|
-
className: "rounded-full border-2 border-
|
|
2973
|
+
className: "rounded-full border-2 border-background",
|
|
2854
2974
|
src: avatar.imageUrl,
|
|
2855
2975
|
width: size,
|
|
2856
2976
|
height: size,
|
|
@@ -2886,7 +3006,7 @@ var GitHubIcon = () => /* @__PURE__ */ jsx("svg", { className: "h-3.5 w-3.5 fill
|
|
|
2886
3006
|
var GitLabIcon = () => /* @__PURE__ */ jsxs(
|
|
2887
3007
|
"svg",
|
|
2888
3008
|
{
|
|
2889
|
-
"aria-label": "
|
|
3009
|
+
"aria-label": "GitLab",
|
|
2890
3010
|
height: "14",
|
|
2891
3011
|
viewBox: "0 0 24 22",
|
|
2892
3012
|
width: "14",
|
|
@@ -3041,20 +3161,65 @@ function DiceBearAvatar({
|
|
|
3041
3161
|
/* @__PURE__ */ jsx(AvatarFallback, { size, children: getAvatarInitials(seed) })
|
|
3042
3162
|
] });
|
|
3043
3163
|
}
|
|
3044
|
-
|
|
3164
|
+
|
|
3165
|
+
// src/tokens/components/interaction.ts
|
|
3166
|
+
var interaction = {
|
|
3167
|
+
/**
|
|
3168
|
+
* Tooltips. The first one waits so a sweeping pointer does not strobe;
|
|
3169
|
+
* once one is open, its neighbours open instantly if the pointer arrives
|
|
3170
|
+
* within the skip window. Radix Tooltip defaults: delayDuration 700,
|
|
3171
|
+
* skipDelayDuration 300. Vercel/Kowalski: "delay the first tooltip only".
|
|
3172
|
+
*/
|
|
3173
|
+
tooltip: { delayMs: 700, skipWindowMs: 300 }};
|
|
3174
|
+
var DEFAULT_TOOLTIP_DELAY_MS = interaction.tooltip.delayMs;
|
|
3175
|
+
var SKIP_DELAY_WINDOW_MS = interaction.tooltip.skipWindowMs;
|
|
3176
|
+
var lastTooltipOpenAt = 0;
|
|
3177
|
+
var skipDelayListeners = /* @__PURE__ */ new Set();
|
|
3178
|
+
function markTooltipOpened() {
|
|
3179
|
+
lastTooltipOpenAt = Date.now();
|
|
3180
|
+
for (const listener of skipDelayListeners) listener();
|
|
3181
|
+
}
|
|
3182
|
+
function shouldSkipDelay() {
|
|
3183
|
+
return Date.now() - lastTooltipOpenAt < SKIP_DELAY_WINDOW_MS;
|
|
3184
|
+
}
|
|
3185
|
+
function useSkipDelay() {
|
|
3186
|
+
const [, tick] = React45.useReducer((count) => count + 1, 0);
|
|
3187
|
+
React45.useEffect(() => {
|
|
3188
|
+
skipDelayListeners.add(tick);
|
|
3189
|
+
return () => {
|
|
3190
|
+
skipDelayListeners.delete(tick);
|
|
3191
|
+
};
|
|
3192
|
+
}, []);
|
|
3193
|
+
return shouldSkipDelay();
|
|
3194
|
+
}
|
|
3195
|
+
var TooltipInstantContext = React45.createContext(false);
|
|
3045
3196
|
var TooltipProvider = ({
|
|
3046
3197
|
children,
|
|
3047
3198
|
delayDuration = DEFAULT_TOOLTIP_DELAY_MS
|
|
3048
3199
|
}) => {
|
|
3049
|
-
|
|
3200
|
+
const skipDelay = useSkipDelay();
|
|
3201
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay: skipDelay ? 0 : delayDuration, children });
|
|
3050
3202
|
};
|
|
3051
3203
|
var Tooltip = ({
|
|
3052
3204
|
delayDuration,
|
|
3053
3205
|
children,
|
|
3206
|
+
onOpenChange,
|
|
3054
3207
|
...props
|
|
3055
3208
|
}) => {
|
|
3056
|
-
const
|
|
3057
|
-
|
|
3209
|
+
const skipDelay = useSkipDelay();
|
|
3210
|
+
const instant2 = delayDuration == null && skipDelay;
|
|
3211
|
+
const delay = delayDuration ?? (instant2 ? 0 : DEFAULT_TOOLTIP_DELAY_MS);
|
|
3212
|
+
return /* @__PURE__ */ jsx(TooltipInstantContext.Provider, { value: instant2, children: /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay, children: /* @__PURE__ */ jsx(
|
|
3213
|
+
Tooltip$1.Root,
|
|
3214
|
+
{
|
|
3215
|
+
...props,
|
|
3216
|
+
onOpenChange: (open, eventDetails) => {
|
|
3217
|
+
if (open) markTooltipOpened();
|
|
3218
|
+
onOpenChange?.(open, eventDetails);
|
|
3219
|
+
},
|
|
3220
|
+
children
|
|
3221
|
+
}
|
|
3222
|
+
) }) });
|
|
3058
3223
|
};
|
|
3059
3224
|
var TooltipTrigger = ({
|
|
3060
3225
|
asChild,
|
|
@@ -3084,25 +3249,29 @@ var TooltipContent = ({
|
|
|
3084
3249
|
alignOffset = 0,
|
|
3085
3250
|
ref,
|
|
3086
3251
|
...props
|
|
3087
|
-
}) =>
|
|
3088
|
-
|
|
3089
|
-
{
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3252
|
+
}) => {
|
|
3253
|
+
const instant2 = React45.use(TooltipInstantContext);
|
|
3254
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
3255
|
+
Tooltip$1.Positioner,
|
|
3256
|
+
{
|
|
3257
|
+
side,
|
|
3258
|
+
align,
|
|
3259
|
+
sideOffset,
|
|
3260
|
+
alignOffset,
|
|
3261
|
+
style: { zIndex: overlayZIndex.tooltip },
|
|
3262
|
+
children: /* @__PURE__ */ jsx(
|
|
3263
|
+
Tooltip$1.Popup,
|
|
3264
|
+
{
|
|
3265
|
+
ref,
|
|
3266
|
+
className: cn(overlayClassNames.tooltipSurface, className),
|
|
3267
|
+
"data-instant": instant2 || void 0,
|
|
3268
|
+
style: { zIndex: overlayZIndex.tooltip, ...style },
|
|
3269
|
+
...props
|
|
3270
|
+
}
|
|
3271
|
+
)
|
|
3272
|
+
}
|
|
3273
|
+
) });
|
|
3274
|
+
};
|
|
3106
3275
|
TooltipContent.displayName = "TooltipContent";
|
|
3107
3276
|
function getAvatarUserKey(user) {
|
|
3108
3277
|
return [user.name, user.role ?? "member", user.image ?? "no-image"].join("|");
|
|
@@ -3176,10 +3345,17 @@ function AvatarSmartGroup({
|
|
|
3176
3345
|
) });
|
|
3177
3346
|
}
|
|
3178
3347
|
var levelColors = {
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3348
|
+
// Bronze, silver and gold are materials, not brand roles: a Brand Package
|
|
3349
|
+
// must not turn a gold medal indigo, so these stay literal.
|
|
3350
|
+
// Each material carries its own ink: the pill used text-primary-foreground,
|
|
3351
|
+
// which flips to near-black with the House ink in dark mode.
|
|
3352
|
+
// allow-palette: medal material colour (bronze) and its ink, not a themeable role
|
|
3353
|
+
bronze: "from-amber-600 to-amber-800 text-white",
|
|
3354
|
+
// allow-palette: medal material colour (silver) and its ink, not a themeable role
|
|
3355
|
+
silver: "from-gray-500 to-gray-700 text-white",
|
|
3356
|
+
// allow-palette: medal material colour (gold) and its ink, not a themeable role
|
|
3357
|
+
gold: "from-yellow-400 to-yellow-600 text-amber-950",
|
|
3358
|
+
platinum: "from-muted to-muted-foreground text-foreground"
|
|
3183
3359
|
};
|
|
3184
3360
|
function Awards({
|
|
3185
3361
|
variant = "badge",
|
|
@@ -3244,7 +3420,7 @@ function Awards({
|
|
|
3244
3420
|
{
|
|
3245
3421
|
d: createSerratedPath(),
|
|
3246
3422
|
strokeWidth: "0.2",
|
|
3247
|
-
className: "fill-
|
|
3423
|
+
className: "fill-background stroke-foreground"
|
|
3248
3424
|
}
|
|
3249
3425
|
),
|
|
3250
3426
|
/* @__PURE__ */ jsx(
|
|
@@ -3253,17 +3429,17 @@ function Awards({
|
|
|
3253
3429
|
cx: "96",
|
|
3254
3430
|
cy: "96",
|
|
3255
3431
|
r: "78",
|
|
3256
|
-
className: "fill-
|
|
3432
|
+
className: "fill-background stroke-foreground",
|
|
3257
3433
|
strokeWidth: "0.2"
|
|
3258
3434
|
}
|
|
3259
3435
|
),
|
|
3260
|
-
/* @__PURE__ */ jsx("text", { className: "fill-
|
|
3436
|
+
/* @__PURE__ */ jsx("text", { className: "fill-background text-xl font-bold", children: /* @__PURE__ */ jsx(
|
|
3261
3437
|
"textPath",
|
|
3262
3438
|
{
|
|
3263
3439
|
href: "#top-curve",
|
|
3264
3440
|
startOffset: "50%",
|
|
3265
3441
|
textAnchor: "middle",
|
|
3266
|
-
className: "fill-
|
|
3442
|
+
className: "fill-foreground",
|
|
3267
3443
|
children: title
|
|
3268
3444
|
}
|
|
3269
3445
|
) }),
|
|
@@ -3273,7 +3449,7 @@ function Awards({
|
|
|
3273
3449
|
href: "#bottom-curve",
|
|
3274
3450
|
startOffset: "50%",
|
|
3275
3451
|
textAnchor: "middle",
|
|
3276
|
-
className: "fill-
|
|
3452
|
+
className: "fill-foreground",
|
|
3277
3453
|
children: subtitle
|
|
3278
3454
|
}
|
|
3279
3455
|
) })
|
|
@@ -3318,7 +3494,7 @@ function Awards({
|
|
|
3318
3494
|
"div",
|
|
3319
3495
|
{
|
|
3320
3496
|
className: cn(
|
|
3321
|
-
"mt-6 mb-2 inline-block rounded-[var(--radius-md)] px-4 py-1 tracking-wider
|
|
3497
|
+
"mt-6 mb-2 inline-block rounded-[var(--radius-md)] px-4 py-1 tracking-wider",
|
|
3322
3498
|
`bg-gradient-to-r ${levelColors[level]}`
|
|
3323
3499
|
),
|
|
3324
3500
|
children: level.toUpperCase()
|
|
@@ -3824,7 +4000,7 @@ var baseBadgeVariants = cva(
|
|
|
3824
4000
|
{
|
|
3825
4001
|
variant: "destructive",
|
|
3826
4002
|
appearance: "ghost",
|
|
3827
|
-
className: "text-destructive"
|
|
4003
|
+
className: "text-destructive-strong"
|
|
3828
4004
|
},
|
|
3829
4005
|
{ size: "lg", appearance: "ghost", className: "px-0" },
|
|
3830
4006
|
{ size: "md", appearance: "ghost", className: "px-0" },
|
|
@@ -3942,379 +4118,6 @@ function BaseBadge({
|
|
|
3942
4118
|
});
|
|
3943
4119
|
return element;
|
|
3944
4120
|
}
|
|
3945
|
-
var baseButtonVariants = cva(
|
|
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",
|
|
3947
|
-
{
|
|
3948
|
-
variants: {
|
|
3949
|
-
variant: {
|
|
3950
|
-
primary: "bg-primary text-primary-foreground hover:bg-primary/90 data-[state=open]:bg-primary/90",
|
|
3951
|
-
mono: "bg-foreground text-background hover:bg-foreground/90 data-[state=open]:bg-foreground/90",
|
|
3952
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 data-[state=open]:bg-destructive/90",
|
|
3953
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/90 data-[state=open]:bg-secondary/90",
|
|
3954
|
-
outline: "bg-background text-accent-foreground border border-input hover:bg-accent data-[state=open]:bg-accent",
|
|
3955
|
-
dashed: "text-accent-foreground border border-input border-dashed bg-background hover:bg-accent hover:text-accent-foreground data-[state=open]:text-accent-foreground",
|
|
3956
|
-
ghost: "text-accent-foreground hover:bg-accent hover:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
3957
|
-
dim: "text-muted-foreground hover:text-foreground data-[state=open]:text-foreground",
|
|
3958
|
-
foreground: "",
|
|
3959
|
-
inverse: ""
|
|
3960
|
-
},
|
|
3961
|
-
appearance: {
|
|
3962
|
-
default: "",
|
|
3963
|
-
ghost: ""
|
|
3964
|
-
},
|
|
3965
|
-
underline: {
|
|
3966
|
-
solid: "",
|
|
3967
|
-
dashed: ""
|
|
3968
|
-
},
|
|
3969
|
-
underlined: {
|
|
3970
|
-
solid: "",
|
|
3971
|
-
dashed: ""
|
|
3972
|
-
},
|
|
3973
|
-
size: {
|
|
3974
|
-
lg: "h-10 rounded-[var(--radius-md)] px-4 text-sm gap-1.5 [&_svg:not([class*=size-])]:size-4",
|
|
3975
|
-
md: "h-8.5 rounded-[var(--radius-md)] px-3 gap-1.5 text-[0.8125rem] leading-(--text-sm--line-height) [&_svg:not([class*=size-])]:size-4",
|
|
3976
|
-
sm: "h-7 rounded-[var(--radius-md)] px-2.5 gap-1.25 text-xs [&_svg:not([class*=size-])]:size-3.5",
|
|
3977
|
-
icon: "size-8.5 rounded-[var(--radius-md)] [&_svg:not([class*=size-])]:size-4 shrink-0"
|
|
3978
|
-
},
|
|
3979
|
-
autoHeight: {
|
|
3980
|
-
true: "",
|
|
3981
|
-
false: ""
|
|
3982
|
-
},
|
|
3983
|
-
shape: {
|
|
3984
|
-
default: "",
|
|
3985
|
-
circle: "rounded-full"
|
|
3986
|
-
},
|
|
3987
|
-
mode: {
|
|
3988
|
-
default: "",
|
|
3989
|
-
icon: "",
|
|
3990
|
-
link: "text-primary h-auto p-0 bg-transparent rounded-none hover:bg-transparent data-[state=open]:bg-transparent",
|
|
3991
|
-
input: `
|
|
3992
|
-
justify-start font-normal hover:bg-background [&_svg]:transition-colors [&_svg]:hover:text-foreground data-[state=open]:bg-background
|
|
3993
|
-
focus-visible:border-ring
|
|
3994
|
-
[[data-state=open]>&]:border-ring [[data-state=open]>&]:outline-none [[data-state=open]>&]:ring-[3px]
|
|
3995
|
-
[[data-state=open]>&]:ring-ring/30
|
|
3996
|
-
aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20
|
|
3997
|
-
in-data-[invalid=true]:border-destructive/60 in-data-[invalid=true]:ring-destructive/10 dark:in-data-[invalid=true]:border-destructive dark:in-data-[invalid=true]:ring-destructive/20
|
|
3998
|
-
`
|
|
3999
|
-
},
|
|
4000
|
-
placeholder: {
|
|
4001
|
-
true: "text-muted-foreground",
|
|
4002
|
-
false: ""
|
|
4003
|
-
}
|
|
4004
|
-
},
|
|
4005
|
-
compoundVariants: [
|
|
4006
|
-
{
|
|
4007
|
-
variant: "ghost",
|
|
4008
|
-
mode: "default",
|
|
4009
|
-
className: "[&_svg:not([role=img]):not([class*=text-]):not([class*=opacity-])]:opacity-60"
|
|
4010
|
-
},
|
|
4011
|
-
{
|
|
4012
|
-
variant: "outline",
|
|
4013
|
-
mode: "default",
|
|
4014
|
-
className: "[&_svg:not([role=img]):not([class*=text-]):not([class*=opacity-])]:opacity-60"
|
|
4015
|
-
},
|
|
4016
|
-
{
|
|
4017
|
-
variant: "dashed",
|
|
4018
|
-
mode: "default",
|
|
4019
|
-
className: "[&_svg:not([role=img]):not([class*=text-]):not([class*=opacity-])]:opacity-60"
|
|
4020
|
-
},
|
|
4021
|
-
{
|
|
4022
|
-
variant: "secondary",
|
|
4023
|
-
mode: "default",
|
|
4024
|
-
className: "[&_svg:not([role=img]):not([class*=text-]):not([class*=opacity-])]:opacity-60"
|
|
4025
|
-
},
|
|
4026
|
-
{
|
|
4027
|
-
variant: "outline",
|
|
4028
|
-
mode: "input",
|
|
4029
|
-
className: "[&_svg:not([role=img]):not([class*=text-]):not([class*=opacity-])]:opacity-60"
|
|
4030
|
-
},
|
|
4031
|
-
{
|
|
4032
|
-
variant: "outline",
|
|
4033
|
-
mode: "icon",
|
|
4034
|
-
className: "[&_svg:not([role=img]):not([class*=text-]):not([class*=opacity-])]:opacity-60"
|
|
4035
|
-
},
|
|
4036
|
-
{
|
|
4037
|
-
size: "md",
|
|
4038
|
-
autoHeight: true,
|
|
4039
|
-
className: "h-auto min-h-8.5"
|
|
4040
|
-
},
|
|
4041
|
-
{
|
|
4042
|
-
size: "sm",
|
|
4043
|
-
autoHeight: true,
|
|
4044
|
-
className: "h-auto min-h-7"
|
|
4045
|
-
},
|
|
4046
|
-
{
|
|
4047
|
-
size: "lg",
|
|
4048
|
-
autoHeight: true,
|
|
4049
|
-
className: "h-auto min-h-10"
|
|
4050
|
-
},
|
|
4051
|
-
{
|
|
4052
|
-
variant: "primary",
|
|
4053
|
-
mode: "default",
|
|
4054
|
-
appearance: "default",
|
|
4055
|
-
className: "shadow-xs"
|
|
4056
|
-
},
|
|
4057
|
-
{
|
|
4058
|
-
variant: "mono",
|
|
4059
|
-
mode: "default",
|
|
4060
|
-
appearance: "default",
|
|
4061
|
-
className: "shadow-xs"
|
|
4062
|
-
},
|
|
4063
|
-
{
|
|
4064
|
-
variant: "secondary",
|
|
4065
|
-
mode: "default",
|
|
4066
|
-
appearance: "default",
|
|
4067
|
-
className: "shadow-xs"
|
|
4068
|
-
},
|
|
4069
|
-
{
|
|
4070
|
-
variant: "outline",
|
|
4071
|
-
mode: "default",
|
|
4072
|
-
appearance: "default",
|
|
4073
|
-
className: "shadow-xs"
|
|
4074
|
-
},
|
|
4075
|
-
{
|
|
4076
|
-
variant: "dashed",
|
|
4077
|
-
mode: "default",
|
|
4078
|
-
appearance: "default",
|
|
4079
|
-
className: "shadow-xs"
|
|
4080
|
-
},
|
|
4081
|
-
{
|
|
4082
|
-
variant: "destructive",
|
|
4083
|
-
mode: "default",
|
|
4084
|
-
appearance: "default",
|
|
4085
|
-
className: "shadow-xs"
|
|
4086
|
-
},
|
|
4087
|
-
{
|
|
4088
|
-
variant: "primary",
|
|
4089
|
-
mode: "icon",
|
|
4090
|
-
appearance: "default",
|
|
4091
|
-
className: "shadow-xs"
|
|
4092
|
-
},
|
|
4093
|
-
{
|
|
4094
|
-
variant: "mono",
|
|
4095
|
-
mode: "icon",
|
|
4096
|
-
appearance: "default",
|
|
4097
|
-
className: "shadow-xs"
|
|
4098
|
-
},
|
|
4099
|
-
{
|
|
4100
|
-
variant: "secondary",
|
|
4101
|
-
mode: "icon",
|
|
4102
|
-
appearance: "default",
|
|
4103
|
-
className: "shadow-xs"
|
|
4104
|
-
},
|
|
4105
|
-
{
|
|
4106
|
-
variant: "outline",
|
|
4107
|
-
mode: "icon",
|
|
4108
|
-
appearance: "default",
|
|
4109
|
-
className: "shadow-xs"
|
|
4110
|
-
},
|
|
4111
|
-
{
|
|
4112
|
-
variant: "dashed",
|
|
4113
|
-
mode: "icon",
|
|
4114
|
-
appearance: "default",
|
|
4115
|
-
className: "shadow-xs"
|
|
4116
|
-
},
|
|
4117
|
-
{
|
|
4118
|
-
variant: "destructive",
|
|
4119
|
-
mode: "icon",
|
|
4120
|
-
appearance: "default",
|
|
4121
|
-
className: "shadow-xs"
|
|
4122
|
-
},
|
|
4123
|
-
{
|
|
4124
|
-
variant: "primary",
|
|
4125
|
-
mode: "link",
|
|
4126
|
-
underline: "solid",
|
|
4127
|
-
className: "font-medium text-primary hover:text-primary/90 [&_svg:not([role=img]):not([class*=text-])]:opacity-60 hover:underline hover:underline-offset-4 hover:decoration-solid"
|
|
4128
|
-
},
|
|
4129
|
-
{
|
|
4130
|
-
variant: "primary",
|
|
4131
|
-
mode: "link",
|
|
4132
|
-
underline: "dashed",
|
|
4133
|
-
className: "font-medium text-primary hover:text-primary/90 [&_svg]:opacity-60 hover:underline hover:underline-offset-4 hover:decoration-dashed decoration-1"
|
|
4134
|
-
},
|
|
4135
|
-
{
|
|
4136
|
-
variant: "primary",
|
|
4137
|
-
mode: "link",
|
|
4138
|
-
underlined: "solid",
|
|
4139
|
-
className: "font-medium text-primary hover:text-primary/90 [&_svg:not([role=img]):not([class*=text-])]:opacity-60 underline underline-offset-4 decoration-solid"
|
|
4140
|
-
},
|
|
4141
|
-
{
|
|
4142
|
-
variant: "primary",
|
|
4143
|
-
mode: "link",
|
|
4144
|
-
underlined: "dashed",
|
|
4145
|
-
className: "font-medium text-primary hover:text-primary/90 [&_svg]:opacity-60 underline underline-offset-4 decoration-dashed decoration-1"
|
|
4146
|
-
},
|
|
4147
|
-
{
|
|
4148
|
-
variant: "inverse",
|
|
4149
|
-
mode: "link",
|
|
4150
|
-
underline: "solid",
|
|
4151
|
-
className: "font-medium text-inherit [&_svg:not([role=img]):not([class*=text-])]:opacity-60 hover:underline hover:underline-offset-4 hover:decoration-solid"
|
|
4152
|
-
},
|
|
4153
|
-
{
|
|
4154
|
-
variant: "inverse",
|
|
4155
|
-
mode: "link",
|
|
4156
|
-
underline: "dashed",
|
|
4157
|
-
className: "font-medium text-inherit [&_svg:not([role=img]):not([class*=text-])]:opacity-60 hover:underline hover:underline-offset-4 hover:decoration-dashed decoration-1"
|
|
4158
|
-
},
|
|
4159
|
-
{
|
|
4160
|
-
variant: "inverse",
|
|
4161
|
-
mode: "link",
|
|
4162
|
-
underlined: "solid",
|
|
4163
|
-
className: "font-medium text-inherit [&_svg:not([role=img]):not([class*=text-])]:opacity-60 underline underline-offset-4 decoration-solid"
|
|
4164
|
-
},
|
|
4165
|
-
{
|
|
4166
|
-
variant: "inverse",
|
|
4167
|
-
mode: "link",
|
|
4168
|
-
underlined: "dashed",
|
|
4169
|
-
className: "font-medium text-inherit [&_svg:not([role=img]):not([class*=text-])]:opacity-60 underline underline-offset-4 decoration-dashed decoration-1"
|
|
4170
|
-
},
|
|
4171
|
-
{
|
|
4172
|
-
variant: "foreground",
|
|
4173
|
-
mode: "link",
|
|
4174
|
-
underline: "solid",
|
|
4175
|
-
className: "font-medium text-foreground [&_svg:not([role=img]):not([class*=text-])]:opacity-60 hover:underline hover:underline-offset-4 hover:decoration-solid"
|
|
4176
|
-
},
|
|
4177
|
-
{
|
|
4178
|
-
variant: "foreground",
|
|
4179
|
-
mode: "link",
|
|
4180
|
-
underline: "dashed",
|
|
4181
|
-
className: "font-medium text-foreground [&_svg:not([role=img]):not([class*=text-])]:opacity-60 hover:underline hover:underline-offset-4 hover:decoration-dashed decoration-1"
|
|
4182
|
-
},
|
|
4183
|
-
{
|
|
4184
|
-
variant: "foreground",
|
|
4185
|
-
mode: "link",
|
|
4186
|
-
underlined: "solid",
|
|
4187
|
-
className: "font-medium text-foreground [&_svg:not([role=img]):not([class*=text-])]:opacity-60 underline underline-offset-4 decoration-solid"
|
|
4188
|
-
},
|
|
4189
|
-
{
|
|
4190
|
-
variant: "foreground",
|
|
4191
|
-
mode: "link",
|
|
4192
|
-
underlined: "dashed",
|
|
4193
|
-
className: "font-medium text-foreground [&_svg:not([role=img]):not([class*=text-])]:opacity-60 underline underline-offset-4 decoration-dashed decoration-1"
|
|
4194
|
-
},
|
|
4195
|
-
{
|
|
4196
|
-
variant: "primary",
|
|
4197
|
-
appearance: "ghost",
|
|
4198
|
-
className: "bg-transparent text-primary/90 hover:bg-primary/5 data-[state=open]:bg-primary/5"
|
|
4199
|
-
},
|
|
4200
|
-
{
|
|
4201
|
-
variant: "destructive",
|
|
4202
|
-
appearance: "ghost",
|
|
4203
|
-
className: "bg-transparent text-destructive/90 hover:bg-destructive/5 data-[state=open]:bg-destructive/5"
|
|
4204
|
-
},
|
|
4205
|
-
{
|
|
4206
|
-
variant: "ghost",
|
|
4207
|
-
mode: "icon",
|
|
4208
|
-
className: "text-muted-foreground"
|
|
4209
|
-
},
|
|
4210
|
-
{
|
|
4211
|
-
size: "sm",
|
|
4212
|
-
mode: "icon",
|
|
4213
|
-
className: "w-7 h-7 p-0 [[&_svg:not([class*=size-])]:size-3.5"
|
|
4214
|
-
},
|
|
4215
|
-
{
|
|
4216
|
-
size: "md",
|
|
4217
|
-
mode: "icon",
|
|
4218
|
-
className: "w-8.5 h-8.5 p-0 [&_svg:not([class*=size-])]:size-4"
|
|
4219
|
-
},
|
|
4220
|
-
{
|
|
4221
|
-
size: "icon",
|
|
4222
|
-
className: "w-8.5 h-8.5 p-0 [&_svg:not([class*=size-])]:size-4"
|
|
4223
|
-
},
|
|
4224
|
-
{
|
|
4225
|
-
size: "lg",
|
|
4226
|
-
mode: "icon",
|
|
4227
|
-
className: "w-10 h-10 p-0 [&_svg:not([class*=size-])]:size-4"
|
|
4228
|
-
},
|
|
4229
|
-
{
|
|
4230
|
-
mode: "input",
|
|
4231
|
-
placeholder: true,
|
|
4232
|
-
variant: "outline",
|
|
4233
|
-
className: "font-normal text-muted-foreground"
|
|
4234
|
-
},
|
|
4235
|
-
{
|
|
4236
|
-
mode: "input",
|
|
4237
|
-
variant: "outline",
|
|
4238
|
-
size: "sm",
|
|
4239
|
-
className: "gap-1.25"
|
|
4240
|
-
},
|
|
4241
|
-
{
|
|
4242
|
-
mode: "input",
|
|
4243
|
-
variant: "outline",
|
|
4244
|
-
size: "md",
|
|
4245
|
-
className: "gap-1.5"
|
|
4246
|
-
},
|
|
4247
|
-
{
|
|
4248
|
-
mode: "input",
|
|
4249
|
-
variant: "outline",
|
|
4250
|
-
size: "lg",
|
|
4251
|
-
className: "gap-1.5"
|
|
4252
|
-
}
|
|
4253
|
-
],
|
|
4254
|
-
defaultVariants: {
|
|
4255
|
-
variant: "primary",
|
|
4256
|
-
mode: "default",
|
|
4257
|
-
size: "md",
|
|
4258
|
-
shape: "default",
|
|
4259
|
-
appearance: "default"
|
|
4260
|
-
}
|
|
4261
|
-
}
|
|
4262
|
-
);
|
|
4263
|
-
function BaseButton({
|
|
4264
|
-
render,
|
|
4265
|
-
asChild = false,
|
|
4266
|
-
children,
|
|
4267
|
-
className,
|
|
4268
|
-
selected,
|
|
4269
|
-
variant,
|
|
4270
|
-
shape,
|
|
4271
|
-
appearance,
|
|
4272
|
-
mode,
|
|
4273
|
-
size,
|
|
4274
|
-
autoHeight,
|
|
4275
|
-
underlined,
|
|
4276
|
-
underline,
|
|
4277
|
-
placeholder = false,
|
|
4278
|
-
...props
|
|
4279
|
-
}) {
|
|
4280
|
-
const controlLabelProps = getControlLabelProps({
|
|
4281
|
-
children,
|
|
4282
|
-
fallbackLabel: "Button",
|
|
4283
|
-
label: props["aria-label"],
|
|
4284
|
-
labelledBy: props["aria-labelledby"],
|
|
4285
|
-
title: props.title
|
|
4286
|
-
});
|
|
4287
|
-
const defaultProps = {
|
|
4288
|
-
...controlLabelProps,
|
|
4289
|
-
"data-slot": "button",
|
|
4290
|
-
className: cn(
|
|
4291
|
-
baseButtonVariants({
|
|
4292
|
-
variant,
|
|
4293
|
-
size,
|
|
4294
|
-
shape,
|
|
4295
|
-
appearance,
|
|
4296
|
-
mode,
|
|
4297
|
-
autoHeight,
|
|
4298
|
-
placeholder,
|
|
4299
|
-
underlined,
|
|
4300
|
-
underline,
|
|
4301
|
-
className
|
|
4302
|
-
}),
|
|
4303
|
-
asChild && props.disabled && "pointer-events-none opacity-50"
|
|
4304
|
-
),
|
|
4305
|
-
...selected && { "data-state": "open" }
|
|
4306
|
-
};
|
|
4307
|
-
const renderElement = asChild && React45.isValidElement(children) ? children : render || /* @__PURE__ */ jsx("button", { type: "button", "aria-label": controlLabelProps["aria-label"] });
|
|
4308
|
-
const finalProps = asChild && React45.isValidElement(children) ? mergeProps(defaultProps, props) : mergeProps(defaultProps, { ...props, children });
|
|
4309
|
-
const element = useRender({
|
|
4310
|
-
render: renderElement,
|
|
4311
|
-
props: finalProps
|
|
4312
|
-
});
|
|
4313
|
-
return element;
|
|
4314
|
-
}
|
|
4315
|
-
function BaseButtonArrow({ icon: Icon = ChevronDown, className, ...props }) {
|
|
4316
|
-
return /* @__PURE__ */ jsx(Icon, { "data-slot": "button-arrow", className: cn("ms-auto -me-1", className), ...props });
|
|
4317
|
-
}
|
|
4318
4121
|
var Slot = React45.forwardRef(
|
|
4319
4122
|
({ children, className, style, ...props }, ref) => {
|
|
4320
4123
|
const childArray = React45.Children.toArray(children);
|
|
@@ -4359,10 +4162,10 @@ function Spinner({ className }) {
|
|
|
4359
4162
|
}
|
|
4360
4163
|
);
|
|
4361
4164
|
}
|
|
4362
|
-
function getIconSizeClass(size,
|
|
4363
|
-
if (
|
|
4364
|
-
if (
|
|
4365
|
-
if (
|
|
4165
|
+
function getIconSizeClass(size, iconSize3) {
|
|
4166
|
+
if (iconSize3 === "sm") return "[&>svg]:size-3.5";
|
|
4167
|
+
if (iconSize3 === "md") return "[&>svg]:size-3.5";
|
|
4168
|
+
if (iconSize3 === "lg") return "[&>svg]:size-4";
|
|
4366
4169
|
switch (size) {
|
|
4367
4170
|
case "tiny":
|
|
4368
4171
|
return "[&>svg]:size-3";
|
|
@@ -4377,10 +4180,10 @@ function getIconSizeClass(size, iconSize2) {
|
|
|
4377
4180
|
return "[&>svg]:size-4";
|
|
4378
4181
|
}
|
|
4379
4182
|
}
|
|
4380
|
-
function getSpinnerSizeClass(size,
|
|
4381
|
-
if (
|
|
4382
|
-
if (
|
|
4383
|
-
if (
|
|
4183
|
+
function getSpinnerSizeClass(size, iconSize3) {
|
|
4184
|
+
if (iconSize3 === "sm") return "size-3.5";
|
|
4185
|
+
if (iconSize3 === "md") return "size-3.5";
|
|
4186
|
+
if (iconSize3 === "lg") return "size-4";
|
|
4384
4187
|
switch (size) {
|
|
4385
4188
|
case "tiny":
|
|
4386
4189
|
return "size-3";
|
|
@@ -4405,10 +4208,10 @@ function resolveShadowClass(shadow) {
|
|
|
4405
4208
|
const level = shadow === true ? "md" : shadow;
|
|
4406
4209
|
return SHADOW_CLASSES[level];
|
|
4407
4210
|
}
|
|
4408
|
-
function ButtonContent({ loading, prefix, suffix, size, iconSize:
|
|
4409
|
-
const iconSizeClass = getIconSizeClass(size,
|
|
4211
|
+
function ButtonContent({ loading, prefix, suffix, size, iconSize: iconSize3, children }) {
|
|
4212
|
+
const iconSizeClass = getIconSizeClass(size, iconSize3);
|
|
4410
4213
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4411
|
-
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size,
|
|
4214
|
+
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size, iconSize3) }),
|
|
4412
4215
|
prefix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: prefix }),
|
|
4413
4216
|
children,
|
|
4414
4217
|
suffix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: suffix })
|
|
@@ -4419,7 +4222,7 @@ var Button = ({
|
|
|
4419
4222
|
variant,
|
|
4420
4223
|
size,
|
|
4421
4224
|
shape,
|
|
4422
|
-
iconSize:
|
|
4225
|
+
iconSize: iconSize3,
|
|
4423
4226
|
asChild = false,
|
|
4424
4227
|
loading = false,
|
|
4425
4228
|
disabled,
|
|
@@ -4437,7 +4240,7 @@ var Button = ({
|
|
|
4437
4240
|
Comp,
|
|
4438
4241
|
{
|
|
4439
4242
|
ref,
|
|
4440
|
-
className: cn(buttonVariants({ variant, size, shape, iconSize:
|
|
4243
|
+
className: cn(buttonVariants({ variant, size, shape, iconSize: iconSize3 }), shadowClass, className),
|
|
4441
4244
|
disabled: isDisabled,
|
|
4442
4245
|
"aria-busy": loading || void 0,
|
|
4443
4246
|
...props,
|
|
@@ -4448,7 +4251,7 @@ var Button = ({
|
|
|
4448
4251
|
prefix,
|
|
4449
4252
|
suffix,
|
|
4450
4253
|
size,
|
|
4451
|
-
iconSize:
|
|
4254
|
+
iconSize: iconSize3,
|
|
4452
4255
|
children
|
|
4453
4256
|
}
|
|
4454
4257
|
)
|
|
@@ -4461,7 +4264,7 @@ var ButtonLink = ({
|
|
|
4461
4264
|
variant,
|
|
4462
4265
|
size,
|
|
4463
4266
|
shape,
|
|
4464
|
-
iconSize:
|
|
4267
|
+
iconSize: iconSize3,
|
|
4465
4268
|
prefix,
|
|
4466
4269
|
suffix,
|
|
4467
4270
|
shadow,
|
|
@@ -4481,7 +4284,7 @@ var ButtonLink = ({
|
|
|
4481
4284
|
{
|
|
4482
4285
|
ref,
|
|
4483
4286
|
className: cn(
|
|
4484
|
-
buttonVariants({ variant, size, shape, iconSize:
|
|
4287
|
+
buttonVariants({ variant, size, shape, iconSize: iconSize3 }),
|
|
4485
4288
|
shadowClass,
|
|
4486
4289
|
loading && "pointer-events-none opacity-50",
|
|
4487
4290
|
className
|
|
@@ -4495,7 +4298,7 @@ var ButtonLink = ({
|
|
|
4495
4298
|
prefix,
|
|
4496
4299
|
suffix,
|
|
4497
4300
|
size,
|
|
4498
|
-
iconSize:
|
|
4301
|
+
iconSize: iconSize3,
|
|
4499
4302
|
children
|
|
4500
4303
|
}
|
|
4501
4304
|
)
|
|
@@ -4542,21 +4345,21 @@ var BentoCard = ({
|
|
|
4542
4345
|
children: [
|
|
4543
4346
|
/* @__PURE__ */ jsx("div", { children: background }),
|
|
4544
4347
|
/* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
4545
|
-
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none z-10 flex transform-gpu flex-col gap-1 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4546
|
-
/* @__PURE__ */ jsx(IconComponent, { className: "h-12 w-12 origin-left transform-gpu text-muted-foreground transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4348
|
+
/* @__PURE__ */ jsxs("div", { className: "pointer-events-none z-10 flex transform-gpu flex-col gap-1 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal lg:group-hover:-translate-y-10", children: [
|
|
4349
|
+
/* @__PURE__ */ jsx(IconComponent, { className: "h-12 w-12 origin-left transform-gpu text-muted-foreground transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal ease-[var(--ease-brand)] group-hover:scale-75" }),
|
|
4547
4350
|
/* @__PURE__ */ jsx("h3", { className: "text-xl font-semibold text-foreground", children: name }),
|
|
4548
4351
|
/* @__PURE__ */ jsx("p", { className: "max-w-lg text-muted-foreground", children: description })
|
|
4549
4352
|
] }),
|
|
4550
|
-
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none flex w-full translate-y-0 transform-gpu flex-row items-center transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4353
|
+
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none flex w-full translate-y-0 transform-gpu flex-row items-center transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal group-hover:translate-y-0 group-hover:opacity-100 lg:hidden", children: /* @__PURE__ */ jsx(Button, { variant: "link", asChild: true, size: "sm", className: "pointer-events-auto p-0", children: /* @__PURE__ */ jsxs("a", { href, children: [
|
|
4551
4354
|
cta,
|
|
4552
4355
|
/* @__PURE__ */ jsx(ArrowRight, { className: "ms-2 h-4 w-4 rtl:rotate-180" })
|
|
4553
4356
|
] }) }) })
|
|
4554
4357
|
] }),
|
|
4555
|
-
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute bottom-0 hidden w-full translate-y-10 transform-gpu flex-row items-center p-4 opacity-0 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4358
|
+
href && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute bottom-0 hidden w-full translate-y-10 transform-gpu flex-row items-center p-4 opacity-0 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal group-hover:translate-y-0 group-hover:opacity-100 lg:flex", children: /* @__PURE__ */ jsx(Button, { variant: "link", asChild: true, size: "sm", className: "pointer-events-auto p-0", children: /* @__PURE__ */ jsxs("a", { href, children: [
|
|
4556
4359
|
cta,
|
|
4557
4360
|
/* @__PURE__ */ jsx(ArrowRight, { className: "ms-2 h-4 w-4 rtl:rotate-180" })
|
|
4558
4361
|
] }) }) }),
|
|
4559
|
-
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 transform-gpu transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-
|
|
4362
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 transform-gpu transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-reveal group-hover:bg-foreground/[.03]" })
|
|
4560
4363
|
]
|
|
4561
4364
|
}
|
|
4562
4365
|
);
|
|
@@ -4975,8 +4778,9 @@ function DefaultGlyph({ className }) {
|
|
|
4975
4778
|
}
|
|
4976
4779
|
var Breadcrumb = ({
|
|
4977
4780
|
ref,
|
|
4781
|
+
"aria-label": ariaLabel = "breadcrumb",
|
|
4978
4782
|
...props
|
|
4979
|
-
}) => /* @__PURE__ */ jsx("nav", { ref, "aria-label":
|
|
4783
|
+
}) => /* @__PURE__ */ jsx("nav", { ref, "aria-label": ariaLabel, ...props });
|
|
4980
4784
|
Breadcrumb.displayName = "Breadcrumb";
|
|
4981
4785
|
var BreadcrumbList = ({
|
|
4982
4786
|
className,
|
|
@@ -5586,6 +5390,128 @@ function useBulkSelection({
|
|
|
5586
5390
|
selectItems
|
|
5587
5391
|
};
|
|
5588
5392
|
}
|
|
5393
|
+
|
|
5394
|
+
// src/tokens/components/calendar.ts
|
|
5395
|
+
var calendarTokens = {
|
|
5396
|
+
/** Square day cell. Matches the `sm` control height so a month reads as a form row grid. */
|
|
5397
|
+
cellSize: primitiveSizing.sm,
|
|
5398
|
+
cellRadius: primitiveRadius.md,
|
|
5399
|
+
cellFontSize: primitiveFontSize.sm,
|
|
5400
|
+
weekdayFontSize: primitiveFontSize.xs,
|
|
5401
|
+
captionFontSize: primitiveFontSize.sm,
|
|
5402
|
+
navButtonSize: primitiveSizing.tiny,
|
|
5403
|
+
navIconSize: primitiveFontSize.base,
|
|
5404
|
+
padding: primitiveSpacing[3],
|
|
5405
|
+
/** Gap between side-by-side months when `numberOfMonths > 1`. */
|
|
5406
|
+
monthGap: primitiveSpacing[4],
|
|
5407
|
+
captionGap: primitiveSpacing[2]
|
|
5408
|
+
};
|
|
5409
|
+
function getCalendarStyle(style) {
|
|
5410
|
+
return {
|
|
5411
|
+
"--calendar-cell-size": `${calendarTokens.cellSize}px`,
|
|
5412
|
+
"--calendar-cell-radius": `${calendarTokens.cellRadius}px`,
|
|
5413
|
+
"--calendar-cell-font-size": `${calendarTokens.cellFontSize}px`,
|
|
5414
|
+
"--calendar-weekday-font-size": `${calendarTokens.weekdayFontSize}px`,
|
|
5415
|
+
"--calendar-caption-font-size": `${calendarTokens.captionFontSize}px`,
|
|
5416
|
+
"--calendar-nav-button-size": `${calendarTokens.navButtonSize}px`,
|
|
5417
|
+
"--calendar-nav-icon-size": `${calendarTokens.navIconSize}px`,
|
|
5418
|
+
"--calendar-padding": `${calendarTokens.padding}px`,
|
|
5419
|
+
"--calendar-month-gap": `${calendarTokens.monthGap}px`,
|
|
5420
|
+
"--calendar-caption-gap": `${calendarTokens.captionGap}px`,
|
|
5421
|
+
...style
|
|
5422
|
+
};
|
|
5423
|
+
}
|
|
5424
|
+
var navButtonClassName = cn(
|
|
5425
|
+
"inline-flex size-[var(--calendar-nav-button-size)] items-center justify-center",
|
|
5426
|
+
"rounded-[var(--calendar-cell-radius)] text-muted-foreground",
|
|
5427
|
+
"transition-colors duration-micro ease-out",
|
|
5428
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
5429
|
+
"aria-disabled:pointer-events-none aria-disabled:opacity-40",
|
|
5430
|
+
"[&_svg]:size-[var(--calendar-nav-icon-size)]"
|
|
5431
|
+
);
|
|
5432
|
+
function CalendarDayButton({ day: _day, modifiers, className, ...props }) {
|
|
5433
|
+
const isRangeMiddle = Boolean(modifiers.range_middle);
|
|
5434
|
+
const isEndpoint = Boolean(modifiers.range_start) || Boolean(modifiers.range_end);
|
|
5435
|
+
const isPill = Boolean(modifiers.selected) && !isRangeMiddle;
|
|
5436
|
+
return /* @__PURE__ */ jsx(
|
|
5437
|
+
"button",
|
|
5438
|
+
{
|
|
5439
|
+
type: "button",
|
|
5440
|
+
"data-slot": "calendar-day-button",
|
|
5441
|
+
className: cn(
|
|
5442
|
+
"relative flex size-[var(--calendar-cell-size)] items-center justify-center",
|
|
5443
|
+
"text-[length:var(--calendar-cell-font-size)] font-normal tabular-nums",
|
|
5444
|
+
"transition-colors duration-micro ease-out",
|
|
5445
|
+
// No focus ring here: the unlayered global `:focus-visible` rule in
|
|
5446
|
+
// design-tokens/static/base.css already outranks Tailwind utilities.
|
|
5447
|
+
"disabled:pointer-events-none disabled:opacity-40",
|
|
5448
|
+
// A middle day must not round, or the band it sits in breaks into beads.
|
|
5449
|
+
isRangeMiddle ? "rounded-none" : "rounded-[var(--calendar-cell-radius)]",
|
|
5450
|
+
isPill && "bg-primary font-medium text-primary-foreground hover:bg-primary",
|
|
5451
|
+
isRangeMiddle && "bg-transparent text-accent-foreground hover:bg-accent/60",
|
|
5452
|
+
!isPill && !isRangeMiddle && "text-foreground hover:bg-accent hover:text-accent-foreground",
|
|
5453
|
+
// Today reads as an outline so it survives being selected on top of it.
|
|
5454
|
+
Boolean(modifiers.today) && !isPill && "font-medium text-primary",
|
|
5455
|
+
Boolean(modifiers.outside) && !isPill && "text-muted-foreground/60",
|
|
5456
|
+
isEndpoint && "z-10",
|
|
5457
|
+
className
|
|
5458
|
+
),
|
|
5459
|
+
...props
|
|
5460
|
+
}
|
|
5461
|
+
);
|
|
5462
|
+
}
|
|
5463
|
+
function CalendarChevron({ orientation, className, ...props }) {
|
|
5464
|
+
const Icon = orientation === "left" ? ChevronLeft : ChevronRight;
|
|
5465
|
+
return /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: cn("shrink-0", className), ...props });
|
|
5466
|
+
}
|
|
5467
|
+
function Calendar({
|
|
5468
|
+
className,
|
|
5469
|
+
classNames,
|
|
5470
|
+
showOutsideDays = true,
|
|
5471
|
+
style,
|
|
5472
|
+
...props
|
|
5473
|
+
}) {
|
|
5474
|
+
return /* @__PURE__ */ jsx(
|
|
5475
|
+
DayPicker,
|
|
5476
|
+
{
|
|
5477
|
+
"data-slot": "calendar",
|
|
5478
|
+
showOutsideDays,
|
|
5479
|
+
className: cn("p-[var(--calendar-padding)] text-foreground", className),
|
|
5480
|
+
style: getCalendarStyle(style),
|
|
5481
|
+
classNames: {
|
|
5482
|
+
[UI.Months]: "relative flex flex-col gap-[var(--calendar-month-gap)] sm:flex-row",
|
|
5483
|
+
[UI.Month]: "flex flex-col gap-[var(--calendar-caption-gap)]",
|
|
5484
|
+
[UI.MonthCaption]: "flex h-[var(--calendar-nav-button-size)] items-center justify-center",
|
|
5485
|
+
[UI.CaptionLabel]: "select-none text-[length:var(--calendar-caption-font-size)] font-medium text-foreground",
|
|
5486
|
+
[UI.Nav]: "absolute inset-x-0 top-0 z-10 flex items-center justify-between",
|
|
5487
|
+
[UI.PreviousMonthButton]: navButtonClassName,
|
|
5488
|
+
[UI.NextMonthButton]: navButtonClassName,
|
|
5489
|
+
[UI.MonthGrid]: "w-full border-collapse",
|
|
5490
|
+
[UI.Weekdays]: "flex",
|
|
5491
|
+
[UI.Weekday]: "w-[var(--calendar-cell-size)] select-none pb-1 text-[length:var(--calendar-weekday-font-size)] font-normal text-muted-foreground",
|
|
5492
|
+
[UI.Week]: "mt-0.5 flex w-full",
|
|
5493
|
+
// The cell carries the connective band; the button carries the pill.
|
|
5494
|
+
[UI.Day]: "relative p-0 text-center",
|
|
5495
|
+
[SelectionState.range_start]: "rounded-l-[var(--calendar-cell-radius)] bg-accent [&:has(+td[data-selected])]:rounded-r-none",
|
|
5496
|
+
[SelectionState.range_middle]: "bg-accent",
|
|
5497
|
+
[SelectionState.range_end]: "rounded-r-[var(--calendar-cell-radius)] bg-accent",
|
|
5498
|
+
[DayFlag.outside]: "text-muted-foreground/60",
|
|
5499
|
+
[DayFlag.disabled]: "opacity-40",
|
|
5500
|
+
[DayFlag.hidden]: "invisible",
|
|
5501
|
+
[UI.WeekNumber]: "w-[var(--calendar-cell-size)] select-none text-[length:var(--calendar-weekday-font-size)] text-muted-foreground",
|
|
5502
|
+
[UI.WeekNumberHeader]: "w-[var(--calendar-cell-size)]",
|
|
5503
|
+
[UI.Footer]: "pt-2 text-center text-xs text-muted-foreground",
|
|
5504
|
+
...classNames
|
|
5505
|
+
},
|
|
5506
|
+
components: {
|
|
5507
|
+
Chevron: CalendarChevron,
|
|
5508
|
+
DayButton: CalendarDayButton
|
|
5509
|
+
},
|
|
5510
|
+
...props
|
|
5511
|
+
}
|
|
5512
|
+
);
|
|
5513
|
+
}
|
|
5514
|
+
Calendar.displayName = "Calendar";
|
|
5589
5515
|
function CanvasRevealEffect({
|
|
5590
5516
|
animationSpeed = 0.4,
|
|
5591
5517
|
opacities = [0.3, 0.3, 0.3, 0.5, 0.5, 0.5, 0.8, 0.8, 0.8, 1],
|
|
@@ -5594,7 +5520,7 @@ function CanvasRevealEffect({
|
|
|
5594
5520
|
dotSize = 3,
|
|
5595
5521
|
showGradient = true
|
|
5596
5522
|
}) {
|
|
5597
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("h-full relative bg-
|
|
5523
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("h-full relative bg-background w-full", containerClassName), children: [
|
|
5598
5524
|
/* @__PURE__ */ jsx("div", { className: "h-full w-full", children: /* @__PURE__ */ jsx(
|
|
5599
5525
|
DotMatrix,
|
|
5600
5526
|
{
|
|
@@ -5610,7 +5536,7 @@ function CanvasRevealEffect({
|
|
|
5610
5536
|
center: ["x", "y"]
|
|
5611
5537
|
}
|
|
5612
5538
|
) }),
|
|
5613
|
-
showGradient && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-
|
|
5539
|
+
showGradient && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-background to-[84%]" })
|
|
5614
5540
|
] });
|
|
5615
5541
|
}
|
|
5616
5542
|
CanvasRevealEffect.displayName = "CanvasRevealEffect";
|
|
@@ -5780,68 +5706,119 @@ function ShaderMaterial2({ source, uniforms, maxFps = 60 }) {
|
|
|
5780
5706
|
function Shader({ source, uniforms, maxFps = 60 }) {
|
|
5781
5707
|
return /* @__PURE__ */ jsx(Canvas, { className: "absolute inset-0 h-full w-full", children: /* @__PURE__ */ jsx(ShaderMaterial2, { source, uniforms, maxFps }) });
|
|
5782
5708
|
}
|
|
5783
|
-
var
|
|
5709
|
+
var cardVariants = cva(
|
|
5710
|
+
"rounded-[var(--radius-card,var(--radius-lg))] text-card-foreground transition-[box-shadow,background-color] duration-micro",
|
|
5711
|
+
{
|
|
5712
|
+
variants: {
|
|
5713
|
+
variant: {
|
|
5714
|
+
default: "bg-card shadow-[var(--elevation-card)] ring-1 ring-[var(--edge-soft)]",
|
|
5715
|
+
elevated: "bg-card shadow-ambient-md ring-1 ring-[var(--edge-soft)]",
|
|
5716
|
+
outline: "bg-transparent ring-1 ring-border",
|
|
5717
|
+
ghost: "bg-transparent"
|
|
5718
|
+
},
|
|
5719
|
+
padding: {
|
|
5720
|
+
none: "",
|
|
5721
|
+
sm: "p-4",
|
|
5722
|
+
md: "p-6",
|
|
5723
|
+
lg: "p-8"
|
|
5724
|
+
},
|
|
5725
|
+
interactive: {
|
|
5726
|
+
true: "cursor-pointer hover:shadow-ambient-md",
|
|
5727
|
+
false: ""
|
|
5728
|
+
}
|
|
5729
|
+
},
|
|
5730
|
+
defaultVariants: { variant: "default", padding: "none", interactive: false }
|
|
5731
|
+
}
|
|
5732
|
+
);
|
|
5733
|
+
var CardPaddedContext = React45.createContext(false);
|
|
5734
|
+
var CardRoot = ({
|
|
5784
5735
|
className,
|
|
5736
|
+
variant,
|
|
5737
|
+
padding = "none",
|
|
5738
|
+
interactive,
|
|
5785
5739
|
ref,
|
|
5786
5740
|
...props
|
|
5787
|
-
}) => /* @__PURE__ */ jsx(
|
|
5741
|
+
}) => /* @__PURE__ */ jsx(CardPaddedContext.Provider, { value: padding !== "none", children: /* @__PURE__ */ jsx(
|
|
5788
5742
|
"div",
|
|
5789
5743
|
{
|
|
5790
5744
|
ref,
|
|
5791
|
-
className: cn(
|
|
5792
|
-
"rounded-[var(--radius-lg)] border border-border bg-card text-card-foreground shadow-sm",
|
|
5793
|
-
className
|
|
5794
|
-
),
|
|
5745
|
+
className: cn(cardVariants({ variant, padding, interactive }), className),
|
|
5795
5746
|
...props
|
|
5796
5747
|
}
|
|
5797
|
-
);
|
|
5798
|
-
|
|
5799
|
-
var CardHeader = ({
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5748
|
+
) });
|
|
5749
|
+
CardRoot.displayName = "Card";
|
|
5750
|
+
var CardHeader = ({ className, ref, ...props }) => {
|
|
5751
|
+
const padded = React45.use(CardPaddedContext);
|
|
5752
|
+
return /* @__PURE__ */ jsx(
|
|
5753
|
+
"div",
|
|
5754
|
+
{
|
|
5755
|
+
ref,
|
|
5756
|
+
className: cn("flex flex-col gap-1.5", !padded && "p-6", className),
|
|
5757
|
+
...props
|
|
5758
|
+
}
|
|
5759
|
+
);
|
|
5760
|
+
};
|
|
5804
5761
|
CardHeader.displayName = "CardHeader";
|
|
5805
|
-
var CardTitle = ({
|
|
5806
|
-
|
|
5807
|
-
children,
|
|
5808
|
-
ref,
|
|
5809
|
-
...props
|
|
5810
|
-
}) => /* @__PURE__ */ jsx(
|
|
5811
|
-
"h3",
|
|
5762
|
+
var CardTitle = ({ className, as: Tag = "h3", ref, ...props }) => /* @__PURE__ */ jsx(
|
|
5763
|
+
Tag,
|
|
5812
5764
|
{
|
|
5813
5765
|
ref,
|
|
5814
|
-
className: cn("text-
|
|
5815
|
-
...props
|
|
5816
|
-
children
|
|
5766
|
+
className: cn("text-lg font-semibold leading-tight tracking-tight text-foreground", className),
|
|
5767
|
+
...props
|
|
5817
5768
|
}
|
|
5818
5769
|
);
|
|
5819
5770
|
CardTitle.displayName = "CardTitle";
|
|
5820
|
-
var CardDescription = ({
|
|
5821
|
-
className,
|
|
5822
|
-
as: Tag = "p",
|
|
5771
|
+
var CardDescription = ({ className, as: Tag = "p", ref, ...props }) => React45.createElement(Tag, {
|
|
5823
5772
|
ref,
|
|
5773
|
+
className: cn("text-sm leading-relaxed text-muted-foreground", className),
|
|
5824
5774
|
...props
|
|
5825
|
-
})
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5775
|
+
});
|
|
5776
|
+
CardDescription.displayName = "CardDescription";
|
|
5777
|
+
var CardContent = ({ className, ref, ...props }) => {
|
|
5778
|
+
const padded = React45.use(CardPaddedContext);
|
|
5779
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(padded ? "mt-4 first:mt-0" : "p-6 pt-0", className), ...props });
|
|
5780
|
+
};
|
|
5781
|
+
CardContent.displayName = "CardContent";
|
|
5782
|
+
var CardFooter = ({ className, ref, ...props }) => {
|
|
5783
|
+
const padded = React45.use(CardPaddedContext);
|
|
5784
|
+
return /* @__PURE__ */ jsx(
|
|
5785
|
+
"div",
|
|
5786
|
+
{
|
|
5787
|
+
ref,
|
|
5788
|
+
className: cn(
|
|
5789
|
+
"flex items-center",
|
|
5790
|
+
padded ? "mt-6 border-t border-border/50 pt-4 first:mt-0" : "p-6 pt-0",
|
|
5791
|
+
className
|
|
5792
|
+
),
|
|
5793
|
+
...props
|
|
5794
|
+
}
|
|
5795
|
+
);
|
|
5831
5796
|
};
|
|
5832
|
-
CardDescription.displayName = "CardDescription";
|
|
5833
|
-
var CardContent = ({
|
|
5834
|
-
className,
|
|
5835
|
-
ref,
|
|
5836
|
-
...props
|
|
5837
|
-
}) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props });
|
|
5838
|
-
CardContent.displayName = "CardContent";
|
|
5839
|
-
var CardFooter = ({
|
|
5840
|
-
className,
|
|
5841
|
-
ref,
|
|
5842
|
-
...props
|
|
5843
|
-
}) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props });
|
|
5844
5797
|
CardFooter.displayName = "CardFooter";
|
|
5798
|
+
var iconSize = { sm: "size-8", md: "size-10", lg: "size-12" };
|
|
5799
|
+
var CardIcon = ({ className, size = "md", ref, ...props }) => /* @__PURE__ */ jsx(
|
|
5800
|
+
"div",
|
|
5801
|
+
{
|
|
5802
|
+
ref,
|
|
5803
|
+
className: cn(
|
|
5804
|
+
"flex shrink-0 items-center justify-center rounded-[var(--radius-lg)] bg-muted/50",
|
|
5805
|
+
iconSize[size],
|
|
5806
|
+
className
|
|
5807
|
+
),
|
|
5808
|
+
...props
|
|
5809
|
+
}
|
|
5810
|
+
);
|
|
5811
|
+
CardIcon.displayName = "CardIcon";
|
|
5812
|
+
var Card = Object.assign(CardRoot, {
|
|
5813
|
+
Header: CardHeader,
|
|
5814
|
+
Title: CardTitle,
|
|
5815
|
+
Description: CardDescription,
|
|
5816
|
+
Content: CardContent,
|
|
5817
|
+
Body: CardContent,
|
|
5818
|
+
Footer: CardFooter,
|
|
5819
|
+
Icon: CardIcon
|
|
5820
|
+
});
|
|
5821
|
+
var CardBody = CardContent;
|
|
5845
5822
|
function CardSpotlight({
|
|
5846
5823
|
children,
|
|
5847
5824
|
radius = 350,
|
|
@@ -6415,35 +6392,36 @@ function IndeterminateGlyph({
|
|
|
6415
6392
|
}
|
|
6416
6393
|
);
|
|
6417
6394
|
}
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
} else {
|
|
6425
|
-
className += " bg-geist-gray-600 border-geist-gray-600 fill-geist-gray-600 stroke-geist-gray-100";
|
|
6426
|
-
}
|
|
6427
|
-
} else {
|
|
6428
|
-
if (!checked || indeterminate) {
|
|
6429
|
-
className += " bg-geist-background-100 border-geist-gray-700 group-hover:bg-geist-gray-200";
|
|
6430
|
-
className += indeterminate ? " stroke-geist-gray-700" : " fill-geist-background-100 stroke-geist-background-100 group-hover:stroke-geist-gray-200 group-hover:fill-geist-gray-200";
|
|
6431
|
-
} else {
|
|
6432
|
-
className += " bg-geist-gray-1000 border-geist-gray-1000 fill-geist-gray-1000 stroke-geist-gray-100";
|
|
6433
|
-
}
|
|
6434
|
-
}
|
|
6435
|
-
return className;
|
|
6395
|
+
|
|
6396
|
+
// src/primitives/form-control.ts
|
|
6397
|
+
var formControlFocusClassNames = {
|
|
6398
|
+
input: "outline-none focus:border-ring focus:ring-[length:var(--input-focus-ring-width)] focus:ring-ring/30",
|
|
6399
|
+
textarea: "outline-none focus:border-ring focus:ring-[length:var(--textarea-focus-ring-width)] focus:ring-ring/30",
|
|
6400
|
+
select: "outline-none focus:border-ring focus:ring-[length:var(--select-focus-ring-width)] focus:ring-ring/30"
|
|
6436
6401
|
};
|
|
6402
|
+
var formControlInvalidClassNames = {
|
|
6403
|
+
input: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
6404
|
+
textarea: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
6405
|
+
select: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20"
|
|
6406
|
+
};
|
|
6407
|
+
var controlFocusProxyClassName = "peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-[hsl(var(--ring))]";
|
|
6408
|
+
var boxClassName = (on) => cn(
|
|
6409
|
+
"relative inline-flex size-4 shrink-0 items-center justify-center rounded-[4px] border",
|
|
6410
|
+
"stroke-current fill-none transition-[background-color,border-color,color] duration-micro",
|
|
6411
|
+
on ? "border-primary bg-primary text-primary-foreground" : "border-[var(--control-border)] bg-background text-transparent group-hover:border-muted-foreground",
|
|
6412
|
+
"peer-disabled:opacity-50",
|
|
6413
|
+
controlFocusProxyClassName
|
|
6414
|
+
);
|
|
6437
6415
|
var Checkbox = ({
|
|
6438
6416
|
checked: controlledChecked,
|
|
6439
6417
|
defaultChecked = false,
|
|
6440
|
-
onChange,
|
|
6418
|
+
onChange: legacyOnChange,
|
|
6419
|
+
onCheckedChange: onChange = legacyOnChange,
|
|
6441
6420
|
disabled = false,
|
|
6442
6421
|
indeterminate = false,
|
|
6443
6422
|
children,
|
|
6444
6423
|
className,
|
|
6445
|
-
|
|
6446
|
-
name
|
|
6424
|
+
...inputProps
|
|
6447
6425
|
}) => {
|
|
6448
6426
|
const [internalChecked, setInternalChecked] = React45__default.useState(defaultChecked);
|
|
6449
6427
|
const isControlled = controlledChecked !== void 0;
|
|
@@ -6452,34 +6430,28 @@ var Checkbox = ({
|
|
|
6452
6430
|
"label",
|
|
6453
6431
|
{
|
|
6454
6432
|
className: cn(
|
|
6455
|
-
"flex items-center text-[13px] font-sans
|
|
6456
|
-
disabled ? "
|
|
6433
|
+
"group flex items-center text-[13px] font-sans",
|
|
6434
|
+
disabled ? "cursor-not-allowed text-muted-foreground" : "cursor-pointer text-foreground",
|
|
6457
6435
|
className
|
|
6458
6436
|
),
|
|
6459
6437
|
children: [
|
|
6460
6438
|
/* @__PURE__ */ jsx(
|
|
6461
6439
|
"input",
|
|
6462
6440
|
{
|
|
6463
|
-
|
|
6464
|
-
name,
|
|
6441
|
+
...inputProps,
|
|
6465
6442
|
disabled,
|
|
6466
6443
|
type: "checkbox",
|
|
6467
6444
|
checked,
|
|
6445
|
+
"aria-checked": indeterminate ? "mixed" : void 0,
|
|
6468
6446
|
onChange: (e) => {
|
|
6469
|
-
if (
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
}
|
|
6473
|
-
if (onChange) {
|
|
6474
|
-
onChange(e.target.checked);
|
|
6475
|
-
}
|
|
6476
|
-
}
|
|
6447
|
+
if (indeterminate) return;
|
|
6448
|
+
if (!isControlled) setInternalChecked(e.target.checked);
|
|
6449
|
+
onChange?.(e.target.checked);
|
|
6477
6450
|
},
|
|
6478
|
-
|
|
6479
|
-
className: "sr-only"
|
|
6451
|
+
className: "peer sr-only"
|
|
6480
6452
|
}
|
|
6481
6453
|
),
|
|
6482
|
-
/* @__PURE__ */ jsx("span", { className:
|
|
6454
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: boxClassName(checked || indeterminate), children: indeterminate ? /* @__PURE__ */ jsx(IndeterminateGlyph, {}) : /* @__PURE__ */ jsx(CheckGlyph, {}) }),
|
|
6483
6455
|
children && /* @__PURE__ */ jsx("span", { className: "ml-2", children })
|
|
6484
6456
|
]
|
|
6485
6457
|
}
|
|
@@ -6779,7 +6751,8 @@ function ChoiceboxGroupRoot({
|
|
|
6779
6751
|
showLabel = false,
|
|
6780
6752
|
value: controlledValue,
|
|
6781
6753
|
defaultValue,
|
|
6782
|
-
onChange,
|
|
6754
|
+
onChange: legacyOnChange,
|
|
6755
|
+
onValueChange: onChange = legacyOnChange,
|
|
6783
6756
|
disabled = false,
|
|
6784
6757
|
className,
|
|
6785
6758
|
children
|
|
@@ -7094,9 +7067,9 @@ var overlayPrimitiveClassNames = {
|
|
|
7094
7067
|
menuItemBaseClassName,
|
|
7095
7068
|
"min-h-8 gap-2",
|
|
7096
7069
|
menuHighlightedClassName,
|
|
7097
|
-
"data-[variant=destructive]:text-destructive",
|
|
7070
|
+
"data-[variant=destructive]:text-destructive-strong",
|
|
7098
7071
|
"data-[variant=destructive]:data-[highlighted]:bg-destructive/10",
|
|
7099
|
-
"data-[variant=destructive]:data-[highlighted]:text-destructive"
|
|
7072
|
+
"data-[variant=destructive]:data-[highlighted]:text-destructive-strong"
|
|
7100
7073
|
].join(" "),
|
|
7101
7074
|
menuItem: [menuItemBaseClassName, menuHighlightedClassName].join(" "),
|
|
7102
7075
|
menuSubTrigger: [
|
|
@@ -7220,7 +7193,7 @@ var DropdownMenuSubContent = ({
|
|
|
7220
7193
|
style,
|
|
7221
7194
|
ref,
|
|
7222
7195
|
...props
|
|
7223
|
-
}) => /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, { children: /* @__PURE__ */ jsx(
|
|
7196
|
+
}) => /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, { style: { zIndex: overlayZIndex.popover }, children: /* @__PURE__ */ jsx(
|
|
7224
7197
|
Menu$1.Popup,
|
|
7225
7198
|
{
|
|
7226
7199
|
ref,
|
|
@@ -7250,6 +7223,7 @@ var DropdownMenuContent = ({
|
|
|
7250
7223
|
align,
|
|
7251
7224
|
alignOffset,
|
|
7252
7225
|
side,
|
|
7226
|
+
style: { zIndex: overlayZIndex.popover },
|
|
7253
7227
|
children: /* @__PURE__ */ jsx(
|
|
7254
7228
|
Menu$1.Popup,
|
|
7255
7229
|
{
|
|
@@ -7550,7 +7524,8 @@ function CodeBlock(props) {
|
|
|
7550
7524
|
onLineReference,
|
|
7551
7525
|
languageIcons,
|
|
7552
7526
|
showLanguageIcon = true,
|
|
7553
|
-
"aria-label": ariaLabel
|
|
7527
|
+
"aria-label": ariaLabel,
|
|
7528
|
+
copyLabel = "Copy code"
|
|
7554
7529
|
} = props;
|
|
7555
7530
|
const resolvedHide = props.hideLineNumbers;
|
|
7556
7531
|
const resolvedShow = props.showLineNumbers;
|
|
@@ -7772,7 +7747,9 @@ function CodeBlock(props) {
|
|
|
7772
7747
|
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", className: "max-h-60 overflow-y-auto", children: controlledSwitcher.options.map((opt) => /* @__PURE__ */ jsxs(
|
|
7773
7748
|
DropdownMenuItem,
|
|
7774
7749
|
{
|
|
7775
|
-
onClick: () => controlledSwitcher.onChange(
|
|
7750
|
+
onClick: () => (controlledSwitcher.onValueChange ?? controlledSwitcher.onChange)?.(
|
|
7751
|
+
opt.value
|
|
7752
|
+
),
|
|
7776
7753
|
className: cn(
|
|
7777
7754
|
"text-xs",
|
|
7778
7755
|
opt.value === controlledSwitcher.value && "bg-accent font-medium"
|
|
@@ -7844,7 +7821,7 @@ function CodeBlock(props) {
|
|
|
7844
7821
|
type: "button",
|
|
7845
7822
|
onClick: () => copyToClipboard(code),
|
|
7846
7823
|
className: "inline-flex h-8 w-8 items-center justify-center rounded-[var(--radius-md)] hover:bg-accent hover:text-accent-foreground",
|
|
7847
|
-
"aria-label":
|
|
7824
|
+
"aria-label": copyLabel,
|
|
7848
7825
|
children: copied ? /* @__PURE__ */ jsx(
|
|
7849
7826
|
motion.div,
|
|
7850
7827
|
{
|
|
@@ -8078,25 +8055,33 @@ var CollapsibleContent = ({
|
|
|
8078
8055
|
};
|
|
8079
8056
|
CollapsibleContent.displayName = "CollapsibleContent";
|
|
8080
8057
|
var colorBadgeVariants = {
|
|
8081
|
-
gray: "bg-muted text-
|
|
8082
|
-
"gray-subtle": "bg-muted text-muted-foreground fill-
|
|
8083
|
-
blue: "bg-
|
|
8084
|
-
"blue-subtle": "bg-blue-
|
|
8058
|
+
gray: "bg-muted text-muted-foreground fill-muted-foreground",
|
|
8059
|
+
"gray-subtle": "bg-muted text-muted-foreground fill-muted-foreground",
|
|
8060
|
+
blue: "bg-info text-info-foreground fill-info-foreground",
|
|
8061
|
+
"blue-subtle": "bg-blue-3 text-blue-11 fill-blue-11",
|
|
8062
|
+
// allow-palette: categorical hue with no token equivalent (purple/violet has no semantic slot; --category-N is too desaturated for a solid badge fill)
|
|
8085
8063
|
purple: "bg-purple-700 text-white fill-white",
|
|
8064
|
+
// allow-palette: categorical hue with no token equivalent (purple/violet has no semantic slot)
|
|
8086
8065
|
"purple-subtle": "bg-purple-200 text-purple-900 fill-purple-900",
|
|
8087
|
-
amber: "bg-
|
|
8088
|
-
"amber-subtle": "bg-
|
|
8089
|
-
red: "bg-
|
|
8090
|
-
"red-subtle": "bg-
|
|
8066
|
+
amber: "bg-warning text-warning-foreground fill-warning-foreground",
|
|
8067
|
+
"amber-subtle": "bg-warning/15 text-warning-strong fill-warning-strong",
|
|
8068
|
+
red: "bg-destructive text-destructive-foreground fill-destructive-foreground",
|
|
8069
|
+
"red-subtle": "bg-destructive/15 text-destructive-strong fill-destructive-strong",
|
|
8070
|
+
// allow-palette: categorical hue with no token equivalent (pink has no semantic slot)
|
|
8091
8071
|
pink: "bg-pink-700 text-white fill-white",
|
|
8072
|
+
// allow-palette: categorical hue with no token equivalent (pink has no semantic slot)
|
|
8092
8073
|
"pink-subtle": "bg-pink-300 text-pink-900 fill-pink-900",
|
|
8093
|
-
green: "bg-
|
|
8094
|
-
"green-subtle": "bg-
|
|
8095
|
-
teal: "bg-
|
|
8096
|
-
"teal-subtle": "bg-
|
|
8097
|
-
inverted: "bg-muted text-muted-foreground fill-
|
|
8098
|
-
trial
|
|
8099
|
-
|
|
8074
|
+
green: "bg-success text-success-foreground fill-success-foreground",
|
|
8075
|
+
"green-subtle": "bg-success/15 text-success-strong fill-success-strong",
|
|
8076
|
+
teal: "bg-cyan-11 text-cyan-1 fill-cyan-1",
|
|
8077
|
+
"teal-subtle": "bg-cyan-3 text-cyan-11 fill-cyan-11",
|
|
8078
|
+
inverted: "bg-muted text-muted-foreground fill-background dark:fill-foreground",
|
|
8079
|
+
// The same trial / turbo gradients Badge uses (--ds-trial-*, --ds-turbo-*),
|
|
8080
|
+
// not a second hand-picked pair. Fixed and vivid in both themes: white ink.
|
|
8081
|
+
// allow-palette: fixed vivid gradient, white ink in both themes
|
|
8082
|
+
trial: "bg-gradient-to-br from-trial-start to-trial-end text-white fill-white",
|
|
8083
|
+
// allow-palette: fixed vivid gradient, white ink in both themes
|
|
8084
|
+
turbo: "bg-gradient-to-br from-turbo-start to-turbo-end text-white fill-white",
|
|
8100
8085
|
pill: "bg-background text-foreground fill-foreground border border-border"
|
|
8101
8086
|
};
|
|
8102
8087
|
var colorBadgeSizes = {
|
|
@@ -8152,11 +8137,7 @@ var commandFrameClassName = cn(
|
|
|
8152
8137
|
"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-2.5",
|
|
8153
8138
|
"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4"
|
|
8154
8139
|
);
|
|
8155
|
-
var commandInputWrapperClassName = cn(
|
|
8156
|
-
"flex items-center border-b border-border px-3",
|
|
8157
|
-
"transition-[border-color] duration-micro ease-out",
|
|
8158
|
-
"has-[:focus-visible]:border-ring/60"
|
|
8159
|
-
);
|
|
8140
|
+
var commandInputWrapperClassName = cn("flex items-center border-b border-border px-3");
|
|
8160
8141
|
var commandInputClassName = cn(
|
|
8161
8142
|
"flex h-11 w-full appearance-none border-0 bg-transparent py-3 text-sm text-foreground shadow-none outline-none",
|
|
8162
8143
|
"placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -8587,6 +8568,7 @@ function PopoverContent({
|
|
|
8587
8568
|
return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
8588
8569
|
Popover$1.Positioner,
|
|
8589
8570
|
{
|
|
8571
|
+
style: { zIndex: overlayZIndex.popover },
|
|
8590
8572
|
"data-slot": "popover-positioner",
|
|
8591
8573
|
sideOffset,
|
|
8592
8574
|
align,
|
|
@@ -8601,7 +8583,7 @@ function PopoverContent({
|
|
|
8601
8583
|
overlayPrimitiveClassNames.popoverSurface,
|
|
8602
8584
|
className
|
|
8603
8585
|
),
|
|
8604
|
-
style
|
|
8586
|
+
style,
|
|
8605
8587
|
...props,
|
|
8606
8588
|
children: [
|
|
8607
8589
|
children,
|
|
@@ -8677,7 +8659,11 @@ var comboboxSizeTokens = {
|
|
|
8677
8659
|
var comboboxTriggerVariants = cva(
|
|
8678
8660
|
[
|
|
8679
8661
|
"flex w-full items-center justify-between gap-2 whitespace-nowrap",
|
|
8680
|
-
|
|
8662
|
+
// --input-radius, not the generic md step: this trigger is a form control and
|
|
8663
|
+
// should round like Input and Select do. Reading the scale step meant it
|
|
8664
|
+
// tracked whatever a language did to medium surfaces instead of what it
|
|
8665
|
+
// decided for its fields.
|
|
8666
|
+
"h-[var(--combobox-trigger-height)] rounded-[var(--input-radius,var(--radius-md))] border border-input bg-background px-[var(--combobox-trigger-padding-x)]",
|
|
8681
8667
|
"text-[length:var(--combobox-font-size)] ring-offset-background",
|
|
8682
8668
|
"transition-colors duration-micro ease-out",
|
|
8683
8669
|
"placeholder:text-muted-foreground",
|
|
@@ -8789,7 +8775,8 @@ function toCssLength(value) {
|
|
|
8789
8775
|
function ComboboxRoot({
|
|
8790
8776
|
options,
|
|
8791
8777
|
value: controlledValue,
|
|
8792
|
-
onChange,
|
|
8778
|
+
onChange: legacyOnChange,
|
|
8779
|
+
onValueChange: onChange = legacyOnChange,
|
|
8793
8780
|
defaultValue = null,
|
|
8794
8781
|
disabled = false,
|
|
8795
8782
|
errored,
|
|
@@ -9163,18 +9150,6 @@ var inputTokens = {
|
|
|
9163
9150
|
},
|
|
9164
9151
|
focusRingWidth: 3,
|
|
9165
9152
|
fieldGap: primitiveSpacing[2] - primitiveSpacing[1] / 2};
|
|
9166
|
-
|
|
9167
|
-
// src/primitives/form-control.ts
|
|
9168
|
-
var formControlFocusClassNames = {
|
|
9169
|
-
input: "outline-none focus:border-ring focus:ring-[length:var(--input-focus-ring-width)] focus:ring-ring/30",
|
|
9170
|
-
textarea: "outline-none focus:border-ring focus:ring-[length:var(--textarea-focus-ring-width)] focus:ring-ring/30",
|
|
9171
|
-
select: "outline-none focus:border-ring focus:ring-[length:var(--select-focus-ring-width)] focus:ring-ring/30"
|
|
9172
|
-
};
|
|
9173
|
-
var formControlInvalidClassNames = {
|
|
9174
|
-
input: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
9175
|
-
textarea: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20",
|
|
9176
|
-
select: "aria-invalid:border-destructive/60 aria-invalid:focus:border-destructive aria-invalid:focus:ring-destructive/20"
|
|
9177
|
-
};
|
|
9178
9153
|
var inputVariants = cva(
|
|
9179
9154
|
[
|
|
9180
9155
|
"flex h-[var(--input-height)] w-full rounded-[var(--input-radius)]",
|
|
@@ -9221,7 +9196,7 @@ var inputVariants = cva(
|
|
|
9221
9196
|
* the ring surrounds the whole group rather than a box inside it.
|
|
9222
9197
|
*/
|
|
9223
9198
|
tone: {
|
|
9224
|
-
bordered: `border border-input bg-background
|
|
9199
|
+
bordered: `border border-input bg-background ${formControlFocusClassNames.input}`,
|
|
9225
9200
|
bare: "border-0 bg-transparent shadow-none"
|
|
9226
9201
|
}
|
|
9227
9202
|
},
|
|
@@ -9250,7 +9225,7 @@ var inputControlButtonVariants = cva(
|
|
|
9250
9225
|
[
|
|
9251
9226
|
"absolute right-[var(--input-control-inset)] top-1/2 flex size-[var(--input-control-size)] -translate-y-1/2 items-center justify-center",
|
|
9252
9227
|
"rounded-[var(--radius-sm)] text-muted-foreground transition-colors duration-micro ease-out",
|
|
9253
|
-
"hover:bg-accent hover:text-foreground",
|
|
9228
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
9254
9229
|
"focus-visible:outline-none",
|
|
9255
9230
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
9256
9231
|
"[&_svg]:size-[var(--input-control-icon-size)]"
|
|
@@ -9260,7 +9235,7 @@ var fieldMessageVariants = cva("text-xs", {
|
|
|
9260
9235
|
variants: {
|
|
9261
9236
|
tone: {
|
|
9262
9237
|
description: "text-muted-foreground",
|
|
9263
|
-
error: "font-medium text-destructive"
|
|
9238
|
+
error: "font-medium text-destructive-strong"
|
|
9264
9239
|
}
|
|
9265
9240
|
}
|
|
9266
9241
|
});
|
|
@@ -9327,6 +9302,7 @@ var Input = ({
|
|
|
9327
9302
|
revealable,
|
|
9328
9303
|
revealLabel = "Show password",
|
|
9329
9304
|
hideLabel = "Hide password",
|
|
9305
|
+
clearLabel = "Clear input",
|
|
9330
9306
|
clearOnEscape,
|
|
9331
9307
|
wrapperClassName,
|
|
9332
9308
|
fieldClassName,
|
|
@@ -9477,7 +9453,7 @@ var Input = ({
|
|
|
9477
9453
|
"button",
|
|
9478
9454
|
{
|
|
9479
9455
|
type: "button",
|
|
9480
|
-
"aria-label":
|
|
9456
|
+
"aria-label": clearLabel,
|
|
9481
9457
|
disabled,
|
|
9482
9458
|
className: inputControlButtonVariants(),
|
|
9483
9459
|
style: getInputStyle(size, void 0),
|
|
@@ -9582,13 +9558,13 @@ function ConfirmDialog({
|
|
|
9582
9558
|
confirmVariant: "default"
|
|
9583
9559
|
},
|
|
9584
9560
|
destructive: {
|
|
9585
|
-
icon: /* @__PURE__ */ jsx(Trash, { className: "size-6 text-destructive" }),
|
|
9561
|
+
icon: /* @__PURE__ */ jsx(Trash, { className: "size-6 text-destructive-strong" }),
|
|
9586
9562
|
iconBg: "bg-destructive/10",
|
|
9587
9563
|
confirmVariant: "destructive"
|
|
9588
9564
|
},
|
|
9589
9565
|
warning: {
|
|
9590
|
-
icon: /* @__PURE__ */ jsx(Warning, { className: "size-6 text-
|
|
9591
|
-
iconBg: "bg-
|
|
9566
|
+
icon: /* @__PURE__ */ jsx(Warning, { className: "size-6 text-warning-strong" }),
|
|
9567
|
+
iconBg: "bg-warning/10",
|
|
9592
9568
|
confirmVariant: "default"
|
|
9593
9569
|
}
|
|
9594
9570
|
};
|
|
@@ -9734,7 +9710,7 @@ function DestructiveActionModalContent({
|
|
|
9734
9710
|
verificationLabel,
|
|
9735
9711
|
" "
|
|
9736
9712
|
] }) : null,
|
|
9737
|
-
/* @__PURE__ */ jsxs("span", { className: "font-mono text-destructive", children: [
|
|
9713
|
+
/* @__PURE__ */ jsxs("span", { className: "font-mono text-destructive-strong", children: [
|
|
9738
9714
|
'"',
|
|
9739
9715
|
verificationPhrase,
|
|
9740
9716
|
'"'
|
|
@@ -9758,7 +9734,7 @@ function DestructiveActionModalContent({
|
|
|
9758
9734
|
value
|
|
9759
9735
|
}
|
|
9760
9736
|
),
|
|
9761
|
-
errorMessage2 ? /* @__PURE__ */ jsx("p", { id: errorId, className: "text-sm text-destructive", role: "alert", children: errorMessage2 }) : null
|
|
9737
|
+
errorMessage2 ? /* @__PURE__ */ jsx("p", { id: errorId, className: "text-sm text-destructive-strong", role: "alert", children: errorMessage2 }) : null
|
|
9762
9738
|
] }),
|
|
9763
9739
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
|
|
9764
9740
|
/* @__PURE__ */ jsx(Button, { disabled: loading, onClick: onCancel, type: "button", variant: "outline", children: cancelLabel }),
|
|
@@ -9779,7 +9755,7 @@ function DestructiveActionModalContent({
|
|
|
9779
9755
|
{
|
|
9780
9756
|
id: irreversibleId,
|
|
9781
9757
|
className: cn(
|
|
9782
|
-
"flex items-start gap-2 border-t border-destructive/20 px-6 py-3 text-sm text-destructive",
|
|
9758
|
+
"flex items-start gap-2 border-t border-destructive/20 px-6 py-3 text-sm text-destructive-strong",
|
|
9783
9759
|
"bg-[repeating-linear-gradient(-45deg,hsl(var(--destructive)/0.08),hsl(var(--destructive)/0.08)_1px,transparent_1px,transparent_7px)]"
|
|
9784
9760
|
),
|
|
9785
9761
|
children: [
|
|
@@ -9871,12 +9847,12 @@ function BulkActionConfirmDialogContent({
|
|
|
9871
9847
|
iconBg: "bg-primary/10"
|
|
9872
9848
|
},
|
|
9873
9849
|
destructive: {
|
|
9874
|
-
icon: /* @__PURE__ */ jsx(Trash, { className: "size-6 text-destructive" }),
|
|
9850
|
+
icon: /* @__PURE__ */ jsx(Trash, { className: "size-6 text-destructive-strong" }),
|
|
9875
9851
|
iconBg: "bg-destructive/10"
|
|
9876
9852
|
},
|
|
9877
9853
|
warning: {
|
|
9878
|
-
icon: /* @__PURE__ */ jsx(Warning, { className: "size-6 text-
|
|
9879
|
-
iconBg: "bg-
|
|
9854
|
+
icon: /* @__PURE__ */ jsx(Warning, { className: "size-6 text-warning-strong" }),
|
|
9855
|
+
iconBg: "bg-warning/10"
|
|
9880
9856
|
}
|
|
9881
9857
|
};
|
|
9882
9858
|
const styles = variantStyles[variant];
|
|
@@ -9899,7 +9875,7 @@ function BulkActionConfirmDialogContent({
|
|
|
9899
9875
|
" ",
|
|
9900
9876
|
itemType,
|
|
9901
9877
|
".",
|
|
9902
|
-
variant === "destructive" && /* @__PURE__ */ jsxs("span", { className: "font-semibold text-destructive", children: [
|
|
9878
|
+
variant === "destructive" && /* @__PURE__ */ jsxs("span", { className: "font-semibold text-destructive-strong", children: [
|
|
9903
9879
|
" ",
|
|
9904
9880
|
"This action cannot be undone."
|
|
9905
9881
|
] })
|
|
@@ -10128,7 +10104,7 @@ var ContextCardTrigger = ({
|
|
|
10128
10104
|
align,
|
|
10129
10105
|
sideOffset,
|
|
10130
10106
|
alignOffset,
|
|
10131
|
-
|
|
10107
|
+
style: { zIndex: overlayZIndex.popover },
|
|
10132
10108
|
children: /* @__PURE__ */ jsx(
|
|
10133
10109
|
Popover$1.Popup,
|
|
10134
10110
|
{
|
|
@@ -10150,7 +10126,7 @@ var ContextCardTrigger = ({
|
|
|
10150
10126
|
"rounded-[var(--context-card-radius)] border border-border bg-popover",
|
|
10151
10127
|
"px-[var(--context-card-padding-x)] py-[var(--context-card-padding-y)]",
|
|
10152
10128
|
"text-[length:var(--context-card-body-size)] text-popover-foreground shadow-md outline-none",
|
|
10153
|
-
"transition-[opacity,transform
|
|
10129
|
+
"transition-[opacity,transform] duration-[var(--context-card-duration)] ease-[var(--context-card-easing)]",
|
|
10154
10130
|
"data-starting-style:opacity-0 data-ending-style:opacity-0 data-starting-style:scale-[0.98] data-ending-style:scale-[0.98]",
|
|
10155
10131
|
"motion-reduce:transition-none motion-reduce:data-starting-style:scale-100 motion-reduce:data-ending-style:scale-100",
|
|
10156
10132
|
"",
|
|
@@ -10248,6 +10224,7 @@ var ContextMenuContent = ({
|
|
|
10248
10224
|
}) => /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
10249
10225
|
ContextMenu$1.Positioner,
|
|
10250
10226
|
{
|
|
10227
|
+
style: { zIndex: overlayZIndex.popover },
|
|
10251
10228
|
alignOffset,
|
|
10252
10229
|
align,
|
|
10253
10230
|
sideOffset,
|
|
@@ -10700,7 +10677,7 @@ var iconToneClassName = {
|
|
|
10700
10677
|
"no-results": "text-muted-foreground",
|
|
10701
10678
|
cleared: "text-muted-foreground",
|
|
10702
10679
|
permission: "text-muted-foreground",
|
|
10703
|
-
error: "text-destructive"
|
|
10680
|
+
error: "text-destructive-strong"
|
|
10704
10681
|
};
|
|
10705
10682
|
var emptyStateCssVars = (size) => ({
|
|
10706
10683
|
"--empty-state-min-height": `${emptyStateTokens.root.minHeight[size]}px`,
|
|
@@ -10800,10 +10777,41 @@ var EmptyStateRoot = ({
|
|
|
10800
10777
|
);
|
|
10801
10778
|
};
|
|
10802
10779
|
EmptyStateRoot.displayName = "EmptyState.Root";
|
|
10803
|
-
var
|
|
10780
|
+
var toneVariant = {
|
|
10781
|
+
default: "blank-slate",
|
|
10782
|
+
branded: "informational",
|
|
10783
|
+
subtle: "guide"
|
|
10784
|
+
};
|
|
10785
|
+
function EmptyStateSimple({
|
|
10786
|
+
title,
|
|
10787
|
+
description,
|
|
10788
|
+
mascot,
|
|
10789
|
+
icon,
|
|
10790
|
+
action,
|
|
10791
|
+
secondaryAction,
|
|
10792
|
+
tone = "default",
|
|
10793
|
+
size = "md",
|
|
10794
|
+
className
|
|
10795
|
+
}) {
|
|
10796
|
+
const visual = mascot ?? icon ?? (tone === "branded" ? /* @__PURE__ */ jsx(BrandMark, { size: size === "lg" ? "lg" : "md" }) : null);
|
|
10797
|
+
return /* @__PURE__ */ jsx(
|
|
10798
|
+
EmptyStateRoot,
|
|
10799
|
+
{
|
|
10800
|
+
action,
|
|
10801
|
+
className: cn(tone === "subtle" && "border-0 bg-transparent", className),
|
|
10802
|
+
description,
|
|
10803
|
+
icon: visual ? /* @__PURE__ */ jsx(EmptyStateIcon, { icon: visual }) : void 0,
|
|
10804
|
+
link: secondaryAction,
|
|
10805
|
+
size,
|
|
10806
|
+
title,
|
|
10807
|
+
variant: toneVariant[tone]
|
|
10808
|
+
}
|
|
10809
|
+
);
|
|
10810
|
+
}
|
|
10811
|
+
var EmptyState = Object.assign(EmptyStateSimple, {
|
|
10804
10812
|
Root: EmptyStateRoot,
|
|
10805
10813
|
Icon: EmptyStateIcon
|
|
10806
|
-
};
|
|
10814
|
+
});
|
|
10807
10815
|
function asCssLength(value) {
|
|
10808
10816
|
if (value === void 0) return void 0;
|
|
10809
10817
|
return typeof value === "number" ? `${value}px` : value;
|
|
@@ -11283,6 +11291,189 @@ function DataList({
|
|
|
11283
11291
|
);
|
|
11284
11292
|
}
|
|
11285
11293
|
DataList.displayName = "DataList";
|
|
11294
|
+
var ISO_DATE_FORMAT = "yyyy-MM-dd";
|
|
11295
|
+
function parseIsoDate(value) {
|
|
11296
|
+
if (!value) return void 0;
|
|
11297
|
+
const parsed = parse(value, ISO_DATE_FORMAT, /* @__PURE__ */ new Date());
|
|
11298
|
+
return isValid(parsed) ? parsed : void 0;
|
|
11299
|
+
}
|
|
11300
|
+
function toIsoDate(date) {
|
|
11301
|
+
return format(date, ISO_DATE_FORMAT);
|
|
11302
|
+
}
|
|
11303
|
+
function getFieldStyle(size, style) {
|
|
11304
|
+
const token = inputTokens.sizes[size];
|
|
11305
|
+
return {
|
|
11306
|
+
"--input-height": `${token.height}px`,
|
|
11307
|
+
"--input-padding-x": `${token.paddingX}px`,
|
|
11308
|
+
"--input-padding-left": `${token.affixWidth}px`,
|
|
11309
|
+
"--input-padding-right": `${token.affixWidth}px`,
|
|
11310
|
+
"--input-font-size": `${token.fontSize}px`,
|
|
11311
|
+
"--input-radius": `${token.radius}px`,
|
|
11312
|
+
"--input-affix-inset": `${token.affixInset}px`,
|
|
11313
|
+
"--input-control-inset": `${token.controlInset}px`,
|
|
11314
|
+
"--input-control-size": `${token.controlSize}px`,
|
|
11315
|
+
"--input-control-icon-size": `${token.controlIconSize}px`,
|
|
11316
|
+
"--input-icon-size": `${token.iconSize}px`,
|
|
11317
|
+
"--input-focus-ring-width": `${inputTokens.focusRingWidth}px`,
|
|
11318
|
+
borderRadius: "var(--input-radius)",
|
|
11319
|
+
outline: "none",
|
|
11320
|
+
...style
|
|
11321
|
+
};
|
|
11322
|
+
}
|
|
11323
|
+
function joinIds(...ids) {
|
|
11324
|
+
return ids.filter(Boolean).join(" ") || void 0;
|
|
11325
|
+
}
|
|
11326
|
+
function DatePicker({
|
|
11327
|
+
value,
|
|
11328
|
+
defaultValue,
|
|
11329
|
+
onValueChange,
|
|
11330
|
+
label,
|
|
11331
|
+
id,
|
|
11332
|
+
name,
|
|
11333
|
+
placeholder,
|
|
11334
|
+
description,
|
|
11335
|
+
error,
|
|
11336
|
+
size = "md",
|
|
11337
|
+
disabled,
|
|
11338
|
+
required,
|
|
11339
|
+
min,
|
|
11340
|
+
max,
|
|
11341
|
+
displayFormat = ISO_DATE_FORMAT,
|
|
11342
|
+
triggerLabel = "Open calendar",
|
|
11343
|
+
className,
|
|
11344
|
+
fieldClassName,
|
|
11345
|
+
wrapperClassName,
|
|
11346
|
+
locale,
|
|
11347
|
+
weekStartsOn,
|
|
11348
|
+
numberOfMonths,
|
|
11349
|
+
fixedWeeks,
|
|
11350
|
+
showOutsideDays,
|
|
11351
|
+
dir,
|
|
11352
|
+
...fieldProps
|
|
11353
|
+
}) {
|
|
11354
|
+
const isControlled = value !== void 0;
|
|
11355
|
+
const generatedId = React45.useId();
|
|
11356
|
+
const fieldId = id ?? generatedId;
|
|
11357
|
+
const [internalValue, setInternalValue] = React45.useState(defaultValue ?? "");
|
|
11358
|
+
const currentValue = isControlled ? value : internalValue;
|
|
11359
|
+
const selected = parseIsoDate(currentValue);
|
|
11360
|
+
const minDate = parseIsoDate(min);
|
|
11361
|
+
const maxDate = parseIsoDate(max);
|
|
11362
|
+
const [draft, setDraft] = React45.useState(null);
|
|
11363
|
+
const [open, setOpen] = React45.useState(false);
|
|
11364
|
+
const displayValue = draft ?? (selected ? format(selected, displayFormat) : currentValue ?? "");
|
|
11365
|
+
const descriptionId = description ? `${fieldId}-description` : void 0;
|
|
11366
|
+
const errorId = typeof error === "string" ? `${fieldId}-error` : void 0;
|
|
11367
|
+
const invalid = error === true || typeof error === "string";
|
|
11368
|
+
const commit = React45.useCallback(
|
|
11369
|
+
(next) => {
|
|
11370
|
+
if (!isControlled) setInternalValue(next);
|
|
11371
|
+
onValueChange?.(next);
|
|
11372
|
+
},
|
|
11373
|
+
[isControlled, onValueChange]
|
|
11374
|
+
);
|
|
11375
|
+
const handleTextChange = (event) => {
|
|
11376
|
+
const text = event.target.value;
|
|
11377
|
+
setDraft(text);
|
|
11378
|
+
if (text === "") {
|
|
11379
|
+
commit("");
|
|
11380
|
+
return;
|
|
11381
|
+
}
|
|
11382
|
+
const parsed = parse(text, displayFormat, /* @__PURE__ */ new Date());
|
|
11383
|
+
if (isValid(parsed)) commit(toIsoDate(parsed));
|
|
11384
|
+
};
|
|
11385
|
+
const handleBlur = () => setDraft(null);
|
|
11386
|
+
const handleSelect = (next) => {
|
|
11387
|
+
setDraft(null);
|
|
11388
|
+
commit(next ? toIsoDate(next) : "");
|
|
11389
|
+
setOpen(false);
|
|
11390
|
+
};
|
|
11391
|
+
const disabledMatcher = [
|
|
11392
|
+
...minDate ? [{ before: minDate }] : [],
|
|
11393
|
+
...maxDate ? [{ after: maxDate }] : []
|
|
11394
|
+
];
|
|
11395
|
+
const control = /* @__PURE__ */ jsxs(
|
|
11396
|
+
"div",
|
|
11397
|
+
{
|
|
11398
|
+
"data-slot": "date-picker",
|
|
11399
|
+
className: cn("relative flex items-center", wrapperClassName),
|
|
11400
|
+
style: getFieldStyle(size, void 0),
|
|
11401
|
+
children: [
|
|
11402
|
+
/* @__PURE__ */ jsx(
|
|
11403
|
+
"input",
|
|
11404
|
+
{
|
|
11405
|
+
type: "text",
|
|
11406
|
+
inputMode: "numeric",
|
|
11407
|
+
autoComplete: "off",
|
|
11408
|
+
"data-slot": "date-picker-input",
|
|
11409
|
+
"aria-invalid": invalid || void 0,
|
|
11410
|
+
"aria-describedby": joinIds(descriptionId, errorId),
|
|
11411
|
+
...fieldProps,
|
|
11412
|
+
id: fieldId,
|
|
11413
|
+
name,
|
|
11414
|
+
className: cn(inputVariants({ size, affix: "suffix", tone: "bordered" }), className),
|
|
11415
|
+
style: getFieldStyle(size, void 0),
|
|
11416
|
+
placeholder: placeholder ?? displayFormat,
|
|
11417
|
+
value: displayValue,
|
|
11418
|
+
onChange: handleTextChange,
|
|
11419
|
+
onBlur: handleBlur,
|
|
11420
|
+
disabled,
|
|
11421
|
+
required
|
|
11422
|
+
}
|
|
11423
|
+
),
|
|
11424
|
+
/* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
11425
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
11426
|
+
"button",
|
|
11427
|
+
{
|
|
11428
|
+
type: "button",
|
|
11429
|
+
"aria-label": triggerLabel,
|
|
11430
|
+
disabled,
|
|
11431
|
+
className: inputControlButtonVariants(),
|
|
11432
|
+
style: getFieldStyle(size, void 0),
|
|
11433
|
+
children: /* @__PURE__ */ jsx(Calendar$1, { "aria-hidden": "true" })
|
|
11434
|
+
}
|
|
11435
|
+
) }),
|
|
11436
|
+
/* @__PURE__ */ jsx(PopoverContent, { align: "start", className: "w-auto p-0", children: /* @__PURE__ */ jsx(
|
|
11437
|
+
Calendar,
|
|
11438
|
+
{
|
|
11439
|
+
mode: "single",
|
|
11440
|
+
...selected ? { selected, defaultMonth: selected } : {},
|
|
11441
|
+
onSelect: handleSelect,
|
|
11442
|
+
...disabledMatcher.length > 0 ? { disabled: disabledMatcher } : {},
|
|
11443
|
+
...minDate ? { startMonth: minDate } : {},
|
|
11444
|
+
...maxDate ? { endMonth: maxDate } : {},
|
|
11445
|
+
...locale ? { locale } : {},
|
|
11446
|
+
...weekStartsOn !== void 0 ? { weekStartsOn } : {},
|
|
11447
|
+
...numberOfMonths !== void 0 ? { numberOfMonths } : {},
|
|
11448
|
+
...fixedWeeks !== void 0 ? { fixedWeeks } : {},
|
|
11449
|
+
...showOutsideDays !== void 0 ? { showOutsideDays } : {},
|
|
11450
|
+
...dir !== void 0 ? { dir } : {},
|
|
11451
|
+
autoFocus: true
|
|
11452
|
+
}
|
|
11453
|
+
) })
|
|
11454
|
+
] })
|
|
11455
|
+
]
|
|
11456
|
+
}
|
|
11457
|
+
);
|
|
11458
|
+
if (!label && !description && typeof error !== "string") {
|
|
11459
|
+
return control;
|
|
11460
|
+
}
|
|
11461
|
+
return /* @__PURE__ */ jsxs(
|
|
11462
|
+
"div",
|
|
11463
|
+
{
|
|
11464
|
+
"data-slot": "date-picker-field",
|
|
11465
|
+
className: cn("grid gap-[var(--input-field-gap)]", fieldClassName),
|
|
11466
|
+
style: { "--input-field-gap": `${inputTokens.fieldGap}px` },
|
|
11467
|
+
children: [
|
|
11468
|
+
label && /* @__PURE__ */ jsx("label", { htmlFor: fieldId, className: "text-sm font-medium text-foreground", children: label }),
|
|
11469
|
+
control,
|
|
11470
|
+
description && !error && /* @__PURE__ */ jsx("p", { id: descriptionId, className: "text-xs text-muted-foreground", children: description }),
|
|
11471
|
+
typeof error === "string" && /* @__PURE__ */ jsx("p", { id: errorId, role: "alert", className: "text-xs font-medium text-destructive-strong", children: error })
|
|
11472
|
+
]
|
|
11473
|
+
}
|
|
11474
|
+
);
|
|
11475
|
+
}
|
|
11476
|
+
DatePicker.displayName = "DatePicker";
|
|
11286
11477
|
var Description = function Description2({
|
|
11287
11478
|
ref,
|
|
11288
11479
|
title,
|
|
@@ -11300,25 +11491,25 @@ var Description = function Description2({
|
|
|
11300
11491
|
};
|
|
11301
11492
|
function DisplayCard({
|
|
11302
11493
|
className,
|
|
11303
|
-
icon = /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-blue-
|
|
11494
|
+
icon = /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-blue-11" }),
|
|
11304
11495
|
title = "Featured",
|
|
11305
11496
|
description = "Discover amazing content",
|
|
11306
11497
|
date = "Just now",
|
|
11307
|
-
titleClassName = "text-blue-
|
|
11498
|
+
titleClassName = "text-blue-11"
|
|
11308
11499
|
}) {
|
|
11309
11500
|
return /* @__PURE__ */ jsxs(
|
|
11310
11501
|
"div",
|
|
11311
11502
|
{
|
|
11312
11503
|
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-
|
|
11504
|
+
"relative flex h-36 w-[22rem] -skew-y-[8deg] select-none flex-col justify-between rounded-[var(--radius-xl)] border-2 bg-muted/70 backdrop-blur-sm px-4 py-3 transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-cinematic",
|
|
11314
11505
|
"after:absolute after:-right-1 after:top-[-5%] after:h-[110%] after:w-[20rem] after:bg-gradient-to-l after:from-background after:to-transparent after:content-['']",
|
|
11315
|
-
"hover:border-
|
|
11506
|
+
"hover:border-foreground/20 hover:bg-muted",
|
|
11316
11507
|
"[&>*]:flex [&>*]:items-center [&>*]:gap-2",
|
|
11317
11508
|
className
|
|
11318
11509
|
),
|
|
11319
11510
|
children: [
|
|
11320
11511
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
11321
|
-
/* @__PURE__ */ jsx("span", { className: "relative inline-block rounded-full bg-blue-
|
|
11512
|
+
/* @__PURE__ */ jsx("span", { className: "relative inline-block rounded-full bg-blue-4 p-1", children: icon }),
|
|
11322
11513
|
/* @__PURE__ */ jsx("p", { className: cn("text-lg font-medium", titleClassName), children: title })
|
|
11323
11514
|
] }),
|
|
11324
11515
|
/* @__PURE__ */ jsx("p", { className: "whitespace-nowrap text-lg", children: description }),
|
|
@@ -11329,10 +11520,10 @@ function DisplayCard({
|
|
|
11329
11520
|
}
|
|
11330
11521
|
var DEFAULT_CARDS = [
|
|
11331
11522
|
{
|
|
11332
|
-
className: "[grid-area:stack] hover:-translate-y-10 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-
|
|
11523
|
+
className: "[grid-area:stack] hover:-translate-y-10 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-cinematic hover:grayscale-0 before:left-0 before:top-0"
|
|
11333
11524
|
},
|
|
11334
11525
|
{
|
|
11335
|
-
className: "[grid-area:stack] translate-x-16 translate-y-10 hover:-translate-y-1 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-
|
|
11526
|
+
className: "[grid-area:stack] translate-x-16 translate-y-10 hover:-translate-y-1 before:absolute before:w-[100%] before:outline-1 before:rounded-[var(--radius-xl)] before:outline-border before:h-[100%] before:content-[''] before:bg-blend-overlay before:bg-background/50 grayscale-[100%] hover:before:opacity-0 before:transition-opacity before:duration-cinematic hover:grayscale-0 before:left-0 before:top-0"
|
|
11336
11527
|
},
|
|
11337
11528
|
{
|
|
11338
11529
|
className: "[grid-area:stack] translate-x-32 translate-y-20 hover:translate-y-10"
|
|
@@ -11344,7 +11535,7 @@ function DisplayCards({ cards, className }) {
|
|
|
11344
11535
|
"div",
|
|
11345
11536
|
{
|
|
11346
11537
|
className: cn(
|
|
11347
|
-
"grid [grid-template-areas:'stack'] place-items-center opacity-100 animate-in fade-in-0 duration-
|
|
11538
|
+
"grid [grid-template-areas:'stack'] place-items-center opacity-100 animate-in fade-in-0 duration-cinematic",
|
|
11348
11539
|
className
|
|
11349
11540
|
),
|
|
11350
11541
|
children: displayCards.map((cardProps, index) => /* @__PURE__ */ jsx(DisplayCard, { ...cardProps }, index))
|
|
@@ -11536,7 +11727,7 @@ function DitheringBackground({
|
|
|
11536
11727
|
pxSize: config.pxSize,
|
|
11537
11728
|
scale: config.scale,
|
|
11538
11729
|
style: {
|
|
11539
|
-
height: "
|
|
11730
|
+
height: "100dvh",
|
|
11540
11731
|
width: "100vw"
|
|
11541
11732
|
}
|
|
11542
11733
|
}
|
|
@@ -12497,7 +12688,8 @@ function TocExpandedMenu({
|
|
|
12497
12688
|
firstMenuItemRef,
|
|
12498
12689
|
onClose,
|
|
12499
12690
|
onHover,
|
|
12500
|
-
onJump
|
|
12691
|
+
onJump,
|
|
12692
|
+
closeLabel = "Close table of contents"
|
|
12501
12693
|
}) {
|
|
12502
12694
|
return /* @__PURE__ */ jsxs(
|
|
12503
12695
|
m.div,
|
|
@@ -12519,7 +12711,7 @@ function TocExpandedMenu({
|
|
|
12519
12711
|
"button",
|
|
12520
12712
|
{
|
|
12521
12713
|
type: "button",
|
|
12522
|
-
"aria-label":
|
|
12714
|
+
"aria-label": closeLabel,
|
|
12523
12715
|
onClick: onClose,
|
|
12524
12716
|
className: "text-muted-foreground transition-colors duration-micro hover:text-foreground focus-visible:text-foreground focus-visible:outline-none",
|
|
12525
12717
|
children: /* @__PURE__ */ jsx(Cross, { className: "h-5 w-5", "aria-hidden": "true" })
|
|
@@ -12577,7 +12769,7 @@ function TocMenuItem({
|
|
|
12577
12769
|
className: cn(
|
|
12578
12770
|
"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",
|
|
12579
12771
|
"focus-visible:outline-none",
|
|
12580
|
-
isActive && "bg-foreground/10
|
|
12772
|
+
isActive && "bg-foreground/10 text-foreground",
|
|
12581
12773
|
!isActive && isHovered && "bg-foreground/5 text-foreground/85",
|
|
12582
12774
|
!isActive && !isHovered && "bg-transparent text-foreground/45"
|
|
12583
12775
|
),
|
|
@@ -12602,7 +12794,8 @@ function DynamicIslandTOC({
|
|
|
12602
12794
|
ariaLabel = "Table of contents",
|
|
12603
12795
|
menuHeading = "TABLE OF CONTENTS",
|
|
12604
12796
|
emptyLabel = "Contents",
|
|
12605
|
-
className
|
|
12797
|
+
className,
|
|
12798
|
+
closeLabel = "Close table of contents"
|
|
12606
12799
|
}) {
|
|
12607
12800
|
const reduceMotion = useReducedMotion() ?? false;
|
|
12608
12801
|
const menuLabelId = useId();
|
|
@@ -12786,6 +12979,7 @@ function DynamicIslandTOC({
|
|
|
12786
12979
|
{
|
|
12787
12980
|
isExpanded,
|
|
12788
12981
|
ariaLabel,
|
|
12982
|
+
closeLabel,
|
|
12789
12983
|
menuLabelId,
|
|
12790
12984
|
menuHeading,
|
|
12791
12985
|
headings,
|
|
@@ -13079,11 +13273,11 @@ function EditTool({
|
|
|
13079
13273
|
children: [
|
|
13080
13274
|
/* @__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
13275
|
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: [
|
|
13276
|
+
stats.added > 0 && /* @__PURE__ */ jsxs("span", { className: "text-success-strong", children: [
|
|
13083
13277
|
"+",
|
|
13084
13278
|
stats.added
|
|
13085
13279
|
] }),
|
|
13086
|
-
stats.removed > 0 && /* @__PURE__ */ jsxs("span", { className: "text-destructive", children: [
|
|
13280
|
+
stats.removed > 0 && /* @__PURE__ */ jsxs("span", { className: "text-destructive-strong", children: [
|
|
13087
13281
|
"-",
|
|
13088
13282
|
stats.removed
|
|
13089
13283
|
] })
|
|
@@ -13103,8 +13297,8 @@ function EditTool({
|
|
|
13103
13297
|
{
|
|
13104
13298
|
className: cn(
|
|
13105
13299
|
"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",
|
|
13300
|
+
op.type === "add" && "bg-[hsl(var(--success)/0.1)] text-success-strong",
|
|
13301
|
+
op.type === "remove" && "bg-[hsl(var(--destructive)/0.1)] text-destructive-strong",
|
|
13108
13302
|
op.type === "context" && "text-foreground/80"
|
|
13109
13303
|
),
|
|
13110
13304
|
children: [
|
|
@@ -13114,8 +13308,8 @@ function EditTool({
|
|
|
13114
13308
|
"aria-hidden": "true",
|
|
13115
13309
|
className: cn(
|
|
13116
13310
|
"w-4 shrink-0 select-none text-center",
|
|
13117
|
-
op.type === "add" && "text-success",
|
|
13118
|
-
op.type === "remove" && "text-destructive",
|
|
13311
|
+
op.type === "add" && "text-success-strong",
|
|
13312
|
+
op.type === "remove" && "text-destructive-strong",
|
|
13119
13313
|
op.type === "context" && "text-muted-foreground/60"
|
|
13120
13314
|
),
|
|
13121
13315
|
children: op.type === "add" ? "+" : op.type === "remove" ? "-" : " "
|
|
@@ -13138,8 +13332,11 @@ var InputOTP = ({
|
|
|
13138
13332
|
children,
|
|
13139
13333
|
render,
|
|
13140
13334
|
ref,
|
|
13141
|
-
|
|
13335
|
+
onValueChange,
|
|
13336
|
+
onChange: legacyOnChange,
|
|
13337
|
+
...rest
|
|
13142
13338
|
}) => {
|
|
13339
|
+
const props = { ...rest, onChange: onValueChange ?? legacyOnChange };
|
|
13143
13340
|
const otpProps = render ? { render, ...props } : { children, ...props };
|
|
13144
13341
|
return /* @__PURE__ */ jsx(
|
|
13145
13342
|
OTPInput,
|
|
@@ -13413,17 +13610,17 @@ function DefaultErrorFallback({
|
|
|
13413
13610
|
)
|
|
13414
13611
|
] });
|
|
13415
13612
|
case "inline":
|
|
13416
|
-
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-sm text-
|
|
13613
|
+
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-sm text-destructive-strong", children: [
|
|
13417
13614
|
/* @__PURE__ */ jsx(Warning, { className: "size-3" }),
|
|
13418
13615
|
/* @__PURE__ */ jsx("span", { children: "Error" }),
|
|
13419
13616
|
showRetry && /* @__PURE__ */ jsx("button", { type: "button", onClick: resetError, className: "text-primary hover:underline", children: "Retry" })
|
|
13420
13617
|
] });
|
|
13421
13618
|
case "compact":
|
|
13422
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 p-3 bg-
|
|
13423
|
-
/* @__PURE__ */ jsx(Warning, { className: "size-5 text-
|
|
13619
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 p-3 bg-destructive/10 border border-destructive/20 rounded-[var(--radius-lg)]", children: [
|
|
13620
|
+
/* @__PURE__ */ jsx(Warning, { className: "size-5 text-destructive-strong shrink-0" }),
|
|
13424
13621
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
13425
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-
|
|
13426
|
-
process.env.NODE_ENV === "development" && /* @__PURE__ */ jsx("p", { className: "text-xs text-
|
|
13622
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive-strong truncate", children: componentName ? `${componentName} \u52A0\u8F7D\u5931\u8D25` : "\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25" }),
|
|
13623
|
+
process.env.NODE_ENV === "development" && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive-strong truncate mt-0.5", children: error.message })
|
|
13427
13624
|
] }),
|
|
13428
13625
|
showRetry && /* @__PURE__ */ jsxs(Button, { size: "sm", variant: "outline", onClick: resetError, children: [
|
|
13429
13626
|
/* @__PURE__ */ jsx(RefreshClockwise, { className: "size-3 mr-1" }),
|
|
@@ -13432,7 +13629,7 @@ function DefaultErrorFallback({
|
|
|
13432
13629
|
] });
|
|
13433
13630
|
default:
|
|
13434
13631
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center p-6 bg-muted/50 border border-border rounded-[var(--radius-lg)]", children: [
|
|
13435
|
-
/* @__PURE__ */ jsx("div", { className: "size-12 rounded-full bg-
|
|
13632
|
+
/* @__PURE__ */ jsx("div", { className: "size-12 rounded-full bg-destructive/15 flex items-center justify-center mb-4", children: /* @__PURE__ */ jsx(Warning, { className: "size-6 text-destructive-strong" }) }),
|
|
13436
13633
|
/* @__PURE__ */ jsx("h3", { className: "text-base font-medium text-foreground mb-1", children: componentName ? `${componentName} \u51FA\u9519\u4E86` : "\u7EC4\u4EF6\u51FA\u9519\u4E86" }),
|
|
13437
13634
|
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mb-4 text-center", children: "\u6B64\u90E8\u5206\u6682\u65F6\u65E0\u6CD5\u52A0\u8F7D\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" }),
|
|
13438
13635
|
process.env.NODE_ENV === "development" && /* @__PURE__ */ jsx("div", { className: "w-full max-w-md p-2 bg-muted rounded mb-4", children: /* @__PURE__ */ jsx("p", { className: "text-xs font-mono text-muted-foreground break-all", children: error.message }) }),
|
|
@@ -13453,10 +13650,10 @@ function TableErrorBoundary({
|
|
|
13453
13650
|
componentName: tableName || "\u8868\u683C",
|
|
13454
13651
|
variant: "compact",
|
|
13455
13652
|
fallback: ({ error, resetError }) => /* @__PURE__ */ jsxs("div", { className: "border border-border rounded-[var(--radius-lg)] overflow-hidden", children: [
|
|
13456
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-4 bg-
|
|
13653
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-4 bg-destructive/10", children: [
|
|
13457
13654
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
13458
|
-
/* @__PURE__ */ jsx(Warning, { className: "size-4 text-
|
|
13459
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-
|
|
13655
|
+
/* @__PURE__ */ jsx(Warning, { className: "size-4 text-destructive-strong" }),
|
|
13656
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-destructive-strong", children: tableName ? `${tableName}\u52A0\u8F7D\u5931\u8D25` : "\u8868\u683C\u52A0\u8F7D\u5931\u8D25" })
|
|
13460
13657
|
] }),
|
|
13461
13658
|
/* @__PURE__ */ jsxs(Button, { size: "sm", variant: "ghost", onClick: resetError, children: [
|
|
13462
13659
|
/* @__PURE__ */ jsx(RefreshClockwise, { className: "size-3 mr-1" }),
|
|
@@ -13492,7 +13689,7 @@ var textSize = {
|
|
|
13492
13689
|
medium: "text-sm",
|
|
13493
13690
|
large: "text-base"
|
|
13494
13691
|
};
|
|
13495
|
-
var
|
|
13692
|
+
var iconSize2 = {
|
|
13496
13693
|
small: 12,
|
|
13497
13694
|
medium: 14,
|
|
13498
13695
|
large: 16
|
|
@@ -13528,9 +13725,13 @@ var ErrorMessage = ({
|
|
|
13528
13725
|
{
|
|
13529
13726
|
ref,
|
|
13530
13727
|
role: "alert",
|
|
13531
|
-
className: cn(
|
|
13728
|
+
className: cn(
|
|
13729
|
+
"inline-flex items-center gap-1.5 text-destructive-strong",
|
|
13730
|
+
textSize[sz],
|
|
13731
|
+
className
|
|
13732
|
+
),
|
|
13532
13733
|
children: [
|
|
13533
|
-
/* @__PURE__ */ jsx(Warning, { size:
|
|
13734
|
+
/* @__PURE__ */ jsx(Warning, { size: iconSize2[sz], "aria-hidden": "true", className: "shrink-0" }),
|
|
13534
13735
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
13535
13736
|
label && /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
|
|
13536
13737
|
label,
|
|
@@ -13602,12 +13803,12 @@ var ErrorSurface = ({
|
|
|
13602
13803
|
"span",
|
|
13603
13804
|
{
|
|
13604
13805
|
"aria-hidden": "true",
|
|
13605
|
-
className: "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-destructive/20 bg-background text-destructive",
|
|
13806
|
+
className: "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-destructive/20 bg-background text-destructive-strong",
|
|
13606
13807
|
children: /* @__PURE__ */ jsx(Warning, { size: surfaceIconSize[size] })
|
|
13607
13808
|
}
|
|
13608
13809
|
),
|
|
13609
13810
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
13610
|
-
label && showLabel ? /* @__PURE__ */ jsx("p", { className: "mb-1 text-xs font-medium uppercase tracking-normal text-destructive", children: label }) : null,
|
|
13811
|
+
label && showLabel ? /* @__PURE__ */ jsx("p", { className: "mb-1 text-xs font-medium uppercase tracking-normal text-destructive-strong", children: label }) : null,
|
|
13611
13812
|
resolvedTitle ? /* @__PURE__ */ jsx("p", { className: "font-semibold leading-6 text-foreground", children: resolvedTitle }) : null,
|
|
13612
13813
|
message ? /* @__PURE__ */ jsx("p", { className: cn("leading-5 text-muted-foreground", resolvedTitle && "mt-1"), children: message }) : null,
|
|
13613
13814
|
resolvedErrorId ? /* @__PURE__ */ jsxs("details", { className: "mt-3 text-xs text-muted-foreground", children: [
|
|
@@ -13727,6 +13928,7 @@ var ExpandableGallery = function ExpandableGallery2({
|
|
|
13727
13928
|
transition: activeTransition,
|
|
13728
13929
|
className: cn(
|
|
13729
13930
|
"relative w-full",
|
|
13931
|
+
// allow-state-shift: open and closed are two different layouts — the expansion is the point
|
|
13730
13932
|
isOpen ? "grid grid-cols-2 gap-6 px-4 md:gap-8 lg:grid-cols-3" : "flex flex-col items-center justify-start pt-4"
|
|
13731
13933
|
),
|
|
13732
13934
|
children: [
|
|
@@ -13746,6 +13948,7 @@ var ExpandableGallery = function ExpandableGallery2({
|
|
|
13746
13948
|
const z = photo.zIndex ?? index;
|
|
13747
13949
|
const sharedClass = cn(
|
|
13748
13950
|
"overflow-hidden bg-muted",
|
|
13951
|
+
// allow-state-shift: the tile resizes as the gallery opens — the expansion is the point
|
|
13749
13952
|
isOpen ? "relative aspect-square rounded-[2rem] border-4 border-background shadow-lg md:rounded-[3rem] md:border-[6px]" : "absolute h-44 w-44 cursor-pointer rounded-[2.5rem] border-[6px] border-background shadow-[0_20px_50px_rgba(0,0,0,0.15)] md:h-60 md:w-60 md:rounded-[3rem]"
|
|
13750
13953
|
);
|
|
13751
13954
|
const inner = /* @__PURE__ */ jsx(
|
|
@@ -13800,14 +14003,14 @@ var ExpandableGallery = function ExpandableGallery2({
|
|
|
13800
14003
|
scale: 1.05,
|
|
13801
14004
|
y: y - 15,
|
|
13802
14005
|
rotate: rotation * 0.8,
|
|
13803
|
-
zIndex:
|
|
14006
|
+
zIndex: 20,
|
|
13804
14007
|
transition: hoverTransition
|
|
13805
14008
|
},
|
|
13806
14009
|
whileFocus: {
|
|
13807
14010
|
scale: 1.05,
|
|
13808
14011
|
y: y - 15,
|
|
13809
14012
|
rotate: rotation * 0.8,
|
|
13810
|
-
zIndex:
|
|
14013
|
+
zIndex: 20,
|
|
13811
14014
|
transition: hoverTransition
|
|
13812
14015
|
}
|
|
13813
14016
|
},
|
|
@@ -13835,29 +14038,19 @@ var ExpandableGallery = function ExpandableGallery2({
|
|
|
13835
14038
|
}
|
|
13836
14039
|
) });
|
|
13837
14040
|
};
|
|
13838
|
-
var buttonVariants2 = {
|
|
13839
|
-
initial: {
|
|
13840
|
-
gap: 0,
|
|
13841
|
-
paddingLeft: ".5rem",
|
|
13842
|
-
paddingRight: ".5rem"
|
|
13843
|
-
},
|
|
13844
|
-
animate: (isSelected) => ({
|
|
13845
|
-
gap: isSelected ? ".5rem" : 0,
|
|
13846
|
-
paddingLeft: isSelected ? "1rem" : ".5rem",
|
|
13847
|
-
paddingRight: isSelected ? "1rem" : ".5rem"
|
|
13848
|
-
})
|
|
13849
|
-
};
|
|
13850
14041
|
var spanVariants = {
|
|
13851
|
-
initial: {
|
|
13852
|
-
animate: {
|
|
13853
|
-
exit: {
|
|
14042
|
+
initial: { opacity: 0, transform: "translateX(-4px)" },
|
|
14043
|
+
animate: { opacity: 1, transform: "translateX(0px)" },
|
|
14044
|
+
exit: { opacity: 0, transform: "translateX(-4px)" }
|
|
13854
14045
|
};
|
|
13855
|
-
var transition2 = {
|
|
14046
|
+
var transition2 = { duration: 0.2, ease: [0.16, 1, 0.3, 1] };
|
|
13856
14047
|
function ExpandableTabs({
|
|
13857
14048
|
tabs,
|
|
13858
14049
|
className,
|
|
13859
14050
|
activeColor = "text-primary",
|
|
13860
|
-
onChange
|
|
14051
|
+
onChange: legacyOnChange,
|
|
14052
|
+
onValueChange: onChange = legacyOnChange,
|
|
14053
|
+
tabsLabel = "Navigation tabs"
|
|
13861
14054
|
}) {
|
|
13862
14055
|
const [selected, setSelected] = React45.useState(null);
|
|
13863
14056
|
const outsideClickRef = React45.useRef(null);
|
|
@@ -13881,7 +14074,7 @@ function ExpandableTabs({
|
|
|
13881
14074
|
className
|
|
13882
14075
|
),
|
|
13883
14076
|
role: "tablist",
|
|
13884
|
-
"aria-label":
|
|
14077
|
+
"aria-label": tabsLabel,
|
|
13885
14078
|
children: tabs.map((tab, index) => {
|
|
13886
14079
|
if (tab.type === "separator") {
|
|
13887
14080
|
return /* @__PURE__ */ jsx(TabSeparator, {}, `separator-${index}`);
|
|
@@ -13891,36 +14084,25 @@ function ExpandableTabs({
|
|
|
13891
14084
|
const tabClassName = cn(
|
|
13892
14085
|
"relative rounded-[var(--radius-xl)] py-2 text-sm font-medium transition-colors duration-flow",
|
|
13893
14086
|
"focus-visible:outline-none",
|
|
13894
|
-
isSelected ? cn("bg-muted", activeColor) : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
14087
|
+
isSelected ? cn("bg-muted px-4", activeColor) : "px-2 text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
13895
14088
|
);
|
|
13896
14089
|
const tabContent = (
|
|
13897
14090
|
// biome-ignore lint/correctness/useJsxKeyInIterable: key is on the parent <button>
|
|
13898
|
-
/* @__PURE__ */ jsxs(
|
|
13899
|
-
|
|
13900
|
-
{
|
|
13901
|
-
|
|
13902
|
-
|
|
13903
|
-
|
|
13904
|
-
|
|
13905
|
-
|
|
13906
|
-
|
|
13907
|
-
|
|
13908
|
-
|
|
13909
|
-
|
|
13910
|
-
|
|
13911
|
-
|
|
13912
|
-
|
|
13913
|
-
initial: "initial",
|
|
13914
|
-
animate: "animate",
|
|
13915
|
-
exit: "exit",
|
|
13916
|
-
transition: activeTransition,
|
|
13917
|
-
className: "overflow-hidden",
|
|
13918
|
-
children: tab.title
|
|
13919
|
-
}
|
|
13920
|
-
) })
|
|
13921
|
-
]
|
|
13922
|
-
}
|
|
13923
|
-
)
|
|
14091
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
14092
|
+
/* @__PURE__ */ jsx(Icon, { size: 20, "aria-hidden": "true" }),
|
|
14093
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: isSelected && /* @__PURE__ */ jsx(
|
|
14094
|
+
motion.span,
|
|
14095
|
+
{
|
|
14096
|
+
variants: spanVariants,
|
|
14097
|
+
initial: "initial",
|
|
14098
|
+
animate: "animate",
|
|
14099
|
+
exit: "exit",
|
|
14100
|
+
transition: activeTransition,
|
|
14101
|
+
className: "overflow-hidden whitespace-nowrap",
|
|
14102
|
+
children: tab.title
|
|
14103
|
+
}
|
|
14104
|
+
) })
|
|
14105
|
+
] })
|
|
13924
14106
|
);
|
|
13925
14107
|
return isSelected ? /* @__PURE__ */ jsx(
|
|
13926
14108
|
"button",
|
|
@@ -13979,7 +14161,7 @@ var textareaTokens = {
|
|
|
13979
14161
|
focusRingWidth: 3,
|
|
13980
14162
|
fieldGap: primitiveSpacing[2] - primitiveSpacing[1] / 2};
|
|
13981
14163
|
var fieldMessageClassName = "text-xs text-muted-foreground";
|
|
13982
|
-
var fieldErrorClassName = "text-xs font-medium text-destructive";
|
|
14164
|
+
var fieldErrorClassName = "text-xs font-medium text-destructive-strong";
|
|
13983
14165
|
function getTextareaStyle(size, style) {
|
|
13984
14166
|
const token = textareaTokens.sizes[size];
|
|
13985
14167
|
return {
|
|
@@ -14014,6 +14196,7 @@ var Textarea = ({
|
|
|
14014
14196
|
description,
|
|
14015
14197
|
error,
|
|
14016
14198
|
fieldClassName,
|
|
14199
|
+
tone = "bordered",
|
|
14017
14200
|
id,
|
|
14018
14201
|
onChange,
|
|
14019
14202
|
onValueChange,
|
|
@@ -14039,10 +14222,10 @@ var Textarea = ({
|
|
|
14039
14222
|
"textarea",
|
|
14040
14223
|
{
|
|
14041
14224
|
className: cn(
|
|
14042
|
-
"flex min-h-[var(--textarea-min-height)] w-full resize-y rounded-[var(--textarea-radius)]
|
|
14043
|
-
"px-[var(--textarea-padding-x)] py-[var(--textarea-padding-y)] text-[length:var(--textarea-font-size)] text-foreground
|
|
14225
|
+
"flex min-h-[var(--textarea-min-height)] w-full resize-y rounded-[var(--textarea-radius)]",
|
|
14226
|
+
"px-[var(--textarea-padding-x)] py-[var(--textarea-padding-y)] text-[length:var(--textarea-font-size)] text-foreground",
|
|
14044
14227
|
"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out placeholder:text-muted-foreground",
|
|
14045
|
-
formControlFocusClassNames.textarea,
|
|
14228
|
+
tone === "bordered" ? `border border-input bg-background ${formControlFocusClassNames.textarea}` : "border-0 bg-transparent shadow-none",
|
|
14046
14229
|
"disabled:cursor-not-allowed disabled:opacity-50 read-only:cursor-default read-only:bg-muted/70",
|
|
14047
14230
|
formControlInvalidClassNames.textarea,
|
|
14048
14231
|
className
|
|
@@ -14357,6 +14540,7 @@ function FeatureArrowCard({
|
|
|
14357
14540
|
cardContent,
|
|
14358
14541
|
onArrowClick,
|
|
14359
14542
|
className,
|
|
14543
|
+
arrowLabel = "Go to feature",
|
|
14360
14544
|
...props
|
|
14361
14545
|
}) {
|
|
14362
14546
|
return /* @__PURE__ */ jsxs(
|
|
@@ -14383,7 +14567,7 @@ function FeatureArrowCard({
|
|
|
14383
14567
|
type: "button",
|
|
14384
14568
|
onClick: onArrowClick,
|
|
14385
14569
|
className: "absolute bottom-2 right-2 z-10 flex items-center gap-2 rounded-full border bg-background p-3 transition hover:-rotate-45",
|
|
14386
|
-
"aria-label":
|
|
14570
|
+
"aria-label": arrowLabel,
|
|
14387
14571
|
children: /* @__PURE__ */ jsx(ArrowRight, { className: "size-4 text-primary" })
|
|
14388
14572
|
}
|
|
14389
14573
|
)
|
|
@@ -14484,7 +14668,7 @@ function CircularUI({ label, circles, className }) {
|
|
|
14484
14668
|
"border-primary": circle.pattern === "none",
|
|
14485
14669
|
"border-primary bg-[repeating-linear-gradient(-45deg,hsl(var(--border)),hsl(var(--border))_1px,transparent_1px,transparent_4px)]": circle.pattern === "border",
|
|
14486
14670
|
"border-primary bg-background bg-[repeating-linear-gradient(-45deg,hsl(var(--primary)),hsl(var(--primary))_1px,transparent_1px,transparent_4px)]": circle.pattern === "primary",
|
|
14487
|
-
"z-[1] border-
|
|
14671
|
+
"z-[1] border-info bg-background bg-[repeating-linear-gradient(-45deg,hsl(var(--info)),hsl(var(--info))_1px,transparent_1px,transparent_4px)]": circle.pattern === "blue"
|
|
14488
14672
|
}),
|
|
14489
14673
|
"aria-hidden": "true"
|
|
14490
14674
|
},
|
|
@@ -14782,7 +14966,7 @@ function NativeSelect({
|
|
|
14782
14966
|
style: { borderRadius: "var(--select-radius)" },
|
|
14783
14967
|
className: cn(
|
|
14784
14968
|
"h-[var(--select-height)] w-full appearance-none rounded-[var(--select-radius)] border font-sans",
|
|
14785
|
-
"bg-background text-[length:var(--select-font-size)] text-foreground
|
|
14969
|
+
"bg-background text-[length:var(--select-font-size)] text-foreground outline-none",
|
|
14786
14970
|
"transition-[background-color,border-color,box-shadow,color] duration-[var(--select-duration)] ease-[var(--select-easing)]",
|
|
14787
14971
|
formControlFocusClassNames.select,
|
|
14788
14972
|
"disabled:cursor-not-allowed disabled:bg-muted disabled:text-muted-foreground",
|
|
@@ -14966,7 +15150,7 @@ var SelectTrigger = ({
|
|
|
14966
15150
|
ref,
|
|
14967
15151
|
className: cn(
|
|
14968
15152
|
"flex h-[var(--select-height)] w-full items-center justify-between whitespace-nowrap rounded-[var(--select-radius)] border border-input bg-background",
|
|
14969
|
-
"px-[var(--select-padding-x)] text-[length:var(--select-font-size)] text-foreground
|
|
15153
|
+
"px-[var(--select-padding-x)] text-[length:var(--select-font-size)] text-foreground",
|
|
14970
15154
|
"transition-[background-color,border-color,box-shadow,color] duration-micro ease-out placeholder:text-muted-foreground",
|
|
14971
15155
|
formControlFocusClassNames.select,
|
|
14972
15156
|
"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
@@ -15000,6 +15184,7 @@ var SelectContent = ({
|
|
|
15000
15184
|
}) => /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
15001
15185
|
Select$1.Positioner,
|
|
15002
15186
|
{
|
|
15187
|
+
style: { zIndex: overlayZIndex.popover },
|
|
15003
15188
|
alignItemWithTrigger: position === "item-aligned",
|
|
15004
15189
|
sideOffset: selectTokens.content.sideOffset,
|
|
15005
15190
|
children: /* @__PURE__ */ jsx(
|
|
@@ -15144,7 +15329,8 @@ function FeedbackForm({
|
|
|
15144
15329
|
dryRun,
|
|
15145
15330
|
disabled,
|
|
15146
15331
|
initialEmotion,
|
|
15147
|
-
onDone
|
|
15332
|
+
onDone,
|
|
15333
|
+
topicLabel = "Feedback topic"
|
|
15148
15334
|
}) {
|
|
15149
15335
|
const promptId = React45.useId();
|
|
15150
15336
|
const emotionName = React45.useId();
|
|
@@ -15205,7 +15391,7 @@ function FeedbackForm({
|
|
|
15205
15391
|
onValueChange: (nextTopic) => setTopic(typeof nextTopic === "string" ? nextTopic : ""),
|
|
15206
15392
|
disabled: disabled || submitting,
|
|
15207
15393
|
children: [
|
|
15208
|
-
/* @__PURE__ */ jsx(SelectTrigger, { "aria-label":
|
|
15394
|
+
/* @__PURE__ */ jsx(SelectTrigger, { "aria-label": topicLabel, children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select a topic..." }) }),
|
|
15209
15395
|
/* @__PURE__ */ jsx(SelectContent, { children: topics.map((item) => /* @__PURE__ */ jsx(SelectItem, { value: item.value, children: item.label }, item.value)) })
|
|
15210
15396
|
]
|
|
15211
15397
|
}
|
|
@@ -15227,7 +15413,7 @@ function FeedbackForm({
|
|
|
15227
15413
|
),
|
|
15228
15414
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-[var(--feedback-row-gap)]", children: [
|
|
15229
15415
|
/* @__PURE__ */ jsx(MarkdownHint, {}),
|
|
15230
|
-
error ? /* @__PURE__ */ jsx("p", { className: "text-destructive text-xs", id: errorId, role: "alert", children: error }) : null
|
|
15416
|
+
error ? /* @__PURE__ */ jsx("p", { className: "text-destructive-strong text-xs", id: errorId, role: "alert", children: error }) : null
|
|
15231
15417
|
] })
|
|
15232
15418
|
] }),
|
|
15233
15419
|
/* @__PURE__ */ jsx("div", { className: "flex justify-end border-border border-t pt-[var(--feedback-padding)]", children: /* @__PURE__ */ jsx(Button, { disabled: !canSubmit, loading: submitting, size: "sm", type: "submit", children: "Send" }) })
|
|
@@ -15243,7 +15429,9 @@ function FeedbackDefault({
|
|
|
15243
15429
|
dryRun,
|
|
15244
15430
|
disabled,
|
|
15245
15431
|
defaultOpen = false,
|
|
15246
|
-
className
|
|
15432
|
+
className,
|
|
15433
|
+
topicLabel,
|
|
15434
|
+
closeLabel = "Close feedback"
|
|
15247
15435
|
}) {
|
|
15248
15436
|
const triggerRef = React45.useRef(null);
|
|
15249
15437
|
const [open, setOpen] = React45.useState(defaultOpen);
|
|
@@ -15281,7 +15469,7 @@ function FeedbackDefault({
|
|
|
15281
15469
|
/* @__PURE__ */ jsx(
|
|
15282
15470
|
"button",
|
|
15283
15471
|
{
|
|
15284
|
-
"aria-label":
|
|
15472
|
+
"aria-label": closeLabel,
|
|
15285
15473
|
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",
|
|
15286
15474
|
onClick: closeAndReturnFocus,
|
|
15287
15475
|
type: "button",
|
|
@@ -15299,6 +15487,7 @@ function FeedbackDefault({
|
|
|
15299
15487
|
...onSubmit ? { onSubmit } : {},
|
|
15300
15488
|
...dryRun !== void 0 ? { dryRun } : {},
|
|
15301
15489
|
...disabled !== void 0 ? { disabled } : {},
|
|
15490
|
+
...topicLabel !== void 0 ? { topicLabel } : {},
|
|
15302
15491
|
onDone: closeAndReturnFocus
|
|
15303
15492
|
}
|
|
15304
15493
|
)
|
|
@@ -15317,7 +15506,8 @@ function FeedbackInline({
|
|
|
15317
15506
|
dryRun,
|
|
15318
15507
|
disabled,
|
|
15319
15508
|
defaultExpanded = false,
|
|
15320
|
-
className
|
|
15509
|
+
className,
|
|
15510
|
+
topicLabel
|
|
15321
15511
|
}) {
|
|
15322
15512
|
const rootRef = React45.useRef(null);
|
|
15323
15513
|
const emotionName = React45.useId();
|
|
@@ -15344,7 +15534,6 @@ function FeedbackInline({
|
|
|
15344
15534
|
ref: rootRef,
|
|
15345
15535
|
className: cn(
|
|
15346
15536
|
"m-0 min-w-0 w-fit overflow-hidden rounded-[var(--feedback-panel-radius)] border border-border bg-card p-0 text-card-foreground shadow-sm",
|
|
15347
|
-
"transition-[max-height,width] duration-[var(--feedback-duration)] ease-[var(--feedback-easing)] motion-reduce:transition-none",
|
|
15348
15537
|
expanded ? "w-[var(--feedback-width)]" : "max-w-full",
|
|
15349
15538
|
className
|
|
15350
15539
|
),
|
|
@@ -15384,6 +15573,7 @@ function FeedbackInline({
|
|
|
15384
15573
|
...onSubmit ? { onSubmit } : {},
|
|
15385
15574
|
...dryRun !== void 0 ? { dryRun } : {},
|
|
15386
15575
|
...disabled !== void 0 ? { disabled } : {},
|
|
15576
|
+
...topicLabel !== void 0 ? { topicLabel } : {},
|
|
15387
15577
|
onDone: () => {
|
|
15388
15578
|
setExpanded(false);
|
|
15389
15579
|
setSelectedEmotion(void 0);
|
|
@@ -15412,10 +15602,10 @@ var Field = ({
|
|
|
15412
15602
|
...props
|
|
15413
15603
|
}) => {
|
|
15414
15604
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("grid gap-2", className), ...props, children: [
|
|
15415
|
-
/* @__PURE__ */ jsx(Label, { htmlFor, className: cn(error && "text-destructive"), children: label }),
|
|
15605
|
+
/* @__PURE__ */ jsx(Label, { htmlFor, className: cn(error && "text-destructive-strong"), children: label }),
|
|
15416
15606
|
children,
|
|
15417
15607
|
description && !error && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description }),
|
|
15418
|
-
error && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive", children: error })
|
|
15608
|
+
error && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive-strong", children: error })
|
|
15419
15609
|
] });
|
|
15420
15610
|
};
|
|
15421
15611
|
Field.displayName = "Field";
|
|
@@ -15540,32 +15730,32 @@ function FileAttachment({
|
|
|
15540
15730
|
);
|
|
15541
15731
|
}
|
|
15542
15732
|
var BANNER_COLOR = {
|
|
15543
|
-
doc: "bg-blue-
|
|
15544
|
-
pdf: "bg-
|
|
15545
|
-
md: "bg-neutral-
|
|
15546
|
-
mdx: "bg-neutral-
|
|
15547
|
-
txt: "bg-
|
|
15548
|
-
csv: "bg-
|
|
15549
|
-
xls: "bg-
|
|
15550
|
-
xlsx: "bg-
|
|
15551
|
-
ppt: "bg-
|
|
15552
|
-
pptx: "bg-
|
|
15553
|
-
zip: "bg-
|
|
15554
|
-
rar: "bg-
|
|
15555
|
-
tar: "bg-
|
|
15556
|
-
gz: "bg-
|
|
15557
|
-
html: "bg-
|
|
15558
|
-
js: "bg-
|
|
15559
|
-
jsx: "bg-blue-
|
|
15560
|
-
css: "bg-
|
|
15561
|
-
json: "bg-
|
|
15562
|
-
tsx: "bg-blue-
|
|
15563
|
-
code: "bg-
|
|
15564
|
-
img: "bg-
|
|
15565
|
-
png: "bg-neutral-
|
|
15566
|
-
jpg: "bg-
|
|
15567
|
-
jpeg: "bg-
|
|
15568
|
-
video: "bg-
|
|
15733
|
+
doc: "bg-blue-11 text-blue-1",
|
|
15734
|
+
pdf: "bg-neutral-10 text-neutral-1",
|
|
15735
|
+
md: "bg-neutral-10 text-neutral-1",
|
|
15736
|
+
mdx: "bg-neutral-10 text-neutral-1",
|
|
15737
|
+
txt: "bg-neutral-10 text-neutral-1",
|
|
15738
|
+
csv: "bg-cyan-11 text-cyan-1",
|
|
15739
|
+
xls: "bg-cyan-11 text-cyan-1",
|
|
15740
|
+
xlsx: "bg-cyan-11 text-cyan-1",
|
|
15741
|
+
ppt: "bg-blue-11 text-blue-1",
|
|
15742
|
+
pptx: "bg-blue-11 text-blue-1",
|
|
15743
|
+
zip: "bg-neutral-10 text-neutral-1",
|
|
15744
|
+
rar: "bg-neutral-10 text-neutral-1",
|
|
15745
|
+
tar: "bg-neutral-10 text-neutral-1",
|
|
15746
|
+
gz: "bg-neutral-10 text-neutral-1",
|
|
15747
|
+
html: "bg-cyan-11 text-cyan-1",
|
|
15748
|
+
js: "bg-blue-11 text-blue-1",
|
|
15749
|
+
jsx: "bg-blue-11 text-blue-1",
|
|
15750
|
+
css: "bg-cyan-11 text-cyan-1",
|
|
15751
|
+
json: "bg-cyan-11 text-cyan-1",
|
|
15752
|
+
tsx: "bg-blue-11 text-blue-1",
|
|
15753
|
+
code: "bg-blue-11 text-blue-1",
|
|
15754
|
+
img: "bg-neutral-10 text-neutral-1",
|
|
15755
|
+
png: "bg-neutral-10 text-neutral-1",
|
|
15756
|
+
jpg: "bg-neutral-10 text-neutral-1",
|
|
15757
|
+
jpeg: "bg-neutral-10 text-neutral-1",
|
|
15758
|
+
video: "bg-neutral-10 text-neutral-1"
|
|
15569
15759
|
};
|
|
15570
15760
|
function DefaultPlaceholder() {
|
|
15571
15761
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -15663,7 +15853,7 @@ function ArchivePlaceholder() {
|
|
|
15663
15853
|
function SlidePlaceholder() {
|
|
15664
15854
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15665
15855
|
/* @__PURE__ */ jsxs("div", { className: "bg-foreground/5 mb-1.5 space-y-1 rounded border p-1", children: [
|
|
15666
|
-
/* @__PURE__ */ jsx("div", { className: "flex justify-center gap-1", children: /* @__PURE__ */ jsx("div", { className: "size-3 rounded-[var(--radius-sm)] bg-
|
|
15856
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-center gap-1", children: /* @__PURE__ */ jsx("div", { className: "size-3 rounded-[var(--radius-sm)] bg-[var(--category-3)]/40" }) }),
|
|
15667
15857
|
/* @__PURE__ */ jsx("div", { className: "bg-foreground/15 mx-auto h-0.75 w-8 rounded-full" })
|
|
15668
15858
|
] }),
|
|
15669
15859
|
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex justify-center gap-1", children: [
|
|
@@ -15678,14 +15868,14 @@ function SlidePlaceholder() {
|
|
|
15678
15868
|
}
|
|
15679
15869
|
function ImagePlaceholder() {
|
|
15680
15870
|
return /* @__PURE__ */ jsxs("div", { className: "bg-foreground/5 mb-1.5 space-y-1 rounded border p-1", children: [
|
|
15681
|
-
/* @__PURE__ */ jsx("div", { className: "flex justify-center gap-1", children: /* @__PURE__ */ jsx("div", { className: "size-3 rounded-[var(--radius-sm)] bg-
|
|
15871
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-center gap-1", children: /* @__PURE__ */ jsx("div", { className: "size-3 rounded-[var(--radius-sm)] bg-[var(--category-4)]/40" }) }),
|
|
15682
15872
|
/* @__PURE__ */ jsx("div", { className: "bg-foreground/15 mx-auto mt-1 h-0.75 w-4 rounded-full" }),
|
|
15683
15873
|
/* @__PURE__ */ jsx("div", { className: "bg-foreground/15 mx-auto h-0.75 w-8 rounded-full" })
|
|
15684
15874
|
] });
|
|
15685
15875
|
}
|
|
15686
15876
|
function VideoPlaceholder() {
|
|
15687
15877
|
return /* @__PURE__ */ jsxs("div", { className: "bg-foreground/5 mb-1.5 space-y-1 rounded border p-1", children: [
|
|
15688
|
-
/* @__PURE__ */ jsx("div", { className: "flex justify-center gap-1", children: /* @__PURE__ */ jsx(PlayFill, { className: "size-3 text-
|
|
15878
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-center gap-1", children: /* @__PURE__ */ jsx(PlayFill, { className: "size-3 text-chart-5/70", "aria-hidden": "true" }) }),
|
|
15689
15879
|
/* @__PURE__ */ jsx("div", { className: "bg-foreground/15 mx-auto mt-1 h-0.75 w-4 rounded-full" }),
|
|
15690
15880
|
/* @__PURE__ */ jsx("div", { className: "bg-foreground/15 mx-auto h-0.75 w-8 rounded-full" })
|
|
15691
15881
|
] });
|
|
@@ -15694,22 +15884,22 @@ function HtmlCodePlaceholder() {
|
|
|
15694
15884
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
15695
15885
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
|
|
15696
15886
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: "<" }),
|
|
15697
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-3 rounded-full bg-
|
|
15887
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-3 rounded-full bg-chart-2/60" }),
|
|
15698
15888
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: ">" })
|
|
15699
15889
|
] }),
|
|
15700
15890
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5 pl-1", children: [
|
|
15701
15891
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: "<" }),
|
|
15702
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-2.5 rounded-full bg-
|
|
15892
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-2.5 rounded-full bg-chart-2/60" }),
|
|
15703
15893
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: ">" })
|
|
15704
15894
|
] }),
|
|
15705
15895
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5 pl-1", children: [
|
|
15706
15896
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: "</" }),
|
|
15707
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-2.5 rounded-full bg-
|
|
15897
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-2.5 rounded-full bg-chart-2/60" }),
|
|
15708
15898
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: ">" })
|
|
15709
15899
|
] }),
|
|
15710
15900
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
|
|
15711
15901
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: "<" }),
|
|
15712
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-1 rounded-full bg-
|
|
15902
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-1 rounded-full bg-chart-2/60" }),
|
|
15713
15903
|
/* @__PURE__ */ jsx("div", { className: "text-foreground/30 font-mono text-[5px]", children: "/>" })
|
|
15714
15904
|
] })
|
|
15715
15905
|
] });
|
|
@@ -15718,16 +15908,16 @@ function CssPlaceholder() {
|
|
|
15718
15908
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
15719
15909
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsx("div", { className: "text-foreground/40 font-mono text-[6px]", children: "{" }) }),
|
|
15720
15910
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 pl-1.5", children: [
|
|
15721
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-3 rounded-full bg-
|
|
15722
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-4 rounded-full bg-
|
|
15911
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-3 rounded-full bg-chart-2/60" }),
|
|
15912
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-4 rounded-full bg-chart-2/60" })
|
|
15723
15913
|
] }),
|
|
15724
15914
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 pl-1.5", children: [
|
|
15725
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-4 rounded-full bg-
|
|
15726
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-2 rounded-full bg-
|
|
15915
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-4 rounded-full bg-chart-2/60" }),
|
|
15916
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-2 rounded-full bg-chart-2/60" })
|
|
15727
15917
|
] }),
|
|
15728
15918
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 pl-1.5", children: [
|
|
15729
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-3 rounded-full bg-
|
|
15730
|
-
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-4 rounded-full bg-
|
|
15919
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-3 rounded-full bg-chart-2/60" }),
|
|
15920
|
+
/* @__PURE__ */ jsx("div", { className: "h-0.75 w-4 rounded-full bg-chart-2/60" })
|
|
15731
15921
|
] }),
|
|
15732
15922
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsx("div", { className: "text-foreground/40 font-mono text-[6px]", children: "}" }) })
|
|
15733
15923
|
] });
|
|
@@ -15779,11 +15969,11 @@ var PLACEHOLDER = {
|
|
|
15779
15969
|
};
|
|
15780
15970
|
var FileCard = function FileCard2({
|
|
15781
15971
|
ref,
|
|
15782
|
-
format:
|
|
15972
|
+
format: format3,
|
|
15783
15973
|
className
|
|
15784
15974
|
}) {
|
|
15785
|
-
const Renderer = PLACEHOLDER[
|
|
15786
|
-
const bannerCls = BANNER_COLOR[
|
|
15975
|
+
const Renderer = PLACEHOLDER[format3] ?? DefaultPlaceholder;
|
|
15976
|
+
const bannerCls = BANNER_COLOR[format3];
|
|
15787
15977
|
return /* @__PURE__ */ jsxs("div", { ref, "aria-hidden": "true", className: cn("relative size-fit", className), children: [
|
|
15788
15978
|
/* @__PURE__ */ jsx(
|
|
15789
15979
|
"div",
|
|
@@ -15792,7 +15982,7 @@ var FileCard = function FileCard2({
|
|
|
15792
15982
|
"absolute -right-2 bottom-1.5 z-2 rounded px-1.5 py-0.5 text-[8px] font-medium uppercase",
|
|
15793
15983
|
bannerCls
|
|
15794
15984
|
),
|
|
15795
|
-
children:
|
|
15985
|
+
children: format3
|
|
15796
15986
|
}
|
|
15797
15987
|
),
|
|
15798
15988
|
/* @__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, {}) })
|
|
@@ -16155,64 +16345,97 @@ var sizeMap = {
|
|
|
16155
16345
|
}
|
|
16156
16346
|
};
|
|
16157
16347
|
var colorMap = {
|
|
16348
|
+
// "blue" and "grey"/"black" have a real 12-step token scale (blue-N,
|
|
16349
|
+
// neutral-N) to draw from, so they use it. Yellow/orange/red have no
|
|
16350
|
+
// design-token equivalent -- the scale only covers blue, cyan and neutral --
|
|
16351
|
+
// so those keep the Tailwind default palette (allow-palette per line) to
|
|
16352
|
+
// stay a genuine "red/orange/yellow folder", not a brand-tinted one.
|
|
16158
16353
|
blue: {
|
|
16159
|
-
folder: "from-blue-
|
|
16160
|
-
flap: "bg-blue-
|
|
16161
|
-
paperBack: "bg-blue-
|
|
16162
|
-
paperFront: "bg-blue-
|
|
16163
|
-
paperLine: "bg-blue-
|
|
16164
|
-
paperBorder: "border-blue-
|
|
16165
|
-
labelBg: "bg-blue-
|
|
16354
|
+
folder: "from-blue-7 to-blue-8",
|
|
16355
|
+
flap: "bg-blue-6/50",
|
|
16356
|
+
paperBack: "bg-blue-3/60",
|
|
16357
|
+
paperFront: "bg-blue-2",
|
|
16358
|
+
paperLine: "bg-blue-6/40",
|
|
16359
|
+
paperBorder: "border-blue-4",
|
|
16360
|
+
labelBg: "bg-blue-8/20",
|
|
16361
|
+
// allow-palette: glossy paper-material highlight on the folder edge -- same fixed sheen for every color variant, not brand chrome
|
|
16166
16362
|
folderBorder: "border-white/30"
|
|
16167
16363
|
},
|
|
16168
16364
|
black: {
|
|
16169
|
-
folder: "from-neutral-
|
|
16170
|
-
flap: "bg-neutral-
|
|
16171
|
-
paperBack: "bg-neutral-
|
|
16172
|
-
paperFront: "bg-neutral-
|
|
16173
|
-
paperLine: "bg-neutral-
|
|
16174
|
-
paperBorder: "border-neutral-
|
|
16365
|
+
folder: "from-neutral-8 to-neutral-9",
|
|
16366
|
+
flap: "bg-neutral-6/50",
|
|
16367
|
+
paperBack: "bg-neutral-5/60",
|
|
16368
|
+
paperFront: "bg-neutral-2",
|
|
16369
|
+
paperLine: "bg-neutral-4",
|
|
16370
|
+
paperBorder: "border-neutral-5",
|
|
16371
|
+
// allow-palette: label chip needs a light translucent tint against a near-black folder body regardless of brand or dark mode
|
|
16175
16372
|
labelBg: "bg-white/10",
|
|
16373
|
+
// allow-palette: glossy paper-material highlight on the folder edge -- same fixed sheen for every color variant, not brand chrome
|
|
16176
16374
|
folderBorder: "border-white/10"
|
|
16177
16375
|
},
|
|
16178
16376
|
yellow: {
|
|
16377
|
+
// allow-palette: categorical folder colour ("yellow folder") -- no yellow step exists in the blue/cyan/neutral token scale
|
|
16179
16378
|
folder: "from-yellow-400 to-yellow-500",
|
|
16379
|
+
// allow-palette: categorical folder colour, see above
|
|
16180
16380
|
flap: "bg-yellow-200/50",
|
|
16381
|
+
// allow-palette: categorical folder colour, see above
|
|
16181
16382
|
paperBack: "bg-yellow-100/60",
|
|
16383
|
+
// allow-palette: categorical folder colour, see above
|
|
16182
16384
|
paperFront: "bg-yellow-50",
|
|
16385
|
+
// allow-palette: categorical folder colour, see above
|
|
16183
16386
|
paperLine: "bg-yellow-400/40",
|
|
16387
|
+
// allow-palette: categorical folder colour, see above
|
|
16184
16388
|
paperBorder: "border-yellow-200",
|
|
16389
|
+
// allow-palette: categorical folder colour, see above
|
|
16185
16390
|
labelBg: "bg-yellow-800/20",
|
|
16391
|
+
// allow-palette: glossy paper-material highlight on the folder edge -- same fixed sheen for every color variant, not brand chrome
|
|
16186
16392
|
folderBorder: "border-white/30"
|
|
16187
16393
|
},
|
|
16188
16394
|
orange: {
|
|
16395
|
+
// allow-palette: categorical folder colour ("orange folder") -- no orange step exists in the blue/cyan/neutral token scale
|
|
16189
16396
|
folder: "from-orange-400 to-orange-500",
|
|
16397
|
+
// allow-palette: categorical folder colour, see above
|
|
16190
16398
|
flap: "bg-orange-300/50",
|
|
16399
|
+
// allow-palette: categorical folder colour, see above
|
|
16191
16400
|
paperBack: "bg-orange-100/60",
|
|
16401
|
+
// allow-palette: categorical folder colour, see above
|
|
16192
16402
|
paperFront: "bg-orange-50",
|
|
16403
|
+
// allow-palette: categorical folder colour, see above
|
|
16193
16404
|
paperLine: "bg-orange-400/40",
|
|
16405
|
+
// allow-palette: categorical folder colour, see above
|
|
16194
16406
|
paperBorder: "border-orange-200",
|
|
16407
|
+
// allow-palette: categorical folder colour, see above
|
|
16195
16408
|
labelBg: "bg-orange-900/20",
|
|
16409
|
+
// allow-palette: glossy paper-material highlight on the folder edge -- same fixed sheen for every color variant, not brand chrome
|
|
16196
16410
|
folderBorder: "border-white/30"
|
|
16197
16411
|
},
|
|
16198
16412
|
red: {
|
|
16413
|
+
// allow-palette: categorical folder colour ("red folder") -- no red step exists in the blue/cyan/neutral token scale
|
|
16199
16414
|
folder: "from-red-400 to-red-500",
|
|
16415
|
+
// allow-palette: categorical folder colour, see above
|
|
16200
16416
|
flap: "bg-red-300/50",
|
|
16417
|
+
// allow-palette: categorical folder colour, see above
|
|
16201
16418
|
paperBack: "bg-red-100/60",
|
|
16419
|
+
// allow-palette: categorical folder colour, see above
|
|
16202
16420
|
paperFront: "bg-red-50",
|
|
16421
|
+
// allow-palette: categorical folder colour, see above
|
|
16203
16422
|
paperLine: "bg-red-400/40",
|
|
16423
|
+
// allow-palette: categorical folder colour, see above
|
|
16204
16424
|
paperBorder: "border-red-200",
|
|
16425
|
+
// allow-palette: categorical folder colour, see above
|
|
16205
16426
|
labelBg: "bg-red-900/20",
|
|
16427
|
+
// allow-palette: glossy paper-material highlight on the folder edge -- same fixed sheen for every color variant, not brand chrome
|
|
16206
16428
|
folderBorder: "border-white/30"
|
|
16207
16429
|
},
|
|
16208
16430
|
grey: {
|
|
16209
|
-
folder: "from-
|
|
16210
|
-
flap: "bg-
|
|
16211
|
-
paperBack: "bg-
|
|
16212
|
-
paperFront: "bg-
|
|
16213
|
-
paperLine: "bg-
|
|
16214
|
-
paperBorder: "border-
|
|
16215
|
-
labelBg: "bg-
|
|
16431
|
+
folder: "from-neutral-6 to-neutral-7",
|
|
16432
|
+
flap: "bg-neutral-5/50",
|
|
16433
|
+
paperBack: "bg-neutral-4/60",
|
|
16434
|
+
paperFront: "bg-neutral-2",
|
|
16435
|
+
paperLine: "bg-neutral-6/40",
|
|
16436
|
+
paperBorder: "border-neutral-5",
|
|
16437
|
+
labelBg: "bg-neutral-9/20",
|
|
16438
|
+
// allow-palette: glossy paper-material highlight on the folder edge -- same fixed sheen for every color variant, not brand chrome
|
|
16216
16439
|
folderBorder: "border-white/40"
|
|
16217
16440
|
}
|
|
16218
16441
|
};
|
|
@@ -16395,7 +16618,7 @@ var FormLabel = ({
|
|
|
16395
16618
|
Label,
|
|
16396
16619
|
{
|
|
16397
16620
|
ref,
|
|
16398
|
-
className: cn(error && "text-destructive", className),
|
|
16621
|
+
className: cn(error && "text-destructive-strong", className),
|
|
16399
16622
|
htmlFor: formItemId,
|
|
16400
16623
|
...props
|
|
16401
16624
|
}
|
|
@@ -16452,7 +16675,7 @@ var FormMessage = ({
|
|
|
16452
16675
|
{
|
|
16453
16676
|
ref,
|
|
16454
16677
|
id: formMessageId,
|
|
16455
|
-
className: cn("text-sm font-medium text-destructive", className),
|
|
16678
|
+
className: cn("text-sm font-medium text-destructive-strong", className),
|
|
16456
16679
|
...props,
|
|
16457
16680
|
children: body
|
|
16458
16681
|
}
|
|
@@ -16678,8 +16901,7 @@ var typeStyles = {
|
|
|
16678
16901
|
success: "bg-success text-success-foreground",
|
|
16679
16902
|
warning: "bg-warning text-warning-foreground",
|
|
16680
16903
|
error: "bg-destructive text-destructive-foreground",
|
|
16681
|
-
violet: "bg-
|
|
16682
|
-
// Violet is often custom in Geist
|
|
16904
|
+
violet: "bg-info text-info-foreground"
|
|
16683
16905
|
};
|
|
16684
16906
|
var getBaseAlign = (boxAlign) => {
|
|
16685
16907
|
switch (boxAlign) {
|
|
@@ -16718,6 +16940,7 @@ var GeistTooltip = ({
|
|
|
16718
16940
|
/* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open && /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
16719
16941
|
Tooltip$1.Positioner,
|
|
16720
16942
|
{
|
|
16943
|
+
style: { zIndex: overlayZIndex.tooltip },
|
|
16721
16944
|
side: position,
|
|
16722
16945
|
align: getBaseAlign(boxAlign),
|
|
16723
16946
|
sideOffset: tip ? 5 : 8,
|
|
@@ -16757,10 +16980,10 @@ var GeistTooltip = ({
|
|
|
16757
16980
|
className: cn(
|
|
16758
16981
|
"w-2.5 h-2.5 rotate-45 border-none",
|
|
16759
16982
|
type === "default" && "bg-primary text-primary",
|
|
16760
|
-
type === "success" && "bg-success text-success",
|
|
16761
|
-
type === "warning" && "bg-warning text-warning",
|
|
16762
|
-
type === "error" && "bg-destructive text-destructive",
|
|
16763
|
-
type === "violet" && "bg-
|
|
16983
|
+
type === "success" && "bg-success text-success-strong",
|
|
16984
|
+
type === "warning" && "bg-warning text-warning-strong",
|
|
16985
|
+
type === "error" && "bg-destructive text-destructive-strong",
|
|
16986
|
+
type === "violet" && "bg-info text-info"
|
|
16764
16987
|
),
|
|
16765
16988
|
style: {
|
|
16766
16989
|
// Base UI naturally positions the arrow, but we add visual flair
|
|
@@ -16913,13 +17136,19 @@ var GitHubCalendar = ({
|
|
|
16913
17136
|
}
|
|
16914
17137
|
);
|
|
16915
17138
|
};
|
|
17139
|
+
var DEFAULT_GITHUB_INLINE_DIFF_LABELS = {
|
|
17140
|
+
diff: (fileName) => `Diff of ${fileName}`,
|
|
17141
|
+
addComment: "Add inline comment",
|
|
17142
|
+
closeThread: "Close thread"
|
|
17143
|
+
};
|
|
16916
17144
|
function InlineThread({
|
|
16917
17145
|
comments,
|
|
16918
17146
|
resolved,
|
|
16919
17147
|
onToggleResolve,
|
|
16920
17148
|
onClose,
|
|
16921
17149
|
onAddComment,
|
|
16922
|
-
currentUser
|
|
17150
|
+
currentUser,
|
|
17151
|
+
closeLabel
|
|
16923
17152
|
}) {
|
|
16924
17153
|
const [draft, setDraft] = useState("");
|
|
16925
17154
|
const textRef = useRef(null);
|
|
@@ -16952,7 +17181,7 @@ function InlineThread({
|
|
|
16952
17181
|
{
|
|
16953
17182
|
className: cn(
|
|
16954
17183
|
"h-5 gap-1 px-1.5 text-[11px]",
|
|
16955
|
-
resolved ? "bg-
|
|
17184
|
+
resolved ? "bg-success text-success-foreground hover:bg-success/90" : "bg-secondary text-foreground"
|
|
16956
17185
|
),
|
|
16957
17186
|
children: [
|
|
16958
17187
|
resolved ? /* @__PURE__ */ jsx(CheckCircle, { className: "h-3.5 w-3.5" }) : null,
|
|
@@ -16977,7 +17206,7 @@ function InlineThread({
|
|
|
16977
17206
|
{
|
|
16978
17207
|
variant: "ghost",
|
|
16979
17208
|
size: "icon",
|
|
16980
|
-
"aria-label":
|
|
17209
|
+
"aria-label": closeLabel,
|
|
16981
17210
|
onClick: onClose,
|
|
16982
17211
|
className: "h-7 w-7",
|
|
16983
17212
|
children: /* @__PURE__ */ jsx(Cross, { className: "h-4 w-4" })
|
|
@@ -17034,8 +17263,10 @@ function GithubInlineDiff({
|
|
|
17034
17263
|
onAddComment,
|
|
17035
17264
|
onResolveChange,
|
|
17036
17265
|
currentUser = { name: "You", initials: "YO" },
|
|
17266
|
+
labels: labelOverrides,
|
|
17037
17267
|
className
|
|
17038
17268
|
}) {
|
|
17269
|
+
const labels = { ...DEFAULT_GITHUB_INLINE_DIFF_LABELS, ...labelOverrides };
|
|
17039
17270
|
const rows = Array.isArray(diff) ? diff : [];
|
|
17040
17271
|
const [openThreadAt, setOpenThreadAt] = useState(null);
|
|
17041
17272
|
const [resolvedMap, setResolvedMap] = useState({});
|
|
@@ -17056,12 +17287,12 @@ function GithubInlineDiff({
|
|
|
17056
17287
|
"div",
|
|
17057
17288
|
{
|
|
17058
17289
|
role: "table",
|
|
17059
|
-
"aria-label":
|
|
17290
|
+
"aria-label": labels.diff(fileName),
|
|
17060
17291
|
className: cn("rounded-[var(--radius-md)] border bg-card", className),
|
|
17061
17292
|
children: [
|
|
17062
17293
|
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-between border-b px-2 py-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
17063
17294
|
/* @__PURE__ */ jsx("span", { className: "text-[13px] font-medium", children: fileName }),
|
|
17064
|
-
/* @__PURE__ */ jsx(Badge, { variant: "secondary",
|
|
17295
|
+
/* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "h-5 px-1.5 text-[11px]", children: fileStatus })
|
|
17065
17296
|
] }) }),
|
|
17066
17297
|
/* @__PURE__ */ jsx("ol", { role: "rowgroup", className: "divide-y", children: rows.map((line, idx) => {
|
|
17067
17298
|
const isChange = line.kind === "add" || line.kind === "del";
|
|
@@ -17074,8 +17305,8 @@ function GithubInlineDiff({
|
|
|
17074
17305
|
className: cn(
|
|
17075
17306
|
"group relative flex items-stretch text-[13px]",
|
|
17076
17307
|
line.kind === "hunk" && "bg-muted/50 text-muted-foreground",
|
|
17077
|
-
line.kind === "add" && "bg-
|
|
17078
|
-
line.kind === "del" && "bg-
|
|
17308
|
+
line.kind === "add" && "bg-success/10",
|
|
17309
|
+
line.kind === "del" && "bg-destructive/10"
|
|
17079
17310
|
),
|
|
17080
17311
|
children: [
|
|
17081
17312
|
/* @__PURE__ */ jsx("div", { className: "absolute -left-4 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100", children: line.kind !== "hunk" && /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
@@ -17084,7 +17315,7 @@ function GithubInlineDiff({
|
|
|
17084
17315
|
{
|
|
17085
17316
|
size: "icon",
|
|
17086
17317
|
variant: "secondary",
|
|
17087
|
-
"aria-label":
|
|
17318
|
+
"aria-label": labels.addComment,
|
|
17088
17319
|
className: "h-5 w-5 rounded-full shadow-sm",
|
|
17089
17320
|
onClick: () => setOpenThreadAt(isOpen ? null : idx),
|
|
17090
17321
|
children: /* @__PURE__ */ jsx(Message, { className: "h-3 w-3" })
|
|
@@ -17121,8 +17352,8 @@ function GithubInlineDiff({
|
|
|
17121
17352
|
"aria-hidden": true,
|
|
17122
17353
|
className: cn(
|
|
17123
17354
|
"mr-1 inline-block w-2 text-center font-semibold",
|
|
17124
|
-
line.kind === "add" && "text-
|
|
17125
|
-
line.kind === "del" && "text-
|
|
17355
|
+
line.kind === "add" && "text-success-strong",
|
|
17356
|
+
line.kind === "del" && "text-destructive-strong"
|
|
17126
17357
|
),
|
|
17127
17358
|
children: line.kind === "add" ? "+" : line.kind === "del" ? "-" : " "
|
|
17128
17359
|
}
|
|
@@ -17139,7 +17370,8 @@ function GithubInlineDiff({
|
|
|
17139
17370
|
onToggleResolve: () => toggleResolve(idx),
|
|
17140
17371
|
onClose: () => setOpenThreadAt(null),
|
|
17141
17372
|
onAddComment: (comment) => handleAddComment(idx, comment),
|
|
17142
|
-
currentUser
|
|
17373
|
+
currentUser,
|
|
17374
|
+
closeLabel: labels.closeThread
|
|
17143
17375
|
}
|
|
17144
17376
|
) })
|
|
17145
17377
|
] })
|
|
@@ -18106,20 +18338,29 @@ var HoverCardContent = ({
|
|
|
18106
18338
|
style,
|
|
18107
18339
|
ref,
|
|
18108
18340
|
...props
|
|
18109
|
-
}) => /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
18110
|
-
Popover$1.
|
|
18341
|
+
}) => /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
18342
|
+
Popover$1.Positioner,
|
|
18111
18343
|
{
|
|
18112
|
-
|
|
18113
|
-
|
|
18114
|
-
|
|
18115
|
-
|
|
18116
|
-
|
|
18117
|
-
|
|
18118
|
-
|
|
18119
|
-
|
|
18120
|
-
|
|
18344
|
+
style: { zIndex: overlayZIndex.popover },
|
|
18345
|
+
side,
|
|
18346
|
+
align,
|
|
18347
|
+
sideOffset,
|
|
18348
|
+
children: /* @__PURE__ */ jsx(
|
|
18349
|
+
Popover$1.Popup,
|
|
18350
|
+
{
|
|
18351
|
+
ref,
|
|
18352
|
+
className: cn(
|
|
18353
|
+
overlayClassNames.popoverSurface,
|
|
18354
|
+
overlayPrimitiveClassNames.popoverSurface,
|
|
18355
|
+
"w-64",
|
|
18356
|
+
className
|
|
18357
|
+
),
|
|
18358
|
+
style: { zIndex: overlayZIndex.popover, ...style },
|
|
18359
|
+
...props
|
|
18360
|
+
}
|
|
18361
|
+
)
|
|
18121
18362
|
}
|
|
18122
|
-
) })
|
|
18363
|
+
) });
|
|
18123
18364
|
HoverCardContent.displayName = "HoverCardContent";
|
|
18124
18365
|
var HoverCardTrigger = ({
|
|
18125
18366
|
asChild,
|
|
@@ -18446,9 +18687,15 @@ function InteractiveFrostedGlassCard({
|
|
|
18446
18687
|
element.removeEventListener("pointerleave", handlePointerLeave);
|
|
18447
18688
|
};
|
|
18448
18689
|
}, []);
|
|
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` :
|
|
18690
|
+
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` : (
|
|
18691
|
+
// allow-palette: fixed frosted-glass surface, same design category as shadow-glow-accent
|
|
18692
|
+
`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)]`
|
|
18693
|
+
);
|
|
18450
18694
|
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" :
|
|
18695
|
+
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" : (
|
|
18696
|
+
// allow-palette: fixed frosted-glass surface, same design category as shadow-glow-accent
|
|
18697
|
+
"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"
|
|
18698
|
+
);
|
|
18452
18699
|
const noiseFilterId = `cardNoise_${variant}`;
|
|
18453
18700
|
return /* @__PURE__ */ jsxs(
|
|
18454
18701
|
"div",
|
|
@@ -18809,8 +19056,8 @@ function KpiCard({ title, value, icon, trend, description, className }) {
|
|
|
18809
19056
|
/* @__PURE__ */ jsx("p", { className: "mt-2 text-3xl font-bold text-foreground", children: typeof value === "number" ? value.toLocaleString() : value }),
|
|
18810
19057
|
trend && /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-1", children: [
|
|
18811
19058
|
trend.isPositive ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18812
|
-
/* @__PURE__ */ jsx(ChartTrendingUp, { className: "size-4 text-
|
|
18813
|
-
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-
|
|
19059
|
+
/* @__PURE__ */ jsx(ChartTrendingUp, { className: "size-4 text-success-strong" }),
|
|
19060
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-success-strong", children: [
|
|
18814
19061
|
"+",
|
|
18815
19062
|
Math.abs(trend.value),
|
|
18816
19063
|
"%"
|
|
@@ -18819,8 +19066,8 @@ function KpiCard({ title, value, icon, trend, description, className }) {
|
|
|
18819
19066
|
/* @__PURE__ */ jsx(Minus, { className: "size-4 text-muted-foreground" }),
|
|
18820
19067
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-muted-foreground", children: "0%" })
|
|
18821
19068
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18822
|
-
/* @__PURE__ */ jsx(ChartTrendingDown, { className: "size-4 text-
|
|
18823
|
-
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-
|
|
19069
|
+
/* @__PURE__ */ jsx(ChartTrendingDown, { className: "size-4 text-destructive-strong" }),
|
|
19070
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-destructive-strong", children: [
|
|
18824
19071
|
trend.value,
|
|
18825
19072
|
"%"
|
|
18826
19073
|
] })
|
|
@@ -19608,7 +19855,8 @@ function McpTool({
|
|
|
19608
19855
|
maxArgsShown = MCP_DEFAULT_MAX_ARGS_SHOWN,
|
|
19609
19856
|
maxArgValueChars = MCP_DEFAULT_MAX_ARG_VALUE_CHARS,
|
|
19610
19857
|
maxOutputChars = MCP_DEFAULT_MAX_OUTPUT_CHARS,
|
|
19611
|
-
className
|
|
19858
|
+
className,
|
|
19859
|
+
outputLabel = "Tool output"
|
|
19612
19860
|
}) {
|
|
19613
19861
|
const outputId = useId();
|
|
19614
19862
|
const humanized = humanizeToolName(name);
|
|
@@ -19682,7 +19930,7 @@ function McpTool({
|
|
|
19682
19930
|
expandable && isOpen && /* @__PURE__ */ jsx(
|
|
19683
19931
|
"section",
|
|
19684
19932
|
{
|
|
19685
|
-
"aria-label":
|
|
19933
|
+
"aria-label": outputLabel,
|
|
19686
19934
|
className: "overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card",
|
|
19687
19935
|
children: /* @__PURE__ */ jsx(
|
|
19688
19936
|
"pre",
|
|
@@ -19834,7 +20082,7 @@ var MenuItem = function MenuItem2({
|
|
|
19834
20082
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children }),
|
|
19835
20083
|
suffix && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "inline-flex shrink-0 [&_svg]:size-4", children: suffix })
|
|
19836
20084
|
] });
|
|
19837
|
-
const errorClass = type === "error" ? "text-destructive data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive" : "";
|
|
20085
|
+
const errorClass = type === "error" ? "text-destructive-strong data-[highlighted]:bg-destructive/10 data-[highlighted]:text-destructive-strong" : "";
|
|
19838
20086
|
const passthrough = {};
|
|
19839
20087
|
if (onClick !== void 0) passthrough.onClick = onClick;
|
|
19840
20088
|
if (disabled !== void 0) passthrough.disabled = disabled;
|
|
@@ -20867,6 +21115,7 @@ var MultiSelectContent = ({
|
|
|
20867
21115
|
alignOffset = 0,
|
|
20868
21116
|
width = "md",
|
|
20869
21117
|
onKeyDown,
|
|
21118
|
+
"aria-label": ariaLabel = "Multi select options",
|
|
20870
21119
|
ref,
|
|
20871
21120
|
...props
|
|
20872
21121
|
}) => {
|
|
@@ -20882,7 +21131,7 @@ var MultiSelectContent = ({
|
|
|
20882
21131
|
{
|
|
20883
21132
|
align,
|
|
20884
21133
|
alignOffset,
|
|
20885
|
-
|
|
21134
|
+
style: { zIndex: overlayZIndex.popover },
|
|
20886
21135
|
side,
|
|
20887
21136
|
sideOffset,
|
|
20888
21137
|
children: /* @__PURE__ */ jsx(
|
|
@@ -20890,11 +21139,11 @@ var MultiSelectContent = ({
|
|
|
20890
21139
|
{
|
|
20891
21140
|
ref: composeRefs2(contentRef, ref),
|
|
20892
21141
|
role: "dialog",
|
|
20893
|
-
"aria-label":
|
|
21142
|
+
"aria-label": ariaLabel,
|
|
20894
21143
|
className: cn(
|
|
20895
21144
|
"z-50 max-h-[var(--multi-select-content-max-height)] w-[var(--multi-select-width)] overflow-y-auto",
|
|
20896
21145
|
"rounded-[var(--multi-select-content-radius)] border border-border bg-popover p-[var(--multi-select-content-padding)] text-popover-foreground shadow-md outline-none",
|
|
20897
|
-
"transition-[opacity,transform
|
|
21146
|
+
"transition-[opacity,transform] duration-[var(--multi-select-popover-duration)] ease-[var(--multi-select-easing)]",
|
|
20898
21147
|
"data-starting-style:translate-y-1 data-starting-style:opacity-0 data-ending-style:translate-y-1 data-ending-style:opacity-0",
|
|
20899
21148
|
"motion-reduce:transition-none motion-reduce:data-starting-style:translate-y-0 motion-reduce:data-ending-style:translate-y-0",
|
|
20900
21149
|
className
|
|
@@ -21120,7 +21369,8 @@ CommandEmpty2.displayName = "CommandEmpty";
|
|
|
21120
21369
|
var MultipleSelector = ({
|
|
21121
21370
|
ref,
|
|
21122
21371
|
value,
|
|
21123
|
-
onChange,
|
|
21372
|
+
onChange: legacyOnChange,
|
|
21373
|
+
onValueChange: onChange = legacyOnChange,
|
|
21124
21374
|
placeholder,
|
|
21125
21375
|
defaultOptions: arrayDefaultOptions = [],
|
|
21126
21376
|
options: arrayOptions,
|
|
@@ -21141,7 +21391,9 @@ var MultipleSelector = ({
|
|
|
21141
21391
|
triggerSearchOnFocus = false,
|
|
21142
21392
|
commandProps,
|
|
21143
21393
|
inputProps,
|
|
21144
|
-
hideClearAllButton = false
|
|
21394
|
+
hideClearAllButton = false,
|
|
21395
|
+
removeLabel = (optionLabel) => `Remove ${optionLabel}`,
|
|
21396
|
+
clearAllLabel = "Clear all"
|
|
21145
21397
|
}) => {
|
|
21146
21398
|
const inputRef = React45.useRef(null);
|
|
21147
21399
|
const [open, setOpen] = React45.useState(false);
|
|
@@ -21354,7 +21606,7 @@ var MultipleSelector = ({
|
|
|
21354
21606
|
e.stopPropagation();
|
|
21355
21607
|
},
|
|
21356
21608
|
onClick: () => handleUnselect(option),
|
|
21357
|
-
"aria-label":
|
|
21609
|
+
"aria-label": removeLabel(option.label),
|
|
21358
21610
|
children: /* @__PURE__ */ jsx(Cross, { size: 14, strokeWidth: 2, "aria-hidden": "true" })
|
|
21359
21611
|
}
|
|
21360
21612
|
)
|
|
@@ -21406,7 +21658,7 @@ var MultipleSelector = ({
|
|
|
21406
21658
|
"absolute end-0 top-0 flex size-9 items-center justify-center rounded-[var(--radius-lg)] border border-transparent text-muted-foreground/80 transition-colors hover:text-foreground focus-visible:outline focus-visible:outline-2 focus-visible:outline-ring/70",
|
|
21407
21659
|
(hideClearAllButton || disabled || selected.length < 1 || selected.filter((s) => s.fixed).length === selected.length) && "hidden"
|
|
21408
21660
|
),
|
|
21409
|
-
"aria-label":
|
|
21661
|
+
"aria-label": clearAllLabel,
|
|
21410
21662
|
children: /* @__PURE__ */ jsx(Cross, { size: 16, strokeWidth: 2, "aria-hidden": "true" })
|
|
21411
21663
|
}
|
|
21412
21664
|
)
|
|
@@ -21425,7 +21677,7 @@ var MultipleSelector = ({
|
|
|
21425
21677
|
children: open && /* @__PURE__ */ jsx(
|
|
21426
21678
|
CommandList,
|
|
21427
21679
|
{
|
|
21428
|
-
className: "bg-popover text-popover-foreground shadow-lg shadow-
|
|
21680
|
+
className: "bg-popover text-popover-foreground shadow-lg shadow-foreground/5 outline-none",
|
|
21429
21681
|
onMouseLeave: () => setOnScrollbar(false),
|
|
21430
21682
|
onMouseEnter: () => setOnScrollbar(true),
|
|
21431
21683
|
onMouseUp: () => inputRef?.current?.focus(),
|
|
@@ -23022,16 +23274,16 @@ function ProgressiveBlur({
|
|
|
23022
23274
|
}
|
|
23023
23275
|
var variantMap = {
|
|
23024
23276
|
success: {
|
|
23025
|
-
container: "border-success/40 bg-success/10 text-success fill-success",
|
|
23026
|
-
cta: "text-success decoration-success/50 hover:text-success hover:decoration-success"
|
|
23277
|
+
container: "border-success/40 bg-success/10 text-success-strong fill-success-strong",
|
|
23278
|
+
cta: "text-success-strong decoration-success/50 hover:text-success-strong hover:decoration-success"
|
|
23027
23279
|
},
|
|
23028
23280
|
warning: {
|
|
23029
|
-
container: "border-warning/40 bg-warning/10 text-warning fill-warning",
|
|
23030
|
-
cta: "text-warning decoration-warning/50 hover:text-warning hover:decoration-warning"
|
|
23281
|
+
container: "border-warning/40 bg-warning/10 text-warning-strong fill-warning-strong",
|
|
23282
|
+
cta: "text-warning-strong decoration-warning/50 hover:text-warning-strong hover:decoration-warning"
|
|
23031
23283
|
},
|
|
23032
23284
|
error: {
|
|
23033
|
-
container: "border-destructive/40 bg-destructive/10 text-destructive fill-destructive",
|
|
23034
|
-
cta: "text-destructive decoration-destructive/50 hover:text-destructive hover:decoration-destructive"
|
|
23285
|
+
container: "border-destructive/40 bg-destructive/10 text-destructive-strong fill-destructive-strong",
|
|
23286
|
+
cta: "text-destructive-strong decoration-destructive/50 hover:text-destructive-strong hover:decoration-destructive"
|
|
23035
23287
|
},
|
|
23036
23288
|
info: {
|
|
23037
23289
|
container: "border-border bg-muted text-foreground fill-foreground",
|
|
@@ -23510,6 +23762,8 @@ function QuestionToolState({
|
|
|
23510
23762
|
onSubmitAnswer,
|
|
23511
23763
|
output,
|
|
23512
23764
|
headerLabel = "Question",
|
|
23765
|
+
previousQuestionLabel = "Previous question",
|
|
23766
|
+
nextQuestionLabel = "Next question",
|
|
23513
23767
|
className
|
|
23514
23768
|
}) {
|
|
23515
23769
|
const totalQuestions = totalQuestionsProp ?? questions.length;
|
|
@@ -23570,7 +23824,7 @@ function QuestionToolState({
|
|
|
23570
23824
|
onClick: goPrev,
|
|
23571
23825
|
disabled: !canGoPrev,
|
|
23572
23826
|
className: "inline-flex size-5 items-center justify-center rounded-[var(--radius-sm)] transition-colors duration-micro hover:bg-accent disabled:pointer-events-none disabled:opacity-40",
|
|
23573
|
-
"aria-label":
|
|
23827
|
+
"aria-label": previousQuestionLabel,
|
|
23574
23828
|
children: /* @__PURE__ */ jsx(ChevronUp, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
|
|
23575
23829
|
}
|
|
23576
23830
|
),
|
|
@@ -23586,7 +23840,7 @@ function QuestionToolState({
|
|
|
23586
23840
|
onClick: goNext,
|
|
23587
23841
|
disabled: !canGoNext,
|
|
23588
23842
|
className: "inline-flex size-5 items-center justify-center rounded-[var(--radius-sm)] transition-colors duration-micro hover:bg-accent disabled:pointer-events-none disabled:opacity-40",
|
|
23589
|
-
"aria-label":
|
|
23843
|
+
"aria-label": nextQuestionLabel,
|
|
23590
23844
|
children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
|
|
23591
23845
|
}
|
|
23592
23846
|
)
|
|
@@ -23640,13 +23894,15 @@ var itemStyle = {
|
|
|
23640
23894
|
"--radio-motion-easing": radioTokens.motion.easing
|
|
23641
23895
|
};
|
|
23642
23896
|
var radioControlClassName = cn(
|
|
23643
|
-
"relative inline-flex shrink-0 items-center justify-center rounded-[var(--radius-full)] border-[length:var(--radio-border-width)] border-border bg-background text-foreground",
|
|
23897
|
+
"relative inline-flex shrink-0 items-center justify-center rounded-[var(--radius-full)] border-[length:var(--radio-border-width)] border-[var(--control-border)] bg-background text-foreground",
|
|
23644
23898
|
"size-[var(--radio-control-size)]",
|
|
23645
23899
|
"transition-[background-color,border-color,box-shadow] duration-[var(--radio-motion-duration)] ease-[var(--radio-motion-easing)]",
|
|
23646
|
-
"after:size-[var(--radio-dot-size)] after:scale-
|
|
23647
|
-
"
|
|
23648
|
-
|
|
23649
|
-
"peer-
|
|
23900
|
+
"after:size-[var(--radio-dot-size)] after:scale-95 after:rounded-[var(--radius-full)] after:bg-current after:opacity-0 after:transition-[opacity,transform] after:duration-[var(--radio-motion-duration)] after:ease-[var(--radio-motion-easing)] after:content-['']",
|
|
23901
|
+
// "On" is the action colour, as for checkbox / toggle / slider / choicebox —
|
|
23902
|
+
// it was --neutral-12, which only matched the House ink by coincidence.
|
|
23903
|
+
"peer-checked:border-primary peer-checked:text-primary peer-checked:after:scale-100 peer-checked:after:opacity-100",
|
|
23904
|
+
controlFocusProxyClassName,
|
|
23905
|
+
"peer-disabled:border-neutral-5 peer-disabled:bg-muted peer-disabled:text-neutral-8"
|
|
23650
23906
|
);
|
|
23651
23907
|
function useRadioGroupContext() {
|
|
23652
23908
|
return use(RadioGroupContext);
|
|
@@ -23908,7 +24164,8 @@ function ReactionChip({
|
|
|
23908
24164
|
onSelect,
|
|
23909
24165
|
className,
|
|
23910
24166
|
emojis = ["\u{1F44D}", "\u2764\uFE0F", "\u{1F602}", "\u{1F389}"],
|
|
23911
|
-
selected
|
|
24167
|
+
selected,
|
|
24168
|
+
addReactionLabel = "Add reaction"
|
|
23912
24169
|
}) {
|
|
23913
24170
|
return (
|
|
23914
24171
|
// biome-ignore lint/a11y/useSemanticElements: ARIA pattern
|
|
@@ -23922,7 +24179,7 @@ function ReactionChip({
|
|
|
23922
24179
|
className
|
|
23923
24180
|
),
|
|
23924
24181
|
role: "group",
|
|
23925
|
-
"aria-label":
|
|
24182
|
+
"aria-label": addReactionLabel,
|
|
23926
24183
|
children: emojis.map((em) => {
|
|
23927
24184
|
const isActive = selected === em;
|
|
23928
24185
|
const btnClassName = cn(
|
|
@@ -24948,7 +25205,8 @@ function SearchTool({
|
|
|
24948
25205
|
expanded,
|
|
24949
25206
|
onExpandedChange,
|
|
24950
25207
|
maxResultsHeightPx = SEARCH_DEFAULT_MAX_HEIGHT_PX,
|
|
24951
|
-
className
|
|
25208
|
+
className,
|
|
25209
|
+
resultsLabel = "Search results"
|
|
24952
25210
|
}) {
|
|
24953
25211
|
const panelId = useId();
|
|
24954
25212
|
const [internalOpen, setInternalOpen] = useState(defaultOpen);
|
|
@@ -25013,7 +25271,7 @@ function SearchTool({
|
|
|
25013
25271
|
"\u201D"
|
|
25014
25272
|
] })
|
|
25015
25273
|
] }),
|
|
25016
|
-
/* @__PURE__ */ jsx("div", { className: "overflow-y-auto bg-card", style: { maxHeight: `${maxResultsHeightPx}px` }, children: /* @__PURE__ */ jsx("ul", { "aria-label":
|
|
25274
|
+
/* @__PURE__ */ jsx("div", { className: "overflow-y-auto bg-card", style: { maxHeight: `${maxResultsHeightPx}px` }, children: /* @__PURE__ */ jsx("ul", { "aria-label": resultsLabel, className: "flex flex-col gap-1 p-1", children: results.map((result) => /* @__PURE__ */ jsx(SearchResultRow, { result }, getSearchResultKey(result))) }) })
|
|
25017
25275
|
]
|
|
25018
25276
|
}
|
|
25019
25277
|
)
|
|
@@ -25139,6 +25397,7 @@ var SheetContent = ({
|
|
|
25139
25397
|
noOverlay = false,
|
|
25140
25398
|
showClose,
|
|
25141
25399
|
close,
|
|
25400
|
+
closeLabel = "Close",
|
|
25142
25401
|
style,
|
|
25143
25402
|
ref,
|
|
25144
25403
|
...props
|
|
@@ -25160,7 +25419,7 @@ var SheetContent = ({
|
|
|
25160
25419
|
shouldRenderClose ? /* @__PURE__ */ jsxs(
|
|
25161
25420
|
SheetClose,
|
|
25162
25421
|
{
|
|
25163
|
-
"aria-label":
|
|
25422
|
+
"aria-label": closeLabel,
|
|
25164
25423
|
className: cn(
|
|
25165
25424
|
"absolute right-[var(--sheet-close-offset)] top-[var(--sheet-close-offset)] inline-flex size-[var(--sheet-close-size)] items-center justify-center rounded-[var(--sheet-close-radius)] text-muted-foreground",
|
|
25166
25425
|
"transition-[background-color,color,box-shadow] duration-[var(--motion-duration-micro)] ease-[var(--ease-out)] hover:bg-muted hover:text-foreground",
|
|
@@ -25169,7 +25428,7 @@ var SheetContent = ({
|
|
|
25169
25428
|
),
|
|
25170
25429
|
children: [
|
|
25171
25430
|
/* @__PURE__ */ jsx(Cross, { "aria-hidden": "true", className: "size-[var(--sheet-close-icon-size)]" }),
|
|
25172
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children:
|
|
25431
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: closeLabel })
|
|
25173
25432
|
]
|
|
25174
25433
|
}
|
|
25175
25434
|
) : null
|
|
@@ -25396,13 +25655,7 @@ var ShowMore = ({
|
|
|
25396
25655
|
style: cssVars,
|
|
25397
25656
|
...props,
|
|
25398
25657
|
children: [
|
|
25399
|
-
!noBorder && /* @__PURE__ */ jsx(
|
|
25400
|
-
"div",
|
|
25401
|
-
{
|
|
25402
|
-
"aria-hidden": "true",
|
|
25403
|
-
className: cn("h-px flex-1 bg-[var(--neutral-7)]", dividerClassName)
|
|
25404
|
-
}
|
|
25405
|
-
),
|
|
25658
|
+
!noBorder && /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: cn("h-px flex-1 bg-neutral-7", dividerClassName) }),
|
|
25406
25659
|
/* @__PURE__ */ jsx("div", { className: "shrink-0 bg-background px-[var(--show-more-gap)]", children: /* @__PURE__ */ jsxs(
|
|
25407
25660
|
"button",
|
|
25408
25661
|
{
|
|
@@ -25436,13 +25689,7 @@ var ShowMore = ({
|
|
|
25436
25689
|
]
|
|
25437
25690
|
}
|
|
25438
25691
|
) }),
|
|
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
|
-
)
|
|
25692
|
+
!noBorder && /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: cn("h-px flex-1 bg-neutral-7", dividerClassName) })
|
|
25446
25693
|
]
|
|
25447
25694
|
}
|
|
25448
25695
|
);
|
|
@@ -25618,6 +25865,8 @@ var SliderNumberFlow = ({
|
|
|
25618
25865
|
className,
|
|
25619
25866
|
value,
|
|
25620
25867
|
ref,
|
|
25868
|
+
/** Accessible name for the slider thumb. Pass a translated string. */
|
|
25869
|
+
valueLabel = "Slider Value",
|
|
25621
25870
|
...props
|
|
25622
25871
|
}) => /* @__PURE__ */ jsxs(
|
|
25623
25872
|
Slider$1.Root,
|
|
@@ -25632,7 +25881,7 @@ var SliderNumberFlow = ({
|
|
|
25632
25881
|
Slider$1.Thumb,
|
|
25633
25882
|
{
|
|
25634
25883
|
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",
|
|
25635
|
-
"aria-label":
|
|
25884
|
+
"aria-label": valueLabel,
|
|
25636
25885
|
children: (Array.isArray(value) ? value[0] : value) != null && /* @__PURE__ */ jsx(
|
|
25637
25886
|
NumberFlow,
|
|
25638
25887
|
{
|
|
@@ -26282,7 +26531,7 @@ function Stepper({
|
|
|
26282
26531
|
className: cn(
|
|
26283
26532
|
"relative flex items-center justify-center rounded-full border-2 transition-[background-color,border-color,box-shadow,color,opacity,transform]",
|
|
26284
26533
|
config.icon,
|
|
26285
|
-
status === "completed" && "border-primary bg-primary text-
|
|
26534
|
+
status === "completed" && "border-primary bg-primary text-primary-foreground",
|
|
26286
26535
|
status === "current" && "border-primary bg-background text-primary",
|
|
26287
26536
|
status === "pending" && "border-neutral-6 bg-background text-muted-foreground",
|
|
26288
26537
|
status === "error" && "border-destructive bg-destructive text-destructive-foreground",
|
|
@@ -26421,7 +26670,17 @@ function ProgressStepper({
|
|
|
26421
26670
|
style: { width: `${progress}%` }
|
|
26422
26671
|
}
|
|
26423
26672
|
) }),
|
|
26424
|
-
labels && labels.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex justify-between text-xs text-muted-foreground", children: labels.map((label, index) => /* @__PURE__ */ jsx(
|
|
26673
|
+
labels && labels.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex justify-between text-xs text-muted-foreground", children: labels.map((label, index) => /* @__PURE__ */ jsx(
|
|
26674
|
+
"span",
|
|
26675
|
+
{
|
|
26676
|
+
className: cn(
|
|
26677
|
+
"font-medium",
|
|
26678
|
+
index <= currentStep ? "text-primary/90" : "text-muted-foreground"
|
|
26679
|
+
),
|
|
26680
|
+
children: label
|
|
26681
|
+
},
|
|
26682
|
+
index
|
|
26683
|
+
)) }),
|
|
26425
26684
|
/* @__PURE__ */ jsxs("p", { className: "text-center text-sm text-muted-foreground", children: [
|
|
26426
26685
|
"\u6B65\u9AA4 ",
|
|
26427
26686
|
currentStep + 1,
|
|
@@ -26608,6 +26867,7 @@ var SwitchControl = function SwitchControl2({
|
|
|
26608
26867
|
"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)]",
|
|
26609
26868
|
"text-muted-foreground transition-[background-color,box-shadow,color] duration-[var(--switch-duration)] ease-[var(--switch-easing)]",
|
|
26610
26869
|
"peer-checked:bg-background peer-checked:text-foreground peer-checked:shadow-sm",
|
|
26870
|
+
controlFocusProxyClassName,
|
|
26611
26871
|
"",
|
|
26612
26872
|
"peer-disabled:pointer-events-none peer-disabled:text-muted-foreground/60",
|
|
26613
26873
|
"[&_svg]:size-[var(--switch-icon-size)]"
|
|
@@ -27294,7 +27554,8 @@ function isThemeSwitcherValue(value) {
|
|
|
27294
27554
|
var ThemeSwitcher = ({
|
|
27295
27555
|
value,
|
|
27296
27556
|
defaultValue = "system",
|
|
27297
|
-
onChange,
|
|
27557
|
+
onChange: legacyOnChange,
|
|
27558
|
+
onValueChange: onChange = legacyOnChange,
|
|
27298
27559
|
disabled = false,
|
|
27299
27560
|
size = "medium",
|
|
27300
27561
|
name,
|
|
@@ -27437,7 +27698,8 @@ function playToggleSound(lastPlayedAt) {
|
|
|
27437
27698
|
var ThemeToggle = ({
|
|
27438
27699
|
value,
|
|
27439
27700
|
defaultValue,
|
|
27440
|
-
onChange,
|
|
27701
|
+
onChange: legacyOnChange,
|
|
27702
|
+
onValueChange: onChange = legacyOnChange,
|
|
27441
27703
|
size = "md",
|
|
27442
27704
|
sound = false,
|
|
27443
27705
|
applyToDocument = false,
|
|
@@ -27784,7 +28046,8 @@ var TodoTool = memo(function TodoTool2({
|
|
|
27784
28046
|
mode = "updating",
|
|
27785
28047
|
todos = [],
|
|
27786
28048
|
dimmed = false,
|
|
27787
|
-
className
|
|
28049
|
+
className,
|
|
28050
|
+
listLabel = "To-dos"
|
|
27788
28051
|
}) {
|
|
27789
28052
|
if (state === "loading") {
|
|
27790
28053
|
return /* @__PURE__ */ jsx("div", { className: cn("text-sm leading-relaxed", className), children: /* @__PURE__ */ jsx(TextShimmer, { as: "span", className: "text-sm", children: LOADING_LABEL[mode] }) });
|
|
@@ -27793,7 +28056,7 @@ var TodoTool = memo(function TodoTool2({
|
|
|
27793
28056
|
return /* @__PURE__ */ jsx(
|
|
27794
28057
|
"ol",
|
|
27795
28058
|
{
|
|
27796
|
-
"aria-label":
|
|
28059
|
+
"aria-label": listLabel,
|
|
27797
28060
|
className: cn("flex flex-col gap-2 text-sm leading-relaxed", className),
|
|
27798
28061
|
children: todos.map((todo, idx) => {
|
|
27799
28062
|
const key = todo.id ?? `${idx}-${todo.content.slice(0, 16)}`;
|
|
@@ -27899,6 +28162,7 @@ var Toggle = ({
|
|
|
27899
28162
|
"aria-hidden": "true",
|
|
27900
28163
|
className: cn(
|
|
27901
28164
|
"relative inline-flex h-[var(--toggle-track-height)] w-[var(--toggle-track-width)] items-center rounded-[var(--toggle-radius)] border bg-[var(--toggle-track-off)] p-px",
|
|
28165
|
+
controlFocusProxyClassName,
|
|
27902
28166
|
"border-[var(--toggle-track-border)] transition-[background-color,border-color] duration-[var(--toggle-duration)] ease-[var(--toggle-easing)]",
|
|
27903
28167
|
"peer-checked:bg-[var(--toggle-track-on)]",
|
|
27904
28168
|
"peer-checked:[&>span]:translate-x-[var(--toggle-thumb-translate)] peer-checked:[&>span]:text-[var(--toggle-icon-on)]",
|
|
@@ -28448,7 +28712,8 @@ function UpgradeBanner({
|
|
|
28448
28712
|
onDismiss,
|
|
28449
28713
|
variant = "inline",
|
|
28450
28714
|
secondaryAction,
|
|
28451
|
-
className
|
|
28715
|
+
className,
|
|
28716
|
+
dismissLabel = "Dismiss"
|
|
28452
28717
|
}) {
|
|
28453
28718
|
const [dismissed, setDismissed] = useState(false);
|
|
28454
28719
|
if (dismissed) return null;
|
|
@@ -28499,7 +28764,7 @@ function UpgradeBanner({
|
|
|
28499
28764
|
{
|
|
28500
28765
|
type: "button",
|
|
28501
28766
|
onClick: handleDismiss,
|
|
28502
|
-
"aria-label":
|
|
28767
|
+
"aria-label": dismissLabel,
|
|
28503
28768
|
className: "rounded-[var(--radius-md)] p-1 text-neutral-10 transition-colors hover:bg-neutral-3 hover:text-neutral-12",
|
|
28504
28769
|
children: /* @__PURE__ */ jsx(Cross, { className: "h-3.5 w-3.5" })
|
|
28505
28770
|
}
|
|
@@ -28516,13 +28781,13 @@ var formatTime = (seconds) => {
|
|
|
28516
28781
|
const remainingSeconds = Math.floor(seconds % 60);
|
|
28517
28782
|
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
28518
28783
|
};
|
|
28519
|
-
var CustomSlider = ({ value,
|
|
28784
|
+
var CustomSlider = ({ value, onValueChange, className }) => {
|
|
28520
28785
|
const shouldReduceMotion = useReducedMotion() ?? false;
|
|
28521
28786
|
const handleClick = (e) => {
|
|
28522
28787
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
28523
28788
|
const x = e.clientX - rect.left;
|
|
28524
28789
|
const percentage = x / rect.width * 100;
|
|
28525
|
-
|
|
28790
|
+
onValueChange(Math.min(Math.max(percentage, 0), 100));
|
|
28526
28791
|
};
|
|
28527
28792
|
return /* @__PURE__ */ jsx(
|
|
28528
28793
|
motion.div,
|
|
@@ -28621,6 +28886,7 @@ var VideoPlayer = ({
|
|
|
28621
28886
|
motion.div,
|
|
28622
28887
|
{
|
|
28623
28888
|
className: cn(
|
|
28889
|
+
// allow-palette: frame scrim sits over arbitrary video content, not the app surface
|
|
28624
28890
|
"relative mx-auto w-full max-w-4xl overflow-hidden rounded-[var(--radius-xl)] bg-black/60 shadow-lg backdrop-blur-sm",
|
|
28625
28891
|
className
|
|
28626
28892
|
),
|
|
@@ -28656,7 +28922,7 @@ var VideoPlayer = ({
|
|
|
28656
28922
|
children: [
|
|
28657
28923
|
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center gap-2", children: [
|
|
28658
28924
|
/* @__PURE__ */ jsx("span", { className: "text-sm text-white", children: formatTime(currentTime) }),
|
|
28659
|
-
/* @__PURE__ */ jsx(CustomSlider, { value: progress,
|
|
28925
|
+
/* @__PURE__ */ jsx(CustomSlider, { value: progress, onValueChange: handleSeek, className: "flex-1" }),
|
|
28660
28926
|
/* @__PURE__ */ jsx("span", { className: "text-sm text-white", children: formatTime(duration) })
|
|
28661
28927
|
] }),
|
|
28662
28928
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -28696,7 +28962,7 @@ var VideoPlayer = ({
|
|
|
28696
28962
|
)
|
|
28697
28963
|
}
|
|
28698
28964
|
),
|
|
28699
|
-
/* @__PURE__ */ jsx("div", { className: "w-24", children: /* @__PURE__ */ jsx(CustomSlider, { value: volume * 100,
|
|
28965
|
+
/* @__PURE__ */ jsx("div", { className: "w-24", children: /* @__PURE__ */ jsx(CustomSlider, { value: volume * 100, onValueChange: handleVolumeChange }) })
|
|
28700
28966
|
] })
|
|
28701
28967
|
] }),
|
|
28702
28968
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: speeds.map((speed) => /* @__PURE__ */ createElement(
|
|
@@ -28712,7 +28978,9 @@ var VideoPlayer = ({
|
|
|
28712
28978
|
variant: "ghost",
|
|
28713
28979
|
size: "icon",
|
|
28714
28980
|
className: cn(
|
|
28981
|
+
// allow-palette: control button sits on the dark video control scrim, not the app surface
|
|
28715
28982
|
"text-white hover:bg-white/10 hover:text-white",
|
|
28983
|
+
// allow-palette: active-speed highlight sits on the dark video control scrim
|
|
28716
28984
|
playbackSpeed === speed && "bg-white/20"
|
|
28717
28985
|
),
|
|
28718
28986
|
"aria-label": `${speed}x speed`,
|
|
@@ -29185,6 +29453,6 @@ function XPostSkeleton({ className }) {
|
|
|
29185
29453
|
);
|
|
29186
29454
|
}
|
|
29187
29455
|
|
|
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,
|
|
29456
|
+
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, BentoCard, BentoGrid, BitbucketAvatar, Book, BorderTrail, Box, BrandMark, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Browser, BrowserMockup, BulkActionBar, BulkActionConfirmDialog, Button, ButtonLink, Calendar, CanvasRevealEffect, Card, CardBody, CardContent, CardDescription, CardErrorBoundary, CardFooter, CardHeader, CardIcon, CardRoot, 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, DEFAULT_GITHUB_INLINE_DIFF_LABELS, DITHERING_SHAPES, DITHERING_TYPES, DataList, DatePicker, Description, DestructiveActionModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiceBearAvatar, DisplayCards, DitheringBackground, DitheringShader, DotPattern, DotsLoader, DottedMap, DottedWorldMap, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuEmpty, DropdownMenuFilterInput, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DualModeImage, DynamicIslandTOC, EditTool, EmptyState, EmptyStateIcon, EmptyStateRoot, Enable2FACard, Entity, ErrorSurface as Error, ErrorBoundary, ErrorMessage, ExpandableGallery, ExpandableTabs, ExpandingTextarea, FallbackCard, FeatureArrowCard, FeatureCard, CardContent as FeatureCardContent, FeatureCardDecorator, FeatureCardHeader, FeatureCheckItem, FeatureGate, FeatureIconItem, Feedback, Field, FileAttachment, FileCard, FilterPills, Flex, FlickeringGrid, FloatingBulkActionBar, Folder, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gauge, GeistTooltip, GitHubAvatar, GitHubCalendar, GitLabAvatar, GithubInlineDiff, Globe, GradientAnimatedText, GrainCloudsBackground, GrainGradientBackground, Grid, GridCell, GridFeatureCard, GridPatternCard, GridPatternCardBody, GridRoot, GridSystem, Heading, HexGrid, Highlighter, HoverCard, HoverCardContent, HoverCardTrigger, ISO_DATE_FORMAT, IndeterminateGlyph, InfiniteSlider, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InteractiveCard, InteractiveFrostedGlassCard, IphoneMockup, Kbd, KpiCard, LINE_SHADOW_CSS, Label, LetterGlitch, LightRays, LineShadowText, Loader, LoadingDots, MCP_DEFAULT_MAX_ARGS_SHOWN, MCP_DEFAULT_MAX_ARG_VALUE_CHARS, MCP_DEFAULT_MAX_OUTPUT_CHARS, MacbookPro, MagicCard, Material, McpTool, Menu, MenuButton, MenuContainer, MenuItem, MenuItemLocked, MenuLink, MenuSection, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MeshGradientBg, MessageContent, MessageWithReactions, MetricCard, MetricCardBordered, MetricGrid, MiddleTruncate, Modal, MultiSelectContent, MultiSelectRoot, MultiSelectRow, MultiSelectTrigger, MultipleSelector, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NeuroNoiseBg, NoisePatternCard, NoisePatternCardBody, Note, NotificationMessageList, Pagination, PaginationControl, PanelErrorBoundary, Phone, Popover, PopoverAnchor, PopoverContent, PopoverPositioner, PopoverTrigger, PricingCard, PricingCardBadge, PricingCardBody, PricingCardDescription, PricingCardHeader, PricingCardList, PricingCardListItem, PricingCardMainPrice, PricingCardOriginalPrice, PricingCardPeriod, PricingCardPlan, PricingCardPlanName, PricingCardPrice, PricingCardRoot, PricingCardSeparator, Progress, ProgressStepper, ProgressiveBlur, ProjectBanner, PulseDotLoader, PulseLoader, QuestionPrompt, QuestionTool, RadioGroup, RadioGroupCard, RadioGroupCardItem, RadioGroupItem, RadioGroupStacked, RadioGroupStackedItem, ReactionBadge, ReactionChip, RelativeTimeCard, ResizableHandle, ResizablePanel, ResizablePanelGroup, SEARCH_DEFAULT_MAX_HEIGHT_PX, Safari, ScrollVelocityContainer, ScrollVelocityRow, Scroller, SearchTool, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShineBorder, ShowMore, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonText, Slider, SliderNumberFlow, Spinner2 as Spinner, SplitButton, SplitButtonMenuItem, Stack, StarsCanvas, StatItem, StatusBadge2 as StatusBadge, StatusDot, Stepper, StepperContent, StepperNavigation, StepperProvider, SubagentTool, Switch, Table, TableBody, TableCaption, TableCell, TableCol, TableColgroup, TableErrorBoundary, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Terminal, TerminalLoader, Text, TextBlinkLoader, TextDotsLoader, TextLoop, TextScramble, TextShimmer, TextShimmerLoader, Textarea, ThemeSwitcher, ThemeToggle, Toaster, TodoTool, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeExpander, TreeIcon, TreeLabel, TreeLines, TreeNode, TreeNodeContent, TreeNodeTrigger, TreeProvider, TreeView, TypingAnimation, TypingLoader, UpgradeBanner, VideoPlayer, VideoText, WarpBackground, WaveAnimation, WaveLoader, WavesBg, WordFadeIn, XPostCard, XPostSkeleton, alertVariants, ariaPatterns, badgeVariants, baseBadgeVariants, breakpoints, buttonVariants, cardVariants, choiceboxItemVariants, colorBadgeSizes, colorBadgeVariants, containerWidths, contrastRequirements, fixNumberedListBreaks, flexLayouts, focusRing, formatShortRelative, getCurrentBreakpoint, getDensitySpacing, getSpacing, gridLayouts, isBreakpoint, labelVariants, mediaQueries, minTouchTarget, navigationMenuTriggerStyle, normalizeCodeBlockLanguage, normalizeCodeFenceLanguages, normalizeMessageMarkdown, parseIsoDate, prefersReducedMotion, progressIndicatorVariants, progressVariants, resolveCodeBlockLanguageIcon, responsive, responsivePatterns, skipLinkStyle, spacing, spacingPatterns, spacingToCss, statusBadgeVariants, tabsContentVariants, tabsListVariants, tabsTriggerVariants, toIsoDate, toggleGroupItemVariants, toggleGroupVariants, useBulkSelection, useCarousel, useChart, useConfirmDialog, useCopyToClipboard, useDebounce, useFeatureGate, useFormField, useStepper, useStepperContext, useToasts, visuallyHidden, withErrorBoundary, wrap, zIndex };
|
|
29189
29457
|
//# sourceMappingURL=index.js.map
|
|
29190
29458
|
//# sourceMappingURL=index.js.map
|