@assure-one/design-system 1.42.0 → 1.43.1
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/{brand-scope-B7w3-y9E.d.ts → brand-scope-BOKu4iOc.d.ts} +1 -1
- package/dist/{chunk-YMRSFVW7.js → chunk-5AL4W32Z.js} +335 -225
- package/dist/chunk-5AL4W32Z.js.map +1 -0
- package/dist/{chunk-H53VF62B.js → chunk-L5IQK3GV.js} +108 -50
- package/dist/chunk-L5IQK3GV.js.map +1 -0
- package/dist/{chunk-AF3QYJ24.js → chunk-TBDTXAFH.js} +6 -4
- package/dist/chunk-TBDTXAFH.js.map +1 -0
- package/dist/{chunk-M2HMZ2RW.js → chunk-VK6SW34V.js} +36 -14
- package/dist/chunk-VK6SW34V.js.map +1 -0
- package/dist/css/components.css +1 -1
- package/dist/{data-table-view-BN3GgNdp.d.ts → data-table-view-BWhKeUiw.d.ts} +2 -2
- package/dist/{design-system-provider-CrBRFQjR.d.ts → design-system-provider-Coe2S3Lh.d.ts} +1 -1
- package/dist/icons/index.d.ts +5 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +246 -53
- package/dist/index.js +530 -236
- package/dist/index.js.map +1 -1
- package/dist/legacy/index.d.ts +3 -3
- package/dist/legacy/index.js +3 -3
- package/dist/next/index.d.ts +2 -2
- package/dist/styles.css +1 -1
- package/dist/suite/index.d.ts +3 -3
- package/dist/suite/index.js +3 -3
- package/dist/{types-aBQCboFH.d.ts → types-DlqmlVyZ.d.ts} +11 -1
- package/docs/components.md +6 -3
- package/docs/components.registry.json +84 -17
- package/package.json +1 -1
- package/dist/chunk-AF3QYJ24.js.map +0 -1
- package/dist/chunk-H53VF62B.js.map +0 -1
- package/dist/chunk-M2HMZ2RW.js.map +0 -1
- package/dist/chunk-YMRSFVW7.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { slot, badgeAnatomy, stateAttributes, useDsMessages, deprecate, paginationAnatomy, Select, microInteractions, useFieldsetContext, useFieldControl, useControllableState, useMergedRefs, switchAnatomy, CONTROL_LABEL_TEXT, tableAnatomy, Pressable, FormBridge, CONTROL_SIZE_CLASSES, FileUpload, FileChip, Button, Tooltip, TooltipTrigger, TooltipContent, Avatar, Input, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuLabel, dataTableAnatomy, Checkbox, DocumentDetailPanel, DocumentDetailHeader, DocumentDetailTitle, DocumentDetailRequester, DocumentDetailMetaRow, DocumentDetailActions, DropdownMenuItem, DocumentList, DocumentRow, DocumentListSection, Textarea, DropdownMenuCheckboxItem, Popover, PopoverTrigger, PopoverContent, PopoverClose, DropdownMenuShortcut, useId as useId$1 } from './chunk-
|
|
2
|
-
import { cn, ShieldIcon, UploadIcon, SendIcon, ChevronLeftIcon, MoreHorizontalIcon, ChevronRightIcon, ChevronUpIcon, ChevronDownIcon, ChevronsUpDownIcon, LockIcon, TrashIcon, HelpCircleIcon, ArrowRightIcon, CheckIcon, EyeIcon, FileTextIcon, CloseIcon, SparklesIcon, PlusIcon, SearchIcon, AlertTriangleIcon, FolderClosedIcon, CalendarIcon, PencilIcon, LockOpenIcon, FlagIcon, CheckCircleSolidIcon, DownloadIcon, XCircleSolidIcon, MessageCircleIcon, BellIcon, PaperclipIcon, UsersIcon, ClockIcon, PlayIcon, PauseIcon, StopIcon, SettingsIcon, Trash2Icon, FileIcon, SparkleIcon, MailIcon } from './chunk-
|
|
1
|
+
import { slot, badgeAnatomy, stateAttributes, useDsMessages, deprecate, paginationAnatomy, Select, microInteractions, useFieldsetContext, useFieldControl, useControllableState, useFormReset2, useMergedRefs, switchAnatomy, CONTROL_LABEL_TEXT, tableAnatomy, Pressable, FormBridge, CONTROL_SIZE_CLASSES, FileUpload, FileChip, Button, Tooltip, TooltipTrigger, TooltipContent, Avatar, Input, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuLabel, dataTableAnatomy, Checkbox, DocumentDetailPanel, DocumentDetailHeader, DocumentDetailTitle, DocumentDetailRequester, DocumentDetailMetaRow, DocumentDetailActions, DropdownMenuItem, DocumentList, DocumentRow, DocumentListSection, Textarea, DropdownMenuCheckboxItem, Popover, PopoverTrigger, PopoverContent, PopoverClose, DropdownMenuShortcut, useId as useId$1 } from './chunk-VK6SW34V.js';
|
|
2
|
+
import { cn, ShieldIcon, UploadIcon, SendIcon, ChevronLeftIcon, MoreHorizontalIcon, ChevronRightIcon, ChevronUpIcon, ChevronDownIcon, ChevronsUpDownIcon, LockIcon, TrashIcon, HelpCircleIcon, ArrowRightIcon, CheckIcon, EyeIcon, FileTextIcon, CloseIcon, SparklesIcon, PlusIcon, SearchIcon, AlertTriangleIcon, FolderClosedIcon, CalendarIcon, PencilIcon, LockOpenIcon, FlagIcon, CheckCircleSolidIcon, DownloadIcon, XCircleSolidIcon, MessageCircleIcon, BellIcon, PaperclipIcon, UsersIcon, ClockIcon, PlayIcon, PauseIcon, StopIcon, SettingsIcon, Trash2Icon, FileIcon, SparkleIcon, MailIcon } from './chunk-TBDTXAFH.js';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
|
-
import * as
|
|
4
|
+
import * as React2 from 'react';
|
|
5
5
|
import { forwardRef, useMemo, createContext, useRef, useContext, useState, useCallback, useEffect, useId } from 'react';
|
|
6
6
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
8
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
9
9
|
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
10
|
-
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
11
10
|
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
11
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
12
12
|
|
|
13
13
|
var LEGACY_PAIRS = {
|
|
14
14
|
default: { variant: "solid", intent: "brand" },
|
|
@@ -84,7 +84,7 @@ function badgeVariants({
|
|
|
84
84
|
} = {}) {
|
|
85
85
|
const pair = resolveBadgeAppearance({ variant, intent });
|
|
86
86
|
return clsx(
|
|
87
|
-
"ds:inline-flex ds:items-center ds:gap-1 ds:tabular-nums",
|
|
87
|
+
"ds:inline-flex ds:items-center ds:gap-1 ds:whitespace-nowrap ds:tabular-nums",
|
|
88
88
|
SHAPE[shape ?? "legacy"],
|
|
89
89
|
"ds:border ds:font-medium",
|
|
90
90
|
APPEARANCE[pair.variant][pair.intent],
|
|
@@ -116,7 +116,7 @@ var Badge = forwardRef(function Badge2({ variant, intent, size, shape, dot, icon
|
|
|
116
116
|
"span",
|
|
117
117
|
{
|
|
118
118
|
...slot(badgeAnatomy, "icon"),
|
|
119
|
-
className: "ds:inline-flex ds:size-3.5 ds:shrink-0",
|
|
119
|
+
className: "ds:inline-flex ds:size-3.5 ds:shrink-0 ds:items-center ds:justify-center ds:[&>svg]:max-h-full ds:[&>svg]:max-w-full",
|
|
120
120
|
"aria-hidden": "true",
|
|
121
121
|
children: icon
|
|
122
122
|
}
|
|
@@ -172,7 +172,14 @@ var categoryTagVariants = cva(
|
|
|
172
172
|
);
|
|
173
173
|
var CategoryTag = forwardRef(function CategoryTag2({ label, icon, tone, className, ...props }, ref) {
|
|
174
174
|
return /* @__PURE__ */ jsxs("span", { ref, className: cn(categoryTagVariants({ tone }), className), ...props, children: [
|
|
175
|
-
icon && /* @__PURE__ */ jsx(
|
|
175
|
+
icon && /* @__PURE__ */ jsx(
|
|
176
|
+
"span",
|
|
177
|
+
{
|
|
178
|
+
className: "ds:inline-flex ds:size-3.5 ds:shrink-0 ds:items-center ds:justify-center ds:[&>svg]:max-h-full ds:[&>svg]:max-w-full",
|
|
179
|
+
"aria-hidden": "true",
|
|
180
|
+
children: icon
|
|
181
|
+
}
|
|
182
|
+
),
|
|
176
183
|
label
|
|
177
184
|
] });
|
|
178
185
|
});
|
|
@@ -250,6 +257,49 @@ var DocumentsWorkspaceLayout = forwardRef(function DocumentsWorkspaceLayout2({ c
|
|
|
250
257
|
);
|
|
251
258
|
});
|
|
252
259
|
DocumentsWorkspaceLayout.displayName = "DocumentsWorkspaceLayout";
|
|
260
|
+
var SKELETON_SURFACE = cn(
|
|
261
|
+
"skeleton ds:bg-skeleton ds:relative ds:overflow-hidden",
|
|
262
|
+
"ds:after:absolute ds:after:inset-0 ds:after:-translate-x-full",
|
|
263
|
+
"ds:after:bg-[linear-gradient(90deg,transparent,var(--color-skeleton-sheen),transparent)]",
|
|
264
|
+
"ds:motion-safe:after:animate-skeleton-shimmer"
|
|
265
|
+
);
|
|
266
|
+
var Skeleton = forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
267
|
+
return /* @__PURE__ */ jsx(
|
|
268
|
+
"div",
|
|
269
|
+
{
|
|
270
|
+
ref,
|
|
271
|
+
className: cn(SKELETON_SURFACE, "ds:rounded-icon", className),
|
|
272
|
+
"aria-hidden": "true",
|
|
273
|
+
...props
|
|
274
|
+
}
|
|
275
|
+
);
|
|
276
|
+
});
|
|
277
|
+
Skeleton.displayName = "Skeleton";
|
|
278
|
+
var SkeletonText = forwardRef(function SkeletonText2({ lines = 3, className, ...props }, ref) {
|
|
279
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("ds:space-y-2", className), "aria-hidden": "true", ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
280
|
+
"div",
|
|
281
|
+
{
|
|
282
|
+
className: cn(SKELETON_SURFACE, "ds:rounded-icon ds:h-4", i === lines - 1 && "ds:w-3/4")
|
|
283
|
+
},
|
|
284
|
+
i
|
|
285
|
+
)) });
|
|
286
|
+
});
|
|
287
|
+
SkeletonText.displayName = "SkeletonText";
|
|
288
|
+
var SkeletonCircle = forwardRef(
|
|
289
|
+
function SkeletonCircle2({ size = 40, className, ...props }, ref) {
|
|
290
|
+
return /* @__PURE__ */ jsx(
|
|
291
|
+
"div",
|
|
292
|
+
{
|
|
293
|
+
ref,
|
|
294
|
+
className: cn(SKELETON_SURFACE, "ds:rounded-full", className),
|
|
295
|
+
style: { width: size, height: size },
|
|
296
|
+
"aria-hidden": "true",
|
|
297
|
+
...props
|
|
298
|
+
}
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
);
|
|
302
|
+
SkeletonCircle.displayName = "SkeletonCircle";
|
|
253
303
|
function getPageNumbers(current, total, siblings) {
|
|
254
304
|
const range = (start, end) => Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
255
305
|
const totalSlots = siblings * 2 + 5;
|
|
@@ -271,7 +321,8 @@ function getPageNumbers(current, total, siblings) {
|
|
|
271
321
|
var NAV_BUTTON = cn(
|
|
272
322
|
"ds:inline-flex ds:size-7 ds:items-center ds:justify-center ds:rounded-btn ds:text-fg-3",
|
|
273
323
|
"ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:motion-reduce:transition-none",
|
|
274
|
-
|
|
324
|
+
// Pressed takes the control press wash (Polish 2 §3.7, as ghost buttons do).
|
|
325
|
+
"ds:hover:bg-surface-hover ds:hover:text-fg ds:active:bg-control-active-bg",
|
|
275
326
|
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
276
327
|
"ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:text-fg-disabled"
|
|
277
328
|
);
|
|
@@ -338,7 +389,7 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
338
389
|
ref,
|
|
339
390
|
"aria-label": messages.region(currentPage, totalPages),
|
|
340
391
|
...slot(paginationAnatomy, "root"),
|
|
341
|
-
className: cn("ds:flex ds:items-center ds:justify-between ds:gap-4", className),
|
|
392
|
+
className: cn("ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-x-4 ds:gap-y-2", className),
|
|
342
393
|
...props,
|
|
343
394
|
children: [
|
|
344
395
|
/* @__PURE__ */ jsx(
|
|
@@ -370,7 +421,7 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
370
421
|
]
|
|
371
422
|
}
|
|
372
423
|
),
|
|
373
|
-
/* @__PURE__ */ jsxs("div", { ...slot(paginationAnatomy, "pages"), className: "ds:flex ds:items-center ds:gap-0.5", children: [
|
|
424
|
+
/* @__PURE__ */ jsxs("div", { ...slot(paginationAnatomy, "pages"), className: "ds:flex ds:items-center ds:gap-0.5 ds:max-sm:ml-auto", children: [
|
|
374
425
|
/* @__PURE__ */ jsx(
|
|
375
426
|
"button",
|
|
376
427
|
{
|
|
@@ -404,7 +455,7 @@ var Pagination = forwardRef(function Pagination2({
|
|
|
404
455
|
...stateAttributes({ selected: page === currentPage }),
|
|
405
456
|
className: cn(
|
|
406
457
|
PAGE_BUTTON_BASE,
|
|
407
|
-
page === currentPage ? "ds:bg-accent-tint ds:text-accent-2 ds:border ds:border-[color:var(--color-accent-tint)]" : "ds:text-fg-3 ds:hover:bg-surface-hover ds:hover:text-fg"
|
|
458
|
+
page === currentPage ? "ds:bg-accent-tint ds:text-accent-2 ds:border ds:border-[color:var(--color-accent-tint)]" : "ds:text-fg-3 ds:hover:bg-surface-hover ds:hover:text-fg ds:active:bg-control-active-bg"
|
|
408
459
|
),
|
|
409
460
|
children: page
|
|
410
461
|
},
|
|
@@ -855,19 +906,6 @@ var StatusPill = forwardRef(function StatusPill2({ status, dot = true, children,
|
|
|
855
906
|
return /* @__PURE__ */ jsx(Badge, { ref, variant, dot, ...props, children: children ?? label });
|
|
856
907
|
});
|
|
857
908
|
StatusPill.displayName = "StatusPill";
|
|
858
|
-
function useFormReset(elementRef, onReset, form) {
|
|
859
|
-
const latest = useRef(onReset);
|
|
860
|
-
latest.current = onReset;
|
|
861
|
-
useEffect(() => {
|
|
862
|
-
const element = elementRef.current;
|
|
863
|
-
if (!element) return;
|
|
864
|
-
const owner = form ? element.ownerDocument.getElementById(form) : element.closest("form");
|
|
865
|
-
if (!owner) return;
|
|
866
|
-
const handle = () => latest.current?.();
|
|
867
|
-
owner.addEventListener("reset", handle);
|
|
868
|
-
return () => owner.removeEventListener("reset", handle);
|
|
869
|
-
}, [elementRef, form]);
|
|
870
|
-
}
|
|
871
909
|
var switchVariants = cva(
|
|
872
910
|
[
|
|
873
911
|
"ds:peer ds:inline-flex ds:shrink-0 ds:cursor-pointer ds:items-center ds:rounded-full ds:border ds:border-transparent",
|
|
@@ -910,7 +948,7 @@ var switchThumbVariants = cva(
|
|
|
910
948
|
}
|
|
911
949
|
}
|
|
912
950
|
);
|
|
913
|
-
var Switch =
|
|
951
|
+
var Switch = React2.forwardRef(
|
|
914
952
|
function Switch2({
|
|
915
953
|
label,
|
|
916
954
|
size,
|
|
@@ -944,9 +982,9 @@ var Switch = React4.forwardRef(
|
|
|
944
982
|
defaultProp: defaultChecked ?? false,
|
|
945
983
|
onChange: onCheckedChange
|
|
946
984
|
});
|
|
947
|
-
const initialChecked =
|
|
948
|
-
const rootRef =
|
|
949
|
-
|
|
985
|
+
const initialChecked = React2.useRef(checkedProp ?? defaultChecked ?? false);
|
|
986
|
+
const rootRef = React2.useRef(null);
|
|
987
|
+
useFormReset2(rootRef, () => setChecked(initialChecked.current), form);
|
|
950
988
|
const mergedRef = useMergedRefs(ref, rootRef);
|
|
951
989
|
const root = /* @__PURE__ */ jsx(
|
|
952
990
|
SwitchPrimitive.Root,
|
|
@@ -1273,138 +1311,14 @@ var TableCaption = forwardRef(
|
|
|
1273
1311
|
}
|
|
1274
1312
|
);
|
|
1275
1313
|
TableCaption.displayName = "TableCaption";
|
|
1276
|
-
var
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1314
|
+
var SELECTED_STATE_CLASSES = "ds:data-[state=on]:bg-brand-bg ds:data-[state=on]:text-brand ds:aria-checked:bg-brand-bg ds:aria-checked:text-brand ds:aria-pressed:bg-brand-bg ds:aria-pressed:text-brand";
|
|
1315
|
+
var SEGMENTED_ITEM_CLASSES = cn(
|
|
1316
|
+
"ds:rounded-control",
|
|
1317
|
+
"ds:not-aria-checked:not-aria-pressed:hover:bg-transparent ds:not-aria-checked:not-aria-pressed:hover:text-fg-2",
|
|
1318
|
+
"ds:data-[state=on]:bg-surface ds:data-[state=on]:text-fg ds:data-[state=on]:shadow-quiet",
|
|
1319
|
+
"ds:aria-checked:bg-surface ds:aria-checked:text-fg ds:aria-checked:shadow-quiet ds:aria-checked:hover:bg-surface ds:aria-checked:hover:text-fg",
|
|
1320
|
+
"ds:aria-pressed:bg-surface ds:aria-pressed:text-fg ds:aria-pressed:shadow-quiet ds:aria-pressed:hover:bg-surface ds:aria-pressed:hover:text-fg"
|
|
1280
1321
|
);
|
|
1281
|
-
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
1282
|
-
var TabsList = React4.forwardRef(function TabsList2({ className, ...props }, ref) {
|
|
1283
|
-
return /* @__PURE__ */ jsx(
|
|
1284
|
-
TabsPrimitive.List,
|
|
1285
|
-
{
|
|
1286
|
-
ref,
|
|
1287
|
-
className: cn("ds:border-rule ds:flex ds:items-center ds:gap-0 ds:border-b", className),
|
|
1288
|
-
...props
|
|
1289
|
-
}
|
|
1290
|
-
);
|
|
1291
|
-
});
|
|
1292
|
-
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
1293
|
-
var triggerVariants = cva(
|
|
1294
|
-
cn(
|
|
1295
|
-
"ds:inline-flex ds:items-center ds:justify-center ds:gap-2 ds:text-(length:--control-font-size-md) ds:font-medium",
|
|
1296
|
-
"ds:text-fg-3",
|
|
1297
|
-
microInteractions.selection,
|
|
1298
|
-
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
1299
|
-
"ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:text-fg-disabled",
|
|
1300
|
-
"ds:hover:text-fg"
|
|
1301
|
-
),
|
|
1302
|
-
{
|
|
1303
|
-
variants: {
|
|
1304
|
-
variant: {
|
|
1305
|
-
// §5.16: tab current = 2px accent underline + bold foreground text.
|
|
1306
|
-
// The cyan rule carries the brand statement (tabs are interaction,
|
|
1307
|
-
// so cyan; Pro purple is reserved for selection state on
|
|
1308
|
-
// list/dropdown surfaces). The active LABEL stays in `text-fg` for
|
|
1309
|
-
// legibility — accent on text was too low-contrast against the page
|
|
1310
|
-
// background, especially in dark mode.
|
|
1311
|
-
underline: cn(
|
|
1312
|
-
"ds:rounded-none ds:bg-transparent ds:px-3.5 ds:py-2.5",
|
|
1313
|
-
"ds:border-b-2 ds:border-transparent ds:-mb-px",
|
|
1314
|
-
"ds:data-[state=active]:border-accent ds:data-[state=active]:text-fg ds:data-[state=active]:font-semibold"
|
|
1315
|
-
),
|
|
1316
|
-
pill: cn(
|
|
1317
|
-
"ds:rounded-pill ds:px-3 ds:py-1.5",
|
|
1318
|
-
"ds:data-[state=active]:bg-brand-bg ds:data-[state=active]:text-brand"
|
|
1319
|
-
)
|
|
1320
|
-
}
|
|
1321
|
-
},
|
|
1322
|
-
defaultVariants: {
|
|
1323
|
-
variant: "underline"
|
|
1324
|
-
}
|
|
1325
|
-
}
|
|
1326
|
-
);
|
|
1327
|
-
var TabsTrigger = React4.forwardRef(function TabsTrigger2({ className, variant, ...props }, ref) {
|
|
1328
|
-
return /* @__PURE__ */ jsx(
|
|
1329
|
-
TabsPrimitive.Trigger,
|
|
1330
|
-
{
|
|
1331
|
-
ref,
|
|
1332
|
-
className: cn(triggerVariants({ variant }), className),
|
|
1333
|
-
...props
|
|
1334
|
-
}
|
|
1335
|
-
);
|
|
1336
|
-
});
|
|
1337
|
-
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
1338
|
-
var TabsContent = React4.forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
1339
|
-
return /* @__PURE__ */ jsx(
|
|
1340
|
-
TabsPrimitive.Content,
|
|
1341
|
-
{
|
|
1342
|
-
ref,
|
|
1343
|
-
className: cn(
|
|
1344
|
-
"ds:mt-3 ds:focus-visible:outline-none",
|
|
1345
|
-
"ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
1346
|
-
className
|
|
1347
|
-
),
|
|
1348
|
-
...props
|
|
1349
|
-
}
|
|
1350
|
-
);
|
|
1351
|
-
});
|
|
1352
|
-
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
1353
|
-
var UNASSIGNED_VALUE = "__unassigned__";
|
|
1354
|
-
function TeamMemberSelect({
|
|
1355
|
-
teamMembers,
|
|
1356
|
-
currentUserId,
|
|
1357
|
-
value,
|
|
1358
|
-
onValueChange,
|
|
1359
|
-
includeUnassigned = true,
|
|
1360
|
-
placeholder = "Select team member...",
|
|
1361
|
-
className,
|
|
1362
|
-
size
|
|
1363
|
-
}) {
|
|
1364
|
-
const options = React4.useMemo(() => {
|
|
1365
|
-
const meBadge = /* @__PURE__ */ jsx(
|
|
1366
|
-
Badge,
|
|
1367
|
-
{
|
|
1368
|
-
variant: "secondary",
|
|
1369
|
-
size: "sm",
|
|
1370
|
-
className: "ds:px-1.5 ds:py-0 ds:font-mono ds:text-[10px] ds:tracking-wider ds:uppercase",
|
|
1371
|
-
children: "Me"
|
|
1372
|
-
}
|
|
1373
|
-
);
|
|
1374
|
-
const sorted = [...teamMembers].sort((a, b) => {
|
|
1375
|
-
if (currentUserId) {
|
|
1376
|
-
if (a.id === currentUserId) return -1;
|
|
1377
|
-
if (b.id === currentUserId) return 1;
|
|
1378
|
-
}
|
|
1379
|
-
return a.fullName.localeCompare(b.fullName);
|
|
1380
|
-
});
|
|
1381
|
-
const memberOptions = sorted.map((m) => ({
|
|
1382
|
-
value: m.id,
|
|
1383
|
-
label: m.fullName,
|
|
1384
|
-
labelSuffix: m.id === currentUserId ? meBadge : void 0
|
|
1385
|
-
}));
|
|
1386
|
-
if (includeUnassigned) {
|
|
1387
|
-
return [{ value: UNASSIGNED_VALUE, label: "Unassigned" }, ...memberOptions];
|
|
1388
|
-
}
|
|
1389
|
-
return memberOptions;
|
|
1390
|
-
}, [teamMembers, currentUserId, includeUnassigned]);
|
|
1391
|
-
const innerValue = value === "" ? UNASSIGNED_VALUE : value;
|
|
1392
|
-
const handleChange = (next) => {
|
|
1393
|
-
onValueChange(next === UNASSIGNED_VALUE ? "" : next);
|
|
1394
|
-
};
|
|
1395
|
-
return /* @__PURE__ */ jsx(
|
|
1396
|
-
Select,
|
|
1397
|
-
{
|
|
1398
|
-
options,
|
|
1399
|
-
value: innerValue,
|
|
1400
|
-
onValueChange: handleChange,
|
|
1401
|
-
placeholder,
|
|
1402
|
-
className,
|
|
1403
|
-
size
|
|
1404
|
-
}
|
|
1405
|
-
);
|
|
1406
|
-
}
|
|
1407
|
-
TeamMemberSelect.displayName = "TeamMemberSelect";
|
|
1408
1322
|
var itemVariants = cva(
|
|
1409
1323
|
cn(
|
|
1410
1324
|
"ds:inline-flex ds:items-center ds:justify-center ds:rounded-pill ds:px-3 ds:py-1.5 ds:text-(length:--control-font-size-md) ds:font-medium",
|
|
@@ -1413,13 +1327,14 @@ var itemVariants = cva(
|
|
|
1413
1327
|
"ds:hover:bg-surface-hover ds:hover:text-fg",
|
|
1414
1328
|
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
1415
1329
|
"ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:bg-bg-disabled ds:disabled:text-fg-disabled",
|
|
1416
|
-
|
|
1330
|
+
SELECTED_STATE_CLASSES
|
|
1417
1331
|
),
|
|
1418
1332
|
{
|
|
1419
1333
|
variants: {
|
|
1420
1334
|
variant: {
|
|
1421
1335
|
default: "",
|
|
1422
|
-
outline: "ds:border ds:border-rule-strong ds:bg-surface"
|
|
1336
|
+
outline: "ds:border ds:border-rule-strong ds:bg-surface",
|
|
1337
|
+
segmented: SEGMENTED_ITEM_CLASSES
|
|
1423
1338
|
}
|
|
1424
1339
|
},
|
|
1425
1340
|
defaultVariants: {
|
|
@@ -1435,13 +1350,14 @@ var sizedItemVariants = cva(
|
|
|
1435
1350
|
"ds:hover:bg-surface-hover ds:hover:text-fg",
|
|
1436
1351
|
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
1437
1352
|
"ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:bg-bg-disabled ds:disabled:text-fg-disabled",
|
|
1438
|
-
|
|
1353
|
+
SELECTED_STATE_CLASSES
|
|
1439
1354
|
),
|
|
1440
1355
|
{
|
|
1441
1356
|
variants: {
|
|
1442
1357
|
variant: {
|
|
1443
1358
|
default: "",
|
|
1444
|
-
outline: "ds:border ds:border-rule-strong ds:bg-surface"
|
|
1359
|
+
outline: "ds:border ds:border-rule-strong ds:bg-surface",
|
|
1360
|
+
segmented: SEGMENTED_ITEM_CLASSES
|
|
1445
1361
|
}
|
|
1446
1362
|
},
|
|
1447
1363
|
defaultVariants: {
|
|
@@ -1449,11 +1365,11 @@ var sizedItemVariants = cva(
|
|
|
1449
1365
|
}
|
|
1450
1366
|
}
|
|
1451
1367
|
);
|
|
1452
|
-
var ToggleGroupContext =
|
|
1368
|
+
var ToggleGroupContext = React2.createContext({
|
|
1453
1369
|
variant: "default",
|
|
1454
1370
|
size: void 0
|
|
1455
1371
|
});
|
|
1456
|
-
var ToggleGroup =
|
|
1372
|
+
var ToggleGroup = React2.forwardRef(function ToggleGroup2({
|
|
1457
1373
|
className,
|
|
1458
1374
|
variant,
|
|
1459
1375
|
size,
|
|
@@ -1495,11 +1411,11 @@ var ToggleGroup = React4.forwardRef(function ToggleGroup2({
|
|
|
1495
1411
|
defaultProp: defaultValue ?? emptyValue,
|
|
1496
1412
|
onChange: onValueChange
|
|
1497
1413
|
});
|
|
1498
|
-
const initialValue =
|
|
1499
|
-
const rootRef =
|
|
1414
|
+
const initialValue = React2.useRef(valueProp ?? defaultValue ?? emptyValue);
|
|
1415
|
+
const rootRef = React2.useRef(null);
|
|
1500
1416
|
const mergedRef = useMergedRefs(ref, rootRef);
|
|
1501
1417
|
const labelledBy = wiring["aria-labelledby"] ?? (fieldset?.legendMounted ? fieldset.legendId : void 0);
|
|
1502
|
-
const context =
|
|
1418
|
+
const context = React2.useMemo(() => ({ variant, size }), [variant, size]);
|
|
1503
1419
|
const radixProps = {
|
|
1504
1420
|
...props,
|
|
1505
1421
|
type,
|
|
@@ -1518,7 +1434,14 @@ var ToggleGroup = React4.forwardRef(function ToggleGroup2({
|
|
|
1518
1434
|
"aria-invalid": ariaInvalid ?? wiring["aria-invalid"],
|
|
1519
1435
|
"data-invalid": wiring["data-invalid"],
|
|
1520
1436
|
...size ? stateAttributes({ size }) : void 0,
|
|
1521
|
-
className: cn(
|
|
1437
|
+
className: cn(
|
|
1438
|
+
"ds:inline-flex ds:items-center ds:gap-1",
|
|
1439
|
+
// The `segmented` track: quiet surface-sunken well, hairline
|
|
1440
|
+
// rule-soft border, control radius, 2px inset padding for the
|
|
1441
|
+
// thumb to sit inside. Matches `TabsList`'s own `segmented` track.
|
|
1442
|
+
variant === "segmented" && "ds:bg-surface-2 ds:rounded-control ds:border-rule-soft ds:gap-0.5 ds:border ds:p-0.5",
|
|
1443
|
+
className
|
|
1444
|
+
),
|
|
1522
1445
|
...radixProps,
|
|
1523
1446
|
children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: context, children })
|
|
1524
1447
|
}
|
|
@@ -1539,8 +1462,8 @@ var ToggleGroup = React4.forwardRef(function ToggleGroup2({
|
|
|
1539
1462
|
] });
|
|
1540
1463
|
});
|
|
1541
1464
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
1542
|
-
var ToggleGroupItem =
|
|
1543
|
-
const ctx =
|
|
1465
|
+
var ToggleGroupItem = React2.forwardRef(function ToggleGroupItem2({ className, variant, ...props }, ref) {
|
|
1466
|
+
const ctx = React2.useContext(ToggleGroupContext);
|
|
1544
1467
|
const resolvedVariant = variant ?? ctx.variant;
|
|
1545
1468
|
return /* @__PURE__ */ jsx(
|
|
1546
1469
|
ToggleGroupPrimitive.Item,
|
|
@@ -1555,6 +1478,162 @@ var ToggleGroupItem = React4.forwardRef(function ToggleGroupItem2({ className, v
|
|
|
1555
1478
|
);
|
|
1556
1479
|
});
|
|
1557
1480
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
1481
|
+
var Tabs = React2.forwardRef(
|
|
1482
|
+
function Tabs2({ className, ...props }, ref) {
|
|
1483
|
+
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, className: cn(className), ...props });
|
|
1484
|
+
}
|
|
1485
|
+
);
|
|
1486
|
+
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
1487
|
+
var TabsList = React2.forwardRef(function TabsList2({ className, variant = "default", ...props }, ref) {
|
|
1488
|
+
return /* @__PURE__ */ jsx(
|
|
1489
|
+
TabsPrimitive.List,
|
|
1490
|
+
{
|
|
1491
|
+
ref,
|
|
1492
|
+
className: cn(
|
|
1493
|
+
"ds:flex ds:items-center",
|
|
1494
|
+
variant === "segmented" ? (
|
|
1495
|
+
// A track, not a row: hugs its segments (inline-flex + w-fit)
|
|
1496
|
+
// instead of stretching to the parent's width like the flush
|
|
1497
|
+
// underline row does. A consumer's own width class (passed via
|
|
1498
|
+
// `className`, after this in the merge) still wins.
|
|
1499
|
+
"ds:inline-flex ds:w-fit ds:rounded-control ds:border-rule-soft ds:bg-surface-2 ds:gap-0.5 ds:border ds:p-0.5"
|
|
1500
|
+
) : "ds:border-rule ds:gap-0 ds:border-b",
|
|
1501
|
+
className
|
|
1502
|
+
),
|
|
1503
|
+
...props
|
|
1504
|
+
}
|
|
1505
|
+
);
|
|
1506
|
+
});
|
|
1507
|
+
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
1508
|
+
var triggerVariants = cva(
|
|
1509
|
+
cn(
|
|
1510
|
+
"ds:inline-flex ds:items-center ds:justify-center ds:gap-2 ds:text-(length:--control-font-size-md) ds:font-medium",
|
|
1511
|
+
"ds:text-fg-3",
|
|
1512
|
+
microInteractions.selection,
|
|
1513
|
+
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
1514
|
+
"ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:text-fg-disabled",
|
|
1515
|
+
"ds:hover:text-fg"
|
|
1516
|
+
),
|
|
1517
|
+
{
|
|
1518
|
+
variants: {
|
|
1519
|
+
variant: {
|
|
1520
|
+
// §5.16: tab current = 2px accent underline + bold foreground text.
|
|
1521
|
+
// The cyan rule carries the brand statement (tabs are interaction,
|
|
1522
|
+
// so cyan; Pro purple is reserved for selection state on
|
|
1523
|
+
// list/dropdown surfaces). The active LABEL stays in `text-fg` for
|
|
1524
|
+
// legibility — accent on text was too low-contrast against the page
|
|
1525
|
+
// background, especially in dark mode.
|
|
1526
|
+
underline: cn(
|
|
1527
|
+
"ds:rounded-none ds:bg-transparent ds:px-3.5 ds:py-2.5",
|
|
1528
|
+
"ds:border-b-2 ds:border-transparent ds:-mb-px",
|
|
1529
|
+
"ds:data-[state=active]:border-accent ds:data-[state=active]:text-fg ds:data-[state=active]:font-semibold",
|
|
1530
|
+
"ds:aria-selected:border-accent ds:aria-selected:text-fg ds:aria-selected:font-semibold"
|
|
1531
|
+
),
|
|
1532
|
+
pill: cn(
|
|
1533
|
+
"ds:rounded-pill ds:px-3 ds:py-1.5",
|
|
1534
|
+
"ds:data-[state=active]:bg-brand-bg ds:data-[state=active]:text-brand",
|
|
1535
|
+
"ds:aria-selected:bg-brand-bg ds:aria-selected:text-brand"
|
|
1536
|
+
),
|
|
1537
|
+
// The `TabsList variant="segmented"` track's thumb: a raised
|
|
1538
|
+
// `surface` tile (quiet shadow, full-ink `fg`) over quiet fg-3
|
|
1539
|
+
// labels that lift to fg-2 on hover. The hover rule is scoped to
|
|
1540
|
+
// `not-aria-selected` so it never competes by stylesheet order with
|
|
1541
|
+
// the thumb's own (higher-specificity, compound) hover rule below.
|
|
1542
|
+
segmented: cn(
|
|
1543
|
+
"ds:rounded-control ds:px-3 ds:py-1.5",
|
|
1544
|
+
"ds:not-aria-selected:hover:text-fg-2",
|
|
1545
|
+
"ds:data-[state=active]:bg-surface ds:data-[state=active]:text-fg ds:data-[state=active]:shadow-quiet ds:data-[state=active]:font-semibold",
|
|
1546
|
+
"ds:aria-selected:bg-surface ds:aria-selected:text-fg ds:aria-selected:shadow-quiet ds:aria-selected:font-semibold",
|
|
1547
|
+
"ds:aria-selected:hover:bg-surface ds:aria-selected:hover:text-fg"
|
|
1548
|
+
)
|
|
1549
|
+
}
|
|
1550
|
+
},
|
|
1551
|
+
defaultVariants: {
|
|
1552
|
+
variant: "underline"
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
);
|
|
1556
|
+
var TabsTrigger = React2.forwardRef(function TabsTrigger2({ className, variant, ...props }, ref) {
|
|
1557
|
+
return /* @__PURE__ */ jsx(
|
|
1558
|
+
TabsPrimitive.Trigger,
|
|
1559
|
+
{
|
|
1560
|
+
ref,
|
|
1561
|
+
className: cn(triggerVariants({ variant }), className),
|
|
1562
|
+
...props
|
|
1563
|
+
}
|
|
1564
|
+
);
|
|
1565
|
+
});
|
|
1566
|
+
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
1567
|
+
var TabsContent = React2.forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
1568
|
+
return /* @__PURE__ */ jsx(
|
|
1569
|
+
TabsPrimitive.Content,
|
|
1570
|
+
{
|
|
1571
|
+
ref,
|
|
1572
|
+
className: cn(
|
|
1573
|
+
"ds:mt-3 ds:focus-visible:outline-none",
|
|
1574
|
+
"ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
1575
|
+
className
|
|
1576
|
+
),
|
|
1577
|
+
...props
|
|
1578
|
+
}
|
|
1579
|
+
);
|
|
1580
|
+
});
|
|
1581
|
+
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
1582
|
+
var UNASSIGNED_VALUE = "__unassigned__";
|
|
1583
|
+
function TeamMemberSelect({
|
|
1584
|
+
teamMembers,
|
|
1585
|
+
currentUserId,
|
|
1586
|
+
value,
|
|
1587
|
+
onValueChange,
|
|
1588
|
+
includeUnassigned = true,
|
|
1589
|
+
placeholder = "Select team member...",
|
|
1590
|
+
className,
|
|
1591
|
+
size
|
|
1592
|
+
}) {
|
|
1593
|
+
const options = React2.useMemo(() => {
|
|
1594
|
+
const meBadge = /* @__PURE__ */ jsx(
|
|
1595
|
+
Badge,
|
|
1596
|
+
{
|
|
1597
|
+
variant: "secondary",
|
|
1598
|
+
size: "sm",
|
|
1599
|
+
className: "ds:px-1.5 ds:py-0 ds:font-mono ds:text-[10px] ds:tracking-wider ds:uppercase",
|
|
1600
|
+
children: "Me"
|
|
1601
|
+
}
|
|
1602
|
+
);
|
|
1603
|
+
const sorted = [...teamMembers].sort((a, b) => {
|
|
1604
|
+
if (currentUserId) {
|
|
1605
|
+
if (a.id === currentUserId) return -1;
|
|
1606
|
+
if (b.id === currentUserId) return 1;
|
|
1607
|
+
}
|
|
1608
|
+
return a.fullName.localeCompare(b.fullName);
|
|
1609
|
+
});
|
|
1610
|
+
const memberOptions = sorted.map((m) => ({
|
|
1611
|
+
value: m.id,
|
|
1612
|
+
label: m.fullName,
|
|
1613
|
+
labelSuffix: m.id === currentUserId ? meBadge : void 0
|
|
1614
|
+
}));
|
|
1615
|
+
if (includeUnassigned) {
|
|
1616
|
+
return [{ value: UNASSIGNED_VALUE, label: "Unassigned" }, ...memberOptions];
|
|
1617
|
+
}
|
|
1618
|
+
return memberOptions;
|
|
1619
|
+
}, [teamMembers, currentUserId, includeUnassigned]);
|
|
1620
|
+
const innerValue = value === "" ? UNASSIGNED_VALUE : value;
|
|
1621
|
+
const handleChange = (next) => {
|
|
1622
|
+
onValueChange(next === UNASSIGNED_VALUE ? "" : next);
|
|
1623
|
+
};
|
|
1624
|
+
return /* @__PURE__ */ jsx(
|
|
1625
|
+
Select,
|
|
1626
|
+
{
|
|
1627
|
+
options,
|
|
1628
|
+
value: innerValue,
|
|
1629
|
+
onValueChange: handleChange,
|
|
1630
|
+
placeholder,
|
|
1631
|
+
className,
|
|
1632
|
+
size
|
|
1633
|
+
}
|
|
1634
|
+
);
|
|
1635
|
+
}
|
|
1636
|
+
TeamMemberSelect.displayName = "TeamMemberSelect";
|
|
1558
1637
|
var TONE_DOT = {
|
|
1559
1638
|
brand: "ds:bg-brand",
|
|
1560
1639
|
info: "ds:bg-accent-2",
|
|
@@ -1582,7 +1661,7 @@ function ChannelTabs({ tabs, value, onChange, className, ...props }) {
|
|
|
1582
1661
|
"aria-selected": active,
|
|
1583
1662
|
onClick: () => onChange(tab.value),
|
|
1584
1663
|
className: cn(
|
|
1585
|
-
"ds:flex ds:items-center ds:gap-2 ds:rounded-md ds:border ds:px-3 ds:py-1.5 ds:text-sm ds:font-medium ds:transition-colors ds:motion-reduce:transition-none",
|
|
1664
|
+
"ds:flex ds:items-center ds:gap-2 ds:rounded-md ds:border ds:px-3 ds:py-1.5 ds:text-sm ds:font-medium ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
1586
1665
|
"ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:focus-visible:outline-none",
|
|
1587
1666
|
active ? "ds:border-brand ds:bg-brand/5 ds:text-brand" : "ds:border-transparent ds:text-fg-3 ds:hover:text-fg"
|
|
1588
1667
|
),
|
|
@@ -2522,7 +2601,7 @@ var DashGrid = forwardRef(function DashGrid2({ widgets, storageKey, onReorder, c
|
|
|
2522
2601
|
setDragId(null);
|
|
2523
2602
|
setOverId(null);
|
|
2524
2603
|
},
|
|
2525
|
-
className: "ds:absolute ds:top-3 ds:right-3 ds:z-[var(--z-base)] ds:flex ds:cursor-grab ds:touch-none ds:items-center ds:justify-center ds:rounded-[var(--radius-icon)] ds:p-1 ds:text-fg-4 ds:opacity-0 ds:transition-opacity ds:duration-[var(--duration-fast)] ds:hover:bg-surface-hover ds:hover:text-fg-2 ds:focus-visible:opacity-100 ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:active:cursor-grabbing ds:group-hover/dash:opacity-100 ds:motion-reduce:transition-none",
|
|
2604
|
+
className: "ds:absolute ds:top-3 ds:right-3 ds:z-[var(--z-base)] ds:flex ds:cursor-grab ds:touch-none ds:items-center ds:justify-center ds:rounded-[var(--radius-icon)] ds:p-1 ds:text-fg-4 ds:opacity-0 ds:transition-[opacity,background-color,color] ds:duration-[var(--duration-fast)] ds:ease-[var(--motion-ease-enter)] ds:hover:bg-surface-hover ds:hover:text-fg-2 ds:focus-visible:opacity-100 ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:active:cursor-grabbing ds:group-hover/dash:opacity-100 ds:motion-reduce:transition-none",
|
|
2526
2605
|
children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "ds:grid ds:grid-cols-2 ds:gap-[3px]", children: Array.from({ length: 6 }, (_, i) => /* @__PURE__ */ jsx("span", { className: "ds:size-[3px] ds:rounded-full ds:bg-current" }, i)) })
|
|
2527
2606
|
}
|
|
2528
2607
|
),
|
|
@@ -2724,13 +2803,17 @@ var ClientRailItem = forwardRef(
|
|
|
2724
2803
|
// Layout
|
|
2725
2804
|
"ds:relative ds:flex ds:w-full ds:items-center ds:gap-[11px] ds:border-b ds:border-rule ds:px-[14px] ds:py-[11px] ds:text-left",
|
|
2726
2805
|
// Motion
|
|
2727
|
-
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
2806
|
+
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
2728
2807
|
// Cursor
|
|
2729
2808
|
"ds:cursor-pointer",
|
|
2809
|
+
// Focus — an inset outline: rows stack edge to edge in the rail, so an
|
|
2810
|
+
// outer ring would be clipped by the neighbours (same as TableRow).
|
|
2811
|
+
"ds:focus-visible:outline-2 ds:focus-visible:-outline-offset-2 ds:focus-visible:outline-[var(--focus-ring-border)]",
|
|
2730
2812
|
// State — hover only when not active to avoid override
|
|
2731
2813
|
active ? "ds:bg-brand-bg" : "ds:hover:bg-surface-2",
|
|
2732
2814
|
className
|
|
2733
2815
|
),
|
|
2816
|
+
"aria-current": active ? "true" : void 0,
|
|
2734
2817
|
...props,
|
|
2735
2818
|
children: [
|
|
2736
2819
|
active && /* @__PURE__ */ jsx(
|
|
@@ -2818,7 +2901,7 @@ function MetaText({
|
|
|
2818
2901
|
if (presentValues.length === 0) {
|
|
2819
2902
|
return null;
|
|
2820
2903
|
}
|
|
2821
|
-
return /* @__PURE__ */ jsx("div", { className, children: presentValues.map((value, index) => /* @__PURE__ */ jsxs(
|
|
2904
|
+
return /* @__PURE__ */ jsx("div", { className, children: presentValues.map((value, index) => /* @__PURE__ */ jsxs(React2.Fragment, { children: [
|
|
2822
2905
|
index > 0 && /* @__PURE__ */ jsx(
|
|
2823
2906
|
"span",
|
|
2824
2907
|
{
|
|
@@ -2858,7 +2941,7 @@ function CheckboxSlot({
|
|
|
2858
2941
|
{
|
|
2859
2942
|
className: cn(
|
|
2860
2943
|
"ds:shrink-0 ds:transition-opacity ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
2861
|
-
selected ? "ds:opacity-100" : "ds:opacity-0 ds:group-hover:opacity-100",
|
|
2944
|
+
selected ? "ds:opacity-100" : "ds:opacity-0 ds:group-hover:opacity-100 ds:focus-within:opacity-100",
|
|
2862
2945
|
className
|
|
2863
2946
|
),
|
|
2864
2947
|
onClick: (event) => event.stopPropagation(),
|
|
@@ -2886,7 +2969,14 @@ function MoreActions({ menu }) {
|
|
|
2886
2969
|
className: cn(
|
|
2887
2970
|
"ds:grid ds:size-[30px] ds:place-items-center ds:rounded-[8px] ds:text-fg-4",
|
|
2888
2971
|
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
2889
|
-
"ds:group-hover:text-fg-2 ds:hover:bg-surface ds:hover:text-brand ds:hover:shadow-flat"
|
|
2972
|
+
"ds:group-hover:text-fg-2 ds:hover:bg-surface ds:hover:text-brand ds:hover:shadow-flat",
|
|
2973
|
+
// `aria-expanded` twin of the `data-state` selector below: a
|
|
2974
|
+
// TooltipTrigger asChild ancestor can clobber this button's own
|
|
2975
|
+
// `data-state` with the tooltip's (see toggle-group.tsx's note
|
|
2976
|
+
// on the same bug), but never sets `aria-expanded`.
|
|
2977
|
+
"ds:data-[state=open]:bg-surface ds:data-[state=open]:text-brand ds:data-[state=open]:shadow-flat",
|
|
2978
|
+
"ds:aria-expanded:bg-surface ds:aria-expanded:text-brand ds:aria-expanded:shadow-flat",
|
|
2979
|
+
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]"
|
|
2890
2980
|
),
|
|
2891
2981
|
"aria-label": "More actions",
|
|
2892
2982
|
onClick: (event) => event.stopPropagation(),
|
|
@@ -2896,7 +2986,7 @@ function MoreActions({ menu }) {
|
|
|
2896
2986
|
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", onClick: (event) => event.stopPropagation(), children: menu })
|
|
2897
2987
|
] });
|
|
2898
2988
|
}
|
|
2899
|
-
var DocumentFileRow =
|
|
2989
|
+
var DocumentFileRow = React2.forwardRef(
|
|
2900
2990
|
function DocumentFileRow2({
|
|
2901
2991
|
name,
|
|
2902
2992
|
fileType,
|
|
@@ -2963,7 +3053,7 @@ var DocumentFileRow = React4.forwardRef(
|
|
|
2963
3053
|
}
|
|
2964
3054
|
);
|
|
2965
3055
|
DocumentFileRow.displayName = "DocumentFileRow";
|
|
2966
|
-
var DocumentFileCard =
|
|
3056
|
+
var DocumentFileCard = React2.forwardRef(
|
|
2967
3057
|
function DocumentFileCard2({
|
|
2968
3058
|
name,
|
|
2969
3059
|
fileType,
|
|
@@ -3039,7 +3129,7 @@ var lineCaptionToneClass = {
|
|
|
3039
3129
|
warning: "ds:text-warning-fg",
|
|
3040
3130
|
danger: "ds:text-danger-fg"
|
|
3041
3131
|
};
|
|
3042
|
-
var DocumentFileLine =
|
|
3132
|
+
var DocumentFileLine = React2.forwardRef(
|
|
3043
3133
|
function DocumentFileLine2({
|
|
3044
3134
|
name,
|
|
3045
3135
|
fileType = "",
|
|
@@ -3167,7 +3257,7 @@ function ChecklistItemRow({ item }) {
|
|
|
3167
3257
|
"div",
|
|
3168
3258
|
{
|
|
3169
3259
|
className: cn(
|
|
3170
|
-
"ds:rounded-xl ds:border ds:px-3.5 ds:py-2.5 ds:shadow-quiet ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
3260
|
+
"ds:rounded-xl ds:border ds:px-3.5 ds:py-2.5 ds:shadow-quiet ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
3171
3261
|
done ? "ds:border-success-line/70 ds:bg-success-bg/30" : item.status === "in-review" ? "ds:border-warning-line/70 ds:bg-warning-bg/25" : "ds:border-rule ds:bg-surface"
|
|
3172
3262
|
),
|
|
3173
3263
|
children: [
|
|
@@ -3213,7 +3303,7 @@ function FileGroup({ files }) {
|
|
|
3213
3303
|
file.id
|
|
3214
3304
|
)) });
|
|
3215
3305
|
}
|
|
3216
|
-
var DocumentChecklist =
|
|
3306
|
+
var DocumentChecklist = React2.forwardRef(
|
|
3217
3307
|
function DocumentChecklist2({
|
|
3218
3308
|
items,
|
|
3219
3309
|
title = "Your documents",
|
|
@@ -3319,7 +3409,7 @@ var DocumentRequestField = forwardRef(
|
|
|
3319
3409
|
className: cn(
|
|
3320
3410
|
"ds:ml-auto ds:size-[26px] ds:rounded-[7px] ds:grid ds:place-items-center",
|
|
3321
3411
|
"ds:text-fg-4",
|
|
3322
|
-
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
3412
|
+
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
3323
3413
|
"ds:hover:bg-danger-bg ds:hover:text-danger-fg",
|
|
3324
3414
|
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]"
|
|
3325
3415
|
),
|
|
@@ -3480,9 +3570,10 @@ var DataTable = forwardRef(function DataTable2({ withToolbar, className, childre
|
|
|
3480
3570
|
className: cn(
|
|
3481
3571
|
// Outer frame on the whole component: a single visible border +
|
|
3482
3572
|
// quiet shadow wrapping the toolbar (if any) and the table as one
|
|
3483
|
-
// card. overflow
|
|
3484
|
-
// rounded corners
|
|
3485
|
-
|
|
3573
|
+
// card. The overflow clips the header/cell backgrounds to the
|
|
3574
|
+
// rounded corners; a table wider than the card scrolls sideways
|
|
3575
|
+
// inside it instead of being cut off (the toolbar stays put).
|
|
3576
|
+
"ds:w-full ds:overflow-x-auto ds:overflow-y-hidden ds:rounded-card ds:border ds:border-rule-strong ds:bg-surface ds:shadow-quiet",
|
|
3486
3577
|
"ds:[&_table]:bg-surface ds:[&_table]:w-full ds:[&_table]:border-collapse",
|
|
3487
3578
|
className
|
|
3488
3579
|
),
|
|
@@ -3500,8 +3591,10 @@ var DataTableToolbar = forwardRef(
|
|
|
3500
3591
|
ref,
|
|
3501
3592
|
...slot(dataTableAnatomy, "toolbar"),
|
|
3502
3593
|
className: cn(
|
|
3503
|
-
"ds:flex ds:items-center ds:gap-2 ds:px-3 ds:py-2.5",
|
|
3594
|
+
"ds:flex ds:flex-wrap ds:items-center ds:gap-2 ds:px-3 ds:py-2.5",
|
|
3504
3595
|
"ds:border-rule ds:bg-surface ds:border-b",
|
|
3596
|
+
// Pinned to the card's left edge while a wide table scrolls.
|
|
3597
|
+
"ds:sticky ds:left-0",
|
|
3505
3598
|
className
|
|
3506
3599
|
),
|
|
3507
3600
|
...props
|
|
@@ -3522,7 +3615,8 @@ var DataTableSearch = forwardRef(
|
|
|
3522
3615
|
inputSize: "sm",
|
|
3523
3616
|
placeholder,
|
|
3524
3617
|
prefixIcon: /* @__PURE__ */ jsx(SearchIcon, { "aria-hidden": "true" }),
|
|
3525
|
-
|
|
3618
|
+
rootClassName: "ds:w-auto ds:min-w-0 ds:max-w-full ds:shrink",
|
|
3619
|
+
className: cn("ds:w-[280px] ds:max-w-full", className),
|
|
3526
3620
|
...props
|
|
3527
3621
|
}
|
|
3528
3622
|
);
|
|
@@ -3689,7 +3783,10 @@ var DataTableCellId = forwardRef(
|
|
|
3689
3783
|
ref,
|
|
3690
3784
|
...slot(dataTableAnatomy, "cell"),
|
|
3691
3785
|
...stateAttributes({ variant: "id" }),
|
|
3692
|
-
className: cn(
|
|
3786
|
+
className: cn(
|
|
3787
|
+
"ds:font-sans ds:text-fg-4 ds:text-xs ds:whitespace-nowrap ds:tabular-nums",
|
|
3788
|
+
className
|
|
3789
|
+
),
|
|
3693
3790
|
...props
|
|
3694
3791
|
}
|
|
3695
3792
|
);
|
|
@@ -3715,7 +3812,7 @@ var DataTableCellDue = forwardRef(
|
|
|
3715
3812
|
"data-due-state": ariaState,
|
|
3716
3813
|
...slot(dataTableAnatomy, "cell"),
|
|
3717
3814
|
...stateAttributes({ variant: "due" }),
|
|
3718
|
-
className: cn("ds:font-sans ds:tabular-nums", tone, className),
|
|
3815
|
+
className: cn("ds:font-sans ds:whitespace-nowrap ds:tabular-nums", tone, className),
|
|
3719
3816
|
...props,
|
|
3720
3817
|
children: children ?? dueDateFormatter.format(value)
|
|
3721
3818
|
}
|
|
@@ -4021,7 +4118,7 @@ function StagePill({
|
|
|
4021
4118
|
"span",
|
|
4022
4119
|
{
|
|
4023
4120
|
className: cn(
|
|
4024
|
-
"ds:inline-flex ds:items-center ds:gap-1.5 ds:rounded-pill ds:px-2 ds:py-0.5 ds:text-xs ds:font-medium",
|
|
4121
|
+
"ds:inline-flex ds:items-center ds:gap-1.5 ds:whitespace-nowrap ds:rounded-pill ds:px-2 ds:py-0.5 ds:text-xs ds:font-medium",
|
|
4025
4122
|
toneClass[tone]
|
|
4026
4123
|
),
|
|
4027
4124
|
children: [
|
|
@@ -4563,7 +4660,7 @@ function AssigneePicker({
|
|
|
4563
4660
|
{
|
|
4564
4661
|
type: "button",
|
|
4565
4662
|
"aria-label": "Edit assignees",
|
|
4566
|
-
className: "ds:rounded-pill ds:border-rule ds:hover:bg-overlay-hover ds:inline-flex ds:items-center ds:gap-2 ds:border ds:py-1 ds:pr-2.5 ds:pl-1.5 ds:transition-colors ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:focus-visible:outline-none",
|
|
4663
|
+
className: "ds:rounded-pill ds:border-rule ds:hover:bg-overlay-hover ds:active:bg-overlay-active ds:inline-flex ds:items-center ds:gap-2 ds:border ds:py-1 ds:pr-2.5 ds:pl-1.5 ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:focus-visible:outline-none",
|
|
4567
4664
|
children: [
|
|
4568
4665
|
stack,
|
|
4569
4666
|
/* @__PURE__ */ jsx("span", { className: "ds:text-fg-2 ds:text-sm ds:font-semibold ds:tabular-nums tabular-nums", children: selected.length }),
|
|
@@ -4792,6 +4889,7 @@ function useStopwatch() {
|
|
|
4792
4889
|
}, [setPhase]);
|
|
4793
4890
|
return { phase, elapsedMs, isRunning: phase === "running", start, pause, resume, stop, reset };
|
|
4794
4891
|
}
|
|
4892
|
+
var FOCUSED_INPUT_ROW = "ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:motion-reduce:transition-none ds:has-[input:focus-visible:not([readonly])]:bg-surface-2";
|
|
4795
4893
|
var TimeLogger = forwardRef(function TimeLogger2({ className, orientation = "vertical", children, ...props }, ref) {
|
|
4796
4894
|
return /* @__PURE__ */ jsx(
|
|
4797
4895
|
"div",
|
|
@@ -4878,7 +4976,7 @@ var TimeLoggerContextRow = forwardRef(
|
|
|
4878
4976
|
{
|
|
4879
4977
|
type: "button",
|
|
4880
4978
|
onClick: onClientSelect,
|
|
4881
|
-
className: "ds:rounded-btn ds:hover:bg-surface-2 ds:focus-visible:bg-surface-2 ds:-m-1 ds:flex ds:min-w-0 ds:flex-1 ds:items-center ds:gap-2.5 ds:p-1 ds:text-left ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:motion-reduce:transition-none",
|
|
4979
|
+
className: "ds:rounded-btn ds:hover:bg-surface-2 ds:focus-visible:bg-surface-2 ds:active:bg-control-active-bg ds:-m-1 ds:flex ds:min-w-0 ds:flex-1 ds:items-center ds:gap-2.5 ds:p-1 ds:text-left ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:motion-reduce:transition-none",
|
|
4882
4980
|
children: [
|
|
4883
4981
|
avatar,
|
|
4884
4982
|
text
|
|
@@ -4917,6 +5015,9 @@ var TimeLoggerTimer = forwardRef(
|
|
|
4917
5015
|
ref,
|
|
4918
5016
|
className: cn(
|
|
4919
5017
|
"ds:border-rule-soft ds:flex ds:items-center ds:gap-2.5 ds:border-t ds:px-4 ds:py-4",
|
|
5018
|
+
// The bare input has no chrome of its own; tint its row while it
|
|
5019
|
+
// has keyboard focus so the focus is visible beyond the caret.
|
|
5020
|
+
FOCUSED_INPUT_ROW,
|
|
4920
5021
|
// In a horizontal bar this segment is usually the `flex-1` grower;
|
|
4921
5022
|
// min-w-0 lets the clock shrink instead of pushing the trailing
|
|
4922
5023
|
// segment off the edge.
|
|
@@ -5026,32 +5127,41 @@ var TimeLoggerField = forwardRef(
|
|
|
5026
5127
|
TimeLoggerField.displayName = "TimeLoggerField";
|
|
5027
5128
|
var TimeLoggerNotes = forwardRef(
|
|
5028
5129
|
function TimeLoggerNotes2({ value, onValueChange, icon, placeholder = "Add notes", className, ...props }, ref) {
|
|
5029
|
-
return /* @__PURE__ */ jsxs(
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
onChange: (event) => onValueChange?.(event.target.value),
|
|
5045
|
-
placeholder,
|
|
5046
|
-
"aria-label": "Notes",
|
|
5047
|
-
className: cn(
|
|
5048
|
-
"ds:text-fg ds:placeholder:text-fg-4 ds:min-w-0 ds:flex-1 ds:border-0 ds:bg-transparent ds:text-sm ds:outline-none",
|
|
5049
|
-
className
|
|
5130
|
+
return /* @__PURE__ */ jsxs(
|
|
5131
|
+
"div",
|
|
5132
|
+
{
|
|
5133
|
+
className: cn(
|
|
5134
|
+
"ds:border-rule-soft ds:flex ds:items-center ds:gap-3 ds:border-t ds:px-4 ds:py-3",
|
|
5135
|
+
FOCUSED_INPUT_ROW
|
|
5136
|
+
),
|
|
5137
|
+
children: [
|
|
5138
|
+
/* @__PURE__ */ jsx(
|
|
5139
|
+
"span",
|
|
5140
|
+
{
|
|
5141
|
+
className: "ds:text-fg-4 ds:flex ds:size-[17px] ds:shrink-0 ds:items-center ds:justify-center ds:[&_svg]:size-[17px]",
|
|
5142
|
+
"aria-hidden": "true",
|
|
5143
|
+
children: icon ?? /* @__PURE__ */ jsx(FileTextIcon, {})
|
|
5144
|
+
}
|
|
5050
5145
|
),
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5146
|
+
/* @__PURE__ */ jsx(
|
|
5147
|
+
"input",
|
|
5148
|
+
{
|
|
5149
|
+
ref,
|
|
5150
|
+
type: "text",
|
|
5151
|
+
value: value ?? "",
|
|
5152
|
+
onChange: (event) => onValueChange?.(event.target.value),
|
|
5153
|
+
placeholder,
|
|
5154
|
+
"aria-label": "Notes",
|
|
5155
|
+
className: cn(
|
|
5156
|
+
"ds:text-fg ds:placeholder:text-fg-4 ds:min-w-0 ds:flex-1 ds:border-0 ds:bg-transparent ds:text-sm ds:outline-none",
|
|
5157
|
+
className
|
|
5158
|
+
),
|
|
5159
|
+
...props
|
|
5160
|
+
}
|
|
5161
|
+
)
|
|
5162
|
+
]
|
|
5163
|
+
}
|
|
5164
|
+
);
|
|
5055
5165
|
}
|
|
5056
5166
|
);
|
|
5057
5167
|
TimeLoggerNotes.displayName = "TimeLoggerNotes";
|
|
@@ -5085,7 +5195,7 @@ var TimeLoggerBillable = forwardRef(
|
|
|
5085
5195
|
{
|
|
5086
5196
|
type: "button",
|
|
5087
5197
|
"aria-label": "Billing settings",
|
|
5088
|
-
className: "ds:text-fg-4 ds:hover:text-fg-2 ds:hover:bg-surface-hover ds:rounded-btn ds:flex ds:size-6 ds:items-center ds:justify-center ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:motion-reduce:transition-none ds:[&_svg]:size-4",
|
|
5198
|
+
className: "ds:text-fg-4 ds:hover:text-fg-2 ds:hover:bg-surface-hover ds:active:bg-control-active-bg ds:rounded-btn ds:flex ds:size-6 ds:items-center ds:justify-center ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:motion-reduce:transition-none ds:[&_svg]:size-4",
|
|
5089
5199
|
children: /* @__PURE__ */ jsx(SettingsIcon, {})
|
|
5090
5200
|
}
|
|
5091
5201
|
) }),
|
|
@@ -5452,10 +5562,10 @@ function EmailMessageCard({
|
|
|
5452
5562
|
type: "button",
|
|
5453
5563
|
onClick: () => setExpanded((v) => !v),
|
|
5454
5564
|
"aria-expanded": expanded,
|
|
5455
|
-
className: "ds:flex ds:w-full ds:items-center ds:justify-center ds:gap-1.5 ds:border-t ds:border-rule/60 ds:bg-surface ds:py-1.5 ds:text-xs ds:font-medium ds:text-brand ds:transition-colors ds:hover:bg-surface-hover/40 ds:motion-reduce:transition-none",
|
|
5565
|
+
className: "ds:flex ds:w-full ds:items-center ds:justify-center ds:gap-1.5 ds:border-t ds:border-rule/60 ds:bg-surface ds:py-1.5 ds:text-xs ds:font-medium ds:text-brand ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:hover:bg-surface-hover/40 ds:motion-reduce:transition-none",
|
|
5456
5566
|
children: [
|
|
5457
5567
|
expanded ? "Show less" : "Show full email",
|
|
5458
|
-
/* @__PURE__ */ jsx(ChevronDownIcon, { size: 13, className: cn("ds:transition-transform ds:motion-reduce:transition-none", expanded && "ds:rotate-180") })
|
|
5568
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { size: 13, className: cn("ds:transition-transform ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none", expanded && "ds:rotate-180") })
|
|
5459
5569
|
]
|
|
5460
5570
|
}
|
|
5461
5571
|
),
|
|
@@ -5506,7 +5616,7 @@ function SignatureEditor({
|
|
|
5506
5616
|
}
|
|
5507
5617
|
)
|
|
5508
5618
|
] }),
|
|
5509
|
-
/* @__PURE__ */ jsx("div", { className: "ds:p-3", children: loading ? /* @__PURE__ */ jsx(
|
|
5619
|
+
/* @__PURE__ */ jsx("div", { className: "ds:p-3", children: loading ? /* @__PURE__ */ jsx(Skeleton, { className: "ds:h-32 ds:rounded-md" }) : children }),
|
|
5510
5620
|
(onSave || onInsert) && /* @__PURE__ */ jsxs("div", { className: "ds:flex ds:items-center ds:justify-end ds:gap-2 ds:border-t ds:border-rule ds:px-3 ds:py-2", children: [
|
|
5511
5621
|
onSave && /* @__PURE__ */ jsx(
|
|
5512
5622
|
Button,
|
|
@@ -5526,6 +5636,6 @@ function SignatureEditor({
|
|
|
5526
5636
|
}
|
|
5527
5637
|
SignatureEditor.displayName = "SignatureEditor";
|
|
5528
5638
|
|
|
5529
|
-
export { AIReceiptPanel, AiDraftCard, Assignee, AttentionItem, Badge, Blockquote, BottomNav, CategoryDivider, CategoryTag, ChannelTabs, ClientRailGroupHeader, ClientRailItem, Dash, DashGrid, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DocumentChecklist, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, EmailMessageCard, EmptyValue, EngagementCard, EngagementTimeline, EngagementTimelineStep, IntentBadge, MissingDocumentsPanel, MoneyCell, NewMenu, PROGRESS_LEGACY_TO_INTENT, Pagination, ProgressBar, ProgressRing, SERVICE_TONES, STATUS_DOT_TONE_TO_INTENT, Section, SectionHead, SectionHeader, SegmentedProgress, SignatureEditor, StagePill, Stat, StatusDot, StatusPill, SuggestionPills, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsCell, TeamMemberSelect, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToggleGroup, ToggleGroupItem, badgeVariants, compareSortValues, formatClock, formatCurrency, formatDuration, nextSortDirection, parseDuration, progressBarVariants, progressRingVariants, resolveBadgeAppearance, serviceToneLabel, serviceToneStyle, statusDotVariants, useDataTable,
|
|
5530
|
-
//# sourceMappingURL=chunk-
|
|
5531
|
-
//# sourceMappingURL=chunk-
|
|
5639
|
+
export { AIReceiptPanel, AiDraftCard, Assignee, AttentionItem, Badge, Blockquote, BottomNav, CategoryDivider, CategoryTag, ChannelTabs, ClientRailGroupHeader, ClientRailItem, Dash, DashGrid, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DocumentChecklist, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, EmailMessageCard, EmptyValue, EngagementCard, EngagementTimeline, EngagementTimelineStep, IntentBadge, MissingDocumentsPanel, MoneyCell, NewMenu, PROGRESS_LEGACY_TO_INTENT, Pagination, ProgressBar, ProgressRing, SERVICE_TONES, STATUS_DOT_TONE_TO_INTENT, Section, SectionHead, SectionHeader, SegmentedProgress, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, StagePill, Stat, StatusDot, StatusPill, SuggestionPills, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsCell, TeamMemberSelect, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToggleGroup, ToggleGroupItem, badgeVariants, compareSortValues, formatClock, formatCurrency, formatDuration, nextSortDirection, parseDuration, progressBarVariants, progressRingVariants, resolveBadgeAppearance, serviceToneLabel, serviceToneStyle, statusDotVariants, useDataTable, useStopwatch };
|
|
5640
|
+
//# sourceMappingURL=chunk-5AL4W32Z.js.map
|
|
5641
|
+
//# sourceMappingURL=chunk-5AL4W32Z.js.map
|