@arbidocs/blocks 0.5.23 → 0.5.25

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 (154) hide show
  1. package/dist/{ConnectedNativeDocxComparison-GMQHSY3Z.js → ConnectedNativeDocxComparison-MZX222GC.js} +6 -6
  2. package/dist/{ConnectedNativeDocxComparison-GMQHSY3Z.js.map → ConnectedNativeDocxComparison-MZX222GC.js.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-HH3PHNXU.cjs → ConnectedNativeDocxComparison-WRO3J6VV.cjs} +7 -7
  4. package/dist/{ConnectedNativeDocxComparison-HH3PHNXU.cjs.map → ConnectedNativeDocxComparison-WRO3J6VV.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-4IAKVBEF.js → ConnectedNativeDocxEditor-OJ6SYZ3W.js} +5 -5
  6. package/dist/{ConnectedNativeDocxEditor-4IAKVBEF.js.map → ConnectedNativeDocxEditor-OJ6SYZ3W.js.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-JNHNZG3P.cjs → ConnectedNativeDocxEditor-XTUJWL25.cjs} +7 -7
  8. package/dist/{ConnectedNativeDocxEditor-JNHNZG3P.cjs.map → ConnectedNativeDocxEditor-XTUJWL25.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-CZZOH667.cjs → ConnectedStreamedWordArtifact-5JURNV4L.cjs} +7 -7
  10. package/dist/ConnectedStreamedWordArtifact-5JURNV4L.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-GLJCJPTP.js → ConnectedStreamedWordArtifact-KURJRZH3.js} +6 -6
  12. package/dist/{ConnectedStreamedWordArtifact-GLJCJPTP.js.map → ConnectedStreamedWordArtifact-KURJRZH3.js.map} +1 -1
  13. package/dist/{WorkspaceTableView-ECPHGWHF.js → WorkspaceTableView-2XI6FIOO.js} +7 -7
  14. package/dist/WorkspaceTableView-2XI6FIOO.js.map +1 -0
  15. package/dist/{WorkspaceTableView-6JVHGDUB.cjs → WorkspaceTableView-KG4D53SK.cjs} +13 -13
  16. package/dist/WorkspaceTableView-KG4D53SK.cjs.map +1 -0
  17. package/dist/agents/index.cjs +326 -326
  18. package/dist/agents/index.js +4 -4
  19. package/dist/{chunk-X4Y7ZHFB.js → chunk-2GDKBLD5.js} +11 -6
  20. package/dist/chunk-2GDKBLD5.js.map +1 -0
  21. package/dist/{chunk-DXO2RXVQ.cjs → chunk-3FQHFFV5.cjs} +4 -4
  22. package/dist/{chunk-DXO2RXVQ.cjs.map → chunk-3FQHFFV5.cjs.map} +1 -1
  23. package/dist/{chunk-AAVFCPKD.js → chunk-3OATYBZK.js} +4 -4
  24. package/dist/{chunk-AAVFCPKD.js.map → chunk-3OATYBZK.js.map} +1 -1
  25. package/dist/{chunk-AF24CV6J.js → chunk-4I2V55LL.js} +3 -3
  26. package/dist/{chunk-AF24CV6J.js.map → chunk-4I2V55LL.js.map} +1 -1
  27. package/dist/{chunk-VNHLFS6T.cjs → chunk-4KLBM5K5.cjs} +4 -4
  28. package/dist/{chunk-VNHLFS6T.cjs.map → chunk-4KLBM5K5.cjs.map} +1 -1
  29. package/dist/{chunk-7DDMF3DZ.cjs → chunk-53T2FY4Z.cjs} +5 -31
  30. package/dist/chunk-53T2FY4Z.cjs.map +1 -0
  31. package/dist/{chunk-BTF4AZMG.js → chunk-57CG33XJ.js} +5 -5
  32. package/dist/chunk-57CG33XJ.js.map +1 -0
  33. package/dist/chunk-5ZBXFHZW.js +434 -0
  34. package/dist/chunk-5ZBXFHZW.js.map +1 -0
  35. package/dist/{chunk-KJVDYWAM.cjs → chunk-6UKNYQ7Q.cjs} +13 -8
  36. package/dist/chunk-6UKNYQ7Q.cjs.map +1 -0
  37. package/dist/{chunk-TTJGCJWX.cjs → chunk-6UZ6YTML.cjs} +46 -6
  38. package/dist/chunk-6UZ6YTML.cjs.map +1 -0
  39. package/dist/{chunk-NVRJ6WTR.js → chunk-7RFDYAK7.js} +3 -3
  40. package/dist/{chunk-NVRJ6WTR.js.map → chunk-7RFDYAK7.js.map} +1 -1
  41. package/dist/{chunk-ZYGQFD5Y.js → chunk-BSDZXG55.js} +3 -3
  42. package/dist/{chunk-ZYGQFD5Y.js.map → chunk-BSDZXG55.js.map} +1 -1
  43. package/dist/{chunk-O4EQYPLO.cjs → chunk-C2SZQKX2.cjs} +169 -27
  44. package/dist/chunk-C2SZQKX2.cjs.map +1 -0
  45. package/dist/{chunk-I5RK4WAE.cjs → chunk-FGZQUH2Y.cjs} +3 -3
  46. package/dist/{chunk-I5RK4WAE.cjs.map → chunk-FGZQUH2Y.cjs.map} +1 -1
  47. package/dist/{chunk-7S76Q5RK.js → chunk-GA2A7OX6.js} +3 -3
  48. package/dist/{chunk-7S76Q5RK.js.map → chunk-GA2A7OX6.js.map} +1 -1
  49. package/dist/{chunk-XL55UDLO.js → chunk-IJJKUTKM.js} +5 -30
  50. package/dist/chunk-IJJKUTKM.js.map +1 -0
  51. package/dist/{chunk-BL74GYSA.cjs → chunk-JGCYM3II.cjs} +9 -9
  52. package/dist/{chunk-BL74GYSA.cjs.map → chunk-JGCYM3II.cjs.map} +1 -1
  53. package/dist/{chunk-ZX663X3X.cjs → chunk-KNRAKOCO.cjs} +6 -428
  54. package/dist/chunk-KNRAKOCO.cjs.map +1 -0
  55. package/dist/chunk-KUQOHPKP.cjs +443 -0
  56. package/dist/chunk-KUQOHPKP.cjs.map +1 -0
  57. package/dist/{chunk-JUUOJP7I.cjs → chunk-KWJW5TMH.cjs} +5 -5
  58. package/dist/chunk-KWJW5TMH.cjs.map +1 -0
  59. package/dist/{chunk-FZVAJFRH.cjs → chunk-LAGHW4JM.cjs} +24 -10
  60. package/dist/chunk-LAGHW4JM.cjs.map +1 -0
  61. package/dist/{chunk-6XW3CMU4.js → chunk-N3KNAQ55.js} +144 -4
  62. package/dist/chunk-N3KNAQ55.js.map +1 -0
  63. package/dist/{chunk-C6P2QW36.js → chunk-NZIVQ4Q4.js} +4 -4
  64. package/dist/{chunk-C6P2QW36.js.map → chunk-NZIVQ4Q4.js.map} +1 -1
  65. package/dist/{chunk-44FPFTU2.js → chunk-ORUV4MEP.js} +3 -3
  66. package/dist/{chunk-44FPFTU2.js.map → chunk-ORUV4MEP.js.map} +1 -1
  67. package/dist/{chunk-75Z5AUMM.js → chunk-QB6JCNVG.js} +3 -3
  68. package/dist/{chunk-75Z5AUMM.js.map → chunk-QB6JCNVG.js.map} +1 -1
  69. package/dist/{chunk-S4G3DNMA.cjs → chunk-QZTA2M4U.cjs} +9 -9
  70. package/dist/{chunk-S4G3DNMA.cjs.map → chunk-QZTA2M4U.cjs.map} +1 -1
  71. package/dist/{chunk-F2BYURQZ.cjs → chunk-T67EFI43.cjs} +5 -5
  72. package/dist/{chunk-F2BYURQZ.cjs.map → chunk-T67EFI43.cjs.map} +1 -1
  73. package/dist/{chunk-RVKVGS72.js → chunk-TDFL676I.js} +25 -11
  74. package/dist/chunk-TDFL676I.js.map +1 -0
  75. package/dist/{chunk-YD3RN2FY.cjs → chunk-U72QI2W3.cjs} +3 -3
  76. package/dist/{chunk-YD3RN2FY.cjs.map → chunk-U72QI2W3.cjs.map} +1 -1
  77. package/dist/{chunk-75UVQKQ5.cjs → chunk-WTGJHS7F.cjs} +48 -48
  78. package/dist/{chunk-75UVQKQ5.cjs.map → chunk-WTGJHS7F.cjs.map} +1 -1
  79. package/dist/{chunk-SLRVI2YU.js → chunk-X6U6L6BG.js} +29 -4
  80. package/dist/chunk-X6U6L6BG.js.map +1 -0
  81. package/dist/{chunk-SQ5F5BFW.cjs → chunk-XDU3HHUU.cjs} +32 -6
  82. package/dist/chunk-XDU3HHUU.cjs.map +1 -0
  83. package/dist/{chunk-SKVVOEMX.js → chunk-XXUPUXBF.js} +8 -423
  84. package/dist/chunk-XXUPUXBF.js.map +1 -0
  85. package/dist/{chunk-PZRTRYPD.js → chunk-ZKAIT3M2.js} +46 -7
  86. package/dist/chunk-ZKAIT3M2.js.map +1 -0
  87. package/dist/connect/docx.cjs +9 -9
  88. package/dist/connect/docx.js +5 -5
  89. package/dist/connect/index.cjs +1393 -891
  90. package/dist/connect/index.cjs.map +1 -1
  91. package/dist/connect/index.js +739 -242
  92. package/dist/connect/index.js.map +1 -1
  93. package/dist/connect/viewer.cjs +4 -4
  94. package/dist/connect/viewer.js +4 -4
  95. package/dist/connection/auth/CompactLogin.d.ts +26 -0
  96. package/dist/connection/auth/ConnectedLoginPage.d.ts +9 -1
  97. package/dist/connection/auth/index.d.ts +3 -1
  98. package/dist/connection/auth/sso-popup.d.ts +13 -0
  99. package/dist/connection/auth/sso-sign-in.d.ts +38 -0
  100. package/dist/connection/auth/useLoginActions.d.ts +4 -2
  101. package/dist/connection/projects/ConnectedProjectsPanel.d.ts +9 -1
  102. package/dist/connection/projects/ProjectsListPage.d.ts +41 -0
  103. package/dist/connection/projects/index.d.ts +1 -0
  104. package/dist/connection/settings-page/appearanceSection.d.ts +30 -0
  105. package/dist/connection/settings-page/index.d.ts +1 -0
  106. package/dist/facts/index.cjs +55 -55
  107. package/dist/facts/index.js +3 -3
  108. package/dist/index.cjs +498 -526
  109. package/dist/index.cjs.map +1 -1
  110. package/dist/index.d.ts +2 -0
  111. package/dist/index.js +15 -54
  112. package/dist/index.js.map +1 -1
  113. package/dist/settings/AppearanceSettings.d.ts +1 -2
  114. package/dist/settings/index.cjs +162 -162
  115. package/dist/settings/index.d.ts +2 -1
  116. package/dist/settings/index.js +2 -2
  117. package/dist/site/index.cjs +82 -74
  118. package/dist/site/index.d.ts +2 -0
  119. package/dist/site/index.js +3 -3
  120. package/dist/studio/index.cjs +73 -73
  121. package/dist/studio/index.js +5 -5
  122. package/dist/theme/appearance.d.ts +47 -0
  123. package/dist/theme/fromCss.d.ts +33 -0
  124. package/dist/workflow-canvas/index.cjs +20 -18
  125. package/dist/workflow-canvas/index.cjs.map +1 -1
  126. package/dist/workflow-canvas/index.js +8 -6
  127. package/dist/workflow-canvas/index.js.map +1 -1
  128. package/dist/workspaces/index.cjs +43 -43
  129. package/dist/workspaces/index.js +3 -3
  130. package/node_modules/@arbidocs/coedit/package.json +1 -1
  131. package/package.json +5 -5
  132. package/dist/ConnectedStreamedWordArtifact-CZZOH667.cjs.map +0 -1
  133. package/dist/WorkspaceTableView-6JVHGDUB.cjs.map +0 -1
  134. package/dist/WorkspaceTableView-ECPHGWHF.js.map +0 -1
  135. package/dist/chunk-6XW3CMU4.js.map +0 -1
  136. package/dist/chunk-7DDMF3DZ.cjs.map +0 -1
  137. package/dist/chunk-AMTWY22T.js +0 -11
  138. package/dist/chunk-AMTWY22T.js.map +0 -1
  139. package/dist/chunk-BTF4AZMG.js.map +0 -1
  140. package/dist/chunk-FZVAJFRH.cjs.map +0 -1
  141. package/dist/chunk-JUUOJP7I.cjs.map +0 -1
  142. package/dist/chunk-KJVDYWAM.cjs.map +0 -1
  143. package/dist/chunk-O4EQYPLO.cjs.map +0 -1
  144. package/dist/chunk-PZRTRYPD.js.map +0 -1
  145. package/dist/chunk-RVKVGS72.js.map +0 -1
  146. package/dist/chunk-SKVVOEMX.js.map +0 -1
  147. package/dist/chunk-SLRVI2YU.js.map +0 -1
  148. package/dist/chunk-SQ5F5BFW.cjs.map +0 -1
  149. package/dist/chunk-TTJGCJWX.cjs.map +0 -1
  150. package/dist/chunk-X4Y7ZHFB.js.map +0 -1
  151. package/dist/chunk-XL55UDLO.js.map +0 -1
  152. package/dist/chunk-ZU2B2RZK.cjs +0 -13
  153. package/dist/chunk-ZU2B2RZK.cjs.map +0 -1
  154. package/dist/chunk-ZX663X3X.cjs.map +0 -1
