@arbidocs/blocks 0.5.63 → 0.5.65

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 (177) hide show
  1. package/dist/{ConnectedDocumentViewer-7VKAM6KD.js → ConnectedDocumentViewer-HKIBNGGG.js} +10 -9
  2. package/dist/{ConnectedDocumentViewer-7VKAM6KD.js.map → ConnectedDocumentViewer-HKIBNGGG.js.map} +1 -1
  3. package/dist/{ConnectedDocumentViewer-FGQ27H4B.cjs → ConnectedDocumentViewer-YSZWOVGN.cjs} +11 -10
  4. package/dist/{ConnectedDocumentViewer-FGQ27H4B.cjs.map → ConnectedDocumentViewer-YSZWOVGN.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxComparison-HJ4FTVH6.cjs → ConnectedNativeDocxComparison-L3R3ROPZ.cjs} +7 -7
  6. package/dist/{ConnectedNativeDocxComparison-HJ4FTVH6.cjs.map → ConnectedNativeDocxComparison-L3R3ROPZ.cjs.map} +1 -1
  7. package/dist/{ConnectedNativeDocxComparison-FPW3BNBN.js → ConnectedNativeDocxComparison-PSAP3Q7D.js} +6 -6
  8. package/dist/{ConnectedNativeDocxComparison-FPW3BNBN.js.map → ConnectedNativeDocxComparison-PSAP3Q7D.js.map} +1 -1
  9. package/dist/{ConnectedNativeDocxEditor-S7NJMDSU.js → ConnectedNativeDocxEditor-PI6QTPXZ.js} +5 -5
  10. package/dist/{ConnectedNativeDocxEditor-S7NJMDSU.js.map → ConnectedNativeDocxEditor-PI6QTPXZ.js.map} +1 -1
  11. package/dist/{ConnectedNativeDocxEditor-PF46MU5H.cjs → ConnectedNativeDocxEditor-VDBC4XRT.cjs} +7 -7
  12. package/dist/{ConnectedNativeDocxEditor-PF46MU5H.cjs.map → ConnectedNativeDocxEditor-VDBC4XRT.cjs.map} +1 -1
  13. package/dist/{ConnectedStreamedWordArtifact-5MHLV24V.js → ConnectedStreamedWordArtifact-V4MTKVNE.js} +6 -6
  14. package/dist/ConnectedStreamedWordArtifact-V4MTKVNE.js.map +1 -0
  15. package/dist/{ConnectedStreamedWordArtifact-LNGW7YGV.cjs → ConnectedStreamedWordArtifact-YSW6D7AG.cjs} +7 -7
  16. package/dist/ConnectedStreamedWordArtifact-YSW6D7AG.cjs.map +1 -0
  17. package/dist/{DocumentReviewCard-VFNMJSK7.cjs → DocumentReviewCard-BQ6ZD5MD.cjs} +6 -6
  18. package/dist/{DocumentReviewCard-VFNMJSK7.cjs.map → DocumentReviewCard-BQ6ZD5MD.cjs.map} +1 -1
  19. package/dist/{DocumentReviewCard-5U3TGJZA.js → DocumentReviewCard-TQQADJ36.js} +6 -6
  20. package/dist/{DocumentReviewCard-5U3TGJZA.js.map → DocumentReviewCard-TQQADJ36.js.map} +1 -1
  21. package/dist/{WorkspaceTableView-DHMCJRC6.cjs → WorkspaceTableView-GKMVTECZ.cjs} +6 -6
  22. package/dist/{WorkspaceTableView-DHMCJRC6.cjs.map → WorkspaceTableView-GKMVTECZ.cjs.map} +1 -1
  23. package/dist/{WorkspaceTableView-EH5CEB44.js → WorkspaceTableView-YFLVFRJL.js} +4 -4
  24. package/dist/{WorkspaceTableView-EH5CEB44.js.map → WorkspaceTableView-YFLVFRJL.js.map} +1 -1
  25. package/dist/agents/index.cjs +345 -344
  26. package/dist/agents/index.js +6 -5
  27. package/dist/{chunk-NDVLCOWS.js → chunk-2LUA7UDE.js} +7 -7
  28. package/dist/{chunk-NDVLCOWS.js.map → chunk-2LUA7UDE.js.map} +1 -1
  29. package/dist/{chunk-77IAOKZO.js → chunk-2VH2PT3J.js} +5 -38
  30. package/dist/chunk-2VH2PT3J.js.map +1 -0
  31. package/dist/{chunk-IC6SBDYA.js → chunk-4CI42DCG.js} +3 -3
  32. package/dist/{chunk-IC6SBDYA.js.map → chunk-4CI42DCG.js.map} +1 -1
  33. package/dist/{chunk-IFLFLP4K.js → chunk-4Q7ON335.js} +6 -5
  34. package/dist/chunk-4Q7ON335.js.map +1 -0
  35. package/dist/{chunk-IUFS3AYQ.js → chunk-5EGTGHBW.js} +7 -7
  36. package/dist/{chunk-IUFS3AYQ.js.map → chunk-5EGTGHBW.js.map} +1 -1
  37. package/dist/{chunk-OLDGMBEF.cjs → chunk-67AFX23Y.cjs} +185 -91
  38. package/dist/chunk-67AFX23Y.cjs.map +1 -0
  39. package/dist/{chunk-5CWBAINB.js → chunk-6OMIIF76.js} +3 -3
  40. package/dist/{chunk-5CWBAINB.js.map → chunk-6OMIIF76.js.map} +1 -1
  41. package/dist/chunk-6QZ35CTZ.js +594 -0
  42. package/dist/chunk-6QZ35CTZ.js.map +1 -0
  43. package/dist/{chunk-4RJPTXUQ.cjs → chunk-7MOQO6NO.cjs} +5 -5
  44. package/dist/{chunk-4RJPTXUQ.cjs.map → chunk-7MOQO6NO.cjs.map} +1 -1
  45. package/dist/chunk-AESJLGMC.cjs +1228 -0
  46. package/dist/chunk-AESJLGMC.cjs.map +1 -0
  47. package/dist/{chunk-EOIJ5JYP.cjs → chunk-B3CRSCLK.cjs} +4 -4
  48. package/dist/{chunk-EOIJ5JYP.cjs.map → chunk-B3CRSCLK.cjs.map} +1 -1
  49. package/dist/{chunk-GRDLCRNL.js → chunk-BELZ2WD2.js} +5 -5
  50. package/dist/{chunk-GRDLCRNL.js.map → chunk-BELZ2WD2.js.map} +1 -1
  51. package/dist/chunk-C2S246BV.js +1225 -0
  52. package/dist/chunk-C2S246BV.js.map +1 -0
  53. package/dist/{chunk-TAI23FCY.js → chunk-CEKOZAGO.js} +3 -3
  54. package/dist/{chunk-TAI23FCY.js.map → chunk-CEKOZAGO.js.map} +1 -1
  55. package/dist/{chunk-HVOPUYAG.cjs → chunk-CJF7B5A7.cjs} +29 -28
  56. package/dist/chunk-CJF7B5A7.cjs.map +1 -0
  57. package/dist/{chunk-LBKTTQUR.cjs → chunk-CMYJEIZB.cjs} +12 -12
  58. package/dist/{chunk-LBKTTQUR.cjs.map → chunk-CMYJEIZB.cjs.map} +1 -1
  59. package/dist/{chunk-2SLDVFOZ.js → chunk-CRHY7DBO.js} +3 -3
  60. package/dist/{chunk-2SLDVFOZ.js.map → chunk-CRHY7DBO.js.map} +1 -1
  61. package/dist/{chunk-23ACBETH.cjs → chunk-D27BBGUF.cjs} +4 -4
  62. package/dist/{chunk-23ACBETH.cjs.map → chunk-D27BBGUF.cjs.map} +1 -1
  63. package/dist/{chunk-3X37I6QE.cjs → chunk-DJE2E7YH.cjs} +29 -29
  64. package/dist/{chunk-3X37I6QE.cjs.map → chunk-DJE2E7YH.cjs.map} +1 -1
  65. package/dist/{chunk-CCSF7RI4.cjs → chunk-EG3BB32W.cjs} +3 -3
  66. package/dist/{chunk-CCSF7RI4.cjs.map → chunk-EG3BB32W.cjs.map} +1 -1
  67. package/dist/{chunk-MAKTAR7H.cjs → chunk-F777MGVA.cjs} +18 -18
  68. package/dist/{chunk-MAKTAR7H.cjs.map → chunk-F777MGVA.cjs.map} +1 -1
  69. package/dist/{chunk-TFWCREOL.js → chunk-GPYLXEZO.js} +9 -506
  70. package/dist/chunk-GPYLXEZO.js.map +1 -0
  71. package/dist/{chunk-OY3I32ZS.js → chunk-GX37C5QT.js} +4 -4
  72. package/dist/{chunk-OY3I32ZS.js.map → chunk-GX37C5QT.js.map} +1 -1
  73. package/dist/chunk-I4IS6ST6.cjs +48 -0
  74. package/dist/chunk-I4IS6ST6.cjs.map +1 -0
  75. package/dist/{chunk-OZL5ABLF.js → chunk-IRXPUQFP.js} +3 -3
  76. package/dist/{chunk-OZL5ABLF.js.map → chunk-IRXPUQFP.js.map} +1 -1
  77. package/dist/chunk-J77BACGX.js +575 -0
  78. package/dist/chunk-J77BACGX.js.map +1 -0
  79. package/dist/{chunk-X3JJTHQ4.cjs → chunk-JSHBC47B.cjs} +55 -55
  80. package/dist/{chunk-X3JJTHQ4.cjs.map → chunk-JSHBC47B.cjs.map} +1 -1
  81. package/dist/{chunk-Y6ZNWC7E.cjs → chunk-K26RLK2Y.cjs} +3 -3
  82. package/dist/{chunk-Y6ZNWC7E.cjs.map → chunk-K26RLK2Y.cjs.map} +1 -1
  83. package/dist/{chunk-PKDPQS6Z.js → chunk-KNOSLLTC.js} +3 -3
  84. package/dist/{chunk-PKDPQS6Z.js.map → chunk-KNOSLLTC.js.map} +1 -1
  85. package/dist/chunk-LFS6UWSJ.cjs +602 -0
  86. package/dist/chunk-LFS6UWSJ.cjs.map +1 -0
  87. package/dist/{chunk-YQFEN7UJ.js → chunk-LNH6NYG4.js} +6 -90
  88. package/dist/chunk-LNH6NYG4.js.map +1 -0
  89. package/dist/chunk-LRPGXNMA.js +44 -0
  90. package/dist/chunk-LRPGXNMA.js.map +1 -0
  91. package/dist/chunk-NEGFHF3V.cjs +617 -0
  92. package/dist/chunk-NEGFHF3V.cjs.map +1 -0
  93. package/dist/{chunk-NHPBONMR.js → chunk-O4FBMC6S.js} +186 -71
  94. package/dist/chunk-O4FBMC6S.js.map +1 -0
  95. package/dist/{chunk-7P24MJQN.js → chunk-PBIFISDD.js} +3 -3
  96. package/dist/{chunk-7P24MJQN.js.map → chunk-PBIFISDD.js.map} +1 -1
  97. package/dist/{chunk-OWUNCJFO.cjs → chunk-PZOX4JF6.cjs} +30 -30
  98. package/dist/{chunk-OWUNCJFO.cjs.map → chunk-PZOX4JF6.cjs.map} +1 -1
  99. package/dist/{chunk-CKNUL4LM.cjs → chunk-QK546T4C.cjs} +3 -3
  100. package/dist/{chunk-CKNUL4LM.cjs.map → chunk-QK546T4C.cjs.map} +1 -1
  101. package/dist/{chunk-QAXIVZEJ.cjs → chunk-ROWJU4SK.cjs} +13 -513
  102. package/dist/chunk-ROWJU4SK.cjs.map +1 -0
  103. package/dist/{chunk-JWRTUYLC.js → chunk-SBAM3UZX.js} +3 -3
  104. package/dist/{chunk-JWRTUYLC.js.map → chunk-SBAM3UZX.js.map} +1 -1
  105. package/dist/{chunk-COZDIUG7.cjs → chunk-TJ7QEGVP.cjs} +18 -18
  106. package/dist/{chunk-COZDIUG7.cjs.map → chunk-TJ7QEGVP.cjs.map} +1 -1
  107. package/dist/{chunk-PVPGD6QR.js → chunk-VWM3J6ES.js} +3 -3
  108. package/dist/{chunk-PVPGD6QR.js.map → chunk-VWM3J6ES.js.map} +1 -1
  109. package/dist/{chunk-UDMII47W.cjs → chunk-WBLCPCWR.cjs} +7 -7
  110. package/dist/{chunk-UDMII47W.cjs.map → chunk-WBLCPCWR.cjs.map} +1 -1
  111. package/dist/{chunk-3T3IKNGF.cjs → chunk-ZXW6WFZG.cjs} +5 -41
  112. package/dist/chunk-ZXW6WFZG.cjs.map +1 -0
  113. package/dist/{chunk-ODQK3LX5.cjs → chunk-ZZHMJXM5.cjs} +4 -93
  114. package/dist/chunk-ZZHMJXM5.cjs.map +1 -0
  115. package/dist/connect/docx.cjs +11 -11
  116. package/dist/connect/docx.js +7 -7
  117. package/dist/connect/index.cjs +496 -493
  118. package/dist/connect/index.cjs.map +1 -1
  119. package/dist/connect/index.js +36 -33
  120. package/dist/connect/index.js.map +1 -1
  121. package/dist/connect/viewer.cjs +9 -8
  122. package/dist/connect/viewer.js +8 -7
  123. package/dist/dashboards/index.cjs +1 -1
  124. package/dist/dashboards/index.js +1 -1
  125. package/dist/document-tools/index.cjs +17 -17
  126. package/dist/document-tools/index.js +2 -2
  127. package/dist/embed/index.cjs +11 -10
  128. package/dist/embed/index.js +8 -7
  129. package/dist/facts/index.cjs +1 -1
  130. package/dist/facts/index.js +1 -1
  131. package/dist/files/index.cjs +1 -1
  132. package/dist/files/index.js +1 -1
  133. package/dist/index.cjs +653 -618
  134. package/dist/index.cjs.map +1 -1
  135. package/dist/index.d.ts +4 -0
  136. package/dist/index.js +19 -16
  137. package/dist/index.js.map +1 -1
  138. package/dist/shell/index.cjs +78 -77
  139. package/dist/shell/index.js +3 -2
  140. package/dist/site/index.cjs +105 -81
  141. package/dist/site/index.d.ts +3 -1
  142. package/dist/site/index.js +4 -4
  143. package/dist/studio/index.cjs +60 -55
  144. package/dist/studio/index.cjs.map +1 -1
  145. package/dist/studio/index.js +12 -7
  146. package/dist/studio/index.js.map +1 -1
  147. package/dist/theme/ThemeControls.d.ts +71 -0
  148. package/dist/theme/ThemeEditor.d.ts +5 -2
  149. package/dist/theme/ThemePreview.d.ts +20 -0
  150. package/dist/theme/color.d.ts +17 -1
  151. package/dist/theme/derive.d.ts +75 -0
  152. package/dist/theme/editorModel.d.ts +36 -0
  153. package/dist/theme/previewLabels.d.ts +38 -0
  154. package/dist/theme/store.d.ts +51 -13
  155. package/dist/theme/tokens.d.ts +2 -0
  156. package/dist/workflow-canvas/index.cjs +37 -36
  157. package/dist/workflow-canvas/index.cjs.map +1 -1
  158. package/dist/workflow-canvas/index.js +13 -12
  159. package/dist/workflow-canvas/index.js.map +1 -1
  160. package/node_modules/@arbidocs/coedit/package.json +1 -1
  161. package/package.json +5 -5
  162. package/dist/ConnectedStreamedWordArtifact-5MHLV24V.js.map +0 -1
  163. package/dist/ConnectedStreamedWordArtifact-LNGW7YGV.cjs.map +0 -1
  164. package/dist/chunk-3T3IKNGF.cjs.map +0 -1
  165. package/dist/chunk-77IAOKZO.js.map +0 -1
  166. package/dist/chunk-HVOPUYAG.cjs.map +0 -1
  167. package/dist/chunk-IFLFLP4K.js.map +0 -1
  168. package/dist/chunk-N5WJBQYF.cjs +0 -476
  169. package/dist/chunk-N5WJBQYF.cjs.map +0 -1
  170. package/dist/chunk-NHPBONMR.js.map +0 -1
  171. package/dist/chunk-ODQK3LX5.cjs.map +0 -1
  172. package/dist/chunk-OLDGMBEF.cjs.map +0 -1
  173. package/dist/chunk-QAXIVZEJ.cjs.map +0 -1
  174. package/dist/chunk-QCLYRNOC.js +0 -466
  175. package/dist/chunk-QCLYRNOC.js.map +0 -1
  176. package/dist/chunk-TFWCREOL.js.map +0 -1
  177. package/dist/chunk-YQFEN7UJ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme/color.ts","../src/theme/tokens.ts","../src/theme/derive.ts","../src/components/Tabs.tsx","../src/theme/previewLabels.ts"],"names":["hsl","clamp"],"mappings":"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","file":"chunk-J77BACGX.js","sourcesContent":["/**\n * Colour math for the theme store: parse the formats a theme value comes in (hex, `rgb()`,\n * `hsl()`, a raw `H S% L%` triplet), convert between them, and measure WCAG contrast.\n *\n * Pure functions, no DOM. A theme value is kept in whatever format the host wrote it (Clarum's\n * `@theme` is hex, the ARBI app's stylesheet is triplets); these helpers turn it into the two\n * formats the document needs: the raw triplet the blocks contract reads (`hsl(var(--primary))`)\n * and a full colour for Tailwind's `--color-*` map.\n */\n\nexport interface Rgb {\n /** 0..255 */\n r: number\n g: number\n b: number\n}\n\nexport interface Hsl {\n /** Hue in degrees, 0..360. */\n h: number\n /** Saturation, 0..100. */\n s: number\n /** Lightness, 0..100. */\n l: number\n}\n\nconst NUM = String.raw`-?\\d*\\.?\\d+(?:e-?\\d+)?`\nconst TRIPLET_RE = new RegExp(String.raw`^(${NUM})(?:deg)?\\s+(${NUM})%\\s+(${NUM})%$`)\nconst HSL_FN_RE = new RegExp(\n String.raw`^hsla?\\(\\s*(${NUM})(?:deg)?[\\s,]+(${NUM})%[\\s,]+(${NUM})%\\s*(?:[,/]\\s*${NUM}%?\\s*)?\\)$`,\n 'i'\n)\nconst RGB_FN_RE = new RegExp(\n String.raw`^rgba?\\(\\s*(${NUM})[\\s,]+(${NUM})[\\s,]+(${NUM})\\s*(?:[,/]\\s*${NUM}%?\\s*)?\\)$`,\n 'i'\n)\n\n/** True for a raw `H S% L%` triplet (the blocks contract's format, no `hsl()`). */\nexport function isHslTriplet(value: string): boolean {\n return TRIPLET_RE.test(value.trim())\n}\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, n))\n\n/** Round to one decimal and drop a trailing `.0`, so `50.0` prints as `50`. */\nconst fmt = (n: number) => String(Math.round(n * 10) / 10)\n\nexport function rgbToHsl({ r, g, b }: Rgb): Hsl {\n const rn = r / 255\n const gn = g / 255\n const bn = b / 255\n const max = Math.max(rn, gn, bn)\n const min = Math.min(rn, gn, bn)\n const l = (max + min) / 2\n const d = max - min\n let h = 0\n let s = 0\n if (d !== 0) {\n s = d / (1 - Math.abs(2 * l - 1))\n if (max === rn) h = 60 * (((gn - bn) / d) % 6)\n else if (max === gn) h = 60 * ((bn - rn) / d + 2)\n else h = 60 * ((rn - gn) / d + 4)\n }\n if (h < 0) h += 360\n return { h, s: s * 100, l: l * 100 }\n}\n\nexport function hslToRgb({ h, s, l }: Hsl): Rgb {\n const sn = clamp(s, 0, 100) / 100\n const ln = clamp(l, 0, 100) / 100\n const hn = ((h % 360) + 360) % 360\n const c = (1 - Math.abs(2 * ln - 1)) * sn\n const x = c * (1 - Math.abs(((hn / 60) % 2) - 1))\n const m = ln - c / 2\n const [r1, g1, b1] =\n hn < 60\n ? [c, x, 0]\n : hn < 120\n ? [x, c, 0]\n : hn < 180\n ? [0, c, x]\n : hn < 240\n ? [0, x, c]\n : hn < 300\n ? [x, 0, c]\n : [c, 0, x]\n return { r: (r1 + m) * 255, g: (g1 + m) * 255, b: (b1 + m) * 255 }\n}\n\nfunction parseHex(value: string): Rgb | null {\n let hex = value.slice(1)\n if (hex.length === 3 || hex.length === 4) {\n hex = hex\n .slice(0, 3)\n .split('')\n .map((ch) => ch + ch)\n .join('')\n } else if (hex.length === 8) {\n hex = hex.slice(0, 6)\n }\n if (!/^[0-9a-fA-F]{6}$/.test(hex)) return null\n return {\n r: parseInt(hex.slice(0, 2), 16),\n g: parseInt(hex.slice(2, 4), 16),\n b: parseInt(hex.slice(4, 6), 16),\n }\n}\n\n/**\n * Parse a theme colour value to RGB: `#rgb`, `#rrggbb` (alpha ignored), `rgb()`/`rgba()`,\n * `hsl()`/`hsla()` and a raw triplet. Anything else (`oklch()`, a `var()`) is `null`.\n */\nexport function parseColor(value: string): Rgb | null {\n const c = value.trim()\n if (c.startsWith('#')) return parseHex(c)\n const rgb = RGB_FN_RE.exec(c)\n if (rgb) return { r: Number(rgb[1]), g: Number(rgb[2]), b: Number(rgb[3]) }\n const hsl = HSL_FN_RE.exec(c) ?? TRIPLET_RE.exec(c)\n if (hsl) return hslToRgb({ h: Number(hsl[1]), s: Number(hsl[2]), l: Number(hsl[3]) })\n return null\n}\n\n/** HSL of a colour value, or `null` when it cannot be parsed. A triplet keeps its exact numbers. */\nexport function parseHsl(value: string): Hsl | null {\n const c = value.trim()\n const m = TRIPLET_RE.exec(c) ?? HSL_FN_RE.exec(c)\n if (m) return { h: Number(m[1]), s: Number(m[2]), l: Number(m[3]) }\n const rgb = parseColor(c)\n return rgb ? rgbToHsl(rgb) : null\n}\n\nconst hex2 = (n: number) =>\n Math.round(clamp(n, 0, 255))\n .toString(16)\n .padStart(2, '0')\n\nexport function rgbToHex({ r, g, b }: Rgb): string {\n return `#${hex2(r)}${hex2(g)}${hex2(b)}`\n}\n\nexport function hslToHex(hsl: Hsl): string {\n return rgbToHex(hslToRgb(hsl))\n}\n\n/** `#rrggbb` of any parseable value (what `<input type=\"color\">` needs); `fallback` otherwise. */\nexport function toHex(value: string, fallback = '#000000'): string {\n const rgb = parseColor(value)\n return rgb ? rgbToHex(rgb) : fallback\n}\n\n/** `H S% L%` of an HSL value, one decimal. */\nexport function formatHslTriplet({ h, s, l }: Hsl): string {\n return `${fmt(((h % 360) + 360) % 360)} ${fmt(s)}% ${fmt(l)}%`\n}\n\n/**\n * Convert a colour to the blocks contract's `H S% L%` triplet.\n *\n * An existing triplet passes through untouched (so a host that seeds its stylesheet's exact\n * triplets gets a byte-identical no-op). Hex, `rgb()` and `hsl()` convert with one decimal, the\n * precision of the stylesheets. Values it cannot parse (`oklch()`, `var()`) are returned unchanged.\n */\nexport function toHslTriplet(color: string): string {\n const c = color.trim()\n if (TRIPLET_RE.test(c)) return c\n const hsl = parseHsl(c)\n return hsl ? formatHslTriplet(hsl) : c\n}\n\n/**\n * The full colour for a Tailwind `--color-*` variable: a raw triplet is wrapped as `hsl(...)`, any\n * other value (hex, `rgb()`, `oklch()`) is already a colour and is kept as written.\n */\nexport function toCssColor(value: string): string {\n const c = value.trim()\n return TRIPLET_RE.test(c) ? `hsl(${c})` : c\n}\n\n// ── WCAG contrast ──────────────────────────────────────────────────────────────\n\nconst channel = (v: number) => {\n const c = v / 255\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n}\n\n/** WCAG relative luminance, 0 (black) .. 1 (white). */\nexport function relativeLuminance(rgb: Rgb): number {\n return 0.2126 * channel(rgb.r) + 0.7152 * channel(rgb.g) + 0.0722 * channel(rgb.b)\n}\n\n/** WCAG contrast ratio of two colour values (1..21), or `null` when either cannot be parsed. */\nexport function contrastRatio(a: string, b: string): number | null {\n const ra = parseColor(a)\n const rb = parseColor(b)\n if (!ra || !rb) return null\n const la = relativeLuminance(ra)\n const lb = relativeLuminance(rb)\n return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05)\n}\n\n/** WCAG AA thresholds: body text 4.5:1, large text and UI parts (borders, focus rings) 3:1. */\nexport const AA_TEXT = 4.5\nexport const AA_UI = 3\n\n/**\n * The colour nearest to `fg` (same hue and saturation, only lightness moved) that reaches `ratio`\n * against `bg`. It moves away from the background first (darker on a light background, lighter on\n * a dark one) and, if even black or white cannot reach the ratio that way, tries the other way.\n * Returns hex; `fg` unchanged (as hex) when it already passes.\n */\nexport function ensureContrast(fg: string, bg: string, ratio: number): string {\n const fgHsl = parseHsl(fg)\n const bgRgb = parseColor(bg)\n if (!fgHsl || !bgRgb) return fg\n const pass = (l: number) =>\n (contrastRatio(hslToHex({ ...fgHsl, l }), rgbToHex(bgRgb)) ?? 0) >= ratio\n if (pass(fgHsl.l)) return hslToHex(fgHsl)\n const bgDark = relativeLuminance(bgRgb) < 0.18\n const directions = bgDark ? [1, -1] : [-1, 1]\n for (const dir of directions) {\n const end = dir < 0 ? 0 : 100\n if (!pass(end)) continue\n // Binary search for the lightness closest to the original that still passes.\n let lo = fgHsl.l\n let hi = end\n for (let i = 0; i < 24; i++) {\n const mid = (lo + hi) / 2\n if (pass(mid)) hi = mid\n else lo = mid\n }\n return hslToHex({ ...fgHsl, l: hi })\n }\n // Unreachable for ratio <= 21, but keep the best effort: the stronger of black and white.\n const black = contrastRatio('#000000', rgbToHex(bgRgb)) ?? 0\n const white = contrastRatio('#ffffff', rgbToHex(bgRgb)) ?? 0\n return black >= white ? '#000000' : '#ffffff'\n}\n\n/** Mix two colours in sRGB: `amount` 0 is `a`, 1 is `b`. Hex out. */\nexport function mix(a: string, b: string, amount: number): string {\n const ra = parseColor(a)\n const rb = parseColor(b)\n if (!ra || !rb) return a\n const t = clamp(amount, 0, 1)\n return rgbToHex({\n r: ra.r + (rb.r - ra.r) * t,\n g: ra.g + (rb.g - ra.g) * t,\n b: ra.b + (rb.b - ra.b) * t,\n })\n}\n","/**\n * The theme-token model. Firm-agnostic: the token *catalog*, default values and\n * presets are supplied by the consuming app (via {@link createThemeStore}); this\n * module owns the shared types and the logic for writing tokens onto the live\n * document.\n *\n * **One value, both outputs.** The blocks token contract is raw HSL triplets\n * (`--primary: 228 50% 25%`, read as `hsl(var(--primary))`), and Tailwind's\n * `--color-*` map is derived from them. A host may theme either half (Clarum's\n * `@theme` is hex `--color-*`; the ARBI app's stylesheet is triplets), so every\n * token is written to BOTH from the one value ({@link themeCssVars}): the triplet\n * and the full colour. Tailwind resolves a `--color-*` where it is declared, so a\n * theme that wrote only the triplets would leave `bg-primary` behind, and one\n * that wrote only `--color-*` would leave every part that reads a triplet\n * directly (step bar, charts, calendar, grid, canvas) on the package defaults.\n *\n * Where the variables are written is the emit model, {@link ThemeEmitMode}:\n *\n * - `'flat'` (default): inline custom properties on `<html>`, plus `--font-*` /\n * `--radius`. Inline styles override the stylesheet defaults, so an edit\n * previews live across the whole app and reverts cleanly. No dark variant.\n *\n * - `'cssVars'`: an injected `<style id=\"arbi-theme-vars\">` appended to `<head>`\n * with a `:root { light } / :root.dark { dark }` structure, so an app with a\n * real `.dark` variant keeps it. The injected sheet is *unlayered*, so it wins\n * over the app's own `@layer base` colours at equal specificity.\n */\nimport { toCssColor, toHslTriplet } from './color'\n\nexport { toHslTriplet }\n\nexport interface ColorToken {\n /** Key without a prefix, e.g. \"primary\" → `--primary` and `--color-primary`. */\n key: string\n label: string\n /** Grouping id for the panel layout (e.g. \"shadcn\" | \"brand\" | \"ai\"). */\n group: string\n}\n\nexport interface ThemeFonts {\n display: string\n sans: string\n}\n\nexport interface ThemeTokens {\n /** Colour values keyed by token key (hex, `rgb()`, `hsl()` or a raw triplet). */\n colors: Record<string, string>\n fonts: ThemeFonts\n /** Base radius in rem. */\n radius: number\n /** Dark-variant colour values keyed by token key, for a host with a dark mode. */\n dark?: Record<string, string>\n}\n\nexport interface ThemePreset {\n id: string\n label: string\n tokens: ThemeTokens\n}\n\n/** Where a theme is written on the document. See the module doc for the models. */\nexport type ThemeEmitMode = 'flat' | 'cssVars'\n\nexport interface ApplyThemeOptions {\n /** Emit model. Defaults to `'flat'`. */\n mode?: ThemeEmitMode\n /**\n * `cssVars` mode only: dark-variant colour values keyed by token key. Emitted\n * under `:root.dark`. When omitted, only `:root` is emitted — note that an\n * overridden light token then also applies in dark (the injected `:root` is\n * unlayered and beats the app's own `.dark` rules), so a host with a dark mode\n * MUST supply this for every editable token to keep dark mode intact.\n */\n dark?: Record<string, string>\n /** `flat` mode only: target element. Defaults to `document.documentElement`. */\n root?: HTMLElement\n}\n\n/** Id of the injected `<style>` that carries the `cssVars`-mode custom properties. */\nexport const THEME_STYLE_ID = 'arbi-theme-vars'\n\n/**\n * The custom properties one set of colour values paints: for every key, the raw triplet\n * (`--primary: 214 51.7% 11.4%`) and Tailwind's full colour (`--color-primary`: hex as written, or\n * `hsl(<triplet>)` for a triplet value), from the one value. A value the converter does not know\n * (`oklch()`, `var()`) is written unchanged to both, as the contract's full-colour tokens\n * (`--status-*`) expect.\n */\nexport function themeCssVars(colors: Record<string, string>): Record<string, string> {\n const vars: Record<string, string> = {}\n for (const [key, value] of Object.entries(colors)) {\n vars[`--${key}`] = toHslTriplet(value)\n vars[`--color-${key}`] = toCssColor(value)\n }\n return vars\n}\n\n/** The typography and shape variables of a theme. */\nexport function themeMetaVars(\n theme: Pick<ThemeTokens, 'fonts' | 'radius'>\n): Record<string, string> {\n return {\n '--font-display': theme.fonts.display,\n '--font-sans': theme.fonts.sans,\n '--radius': `${theme.radius}rem`,\n }\n}\n\nfunction renderBlock(selector: string, vars: Record<string, string>): string {\n const body = Object.entries(vars)\n .map(([name, value]) => ` ${name}: ${value};`)\n .join('\\n')\n return `${selector} {\\n${body}\\n}`\n}\n\nfunction emitCssVars(theme: ThemeTokens, dark?: Record<string, string>): void {\n if (typeof document === 'undefined') return\n let css = renderBlock(':root', { ...themeCssVars(theme.colors), ...themeMetaVars(theme) })\n if (dark) css += `\\n${renderBlock(':root.dark', themeCssVars(dark))}`\n let style = document.getElementById(THEME_STYLE_ID) as HTMLStyleElement | null\n if (!style) {\n style = document.createElement('style')\n style.id = THEME_STYLE_ID\n document.head.appendChild(style)\n }\n style.textContent = css\n}\n\nfunction removeCssVars(): void {\n if (typeof document === 'undefined') return\n document.getElementById(THEME_STYLE_ID)?.remove()\n}\n\nfunction normalizeOptions(optionsOrRoot: ApplyThemeOptions | HTMLElement): ApplyThemeOptions {\n if (typeof HTMLElement !== 'undefined' && optionsOrRoot instanceof HTMLElement) {\n return { root: optionsOrRoot }\n }\n return optionsOrRoot as ApplyThemeOptions\n}\n\n/**\n * Write a theme onto the live document: every colour as both its triplet and its `--color-*`\n * (see {@link themeCssVars}), plus `--font-*` / `--radius`.\n *\n * In `flat` mode (default) inline on `document.documentElement` (or a supplied root). In `cssVars`\n * mode into an injected `<style#arbi-theme-vars>` with a `:root.dark` block for `dark` (see the\n * module doc). The legacy `applyThemeVars(theme, rootElement)` call form still works.\n */\nexport function applyThemeVars(\n theme: ThemeTokens,\n optionsOrRoot: ApplyThemeOptions | HTMLElement = {}\n): void {\n const { mode = 'flat', dark, root = document.documentElement } = normalizeOptions(optionsOrRoot)\n\n if (mode === 'cssVars') {\n emitCssVars(theme, dark)\n return\n }\n\n for (const [name, value] of Object.entries({\n ...themeCssVars(theme.colors),\n ...themeMetaVars(theme),\n })) {\n root.style.setProperty(name, value)\n }\n}\n\n/**\n * Set ONLY the typography vars, as inline styles on the root element.\n *\n * Typography is often chosen independently of colour — an app may let a reader\n * pick a typeface while its palette is owned elsewhere. Writing the two vars\n * inline (rather than through `applyThemeVars`) keeps this orthogonal in two\n * ways: it touches no colour or radius token, and an inline style outranks any\n * selector, so a font choice survives a `cssVars`-mode theme that emits its own\n * `:root` block (the ARBI studio's theme editor does exactly that).\n */\nexport function applyFontVars(\n fonts: ThemeFonts,\n root: HTMLElement = document.documentElement\n): void {\n root.style.setProperty('--font-display', fonts.display)\n root.style.setProperty('--font-sans', fonts.sans)\n}\n\n/** Undo {@link applyFontVars}, reverting to the stylesheet's own font tokens. */\nexport function clearFontVars(root: HTMLElement = document.documentElement): void {\n root.style.removeProperty('--font-display')\n root.style.removeProperty('--font-sans')\n}\n\n/**\n * Remove a theme's overrides, reverting to the stylesheet defaults.\n *\n * In `flat` mode removes the inline overrides (both halves) for the theme's keys. In `cssVars`\n * mode removes the injected `<style#arbi-theme-vars>` in full (restoring the app's own colours\n * exactly).\n */\nexport function clearThemeVars(\n theme: ThemeTokens,\n optionsOrRoot: ApplyThemeOptions | HTMLElement = {}\n): void {\n const { mode = 'flat', root = document.documentElement } = normalizeOptions(optionsOrRoot)\n\n if (mode === 'cssVars') {\n removeCssVars()\n return\n }\n\n for (const key of Object.keys(theme.colors)) {\n root.style.removeProperty(`--${key}`)\n root.style.removeProperty(`--color-${key}`)\n }\n root.style.removeProperty('--font-display')\n root.style.removeProperty('--font-sans')\n root.style.removeProperty('--radius')\n}\n","/**\n * Brand inputs → the whole token contract.\n *\n * The theme editor asks for a few intents (primary and accent colour, how warm the surfaces are,\n * whether the sidebar is light or a brand panel, the chart style, the three status colours) and\n * derives every dependent token from them, light and dark: foregrounds that read on their\n * backgrounds (WCAG AA, `ensureContrast`), the hover/selected surface (`--accent`), muted, ring,\n * border, input, sidebar, the AI tints and a chart palette in harmony with the brand.\n *\n * Each derived token declares the inputs it depends on ({@link DERIVED_TOKENS}), so changing one\n * input rewrites only what it controls: a primary change never touches the status families, a\n * status change never touches the surfaces. Nothing is derived until an input changes, so an\n * untouched theme paints exactly the host's own stylesheet values.\n */\nimport {\n AA_TEXT,\n AA_UI,\n contrastRatio,\n ensureContrast,\n hslToHex,\n mix,\n parseColor,\n parseHsl,\n relativeLuminance,\n toHex,\n type Hsl,\n} from './color'\n\nexport type ColorScheme = 'light' | 'dark'\n/** `light`: the sidebar is a quiet surface. `brand`: a dark panel in the primary's hue. */\nexport type SidebarStyle = 'light' | 'brand'\n/** `harmonious`: hues near the primary and accent. `distinct`: evenly spaced hues from the primary. */\nexport type ChartStyle = 'harmonious' | 'distinct'\n\nexport interface ThemeInputs {\n /** The main brand colour: filled buttons, active tabs, links, focus rings. */\n primary: string\n /** The second brand colour: highlights, AI actions, accent buttons, the second chart series. */\n accent: string\n /** Surface tone: -1 cool grey-blue, 0 neutral, 1 warm paper. Beyond ±0.5 the page itself tints. */\n warmth: number\n sidebar: SidebarStyle\n charts: ChartStyle\n danger: string\n success: string\n warning: string\n /**\n * What `--secondary` is in this host: a brand accent (the blocks default, a saturated cyan) or a\n * quiet surface (shadcn's). Inferred from the host's own value; not shown as a control.\n */\n secondaryRole: 'accent' | 'surface'\n}\n\nexport type ThemeInputKey = keyof ThemeInputs\n\n/** The editor's purpose groups. */\nexport type ThemeGroup = 'brand' | 'surfaces' | 'text' | 'status' | 'charts'\n\ninterface DerivedToken {\n key: string\n group: ThemeGroup\n /** The inputs whose change rewrites this token. */\n deps: readonly ThemeInputKey[]\n}\n\nconst P: ThemeInputKey = 'primary'\nconst A: ThemeInputKey = 'accent'\nconst W: ThemeInputKey = 'warmth'\n\n// Neutrals follow the surface tone only, so a primary change never repaints the page.\nconst surface = (key: string, deps: readonly ThemeInputKey[] = [W]): DerivedToken => ({\n key,\n group: 'surfaces',\n deps,\n})\nconst text = (key: string, deps: readonly ThemeInputKey[] = [W]): DerivedToken => ({\n key,\n group: 'text',\n deps,\n})\nconst family = (hue: string, input: ThemeInputKey): DerivedToken[] =>\n ['bg', 'text', 'border', 'solid', 'text-strong'].map((part) => ({\n key: `${hue}-${part}`,\n group: 'status',\n deps: [input],\n }))\n\n/** Every token the derivation writes, with its group and the inputs it follows. */\nexport const DERIVED_TOKENS: readonly DerivedToken[] = [\n // Brand\n { key: 'primary', group: 'brand', deps: [P] },\n { key: 'ring', group: 'brand', deps: [P, W] },\n { key: 'hero', group: 'brand', deps: [P] },\n { key: 'secondary', group: 'brand', deps: [A, W] },\n { key: 'theme-cyan', group: 'brand', deps: [A] },\n { key: 'theme-cyan-bright', group: 'brand', deps: [A, P] },\n { key: 'ai-ink', group: 'brand', deps: [A] },\n { key: 'ai-soft', group: 'brand', deps: [A] },\n { key: 'ai-accent', group: 'brand', deps: [A] },\n { key: 'ai-accent-soft', group: 'brand', deps: [A] },\n // Surfaces\n surface('background'),\n surface('card'),\n surface('popover'),\n surface('muted'),\n surface('accent', [P, W]),\n surface('border'),\n surface('input'),\n surface('ai-surface'),\n { key: 'sidebar', group: 'surfaces', deps: [P, W, 'sidebar'] },\n { key: 'sidebar-foreground', group: 'surfaces', deps: [P, W, 'sidebar'] },\n { key: 'sidebar-muted', group: 'surfaces', deps: [P, W, 'sidebar'] },\n { key: 'sidebar-accent', group: 'surfaces', deps: [P, W, 'sidebar'] },\n { key: 'sidebar-accent-foreground', group: 'surfaces', deps: [P, W, 'sidebar'] },\n { key: 'sidebar-border', group: 'surfaces', deps: [P, W, 'sidebar'] },\n { key: 'sidebar-primary', group: 'surfaces', deps: [P, A, 'sidebar'] },\n // Text\n text('foreground'),\n text('card-foreground'),\n text('popover-foreground'),\n text('muted-foreground'),\n text('primary-foreground', [P, W]),\n text('accent-foreground', [P, W]),\n text('secondary-foreground', [A, W]),\n text('ai-accent-foreground', [A]),\n text('destructive-foreground', ['danger']),\n // Status\n { key: 'destructive', group: 'status', deps: ['danger'] },\n { key: 'success', group: 'status', deps: ['success'] },\n { key: 'warning', group: 'status', deps: ['warning'] },\n ...family('red', 'danger'),\n ...family('green', 'success'),\n ...family('yellow', 'warning'),\n // Charts (the step bar's start/finish accent follows the first series)\n ...[1, 2, 3, 4, 5].map((i) => ({\n key: `chart-${i}`,\n group: 'charts' as const,\n deps: [P, A, 'charts'] as const,\n })),\n { key: 'wf-start', group: 'charts', deps: [P, A, 'charts'] },\n]\n\nconst DERIVED_BY_KEY = new Map(DERIVED_TOKENS.map((t) => [t.key, t]))\n\n/** The derived token `key`, or `undefined` when the derivation does not write it. */\nexport const derivedToken = (key: string) => DERIVED_BY_KEY.get(key)\n\n/** The keys an input controls (what changes when it does). */\nexport function keysOfInput(input: ThemeInputKey): string[] {\n return DERIVED_TOKENS.filter((t) => t.deps.includes(input)).map((t) => t.key)\n}\n\n/** The keys a purpose group holds. */\nexport function keysOfGroup(group: ThemeGroup): string[] {\n return DERIVED_TOKENS.filter((t) => t.group === group).map((t) => t.key)\n}\n\n// ── Inference: the inputs that describe an existing theme ─────────────────────\n\nconst DEFAULT_INPUTS: ThemeInputs = {\n primary: '#202b61',\n accent: '#00adef',\n warmth: 0,\n sidebar: 'light',\n charts: 'harmonious',\n danger: '#bf3b3b',\n success: '#1f8a5b',\n warning: '#c08a2d',\n secondaryRole: 'accent',\n}\n\nconst isWarm = (h: number) => h >= 15 && h <= 90\nconst isCool = (h: number) => h >= 180 && h <= 270\nconst clamp = (n: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, n))\n\nfunction warmthOf(colors: Record<string, string>): number {\n const bg = parseHsl(colors.background ?? '')\n const tint = parseHsl(colors.muted ?? colors.border ?? colors.card ?? '')\n const sign = (hsl: Hsl | null) => (!hsl ? 0 : isWarm(hsl.h) ? 1 : isCool(hsl.h) ? -1 : 0)\n if (bg && bg.l < 99 && bg.s > 3) {\n return sign(bg) * (0.5 + Math.min(0.5, (100 - bg.l) / 12))\n }\n if (!tint) return 0\n return sign(tint) * Math.min(0.5, tint.s / 40)\n}\n\n/**\n * The inputs that describe an existing set of colours (a host's defaults, a preset): the primary\n * as is, the accent from the AI/secondary tokens, the warmth from the page and muted surfaces, the\n * sidebar style from its lightness. A key the colours lack falls back to a neutral default.\n */\nexport function inferInputs(colors: Record<string, string>): ThemeInputs {\n const hex = (key: string, fallback: string) =>\n colors[key] && parseColor(colors[key]) ? toHex(colors[key]) : fallback\n const saturated = (key: string) => (parseHsl(colors[key] ?? '')?.s ?? 0) >= 35\n const accentKey = ['ai-accent', 'ai-ink', 'secondary', 'theme-cyan'].find(\n (k) => colors[k] && saturated(k)\n )\n const sidebar = parseColor(colors.sidebar ?? '')\n return {\n primary: hex('primary', DEFAULT_INPUTS.primary),\n accent: accentKey ? toHex(colors[accentKey]) : DEFAULT_INPUTS.accent,\n warmth: Math.round(warmthOf(colors) * 100) / 100,\n sidebar: sidebar && relativeLuminance(sidebar) < 0.2 ? 'brand' : 'light',\n charts: 'harmonious',\n danger: hex('destructive', DEFAULT_INPUTS.danger),\n success: hex('success', DEFAULT_INPUTS.success),\n warning: hex('warning', DEFAULT_INPUTS.warning),\n secondaryRole: colors.secondary && !saturated('secondary') ? 'surface' : 'accent',\n }\n}\n\n// ── Derivation ────────────────────────────────────────────────────────────────\n\nconst hsl = (h: number, s: number, l: number) => hslToHex({ h, s, l })\n\n/** The lighter or darker candidate, whichever reads better on `bg`, nudged to AA if needed. */\nfunction readableOn(bg: string, light: string, dark: string, ratio = AA_TEXT): string {\n const pick = (contrastRatio(light, bg) ?? 0) >= (contrastRatio(dark, bg) ?? 0) ? light : dark\n return ensureContrast(pick, bg, ratio)\n}\n\nfunction hueDistance(a: number, b: number): number {\n const d = Math.abs(a - b) % 360\n return d > 180 ? 360 - d : d\n}\n\n/** Five series hues: the primary's and the accent's, then the candidates farthest from those. */\nfunction chartHues(p: Hsl, a: Hsl, style: ChartStyle): number[] {\n // A grey has no hue to harmonise with: lean on the other brand colour, then a calm blue.\n const base = p.s >= 12 ? p.h : a.s >= 12 ? a.h : 220\n const second = a.s >= 12 ? a.h : (base + 150) % 360\n if (style === 'distinct') return [0, 1, 2, 3, 4].map((i) => (base + i * 72) % 360)\n const chosen = [base, hueDistance(base, second) < 25 ? (base + 150) % 360 : second]\n const candidates = [180, 60, -60, 120, -120, 30, -30].flatMap((d) => [\n (base + d + 360) % 360,\n (chosen[1] + d + 360) % 360,\n ])\n while (chosen.length < 5) {\n let best = candidates[0]\n let bestScore = -1\n for (const c of candidates) {\n const score = Math.min(...chosen.map((h) => hueDistance(h, c)))\n if (score > bestScore) {\n best = c\n bestScore = score\n }\n }\n chosen.push(best)\n }\n return chosen\n}\n\n/**\n * Every derived token's value for one scheme, as hex. Pure: the same inputs always give the same\n * colours. Text pairs reach WCAG AA (4.5:1), ring and input 3:1 against the page, chart series 3:1\n * against the page (graphical objects).\n */\nexport function deriveColors(inputs: ThemeInputs, scheme: ColorScheme): Record<string, string> {\n const dark = scheme === 'dark'\n const p = parseHsl(inputs.primary) ?? parseHsl(DEFAULT_INPUTS.primary)!\n const a = parseHsl(inputs.accent) ?? parseHsl(DEFAULT_INPUTS.accent)!\n const w = clamp(inputs.warmth, -1, 1)\n const strength = Math.abs(w)\n const pageTint = Math.max(0, strength - 0.5) * 2 // 0 until ±0.5, then 0..1\n\n // The neutral family: pure grey at 0, paper (warm) or slate (cool) as the tone moves.\n const sh = w > 0 ? 42 : 218\n const ss = strength * (w > 0 ? 35 : 25)\n const out: Record<string, string> = {}\n\n // Surfaces\n const bgL = dark ? 7 : 100 - 6 * pageTint\n const neutralS = dark ? Math.min(ss, 22) : ss\n out.background = hsl(sh, neutralS, bgL)\n out.card = dark ? hsl(sh, neutralS, 9) : mix(out.background, '#ffffff', 0.85)\n out.popover = dark ? hsl(sh, neutralS, 10) : out.card\n out.muted = hsl(sh, neutralS * (dark ? 0.8 : 1), dark ? 14 : bgL - 4 - 1.5 * pageTint)\n out.border = hsl(sh, neutralS * (dark ? 0.7 : 0.8), dark ? 20 : bgL - 10)\n out.input = ensureContrast(hsl(sh, neutralS * 0.6, dark ? 42 : 58), out.background, AA_UI)\n out['ai-surface'] = out.card\n\n // Hover and selected rows: a light tint of the primary (a deep one in dark).\n const accentS = Math.min(p.s + 10, 62) * (1 - 0.5 * Math.max(0, w))\n out.accent = dark ? hsl(p.h, Math.min(p.s, 35), 21) : hsl(p.h, accentS, bgL - 5)\n\n // Brand\n const primary = dark && p.l < 55 ? hsl(p.h, Math.min(p.s + 20, 80), 70) : toHex(inputs.primary)\n out.primary = primary\n out.ring = ensureContrast(\n hsl(p.h, Math.min(p.s, 60) * (dark ? 0.9 : 0.8), dark ? 65 : 54),\n out.background,\n AA_UI\n )\n out.hero = dark\n ? hsl(p.h, Math.min(p.s, 50), 17)\n : p.l <= 30\n ? toHex(inputs.primary)\n : hsl(p.h, p.s, 22)\n\n const accent = dark && a.l < 45 ? hsl(a.h, a.s, 55) : toHex(inputs.accent)\n out['ai-soft'] = mix(accent, out.background, dark ? 0.82 : 0.88)\n out['ai-ink'] = ensureContrast(accent, out['ai-soft'], AA_TEXT)\n out['ai-accent'] = out['ai-ink']\n out['ai-accent-soft'] = out['ai-soft']\n out['theme-cyan'] = ensureContrast(accent, out.background, AA_TEXT)\n out['theme-cyan-bright'] = ensureContrast(hsl(a.h, a.s, Math.max(a.l, 47)), out.hero, AA_TEXT)\n\n // Text\n const ink = hsl(sh, Math.min(10 + ss, 40), 12)\n const paper = hsl(sh, Math.min(ss, 30), dark ? 93 : 98)\n out.foreground = ensureContrast(dark ? hsl(sh, 18, 93) : ink, out.background, 7)\n out['card-foreground'] = out.foreground\n out['popover-foreground'] = out.foreground\n out['muted-foreground'] = ensureContrast(\n hsl(sh, Math.min(ss, 15), dark ? 70 : 42),\n out.muted,\n AA_TEXT\n )\n out['primary-foreground'] = readableOn(primary, paper, dark ? hsl(p.h, 30, 8) : ink)\n out['accent-foreground'] = dark\n ? ensureContrast(hsl(p.h, 70, 92), out.accent, AA_TEXT)\n : ensureContrast(primary, out.accent, AA_TEXT)\n out['ai-accent-foreground'] = readableOn(out['ai-accent'], '#ffffff', ink)\n\n if (inputs.secondaryRole === 'surface') {\n out.secondary = hsl(sh, neutralS, dark ? 18 : bgL - 7)\n out['secondary-foreground'] = ensureContrast(out.foreground, out.secondary, AA_TEXT)\n } else {\n out.secondary = accent\n out['secondary-foreground'] = readableOn(accent, paper, ink)\n }\n\n // Sidebar\n if (inputs.sidebar === 'brand') {\n const panel = hsl(p.h, Math.min(p.s, 45), dark ? 9 : 10)\n out.sidebar = panel\n out['sidebar-accent'] = hsl(p.h, Math.min(p.s, 45), 18)\n out['sidebar-border'] = hsl(p.h, Math.min(p.s, 40), 20)\n out['sidebar-foreground'] = ensureContrast(hsl(p.h, 15, 82), panel, AA_TEXT)\n out['sidebar-muted'] = ensureContrast(hsl(p.h, 10, 60), panel, AA_TEXT)\n out['sidebar-accent-foreground'] = ensureContrast(paper, out['sidebar-accent'], AA_TEXT)\n out['sidebar-primary'] = ensureContrast(hsl(a.h, a.s, Math.max(a.l, 50)), panel, AA_UI)\n } else {\n out.sidebar = hsl(sh, neutralS, dark ? 10 : bgL - 3)\n out['sidebar-accent'] = out.accent\n out['sidebar-border'] = out.border\n out['sidebar-foreground'] = out.foreground\n out['sidebar-muted'] = ensureContrast(out['muted-foreground'], out.sidebar, AA_TEXT)\n out['sidebar-accent-foreground'] = out['accent-foreground']\n out['sidebar-primary'] = ensureContrast(primary, out.sidebar, AA_UI)\n }\n\n // Status: one family per input, tinted on the page.\n const status = (hue: string, color: string) => {\n const c = toHex(color)\n const solid = dark && (parseHsl(c)?.l ?? 50) < 45 ? mix(c, '#ffffff', 0.25) : c\n const bg = mix(solid, out.background, dark ? 0.85 : 0.9)\n out[`${hue}-bg`] = bg\n out[`${hue}-border`] = mix(solid, out.background, dark ? 0.65 : 0.72)\n out[`${hue}-solid`] = solid\n out[`${hue}-text`] = ensureContrast(solid, bg, AA_TEXT)\n out[`${hue}-text-strong`] = ensureContrast(solid, bg, 7)\n return solid\n }\n const danger = status('red', inputs.danger)\n out.success = status('green', inputs.success)\n out.warning = status('yellow', inputs.warning)\n out.destructive = dark ? hsl(parseHsl(danger)!.h, 55, 42) : toHex(inputs.danger)\n out['destructive-foreground'] = readableOn(out.destructive, '#ffffff', ink)\n\n // Charts: brand-led hues at alternating lightness, each 3:1 on the page.\n const hues = chartHues(p, a, inputs.charts)\n const lightness = dark ? [62, 58, 68, 54, 72] : [44, 50, 58, 38, 64]\n hues.forEach((h, i) => {\n const s = clamp(i === 0 ? p.s : i === 1 ? a.s : Math.max(p.s, a.s), 55, 80)\n out[`chart-${i + 1}`] = ensureContrast(hsl(h, s, lightness[i]), out.background, AA_UI)\n })\n out['wf-start'] = out['chart-1']\n\n return out\n}\n\n// ── Contrast checks ───────────────────────────────────────────────────────────\n\nexport interface ContrastPair {\n /** The text (or UI part) token. */\n fg: string\n /** The surface it sits on. */\n bg: string\n /** WCAG AA threshold: 4.5 for text, 3 for UI parts. */\n min: number\n /** Plain-language name, e.g. \"Text on buttons\". */\n label: string\n}\n\n/** The pairs the editor checks, light and dark. */\nexport const CONTRAST_PAIRS: readonly ContrastPair[] = [\n { fg: 'foreground', bg: 'background', min: AA_TEXT, label: 'Body text on the page' },\n { fg: 'card-foreground', bg: 'card', min: AA_TEXT, label: 'Text on cards' },\n { fg: 'popover-foreground', bg: 'popover', min: AA_TEXT, label: 'Text in menus' },\n { fg: 'muted-foreground', bg: 'background', min: AA_TEXT, label: 'Secondary text on the page' },\n { fg: 'muted-foreground', bg: 'muted', min: AA_TEXT, label: 'Secondary text on muted areas' },\n { fg: 'primary-foreground', bg: 'primary', min: AA_TEXT, label: 'Text on primary buttons' },\n { fg: 'secondary-foreground', bg: 'secondary', min: AA_TEXT, label: 'Text on secondary fills' },\n { fg: 'accent-foreground', bg: 'accent', min: AA_TEXT, label: 'Text on hover and selection' },\n {\n fg: 'destructive-foreground',\n bg: 'destructive',\n min: AA_TEXT,\n label: 'Text on danger buttons',\n },\n { fg: 'ring', bg: 'background', min: AA_UI, label: 'Focus ring on the page' },\n { fg: 'input', bg: 'background', min: AA_UI, label: 'Field borders on the page' },\n]\n\nexport interface ContrastIssue extends ContrastPair {\n ratio: number\n /** The foreground value that passes (same hue, lightness moved). */\n fix: string\n}\n\n/**\n * The pairs below their threshold, given a token resolver (the theme's value of a key, or\n * `undefined` when unknown). Pairs with an unknown or unparseable side are skipped.\n */\nexport function contrastIssues(\n resolve: (key: string) => string | undefined,\n pairs: readonly ContrastPair[] = CONTRAST_PAIRS\n): ContrastIssue[] {\n const issues: ContrastIssue[] = []\n for (const pair of pairs) {\n const fg = resolve(pair.fg)\n const bg = resolve(pair.bg)\n if (!fg || !bg) continue\n const ratio = contrastRatio(fg, bg)\n if (ratio === null || ratio >= pair.min) continue\n issues.push({ ...pair, ratio, fix: ensureContrast(fg, bg, pair.min) })\n }\n return issues\n}\n","import { useState, type ReactNode } from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface TabItem {\n label: string\n content: ReactNode\n}\n\nexport interface TabsProps {\n items: TabItem[]\n testId?: string\n}\n\n/**\n * A tabbed panel: a row of tabs over the active tab's content. Radix Tabs gives the full WAI-ARIA\n * pattern: one tab stop, arrow keys / Home / End move between tabs, `aria-controls` and\n * `aria-labelledby` pair each tab with its panel.\n */\nexport function Tabs({ items, testId }: TabsProps) {\n const list = items ?? []\n const [active, setActive] = useState('0')\n const activeIndex = Math.min(Number(active), Math.max(list.length - 1, 0))\n return (\n <TabsPrimitive.Root value={String(activeIndex)} onValueChange={setActive} data-testid={testId}>\n <TabsPrimitive.List className=\"flex flex-wrap gap-1 border-b border-border\">\n {list.map((t, i) => (\n <TabsPrimitive.Trigger\n key={i}\n value={String(i)}\n className={cn(\n '-mb-px border-b-2 px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11',\n i === activeIndex\n ? 'border-primary text-foreground'\n : 'border-transparent text-muted-foreground hover:text-foreground'\n )}\n data-testid={testId && `${testId}-tab-${i}`}\n >\n {t.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n {list.map((t, i) => (\n <TabsPrimitive.Content\n key={i}\n value={String(i)}\n className=\"pt-5 text-sm leading-relaxed text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n data-testid={i === activeIndex ? testId && `${testId}-panel` : undefined}\n >\n {t.content}\n </TabsPrimitive.Content>\n ))}\n </TabsPrimitive.Root>\n )\n}\n","/**\n * The theme editor preview's sample words. Neutral defaults; a host overrides any of them (e.g. to\n * its own vocabulary) through `ThemeEditor previewLabels` or `ThemePreview labels`.\n */\nexport interface ThemePreviewLabels {\n title: string\n subtitle: string\n primaryAction: string\n accentAction: string\n secondaryAction: string\n outlineAction: string\n dangerAction: string\n fieldLabel: string\n fieldPlaceholder: string\n cardBody: string\n tabs: [string, string, string]\n tabBody: string\n nav: [string, string, string]\n steps: [string, string, string]\n chartLabel: string\n chartMonths: [string, string, string, string]\n chartSeries: [string, string]\n toastTitle: string\n toastBody: string\n toastAction: string\n badges: { neutral: string; success: string; warning: string; danger: string; ai: string }\n alerts: { info: string; danger: string }\n}\n\nexport const DEFAULT_THEME_PREVIEW_LABELS: ThemePreviewLabels = {\n title: 'Preview',\n subtitle: 'How your theme looks on real components',\n primaryAction: 'Save',\n accentAction: 'Ask AI',\n secondaryAction: 'Cancel',\n outlineAction: 'Export',\n dangerAction: 'Delete',\n fieldLabel: 'Search',\n fieldPlaceholder: 'Find a document',\n cardBody: 'Cards hold a title, a short summary and their actions.',\n tabs: ['Overview', 'Activity', 'Settings'],\n tabBody: 'The active tab is underlined in the primary colour.',\n nav: ['Home', 'Inbox', 'Documents'],\n steps: ['Intake', 'Review', 'Sign'],\n chartLabel: 'Documents per month, two series',\n chartMonths: ['Jan', 'Feb', 'Mar', 'Apr'],\n chartSeries: ['Received', 'Completed'],\n toastTitle: 'Changes saved',\n toastBody: 'Your theme is live for everyone.',\n toastAction: 'Undo',\n badges: { neutral: 'Draft', success: 'Done', warning: 'Due soon', danger: 'Overdue', ai: 'AI' },\n alerts: {\n info: 'A new version is available.',\n danger: 'The upload failed.',\n },\n}\n"]}
