@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
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkN5WJBQYF_cjs = require('./chunk-N5WJBQYF.cjs');
4
+ var chunkNEGFHF3V_cjs = require('./chunk-NEGFHF3V.cjs');
5
5
  var chunkNWNVWO6L_cjs = require('./chunk-NWNVWO6L.cjs');
6
6
  var chunkUFEXJIEY_cjs = require('./chunk-UFEXJIEY.cjs');
7
7
  var zustand = require('zustand');
@@ -10,74 +10,199 @@ var ui = require('@arbidocs/react/ui');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
11
  var react = require('react');
12
12
  var lucideReact = require('lucide-react');
13
- var TabsPrimitive = require('@radix-ui/react-tabs');
14
-
15
- function _interopNamespace(e) {
16
- if (e && e.__esModule) return e;
17
- var n = Object.create(null);
18
- if (e) {
19
- Object.keys(e).forEach(function (k) {
20
- if (k !== 'default') {
21
- var d = Object.getOwnPropertyDescriptor(e, k);
22
- Object.defineProperty(n, k, d.get ? d : {
23
- enumerable: true,
24
- get: function () { return e[k]; }
25
- });
26
- }
27
- });
28
- }
29
- n.default = e;
30
- return Object.freeze(n);
31
- }
32
-
33
- var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
34
13
 
