@arbidocs/blocks 0.5.65 → 0.5.67

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 (199) hide show
  1. package/README.md +5 -0
  2. package/dist/{ConnectedCallDock-GJAGY75U.cjs → ConnectedCallDock-FFIDDYGH.cjs} +6 -6
  3. package/dist/{ConnectedCallDock-GJAGY75U.cjs.map → ConnectedCallDock-FFIDDYGH.cjs.map} +1 -1
  4. package/dist/{ConnectedCallDock-DEAEFUUD.js → ConnectedCallDock-VMEBH4LG.js} +6 -6
  5. package/dist/{ConnectedCallDock-DEAEFUUD.js.map → ConnectedCallDock-VMEBH4LG.js.map} +1 -1
  6. package/dist/{ConnectedCallRoom-DI7UYRHE.js → ConnectedCallRoom-2FNSX2VG.js} +6 -6
  7. package/dist/{ConnectedCallRoom-DI7UYRHE.js.map → ConnectedCallRoom-2FNSX2VG.js.map} +1 -1
  8. package/dist/{ConnectedCallRoom-KLE2PCMQ.cjs → ConnectedCallRoom-HYRLJUIV.cjs} +6 -6
  9. package/dist/{ConnectedCallRoom-KLE2PCMQ.cjs.map → ConnectedCallRoom-HYRLJUIV.cjs.map} +1 -1
  10. package/dist/{ConnectedDocumentViewer-YSZWOVGN.cjs → ConnectedDocumentViewer-IQHDCAZ5.cjs} +12 -12
  11. package/dist/{ConnectedDocumentViewer-YSZWOVGN.cjs.map → ConnectedDocumentViewer-IQHDCAZ5.cjs.map} +1 -1
  12. package/dist/{ConnectedDocumentViewer-HKIBNGGG.js → ConnectedDocumentViewer-NIZBKBJN.js} +11 -11
  13. package/dist/{ConnectedDocumentViewer-HKIBNGGG.js.map → ConnectedDocumentViewer-NIZBKBJN.js.map} +1 -1
  14. package/dist/{ConnectedNativeDocxComparison-PSAP3Q7D.js → ConnectedNativeDocxComparison-FPW3BNBN.js} +6 -6
  15. package/dist/ConnectedNativeDocxComparison-FPW3BNBN.js.map +1 -0
  16. package/dist/{ConnectedNativeDocxComparison-L3R3ROPZ.cjs → ConnectedNativeDocxComparison-HJ4FTVH6.cjs} +7 -7
  17. package/dist/ConnectedNativeDocxComparison-HJ4FTVH6.cjs.map +1 -0
  18. package/dist/{ConnectedNativeDocxEditor-VDBC4XRT.cjs → ConnectedNativeDocxEditor-PF46MU5H.cjs} +7 -7
  19. package/dist/ConnectedNativeDocxEditor-PF46MU5H.cjs.map +1 -0
  20. package/dist/{ConnectedNativeDocxEditor-PI6QTPXZ.js → ConnectedNativeDocxEditor-S7NJMDSU.js} +5 -5
  21. package/dist/ConnectedNativeDocxEditor-S7NJMDSU.js.map +1 -0
  22. package/dist/{ConnectedStreamedWordArtifact-V4MTKVNE.js → ConnectedStreamedWordArtifact-5MHLV24V.js} +6 -6
  23. package/dist/ConnectedStreamedWordArtifact-5MHLV24V.js.map +1 -0
  24. package/dist/{ConnectedStreamedWordArtifact-YSW6D7AG.cjs → ConnectedStreamedWordArtifact-LNGW7YGV.cjs} +7 -7
  25. package/dist/ConnectedStreamedWordArtifact-LNGW7YGV.cjs.map +1 -0
  26. package/dist/{DocumentReviewCard-TQQADJ36.js → DocumentReviewCard-5U3TGJZA.js} +6 -6
  27. package/dist/{DocumentReviewCard-TQQADJ36.js.map → DocumentReviewCard-5U3TGJZA.js.map} +1 -1
  28. package/dist/{DocumentReviewCard-BQ6ZD5MD.cjs → DocumentReviewCard-VFNMJSK7.cjs} +6 -6
  29. package/dist/{DocumentReviewCard-BQ6ZD5MD.cjs.map → DocumentReviewCard-VFNMJSK7.cjs.map} +1 -1
  30. package/dist/{WorkspaceTableView-GKMVTECZ.cjs → WorkspaceTableView-DHMCJRC6.cjs} +6 -6
  31. package/dist/{WorkspaceTableView-GKMVTECZ.cjs.map → WorkspaceTableView-DHMCJRC6.cjs.map} +1 -1
  32. package/dist/{WorkspaceTableView-YFLVFRJL.js → WorkspaceTableView-EH5CEB44.js} +4 -4
  33. package/dist/{WorkspaceTableView-YFLVFRJL.js.map → WorkspaceTableView-EH5CEB44.js.map} +1 -1
  34. package/dist/agents/index.cjs +283 -283
  35. package/dist/agents/index.js +5 -5
  36. package/dist/calls/index.cjs +2 -2
  37. package/dist/calls/index.js +2 -2
  38. package/dist/chat/index.cjs +57 -57
  39. package/dist/chat/index.js +4 -4
  40. package/dist/{chunk-D27BBGUF.cjs → chunk-23ACBETH.cjs} +4 -4
  41. package/dist/{chunk-D27BBGUF.cjs.map → chunk-23ACBETH.cjs.map} +1 -1
  42. package/dist/{chunk-4CI42DCG.js → chunk-323R76RZ.js} +50 -5
  43. package/dist/chunk-323R76RZ.js.map +1 -0
  44. package/dist/{chunk-DJE2E7YH.cjs → chunk-3VFQYKB5.cjs} +3 -3
  45. package/dist/{chunk-DJE2E7YH.cjs.map → chunk-3VFQYKB5.cjs.map} +1 -1
  46. package/dist/{chunk-JSHBC47B.cjs → chunk-45Y7ASBC.cjs} +53 -47
  47. package/dist/chunk-45Y7ASBC.cjs.map +1 -0
  48. package/dist/{chunk-TVHTXO6V.cjs → chunk-56WWEK6I.cjs} +4 -4
  49. package/dist/{chunk-TVHTXO6V.cjs.map → chunk-56WWEK6I.cjs.map} +1 -1
  50. package/dist/{chunk-CGCTODPC.cjs → chunk-6PGTH2HD.cjs} +4 -4
  51. package/dist/{chunk-CGCTODPC.cjs.map → chunk-6PGTH2HD.cjs.map} +1 -1
  52. package/dist/{chunk-PBIFISDD.js → chunk-7P24MJQN.js} +3 -3
  53. package/dist/{chunk-PBIFISDD.js.map → chunk-7P24MJQN.js.map} +1 -1
  54. package/dist/{chunk-6QZ35CTZ.js → chunk-AD76WTGR.js} +3 -3
  55. package/dist/{chunk-6QZ35CTZ.js.map → chunk-AD76WTGR.js.map} +1 -1
  56. package/dist/{chunk-ROWJU4SK.cjs → chunk-AKGV6JUC.cjs} +12 -128
  57. package/dist/chunk-AKGV6JUC.cjs.map +1 -0
  58. package/dist/{chunk-UIUWCTIZ.js → chunk-APXW5XGA.js} +165 -4
  59. package/dist/chunk-APXW5XGA.js.map +1 -0
  60. package/dist/{chunk-SEVFIBF3.cjs → chunk-BFIHXDO6.cjs} +4 -4
  61. package/dist/{chunk-SEVFIBF3.cjs.map → chunk-BFIHXDO6.cjs.map} +1 -1
  62. package/dist/{chunk-6OMIIF76.js → chunk-BWWND4Y7.js} +3 -3
  63. package/dist/{chunk-6OMIIF76.js.map → chunk-BWWND4Y7.js.map} +1 -1
  64. package/dist/{chunk-EG3BB32W.cjs → chunk-CCSF7RI4.cjs} +3 -3
  65. package/dist/{chunk-EG3BB32W.cjs.map → chunk-CCSF7RI4.cjs.map} +1 -1
  66. package/dist/{chunk-QK546T4C.cjs → chunk-CKNUL4LM.cjs} +3 -3
  67. package/dist/{chunk-QK546T4C.cjs.map → chunk-CKNUL4LM.cjs.map} +1 -1
  68. package/dist/{chunk-TJ7QEGVP.cjs → chunk-COZDIUG7.cjs} +18 -18
  69. package/dist/{chunk-TJ7QEGVP.cjs.map → chunk-COZDIUG7.cjs.map} +1 -1
  70. package/dist/{chunk-YQEXBJVO.js → chunk-DF5X27QX.js} +42 -5
  71. package/dist/chunk-DF5X27QX.js.map +1 -0
  72. package/dist/{chunk-B3CRSCLK.cjs → chunk-EOIJ5JYP.cjs} +4 -4
  73. package/dist/{chunk-B3CRSCLK.cjs.map → chunk-EOIJ5JYP.cjs.map} +1 -1
  74. package/dist/{chunk-GPYLXEZO.js → chunk-FCOK73I3.js} +6 -120
  75. package/dist/chunk-FCOK73I3.js.map +1 -0
  76. package/dist/{chunk-CJF7B5A7.cjs → chunk-FHXXDPNU.cjs} +12 -12
  77. package/dist/{chunk-CJF7B5A7.cjs.map → chunk-FHXXDPNU.cjs.map} +1 -1
  78. package/dist/{chunk-ITRI47DF.cjs → chunk-GMGEAWFX.cjs} +41 -4
  79. package/dist/chunk-GMGEAWFX.cjs.map +1 -0
  80. package/dist/{chunk-LNH6NYG4.js → chunk-I3VBVP6R.js} +121 -6
  81. package/dist/chunk-I3VBVP6R.js.map +1 -0
  82. package/dist/{chunk-ZZHMJXM5.cjs → chunk-IXZCXK6Q.cjs} +122 -5
  83. package/dist/chunk-IXZCXK6Q.cjs.map +1 -0
  84. package/dist/{chunk-SBAM3UZX.js → chunk-JWRTUYLC.js} +3 -3
  85. package/dist/{chunk-SBAM3UZX.js.map → chunk-JWRTUYLC.js.map} +1 -1
  86. package/dist/{chunk-PLEMVK2W.js → chunk-KQLUMK56.js} +3 -3
  87. package/dist/{chunk-PLEMVK2W.js.map → chunk-KQLUMK56.js.map} +1 -1
  88. package/dist/{chunk-PNZVUH46.cjs → chunk-LAQ3Y5JP.cjs} +6 -6
  89. package/dist/{chunk-PNZVUH46.cjs.map → chunk-LAQ3Y5JP.cjs.map} +1 -1
  90. package/dist/{chunk-AESJLGMC.cjs → chunk-LEW4GUFW.cjs} +7 -7
  91. package/dist/{chunk-AESJLGMC.cjs.map → chunk-LEW4GUFW.cjs.map} +1 -1
  92. package/dist/{chunk-2LUA7UDE.js → chunk-NDVLCOWS.js} +7 -7
  93. package/dist/{chunk-2LUA7UDE.js.map → chunk-NDVLCOWS.js.map} +1 -1
  94. package/dist/{chunk-43IVRSFX.js → chunk-NVXNTHL4.js} +3 -3
  95. package/dist/{chunk-43IVRSFX.js.map → chunk-NVXNTHL4.js.map} +1 -1
  96. package/dist/{chunk-IRXPUQFP.js → chunk-OZL5ABLF.js} +3 -3
  97. package/dist/{chunk-IRXPUQFP.js.map → chunk-OZL5ABLF.js.map} +1 -1
  98. package/dist/{chunk-5EGTGHBW.js → chunk-PGKZBAJB.js} +12 -6
  99. package/dist/chunk-PGKZBAJB.js.map +1 -0
  100. package/dist/{chunk-KNOSLLTC.js → chunk-PKDPQS6Z.js} +3 -3
  101. package/dist/{chunk-KNOSLLTC.js.map → chunk-PKDPQS6Z.js.map} +1 -1
  102. package/dist/{chunk-VWM3J6ES.js → chunk-PVPGD6QR.js} +3 -3
  103. package/dist/{chunk-VWM3J6ES.js.map → chunk-PVPGD6QR.js.map} +1 -1
  104. package/dist/{chunk-C2S246BV.js → chunk-RAGITH2N.js} +4 -4
  105. package/dist/{chunk-C2S246BV.js.map → chunk-RAGITH2N.js.map} +1 -1
  106. package/dist/{chunk-4Q7ON335.js → chunk-RFKAE6WS.js} +5 -5
  107. package/dist/{chunk-4Q7ON335.js.map → chunk-RFKAE6WS.js.map} +1 -1
  108. package/dist/{chunk-2C4YUIVX.js → chunk-T2VGD4X6.js} +3 -3
  109. package/dist/{chunk-2C4YUIVX.js.map → chunk-T2VGD4X6.js.map} +1 -1
  110. package/dist/{chunk-CEKOZAGO.js → chunk-TAI23FCY.js} +3 -3
  111. package/dist/{chunk-CEKOZAGO.js.map → chunk-TAI23FCY.js.map} +1 -1
  112. package/dist/{chunk-WBLCPCWR.cjs → chunk-UDMII47W.cjs} +7 -7
  113. package/dist/{chunk-WBLCPCWR.cjs.map → chunk-UDMII47W.cjs.map} +1 -1
  114. package/dist/{chunk-SFTQO3TU.js → chunk-UO3FS6ZF.js} +3 -3
  115. package/dist/{chunk-SFTQO3TU.js.map → chunk-UO3FS6ZF.js.map} +1 -1
  116. package/dist/{chunk-BELZ2WD2.js → chunk-W5D5GFP2.js} +3 -3
  117. package/dist/{chunk-BELZ2WD2.js.map → chunk-W5D5GFP2.js.map} +1 -1
  118. package/dist/{chunk-LFS6UWSJ.cjs → chunk-XWUGPV7H.cjs} +5 -5
  119. package/dist/{chunk-LFS6UWSJ.cjs.map → chunk-XWUGPV7H.cjs.map} +1 -1
  120. package/dist/{chunk-K26RLK2Y.cjs → chunk-Y6ZNWC7E.cjs} +3 -3
  121. package/dist/{chunk-K26RLK2Y.cjs.map → chunk-Y6ZNWC7E.cjs.map} +1 -1
  122. package/dist/{chunk-F777MGVA.cjs → chunk-YBVBDVQX.cjs} +18 -18
  123. package/dist/{chunk-F777MGVA.cjs.map → chunk-YBVBDVQX.cjs.map} +1 -1
  124. package/dist/{chunk-OM5IVNEW.cjs → chunk-Z4KXF7WS.cjs} +165 -2
  125. package/dist/chunk-Z4KXF7WS.cjs.map +1 -0
  126. package/dist/{chunk-7MOQO6NO.cjs → chunk-ZIQGSFHG.cjs} +53 -5
  127. package/dist/chunk-ZIQGSFHG.cjs.map +1 -0
  128. package/dist/connect/docx.cjs +11 -11
  129. package/dist/connect/docx.js +7 -7
  130. package/dist/connect/index.cjs +1723 -1149
  131. package/dist/connect/index.cjs.map +1 -1
  132. package/dist/connect/index.d.ts +3 -0
  133. package/dist/connect/index.js +1191 -633
  134. package/dist/connect/index.js.map +1 -1
  135. package/dist/connect/viewer.cjs +10 -10
  136. package/dist/connect/viewer.js +9 -9
  137. package/dist/connection/billing/index.d.ts +1 -0
  138. package/dist/connection/billing/payment-required.d.ts +45 -0
  139. package/dist/connection/runtime/ConnectedAppRuntime.d.ts +1 -1
  140. package/dist/connection/runtime/index.d.ts +1 -1
  141. package/dist/connection/runtime/requests.d.ts +8 -0
  142. package/dist/connection/runtime/useWelcomeDialog.d.ts +3 -0
  143. package/dist/connection/settings-page/ConnectedModelConnectionsSettings.d.ts +1 -0
  144. package/dist/connection/settings-page/ConnectedSettingsPage.d.ts +3 -0
  145. package/dist/connection/settings-page/index.d.ts +2 -1
  146. package/dist/connection/tips/ConnectedGettingStarted.d.ts +20 -0
  147. package/dist/connection/tips/ConnectedTipBar.d.ts +49 -0
  148. package/dist/connection/tips/useGettingStarted.d.ts +51 -0
  149. package/dist/connection/workflows/useWorkflowsPageState.d.ts +1 -1
  150. package/dist/dashboards/index.cjs +1 -1
  151. package/dist/dashboards/index.js +1 -1
  152. package/dist/document-tools/index.cjs +17 -17
  153. package/dist/document-tools/index.js +2 -2
  154. package/dist/embed/index.cjs +9 -9
  155. package/dist/embed/index.js +6 -6
  156. package/dist/facts/index.cjs +1 -1
  157. package/dist/facts/index.js +1 -1
  158. package/dist/files/index.cjs +1 -1
  159. package/dist/files/index.js +1 -1
  160. package/dist/home/index.cjs +23 -178
  161. package/dist/home/index.cjs.map +1 -1
  162. package/dist/home/index.js +3 -164
  163. package/dist/home/index.js.map +1 -1
  164. package/dist/index.cjs +606 -634
  165. package/dist/index.cjs.map +1 -1
  166. package/dist/index.js +23 -62
  167. package/dist/index.js.map +1 -1
  168. package/dist/shell/index.cjs +73 -73
  169. package/dist/shell/index.js +4 -4
  170. package/dist/site/index.cjs +17 -17
  171. package/dist/site/index.js +1 -1
  172. package/dist/studio/index.cjs +10 -10
  173. package/dist/studio/index.js +7 -7
  174. package/dist/tips/index.d.ts +1 -1
  175. package/dist/tips/visibility.d.ts +7 -0
  176. package/dist/workflow-canvas/index.cjs +27 -27
  177. package/dist/workflow-canvas/index.cjs.map +1 -1
  178. package/dist/workflow-canvas/index.js +12 -12
  179. package/dist/workflow-canvas/index.js.map +1 -1
  180. package/node_modules/@arbidocs/coedit/package.json +1 -1
  181. package/package.json +5 -5
  182. package/dist/ConnectedNativeDocxComparison-L3R3ROPZ.cjs.map +0 -1
  183. package/dist/ConnectedNativeDocxComparison-PSAP3Q7D.js.map +0 -1
  184. package/dist/ConnectedNativeDocxEditor-PI6QTPXZ.js.map +0 -1
  185. package/dist/ConnectedNativeDocxEditor-VDBC4XRT.cjs.map +0 -1
  186. package/dist/ConnectedStreamedWordArtifact-V4MTKVNE.js.map +0 -1
  187. package/dist/ConnectedStreamedWordArtifact-YSW6D7AG.cjs.map +0 -1
  188. package/dist/chunk-4CI42DCG.js.map +0 -1
  189. package/dist/chunk-5EGTGHBW.js.map +0 -1
  190. package/dist/chunk-7MOQO6NO.cjs.map +0 -1
  191. package/dist/chunk-GPYLXEZO.js.map +0 -1
  192. package/dist/chunk-ITRI47DF.cjs.map +0 -1
  193. package/dist/chunk-JSHBC47B.cjs.map +0 -1
  194. package/dist/chunk-LNH6NYG4.js.map +0 -1
  195. package/dist/chunk-OM5IVNEW.cjs.map +0 -1
  196. package/dist/chunk-ROWJU4SK.cjs.map +0 -1
  197. package/dist/chunk-UIUWCTIZ.js.map +0 -1
  198. package/dist/chunk-YQEXBJVO.js.map +0 -1
  199. package/dist/chunk-ZZHMJXM5.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/home/Greeting.tsx","../../src/home/GettingStartedStrip.tsx","../../src/home/ActionMenuDialog.tsx","../../src/home/CardHeaderBar.tsx"],"names":["jsx","jsxs","cn"],"mappings":"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","file":"index.js","sourcesContent":["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 { 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"]}
1
+ {"version":3,"sources":["../../src/home/Greeting.tsx","../../src/home/ActionMenuDialog.tsx","../../src/home/CardHeaderBar.tsx"],"names":["jsx","jsxs","cn"],"mappings":"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","file":"index.js","sourcesContent":["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 { 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"]}