@@ -3,17 +3,17 @@
3
3
 
4
4
  var chunkHYAYXLIZ_cjs = require('./chunk-HYAYXLIZ.cjs');
5
5
  var chunkKWJW5TMH_cjs = require('./chunk-KWJW5TMH.cjs');
6
- var chunkLBKTTQUR_cjs = require('./chunk-LBKTTQUR.cjs');
6
+ var chunkCMYJEIZB_cjs = require('./chunk-CMYJEIZB.cjs');
7
7
  var chunkEGJ7WJ6Q_cjs = require('./chunk-EGJ7WJ6Q.cjs');
8
8
  var chunkJBL4PPEE_cjs = require('./chunk-JBL4PPEE.cjs');
9
- var chunkUDMII47W_cjs = require('./chunk-UDMII47W.cjs');
9
+ var chunkWBLCPCWR_cjs = require('./chunk-WBLCPCWR.cjs');
10
10
  var chunkT35SGVB2_cjs = require('./chunk-T35SGVB2.cjs');
11
11
  var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
12
12
  var chunkZ3LFF3YT_cjs = require('./chunk-Z3LFF3YT.cjs');
13
13
  var chunkNSD37OF5_cjs = require('./chunk-NSD37OF5.cjs');
14
- var chunkHVOPUYAG_cjs = require('./chunk-HVOPUYAG.cjs');
15
- var chunk3T3IKNGF_cjs = require('./chunk-3T3IKNGF.cjs');
16
- var chunkY6ZNWC7E_cjs = require('./chunk-Y6ZNWC7E.cjs');
14
+ var chunkCJF7B5A7_cjs = require('./chunk-CJF7B5A7.cjs');
15
+ var chunkZXW6WFZG_cjs = require('./chunk-ZXW6WFZG.cjs');
16
+ var chunkK26RLK2Y_cjs = require('./chunk-K26RLK2Y.cjs');
17
17
  var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