14
+ var COALESCE_MS = 400;
15
+ var sameColors = (a, b) => Object.keys(a).length === Object.keys(b).length && Object.keys(a).every((k) => a[k] === b[k]);
35
16
  function createThemeStore(config) {
36
- const { defaultTheme, presets, storageKey } = config;
17
+ const { defaultTheme, presets, storageKey, darkColors } = config;
18
+ const firstPresetId = presets[0]?.id ?? null;
19
+ const initial = () => ({
20
+ colors: { ...defaultTheme.colors },
21
+ dark: { ...defaultTheme.dark ?? darkColors ?? {} },
22
+ fonts: { ...defaultTheme.fonts },
23
+ radius: defaultTheme.radius,
24
+ inputs: chunkNEGFHF3V_cjs.inferInputs(defaultTheme.colors),
25
+ overrides: [],
26
+ activePresetId: firstPresetId
27
+ });
28
+ const presetDark = (colors, preset) => {
29
+ if (preset?.dark) return { ...preset.dark };
30
+ const base = { ...darkColors ?? {} };
31
+ if (sameColors(colors, defaultTheme.colors)) return base;
32
+ const derived = chunkNEGFHF3V_cjs.deriveColors(chunkNEGFHF3V_cjs.inferInputs(colors), "dark");
33
+ for (const key of Object.keys(colors)) {
34
+ if (colors[key] !== defaultTheme.colors[key] && derived[key]) base[key] = derived[key];
35
+ }
36
+ return base;
37
+ };
38
+ let lastEdit = null;
37
39
  const useStore = zustand.create()(
38
40
  middleware.persist(
39
- (set, get) => ({
40
- ...defaultTheme,
41
- activePresetId: presets[0]?.id ?? null,
42
- setColor: (key, value) => set((s) => ({ colors: { ...s.colors, [key]: value }, activePresetId: null })),
43
- setFont: (which, value) => set((s) => ({ fonts: { ...s.fonts, [which]: value }, activePresetId: null })),
44
- // A pairing sets both faces together — that is the whole point of it.
45
- // Unknown ids are ignored rather than clearing the typography.
46
- setFontPairing: (pairingId) => {
47
- const pairing = chunkNWNVWO6L_cjs.getFontPairing(pairingId);
48
- if (!pairing) return;
49
- set({ fonts: { display: pairing.display, sans: pairing.sans } });
50
- },
51
- setRadius: (radius) => set({ radius, activePresetId: null }),
52
- applyPreset: (presetId) => {
53
- const preset = presets.find((p) => p.id === presetId);
54
- if (!preset) return;
55
- set({
56
- colors: { ...preset.tokens.colors },
57
- fonts: { ...preset.tokens.fonts },
58
- radius: preset.tokens.radius,
59
- activePresetId: presetId
60
- });
61
- },
62
- reset: () => set({
63
- colors: { ...defaultTheme.colors },
64
- fonts: { ...defaultTheme.fonts },
65
- radius: defaultTheme.radius,
66
- activePresetId: presets[0]?.id ?? null
41
+ (set, get) => {
42
+ const entry = () => {
43
+ const { colors, dark, fonts, radius, inputs, overrides, activePresetId } = get();
44
+ return { colors, dark, fonts, radius, inputs, overrides, activePresetId };
45
+ };
46
+ const commit = (patch, editKey) => {
47
+ const now = Date.now();
48
+ const merge = editKey !== void 0 && lastEdit?.key === editKey && now - lastEdit.at < COALESCE_MS && get().past.length > 0;
49
+ lastEdit = editKey === void 0 ? null : { key: editKey, at: now };
50
+ set((s) => ({
51
+ ...patch,
52
+ past: merge ? s.past : [...s.past, entry()].slice(-100),
53
+ future: []
54
+ }));
55
+ };
56
+ return {
57
+ ...initial(),
58
+ past: [],
59
+ future: [],
60
+ setInput: (key, value) => {
61
+ const s = get();
62
+ const inputs = { ...s.inputs, [key]: value };
63
+ const light = chunkNEGFHF3V_cjs.deriveColors(inputs, "light");
64
+ const dark = chunkNEGFHF3V_cjs.deriveColors(inputs, "dark");
65
+ const colors = { ...s.colors };
66
+ const darkSet = { ...s.dark };
67
+ for (const token of chunkNEGFHF3V_cjs.DERIVED_TOKENS) {
68
+ if (!token.deps.includes(key) || s.overrides.includes(token.key)) continue;
69
+ colors[token.key] = light[token.key];
70
+ darkSet[token.key] = dark[token.key];
71
+ }
72
+ commit({ inputs, colors, dark: darkSet, activePresetId: null }, `input:${key}`);
73
+ },
74
+ setColor: (key, value, scheme = "light") => {
75
+ const s = get();
76
+ const overrides = s.overrides.includes(key) ? s.overrides : [...s.overrides, key];
77
+ if (scheme === "dark") {
78
+ commit(
79
+ { dark: { ...s.dark, [key]: value }, overrides, activePresetId: null },
80
+ `dark:${key}`
81
+ );
82
+ } else {
83
+ commit(
84
+ { colors: { ...s.colors, [key]: value }, overrides, activePresetId: null },
85
+ `color:${key}`
86
+ );
87
+ }
88
+ },
89
+ clearOverride: (key) => {
90
+ const s = get();
91
+ if (!s.overrides.includes(key)) return;
92
+ const overrides = s.overrides.filter((k) => k !== key);
93
+ const light = chunkNEGFHF3V_cjs.deriveColors(s.inputs, "light");
94
+ const dark = chunkNEGFHF3V_cjs.deriveColors(s.inputs, "dark");
95
+ const lightValue = light[key] ?? defaultTheme.colors[key];
96
+ const darkValue = dark[key] ?? darkColors?.[key];
97
+ const colors = { ...s.colors };
98
+ const darkSet = { ...s.dark };
99
+ if (lightValue !== void 0) colors[key] = lightValue;
100
+ if (darkValue !== void 0) darkSet[key] = darkValue;
101
+ commit({ overrides, colors, dark: darkSet });
102
+ },
103
+ setFont: (which, value) => commit(
104
+ { fonts: { ...get().fonts, [which]: value }, activePresetId: null },
105
+ `font:${which}`
106
+ ),
107
+ // A pairing sets both faces together — that is the whole point of it.
108
+ // Unknown ids are ignored rather than clearing the typography.
109
+ setFontPairing: (pairingId) => {
110
+ const pairing = chunkNWNVWO6L_cjs.getFontPairing(pairingId);
111
+ if (!pairing) return;
112
+ commit({
113
+ fonts: { display: pairing.display, sans: pairing.sans },
114
+ activePresetId: null
115
+ });
116
+ },
117
+ setRadius: (radius) => commit({ radius, activePresetId: null }, "radius"),
118
+ applyPreset: (presetId) => {
119
+ const preset = presets.find((p) => p.id === presetId);
120
+ if (!preset) return;
121
+ const colors = { ...preset.tokens.colors };
122
+ commit({
123
+ colors,
124
+ dark: presetDark(colors, preset.tokens),
125
+ fonts: { ...preset.tokens.fonts },
126
+ radius: preset.tokens.radius,
127
+ inputs: chunkNEGFHF3V_cjs.inferInputs(colors),
128
+ overrides: [],
129
+ activePresetId: presetId
130
+ });
131
+ },
132
+ reset: () => commit(initial()),
133
+ undo: () => {
134
+ const s = get();
135
+ const previous = s.past[s.past.length - 1];
136
+ if (!previous) return;
137
+ lastEdit = null;
138
+ set({ ...previous, past: s.past.slice(0, -1), future: [entry(), ...s.future] });
139
+ },
140
+ redo: () => {
141
+ const s = get();
142
+ const next = s.future[0];
143
+ if (!next) return;
144
+ lastEdit = null;
145
+ set({ ...next, past: [...s.past, entry()], future: s.future.slice(1) });
146
+ },
147
+ load: (tokens) => {
148
+ const colors = { ...defaultTheme.colors, ...tokens.colors };
149
+ lastEdit = null;
150
+ set({
151
+ colors,
152
+ dark: { ...presetDark(colors), ...tokens.dark ?? {} },
153
+ fonts: tokens.fonts ?? defaultTheme.fonts,
154
+ radius: tokens.radius ?? defaultTheme.radius,
155
+ inputs: chunkNEGFHF3V_cjs.inferInputs(colors),
156
+ overrides: [],
157
+ activePresetId: null,
158
+ past: [],
159
+ future: []
160
+ });
161
+ },
162
+ snapshot: () => {
163
+ const { colors, fonts, radius, dark } = get();
164
+ return darkColors ? { colors, fonts, radius, dark } : { colors, fonts, radius };
165
+ }
166
+ };
167
+ },
168
+ {
169
+ name: storageKey,
170
+ version: 1,
171
+ partialize: (s) => ({
172
+ colors: s.colors,
173
+ dark: s.dark,
174
+ fonts: s.fonts,
175
+ radius: s.radius,
176
+ inputs: s.inputs,
177
+ overrides: s.overrides,
178
+ activePresetId: s.activePresetId
67
179
  }),
68
- snapshot: () => {
69
- const { colors, fonts, radius } = get();
70
- return { colors, fonts, radius };
180
+ // v0 stored only colours, fonts, radius and the preset: describe those colours with
181
+ // inputs, and keep the host's dark set.
182
+ migrate: (stored, version) => {
183
+ const old = stored ?? {};
184
+ if (version >= 1) return old;
185
+ const colors = { ...defaultTheme.colors, ...old.colors ?? {} };
186
+ return {
187
+ ...initial(),
188
+ ...old,
189
+ colors,
190
+ dark: presetDark(colors),
191
+ inputs: chunkNEGFHF3V_cjs.inferInputs(colors),
192
+ overrides: []
193
+ };
71
194
  }
72
- }),
73
- { name: storageKey }
195
+ }
74
196
  )
75
197
  );
76
198
  return { ...config, useStore };
77
199
  }
78
200
  function applyStoredTheme(bundle) {
79
- const { colors, fonts, radius } = bundle.useStore.getState();
80
- chunkN5WJBQYF_cjs.applyThemeVars({ colors, fonts, radius }, { mode: bundle.mode, dark: bundle.darkColors });
201
+ const { colors, fonts, radius, dark } = bundle.useStore.getState();
202
+ chunkNEGFHF3V_cjs.applyThemeVars(
203
+ { colors, fonts, radius },
204
+ { mode: bundle.mode, dark: bundle.darkColors ? dark : void 0 }
205
+ );
81
206
  }
82
207
  function SectionHeading({
83
208
  eyebrow,
@@ -662,36 +787,6 @@ function PricingTable({ plans, testId }) {
662
787
  }
663
788
  );
664
789
  }
665
- function Tabs({ items, testId }) {
666
- const list = items ?? [];
667
- const [active, setActive] = react.useState("0");
668
- const activeIndex = Math.min(Number(active), Math.max(list.length - 1, 0));
669
- return /* @__PURE__ */ jsxRuntime.jsxs(TabsPrimitive__namespace.Root, { value: String(activeIndex), onValueChange: setActive, "data-testid": testId, children: [
670
- /* @__PURE__ */ jsxRuntime.jsx(TabsPrimitive__namespace.List, { className: "flex flex-wrap gap-1 border-b border-border", children: list.map((t, i) => /* @__PURE__ */ jsxRuntime.jsx(
671
- TabsPrimitive__namespace.Trigger,
672
- {
673
- value: String(i),
674
- className: ui.cn(
675
- "-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",
676
- i === activeIndex ? "border-primary text-foreground" : "border-transparent text-muted-foreground hover:text-foreground"
677
- ),
678
- "data-testid": testId && `${testId}-tab-${i}`,
679
- children: t.label
680
- },
681
- i
682
- )) }),
683
- list.map((t, i) => /* @__PURE__ */ jsxRuntime.jsx(
684
- TabsPrimitive__namespace.Content,
685
- {
686
- value: String(i),
687
- className: "pt-5 text-sm leading-relaxed text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
688
- "data-testid": i === activeIndex ? testId && `${testId}-panel` : void 0,
689
- children: t.content
690
- },
691
- i
692
- ))
693
- ] });
694
- }
695
790
  function Accordion({ items, allowMultiple = false, testId }) {
696
791
  const [open, setOpen] = react.useState([]);
697
792
  const toggle = (i) => setOpen(
@@ -1209,7 +1304,6 @@ exports.RichTextBlock = RichTextBlock;
1209
1304
  exports.SectionHeading = SectionHeading;
1210
1305
  exports.Spacer = Spacer;
1211
1306
  exports.Steps = Steps;
1212
- exports.Tabs = Tabs;
1213
1307
  exports.TeamGrid = TeamGrid;
1214
1308
  exports.Testimonial = Testimonial;
1215
1309
  exports.TestimonialGrid = TestimonialGrid;
@@ -1224,5 +1318,5 @@ exports.toEmbedUrl = toEmbedUrl;
1224
1318
  exports.useAssetRenderer = useAssetRenderer;
1225
1319
  exports.useAssetResolverActive = useAssetResolverActive;
1226
1320
  exports.useEditorialTone = useEditorialTone;
1227
- //# sourceMappingURL=chunk-OLDGMBEF.cjs.map
1228
- //# sourceMappingURL=chunk-OLDGMBEF.cjs.map
1321
+ //# sourceMappingURL=chunk-67AFX23Y.cjs.map
1322
+ //# sourceMappingURL=chunk-67AFX23Y.cjs.map