@arbidocs/blocks 0.5.26 → 0.5.27

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.
Files changed (99) hide show
  1. package/dist/{ConnectedNativeDocxComparison-3IPJEVEH.js → ConnectedNativeDocxComparison-5VOMPGV5.js} +7 -7
  2. package/dist/{ConnectedNativeDocxComparison-3IPJEVEH.js.map → ConnectedNativeDocxComparison-5VOMPGV5.js.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-E4NEJZ5L.cjs → ConnectedNativeDocxComparison-ZJ44DWVV.cjs} +8 -8
  4. package/dist/{ConnectedNativeDocxComparison-E4NEJZ5L.cjs.map → ConnectedNativeDocxComparison-ZJ44DWVV.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-43YCQZYJ.js → ConnectedNativeDocxEditor-CSD3YIPD.js} +6 -6
  6. package/dist/{ConnectedNativeDocxEditor-43YCQZYJ.js.map → ConnectedNativeDocxEditor-CSD3YIPD.js.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-TYRH4YYS.cjs → ConnectedNativeDocxEditor-KQEYRN4T.cjs} +8 -8
  8. package/dist/{ConnectedNativeDocxEditor-TYRH4YYS.cjs.map → ConnectedNativeDocxEditor-KQEYRN4T.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-LRUJ3SC3.cjs → ConnectedStreamedWordArtifact-OTC4CAYP.cjs} +8 -8
  10. package/dist/ConnectedStreamedWordArtifact-OTC4CAYP.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-VHLK2CRN.js → ConnectedStreamedWordArtifact-ZPI76QX2.js} +7 -7
  12. package/dist/{ConnectedStreamedWordArtifact-VHLK2CRN.js.map → ConnectedStreamedWordArtifact-ZPI76QX2.js.map} +1 -1
  13. package/dist/{WorkspaceTableView-QB4N4KM3.cjs → WorkspaceTableView-5I3KWZ5I.cjs} +7 -7
  14. package/dist/{WorkspaceTableView-QB4N4KM3.cjs.map → WorkspaceTableView-5I3KWZ5I.cjs.map} +1 -1
  15. package/dist/{WorkspaceTableView-P5B4A6QF.js → WorkspaceTableView-LS6LFKBE.js} +5 -5
  16. package/dist/{WorkspaceTableView-P5B4A6QF.js.map → WorkspaceTableView-LS6LFKBE.js.map} +1 -1
  17. package/dist/agents/index.cjs +327 -327
  18. package/dist/agents/index.js +5 -5
  19. package/dist/{chunk-JS7KJRKG.js → chunk-75Z5AUMM.js} +3 -3
  20. package/dist/{chunk-JS7KJRKG.js.map → chunk-75Z5AUMM.js.map} +1 -1
  21. package/dist/{chunk-EEVPNS7F.js → chunk-7FKVJUR4.js} +3 -3
  22. package/dist/{chunk-EEVPNS7F.js.map → chunk-7FKVJUR4.js.map} +1 -1
  23. package/dist/{chunk-UYSARUCL.js → chunk-A3WHSTRX.js} +3 -3
  24. package/dist/{chunk-UYSARUCL.js.map → chunk-A3WHSTRX.js.map} +1 -1
  25. package/dist/{chunk-NEZE2BHH.js → chunk-DEB2YRCN.js} +4 -4
  26. package/dist/{chunk-NEZE2BHH.js.map → chunk-DEB2YRCN.js.map} +1 -1
  27. package/dist/{chunk-WKI4ATLQ.cjs → chunk-F5T4R7CN.cjs} +4 -4
  28. package/dist/{chunk-WKI4ATLQ.cjs.map → chunk-F5T4R7CN.cjs.map} +1 -1
  29. package/dist/{chunk-RMHNOUDC.cjs → chunk-FV32BTXV.cjs} +3 -3
  30. package/dist/{chunk-RMHNOUDC.cjs.map → chunk-FV32BTXV.cjs.map} +1 -1
  31. package/dist/{chunk-KEED4XPY.js → chunk-G6O77PJD.js} +3 -3
  32. package/dist/{chunk-KEED4XPY.js.map → chunk-G6O77PJD.js.map} +1 -1
  33. package/dist/{chunk-AQZFO4UE.js → chunk-H5XHCIWY.js} +3 -3
  34. package/dist/{chunk-AQZFO4UE.js.map → chunk-H5XHCIWY.js.map} +1 -1
  35. package/dist/{chunk-6WD2OGWW.cjs → chunk-I45LDMQU.cjs} +5 -5
  36. package/dist/{chunk-6WD2OGWW.cjs.map → chunk-I45LDMQU.cjs.map} +1 -1
  37. package/dist/{chunk-BIRDOSOU.js → chunk-L2C7WV6D.js} +3 -3
  38. package/dist/{chunk-BIRDOSOU.js.map → chunk-L2C7WV6D.js.map} +1 -1
  39. package/dist/{chunk-VA2VADOX.cjs → chunk-LX3JJYVP.cjs} +3 -3
  40. package/dist/{chunk-VA2VADOX.cjs.map → chunk-LX3JJYVP.cjs.map} +1 -1
  41. package/dist/{chunk-5CQOSYC4.js → chunk-OUCSQ3IE.js} +4 -4
  42. package/dist/{chunk-5CQOSYC4.js.map → chunk-OUCSQ3IE.js.map} +1 -1
  43. package/dist/{chunk-KQZWBMAC.cjs → chunk-P57ASK2E.cjs} +4 -4
  44. package/dist/{chunk-KQZWBMAC.cjs.map → chunk-P57ASK2E.cjs.map} +1 -1
  45. package/dist/{chunk-XYPVZKAN.js → chunk-PXYP3DM5.js} +202 -3
  46. package/dist/chunk-PXYP3DM5.js.map +1 -0
  47. package/dist/{chunk-LFQZDALT.cjs → chunk-QWKT4DO6.cjs} +206 -2
  48. package/dist/chunk-QWKT4DO6.cjs.map +1 -0
  49. package/dist/{chunk-KQHUPFBX.js → chunk-R4K5L6QY.js} +3 -3
  50. package/dist/{chunk-KQHUPFBX.js.map → chunk-R4K5L6QY.js.map} +1 -1
  51. package/dist/{chunk-EPXQ7AAF.cjs → chunk-SQQULKT4.cjs} +9 -9
  52. package/dist/{chunk-EPXQ7AAF.cjs.map → chunk-SQQULKT4.cjs.map} +1 -1
  53. package/dist/{chunk-QK2YO2RP.cjs → chunk-TL5VXRNT.cjs} +9 -9
  54. package/dist/{chunk-QK2YO2RP.cjs.map → chunk-TL5VXRNT.cjs.map} +1 -1
  55. package/dist/{chunk-CLFJTKQH.cjs → chunk-WBBUUEER.cjs} +48 -48
  56. package/dist/{chunk-CLFJTKQH.cjs.map → chunk-WBBUUEER.cjs.map} +1 -1
  57. package/dist/{chunk-NVCIN6U6.js → chunk-WP4IDJBA.js} +3 -3
  58. package/dist/{chunk-NVCIN6U6.js.map → chunk-WP4IDJBA.js.map} +1 -1
  59. package/dist/{chunk-D2IJHMGM.js → chunk-XMUYSOYU.js} +4 -4
  60. package/dist/{chunk-D2IJHMGM.js.map → chunk-XMUYSOYU.js.map} +1 -1
  61. package/dist/{chunk-F72ZD5Q2.cjs → chunk-YD3RN2FY.cjs} +3 -3
  62. package/dist/{chunk-F72ZD5Q2.cjs.map → chunk-YD3RN2FY.cjs.map} +1 -1
  63. package/dist/{chunk-SQ3TVPAW.cjs → chunk-Z2BAYT2U.cjs} +4 -4
  64. package/dist/{chunk-SQ3TVPAW.cjs.map → chunk-Z2BAYT2U.cjs.map} +1 -1
  65. package/dist/{chunk-4PG6NJDO.cjs → chunk-ZXXXLYZY.cjs} +16 -16
  66. package/dist/{chunk-4PG6NJDO.cjs.map → chunk-ZXXXLYZY.cjs.map} +1 -1
  67. package/dist/connect/docx.cjs +10 -10
  68. package/dist/connect/docx.js +6 -6
  69. package/dist/connect/index.cjs +488 -489
  70. package/dist/connect/index.cjs.map +1 -1
  71. package/dist/connect/index.js +22 -23
  72. package/dist/connect/index.js.map +1 -1
  73. package/dist/connect/viewer.cjs +20 -20
  74. package/dist/connect/viewer.js +9 -9
  75. package/dist/document-tools/index.cjs +17 -17
  76. package/dist/document-tools/index.js +2 -2
  77. package/dist/facts/index.cjs +55 -55
  78. package/dist/facts/index.js +3 -3
  79. package/dist/files/index.cjs +1 -1
  80. package/dist/files/index.js +1 -1
  81. package/dist/index.cjs +498 -478
  82. package/dist/index.js +13 -13
  83. package/dist/settings/index.cjs +1 -1
  84. package/dist/settings/index.js +1 -1
  85. package/dist/shell/index.cjs +71 -51
  86. package/dist/shell/index.d.ts +1 -0
  87. package/dist/shell/index.js +2 -2
  88. package/dist/shell/reload-policy.d.ts +58 -0
  89. package/dist/site/index.cjs +22 -22
  90. package/dist/site/index.js +2 -2
  91. package/dist/studio/index.cjs +2 -2
  92. package/dist/studio/index.js +2 -2
  93. package/dist/workflow-canvas/index.cjs +18 -18
  94. package/dist/workflow-canvas/index.js +5 -5
  95. package/node_modules/@arbidocs/coedit/package.json +1 -1
  96. package/package.json +5 -5
  97. package/dist/ConnectedStreamedWordArtifact-LRUJ3SC3.cjs.map +0 -1
  98. package/dist/chunk-LFQZDALT.cjs.map +0 -1
  99. package/dist/chunk-XYPVZKAN.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkCLFJTKQH_cjs = require('../chunk-CLFJTKQH.cjs');