@@ -1,14 +1,15 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var chunkKUQOHPKP_cjs = require('./chunk-KUQOHPKP.cjs');
4
5
  var chunkNWNVWO6L_cjs = require('./chunk-NWNVWO6L.cjs');
5
6
  var chunkUFEXJIEY_cjs = require('./chunk-UFEXJIEY.cjs');
6
7
  var zustand = require('zustand');
7
8
  var middleware = require('zustand/middleware');
8
- var react = require('react');
9
- var lucideReact = require('lucide-react');
10
9
  var ui = require('@arbidocs/react/ui');
11
10
  var jsxRuntime = require('react/jsx-runtime');
11
+ var react = require('react');
12
+ var lucideReact = require('lucide-react');
12
13
  var TabsPrimitive = require('@radix-ui/react-tabs');
13
14
 
14
15
  function _interopNamespace(e) {
@@ -31,134 +32,6 @@ function _interopNamespace(e) {
31
32
 
32
33
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
33
34
 
34
- // src/theme/tokens.ts
35
- var THEME_STYLE_ID = "arbi-theme-vars";
36
- var TRIPLET_RE = /^-?\d+(?:\.\d+)?\s+-?\d+(?:\.\d+)?%\s+-?\d+(?:\.\d+)?%$/;
37
- function parseRgb(color) {
38
- if (color.startsWith("#")) {
39
- let hex = color.slice(1);
40
- if (hex.length === 3) {
41
- hex = hex.split("").map((ch) => ch + ch).join("");
42
- }
43
- if (hex.length === 6 && /^[0-9a-fA-F]{6}$/.test(hex)) {
44
- return {
45
- r: parseInt(hex.slice(0, 2), 16),
46
- g: parseInt(hex.slice(2, 4), 16),
47
- b: parseInt(hex.slice(4, 6), 16)
48
- };
49
- }
50
- return null;
51
- }
52
- const m = color.match(/^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)/i);
53
- if (m) return { r: Number(m[1]), g: Number(m[2]), b: Number(m[3]) };
54
- return null;
55
- }
56
- function rgbToHslTriplet(r, g, b) {
57
- const rn = r / 255;
58
- const gn = g / 255;
59
- const bn = b / 255;
60
- const max = Math.max(rn, gn, bn);
61
- const min = Math.min(rn, gn, bn);
62
- const l = (max + min) / 2;
63
- const d = max - min;
64
- let h = 0;
65
- let s = 0;
66
- if (d !== 0) {
67
- s = d / (1 - Math.abs(2 * l - 1));
68
- switch (max) {
69
- case rn:
70
- h = 60 * ((gn - bn) / d % 6);
71
- break;
72
- case gn:
73
- h = 60 * ((bn - rn) / d + 2);
74
- break;
75
- default:
76
- h = 60 * ((rn - gn) / d + 4);
77
- break;
78
- }
79
- }
80
- if (h < 0) h += 360;
81
- return `${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;
82
- }
83
- function toHslTriplet(color) {
84
- const c = color.trim();
85
- if (TRIPLET_RE.test(c)) return c;
86
- const rgb = parseRgb(c);
87
- if (!rgb) return c;
88
- return rgbToHslTriplet(rgb.r, rgb.g, rgb.b);
89
- }
90
- function renderTripletBlock(colors) {
91
- return Object.entries(colors).map(([key, value]) => ` --${key}: ${toHslTriplet(value)};`).join("\n");
92
- }
93
- function emitCssVars(theme, dark) {
94
- if (typeof document === "undefined") return;
95
- const meta = [
96
- ` --font-display: ${theme.fonts.display};`,
97
- ` --font-sans: ${theme.fonts.sans};`,
98
- ` --radius: ${theme.radius}rem;`
99
- ].join("\n");
100
- let css = `:root {
101
- ${renderTripletBlock(theme.colors)}
102
- ${meta}
103
- }`;
104
- if (dark) {
105
- css += `
106
- :root.dark {
107
- ${renderTripletBlock(dark)}
108
- }`;
109
- }
110
- let style = document.getElementById(THEME_STYLE_ID);
111
- if (!style) {
112
- style = document.createElement("style");
113
- style.id = THEME_STYLE_ID;
114
- document.head.appendChild(style);
115
- }
116
- style.textContent = css;
117
- }
118
- function removeCssVars() {
119
- if (typeof document === "undefined") return;
120
- document.getElementById(THEME_STYLE_ID)?.remove();
121
- }
122
- function normalizeOptions(optionsOrRoot) {
123
- if (typeof HTMLElement !== "undefined" && optionsOrRoot instanceof HTMLElement) {
124
- return { root: optionsOrRoot };
125
- }
126
- return optionsOrRoot;
127
- }
128
- function applyThemeVars(theme, optionsOrRoot = {}) {
129
- const { mode = "flat", dark, root = document.documentElement } = normalizeOptions(optionsOrRoot);
130
- if (mode === "cssVars") {
131
- emitCssVars(theme, dark);
132
- return;
133
- }
134
- for (const [key, value] of Object.entries(theme.colors)) {
135
- root.style.setProperty(`--color-${key}`, value);
136
- }
137
- root.style.setProperty("--font-display", theme.fonts.display);
138
- root.style.setProperty("--font-sans", theme.fonts.sans);
139
- root.style.setProperty("--radius", `${theme.radius}rem`);
140
- }
141
- function applyFontVars(fonts, root = document.documentElement) {
142
- root.style.setProperty("--font-display", fonts.display);
143
- root.style.setProperty("--font-sans", fonts.sans);
144
- }
145
- function clearFontVars(root = document.documentElement) {
146
- root.style.removeProperty("--font-display");
147
- root.style.removeProperty("--font-sans");
148
- }
149
- function clearThemeVars(theme, optionsOrRoot = {}) {
150
- const { mode = "flat", root = document.documentElement } = normalizeOptions(optionsOrRoot);
151
- if (mode === "cssVars") {
152
- removeCssVars();
153
- return;
154
- }
155
- for (const key of Object.keys(theme.colors)) {
156
- root.style.removeProperty(`--color-${key}`);
157
- }
158
- root.style.removeProperty("--font-display");
159
- root.style.removeProperty("--font-sans");
160
- root.style.removeProperty("--radius");
161
- }
162
35
  function createThemeStore(config) {
163
36
  const { defaultTheme, presets, storageKey } = config;
164
37
  const useStore = zustand.create()(
@@ -204,295 +77,7 @@ function createThemeStore(config) {
204
77
  }
205
78
  function applyStoredTheme(bundle) {
206
79
  const { colors, fonts, radius } = bundle.useStore.getState();
207
- applyThemeVars({ colors, fonts, radius }, { mode: bundle.mode, dark: bundle.darkColors });
208
- }
209
- function ThemeEditor({
210
- bundle,
211
- variant = "panel",
212
- preview,
213
- onSave,
214
- testIdPrefix = "theme",
215
- defaultOpen = false
216
- }) {
217
- const { useStore, tokens, presets, groupLabels, mode, darkColors } = bundle;
218
- const colors = useStore((s) => s.colors);
219
- const fonts = useStore((s) => s.fonts);
220
- const radius = useStore((s) => s.radius);
221
- const activePresetId = useStore((s) => s.activePresetId);
222
- const setColor = useStore((s) => s.setColor);
223
- const setFont = useStore((s) => s.setFont);
224
- const setFontPairing = useStore((s) => s.setFontPairing);
225
- const setRadius = useStore((s) => s.setRadius);
226
- const applyPreset = useStore((s) => s.applyPreset);
227
- const reset = useStore((s) => s.reset);
228
- const [open, setOpen] = react.useState(defaultOpen);
229
- const [saving, setSaving] = react.useState(false);
230
- const [savedVia, setSavedVia] = react.useState(null);
231
- react.useEffect(() => {
232
- applyThemeVars({ colors, fonts, radius }, { mode, dark: darkColors });
233
- }, [colors, fonts, radius, mode, darkColors]);
234
- const tid = (suffix) => `${testIdPrefix}-${suffix}`;
235
- const groups = [...new Set(tokens.map((t) => t.group))];
236
- const save = async () => {
237
- if (!onSave) return;
238
- setSaving(true);
239
- try {
240
- const via = await onSave();
241
- setSavedVia(typeof via === "string" ? via : "saved");
242
- } catch {
243
- setSavedVia(null);
244
- } finally {
245
- setSaving(false);
246
- }
247
- };
248
- const Presets = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
249
- presets.map((p) => /* @__PURE__ */ jsxRuntime.jsx(
250
- "button",
251
- {
252
- type: "button",
253
- onClick: () => applyPreset(p.id),
254
- className: `rounded-full border px-3 py-1 text-xs font-medium transition-colors ${activePresetId === p.id ? "border-primary bg-primary text-primary-foreground" : "border-border text-foreground hover:border-primary"}`,
255
- "data-testid": tid(`preset-${p.id}`),
256
- children: p.label
257
- },
258
- p.id
259
- )),
260
- /* @__PURE__ */ jsxRuntime.jsxs(
261
- "button",
262
- {
263
- type: "button",
264
- onClick: reset,
265
- className: "ml-auto inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground",
266
- "data-testid": tid("reset"),
267
- children: [
268
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { className: "size-3" }),
269
- " Reset"
270
- ]
271
- }
272
- )
273
- ] });
274
- const colorRow = (k, label) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
275
- /* @__PURE__ */ jsxRuntime.jsx(
276
- "input",
277
- {
278
- type: "color",
279
- value: colors[k] ?? "#000000",
280
- onChange: (e) => setColor(k, e.target.value),
281
- className: "size-9 shrink-0 cursor-pointer rounded-md border border-border bg-transparent",
282
- "aria-label": label,
283
- "data-testid": tid(`color-${k}`)
284
- }
285
- ),
286
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
287
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs text-muted-foreground", children: label }),
288
- /* @__PURE__ */ jsxRuntime.jsx(
289
- ui.Input,
290
- {
291
- value: colors[k] ?? "",
292
- onChange: (e) => setColor(k, e.target.value),
293
- "aria-label": `${label} hex value`,
294
- className: "bg-card placeholder:text-muted-foreground focus-visible:border-ring/60 focus-visible:ring-2 focus-visible:ring-ring h-7 font-mono text-xs",
295
- "data-testid": tid(`hex-${k}`)
296
- }
297
- )
298
- ] })
299
- ] }, k);
300
- const activePairing = chunkNWNVWO6L_cjs.matchFontPairing(fonts);
301
- const Typography = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
302
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
303
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs text-muted-foreground", children: "Typeface" }),
304
- /* @__PURE__ */ jsxRuntime.jsxs(
305
- "select",
306
- {
307
- value: activePairing?.id ?? "",
308
- onChange: (e) => setFontPairing(e.target.value),
309
- "aria-label": "Typeface",
310
- className: "mt-1 h-8 w-full rounded-md border border-border bg-card px-2 text-xs text-foreground focus-visible:border-ring/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
311
- "data-testid": tid("font-pairing"),
312
- children: [
313
- !activePairing && /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "Custom" }),
314
- chunkNWNVWO6L_cjs.FONT_PAIRINGS.map((pairing) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: pairing.id, children: pairing.label }, pairing.id))
315
- ]
316
- }
317
- ),
318
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: activePairing?.description ?? "Hand-edited font stacks." })
319
- ] }),
320
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
321
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs text-muted-foreground", children: "Display font stack" }),
322
- /* @__PURE__ */ jsxRuntime.jsx(
323
- ui.Input,
324
- {
325
- value: fonts.display,
326
- onChange: (e) => setFont("display", e.target.value),
327
- "aria-label": "Display font stack",
328
- className: "bg-card placeholder:text-muted-foreground focus-visible:border-ring/60 focus-visible:ring-2 focus-visible:ring-ring mt-1 font-mono text-xs",
329
- "data-testid": tid("font-display")
330
- }
331
- )
332
- ] }),
333
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
334
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs text-muted-foreground", children: "Body font stack" }),
335
- /* @__PURE__ */ jsxRuntime.jsx(
336
- ui.Input,
337
- {
338
- value: fonts.sans,
339
- onChange: (e) => setFont("sans", e.target.value),
340
- "aria-label": "Body font stack",
341
- className: "bg-card placeholder:text-muted-foreground focus-visible:border-ring/60 focus-visible:ring-2 focus-visible:ring-ring mt-1 font-mono text-xs",
342
- "data-testid": tid("font-sans")
343
- }
344
- )
345
- ] }),
346
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
347
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "block text-xs text-muted-foreground", children: [
348
- "Base radius \u2014 ",
349
- radius,
350
- "rem"
351
- ] }),
352
- /* @__PURE__ */ jsxRuntime.jsx(
353
- "input",
354
- {
355
- type: "range",
356
- min: 0,
357
- max: 1.5,
358
- step: 0.125,
359
- value: radius,
360
- onChange: (e) => setRadius(Number(e.target.value)),
361
- "aria-label": "Base radius",
362
- className: "mt-2 w-full accent-[color:var(--color-primary)]",
363
- "data-testid": tid("radius")
364
- }
365
- )
366
- ] })
367
- ] });
368
- const Preview = /* @__PURE__ */ jsxRuntime.jsxs(ui.Card, { variant: "elevated", className: "rounded-lg", "data-testid": tid("preview"), children: [
369
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.CardTitle, { className: "text-base", children: "Live preview" }) }),
370
- /* @__PURE__ */ jsxRuntime.jsxs(ui.CardContent, { className: "space-y-3", children: [
371
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-[var(--radius)] bg-primary p-4 text-primary-foreground", children: [
372
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-display text-lg font-semibold", children: preview?.title ?? "Preview" }),
373
- preview?.subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs opacity-80", children: preview.subtitle })
374
- ] }),
375
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1.5", children: tokens.map((t) => /* @__PURE__ */ jsxRuntime.jsx(
376
- "div",
377
- {
378
- title: t.label,
379
- className: "aspect-square rounded-md border border-border",
380
- style: { background: `var(--color-${t.key})` }
381
- },
382
- t.key
383
- )) }),
384
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-[var(--radius)] border border-border bg-[color:var(--color-ai-accent-soft,var(--color-accent))] p-3", children: [
385
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-[color:var(--color-ai-accent,var(--color-primary))]", children: "AI action surface" }),
386
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Themed by the AI-kit accent tokens." })
387
- ] })
388
- ] })
389
- ] });
390
- const SaveBar = onSave && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 flex items-center gap-3", children: [
391
- /* @__PURE__ */ jsxRuntime.jsxs(
392
- "button",
393
- {
394
- type: "button",
395
- onClick: () => void save(),
396
- disabled: saving,
397
- className: "inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-60",
398
- "data-testid": tid("save"),
399
- children: [
400
- savedVia ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Save, { className: "size-4" }),
401
- saving ? "Saving\u2026" : savedVia ? "Saved" : "Save theme"
402
- ]
403
- }
404
- ),
405
- savedVia && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", "data-testid": tid("via"), children: [
406
- "stored via ",
407
- savedVia
408
- ] })
409
- ] });
410
- if (variant === "collapsed") {
411
- const controlsId = `${testIdPrefix}-controls`;
412
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", "data-testid": testIdPrefix, children: [
413
- Presets,
414
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-8 gap-1.5 @xl:grid-cols-12", "aria-hidden": "true", children: tokens.slice(0, 12).map((t) => /* @__PURE__ */ jsxRuntime.jsx(
415
- "div",
416
- {
417
- title: t.label,
418
- className: "aspect-square rounded-md border border-border",
419
- style: { background: `var(--color-${t.key})` }
420
- },
421
- t.key
422
- )) }),
423
- /* @__PURE__ */ jsxRuntime.jsxs(
424
- "button",
425
- {
426
- type: "button",
427
- onClick: () => setOpen((o) => !o),
428
- "aria-expanded": open,
429
- "aria-controls": controlsId,
430
- className: "inline-flex items-center gap-1.5 text-sm font-medium text-foreground hover:text-primary",
431
- "data-testid": tid("customize"),
432
- children: [
433
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: `size-4 transition-transform ${open ? "rotate-180" : ""}` }),
434
- "Customize colours and type"
435
- ]
436
- }
437
- ),
438
- open && /* @__PURE__ */ jsxRuntime.jsxs(
439
- "div",
440
- {
441
- id: controlsId,
442
- className: "max-h-[28rem] overflow-y-auto rounded-md border border-border bg-card p-4",
443
- "data-testid": tid("controls"),
444
- children: [
445
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Colours" }),
446
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-3 @xl:grid-cols-2", children: tokens.map((t) => colorRow(t.key, t.label)) }),
447
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-6 mb-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Typography & shape" }),
448
- Typography
449
- ]
450
- }
451
- ),
452
- SaveBar
453
- ] });
454
- }
455
- if (variant === "drawer") {
456
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col overflow-y-auto bg-card p-5", "data-testid": testIdPrefix, children: [
457
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 flex items-center justify-between", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-display text-lg font-semibold text-foreground", children: "Theme" }) }),
458
- Presets,
459
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-5 mb-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Colours" }),
460
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: tokens.map((t) => colorRow(t.key, t.label)) }),
461
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-6 mb-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Typography & shape" }),
462
- Typography,
463
- SaveBar
464
- ] });
465
- }
466
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 lg:grid-cols-[1fr_320px]", "data-testid": testIdPrefix, children: [
467
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
468
- /* @__PURE__ */ jsxRuntime.jsxs(ui.Card, { variant: "elevated", className: "rounded-lg", children: [
469
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.CardTitle, { className: "flex items-center gap-2 text-base", children: [
470
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Palette, { className: "size-4 text-[color:var(--color-primary)]" }),
471
- " Presets"
472
- ] }) }),
473
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardContent, { children: Presets })
474
- ] }),
475
- groups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(
476
- ui.Card,
477
- {
478
- variant: "elevated",
479
- className: "rounded-lg",
480
- "data-testid": tid(`group-${group}`),
481
- children: [
482
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.CardTitle, { className: "text-base", children: groupLabels[group] ?? group }) }),
483
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardContent, { className: "grid gap-3 @xl:grid-cols-2", children: tokens.filter((t) => t.group === group).map((t) => colorRow(t.key, t.label)) })
484
- ]
485
- },
486
- group
487
- )),
488
- /* @__PURE__ */ jsxRuntime.jsxs(ui.Card, { variant: "elevated", className: "rounded-lg", children: [
489
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.CardTitle, { className: "text-base", children: "Typography & shape" }) }),
490
- /* @__PURE__ */ jsxRuntime.jsx(ui.CardContent, { children: Typography })
491
- ] }),
492
- SaveBar
493
- ] }),
494
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4 lg:self-start", children: Preview })
495
- ] });
80
+ chunkKUQOHPKP_cjs.applyThemeVars({ colors, fonts, radius }, { mode: bundle.mode, dark: bundle.darkColors });
496
81
  }
497
82
  function SectionHeading({
498
83
  eyebrow,
@@ -1654,27 +1239,20 @@ exports.RichTextBlock = RichTextBlock;
1654
1239
  exports.SectionHeading = SectionHeading;
1655
1240
  exports.Spacer = Spacer;
1656
1241
  exports.Steps = Steps;
1657
- exports.THEME_STYLE_ID = THEME_STYLE_ID;
1658
1242
  exports.Tabs = Tabs;
1659
1243
  exports.TeamGrid = TeamGrid;
1660
1244
  exports.Testimonial = Testimonial;
1661
1245
  exports.TestimonialGrid = TestimonialGrid;
1662
- exports.ThemeEditor = ThemeEditor;
1663
1246
  exports.VideoEmbed = VideoEmbed;
1664
- exports.applyFontVars = applyFontVars;
1665
1247
  exports.applyStoredTheme = applyStoredTheme;
1666
- exports.applyThemeVars = applyThemeVars;
1667
1248
  exports.asAssetRef = asAssetRef;
1668
1249
  exports.assetRefId = assetRefId;
1669
- exports.clearFontVars = clearFontVars;
1670
- exports.clearThemeVars = clearThemeVars;
1671
1250
  exports.createThemeStore = createThemeStore;
1672
1251
  exports.formatIndex = formatIndex;
1673
1252
  exports.isAssetRef = isAssetRef;
1674
1253
  exports.toEmbedUrl = toEmbedUrl;
1675
- exports.toHslTriplet = toHslTriplet;
1676
1254
  exports.useAssetRenderer = useAssetRenderer;
1677
1255
  exports.useAssetResolverActive = useAssetResolverActive;
1678
1256
  exports.useEditorialTone = useEditorialTone;
1679
- //# sourceMappingURL=chunk-ZX663X3X.cjs.map
1680
- //# sourceMappingURL=chunk-ZX663X3X.cjs.map
1257
+ //# sourceMappingURL=chunk-KNRAKOCO.cjs.map
1258
+ //# sourceMappingURL=chunk-KNRAKOCO.cjs.map