@ai-matrx/design-system 0.86.332 → 0.86.334
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/CHANGELOG.md +28 -2
- package/dist/auth-gate-dialog.js +4 -4
- package/dist/carousel.js +18 -18
- package/dist/{chunk-MVGMI6UZ.js → chunk-3MQMVPKO.js} +5 -5
- package/dist/{chunk-2WL2SGKL.js → chunk-677JS6TX.js} +24 -10
- package/dist/chunk-677JS6TX.js.map +1 -0
- package/dist/{chunk-TBDMTCRW.js → chunk-6YZMGSQY.js} +10 -10
- package/dist/{chunk-OFJ5LGBU.js → chunk-7NEVJKDZ.js} +8 -8
- package/dist/{chunk-XTNAKJSH.js → chunk-B3LDW3IQ.js} +2 -2
- package/dist/{chunk-VTJWQPYR.js → chunk-BM2YYBUO.js} +5 -5
- package/dist/{chunk-FTZCPGTH.js → chunk-CFCWQDGC.js} +4 -4
- package/dist/{chunk-CN7C4KQB.js → chunk-CH2NWSES.js} +2 -2
- package/dist/{chunk-CJCUD62M.js → chunk-CSSD6NS4.js} +5 -5
- package/dist/{chunk-W3QSRJ3O.js → chunk-E4GS5QH7.js} +7 -7
- package/dist/{chunk-O4KANICE.js → chunk-FRJ4PPA2.js} +5 -5
- package/dist/{chunk-4PCLJAW2.js → chunk-FXT7PZAF.js} +5 -14
- package/dist/chunk-FXT7PZAF.js.map +1 -0
- package/dist/{chunk-D45XDOJS.js → chunk-GHPUO3O7.js} +2 -2
- package/dist/{chunk-RPUC5MNH.js → chunk-GLZJ7WZK.js} +3 -3
- package/dist/{chunk-VKWQTSB6.js → chunk-HEFTQUJ5.js} +6 -6
- package/dist/{chunk-KWBYKUKP.js → chunk-J6637L6D.js} +4 -4
- package/dist/chunk-KGW373MK.js +21 -0
- package/dist/chunk-KGW373MK.js.map +1 -0
- package/dist/{chunk-5LT34PFX.js → chunk-MEJVHDYJ.js} +18 -18
- package/dist/{chunk-PPB52S7F.js → chunk-MFUNGDHO.js} +7 -7
- package/dist/{chunk-LCPHFONA.js → chunk-MIJMP4WI.js} +5 -5
- package/dist/{chunk-XREKZXAL.js → chunk-SMJGESH7.js} +6 -6
- package/dist/{chunk-SNHCBHBE.js → chunk-U24MOJWK.js} +4 -4
- package/dist/{chunk-DO6G4EKJ.js → chunk-UWTODOMD.js} +2 -2
- package/dist/{chunk-BQR4N24F.js → chunk-VLLUUOYJ.js} +4 -4
- package/dist/{chunk-FD6V6JBN.js → chunk-VV6WZTH5.js} +8 -8
- package/dist/{chunk-LVM7XZRJ.js → chunk-WQ2QCMMA.js} +4 -4
- package/dist/{chunk-57OD2WTY.js → chunk-X6ZRHJQP.js} +6 -6
- package/dist/{chunk-PLFWDUJW.js → chunk-XEXSZBXV.js} +3 -3
- package/dist/{chunk-JSXNITMG.js → chunk-YC5GAO35.js} +2 -2
- package/dist/{chunk-5TF2AFDM.js → chunk-ZCRPESQX.js} +4 -4
- package/dist/{chunk-5IKQ6RU4.js → chunk-ZOQ2XKXF.js} +9 -9
- package/dist/clipboard-fallback-dialog.js +10 -10
- package/dist/controls.js +15 -15
- package/dist/data-table/data-row-inspector.js +15 -14
- package/dist/data-table/data-row-window.js +20 -19
- package/dist/data-table/index.cjs +16 -12
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.js +37 -36
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/layered-filter-builder.js +4 -4
- package/dist/data-table/pagination.js +8 -8
- package/dist/data-table/uuid-cell.js +8 -8
- package/dist/desktop.js +22 -22
- package/dist/email-input-dialog.js +7 -7
- package/dist/index.cjs +590 -397
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +120 -10
- package/dist/index.d.ts +120 -10
- package/dist/index.js +519 -348
- package/dist/index.js.map +1 -1
- package/dist/intro-stage.js +3 -3
- package/dist/item.cjs +33 -17
- package/dist/item.cjs.map +1 -1
- package/dist/item.d.cts +7 -1
- package/dist/item.d.ts +7 -1
- package/dist/item.js +32 -30
- package/dist/item.js.map +1 -1
- package/dist/lite-table.js +10 -10
- package/dist/menu-look.js +3 -3
- package/dist/record-list.cjs +16 -2
- package/dist/record-list.cjs.map +1 -1
- package/dist/record-list.d.cts +7 -1
- package/dist/record-list.d.ts +7 -1
- package/dist/record-list.js +13 -13
- package/dist/sandbox-gate-dialog.js +8 -8
- package/dist/scope-mismatch-dialog.js +7 -7
- package/dist/settings.cjs +16 -12
- package/dist/settings.cjs.map +1 -1
- package/dist/settings.js +20 -19
- package/dist/settings.js.map +1 -1
- package/dist/site-icon.js +2 -2
- package/dist/swipe-deck.js +1 -1
- package/dist/tap-shortcut.cjs +40 -0
- package/dist/tap-shortcut.cjs.map +1 -0
- package/dist/tap-shortcut.d.cts +13 -0
- package/dist/tap-shortcut.d.ts +13 -0
- package/dist/tap-shortcut.js +10 -0
- package/dist/tap-shortcut.js.map +1 -0
- package/dist/tap-target/ai-buttons.cjs +16 -12
- package/dist/tap-target/ai-buttons.cjs.map +1 -1
- package/dist/tap-target/ai-buttons.js +4 -3
- package/dist/tap-target/ai-buttons.js.map +1 -1
- package/dist/tap-target/buttons.cjs +16 -12
- package/dist/tap-target/buttons.cjs.map +1 -1
- package/dist/tap-target/buttons.d.cts +3 -5
- package/dist/tap-target/buttons.d.ts +3 -5
- package/dist/tap-target/buttons.js +4 -3
- package/dist/tap-target.cjs +16 -12
- package/dist/tap-target.cjs.map +1 -1
- package/dist/tap-target.d.cts +5 -7
- package/dist/tap-target.d.ts +5 -7
- package/dist/tap-target.js +6 -4
- package/dist/text-input-dialog.js +10 -10
- package/dist/thumbnail-grid.js +2 -2
- package/dist/transcript-scroll-nav.cjs +16 -12
- package/dist/transcript-scroll-nav.cjs.map +1 -1
- package/dist/transcript-scroll-nav.js +2 -1
- package/dist/transcript-scroll-nav.js.map +1 -1
- package/dist/value-prompts-dialog.js +5 -5
- package/dist/writing-field.cjs +16 -12
- package/dist/writing-field.cjs.map +1 -1
- package/dist/writing-field.js +21 -20
- package/dist/writing-field.js.map +1 -1
- package/package.json +12 -2
- package/dist/chunk-2WL2SGKL.js.map +0 -1
- package/dist/chunk-4PCLJAW2.js.map +0 -1
- /package/dist/{chunk-MVGMI6UZ.js.map → chunk-3MQMVPKO.js.map} +0 -0
- /package/dist/{chunk-TBDMTCRW.js.map → chunk-6YZMGSQY.js.map} +0 -0
- /package/dist/{chunk-OFJ5LGBU.js.map → chunk-7NEVJKDZ.js.map} +0 -0
- /package/dist/{chunk-XTNAKJSH.js.map → chunk-B3LDW3IQ.js.map} +0 -0
- /package/dist/{chunk-VTJWQPYR.js.map → chunk-BM2YYBUO.js.map} +0 -0
- /package/dist/{chunk-FTZCPGTH.js.map → chunk-CFCWQDGC.js.map} +0 -0
- /package/dist/{chunk-CN7C4KQB.js.map → chunk-CH2NWSES.js.map} +0 -0
- /package/dist/{chunk-CJCUD62M.js.map → chunk-CSSD6NS4.js.map} +0 -0
- /package/dist/{chunk-W3QSRJ3O.js.map → chunk-E4GS5QH7.js.map} +0 -0
- /package/dist/{chunk-O4KANICE.js.map → chunk-FRJ4PPA2.js.map} +0 -0
- /package/dist/{chunk-D45XDOJS.js.map → chunk-GHPUO3O7.js.map} +0 -0
- /package/dist/{chunk-RPUC5MNH.js.map → chunk-GLZJ7WZK.js.map} +0 -0
- /package/dist/{chunk-VKWQTSB6.js.map → chunk-HEFTQUJ5.js.map} +0 -0
- /package/dist/{chunk-KWBYKUKP.js.map → chunk-J6637L6D.js.map} +0 -0
- /package/dist/{chunk-5LT34PFX.js.map → chunk-MEJVHDYJ.js.map} +0 -0
- /package/dist/{chunk-PPB52S7F.js.map → chunk-MFUNGDHO.js.map} +0 -0
- /package/dist/{chunk-LCPHFONA.js.map → chunk-MIJMP4WI.js.map} +0 -0
- /package/dist/{chunk-XREKZXAL.js.map → chunk-SMJGESH7.js.map} +0 -0
- /package/dist/{chunk-SNHCBHBE.js.map → chunk-U24MOJWK.js.map} +0 -0
- /package/dist/{chunk-DO6G4EKJ.js.map → chunk-UWTODOMD.js.map} +0 -0
- /package/dist/{chunk-BQR4N24F.js.map → chunk-VLLUUOYJ.js.map} +0 -0
- /package/dist/{chunk-FD6V6JBN.js.map → chunk-VV6WZTH5.js.map} +0 -0
- /package/dist/{chunk-LVM7XZRJ.js.map → chunk-WQ2QCMMA.js.map} +0 -0
- /package/dist/{chunk-57OD2WTY.js.map → chunk-X6ZRHJQP.js.map} +0 -0
- /package/dist/{chunk-PLFWDUJW.js.map → chunk-XEXSZBXV.js.map} +0 -0
- /package/dist/{chunk-JSXNITMG.js.map → chunk-YC5GAO35.js.map} +0 -0
- /package/dist/{chunk-5TF2AFDM.js.map → chunk-ZCRPESQX.js.map} +0 -0
- /package/dist/{chunk-5IKQ6RU4.js.map → chunk-ZOQ2XKXF.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
WritingBoxProvider,
|
|
4
|
+
WritingInputProvider,
|
|
5
|
+
useWritingBox,
|
|
6
|
+
useWritingInput
|
|
7
|
+
} from "./chunk-AJ6BAYEN.js";
|
|
2
8
|
import {
|
|
3
9
|
ARCHIVED_NEVER_DESTROYED,
|
|
4
10
|
AppRail,
|
|
@@ -19,13 +25,10 @@ import {
|
|
|
19
25
|
matchesOrganizationQuery,
|
|
20
26
|
orderOrganizationsForPicker,
|
|
21
27
|
organizationColor
|
|
22
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-7NEVJKDZ.js";
|
|
23
29
|
import {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
useWritingBox,
|
|
27
|
-
useWritingInput
|
|
28
|
-
} from "./chunk-AJ6BAYEN.js";
|
|
30
|
+
EditableLabel
|
|
31
|
+
} from "./chunk-J6637L6D.js";
|
|
29
32
|
import {
|
|
30
33
|
ErrorNotice,
|
|
31
34
|
RELOAD_PAGE_LABEL,
|
|
@@ -40,7 +43,24 @@ import {
|
|
|
40
43
|
isTimedOutError,
|
|
41
44
|
readOf,
|
|
42
45
|
readStatusOf
|
|
43
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-CFCWQDGC.js";
|
|
47
|
+
import {
|
|
48
|
+
ContextMenu,
|
|
49
|
+
ContextMenuCheckboxItem,
|
|
50
|
+
ContextMenuContent,
|
|
51
|
+
ContextMenuGroup,
|
|
52
|
+
ContextMenuItem,
|
|
53
|
+
ContextMenuLabel,
|
|
54
|
+
ContextMenuPortal,
|
|
55
|
+
ContextMenuRadioGroup,
|
|
56
|
+
ContextMenuRadioItem,
|
|
57
|
+
ContextMenuSeparator,
|
|
58
|
+
ContextMenuShortcut,
|
|
59
|
+
ContextMenuSub,
|
|
60
|
+
ContextMenuSubContent,
|
|
61
|
+
ContextMenuSubTrigger,
|
|
62
|
+
ContextMenuTrigger
|
|
63
|
+
} from "./chunk-HEFTQUJ5.js";
|
|
44
64
|
import {
|
|
45
65
|
DecisionControl,
|
|
46
66
|
IconButton,
|
|
@@ -50,13 +70,13 @@ import {
|
|
|
50
70
|
countReadState,
|
|
51
71
|
indicatorText,
|
|
52
72
|
unavailableCountLabel
|
|
53
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-MEJVHDYJ.js";
|
|
54
74
|
import {
|
|
55
75
|
Collapsible,
|
|
56
76
|
CollapsibleContent,
|
|
57
77
|
CollapsibleTrigger
|
|
58
78
|
} from "./chunk-6NOLVA4E.js";
|
|
59
|
-
import "./chunk-
|
|
79
|
+
import "./chunk-GHPUO3O7.js";
|
|
60
80
|
import {
|
|
61
81
|
Slider
|
|
62
82
|
} from "./chunk-ZRHVA3DL.js";
|
|
@@ -67,30 +87,10 @@ import {
|
|
|
67
87
|
SiteIcon,
|
|
68
88
|
resolveSiteIcon,
|
|
69
89
|
siteHostname
|
|
70
|
-
} from "./chunk-
|
|
71
|
-
import {
|
|
72
|
-
EditableLabel
|
|
73
|
-
} from "./chunk-KWBYKUKP.js";
|
|
74
|
-
import {
|
|
75
|
-
ContextMenu,
|
|
76
|
-
ContextMenuCheckboxItem,
|
|
77
|
-
ContextMenuContent,
|
|
78
|
-
ContextMenuGroup,
|
|
79
|
-
ContextMenuItem,
|
|
80
|
-
ContextMenuLabel,
|
|
81
|
-
ContextMenuPortal,
|
|
82
|
-
ContextMenuRadioGroup,
|
|
83
|
-
ContextMenuRadioItem,
|
|
84
|
-
ContextMenuSeparator,
|
|
85
|
-
ContextMenuShortcut,
|
|
86
|
-
ContextMenuSub,
|
|
87
|
-
ContextMenuSubContent,
|
|
88
|
-
ContextMenuSubTrigger,
|
|
89
|
-
ContextMenuTrigger
|
|
90
|
-
} from "./chunk-VKWQTSB6.js";
|
|
90
|
+
} from "./chunk-ZCRPESQX.js";
|
|
91
91
|
import {
|
|
92
92
|
MatrxTableRowAlchemyProvider
|
|
93
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-CH2NWSES.js";
|
|
94
94
|
import {
|
|
95
95
|
ARCHIVE_FILTER_LABELS,
|
|
96
96
|
ARCHIVE_FILTER_VALUES,
|
|
@@ -109,7 +109,7 @@ import {
|
|
|
109
109
|
BottomSheetBody,
|
|
110
110
|
BottomSheetFooter,
|
|
111
111
|
BottomSheetHeader
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-WQ2QCMMA.js";
|
|
113
113
|
import {
|
|
114
114
|
Command,
|
|
115
115
|
CommandDialog,
|
|
@@ -120,7 +120,7 @@ import {
|
|
|
120
120
|
CommandList,
|
|
121
121
|
CommandSeparator,
|
|
122
122
|
CommandShortcut
|
|
123
|
-
} from "./chunk-
|
|
123
|
+
} from "./chunk-MIJMP4WI.js";
|
|
124
124
|
import {
|
|
125
125
|
AlertDialog,
|
|
126
126
|
AlertDialogAction,
|
|
@@ -138,7 +138,7 @@ import {
|
|
|
138
138
|
EmptyState,
|
|
139
139
|
RowGroup,
|
|
140
140
|
Tile
|
|
141
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-MFUNGDHO.js";
|
|
142
142
|
import {
|
|
143
143
|
Drawer,
|
|
144
144
|
DrawerBody,
|
|
@@ -183,14 +183,13 @@ import {
|
|
|
183
183
|
SheetTitle,
|
|
184
184
|
SheetTrigger,
|
|
185
185
|
sheetVariants
|
|
186
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-YC5GAO35.js";
|
|
187
|
+
import {
|
|
188
|
+
Checkbox
|
|
189
|
+
} from "./chunk-VLLUUOYJ.js";
|
|
187
190
|
import {
|
|
188
191
|
HostLink
|
|
189
192
|
} from "./chunk-TH6DDCWF.js";
|
|
190
|
-
import "./chunk-IMQ3RX35.js";
|
|
191
|
-
import {
|
|
192
|
-
Checkbox
|
|
193
|
-
} from "./chunk-BQR4N24F.js";
|
|
194
193
|
import {
|
|
195
194
|
DRAG_IGNORE_SELECTOR,
|
|
196
195
|
Dialog,
|
|
@@ -216,11 +215,12 @@ import {
|
|
|
216
215
|
useDialogContainer,
|
|
217
216
|
useDragMove,
|
|
218
217
|
useLook
|
|
219
|
-
} from "./chunk-
|
|
218
|
+
} from "./chunk-UWTODOMD.js";
|
|
219
|
+
import "./chunk-IMQ3RX35.js";
|
|
220
220
|
import {
|
|
221
221
|
MOBILE_BREAKPOINT,
|
|
222
222
|
useIsMobile
|
|
223
|
-
} from "./chunk-
|
|
223
|
+
} from "./chunk-U24MOJWK.js";
|
|
224
224
|
import {
|
|
225
225
|
FLOATING_LAYER_ATTR,
|
|
226
226
|
FloatingLayer,
|
|
@@ -243,16 +243,20 @@ import {
|
|
|
243
243
|
DRAG_CURSORS,
|
|
244
244
|
holdDragCursor
|
|
245
245
|
} from "./chunk-LEPD6TV7.js";
|
|
246
|
-
import "./chunk-
|
|
246
|
+
import "./chunk-FRJ4PPA2.js";
|
|
247
|
+
import {
|
|
248
|
+
ALCHEMY_GLYPH_PATHS,
|
|
249
|
+
ALCHEMY_GLYPH_VIEWBOX
|
|
250
|
+
} from "./chunk-KPZX2M2C.js";
|
|
247
251
|
import {
|
|
248
252
|
TapTargetCopyButton,
|
|
249
253
|
TapTargetLabeled,
|
|
250
254
|
TapTargetSearchGroup
|
|
251
|
-
} from "./chunk-
|
|
255
|
+
} from "./chunk-GLZJ7WZK.js";
|
|
252
256
|
import {
|
|
253
257
|
TapDefaultVariant,
|
|
254
258
|
useTapDefaultVariant
|
|
255
|
-
} from "./chunk-
|
|
259
|
+
} from "./chunk-B3LDW3IQ.js";
|
|
256
260
|
import {
|
|
257
261
|
TapSurface,
|
|
258
262
|
TapTargetButton,
|
|
@@ -266,10 +270,9 @@ import {
|
|
|
266
270
|
findPillInsetWarning,
|
|
267
271
|
findTapPlacementWarning,
|
|
268
272
|
findTapViolation,
|
|
269
|
-
formatTapShortcut,
|
|
270
273
|
layoutScale,
|
|
271
274
|
useTapSurface
|
|
272
|
-
} from "./chunk-
|
|
275
|
+
} from "./chunk-FXT7PZAF.js";
|
|
273
276
|
import {
|
|
274
277
|
MissingTag,
|
|
275
278
|
PropertyRow,
|
|
@@ -282,15 +285,14 @@ import {
|
|
|
282
285
|
TableHeader,
|
|
283
286
|
TableRow,
|
|
284
287
|
useTableSize
|
|
285
|
-
} from "./chunk-
|
|
286
|
-
import {
|
|
287
|
-
ALCHEMY_GLYPH_PATHS,
|
|
288
|
-
ALCHEMY_GLYPH_VIEWBOX
|
|
289
|
-
} from "./chunk-KPZX2M2C.js";
|
|
288
|
+
} from "./chunk-CSSD6NS4.js";
|
|
290
289
|
import {
|
|
291
290
|
getTapTargetLinkComponent,
|
|
292
291
|
setTapTargetLinkComponent
|
|
293
292
|
} from "./chunk-WFBPCMPF.js";
|
|
293
|
+
import {
|
|
294
|
+
formatTapShortcut
|
|
295
|
+
} from "./chunk-KGW373MK.js";
|
|
294
296
|
import {
|
|
295
297
|
Popover,
|
|
296
298
|
PopoverAnchor,
|
|
@@ -301,26 +303,26 @@ import {
|
|
|
301
303
|
RecordId,
|
|
302
304
|
displayId,
|
|
303
305
|
isRecordUuid
|
|
304
|
-
} from "./chunk-
|
|
305
|
-
import {
|
|
306
|
-
Tooltip,
|
|
307
|
-
TooltipContent,
|
|
308
|
-
TooltipProvider,
|
|
309
|
-
TooltipTrigger
|
|
310
|
-
} from "./chunk-PIQJULQB.js";
|
|
306
|
+
} from "./chunk-E4GS5QH7.js";
|
|
311
307
|
import {
|
|
312
308
|
Badge,
|
|
313
309
|
Button as Button2,
|
|
314
310
|
Chip,
|
|
315
311
|
ChipSet,
|
|
316
312
|
Switch
|
|
317
|
-
} from "./chunk-
|
|
318
|
-
import "./chunk-BKCJUFD3.js";
|
|
313
|
+
} from "./chunk-ZOQ2XKXF.js";
|
|
319
314
|
import {
|
|
320
315
|
BasicTextarea,
|
|
321
316
|
Textarea,
|
|
322
317
|
TextareaWithPrefix
|
|
323
318
|
} from "./chunk-BD77DHUO.js";
|
|
319
|
+
import "./chunk-BKCJUFD3.js";
|
|
320
|
+
import {
|
|
321
|
+
Tooltip,
|
|
322
|
+
TooltipContent,
|
|
323
|
+
TooltipProvider,
|
|
324
|
+
TooltipTrigger
|
|
325
|
+
} from "./chunk-PIQJULQB.js";
|
|
324
326
|
import {
|
|
325
327
|
NATIVE_TITLE_OPT_OUT_ATTR,
|
|
326
328
|
acquireTitleTooltips
|
|
@@ -341,7 +343,7 @@ import {
|
|
|
341
343
|
DropdownMenuSubContent,
|
|
342
344
|
DropdownMenuSubTrigger,
|
|
343
345
|
DropdownMenuTrigger
|
|
344
|
-
} from "./chunk-
|
|
346
|
+
} from "./chunk-X6ZRHJQP.js";
|
|
345
347
|
import {
|
|
346
348
|
useScrollFade
|
|
347
349
|
} from "./chunk-BNXNIN2S.js";
|
|
@@ -364,49 +366,31 @@ import {
|
|
|
364
366
|
SelectTrigger,
|
|
365
367
|
SelectValue,
|
|
366
368
|
selectTriggerVariants
|
|
367
|
-
} from "./chunk-
|
|
369
|
+
} from "./chunk-SMJGESH7.js";
|
|
370
|
+
import {
|
|
371
|
+
FIELD_SURFACE_CLASS
|
|
372
|
+
} from "./chunk-WAT2XW7L.js";
|
|
368
373
|
import {
|
|
369
374
|
Button,
|
|
370
375
|
buttonVariants
|
|
371
376
|
} from "./chunk-7IOSA55D.js";
|
|
372
|
-
import {
|
|
373
|
-
FIELD_SURFACE_CLASS
|
|
374
|
-
} from "./chunk-WAT2XW7L.js";
|
|
375
377
|
import "./chunk-FXXSZNER.js";
|
|
376
378
|
import "./chunk-DGNHZBJY.js";
|
|
377
379
|
import {
|
|
378
380
|
PortalContainerProvider,
|
|
379
381
|
usePortalContainer
|
|
380
382
|
} from "./chunk-XIUVUL2Y.js";
|
|
381
|
-
import {
|
|
382
|
-
ALL_MOTION_CLASSES,
|
|
383
|
-
CENTERED_DIALOG,
|
|
384
|
-
FORBIDDEN_HOST_MOTION_UTILITIES,
|
|
385
|
-
MOTION_BOTTOM_SHEET,
|
|
386
|
-
MOTION_DIALOG,
|
|
387
|
-
MOTION_HINT_BEACON,
|
|
388
|
-
MOTION_OVERLAY,
|
|
389
|
-
MOTION_POPPER,
|
|
390
|
-
MOTION_PULSE,
|
|
391
|
-
MOTION_SHEET,
|
|
392
|
-
MOTION_SHIMMER,
|
|
393
|
-
MOTION_SPIN,
|
|
394
|
-
PANEL_MOTION_CLASS,
|
|
395
|
-
PANEL_MOTION_DURATION_VAR,
|
|
396
|
-
PANEL_MOTION_EASE_VAR,
|
|
397
|
-
POPPER_OFFSET
|
|
398
|
-
} from "./chunk-IMOOQQOO.js";
|
|
399
|
-
import {
|
|
400
|
-
cn
|
|
401
|
-
} from "./chunk-M6KA5EHN.js";
|
|
402
383
|
import {
|
|
403
384
|
AtSignIcon,
|
|
404
385
|
BadgeCheckIcon,
|
|
386
|
+
BellOffIcon,
|
|
405
387
|
CheckIcon,
|
|
406
388
|
ChevronDownIcon,
|
|
407
389
|
ChevronRightIcon,
|
|
390
|
+
ClockIcon,
|
|
408
391
|
CopyIcon,
|
|
409
392
|
CopyPlusIcon,
|
|
393
|
+
CornerDownRightIcon,
|
|
410
394
|
DownloadIcon,
|
|
411
395
|
ExternalLinkIcon,
|
|
412
396
|
GlobeIcon,
|
|
@@ -435,6 +419,27 @@ import {
|
|
|
435
419
|
WorkflowIcon,
|
|
436
420
|
XIcon
|
|
437
421
|
} from "./chunk-YCUFQCJW.js";
|
|
422
|
+
import {
|
|
423
|
+
ALL_MOTION_CLASSES,
|
|
424
|
+
CENTERED_DIALOG,
|
|
425
|
+
FORBIDDEN_HOST_MOTION_UTILITIES,
|
|
426
|
+
MOTION_BOTTOM_SHEET,
|
|
427
|
+
MOTION_DIALOG,
|
|
428
|
+
MOTION_HINT_BEACON,
|
|
429
|
+
MOTION_OVERLAY,
|
|
430
|
+
MOTION_POPPER,
|
|
431
|
+
MOTION_PULSE,
|
|
432
|
+
MOTION_SHEET,
|
|
433
|
+
MOTION_SHIMMER,
|
|
434
|
+
MOTION_SPIN,
|
|
435
|
+
PANEL_MOTION_CLASS,
|
|
436
|
+
PANEL_MOTION_DURATION_VAR,
|
|
437
|
+
PANEL_MOTION_EASE_VAR,
|
|
438
|
+
POPPER_OFFSET
|
|
439
|
+
} from "./chunk-IMOOQQOO.js";
|
|
440
|
+
import {
|
|
441
|
+
cn
|
|
442
|
+
} from "./chunk-M6KA5EHN.js";
|
|
438
443
|
|
|
439
444
|
// src/accordion.tsx
|
|
440
445
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
@@ -2754,7 +2759,7 @@ import * as React16 from "react";
|
|
|
2754
2759
|
import { createPortal } from "react-dom";
|
|
2755
2760
|
import { openOutbound } from "@ai-matrx/kit/outbound";
|
|
2756
2761
|
import { OutboundLink as OutboundLink2 } from "@ai-matrx/kit/outbound-react";
|
|
2757
|
-
import { Fragment as
|
|
2762
|
+
import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2758
2763
|
function defaultDensity(size) {
|
|
2759
2764
|
return size === "xs" || size === "sm" ? "compact" : "comfortable";
|
|
2760
2765
|
}
|
|
@@ -2827,7 +2832,7 @@ var PeekCard = React16.forwardRef((allProps, ref) => {
|
|
|
2827
2832
|
// Every height is capped by the room the host left (`--matrx-peek-room`, set by the hover
|
|
2828
2833
|
// and click hosts from the popper's available height), so a card that cannot fit above or
|
|
2829
2834
|
// below its trigger shrinks and scrolls inside instead of leaving the screen.
|
|
2830
|
-
...height === "fixed" || loading ? { height: `min(${box.height}px, var(${PEEK_ROOM_VAR}, 100vh))` } : {
|
|
2835
|
+
...height === "content" ? { maxHeight: `min(${box.height}px, var(${PEEK_ROOM_VAR}, 100vh))` } : height === "fixed" || loading ? { height: `min(${box.height}px, var(${PEEK_ROOM_VAR}, 100vh))` } : {
|
|
2831
2836
|
minHeight: `min(${box.minHeight}px, var(${PEEK_ROOM_VAR}, 100vh))`,
|
|
2832
2837
|
maxHeight: `min(${box.height}px, var(${PEEK_ROOM_VAR}, 100vh))`
|
|
2833
2838
|
}
|
|
@@ -2846,7 +2851,7 @@ function PeekRule({ vertical = false }) {
|
|
|
2846
2851
|
function PeekCardHeader({ title, subtitle, leading, trailing, pinned, id }) {
|
|
2847
2852
|
const { density, window: window2 } = usePeekCard();
|
|
2848
2853
|
const pad = PAD[density];
|
|
2849
|
-
return /* @__PURE__ */ jsxs9(
|
|
2854
|
+
return /* @__PURE__ */ jsxs9(Fragment3, { children: [
|
|
2850
2855
|
/* @__PURE__ */ jsxs9(
|
|
2851
2856
|
"div",
|
|
2852
2857
|
{
|
|
@@ -3144,16 +3149,44 @@ function recordDoors(doors) {
|
|
|
3144
3149
|
href: door.href,
|
|
3145
3150
|
newTab: door.newTab,
|
|
3146
3151
|
inMenu: known.inMenu,
|
|
3147
|
-
busy: door.busy
|
|
3152
|
+
busy: door.busy,
|
|
3153
|
+
menu: door.kind === "action" && door.menu?.length ? door.menu : void 0
|
|
3148
3154
|
});
|
|
3149
3155
|
}
|
|
3150
3156
|
return out;
|
|
3151
3157
|
}
|
|
3152
3158
|
var PEEK_SHEET_FOOTER_SLOTS = 4;
|
|
3153
3159
|
var PEEK_DOOR = "flex shrink-0 items-center justify-center rounded-md text-foreground transition-colors hover:bg-accent hover:text-primary disabled:text-disabled-foreground disabled:hover:bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary";
|
|
3160
|
+
function MenuDoor({ action, menu, disabled }) {
|
|
3161
|
+
const { sheet } = usePeekCard();
|
|
3162
|
+
const [open, setOpen] = React16.useState(false);
|
|
3163
|
+
usePeekHoldWhile(open);
|
|
3164
|
+
const glyph = sheet ? /* @__PURE__ */ jsx19(action.icon, { className: "size-5" }) : /* @__PURE__ */ jsx19(action.icon, { className: "size-3.5" });
|
|
3165
|
+
return /* @__PURE__ */ jsxs9(DropdownMenu, { modal: false, open, onOpenChange: setOpen, children: [
|
|
3166
|
+
/* @__PURE__ */ jsx19(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx19(
|
|
3167
|
+
Button2,
|
|
3168
|
+
{
|
|
3169
|
+
type: "button",
|
|
3170
|
+
variant: "quiet",
|
|
3171
|
+
"aria-label": action.label,
|
|
3172
|
+
title: action.label,
|
|
3173
|
+
icon: action.busy ? /* @__PURE__ */ jsx19(Loader2Icon, { className: "animate-spin" }) : glyph,
|
|
3174
|
+
className: "shrink-0",
|
|
3175
|
+
disabled: disabled || action.busy,
|
|
3176
|
+
onClick: (event) => event.stopPropagation()
|
|
3177
|
+
}
|
|
3178
|
+
) }),
|
|
3179
|
+
/* @__PURE__ */ jsx19(DropdownMenuContent, { align: "end", "data-peek-no-drag": "", children: menu.map((group, i) => /* @__PURE__ */ jsxs9(React16.Fragment, { children: [
|
|
3180
|
+
i > 0 ? /* @__PURE__ */ jsx19(DropdownMenuSeparator, {}) : null,
|
|
3181
|
+
group.label ? /* @__PURE__ */ jsx19(DropdownMenuLabel, { children: group.label }) : null,
|
|
3182
|
+
group.items.map((item) => /* @__PURE__ */ jsx19(DropdownMenuItem, { ...item.tone ? { tone: item.tone } : {}, onSelect: () => item.onSelect(), children: item.label }, item.key))
|
|
3183
|
+
] }, `${group.label ?? ""}-${i}`)) })
|
|
3184
|
+
] });
|
|
3185
|
+
}
|
|
3154
3186
|
function FooterDoor({ action, disabled = false }) {
|
|
3155
3187
|
const { sheet } = usePeekCard();
|
|
3156
3188
|
const { Link } = useMatrxDataTableHost();
|
|
3189
|
+
if (action.menu) return /* @__PURE__ */ jsx19(MenuDoor, { action, menu: action.menu, disabled });
|
|
3157
3190
|
const box = sheet ? "size-11" : "size-7";
|
|
3158
3191
|
const glyph = /* @__PURE__ */ jsx19(action.icon, { className: sheet ? "size-5" : "size-3.5" });
|
|
3159
3192
|
if (action.href && !disabled && !action.newTab && Link) {
|
|
@@ -3330,7 +3363,7 @@ function useDoorsThatFit(row, primaryRef, opts) {
|
|
|
3330
3363
|
}, [row, primaryRef, doorPx, fixedDoors, fills, hasPrimary, sheet, actionCount]);
|
|
3331
3364
|
return fit;
|
|
3332
3365
|
}
|
|
3333
|
-
function PeekCardFooter({ primary, onSettings, doors = [], copy, openHref }) {
|
|
3366
|
+
function PeekCardFooter({ primary, primaryAt, onSettings, doors = [], copy, openHref }) {
|
|
3334
3367
|
const { density, size, orientation, loading, sheet } = usePeekCard();
|
|
3335
3368
|
const row = React16.useRef(null);
|
|
3336
3369
|
const primaryRef = React16.useRef(null);
|
|
@@ -3338,8 +3371,8 @@ function PeekCardFooter({ primary, onSettings, doors = [], copy, openHref }) {
|
|
|
3338
3371
|
const [moreOpen, setMoreOpen] = React16.useState(false);
|
|
3339
3372
|
const actions2 = recordDoors(doors);
|
|
3340
3373
|
const open = openHref ? { icon: ExternalLinkIcon, label: "Open in new tab", href: openHref, newTab: true } : null;
|
|
3341
|
-
const fixedDoors = [settings, copy, open].filter(Boolean).length;
|
|
3342
|
-
const fills = Boolean(sheet) || orientation === "portrait";
|
|
3374
|
+
const fixedDoors = [settings, copy, open].filter(Boolean).length + actions2.filter((action) => action.menu).length;
|
|
3375
|
+
const fills = Boolean(sheet) || (primaryAt ?? (orientation === "portrait" ? "fill" : "end")) === "fill";
|
|
3343
3376
|
const measured = useDoorsThatFit(row, primaryRef, {
|
|
3344
3377
|
doorPx: sheet ? 44 : 28,
|
|
3345
3378
|
fixedDoors,
|
|
@@ -3349,8 +3382,9 @@ function PeekCardFooter({ primary, onSettings, doors = [], copy, openHref }) {
|
|
|
3349
3382
|
actionCount: actions2.length
|
|
3350
3383
|
});
|
|
3351
3384
|
const room = measured ?? (sheet ? PEEK_SHEET_FOOTER_SLOTS : PEEK_CARD_FOOTER_SLOTS[size]) - fixedDoors;
|
|
3352
|
-
const inline = actions2.filter((action) => !action.inMenu);
|
|
3385
|
+
const inline = actions2.filter((action) => !action.inMenu && !action.menu);
|
|
3353
3386
|
const menuOnly = actions2.filter((action) => action.inMenu);
|
|
3387
|
+
const menuDoors = actions2.filter((action) => action.menu);
|
|
3354
3388
|
const inlineRoom = menuOnly.length ? Math.max(0, room - 1) : room;
|
|
3355
3389
|
const shown = inline.length <= inlineRoom ? inline : inline.slice(0, Math.max(0, inlineRoom - (menuOnly.length ? 0 : 1)));
|
|
3356
3390
|
const overflow = [...inline.slice(shown.length), ...menuOnly];
|
|
@@ -3363,7 +3397,9 @@ function PeekCardFooter({ primary, onSettings, doors = [], copy, openHref }) {
|
|
|
3363
3397
|
variant: "primary",
|
|
3364
3398
|
className: cn("mx-1", fills && "flex-1"),
|
|
3365
3399
|
style: fills ? { minWidth: PEEK_PRIMARY_MIN_PX[sheet ? "sheet" : "card"] } : void 0,
|
|
3366
|
-
disabled: loading,
|
|
3400
|
+
disabled: loading || primary.disabled || primary.busy,
|
|
3401
|
+
title: primary.title,
|
|
3402
|
+
icon: primary.busy ? /* @__PURE__ */ jsx19(Loader2Icon, { className: "animate-spin" }) : void 0,
|
|
3367
3403
|
onClick: primary.onClick,
|
|
3368
3404
|
children: primary.label
|
|
3369
3405
|
}
|
|
@@ -3375,7 +3411,7 @@ function PeekCardFooter({ primary, onSettings, doors = [], copy, openHref }) {
|
|
|
3375
3411
|
action.label
|
|
3376
3412
|
] }, `${action.label}-${i}`)) })
|
|
3377
3413
|
] }) : null;
|
|
3378
|
-
return /* @__PURE__ */ jsxs9(
|
|
3414
|
+
return /* @__PURE__ */ jsxs9(Fragment3, { children: [
|
|
3379
3415
|
sheet ? /* @__PURE__ */ jsx19("div", { "aria-hidden": true, className: "h-px shrink-0 bg-border" }) : /* @__PURE__ */ jsx19(PeekRule, {}),
|
|
3380
3416
|
/* @__PURE__ */ jsxs9(
|
|
3381
3417
|
"div",
|
|
@@ -3391,6 +3427,7 @@ function PeekCardFooter({ primary, onSettings, doors = [], copy, openHref }) {
|
|
|
3391
3427
|
settings ? /* @__PURE__ */ jsx19(FooterDoor, { action: settings, disabled: loading }) : null,
|
|
3392
3428
|
fills && primaryButton ? primaryButton : /* @__PURE__ */ jsx19("span", { className: "flex-1" }),
|
|
3393
3429
|
more,
|
|
3430
|
+
menuDoors.map((action, i) => /* @__PURE__ */ jsx19(FooterDoor, { action, disabled: loading }, `menu-${action.label}-${i}`)),
|
|
3394
3431
|
shown.map((action, i) => /* @__PURE__ */ jsx19(FooterDoor, { action, disabled: loading }, `${action.label}-${i}`)),
|
|
3395
3432
|
copy ? /* @__PURE__ */ jsx19(PeekCopyDoor, { copy, disabled: loading }) : null,
|
|
3396
3433
|
open ? /* @__PURE__ */ jsx19(FooterDoor, { action: open, disabled: loading }) : null,
|
|
@@ -3432,7 +3469,7 @@ function SheetHost({ trigger, children, label = "Details", open, onOpenChange, s
|
|
|
3432
3469
|
setOwn(next);
|
|
3433
3470
|
onOpenChange?.(next);
|
|
3434
3471
|
};
|
|
3435
|
-
return /* @__PURE__ */ jsxs9(
|
|
3472
|
+
return /* @__PURE__ */ jsxs9(Fragment3, { children: [
|
|
3436
3473
|
/* @__PURE__ */ jsx19(Slot2, { onClick: () => setOpen(true), children: trigger }),
|
|
3437
3474
|
/* @__PURE__ */ jsx19(PeekSheet, { open: isOpen, onOpenChange: setOpen, label, sheetFooter, children })
|
|
3438
3475
|
] });
|
|
@@ -3448,7 +3485,7 @@ function PeekHoverCard(props) {
|
|
|
3448
3485
|
{
|
|
3449
3486
|
openDelay: Math.max(HOVER_CARD_OPEN_DELAY_MS, HOVER_CARD_OPEN_DELAY_FLOOR_MS),
|
|
3450
3487
|
closeDelay: HOVER_CARD_CLOSE_DELAY_MS,
|
|
3451
|
-
open: open ??
|
|
3488
|
+
open: (open ?? hovered) || held,
|
|
3452
3489
|
onOpenChange: (next) => {
|
|
3453
3490
|
setHovered(next);
|
|
3454
3491
|
onOpenChange?.(next);
|
|
@@ -3589,7 +3626,7 @@ function FloatingPeekWindow({ open, onClose, initialPosition, children }) {
|
|
|
3589
3626
|
}
|
|
3590
3627
|
|
|
3591
3628
|
// src/peek.tsx
|
|
3592
|
-
import { Fragment as
|
|
3629
|
+
import { Fragment as Fragment4, jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3593
3630
|
var PeekEntityRendererContext = React17.createContext(null);
|
|
3594
3631
|
function PeekEntityRendererProvider({ render, children }) {
|
|
3595
3632
|
return /* @__PURE__ */ jsx20(PeekEntityRendererContext.Provider, { value: render, children });
|
|
@@ -3607,7 +3644,7 @@ function screamPartOnce(kind) {
|
|
|
3607
3644
|
function HostPart({ part }) {
|
|
3608
3645
|
const render = React17.useContext(PeekPartRendererContext);
|
|
3609
3646
|
const drawn = render?.(part);
|
|
3610
|
-
if (drawn) return /* @__PURE__ */ jsx20(
|
|
3647
|
+
if (drawn) return /* @__PURE__ */ jsx20(Fragment4, { children: drawn });
|
|
3611
3648
|
if (!render) {
|
|
3612
3649
|
screamPartOnce("token" in part ? `${part.part}:${part.token}` : part.part);
|
|
3613
3650
|
}
|
|
@@ -3641,7 +3678,7 @@ function EntityText({ entity, name }) {
|
|
|
3641
3678
|
const { EntityRef } = useMatrxDataTableHost();
|
|
3642
3679
|
const className = "type-secondary min-w-0 max-w-full truncate text-foreground";
|
|
3643
3680
|
const drawn = render?.({ ...entity, name, className });
|
|
3644
|
-
if (drawn) return /* @__PURE__ */ jsx20(
|
|
3681
|
+
if (drawn) return /* @__PURE__ */ jsx20(Fragment4, { children: drawn });
|
|
3645
3682
|
if (EntityRef) {
|
|
3646
3683
|
return /* @__PURE__ */ jsx20(
|
|
3647
3684
|
EntityRef,
|
|
@@ -3834,7 +3871,7 @@ function PeekBody({ record, size, orientation, height, density, frame, loading }
|
|
|
3834
3871
|
} : {},
|
|
3835
3872
|
...record.avatar ? { leading: /* @__PURE__ */ jsx20(PeekCardAvatar, { initials: record.avatar.initials, src: record.avatar.src }) } : record.glyph ? { leading: /* @__PURE__ */ jsx20(record.glyph, {}) } : {},
|
|
3836
3873
|
...record.favorite || record.badge ? {
|
|
3837
|
-
trailing: /* @__PURE__ */ jsxs10(
|
|
3874
|
+
trailing: /* @__PURE__ */ jsxs10(Fragment4, { children: [
|
|
3838
3875
|
record.badge ? /* @__PURE__ */ jsx20(
|
|
3839
3876
|
Chip,
|
|
3840
3877
|
{
|
|
@@ -3858,7 +3895,7 @@ function PeekBody({ record, size, orientation, height, density, frame, loading }
|
|
|
3858
3895
|
children: [
|
|
3859
3896
|
record.failure ? /* @__PURE__ */ jsx20(Failure, { failure: record.failure }) : null,
|
|
3860
3897
|
record.media ? /* @__PURE__ */ jsx20(Media, { media: record.media }) : null,
|
|
3861
|
-
record.callout ? /* @__PURE__ */ jsx20(PeekCardCallout, { title: record.callout.title, ...record.callout.glyph ? { icon: record.callout.glyph } : {}, children: record.callout.text || record.callout.lines?.length ? /* @__PURE__ */ jsxs10(
|
|
3898
|
+
record.callout ? /* @__PURE__ */ jsx20(PeekCardCallout, { title: record.callout.title, ...record.callout.glyph ? { icon: record.callout.glyph } : {}, children: record.callout.text || record.callout.lines?.length ? /* @__PURE__ */ jsxs10(Fragment4, { children: [
|
|
3862
3899
|
record.callout.text,
|
|
3863
3900
|
record.callout.lines?.map((line, i) => /* @__PURE__ */ jsx20("div", { className: "type-meta text-muted-foreground", ...line.hint ? { title: line.hint } : {}, children: line.text }, `${i}:${line.text}`))
|
|
3864
3901
|
] }) : null }) : null,
|
|
@@ -4185,7 +4222,7 @@ function compactCount(n) {
|
|
|
4185
4222
|
}
|
|
4186
4223
|
|
|
4187
4224
|
// src/contact-values/contact-values.tsx
|
|
4188
|
-
import { Fragment as
|
|
4225
|
+
import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
4189
4226
|
var HostContext = React18.createContext({});
|
|
4190
4227
|
function ContactValuesHostProvider({ children, ...host }) {
|
|
4191
4228
|
const value = React18.useMemo(() => host, [host.validateAddress]);
|
|
@@ -4258,7 +4295,7 @@ function ValueShell({ kind, glyph: Glyph, text, copy, state, record, peek, wrap
|
|
|
4258
4295
|
const { open, setHovered, setHeld, setPinned, trigger } = usePinnedHover();
|
|
4259
4296
|
const off = state !== "ok";
|
|
4260
4297
|
const value = /* @__PURE__ */ jsx22("span", { className: cn("min-w-0", wrap ? "whitespace-pre-line break-words" : "truncate", off ? "text-muted-foreground line-through" : "text-foreground"), children: text });
|
|
4261
|
-
const body = /* @__PURE__ */ jsxs11(
|
|
4298
|
+
const body = /* @__PURE__ */ jsxs11(Fragment5, { children: [
|
|
4262
4299
|
/* @__PURE__ */ jsx22(Glyph, { className: cn("size-[1em] shrink-0", off ? "text-muted-foreground" : "text-muted-foreground") }),
|
|
4263
4300
|
value,
|
|
4264
4301
|
off ? /* @__PURE__ */ jsx22("span", { className: "shrink-0 text-muted-foreground no-underline", children: `\xB7 ${CONTACT_STATE_LABEL[state]}` }) : null
|
|
@@ -4674,11 +4711,143 @@ var AddTile = React20.forwardRef(function AddTile2({ icon, className, children,
|
|
|
4674
4711
|
);
|
|
4675
4712
|
});
|
|
4676
4713
|
|
|
4677
|
-
// src/
|
|
4678
|
-
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
4714
|
+
// src/assist-peek.tsx
|
|
4679
4715
|
import * as React21 from "react";
|
|
4716
|
+
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
4680
4717
|
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
4681
|
-
|
|
4718
|
+
function AssistPeekCard({
|
|
4719
|
+
title,
|
|
4720
|
+
icon: Icon,
|
|
4721
|
+
subtitle,
|
|
4722
|
+
children,
|
|
4723
|
+
why,
|
|
4724
|
+
evidence,
|
|
4725
|
+
yourNote,
|
|
4726
|
+
explainer,
|
|
4727
|
+
primary,
|
|
4728
|
+
later,
|
|
4729
|
+
stopShowing,
|
|
4730
|
+
deciding = false,
|
|
4731
|
+
onNotNow,
|
|
4732
|
+
step
|
|
4733
|
+
}) {
|
|
4734
|
+
const laterDoor = later?.length ? { kind: "action", id: "later", label: "Later", icon: ClockIcon, menu: later, busy: deciding } : null;
|
|
4735
|
+
const stopDoor = stopShowing?.length ? { kind: "action", id: "stop", label: "Stop showing", icon: BellOffIcon, menu: stopShowing, busy: deciding } : null;
|
|
4736
|
+
const doors = laterDoor && stopDoor ? [laterDoor, stopDoor] : laterDoor ? [laterDoor] : stopDoor ? [stopDoor] : [];
|
|
4737
|
+
return /* @__PURE__ */ jsxs14(PeekCard, { size: "xl", height: "content", "data-matrx-assist-peek": "", "data-matrx-notice-surface": "", children: [
|
|
4738
|
+
/* @__PURE__ */ jsx25(
|
|
4739
|
+
PeekCardHeader,
|
|
4740
|
+
{
|
|
4741
|
+
title,
|
|
4742
|
+
leading: Icon ? /* @__PURE__ */ jsx25(Icon, {}) : void 0,
|
|
4743
|
+
subtitle,
|
|
4744
|
+
trailing: /* @__PURE__ */ jsx25(Button2, { type: "button", variant: "quiet", "aria-label": "Not now", title: "Not now", icon: /* @__PURE__ */ jsx25(XIcon, {}), disabled: Boolean(primary.busy) || deciding, onClick: onNotNow })
|
|
4745
|
+
}
|
|
4746
|
+
),
|
|
4747
|
+
/* @__PURE__ */ jsxs14(PeekCardBody, { children: [
|
|
4748
|
+
children ? (
|
|
4749
|
+
// The explanation is what the person came to read: 14px (the size the host's markdown
|
|
4750
|
+
// paragraphs draw at), one step above the card's secondary sections.
|
|
4751
|
+
/* @__PURE__ */ jsx25("div", { "data-matrx-assist-body": "", className: "type-value min-w-0 break-words text-foreground", children: typeof children === "string" ? /* @__PURE__ */ jsx25("p", { className: "whitespace-pre-wrap", children }) : children })
|
|
4752
|
+
) : null,
|
|
4753
|
+
why ? /* @__PURE__ */ jsx25(PeekCardSection, { label: "Why", children: /* @__PURE__ */ jsx25(PeekCardText, { children: why }) }) : null,
|
|
4754
|
+
evidence ? /* @__PURE__ */ jsx25(EvidenceSection, { evidence }) : null,
|
|
4755
|
+
yourNote ? /* @__PURE__ */ jsx25(PeekCardSection, { label: "Your note", children: /* @__PURE__ */ jsx25(PeekCardText, { children: yourNote }) }) : null,
|
|
4756
|
+
explainer ? (
|
|
4757
|
+
// What pressing the verb will do, hung off a return arrow like a consequence.
|
|
4758
|
+
/* @__PURE__ */ jsx25(PeekCardRow, { icon: CornerDownRightIcon, tone: "muted", wrap: true, children: explainer })
|
|
4759
|
+
) : /* @__PURE__ */ jsx25(PeekCardSection, { label: "Not available here", tone: "danger", children: /* @__PURE__ */ jsx25(PeekCardText, { children: "This version of the app does not know how to do this." }) }),
|
|
4760
|
+
step
|
|
4761
|
+
] }),
|
|
4762
|
+
/* @__PURE__ */ jsx25(
|
|
4763
|
+
PeekCardFooter,
|
|
4764
|
+
{
|
|
4765
|
+
primaryAt: "end",
|
|
4766
|
+
primary: { ...primary, disabled: Boolean(primary.disabled) || explainer === null || deciding },
|
|
4767
|
+
doors
|
|
4768
|
+
}
|
|
4769
|
+
)
|
|
4770
|
+
] });
|
|
4771
|
+
}
|
|
4772
|
+
function EvidenceSection({ evidence }) {
|
|
4773
|
+
const items = evidence.items ?? [];
|
|
4774
|
+
return /* @__PURE__ */ jsxs14(PeekCardSection, { label: "What we saw", children: [
|
|
4775
|
+
/* @__PURE__ */ jsx25(
|
|
4776
|
+
PeekCardRows,
|
|
4777
|
+
{
|
|
4778
|
+
rows: [{ key: "evidence", text: evidence.label, title: evidence.label, href: evidence.href }]
|
|
4779
|
+
}
|
|
4780
|
+
),
|
|
4781
|
+
evidence.snippet ? /* @__PURE__ */ jsx25(PeekCardText, { clamp: 4, breaks: true, children: evidence.snippet }) : null,
|
|
4782
|
+
items.length ? /* @__PURE__ */ jsx25(PeekCardRows, { limit: 6, rows: items.map((item, i) => ({ key: `${i}-${item}`, text: item, title: item })) }) : null
|
|
4783
|
+
] });
|
|
4784
|
+
}
|
|
4785
|
+
function inCardMenu(target) {
|
|
4786
|
+
return target instanceof Element && target.closest("[data-radix-menu-content]") !== null;
|
|
4787
|
+
}
|
|
4788
|
+
function AssistPeekHover({ trigger, label, side = "top", align = "end", presentation, children }) {
|
|
4789
|
+
const [hovered, setHovered] = React21.useState(false);
|
|
4790
|
+
const [kept, setKept] = React21.useState(false);
|
|
4791
|
+
const isMobile = useIsMobile();
|
|
4792
|
+
const sheet = presentation === "sheet" || presentation !== "float" && isMobile;
|
|
4793
|
+
const card = React21.useRef(null);
|
|
4794
|
+
const close = React21.useCallback(() => {
|
|
4795
|
+
setHovered(false);
|
|
4796
|
+
setKept(false);
|
|
4797
|
+
}, []);
|
|
4798
|
+
React21.useEffect(() => {
|
|
4799
|
+
if (!kept) return;
|
|
4800
|
+
const onPress = (event) => {
|
|
4801
|
+
if (card.current?.contains(event.target) || inCardMenu(event.target)) return;
|
|
4802
|
+
close();
|
|
4803
|
+
};
|
|
4804
|
+
const onKey = (event) => {
|
|
4805
|
+
if (event.key !== "Escape" || document.querySelector("[data-radix-menu-content]")) return;
|
|
4806
|
+
close();
|
|
4807
|
+
};
|
|
4808
|
+
document.addEventListener("pointerdown", onPress, true);
|
|
4809
|
+
document.addEventListener("keydown", onKey);
|
|
4810
|
+
return () => {
|
|
4811
|
+
document.removeEventListener("pointerdown", onPress, true);
|
|
4812
|
+
document.removeEventListener("keydown", onKey);
|
|
4813
|
+
};
|
|
4814
|
+
}, [kept, close]);
|
|
4815
|
+
const keep = () => {
|
|
4816
|
+
setHovered(true);
|
|
4817
|
+
setKept(true);
|
|
4818
|
+
};
|
|
4819
|
+
return /* @__PURE__ */ jsx25(
|
|
4820
|
+
PeekHoverCard,
|
|
4821
|
+
{
|
|
4822
|
+
trigger: /* @__PURE__ */ jsx25(
|
|
4823
|
+
Slot3,
|
|
4824
|
+
{
|
|
4825
|
+
onClick: (event) => {
|
|
4826
|
+
event.stopPropagation();
|
|
4827
|
+
keep();
|
|
4828
|
+
},
|
|
4829
|
+
children: trigger
|
|
4830
|
+
}
|
|
4831
|
+
),
|
|
4832
|
+
label,
|
|
4833
|
+
side,
|
|
4834
|
+
align,
|
|
4835
|
+
open: hovered || kept,
|
|
4836
|
+
onOpenChange: (next) => {
|
|
4837
|
+
setHovered(next);
|
|
4838
|
+
if (!next && (sheet || !kept)) close();
|
|
4839
|
+
},
|
|
4840
|
+
...presentation ? { presentation } : {},
|
|
4841
|
+
children: /* @__PURE__ */ jsx25("div", { ref: card, onPointerDownCapture: keep, onFocusCapture: keep, children: children(close) })
|
|
4842
|
+
}
|
|
4843
|
+
);
|
|
4844
|
+
}
|
|
4845
|
+
|
|
4846
|
+
// src/radio-group.tsx
|
|
4847
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
4848
|
+
import * as React22 from "react";
|
|
4849
|
+
import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4850
|
+
var RadioGroupSizeContext = React22.createContext("md");
|
|
4682
4851
|
var CONTROL_CLASSES = {
|
|
4683
4852
|
sm: "h-3.5 w-3.5",
|
|
4684
4853
|
md: "h-4 w-4",
|
|
@@ -4689,7 +4858,7 @@ var DOT_CLASSES = {
|
|
|
4689
4858
|
md: "h-1.5 w-1.5",
|
|
4690
4859
|
lg: "h-2 w-2"
|
|
4691
4860
|
};
|
|
4692
|
-
var RadioGroup =
|
|
4861
|
+
var RadioGroup = React22.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx26(RadioGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx26(
|
|
4693
4862
|
RadioGroupPrimitive.Root,
|
|
4694
4863
|
{
|
|
4695
4864
|
ref,
|
|
@@ -4699,10 +4868,10 @@ var RadioGroup = React21.forwardRef(({ className, size = "md", ...props }, ref)
|
|
|
4699
4868
|
}
|
|
4700
4869
|
) }));
|
|
4701
4870
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
4702
|
-
var RadioGroupItem =
|
|
4703
|
-
const groupSize =
|
|
4871
|
+
var RadioGroupItem = React22.forwardRef(({ className, size, ...props }, ref) => {
|
|
4872
|
+
const groupSize = React22.useContext(RadioGroupSizeContext);
|
|
4704
4873
|
const resolved = size ?? groupSize;
|
|
4705
|
-
return /* @__PURE__ */
|
|
4874
|
+
return /* @__PURE__ */ jsx26(
|
|
4706
4875
|
RadioGroupPrimitive.Item,
|
|
4707
4876
|
{
|
|
4708
4877
|
ref,
|
|
@@ -4719,7 +4888,7 @@ var RadioGroupItem = React21.forwardRef(({ className, size, ...props }, ref) =>
|
|
|
4719
4888
|
className
|
|
4720
4889
|
),
|
|
4721
4890
|
...props,
|
|
4722
|
-
children: /* @__PURE__ */
|
|
4891
|
+
children: /* @__PURE__ */ jsx26(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx26(
|
|
4723
4892
|
"div",
|
|
4724
4893
|
{
|
|
4725
4894
|
className: cn("rounded-full bg-primary-foreground", DOT_CLASSES[resolved])
|
|
@@ -4737,8 +4906,8 @@ function RadioList({
|
|
|
4737
4906
|
className,
|
|
4738
4907
|
"aria-label": ariaLabel
|
|
4739
4908
|
}) {
|
|
4740
|
-
const baseId =
|
|
4741
|
-
return /* @__PURE__ */
|
|
4909
|
+
const baseId = React22.useId();
|
|
4910
|
+
return /* @__PURE__ */ jsx26(
|
|
4742
4911
|
RadioGroup,
|
|
4743
4912
|
{
|
|
4744
4913
|
value,
|
|
@@ -4749,7 +4918,7 @@ function RadioList({
|
|
|
4749
4918
|
children: options.map((opt, i) => {
|
|
4750
4919
|
const selected = value === opt.value;
|
|
4751
4920
|
const id = `${baseId}-${i}`;
|
|
4752
|
-
return /* @__PURE__ */
|
|
4921
|
+
return /* @__PURE__ */ jsxs15(
|
|
4753
4922
|
"label",
|
|
4754
4923
|
{
|
|
4755
4924
|
htmlFor: id,
|
|
@@ -4760,9 +4929,9 @@ function RadioList({
|
|
|
4760
4929
|
opt.disabled && "cursor-not-allowed text-disabled-foreground"
|
|
4761
4930
|
),
|
|
4762
4931
|
children: [
|
|
4763
|
-
/* @__PURE__ */
|
|
4764
|
-
/* @__PURE__ */
|
|
4765
|
-
opt.hint != null && opt.hint !== "" ? /* @__PURE__ */
|
|
4932
|
+
/* @__PURE__ */ jsx26(RadioGroupItem, { id, value: opt.value, disabled: opt.disabled }),
|
|
4933
|
+
/* @__PURE__ */ jsx26("span", { className: "flex-1 truncate", children: opt.label }),
|
|
4934
|
+
opt.hint != null && opt.hint !== "" ? /* @__PURE__ */ jsx26("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: opt.hint }) : null
|
|
4766
4935
|
]
|
|
4767
4936
|
},
|
|
4768
4937
|
opt.value
|
|
@@ -4776,8 +4945,8 @@ function RadioList({
|
|
|
4776
4945
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
4777
4946
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
4778
4947
|
import { cva as cva4 } from "class-variance-authority";
|
|
4779
|
-
import * as
|
|
4780
|
-
import { jsx as
|
|
4948
|
+
import * as React23 from "react";
|
|
4949
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
4781
4950
|
var toggleVariants = cva4(
|
|
4782
4951
|
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
4783
4952
|
{
|
|
@@ -4803,7 +4972,7 @@ var toggleVariants = cva4(
|
|
|
4803
4972
|
}
|
|
4804
4973
|
}
|
|
4805
4974
|
);
|
|
4806
|
-
var Toggle =
|
|
4975
|
+
var Toggle = React23.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
4807
4976
|
TogglePrimitive.Root,
|
|
4808
4977
|
{
|
|
4809
4978
|
ref,
|
|
@@ -4813,21 +4982,21 @@ var Toggle = React22.forwardRef(({ className, variant, size, ...props }, ref) =>
|
|
|
4813
4982
|
}
|
|
4814
4983
|
));
|
|
4815
4984
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
4816
|
-
var ToggleGroupContext =
|
|
4817
|
-
var ToggleGroup =
|
|
4985
|
+
var ToggleGroupContext = React23.createContext({ size: "default", variant: "default" });
|
|
4986
|
+
var ToggleGroup = React23.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx27(
|
|
4818
4987
|
ToggleGroupPrimitive.Root,
|
|
4819
4988
|
{
|
|
4820
4989
|
ref,
|
|
4821
4990
|
"data-slot": "toggle-group",
|
|
4822
4991
|
className: cn("flex items-center justify-center gap-1", className),
|
|
4823
4992
|
...props,
|
|
4824
|
-
children: /* @__PURE__ */
|
|
4993
|
+
children: /* @__PURE__ */ jsx27(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
4825
4994
|
}
|
|
4826
4995
|
));
|
|
4827
4996
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
4828
|
-
var ToggleGroupItem =
|
|
4829
|
-
const context =
|
|
4830
|
-
return /* @__PURE__ */
|
|
4997
|
+
var ToggleGroupItem = React23.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
4998
|
+
const context = React23.useContext(ToggleGroupContext);
|
|
4999
|
+
return /* @__PURE__ */ jsx27(
|
|
4831
5000
|
ToggleGroupPrimitive.Item,
|
|
4832
5001
|
{
|
|
4833
5002
|
ref,
|
|
@@ -4847,8 +5016,8 @@ var ToggleGroupItem = React22.forwardRef(({ className, children, variant, size,
|
|
|
4847
5016
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
4848
5017
|
|
|
4849
5018
|
// src/floating-dock.tsx
|
|
4850
|
-
import * as
|
|
4851
|
-
import { jsx as
|
|
5019
|
+
import * as React24 from "react";
|
|
5020
|
+
import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4852
5021
|
var BASE_SIZE = 40;
|
|
4853
5022
|
var BASE_ICON = 20;
|
|
4854
5023
|
var REACH = 150;
|
|
@@ -4868,29 +5037,29 @@ function FloatingDock({
|
|
|
4868
5037
|
growthFactor = 2,
|
|
4869
5038
|
labelPosition = "top"
|
|
4870
5039
|
}) {
|
|
4871
|
-
return /* @__PURE__ */
|
|
4872
|
-
/* @__PURE__ */
|
|
4873
|
-
/* @__PURE__ */
|
|
5040
|
+
return /* @__PURE__ */ jsxs16("div", { className: cn("flex w-auto items-center justify-center bg-background", className), children: [
|
|
5041
|
+
/* @__PURE__ */ jsx28(FloatingDockPhone, { items }),
|
|
5042
|
+
/* @__PURE__ */ jsx28(FloatingDockDesktop, { items, growthFactor, labelPosition })
|
|
4874
5043
|
] });
|
|
4875
5044
|
}
|
|
4876
5045
|
function BalancedFloatingDock(props) {
|
|
4877
|
-
return /* @__PURE__ */
|
|
5046
|
+
return /* @__PURE__ */ jsx28(FloatingDock, { growthFactor: 1.8, labelPosition: "side", ...props });
|
|
4878
5047
|
}
|
|
4879
5048
|
function FloatingDockPhone({ items }) {
|
|
4880
|
-
const [open, setOpen] =
|
|
4881
|
-
return /* @__PURE__ */
|
|
4882
|
-
/* @__PURE__ */
|
|
5049
|
+
const [open, setOpen] = React24.useState(false);
|
|
5050
|
+
return /* @__PURE__ */ jsxs16("div", { className: "relative block md:hidden", children: [
|
|
5051
|
+
/* @__PURE__ */ jsx28(
|
|
4883
5052
|
Button2,
|
|
4884
5053
|
{
|
|
4885
5054
|
type: "button",
|
|
4886
5055
|
variant: "quiet",
|
|
4887
5056
|
"aria-label": open ? "Close menu" : "Open menu",
|
|
4888
|
-
icon: open ? /* @__PURE__ */
|
|
5057
|
+
icon: open ? /* @__PURE__ */ jsx28(PanelTopCloseIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx28(PanelTopOpenIcon, { className: "h-5 w-5" }),
|
|
4889
5058
|
"aria-expanded": open,
|
|
4890
5059
|
onClick: () => setOpen(!open)
|
|
4891
5060
|
}
|
|
4892
5061
|
),
|
|
4893
|
-
/* @__PURE__ */
|
|
5062
|
+
/* @__PURE__ */ jsx28(
|
|
4894
5063
|
"div",
|
|
4895
5064
|
{
|
|
4896
5065
|
"data-open": open,
|
|
@@ -4900,32 +5069,32 @@ function FloatingDockPhone({ items }) {
|
|
|
4900
5069
|
PANEL_MOTION_CLASS,
|
|
4901
5070
|
open ? "translate-y-0" : "pointer-events-none -translate-y-full"
|
|
4902
5071
|
),
|
|
4903
|
-
children: /* @__PURE__ */
|
|
4904
|
-
/* @__PURE__ */
|
|
4905
|
-
/* @__PURE__ */
|
|
4906
|
-
/* @__PURE__ */
|
|
5072
|
+
children: /* @__PURE__ */ jsxs16("div", { className: "flex h-full flex-col", children: [
|
|
5073
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between border-b border-border p-4", children: [
|
|
5074
|
+
/* @__PURE__ */ jsx28("h2", { className: "text-lg font-medium", children: "Menu" }),
|
|
5075
|
+
/* @__PURE__ */ jsx28(
|
|
4907
5076
|
Button2,
|
|
4908
5077
|
{
|
|
4909
5078
|
type: "button",
|
|
4910
5079
|
variant: "quiet",
|
|
4911
5080
|
"aria-label": "Close menu",
|
|
4912
|
-
icon: /* @__PURE__ */
|
|
5081
|
+
icon: /* @__PURE__ */ jsx28(XIcon, { className: "h-6 w-6" }),
|
|
4913
5082
|
onClick: () => setOpen(false)
|
|
4914
5083
|
}
|
|
4915
5084
|
)
|
|
4916
5085
|
] }),
|
|
4917
|
-
/* @__PURE__ */
|
|
5086
|
+
/* @__PURE__ */ jsx28("div", { className: "flex-1 overflow-y-auto", children: items.map((item) => /* @__PURE__ */ jsxs16(
|
|
4918
5087
|
HostLink,
|
|
4919
5088
|
{
|
|
4920
5089
|
href: item.href,
|
|
4921
5090
|
className: "flex items-center justify-between border-b border-border p-4",
|
|
4922
5091
|
onClick: () => setOpen(false),
|
|
4923
5092
|
children: [
|
|
4924
|
-
/* @__PURE__ */
|
|
4925
|
-
/* @__PURE__ */
|
|
4926
|
-
/* @__PURE__ */
|
|
5093
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center space-x-4", children: [
|
|
5094
|
+
/* @__PURE__ */ jsx28("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: /* @__PURE__ */ jsx28("div", { className: "h-5 w-5 [&>svg]:h-full [&>svg]:w-full", children: item.icon }) }),
|
|
5095
|
+
/* @__PURE__ */ jsx28("span", { className: "font-medium", children: item.label })
|
|
4927
5096
|
] }),
|
|
4928
|
-
/* @__PURE__ */
|
|
5097
|
+
/* @__PURE__ */ jsx28(ChevronRightIcon, { className: "h-5 w-5 text-muted-foreground" })
|
|
4929
5098
|
]
|
|
4930
5099
|
},
|
|
4931
5100
|
item.label
|
|
@@ -4940,9 +5109,9 @@ function FloatingDockDesktop({
|
|
|
4940
5109
|
growthFactor,
|
|
4941
5110
|
labelPosition
|
|
4942
5111
|
}) {
|
|
4943
|
-
const circles =
|
|
4944
|
-
const [pointerX, setPointerX] =
|
|
4945
|
-
const [centers, setCenters] =
|
|
5112
|
+
const circles = React24.useRef([]);
|
|
5113
|
+
const [pointerX, setPointerX] = React24.useState(null);
|
|
5114
|
+
const [centers, setCenters] = React24.useState([]);
|
|
4946
5115
|
const measure = (x) => {
|
|
4947
5116
|
setPointerX(x);
|
|
4948
5117
|
setCenters(
|
|
@@ -4952,7 +5121,7 @@ function FloatingDockDesktop({
|
|
|
4952
5121
|
})
|
|
4953
5122
|
);
|
|
4954
5123
|
};
|
|
4955
|
-
return /* @__PURE__ */
|
|
5124
|
+
return /* @__PURE__ */ jsx28(
|
|
4956
5125
|
"div",
|
|
4957
5126
|
{
|
|
4958
5127
|
onMouseMove: (e) => measure(e.clientX),
|
|
@@ -4966,8 +5135,8 @@ function FloatingDockDesktop({
|
|
|
4966
5135
|
const size = dockSize(BASE_SIZE, growthFactor, distance);
|
|
4967
5136
|
const icon = dockSize(BASE_ICON, growthFactor, distance);
|
|
4968
5137
|
const under = Number.isFinite(distance) && Math.abs(distance) < BASE_SIZE / 2;
|
|
4969
|
-
return /* @__PURE__ */
|
|
4970
|
-
/* @__PURE__ */
|
|
5138
|
+
return /* @__PURE__ */ jsx28(HostLink, { href: item.href, "aria-label": item.label, children: /* @__PURE__ */ jsxs16("div", { className: "relative", children: [
|
|
5139
|
+
/* @__PURE__ */ jsx28(
|
|
4971
5140
|
"div",
|
|
4972
5141
|
{
|
|
4973
5142
|
ref: (el) => {
|
|
@@ -4978,7 +5147,7 @@ function FloatingDockDesktop({
|
|
|
4978
5147
|
"relative flex aspect-square items-center justify-center rounded-full bg-muted transition-[width,height]",
|
|
4979
5148
|
MAGNIFY_MOTION
|
|
4980
5149
|
),
|
|
4981
|
-
children: /* @__PURE__ */
|
|
5150
|
+
children: /* @__PURE__ */ jsx28(
|
|
4982
5151
|
"div",
|
|
4983
5152
|
{
|
|
4984
5153
|
style: { width: icon, height: icon },
|
|
@@ -4991,7 +5160,7 @@ function FloatingDockDesktop({
|
|
|
4991
5160
|
)
|
|
4992
5161
|
}
|
|
4993
5162
|
),
|
|
4994
|
-
/* @__PURE__ */
|
|
5163
|
+
/* @__PURE__ */ jsx28(
|
|
4995
5164
|
"div",
|
|
4996
5165
|
{
|
|
4997
5166
|
"data-shown": under,
|
|
@@ -5012,18 +5181,18 @@ function FloatingDockDesktop({
|
|
|
5012
5181
|
}
|
|
5013
5182
|
|
|
5014
5183
|
// src/deferred-dialog.tsx
|
|
5015
|
-
import * as
|
|
5016
|
-
import { jsx as
|
|
5184
|
+
import * as React25 from "react";
|
|
5185
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
5017
5186
|
function deferredDialog(name, load, isOpen) {
|
|
5018
5187
|
let pending = null;
|
|
5019
5188
|
const preload = () => pending ??= load().then((component) => ({ default: component }));
|
|
5020
|
-
const Body =
|
|
5189
|
+
const Body = React25.lazy(preload);
|
|
5021
5190
|
function Deferred(props) {
|
|
5022
5191
|
const open = isOpen(props);
|
|
5023
|
-
const [opened, setOpened] =
|
|
5192
|
+
const [opened, setOpened] = React25.useState(open);
|
|
5024
5193
|
if (open && !opened) setOpened(true);
|
|
5025
5194
|
if (!open && !opened) return null;
|
|
5026
|
-
return /* @__PURE__ */
|
|
5195
|
+
return /* @__PURE__ */ jsx29(React25.Suspense, { fallback: null, children: /* @__PURE__ */ jsx29(Body, { ...props }) });
|
|
5027
5196
|
}
|
|
5028
5197
|
Deferred.displayName = name;
|
|
5029
5198
|
return Object.assign(Deferred, { preload });
|
|
@@ -5069,10 +5238,10 @@ var TextInputDialog = deferredDialog(
|
|
|
5069
5238
|
// src/clipboard-fallback-host.tsx
|
|
5070
5239
|
import { clipboardFallbackOpener } from "@ai-matrx/kit/clipboard-fallback-opener";
|
|
5071
5240
|
import { useOpenerHost } from "@ai-matrx/kit/opener-react";
|
|
5072
|
-
import { jsx as
|
|
5241
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
5073
5242
|
function ClipboardFallbackHost() {
|
|
5074
5243
|
const { open, shown, settle } = useOpenerHost(clipboardFallbackOpener);
|
|
5075
|
-
return /* @__PURE__ */
|
|
5244
|
+
return /* @__PURE__ */ jsx30(
|
|
5076
5245
|
ClipboardFallbackDialog,
|
|
5077
5246
|
{
|
|
5078
5247
|
open,
|
|
@@ -5087,8 +5256,8 @@ function ClipboardFallbackHost() {
|
|
|
5087
5256
|
}
|
|
5088
5257
|
|
|
5089
5258
|
// src/floating-sheet.tsx
|
|
5090
|
-
import { useState as
|
|
5091
|
-
import { Fragment as
|
|
5259
|
+
import { useState as useState15, useEffect as useEffect9, useCallback as useCallback7, useRef as useRef9 } from "react";
|
|
5260
|
+
import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
5092
5261
|
var FloatingSheet = ({
|
|
5093
5262
|
children,
|
|
5094
5263
|
isOpen,
|
|
@@ -5123,16 +5292,16 @@ var FloatingSheet = ({
|
|
|
5123
5292
|
respectHeader = true
|
|
5124
5293
|
// Default to true - sheets should respect the header by default
|
|
5125
5294
|
}) => {
|
|
5126
|
-
const [hasRendered, setHasRendered] =
|
|
5127
|
-
const sheetRef =
|
|
5128
|
-
const contentRef =
|
|
5129
|
-
const [scrollPosition, setScrollPosition] =
|
|
5130
|
-
|
|
5295
|
+
const [hasRendered, setHasRendered] = useState15(false);
|
|
5296
|
+
const sheetRef = useRef9(null);
|
|
5297
|
+
const contentRef = useRef9(null);
|
|
5298
|
+
const [scrollPosition, setScrollPosition] = useState15(0);
|
|
5299
|
+
useEffect9(() => {
|
|
5131
5300
|
if (!hasRendered) {
|
|
5132
5301
|
setHasRendered(true);
|
|
5133
5302
|
}
|
|
5134
5303
|
}, []);
|
|
5135
|
-
|
|
5304
|
+
useEffect9(() => {
|
|
5136
5305
|
if (!lockScroll) return void 0;
|
|
5137
5306
|
if (isOpen) {
|
|
5138
5307
|
const scrollY = window.scrollY;
|
|
@@ -5157,7 +5326,7 @@ var FloatingSheet = ({
|
|
|
5157
5326
|
document.body.style.overflow = "";
|
|
5158
5327
|
};
|
|
5159
5328
|
}, [isOpen, lockScroll]);
|
|
5160
|
-
|
|
5329
|
+
useEffect9(() => {
|
|
5161
5330
|
const handleKeyDown = (e) => {
|
|
5162
5331
|
if (e.key === "Escape" && isOpen && closeOnEsc && !e.defaultPrevented) {
|
|
5163
5332
|
if (holdsUnsentWork) {
|
|
@@ -5174,22 +5343,22 @@ var FloatingSheet = ({
|
|
|
5174
5343
|
document.removeEventListener("keydown", handleKeyDown);
|
|
5175
5344
|
};
|
|
5176
5345
|
}, [isOpen, closeOnEsc, holdsUnsentWork, onClose]);
|
|
5177
|
-
|
|
5346
|
+
useEffect9(() => {
|
|
5178
5347
|
if (isOpen && initialFocus && sheetRef.current) {
|
|
5179
5348
|
sheetRef.current.focus();
|
|
5180
5349
|
}
|
|
5181
5350
|
}, [isOpen, initialFocus]);
|
|
5182
|
-
|
|
5351
|
+
useEffect9(() => {
|
|
5183
5352
|
if (isOpen && contentRef.current && preserveScrollPosition) {
|
|
5184
5353
|
contentRef.current.scrollTop = scrollPosition;
|
|
5185
5354
|
}
|
|
5186
5355
|
}, [isOpen, preserveScrollPosition, scrollPosition]);
|
|
5187
|
-
|
|
5356
|
+
useEffect9(() => {
|
|
5188
5357
|
if (!isOpen && contentRef.current && preserveScrollPosition) {
|
|
5189
5358
|
setScrollPosition(contentRef.current.scrollTop);
|
|
5190
5359
|
}
|
|
5191
5360
|
}, [isOpen, preserveScrollPosition]);
|
|
5192
|
-
const handleBackdropClick =
|
|
5361
|
+
const handleBackdropClick = useCallback7(() => {
|
|
5193
5362
|
if (holdsUnsentWork) return;
|
|
5194
5363
|
if (onBackdropClick) {
|
|
5195
5364
|
onBackdropClick();
|
|
@@ -5394,8 +5563,8 @@ var FloatingSheet = ({
|
|
|
5394
5563
|
const bottomPadding = showFooter ? "" : "pb-safe";
|
|
5395
5564
|
return `${basePadding} ${bottomPadding}`.trim();
|
|
5396
5565
|
};
|
|
5397
|
-
return /* @__PURE__ */
|
|
5398
|
-
isOpen && hasBackdrop && /* @__PURE__ */
|
|
5566
|
+
return /* @__PURE__ */ jsxs17(Fragment6, { children: [
|
|
5567
|
+
isOpen && hasBackdrop && /* @__PURE__ */ jsx31(
|
|
5399
5568
|
"div",
|
|
5400
5569
|
{
|
|
5401
5570
|
className: `fixed ${respectHeader ? "left-0 right-0 top-10 bottom-0" : "inset-0"} bg-[var(--matrx-overlay-scrim-soft)] z-40 ${isMobile ? "backdrop-blur-sm" : ""} transition-opacity ${durationClass} ${backdropClassName}`,
|
|
@@ -5404,7 +5573,7 @@ var FloatingSheet = ({
|
|
|
5404
5573
|
"data-testid": "floating-sheet-backdrop"
|
|
5405
5574
|
}
|
|
5406
5575
|
),
|
|
5407
|
-
/* @__PURE__ */
|
|
5576
|
+
/* @__PURE__ */ jsx31(
|
|
5408
5577
|
"div",
|
|
5409
5578
|
{
|
|
5410
5579
|
ref: sheetRef,
|
|
@@ -5416,25 +5585,25 @@ var FloatingSheet = ({
|
|
|
5416
5585
|
"aria-labelledby": "sheet-title",
|
|
5417
5586
|
tabIndex: -1,
|
|
5418
5587
|
"data-testid": "floating-sheet",
|
|
5419
|
-
children: /* @__PURE__ */
|
|
5420
|
-
showHeader && /* @__PURE__ */
|
|
5588
|
+
children: /* @__PURE__ */ jsxs17("div", { className: "flex flex-col h-full overflow-hidden", children: [
|
|
5589
|
+
showHeader && /* @__PURE__ */ jsxs17(
|
|
5421
5590
|
"div",
|
|
5422
5591
|
{
|
|
5423
5592
|
className: `flex items-center justify-between border-b border-border ${getMobileHeaderClass()} ${headerClassName}`,
|
|
5424
5593
|
children: [
|
|
5425
|
-
/* @__PURE__ */
|
|
5426
|
-
typeof title === "string" ? /* @__PURE__ */
|
|
5427
|
-
description && (typeof description === "string" ? /* @__PURE__ */
|
|
5594
|
+
/* @__PURE__ */ jsxs17("div", { className: "flex-1 min-w-0", children: [
|
|
5595
|
+
typeof title === "string" ? /* @__PURE__ */ jsx31("h2", { id: "sheet-title", className: `${isMobile ? "text-xl" : "text-lg"} font-semibold text-foreground`, children: title }) : /* @__PURE__ */ jsx31("div", { id: "sheet-title", children: title }),
|
|
5596
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsx31("p", { className: "type-body text-muted-foreground mt-1", children: description }) : /* @__PURE__ */ jsx31("div", { className: "mt-1", children: description }))
|
|
5428
5597
|
] }),
|
|
5429
|
-
headerContent && /* @__PURE__ */
|
|
5430
|
-
showCloseButton && /* @__PURE__ */
|
|
5598
|
+
headerContent && /* @__PURE__ */ jsx31("div", { className: "ml-4 flex items-center", children: headerContent }),
|
|
5599
|
+
showCloseButton && /* @__PURE__ */ jsx31(
|
|
5431
5600
|
"button",
|
|
5432
5601
|
{
|
|
5433
5602
|
onClick: onClose,
|
|
5434
5603
|
className: `ml-4 rounded-full ${isMobile ? "p-2" : "p-1.5"} text-muted-foreground hover:text-foreground bg-transparent hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring`,
|
|
5435
5604
|
"aria-label": "Close",
|
|
5436
5605
|
"data-testid": "floating-sheet-close",
|
|
5437
|
-
children: closeButton || /* @__PURE__ */
|
|
5606
|
+
children: closeButton || /* @__PURE__ */ jsxs17(
|
|
5438
5607
|
"svg",
|
|
5439
5608
|
{
|
|
5440
5609
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5446,8 +5615,8 @@ var FloatingSheet = ({
|
|
|
5446
5615
|
strokeLinecap: "round",
|
|
5447
5616
|
strokeLinejoin: "round",
|
|
5448
5617
|
children: [
|
|
5449
|
-
/* @__PURE__ */
|
|
5450
|
-
/* @__PURE__ */
|
|
5618
|
+
/* @__PURE__ */ jsx31("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
5619
|
+
/* @__PURE__ */ jsx31("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
5451
5620
|
]
|
|
5452
5621
|
}
|
|
5453
5622
|
)
|
|
@@ -5456,7 +5625,7 @@ var FloatingSheet = ({
|
|
|
5456
5625
|
]
|
|
5457
5626
|
}
|
|
5458
5627
|
),
|
|
5459
|
-
/* @__PURE__ */
|
|
5628
|
+
/* @__PURE__ */ jsx31(
|
|
5460
5629
|
"div",
|
|
5461
5630
|
{
|
|
5462
5631
|
ref: contentRef,
|
|
@@ -5465,7 +5634,7 @@ var FloatingSheet = ({
|
|
|
5465
5634
|
children
|
|
5466
5635
|
}
|
|
5467
5636
|
),
|
|
5468
|
-
showFooter && /* @__PURE__ */
|
|
5637
|
+
showFooter && /* @__PURE__ */ jsx31(
|
|
5469
5638
|
"div",
|
|
5470
5639
|
{
|
|
5471
5640
|
className: `border-t border-border ${getMobileFooterClass()} ${footerClassName}`,
|
|
@@ -5480,12 +5649,12 @@ var FloatingSheet = ({
|
|
|
5480
5649
|
};
|
|
5481
5650
|
|
|
5482
5651
|
// src/simple-tooltip.tsx
|
|
5483
|
-
import { jsx as
|
|
5652
|
+
import { jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5484
5653
|
var SimpleTooltip = ({ children, text }) => {
|
|
5485
5654
|
if (!text) return children;
|
|
5486
|
-
return /* @__PURE__ */
|
|
5487
|
-
/* @__PURE__ */
|
|
5488
|
-
/* @__PURE__ */
|
|
5655
|
+
return /* @__PURE__ */ jsxs18(Tooltip, { children: [
|
|
5656
|
+
/* @__PURE__ */ jsx32(TooltipTrigger, { asChild: true, children }),
|
|
5657
|
+
/* @__PURE__ */ jsx32(TooltipContent, { children: /* @__PURE__ */ jsx32("p", { children: text }) })
|
|
5489
5658
|
] });
|
|
5490
5659
|
};
|
|
5491
5660
|
var AdvancedTooltip = ({
|
|
@@ -5508,24 +5677,24 @@ var AdvancedTooltip = ({
|
|
|
5508
5677
|
success: "bg-success text-success-foreground"
|
|
5509
5678
|
};
|
|
5510
5679
|
const baseContentClasses = "rounded-md px-3 py-1.5 text-sm shadow-md";
|
|
5511
|
-
return /* @__PURE__ */
|
|
5512
|
-
/* @__PURE__ */
|
|
5513
|
-
/* @__PURE__ */
|
|
5680
|
+
return /* @__PURE__ */ jsxs18(Tooltip, { delayDuration, children: [
|
|
5681
|
+
/* @__PURE__ */ jsx32(TooltipTrigger, { asChild: true, className, children }),
|
|
5682
|
+
/* @__PURE__ */ jsx32(
|
|
5514
5683
|
TooltipContent,
|
|
5515
5684
|
{
|
|
5516
5685
|
side,
|
|
5517
5686
|
align,
|
|
5518
5687
|
sideOffset,
|
|
5519
5688
|
className: `${baseContentClasses} ${variantStyles[variant]} ${contentClassName}`,
|
|
5520
|
-
children: /* @__PURE__ */
|
|
5689
|
+
children: /* @__PURE__ */ jsx32("p", { className: "leading-none whitespace-pre-wrap", children: text })
|
|
5521
5690
|
}
|
|
5522
5691
|
)
|
|
5523
5692
|
] });
|
|
5524
5693
|
};
|
|
5525
5694
|
|
|
5526
5695
|
// src/loading-spinner.tsx
|
|
5527
|
-
import
|
|
5528
|
-
import { Fragment as
|
|
5696
|
+
import React27 from "react";
|
|
5697
|
+
import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5529
5698
|
var animationStyles = `
|
|
5530
5699
|
@keyframes pulseWave {
|
|
5531
5700
|
0% { opacity: 0.3; transform: scale(0.8); }
|
|
@@ -5582,7 +5751,7 @@ var LoadingSpinner = ({
|
|
|
5582
5751
|
subtitle,
|
|
5583
5752
|
showProgressSteps = true
|
|
5584
5753
|
}) => {
|
|
5585
|
-
|
|
5754
|
+
React27.useEffect(() => {
|
|
5586
5755
|
const styleId = "loading-spinner-styles";
|
|
5587
5756
|
if (!document.getElementById(styleId)) {
|
|
5588
5757
|
const style = document.createElement("style");
|
|
@@ -5602,19 +5771,19 @@ var LoadingSpinner = ({
|
|
|
5602
5771
|
}
|
|
5603
5772
|
};
|
|
5604
5773
|
const sizeClasses2 = getSizeClasses();
|
|
5605
|
-
const renderDots = () => /* @__PURE__ */
|
|
5606
|
-
/* @__PURE__ */
|
|
5607
|
-
/* @__PURE__ */
|
|
5608
|
-
/* @__PURE__ */
|
|
5774
|
+
const renderDots = () => /* @__PURE__ */ jsxs19("div", { className: cn("flex items-center", sizeClasses2.container), children: [
|
|
5775
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }),
|
|
5776
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-2") }),
|
|
5777
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-3") })
|
|
5609
5778
|
] });
|
|
5610
|
-
const renderBars = () => /* @__PURE__ */
|
|
5611
|
-
/* @__PURE__ */
|
|
5612
|
-
/* @__PURE__ */
|
|
5613
|
-
/* @__PURE__ */
|
|
5614
|
-
/* @__PURE__ */
|
|
5779
|
+
const renderBars = () => /* @__PURE__ */ jsxs19("div", { className: cn("flex items-center", sizeClasses2.container), children: [
|
|
5780
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-1") }),
|
|
5781
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-2") }),
|
|
5782
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-3") }),
|
|
5783
|
+
/* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.bar, "bg-primary dark:bg-primary-foreground rounded-sm loading-bounce-4") })
|
|
5615
5784
|
] });
|
|
5616
|
-
const renderBrain = () => /* @__PURE__ */
|
|
5617
|
-
/* @__PURE__ */
|
|
5785
|
+
const renderBrain = () => /* @__PURE__ */ jsxs19("div", { className: "relative w-6 h-6 flex items-center justify-center", children: [
|
|
5786
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute", children: /* @__PURE__ */ jsx33(
|
|
5618
5787
|
"svg",
|
|
5619
5788
|
{
|
|
5620
5789
|
width: "24",
|
|
@@ -5622,7 +5791,7 @@ var LoadingSpinner = ({
|
|
|
5622
5791
|
viewBox: "0 0 24 24",
|
|
5623
5792
|
fill: "none",
|
|
5624
5793
|
className: "w-5 h-5 text-primary dark:text-primary-foreground",
|
|
5625
|
-
children: /* @__PURE__ */
|
|
5794
|
+
children: /* @__PURE__ */ jsx33(
|
|
5626
5795
|
"path",
|
|
5627
5796
|
{
|
|
5628
5797
|
d: "M12 4C9.5 4 7.5 5.5 7.5 8C7.5 9 7.5 9.5 7 10.5C6.5 11.5 6 12 6 13.5C6 15.5 7.5 17 9.5 17C10.5 17 11 16.5 12 16.5C13 16.5 13.5 17 14.5 17C16.5 17 18 15.5 18 13.5C18 12 17.5 11.5 17 10.5C16.5 9.5 16.5 9 16.5 8C16.5 5.5 14.5 4 12 4Z",
|
|
@@ -5633,44 +5802,44 @@ var LoadingSpinner = ({
|
|
|
5633
5802
|
)
|
|
5634
5803
|
}
|
|
5635
5804
|
) }),
|
|
5636
|
-
/* @__PURE__ */
|
|
5637
|
-
/* @__PURE__ */
|
|
5638
|
-
/* @__PURE__ */
|
|
5639
|
-
/* @__PURE__ */
|
|
5640
|
-
/* @__PURE__ */
|
|
5641
|
-
/* @__PURE__ */
|
|
5805
|
+
/* @__PURE__ */ jsxs19("div", { className: "absolute inset-0", children: [
|
|
5806
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[8px] top-[10px] loading-neuron-1" }),
|
|
5807
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[12px] top-[8px] loading-neuron-2" }),
|
|
5808
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[16px] top-[10px] loading-neuron-3" }),
|
|
5809
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[10px] top-[14px] loading-neuron-4" }),
|
|
5810
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-1 h-1 bg-primary/60 dark:bg-primary-foreground/60 rounded-full left-[14px] top-[14px] loading-neuron-5" })
|
|
5642
5811
|
] }),
|
|
5643
|
-
/* @__PURE__ */
|
|
5644
|
-
/* @__PURE__ */
|
|
5812
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-1" }),
|
|
5813
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute w-full h-full rounded-full border border-primary/30 dark:border-primary-foreground/30 loading-brain-pulse-2" })
|
|
5645
5814
|
] });
|
|
5646
|
-
const renderMinimal = () => /* @__PURE__ */
|
|
5647
|
-
const renderWorkflow = () => /* @__PURE__ */
|
|
5648
|
-
/* @__PURE__ */
|
|
5649
|
-
/* @__PURE__ */
|
|
5650
|
-
/* @__PURE__ */
|
|
5651
|
-
/* @__PURE__ */
|
|
5815
|
+
const renderMinimal = () => /* @__PURE__ */ jsx33("div", { className: "relative", children: /* @__PURE__ */ jsx33("div", { className: cn(sizeClasses2.dot, "bg-primary dark:bg-primary-foreground rounded-full loading-pulse-1") }) });
|
|
5816
|
+
const renderWorkflow = () => /* @__PURE__ */ jsxs19("div", { className: "flex flex-col items-center justify-center space-y-6", children: [
|
|
5817
|
+
/* @__PURE__ */ jsxs19("div", { className: "relative", children: [
|
|
5818
|
+
/* @__PURE__ */ jsx33("div", { className: "w-16 h-16 bg-primary/10 dark:bg-primary-foreground/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx33(WorkflowIcon, { className: "w-8 h-8 text-primary dark:text-primary-foreground" }) }),
|
|
5819
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute -top-1 -right-1 w-6 h-6 bg-primary dark:bg-primary-foreground rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx33(PlusIcon, { className: "w-3 h-3 text-primary-foreground dark:text-primary" }) }),
|
|
5820
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute inset-0 border-2 border-transparent border-t-primary dark:border-t-primary-foreground rounded-full matrx-spin" })
|
|
5652
5821
|
] }),
|
|
5653
|
-
/* @__PURE__ */
|
|
5654
|
-
/* @__PURE__ */
|
|
5655
|
-
/* @__PURE__ */
|
|
5822
|
+
/* @__PURE__ */ jsxs19("div", { className: "text-center space-y-2", children: [
|
|
5823
|
+
/* @__PURE__ */ jsxs19("h2", { className: "text-lg font-semibold text-foreground flex items-center gap-2 justify-center", children: [
|
|
5824
|
+
/* @__PURE__ */ jsx33(Loader2Icon, { className: "w-4 h-4 matrx-spin" }),
|
|
5656
5825
|
title || "Loading Workflow"
|
|
5657
5826
|
] }),
|
|
5658
|
-
/* @__PURE__ */
|
|
5827
|
+
/* @__PURE__ */ jsx33("p", { className: "type-body text-muted-foreground max-w-sm", children: subtitle || message || "Setting up your workflow..." })
|
|
5659
5828
|
] }),
|
|
5660
|
-
showProgressSteps && /* @__PURE__ */
|
|
5661
|
-
/* @__PURE__ */
|
|
5662
|
-
/* @__PURE__ */
|
|
5663
|
-
/* @__PURE__ */
|
|
5829
|
+
showProgressSteps && /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 type-secondary text-muted-foreground", children: [
|
|
5830
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
|
|
5831
|
+
/* @__PURE__ */ jsx33("div", { className: "w-2 h-2 bg-primary dark:bg-primary-foreground rounded-full matrx-pulse" }),
|
|
5832
|
+
/* @__PURE__ */ jsx33("span", { children: "Loading" })
|
|
5664
5833
|
] }),
|
|
5665
|
-
/* @__PURE__ */
|
|
5666
|
-
/* @__PURE__ */
|
|
5667
|
-
/* @__PURE__ */
|
|
5668
|
-
/* @__PURE__ */
|
|
5834
|
+
/* @__PURE__ */ jsx33("div", { className: "w-4 h-px bg-muted-foreground/30" }),
|
|
5835
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
|
|
5836
|
+
/* @__PURE__ */ jsx33("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
|
|
5837
|
+
/* @__PURE__ */ jsx33("span", { children: "Initializing" })
|
|
5669
5838
|
] }),
|
|
5670
|
-
/* @__PURE__ */
|
|
5671
|
-
/* @__PURE__ */
|
|
5672
|
-
/* @__PURE__ */
|
|
5673
|
-
/* @__PURE__ */
|
|
5839
|
+
/* @__PURE__ */ jsx33("div", { className: "w-4 h-px bg-muted-foreground/30" }),
|
|
5840
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
|
|
5841
|
+
/* @__PURE__ */ jsx33("div", { className: "w-2 h-2 bg-muted-foreground/30 rounded-full" }),
|
|
5842
|
+
/* @__PURE__ */ jsx33("span", { children: "Ready" })
|
|
5674
5843
|
] })
|
|
5675
5844
|
] })
|
|
5676
5845
|
] });
|
|
@@ -5699,32 +5868,32 @@ var LoadingSpinner = ({
|
|
|
5699
5868
|
}
|
|
5700
5869
|
};
|
|
5701
5870
|
if (variant === "workflow" && (fullscreen || overlay)) {
|
|
5702
|
-
return /* @__PURE__ */
|
|
5871
|
+
return /* @__PURE__ */ jsxs19("div", { className: cn(
|
|
5703
5872
|
"flex items-center justify-center bg-background",
|
|
5704
5873
|
fullscreen && "h-dvh w-full",
|
|
5705
5874
|
className
|
|
5706
5875
|
), children: [
|
|
5707
|
-
overlay && /* @__PURE__ */
|
|
5708
|
-
/* @__PURE__ */
|
|
5876
|
+
overlay && /* @__PURE__ */ jsx33("div", { className: "absolute inset-0 bg-background/80 backdrop-blur-sm z-50" }),
|
|
5877
|
+
/* @__PURE__ */ jsx33("div", { className: cn(
|
|
5709
5878
|
"flex flex-col items-center justify-center",
|
|
5710
5879
|
overlay && "relative z-50"
|
|
5711
5880
|
), children: renderWorkflow() })
|
|
5712
5881
|
] });
|
|
5713
5882
|
}
|
|
5714
|
-
return /* @__PURE__ */
|
|
5883
|
+
return /* @__PURE__ */ jsx33("div", { className: cn("flex items-center", className), children: variant === "workflow" ? renderWorkflow() : /* @__PURE__ */ jsxs19(Fragment7, { children: [
|
|
5715
5884
|
renderSpinner(),
|
|
5716
|
-
showMessage && /* @__PURE__ */
|
|
5885
|
+
showMessage && /* @__PURE__ */ jsx33("span", { className: cn("ml-3 text-muted-foreground", sizeClasses2.text), children: message || getDefaultMessage() })
|
|
5717
5886
|
] }) });
|
|
5718
5887
|
};
|
|
5719
5888
|
|
|
5720
5889
|
// src/mini-loader.tsx
|
|
5721
|
-
import { jsx as
|
|
5890
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
5722
5891
|
function MatrxMiniLoader() {
|
|
5723
|
-
return /* @__PURE__ */
|
|
5892
|
+
return /* @__PURE__ */ jsx34(LoadingSpinner, { variant: "dots", message: "Initializing Matrx...", size: "md" });
|
|
5724
5893
|
}
|
|
5725
5894
|
|
|
5726
5895
|
// src/suspense-loader.tsx
|
|
5727
|
-
import { jsx as
|
|
5896
|
+
import { jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5728
5897
|
var sizeClasses = {
|
|
5729
5898
|
xs: "h-3 w-3",
|
|
5730
5899
|
sm: "h-4 w-4",
|
|
@@ -5737,7 +5906,7 @@ function SuspenseLoader({
|
|
|
5737
5906
|
message,
|
|
5738
5907
|
className = ""
|
|
5739
5908
|
}) {
|
|
5740
|
-
const spinner = /* @__PURE__ */
|
|
5909
|
+
const spinner = /* @__PURE__ */ jsx35(
|
|
5741
5910
|
Loader2Icon,
|
|
5742
5911
|
{
|
|
5743
5912
|
className: `${sizeClasses[size]} matrx-spin text-disabled-foreground ${className}`,
|
|
@@ -5745,7 +5914,7 @@ function SuspenseLoader({
|
|
|
5745
5914
|
"aria-label": message ? void 0 : "Loading"
|
|
5746
5915
|
}
|
|
5747
5916
|
);
|
|
5748
|
-
const content = message ? /* @__PURE__ */
|
|
5917
|
+
const content = message ? /* @__PURE__ */ jsxs20(
|
|
5749
5918
|
"span",
|
|
5750
5919
|
{
|
|
5751
5920
|
className: "inline-flex items-center gap-2",
|
|
@@ -5753,19 +5922,19 @@ function SuspenseLoader({
|
|
|
5753
5922
|
"aria-live": "polite",
|
|
5754
5923
|
children: [
|
|
5755
5924
|
spinner,
|
|
5756
|
-
/* @__PURE__ */
|
|
5925
|
+
/* @__PURE__ */ jsx35("span", { children: message })
|
|
5757
5926
|
]
|
|
5758
5927
|
}
|
|
5759
5928
|
) : spinner;
|
|
5760
5929
|
if (centered) {
|
|
5761
|
-
return /* @__PURE__ */
|
|
5930
|
+
return /* @__PURE__ */ jsx35("div", { className: "flex items-center justify-center w-full h-full min-h-[2rem]", children: content });
|
|
5762
5931
|
}
|
|
5763
5932
|
return content;
|
|
5764
5933
|
}
|
|
5765
5934
|
|
|
5766
5935
|
// src/shimmer-text.tsx
|
|
5767
|
-
import { useCallback as
|
|
5768
|
-
import { jsx as
|
|
5936
|
+
import { useCallback as useCallback8, useRef as useRef10 } from "react";
|
|
5937
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
5769
5938
|
var SHIMMER_STYLE = {
|
|
5770
5939
|
backgroundImage: "linear-gradient(90deg, color-mix(in srgb, currentColor 18%, transparent) 0%, currentColor 50%, color-mix(in srgb, currentColor 18%, transparent) 100%)",
|
|
5771
5940
|
backgroundSize: "200% 100%",
|
|
@@ -5774,8 +5943,8 @@ var SHIMMER_STYLE = {
|
|
|
5774
5943
|
WebkitTextFillColor: "transparent"
|
|
5775
5944
|
};
|
|
5776
5945
|
function useShimmerSweep(durationMs = 2e3) {
|
|
5777
|
-
const animationRef =
|
|
5778
|
-
return
|
|
5946
|
+
const animationRef = useRef10(null);
|
|
5947
|
+
return useCallback8(
|
|
5779
5948
|
(el) => {
|
|
5780
5949
|
animationRef.current?.cancel();
|
|
5781
5950
|
animationRef.current = null;
|
|
@@ -5793,7 +5962,7 @@ function useShimmerSweep(durationMs = 2e3) {
|
|
|
5793
5962
|
}
|
|
5794
5963
|
function ShimmerText({ text, className }) {
|
|
5795
5964
|
const ref = useShimmerSweep();
|
|
5796
|
-
return /* @__PURE__ */
|
|
5965
|
+
return /* @__PURE__ */ jsx36(
|
|
5797
5966
|
"span",
|
|
5798
5967
|
{
|
|
5799
5968
|
ref,
|
|
@@ -5850,24 +6019,24 @@ function formThemeClasses(theme) {
|
|
|
5850
6019
|
|
|
5851
6020
|
// src/first-use-hint.tsx
|
|
5852
6021
|
import * as PopoverPrimitive2 from "@radix-ui/react-popover";
|
|
5853
|
-
import { Slot as
|
|
5854
|
-
import * as
|
|
5855
|
-
import { Fragment as
|
|
6022
|
+
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
6023
|
+
import * as React28 from "react";
|
|
6024
|
+
import { Fragment as Fragment8, jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5856
6025
|
var FIRST_USE_HINT_TITLE_MAX = 32;
|
|
5857
6026
|
var FIRST_USE_HINT_DETAIL_MAX = 60;
|
|
5858
|
-
var FirstUseHintContext =
|
|
6027
|
+
var FirstUseHintContext = React28.createContext(null);
|
|
5859
6028
|
function FirstUseHintProvider({
|
|
5860
6029
|
store,
|
|
5861
6030
|
children
|
|
5862
6031
|
}) {
|
|
5863
|
-
return /* @__PURE__ */
|
|
6032
|
+
return /* @__PURE__ */ jsx37(FirstUseHintContext.Provider, { value: store, children });
|
|
5864
6033
|
}
|
|
5865
6034
|
var sessionLearned = /* @__PURE__ */ new Set();
|
|
5866
6035
|
var warnedNoProvider = false;
|
|
5867
6036
|
function useFirstUseHint(id) {
|
|
5868
|
-
const store =
|
|
5869
|
-
const [, rerender] =
|
|
5870
|
-
const [dismissed, setDismissed] =
|
|
6037
|
+
const store = React28.useContext(FirstUseHintContext);
|
|
6038
|
+
const [, rerender] = React28.useReducer((n) => n + 1, 0);
|
|
6039
|
+
const [dismissed, setDismissed] = React28.useState(false);
|
|
5871
6040
|
if (!store && !warnedNoProvider) {
|
|
5872
6041
|
warnedNoProvider = true;
|
|
5873
6042
|
console.warn(
|
|
@@ -5876,7 +6045,7 @@ function useFirstUseHint(id) {
|
|
|
5876
6045
|
}
|
|
5877
6046
|
const learned = store ? store.learned.includes(id) : sessionLearned.has(id);
|
|
5878
6047
|
const ready = store ? store.ready : true;
|
|
5879
|
-
const learn =
|
|
6048
|
+
const learn = React28.useCallback(() => {
|
|
5880
6049
|
setDismissed(true);
|
|
5881
6050
|
if (store) {
|
|
5882
6051
|
if (!store.learned.includes(id)) store.learn(id);
|
|
@@ -5899,11 +6068,11 @@ function FirstUseHint({
|
|
|
5899
6068
|
pulse,
|
|
5900
6069
|
children
|
|
5901
6070
|
}) {
|
|
5902
|
-
const hostRef =
|
|
6071
|
+
const hostRef = React28.useRef(null);
|
|
5903
6072
|
const { visible, learn } = useFirstUseHint(id);
|
|
5904
6073
|
const eligible = visible && when;
|
|
5905
|
-
const [shown, setShown] =
|
|
5906
|
-
|
|
6074
|
+
const [shown, setShown] = React28.useState(false);
|
|
6075
|
+
React28.useEffect(() => {
|
|
5907
6076
|
if (!eligible) {
|
|
5908
6077
|
setShown(false);
|
|
5909
6078
|
return void 0;
|
|
@@ -5920,11 +6089,11 @@ function FirstUseHint({
|
|
|
5920
6089
|
}
|
|
5921
6090
|
const open = eligible && shown;
|
|
5922
6091
|
const beaconOn = open && beacon !== "none";
|
|
5923
|
-
const target =
|
|
6092
|
+
const target = React28.useCallback(
|
|
5924
6093
|
() => pulse ? hostRef.current?.querySelector(pulse) ?? hostRef.current : hostRef.current,
|
|
5925
6094
|
[pulse]
|
|
5926
6095
|
);
|
|
5927
|
-
|
|
6096
|
+
React28.useEffect(() => {
|
|
5928
6097
|
if (!pulse || !beaconOn) return void 0;
|
|
5929
6098
|
const el = target();
|
|
5930
6099
|
if (!el || el === hostRef.current) return void 0;
|
|
@@ -5935,7 +6104,7 @@ function FirstUseHint({
|
|
|
5935
6104
|
el.removeAttribute("data-matrx-hint-beacon");
|
|
5936
6105
|
};
|
|
5937
6106
|
}, [pulse, beaconOn, beacon, target]);
|
|
5938
|
-
const virtualRef =
|
|
6107
|
+
const virtualRef = React28.useMemo(
|
|
5939
6108
|
() => ({
|
|
5940
6109
|
current: {
|
|
5941
6110
|
getBoundingClientRect: () => target()?.getBoundingClientRect() ?? new DOMRect()
|
|
@@ -5943,10 +6112,10 @@ function FirstUseHint({
|
|
|
5943
6112
|
}),
|
|
5944
6113
|
[target]
|
|
5945
6114
|
);
|
|
5946
|
-
return /* @__PURE__ */
|
|
5947
|
-
pulse ? /* @__PURE__ */
|
|
5948
|
-
/* @__PURE__ */
|
|
5949
|
-
|
|
6115
|
+
return /* @__PURE__ */ jsxs21(Popover, { open, children: [
|
|
6116
|
+
pulse ? /* @__PURE__ */ jsxs21(Fragment8, { children: [
|
|
6117
|
+
/* @__PURE__ */ jsx37(
|
|
6118
|
+
Slot4,
|
|
5950
6119
|
{
|
|
5951
6120
|
ref: hostRef,
|
|
5952
6121
|
"data-matrx-first-use-hint": open ? id : void 0,
|
|
@@ -5954,8 +6123,8 @@ function FirstUseHint({
|
|
|
5954
6123
|
children
|
|
5955
6124
|
}
|
|
5956
6125
|
),
|
|
5957
|
-
/* @__PURE__ */
|
|
5958
|
-
] }) : /* @__PURE__ */
|
|
6126
|
+
/* @__PURE__ */ jsx37(PopoverAnchor, { virtualRef })
|
|
6127
|
+
] }) : /* @__PURE__ */ jsx37(
|
|
5959
6128
|
PopoverAnchor,
|
|
5960
6129
|
{
|
|
5961
6130
|
asChild: true,
|
|
@@ -5967,7 +6136,7 @@ function FirstUseHint({
|
|
|
5967
6136
|
children
|
|
5968
6137
|
}
|
|
5969
6138
|
),
|
|
5970
|
-
/* @__PURE__ */
|
|
6139
|
+
/* @__PURE__ */ jsxs21(
|
|
5971
6140
|
PopoverContent,
|
|
5972
6141
|
{
|
|
5973
6142
|
side,
|
|
@@ -5984,17 +6153,17 @@ function FirstUseHint({
|
|
|
5984
6153
|
onInteractOutside: (e) => e.preventDefault(),
|
|
5985
6154
|
onEscapeKeyDown: learn,
|
|
5986
6155
|
children: [
|
|
5987
|
-
/* @__PURE__ */
|
|
5988
|
-
/* @__PURE__ */
|
|
5989
|
-
/* @__PURE__ */
|
|
6156
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-1 py-0.5 pl-3 pr-0.5", children: [
|
|
6157
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex min-w-0 flex-col py-1", children: [
|
|
6158
|
+
/* @__PURE__ */ jsx37("span", { className: "type-secondary truncate font-medium text-foreground", children: title }),
|
|
5990
6159
|
detail ? (
|
|
5991
6160
|
// Two lines at most: on a 375px phone a full 60-character line can wrap once.
|
|
5992
|
-
/* @__PURE__ */
|
|
6161
|
+
/* @__PURE__ */ jsx37("span", { className: "type-secondary line-clamp-2 text-muted-foreground", children: detail })
|
|
5993
6162
|
) : null
|
|
5994
6163
|
] }),
|
|
5995
|
-
/* @__PURE__ */
|
|
6164
|
+
/* @__PURE__ */ jsx37(IconButton, { icon: XIcon, "aria-label": "Dismiss tip", className: "shrink-0", onClick: learn })
|
|
5996
6165
|
] }),
|
|
5997
|
-
/* @__PURE__ */
|
|
6166
|
+
/* @__PURE__ */ jsx37(PopoverPrimitive2.Arrow, { className: "fill-popover", width: 10, height: 5 })
|
|
5998
6167
|
]
|
|
5999
6168
|
}
|
|
6000
6169
|
)
|
|
@@ -6002,8 +6171,8 @@ function FirstUseHint({
|
|
|
6002
6171
|
}
|
|
6003
6172
|
|
|
6004
6173
|
// src/review-changes.tsx
|
|
6005
|
-
import * as
|
|
6006
|
-
import { jsx as
|
|
6174
|
+
import * as React29 from "react";
|
|
6175
|
+
import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
6007
6176
|
var SKIP = "skip";
|
|
6008
6177
|
function unansweredQuestions(preview, answers) {
|
|
6009
6178
|
return preview.questions.filter((q) => !answers[q.id]);
|
|
@@ -6016,16 +6185,16 @@ function acceptSuggestions(preview, answers) {
|
|
|
6016
6185
|
for (const q of preview.questions) if (!next[q.id] && q.suggested) next[q.id] = q.suggested;
|
|
6017
6186
|
return next;
|
|
6018
6187
|
}
|
|
6019
|
-
var RenderItemContext =
|
|
6188
|
+
var RenderItemContext = React29.createContext(void 0);
|
|
6020
6189
|
function ItemDoor({ item, onOpenItem }) {
|
|
6021
|
-
const renderItem =
|
|
6190
|
+
const renderItem = React29.useContext(RenderItemContext);
|
|
6022
6191
|
const hosted = renderItem ? renderItem(item) : null;
|
|
6023
6192
|
if (hosted != null) {
|
|
6024
|
-
return /* @__PURE__ */
|
|
6193
|
+
return /* @__PURE__ */ jsx38("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center", children: hosted });
|
|
6025
6194
|
}
|
|
6026
6195
|
const title = item.title?.trim() || "Untitled";
|
|
6027
|
-
return /* @__PURE__ */
|
|
6028
|
-
/* @__PURE__ */
|
|
6196
|
+
return /* @__PURE__ */ jsxs22("span", { "data-change-item": item.id, className: "inline-flex max-w-full items-center gap-0.5", children: [
|
|
6197
|
+
/* @__PURE__ */ jsx38(
|
|
6029
6198
|
Button2,
|
|
6030
6199
|
{
|
|
6031
6200
|
type: "button",
|
|
@@ -6036,12 +6205,12 @@ function ItemDoor({ item, onOpenItem }) {
|
|
|
6036
6205
|
children: title
|
|
6037
6206
|
}
|
|
6038
6207
|
),
|
|
6039
|
-
/* @__PURE__ */
|
|
6208
|
+
/* @__PURE__ */ jsx38(
|
|
6040
6209
|
Button2,
|
|
6041
6210
|
{
|
|
6042
6211
|
type: "button",
|
|
6043
6212
|
variant: "quiet",
|
|
6044
|
-
icon: /* @__PURE__ */
|
|
6213
|
+
icon: /* @__PURE__ */ jsx38(ExternalLinkIcon, {}),
|
|
6045
6214
|
"data-clickable": "",
|
|
6046
6215
|
"aria-label": `Open ${title} in a new tab`,
|
|
6047
6216
|
className: "shrink-0",
|
|
@@ -6053,9 +6222,9 @@ function ItemDoor({ item, onOpenItem }) {
|
|
|
6053
6222
|
function Doors({ items, total, onOpenItem }) {
|
|
6054
6223
|
if (!items.length) return null;
|
|
6055
6224
|
const more = (total ?? items.length) - items.length;
|
|
6056
|
-
return /* @__PURE__ */
|
|
6057
|
-
items.map((item) => /* @__PURE__ */
|
|
6058
|
-
more > 0 ? /* @__PURE__ */
|
|
6225
|
+
return /* @__PURE__ */ jsxs22("span", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
6226
|
+
items.map((item) => /* @__PURE__ */ jsx38(ItemDoor, { item, onOpenItem }, `${item.table ?? item.type}:${item.id}`)),
|
|
6227
|
+
more > 0 ? /* @__PURE__ */ jsxs22("span", { className: "text-xs text-muted-foreground", children: [
|
|
6059
6228
|
"+",
|
|
6060
6229
|
more,
|
|
6061
6230
|
" more"
|
|
@@ -6063,17 +6232,17 @@ function Doors({ items, total, onOpenItem }) {
|
|
|
6063
6232
|
] });
|
|
6064
6233
|
}
|
|
6065
6234
|
function Row({ title, meta, children }) {
|
|
6066
|
-
return /* @__PURE__ */
|
|
6067
|
-
/* @__PURE__ */
|
|
6068
|
-
/* @__PURE__ */
|
|
6069
|
-
meta ? /* @__PURE__ */
|
|
6235
|
+
return /* @__PURE__ */ jsxs22("div", { "data-change-row": "", className: "flex flex-col gap-1 px-3 py-2", children: [
|
|
6236
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-baseline justify-between gap-3", children: [
|
|
6237
|
+
/* @__PURE__ */ jsx38("span", { className: "min-w-0 text-sm text-foreground", children: title }),
|
|
6238
|
+
meta ? /* @__PURE__ */ jsx38("span", { className: "shrink-0 text-xs text-muted-foreground", children: meta }) : null
|
|
6070
6239
|
] }),
|
|
6071
6240
|
children
|
|
6072
6241
|
] });
|
|
6073
6242
|
}
|
|
6074
6243
|
function Alarm({ warning, onOpenItem }) {
|
|
6075
6244
|
const items = [...warning.items ?? [], ...warning.users ?? []];
|
|
6076
|
-
return /* @__PURE__ */
|
|
6245
|
+
return /* @__PURE__ */ jsxs22(
|
|
6077
6246
|
"div",
|
|
6078
6247
|
{
|
|
6079
6248
|
role: "alert",
|
|
@@ -6081,8 +6250,8 @@ function Alarm({ warning, onOpenItem }) {
|
|
|
6081
6250
|
"data-severity": warning.severity,
|
|
6082
6251
|
className: "flex flex-col gap-1.5 rounded-group border border-destructive bg-destructive/10 px-3 py-2",
|
|
6083
6252
|
children: [
|
|
6084
|
-
/* @__PURE__ */
|
|
6085
|
-
/* @__PURE__ */
|
|
6253
|
+
/* @__PURE__ */ jsx38("span", { className: "text-sm font-medium text-foreground", children: warning.message }),
|
|
6254
|
+
/* @__PURE__ */ jsx38(Doors, { items, total: warning.count ?? items.length, onOpenItem })
|
|
6086
6255
|
]
|
|
6087
6256
|
}
|
|
6088
6257
|
);
|
|
@@ -6099,10 +6268,10 @@ function Question({ question, answer, onAnswer, onOpenItem, disabled }) {
|
|
|
6099
6268
|
const suggested = !question.suggested ? null : yes && question.suggested === yes.value ? "yes" : noOption && question.suggested === noOption.value ? "no" : "other";
|
|
6100
6269
|
const wayOut = rest.map((o) => ({ value: o.value, label: o.label }));
|
|
6101
6270
|
const chosen = [...question.options, ...question.way_out].find((o) => o.value === answer);
|
|
6102
|
-
return /* @__PURE__ */
|
|
6103
|
-
/* @__PURE__ */
|
|
6104
|
-
/* @__PURE__ */
|
|
6105
|
-
/* @__PURE__ */
|
|
6271
|
+
return /* @__PURE__ */ jsxs22("div", { "data-change-question": question.id, "data-kind": question.kind, className: "flex flex-col gap-1.5 px-3 py-2", children: [
|
|
6272
|
+
/* @__PURE__ */ jsx38("span", { className: "text-sm text-foreground", children: question.prompt }),
|
|
6273
|
+
/* @__PURE__ */ jsx38(Doors, { items: question.items.sample, total: question.items.count, onOpenItem }),
|
|
6274
|
+
/* @__PURE__ */ jsx38(
|
|
6106
6275
|
DecisionControl,
|
|
6107
6276
|
{
|
|
6108
6277
|
value,
|
|
@@ -6124,7 +6293,7 @@ function Question({ question, answer, onAnswer, onOpenItem, disabled }) {
|
|
|
6124
6293
|
"aria-label": question.prompt
|
|
6125
6294
|
}
|
|
6126
6295
|
),
|
|
6127
|
-
chosen?.consequence ? /* @__PURE__ */
|
|
6296
|
+
chosen?.consequence ? /* @__PURE__ */ jsx38("span", { className: "text-xs text-muted-foreground", children: chosen.consequence }) : null
|
|
6128
6297
|
] });
|
|
6129
6298
|
}
|
|
6130
6299
|
var VERB_WORDS = {
|
|
@@ -6133,7 +6302,7 @@ var VERB_WORDS = {
|
|
|
6133
6302
|
move: { goes: "Moves with it", commit: "Move" }
|
|
6134
6303
|
};
|
|
6135
6304
|
function ReviewChanges({ renderItem, ...props }) {
|
|
6136
|
-
return /* @__PURE__ */
|
|
6305
|
+
return /* @__PURE__ */ jsx38(RenderItemContext.Provider, { value: renderItem, children: /* @__PURE__ */ jsx38(ReviewChangesBody, { ...props }) });
|
|
6137
6306
|
}
|
|
6138
6307
|
function ReviewChangesBody({ preview, answers, onAnswer, onOpenItem, onCommit, onCancel, busy, commitLabel, className }) {
|
|
6139
6308
|
const words = VERB_WORDS[preview.verb] ?? { goes: "Changes with it", commit: "Apply" };
|
|
@@ -6147,33 +6316,33 @@ function ReviewChangesBody({ preview, answers, onAnswer, onOpenItem, onCommit, o
|
|
|
6147
6316
|
const suggestible = pending.filter((q) => q.suggested);
|
|
6148
6317
|
const ready = canCommitChanges(preview, answers);
|
|
6149
6318
|
const target = preview.target_organization?.name;
|
|
6150
|
-
return /* @__PURE__ */
|
|
6151
|
-
alarms.map((w, i) => /* @__PURE__ */
|
|
6152
|
-
/* @__PURE__ */
|
|
6153
|
-
moving.length ? /* @__PURE__ */
|
|
6154
|
-
kept.length || staying.length ? /* @__PURE__ */
|
|
6155
|
-
kept.map((w, i) => /* @__PURE__ */
|
|
6156
|
-
staying.map((g) => /* @__PURE__ */
|
|
6319
|
+
return /* @__PURE__ */ jsxs22("div", { "data-review-changes": "", "data-verb": preview.verb, className: cn("flex min-h-0 flex-col gap-3", className), children: [
|
|
6320
|
+
alarms.map((w, i) => /* @__PURE__ */ jsx38(Alarm, { warning: w, onOpenItem }, `${w.kind}:${i}`)),
|
|
6321
|
+
/* @__PURE__ */ jsx38(RowGroup, { title: preview.verb === "move" && target ? `Moving to ${target}` : void 0, children: /* @__PURE__ */ jsx38(Row, { title: /* @__PURE__ */ jsx38(Doors, { items: preview.roots, onOpenItem }) }) }),
|
|
6322
|
+
moving.length ? /* @__PURE__ */ jsx38(RowGroup, { title: words.goes, children: moving.map((g) => /* @__PURE__ */ jsx38(Row, { title: g.noun, meta: `${g.count_is_estimate ? "about " : ""}${g.count}`, children: /* @__PURE__ */ jsx38(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `${g.rule_id ?? "root"}:${g.table ?? g.type}`)) }) : null,
|
|
6323
|
+
kept.length || staying.length ? /* @__PURE__ */ jsxs22(RowGroup, { title: "Stays where it is", children: [
|
|
6324
|
+
kept.map((w, i) => /* @__PURE__ */ jsx38(Row, { title: w.message ?? w.noun ?? "Used elsewhere", meta: w.count ?? void 0, children: /* @__PURE__ */ jsx38(Doors, { items: w.items ?? [], total: w.count, onOpenItem }) }, `kept:${i}`)),
|
|
6325
|
+
staying.map((g) => /* @__PURE__ */ jsx38(Row, { title: g.noun, meta: g.count, children: /* @__PURE__ */ jsx38(Doors, { items: g.sample, total: g.count, onOpenItem }) }, `stay:${g.table ?? g.type}`))
|
|
6157
6326
|
] }) : null,
|
|
6158
|
-
preview.questions.length ? /* @__PURE__ */
|
|
6159
|
-
auto || unchecked ? /* @__PURE__ */
|
|
6160
|
-
auto ? /* @__PURE__ */
|
|
6161
|
-
unchecked ? /* @__PURE__ */
|
|
6327
|
+
preview.questions.length ? /* @__PURE__ */ jsx38(RowGroup, { title: "Decide", children: preview.questions.map((q) => /* @__PURE__ */ jsx38(Question, { question: q, answer: answers[q.id], onAnswer, onOpenItem, disabled: busy }, q.id)) }) : null,
|
|
6328
|
+
auto || unchecked ? /* @__PURE__ */ jsxs22("div", { className: "flex flex-wrap gap-2 px-1", children: [
|
|
6329
|
+
auto ? /* @__PURE__ */ jsx38(Badge, { tone: "neutral", children: `${auto.count ?? ""} decided automatically`.trim() }) : null,
|
|
6330
|
+
unchecked ? /* @__PURE__ */ jsx38(Badge, { tone: "neutral", children: "Links inside text not checked" }) : null
|
|
6162
6331
|
] }) : null,
|
|
6163
|
-
/* @__PURE__ */
|
|
6164
|
-
suggestible.length ? /* @__PURE__ */
|
|
6165
|
-
/* @__PURE__ */
|
|
6166
|
-
/* @__PURE__ */
|
|
6332
|
+
/* @__PURE__ */ jsxs22("div", { "data-review-changes-actions": "", className: "flex flex-wrap items-center justify-end gap-2", children: [
|
|
6333
|
+
suggestible.length ? /* @__PURE__ */ jsx38(Button2, { variant: "quiet", disabled: busy, onClick: () => suggestible.forEach((q) => onAnswer(q.id, q.suggested)), children: "Accept suggestions" }) : null,
|
|
6334
|
+
/* @__PURE__ */ jsx38(Button2, { variant: "outline", disabled: busy, onClick: onCancel, children: "Cancel" }),
|
|
6335
|
+
/* @__PURE__ */ jsx38(Button2, { variant: preview.verb === "delete" ? "danger" : "primary", disabled: busy || !ready, onClick: onCommit, children: commitLabel ?? words.commit })
|
|
6167
6336
|
] })
|
|
6168
6337
|
] });
|
|
6169
6338
|
}
|
|
6170
6339
|
|
|
6171
6340
|
// src/grid-canvas/grid-canvas.tsx
|
|
6172
6341
|
import {
|
|
6173
|
-
useEffect as
|
|
6342
|
+
useEffect as useEffect11,
|
|
6174
6343
|
useLayoutEffect as useLayoutEffect3,
|
|
6175
|
-
useRef as
|
|
6176
|
-
useState as
|
|
6344
|
+
useRef as useRef12,
|
|
6345
|
+
useState as useState17
|
|
6177
6346
|
} from "react";
|
|
6178
6347
|
|
|
6179
6348
|
// src/grid-canvas/layout.ts
|
|
@@ -6334,7 +6503,7 @@ function insertLines(boxes, id, line, col, cols) {
|
|
|
6334
6503
|
}
|
|
6335
6504
|
|
|
6336
6505
|
// src/grid-canvas/grid-canvas.tsx
|
|
6337
|
-
import { jsx as
|
|
6506
|
+
import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
6338
6507
|
var GRID_CANVAS_COLUMNS = { lg: 12, sm: 4 };
|
|
6339
6508
|
var GRID_CANVAS_PHONE_MAX_PX = 640;
|
|
6340
6509
|
var GRID_CANVAS_ROW_PX = 24;
|
|
@@ -6378,7 +6547,7 @@ function resolveGridCanvas(items, fit = "cells") {
|
|
|
6378
6547
|
}
|
|
6379
6548
|
var sameGrid = (a, b) => a.length === b.length && a.every((x, i) => x.x === b[i].x && x.y === b[i].y && x.w === b[i].w && x.h === b[i].h);
|
|
6380
6549
|
function useBreakpoint(ref) {
|
|
6381
|
-
const [breakpoint, setBreakpoint] =
|
|
6550
|
+
const [breakpoint, setBreakpoint] = useState17("lg");
|
|
6382
6551
|
useLayoutEffect3(() => {
|
|
6383
6552
|
const el = ref.current;
|
|
6384
6553
|
if (!el) return;
|
|
@@ -6406,14 +6575,14 @@ function GridCanvas({
|
|
|
6406
6575
|
className,
|
|
6407
6576
|
"aria-label": ariaLabel
|
|
6408
6577
|
}) {
|
|
6409
|
-
const rootRef =
|
|
6578
|
+
const rootRef = useRef12(null);
|
|
6410
6579
|
const breakpoint = useBreakpoint(rootRef);
|
|
6411
6580
|
const resolved = resolveGridCanvas(items, fit);
|
|
6412
|
-
const [preview, setPreview] =
|
|
6413
|
-
const gesture =
|
|
6414
|
-
const itemEls =
|
|
6415
|
-
const [announcement, setAnnouncement] =
|
|
6416
|
-
|
|
6581
|
+
const [preview, setPreview] = useState17(null);
|
|
6582
|
+
const gesture = useRef12(null);
|
|
6583
|
+
const itemEls = useRef12(/* @__PURE__ */ new Map());
|
|
6584
|
+
const [announcement, setAnnouncement] = useState17("");
|
|
6585
|
+
useEffect11(() => () => gesture.current?.handle.cancel(), []);
|
|
6417
6586
|
const grids = {
|
|
6418
6587
|
lg: preview?.breakpoint === "lg" ? preview.boxes : resolved.lg,
|
|
6419
6588
|
sm: preview?.breakpoint === "sm" ? preview.boxes : resolved.sm
|
|
@@ -6509,7 +6678,7 @@ function GridCanvas({
|
|
|
6509
6678
|
};
|
|
6510
6679
|
const rows = { lg: gridRows(grids.lg), sm: gridRows(grids.sm) };
|
|
6511
6680
|
const active = preview ? preview.boxes.find((b) => b.id === preview.id) : void 0;
|
|
6512
|
-
return /* @__PURE__ */
|
|
6681
|
+
return /* @__PURE__ */ jsxs23(
|
|
6513
6682
|
"div",
|
|
6514
6683
|
{
|
|
6515
6684
|
ref: rootRef,
|
|
@@ -6529,8 +6698,8 @@ function GridCanvas({
|
|
|
6529
6698
|
"--grid-rows-sm": preview?.breakpoint === "sm" ? rows.sm + 1 : rows.sm
|
|
6530
6699
|
},
|
|
6531
6700
|
children: [
|
|
6532
|
-
/* @__PURE__ */
|
|
6533
|
-
active && preview ? /* @__PURE__ */
|
|
6701
|
+
/* @__PURE__ */ jsxs23("div", { className: "matrx-grid-canvas-field", children: [
|
|
6702
|
+
active && preview ? /* @__PURE__ */ jsx39("div", { className: "matrx-grid-canvas-placeholder", "aria-hidden": true, style: placementVars(active, active) }) : null,
|
|
6534
6703
|
items.map((item, n) => {
|
|
6535
6704
|
const lg = grids.lg[n];
|
|
6536
6705
|
const sm = grids.sm[n];
|
|
@@ -6539,7 +6708,7 @@ function GridCanvas({
|
|
|
6539
6708
|
const drawLg = moving && preview.breakpoint === "lg" ? startBox : lg;
|
|
6540
6709
|
const drawSm = moving && preview.breakpoint === "sm" ? startBox : sm;
|
|
6541
6710
|
const label = itemLabel?.(item.id);
|
|
6542
|
-
return /* @__PURE__ */
|
|
6711
|
+
return /* @__PURE__ */ jsxs23(
|
|
6543
6712
|
"div",
|
|
6544
6713
|
{
|
|
6545
6714
|
ref: (el) => {
|
|
@@ -6555,8 +6724,8 @@ function GridCanvas({
|
|
|
6555
6724
|
onPointerDown: editable ? (e) => onItemPointerDown(e, item.id) : void 0,
|
|
6556
6725
|
onKeyDown: editable ? (e) => onItemKeyDown(e, item.id) : void 0,
|
|
6557
6726
|
children: [
|
|
6558
|
-
/* @__PURE__ */
|
|
6559
|
-
editable ? /* @__PURE__ */
|
|
6727
|
+
/* @__PURE__ */ jsx39("div", { className: "matrx-grid-canvas-content", children: renderItem(item.id, { breakpoint, editing: editable }) }),
|
|
6728
|
+
editable ? /* @__PURE__ */ jsx39(
|
|
6560
6729
|
"span",
|
|
6561
6730
|
{
|
|
6562
6731
|
className: "matrx-grid-canvas-resize",
|
|
@@ -6571,7 +6740,7 @@ function GridCanvas({
|
|
|
6571
6740
|
);
|
|
6572
6741
|
})
|
|
6573
6742
|
] }),
|
|
6574
|
-
/* @__PURE__ */
|
|
6743
|
+
/* @__PURE__ */ jsx39("span", { className: "matrx-grid-canvas-live", "aria-live": "polite", children: announcement })
|
|
6575
6744
|
]
|
|
6576
6745
|
}
|
|
6577
6746
|
);
|
|
@@ -6641,6 +6810,8 @@ export {
|
|
|
6641
6810
|
AppRailSpacer,
|
|
6642
6811
|
ArchiveFilter,
|
|
6643
6812
|
ArchivedDisclosure,
|
|
6813
|
+
AssistPeekCard,
|
|
6814
|
+
AssistPeekHover,
|
|
6644
6815
|
AuthGateDialog,
|
|
6645
6816
|
Avatar,
|
|
6646
6817
|
AvatarFallback,
|