5
- var chunkQK2YO2RP_cjs = require('../chunk-QK2YO2RP.cjs');
4
+ var chunkWBBUUEER_cjs = require('../chunk-WBBUUEER.cjs');
5
+ var chunkTL5VXRNT_cjs = require('../chunk-TL5VXRNT.cjs');
6
6
  require('../chunk-RFIBUWLF.cjs');
7
- var chunkWKI4ATLQ_cjs = require('../chunk-WKI4ATLQ.cjs');
8
- require('../chunk-AQPZ4QMV.cjs');
7
+ var chunkF5T4R7CN_cjs = require('../chunk-F5T4R7CN.cjs');
9
8
  require('../chunk-5OEDXFPX.cjs');
9
+ require('../chunk-AQPZ4QMV.cjs');
10
10
  require('../chunk-SIB6C7P7.cjs');
11
11
  require('../chunk-DVUZTGVL.cjs');
12
12
  require('../chunk-V4ISCZJ7.cjs');
@@ -14,12 +14,12 @@ require('../chunk-AHDJXIUB.cjs');
14
14
  require('../chunk-2EI7NCUA.cjs');
15
15
  require('../chunk-NIS5TLOM.cjs');
16
16
  require('../chunk-LKK52DEY.cjs');
17
+ require('../chunk-VZOOGA47.cjs');
17
18
  var chunkEVV32AXB_cjs = require('../chunk-EVV32AXB.cjs');
18
19
  var chunkNZCAWWV4_cjs = require('../chunk-NZCAWWV4.cjs');
19
20
  require('../chunk-MB3S2ETI.cjs');
20
21
  require('../chunk-MEMWZ72Y.cjs');
21
22
  require('../chunk-ZW6FPIFC.cjs');
22
- require('../chunk-VZOOGA47.cjs');
23
23
  var chunkEZLZ3MDU_cjs = require('../chunk-EZLZ3MDU.cjs');
24
24
  var chunk76L6LOP3_cjs = require('../chunk-76L6LOP3.cjs');
25
25
  var chunk32HW2Q33_cjs = require('../chunk-32HW2Q33.cjs');