18
18
  var chunk7JVP3LS6_cjs = require('./chunk-7JVP3LS6.cjs');
19
19
  var chunkKGAYUFXD_cjs = require('./chunk-KGAYUFXD.cjs');
@@ -38,25 +38,25 @@ function useSkillsEnabled() {
38
38
  }
39
39
  function useWorkflowDefinitions() {
40
40
  const { data: listings } = react.useSkills();
41
- const usage = chunkHVOPUYAG_cjs.useWorkflowUsage();
41
+ const usage = chunkCJF7B5A7_cjs.useWorkflowUsage();
42
42
  const skillsEnabled = useSkillsEnabled();
43
43
  return react$1.useMemo(() => {
44
44
  const { host: builtins, skills: fromServer } = chunk555BS22J_cjs.mergeSkillWorkflows(
45
- chunkHVOPUYAG_cjs.WEB_WORKFLOWS,
45
+ chunkCJF7B5A7_cjs.WEB_WORKFLOWS,
46
46
  listings ?? []
47
47
  );
48
48
  const all = [...builtins, ...fromServer];
49
49
  const byId = new Map(all.map((w) => [w.id, w]));
50
- const pinned = chunkHVOPUYAG_cjs.DASHBOARD_PINNED.flatMap((id) => {
50
+ const pinned = chunkCJF7B5A7_cjs.DASHBOARD_PINNED.flatMap((id) => {
51
51
  const w = byId.get(id);
52
52
  return w ? [w] : [];
53
53
  });
54
54
  return {
55
55
  skills: all,
56
56
  skillsEnabled,
57
- start: skillsEnabled ? [...builtins, ...chunkHVOPUYAG_cjs.sortByRecentUse(fromServer, usage)] : [],
58
- dashboard: [...pinned, ...chunkHVOPUYAG_cjs.DASHBOARD_OPERATIONS],
59
- forTasks: [chunkHVOPUYAG_cjs.CUSTOM_TASK, ...all.filter((w) => w.schedulable), chunkHVOPUYAG_cjs.REMIND_TASK]
57
+ start: skillsEnabled ? [...builtins, ...chunkCJF7B5A7_cjs.sortByRecentUse(fromServer, usage)] : [],
58
+ dashboard: [...pinned, ...chunkCJF7B5A7_cjs.DASHBOARD_OPERATIONS],
59
+ forTasks: [chunkCJF7B5A7_cjs.CUSTOM_TASK, ...all.filter((w) => w.schedulable), chunkCJF7B5A7_cjs.REMIND_TASK]
60
60
  };
61
61
  }, [listings, usage, skillsEnabled]);
62
62
  }
@@ -84,7 +84,7 @@ function useWorkflowTasks() {
84
84
  );
85
85
  const create = react$1.useCallback(
86
86
  async (ctx, forceWorkflow = false) => {
87
- const request = chunkHVOPUYAG_cjs.taskComposerToCreateRequest(
87
+ const request = chunkCJF7B5A7_cjs.taskComposerToCreateRequest(
88
88
  { ...ctx, documentTitles, plan: ctx.plan ?? null },
89
89
  activeWorkspaceId ?? void 0,
90
90
  forceWorkflow
@@ -126,7 +126,7 @@ function useWorkflowTasks() {
126
126
  );
127
127
  const update = react$1.useCallback(
128
128
  async (task, ctx) => {
129
- const patch = chunkHVOPUYAG_cjs.taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
129
+ const patch = chunkCJF7B5A7_cjs.taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
130
130
  if (task.is_owner === false) delete patch.shared;
131
131
  await updateConversation.mutateAsync({ conversationId: task.external_id, patch });
132
132
  },
@@ -134,7 +134,7 @@ function useWorkflowTasks() {
134
134
  );
135
135
  const updateWorkflow = react$1.useCallback(
136
136
  async (workflow, ctx) => {
137
- const patch = chunkHVOPUYAG_cjs.composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
137
+ const patch = chunkCJF7B5A7_cjs.composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
138
138
  if (workflow.is_owner === false) delete patch.shared;
139
139
  const workspaceId = workflow.workspace_ext_id ?? activeWorkspaceId;
140
140
  const updated = await updateWorkflowMutation.mutateAsync({
@@ -249,7 +249,7 @@ function ConnectedTaskComposer({
249
249
  const { tasks: allTasks } = react.useWorkItems();
250
250
  const { data: documents = [] } = react.useDocuments();
251
251
  const { create, update, updateWorkflow, isPending } = useWorkflowTasks();
252
- const scopeSource = chunkUDMII47W_cjs.useConnectedWorkflowScopeSource();
252
+ const scopeSource = chunkWBLCPCWR_cjs.useConnectedWorkflowScopeSource();
253
253
  const activeWorkspaceId = react.useArbiSessionState((s) => s.workspaceId);
254
254
  const activeWorkspace = react$1.useMemo(
255
255
  () => workspaces.find((w) => w.external_id === activeWorkspaceId) ?? null,
@@ -266,7 +266,7 @@ function ConnectedTaskComposer({
266
266
  const label = (t) => t.title?.trim() || "Untitled task";
267
267
  if (isWorkflow) return allTasks.map((t) => ({ id: t.external_id, name: label(t) }));
268
268
  const subject = task ?? { external_id: "__new__" };
269
- return chunkHVOPUYAG_cjs.moveTargets(
269
+ return chunkCJF7B5A7_cjs.moveTargets(
270
270
  [...allTasks.filter((t) => t.external_id !== subject.external_id), subject],
271
271
  subject
272
272
  ).map((t) => ({ id: t.external_id, name: label(t) }));
@@ -281,33 +281,33 @@ function ConnectedTaskComposer({
281
281
  );
282
282
  const initialValues = react$1.useMemo(() => {
283
283
  const ids = {
284
- customWorkflowId: chunkHVOPUYAG_cjs.CUSTOM_TASK_ID,
285
- reminderWorkflowId: chunkHVOPUYAG_cjs.REMIND_TASK_ID,
284
+ customWorkflowId: chunkCJF7B5A7_cjs.CUSTOM_TASK_ID,
285
+ reminderWorkflowId: chunkCJF7B5A7_cjs.REMIND_TASK_ID,
286
286
  definitions: forTasks
287
287
  };
288
288
  const base = launchWorkflow ? {
289
- ...chunkHVOPUYAG_cjs.workflowToComposerValues(launchWorkflow, ids),
289
+ ...chunkCJF7B5A7_cjs.workflowToComposerValues(launchWorkflow, ids),
290
290
  when: "once",
291
291
  runAt: "",
292
292
  rrule: "",
293
293
  eventKind: "",
294
294
  afterTaskId: "",
295
295
  name: ""
296
- } : editingWorkflow ? chunkHVOPUYAG_cjs.workflowToComposerValues(editingWorkflow, ids) : task ? chunkHVOPUYAG_cjs.taskToComposerValues(task, ids) : isWorkflow ? {
296
+ } : editingWorkflow ? chunkCJF7B5A7_cjs.workflowToComposerValues(editingWorkflow, ids) : task ? chunkCJF7B5A7_cjs.taskToComposerValues(task, ids) : isWorkflow ? {
297
297
  // Run now is the default start; scheduling is the fallback in the same field.
298
298
  assignee: "agent",
299
- workflowId: initialWorkflowId ?? chunkHVOPUYAG_cjs.CUSTOM_TASK_ID,
299
+ workflowId: initialWorkflowId ?? chunkCJF7B5A7_cjs.CUSTOM_TASK_ID,
300
300
  when: startLater ? "once" : "now",
301
301
  ...initialPrompt ? {
302
302
  inputs: {
303
- [initialWorkflowId === chunkHVOPUYAG_cjs.REMIND_TASK_ID ? "message" : "instruction"]: initialPrompt
303
+ [initialWorkflowId === chunkCJF7B5A7_cjs.REMIND_TASK_ID ? "message" : "instruction"]: initialPrompt
304
304
  }
305
305
  } : {},
306
306
  // A scheduled run needs an agent: the owner's Assistant unless another is picked.
307
307
  ...startLater && defaultAgentId ? { agentId: defaultAgentId } : {}
308
308
  } : initialAgentExtId ? (
309
309
  // Assigning an agent means agentic work: the free instruction, and tell me when done.
310
- { agentId: initialAgentExtId, workflowId: chunkHVOPUYAG_cjs.CUSTOM_TASK_ID, notifyOnComplete: true }
310
+ { agentId: initialAgentExtId, workflowId: chunkCJF7B5A7_cjs.CUSTOM_TASK_ID, notifyOnComplete: true }
311
311
  ) : {};
312
312
  return {
313
313
  timezone: chunkQUMUAJ2P_cjs.detectTimeZone(),
@@ -368,7 +368,7 @@ function ConnectedTaskComposer({
368
368
  const ctx = {
369
369
  workflow: chosen,
370
370
  values: submitted,
371
- plan: chosen.id === chunkHVOPUYAG_cjs.CUSTOM_TASK_ID ? plan : null
371
+ plan: chosen.id === chunkCJF7B5A7_cjs.CUSTOM_TASK_ID ? plan : null
372
372
  };
373
373
  try {
374
374
  if (isWorkflow && editingWorkflow && !options?.runOnce) {
@@ -404,7 +404,7 @@ function ConnectedTaskComposer({
404
404
  }
405
405
  };
406
406
  return /* @__PURE__ */ jsxRuntime.jsx(
407
- chunkHVOPUYAG_cjs.TaskComposer,
407
+ chunkCJF7B5A7_cjs.TaskComposer,
408
408
  {
409
409
  open,
410
410
  onOpenChange,
@@ -418,15 +418,15 @@ function ConnectedTaskComposer({
418
418
  tasks: taskOptions,
419
419
  initialValues,
420
420
  timezones,
421
- eventOptions: chunk3T3IKNGF_cjs.AUTOMATION_EVENTS,
421
+ eventOptions: chunkZXW6WFZG_cjs.AUTOMATION_EVENTS,
422
422
  eventWorkflowOptions: workspaceAutomations.filter((item) => item.external_id !== editingWorkflow?.external_id).map((item) => ({ id: item.external_id, label: item.name })),
423
423
  isPending,
424
424
  planDrafting: planWork.isPending,
425
425
  hasPlan: plan !== null,
426
- renderIcon: chunkHVOPUYAG_cjs.renderWorkflowIcon,
426
+ renderIcon: chunkCJF7B5A7_cjs.renderWorkflowIcon,
427
427
  scopeSource,
428
428
  renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
429
- chunkUDMII47W_cjs.ConnectedWorkflowDocumentsField,
429
+ chunkWBLCPCWR_cjs.ConnectedWorkflowDocumentsField,
430
430
  {
431
431
  field,
432
432
  value,
@@ -457,8 +457,8 @@ function ConnectedTaskComposer({
457
457
  ...plan ? { addAndStart: "Approve plan and start", addAndSchedule: "Approve plan and schedule" } : {}
458
458
  },
459
459
  onSubmit: submit,
460
- goal: (values) => values.workflowId === chunkHVOPUYAG_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
461
- chunkHVOPUYAG_cjs.TaskPlan,
460
+ goal: (values) => values.workflowId === chunkCJF7B5A7_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
461
+ chunkCJF7B5A7_cjs.TaskPlan,
462
462
  {
463
463
  plan,
464
464
  onChange: setPlan,
@@ -504,7 +504,7 @@ function ConnectedWorkflowHistory({
504
504
  const { openConversation } = chunkT6GRWWRY_cjs.useBlocksEnvironment();
505
505
  const { data: runs = [], isLoading } = react.useWorkflowRuns(workflow?.external_id);
506
506
  return /* @__PURE__ */ jsxRuntime.jsx(
507
- chunkHVOPUYAG_cjs.TaskRunsDialog,
507
+ chunkCJF7B5A7_cjs.TaskRunsDialog,
508
508
  {
509
509
  inline,
510
510
  hideHeader,
@@ -540,14 +540,14 @@ function ConnectedTaskActivityDialog({
540
540
  const activity = react.useConversationActivity(conversationId, { live });
541
541
  const { data: agents = [] } = react.useAgents();
542
542
  const { userId } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
543
- const { members } = chunkUDMII47W_cjs.useConnectedWorkspaceRole();
543
+ const { members } = chunkWBLCPCWR_cjs.useConnectedWorkspaceRole();
544
544
  const renderPerson = react$1.useCallback(
545
545
  (id) => {
546
546
  const isMe = !!id && id === userId;
547
547
  const member = members.find((m) => m.user.external_id === id)?.user;
548
548
  const name = member && [member.given_name, member.family_name].filter(Boolean).join(" ") || member?.email;
549
549
  const person = { id, label: isMe ? "You" : name || "Someone", isMe };
550
- return renderTaskPerson ? renderTaskPerson(person) : /* @__PURE__ */ jsxRuntime.jsx(chunkY6ZNWC7E_cjs.PersonPill, { person });
550
+ return renderTaskPerson ? renderTaskPerson(person) : /* @__PURE__ */ jsxRuntime.jsx(chunkK26RLK2Y_cjs.PersonPill, { person });
551
551
  },
552
552
  [renderTaskPerson, userId, members]
553
553
  );
@@ -556,7 +556,7 @@ function ConnectedTaskActivityDialog({
556
556
  [agents]
557
557
  );
558
558
  return /* @__PURE__ */ jsxRuntime.jsx(
559
- chunkHVOPUYAG_cjs.TaskActivityDialog,
559
+ chunkCJF7B5A7_cjs.TaskActivityDialog,
560
560
  {
561
561
  open: true,
562
562
  onOpenChange: (open) => !open && onClose(),
@@ -593,7 +593,7 @@ function useRenderTaskPerson() {
593
593
  return react$1.useCallback(
594
594
  (person) => {
595
595
  const user = person.id ? byId.get(person.id) : void 0;
596
- return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkEGJ7WJ6Q_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkY6ZNWC7E_cjs.PersonPill, { person });
596
+ return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkEGJ7WJ6Q_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkK26RLK2Y_cjs.PersonPill, { person });
597
597
  },
598
598
  [byId]
599
599
  );
@@ -606,7 +606,7 @@ function ConnectedThreadTaskBar({
606
606
  renderIcon
607
607
  }) {
608
608
  const { conversations } = react.useConversationItems();
609
- const { activity, items, related, signals, startedBy } = chunkLBKTTQUR_cjs.useConnectedThreadActivity(conversationId);
609
+ const { activity, items, related, signals, startedBy } = chunkCMYJEIZB_cjs.useConnectedThreadActivity(conversationId);
610
610
  const canEditShared = react.useCanEditShared();
611
611
  const update = react.useUpdateConversation();
612
612
  const actOnStep = react.useActOnStep();
@@ -625,7 +625,7 @@ function ConnectedThreadTaskBar({
625
625
  const person = members.find((m) => m.user.external_id === id)?.user;
626
626
  return person ? ui.getUserDisplayName(person) : void 0;
627
627
  };
628
- const steps = chunk3T3IKNGF_cjs.fromPlanSteps(task?.plan?.steps ?? []);
628
+ const steps = chunkZXW6WFZG_cjs.fromPlanSteps(task?.plan?.steps ?? []);
629
629
  const states = chunk555BS22J_cjs.stepStatesFromActivity(activity.data ?? []);
630
630
  const runInputs = task?.skill_inputs ?? {};
631
631
  const stepCall = (body) => actOnStep.mutateAsync({ conversationId, body });
@@ -643,7 +643,7 @@ function ConnectedThreadTaskBar({
643
643
  ).finally(() => setBusy(false));
644
644
  };
645
645
  const strip = /* @__PURE__ */ jsxRuntime.jsx(
646
- chunkHVOPUYAG_cjs.WorkflowThreadStrip,
646
+ chunkCJF7B5A7_cjs.WorkflowThreadStrip,
647
647
  {
648
648
  renderIcon,
649
649
  ...variant === "steps" ? { maxSpan: 3, current: currentStepId, onSelectStep } : {},
@@ -672,7 +672,7 @@ function ConnectedThreadTaskBar({
672
672
  renderStepAction: (step, phase) => (
673
673
  // A signer or a draft's person acts on their step even on a thread they cannot edit.
674
674
  canEdit || phase === "waiting" || phase === "done" ? /* @__PURE__ */ jsxRuntime.jsx(
675
- chunkHVOPUYAG_cjs.WorkflowStepAction,
675
+ chunkCJF7B5A7_cjs.WorkflowStepAction,
676
676
  {
677
677
  step,
678
678
  phase,
@@ -704,8 +704,8 @@ function ConnectedThreadTaskBar({
704
704
  // A workflow run: its named steps, with what happened in the thread under each.
705
705
  strip
706
706
  ) : items.length || startedBy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
707
- startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunkHVOPUYAG_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
708
- /* @__PURE__ */ jsxRuntime.jsx(chunk3T3IKNGF_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
707
+ startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunkCJF7B5A7_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
708
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZXW6WFZG_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
709
709
  ] }) : (
710
710
  // Ordinary chats record no activity events, so an empty ribbon says nothing rather than
711
711
  // "No recorded activity yet" while the answer and its steps are right there in the thread.
@@ -823,7 +823,7 @@ ${labels.map((l) => `${l.key}=${l.name}`).join("\n")}`;
823
823
  if (known) return known;
824
824
  const setUp = (async () => {
825
825
  const existing = await arbi.tags.list({ workspaceId });
826
- const { ids, missing } = chunkHVOPUYAG_cjs.matchRequiredLabels(labels, existing);
826
+ const { ids, missing } = chunkCJF7B5A7_cjs.matchRequiredLabels(labels, existing);
827
827
  for (const label of missing) {
828
828
  const tag = await createTag({
829
829
  name: label.name,
@@ -1014,7 +1014,7 @@ function useWorkflowRunTarget({
1014
1014
  }) {
1015
1015
  const { workspaceId: open } = chunkKGAYUFXD_cjs.useConnectedWorkspace();
1016
1016
  const session = react.useArbiSessionStore();
1017
- const selectWorkspace = chunkLBKTTQUR_cjs.useSelectWorkspace();
1017
+ const selectWorkspace = chunkCMYJEIZB_cjs.useSelectWorkspace();
1018
1018
  const createProject = react.useCreateProject();
1019
1019
  const { projects, isLoading: projectsLoading } = useProjectSummaries();
1020
1020
  const { data: workspaces } = react.useWorkspaces();
@@ -1378,7 +1378,7 @@ function useWorkflowThread(workflow, options = {}) {
1378
1378
  );
1379
1379
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
1380
1380
  const steps = react$1.useMemo(
1381
- () => chunk555BS22J_cjs.workflowSteps(workflow).length > 0 ? chunk555BS22J_cjs.workflowSteps(workflow) : chunk3T3IKNGF_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1381
+ () => chunk555BS22J_cjs.workflowSteps(workflow).length > 0 ? chunk555BS22J_cjs.workflowSteps(workflow) : chunkZXW6WFZG_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1382
1382
  [workflow, conversation?.plan?.steps]
1383
1383
  );
1384
1384
  const activity = react.useConversationActivity(threadId, { live: !!threadId });
@@ -1425,7 +1425,7 @@ function useWorkflowThread(workflow, options = {}) {
1425
1425
  const createThread = react$1.useCallback(
1426
1426
  async (values, done) => {
1427
1427
  const prepared = await options.beforeStart?.();
1428
- const planned = prepared?.labelIds ? chunkHVOPUYAG_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
1428
+ const planned = prepared?.labelIds ? chunkCJF7B5A7_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
1429
1429
  await ensureWorkspaceOpen();
1430
1430
  const created = await createWork.mutateAsync({
1431
1431
  title: chunk555BS22J_cjs.runThreadTitle(workflow, values).slice(0, 60),
@@ -1440,7 +1440,7 @@ function useWorkflowThread(workflow, options = {}) {
1440
1440
  criteria: [],
1441
1441
  max_passes: 3,
1442
1442
  documents: [],
1443
- steps: chunk3T3IKNGF_cjs.toPlanSteps(planned, {
1443
+ steps: chunkZXW6WFZG_cjs.toPlanSteps(planned, {
1444
1444
  inputs: values,
1445
1445
  resolveWorkflow: options.resolveWorkflow,
1446
1446
  compose: options.compose
@@ -1527,7 +1527,7 @@ function useWorkflowThread(workflow, options = {}) {
1527
1527
  const anyRunning = Object.values(states).some((s) => s.status === "running");
1528
1528
  const needsStart = !threadId || idle && !anyRunning;
1529
1529
  const runError = idle ? conversation?.last_error ?? null : null;
1530
- const view = chunkHVOPUYAG_cjs.useWorkflowView({
1530
+ const view = chunkCJF7B5A7_cjs.useWorkflowView({
1531
1531
  steps,
1532
1532
  states,
1533
1533
  inputs,
@@ -1663,7 +1663,7 @@ function WorkflowWordDialog({
1663
1663
  title: title ?? labels.wordTitle,
1664
1664
  size: "xl",
1665
1665
  testId: "workflow-word-dialog",
1666
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkUDMII47W_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
1666
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkWBLCPCWR_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
1667
1667
  }
1668
1668
  );
1669
1669
  }
@@ -1827,7 +1827,7 @@ function RunnerBody({
1827
1827
  const session = react.useArbiSessionStore();
1828
1828
  const openRef = react$1.useRef(workspaceId);
1829
1829
  openRef.current = workspaceId;
1830
- const required = chunkHVOPUYAG_cjs.requiredLabelsOf(given);
1830
+ const required = chunkCJF7B5A7_cjs.requiredLabelsOf(given);
1831
1831
  const ownEnsureLabels = useEnsureRequiredLabels();
1832
1832
  const ensureLabels = page?.ensureLabels ?? ownEnsureLabels;
1833
1833
  const [startedLabelIds, setStartedLabelIds] = react$1.useState({});
@@ -1839,7 +1839,7 @@ function RunnerBody({
1839
1839
  const pageTarget = page?.target;
1840
1840
  const projectStep = pageTarget && typeof projectFrom === "object" ? projectFrom.step : void 0;
1841
1841
  const workflow = react$1.useMemo(
1842
- () => withCommitStep(chunkHVOPUYAG_cjs.withLabelIds(given, labelIds), projectStep),
1842
+ () => withCommitStep(chunkCJF7B5A7_cjs.withLabelIds(given, labelIds), projectStep),
1843
1843
  [given, labelIds, projectStep]
1844
1844
  );
1845
1845
  const hostBeforeStart = options?.beforeStart;
@@ -2054,7 +2054,7 @@ function RunnerBody({
2054
2054
  );
2055
2055
  };
2056
2056
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
2057
- chunkHVOPUYAG_cjs.WorkflowRunner,
2057
+ chunkCJF7B5A7_cjs.WorkflowRunner,
2058
2058
  {
2059
2059
  people,
2060
2060
  ...runnerProps,
@@ -2115,7 +2115,7 @@ function RunnerBody({
2115
2115
  pageBar,
2116
2116
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2117
2117
  !page && /* @__PURE__ */ jsxRuntime.jsx(
2118
- chunkHVOPUYAG_cjs.WorkflowStepBar,
2118
+ chunkCJF7B5A7_cjs.WorkflowStepBar,
2119
2119
  {
2120
2120
  run: view,
2121
2121
  levels: chunk555BS22J_cjs.stepLevels(view.steps),
@@ -2198,7 +2198,7 @@ function RunnerPage(props) {
2198
2198
  workspaceId,
2199
2199
  onProjectCreated
2200
2200
  });
2201
- const required = chunkHVOPUYAG_cjs.requiredLabelsOf(workflow);
2201
+ const required = chunkCJF7B5A7_cjs.requiredLabelsOf(workflow);
2202
2202
  const ensure = useEnsureRequiredLabels();
2203
2203
  const labels = useRequiredLabels(required, target.target, ensure, target.stage === "ready");
2204
2204
  const fromStep = typeof projectFrom === "object";
@@ -2475,5 +2475,5 @@ exports.useWorkflowDefinitions = useWorkflowDefinitions;
2475
2475
  exports.useWorkflowTasks = useWorkflowTasks;
2476
2476
  exports.useWorkflowsPageState = useWorkflowsPageState;
2477
2477
  exports.workflowRunView = workflowRunView;
2478
- //# sourceMappingURL=chunk-X3JJTHQ4.cjs.map
2479
- //# sourceMappingURL=chunk-X3JJTHQ4.cjs.map
2478
+ //# sourceMappingURL=chunk-JSHBC47B.cjs.map
2479
+ //# sourceMappingURL=chunk-JSHBC47B.cjs.map