@arbidocs/blocks 0.4.130 → 0.4.131
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/README.md +3 -4
- package/dist/agents/index.cjs +304 -304
- package/dist/agents/index.js +12 -12
- package/dist/calls/index.cjs +3 -3
- package/dist/calls/index.js +2 -2
- package/dist/chat/index.cjs +144 -144
- package/dist/chat/index.js +5 -5
- package/dist/chat/open-document.d.ts +1 -5
- package/dist/{chunk-SZX44LCT.js → chunk-26E6PHD2.js} +3 -3
- package/dist/{chunk-SZX44LCT.js.map → chunk-26E6PHD2.js.map} +1 -1
- package/dist/{chunk-2PNNCEPH.js → chunk-54ANPPMV.js} +4 -4
- package/dist/{chunk-2PNNCEPH.js.map → chunk-54ANPPMV.js.map} +1 -1
- package/dist/{chunk-FUTMU4FR.js → chunk-5HFPRI3W.js} +3 -3
- package/dist/{chunk-FUTMU4FR.js.map → chunk-5HFPRI3W.js.map} +1 -1
- package/dist/chunk-76JDDMSP.js +31 -0
- package/dist/chunk-76JDDMSP.js.map +1 -0
- package/dist/{chunk-4RLCRFZS.js → chunk-7D4W3SAH.js} +12 -15
- package/dist/chunk-7D4W3SAH.js.map +1 -0
- package/dist/{chunk-2DFDFOM7.js → chunk-7HAM7Y5U.js} +3 -3
- package/dist/{chunk-2DFDFOM7.js.map → chunk-7HAM7Y5U.js.map} +1 -1
- package/dist/{chunk-4QIIDXLF.cjs → chunk-7KH4M3KY.cjs} +10 -10
- package/dist/{chunk-4QIIDXLF.cjs.map → chunk-7KH4M3KY.cjs.map} +1 -1
- package/dist/{chunk-TP6PLDNM.cjs → chunk-7QDX2CO4.cjs} +4 -4
- package/dist/{chunk-TP6PLDNM.cjs.map → chunk-7QDX2CO4.cjs.map} +1 -1
- package/dist/{chunk-RI6DZA5X.js → chunk-A2YAC22G.js} +3 -3
- package/dist/{chunk-RI6DZA5X.js.map → chunk-A2YAC22G.js.map} +1 -1
- package/dist/{chunk-4S5IDT5F.cjs → chunk-BZF55UCE.cjs} +5 -5
- package/dist/{chunk-4S5IDT5F.cjs.map → chunk-BZF55UCE.cjs.map} +1 -1
- package/dist/chunk-C54XEN5T.cjs +34 -0
- package/dist/chunk-C54XEN5T.cjs.map +1 -0
- package/dist/{chunk-GZPTWHP5.cjs → chunk-CDZVC32G.cjs} +10 -22
- package/dist/chunk-CDZVC32G.cjs.map +1 -0
- package/dist/{chunk-PUCY3UXN.js → chunk-CXLVI3SB.js} +3 -3
- package/dist/{chunk-PUCY3UXN.js.map → chunk-CXLVI3SB.js.map} +1 -1
- package/dist/{chunk-W3VYZXNS.js → chunk-D3N67Q4D.js} +3 -3
- package/dist/{chunk-W3VYZXNS.js.map → chunk-D3N67Q4D.js.map} +1 -1
- package/dist/{chunk-KYDRUFWT.cjs → chunk-D4YR56FV.cjs} +5 -5
- package/dist/{chunk-KYDRUFWT.cjs.map → chunk-D4YR56FV.cjs.map} +1 -1
- package/dist/{chunk-QYTYW74G.js → chunk-DI35D756.js} +5 -5
- package/dist/{chunk-QYTYW74G.js.map → chunk-DI35D756.js.map} +1 -1
- package/dist/{chunk-OPTBQSCV.cjs → chunk-DJM7DLCT.cjs} +3 -3
- package/dist/{chunk-OPTBQSCV.cjs.map → chunk-DJM7DLCT.cjs.map} +1 -1
- package/dist/{chunk-2Q7FDZAY.js → chunk-DQCYCEDR.js} +3 -3
- package/dist/{chunk-2Q7FDZAY.js.map → chunk-DQCYCEDR.js.map} +1 -1
- package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
- package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
- package/dist/{chunk-OQ7RUNOC.js → chunk-GFYGYME3.js} +3 -3
- package/dist/{chunk-OQ7RUNOC.js.map → chunk-GFYGYME3.js.map} +1 -1
- package/dist/{chunk-YBLIKTJK.js → chunk-GYCQ3FNL.js} +2 -2
- package/dist/chunk-GYCQ3FNL.js.map +1 -0
- package/dist/{chunk-6AALMYPS.cjs → chunk-HM23LXUP.cjs} +3 -3
- package/dist/{chunk-6AALMYPS.cjs.map → chunk-HM23LXUP.cjs.map} +1 -1
- package/dist/{chunk-WXYQ66KC.cjs → chunk-JK45LSIH.cjs} +5 -5
- package/dist/{chunk-WXYQ66KC.cjs.map → chunk-JK45LSIH.cjs.map} +1 -1
- package/dist/{chunk-UMIY4SQS.js → chunk-KLOSOT26.js} +11 -11
- package/dist/{chunk-UMIY4SQS.js.map → chunk-KLOSOT26.js.map} +1 -1
- package/dist/{chunk-SARREDFP.cjs → chunk-LC2KJSUS.cjs} +46 -46
- package/dist/{chunk-SARREDFP.cjs.map → chunk-LC2KJSUS.cjs.map} +1 -1
- package/dist/{chunk-ARDHLU73.cjs → chunk-LRD7BHAT.cjs} +10 -13
- package/dist/chunk-LRD7BHAT.cjs.map +1 -0
- package/dist/{chunk-R26BK7YL.cjs → chunk-OB5F4577.cjs} +4 -4
- package/dist/{chunk-R26BK7YL.cjs.map → chunk-OB5F4577.cjs.map} +1 -1
- package/dist/{chunk-AAFX64WD.cjs → chunk-OR4CO743.cjs} +3 -3
- package/dist/{chunk-AAFX64WD.cjs.map → chunk-OR4CO743.cjs.map} +1 -1
- package/dist/{chunk-HFGXA5CL.cjs → chunk-OUW6G4O2.cjs} +4 -4
- package/dist/{chunk-HFGXA5CL.cjs.map → chunk-OUW6G4O2.cjs.map} +1 -1
- package/dist/{chunk-4UMXQPNA.js → chunk-P5HOXWYL.js} +8 -20
- package/dist/chunk-P5HOXWYL.js.map +1 -0
- package/dist/{chunk-GDBDHOI4.js → chunk-P5ST47VY.js} +3 -3
- package/dist/{chunk-GDBDHOI4.js.map → chunk-P5ST47VY.js.map} +1 -1
- package/dist/{chunk-OGBXV326.cjs → chunk-S6BOINC4.cjs} +7 -7
- package/dist/{chunk-OGBXV326.cjs.map → chunk-S6BOINC4.cjs.map} +1 -1
- package/dist/{chunk-444XKG46.js → chunk-S7PSMMRG.js} +3 -3
- package/dist/{chunk-444XKG46.js.map → chunk-S7PSMMRG.js.map} +1 -1
- package/dist/{chunk-JKB7WT7L.cjs → chunk-SWQX6CTT.cjs} +2 -2
- package/dist/chunk-SWQX6CTT.cjs.map +1 -0
- package/dist/{chunk-ENDP7JER.js → chunk-VW2C2AZL.js} +3 -3
- package/dist/{chunk-ENDP7JER.js.map → chunk-VW2C2AZL.js.map} +1 -1
- package/dist/{chunk-TT6XV6WM.cjs → chunk-W27VK32R.cjs} +84 -84
- package/dist/{chunk-TT6XV6WM.cjs.map → chunk-W27VK32R.cjs.map} +1 -1
- package/dist/{chunk-PJJY6CYL.cjs → chunk-WV4IDVDQ.cjs} +11 -11
- package/dist/{chunk-PJJY6CYL.cjs.map → chunk-WV4IDVDQ.cjs.map} +1 -1
- package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
- package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
- package/dist/{chunk-Y3KA6X7B.js → chunk-ZCF2JJFA.js} +3 -3
- package/dist/{chunk-Y3KA6X7B.js.map → chunk-ZCF2JJFA.js.map} +1 -1
- package/dist/{chunk-QDEODGXE.cjs → chunk-ZV3BKLFY.cjs} +5 -5
- package/dist/{chunk-QDEODGXE.cjs.map → chunk-ZV3BKLFY.cjs.map} +1 -1
- package/dist/citations/index.cjs +11 -12
- package/dist/citations/index.js +2 -3
- package/dist/collaboration/index.cjs +51 -51
- package/dist/collaboration/index.js +3 -3
- package/dist/connect/docx.cjs +5 -7
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +4 -6
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +155 -161
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -1
- package/dist/connect/index.js +78 -85
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSettings.d.ts +17 -8
- package/dist/connection/ConnectionProvider.d.ts +0 -5
- package/dist/connection/mail/ConnectedMailComposer.d.ts +3 -2
- package/dist/connection/mail/ConnectedMailbox.d.ts +3 -2
- package/dist/connection/mail/MailComposerForm.d.ts +3 -2
- package/dist/connection/mail/index.d.ts +2 -2
- package/dist/connection/mail/mailbox.d.ts +4 -1
- package/dist/connection/mail/types.d.ts +8 -0
- package/dist/document-tools/index.cjs +1 -1
- package/dist/document-tools/index.js +1 -1
- package/dist/facts/index.cjs +4 -5
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +3 -4
- package/dist/facts/index.js.map +1 -1
- package/dist/files/index.cjs +4 -4
- package/dist/files/index.js +3 -3
- package/dist/home/index.cjs +19 -20
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +4 -5
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +679 -679
- package/dist/index.d.ts +1 -2
- package/dist/index.js +24 -24
- package/dist/provider/BlocksProvider.d.ts +4 -39
- package/dist/retrieval/index.cjs +4 -5
- package/dist/retrieval/index.js +2 -3
- package/dist/settings/index.cjs +47 -47
- package/dist/settings/index.js +5 -5
- package/dist/shell/index.cjs +47 -48
- package/dist/shell/index.js +3 -4
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +18 -19
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.js +10 -11
- package/dist/studio/index.js.map +1 -1
- package/dist/workflow-canvas/index.cjs +65 -65
- package/dist/workflow-canvas/index.js +13 -13
- package/dist/workspaces/index.cjs +3 -3
- package/dist/workspaces/index.js +2 -2
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/dist/chunk-4RLCRFZS.js.map +0 -1
- package/dist/chunk-4UMXQPNA.js.map +0 -1
- package/dist/chunk-ARDHLU73.cjs.map +0 -1
- package/dist/chunk-C4WSHRR6.cjs +0 -166
- package/dist/chunk-C4WSHRR6.cjs.map +0 -1
- package/dist/chunk-GZPTWHP5.cjs.map +0 -1
- package/dist/chunk-JKB7WT7L.cjs.map +0 -1
- package/dist/chunk-YBLIKTJK.js.map +0 -1
- package/dist/chunk-YNIBUKV5.js +0 -163
- package/dist/chunk-YNIBUKV5.js.map +0 -1
- package/dist/provider/dialogs.d.ts +0 -31
package/dist/files/index.cjs
CHANGED
|
@@ -8,17 +8,17 @@ var chunk2WLXQGWC_cjs = require('../chunk-2WLXQGWC.cjs');
|
|
|
8
8
|
var chunkVLCY46K6_cjs = require('../chunk-VLCY46K6.cjs');
|
|
9
9
|
var chunk3AFWGEDJ_cjs = require('../chunk-3AFWGEDJ.cjs');
|
|
10
10
|
var chunkDVUZTGVL_cjs = require('../chunk-DVUZTGVL.cjs');
|
|
11
|
+
var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
|
|
11
12
|
var chunkDETZZBG2_cjs = require('../chunk-DETZZBG2.cjs');
|
|
12
13
|
var chunkV4ISCZJ7_cjs = require('../chunk-V4ISCZJ7.cjs');
|
|
13
14
|
var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
|
|
14
15
|
var chunkC2CWWEHO_cjs = require('../chunk-C2CWWEHO.cjs');
|
|
15
|
-
var
|
|
16
|
+
var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
|
|
16
17
|
var chunk32HW2Q33_cjs = require('../chunk-32HW2Q33.cjs');
|
|
17
18
|
require('../chunk-FX3K6LNZ.cjs');
|
|
18
19
|
require('../chunk-PPCATBOY.cjs');
|
|
19
20
|
var chunkMHVNT4J3_cjs = require('../chunk-MHVNT4J3.cjs');
|
|
20
|
-
require('../chunk-
|
|
21
|
-
var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
|
|
21
|
+
require('../chunk-C54XEN5T.cjs');
|
|
22
22
|
var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
|
|
23
23
|
require('../chunk-DES3K4SD.cjs');
|
|
24
24
|
var classVarianceAuthority = require('class-variance-authority');
|
|
@@ -209,7 +209,7 @@ function TileLink({
|
|
|
209
209
|
onSelect
|
|
210
210
|
}) {
|
|
211
211
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
212
|
-
|
|
212
|
+
chunkOB5F4577_cjs.ActionLink,
|
|
213
213
|
{
|
|
214
214
|
href,
|
|
215
215
|
onSelect,
|
package/dist/files/index.js
CHANGED
|
@@ -7,19 +7,19 @@ import { ShareControl } from '../chunk-K4BGOPGG.js';
|
|
|
7
7
|
import { CellHoverIcon } from '../chunk-RFXJYIDV.js';
|
|
8
8
|
export { CellHoverIcon, HoverIconCell } from '../chunk-RFXJYIDV.js';
|
|
9
9
|
import { ToneBadge } from '../chunk-5LXQPP2K.js';
|
|
10
|
+
import { ActionLink } from '../chunk-S7PSMMRG.js';
|
|
10
11
|
export { UploadDropzone } from '../chunk-EVUEIBNU.js';
|
|
11
12
|
import { SelectionBar, SelectionBarAction } from '../chunk-NUNKSZKU.js';
|
|
12
13
|
export { DEFAULT_SELECTION_BAR_LABELS, SelectionBar, SelectionBarAction } from '../chunk-NUNKSZKU.js';
|
|
13
14
|
import { FilterInput } from '../chunk-YU2KUMGE.js';
|
|
14
15
|
import { GridView } from '../chunk-N5YEF3LC.js';
|
|
15
16
|
export { GridView } from '../chunk-N5YEF3LC.js';
|
|
16
|
-
import {
|
|
17
|
+
import { ModalSection, ModalSectionTitle, ModalHeader } from '../chunk-TX2ZICS7.js';
|
|
17
18
|
import { TONE_SURFACE } from '../chunk-AUS3KBHJ.js';
|
|
18
19
|
import '../chunk-SLSBJRWW.js';
|
|
19
20
|
import '../chunk-NPLYHR2E.js';
|
|
20
21
|
import { testIdOr, prefixedTestId } from '../chunk-7F6CBP3Z.js';
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import { ModalSection, ModalSectionTitle, ModalHeader } from '../chunk-TX2ZICS7.js';
|
|
22
|
+
import '../chunk-76JDDMSP.js';
|
|
23
23
|
import { formatCount } from '../chunk-OXF2IFXG.js';
|
|
24
24
|
import '../chunk-VUNV25KB.js';
|
|
25
25
|
import { cva } from 'class-variance-authority';
|
package/dist/home/index.cjs
CHANGED
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
var chunkXZIYRKLW_cjs = require('../chunk-XZIYRKLW.cjs');
|
|
5
5
|
var chunkPCB2BPN3_cjs = require('../chunk-PCB2BPN3.cjs');
|
|
6
|
-
var
|
|
7
|
-
var chunkR26BK7YL_cjs = require('../chunk-R26BK7YL.cjs');
|
|
6
|
+
var chunkZV3BKLFY_cjs = require('../chunk-ZV3BKLFY.cjs');
|
|
8
7
|
var chunk7D737FLE_cjs = require('../chunk-7D737FLE.cjs');
|
|
8
|
+
var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
|
|
9
9
|
require('../chunk-PPCATBOY.cjs');
|
|
10
10
|
var chunkMHVNT4J3_cjs = require('../chunk-MHVNT4J3.cjs');
|
|
11
|
-
require('../chunk-
|
|
12
|
-
require('../chunk-ULWRNGGE.cjs');
|
|
11
|
+
require('../chunk-C54XEN5T.cjs');
|
|
13
12
|
require('../chunk-KDG6FER6.cjs');
|
|
14
13
|
require('../chunk-DES3K4SD.cjs');
|
|
15
14
|
var lucideReact = require('lucide-react');
|
|
@@ -115,7 +114,7 @@ function RecentList({
|
|
|
115
114
|
"data-testid": testId,
|
|
116
115
|
children: [
|
|
117
116
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
118
|
-
|
|
117
|
+
chunkZV3BKLFY_cjs.SectionHeader,
|
|
119
118
|
{
|
|
120
119
|
icon,
|
|
121
120
|
title,
|
|
@@ -127,7 +126,7 @@ function RecentList({
|
|
|
127
126
|
}
|
|
128
127
|
),
|
|
129
128
|
rows.length === 0 ? empty?.onSelect ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
130
|
-
|
|
129
|
+
chunkZV3BKLFY_cjs.EmptyStrip,
|
|
131
130
|
{
|
|
132
131
|
icon: empty.icon,
|
|
133
132
|
label: empty.label,
|
|
@@ -144,7 +143,7 @@ function RecentList({
|
|
|
144
143
|
"data-slot": "recent-row",
|
|
145
144
|
children: [
|
|
146
145
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
147
|
-
|
|
146
|
+
chunkOB5F4577_cjs.ActionLink,
|
|
148
147
|
{
|
|
149
148
|
href: row.href,
|
|
150
149
|
onSelect: row.onSelect,
|
|
@@ -197,7 +196,7 @@ function FactsStrip({
|
|
|
197
196
|
"data-testid": testId,
|
|
198
197
|
children: [
|
|
199
198
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
-
|
|
199
|
+
chunkZV3BKLFY_cjs.SectionHeader,
|
|
201
200
|
{
|
|
202
201
|
icon,
|
|
203
202
|
title,
|
|
@@ -208,7 +207,7 @@ function FactsStrip({
|
|
|
208
207
|
}
|
|
209
208
|
),
|
|
210
209
|
filled.length === 0 ? empty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
211
|
-
|
|
210
|
+
chunkZV3BKLFY_cjs.EmptyStrip,
|
|
212
211
|
{
|
|
213
212
|
icon: empty.icon,
|
|
214
213
|
label: empty.label,
|
|
@@ -416,7 +415,7 @@ function ActionMenuDialog({
|
|
|
416
415
|
className: "sm:max-w-lg",
|
|
417
416
|
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "action-menu-dialog" }),
|
|
418
417
|
children: [
|
|
419
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
418
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkZV3BKLFY_cjs.QuickActionDialogHeader, { icon, title, description }),
|
|
420
419
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3 pt-1", role: "menu", "aria-label": title, children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
421
420
|
"button",
|
|
422
421
|
{
|
|
@@ -798,43 +797,43 @@ Object.defineProperty(exports, "KeyValueRow", {
|
|
|
798
797
|
});
|
|
799
798
|
Object.defineProperty(exports, "AddFilesFirst", {
|
|
800
799
|
enumerable: true,
|
|
801
|
-
get: function () { return
|
|
800
|
+
get: function () { return chunkZV3BKLFY_cjs.AddFilesFirst; }
|
|
802
801
|
});
|
|
803
802
|
Object.defineProperty(exports, "DEFAULT_ADD_FILES_FIRST_LABELS", {
|
|
804
803
|
enumerable: true,
|
|
805
|
-
get: function () { return
|
|
804
|
+
get: function () { return chunkZV3BKLFY_cjs.DEFAULT_ADD_FILES_FIRST_LABELS; }
|
|
806
805
|
});
|
|
807
806
|
Object.defineProperty(exports, "DEFAULT_SCOPE_PICKER_LABELS", {
|
|
808
807
|
enumerable: true,
|
|
809
|
-
get: function () { return
|
|
808
|
+
get: function () { return chunkZV3BKLFY_cjs.DEFAULT_SCOPE_PICKER_LABELS; }
|
|
810
809
|
});
|
|
811
810
|
Object.defineProperty(exports, "EmptyStrip", {
|
|
812
811
|
enumerable: true,
|
|
813
|
-
get: function () { return
|
|
812
|
+
get: function () { return chunkZV3BKLFY_cjs.EmptyStrip; }
|
|
814
813
|
});
|
|
815
814
|
Object.defineProperty(exports, "QuickActionDialogHeader", {
|
|
816
815
|
enumerable: true,
|
|
817
|
-
get: function () { return
|
|
816
|
+
get: function () { return chunkZV3BKLFY_cjs.QuickActionDialogHeader; }
|
|
818
817
|
});
|
|
819
818
|
Object.defineProperty(exports, "ScopePicker", {
|
|
820
819
|
enumerable: true,
|
|
821
|
-
get: function () { return
|
|
820
|
+
get: function () { return chunkZV3BKLFY_cjs.ScopePicker; }
|
|
822
821
|
});
|
|
823
822
|
Object.defineProperty(exports, "SectionHeader", {
|
|
824
823
|
enumerable: true,
|
|
825
|
-
get: function () { return
|
|
824
|
+
get: function () { return chunkZV3BKLFY_cjs.SectionHeader; }
|
|
826
825
|
});
|
|
827
826
|
Object.defineProperty(exports, "SectionLabel", {
|
|
828
827
|
enumerable: true,
|
|
829
|
-
get: function () { return
|
|
828
|
+
get: function () { return chunkZV3BKLFY_cjs.SectionLabel; }
|
|
830
829
|
});
|
|
831
830
|
Object.defineProperty(exports, "StartTiles", {
|
|
832
831
|
enumerable: true,
|
|
833
|
-
get: function () { return
|
|
832
|
+
get: function () { return chunkZV3BKLFY_cjs.StartTiles; }
|
|
834
833
|
});
|
|
835
834
|
Object.defineProperty(exports, "useScopeSelection", {
|
|
836
835
|
enumerable: true,
|
|
837
|
-
get: function () { return
|
|
836
|
+
get: function () { return chunkZV3BKLFY_cjs.useScopeSelection; }
|
|
838
837
|
});
|
|
839
838
|
Object.defineProperty(exports, "FoldSection", {
|
|
840
839
|
enumerable: true,
|
package/dist/home/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/home/CreateTile.tsx","../../src/home/Greeting.tsx","../../src/home/RecentList.tsx","../../src/home/FactsStrip.tsx","../../src/home/GettingStartedStrip.tsx","../../src/home/ActionMenuDialog.tsx","../../src/home/CardHeaderBar.tsx","../../src/home/DashboardParts.tsx","../../src/home/ProjectBandParts.tsx","../../src/home/HomeLayout.tsx"],"names":["jsxs","cn","jsx","Plus","SectionHeader","EmptyStrip","Fragment","ActionLink","testIdOr","prefixedTestId","PartyPopper","X","Dialog","DialogContent","QuickActionDialogHeader","Button","Tooltip","TooltipTrigger","TooltipContent","Trash2","Callout"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ReactNode } from 'react'\nimport { Plus } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface CreateTileProps {\n /** Visible label, e.g. \"New workspace\". */\n label: string\n /** Accessible name; defaults to `label`. */\n ariaLabel?: string\n onSelect?: () => void\n /** One line explaining what is being created (first-run empty state). */\n help?: ReactNode\n /** When set, the tile is disabled and shows this explanation instead of `help`. */\n disabledReason?: string\n className?: string\n testId?: string\n}\n\n/**\n * The \"create\" tile. Sits in the grid beside the workspace tiles at the same\n * height, in the same tonal family: no dashed outline, no shadow.\n */\nexport function CreateTile({\n label,\n ariaLabel,\n onSelect,\n help,\n disabledReason,\n className,\n testId,\n}: CreateTileProps) {\n const disabled = !!disabledReason\n const select = disabled ? undefined : onSelect\n return (\n <div\n className={cn(\n 'flex min-h-40 w-full flex-col items-center justify-center gap-1 rounded-lg p-4 text-muted-foreground border border-border bg-card shadow-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled\n ? 'cursor-not-allowed opacity-60'\n : 'cursor-pointer hover:border-ring/50 hover:bg-accent/40 hover:text-foreground',\n className\n )}\n onClick={select}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n select?.()\n }\n }}\n role=\"button\"\n tabIndex={0}\n aria-disabled={disabled || undefined}\n title={disabledReason}\n aria-label={ariaLabel ?? label}\n data-slot=\"create-tile\"\n data-testid={testId}\n >\n <span className=\"inline-flex flex-col items-center gap-2 text-sm font-medium\">\n <Plus className=\"size-6\" aria-hidden=\"true\" />\n {label}\n </span>\n {(disabledReason ?? help) && (\n <p className=\"max-w-64 px-4 text-center text-xs leading-snug text-muted-foreground\">\n {disabledReason ?? help}\n </p>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface GreetingProps {\n /** Small line above the title, e.g. today's date. */\n eyebrow?: string\n title: string\n description?: string\n /** Trailing controls (view toggle, primary action). */\n actions?: ReactNode\n className?: string\n testId?: string\n eyebrowTestId?: string\n titleTestId?: string\n}\n\n/**\n * The home page header: eyebrow, greeting, one muted line and trailing\n * actions, centred in the same column as the content below it.\n */\nexport function Greeting({\n eyebrow,\n title,\n description,\n actions,\n className,\n testId,\n eyebrowTestId,\n titleTestId,\n}: GreetingProps) {\n return (\n <div className=\"bg-background\" data-slot=\"greeting\" data-testid={testId}>\n <div\n className={cn(\n 'mx-auto flex max-w-6xl flex-wrap items-end justify-between gap-x-4 gap-y-3 px-4 pb-4 pt-8 sm:px-8',\n className\n )}\n >\n <div className=\"min-w-0\">\n {eyebrow && (\n <p className=\"text-xs text-muted-foreground\" data-testid={eyebrowTestId}>\n {eyebrow}\n </p>\n )}\n <h1\n className=\"mt-1 break-words text-xl font-semibold tracking-tight text-foreground sm:text-2xl\"\n data-testid={titleTestId}\n >\n {title}\n </h1>\n {description && <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>}\n </div>\n {actions}\n </div>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { ActionLink } from '../components/ActionLink'\nimport { EmptyStrip, SectionHeader } from './sections'\n\n/** One listed item. Source-agnostic: a chat, a file. */\nexport interface RecentRow {\n id: string\n /** Bare entity mark (an icon carries its own identity; no tinted box). */\n leading?: ReactNode\n title: string\n subtitle?: string\n /** Pinned right on the title line, like a message time. Hidden when `trailing` is set. */\n time?: string\n onSelect?: () => void\n /** Real link target; `onSelect` still fires on a plain click (see `ActionLink`). */\n href?: string\n /** A control rendered beside the row, outside its button. */\n trailing?: ReactNode\n}\n\nexport interface RecentListEmpty {\n icon?: LucideIcon\n label: ReactNode\n description?: ReactNode\n /** Makes the empty strip an invitation button. */\n onSelect?: () => void\n}\n\nexport interface RecentListProps {\n icon?: LucideIcon\n title: string\n count?: number\n /** Opens the full list; makes the header title a button. */\n onOpen?: () => void\n /** Real link target of the header title (with `onOpen`, plain clicks call `onOpen`). */\n openHref?: string\n /** The section's one quiet header action. */\n action?: ReactNode\n rows: RecentRow[]\n /** Names the right-hand column (\"Added\", \"Messaged\"). */\n caption?: string\n /** What an empty section says. A plain muted line unless `onSelect` is set. */\n empty?: RecentListEmpty\n className?: string\n /** Root test id; derived ids: `-open`, `-caption`, `-row`, `-empty-action`. */\n testId?: string\n}\n\n/**\n * A titled list of recent items (files, chats): plain rows under a quiet\n * header. An empty list is one tonal strip that invites the first item.\n */\nexport function RecentList({\n icon,\n title,\n count,\n onOpen,\n openHref,\n action,\n rows,\n caption,\n empty,\n className,\n testId,\n}: RecentListProps) {\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-1', className)}\n data-slot=\"recent-list\"\n data-testid={testId}\n >\n <SectionHeader\n icon={icon}\n title={title}\n count={count}\n onOpen={onOpen}\n openHref={openHref}\n openTestId={testId && `${testId}-open`}\n action={action}\n />\n {rows.length === 0 ? (\n empty?.onSelect ? (\n <EmptyStrip\n icon={empty.icon}\n label={empty.label}\n description={empty.description}\n onSelect={empty.onSelect}\n testId={testId && `${testId}-empty-action`}\n />\n ) : (\n <p className=\"px-1 py-3 text-sm text-muted-foreground\">\n {empty?.description ?? empty?.label}\n </p>\n )\n ) : (\n <>\n {caption && (\n <p className=\"sr-only\" data-testid={testId && `${testId}-caption`}>\n {caption}\n </p>\n )}\n <ul>\n {rows.map((row) => (\n <li\n key={row.id}\n className=\"relative flex items-center rounded-md transition-colors [&:hover]:bg-muted has-[:focus-visible]:bg-muted\"\n data-slot=\"recent-row\"\n >\n <ActionLink\n href={row.href}\n onSelect={row.onSelect}\n title={row.title}\n className={cn(\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md px-3 py-2 text-left focus-visible:outline-none',\n row.onSelect && 'cursor-pointer',\n 'pointer-coarse:min-h-11'\n )}\n data-testid={testId && `${testId}-row`}\n >\n {row.leading}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium text-foreground\">\n {row.title}\n </span>\n {!row.trailing && row.time && (\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {row.time}\n </span>\n )}\n </div>\n {row.subtitle && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {row.subtitle}\n </p>\n )}\n </div>\n </ActionLink>\n {row.trailing ? <div className=\"shrink-0 pr-3\">{row.trailing}</div> : null}\n </li>\n ))}\n </ul>\n </>\n )}\n </section>\n )\n}\n","import type { ReactNode } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { EmptyStrip, SectionHeader } from './sections'\n\nexport interface FactsStripRow {\n id: string\n leading?: ReactNode\n title: string\n /** Right-aligned stamp: a date or a time. */\n time?: string\n onSelect?: () => void\n}\n\nexport interface FactsStripGroup {\n /** Captions the group (\"Upcoming\", \"Created\"); an empty group is not rendered. */\n caption: string\n rows: FactsStripRow[]\n /** Test id of every row in this group. Defaults to `${testId}-row`. */\n rowTestId?: string\n}\n\nexport interface FactsStripEmpty {\n icon: LucideIcon\n label: ReactNode\n description?: ReactNode\n onSelect?: () => void\n testId?: string\n}\n\nexport interface FactsStripProps {\n icon?: LucideIcon\n title: string\n count?: number\n onOpen?: () => void\n action?: ReactNode\n groups: FactsStripGroup[]\n empty?: FactsStripEmpty\n className?: string\n /** Root test id; the title button gets `${testId}-open`. */\n testId?: string\n}\n\n/**\n * A glanceable band of captioned groups (facts: upcoming, recently created).\n * Not a third list page: callers hand it a few rows per group.\n */\nexport function FactsStrip({\n icon,\n title,\n count,\n onOpen,\n action,\n groups,\n empty,\n className,\n testId,\n}: FactsStripProps) {\n const filled = groups.filter((g) => g.rows.length > 0)\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-1', className)}\n data-slot=\"facts-strip\"\n data-testid={testId}\n >\n <SectionHeader\n icon={icon}\n title={title}\n count={count}\n onOpen={onOpen}\n openTestId={testId && `${testId}-open`}\n action={action}\n />\n {filled.length === 0\n ? empty && (\n <EmptyStrip\n icon={empty.icon}\n label={empty.label}\n description={empty.description}\n onSelect={empty.onSelect}\n testId={empty.testId}\n />\n )\n : filled.map((group) => (\n <div key={group.caption} className=\"min-w-0\">\n <p className=\"px-3 pb-1 pt-1 text-right text-xs text-muted-foreground\">\n {group.caption}\n </p>\n <ul>\n {group.rows.map((row) => (\n <li key={row.id}>\n <button\n type=\"button\"\n onClick={row.onSelect}\n title={row.title}\n className=\"flex w-full min-w-0 items-center gap-3 rounded-md px-3 py-2 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&:hover]:bg-muted pointer-coarse:min-h-11\"\n data-testid={group.rowTestId ?? (testId && `${testId}-row`)}\n >\n {row.leading}\n <span className=\"min-w-0 flex-1 truncate text-sm text-foreground\">\n {row.title}\n </span>\n {row.time && (\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {row.time}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </section>\n )\n}\n","import type { ReactNode } from 'react'\nimport { PartyPopper, X } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\n\n/** Fixed strings of the strip. */\nexport interface GettingStartedStripLabels {\n /** The close banner's headline. */\n allSet: (firstName?: string) => string\n /** The close banner's second line. */\n finished: (stepCount: number) => string\n done: string\n welcome: (firstName: string) => string\n getStarted: string\n replayDone: string\n almostThere: string\n dismiss: string\n}\n\nexport const DEFAULT_GETTING_STARTED_STRIP_LABELS: GettingStartedStripLabels = {\n allSet: (firstName) => `You’re all set${firstName ? `, ${firstName}` : ''}!`,\n finished: (stepCount) => `You’ve finished the ${stepCount} getting-started steps — explore away.`,\n done: 'Done',\n welcome: (firstName) => `Welcome, ${firstName}`,\n getStarted: 'Get started with ARBI',\n replayDone: 'Nicely done — that’s the tour again',\n almostThere: 'Almost there',\n dismiss: 'Dismiss getting started',\n}\n\nexport interface JourneyStep {\n id: string\n title: string\n /** The instruction shown beside the CURRENT step. */\n description: string\n done: boolean\n}\n\nexport interface GettingStartedStripProps {\n /** The core steps, in order. Numbers are their position. */\n steps: JourneyStep[]\n /** The first step not yet done; undefined when all are. */\n currentStepId?: string\n firstName?: string\n /** Replaying the tour: the finished banner is skipped and copy says so. */\n isReplay?: boolean\n /** Every core step is done (and this is not a replay): show the close banner. */\n isComplete?: boolean\n onDismiss: () => void\n /** Brand mark before the greeting. */\n logo?: ReactNode\n labels?: Partial<GettingStartedStripLabels>\n className?: string\n /** Root test id (default `getting-started`). */\n testId?: string\n /** Sub-element ids; defaults are the current ids. The per-step id is `<stepper>-<step id>`. */\n testIds?: Partial<Record<'stepper' | 'complete' | 'done' | 'dismiss', string>>\n}\n\n// Full literal class strings per state so Tailwind's scanner sees every class.\n// Navy = progress/selection; cyan is reserved for \"this is ARBI/AI\".\nfunction circleClasses(done: boolean, isCurrent: boolean): string {\n if (done) return 'border-primary bg-primary text-primary-foreground'\n if (isCurrent) return 'border-primary bg-accent text-accent-foreground'\n return 'border-border text-muted-foreground'\n}\n\n/**\n * The numbered journey. A step's number never turns into a check: a filled\n * circle plus a struck-through title says \"done\", so status and identity both\n * stay legible without a second glyph. The current step also carries its\n * instruction, the one thing this row tells you to go do.\n */\nfunction Journey({\n steps,\n currentStepId,\n testId,\n}: {\n steps: JourneyStep[]\n currentStepId?: string\n testId?: string\n}) {\n return (\n <ol\n className=\"hidden min-w-0 shrink items-center overflow-x-auto sm:flex\"\n data-slot=\"journey\"\n data-testid={testIdOr(testId, { testId: 'getting-started-stepper' })}\n >\n {steps.map((step, i) => {\n const isCurrent = step.id === currentStepId\n return (\n <li\n key={step.id}\n className=\"flex shrink-0 items-center\"\n data-testid={prefixedTestId(testId, step.id, {\n testId: `getting-started-stepper-${step.id}`,\n })}\n data-done={step.done}\n data-current={isCurrent}\n >\n {i > 0 && (\n <span\n className={cn(\n 'h-0 w-3 shrink-0 border-t-2 border-solid transition-colors duration-500',\n steps[i - 1].done ? 'border-primary' : 'border-border'\n )}\n />\n )}\n <span className=\"flex items-center gap-1.5\">\n <span\n className={cn(\n 'flex size-6 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold tabular-nums transition-colors',\n circleClasses(step.done, isCurrent)\n )}\n >\n {i + 1}\n </span>\n <span\n className={cn(\n 'text-sm font-medium',\n step.done\n ? 'text-muted-foreground line-through'\n : isCurrent\n ? 'text-foreground'\n : 'text-muted-foreground'\n )}\n >\n {step.title}\n </span>\n {isCurrent && !step.done && (\n <span className=\"text-muted-foreground\">— {step.description}</span>\n )}\n </span>\n </li>\n )\n })}\n </ol>\n )\n}\n\n/**\n * First-run activation row: greeting, the numbered journey and the current\n * step's instruction, all in ONE bare row (no container, no border), so it can\n * live in a topbar slot. A guide, not a shortcut: it says WHERE to go and the\n * host detects completion itself.\n */\nexport function GettingStartedStrip({\n steps,\n currentStepId,\n firstName,\n isReplay = false,\n isComplete = false,\n onDismiss,\n logo,\n labels,\n className,\n testId,\n testIds,\n}: GettingStartedStripProps) {\n const l = { ...DEFAULT_GETTING_STARTED_STRIP_LABELS, ...labels }\n if (isComplete && !isReplay) {\n return (\n <div\n className={cn('flex min-w-0 items-center gap-3', className)}\n data-slot=\"getting-started-strip\"\n data-testid={testIdOr(testId, { testId: 'getting-started' })}\n >\n <PartyPopper className=\"size-5 shrink-0 text-primary\" aria-hidden=\"true\" />\n <p\n className=\"min-w-0 shrink truncate text-base\"\n data-testid={testIdOr(testIds?.complete, { testId: 'getting-started-complete' })}\n >\n <span className=\"font-semibold text-foreground\">{l.allSet(firstName)}</span>\n <span className=\"mx-1.5 text-muted-foreground\">·</span>\n <span className=\"text-muted-foreground\">{l.finished(steps.length)}</span>\n </p>\n <Journey steps={steps} currentStepId={currentStepId} testId={testIds?.stepper} />\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-md bg-muted px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11\"\n data-testid={testIdOr(testIds?.done, { testId: 'getting-started-done' })}\n >\n {l.done}\n </button>\n </div>\n )\n }\n\n const greeting = firstName ? l.welcome(firstName) : l.getStarted\n\n return (\n <div\n className={cn('flex min-w-0 items-center gap-3', className)}\n data-slot=\"getting-started-strip\"\n data-testid={testIdOr(testId, { testId: 'getting-started' })}\n >\n {logo}\n <span className=\"shrink-0 text-base font-semibold text-foreground\">{greeting}</span>\n\n <Journey steps={steps} currentStepId={currentStepId} testId={testIds?.stepper} />\n\n {/* Reachable two ways: everything is done but not yet acknowledged (a\n brief instant before the banner takes over), or during a replay you\n have redone all the steps again. */}\n {!currentStepId && (\n <span className=\"min-w-0 flex-1 truncate text-sm text-muted-foreground\">\n {isReplay ? l.replayDone : l.almostThere}\n </span>\n )}\n <div className=\"flex-1\" />\n\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:p-3\"\n aria-label={l.dismiss}\n data-testid={testIdOr(testIds?.dismiss, { testId: 'getting-started-dismiss' })}\n >\n <X className=\"size-4\" />\n </button>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Dialog, DialogContent, cn } from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\nimport { QuickActionDialogHeader } from './QuickActionDialogHeader'\n\nexport interface ActionMenuItem {\n id: string\n label: string\n description?: string\n icon?: ReactNode\n}\n\nexport interface ActionMenuDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n /** Header mark, sized by the caller at `size-5`. */\n icon?: ReactNode\n title: string\n description: string\n items: ActionMenuItem[]\n /** A choice was made; the host performs it (the dialog does not close itself). */\n onPick: (id: string) => void\n /** Dialog id; items are `<prefix>-<item id>` (default `action-menu-item-<id>`). */\n testId?: string\n itemTestId?: string\n}\n\n/**\n * A plain menu of one-click actions in a dialog: no form, no schema, nothing generative. Use it\n * for \"create new\" style choices; anything that asks questions belongs to a workflow or operation.\n */\nexport function ActionMenuDialog({\n open,\n onOpenChange,\n icon,\n title,\n description,\n items,\n onPick,\n testId,\n itemTestId,\n}: ActionMenuDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n presentation=\"sheet\"\n className=\"sm:max-w-lg\"\n data-testid={testIdOr(testId, { testId: 'action-menu-dialog' })}\n >\n <QuickActionDialogHeader icon={icon} title={title} description={description} />\n <div className=\"grid grid-cols-2 gap-3 pt-1\" role=\"menu\" aria-label={title}>\n {items.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n role=\"menuitem\"\n onClick={() => onPick(item.id)}\n data-testid={prefixedTestId(itemTestId, item.id, {\n testId: `action-menu-item-${item.id}`,\n })}\n className={cn(\n 'flex min-h-32 flex-col items-center justify-center gap-2 rounded-lg border border-border bg-card p-3 text-center transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&:hover]:border-primary [&:hover]:bg-muted'\n )}\n >\n {item.icon && <span className=\"text-muted-foreground\">{item.icon}</span>}\n <span className=\"text-sm font-medium text-foreground\">{item.label}</span>\n {item.description && (\n <span className=\"text-xs text-muted-foreground\">{item.description}</span>\n )}\n </button>\n ))}\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n","import type { MouseEvent, ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\nexport interface CardHeaderBarAction {\n icon: ReactNode\n onClick: (e: MouseEvent) => void\n ariaLabel?: string\n}\n\nexport interface CardHeaderBarProps {\n icon: ReactNode\n title: string\n subtitle?: string\n /** Filled variant only: background class (default: the primary token). */\n bgColor?: string\n /** Rendered under the title. */\n badge?: ReactNode\n /** Wrap the title in a pill. */\n titleBadge?: boolean\n titleBadgeColor?: string\n actionButton?: CardHeaderBarAction\n /**\n * `filled` (default): solid fill with on-primary text.\n * `plain`: tonal fill, foreground text and an optional coloured bottom\n * divider (`accentClass`), so the header reads as part of the card.\n */\n variant?: 'filled' | 'plain'\n /** Plain variant only: border colour class for the bottom divider. */\n accentClass?: string\n /** Inline element right after the title text. */\n titleTrailing?: ReactNode\n className?: string\n /** Root test id (default `card-header`). */\n testId?: string\n /** Sub-element ids; defaults are the current ids. */\n testIds?: Partial<Record<'title' | 'subtitle' | 'actionButton', string>>\n}\n\n/**\n * Header bar for card-like tiles: icon, title, optional subtitle and one\n * action button (44px on touch). Named `CardHeaderBar` to stay clear of the\n * kit's structural `CardHeader`.\n */\nexport function CardHeaderBar({\n icon,\n title,\n subtitle,\n bgColor = 'bg-primary',\n badge,\n titleBadge = false,\n titleBadgeColor,\n actionButton,\n variant = 'filled',\n accentClass,\n titleTrailing,\n className,\n testId,\n testIds,\n}: CardHeaderBarProps) {\n const plain = variant === 'plain'\n const titleTestId = testIdOr(testIds?.title, { testId: 'card-header-title' })\n const containerBg = plain\n ? cn('border border-border bg-card shadow-xs', accentClass && ['border-b', accentClass])\n : bgColor\n const titleColor = plain ? 'text-foreground' : 'text-primary-foreground'\n const subtitleColor = plain ? 'text-muted-foreground' : 'text-primary-foreground opacity-80'\n const iconColor = plain ? 'text-foreground' : 'text-primary-foreground'\n // No subtitle: a single title line, so the header stays compact.\n const heightClass = subtitle ? 'h-14' : 'h-12'\n\n return (\n <div\n className={cn('relative w-full', heightClass, containerBg, className)}\n data-slot=\"card-header-bar\"\n data-testid={testIdOr(testId, { testId: 'card-header' })}\n >\n <div\n className={cn(\n 'absolute left-4 top-1/2 flex -translate-y-1/2 items-center gap-2',\n actionButton ? 'right-16' : 'right-4'\n )}\n >\n <div className={cn('-ml-1 flex shrink-0 items-center [&>svg]:size-8', iconColor)}>\n {icon}\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col justify-center\">\n {titleBadge ? (\n <div\n className={cn(\n 'inline-flex items-center self-start rounded-md border px-2 py-0.5',\n plain ? 'border-transparent bg-background' : 'border-primary-foreground/30'\n )}\n style={titleBadgeColor ? { backgroundColor: titleBadgeColor } : undefined}\n >\n <div\n className={cn(\n 'truncate text-base font-semibold capitalize leading-none',\n titleColor\n )}\n data-testid={titleTestId}\n title={title}\n >\n {title}\n </div>\n </div>\n ) : (\n <div className=\"flex min-w-0 items-center gap-1.5\">\n <span\n className={cn(\n 'truncate text-base font-semibold capitalize leading-none',\n titleColor\n )}\n data-testid={titleTestId}\n title={title}\n >\n {title}\n </span>\n {titleTrailing && (\n <span className=\"flex shrink-0 items-center gap-1\">{titleTrailing}</span>\n )}\n </div>\n )}\n {badge && <div className=\"shrink-0\">{badge}</div>}\n {subtitle && (\n <div\n className={cn('truncate text-sm', subtitleColor)}\n data-testid={testIdOr(testIds?.subtitle, { testId: 'card-header-subtitle' })}\n title={subtitle}\n >\n <span className=\"opacity-60\"># </span>\n {subtitle}\n </div>\n )}\n </div>\n </div>\n {actionButton && (\n <div className={cn('absolute top-1/2 -translate-y-1/2', plain ? 'right-2.5' : 'right-4')}>\n <button\n type=\"button\"\n className={cn(\n 'flex cursor-pointer items-center justify-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:size-11',\n plain ? 'p-1.5 hover:bg-foreground/5' : 'size-8 bg-card hover:bg-card/90'\n )}\n onClick={actionButton.onClick}\n aria-label={actionButton.ariaLabel}\n data-testid={testIdOr(testIds?.actionButton, { testId: 'card-header-action-button' })}\n >\n <div className={cn('[&>svg]:size-5', !plain && 'text-foreground')}>\n {actionButton.icon}\n </div>\n </button>\n </div>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Button, cn } from '@arbidocs/react/ui'\n\n/** A section's quiet header action: ghost, small, still 44px on touch. */\nexport const DASHBOARD_QUIET_ACTION_CLASS =\n 'h-8 gap-1.5 px-2 text-sm bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground pointer-coarse:h-11'\n\n/** Column of the workspace dashboard's bands. A container, so children can use `@2xl:` queries. */\nexport function DashboardRoot({\n testId,\n className,\n children,\n}: {\n testId?: string\n className?: string\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"dashboard\"\n data-testid={testId}\n className={cn('flex flex-col gap-6', className)}\n >\n {children}\n </div>\n )\n}\n\n/** A dashboard band: `start` is the tiles under the identity bar, `recent` the lists with an eyebrow. */\nexport function DashboardBand({\n kind,\n children,\n}: {\n kind: 'start' | 'recent'\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"dashboard-band\"\n data-kind={kind}\n className={kind === 'start' ? 'mt-2' : 'mt-4 flex flex-col gap-3'}\n >\n {children}\n </div>\n )\n}\n\n/** Two equal columns from the `@2xl` container width, one below it. */\nexport function DashboardColumns({ children }: { children: ReactNode }) {\n return (\n <div data-slot=\"dashboard-columns\" className=\"grid gap-8 @2xl:grid-cols-2\">\n {children}\n </div>\n )\n}\n\n/** A fact row's mark: a quiet dot. */\nexport function FactMark() {\n return (\n <span\n data-slot=\"fact-mark\"\n className=\"mx-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/40\"\n aria-hidden\n />\n )\n}\n\nexport interface DashboardActionProps {\n /** `primary` is the page's one filled action; `quiet` the ghost header actions. */\n emphasis: 'primary' | 'quiet'\n icon: ReactNode\n label: string\n onClick: () => void\n testId?: string\n}\n\n/** Header action of a dashboard section (\"New chat\", \"New fact\"). */\nexport function DashboardAction({ emphasis, icon, label, onClick, testId }: DashboardActionProps) {\n return (\n <Button\n variant={emphasis === 'primary' ? 'default' : 'ghost'}\n size=\"sm\"\n className={\n emphasis === 'primary'\n ? 'h-8 gap-1.5 px-3 text-sm pointer-coarse:h-11'\n : DASHBOARD_QUIET_ACTION_CLASS\n }\n onClick={onClick}\n data-testid={testId}\n >\n {icon}\n {label}\n </Button>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Trash2 } from 'lucide-react'\nimport { Button, cn, Tooltip, TooltipContent, TooltipTrigger } from '@arbidocs/react/ui'\n\n/** Name + count text of a band that has no project to open (\"Common\", own workspaces). */\nexport function PlainBandTitle({\n title,\n count,\n hint,\n}: {\n title: string\n count: number\n /** Muted explanation after the count, e.g. \"Shared with everyone\". */\n hint?: string\n}) {\n return (\n <span className=\"flex items-center gap-2\" data-slot=\"band-title\">\n <span className=\"truncate text-sm font-semibold text-foreground\">{title}</span>\n <span className=\"text-sm tabular-nums text-muted-foreground\">{count}</span>\n {hint && <span className=\"text-sm text-muted-foreground\">{hint}</span>}\n </span>\n )\n}\n\nexport interface ProjectBandTitleProps {\n name: string\n count: number\n nameTestId: string\n /** Full plan / usage breakdown shown as a tooltip on the name. */\n breakdown?: ReactNode\n /** Plan badge and usage readout, right after the count. */\n readout?: ReactNode\n}\n\n/** Title of a project band: name (with breakdown tooltip), count and the plan / usage readout. */\nexport function ProjectBandTitle({\n name,\n count,\n nameTestId,\n breakdown,\n readout,\n}: ProjectBandTitleProps) {\n return (\n <span className=\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1\" data-slot=\"band-title\">\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"truncate text-sm font-semibold text-foreground\" data-testid={nameTestId}>\n {name}\n </span>\n </TooltipTrigger>\n {breakdown && <TooltipContent side=\"top\">{breakdown}</TooltipContent>}\n </Tooltip>\n <span className=\"text-sm tabular-nums text-muted-foreground\">{count}</span>\n {readout}\n </span>\n )\n}\n\nexport interface ProjectBreakdownProps {\n name: string\n /** Plan badge (owned projects only). */\n badge?: ReactNode\n /** Quota meters; shown for owned projects only. */\n meters?: ReactNode\n dailyCap?: { label: string; value: string }\n}\n\n/** Plan + limits panel of the project tooltip. */\nexport function ProjectBreakdown({ name, badge, meters, dailyCap }: ProjectBreakdownProps) {\n return (\n <div className=\"w-64 space-y-2.5\" data-slot=\"project-breakdown\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-sm font-semibold text-foreground\">{name}</span>\n {badge}\n </div>\n {meters && (\n <div className=\"space-y-2.5 border-t border-border/50 pt-2.5\">\n {meters}\n {dailyCap && (\n <div className=\"flex items-center justify-between gap-6 text-xs\">\n <span className=\"text-muted-foreground\">{dailyCap.label}</span>\n <span className=\"font-medium tabular-nums text-foreground\">{dailyCap.value}</span>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport interface ProjectReadoutProps {\n /** Plan badge, with the id of its wrapper. */\n plan?: { badge: ReactNode; testId: string }\n usageLabel?: string\n /** The quota meter (a slot: it needs the host's formatter), with its wrapper's test id. */\n usage: { testId: string; node: ReactNode }\n}\n\n/** Plan / usage readout beside a project name: always visible, nothing hover-only. */\nexport function ProjectReadout({ plan, usageLabel = 'Usage:', usage }: ProjectReadoutProps) {\n return (\n <>\n {plan && (\n <span\n className=\"flex items-center whitespace-nowrap\"\n data-testid={plan.testId}\n data-slot=\"project-plan\"\n >\n {plan.badge}\n </span>\n )}\n <span\n className=\"flex items-center gap-1.5 text-sm text-muted-foreground\"\n data-testid={usage.testId}\n data-slot=\"project-usage\"\n >\n <span>{usageLabel}</span>\n {usage.node}\n </span>\n </>\n )\n}\n\n/** Column filling its container: scrolling grid on top, selection bar underneath. */\nexport function GridWithSelectionBar({\n className,\n grid,\n bar,\n}: {\n className?: string\n grid: ReactNode\n bar: ReactNode\n}) {\n return (\n <div\n className={cn('flex h-full min-h-0 flex-col', className)}\n data-slot=\"grid-with-selection-bar\"\n >\n <div className=\"relative min-h-0 flex-1\">{grid}</div>\n {bar}\n </div>\n )\n}\n\nexport interface BulkDeleteButtonProps {\n count: number\n /** Icon only (a narrow selection bar). */\n isCompact: boolean\n disabled?: boolean\n onClick: () => void\n label?: string\n}\n\n/** \"Delete (n)\" of a selection bar. */\nexport function BulkDeleteButton({\n count,\n isCompact,\n disabled,\n onClick,\n label = 'Delete',\n}: BulkDeleteButtonProps) {\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onClick}\n disabled={disabled}\n title={label}\n className=\"border-destructive/30 text-destructive hover:bg-destructive hover:text-destructive-foreground pointer-coarse:h-11\"\n >\n <Trash2 className=\"size-4\" />\n {isCompact ? (\n <span className=\"sr-only\">{label}</span>\n ) : (\n <span className=\"ml-1\">\n {label} {count > 0 ? `(${count})` : ''}\n </span>\n )}\n </Button>\n )\n}\n\n/** Single-line row inside a grid cell (identity pill, avatars). */\nexport function GridCellRow({ testId, children }: { testId?: string; children: ReactNode }) {\n return (\n <div data-slot=\"grid-cell-row\" data-testid={testId} className=\"flex items-center\">\n {children}\n </div>\n )\n}\n\n/** Muted em dash of an empty grid cell. */\nexport function EmptyCellDash() {\n return (\n <span className=\"text-muted-foreground\" aria-label=\"None\">\n —\n </span>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Callout } from '../components/Callout'\n\n/** Column of the home page: greeting header, then the content. */\nexport function HomeFrame({\n testId = 'home-page',\n children,\n}: {\n testId?: string\n children: ReactNode\n}) {\n return (\n <div data-slot=\"home-frame\" data-testid={testId} className=\"flex h-full flex-col\">\n {children}\n </div>\n )\n}\n\n/** Content area under the header; the pages inside own their scrolling. */\nexport function HomeMain({ children }: { children: ReactNode }) {\n return (\n <main\n data-slot=\"home-main\"\n className=\"min-h-0 min-w-sidebar flex-1 overflow-hidden bg-background\"\n >\n {children}\n </main>\n )\n}\n\n/**\n * Scroll container that spans the full width (so its scrollbar rides the window edge) with the\n * content centred in a bounded column.\n */\nexport function HomeCenteredScroll({ children }: { children: ReactNode }) {\n return (\n <div data-slot=\"home-scroll\" className=\"h-full overflow-y-auto\">\n <div className=\"mx-auto max-w-6xl\">{children}</div>\n </div>\n )\n}\n\n/** Bounded, centred column for a full-height child (the workspaces table). */\nexport function HomeCenteredColumn({\n className,\n children,\n}: {\n className?: string\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"home-column\"\n className={cn('mx-auto h-full max-w-6xl px-4 pb-4 sm:px-8', className)}\n >\n {children}\n </div>\n )\n}\n\n/** Centred error notice for a page that could not load. */\nexport function HomeLoadError({\n title,\n body,\n testId,\n}: {\n title: string\n body: string\n testId?: string\n}) {\n return (\n <div\n data-slot=\"home-load-error\"\n className=\"flex h-full flex-col items-center justify-center p-8\"\n >\n <div className=\"w-full max-w-md\">\n <Callout variant=\"danger\" title={title} body={body} testId={testId} />\n </div>\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/home/CreateTile.tsx","../../src/home/Greeting.tsx","../../src/home/RecentList.tsx","../../src/home/FactsStrip.tsx","../../src/home/GettingStartedStrip.tsx","../../src/home/ActionMenuDialog.tsx","../../src/home/CardHeaderBar.tsx","../../src/home/DashboardParts.tsx","../../src/home/ProjectBandParts.tsx","../../src/home/HomeLayout.tsx"],"names":["jsxs","cn","jsx","Plus","SectionHeader","EmptyStrip","Fragment","ActionLink","testIdOr","prefixedTestId","PartyPopper","X","Dialog","DialogContent","QuickActionDialogHeader","Button","Tooltip","TooltipTrigger","TooltipContent","Trash2","Callout"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ReactNode } from 'react'\nimport { Plus } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface CreateTileProps {\n /** Visible label, e.g. \"New workspace\". */\n label: string\n /** Accessible name; defaults to `label`. */\n ariaLabel?: string\n onSelect?: () => void\n /** One line explaining what is being created (first-run empty state). */\n help?: ReactNode\n /** When set, the tile is disabled and shows this explanation instead of `help`. */\n disabledReason?: string\n className?: string\n testId?: string\n}\n\n/**\n * The \"create\" tile. Sits in the grid beside the workspace tiles at the same\n * height, in the same tonal family: no dashed outline, no shadow.\n */\nexport function CreateTile({\n label,\n ariaLabel,\n onSelect,\n help,\n disabledReason,\n className,\n testId,\n}: CreateTileProps) {\n const disabled = !!disabledReason\n const select = disabled ? undefined : onSelect\n return (\n <div\n className={cn(\n 'flex min-h-40 w-full flex-col items-center justify-center gap-1 rounded-lg p-4 text-muted-foreground border border-border bg-card shadow-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled\n ? 'cursor-not-allowed opacity-60'\n : 'cursor-pointer hover:border-ring/50 hover:bg-accent/40 hover:text-foreground',\n className\n )}\n onClick={select}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n select?.()\n }\n }}\n role=\"button\"\n tabIndex={0}\n aria-disabled={disabled || undefined}\n title={disabledReason}\n aria-label={ariaLabel ?? label}\n data-slot=\"create-tile\"\n data-testid={testId}\n >\n <span className=\"inline-flex flex-col items-center gap-2 text-sm font-medium\">\n <Plus className=\"size-6\" aria-hidden=\"true\" />\n {label}\n </span>\n {(disabledReason ?? help) && (\n <p className=\"max-w-64 px-4 text-center text-xs leading-snug text-muted-foreground\">\n {disabledReason ?? help}\n </p>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface GreetingProps {\n /** Small line above the title, e.g. today's date. */\n eyebrow?: string\n title: string\n description?: string\n /** Trailing controls (view toggle, primary action). */\n actions?: ReactNode\n className?: string\n testId?: string\n eyebrowTestId?: string\n titleTestId?: string\n}\n\n/**\n * The home page header: eyebrow, greeting, one muted line and trailing\n * actions, centred in the same column as the content below it.\n */\nexport function Greeting({\n eyebrow,\n title,\n description,\n actions,\n className,\n testId,\n eyebrowTestId,\n titleTestId,\n}: GreetingProps) {\n return (\n <div className=\"bg-background\" data-slot=\"greeting\" data-testid={testId}>\n <div\n className={cn(\n 'mx-auto flex max-w-6xl flex-wrap items-end justify-between gap-x-4 gap-y-3 px-4 pb-4 pt-8 sm:px-8',\n className\n )}\n >\n <div className=\"min-w-0\">\n {eyebrow && (\n <p className=\"text-xs text-muted-foreground\" data-testid={eyebrowTestId}>\n {eyebrow}\n </p>\n )}\n <h1\n className=\"mt-1 break-words text-xl font-semibold tracking-tight text-foreground sm:text-2xl\"\n data-testid={titleTestId}\n >\n {title}\n </h1>\n {description && <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>}\n </div>\n {actions}\n </div>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { ActionLink } from '../components/ActionLink'\nimport { EmptyStrip, SectionHeader } from './sections'\n\n/** One listed item. Source-agnostic: a chat, a file. */\nexport interface RecentRow {\n id: string\n /** Bare entity mark (an icon carries its own identity; no tinted box). */\n leading?: ReactNode\n title: string\n subtitle?: string\n /** Pinned right on the title line, like a message time. Hidden when `trailing` is set. */\n time?: string\n onSelect?: () => void\n /** Real link target; `onSelect` still fires on a plain click (see `ActionLink`). */\n href?: string\n /** A control rendered beside the row, outside its button. */\n trailing?: ReactNode\n}\n\nexport interface RecentListEmpty {\n icon?: LucideIcon\n label: ReactNode\n description?: ReactNode\n /** Makes the empty strip an invitation button. */\n onSelect?: () => void\n}\n\nexport interface RecentListProps {\n icon?: LucideIcon\n title: string\n count?: number\n /** Opens the full list; makes the header title a button. */\n onOpen?: () => void\n /** Real link target of the header title (with `onOpen`, plain clicks call `onOpen`). */\n openHref?: string\n /** The section's one quiet header action. */\n action?: ReactNode\n rows: RecentRow[]\n /** Names the right-hand column (\"Added\", \"Messaged\"). */\n caption?: string\n /** What an empty section says. A plain muted line unless `onSelect` is set. */\n empty?: RecentListEmpty\n className?: string\n /** Root test id; derived ids: `-open`, `-caption`, `-row`, `-empty-action`. */\n testId?: string\n}\n\n/**\n * A titled list of recent items (files, chats): plain rows under a quiet\n * header. An empty list is one tonal strip that invites the first item.\n */\nexport function RecentList({\n icon,\n title,\n count,\n onOpen,\n openHref,\n action,\n rows,\n caption,\n empty,\n className,\n testId,\n}: RecentListProps) {\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-1', className)}\n data-slot=\"recent-list\"\n data-testid={testId}\n >\n <SectionHeader\n icon={icon}\n title={title}\n count={count}\n onOpen={onOpen}\n openHref={openHref}\n openTestId={testId && `${testId}-open`}\n action={action}\n />\n {rows.length === 0 ? (\n empty?.onSelect ? (\n <EmptyStrip\n icon={empty.icon}\n label={empty.label}\n description={empty.description}\n onSelect={empty.onSelect}\n testId={testId && `${testId}-empty-action`}\n />\n ) : (\n <p className=\"px-1 py-3 text-sm text-muted-foreground\">\n {empty?.description ?? empty?.label}\n </p>\n )\n ) : (\n <>\n {caption && (\n <p className=\"sr-only\" data-testid={testId && `${testId}-caption`}>\n {caption}\n </p>\n )}\n <ul>\n {rows.map((row) => (\n <li\n key={row.id}\n className=\"relative flex items-center rounded-md transition-colors [&:hover]:bg-muted has-[:focus-visible]:bg-muted\"\n data-slot=\"recent-row\"\n >\n <ActionLink\n href={row.href}\n onSelect={row.onSelect}\n title={row.title}\n className={cn(\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md px-3 py-2 text-left focus-visible:outline-none',\n row.onSelect && 'cursor-pointer',\n 'pointer-coarse:min-h-11'\n )}\n data-testid={testId && `${testId}-row`}\n >\n {row.leading}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium text-foreground\">\n {row.title}\n </span>\n {!row.trailing && row.time && (\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {row.time}\n </span>\n )}\n </div>\n {row.subtitle && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {row.subtitle}\n </p>\n )}\n </div>\n </ActionLink>\n {row.trailing ? <div className=\"shrink-0 pr-3\">{row.trailing}</div> : null}\n </li>\n ))}\n </ul>\n </>\n )}\n </section>\n )\n}\n","import type { ReactNode } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { EmptyStrip, SectionHeader } from './sections'\n\nexport interface FactsStripRow {\n id: string\n leading?: ReactNode\n title: string\n /** Right-aligned stamp: a date or a time. */\n time?: string\n onSelect?: () => void\n}\n\nexport interface FactsStripGroup {\n /** Captions the group (\"Upcoming\", \"Created\"); an empty group is not rendered. */\n caption: string\n rows: FactsStripRow[]\n /** Test id of every row in this group. Defaults to `${testId}-row`. */\n rowTestId?: string\n}\n\nexport interface FactsStripEmpty {\n icon: LucideIcon\n label: ReactNode\n description?: ReactNode\n onSelect?: () => void\n testId?: string\n}\n\nexport interface FactsStripProps {\n icon?: LucideIcon\n title: string\n count?: number\n onOpen?: () => void\n action?: ReactNode\n groups: FactsStripGroup[]\n empty?: FactsStripEmpty\n className?: string\n /** Root test id; the title button gets `${testId}-open`. */\n testId?: string\n}\n\n/**\n * A glanceable band of captioned groups (facts: upcoming, recently created).\n * Not a third list page: callers hand it a few rows per group.\n */\nexport function FactsStrip({\n icon,\n title,\n count,\n onOpen,\n action,\n groups,\n empty,\n className,\n testId,\n}: FactsStripProps) {\n const filled = groups.filter((g) => g.rows.length > 0)\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-1', className)}\n data-slot=\"facts-strip\"\n data-testid={testId}\n >\n <SectionHeader\n icon={icon}\n title={title}\n count={count}\n onOpen={onOpen}\n openTestId={testId && `${testId}-open`}\n action={action}\n />\n {filled.length === 0\n ? empty && (\n <EmptyStrip\n icon={empty.icon}\n label={empty.label}\n description={empty.description}\n onSelect={empty.onSelect}\n testId={empty.testId}\n />\n )\n : filled.map((group) => (\n <div key={group.caption} className=\"min-w-0\">\n <p className=\"px-3 pb-1 pt-1 text-right text-xs text-muted-foreground\">\n {group.caption}\n </p>\n <ul>\n {group.rows.map((row) => (\n <li key={row.id}>\n <button\n type=\"button\"\n onClick={row.onSelect}\n title={row.title}\n className=\"flex w-full min-w-0 items-center gap-3 rounded-md px-3 py-2 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&:hover]:bg-muted pointer-coarse:min-h-11\"\n data-testid={group.rowTestId ?? (testId && `${testId}-row`)}\n >\n {row.leading}\n <span className=\"min-w-0 flex-1 truncate text-sm text-foreground\">\n {row.title}\n </span>\n {row.time && (\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {row.time}\n </span>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </section>\n )\n}\n","import type { ReactNode } from 'react'\nimport { PartyPopper, X } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\n\n/** Fixed strings of the strip. */\nexport interface GettingStartedStripLabels {\n /** The close banner's headline. */\n allSet: (firstName?: string) => string\n /** The close banner's second line. */\n finished: (stepCount: number) => string\n done: string\n welcome: (firstName: string) => string\n getStarted: string\n replayDone: string\n almostThere: string\n dismiss: string\n}\n\nexport const DEFAULT_GETTING_STARTED_STRIP_LABELS: GettingStartedStripLabels = {\n allSet: (firstName) => `You’re all set${firstName ? `, ${firstName}` : ''}!`,\n finished: (stepCount) => `You’ve finished the ${stepCount} getting-started steps — explore away.`,\n done: 'Done',\n welcome: (firstName) => `Welcome, ${firstName}`,\n getStarted: 'Get started with ARBI',\n replayDone: 'Nicely done — that’s the tour again',\n almostThere: 'Almost there',\n dismiss: 'Dismiss getting started',\n}\n\nexport interface JourneyStep {\n id: string\n title: string\n /** The instruction shown beside the CURRENT step. */\n description: string\n done: boolean\n}\n\nexport interface GettingStartedStripProps {\n /** The core steps, in order. Numbers are their position. */\n steps: JourneyStep[]\n /** The first step not yet done; undefined when all are. */\n currentStepId?: string\n firstName?: string\n /** Replaying the tour: the finished banner is skipped and copy says so. */\n isReplay?: boolean\n /** Every core step is done (and this is not a replay): show the close banner. */\n isComplete?: boolean\n onDismiss: () => void\n /** Brand mark before the greeting. */\n logo?: ReactNode\n labels?: Partial<GettingStartedStripLabels>\n className?: string\n /** Root test id (default `getting-started`). */\n testId?: string\n /** Sub-element ids; defaults are the current ids. The per-step id is `<stepper>-<step id>`. */\n testIds?: Partial<Record<'stepper' | 'complete' | 'done' | 'dismiss', string>>\n}\n\n// Full literal class strings per state so Tailwind's scanner sees every class.\n// Navy = progress/selection; cyan is reserved for \"this is ARBI/AI\".\nfunction circleClasses(done: boolean, isCurrent: boolean): string {\n if (done) return 'border-primary bg-primary text-primary-foreground'\n if (isCurrent) return 'border-primary bg-accent text-accent-foreground'\n return 'border-border text-muted-foreground'\n}\n\n/**\n * The numbered journey. A step's number never turns into a check: a filled\n * circle plus a struck-through title says \"done\", so status and identity both\n * stay legible without a second glyph. The current step also carries its\n * instruction, the one thing this row tells you to go do.\n */\nfunction Journey({\n steps,\n currentStepId,\n testId,\n}: {\n steps: JourneyStep[]\n currentStepId?: string\n testId?: string\n}) {\n return (\n <ol\n className=\"hidden min-w-0 shrink items-center overflow-x-auto sm:flex\"\n data-slot=\"journey\"\n data-testid={testIdOr(testId, { testId: 'getting-started-stepper' })}\n >\n {steps.map((step, i) => {\n const isCurrent = step.id === currentStepId\n return (\n <li\n key={step.id}\n className=\"flex shrink-0 items-center\"\n data-testid={prefixedTestId(testId, step.id, {\n testId: `getting-started-stepper-${step.id}`,\n })}\n data-done={step.done}\n data-current={isCurrent}\n >\n {i > 0 && (\n <span\n className={cn(\n 'h-0 w-3 shrink-0 border-t-2 border-solid transition-colors duration-500',\n steps[i - 1].done ? 'border-primary' : 'border-border'\n )}\n />\n )}\n <span className=\"flex items-center gap-1.5\">\n <span\n className={cn(\n 'flex size-6 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold tabular-nums transition-colors',\n circleClasses(step.done, isCurrent)\n )}\n >\n {i + 1}\n </span>\n <span\n className={cn(\n 'text-sm font-medium',\n step.done\n ? 'text-muted-foreground line-through'\n : isCurrent\n ? 'text-foreground'\n : 'text-muted-foreground'\n )}\n >\n {step.title}\n </span>\n {isCurrent && !step.done && (\n <span className=\"text-muted-foreground\">— {step.description}</span>\n )}\n </span>\n </li>\n )\n })}\n </ol>\n )\n}\n\n/**\n * First-run activation row: greeting, the numbered journey and the current\n * step's instruction, all in ONE bare row (no container, no border), so it can\n * live in a topbar slot. A guide, not a shortcut: it says WHERE to go and the\n * host detects completion itself.\n */\nexport function GettingStartedStrip({\n steps,\n currentStepId,\n firstName,\n isReplay = false,\n isComplete = false,\n onDismiss,\n logo,\n labels,\n className,\n testId,\n testIds,\n}: GettingStartedStripProps) {\n const l = { ...DEFAULT_GETTING_STARTED_STRIP_LABELS, ...labels }\n if (isComplete && !isReplay) {\n return (\n <div\n className={cn('flex min-w-0 items-center gap-3', className)}\n data-slot=\"getting-started-strip\"\n data-testid={testIdOr(testId, { testId: 'getting-started' })}\n >\n <PartyPopper className=\"size-5 shrink-0 text-primary\" aria-hidden=\"true\" />\n <p\n className=\"min-w-0 shrink truncate text-base\"\n data-testid={testIdOr(testIds?.complete, { testId: 'getting-started-complete' })}\n >\n <span className=\"font-semibold text-foreground\">{l.allSet(firstName)}</span>\n <span className=\"mx-1.5 text-muted-foreground\">·</span>\n <span className=\"text-muted-foreground\">{l.finished(steps.length)}</span>\n </p>\n <Journey steps={steps} currentStepId={currentStepId} testId={testIds?.stepper} />\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-md bg-muted px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11\"\n data-testid={testIdOr(testIds?.done, { testId: 'getting-started-done' })}\n >\n {l.done}\n </button>\n </div>\n )\n }\n\n const greeting = firstName ? l.welcome(firstName) : l.getStarted\n\n return (\n <div\n className={cn('flex min-w-0 items-center gap-3', className)}\n data-slot=\"getting-started-strip\"\n data-testid={testIdOr(testId, { testId: 'getting-started' })}\n >\n {logo}\n <span className=\"shrink-0 text-base font-semibold text-foreground\">{greeting}</span>\n\n <Journey steps={steps} currentStepId={currentStepId} testId={testIds?.stepper} />\n\n {/* Reachable two ways: everything is done but not yet acknowledged (a\n brief instant before the banner takes over), or during a replay you\n have redone all the steps again. */}\n {!currentStepId && (\n <span className=\"min-w-0 flex-1 truncate text-sm text-muted-foreground\">\n {isReplay ? l.replayDone : l.almostThere}\n </span>\n )}\n <div className=\"flex-1\" />\n\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:p-3\"\n aria-label={l.dismiss}\n data-testid={testIdOr(testIds?.dismiss, { testId: 'getting-started-dismiss' })}\n >\n <X className=\"size-4\" />\n </button>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Dialog, DialogContent, cn } from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\nimport { QuickActionDialogHeader } from './QuickActionDialogHeader'\n\nexport interface ActionMenuItem {\n id: string\n label: string\n description?: string\n icon?: ReactNode\n}\n\nexport interface ActionMenuDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n /** Header mark, sized by the caller at `size-5`. */\n icon?: ReactNode\n title: string\n description: string\n items: ActionMenuItem[]\n /** A choice was made; the host performs it (the dialog does not close itself). */\n onPick: (id: string) => void\n /** Dialog id; items are `<prefix>-<item id>` (default `action-menu-item-<id>`). */\n testId?: string\n itemTestId?: string\n}\n\n/**\n * A plain menu of one-click actions in a dialog: no form, no schema, nothing generative. Use it\n * for \"create new\" style choices; anything that asks questions belongs to a workflow or operation.\n */\nexport function ActionMenuDialog({\n open,\n onOpenChange,\n icon,\n title,\n description,\n items,\n onPick,\n testId,\n itemTestId,\n}: ActionMenuDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n presentation=\"sheet\"\n className=\"sm:max-w-lg\"\n data-testid={testIdOr(testId, { testId: 'action-menu-dialog' })}\n >\n <QuickActionDialogHeader icon={icon} title={title} description={description} />\n <div className=\"grid grid-cols-2 gap-3 pt-1\" role=\"menu\" aria-label={title}>\n {items.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n role=\"menuitem\"\n onClick={() => onPick(item.id)}\n data-testid={prefixedTestId(itemTestId, item.id, {\n testId: `action-menu-item-${item.id}`,\n })}\n className={cn(\n 'flex min-h-32 flex-col items-center justify-center gap-2 rounded-lg border border-border bg-card p-3 text-center transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&:hover]:border-primary [&:hover]:bg-muted'\n )}\n >\n {item.icon && <span className=\"text-muted-foreground\">{item.icon}</span>}\n <span className=\"text-sm font-medium text-foreground\">{item.label}</span>\n {item.description && (\n <span className=\"text-xs text-muted-foreground\">{item.description}</span>\n )}\n </button>\n ))}\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n","import type { MouseEvent, ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\nexport interface CardHeaderBarAction {\n icon: ReactNode\n onClick: (e: MouseEvent) => void\n ariaLabel?: string\n}\n\nexport interface CardHeaderBarProps {\n icon: ReactNode\n title: string\n subtitle?: string\n /** Filled variant only: background class (default: the primary token). */\n bgColor?: string\n /** Rendered under the title. */\n badge?: ReactNode\n /** Wrap the title in a pill. */\n titleBadge?: boolean\n titleBadgeColor?: string\n actionButton?: CardHeaderBarAction\n /**\n * `filled` (default): solid fill with on-primary text.\n * `plain`: tonal fill, foreground text and an optional coloured bottom\n * divider (`accentClass`), so the header reads as part of the card.\n */\n variant?: 'filled' | 'plain'\n /** Plain variant only: border colour class for the bottom divider. */\n accentClass?: string\n /** Inline element right after the title text. */\n titleTrailing?: ReactNode\n className?: string\n /** Root test id (default `card-header`). */\n testId?: string\n /** Sub-element ids; defaults are the current ids. */\n testIds?: Partial<Record<'title' | 'subtitle' | 'actionButton', string>>\n}\n\n/**\n * Header bar for card-like tiles: icon, title, optional subtitle and one\n * action button (44px on touch). Named `CardHeaderBar` to stay clear of the\n * kit's structural `CardHeader`.\n */\nexport function CardHeaderBar({\n icon,\n title,\n subtitle,\n bgColor = 'bg-primary',\n badge,\n titleBadge = false,\n titleBadgeColor,\n actionButton,\n variant = 'filled',\n accentClass,\n titleTrailing,\n className,\n testId,\n testIds,\n}: CardHeaderBarProps) {\n const plain = variant === 'plain'\n const titleTestId = testIdOr(testIds?.title, { testId: 'card-header-title' })\n const containerBg = plain\n ? cn('border border-border bg-card shadow-xs', accentClass && ['border-b', accentClass])\n : bgColor\n const titleColor = plain ? 'text-foreground' : 'text-primary-foreground'\n const subtitleColor = plain ? 'text-muted-foreground' : 'text-primary-foreground opacity-80'\n const iconColor = plain ? 'text-foreground' : 'text-primary-foreground'\n // No subtitle: a single title line, so the header stays compact.\n const heightClass = subtitle ? 'h-14' : 'h-12'\n\n return (\n <div\n className={cn('relative w-full', heightClass, containerBg, className)}\n data-slot=\"card-header-bar\"\n data-testid={testIdOr(testId, { testId: 'card-header' })}\n >\n <div\n className={cn(\n 'absolute left-4 top-1/2 flex -translate-y-1/2 items-center gap-2',\n actionButton ? 'right-16' : 'right-4'\n )}\n >\n <div className={cn('-ml-1 flex shrink-0 items-center [&>svg]:size-8', iconColor)}>\n {icon}\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col justify-center\">\n {titleBadge ? (\n <div\n className={cn(\n 'inline-flex items-center self-start rounded-md border px-2 py-0.5',\n plain ? 'border-transparent bg-background' : 'border-primary-foreground/30'\n )}\n style={titleBadgeColor ? { backgroundColor: titleBadgeColor } : undefined}\n >\n <div\n className={cn(\n 'truncate text-base font-semibold capitalize leading-none',\n titleColor\n )}\n data-testid={titleTestId}\n title={title}\n >\n {title}\n </div>\n </div>\n ) : (\n <div className=\"flex min-w-0 items-center gap-1.5\">\n <span\n className={cn(\n 'truncate text-base font-semibold capitalize leading-none',\n titleColor\n )}\n data-testid={titleTestId}\n title={title}\n >\n {title}\n </span>\n {titleTrailing && (\n <span className=\"flex shrink-0 items-center gap-1\">{titleTrailing}</span>\n )}\n </div>\n )}\n {badge && <div className=\"shrink-0\">{badge}</div>}\n {subtitle && (\n <div\n className={cn('truncate text-sm', subtitleColor)}\n data-testid={testIdOr(testIds?.subtitle, { testId: 'card-header-subtitle' })}\n title={subtitle}\n >\n <span className=\"opacity-60\"># </span>\n {subtitle}\n </div>\n )}\n </div>\n </div>\n {actionButton && (\n <div className={cn('absolute top-1/2 -translate-y-1/2', plain ? 'right-2.5' : 'right-4')}>\n <button\n type=\"button\"\n className={cn(\n 'flex cursor-pointer items-center justify-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:size-11',\n plain ? 'p-1.5 hover:bg-foreground/5' : 'size-8 bg-card hover:bg-card/90'\n )}\n onClick={actionButton.onClick}\n aria-label={actionButton.ariaLabel}\n data-testid={testIdOr(testIds?.actionButton, { testId: 'card-header-action-button' })}\n >\n <div className={cn('[&>svg]:size-5', !plain && 'text-foreground')}>\n {actionButton.icon}\n </div>\n </button>\n </div>\n )}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Button, cn } from '@arbidocs/react/ui'\n\n/** A section's quiet header action: ghost, small, still 44px on touch. */\nexport const DASHBOARD_QUIET_ACTION_CLASS =\n 'h-8 gap-1.5 px-2 text-sm bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground pointer-coarse:h-11'\n\n/** Column of the workspace dashboard's bands. A container, so children can use `@2xl:` queries. */\nexport function DashboardRoot({\n testId,\n className,\n children,\n}: {\n testId?: string\n className?: string\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"dashboard\"\n data-testid={testId}\n className={cn('flex flex-col gap-6', className)}\n >\n {children}\n </div>\n )\n}\n\n/** A dashboard band: `start` is the tiles under the identity bar, `recent` the lists with an eyebrow. */\nexport function DashboardBand({\n kind,\n children,\n}: {\n kind: 'start' | 'recent'\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"dashboard-band\"\n data-kind={kind}\n className={kind === 'start' ? 'mt-2' : 'mt-4 flex flex-col gap-3'}\n >\n {children}\n </div>\n )\n}\n\n/** Two equal columns from the `@2xl` container width, one below it. */\nexport function DashboardColumns({ children }: { children: ReactNode }) {\n return (\n <div data-slot=\"dashboard-columns\" className=\"grid gap-8 @2xl:grid-cols-2\">\n {children}\n </div>\n )\n}\n\n/** A fact row's mark: a quiet dot. */\nexport function FactMark() {\n return (\n <span\n data-slot=\"fact-mark\"\n className=\"mx-1 size-1.5 shrink-0 rounded-full bg-muted-foreground/40\"\n aria-hidden\n />\n )\n}\n\nexport interface DashboardActionProps {\n /** `primary` is the page's one filled action; `quiet` the ghost header actions. */\n emphasis: 'primary' | 'quiet'\n icon: ReactNode\n label: string\n onClick: () => void\n testId?: string\n}\n\n/** Header action of a dashboard section (\"New chat\", \"New fact\"). */\nexport function DashboardAction({ emphasis, icon, label, onClick, testId }: DashboardActionProps) {\n return (\n <Button\n variant={emphasis === 'primary' ? 'default' : 'ghost'}\n size=\"sm\"\n className={\n emphasis === 'primary'\n ? 'h-8 gap-1.5 px-3 text-sm pointer-coarse:h-11'\n : DASHBOARD_QUIET_ACTION_CLASS\n }\n onClick={onClick}\n data-testid={testId}\n >\n {icon}\n {label}\n </Button>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Trash2 } from 'lucide-react'\nimport { Button, cn, Tooltip, TooltipContent, TooltipTrigger } from '@arbidocs/react/ui'\n\n/** Name + count text of a band that has no project to open (\"Common\", own workspaces). */\nexport function PlainBandTitle({\n title,\n count,\n hint,\n}: {\n title: string\n count: number\n /** Muted explanation after the count, e.g. \"Shared with everyone\". */\n hint?: string\n}) {\n return (\n <span className=\"flex items-center gap-2\" data-slot=\"band-title\">\n <span className=\"truncate text-sm font-semibold text-foreground\">{title}</span>\n <span className=\"text-sm tabular-nums text-muted-foreground\">{count}</span>\n {hint && <span className=\"text-sm text-muted-foreground\">{hint}</span>}\n </span>\n )\n}\n\nexport interface ProjectBandTitleProps {\n name: string\n count: number\n nameTestId: string\n /** Full plan / usage breakdown shown as a tooltip on the name. */\n breakdown?: ReactNode\n /** Plan badge and usage readout, right after the count. */\n readout?: ReactNode\n}\n\n/** Title of a project band: name (with breakdown tooltip), count and the plan / usage readout. */\nexport function ProjectBandTitle({\n name,\n count,\n nameTestId,\n breakdown,\n readout,\n}: ProjectBandTitleProps) {\n return (\n <span className=\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1\" data-slot=\"band-title\">\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"truncate text-sm font-semibold text-foreground\" data-testid={nameTestId}>\n {name}\n </span>\n </TooltipTrigger>\n {breakdown && <TooltipContent side=\"top\">{breakdown}</TooltipContent>}\n </Tooltip>\n <span className=\"text-sm tabular-nums text-muted-foreground\">{count}</span>\n {readout}\n </span>\n )\n}\n\nexport interface ProjectBreakdownProps {\n name: string\n /** Plan badge (owned projects only). */\n badge?: ReactNode\n /** Quota meters; shown for owned projects only. */\n meters?: ReactNode\n dailyCap?: { label: string; value: string }\n}\n\n/** Plan + limits panel of the project tooltip. */\nexport function ProjectBreakdown({ name, badge, meters, dailyCap }: ProjectBreakdownProps) {\n return (\n <div className=\"w-64 space-y-2.5\" data-slot=\"project-breakdown\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-sm font-semibold text-foreground\">{name}</span>\n {badge}\n </div>\n {meters && (\n <div className=\"space-y-2.5 border-t border-border/50 pt-2.5\">\n {meters}\n {dailyCap && (\n <div className=\"flex items-center justify-between gap-6 text-xs\">\n <span className=\"text-muted-foreground\">{dailyCap.label}</span>\n <span className=\"font-medium tabular-nums text-foreground\">{dailyCap.value}</span>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport interface ProjectReadoutProps {\n /** Plan badge, with the id of its wrapper. */\n plan?: { badge: ReactNode; testId: string }\n usageLabel?: string\n /** The quota meter (a slot: it needs the host's formatter), with its wrapper's test id. */\n usage: { testId: string; node: ReactNode }\n}\n\n/** Plan / usage readout beside a project name: always visible, nothing hover-only. */\nexport function ProjectReadout({ plan, usageLabel = 'Usage:', usage }: ProjectReadoutProps) {\n return (\n <>\n {plan && (\n <span\n className=\"flex items-center whitespace-nowrap\"\n data-testid={plan.testId}\n data-slot=\"project-plan\"\n >\n {plan.badge}\n </span>\n )}\n <span\n className=\"flex items-center gap-1.5 text-sm text-muted-foreground\"\n data-testid={usage.testId}\n data-slot=\"project-usage\"\n >\n <span>{usageLabel}</span>\n {usage.node}\n </span>\n </>\n )\n}\n\n/** Column filling its container: scrolling grid on top, selection bar underneath. */\nexport function GridWithSelectionBar({\n className,\n grid,\n bar,\n}: {\n className?: string\n grid: ReactNode\n bar: ReactNode\n}) {\n return (\n <div\n className={cn('flex h-full min-h-0 flex-col', className)}\n data-slot=\"grid-with-selection-bar\"\n >\n <div className=\"relative min-h-0 flex-1\">{grid}</div>\n {bar}\n </div>\n )\n}\n\nexport interface BulkDeleteButtonProps {\n count: number\n /** Icon only (a narrow selection bar). */\n isCompact: boolean\n disabled?: boolean\n onClick: () => void\n label?: string\n}\n\n/** \"Delete (n)\" of a selection bar. */\nexport function BulkDeleteButton({\n count,\n isCompact,\n disabled,\n onClick,\n label = 'Delete',\n}: BulkDeleteButtonProps) {\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onClick}\n disabled={disabled}\n title={label}\n className=\"border-destructive/30 text-destructive hover:bg-destructive hover:text-destructive-foreground pointer-coarse:h-11\"\n >\n <Trash2 className=\"size-4\" />\n {isCompact ? (\n <span className=\"sr-only\">{label}</span>\n ) : (\n <span className=\"ml-1\">\n {label} {count > 0 ? `(${count})` : ''}\n </span>\n )}\n </Button>\n )\n}\n\n/** Single-line row inside a grid cell (identity pill, avatars). */\nexport function GridCellRow({ testId, children }: { testId?: string; children: ReactNode }) {\n return (\n <div data-slot=\"grid-cell-row\" data-testid={testId} className=\"flex items-center\">\n {children}\n </div>\n )\n}\n\n/** Muted em dash of an empty grid cell. */\nexport function EmptyCellDash() {\n return (\n <span className=\"text-muted-foreground\" aria-label=\"None\">\n —\n </span>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Callout } from '../components/Callout'\n\n/** Column of the home page: greeting header, then the content. */\nexport function HomeFrame({\n testId = 'home-page',\n children,\n}: {\n testId?: string\n children: ReactNode\n}) {\n return (\n <div data-slot=\"home-frame\" data-testid={testId} className=\"flex h-full flex-col\">\n {children}\n </div>\n )\n}\n\n/** Content area under the header; the pages inside own their scrolling. */\nexport function HomeMain({ children }: { children: ReactNode }) {\n return (\n <main\n data-slot=\"home-main\"\n className=\"min-h-0 min-w-sidebar flex-1 overflow-hidden bg-background\"\n >\n {children}\n </main>\n )\n}\n\n/**\n * Scroll container that spans the full width (so its scrollbar rides the window edge) with the\n * content centred in a bounded column.\n */\nexport function HomeCenteredScroll({ children }: { children: ReactNode }) {\n return (\n <div data-slot=\"home-scroll\" className=\"h-full overflow-y-auto\">\n <div className=\"mx-auto max-w-6xl\">{children}</div>\n </div>\n )\n}\n\n/** Bounded, centred column for a full-height child (the workspaces table). */\nexport function HomeCenteredColumn({\n className,\n children,\n}: {\n className?: string\n children: ReactNode\n}) {\n return (\n <div\n data-slot=\"home-column\"\n className={cn('mx-auto h-full max-w-6xl px-4 pb-4 sm:px-8', className)}\n >\n {children}\n </div>\n )\n}\n\n/** Centred error notice for a page that could not load. */\nexport function HomeLoadError({\n title,\n body,\n testId,\n}: {\n title: string\n body: string\n testId?: string\n}) {\n return (\n <div\n data-slot=\"home-load-error\"\n className=\"flex h-full flex-col items-center justify-center p-8\"\n >\n <div className=\"w-full max-w-md\">\n <Callout variant=\"danger\" title={title} body={body} testId={testId} />\n </div>\n </div>\n )\n}\n"]}
|
package/dist/home/index.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
export { CollapsibleSection, DEFAULT_COLLAPSIBLE_SECTION_LABELS, DEFAULT_KEY_VALUE_ROW_LABELS, KeyValueContainer, KeyValueRow } from '../chunk-LGBAZD37.js';
|
|
3
3
|
import { Callout } from '../chunk-UJE32SST.js';
|
|
4
|
-
import { SectionHeader, EmptyStrip, QuickActionDialogHeader } from '../chunk-
|
|
5
|
-
export { AddFilesFirst, DEFAULT_ADD_FILES_FIRST_LABELS, DEFAULT_SCOPE_PICKER_LABELS, EmptyStrip, QuickActionDialogHeader, ScopePicker, SectionHeader, SectionLabel, StartTiles, useScopeSelection } from '../chunk-
|
|
6
|
-
import { ActionLink } from '../chunk-444XKG46.js';
|
|
4
|
+
import { SectionHeader, EmptyStrip, QuickActionDialogHeader } from '../chunk-P5ST47VY.js';
|
|
5
|
+
export { AddFilesFirst, DEFAULT_ADD_FILES_FIRST_LABELS, DEFAULT_SCOPE_PICKER_LABELS, EmptyStrip, QuickActionDialogHeader, ScopePicker, SectionHeader, SectionLabel, StartTiles, useScopeSelection } from '../chunk-P5ST47VY.js';
|
|
7
6
|
export { FoldSection } from '../chunk-XD2M6LIG.js';
|
|
7
|
+
import { ActionLink } from '../chunk-S7PSMMRG.js';
|
|
8
8
|
import '../chunk-NPLYHR2E.js';
|
|
9
9
|
import { testIdOr, prefixedTestId } from '../chunk-7F6CBP3Z.js';
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-TX2ZICS7.js';
|
|
10
|
+
import '../chunk-76JDDMSP.js';
|
|
12
11
|
import '../chunk-OXF2IFXG.js';
|
|
13
12
|
import '../chunk-VUNV25KB.js';
|
|
14
13
|
import { Plus, PartyPopper, X, Trash2 } from 'lucide-react';
|