@@ -322,9 +322,9 @@ function SignalsEditor({
322
322
  {
323
323
  className: ui.cn(
324
324
  "space-y-1.5 rounded-md border p-2",
325
- chunkQK2YO2RP_cjs.isIncompleteSignal(signal) ? "border-destructive/50" : "border-border"
325
+ chunkTL5VXRNT_cjs.isIncompleteSignal(signal) ? "border-destructive/50" : "border-border"
326
326
  ),
327
- "data-incomplete": chunkQK2YO2RP_cjs.isIncompleteSignal(signal) || void 0,
327
+ "data-incomplete": chunkTL5VXRNT_cjs.isIncompleteSignal(signal) || void 0,
328
328
  "data-testid": `${testId}-${i}`,
329
329
  children: [
330
330
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -1612,7 +1612,7 @@ function triggerFields(trigger, clearOthers) {
1612
1612
  return {
1613
1613
  timezone: trigger.timezone,
1614
1614
  rrule: trigger.start === "repeat" ? trigger.rrule.trim() : none,
1615
- run_at: trigger.start === "once" ? chunkQK2YO2RP_cjs.localInputToIso(trigger.runAt) : none,
1615
+ run_at: trigger.start === "once" ? chunkTL5VXRNT_cjs.localInputToIso(trigger.runAt) : none,
1616
1616
  event_kind: trigger.start === "event" ? trigger.eventKind.trim() : none,
1617
1617
  // A step signal is `workflow_signal` narrowed to one signal name.
1618
1618
  event_filter: filter ?? none,
@@ -1628,7 +1628,7 @@ function plan(value, options) {
1628
1628
  criteria: [],
1629
1629
  max_passes: 3,
1630
1630
  documents: [],
1631
- steps: chunkQK2YO2RP_cjs.toPlanSteps(value.workflow, options)
1631
+ steps: chunkTL5VXRNT_cjs.toPlanSteps(value.workflow, options)
1632
1632
  };
1633
1633
  }
1634
1634
  function builderToWorkflowRequest(value, workspaceId, options = {}) {
@@ -1663,7 +1663,7 @@ function builderToWorkflowUpdate(value, options = {}) {
1663
1663
  }
1664
1664
  function workflowRecordToBuilder(record) {
1665
1665
  const planned = record.plan?.steps ?? [];
1666
- const steps = planned.length ? chunkQK2YO2RP_cjs.fromPlanSteps(planned) : record.prompt || record.skill_ref ? [
1666
+ const steps = planned.length ? chunkTL5VXRNT_cjs.fromPlanSteps(planned) : record.prompt || record.skill_ref ? [
1667
1667
  {
1668
1668
  id: "work",
1669
1669
  kind: "agent",
@@ -1671,7 +1671,7 @@ function workflowRecordToBuilder(record) {
1671
1671
  ...record.skill_ref ? { workflow: record.skill_ref } : { run: { kind: "prompt", promptTemplate: record.prompt } }
1672
1672
  }
1673
1673
  ] : [];
1674
- const when = chunkQK2YO2RP_cjs.workflowWhen(record);
1674
+ const when = chunkTL5VXRNT_cjs.workflowWhen(record);
1675
1675
  return {
1676
1676
  workflow: {
1677
1677
  id: record.external_id,
@@ -1680,12 +1680,12 @@ function workflowRecordToBuilder(record) {
1680
1680
  inputs: [],
1681
1681
  landing: "chat",
1682
1682
  schedulable: false,
1683
- run: { kind: "steps", steps, layout: chunkQK2YO2RP_cjs.layoutFromPlanSteps(planned ?? []) }
1683
+ run: { kind: "steps", steps, layout: chunkTL5VXRNT_cjs.layoutFromPlanSteps(planned ?? []) }
1684
1684
  },
1685
1685
  trigger: {
1686
1686
  ...DEFAULT_WORKFLOW_TRIGGER,
1687
1687
  start: when === "now" ? "manual" : when,
1688
- runAt: chunkQK2YO2RP_cjs.isoToLocalInput(record.run_at),
1688
+ runAt: chunkTL5VXRNT_cjs.isoToLocalInput(record.run_at),
1689
1689
  rrule: record.rrule ?? "",
1690
1690
  timezone: record.timezone || DEFAULT_WORKFLOW_TRIGGER.timezone,
1691
1691
  eventKind: record.event_kind ?? "",
@@ -1741,7 +1741,7 @@ function triggerSummary(trigger, options = {}) {
1741
1741
  case "once":
1742
1742
  return trigger.runAt ? new Date(trigger.runAt).toLocaleString() : l.starts.once;
1743
1743
  case "repeat":
1744
- return trigger.rrule ? chunkQK2YO2RP_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
1744
+ return trigger.rrule ? chunkTL5VXRNT_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
1745
1745
  case "event":
1746
1746
  if (isSignalTrigger(trigger))
1747
1747
  return trigger.signal ? l.signalSummary.replace("{signal}", trigger.signal) : l.stepSignals;
@@ -1800,7 +1800,7 @@ function TriggerInspector({
1800
1800
  }
1801
1801
  )
1802
1802
  ] }),
1803
- trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkQK2YO2RP_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
1803
+ trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkTL5VXRNT_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
1804
1804
  trigger.start === "event" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
1805
1805
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.event }),
1806
1806
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1852,7 +1852,7 @@ function TriggerInspector({
1852
1852
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
1853
1853
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.agent }),
1854
1854
  /* @__PURE__ */ jsxRuntime.jsx(
1855
- chunkWKI4ATLQ_cjs.AgentSelect,
1855
+ chunkF5T4R7CN_cjs.AgentSelect,
1856
1856
  {
1857
1857
  agents,
1858
1858
  value: trigger.agentId,
@@ -2689,13 +2689,13 @@ function WorkflowPreview({
2689
2689
  renderIcon,
2690
2690
  testId
2691
2691
  }) {
2692
- const run = chunkCLFJTKQH_cjs.useWorkflowPreview(workflow, {
2692
+ const run = chunkWBBUUEER_cjs.useWorkflowPreview(workflow, {
2693
2693
  resolveWorkflow: (id) => workflows.find((w) => w.id === id),
2694
2694
  compose,
2695
2695
  answer
2696
2696
  });
2697
2697
  return /* @__PURE__ */ jsxRuntime.jsx(
2698
- chunkQK2YO2RP_cjs.WorkflowRunner,
2698
+ chunkTL5VXRNT_cjs.WorkflowRunner,
2699
2699
  {
2700
2700
  workflow,
2701
2701
  run,
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { useWorkflowPreview } from '../chunk-NEZE2BHH.js';
3
- import { isIncompleteSignal, fromPlanSteps, workflowWhen, isoToLocalInput, layoutFromPlanSteps, describeRRule, RecurrenceBuilder, WorkflowRunner, toPlanSteps, localInputToIso } from '../chunk-KQHUPFBX.js';
2
+ import { useWorkflowPreview } from '../chunk-DEB2YRCN.js';
3
+ import { isIncompleteSignal, fromPlanSteps, workflowWhen, isoToLocalInput, layoutFromPlanSteps, describeRRule, RecurrenceBuilder, WorkflowRunner, toPlanSteps, localInputToIso } from '../chunk-R4K5L6QY.js';
4
4
  import '../chunk-CQCC7LE7.js';
5
- import { AgentSelect } from '../chunk-D2IJHMGM.js';
6
- import '../chunk-G4GLDQLY.js';
5
+ import { AgentSelect } from '../chunk-XMUYSOYU.js';
7
6
  import '../chunk-ZWL7GPQX.js';
7
+ import '../chunk-G4GLDQLY.js';
8
8
  import '../chunk-M4S75AEJ.js';
9
9
  import '../chunk-5LXQPP2K.js';
10
10
  import '../chunk-NUNKSZKU.js';
@@ -12,12 +12,12 @@ import '../chunk-RLWIUUQ5.js';
12
12
  import '../chunk-YU2KUMGE.js';
13
13
  import '../chunk-WBCGVEJX.js';
14
14
  import '../chunk-7F5Z4K5W.js';
15
+ import '../chunk-WNDIVNPT.js';
15
16
  import { useConnectedTags, useListedDocuments, useConnectedConversations } from '../chunk-5ETT7ZIO.js';
16
17
  import { useConnectedWorkspace } from '../chunk-IZJ3BOJO.js';
17
18
  import '../chunk-T4P237N6.js';
18
19
  import '../chunk-ABEKUV6L.js';
19
20
  import '../chunk-P6GHJSLR.js';
20
- import '../chunk-WNDIVNPT.js';
21
21
  import { DEFAULT_STEP_KIND_LABELS, workflowSteps, dependsOn, stepLevels, runFields, upstreamSteps, stepDependencies, canAssign, WORKFLOW_STEP_KINDS, STEP_KIND_ICONS, validateWorkflowGraph, stepConfigProblems, assigneeName, orderSteps, stepKindOf } from '../chunk-THNTNAYI.js';
22
22
  import { mergeSkillWorkflows } from '../chunk-TZGBRLPK.js';
23
23
  import { TONE_DOT, TONES, isTone } from '../chunk-AUS3KBHJ.js';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/coedit",
3
- "version": "0.5.26",
3
+ "version": "0.5.27",
4
4
  "description": "Real-time collaboration for the ARBI native DOCX editor: a Yjs mirror of the canonical OOXML package, session, and server runtime",
5
5
  "type": "module",
6
6
  "sideEffects": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/blocks",
3
- "version": "0.5.26",
3
+ "version": "0.5.27",
4
4
  "description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -296,9 +296,9 @@
296
296
  "example:test:e2e": "playwright test -c examples/custom-ui/playwright.config.ts"
297
297
  },
298
298
  "dependencies": {
299
- "@arbidocs/client": "0.5.26",
300
- "@arbidocs/coedit": "0.5.26",
301
- "@arbidocs/sdk": "0.5.26",
299
+ "@arbidocs/client": "0.5.27",
300
+ "@arbidocs/coedit": "0.5.27",
301
+ "@arbidocs/sdk": "0.5.27",
302
302
  "@auth0/auth0-react": "^2.19.0",
303
303
  "@dnd-kit/core": "^6.3.1",
304
304
  "@dnd-kit/sortable": "^10.0.0",
@@ -345,7 +345,7 @@
345
345
  "y-protocols": "^1.0.6"
346
346
  },
347
347
  "peerDependencies": {
348
- "@arbidocs/react": "0.5.26",
348
+ "@arbidocs/react": "0.5.27",
349
349
  "@lexical/html": "0.35.0",
350
350
  "@lexical/link": "0.35.0",
351
351
  "@lexical/list": "0.35.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedStreamedWordArtifact-LRUJ3SC3.cjs"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shell/sidebar-context.ts","../src/shell/SidebarBadgeRow.tsx","../src/shell/Workspace.tsx","../src/shell/ActionCluster.tsx"],"names":["createContext","useContext","forwardRef","SidebarBadgeRow","jsxs","cn","jsx","Tooltip","TooltipTrigger","TooltipContent","Globe","Users","Lock","testIdOr","Fragment","DropdownMenu","DropdownMenuTrigger","ChevronDown","DropdownMenuContent","DropdownMenuItem","LayoutGrid","Plus","DropdownMenuSeparator","DropdownMenuLabel","prefixedTestId","useId"],"mappings":"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","file":"chunk-LFQZDALT.cjs","sourcesContent":["import { createContext, useContext } from 'react'\n\n/** Fixed strings of the sidebar family. Set once on `Sidebar.Root`; parts read them from context. */\nexport interface SidebarLabels {\n /** The sidebar's accessible name (the Root `aria-label` prop wins). */\n mainNavigation: string\n hideSidebar: string\n showSidebar: string\n /** The drawer's close button (the `closeLabel` prop wins). */\n closeNavigationMenu: string\n}\n\nexport const DEFAULT_SIDEBAR_LABELS: SidebarLabels = {\n mainNavigation: 'Main navigation',\n hideSidebar: 'Hide sidebar',\n showSidebar: 'Show sidebar',\n closeNavigationMenu: 'Close navigation menu',\n}\n\nexport interface SidebarContextValue {\n /** Labels are visible (full width), as opposed to the icon-only rail. */\n expanded: boolean\n labels: SidebarLabels\n}\nexport const SidebarContext = createContext<SidebarContextValue>({\n expanded: true,\n labels: DEFAULT_SIDEBAR_LABELS,\n})\nexport const useSidebarContext = (): SidebarContextValue => useContext(SidebarContext)\n\n/** True while the surrounding row is hovered/focused; trailing controls may brighten on it. */\nexport const SidebarRowHoverContext = createContext(false)\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react'\nimport { cn, Tooltip, TooltipContent, TooltipTrigger } from '@arbidocs/react/ui'\nimport { useSidebarContext } from './sidebar-context'\n\nexport interface SidebarBadgeRowProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'children'\n> {\n /** Glyph (20px). */\n icon: ReactNode\n /** Visible label of the expanded row; the tooltip of the icon-only rail. */\n label: string\n /** Unread/pending number. Hidden at 0 or `undefined`; values above 9 read \"9+\". */\n count?: number\n /**\n * Accessible name including the count, for example \"Notifications, 2 unread\". Defaults to\n * `label` plus the count.\n */\n ariaLabel?: string\n /**\n * `row`: a labelled row styled like the module rows, badge at the right. `icon`: icon-only with\n * the badge on the corner. Default follows the sidebar (`row` expanded, `icon` on the rail).\n */\n variant?: 'row' | 'icon'\n /** Test id of the count badge. */\n badgeTestId?: string\n}\n\n/**\n * A sidebar row that carries a badge and may open something (a panel, a popover): the\n * notifications and contacts rows above the account bar. A real button that forwards its ref and\n * rest props, so it can be a popover trigger (`<DropdownMenuTrigger asChild>`). The badge is\n * visible in both the expanded row and the icon-only rail, and the accessible name carries the\n * count in both.\n */\nexport const SidebarBadgeRow = forwardRef<HTMLButtonElement, SidebarBadgeRowProps>(\n function SidebarBadgeRow(\n { icon, label, count, ariaLabel, variant, badgeTestId, className, type = 'button', ...rest },\n ref\n ) {\n const { expanded } = useSidebarContext()\n const resolved = variant ?? (expanded ? 'row' : 'icon')\n const hasCount = count !== undefined && count > 0\n const badgeText = hasCount ? (count > 9 ? '9+' : String(count)) : null\n const name = ariaLabel ?? (hasCount ? `${label}, ${count}` : label)\n\n if (resolved === 'row') {\n return (\n <button\n ref={ref}\n type={type}\n aria-label={name}\n data-slot=\"sidebar-badge-row\"\n data-variant=\"row\"\n className={cn(\n 'group flex h-9 w-full cursor-pointer items-center rounded-md px-3 text-left text-sm font-medium 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:h-11',\n className\n )}\n {...rest}\n >\n <span className=\"flex size-5 flex-shrink-0 items-center justify-center\" aria-hidden>\n {icon}\n </span>\n <span className=\"ml-3 min-w-0 truncate\" aria-hidden>\n {label}\n </span>\n {badgeText && (\n <span\n aria-hidden\n data-testid={badgeTestId}\n className=\"ml-auto inline-flex min-w-5 flex-shrink-0 items-center justify-center rounded-full bg-primary px-1.5 text-xs font-semibold leading-5 tabular-nums text-primary-foreground\"\n >\n {badgeText}\n </span>\n )}\n </button>\n )\n }\n\n const iconButton = (\n <button\n ref={ref}\n type={type}\n aria-label={name}\n data-slot=\"sidebar-badge-row\"\n data-variant=\"icon\"\n title={variant === 'icon' ? label : undefined}\n className={cn(\n 'relative m-0 flex h-9 w-12 items-center justify-center rounded-md 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:h-11',\n className\n )}\n {...rest}\n >\n <span className=\"flex size-5 items-center justify-center\" aria-hidden>\n {icon}\n </span>\n {badgeText && (\n <span\n aria-hidden\n data-testid={badgeTestId}\n className=\"absolute right-1 top-0.5 flex min-w-4 items-center justify-center rounded-full bg-primary px-1 text-xs font-semibold leading-4 tabular-nums text-primary-foreground\"\n >\n {badgeText}\n </span>\n )}\n </button>\n )\n // A standalone icon button (the page header) keeps its native title; the rail uses a tooltip.\n if (variant === 'icon') return iconButton\n return (\n <Tooltip delayDuration={50}>\n <TooltipTrigger asChild>{iconButton}</TooltipTrigger>\n <TooltipContent side=\"right\" sideOffset={8}>\n {label}\n </TooltipContent>\n </Tooltip>\n )\n }\n)\n","import type { ComponentType } from 'react'\nimport { ChevronDown, Globe, LayoutGrid, Lock, Plus, Users } from 'lucide-react'\nimport {\n cn,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\nimport type { ShellRecentWorkspace, ShellWorkspace, ShellWorkspaceKind } from './types'\n\n/** The three workspace-kind names (badge title, type glyph name, subtitle). */\nexport interface WorkspaceKindLabels {\n common: string\n shared: string\n private: string\n}\n\nexport const DEFAULT_WORKSPACE_KIND_LABELS: WorkspaceKindLabels = {\n common: 'Common',\n shared: 'Shared',\n private: 'Private',\n}\n\n/**\n * Workspace type drives the initial-badge fill and a quiet secondary glyph:\n * private (just you) -> navy, lock shared (several) -> selection tint, people\n * common (public) -> neutral, globe\n * Navy is identity and cyan is reserved for ARBI/AI, so \"shared\" is the selection tint.\n */\nexport function workspaceKindMeta(\n kind: ShellWorkspaceKind,\n labels?: Partial<WorkspaceKindLabels>\n): {\n Icon: ComponentType<{ className?: string; 'aria-label'?: string; 'data-testid'?: string }>\n label: string\n fill: string\n} {\n const l = { ...DEFAULT_WORKSPACE_KIND_LABELS, ...labels }\n if (kind === 'common')\n return { Icon: Globe, label: l.common, fill: 'bg-muted text-muted-foreground' }\n if (kind === 'shared')\n return { Icon: Users, label: l.shared, fill: 'bg-secondary text-secondary-foreground' }\n return { Icon: Lock, label: l.private, fill: 'bg-primary text-primary-foreground' }\n}\n\n/** The kind's hue as a CSS colour, for glyphs painted by SVG fill (the workspace shield). */\nexport function workspaceKindColor(kind: ShellWorkspaceKind): string {\n if (kind === 'common') return 'var(--color-muted-foreground)'\n if (kind === 'shared') return 'var(--color-secondary)'\n return 'var(--color-primary)'\n}\n\n/** Overridable ids of the workspace identity; defaults are the current ids. */\ntype WorkspaceIdentityTestIds = Partial<Record<'initial' | 'type' | 'projectName', string>>\n\nexport interface WorkspaceIdentityProps {\n workspace: ShellWorkspace\n /** Show name + type/project line beside the badge; otherwise the badge alone. */\n expanded: boolean\n /** Selected (nav-row) styling of the name. */\n isActive?: boolean\n /** Reword the kind names. */\n labels?: Partial<WorkspaceKindLabels>\n /** Part ids; defaults are the current ids. */\n testIds?: WorkspaceIdentityTestIds\n}\n\n/**\n * Non-interactive guts of the workspace head: the initial badge (with a tiny type glyph) and,\n * when expanded, the name and the project/type line. Hosted by the switcher trigger and by the\n * workspace settings header, so it never nests a button.\n */\nexport function WorkspaceIdentity({\n workspace,\n expanded,\n isActive = false,\n labels,\n testIds,\n}: WorkspaceIdentityProps) {\n const kind = workspaceKindMeta(workspace.kind, labels)\n const badge = (\n <span className=\"relative flex flex-shrink-0\" title={kind.label}>\n <span\n aria-hidden=\"true\"\n data-testid={testIdOr(testIds?.initial, { testId: 'sidebar-workspace-card-initial' })}\n className={cn(\n 'flex size-7 flex-shrink-0 items-center justify-center rounded-md text-sm font-semibold leading-none',\n kind.fill\n )}\n >\n {workspace.name.charAt(0).toUpperCase()}\n </span>\n {/* Type as a tiny overlay on the badge: status reads at the icon, not after the name. */}\n <span className=\"absolute -bottom-1 -right-1 flex size-3.5 items-center justify-center rounded-full bg-background ring-1 ring-border\">\n <kind.Icon\n aria-label={kind.label}\n data-testid={testIdOr(testIds?.type, { testId: 'sidebar-workspace-card-type' })}\n className=\"size-2.5 text-muted-foreground\"\n />\n </span>\n </span>\n )\n\n if (!expanded)\n return <div className=\"flex flex-shrink-0 items-center justify-center\">{badge}</div>\n\n return (\n <>\n <div className=\"flex flex-shrink-0 items-center justify-center\">{badge}</div>\n <div className=\"ml-2.5 flex min-w-0 flex-1 flex-col text-left\">\n <span\n // 600: the name of the thing you are inside, above a lighter project line.\n className={cn(\n 'min-w-0 truncate text-left text-sm font-semibold capitalize leading-tight transition-colors duration-100',\n isActive ? 'text-accent-foreground' : 'text-foreground'\n )}\n >\n {workspace.name}\n </span>\n {!workspace.projectName && (\n <span className=\"mt-0.5 truncate text-xs text-muted-foreground\">{kind.label}</span>\n )}\n {workspace.projectName && (\n <span\n className=\"mt-0.5 flex min-w-0\"\n data-testid={testIdOr(testIds?.projectName, {\n testId: 'sidebar-workspace-card-project-name',\n })}\n >\n {workspace.projectLine ?? (\n <span className=\"truncate text-xs text-muted-foreground\">\n {workspace.projectName}\n </span>\n )}\n </span>\n )}\n </div>\n </>\n )\n}\n\n/**\n * Entity nouns plus the switcher's strings. `plural` arrives lowercased and `singular`\n * capitalized in the functions below.\n */\nexport interface WorkspaceSwitcherLabels extends WorkspaceKindLabels {\n /** Entity nouns, e.g. { plural: 'workspaces', singular: 'workspace' }. */\n plural: string\n singular: string\n /** The trigger's accessible name. */\n switchWorkspace: (name: string, plural: string) => string\n allWorkspaces: (plural: string) => string\n newWorkspace: (singular: string) => string\n recentWorkspaces: (plural: string) => string\n}\n\nexport const DEFAULT_WORKSPACE_SWITCHER_LABELS: WorkspaceSwitcherLabels = {\n ...DEFAULT_WORKSPACE_KIND_LABELS,\n plural: 'workspaces',\n singular: 'workspace',\n switchWorkspace: (name, plural) => `${name} — switch ${plural}`,\n allWorkspaces: (plural) => `All ${plural}`,\n newWorkspace: (singular) => `New ${singular}`,\n recentWorkspaces: (plural) => `Recent ${plural}`,\n}\n\nexport interface WorkspaceSwitcherProps {\n workspace: ShellWorkspace\n /** Other workspaces to jump to (the app orders and caps them). */\n recent?: ShellRecentWorkspace[]\n /** Icon-only trigger (the sidebar rail). */\n compact?: boolean\n /** `appbar`: the phone app bar's title, name + chevron on one line. */\n variant?: 'sidebar' | 'appbar'\n onSwitch: (workspace: ShellWorkspace) => void\n /** Return to the workspaces list; leaves the workspace open. */\n onGoToList: () => void\n onNewWorkspace: () => void\n /**\n * When set, \"New workspace\" is shown disabled with this explanation under it (e.g. the user may\n * not create workspaces on this deployment).\n */\n newWorkspaceDisabledReason?: string\n /** Entity nouns and menu strings; any subset (the nouns default to workspace(s)). */\n labels?: Partial<WorkspaceSwitcherLabels>\n className?: string\n /** Trigger id (default `workspace-switcher-trigger`). */\n testId?: string\n /**\n * Part ids; defaults are the current ids. `switchItem`, `type` and `lastSeen` are prefixes\n * (`<prefix>-<workspace id>`).\n */\n testIds?: Partial<Record<'menu' | 'all' | 'new' | 'switchItem' | 'type' | 'lastSeen', string>>\n /** Ids forwarded to the trigger's workspace identity. */\n identityTestIds?: WorkspaceIdentityTestIds\n}\n\n/**\n * The current-workspace control as a dropdown: \"All workspaces\", \"New workspace\", then the\n * recent workspaces to jump straight into.\n */\nexport function WorkspaceSwitcher({\n workspace,\n recent = [],\n compact = false,\n variant = 'sidebar',\n onSwitch,\n onGoToList,\n onNewWorkspace,\n newWorkspaceDisabledReason,\n labels,\n className,\n testId,\n testIds,\n identityTestIds,\n}: WorkspaceSwitcherProps) {\n const l = { ...DEFAULT_WORKSPACE_SWITCHER_LABELS, ...labels }\n const plural = l.plural.toLowerCase()\n const singular = l.singular.charAt(0).toUpperCase() + l.singular.slice(1)\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"workspace-switcher\"\n data-testid={testIdOr(testId, { testId: 'workspace-switcher-trigger' })}\n aria-label={l.switchWorkspace(workspace.name, plural)}\n className={cn(\n 'group flex min-w-0 items-center rounded-md transition-colors duration-100 hover:bg-muted focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n variant === 'appbar'\n ? 'h-11 max-w-full gap-1 px-2'\n : compact\n ? 'h-12 w-12 justify-center'\n : 'h-12 w-full px-2',\n className\n )}\n >\n {variant === 'appbar' ? (\n <span className=\"min-w-0 truncate text-base font-semibold text-foreground\">\n {workspace.name}\n </span>\n ) : (\n <WorkspaceIdentity\n workspace={workspace}\n expanded={!compact}\n labels={l}\n testIds={identityTestIds}\n />\n )}\n {!(compact && variant === 'sidebar') && (\n <ChevronDown\n aria-hidden=\"true\"\n className=\"ml-auto size-4 flex-shrink-0 text-muted-foreground transition-transform duration-150 group-data-[state=open]:rotate-180\"\n />\n )}\n </button>\n </DropdownMenuTrigger>\n {/* Expanded menus follow the trigger width so they stay inside the sidebar. */}\n <DropdownMenuContent\n align=\"start\"\n className={cn(\n 'border-0 max-w-[calc(100vw-1.5rem)]',\n variant === 'sidebar' && !compact\n ? 'w-[var(--radix-dropdown-menu-trigger-width)]'\n : 'w-60'\n )}\n data-testid={testIdOr(testIds?.menu, { testId: 'workspace-switcher-menu' })}\n >\n <DropdownMenuItem\n onClick={onGoToList}\n data-testid={testIdOr(testIds?.all, { testId: 'workspace-switcher-all' })}\n className=\"gap-2\"\n >\n <LayoutGrid className=\"size-4 flex-shrink-0 text-muted-foreground\" />\n {l.allWorkspaces(plural)}\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={newWorkspaceDisabledReason ? undefined : onNewWorkspace}\n disabled={!!newWorkspaceDisabledReason}\n title={newWorkspaceDisabledReason}\n data-testid={testIdOr(testIds?.new, { testId: 'workspace-switcher-new' })}\n className=\"gap-2\"\n >\n <Plus className=\"size-4 flex-shrink-0 text-muted-foreground\" />\n <span className=\"flex min-w-0 flex-col\">\n {l.newWorkspace(singular)}\n {newWorkspaceDisabledReason && (\n <span className=\"text-xs text-muted-foreground\">{newWorkspaceDisabledReason}</span>\n )}\n </span>\n </DropdownMenuItem>\n {recent.length > 0 && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"text-xs font-normal text-muted-foreground\">\n {l.recentWorkspaces(plural)}\n </DropdownMenuLabel>\n {recent.map((w) => {\n const kind = workspaceKindMeta(w.kind, l)\n return (\n <DropdownMenuItem\n key={w.id}\n onClick={() => onSwitch(w)}\n data-testid={prefixedTestId(testIds?.switchItem, w.id, {\n testId: `workspace-switch-${w.id}`,\n })}\n className=\"gap-2\"\n >\n <span className=\"relative flex flex-shrink-0\" title={kind.label}>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-6 flex-shrink-0 items-center justify-center rounded text-xs font-semibold leading-none',\n kind.fill\n )}\n >\n {w.name.charAt(0).toUpperCase()}\n </span>\n <span className=\"absolute -bottom-1 -right-1 flex size-3 items-center justify-center rounded-full bg-background ring-1 ring-border\">\n <kind.Icon\n aria-label={kind.label}\n data-testid={prefixedTestId(testIds?.type, w.id, {\n testId: `workspace-type-${w.id}`,\n })}\n className=\"size-2 text-muted-foreground\"\n />\n </span>\n </span>\n <span className=\"min-w-0 flex-1 truncate capitalize\">{w.name}</span>\n {w.lastSeen && (\n <span\n className=\"ml-2 flex-shrink-0 text-xs tabular-nums text-muted-foreground\"\n data-testid={prefixedTestId(testIds?.lastSeen, w.id, {\n testId: `workspace-last-seen-${w.id}`,\n })}\n >\n {w.lastSeen}\n </span>\n )}\n </DropdownMenuItem>\n )\n })}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import { useId, type MouseEvent, type ReactNode } from 'react'\nimport type { ShellActionLayout } from './types'\n\nexport interface ActionClusterProps {\n /**\n * `bar`: one row for a page header or phone app bar (status, bell, contacts, account).\n * `sidebar`: the bottom of the expanded sidebar: the bell and contacts rows stacked above the\n * account row.\n * `rail`: the same stack on the icon-only rail (same order, icon-only rows).\n * `drawer`: the phone drawer's rows (bell and contacts only; the app bar carries the account).\n */\n layout?: ShellActionLayout\n /** Status pill (remote control); `bar` only. Other layouts show status in their own rows. */\n status?: ReactNode\n /** Report a problem (bug icon), first in the cluster. */\n report?: ReactNode\n /** Notification bell (the kit's NotificationBell, or a `Sidebar.BadgeRow`). */\n mail?: ReactNode\n /** Calendar entry (a `Sidebar.BadgeRow`), right after mail. */\n calendar?: ReactNode\n /** Databases entry (a `Sidebar.BadgeRow`), right after calendar. */\n databases?: ReactNode\n bell?: ReactNode\n /** Contacts / messages entry with its own badge (a `Sidebar.BadgeRow`). */\n contacts?: ReactNode\n /** Account menu (the kit's UserMenu). */\n account?: ReactNode\n /**\n * Names the cluster: the group's accessible name in every layout, and a visible heading above\n * the rows in the `drawer` layout (where phones otherwise get unlabelled rows).\n */\n label?: string\n 'data-testid'?: string\n}\n\n/**\n * The account area: notifications, contacts and the account menu, in one of four placements. In\n * the sidebar and on the rail the two badge rows are stacked above the account row in the same\n * order, so nothing moves when the rail expands; the account menu holds everything else (help,\n * settings, tips, processing).\n */\nexport function ActionCluster({\n layout = 'bar',\n status,\n report,\n mail,\n calendar,\n databases,\n bell,\n contacts,\n account,\n label,\n 'data-testid': testId = 'sidebar-actions',\n}: ActionClusterProps) {\n const labelId = useId()\n // Dashboard's content area resets focus on click, and Radix PORTALS bubble through the React\n // tree: stop clicks here or a dropdown item (e.g. \"View all\") would un-focus the panel it opened.\n const stop = (e: MouseEvent) => e.stopPropagation()\n\n if (layout === 'sidebar' || layout === 'rail' || layout === 'drawer') {\n const rail = layout === 'rail'\n return (\n <div\n className={rail ? 'flex flex-col items-center gap-0.5' : 'flex flex-col gap-0.5'}\n onClick={stop}\n role={label ? 'group' : undefined}\n aria-labelledby={label && layout === 'drawer' ? labelId : undefined}\n aria-label={label && layout !== 'drawer' ? label : undefined}\n data-slot=\"action-cluster\"\n data-layout={layout}\n data-testid={testId}\n >\n {label && layout === 'drawer' && (\n <p\n id={labelId}\n className=\"px-3 pb-1 pt-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground\"\n data-slot=\"action-cluster-label\"\n >\n {label}\n </p>\n )}\n {report}\n {mail}\n {calendar}\n {databases}\n {bell}\n {contacts}\n {account && layout !== 'drawer' && (\n <div className={rail ? 'mt-1' : 'mt-1 min-w-0'}>{account}</div>\n )}\n </div>\n )\n }\n\n return (\n <div\n className=\"flex items-center gap-1\"\n onClick={stop}\n role={label ? 'group' : undefined}\n aria-label={label}\n data-slot=\"action-cluster\"\n >\n {status}\n {report}\n {mail}\n {calendar}\n {databases}\n {bell}\n {contacts}\n {account}\n </div>\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shell/sidebar-context.ts","../src/shell/SidebarBadgeRow.tsx","../src/shell/Workspace.tsx","../src/shell/ActionCluster.tsx"],"names":["SidebarBadgeRow","jsxs","jsx","cn"],"mappings":"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","file":"chunk-XYPVZKAN.js","sourcesContent":["import { createContext, useContext } from 'react'\n\n/** Fixed strings of the sidebar family. Set once on `Sidebar.Root`; parts read them from context. */\nexport interface SidebarLabels {\n /** The sidebar's accessible name (the Root `aria-label` prop wins). */\n mainNavigation: string\n hideSidebar: string\n showSidebar: string\n /** The drawer's close button (the `closeLabel` prop wins). */\n closeNavigationMenu: string\n}\n\nexport const DEFAULT_SIDEBAR_LABELS: SidebarLabels = {\n mainNavigation: 'Main navigation',\n hideSidebar: 'Hide sidebar',\n showSidebar: 'Show sidebar',\n closeNavigationMenu: 'Close navigation menu',\n}\n\nexport interface SidebarContextValue {\n /** Labels are visible (full width), as opposed to the icon-only rail. */\n expanded: boolean\n labels: SidebarLabels\n}\nexport const SidebarContext = createContext<SidebarContextValue>({\n expanded: true,\n labels: DEFAULT_SIDEBAR_LABELS,\n})\nexport const useSidebarContext = (): SidebarContextValue => useContext(SidebarContext)\n\n/** True while the surrounding row is hovered/focused; trailing controls may brighten on it. */\nexport const SidebarRowHoverContext = createContext(false)\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react'\nimport { cn, Tooltip, TooltipContent, TooltipTrigger } from '@arbidocs/react/ui'\nimport { useSidebarContext } from './sidebar-context'\n\nexport interface SidebarBadgeRowProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'children'\n> {\n /** Glyph (20px). */\n icon: ReactNode\n /** Visible label of the expanded row; the tooltip of the icon-only rail. */\n label: string\n /** Unread/pending number. Hidden at 0 or `undefined`; values above 9 read \"9+\". */\n count?: number\n /**\n * Accessible name including the count, for example \"Notifications, 2 unread\". Defaults to\n * `label` plus the count.\n */\n ariaLabel?: string\n /**\n * `row`: a labelled row styled like the module rows, badge at the right. `icon`: icon-only with\n * the badge on the corner. Default follows the sidebar (`row` expanded, `icon` on the rail).\n */\n variant?: 'row' | 'icon'\n /** Test id of the count badge. */\n badgeTestId?: string\n}\n\n/**\n * A sidebar row that carries a badge and may open something (a panel, a popover): the\n * notifications and contacts rows above the account bar. A real button that forwards its ref and\n * rest props, so it can be a popover trigger (`<DropdownMenuTrigger asChild>`). The badge is\n * visible in both the expanded row and the icon-only rail, and the accessible name carries the\n * count in both.\n */\nexport const SidebarBadgeRow = forwardRef<HTMLButtonElement, SidebarBadgeRowProps>(\n function SidebarBadgeRow(\n { icon, label, count, ariaLabel, variant, badgeTestId, className, type = 'button', ...rest },\n ref\n ) {\n const { expanded } = useSidebarContext()\n const resolved = variant ?? (expanded ? 'row' : 'icon')\n const hasCount = count !== undefined && count > 0\n const badgeText = hasCount ? (count > 9 ? '9+' : String(count)) : null\n const name = ariaLabel ?? (hasCount ? `${label}, ${count}` : label)\n\n if (resolved === 'row') {\n return (\n <button\n ref={ref}\n type={type}\n aria-label={name}\n data-slot=\"sidebar-badge-row\"\n data-variant=\"row\"\n className={cn(\n 'group flex h-9 w-full cursor-pointer items-center rounded-md px-3 text-left text-sm font-medium 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:h-11',\n className\n )}\n {...rest}\n >\n <span className=\"flex size-5 flex-shrink-0 items-center justify-center\" aria-hidden>\n {icon}\n </span>\n <span className=\"ml-3 min-w-0 truncate\" aria-hidden>\n {label}\n </span>\n {badgeText && (\n <span\n aria-hidden\n data-testid={badgeTestId}\n className=\"ml-auto inline-flex min-w-5 flex-shrink-0 items-center justify-center rounded-full bg-primary px-1.5 text-xs font-semibold leading-5 tabular-nums text-primary-foreground\"\n >\n {badgeText}\n </span>\n )}\n </button>\n )\n }\n\n const iconButton = (\n <button\n ref={ref}\n type={type}\n aria-label={name}\n data-slot=\"sidebar-badge-row\"\n data-variant=\"icon\"\n title={variant === 'icon' ? label : undefined}\n className={cn(\n 'relative m-0 flex h-9 w-12 items-center justify-center rounded-md 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:h-11',\n className\n )}\n {...rest}\n >\n <span className=\"flex size-5 items-center justify-center\" aria-hidden>\n {icon}\n </span>\n {badgeText && (\n <span\n aria-hidden\n data-testid={badgeTestId}\n className=\"absolute right-1 top-0.5 flex min-w-4 items-center justify-center rounded-full bg-primary px-1 text-xs font-semibold leading-4 tabular-nums text-primary-foreground\"\n >\n {badgeText}\n </span>\n )}\n </button>\n )\n // A standalone icon button (the page header) keeps its native title; the rail uses a tooltip.\n if (variant === 'icon') return iconButton\n return (\n <Tooltip delayDuration={50}>\n <TooltipTrigger asChild>{iconButton}</TooltipTrigger>\n <TooltipContent side=\"right\" sideOffset={8}>\n {label}\n </TooltipContent>\n </Tooltip>\n )\n }\n)\n","import type { ComponentType } from 'react'\nimport { ChevronDown, Globe, LayoutGrid, Lock, Plus, Users } from 'lucide-react'\nimport {\n cn,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@arbidocs/react/ui'\nimport { prefixedTestId, testIdOr } from '../chat/test-id'\nimport type { ShellRecentWorkspace, ShellWorkspace, ShellWorkspaceKind } from './types'\n\n/** The three workspace-kind names (badge title, type glyph name, subtitle). */\nexport interface WorkspaceKindLabels {\n common: string\n shared: string\n private: string\n}\n\nexport const DEFAULT_WORKSPACE_KIND_LABELS: WorkspaceKindLabels = {\n common: 'Common',\n shared: 'Shared',\n private: 'Private',\n}\n\n/**\n * Workspace type drives the initial-badge fill and a quiet secondary glyph:\n * private (just you) -> navy, lock shared (several) -> selection tint, people\n * common (public) -> neutral, globe\n * Navy is identity and cyan is reserved for ARBI/AI, so \"shared\" is the selection tint.\n */\nexport function workspaceKindMeta(\n kind: ShellWorkspaceKind,\n labels?: Partial<WorkspaceKindLabels>\n): {\n Icon: ComponentType<{ className?: string; 'aria-label'?: string; 'data-testid'?: string }>\n label: string\n fill: string\n} {\n const l = { ...DEFAULT_WORKSPACE_KIND_LABELS, ...labels }\n if (kind === 'common')\n return { Icon: Globe, label: l.common, fill: 'bg-muted text-muted-foreground' }\n if (kind === 'shared')\n return { Icon: Users, label: l.shared, fill: 'bg-secondary text-secondary-foreground' }\n return { Icon: Lock, label: l.private, fill: 'bg-primary text-primary-foreground' }\n}\n\n/** The kind's hue as a CSS colour, for glyphs painted by SVG fill (the workspace shield). */\nexport function workspaceKindColor(kind: ShellWorkspaceKind): string {\n if (kind === 'common') return 'var(--color-muted-foreground)'\n if (kind === 'shared') return 'var(--color-secondary)'\n return 'var(--color-primary)'\n}\n\n/** Overridable ids of the workspace identity; defaults are the current ids. */\ntype WorkspaceIdentityTestIds = Partial<Record<'initial' | 'type' | 'projectName', string>>\n\nexport interface WorkspaceIdentityProps {\n workspace: ShellWorkspace\n /** Show name + type/project line beside the badge; otherwise the badge alone. */\n expanded: boolean\n /** Selected (nav-row) styling of the name. */\n isActive?: boolean\n /** Reword the kind names. */\n labels?: Partial<WorkspaceKindLabels>\n /** Part ids; defaults are the current ids. */\n testIds?: WorkspaceIdentityTestIds\n}\n\n/**\n * Non-interactive guts of the workspace head: the initial badge (with a tiny type glyph) and,\n * when expanded, the name and the project/type line. Hosted by the switcher trigger and by the\n * workspace settings header, so it never nests a button.\n */\nexport function WorkspaceIdentity({\n workspace,\n expanded,\n isActive = false,\n labels,\n testIds,\n}: WorkspaceIdentityProps) {\n const kind = workspaceKindMeta(workspace.kind, labels)\n const badge = (\n <span className=\"relative flex flex-shrink-0\" title={kind.label}>\n <span\n aria-hidden=\"true\"\n data-testid={testIdOr(testIds?.initial, { testId: 'sidebar-workspace-card-initial' })}\n className={cn(\n 'flex size-7 flex-shrink-0 items-center justify-center rounded-md text-sm font-semibold leading-none',\n kind.fill\n )}\n >\n {workspace.name.charAt(0).toUpperCase()}\n </span>\n {/* Type as a tiny overlay on the badge: status reads at the icon, not after the name. */}\n <span className=\"absolute -bottom-1 -right-1 flex size-3.5 items-center justify-center rounded-full bg-background ring-1 ring-border\">\n <kind.Icon\n aria-label={kind.label}\n data-testid={testIdOr(testIds?.type, { testId: 'sidebar-workspace-card-type' })}\n className=\"size-2.5 text-muted-foreground\"\n />\n </span>\n </span>\n )\n\n if (!expanded)\n return <div className=\"flex flex-shrink-0 items-center justify-center\">{badge}</div>\n\n return (\n <>\n <div className=\"flex flex-shrink-0 items-center justify-center\">{badge}</div>\n <div className=\"ml-2.5 flex min-w-0 flex-1 flex-col text-left\">\n <span\n // 600: the name of the thing you are inside, above a lighter project line.\n className={cn(\n 'min-w-0 truncate text-left text-sm font-semibold capitalize leading-tight transition-colors duration-100',\n isActive ? 'text-accent-foreground' : 'text-foreground'\n )}\n >\n {workspace.name}\n </span>\n {!workspace.projectName && (\n <span className=\"mt-0.5 truncate text-xs text-muted-foreground\">{kind.label}</span>\n )}\n {workspace.projectName && (\n <span\n className=\"mt-0.5 flex min-w-0\"\n data-testid={testIdOr(testIds?.projectName, {\n testId: 'sidebar-workspace-card-project-name',\n })}\n >\n {workspace.projectLine ?? (\n <span className=\"truncate text-xs text-muted-foreground\">\n {workspace.projectName}\n </span>\n )}\n </span>\n )}\n </div>\n </>\n )\n}\n\n/**\n * Entity nouns plus the switcher's strings. `plural` arrives lowercased and `singular`\n * capitalized in the functions below.\n */\nexport interface WorkspaceSwitcherLabels extends WorkspaceKindLabels {\n /** Entity nouns, e.g. { plural: 'workspaces', singular: 'workspace' }. */\n plural: string\n singular: string\n /** The trigger's accessible name. */\n switchWorkspace: (name: string, plural: string) => string\n allWorkspaces: (plural: string) => string\n newWorkspace: (singular: string) => string\n recentWorkspaces: (plural: string) => string\n}\n\nexport const DEFAULT_WORKSPACE_SWITCHER_LABELS: WorkspaceSwitcherLabels = {\n ...DEFAULT_WORKSPACE_KIND_LABELS,\n plural: 'workspaces',\n singular: 'workspace',\n switchWorkspace: (name, plural) => `${name} — switch ${plural}`,\n allWorkspaces: (plural) => `All ${plural}`,\n newWorkspace: (singular) => `New ${singular}`,\n recentWorkspaces: (plural) => `Recent ${plural}`,\n}\n\nexport interface WorkspaceSwitcherProps {\n workspace: ShellWorkspace\n /** Other workspaces to jump to (the app orders and caps them). */\n recent?: ShellRecentWorkspace[]\n /** Icon-only trigger (the sidebar rail). */\n compact?: boolean\n /** `appbar`: the phone app bar's title, name + chevron on one line. */\n variant?: 'sidebar' | 'appbar'\n onSwitch: (workspace: ShellWorkspace) => void\n /** Return to the workspaces list; leaves the workspace open. */\n onGoToList: () => void\n onNewWorkspace: () => void\n /**\n * When set, \"New workspace\" is shown disabled with this explanation under it (e.g. the user may\n * not create workspaces on this deployment).\n */\n newWorkspaceDisabledReason?: string\n /** Entity nouns and menu strings; any subset (the nouns default to workspace(s)). */\n labels?: Partial<WorkspaceSwitcherLabels>\n className?: string\n /** Trigger id (default `workspace-switcher-trigger`). */\n testId?: string\n /**\n * Part ids; defaults are the current ids. `switchItem`, `type` and `lastSeen` are prefixes\n * (`<prefix>-<workspace id>`).\n */\n testIds?: Partial<Record<'menu' | 'all' | 'new' | 'switchItem' | 'type' | 'lastSeen', string>>\n /** Ids forwarded to the trigger's workspace identity. */\n identityTestIds?: WorkspaceIdentityTestIds\n}\n\n/**\n * The current-workspace control as a dropdown: \"All workspaces\", \"New workspace\", then the\n * recent workspaces to jump straight into.\n */\nexport function WorkspaceSwitcher({\n workspace,\n recent = [],\n compact = false,\n variant = 'sidebar',\n onSwitch,\n onGoToList,\n onNewWorkspace,\n newWorkspaceDisabledReason,\n labels,\n className,\n testId,\n testIds,\n identityTestIds,\n}: WorkspaceSwitcherProps) {\n const l = { ...DEFAULT_WORKSPACE_SWITCHER_LABELS, ...labels }\n const plural = l.plural.toLowerCase()\n const singular = l.singular.charAt(0).toUpperCase() + l.singular.slice(1)\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"workspace-switcher\"\n data-testid={testIdOr(testId, { testId: 'workspace-switcher-trigger' })}\n aria-label={l.switchWorkspace(workspace.name, plural)}\n className={cn(\n 'group flex min-w-0 items-center rounded-md transition-colors duration-100 hover:bg-muted focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n variant === 'appbar'\n ? 'h-11 max-w-full gap-1 px-2'\n : compact\n ? 'h-12 w-12 justify-center'\n : 'h-12 w-full px-2',\n className\n )}\n >\n {variant === 'appbar' ? (\n <span className=\"min-w-0 truncate text-base font-semibold text-foreground\">\n {workspace.name}\n </span>\n ) : (\n <WorkspaceIdentity\n workspace={workspace}\n expanded={!compact}\n labels={l}\n testIds={identityTestIds}\n />\n )}\n {!(compact && variant === 'sidebar') && (\n <ChevronDown\n aria-hidden=\"true\"\n className=\"ml-auto size-4 flex-shrink-0 text-muted-foreground transition-transform duration-150 group-data-[state=open]:rotate-180\"\n />\n )}\n </button>\n </DropdownMenuTrigger>\n {/* Expanded menus follow the trigger width so they stay inside the sidebar. */}\n <DropdownMenuContent\n align=\"start\"\n className={cn(\n 'border-0 max-w-[calc(100vw-1.5rem)]',\n variant === 'sidebar' && !compact\n ? 'w-[var(--radix-dropdown-menu-trigger-width)]'\n : 'w-60'\n )}\n data-testid={testIdOr(testIds?.menu, { testId: 'workspace-switcher-menu' })}\n >\n <DropdownMenuItem\n onClick={onGoToList}\n data-testid={testIdOr(testIds?.all, { testId: 'workspace-switcher-all' })}\n className=\"gap-2\"\n >\n <LayoutGrid className=\"size-4 flex-shrink-0 text-muted-foreground\" />\n {l.allWorkspaces(plural)}\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={newWorkspaceDisabledReason ? undefined : onNewWorkspace}\n disabled={!!newWorkspaceDisabledReason}\n title={newWorkspaceDisabledReason}\n data-testid={testIdOr(testIds?.new, { testId: 'workspace-switcher-new' })}\n className=\"gap-2\"\n >\n <Plus className=\"size-4 flex-shrink-0 text-muted-foreground\" />\n <span className=\"flex min-w-0 flex-col\">\n {l.newWorkspace(singular)}\n {newWorkspaceDisabledReason && (\n <span className=\"text-xs text-muted-foreground\">{newWorkspaceDisabledReason}</span>\n )}\n </span>\n </DropdownMenuItem>\n {recent.length > 0 && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"text-xs font-normal text-muted-foreground\">\n {l.recentWorkspaces(plural)}\n </DropdownMenuLabel>\n {recent.map((w) => {\n const kind = workspaceKindMeta(w.kind, l)\n return (\n <DropdownMenuItem\n key={w.id}\n onClick={() => onSwitch(w)}\n data-testid={prefixedTestId(testIds?.switchItem, w.id, {\n testId: `workspace-switch-${w.id}`,\n })}\n className=\"gap-2\"\n >\n <span className=\"relative flex flex-shrink-0\" title={kind.label}>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-6 flex-shrink-0 items-center justify-center rounded text-xs font-semibold leading-none',\n kind.fill\n )}\n >\n {w.name.charAt(0).toUpperCase()}\n </span>\n <span className=\"absolute -bottom-1 -right-1 flex size-3 items-center justify-center rounded-full bg-background ring-1 ring-border\">\n <kind.Icon\n aria-label={kind.label}\n data-testid={prefixedTestId(testIds?.type, w.id, {\n testId: `workspace-type-${w.id}`,\n })}\n className=\"size-2 text-muted-foreground\"\n />\n </span>\n </span>\n <span className=\"min-w-0 flex-1 truncate capitalize\">{w.name}</span>\n {w.lastSeen && (\n <span\n className=\"ml-2 flex-shrink-0 text-xs tabular-nums text-muted-foreground\"\n data-testid={prefixedTestId(testIds?.lastSeen, w.id, {\n testId: `workspace-last-seen-${w.id}`,\n })}\n >\n {w.lastSeen}\n </span>\n )}\n </DropdownMenuItem>\n )\n })}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import { useId, type MouseEvent, type ReactNode } from 'react'\nimport type { ShellActionLayout } from './types'\n\nexport interface ActionClusterProps {\n /**\n * `bar`: one row for a page header or phone app bar (status, bell, contacts, account).\n * `sidebar`: the bottom of the expanded sidebar: the bell and contacts rows stacked above the\n * account row.\n * `rail`: the same stack on the icon-only rail (same order, icon-only rows).\n * `drawer`: the phone drawer's rows (bell and contacts only; the app bar carries the account).\n */\n layout?: ShellActionLayout\n /** Status pill (remote control); `bar` only. Other layouts show status in their own rows. */\n status?: ReactNode\n /** Report a problem (bug icon), first in the cluster. */\n report?: ReactNode\n /** Notification bell (the kit's NotificationBell, or a `Sidebar.BadgeRow`). */\n mail?: ReactNode\n /** Calendar entry (a `Sidebar.BadgeRow`), right after mail. */\n calendar?: ReactNode\n /** Databases entry (a `Sidebar.BadgeRow`), right after calendar. */\n databases?: ReactNode\n bell?: ReactNode\n /** Contacts / messages entry with its own badge (a `Sidebar.BadgeRow`). */\n contacts?: ReactNode\n /** Account menu (the kit's UserMenu). */\n account?: ReactNode\n /**\n * Names the cluster: the group's accessible name in every layout, and a visible heading above\n * the rows in the `drawer` layout (where phones otherwise get unlabelled rows).\n */\n label?: string\n 'data-testid'?: string\n}\n\n/**\n * The account area: notifications, contacts and the account menu, in one of four placements. In\n * the sidebar and on the rail the two badge rows are stacked above the account row in the same\n * order, so nothing moves when the rail expands; the account menu holds everything else (help,\n * settings, tips, processing).\n */\nexport function ActionCluster({\n layout = 'bar',\n status,\n report,\n mail,\n calendar,\n databases,\n bell,\n contacts,\n account,\n label,\n 'data-testid': testId = 'sidebar-actions',\n}: ActionClusterProps) {\n const labelId = useId()\n // Dashboard's content area resets focus on click, and Radix PORTALS bubble through the React\n // tree: stop clicks here or a dropdown item (e.g. \"View all\") would un-focus the panel it opened.\n const stop = (e: MouseEvent) => e.stopPropagation()\n\n if (layout === 'sidebar' || layout === 'rail' || layout === 'drawer') {\n const rail = layout === 'rail'\n return (\n <div\n className={rail ? 'flex flex-col items-center gap-0.5' : 'flex flex-col gap-0.5'}\n onClick={stop}\n role={label ? 'group' : undefined}\n aria-labelledby={label && layout === 'drawer' ? labelId : undefined}\n aria-label={label && layout !== 'drawer' ? label : undefined}\n data-slot=\"action-cluster\"\n data-layout={layout}\n data-testid={testId}\n >\n {label && layout === 'drawer' && (\n <p\n id={labelId}\n className=\"px-3 pb-1 pt-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground\"\n data-slot=\"action-cluster-label\"\n >\n {label}\n </p>\n )}\n {report}\n {mail}\n {calendar}\n {databases}\n {bell}\n {contacts}\n {account && layout !== 'drawer' && (\n <div className={rail ? 'mt-1' : 'mt-1 min-w-0'}>{account}</div>\n )}\n </div>\n )\n }\n\n return (\n <div\n className=\"flex items-center gap-1\"\n onClick={stop}\n role={label ? 'group' : undefined}\n aria-label={label}\n data-slot=\"action-cluster\"\n >\n {status}\n {report}\n {mail}\n {calendar}\n {databases}\n {bell}\n {contacts}\n {account}\n </div>\n )\n}\n"]}