@proteos/ui 0.55.0 → 0.57.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/{chunk-IKAX76MB.js → chunk-NSE4VW3Z.js} +45 -21
- package/dist/chunk-NSE4VW3Z.js.map +1 -0
- package/dist/{chunk-MWAXK66H.cjs → chunk-NWGG5WFL.cjs} +45 -21
- package/dist/chunk-NWGG5WFL.cjs.map +1 -0
- package/dist/index.cjs +377 -361
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -14
- package/dist/index.d.ts +46 -14
- package/dist/index.js +124 -108
- package/dist/index.js.map +1 -1
- package/dist/{pdf-view-MH75RVQP.js → pdf-view-RQ2OZYHJ.js} +3 -3
- package/dist/{pdf-view-MH75RVQP.js.map → pdf-view-RQ2OZYHJ.js.map} +1 -1
- package/dist/{pdf-view-K4MMVHVY.cjs → pdf-view-RRMAUK3L.cjs} +7 -7
- package/dist/{pdf-view-K4MMVHVY.cjs.map → pdf-view-RRMAUK3L.cjs.map} +1 -1
- package/package.json +2 -2
- package/src/components/avatar/avatar.stories.tsx +13 -0
- package/src/components/avatar/avatar.tsx +16 -9
- package/src/components/badge-multi-select/badge-multi-select.tsx +2 -2
- package/src/components/button/button.stories.tsx +202 -97
- package/src/components/button/button.test.tsx +40 -7
- package/src/components/button/button.tsx +71 -18
- package/src/components/combobox/combobox.tsx +2 -2
- package/src/components/currency-input/currency-input.tsx +2 -2
- package/src/components/date-picker/calendar-internals.tsx +1 -1
- package/src/components/date-picker/date-picker.tsx +3 -3
- package/src/components/date-time-picker/date-time-picker.tsx +3 -3
- package/src/components/icon-picker/icon-picker.tsx +2 -2
- package/src/components/image-lightbox/image-lightbox.tsx +2 -2
- package/src/components/menu/menu.tsx +2 -2
- package/src/components/modal/modal.tsx +4 -4
- package/src/components/multi-select/multi-select.tsx +2 -2
- package/src/components/popover/popover.tsx +2 -2
- package/src/components/record-filter/chip-value.tsx +6 -5
- package/src/components/record-filter/filter-value-input.tsx +11 -9
- package/src/components/record-filter/nested-group.tsx +2 -2
- package/src/components/record-filter/operators.test.ts +67 -12
- package/src/components/record-filter/operators.ts +43 -2
- package/src/components/record-filter/record-filter-builder-panel.tsx +11 -23
- package/src/components/record-filter/record-filter-chips.tsx +3 -10
- package/src/components/record-filter/types.ts +6 -1
- package/src/components/segmented-control/segmented-control.stories.tsx +134 -8
- package/src/components/segmented-control/segmented-control.test.tsx +81 -8
- package/src/components/segmented-control/segmented-control.tsx +38 -19
- package/src/components/select/select.tsx +2 -2
- package/src/components/time-field/time-field.tsx +1 -1
- package/src/components/toast/toast.tsx +2 -2
- package/src/components/tooltip/tooltip.tsx +2 -2
- package/src/styles.css +58 -0
- package/dist/chunk-IKAX76MB.js.map +0 -1
- package/dist/chunk-MWAXK66H.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkNWGG5WFL_cjs = require('./chunk-NWGG5WFL.cjs');
|
|
4
4
|
var lucideReact = require('lucide-react');
|
|
5
5
|
var tailwindVariants = require('tailwind-variants');
|
|
6
6
|
var reactAriaComponents = require('react-aria-components');
|
|
@@ -33,11 +33,11 @@ function PopoverContent({
|
|
|
33
33
|
offset,
|
|
34
34
|
placement,
|
|
35
35
|
...props,
|
|
36
|
-
className: (renderProps) =>
|
|
36
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
37
37
|
"rounded-md border border-rule bg-surface",
|
|
38
38
|
"shadow-[var(--shadow-float)]",
|
|
39
|
-
"entering:animate-
|
|
40
|
-
"exiting:animate-
|
|
39
|
+
"entering:animate-enter-slide-down",
|
|
40
|
+
"exiting:animate-exit-slide-up",
|
|
41
41
|
panelClassName,
|
|
42
42
|
typeof className === "function" ? className(renderProps) : className
|
|
43
43
|
),
|
|
@@ -52,7 +52,7 @@ function PopoverPanelHeader({
|
|
|
52
52
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
53
53
|
"div",
|
|
54
54
|
{
|
|
55
|
-
className:
|
|
55
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
56
56
|
"flex items-center justify-between gap-2",
|
|
57
57
|
"px-3.5 py-2.5 border-b border-rule",
|
|
58
58
|
className
|
|
@@ -65,7 +65,7 @@ function PopoverPanelBody({
|
|
|
65
65
|
className,
|
|
66
66
|
children
|
|
67
67
|
}) {
|
|
68
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
68
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("p-2", className), children });
|
|
69
69
|
}
|
|
70
70
|
function PopoverPanelFooter({
|
|
71
71
|
className,
|
|
@@ -74,7 +74,7 @@ function PopoverPanelFooter({
|
|
|
74
74
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
75
75
|
"div",
|
|
76
76
|
{
|
|
77
|
-
className:
|
|
77
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
78
78
|
"flex items-center justify-between gap-2",
|
|
79
79
|
"px-3.5 py-2.5 border-t border-rule",
|
|
80
80
|
"bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]",
|
|
@@ -157,10 +157,10 @@ function FileField({
|
|
|
157
157
|
};
|
|
158
158
|
if (!value) {
|
|
159
159
|
if (isReadOnly) {
|
|
160
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
160
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4", className), children: "\u2014" });
|
|
161
161
|
}
|
|
162
162
|
if (isUploading) {
|
|
163
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
163
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(dropZoneStyles({ isInvalid }), className), children: [
|
|
164
164
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-3.5 animate-spin", "aria-hidden": true }),
|
|
165
165
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-sans text-[12.5px]", children: "Uploading\u2026" })
|
|
166
166
|
] });
|
|
@@ -180,7 +180,7 @@ function FileField({
|
|
|
180
180
|
{
|
|
181
181
|
onSelect: handleSelect,
|
|
182
182
|
...acceptedFileTypes ? { acceptedFileTypes } : {},
|
|
183
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
183
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "sm", children: "Browse" })
|
|
184
184
|
}
|
|
185
185
|
)
|
|
186
186
|
]
|
|
@@ -194,7 +194,7 @@ function FileField({
|
|
|
194
194
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
|
|
195
195
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cardStyles({ isClickable }), children: [
|
|
196
196
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
197
|
-
|
|
197
|
+
chunkNWGG5WFL_cjs.Button,
|
|
198
198
|
{
|
|
199
199
|
variant: "subtle",
|
|
200
200
|
className: "m-0 flex min-w-0 flex-1 items-start gap-3 border-0 bg-transparent p-0 text-left hover:bg-transparent",
|
|
@@ -204,7 +204,7 @@ function FileField({
|
|
|
204
204
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
205
205
|
Icon,
|
|
206
206
|
{
|
|
207
|
-
className:
|
|
207
|
+
className: chunkNWGG5WFL_cjs.cn("mt-0.5 size-5 shrink-0 text-ink-3", isUploading && "animate-spin"),
|
|
208
208
|
"aria-hidden": true,
|
|
209
209
|
strokeWidth: 1.6
|
|
210
210
|
}
|
|
@@ -218,7 +218,7 @@ function FileField({
|
|
|
218
218
|
),
|
|
219
219
|
!isReadOnly && onDelete && !isUploading ? /* @__PURE__ */ jsxRuntime.jsxs(Popover, { children: [
|
|
220
220
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
221
|
-
|
|
221
|
+
chunkNWGG5WFL_cjs.Button,
|
|
222
222
|
{
|
|
223
223
|
"aria-label": "Remove file",
|
|
224
224
|
size: "icon-sm",
|
|
@@ -238,13 +238,13 @@ function FileField({
|
|
|
238
238
|
) }),
|
|
239
239
|
/* @__PURE__ */ jsxRuntime.jsx(PopoverPanelBody, { className: "px-3.5 py-3", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 font-sans text-[12px] leading-snug text-ink-2", children: "This removes the attachment from this record." }) }),
|
|
240
240
|
/* @__PURE__ */ jsxRuntime.jsxs(PopoverPanelFooter, { children: [
|
|
241
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
241
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "sm", onPress: close, children: "Cancel" }),
|
|
242
242
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
243
|
-
|
|
243
|
+
chunkNWGG5WFL_cjs.Button,
|
|
244
244
|
{
|
|
245
245
|
variant: "primary",
|
|
246
246
|
size: "sm",
|
|
247
|
-
className:
|
|
247
|
+
className: chunkNWGG5WFL_cjs.cn("bg-danger border-danger", "hover:bg-danger hover:border-danger"),
|
|
248
248
|
onPress: () => {
|
|
249
249
|
onDelete();
|
|
250
250
|
close();
|
|
@@ -294,17 +294,17 @@ function AttachmentChip({
|
|
|
294
294
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
295
295
|
Icon,
|
|
296
296
|
{
|
|
297
|
-
className:
|
|
297
|
+
className: chunkNWGG5WFL_cjs.cn("size-3.5 shrink-0 text-ink-3", status === "uploading" && "animate-spin"),
|
|
298
298
|
"aria-hidden": true
|
|
299
299
|
}
|
|
300
300
|
),
|
|
301
301
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: name }),
|
|
302
|
-
meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
302
|
+
meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("shrink-0", status !== "error" && "text-ink-4"), children: meta }) : null
|
|
303
303
|
] });
|
|
304
304
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
305
305
|
"span",
|
|
306
306
|
{
|
|
307
|
-
className:
|
|
307
|
+
className: chunkNWGG5WFL_cjs.cn(attachmentChipStyles({ status, isInteractive: Boolean(onPress) }), className),
|
|
308
308
|
title: errorMessage ?? name,
|
|
309
309
|
children: [
|
|
310
310
|
onPress ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -325,7 +325,7 @@ function AttachmentChip({
|
|
|
325
325
|
event.stopPropagation();
|
|
326
326
|
onRemove();
|
|
327
327
|
},
|
|
328
|
-
className:
|
|
328
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
329
329
|
"inline-flex shrink-0 items-center justify-center",
|
|
330
330
|
"size-4 rounded-[3px]",
|
|
331
331
|
"cursor-pointer text-ink-3 hover:bg-surface-3 hover:text-ink",
|
|
@@ -396,7 +396,7 @@ function AttributeTypeIcon({
|
|
|
396
396
|
{
|
|
397
397
|
"aria-hidden": true,
|
|
398
398
|
strokeWidth: strokeWidth ?? 1.6,
|
|
399
|
-
className:
|
|
399
|
+
className: chunkNWGG5WFL_cjs.cn("size-3.5", className),
|
|
400
400
|
...props
|
|
401
401
|
}
|
|
402
402
|
);
|
|
@@ -404,7 +404,7 @@ function AttributeTypeIcon({
|
|
|
404
404
|
var avatarStyles = tailwindVariants.tv({
|
|
405
405
|
base: [
|
|
406
406
|
"inline-grid place-items-center shrink-0 select-none overflow-hidden",
|
|
407
|
-
"
|
|
407
|
+
"border",
|
|
408
408
|
"font-mono font-medium tracking-[-0.005em]"
|
|
409
409
|
],
|
|
410
410
|
variants: {
|
|
@@ -416,17 +416,22 @@ var avatarStyles = tailwindVariants.tv({
|
|
|
416
416
|
},
|
|
417
417
|
tone: {
|
|
418
418
|
paper: "bg-surface-3 text-ink border-rule",
|
|
419
|
-
indigo: "bg-
|
|
420
|
-
moss: "bg-
|
|
421
|
-
terra: "bg-
|
|
422
|
-
slate: "bg-
|
|
419
|
+
indigo: "bg-tile-indigo text-tile-fg border-transparent",
|
|
420
|
+
moss: "bg-tile-moss text-tile-fg border-transparent",
|
|
421
|
+
terra: "bg-tile-terra text-tile-fg border-transparent",
|
|
422
|
+
slate: "bg-tile-slate text-tile-fg border-transparent"
|
|
423
|
+
},
|
|
424
|
+
shape: {
|
|
425
|
+
circle: "rounded-full",
|
|
426
|
+
square: "rounded-md"
|
|
423
427
|
}
|
|
424
428
|
},
|
|
425
|
-
defaultVariants: { size: "md", tone: "paper" }
|
|
429
|
+
defaultVariants: { size: "md", tone: "paper", shape: "circle" }
|
|
426
430
|
});
|
|
427
431
|
function Avatar({
|
|
428
432
|
size,
|
|
429
433
|
tone,
|
|
434
|
+
shape,
|
|
430
435
|
initials,
|
|
431
436
|
src,
|
|
432
437
|
alt = "",
|
|
@@ -436,7 +441,7 @@ function Avatar({
|
|
|
436
441
|
}) {
|
|
437
442
|
const [failedSrc, setFailedSrc] = react.useState(null);
|
|
438
443
|
const showsImage = Boolean(src) && failedSrc !== src;
|
|
439
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className:
|
|
444
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: chunkNWGG5WFL_cjs.cn(avatarStyles({ size, tone, shape }), className), children: showsImage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
440
445
|
"img",
|
|
441
446
|
{
|
|
442
447
|
src: src ?? void 0,
|
|
@@ -466,7 +471,7 @@ function AvatarGroup({
|
|
|
466
471
|
}) {
|
|
467
472
|
const shown = avatars.slice(0, max);
|
|
468
473
|
const overflow = avatars.length - shown.length;
|
|
469
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { ...props, className:
|
|
474
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { ...props, className: chunkNWGG5WFL_cjs.cn(avatarGroupStyles({ size }), className), children: [
|
|
470
475
|
shown.map((avatar, index) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full ring-[1.5px] ring-surface", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
471
476
|
Avatar,
|
|
472
477
|
{
|
|
@@ -642,7 +647,7 @@ function IconPicker({
|
|
|
642
647
|
open(false);
|
|
643
648
|
triggerRef.current?.focus();
|
|
644
649
|
};
|
|
645
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
650
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5", className), children: [
|
|
646
651
|
label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
|
|
647
652
|
compact ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
648
653
|
"button",
|
|
@@ -656,7 +661,7 @@ function IconPicker({
|
|
|
656
661
|
disabled: isDisabled,
|
|
657
662
|
onClick: () => open(!isOpen),
|
|
658
663
|
"data-invalid": isInvalid || void 0,
|
|
659
|
-
className:
|
|
664
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
660
665
|
styles4.box(),
|
|
661
666
|
"flex shrink-0 items-center justify-center cursor-pointer",
|
|
662
667
|
appearance === "cell" ? "size-[29px]" : COMPACT_SIZE[size],
|
|
@@ -675,7 +680,7 @@ function IconPicker({
|
|
|
675
680
|
disabled: isDisabled,
|
|
676
681
|
onClick: () => open(!isOpen),
|
|
677
682
|
"data-invalid": isInvalid || void 0,
|
|
678
|
-
className:
|
|
683
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
679
684
|
// box carries no padding by contract — content is what gives a
|
|
680
685
|
// single-element control its interior (padding, font, text-size).
|
|
681
686
|
styles4.box(),
|
|
@@ -685,7 +690,7 @@ function IconPicker({
|
|
|
685
690
|
),
|
|
686
691
|
children: [
|
|
687
692
|
SelectedIcon ? /* @__PURE__ */ jsxRuntime.jsx(SelectedIcon, { "aria-hidden": true, className: "size-4 shrink-0 text-ink-2" }) : null,
|
|
688
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
693
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("min-w-0 flex-1 truncate", selectedName ? "text-ink" : "text-ink-4"), children: selectedName ?? placeholder }),
|
|
689
694
|
/* @__PURE__ */ jsxRuntime.jsx(FieldCaret, {})
|
|
690
695
|
]
|
|
691
696
|
}
|
|
@@ -700,18 +705,18 @@ function IconPicker({
|
|
|
700
705
|
triggerRef,
|
|
701
706
|
offset: 6,
|
|
702
707
|
placement: "bottom start",
|
|
703
|
-
className:
|
|
708
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
704
709
|
"w-[316px] rounded-md border border-rule bg-surface p-2",
|
|
705
710
|
"shadow-[var(--shadow-raised)]",
|
|
706
|
-
"entering:animate-
|
|
707
|
-
"exiting:animate-
|
|
711
|
+
"entering:animate-enter-slide-down",
|
|
712
|
+
"exiting:animate-exit-slide-up"
|
|
708
713
|
),
|
|
709
714
|
children: [
|
|
710
715
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 pb-2", children: [
|
|
711
716
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
712
717
|
"div",
|
|
713
718
|
{
|
|
714
|
-
className:
|
|
719
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
715
720
|
fieldControlStyles({ size: "sm" }).box(),
|
|
716
721
|
"flex min-w-0 flex-1 items-center gap-1.5 px-2.5 py-1.5",
|
|
717
722
|
"focus-within:border-accent focus-within:shadow-[var(--shadow-focus)]"
|
|
@@ -726,7 +731,7 @@ function IconPicker({
|
|
|
726
731
|
value: query,
|
|
727
732
|
onChange: (event) => search(event.target.value),
|
|
728
733
|
placeholder: "Search icons\u2026",
|
|
729
|
-
className:
|
|
734
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
730
735
|
"min-w-0 flex-1 bg-transparent font-sans outline-none",
|
|
731
736
|
"text-ink placeholder:text-ink-4",
|
|
732
737
|
fieldTextStyles.sm
|
|
@@ -741,7 +746,7 @@ function IconPicker({
|
|
|
741
746
|
{
|
|
742
747
|
type: "button",
|
|
743
748
|
onClick: () => pick(null),
|
|
744
|
-
className:
|
|
749
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
745
750
|
"flex shrink-0 items-center gap-1 rounded-[6px] px-2 py-1.5 cursor-pointer",
|
|
746
751
|
"font-sans text-[12px] text-ink-3 transition-colors",
|
|
747
752
|
"hover:bg-surface-2 hover:text-ink",
|
|
@@ -772,7 +777,7 @@ function IconPicker({
|
|
|
772
777
|
if (next !== void 0) pick(next);
|
|
773
778
|
},
|
|
774
779
|
className: "grid grid-cols-8 gap-0.5 outline-none",
|
|
775
|
-
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
780
|
+
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("col-span-8 px-2 py-3 text-center", fieldHintStyles), children: "No icons match" }),
|
|
776
781
|
children: visible.map((name) => {
|
|
777
782
|
const Icon = lucideReact.icons[name];
|
|
778
783
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -781,7 +786,7 @@ function IconPicker({
|
|
|
781
786
|
id: name,
|
|
782
787
|
textValue: name,
|
|
783
788
|
"aria-label": name,
|
|
784
|
-
className:
|
|
789
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
785
790
|
"flex size-[34px] items-center justify-center rounded-[6px]",
|
|
786
791
|
"cursor-pointer outline-none",
|
|
787
792
|
"data-[hovered]:bg-surface-2 data-[focused]:bg-surface-2",
|
|
@@ -798,7 +803,7 @@ function IconPicker({
|
|
|
798
803
|
)
|
|
799
804
|
}
|
|
800
805
|
),
|
|
801
|
-
hiddenCount > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className:
|
|
806
|
+
hiddenCount > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkNWGG5WFL_cjs.cn("px-1 pt-2", fieldHintStyles), children: [
|
|
802
807
|
hiddenCount.toLocaleString(),
|
|
803
808
|
" more \u2014 keep scrolling, or search."
|
|
804
809
|
] }) : null
|
|
@@ -888,13 +893,13 @@ function Badge({
|
|
|
888
893
|
{
|
|
889
894
|
...props,
|
|
890
895
|
style: mergedStyle,
|
|
891
|
-
className:
|
|
896
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
892
897
|
badgeStyles({ variant: register2, shape, hasDot }),
|
|
893
898
|
showDot ? null : "before:hidden",
|
|
894
899
|
className
|
|
895
900
|
),
|
|
896
901
|
children: [
|
|
897
|
-
Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className:
|
|
902
|
+
Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className: chunkNWGG5WFL_cjs.cn("size-3 shrink-0", ICON_TONE[register2]) }) : null,
|
|
898
903
|
children,
|
|
899
904
|
actions ? (
|
|
900
905
|
// Pulled flush with the trailing edge so the chip still reads
|
|
@@ -916,7 +921,7 @@ function BadgeAction({ label, onPress, isDisabled = false, children }) {
|
|
|
916
921
|
event.stopPropagation();
|
|
917
922
|
onPress();
|
|
918
923
|
},
|
|
919
|
-
className:
|
|
924
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
920
925
|
"inline-flex items-center justify-center shrink-0",
|
|
921
926
|
"size-3.5 rounded-full",
|
|
922
927
|
"text-current/70 hover:text-current hover:bg-current/10",
|
|
@@ -949,13 +954,13 @@ function Tooltip({ className, offset = 6, ...props }) {
|
|
|
949
954
|
{
|
|
950
955
|
...props,
|
|
951
956
|
offset,
|
|
952
|
-
className: (renderProps) =>
|
|
957
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
953
958
|
"z-50 max-w-xs",
|
|
954
959
|
"rounded-md border border-rule bg-surface shadow-[var(--shadow-raised)]",
|
|
955
960
|
"px-2.5 py-1.5",
|
|
956
961
|
"font-mono text-[11.5px] text-ink-2",
|
|
957
|
-
"entering:animate-
|
|
958
|
-
"exiting:animate-
|
|
962
|
+
"entering:animate-enter-slide-down",
|
|
963
|
+
"exiting:animate-exit-fade",
|
|
959
964
|
typeof className === "function" ? className(renderProps) : className
|
|
960
965
|
)
|
|
961
966
|
}
|
|
@@ -1056,7 +1061,7 @@ function BadgeGroup({ children, className, ...props }) {
|
|
|
1056
1061
|
{
|
|
1057
1062
|
...props,
|
|
1058
1063
|
ref: rootRef,
|
|
1059
|
-
className:
|
|
1064
|
+
className: chunkNWGG5WFL_cjs.cn(badgeGroupStyles({ isMeasuring: measuring }), className),
|
|
1060
1065
|
children: [
|
|
1061
1066
|
shown.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1062
1067
|
"span",
|
|
@@ -1225,7 +1230,7 @@ function BadgeMultiSelect({
|
|
|
1225
1230
|
setIsOpen(false);
|
|
1226
1231
|
}
|
|
1227
1232
|
};
|
|
1228
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
1233
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5", className), children: [
|
|
1229
1234
|
label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
|
|
1230
1235
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1231
1236
|
"div",
|
|
@@ -1242,7 +1247,7 @@ function BadgeMultiSelect({
|
|
|
1242
1247
|
onKeyDown: onTriggerKeyDown,
|
|
1243
1248
|
"data-invalid": isInvalid || void 0,
|
|
1244
1249
|
"data-disabled": isDisabled || void 0,
|
|
1245
|
-
className:
|
|
1250
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1246
1251
|
styles4.box(),
|
|
1247
1252
|
"flex items-stretch cursor-pointer",
|
|
1248
1253
|
// Cell editor: one table row (29px under a 32px row) while the chips
|
|
@@ -1257,7 +1262,7 @@ function BadgeMultiSelect({
|
|
|
1257
1262
|
"div",
|
|
1258
1263
|
{
|
|
1259
1264
|
ref: chipsRef,
|
|
1260
|
-
className:
|
|
1265
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1261
1266
|
"flex flex-1 flex-wrap items-center gap-1.5 min-w-0",
|
|
1262
1267
|
isCell && (hasWrapped ? "content-start overflow-y-auto" : "content-center overflow-hidden")
|
|
1263
1268
|
),
|
|
@@ -1265,7 +1270,7 @@ function BadgeMultiSelect({
|
|
|
1265
1270
|
// No vertical padding — wrapper's p-1.5 + min-h-[size] govern the
|
|
1266
1271
|
// overall height so it matches the Input/Select trigger at the same
|
|
1267
1272
|
// size.
|
|
1268
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
1273
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4 font-sans px-1", fieldTextStyles[size]), children: placeholder })
|
|
1269
1274
|
) : selectedOptions.map((o) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1270
1275
|
Badge,
|
|
1271
1276
|
{
|
|
@@ -1301,7 +1306,7 @@ function BadgeMultiSelect({
|
|
|
1301
1306
|
placement: "bottom start",
|
|
1302
1307
|
isNonModal: true,
|
|
1303
1308
|
shouldCloseOnInteractOutside: (element) => !triggerRef.current?.contains(element),
|
|
1304
|
-
className:
|
|
1309
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1305
1310
|
// At least as wide as the trigger, wider when a badge needs it —
|
|
1306
1311
|
// a narrow table column must not clip its own options.
|
|
1307
1312
|
"min-w-[var(--trigger-width)] w-max max-w-[min(28rem,calc(100vw-2rem))]",
|
|
@@ -1311,8 +1316,8 @@ function BadgeMultiSelect({
|
|
|
1311
1316
|
// (defaultOpen) — no browser outline around the whole panel.
|
|
1312
1317
|
"outline-none rounded-md border border-rule bg-surface p-1",
|
|
1313
1318
|
"shadow-[var(--shadow-raised)]",
|
|
1314
|
-
"entering:animate-
|
|
1315
|
-
"exiting:animate-
|
|
1319
|
+
"entering:animate-enter-slide-down",
|
|
1320
|
+
"exiting:animate-exit-slide-up"
|
|
1316
1321
|
),
|
|
1317
1322
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: popoverRef, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1318
1323
|
reactAriaComponents.ListBox,
|
|
@@ -1330,14 +1335,14 @@ function BadgeMultiSelect({
|
|
|
1330
1335
|
},
|
|
1331
1336
|
autoFocus: "first",
|
|
1332
1337
|
className: "outline-none max-h-72 overflow-auto",
|
|
1333
|
-
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
1338
|
+
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: "All options selected" }),
|
|
1334
1339
|
children: listboxOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1335
1340
|
reactAriaComponents.ListBoxItem,
|
|
1336
1341
|
{
|
|
1337
1342
|
id: option.id,
|
|
1338
1343
|
textValue: option.label,
|
|
1339
1344
|
...option.isDisabled ? { isDisabled: true } : {},
|
|
1340
|
-
className:
|
|
1345
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1341
1346
|
"group flex items-center gap-2.5",
|
|
1342
1347
|
"rounded-[6px] px-2.5 py-1.5",
|
|
1343
1348
|
"cursor-pointer outline-none select-none",
|
|
@@ -1364,7 +1369,7 @@ function Breadcrumbs({ items, separator = "/", className, ...props }) {
|
|
|
1364
1369
|
reactAriaComponents.Breadcrumbs,
|
|
1365
1370
|
{
|
|
1366
1371
|
...props,
|
|
1367
|
-
className:
|
|
1372
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1368
1373
|
"flex items-center gap-2",
|
|
1369
1374
|
"font-mono text-[12px] text-ink-3",
|
|
1370
1375
|
// RAC renders Breadcrumbs as <ol> — neutralise list defaults.
|
|
@@ -1383,7 +1388,7 @@ function Breadcrumbs({ items, separator = "/", className, ...props }) {
|
|
|
1383
1388
|
reactAriaComponents.Link,
|
|
1384
1389
|
{
|
|
1385
1390
|
href: item.href,
|
|
1386
|
-
className:
|
|
1391
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1387
1392
|
"rounded-sm outline-none cursor-pointer",
|
|
1388
1393
|
"transition-colors duration-150",
|
|
1389
1394
|
"hover:text-ink",
|
|
@@ -1395,7 +1400,7 @@ function Breadcrumbs({ items, separator = "/", className, ...props }) {
|
|
|
1395
1400
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1396
1401
|
"span",
|
|
1397
1402
|
{
|
|
1398
|
-
className:
|
|
1403
|
+
className: chunkNWGG5WFL_cjs.cn(isLast && "text-ink font-semibold"),
|
|
1399
1404
|
"aria-current": isLast ? "page" : void 0,
|
|
1400
1405
|
children: item.label
|
|
1401
1406
|
}
|
|
@@ -1433,7 +1438,7 @@ var cardStyles2 = tailwindVariants.tv({
|
|
|
1433
1438
|
}
|
|
1434
1439
|
});
|
|
1435
1440
|
function Card({ variant, className, ...props }) {
|
|
1436
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className:
|
|
1441
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn(cardStyles2({ variant }), className) });
|
|
1437
1442
|
}
|
|
1438
1443
|
var pressableCardStyles = tailwindVariants.tv({
|
|
1439
1444
|
extend: cardStyles2,
|
|
@@ -1451,7 +1456,7 @@ function PressableCard({ variant, className, ...props }) {
|
|
|
1451
1456
|
reactAriaComponents.Button,
|
|
1452
1457
|
{
|
|
1453
1458
|
...props,
|
|
1454
|
-
className: (renderProps) =>
|
|
1459
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
1455
1460
|
pressableCardStyles({ variant }),
|
|
1456
1461
|
typeof className === "function" ? className(renderProps) : className
|
|
1457
1462
|
)
|
|
@@ -1463,7 +1468,7 @@ function CardHeader({ className, ...props }) {
|
|
|
1463
1468
|
"div",
|
|
1464
1469
|
{
|
|
1465
1470
|
...props,
|
|
1466
|
-
className:
|
|
1471
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1467
1472
|
"flex justify-between items-center",
|
|
1468
1473
|
"px-5 py-3 border-b border-rule",
|
|
1469
1474
|
"bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]",
|
|
@@ -1474,14 +1479,14 @@ function CardHeader({ className, ...props }) {
|
|
|
1474
1479
|
);
|
|
1475
1480
|
}
|
|
1476
1481
|
function CardContent({ className, ...props }) {
|
|
1477
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className:
|
|
1482
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn("flex flex-col gap-3 p-5", className) });
|
|
1478
1483
|
}
|
|
1479
1484
|
function CardFooter({ className, ...props }) {
|
|
1480
1485
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1481
1486
|
"div",
|
|
1482
1487
|
{
|
|
1483
1488
|
...props,
|
|
1484
|
-
className:
|
|
1489
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1485
1490
|
"mt-auto flex justify-between items-center",
|
|
1486
1491
|
"px-5 py-4",
|
|
1487
1492
|
"font-mono text-[11.5px] text-ink-4",
|
|
@@ -1495,7 +1500,7 @@ function CardEyebrow({ className, ...props }) {
|
|
|
1495
1500
|
"div",
|
|
1496
1501
|
{
|
|
1497
1502
|
...props,
|
|
1498
|
-
className:
|
|
1503
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1499
1504
|
"flex justify-between items-center",
|
|
1500
1505
|
"font-mono text-[11px] uppercase tracking-[0.08em] text-ink-4",
|
|
1501
1506
|
className
|
|
@@ -1508,7 +1513,7 @@ function CardTitle({ className, ...props }) {
|
|
|
1508
1513
|
"h3",
|
|
1509
1514
|
{
|
|
1510
1515
|
...props,
|
|
1511
|
-
className:
|
|
1516
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1512
1517
|
"font-sans font-medium text-[20px] leading-[1.25] tracking-[-0.015em] text-ink",
|
|
1513
1518
|
className
|
|
1514
1519
|
)
|
|
@@ -1520,7 +1525,7 @@ function CardFeatureTitle({ className, ...props }) {
|
|
|
1520
1525
|
"h3",
|
|
1521
1526
|
{
|
|
1522
1527
|
...props,
|
|
1523
|
-
className:
|
|
1528
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1524
1529
|
"font-sans font-medium text-[26px] leading-[1.2] tracking-[-0.02em] text-ink",
|
|
1525
1530
|
className
|
|
1526
1531
|
)
|
|
@@ -1528,7 +1533,7 @@ function CardFeatureTitle({ className, ...props }) {
|
|
|
1528
1533
|
);
|
|
1529
1534
|
}
|
|
1530
1535
|
function CardBody({ className, ...props }) {
|
|
1531
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className:
|
|
1536
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn("text-[14px] leading-[1.55] text-ink-3", className) });
|
|
1532
1537
|
}
|
|
1533
1538
|
var CHANNEL_ICONS = {
|
|
1534
1539
|
slack: lucideReact.Hash,
|
|
@@ -1552,14 +1557,14 @@ function channelIcon(channel) {
|
|
|
1552
1557
|
}
|
|
1553
1558
|
function ChannelIcon({ channel, className, label }) {
|
|
1554
1559
|
const Icon = channelIcon(channel);
|
|
1555
|
-
return label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className:
|
|
1560
|
+
return label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: chunkNWGG5WFL_cjs.cn("size-4", className), role: "img", "aria-label": label }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: chunkNWGG5WFL_cjs.cn("size-4", className), "aria-hidden": true });
|
|
1556
1561
|
}
|
|
1557
1562
|
function Checkbox({ children, className, ...props }) {
|
|
1558
1563
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1559
1564
|
reactAriaComponents.Checkbox,
|
|
1560
1565
|
{
|
|
1561
1566
|
...props,
|
|
1562
|
-
className: (renderProps) =>
|
|
1567
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
1563
1568
|
// `relative` so RAC's visually-hidden <input> — which is absolutely
|
|
1564
1569
|
// positioned and is the element that actually receives focus — is
|
|
1565
1570
|
// laid out against THIS checkbox. Without a positioned ancestor here
|
|
@@ -1577,7 +1582,7 @@ function Checkbox({ children, className, ...props }) {
|
|
|
1577
1582
|
"span",
|
|
1578
1583
|
{
|
|
1579
1584
|
"aria-hidden": true,
|
|
1580
|
-
className:
|
|
1585
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1581
1586
|
"relative inline-flex items-center justify-center shrink-0",
|
|
1582
1587
|
"size-[18px] rounded-[4px] border bg-surface",
|
|
1583
1588
|
"border-ink-4",
|
|
@@ -1594,7 +1599,7 @@ function Checkbox({ children, className, ...props }) {
|
|
|
1594
1599
|
"svg",
|
|
1595
1600
|
{
|
|
1596
1601
|
viewBox: "0 0 12 12",
|
|
1597
|
-
className:
|
|
1602
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1598
1603
|
"size-3 text-surface transition-opacity duration-150",
|
|
1599
1604
|
renderProps.isSelected ? "opacity-100" : "opacity-0"
|
|
1600
1605
|
),
|
|
@@ -1631,7 +1636,7 @@ function CheckboxGroup({
|
|
|
1631
1636
|
reactAriaComponents.CheckboxGroup,
|
|
1632
1637
|
{
|
|
1633
1638
|
...props,
|
|
1634
|
-
className: (renderProps) =>
|
|
1639
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn("grid gap-2", typeof className === "function" ? className(renderProps) : className),
|
|
1635
1640
|
children: [
|
|
1636
1641
|
label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
|
|
1637
1642
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-3", children }),
|
|
@@ -1710,14 +1715,14 @@ function ColorInput({
|
|
|
1710
1715
|
isInvalid: invalid,
|
|
1711
1716
|
onBlur: settle,
|
|
1712
1717
|
...ariaLabel ? { "aria-label": ariaLabel } : {},
|
|
1713
|
-
className:
|
|
1718
|
+
className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5", className),
|
|
1714
1719
|
children: [
|
|
1715
1720
|
label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
|
|
1716
1721
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1717
1722
|
"div",
|
|
1718
1723
|
{
|
|
1719
1724
|
"data-disabled": isDisabled || void 0,
|
|
1720
|
-
className:
|
|
1725
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1721
1726
|
styles4.box(),
|
|
1722
1727
|
"flex items-center gap-2",
|
|
1723
1728
|
size === "sm" ? "pl-2" : "pl-2.5",
|
|
@@ -1731,7 +1736,7 @@ function ColorInput({
|
|
|
1731
1736
|
"aria-label": "Pick color",
|
|
1732
1737
|
disabled: isDisabled,
|
|
1733
1738
|
onClick: () => nativeRef.current?.click(),
|
|
1734
|
-
className:
|
|
1739
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1735
1740
|
"relative flex shrink-0 items-center justify-center rounded-sm border border-rule",
|
|
1736
1741
|
"cursor-pointer outline-none",
|
|
1737
1742
|
"focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]",
|
|
@@ -1764,7 +1769,7 @@ function ColorInput({
|
|
|
1764
1769
|
placeholder,
|
|
1765
1770
|
spellCheck: false,
|
|
1766
1771
|
autoComplete: "off",
|
|
1767
|
-
className:
|
|
1772
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1768
1773
|
styles4.content(),
|
|
1769
1774
|
"min-w-0 flex-1 bg-transparent font-mono outline-none",
|
|
1770
1775
|
"pl-0",
|
|
@@ -1805,7 +1810,7 @@ function Combobox({
|
|
|
1805
1810
|
{
|
|
1806
1811
|
...props,
|
|
1807
1812
|
allowsEmptyCollection,
|
|
1808
|
-
className: (renderProps) =>
|
|
1813
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
1809
1814
|
"grid grid-cols-1 gap-1.5",
|
|
1810
1815
|
typeof className === "function" ? className(renderProps) : className
|
|
1811
1816
|
),
|
|
@@ -1814,7 +1819,7 @@ function Combobox({
|
|
|
1814
1819
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1815
1820
|
"div",
|
|
1816
1821
|
{
|
|
1817
|
-
className:
|
|
1822
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1818
1823
|
// Box chrome on the wrapper; the inner <input> carries the padding
|
|
1819
1824
|
// + font so the chevron button sits inside the same border + ring.
|
|
1820
1825
|
styles4.box(),
|
|
@@ -1827,7 +1832,7 @@ function Combobox({
|
|
|
1827
1832
|
reactAriaComponents.Input,
|
|
1828
1833
|
{
|
|
1829
1834
|
placeholder,
|
|
1830
|
-
className:
|
|
1835
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1831
1836
|
"flex-1 min-w-0 bg-transparent outline-none",
|
|
1832
1837
|
styles4.content(),
|
|
1833
1838
|
inputClassName
|
|
@@ -1837,7 +1842,7 @@ function Combobox({
|
|
|
1837
1842
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1838
1843
|
reactAriaComponents.Button,
|
|
1839
1844
|
{
|
|
1840
|
-
className:
|
|
1845
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1841
1846
|
"shrink-0 flex items-center justify-center",
|
|
1842
1847
|
"size-7 rounded-pill",
|
|
1843
1848
|
"text-ink-3 hover:text-ink outline-none cursor-pointer"
|
|
@@ -1854,18 +1859,18 @@ function Combobox({
|
|
|
1854
1859
|
reactAriaComponents.Popover,
|
|
1855
1860
|
{
|
|
1856
1861
|
offset: 6,
|
|
1857
|
-
className:
|
|
1862
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1858
1863
|
"min-w-[var(--trigger-width)]",
|
|
1859
1864
|
"rounded-md border border-rule bg-surface p-1",
|
|
1860
1865
|
"shadow-[var(--shadow-raised)]",
|
|
1861
|
-
"entering:animate-
|
|
1862
|
-
"exiting:animate-
|
|
1866
|
+
"entering:animate-enter-slide-down",
|
|
1867
|
+
"exiting:animate-exit-slide-up"
|
|
1863
1868
|
),
|
|
1864
1869
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1865
1870
|
reactAriaComponents.ListBox,
|
|
1866
1871
|
{
|
|
1867
1872
|
className: "outline-none max-h-72 overflow-auto",
|
|
1868
|
-
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
1873
|
+
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: emptyMessage }),
|
|
1869
1874
|
children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1870
1875
|
ComboboxItem,
|
|
1871
1876
|
{
|
|
@@ -1893,7 +1898,7 @@ function TrailingSlot({ children }) {
|
|
|
1893
1898
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1894
1899
|
"span",
|
|
1895
1900
|
{
|
|
1896
|
-
className:
|
|
1901
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1897
1902
|
"ml-auto pl-2 shrink-0 inline-flex items-center",
|
|
1898
1903
|
// Hidden by default; revealed when the row is hovered or
|
|
1899
1904
|
// keyboard-focused. `group/combobox-item` is set on ComboboxItem.
|
|
@@ -1919,7 +1924,7 @@ function ComboboxItem(props) {
|
|
|
1919
1924
|
reactAriaComponents.ListBoxItem,
|
|
1920
1925
|
{
|
|
1921
1926
|
...props,
|
|
1922
|
-
className:
|
|
1927
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
1923
1928
|
// `group/combobox-item` exposes hover/focus state to the trailing
|
|
1924
1929
|
// slot so it can reveal itself only when the row is engaged.
|
|
1925
1930
|
"group/combobox-item",
|
|
@@ -2151,7 +2156,7 @@ function Kbd({ className, children, ...props }) {
|
|
|
2151
2156
|
"kbd",
|
|
2152
2157
|
{
|
|
2153
2158
|
...props,
|
|
2154
|
-
className:
|
|
2159
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2155
2160
|
"inline-flex items-center justify-center",
|
|
2156
2161
|
"font-mono text-[10.5px] leading-none text-ink-4",
|
|
2157
2162
|
"bg-surface-2 border border-rule rounded-[4px]",
|
|
@@ -2171,7 +2176,7 @@ function CommandHint({ combo, tone = "subtle", className }) {
|
|
|
2171
2176
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2172
2177
|
Kbd,
|
|
2173
2178
|
{
|
|
2174
|
-
className:
|
|
2179
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2175
2180
|
tone === "prominent" && "bg-ink text-surface border-transparent",
|
|
2176
2181
|
className
|
|
2177
2182
|
),
|
|
@@ -2192,7 +2197,7 @@ function Command({ combo, target, className, children }) {
|
|
|
2192
2197
|
const el = target ? root.querySelector(target) : root.firstElementChild;
|
|
2193
2198
|
el?.click();
|
|
2194
2199
|
});
|
|
2195
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: wrapperRef, className:
|
|
2200
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: wrapperRef, className: chunkNWGG5WFL_cjs.cn("relative inline-block", className), children: [
|
|
2196
2201
|
children,
|
|
2197
2202
|
discoveryActive ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2198
2203
|
"div",
|
|
@@ -2277,7 +2282,7 @@ function ConversationBriefCard({
|
|
|
2277
2282
|
isOpenDisabled = false,
|
|
2278
2283
|
className
|
|
2279
2284
|
}) {
|
|
2280
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
2285
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles.root(), className), children: [
|
|
2281
2286
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.icon(), children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "size-4", "aria-hidden": true }) }),
|
|
2282
2287
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.body(), children: [
|
|
2283
2288
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: styles.eyebrow(), children: eyebrow }),
|
|
@@ -2315,7 +2320,7 @@ function Select({
|
|
|
2315
2320
|
reactAriaComponents.Select,
|
|
2316
2321
|
{
|
|
2317
2322
|
...props,
|
|
2318
|
-
className: (renderProps) =>
|
|
2323
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
2319
2324
|
"grid grid-cols-1 gap-1.5",
|
|
2320
2325
|
typeof className === "function" ? className(renderProps) : className
|
|
2321
2326
|
),
|
|
@@ -2324,7 +2329,7 @@ function Select({
|
|
|
2324
2329
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2325
2330
|
reactAriaComponents.Button,
|
|
2326
2331
|
{
|
|
2327
|
-
className:
|
|
2332
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2328
2333
|
styles4.box(),
|
|
2329
2334
|
styles4.content(),
|
|
2330
2335
|
"flex items-center justify-between gap-3 text-left cursor-pointer",
|
|
@@ -2342,7 +2347,7 @@ function Select({
|
|
|
2342
2347
|
reactAriaComponents.Popover,
|
|
2343
2348
|
{
|
|
2344
2349
|
offset: 6,
|
|
2345
|
-
className:
|
|
2350
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2346
2351
|
// Match the trigger width exactly (RAC exposes --trigger-width on
|
|
2347
2352
|
// the Popover when anchored to a Select button).
|
|
2348
2353
|
"w-[var(--trigger-width)]",
|
|
@@ -2351,8 +2356,8 @@ function Select({
|
|
|
2351
2356
|
"z-[1300]",
|
|
2352
2357
|
"rounded-md border border-rule bg-surface p-1",
|
|
2353
2358
|
"shadow-[var(--shadow-raised)]",
|
|
2354
|
-
"entering:animate-
|
|
2355
|
-
"exiting:animate-
|
|
2359
|
+
"entering:animate-enter-slide-down",
|
|
2360
|
+
"exiting:animate-exit-slide-up",
|
|
2356
2361
|
popoverClassName
|
|
2357
2362
|
),
|
|
2358
2363
|
children: [
|
|
@@ -2366,7 +2371,7 @@ function Select({
|
|
|
2366
2371
|
},
|
|
2367
2372
|
option.id
|
|
2368
2373
|
)) }),
|
|
2369
|
-
options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
2374
|
+
options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: placeholder }) : null
|
|
2370
2375
|
]
|
|
2371
2376
|
}
|
|
2372
2377
|
)
|
|
@@ -2379,7 +2384,7 @@ function SelectItem(props) {
|
|
|
2379
2384
|
reactAriaComponents.ListBoxItem,
|
|
2380
2385
|
{
|
|
2381
2386
|
...props,
|
|
2382
|
-
className:
|
|
2387
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2383
2388
|
"flex items-center justify-between gap-3",
|
|
2384
2389
|
"rounded-[6px] px-3 py-2 text-[14px] text-ink-2",
|
|
2385
2390
|
"cursor-pointer outline-none select-none",
|
|
@@ -2436,7 +2441,7 @@ function ConversationBriefPreview({
|
|
|
2436
2441
|
react.useEffect(() => {
|
|
2437
2442
|
onSelectionChangeRef.current?.(contact, phoneNumber);
|
|
2438
2443
|
}, [contact, phoneNumber]);
|
|
2439
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
2444
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("flex flex-col gap-3", className), children: [
|
|
2440
2445
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
2441
2446
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[14px] font-semibold text-ink", children: brief.subject || names || "Prepared conversation" }),
|
|
2442
2447
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-mono text-[10.5px] text-ink-4", children: [
|
|
@@ -2450,7 +2455,7 @@ function ConversationBriefPreview({
|
|
|
2450
2455
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2451
2456
|
"div",
|
|
2452
2457
|
{
|
|
2453
|
-
className:
|
|
2458
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2454
2459
|
"rounded-md border border-rule-2 bg-surface-2/60 px-3 py-2.5",
|
|
2455
2460
|
"text-[13px] leading-relaxed text-ink-2 overflow-y-auto [scrollbar-width:thin]",
|
|
2456
2461
|
renderContent ? null : "whitespace-pre-wrap",
|
|
@@ -2464,7 +2469,7 @@ function ConversationBriefPreview({
|
|
|
2464
2469
|
{
|
|
2465
2470
|
"aria-label": "Edit brief",
|
|
2466
2471
|
onPress: onEdit,
|
|
2467
|
-
className:
|
|
2472
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2468
2473
|
"absolute right-1.5 top-1.5 inline-flex size-7 cursor-pointer items-center justify-center",
|
|
2469
2474
|
"rounded-md bg-surface/80 text-ink-3 outline-none transition-opacity",
|
|
2470
2475
|
"opacity-0 group-hover/brief-content:opacity-100 focus-visible:opacity-100",
|
|
@@ -2500,7 +2505,7 @@ function ConversationBriefPreview({
|
|
|
2500
2505
|
controls,
|
|
2501
2506
|
callDisabledReason ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] text-warning", children: callDisabledReason }) : null,
|
|
2502
2507
|
isCallButtonHidden ? null : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2503
|
-
|
|
2508
|
+
chunkNWGG5WFL_cjs.Button,
|
|
2504
2509
|
{
|
|
2505
2510
|
isDisabled: isCallDisabled || !isOpen || phoneNumber === "" || !contact,
|
|
2506
2511
|
onPress: () => contact && onCall(contact, phoneNumber),
|
|
@@ -2528,18 +2533,18 @@ function ModalContent({
|
|
|
2528
2533
|
{
|
|
2529
2534
|
isDismissable,
|
|
2530
2535
|
...props,
|
|
2531
|
-
className: (renderProps) =>
|
|
2536
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
2532
2537
|
"fixed inset-0 z-50 flex items-center justify-center p-4",
|
|
2533
2538
|
// Warm ink scrim — stays in the Proteos palette (no pure black).
|
|
2534
2539
|
"bg-[color-mix(in_oklab,var(--color-ink)_40%,transparent)]",
|
|
2535
|
-
"entering:animate-
|
|
2536
|
-
"exiting:animate-
|
|
2540
|
+
"entering:animate-enter-fade",
|
|
2541
|
+
"exiting:animate-exit-fade",
|
|
2537
2542
|
typeof className === "function" ? className(renderProps) : className
|
|
2538
2543
|
),
|
|
2539
2544
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2540
2545
|
reactAriaComponents.Modal,
|
|
2541
2546
|
{
|
|
2542
|
-
className:
|
|
2547
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2543
2548
|
"w-full max-w-lg",
|
|
2544
2549
|
// Cap the panel at the viewport (minus the overlay's p-4) and lay it
|
|
2545
2550
|
// out as a column so a tall body scrolls instead of overflowing the
|
|
@@ -2547,8 +2552,8 @@ function ModalContent({
|
|
|
2547
2552
|
"flex flex-col max-h-[calc(100dvh-2rem)]",
|
|
2548
2553
|
"bg-surface border border-rule rounded-lg",
|
|
2549
2554
|
"shadow-[var(--shadow-float)]",
|
|
2550
|
-
"entering:animate-
|
|
2551
|
-
"exiting:animate-
|
|
2555
|
+
"entering:animate-enter-zoom",
|
|
2556
|
+
"exiting:animate-exit-zoom",
|
|
2552
2557
|
modalClassName
|
|
2553
2558
|
),
|
|
2554
2559
|
children: /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Dialog, { className: "outline-none flex flex-col min-h-0 overflow-hidden", children })
|
|
@@ -2558,7 +2563,7 @@ function ModalContent({
|
|
|
2558
2563
|
);
|
|
2559
2564
|
}
|
|
2560
2565
|
function ModalHeader({ className, ...props }) {
|
|
2561
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className:
|
|
2566
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: chunkNWGG5WFL_cjs.cn("shrink-0 px-5 pt-5 pb-3 flex flex-col gap-1.5", className) });
|
|
2562
2567
|
}
|
|
2563
2568
|
function ModalTitle({ className, ...props }) {
|
|
2564
2569
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2566,7 +2571,7 @@ function ModalTitle({ className, ...props }) {
|
|
|
2566
2571
|
{
|
|
2567
2572
|
slot: "title",
|
|
2568
2573
|
...props,
|
|
2569
|
-
className:
|
|
2574
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2570
2575
|
"font-sans font-medium text-[20px] leading-[1.25] tracking-[-0.015em] text-ink",
|
|
2571
2576
|
className
|
|
2572
2577
|
)
|
|
@@ -2574,14 +2579,14 @@ function ModalTitle({ className, ...props }) {
|
|
|
2574
2579
|
);
|
|
2575
2580
|
}
|
|
2576
2581
|
function ModalDescription({ className, ...props }) {
|
|
2577
|
-
return /* @__PURE__ */ jsxRuntime.jsx("p", { ...props, className:
|
|
2582
|
+
return /* @__PURE__ */ jsxRuntime.jsx("p", { ...props, className: chunkNWGG5WFL_cjs.cn("text-[14px] leading-[1.55] text-ink-3", className) });
|
|
2578
2583
|
}
|
|
2579
2584
|
function ModalBody({ className, ...props }) {
|
|
2580
2585
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2581
2586
|
"div",
|
|
2582
2587
|
{
|
|
2583
2588
|
...props,
|
|
2584
|
-
className:
|
|
2589
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2585
2590
|
// The scroll region: caps at the panel's spare height and scrolls when
|
|
2586
2591
|
// the content is taller, leaving header + footer pinned.
|
|
2587
2592
|
"min-h-0 overflow-y-auto px-5 py-3 flex flex-col gap-3 text-[14px] text-ink-2",
|
|
@@ -2595,7 +2600,7 @@ function ModalFooter({ className, ...props }) {
|
|
|
2595
2600
|
"div",
|
|
2596
2601
|
{
|
|
2597
2602
|
...props,
|
|
2598
|
-
className:
|
|
2603
|
+
className: chunkNWGG5WFL_cjs.cn("shrink-0 flex justify-end items-center gap-2", "px-5 pt-3 pb-5", className)
|
|
2599
2604
|
}
|
|
2600
2605
|
);
|
|
2601
2606
|
}
|
|
@@ -2757,12 +2762,12 @@ function CurrencyInput({
|
|
|
2757
2762
|
const selectedSymbol = currencyOptions.find((option) => option.code === code)?.symbol ?? code;
|
|
2758
2763
|
const styles4 = fieldControlStyles({ size, appearance, ...isInvalid ? { invalid: true } : {} });
|
|
2759
2764
|
const focusWithin = appearance === "cell" ? "focus-within:border-accent focus-within:shadow-none" : "focus-within:border-accent focus-within:shadow-[var(--shadow-focus)]";
|
|
2760
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
2761
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
2765
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5", className), children: [
|
|
2766
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles4.box(), "flex items-center gap-1 pr-1", focusWithin), children: [
|
|
2762
2767
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2763
2768
|
"input",
|
|
2764
2769
|
{
|
|
2765
|
-
className:
|
|
2770
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2766
2771
|
"min-w-0 flex-1 bg-transparent text-ink outline-none tabular-nums",
|
|
2767
2772
|
styles4.content(),
|
|
2768
2773
|
// Sit a touch lower than a standard field by trimming the vertical
|
|
@@ -2803,7 +2808,7 @@ function CurrencyInput({
|
|
|
2803
2808
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2804
2809
|
reactAriaComponents.Button,
|
|
2805
2810
|
{
|
|
2806
|
-
className:
|
|
2811
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2807
2812
|
"inline-flex h-6 shrink-0 items-center gap-0.5 rounded-md px-1.5",
|
|
2808
2813
|
"text-ink-2 outline-none hover:bg-surface-2 hover:text-ink",
|
|
2809
2814
|
"cursor-pointer focus-visible:shadow-[var(--shadow-focus)]",
|
|
@@ -2819,18 +2824,18 @@ function CurrencyInput({
|
|
|
2819
2824
|
reactAriaComponents.Popover,
|
|
2820
2825
|
{
|
|
2821
2826
|
offset: 6,
|
|
2822
|
-
className:
|
|
2827
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2823
2828
|
"min-w-[9rem] rounded-md border border-rule bg-surface p-1",
|
|
2824
2829
|
"shadow-[var(--shadow-raised)]",
|
|
2825
|
-
"entering:animate-
|
|
2826
|
-
"exiting:animate-
|
|
2830
|
+
"entering:animate-enter-slide-down",
|
|
2831
|
+
"exiting:animate-exit-slide-up"
|
|
2827
2832
|
),
|
|
2828
2833
|
children: /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ListBox, { className: "max-h-72 overflow-auto outline-none", children: currencyOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2829
2834
|
reactAriaComponents.ListBoxItem,
|
|
2830
2835
|
{
|
|
2831
2836
|
id: option.code,
|
|
2832
2837
|
textValue: `${option.symbol ?? ""} ${option.code}`,
|
|
2833
|
-
className:
|
|
2838
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2834
2839
|
"flex items-center gap-2 rounded-[6px] px-2.5 py-1.5 text-[14px] text-ink-2",
|
|
2835
2840
|
"cursor-pointer select-none outline-none",
|
|
2836
2841
|
"data-[hovered]:bg-surface-2 data-[hovered]:text-ink",
|
|
@@ -2892,12 +2897,12 @@ function DateTimeCell({
|
|
|
2892
2897
|
}
|
|
2893
2898
|
function BooleanCell({ value, className }) {
|
|
2894
2899
|
if (value === true) {
|
|
2895
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "true", className:
|
|
2900
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "true", className: chunkNWGG5WFL_cjs.cn("text-success", className), children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) });
|
|
2896
2901
|
}
|
|
2897
2902
|
if (value === false) {
|
|
2898
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "false", className:
|
|
2903
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-label": "false", className: chunkNWGG5WFL_cjs.cn("text-ink-4", className), children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, {}) });
|
|
2899
2904
|
}
|
|
2900
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
2905
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4", className), children: "\u2014" });
|
|
2901
2906
|
}
|
|
2902
2907
|
function CheckIcon() {
|
|
2903
2908
|
return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2916,7 +2921,7 @@ function MinusIcon() {
|
|
|
2916
2921
|
}
|
|
2917
2922
|
function TruncateCell({ value, title, className }) {
|
|
2918
2923
|
const tooltip = title ?? (typeof value === "string" ? value : void 0);
|
|
2919
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
2924
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("truncate min-w-0", className), title: tooltip, children: value ?? "\u2014" });
|
|
2920
2925
|
}
|
|
2921
2926
|
function LinkCell({ children, onClick, className, ...props }) {
|
|
2922
2927
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2927,7 +2932,7 @@ function LinkCell({ children, onClick, className, ...props }) {
|
|
|
2927
2932
|
e.stopPropagation();
|
|
2928
2933
|
onClick?.(e);
|
|
2929
2934
|
},
|
|
2930
|
-
className:
|
|
2935
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
2931
2936
|
"text-ink underline decoration-rule underline-offset-2 hover:decoration-ink",
|
|
2932
2937
|
className
|
|
2933
2938
|
),
|
|
@@ -2948,7 +2953,7 @@ var tableStyles = tailwindVariants.tv({
|
|
|
2948
2953
|
defaultVariants: { variant: "panel" }
|
|
2949
2954
|
});
|
|
2950
2955
|
function Table({ variant, className, ...props }) {
|
|
2951
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "grid", ...props, className:
|
|
2956
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "grid", ...props, className: chunkNWGG5WFL_cjs.cn(tableStyles({ variant }), className) });
|
|
2952
2957
|
}
|
|
2953
2958
|
var tableHeaderStyles = tailwindVariants.tv({
|
|
2954
2959
|
base: [
|
|
@@ -2964,7 +2969,7 @@ var tableHeaderStyles = tailwindVariants.tv({
|
|
|
2964
2969
|
defaultVariants: { sticky: false }
|
|
2965
2970
|
});
|
|
2966
2971
|
function TableHeader({ sticky, className, ...props }) {
|
|
2967
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "row", ...props, className:
|
|
2972
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "row", ...props, className: chunkNWGG5WFL_cjs.cn(tableHeaderStyles({ sticky }), className) });
|
|
2968
2973
|
}
|
|
2969
2974
|
var tableHeaderCellStyles = tailwindVariants.tv({
|
|
2970
2975
|
base: [
|
|
@@ -3141,7 +3146,7 @@ function TableHeaderCell({
|
|
|
3141
3146
|
style: { ...widthStyle, ...style },
|
|
3142
3147
|
onClick: handleClick,
|
|
3143
3148
|
onKeyDown: handleKeyDown,
|
|
3144
|
-
className:
|
|
3149
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3145
3150
|
tableHeaderCellStyles({ align, interactive: isSortable, active, sticky }),
|
|
3146
3151
|
"group/header",
|
|
3147
3152
|
dragState.kind === "dragging" ? "opacity-40" : "",
|
|
@@ -3154,7 +3159,7 @@ function TableHeaderCell({
|
|
|
3154
3159
|
ref: handleRef,
|
|
3155
3160
|
"data-dnd-handle": "true",
|
|
3156
3161
|
"aria-hidden": "true",
|
|
3157
|
-
className:
|
|
3162
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3158
3163
|
"inline-flex items-center justify-center shrink-0 -ml-1.5",
|
|
3159
3164
|
"cursor-grab active:cursor-grabbing text-ink-4",
|
|
3160
3165
|
"opacity-0 group-hover/header:opacity-100 transition-opacity"
|
|
@@ -3165,7 +3170,7 @@ function TableHeaderCell({
|
|
|
3165
3170
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3166
3171
|
"span",
|
|
3167
3172
|
{
|
|
3168
|
-
className:
|
|
3173
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3169
3174
|
"flex items-center gap-[7px] min-w-0 flex-1",
|
|
3170
3175
|
align === "right" ? "justify-end" : align === "center" ? "justify-center" : "justify-start"
|
|
3171
3176
|
),
|
|
@@ -3185,7 +3190,7 @@ function TableHeaderCell({
|
|
|
3185
3190
|
e.stopPropagation();
|
|
3186
3191
|
onRemove();
|
|
3187
3192
|
},
|
|
3188
|
-
className:
|
|
3193
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3189
3194
|
"inline-flex items-center justify-center shrink-0 size-4 rounded",
|
|
3190
3195
|
"text-ink-4 hover:text-ink hover:bg-surface-2",
|
|
3191
3196
|
"opacity-0 group-hover/header:opacity-100 focus-visible:opacity-100",
|
|
@@ -3198,7 +3203,7 @@ function TableHeaderCell({
|
|
|
3198
3203
|
"div",
|
|
3199
3204
|
{
|
|
3200
3205
|
"aria-hidden": "true",
|
|
3201
|
-
className:
|
|
3206
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3202
3207
|
"pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-accent",
|
|
3203
3208
|
dragState.edge === "left" ? "-left-px" : "-right-px"
|
|
3204
3209
|
)
|
|
@@ -3223,7 +3228,7 @@ function TableHeaderCell({
|
|
|
3223
3228
|
onPointerDown: startResize,
|
|
3224
3229
|
onKeyDown: resizeByKey,
|
|
3225
3230
|
onClick: (e) => e.stopPropagation(),
|
|
3226
|
-
className:
|
|
3231
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3227
3232
|
"group/resize absolute inset-y-0 -right-1 z-10 w-2 cursor-col-resize outline-none",
|
|
3228
3233
|
"flex justify-center"
|
|
3229
3234
|
),
|
|
@@ -3231,7 +3236,7 @@ function TableHeaderCell({
|
|
|
3231
3236
|
"span",
|
|
3232
3237
|
{
|
|
3233
3238
|
"aria-hidden": "true",
|
|
3234
|
-
className:
|
|
3239
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3235
3240
|
"h-full w-0.5 transition-colors",
|
|
3236
3241
|
isResizing ? "bg-accent" : "bg-transparent group-hover/resize:bg-accent group-focus-visible/resize:bg-accent"
|
|
3237
3242
|
)
|
|
@@ -3252,7 +3257,7 @@ function SortIcon({ dir, active }) {
|
|
|
3252
3257
|
height: "11",
|
|
3253
3258
|
viewBox: "0 0 8 11",
|
|
3254
3259
|
"aria-hidden": "true",
|
|
3255
|
-
className:
|
|
3260
|
+
className: chunkNWGG5WFL_cjs.cn("shrink-0", active ? "text-accent" : "text-ink-4"),
|
|
3256
3261
|
children: [
|
|
3257
3262
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 0.5 L7.5 4 L0.5 4 Z", fill: "currentColor", opacity: dir === "asc" ? 1 : 0.22 }),
|
|
3258
3263
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10.5 L0.5 7 L7.5 7 Z", fill: "currentColor", opacity: dir === "desc" ? 1 : 0.22 })
|
|
@@ -3266,7 +3271,7 @@ function TableHeaderSpacer({ className, ...props }) {
|
|
|
3266
3271
|
{
|
|
3267
3272
|
"aria-hidden": "true",
|
|
3268
3273
|
...props,
|
|
3269
|
-
className:
|
|
3274
|
+
className: chunkNWGG5WFL_cjs.cn("flex-1 h-[36px] border-r-0", "bg-transparent pointer-events-none", className)
|
|
3270
3275
|
}
|
|
3271
3276
|
);
|
|
3272
3277
|
}
|
|
@@ -3286,7 +3291,7 @@ var tableBodyStyles = tailwindVariants.tv({
|
|
|
3286
3291
|
base: ["flex-1 min-h-0 overflow-auto relative", ...scrollbarChrome]
|
|
3287
3292
|
});
|
|
3288
3293
|
function TableBody({ className, ref, ...props }) {
|
|
3289
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "rowgroup", ref, ...props, className:
|
|
3294
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "rowgroup", ref, ...props, className: chunkNWGG5WFL_cjs.cn(tableBodyStyles(), className) });
|
|
3290
3295
|
}
|
|
3291
3296
|
var tableScrollerStyles = tailwindVariants.tv({
|
|
3292
3297
|
base: ["relative flex-1 min-h-0 overflow-auto", ...scrollbarChrome]
|
|
@@ -3298,7 +3303,7 @@ function TableScroller({ className, ref, ...props }) {
|
|
|
3298
3303
|
role: "presentation",
|
|
3299
3304
|
ref,
|
|
3300
3305
|
...props,
|
|
3301
|
-
className:
|
|
3306
|
+
className: chunkNWGG5WFL_cjs.cn(tableScrollerStyles(), className)
|
|
3302
3307
|
}
|
|
3303
3308
|
);
|
|
3304
3309
|
}
|
|
@@ -3350,7 +3355,7 @@ function TableRow({
|
|
|
3350
3355
|
onClick?.(e);
|
|
3351
3356
|
onRowClick?.(e);
|
|
3352
3357
|
},
|
|
3353
|
-
className:
|
|
3358
|
+
className: chunkNWGG5WFL_cjs.cn(tableRowStyles({ alt, interactive, absolute }), className)
|
|
3354
3359
|
}
|
|
3355
3360
|
);
|
|
3356
3361
|
}
|
|
@@ -3404,7 +3409,7 @@ function TableCell({
|
|
|
3404
3409
|
role: "gridcell",
|
|
3405
3410
|
...props,
|
|
3406
3411
|
style: { ...widthStyle, ...style },
|
|
3407
|
-
className:
|
|
3412
|
+
className: chunkNWGG5WFL_cjs.cn(tableCellStyles({ align, mono, ink, sticky }), className)
|
|
3408
3413
|
}
|
|
3409
3414
|
);
|
|
3410
3415
|
}
|
|
@@ -3419,7 +3424,7 @@ function DataTableEmpty({
|
|
|
3419
3424
|
"div",
|
|
3420
3425
|
{
|
|
3421
3426
|
role: "status",
|
|
3422
|
-
className:
|
|
3427
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3423
3428
|
"flex flex-col items-center justify-center gap-2",
|
|
3424
3429
|
"px-5 py-16 text-center",
|
|
3425
3430
|
"font-sans text-[13px] text-ink-3",
|
|
@@ -3439,7 +3444,7 @@ function DataTableError({ error, onRetry, className }) {
|
|
|
3439
3444
|
"div",
|
|
3440
3445
|
{
|
|
3441
3446
|
role: "alert",
|
|
3442
|
-
className:
|
|
3447
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3443
3448
|
"flex flex-col items-center justify-center gap-3",
|
|
3444
3449
|
"px-5 py-16 text-center",
|
|
3445
3450
|
"font-sans text-[13px] text-ink-3",
|
|
@@ -3448,7 +3453,7 @@ function DataTableError({ error, onRetry, className }) {
|
|
|
3448
3453
|
children: [
|
|
3449
3454
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-danger text-[14px]", children: "Something went wrong" }),
|
|
3450
3455
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-ink-3 max-w-[48ch] font-mono text-[12px]", children: error.message }),
|
|
3451
|
-
onRetry ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3456
|
+
onRetry ? /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "sm", onPress: onRetry, children: "Retry" }) : null
|
|
3452
3457
|
]
|
|
3453
3458
|
}
|
|
3454
3459
|
);
|
|
@@ -3467,7 +3472,7 @@ function DataTableSkeleton({
|
|
|
3467
3472
|
TableCell,
|
|
3468
3473
|
{
|
|
3469
3474
|
width: w,
|
|
3470
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3475
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Skeleton, { shape: "text", className: "h-3 max-w-[60%]" })
|
|
3471
3476
|
},
|
|
3472
3477
|
colIdx
|
|
3473
3478
|
))
|
|
@@ -3746,12 +3751,12 @@ function DataTable({
|
|
|
3746
3751
|
{
|
|
3747
3752
|
...ariaLabel !== void 0 ? { "aria-label": ariaLabel } : {},
|
|
3748
3753
|
variant,
|
|
3749
|
-
className:
|
|
3754
|
+
className: chunkNWGG5WFL_cjs.cn("flex-1 min-h-0", className),
|
|
3750
3755
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3751
3756
|
TableScroller,
|
|
3752
3757
|
{
|
|
3753
3758
|
ref: scrollerRef,
|
|
3754
|
-
className:
|
|
3759
|
+
className: chunkNWGG5WFL_cjs.cn("scroll-pt-[36px]", bodyAfter ? "scroll-pb-8" : void 0),
|
|
3755
3760
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", style: { minWidth: minPanelWidth }, children: [
|
|
3756
3761
|
headerGroups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(TableHeader, { sticky: true, children: [
|
|
3757
3762
|
group.headers.map((header) => {
|
|
@@ -3838,7 +3843,7 @@ function DataTable({
|
|
|
3838
3843
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3839
3844
|
"div",
|
|
3840
3845
|
{
|
|
3841
|
-
className:
|
|
3846
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3842
3847
|
"sticky bottom-0 z-[4] flex items-center h-8 px-0.5",
|
|
3843
3848
|
"border-t border-rule-2 bg-bg"
|
|
3844
3849
|
),
|
|
@@ -3858,7 +3863,7 @@ function GroupHeaderRow({ style, children }) {
|
|
|
3858
3863
|
{
|
|
3859
3864
|
absolute: true,
|
|
3860
3865
|
style,
|
|
3861
|
-
className:
|
|
3866
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3862
3867
|
"bg-surface-2 border-b border-rule",
|
|
3863
3868
|
"font-mono text-[11px] uppercase tracking-[0.06em] text-ink-3"
|
|
3864
3869
|
),
|
|
@@ -3880,7 +3885,7 @@ function DataRow({
|
|
|
3880
3885
|
const cells = row.getVisibleCells().map((cell) => {
|
|
3881
3886
|
const meta = cell.column.columnDef.meta;
|
|
3882
3887
|
const cellSize = cell.column.getSize() || void 0;
|
|
3883
|
-
const cellClassName =
|
|
3888
|
+
const cellClassName = chunkNWGG5WFL_cjs.cn(
|
|
3884
3889
|
columnBorders ? "border-r border-rule-2" : void 0,
|
|
3885
3890
|
meta?.cellClassName
|
|
3886
3891
|
);
|
|
@@ -3923,7 +3928,7 @@ function LoaderRow() {
|
|
|
3923
3928
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3924
3929
|
"div",
|
|
3925
3930
|
{
|
|
3926
|
-
className:
|
|
3931
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
3927
3932
|
"flex items-center justify-center gap-3",
|
|
3928
3933
|
"h-8 font-mono text-[11px] tracking-[0.04em]",
|
|
3929
3934
|
"text-ink-4"
|
|
@@ -4015,7 +4020,7 @@ function CalendarSurface() {
|
|
|
4015
4020
|
{
|
|
4016
4021
|
slot: "previous",
|
|
4017
4022
|
"aria-label": "Previous month",
|
|
4018
|
-
className:
|
|
4023
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4019
4024
|
"size-7 rounded-md inline-flex items-center justify-center",
|
|
4020
4025
|
"text-ink-3 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
|
|
4021
4026
|
"focus-visible:shadow-[var(--shadow-focus)]"
|
|
@@ -4029,7 +4034,7 @@ function CalendarSurface() {
|
|
|
4029
4034
|
{
|
|
4030
4035
|
slot: "next",
|
|
4031
4036
|
"aria-label": "Next month",
|
|
4032
|
-
className:
|
|
4037
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4033
4038
|
"size-7 rounded-md inline-flex items-center justify-center",
|
|
4034
4039
|
"text-ink-3 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
|
|
4035
4040
|
"focus-visible:shadow-[var(--shadow-focus)]"
|
|
@@ -4042,7 +4047,7 @@ function CalendarSurface() {
|
|
|
4042
4047
|
/* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4043
4048
|
reactAriaComponents.CalendarHeaderCell,
|
|
4044
4049
|
{
|
|
4045
|
-
className:
|
|
4050
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4046
4051
|
"font-mono text-[10.5px] uppercase tracking-[0.08em] text-ink-4",
|
|
4047
4052
|
"pb-2 text-center"
|
|
4048
4053
|
),
|
|
@@ -4053,7 +4058,7 @@ function CalendarSurface() {
|
|
|
4053
4058
|
reactAriaComponents.CalendarCell,
|
|
4054
4059
|
{
|
|
4055
4060
|
date,
|
|
4056
|
-
className:
|
|
4061
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4057
4062
|
// aspect-square + table-fixed makes each cell a perfect
|
|
4058
4063
|
// square that scales with popover width.
|
|
4059
4064
|
"aspect-square flex items-center justify-center cursor-pointer",
|
|
@@ -4062,7 +4067,7 @@ function CalendarSurface() {
|
|
|
4062
4067
|
"data-[outside-month]:text-ink-4",
|
|
4063
4068
|
"data-[hovered]:bg-surface-2 data-[hovered]:text-ink",
|
|
4064
4069
|
"data-[focus-visible]:shadow-[var(--shadow-focus)]",
|
|
4065
|
-
"data-[selected]:bg-accent data-[selected]:text-
|
|
4070
|
+
"data-[selected]:bg-accent data-[selected]:text-tile-fg",
|
|
4066
4071
|
"data-[selected]:data-[hovered]:bg-accent-2",
|
|
4067
4072
|
"data-[disabled]:opacity-30 data-[disabled]:cursor-not-allowed",
|
|
4068
4073
|
"data-[unavailable]:line-through data-[unavailable]:text-ink-4"
|
|
@@ -4087,7 +4092,7 @@ function DatePicker({
|
|
|
4087
4092
|
reactAriaComponents.DatePicker,
|
|
4088
4093
|
{
|
|
4089
4094
|
...props,
|
|
4090
|
-
className: (renderProps) =>
|
|
4095
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
4091
4096
|
"grid grid-cols-1 gap-1.5",
|
|
4092
4097
|
typeof className === "function" ? className(renderProps) : className
|
|
4093
4098
|
),
|
|
@@ -4096,7 +4101,7 @@ function DatePicker({
|
|
|
4096
4101
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4097
4102
|
reactAriaComponents.Group,
|
|
4098
4103
|
{
|
|
4099
|
-
className:
|
|
4104
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4100
4105
|
// Box chrome on the wrapper; the DateInput inside carries padding +
|
|
4101
4106
|
// font so the calendar trigger sits inside the same border + ring.
|
|
4102
4107
|
styles4.box(),
|
|
@@ -4107,7 +4112,7 @@ function DatePicker({
|
|
|
4107
4112
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4108
4113
|
reactAriaComponents.DateInput,
|
|
4109
4114
|
{
|
|
4110
|
-
className:
|
|
4115
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4111
4116
|
"flex-1 flex items-center min-w-0 text-ink",
|
|
4112
4117
|
styles4.content(),
|
|
4113
4118
|
// Tabular alignment for date segments — overrides content's
|
|
@@ -4118,12 +4123,12 @@ function DatePicker({
|
|
|
4118
4123
|
reactAriaComponents.DateSegment,
|
|
4119
4124
|
{
|
|
4120
4125
|
segment,
|
|
4121
|
-
className:
|
|
4126
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4122
4127
|
"px-px tabular-nums outline-none select-none",
|
|
4123
4128
|
"data-[placeholder]:text-ink-4",
|
|
4124
4129
|
"data-[type=literal]:text-ink-4",
|
|
4125
4130
|
// segment focus treatment: indigo fill, paper text
|
|
4126
|
-
"data-[focused]:bg-accent data-[focused]:text-
|
|
4131
|
+
"data-[focused]:bg-accent data-[focused]:text-tile-fg data-[focused]:rounded-[3px]",
|
|
4127
4132
|
"data-[disabled]:cursor-not-allowed"
|
|
4128
4133
|
)
|
|
4129
4134
|
}
|
|
@@ -4133,7 +4138,7 @@ function DatePicker({
|
|
|
4133
4138
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4134
4139
|
reactAriaComponents.Button,
|
|
4135
4140
|
{
|
|
4136
|
-
className:
|
|
4141
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4137
4142
|
"shrink-0 inline-flex items-center justify-center",
|
|
4138
4143
|
"size-7 rounded-md",
|
|
4139
4144
|
"text-ink-3 hover:text-ink hover:bg-surface-2",
|
|
@@ -4153,7 +4158,7 @@ function DatePicker({
|
|
|
4153
4158
|
reactAriaComponents.Popover,
|
|
4154
4159
|
{
|
|
4155
4160
|
offset: 6,
|
|
4156
|
-
className:
|
|
4161
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4157
4162
|
// Match the anchoring field's width exactly. `--trigger-width` is
|
|
4158
4163
|
// set by RAC on the Popover when it's inside a DatePicker. Floor at
|
|
4159
4164
|
// 18rem so the calendar stays legible when the input is unusually
|
|
@@ -4162,8 +4167,8 @@ function DatePicker({
|
|
|
4162
4167
|
"w-[var(--trigger-width)] min-w-[18rem] max-w-[500px]",
|
|
4163
4168
|
"rounded-md border border-rule bg-surface p-4",
|
|
4164
4169
|
"shadow-[var(--shadow-raised)]",
|
|
4165
|
-
"entering:animate-
|
|
4166
|
-
"exiting:animate-
|
|
4170
|
+
"entering:animate-enter-slide-down",
|
|
4171
|
+
"exiting:animate-exit-slide-up"
|
|
4167
4172
|
),
|
|
4168
4173
|
children: /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Dialog, { className: "outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(CalendarSurface, {}) })
|
|
4169
4174
|
}
|
|
@@ -4172,12 +4177,12 @@ function DatePicker({
|
|
|
4172
4177
|
}
|
|
4173
4178
|
);
|
|
4174
4179
|
}
|
|
4175
|
-
var segmentStyles =
|
|
4180
|
+
var segmentStyles = chunkNWGG5WFL_cjs.cn(
|
|
4176
4181
|
"px-px tabular-nums outline-none select-none",
|
|
4177
4182
|
"data-[placeholder]:text-ink-4",
|
|
4178
4183
|
"data-[type=literal]:text-ink-4",
|
|
4179
4184
|
// segment focus treatment: indigo fill, paper text
|
|
4180
|
-
"data-[focused]:bg-accent data-[focused]:text-
|
|
4185
|
+
"data-[focused]:bg-accent data-[focused]:text-tile-fg data-[focused]:rounded-[3px]",
|
|
4181
4186
|
"data-[disabled]:cursor-not-allowed"
|
|
4182
4187
|
);
|
|
4183
4188
|
function PopoverTimeField({
|
|
@@ -4203,7 +4208,7 @@ function PopoverTimeField({
|
|
|
4203
4208
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4204
4209
|
reactAriaComponents.DateInput,
|
|
4205
4210
|
{
|
|
4206
|
-
className:
|
|
4211
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4207
4212
|
"inline-flex items-center rounded-md border border-rule bg-surface px-2.5 py-1.5",
|
|
4208
4213
|
"font-mono text-[13px] text-ink",
|
|
4209
4214
|
"focus-within:border-accent focus-within:shadow-[var(--shadow-focus)]",
|
|
@@ -4242,7 +4247,7 @@ function DateTimePicker({
|
|
|
4242
4247
|
granularity,
|
|
4243
4248
|
hideTimeZone,
|
|
4244
4249
|
shouldCloseOnSelect,
|
|
4245
|
-
className: (renderProps) =>
|
|
4250
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
4246
4251
|
"grid grid-cols-1 gap-1.5",
|
|
4247
4252
|
typeof className === "function" ? className(renderProps) : className
|
|
4248
4253
|
),
|
|
@@ -4251,7 +4256,7 @@ function DateTimePicker({
|
|
|
4251
4256
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4252
4257
|
reactAriaComponents.Group,
|
|
4253
4258
|
{
|
|
4254
|
-
className:
|
|
4259
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4255
4260
|
// Box chrome on the wrapper; the DateInput inside carries padding +
|
|
4256
4261
|
// font so the calendar trigger sits inside the same border + ring.
|
|
4257
4262
|
styles4.box(),
|
|
@@ -4262,7 +4267,7 @@ function DateTimePicker({
|
|
|
4262
4267
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4263
4268
|
reactAriaComponents.DateInput,
|
|
4264
4269
|
{
|
|
4265
|
-
className:
|
|
4270
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4266
4271
|
"flex-1 flex items-center min-w-0 text-ink",
|
|
4267
4272
|
styles4.content(),
|
|
4268
4273
|
// Tabular alignment for date/time segments — overrides content's
|
|
@@ -4275,7 +4280,7 @@ function DateTimePicker({
|
|
|
4275
4280
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4276
4281
|
reactAriaComponents.Button,
|
|
4277
4282
|
{
|
|
4278
|
-
className:
|
|
4283
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4279
4284
|
"shrink-0 inline-flex items-center justify-center",
|
|
4280
4285
|
"size-7 rounded-md",
|
|
4281
4286
|
"text-ink-3 hover:text-ink hover:bg-surface-2",
|
|
@@ -4295,7 +4300,7 @@ function DateTimePicker({
|
|
|
4295
4300
|
reactAriaComponents.Popover,
|
|
4296
4301
|
{
|
|
4297
4302
|
offset: 6,
|
|
4298
|
-
className:
|
|
4303
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4299
4304
|
// Match the anchoring field's width exactly. `--trigger-width` is
|
|
4300
4305
|
// set by RAC on the Popover when it's inside a DatePicker. Floor at
|
|
4301
4306
|
// 18rem so the calendar stays legible when the input is unusually
|
|
@@ -4304,8 +4309,8 @@ function DateTimePicker({
|
|
|
4304
4309
|
"w-[var(--trigger-width)] min-w-[18rem] max-w-[500px]",
|
|
4305
4310
|
"rounded-md border border-rule bg-surface p-4",
|
|
4306
4311
|
"shadow-[var(--shadow-raised)]",
|
|
4307
|
-
"entering:animate-
|
|
4308
|
-
"exiting:animate-
|
|
4312
|
+
"entering:animate-enter-slide-down",
|
|
4313
|
+
"exiting:animate-exit-slide-up"
|
|
4309
4314
|
),
|
|
4310
4315
|
children: /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Dialog, { className: "outline-none", children: [
|
|
4311
4316
|
/* @__PURE__ */ jsxRuntime.jsx(CalendarSurface, {}),
|
|
@@ -4365,7 +4370,7 @@ function DraftMessageCard({
|
|
|
4365
4370
|
isPreviewDisabled = false,
|
|
4366
4371
|
className
|
|
4367
4372
|
}) {
|
|
4368
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
4373
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles2.root(), className), children: [
|
|
4369
4374
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: styles2.icon(), children: /* @__PURE__ */ jsxRuntime.jsx(ChannelIcon, { channel }) }),
|
|
4370
4375
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles2.body(), children: [
|
|
4371
4376
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: styles2.eyebrow(), children: eyebrow }),
|
|
@@ -4486,7 +4491,7 @@ function MultiSelect({
|
|
|
4486
4491
|
openPopover(true);
|
|
4487
4492
|
}
|
|
4488
4493
|
};
|
|
4489
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
4494
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5", className), children: [
|
|
4490
4495
|
label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
|
|
4491
4496
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4492
4497
|
"div",
|
|
@@ -4502,7 +4507,7 @@ function MultiSelect({
|
|
|
4502
4507
|
onKeyDown: onTriggerKeyDown,
|
|
4503
4508
|
"data-invalid": isInvalid || void 0,
|
|
4504
4509
|
"data-disabled": isDisabled || void 0,
|
|
4505
|
-
className:
|
|
4510
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4506
4511
|
styles4.box(),
|
|
4507
4512
|
"flex flex-wrap items-center gap-1.5 cursor-pointer",
|
|
4508
4513
|
minHeight,
|
|
@@ -4517,7 +4522,7 @@ function MultiSelect({
|
|
|
4517
4522
|
// No vertical padding — wrapper's p-1.5 + min-h-[size] govern the
|
|
4518
4523
|
// overall height so it matches the Input/Select trigger at the same
|
|
4519
4524
|
// size.
|
|
4520
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
4525
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("text-ink-4 font-sans px-1", fieldTextStyles[size]), children: placeholder })
|
|
4521
4526
|
) : selectedOptions.map((o) => /* @__PURE__ */ jsxRuntime.jsx(Chip, { onRemove: () => remove(o.id), isDisabled, children: o.content ?? o.label }, o.id)),
|
|
4522
4527
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto pr-1", children: /* @__PURE__ */ jsxRuntime.jsx(FieldCaret, {}) })
|
|
4523
4528
|
]
|
|
@@ -4533,14 +4538,14 @@ function MultiSelect({
|
|
|
4533
4538
|
triggerRef,
|
|
4534
4539
|
offset: 6,
|
|
4535
4540
|
placement: "bottom start",
|
|
4536
|
-
className:
|
|
4541
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4537
4542
|
"w-[var(--trigger-width)]",
|
|
4538
4543
|
// The popover element itself takes focus when opened programmatically
|
|
4539
4544
|
// (defaultOpen) — no browser outline around the whole panel.
|
|
4540
4545
|
"outline-none rounded-md border border-rule bg-surface p-1",
|
|
4541
4546
|
"shadow-[var(--shadow-raised)]",
|
|
4542
|
-
"entering:animate-
|
|
4543
|
-
"exiting:animate-
|
|
4547
|
+
"entering:animate-enter-slide-down",
|
|
4548
|
+
"exiting:animate-exit-slide-up"
|
|
4544
4549
|
),
|
|
4545
4550
|
children: [
|
|
4546
4551
|
isSearchable ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-rule-2 px-1 pb-1 mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4551,7 +4556,7 @@ function MultiSelect({
|
|
|
4551
4556
|
onChange: (e) => updateSearch(e.target.value),
|
|
4552
4557
|
placeholder: "Search\u2026",
|
|
4553
4558
|
"aria-label": "Search options",
|
|
4554
|
-
className:
|
|
4559
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4555
4560
|
"w-full bg-transparent outline-none rounded-[6px] px-2 py-1.5",
|
|
4556
4561
|
"font-sans text-[13px] text-ink placeholder:text-ink-4"
|
|
4557
4562
|
)
|
|
@@ -4572,14 +4577,14 @@ function MultiSelect({
|
|
|
4572
4577
|
onSelectionChange(keys);
|
|
4573
4578
|
},
|
|
4574
4579
|
className: "outline-none max-h-72 overflow-auto",
|
|
4575
|
-
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
4580
|
+
renderEmptyState: () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn("px-3 py-2", fieldHintStyles), children: needle !== "" ? "No matches" : "All options selected" }),
|
|
4576
4581
|
children: listboxOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4577
4582
|
reactAriaComponents.ListBoxItem,
|
|
4578
4583
|
{
|
|
4579
4584
|
id: option.id,
|
|
4580
4585
|
textValue: option.label,
|
|
4581
4586
|
...option.isDisabled ? { isDisabled: true } : {},
|
|
4582
|
-
className:
|
|
4587
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4583
4588
|
"group flex items-center gap-2.5",
|
|
4584
4589
|
"rounded-[6px] px-3 py-2 text-[14px] text-ink-2",
|
|
4585
4590
|
"cursor-pointer outline-none select-none",
|
|
@@ -4609,7 +4614,7 @@ function Chip({
|
|
|
4609
4614
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4610
4615
|
"span",
|
|
4611
4616
|
{
|
|
4612
|
-
className:
|
|
4617
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4613
4618
|
"inline-flex items-center gap-1.5",
|
|
4614
4619
|
"pl-2 pr-1 py-0.5 rounded-[6px]",
|
|
4615
4620
|
"bg-surface-2 border border-rule",
|
|
@@ -4627,7 +4632,7 @@ function Chip({
|
|
|
4627
4632
|
e.stopPropagation();
|
|
4628
4633
|
onRemove();
|
|
4629
4634
|
},
|
|
4630
|
-
className:
|
|
4635
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4631
4636
|
"inline-flex items-center justify-center shrink-0",
|
|
4632
4637
|
"size-4 rounded-[3px]",
|
|
4633
4638
|
"text-ink-3 hover:text-ink hover:bg-surface-3 cursor-pointer",
|
|
@@ -4807,7 +4812,7 @@ function MessageComposer({
|
|
|
4807
4812
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-[18px] py-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4808
4813
|
"p",
|
|
4809
4814
|
{
|
|
4810
|
-
className:
|
|
4815
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4811
4816
|
"rounded-[10px] border border-rule bg-surface-2 px-3.5 py-2.5",
|
|
4812
4817
|
"text-[12.5px] text-ink-3 text-center"
|
|
4813
4818
|
),
|
|
@@ -4832,7 +4837,7 @@ function MessageComposer({
|
|
|
4832
4837
|
}
|
|
4833
4838
|
) : null;
|
|
4834
4839
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-[18px] pb-3.5 pt-1", children: [
|
|
4835
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
4840
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(messageComposerStyles(), className), children: [
|
|
4836
4841
|
connectionPicker ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b border-rule-2 px-3.5 py-1.5", children: [
|
|
4837
4842
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: ROW_LABEL, children: "Via" }),
|
|
4838
4843
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4936,7 +4941,7 @@ function MessageComposer({
|
|
|
4936
4941
|
rows: 1,
|
|
4937
4942
|
onChange: (event) => onValueChange({ ...value, text: event.target.value }),
|
|
4938
4943
|
onKeyDown: onKeyDown2,
|
|
4939
|
-
className:
|
|
4944
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4940
4945
|
"w-full resize-none bg-transparent outline-none",
|
|
4941
4946
|
"min-h-[40px] max-h-48 text-[14px] leading-[1.5] text-ink placeholder:text-ink-4",
|
|
4942
4947
|
bodyClassName
|
|
@@ -4953,7 +4958,7 @@ function MessageComposer({
|
|
|
4953
4958
|
if (files) onAddFiles(Array.from(files));
|
|
4954
4959
|
},
|
|
4955
4960
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4956
|
-
|
|
4961
|
+
chunkNWGG5WFL_cjs.Button,
|
|
4957
4962
|
{
|
|
4958
4963
|
variant: "subtle",
|
|
4959
4964
|
size: "icon-md",
|
|
@@ -4972,7 +4977,7 @@ function MessageComposer({
|
|
|
4972
4977
|
"aria-label": "Send",
|
|
4973
4978
|
isDisabled: !canSend || isSending,
|
|
4974
4979
|
onPress: () => void submit(),
|
|
4975
|
-
className:
|
|
4980
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
4976
4981
|
"grid place-items-center size-8 rounded-[8px] cursor-pointer",
|
|
4977
4982
|
"bg-accent text-tile-fg transition-opacity duration-150",
|
|
4978
4983
|
"disabled:opacity-40 disabled:cursor-default",
|
|
@@ -5287,10 +5292,10 @@ function DraftMessageComposer({
|
|
|
5287
5292
|
[message?.attachments]
|
|
5288
5293
|
);
|
|
5289
5294
|
if (phase === "loading") {
|
|
5290
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
5295
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles3.terminal(), children: "Loading draft\u2026" }) });
|
|
5291
5296
|
}
|
|
5292
5297
|
if (phase === "load-error") {
|
|
5293
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
5298
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: styles3.terminal(), children: [
|
|
5294
5299
|
loadError ?? "Loading the draft failed.",
|
|
5295
5300
|
" ",
|
|
5296
5301
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5305,9 +5310,9 @@ function DraftMessageComposer({
|
|
|
5305
5310
|
}
|
|
5306
5311
|
if (phase === "terminal" || !message) {
|
|
5307
5312
|
const line = terminalKind === "sent" ? "This draft was sent." : terminalKind === "rejected" ? "This draft was rejected." : terminalKind === "failed" ? `Sending failed${message?.error ? ` \u2014 ${message.error}` : ""}.` : "This message is not a reviewable draft.";
|
|
5308
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
5313
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), "data-draft-terminal": terminalKind, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles3.terminal(), children: line }) });
|
|
5309
5314
|
}
|
|
5310
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
5315
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles3.root(), className), children: [
|
|
5311
5316
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles3.header(), children: [
|
|
5312
5317
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: styles3.badge(), children: "Draft \xB7 awaiting review" }),
|
|
5313
5318
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles3.sender(), children: [
|
|
@@ -5349,7 +5354,7 @@ function DraftMessageComposer({
|
|
|
5349
5354
|
isConfirmingReject ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5350
5355
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12.5px] text-ink-3", children: "Reject draft?" }),
|
|
5351
5356
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5352
|
-
|
|
5357
|
+
chunkNWGG5WFL_cjs.Button,
|
|
5353
5358
|
{
|
|
5354
5359
|
size: "sm",
|
|
5355
5360
|
variant: "ghost",
|
|
@@ -5358,9 +5363,9 @@ function DraftMessageComposer({
|
|
|
5358
5363
|
children: "Confirm reject"
|
|
5359
5364
|
}
|
|
5360
5365
|
),
|
|
5361
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5366
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { size: "sm", variant: "subtle", onPress: () => setIsConfirmingReject(false), children: "Cancel" })
|
|
5362
5367
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5363
|
-
|
|
5368
|
+
chunkNWGG5WFL_cjs.Button,
|
|
5364
5369
|
{
|
|
5365
5370
|
size: "sm",
|
|
5366
5371
|
variant: "ghost",
|
|
@@ -5370,7 +5375,7 @@ function DraftMessageComposer({
|
|
|
5370
5375
|
}
|
|
5371
5376
|
),
|
|
5372
5377
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5373
|
-
|
|
5378
|
+
chunkNWGG5WFL_cjs.Button,
|
|
5374
5379
|
{
|
|
5375
5380
|
size: "sm",
|
|
5376
5381
|
variant: "subtle",
|
|
@@ -5528,7 +5533,7 @@ function EmptyState({
|
|
|
5528
5533
|
className
|
|
5529
5534
|
}) {
|
|
5530
5535
|
const styles4 = emptyStateStyles({ size });
|
|
5531
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
5536
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(styles4.root(), className), children: [
|
|
5532
5537
|
icon ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.art(), children: icon }) : null,
|
|
5533
5538
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.title(), children: title }),
|
|
5534
5539
|
description ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.description(), children: description }) : null,
|
|
@@ -5540,7 +5545,7 @@ function ErrorAnimation({ className }) {
|
|
|
5540
5545
|
"div",
|
|
5541
5546
|
{
|
|
5542
5547
|
"aria-hidden": true,
|
|
5543
|
-
className:
|
|
5548
|
+
className: chunkNWGG5WFL_cjs.cn("size-24 text-danger motion-safe:animate-status-pop", className),
|
|
5544
5549
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, { className: "size-full", strokeWidth: 1.5 })
|
|
5545
5550
|
}
|
|
5546
5551
|
);
|
|
@@ -5563,13 +5568,13 @@ function FileViewerFallbackCard({
|
|
|
5563
5568
|
const Icon = iconForContentType(contentType);
|
|
5564
5569
|
const size = formatFileSize(sizeInBytes);
|
|
5565
5570
|
const meta = [size, note].filter(Boolean).join(" \xB7 ");
|
|
5566
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
5571
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn(fileViewerFallbackCardStyles(), className), children: [
|
|
5567
5572
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md bg-surface-2 text-ink-3", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": true, className: "size-4" }) }),
|
|
5568
5573
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
5569
5574
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-sans text-[13px] font-medium text-ink", children: name }),
|
|
5570
5575
|
errorMessage ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-sans text-[12px] text-danger", children: errorMessage }) : meta ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-sans text-[12px] text-ink-3", children: meta }) : null
|
|
5571
5576
|
] }),
|
|
5572
|
-
onDownload ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5577
|
+
onDownload ? /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "ghost", size: "icon-sm", "aria-label": `Download ${name}`, onPress: onDownload, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": true }) }) : null
|
|
5573
5578
|
] });
|
|
5574
5579
|
}
|
|
5575
5580
|
var imageLightboxStyles = tailwindVariants.tv({
|
|
@@ -5577,8 +5582,8 @@ var imageLightboxStyles = tailwindVariants.tv({
|
|
|
5577
5582
|
"fixed inset-0 z-50 flex items-center justify-center p-4",
|
|
5578
5583
|
// Deeper scrim than Modal's 40% — the image needs the page fully dimmed.
|
|
5579
5584
|
"bg-[color-mix(in_oklab,var(--color-ink)_72%,transparent)]",
|
|
5580
|
-
"entering:animate-
|
|
5581
|
-
"exiting:animate-
|
|
5585
|
+
"entering:animate-enter-fade",
|
|
5586
|
+
"exiting:animate-exit-fade"
|
|
5582
5587
|
]
|
|
5583
5588
|
});
|
|
5584
5589
|
function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
|
|
@@ -5606,7 +5611,7 @@ function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
|
|
|
5606
5611
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5607
5612
|
"div",
|
|
5608
5613
|
{
|
|
5609
|
-
className:
|
|
5614
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
5610
5615
|
"flex items-center gap-1.5",
|
|
5611
5616
|
"rounded-[8px] border border-rule bg-surface py-1 pl-3 pr-1",
|
|
5612
5617
|
"shadow-[var(--shadow-float)]"
|
|
@@ -5614,7 +5619,7 @@ function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
|
|
|
5614
5619
|
children: [
|
|
5615
5620
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[320px] truncate font-sans text-[12.5px] text-ink", children: name }),
|
|
5616
5621
|
onDownload ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5617
|
-
|
|
5622
|
+
chunkNWGG5WFL_cjs.Button,
|
|
5618
5623
|
{
|
|
5619
5624
|
variant: "ghost",
|
|
5620
5625
|
size: "icon-sm",
|
|
@@ -5623,7 +5628,7 @@ function ImageLightbox({ isOpen, onOpenChange, src, name, onDownload }) {
|
|
|
5623
5628
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": true })
|
|
5624
5629
|
}
|
|
5625
5630
|
) : null,
|
|
5626
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5631
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { slot: "close", variant: "ghost", size: "icon-sm", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": true }) })
|
|
5627
5632
|
]
|
|
5628
5633
|
}
|
|
5629
5634
|
)
|
|
@@ -5663,7 +5668,7 @@ function VideoView({ name, src }) {
|
|
|
5663
5668
|
/* @__PURE__ */ jsxRuntime.jsx("video", { controls: true, src, "aria-label": name, className: "h-full w-full object-contain" })
|
|
5664
5669
|
);
|
|
5665
5670
|
}
|
|
5666
|
-
var PdfView = react.lazy(() => import('./pdf-view-
|
|
5671
|
+
var PdfView = react.lazy(() => import('./pdf-view-RRMAUK3L.cjs'));
|
|
5667
5672
|
var fileViewerStyles = tailwindVariants.tv({
|
|
5668
5673
|
base: [
|
|
5669
5674
|
"relative flex w-full flex-col overflow-hidden",
|
|
@@ -5703,8 +5708,8 @@ function FileViewer({
|
|
|
5703
5708
|
}
|
|
5704
5709
|
);
|
|
5705
5710
|
if (kind === "none" || errorMessage || isOversized) return fallback;
|
|
5706
|
-
const skeleton = /* @__PURE__ */ jsxRuntime.jsx(
|
|
5707
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
5711
|
+
const skeleton = /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Skeleton, { "aria-label": `Loading preview of ${name}`, className: "h-full w-full rounded-none" });
|
|
5712
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(fileViewerStyles(), className), style: { height: heightPx }, children: !src ? skeleton : kind === "image" ? /* @__PURE__ */ jsxRuntime.jsx(ImageView, { name, src, ...onDownload ? { onDownload } : {} }) : kind === "video" ? /* @__PURE__ */ jsxRuntime.jsx(VideoView, { name, src }) : /* @__PURE__ */ jsxRuntime.jsx(react.Suspense, { fallback: skeleton, children: /* @__PURE__ */ jsxRuntime.jsx(PdfView, { name, src, ...onDownload ? { onDownload } : {} }) }) });
|
|
5708
5713
|
}
|
|
5709
5714
|
var imageAttachmentStyles = tailwindVariants.tv({
|
|
5710
5715
|
base: [
|
|
@@ -5727,7 +5732,7 @@ function ImageAttachment({
|
|
|
5727
5732
|
{
|
|
5728
5733
|
"aria-label": `Preview ${name}`,
|
|
5729
5734
|
...onPress ? { onPress } : {},
|
|
5730
|
-
className:
|
|
5735
|
+
className: chunkNWGG5WFL_cjs.cn(imageAttachmentStyles(), className),
|
|
5731
5736
|
children: [
|
|
5732
5737
|
src ? (
|
|
5733
5738
|
// Kept in the DOM (invisible) while loading so onLoad still fires
|
|
@@ -5740,14 +5745,14 @@ function ImageAttachment({
|
|
|
5740
5745
|
loading: "lazy",
|
|
5741
5746
|
onLoad: () => setLoadedSrc(src),
|
|
5742
5747
|
onError: () => onLoadError?.(),
|
|
5743
|
-
className:
|
|
5748
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
5744
5749
|
"block max-h-[220px] max-w-[280px] object-contain",
|
|
5745
5750
|
!isLoaded && "invisible absolute inset-0"
|
|
5746
5751
|
)
|
|
5747
5752
|
}
|
|
5748
5753
|
)
|
|
5749
5754
|
) : null,
|
|
5750
|
-
!isLoaded ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5755
|
+
!isLoaded ? /* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Skeleton, { className: "h-[140px] w-[200px]" }) : null
|
|
5751
5756
|
]
|
|
5752
5757
|
}
|
|
5753
5758
|
);
|
|
@@ -5778,7 +5783,7 @@ function Input({
|
|
|
5778
5783
|
reactAriaComponents.TextField,
|
|
5779
5784
|
{
|
|
5780
5785
|
...props,
|
|
5781
|
-
className: (renderProps) =>
|
|
5786
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
5782
5787
|
"grid grid-cols-1 gap-1.5",
|
|
5783
5788
|
typeof className === "function" ? className(renderProps) : className
|
|
5784
5789
|
),
|
|
@@ -5789,7 +5794,7 @@ function Input({
|
|
|
5789
5794
|
{
|
|
5790
5795
|
...inputProps,
|
|
5791
5796
|
placeholder: placeholder ?? "",
|
|
5792
|
-
className:
|
|
5797
|
+
className: chunkNWGG5WFL_cjs.cn(styles4.box(), styles4.content(), inputClassName)
|
|
5793
5798
|
}
|
|
5794
5799
|
),
|
|
5795
5800
|
description ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Text, { slot: "description", className: fieldHintStyles, children: description }) : null,
|
|
@@ -5807,11 +5812,11 @@ function MenuPopover({ className, offset = 4, placement = "bottom start", ...pro
|
|
|
5807
5812
|
offset,
|
|
5808
5813
|
placement,
|
|
5809
5814
|
...props,
|
|
5810
|
-
className: (renderProps) =>
|
|
5815
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
5811
5816
|
"min-w-[200px] p-1 bg-surface border border-rule rounded-md",
|
|
5812
5817
|
"shadow-[var(--shadow-float)] outline-none z-[1200]",
|
|
5813
|
-
"entering:animate-
|
|
5814
|
-
"exiting:animate-
|
|
5818
|
+
"entering:animate-enter-zoom",
|
|
5819
|
+
"exiting:animate-exit-zoom",
|
|
5815
5820
|
typeof className === "function" ? className(renderProps) : className
|
|
5816
5821
|
)
|
|
5817
5822
|
}
|
|
@@ -5822,14 +5827,14 @@ function Menu({ className, ...props }) {
|
|
|
5822
5827
|
reactAriaComponents.Menu,
|
|
5823
5828
|
{
|
|
5824
5829
|
...props,
|
|
5825
|
-
className: (renderProps) =>
|
|
5830
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
5826
5831
|
"flex flex-col gap-px outline-none",
|
|
5827
5832
|
typeof className === "function" ? className(renderProps) : className
|
|
5828
5833
|
)
|
|
5829
5834
|
}
|
|
5830
5835
|
);
|
|
5831
5836
|
}
|
|
5832
|
-
var menuItemStyles =
|
|
5837
|
+
var menuItemStyles = chunkNWGG5WFL_cjs.cn(
|
|
5833
5838
|
"flex items-center gap-2.5 px-2.5 py-1.5 rounded-md cursor-pointer outline-none",
|
|
5834
5839
|
"font-sans text-[13px] text-ink-2 select-none",
|
|
5835
5840
|
"hover:bg-surface-2 hover:text-ink focus:bg-surface-2 focus:text-ink",
|
|
@@ -5843,7 +5848,7 @@ function MenuItem({ icon, hasSubmenu, children, className, ...props }) {
|
|
|
5843
5848
|
reactAriaComponents.MenuItem,
|
|
5844
5849
|
{
|
|
5845
5850
|
...props,
|
|
5846
|
-
className: (renderProps) =>
|
|
5851
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(menuItemStyles, typeof className === "function" ? className(renderProps) : className),
|
|
5847
5852
|
children: [
|
|
5848
5853
|
icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex shrink-0 items-center", children: icon }) : null,
|
|
5849
5854
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate", children }),
|
|
@@ -5865,7 +5870,7 @@ function NavSection({
|
|
|
5865
5870
|
"data-testid": dataTestid
|
|
5866
5871
|
}) {
|
|
5867
5872
|
const hasHead = label !== void 0 || count !== void 0 || action !== void 0;
|
|
5868
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
5873
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("mt-[18px] first:mt-1", className), "data-testid": dataTestid, children: [
|
|
5869
5874
|
hasHead ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-2 pt-1 pb-2", children: [
|
|
5870
5875
|
label !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.08em] text-ink-4", children: label }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
|
|
5871
5876
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -5920,7 +5925,7 @@ function NavItem({ icon, badge, isActive, className, children, ...props }) {
|
|
|
5920
5925
|
reactAriaComponents.Button,
|
|
5921
5926
|
{
|
|
5922
5927
|
...props,
|
|
5923
|
-
className: (renderProps) =>
|
|
5928
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
5924
5929
|
navItemStyles({ isActive, isNested }),
|
|
5925
5930
|
typeof className === "function" ? className(renderProps) : className
|
|
5926
5931
|
),
|
|
@@ -5929,7 +5934,7 @@ function NavItem({ icon, badge, isActive, className, children, ...props }) {
|
|
|
5929
5934
|
"span",
|
|
5930
5935
|
{
|
|
5931
5936
|
"aria-hidden": true,
|
|
5932
|
-
className:
|
|
5937
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
5933
5938
|
"grid place-items-center shrink-0 size-4",
|
|
5934
5939
|
isActive ? "text-accent" : "text-ink-3",
|
|
5935
5940
|
"[&>svg]:size-4"
|
|
@@ -5944,12 +5949,12 @@ function NavItem({ icon, badge, isActive, className, children, ...props }) {
|
|
|
5944
5949
|
);
|
|
5945
5950
|
}
|
|
5946
5951
|
function NavGroup({ icon, label, children, className, ...props }) {
|
|
5947
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Disclosure, { ...props, className:
|
|
5952
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Disclosure, { ...props, className: chunkNWGG5WFL_cjs.cn("group/nav-group my-px", className), children: [
|
|
5948
5953
|
/* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Heading, { className: "m-0", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5949
5954
|
reactAriaComponents.Button,
|
|
5950
5955
|
{
|
|
5951
5956
|
slot: "trigger",
|
|
5952
|
-
className:
|
|
5957
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
5953
5958
|
"flex w-full items-center gap-2.5",
|
|
5954
5959
|
"px-2 py-[7px] rounded-[7px]",
|
|
5955
5960
|
"text-[13.5px] tracking-[-0.005em] text-ink-2 text-left",
|
|
@@ -5993,7 +5998,7 @@ function NavGroup({ icon, label, children, className, ...props }) {
|
|
|
5993
5998
|
/* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.DisclosurePanel, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5994
5999
|
"div",
|
|
5995
6000
|
{
|
|
5996
|
-
className:
|
|
6001
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
5997
6002
|
"relative pl-[22px] py-px",
|
|
5998
6003
|
// Vertical guide rule — sits under where the parent's icon center
|
|
5999
6004
|
// would be (14px from the panel's left edge).
|
|
@@ -6017,7 +6022,7 @@ function Orb({ size = "sm", state = "solving", speed, theme, className, label })
|
|
|
6017
6022
|
size: design,
|
|
6018
6023
|
...speed !== void 0 ? { speed } : {},
|
|
6019
6024
|
...theme !== void 0 ? { theme } : {},
|
|
6020
|
-
className:
|
|
6025
|
+
className: chunkNWGG5WFL_cjs.cn("inline-block shrink-0", className),
|
|
6021
6026
|
...px !== design ? { style: { width: px, height: px } } : {},
|
|
6022
6027
|
...label ? { "aria-label": label } : { "aria-hidden": true }
|
|
6023
6028
|
}
|
|
@@ -6038,10 +6043,10 @@ var progressBarStyles = tailwindVariants.tv({
|
|
|
6038
6043
|
});
|
|
6039
6044
|
function ProgressBar({ size, className, ...props }) {
|
|
6040
6045
|
const { track, fill } = progressBarStyles({ size });
|
|
6041
|
-
return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ProgressBar, { ...props, className:
|
|
6046
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.ProgressBar, { ...props, className: chunkNWGG5WFL_cjs.cn("block", className), children: ({ percentage, isIndeterminate }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: track(), children: isIndeterminate ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkNWGG5WFL_cjs.cn(fill(), "absolute w-[35%] animate-indeterminate-progress") }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6042
6047
|
"div",
|
|
6043
6048
|
{
|
|
6044
|
-
className:
|
|
6049
|
+
className: chunkNWGG5WFL_cjs.cn(fill(), "transition-[width] duration-150"),
|
|
6045
6050
|
style: { width: `${percentage ?? 0}%` }
|
|
6046
6051
|
}
|
|
6047
6052
|
) }) });
|
|
@@ -6060,13 +6065,13 @@ function RadioGroup({
|
|
|
6060
6065
|
{
|
|
6061
6066
|
...props,
|
|
6062
6067
|
orientation,
|
|
6063
|
-
className: (renderProps) =>
|
|
6068
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn("grid gap-2", typeof className === "function" ? className(renderProps) : className),
|
|
6064
6069
|
children: [
|
|
6065
6070
|
label ? /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Label, { className: fieldLabelStyles, children: label }) : null,
|
|
6066
6071
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6067
6072
|
"div",
|
|
6068
6073
|
{
|
|
6069
|
-
className:
|
|
6074
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6070
6075
|
orientation === "horizontal" ? "flex flex-wrap items-center gap-x-4 gap-y-2" : "grid gap-3"
|
|
6071
6076
|
),
|
|
6072
6077
|
children
|
|
@@ -6083,7 +6088,7 @@ function Radio({ children, className, ...props }) {
|
|
|
6083
6088
|
reactAriaComponents.Radio,
|
|
6084
6089
|
{
|
|
6085
6090
|
...props,
|
|
6086
|
-
className: (renderProps) =>
|
|
6091
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
6087
6092
|
// `relative` for the same reason as Checkbox / Switch: RAC's
|
|
6088
6093
|
// visually-hidden <input> is absolutely positioned and must resolve
|
|
6089
6094
|
// against this radio, not a far-away shell, or focusing it scrolls
|
|
@@ -6098,7 +6103,7 @@ function Radio({ children, className, ...props }) {
|
|
|
6098
6103
|
"span",
|
|
6099
6104
|
{
|
|
6100
6105
|
"aria-hidden": true,
|
|
6101
|
-
className:
|
|
6106
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6102
6107
|
"relative inline-flex items-center justify-center shrink-0",
|
|
6103
6108
|
"size-[18px] rounded-full border bg-surface border-ink-4",
|
|
6104
6109
|
"transition-[border-color,box-shadow] duration-150",
|
|
@@ -6109,7 +6114,7 @@ function Radio({ children, className, ...props }) {
|
|
|
6109
6114
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6110
6115
|
"span",
|
|
6111
6116
|
{
|
|
6112
|
-
className:
|
|
6117
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6113
6118
|
"block size-[10px] rounded-full bg-accent",
|
|
6114
6119
|
"transition-opacity duration-150 opacity-0",
|
|
6115
6120
|
"group-data-[selected]:opacity-100"
|
|
@@ -6153,7 +6158,7 @@ function AttributePicker({
|
|
|
6153
6158
|
autoFocus,
|
|
6154
6159
|
size,
|
|
6155
6160
|
...isDisabled !== void 0 ? { isDisabled } : {},
|
|
6156
|
-
className:
|
|
6161
|
+
className: chunkNWGG5WFL_cjs.cn("w-full", className)
|
|
6157
6162
|
}
|
|
6158
6163
|
);
|
|
6159
6164
|
}
|
|
@@ -6218,7 +6223,8 @@ var OPERATORS = [
|
|
|
6218
6223
|
"relation",
|
|
6219
6224
|
"user",
|
|
6220
6225
|
"principal",
|
|
6221
|
-
"contact-address"
|
|
6226
|
+
"contact-address",
|
|
6227
|
+
"array"
|
|
6222
6228
|
]
|
|
6223
6229
|
},
|
|
6224
6230
|
{
|
|
@@ -6234,10 +6240,19 @@ var OPERATORS = [
|
|
|
6234
6240
|
"relation",
|
|
6235
6241
|
"user",
|
|
6236
6242
|
"principal",
|
|
6237
|
-
"contact-address"
|
|
6243
|
+
"contact-address",
|
|
6244
|
+
"array"
|
|
6238
6245
|
]
|
|
6239
6246
|
},
|
|
6240
6247
|
{ id: "contains", label: "contains", arity: 1, types: ["string", "array", "contact-address"] },
|
|
6248
|
+
{
|
|
6249
|
+
id: "not_contains",
|
|
6250
|
+
label: "does not contain",
|
|
6251
|
+
arity: 1,
|
|
6252
|
+
types: ["string", "array", "contact-address"]
|
|
6253
|
+
},
|
|
6254
|
+
// Array-only: "has every one of these". On a scalar the backend rejects it.
|
|
6255
|
+
{ id: "contains_all", label: "has all of", arity: "n", types: ["array"] },
|
|
6241
6256
|
{ id: "starts_with", label: "starts with", arity: 1, types: ["string", "contact-address"] },
|
|
6242
6257
|
{ id: "ends_with", label: "ends with", arity: 1, types: ["string", "contact-address"] },
|
|
6243
6258
|
{
|
|
@@ -6300,14 +6315,33 @@ var OP_LABEL_OVERRIDES = {
|
|
|
6300
6315
|
integer: { gt: "is greater than", lt: "is less than", eq: "equals", ne: "does not equal" },
|
|
6301
6316
|
currency: { gt: "is greater than", lt: "is less than", eq: "equals", ne: "does not equal" },
|
|
6302
6317
|
datetime: { eq: "is on", ne: "is not on", gt: "is after", lt: "is before" },
|
|
6303
|
-
|
|
6318
|
+
// Arrays filter by set membership, in the words every CRM uses for it.
|
|
6319
|
+
array: {
|
|
6320
|
+
contains: "has",
|
|
6321
|
+
not_contains: "does not have",
|
|
6322
|
+
in: "has any of",
|
|
6323
|
+
not_in: "has none of",
|
|
6324
|
+
contains_all: "has all of",
|
|
6325
|
+
empty: "is empty",
|
|
6326
|
+
not_empty: "is not empty"
|
|
6327
|
+
},
|
|
6304
6328
|
boolean: { eq: "is", ne: "is not" }
|
|
6305
6329
|
};
|
|
6330
|
+
var OP_ORDER_OVERRIDES = {
|
|
6331
|
+
array: ["contains", "not_contains", "in", "contains_all", "not_in", "empty", "not_empty"]
|
|
6332
|
+
};
|
|
6306
6333
|
function operatorsForType(type) {
|
|
6307
|
-
|
|
6334
|
+
const ops = OPERATORS.filter((op) => op.types.includes(type)).map((op) => {
|
|
6308
6335
|
const override = OP_LABEL_OVERRIDES[type]?.[op.id];
|
|
6309
6336
|
return override ? { ...op, label: override } : op;
|
|
6310
6337
|
});
|
|
6338
|
+
const order = OP_ORDER_OVERRIDES[type];
|
|
6339
|
+
if (!order) return ops;
|
|
6340
|
+
return [...ops].sort((a, b) => order.indexOf(a.id) - order.indexOf(b.id));
|
|
6341
|
+
}
|
|
6342
|
+
function isEnumLike(field) {
|
|
6343
|
+
if (field.type === "enum") return true;
|
|
6344
|
+
return field.type === "array" && (field.options?.length ?? 0) > 0;
|
|
6311
6345
|
}
|
|
6312
6346
|
function operatorById(id) {
|
|
6313
6347
|
return OPERATORS.find((o) => o.id === id);
|
|
@@ -6379,7 +6413,7 @@ function ChipItem({
|
|
|
6379
6413
|
const custom = effectiveRenderer({ field, operator, value });
|
|
6380
6414
|
if (custom !== void 0) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: custom });
|
|
6381
6415
|
}
|
|
6382
|
-
if (field
|
|
6416
|
+
if (isEnumLike(field)) {
|
|
6383
6417
|
const option = findEnumOption(field, value);
|
|
6384
6418
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6385
6419
|
Badge,
|
|
@@ -6393,7 +6427,7 @@ function ChipItem({
|
|
|
6393
6427
|
}
|
|
6394
6428
|
);
|
|
6395
6429
|
}
|
|
6396
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
6430
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNWGG5WFL_cjs.cn("font-mono text-[12px] text-ink max-w-[10rem] truncate"), children: formatValue(field, operator, value) });
|
|
6397
6431
|
}
|
|
6398
6432
|
function Em({ children }) {
|
|
6399
6433
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[12px] text-ink-4", children });
|
|
@@ -6407,7 +6441,7 @@ function formatValue(field, operator, value) {
|
|
|
6407
6441
|
if (arity === "n") {
|
|
6408
6442
|
const arr = Array.isArray(value) ? value : typeof value === "string" && value.length > 0 ? value.split(",") : [];
|
|
6409
6443
|
if (arr.length === 0) return "\u2014";
|
|
6410
|
-
if (field
|
|
6444
|
+
if (isEnumLike(field)) {
|
|
6411
6445
|
const labels = arr.map((v) => findEnumOption(field, v)?.label ?? v);
|
|
6412
6446
|
return labels.length <= 2 ? labels.join(", ") : `${labels[0]}, ${labels[1]} +${labels.length - 2}`;
|
|
6413
6447
|
}
|
|
@@ -6415,7 +6449,7 @@ function formatValue(field, operator, value) {
|
|
|
6415
6449
|
}
|
|
6416
6450
|
if (field.type === "boolean") return value === true || value === "true" ? "true" : "false";
|
|
6417
6451
|
if (value === "" || value == null) return "\u2014";
|
|
6418
|
-
if (field
|
|
6452
|
+
if (isEnumLike(field)) {
|
|
6419
6453
|
return findEnumOption(field, String(value))?.label ?? String(value);
|
|
6420
6454
|
}
|
|
6421
6455
|
if (field.type === "number" || field.type === "integer") {
|
|
@@ -6430,53 +6464,62 @@ var segmentedControlStyles = tailwindVariants.tv({
|
|
|
6430
6464
|
// stretching parent (e.g. a `flex flex-col` card body, whose default
|
|
6431
6465
|
// align-items:stretch would otherwise pull it to full width). Consumers
|
|
6432
6466
|
// can still opt into full width by passing `w-full` via className.
|
|
6433
|
-
group: "inline-flex w-fit
|
|
6467
|
+
group: "inline-flex w-fit gap-px p-0.5 rounded-chip bg-surface-2 border border-rule",
|
|
6434
6468
|
segment: [
|
|
6435
|
-
"inline-flex items-center justify-center cursor-pointer",
|
|
6436
|
-
"font-
|
|
6437
|
-
"transition-[background-color,color] duration-150",
|
|
6438
|
-
|
|
6439
|
-
|
|
6469
|
+
"inline-flex items-center justify-center gap-1 cursor-pointer select-none",
|
|
6470
|
+
"font-sans font-medium tracking-[-0.005em] rounded-sm outline-none text-ink-3",
|
|
6471
|
+
"transition-[background-color,color,box-shadow] duration-150",
|
|
6472
|
+
// Unselected: hover/press tint into the track colour. `selected` is
|
|
6473
|
+
// declared after `hovered` in styles.css, so the pill wins over these.
|
|
6474
|
+
"hovered:text-ink hovered:bg-[color-mix(in_oklab,var(--color-ink)_6%,var(--color-surface-2))]",
|
|
6475
|
+
"pressed:bg-[color-mix(in_oklab,var(--color-ink)_10%,var(--color-surface-2))]",
|
|
6476
|
+
// Selected: lifted white pill, static.
|
|
6477
|
+
"selected:bg-surface selected:text-ink selected:shadow-[var(--shadow-rest)]",
|
|
6440
6478
|
"data-[focus-visible]:shadow-[var(--shadow-focus)]",
|
|
6479
|
+
"selected:data-[focus-visible]:shadow-[var(--shadow-focus),var(--shadow-rest)]",
|
|
6441
6480
|
"data-[disabled]:opacity-45 data-[disabled]:cursor-not-allowed"
|
|
6442
6481
|
]
|
|
6443
6482
|
},
|
|
6444
6483
|
variants: {
|
|
6445
6484
|
size: {
|
|
6446
|
-
sm: { segment: "px-2 py-0.5 text-[
|
|
6447
|
-
md: { segment: "px-2.5 py-1 text-[
|
|
6485
|
+
sm: { segment: "px-2 py-0.5 text-[11.5px] min-h-[22px]" },
|
|
6486
|
+
md: { segment: "px-2.5 py-1 text-[12.5px] min-h-[26px]" }
|
|
6448
6487
|
},
|
|
6449
|
-
|
|
6450
|
-
|
|
6451
|
-
|
|
6488
|
+
// Dense flow-wrapping register (designer inspector): the group becomes a
|
|
6489
|
+
// wrapping flex row and every segment grows to share the line.
|
|
6490
|
+
wrap: {
|
|
6491
|
+
true: { group: "flex flex-wrap w-auto", segment: "flex-1 min-w-7 px-1.5" },
|
|
6492
|
+
false: {}
|
|
6452
6493
|
}
|
|
6453
6494
|
},
|
|
6454
|
-
defaultVariants: { size: "sm",
|
|
6495
|
+
defaultVariants: { size: "sm", wrap: false }
|
|
6455
6496
|
});
|
|
6456
6497
|
function SegmentedControl({
|
|
6457
6498
|
options,
|
|
6458
6499
|
value,
|
|
6459
6500
|
onChange,
|
|
6460
6501
|
size,
|
|
6502
|
+
wrap = false,
|
|
6461
6503
|
autoFocus = false,
|
|
6462
6504
|
className,
|
|
6463
6505
|
orientation = "horizontal",
|
|
6464
6506
|
...props
|
|
6465
6507
|
}) {
|
|
6466
|
-
const styles4 = segmentedControlStyles({ size });
|
|
6508
|
+
const styles4 = segmentedControlStyles({ size, wrap });
|
|
6467
6509
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6468
6510
|
reactAriaComponents.RadioGroup,
|
|
6469
6511
|
{
|
|
6470
6512
|
...props,
|
|
6471
6513
|
orientation,
|
|
6472
|
-
value: String(value),
|
|
6514
|
+
value: value === null ? null : String(value),
|
|
6473
6515
|
onChange: (next) => onChange(next),
|
|
6474
|
-
className:
|
|
6516
|
+
className: chunkNWGG5WFL_cjs.cn(styles4.group(), className),
|
|
6475
6517
|
children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6476
6518
|
reactAriaComponents.Radio,
|
|
6477
6519
|
{
|
|
6478
6520
|
value: String(option.id),
|
|
6479
6521
|
...option.isDisabled ? { isDisabled: true } : {},
|
|
6522
|
+
...option["aria-label"] !== void 0 ? { "aria-label": option["aria-label"] } : {},
|
|
6480
6523
|
...autoFocus && option.id === value ? { autoFocus: true } : {},
|
|
6481
6524
|
className: styles4.segment(),
|
|
6482
6525
|
children: option.label
|
|
@@ -6545,14 +6588,14 @@ function TagInput({
|
|
|
6545
6588
|
onChange(value.slice(0, -1));
|
|
6546
6589
|
}
|
|
6547
6590
|
};
|
|
6548
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
6591
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkNWGG5WFL_cjs.cn("grid grid-cols-1 gap-1.5", className), children: [
|
|
6549
6592
|
label ? /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: fieldLabelStyles, children: label }) : null,
|
|
6550
6593
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6551
6594
|
"div",
|
|
6552
6595
|
{
|
|
6553
6596
|
"data-invalid": isInvalid || void 0,
|
|
6554
6597
|
"data-disabled": isDisabled || void 0,
|
|
6555
|
-
className:
|
|
6598
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6556
6599
|
styles4.box(),
|
|
6557
6600
|
"flex",
|
|
6558
6601
|
// Cell editor: one table row (29px under a 32px row) while the chips
|
|
@@ -6566,7 +6609,7 @@ function TagInput({
|
|
|
6566
6609
|
"div",
|
|
6567
6610
|
{
|
|
6568
6611
|
ref: chipsRef,
|
|
6569
|
-
className:
|
|
6612
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6570
6613
|
"flex flex-1 flex-wrap items-center gap-1.5 min-w-0",
|
|
6571
6614
|
isCell && (hasWrapped ? "content-start overflow-y-auto" : "content-center overflow-hidden")
|
|
6572
6615
|
),
|
|
@@ -6605,7 +6648,7 @@ function TagInput({
|
|
|
6605
6648
|
onBlur: commit,
|
|
6606
6649
|
disabled: isDisabled,
|
|
6607
6650
|
placeholder: value.length === 0 ? placeholder : "",
|
|
6608
|
-
className:
|
|
6651
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6609
6652
|
"flex-1 min-w-[6rem] bg-transparent outline-none",
|
|
6610
6653
|
"font-sans text-ink placeholder:text-ink-4",
|
|
6611
6654
|
fieldTextStyles[size],
|
|
@@ -6663,7 +6706,7 @@ function FilterValueInput({
|
|
|
6663
6706
|
}
|
|
6664
6707
|
const leaf = (() => {
|
|
6665
6708
|
if (arity === "n") {
|
|
6666
|
-
if (field
|
|
6709
|
+
if (isEnumLike(field)) {
|
|
6667
6710
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6668
6711
|
EnumMultiValue,
|
|
6669
6712
|
{
|
|
@@ -6690,7 +6733,7 @@ function FilterValueInput({
|
|
|
6690
6733
|
}
|
|
6691
6734
|
);
|
|
6692
6735
|
}
|
|
6693
|
-
if (field
|
|
6736
|
+
if (isEnumLike(field)) {
|
|
6694
6737
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6695
6738
|
EnumSingleValue,
|
|
6696
6739
|
{
|
|
@@ -6738,7 +6781,7 @@ function FilterValueInput({
|
|
|
6738
6781
|
onChange: (next) => onChange(next ? next.toString() : ""),
|
|
6739
6782
|
autoFocus,
|
|
6740
6783
|
...isDisabled !== void 0 ? { isDisabled } : {},
|
|
6741
|
-
className:
|
|
6784
|
+
className: chunkNWGG5WFL_cjs.cn("w-full", className)
|
|
6742
6785
|
}
|
|
6743
6786
|
);
|
|
6744
6787
|
}
|
|
@@ -6755,7 +6798,7 @@ function FilterValueInput({
|
|
|
6755
6798
|
...autoFocus ? { autoFocus: true } : {}
|
|
6756
6799
|
},
|
|
6757
6800
|
...isDisabled !== void 0 ? { isDisabled } : {},
|
|
6758
|
-
className:
|
|
6801
|
+
className: chunkNWGG5WFL_cjs.cn("w-full", className)
|
|
6759
6802
|
}
|
|
6760
6803
|
);
|
|
6761
6804
|
})();
|
|
@@ -6795,7 +6838,7 @@ function EnumSingleValue({
|
|
|
6795
6838
|
},
|
|
6796
6839
|
...isDisabled !== void 0 ? { isDisabled } : {},
|
|
6797
6840
|
...autoFocus ? { autoFocus: true } : {},
|
|
6798
|
-
className:
|
|
6841
|
+
className: chunkNWGG5WFL_cjs.cn("w-full", className)
|
|
6799
6842
|
}
|
|
6800
6843
|
);
|
|
6801
6844
|
}
|
|
@@ -6824,7 +6867,7 @@ function EnumMultiValue({
|
|
|
6824
6867
|
placeholder: "Select values\u2026",
|
|
6825
6868
|
...isDisabled !== void 0 ? { isDisabled } : {},
|
|
6826
6869
|
...autoFocus ? { autoFocus: true } : {},
|
|
6827
|
-
className:
|
|
6870
|
+
className: chunkNWGG5WFL_cjs.cn("w-full", className)
|
|
6828
6871
|
}
|
|
6829
6872
|
);
|
|
6830
6873
|
}
|
|
@@ -6851,7 +6894,9 @@ function placeholderFor(field, operator) {
|
|
|
6851
6894
|
if (field.type === "number" || field.type === "integer" || field.type === "currency") return "0";
|
|
6852
6895
|
if (operator === "starts_with") return "starts with\u2026";
|
|
6853
6896
|
if (operator === "ends_with") return "ends with\u2026";
|
|
6854
|
-
if (operator === "contains") return "contains\u2026";
|
|
6897
|
+
if (operator === "contains") return field.type === "array" ? "has\u2026" : "contains\u2026";
|
|
6898
|
+
if (operator === "not_contains")
|
|
6899
|
+
return field.type === "array" ? "does not have\u2026" : "does not contain\u2026";
|
|
6855
6900
|
return "value";
|
|
6856
6901
|
}
|
|
6857
6902
|
function OperatorPicker({
|
|
@@ -6880,7 +6925,7 @@ function OperatorPicker({
|
|
|
6880
6925
|
size,
|
|
6881
6926
|
...isDisabled !== void 0 ? { isDisabled } : {},
|
|
6882
6927
|
...autoFocus ? { autoFocus: true } : {},
|
|
6883
|
-
className:
|
|
6928
|
+
className: chunkNWGG5WFL_cjs.cn("w-full", className),
|
|
6884
6929
|
triggerClassName: "min-w-0"
|
|
6885
6930
|
}
|
|
6886
6931
|
);
|
|
@@ -6910,7 +6955,7 @@ function FilterRow({
|
|
|
6910
6955
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6911
6956
|
"div",
|
|
6912
6957
|
{
|
|
6913
|
-
className:
|
|
6958
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6914
6959
|
"group flex items-center gap-2 px-1.5 py-1 rounded-sm",
|
|
6915
6960
|
"hover:bg-[color-mix(in_oklab,var(--color-surface-2)_50%,var(--color-surface))]"
|
|
6916
6961
|
),
|
|
@@ -6918,7 +6963,7 @@ function FilterRow({
|
|
|
6918
6963
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-12 shrink-0 inline-flex justify-end pr-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6919
6964
|
"span",
|
|
6920
6965
|
{
|
|
6921
|
-
className:
|
|
6966
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6922
6967
|
"font-mono text-[10.5px] tracking-[0.08em]",
|
|
6923
6968
|
index === 0 ? "text-ink-4" : "text-accent-ink"
|
|
6924
6969
|
),
|
|
@@ -6986,7 +7031,7 @@ function FilterRow({
|
|
|
6986
7031
|
onClick: onWrap,
|
|
6987
7032
|
"aria-label": "Wrap in group",
|
|
6988
7033
|
title: "Wrap in a group with the opposite operator",
|
|
6989
|
-
className:
|
|
7034
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
6990
7035
|
"shrink-0 size-6 inline-flex items-center justify-center rounded-sm",
|
|
6991
7036
|
"text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
|
|
6992
7037
|
"opacity-0 group-hover:opacity-100 focus-visible:opacity-100"
|
|
@@ -7013,7 +7058,7 @@ function FilterRow({
|
|
|
7013
7058
|
type: "button",
|
|
7014
7059
|
onClick: onRemove,
|
|
7015
7060
|
"aria-label": field ? "Remove filter" : "Cancel",
|
|
7016
|
-
className:
|
|
7061
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7017
7062
|
"shrink-0 size-6 inline-flex items-center justify-center rounded-sm",
|
|
7018
7063
|
"text-ink-4 hover:text-danger hover:bg-surface-2 cursor-pointer outline-none",
|
|
7019
7064
|
field ? "opacity-0 group-hover:opacity-100 focus-visible:opacity-100" : "opacity-100"
|
|
@@ -7142,7 +7187,7 @@ function GroupAddControls({
|
|
|
7142
7187
|
{
|
|
7143
7188
|
type: "button",
|
|
7144
7189
|
onClick: onAddFilter,
|
|
7145
|
-
className:
|
|
7190
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7146
7191
|
"inline-flex items-center gap-1.5 px-2 py-1 rounded-sm",
|
|
7147
7192
|
"text-ink-2 hover:bg-surface-2 hover:text-ink cursor-pointer outline-none"
|
|
7148
7193
|
),
|
|
@@ -7170,7 +7215,7 @@ function GroupAddControls({
|
|
|
7170
7215
|
type: "button",
|
|
7171
7216
|
onClick: onAddGroup,
|
|
7172
7217
|
title: "Add a nested group with its own logical operator",
|
|
7173
|
-
className:
|
|
7218
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7174
7219
|
"inline-flex items-center gap-1.5 px-2 py-1 rounded-sm",
|
|
7175
7220
|
"text-ink-2 hover:bg-surface-2 hover:text-ink cursor-pointer outline-none"
|
|
7176
7221
|
),
|
|
@@ -7216,7 +7261,7 @@ function NestedGroup({
|
|
|
7216
7261
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-12 shrink-0 inline-flex justify-end pr-1 pt-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7217
7262
|
"span",
|
|
7218
7263
|
{
|
|
7219
|
-
className:
|
|
7264
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7220
7265
|
"font-mono text-[10.5px] tracking-[0.08em]",
|
|
7221
7266
|
index === 0 ? "text-ink-4" : "text-accent-ink"
|
|
7222
7267
|
),
|
|
@@ -7226,7 +7271,7 @@ function NestedGroup({
|
|
|
7226
7271
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7227
7272
|
"div",
|
|
7228
7273
|
{
|
|
7229
|
-
className:
|
|
7274
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7230
7275
|
"flex-1 min-w-0 rounded-sm border border-rule",
|
|
7231
7276
|
"bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]"
|
|
7232
7277
|
),
|
|
@@ -7239,8 +7284,8 @@ function NestedGroup({
|
|
|
7239
7284
|
{
|
|
7240
7285
|
"aria-label": "Group joiner",
|
|
7241
7286
|
options: [
|
|
7242
|
-
{ id: "and", label: "
|
|
7243
|
-
{ id: "or", label: "
|
|
7287
|
+
{ id: "and", label: "and" },
|
|
7288
|
+
{ id: "or", label: "or" }
|
|
7244
7289
|
],
|
|
7245
7290
|
value: group.logicalOperator,
|
|
7246
7291
|
onChange: (next) => onChange({ ...group, logicalOperator: next })
|
|
@@ -7253,7 +7298,7 @@ function NestedGroup({
|
|
|
7253
7298
|
type: "button",
|
|
7254
7299
|
onClick: onRemove,
|
|
7255
7300
|
"aria-label": "Remove group",
|
|
7256
|
-
className:
|
|
7301
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7257
7302
|
"size-6 inline-flex items-center justify-center rounded-sm",
|
|
7258
7303
|
"text-ink-4 hover:text-danger hover:bg-surface cursor-pointer outline-none"
|
|
7259
7304
|
),
|
|
@@ -7476,8 +7521,8 @@ function RecordFilterBuilderPanel({
|
|
|
7476
7521
|
{
|
|
7477
7522
|
"aria-label": "Joiner",
|
|
7478
7523
|
options: [
|
|
7479
|
-
{ id: "and", label: "
|
|
7480
|
-
{ id: "or", label: "
|
|
7524
|
+
{ id: "and", label: "and" },
|
|
7525
|
+
{ id: "or", label: "or" }
|
|
7481
7526
|
],
|
|
7482
7527
|
value: filter.logicalOperator,
|
|
7483
7528
|
onChange: setJoiner2
|
|
@@ -7496,7 +7541,7 @@ function RecordFilterBuilderPanel({
|
|
|
7496
7541
|
type: "button",
|
|
7497
7542
|
onClick: onExpand,
|
|
7498
7543
|
title: "Show filter chips inline above the table",
|
|
7499
|
-
className:
|
|
7544
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7500
7545
|
"inline-flex items-center gap-1 px-2 py-1 rounded-sm",
|
|
7501
7546
|
"font-mono text-[11.5px] text-ink-3 hover:text-ink hover:bg-surface-2",
|
|
7502
7547
|
"cursor-pointer outline-none"
|
|
@@ -7526,7 +7571,7 @@ function RecordFilterBuilderPanel({
|
|
|
7526
7571
|
type: "button",
|
|
7527
7572
|
onClick: onClose,
|
|
7528
7573
|
"aria-label": "Close",
|
|
7529
|
-
className:
|
|
7574
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7530
7575
|
"size-6 inline-flex items-center justify-center rounded-sm",
|
|
7531
7576
|
"text-ink-3 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none"
|
|
7532
7577
|
),
|
|
@@ -7561,7 +7606,7 @@ function RecordFilterBuilderPanel({
|
|
|
7561
7606
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7562
7607
|
"div",
|
|
7563
7608
|
{
|
|
7564
|
-
className:
|
|
7609
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7565
7610
|
"flex items-center justify-between px-3.5 py-2.5 border-t border-rule rounded-b-md",
|
|
7566
7611
|
"bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]"
|
|
7567
7612
|
),
|
|
@@ -7572,7 +7617,7 @@ function RecordFilterBuilderPanel({
|
|
|
7572
7617
|
type: "button",
|
|
7573
7618
|
onClick: clearAll,
|
|
7574
7619
|
disabled: totalChildren === 0,
|
|
7575
|
-
className:
|
|
7620
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7576
7621
|
"font-mono text-[11.5px] text-ink-3 hover:text-ink",
|
|
7577
7622
|
"disabled:opacity-40 disabled:pointer-events-none",
|
|
7578
7623
|
"outline-none cursor-pointer"
|
|
@@ -7582,17 +7627,12 @@ function RecordFilterBuilderPanel({
|
|
|
7582
7627
|
),
|
|
7583
7628
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
7584
7629
|
onSaveView ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7585
|
-
|
|
7630
|
+
chunkNWGG5WFL_cjs.Button,
|
|
7586
7631
|
{
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
"inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-sm",
|
|
7592
|
-
"font-sans text-[13px] text-ink-2 hover:bg-surface-2 hover:text-ink",
|
|
7593
|
-
"disabled:opacity-40 disabled:pointer-events-none",
|
|
7594
|
-
"outline-none cursor-pointer"
|
|
7595
|
-
),
|
|
7632
|
+
variant: "ghost",
|
|
7633
|
+
size: "sm",
|
|
7634
|
+
onPress: onSaveView,
|
|
7635
|
+
isDisabled: totalChildren === 0,
|
|
7596
7636
|
children: [
|
|
7597
7637
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7598
7638
|
"svg",
|
|
@@ -7615,19 +7655,7 @@ function RecordFilterBuilderPanel({
|
|
|
7615
7655
|
]
|
|
7616
7656
|
}
|
|
7617
7657
|
) : null,
|
|
7618
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7619
|
-
"button",
|
|
7620
|
-
{
|
|
7621
|
-
type: "button",
|
|
7622
|
-
onClick: onClose,
|
|
7623
|
-
className: chunkMWAXK66H_cjs.cn(
|
|
7624
|
-
"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-sm",
|
|
7625
|
-
"bg-ink text-surface font-mono text-[12px]",
|
|
7626
|
-
"hover:bg-accent-ink outline-none cursor-pointer"
|
|
7627
|
-
),
|
|
7628
|
-
children: "Done"
|
|
7629
|
-
}
|
|
7630
|
-
)
|
|
7658
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { variant: "cta", size: "sm", onPress: onClose, children: "Done" })
|
|
7631
7659
|
] })
|
|
7632
7660
|
]
|
|
7633
7661
|
}
|
|
@@ -7701,11 +7729,11 @@ function RecordFilterButton({
|
|
|
7701
7729
|
type: "button",
|
|
7702
7730
|
"data-filter-trigger": "collapsed",
|
|
7703
7731
|
onClick: () => setOpen((v) => !v),
|
|
7704
|
-
className:
|
|
7732
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7705
7733
|
"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-md border",
|
|
7706
7734
|
"font-mono text-[12px] cursor-pointer outline-none",
|
|
7707
7735
|
"focus-visible:shadow-[var(--shadow-focus)]",
|
|
7708
|
-
hasFilters ?
|
|
7736
|
+
hasFilters ? chunkNWGG5WFL_cjs.cn(
|
|
7709
7737
|
"border-[color-mix(in_oklab,var(--color-accent)_35%,var(--color-rule))]",
|
|
7710
7738
|
"bg-[color-mix(in_oklab,var(--color-accent)_8%,var(--color-surface))]",
|
|
7711
7739
|
"text-accent-ink"
|
|
@@ -7804,7 +7832,7 @@ function RecordFilterChips({
|
|
|
7804
7832
|
logicalOperator: filter.logicalOperator === "and" ? "or" : "and"
|
|
7805
7833
|
}),
|
|
7806
7834
|
title: "Toggle joiner",
|
|
7807
|
-
className:
|
|
7835
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7808
7836
|
"inline-flex items-center px-1.5 py-0.5 rounded-sm border border-dashed border-rule",
|
|
7809
7837
|
"font-mono text-[10.5px] tracking-[0.08em] text-ink-3",
|
|
7810
7838
|
"hover:text-ink hover:border-ink-4 cursor-pointer outline-none"
|
|
@@ -7877,7 +7905,7 @@ function RecordFilterChips({
|
|
|
7877
7905
|
elements: elements.filter((_, idx) => idx !== i)
|
|
7878
7906
|
});
|
|
7879
7907
|
},
|
|
7880
|
-
className:
|
|
7908
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7881
7909
|
"size-5 inline-flex items-center justify-center rounded-[3px]",
|
|
7882
7910
|
"text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none"
|
|
7883
7911
|
),
|
|
@@ -7922,7 +7950,7 @@ function GroupPill({ group }) {
|
|
|
7922
7950
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7923
7951
|
"span",
|
|
7924
7952
|
{
|
|
7925
|
-
className:
|
|
7953
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7926
7954
|
"inline-flex items-center gap-1.5 px-2 py-1 rounded-sm border border-dashed border-rule",
|
|
7927
7955
|
"bg-[color-mix(in_oklab,var(--color-surface-2)_60%,var(--color-surface))]"
|
|
7928
7956
|
),
|
|
@@ -7960,7 +7988,7 @@ function CollapseToggle({ onClick }) {
|
|
|
7960
7988
|
{
|
|
7961
7989
|
type: "button",
|
|
7962
7990
|
onClick,
|
|
7963
|
-
className:
|
|
7991
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
7964
7992
|
"inline-flex items-center gap-1",
|
|
7965
7993
|
"font-mono text-[11px] uppercase tracking-[0.08em]",
|
|
7966
7994
|
"text-ink-3 hover:text-ink cursor-pointer outline-none"
|
|
@@ -8020,7 +8048,7 @@ function Chip2({
|
|
|
8020
8048
|
setEditing((v) => !v);
|
|
8021
8049
|
}
|
|
8022
8050
|
},
|
|
8023
|
-
className:
|
|
8051
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8024
8052
|
"group inline-flex items-center gap-1.5 pl-2 pr-1 py-1 rounded-sm border cursor-pointer",
|
|
8025
8053
|
editing ? "border-accent shadow-[var(--shadow-focus)] bg-surface" : "border-rule bg-surface hover:border-ink-4"
|
|
8026
8054
|
),
|
|
@@ -8053,7 +8081,7 @@ function Chip2({
|
|
|
8053
8081
|
onRemove();
|
|
8054
8082
|
if (editing) setEditing(false);
|
|
8055
8083
|
},
|
|
8056
|
-
className:
|
|
8084
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8057
8085
|
"ml-0.5 size-4 inline-flex items-center justify-center rounded-[3px]",
|
|
8058
8086
|
"text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none"
|
|
8059
8087
|
),
|
|
@@ -8134,19 +8162,7 @@ function ChipMiniEditor({
|
|
|
8134
8162
|
onChange: onChangeValue
|
|
8135
8163
|
}
|
|
8136
8164
|
) }),
|
|
8137
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8138
|
-
"button",
|
|
8139
|
-
{
|
|
8140
|
-
type: "submit",
|
|
8141
|
-
className: chunkMWAXK66H_cjs.cn(
|
|
8142
|
-
"shrink-0 inline-flex items-center px-2.5 py-1.5 rounded-md",
|
|
8143
|
-
"bg-ink text-surface font-mono text-[12px]",
|
|
8144
|
-
"hover:bg-accent-ink cursor-pointer outline-none",
|
|
8145
|
-
"focus-visible:shadow-[var(--shadow-focus)]"
|
|
8146
|
-
),
|
|
8147
|
-
children: "Save"
|
|
8148
|
-
}
|
|
8149
|
-
)
|
|
8165
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkNWGG5WFL_cjs.Button, { type: "submit", variant: "cta", size: "sm", className: "shrink-0", children: "Save" })
|
|
8150
8166
|
]
|
|
8151
8167
|
}
|
|
8152
8168
|
);
|
|
@@ -8158,7 +8174,7 @@ function InlineAddFilter({ onClick }) {
|
|
|
8158
8174
|
type: "button",
|
|
8159
8175
|
"data-filter-trigger": "expanded",
|
|
8160
8176
|
onClick,
|
|
8161
|
-
className:
|
|
8177
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8162
8178
|
"inline-flex items-center gap-1 px-2 py-1 rounded-sm",
|
|
8163
8179
|
"text-ink-3 hover:bg-surface-2 hover:text-ink cursor-pointer outline-none"
|
|
8164
8180
|
),
|
|
@@ -8209,7 +8225,7 @@ function Separator({
|
|
|
8209
8225
|
{
|
|
8210
8226
|
...props,
|
|
8211
8227
|
orientation,
|
|
8212
|
-
className:
|
|
8228
|
+
className: chunkNWGG5WFL_cjs.cn(separatorStyles({ orientation, variant }), className)
|
|
8213
8229
|
}
|
|
8214
8230
|
);
|
|
8215
8231
|
}
|
|
@@ -8218,7 +8234,7 @@ function SuccessAnimation({ className }) {
|
|
|
8218
8234
|
"div",
|
|
8219
8235
|
{
|
|
8220
8236
|
"aria-hidden": true,
|
|
8221
|
-
className:
|
|
8237
|
+
className: chunkNWGG5WFL_cjs.cn("size-24 text-success motion-safe:animate-status-pop", className),
|
|
8222
8238
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "size-full", strokeWidth: 1.5 })
|
|
8223
8239
|
}
|
|
8224
8240
|
);
|
|
@@ -8228,7 +8244,7 @@ function Switch({ children, labelPlacement = "end", className, ...props }) {
|
|
|
8228
8244
|
reactAriaComponents.Switch,
|
|
8229
8245
|
{
|
|
8230
8246
|
...props,
|
|
8231
|
-
className: (renderProps) =>
|
|
8247
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
8232
8248
|
// `relative`: RAC's visually-hidden <input> is absolutely positioned;
|
|
8233
8249
|
// without a positioned label it escapes an overflow-auto ancestor and
|
|
8234
8250
|
// its containing block becomes the page shell, so focusing it (any
|
|
@@ -8244,7 +8260,7 @@ function Switch({ children, labelPlacement = "end", className, ...props }) {
|
|
|
8244
8260
|
"span",
|
|
8245
8261
|
{
|
|
8246
8262
|
"aria-hidden": true,
|
|
8247
|
-
className:
|
|
8263
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8248
8264
|
"relative inline-block shrink-0",
|
|
8249
8265
|
"w-[38px] h-[22px] rounded-pill border",
|
|
8250
8266
|
"bg-surface-3 border-rule",
|
|
@@ -8255,7 +8271,7 @@ function Switch({ children, labelPlacement = "end", className, ...props }) {
|
|
|
8255
8271
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8256
8272
|
"span",
|
|
8257
8273
|
{
|
|
8258
|
-
className:
|
|
8274
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8259
8275
|
"absolute top-[1px] left-[1px]",
|
|
8260
8276
|
"block size-[18px] rounded-full bg-surface",
|
|
8261
8277
|
"transition-transform duration-200",
|
|
@@ -8305,7 +8321,7 @@ function Root({ size, className, children, ...props }) {
|
|
|
8305
8321
|
reactAriaComponents.Tabs,
|
|
8306
8322
|
{
|
|
8307
8323
|
...props,
|
|
8308
|
-
className: (rp) =>
|
|
8324
|
+
className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.root(), typeof className === "function" ? className(rp) : className),
|
|
8309
8325
|
children
|
|
8310
8326
|
}
|
|
8311
8327
|
);
|
|
@@ -8316,7 +8332,7 @@ function List({ size, className, children, ...props }) {
|
|
|
8316
8332
|
reactAriaComponents.TabList,
|
|
8317
8333
|
{
|
|
8318
8334
|
...props,
|
|
8319
|
-
className: (rp) =>
|
|
8335
|
+
className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.list(), typeof className === "function" ? className(rp) : className),
|
|
8320
8336
|
children
|
|
8321
8337
|
}
|
|
8322
8338
|
);
|
|
@@ -8327,7 +8343,7 @@ function Trigger({ size, className, children, ...props }) {
|
|
|
8327
8343
|
reactAriaComponents.Tab,
|
|
8328
8344
|
{
|
|
8329
8345
|
...props,
|
|
8330
|
-
className: (rp) =>
|
|
8346
|
+
className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.trigger(), typeof className === "function" ? className(rp) : className),
|
|
8331
8347
|
children
|
|
8332
8348
|
}
|
|
8333
8349
|
);
|
|
@@ -8338,7 +8354,7 @@ function Panel({ className, children, ...props }) {
|
|
|
8338
8354
|
reactAriaComponents.TabPanel,
|
|
8339
8355
|
{
|
|
8340
8356
|
...props,
|
|
8341
|
-
className: (rp) =>
|
|
8357
|
+
className: (rp) => chunkNWGG5WFL_cjs.cn(styles4.panel(), typeof className === "function" ? className(rp) : className),
|
|
8342
8358
|
children
|
|
8343
8359
|
}
|
|
8344
8360
|
);
|
|
@@ -8367,7 +8383,7 @@ function Textarea({
|
|
|
8367
8383
|
reactAriaComponents.TextField,
|
|
8368
8384
|
{
|
|
8369
8385
|
...props,
|
|
8370
|
-
className: (renderProps) =>
|
|
8386
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
8371
8387
|
"grid grid-cols-1 gap-1.5",
|
|
8372
8388
|
typeof className === "function" ? className(renderProps) : className
|
|
8373
8389
|
),
|
|
@@ -8379,7 +8395,7 @@ function Textarea({
|
|
|
8379
8395
|
...textareaProps,
|
|
8380
8396
|
rows,
|
|
8381
8397
|
placeholder: placeholder ?? "",
|
|
8382
|
-
className:
|
|
8398
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8383
8399
|
// Same hairline chrome as Input, but allow vertical resize and set a
|
|
8384
8400
|
// sensible minimum height so short content doesn't collapse.
|
|
8385
8401
|
styles4.box(),
|
|
@@ -8410,7 +8426,7 @@ function TimeField({
|
|
|
8410
8426
|
reactAriaComponents.TimeField,
|
|
8411
8427
|
{
|
|
8412
8428
|
...props,
|
|
8413
|
-
className: (renderProps) =>
|
|
8429
|
+
className: (renderProps) => chunkNWGG5WFL_cjs.cn(
|
|
8414
8430
|
"grid grid-cols-1 gap-1.5",
|
|
8415
8431
|
typeof className === "function" ? className(renderProps) : className
|
|
8416
8432
|
),
|
|
@@ -8419,7 +8435,7 @@ function TimeField({
|
|
|
8419
8435
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8420
8436
|
reactAriaComponents.DateInput,
|
|
8421
8437
|
{
|
|
8422
|
-
className:
|
|
8438
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8423
8439
|
styles4.box(),
|
|
8424
8440
|
styles4.content(),
|
|
8425
8441
|
"flex items-center min-w-0 text-ink",
|
|
@@ -8432,12 +8448,12 @@ function TimeField({
|
|
|
8432
8448
|
reactAriaComponents.DateSegment,
|
|
8433
8449
|
{
|
|
8434
8450
|
segment,
|
|
8435
|
-
className:
|
|
8451
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8436
8452
|
"px-px tabular-nums outline-none select-none",
|
|
8437
8453
|
"data-[placeholder]:text-ink-4",
|
|
8438
8454
|
"data-[type=literal]:text-ink-4",
|
|
8439
8455
|
// segment focus treatment: indigo fill, paper text
|
|
8440
|
-
"data-[focused]:bg-accent data-[focused]:text-
|
|
8456
|
+
"data-[focused]:bg-accent data-[focused]:text-tile-fg data-[focused]:rounded-[3px]",
|
|
8441
8457
|
"data-[disabled]:cursor-not-allowed"
|
|
8442
8458
|
)
|
|
8443
8459
|
}
|
|
@@ -8460,8 +8476,8 @@ var toastStyles = tailwindVariants.tv({
|
|
|
8460
8476
|
"rounded-lg border border-rule bg-surface shadow-float",
|
|
8461
8477
|
"px-3.5 py-3 outline-none",
|
|
8462
8478
|
"focus-visible:shadow-focus",
|
|
8463
|
-
"entering:animate-
|
|
8464
|
-
"exiting:animate-
|
|
8479
|
+
"entering:animate-enter-slide-up",
|
|
8480
|
+
"exiting:animate-exit-fade"
|
|
8465
8481
|
],
|
|
8466
8482
|
icon: "size-4 shrink-0 mt-0.5",
|
|
8467
8483
|
title: "font-sans text-[13px] font-medium leading-[1.4] text-ink",
|
|
@@ -8486,7 +8502,7 @@ function ToastRegion({ queue, className }) {
|
|
|
8486
8502
|
reactAriaComponents.UNSTABLE_ToastRegion,
|
|
8487
8503
|
{
|
|
8488
8504
|
queue,
|
|
8489
|
-
className:
|
|
8505
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8490
8506
|
"fixed bottom-4 right-4 z-[1300] flex flex-col-reverse gap-2 outline-none",
|
|
8491
8507
|
className
|
|
8492
8508
|
),
|
|
@@ -8505,7 +8521,7 @@ function ToastRegion({ queue, className }) {
|
|
|
8505
8521
|
{
|
|
8506
8522
|
slot: "close",
|
|
8507
8523
|
"aria-label": "Dismiss",
|
|
8508
|
-
className:
|
|
8524
|
+
className: chunkNWGG5WFL_cjs.cn(
|
|
8509
8525
|
"shrink-0 inline-flex items-center justify-center size-6 rounded-md",
|
|
8510
8526
|
"text-ink-4 hover:text-ink hover:bg-surface-2 cursor-pointer outline-none",
|
|
8511
8527
|
"focus-visible:shadow-focus"
|
|
@@ -8521,23 +8537,23 @@ function ToastRegion({ queue, className }) {
|
|
|
8521
8537
|
|
|
8522
8538
|
Object.defineProperty(exports, "Button", {
|
|
8523
8539
|
enumerable: true,
|
|
8524
|
-
get: function () { return
|
|
8540
|
+
get: function () { return chunkNWGG5WFL_cjs.Button; }
|
|
8525
8541
|
});
|
|
8526
8542
|
Object.defineProperty(exports, "Skeleton", {
|
|
8527
8543
|
enumerable: true,
|
|
8528
|
-
get: function () { return
|
|
8544
|
+
get: function () { return chunkNWGG5WFL_cjs.Skeleton; }
|
|
8529
8545
|
});
|
|
8530
8546
|
Object.defineProperty(exports, "buttonStyles", {
|
|
8531
8547
|
enumerable: true,
|
|
8532
|
-
get: function () { return
|
|
8548
|
+
get: function () { return chunkNWGG5WFL_cjs.buttonStyles; }
|
|
8533
8549
|
});
|
|
8534
8550
|
Object.defineProperty(exports, "cn", {
|
|
8535
8551
|
enumerable: true,
|
|
8536
|
-
get: function () { return
|
|
8552
|
+
get: function () { return chunkNWGG5WFL_cjs.cn; }
|
|
8537
8553
|
});
|
|
8538
8554
|
Object.defineProperty(exports, "skeletonStyles", {
|
|
8539
8555
|
enumerable: true,
|
|
8540
|
-
get: function () { return
|
|
8556
|
+
get: function () { return chunkNWGG5WFL_cjs.skeletonStyles; }
|
|
8541
8557
|
});
|
|
8542
8558
|
exports.ATTRIBUTE_TYPES = ATTRIBUTE_TYPES;
|
|
8543
8559
|
exports.ATTRIBUTE_TYPE_ICONS = ATTRIBUTE_TYPE_ICONS;
|