@arbidocs/blocks 0.4.0 → 0.4.1

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 (74) hide show
  1. package/README.md +22 -0
  2. package/dist/{chunk-7G3JNSJB.cjs → chunk-2K33YGM6.cjs} +51 -14
  3. package/dist/chunk-2K33YGM6.cjs.map +1 -0
  4. package/dist/{chunk-S5T7ZTX2.js → chunk-2ORA62OF.js} +3 -3
  5. package/dist/{chunk-S5T7ZTX2.js.map → chunk-2ORA62OF.js.map} +1 -1
  6. package/dist/{chunk-RBXZYNVB.js → chunk-6P6AEQJB.js} +195 -35
  7. package/dist/chunk-6P6AEQJB.js.map +1 -0
  8. package/dist/{chunk-5TYEJOXY.js → chunk-7PEELPMA.js} +52 -15
  9. package/dist/chunk-7PEELPMA.js.map +1 -0
  10. package/dist/{chunk-KUA3BCT2.cjs → chunk-AE5FHFZ5.cjs} +6 -6
  11. package/dist/{chunk-KUA3BCT2.cjs.map → chunk-AE5FHFZ5.cjs.map} +1 -1
  12. package/dist/{chunk-FZQJ2S6P.cjs → chunk-DREI7EQ2.cjs} +197 -33
  13. package/dist/chunk-DREI7EQ2.cjs.map +1 -0
  14. package/dist/chunk-J2BGSWXM.cjs +990 -0
  15. package/dist/chunk-J2BGSWXM.cjs.map +1 -0
  16. package/dist/{chunk-6ALISABK.cjs → chunk-LRUCMZK6.cjs} +7 -4
  17. package/dist/{chunk-6ALISABK.cjs.map → chunk-LRUCMZK6.cjs.map} +1 -1
  18. package/dist/chunk-OBLSURHV.js +973 -0
  19. package/dist/chunk-OBLSURHV.js.map +1 -0
  20. package/dist/{chunk-DVLEQURC.js → chunk-QXEJXIP4.js} +7 -4
  21. package/dist/{chunk-DVLEQURC.js.map → chunk-QXEJXIP4.js.map} +1 -1
  22. package/dist/collaboration/index.cjs +1 -1
  23. package/dist/collaboration/index.js +1 -1
  24. package/dist/components/Chart.d.ts +9 -1
  25. package/dist/components/ContactForm.d.ts +15 -3
  26. package/dist/components/TeamGrid.d.ts +14 -2
  27. package/dist/components/editorial/ArticleList.d.ts +32 -0
  28. package/dist/components/editorial/Bands.d.ts +29 -0
  29. package/dist/components/editorial/EditorialHeading.d.ts +17 -0
  30. package/dist/components/editorial/EditorialHero.d.ts +46 -0
  31. package/dist/components/editorial/EditorialSection.d.ts +47 -0
  32. package/dist/components/editorial/Eyebrow.d.ts +14 -0
  33. package/dist/components/editorial/PanelGrid.d.ts +45 -0
  34. package/dist/components/editorial/ProfileCard.d.ts +27 -0
  35. package/dist/components/editorial/PullQuote.d.ts +17 -0
  36. package/dist/components/editorial/Reveal.d.ts +15 -0
  37. package/dist/components/editorial/index.d.ts +12 -0
  38. package/dist/components/editorial/lists.d.ts +42 -0
  39. package/dist/components/editorial/tone.d.ts +33 -0
  40. package/dist/facts/FactsViewToggle.d.ts +3 -1
  41. package/dist/facts/fact-row.d.ts +32 -0
  42. package/dist/facts/index.cjs +34 -5
  43. package/dist/facts/index.cjs.map +1 -1
  44. package/dist/facts/index.d.ts +1 -0
  45. package/dist/facts/index.js +31 -4
  46. package/dist/facts/index.js.map +1 -1
  47. package/dist/files/ViewToggle.d.ts +6 -2
  48. package/dist/files/ViewerChrome.d.ts +11 -14
  49. package/dist/files/index.cjs +20 -54
  50. package/dist/files/index.cjs.map +1 -1
  51. package/dist/files/index.js +17 -51
  52. package/dist/files/index.js.map +1 -1
  53. package/dist/index.cjs +161 -101
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +6 -6
  56. package/dist/shell/ActionCluster.d.ts +7 -2
  57. package/dist/shell/AskField.d.ts +6 -1
  58. package/dist/shell/index.cjs +42 -42
  59. package/dist/shell/index.js +1 -1
  60. package/dist/site/index.cjs +107 -47
  61. package/dist/site/index.d.ts +1 -0
  62. package/dist/site/index.js +2 -2
  63. package/dist/studio/index.cjs +71 -71
  64. package/dist/studio/index.js +3 -3
  65. package/package.json +3 -3
  66. package/src/blocks.css +17 -0
  67. package/dist/chunk-5TYEJOXY.js.map +0 -1
  68. package/dist/chunk-7G3JNSJB.cjs.map +0 -1
  69. package/dist/chunk-FZQJ2S6P.cjs.map +0 -1
  70. package/dist/chunk-MMYCZRKT.cjs +0 -168
  71. package/dist/chunk-MMYCZRKT.cjs.map +0 -1
  72. package/dist/chunk-RBXZYNVB.js.map +0 -1
  73. package/dist/chunk-UTWX2X2A.js +0 -165
  74. package/dist/chunk-UTWX2X2A.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkKUA3BCT2_cjs = require('../chunk-KUA3BCT2.cjs');
5
- var chunkFZQJ2S6P_cjs = require('../chunk-FZQJ2S6P.cjs');
4
+ var chunkAE5FHFZ5_cjs = require('../chunk-AE5FHFZ5.cjs');
5
+ var chunkDREI7EQ2_cjs = require('../chunk-DREI7EQ2.cjs');
6
6
  var chunkPCB2BPN3_cjs = require('../chunk-PCB2BPN3.cjs');
7
7
  var chunkELR74ME6_cjs = require('../chunk-ELR74ME6.cjs');
8
8
  var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
@@ -112,7 +112,7 @@ function LiveMetricInner({
112
112
  const query = source === "documents" ? docs : convos;
113
113
  const count = Array.isArray(query.data) ? query.data.length : 0;
114
114
  return /* @__PURE__ */ jsxRuntime.jsx(
115
- chunkKUA3BCT2_cjs.MetricCard,
115
+ chunkAE5FHFZ5_cjs.MetricCard,
116
116
  {
117
117
  label: label || METRIC_SOURCES[source].label,
118
118
  value: query.isLoading ? "\u2014" : String(count),
@@ -236,7 +236,7 @@ function createArbiMaterializer(arbi, opts = {}) {
236
236
  }
237
237
  function collectAssetRefs(node, acc) {
238
238
  if (typeof node === "string") {
239
- if (chunkFZQJ2S6P_cjs.isAssetRef(node)) acc.add(node);
239
+ if (chunkDREI7EQ2_cjs.isAssetRef(node)) acc.add(node);
240
240
  return;
241
241
  }
242
242
  if (Array.isArray(node)) {
@@ -270,7 +270,7 @@ async function materializePageData(data, materialize) {
270
270
  const replacements = /* @__PURE__ */ new Map();
271
271
  await Promise.all(
272
272
  [...refs].map(async (ref) => {
273
- const src = await materialize(chunkFZQJ2S6P_cjs.assetRefId(ref));
273
+ const src = await materialize(chunkDREI7EQ2_cjs.assetRefId(ref));
274
274
  if (src) replacements.set(ref, src);
275
275
  })
276
276
  );
@@ -376,7 +376,7 @@ function StudioEditor({
376
376
  radius: stored.radius ?? defaultTheme.radius,
377
377
  activePresetId: null
378
378
  });
379
- chunkFZQJ2S6P_cjs.applyStoredTheme(themeBundle);
379
+ chunkDREI7EQ2_cjs.applyStoredTheme(themeBundle);
380
380
  })();
381
381
  return () => {
382
382
  cancelled = true;
@@ -482,7 +482,7 @@ function StudioEditor({
482
482
  "\u201D\u2026"
483
483
  ]
484
484
  }
485
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.AssetResolverProvider, { render: AssetThumb, children: /* @__PURE__ */ jsxRuntime.jsx(
485
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.AssetResolverProvider, { render: AssetThumb, children: /* @__PURE__ */ jsxRuntime.jsx(
486
486
  puck.Puck,
487
487
  {
488
488
  config,
@@ -500,7 +500,7 @@ function StudioEditor({
500
500
  className: "w-80 shrink-0 border-l border-border",
501
501
  "data-testid": `${testIdPrefix}-theme-drawer`,
502
502
  children: /* @__PURE__ */ jsxRuntime.jsx(
503
- chunkFZQJ2S6P_cjs.ThemeEditor,
503
+ chunkDREI7EQ2_cjs.ThemeEditor,
504
504
  {
505
505
  bundle: themeBundle,
506
506
  variant: "drawer",
@@ -542,7 +542,7 @@ function PageRenderer({
542
542
  const page = initialData ?? (await persistence.loadPublished(arbi, live, slug)).data ?? (await persistence.loadPage(arbi, live, slug)).data;
543
543
  if (cancelled) return;
544
544
  if (applyTheme) {
545
- chunkFZQJ2S6P_cjs.applyThemeVars(
545
+ chunkDREI7EQ2_cjs.applyThemeVars(
546
546
  theme ? { ...defaultTheme, ...theme, colors: { ...defaultTheme.colors, ...theme.colors } } : defaultTheme
547
547
  );
548
548
  }
@@ -786,7 +786,7 @@ function AiTextField({
786
786
  setActive(true);
787
787
  await task.run(buildPrompt({ kind, label, current: value ?? "" }), docIds);
788
788
  };
789
- const inputTid = chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-field`, name);
789
+ const inputTid = chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-field`, name);
790
790
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "al-ai-field", children: [
791
791
  multiline ? /* @__PURE__ */ jsxRuntime.jsx(
792
792
  "textarea",
@@ -815,7 +815,7 @@ function AiTextField({
815
815
  className: "al-ai-field__btn",
816
816
  onClick: () => void write(),
817
817
  disabled: task.isRunning,
818
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-ai-write`, name),
818
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-ai-write`, name),
819
819
  title: "Draft this field with AI, grounded in the marketing workspace",
820
820
  children: [
821
821
  task.isRunning ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-3 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "size-3" }),
@@ -918,8 +918,8 @@ function ImageFieldControl({
918
918
  const arbi = react$1.useArbi();
919
919
  const gen = useImageGen();
920
920
  const queryClient = reactQuery.useQueryClient();
921
- const currentAssetImage = useAssetImage(chunkFZQJ2S6P_cjs.isAssetRef(value) ? chunkFZQJ2S6P_cjs.assetRefId(value) : "");
922
- const tp = (...q) => chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-image`, name, ...q);
921
+ const currentAssetImage = useAssetImage(chunkDREI7EQ2_cjs.isAssetRef(value) ? chunkDREI7EQ2_cjs.assetRefId(value) : "");
922
+ const tp = (...q) => chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-image`, name, ...q);
923
923
  const refreshAssets = () => queryClient.invalidateQueries({ queryKey: ["arbi", "documents", workspaceId] });
924
924
  const { data: docs } = react$1.useDocuments(workspaceId);
925
925
  const imageDocs = react.useMemo(
@@ -953,7 +953,7 @@ function ImageFieldControl({
953
953
  const res = await arbi.documents.uploadFile(file, name2, { folder });
954
954
  const id = res.doc_ext_ids?.[0];
955
955
  if (id) {
956
- onChange(chunkFZQJ2S6P_cjs.asAssetRef(id));
956
+ onChange(chunkDREI7EQ2_cjs.asAssetRef(id));
957
957
  void refreshAssets();
958
958
  }
959
959
  } finally {
@@ -971,7 +971,7 @@ function ImageFieldControl({
971
971
  if (!prompt.trim() || gen.isGenerating) return;
972
972
  const id = await gen.generate(prompt, refIds);
973
973
  if (id) {
974
- onChange(chunkFZQJ2S6P_cjs.asAssetRef(id));
974
+ onChange(chunkDREI7EQ2_cjs.asAssetRef(id));
975
975
  setRefIds([]);
976
976
  void refreshAssets();
977
977
  }
@@ -986,7 +986,7 @@ function ImageFieldControl({
986
986
  const tabClass = (on) => `inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium ${on ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground"}`;
987
987
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", "data-testid": tp(), children: [
988
988
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
989
- /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.BlockImage, { src: value, aspect: "16:9", rounded: "md", testId: tp("preview") }),
989
+ /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.BlockImage, { src: value, aspect: "16:9", rounded: "md", testId: tp("preview") }),
990
990
  currentAssetImage ? /* @__PURE__ */ jsxRuntime.jsxs(
991
991
  "button",
992
992
  {
@@ -1020,12 +1020,12 @@ function ImageFieldControl({
1020
1020
  imageDocs.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-span-3 py-3 text-center text-xs text-muted-foreground", children: "No image assets yet \u2014 upload or generate one." }),
1021
1021
  imageDocs.map((d) => {
1022
1022
  const thumb = thumbs?.[d.external_id];
1023
- const selected = value === chunkFZQJ2S6P_cjs.asAssetRef(d.external_id);
1023
+ const selected = value === chunkDREI7EQ2_cjs.asAssetRef(d.external_id);
1024
1024
  return /* @__PURE__ */ jsxRuntime.jsx(
1025
1025
  "button",
1026
1026
  {
1027
1027
  type: "button",
1028
- onClick: () => onChange(chunkFZQJ2S6P_cjs.asAssetRef(d.external_id)),
1028
+ onClick: () => onChange(chunkDREI7EQ2_cjs.asAssetRef(d.external_id)),
1029
1029
  className: `overflow-hidden rounded border ${selected ? "border-primary ring-1 ring-primary" : "border-border"}`,
1030
1030
  title: d.file_name ?? "",
1031
1031
  "data-testid": tp("asset", d.external_id),
@@ -1087,14 +1087,14 @@ function ImageFieldControl({
1087
1087
  "Reference images",
1088
1088
  refIds.length > 0 ? ` (${refIds.length})` : " (optional)"
1089
1089
  ] }),
1090
- chunkFZQJ2S6P_cjs.isAssetRef(value) && /* @__PURE__ */ jsxRuntime.jsx(
1090
+ chunkDREI7EQ2_cjs.isAssetRef(value) && /* @__PURE__ */ jsxRuntime.jsx(
1091
1091
  "button",
1092
1092
  {
1093
1093
  type: "button",
1094
1094
  className: "text-xs font-medium text-primary hover:underline",
1095
- onClick: () => toggleRef(chunkFZQJ2S6P_cjs.assetRefId(value)),
1095
+ onClick: () => toggleRef(chunkDREI7EQ2_cjs.assetRefId(value)),
1096
1096
  "data-testid": tp("vary-current"),
1097
- children: refIds.includes(chunkFZQJ2S6P_cjs.assetRefId(value)) ? "Varying current" : "Vary current image"
1097
+ children: refIds.includes(chunkDREI7EQ2_cjs.assetRefId(value)) ? "Varying current" : "Vary current image"
1098
1098
  }
1099
1099
  )
1100
1100
  ] }),
@@ -1308,7 +1308,7 @@ function createBlockKit(ai, image, eyebrowClassName) {
1308
1308
  }),
1309
1309
  iconField: (label = "Icon") => ({ type: "select", label, options: ICON_OPTIONS }),
1310
1310
  resolveIcon: (name) => name ? iconMap[name] : void 0,
1311
- blockTestId: (id) => chunkFZQJ2S6P_cjs.tid("arbi-block", id)
1311
+ blockTestId: (id) => chunkDREI7EQ2_cjs.tid("arbi-block", id)
1312
1312
  };
1313
1313
  }
1314
1314
  var emptySlot = [];
@@ -1373,7 +1373,7 @@ function createWebsiteBlocks(kit) {
1373
1373
  render: ({ id, count, gap, col1, col2, col3, col4 }) => {
1374
1374
  const n = Number(count) || 3;
1375
1375
  const columns = [col1, col2, col3, col4].slice(0, n).map(renderSlot);
1376
- return /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Columns, { count: n, gap, columns, testId: blockTestId(id) });
1376
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Columns, { count: n, gap, columns, testId: blockTestId(id) });
1377
1377
  }
1378
1378
  };
1379
1379
  const SpacerBlock = {
@@ -1391,7 +1391,7 @@ function createWebsiteBlocks(kit) {
1391
1391
  }
1392
1392
  },
1393
1393
  defaultProps: { size: "md" },
1394
- render: ({ id, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Spacer, { size, testId: blockTestId(id) })
1394
+ render: ({ id, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Spacer, { size, testId: blockTestId(id) })
1395
1395
  };
1396
1396
  const ContainerBlock = {
1397
1397
  label: "Container",
@@ -1419,7 +1419,7 @@ function createWebsiteBlocks(kit) {
1419
1419
  children: { type: "slot" }
1420
1420
  },
1421
1421
  defaultProps: { width: "default", padding: "md", children: emptySlot },
1422
- render: ({ id, width, padding, children }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Container, { width, padding, testId: blockTestId(id), children: renderSlot(children) })
1422
+ render: ({ id, width, padding, children }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Container, { width, padding, testId: blockTestId(id), children: renderSlot(children) })
1423
1423
  };
1424
1424
  const HeroBlock = {
1425
1425
  label: "Hero",
@@ -1470,7 +1470,7 @@ function createWebsiteBlocks(kit) {
1470
1470
  backgroundImage,
1471
1471
  overlay
1472
1472
  }) => /* @__PURE__ */ jsxRuntime.jsx(
1473
- chunkFZQJ2S6P_cjs.Hero,
1473
+ chunkDREI7EQ2_cjs.Hero,
1474
1474
  {
1475
1475
  eyebrow,
1476
1476
  title,
@@ -1542,7 +1542,7 @@ function createWebsiteBlocks(kit) {
1542
1542
  icon: resolveIcon(it.icon)
1543
1543
  })
1544
1544
  );
1545
- return /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.FeatureGrid, { columns, items: list, testId: blockTestId(id) });
1545
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.FeatureGrid, { columns, items: list, testId: blockTestId(id) });
1546
1546
  }
1547
1547
  };
1548
1548
  const StatGroupBlock = {
@@ -1567,7 +1567,7 @@ function createWebsiteBlocks(kit) {
1567
1567
  { value: "24/7", label: "Support" }
1568
1568
  ]
1569
1569
  },
1570
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkKUA3BCT2_cjs.StatGroup, { items, testId: blockTestId(id) })
1570
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkAE5FHFZ5_cjs.StatGroup, { items, testId: blockTestId(id) })
1571
1571
  };
1572
1572
  const TestimonialBlock = {
1573
1573
  label: "Testimonial",
@@ -1584,7 +1584,7 @@ function createWebsiteBlocks(kit) {
1584
1584
  avatarUrl: ""
1585
1585
  },
1586
1586
  render: ({ id, quote, author, role, avatarUrl }) => /* @__PURE__ */ jsxRuntime.jsx(
1587
- chunkFZQJ2S6P_cjs.Testimonial,
1587
+ chunkDREI7EQ2_cjs.Testimonial,
1588
1588
  {
1589
1589
  quote,
1590
1590
  author,
@@ -1613,7 +1613,7 @@ function createWebsiteBlocks(kit) {
1613
1613
  overlay: true
1614
1614
  },
1615
1615
  render: ({ id, title, subtitle, cta, tone, backgroundImage, overlay }) => /* @__PURE__ */ jsxRuntime.jsx(
1616
- chunkFZQJ2S6P_cjs.CTABanner,
1616
+ chunkDREI7EQ2_cjs.CTABanner,
1617
1617
  {
1618
1618
  title,
1619
1619
  subtitle,
@@ -1645,7 +1645,7 @@ function createWebsiteBlocks(kit) {
1645
1645
  { label: "Umbrella" }
1646
1646
  ]
1647
1647
  },
1648
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.LogoCloud, { items, testId: blockTestId(id) })
1648
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.LogoCloud, { items, testId: blockTestId(id) })
1649
1649
  };
1650
1650
  const FAQBlock = {
1651
1651
  label: "FAQ",
@@ -1677,7 +1677,7 @@ function createWebsiteBlocks(kit) {
1677
1677
  }
1678
1678
  ]
1679
1679
  },
1680
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.FAQ, { items, testId: blockTestId(id) })
1680
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.FAQ, { items, testId: blockTestId(id) })
1681
1681
  };
1682
1682
  const TimelineBlockConfig = {
1683
1683
  label: "Timeline",
@@ -1752,7 +1752,7 @@ function createWebsiteBlocks(kit) {
1752
1752
  defaultProps: {
1753
1753
  content: "## About us\n\nWe build tools that help teams do their best work. Our platform combines **power** and _simplicity_ so you can focus on what matters.\n\n- Fast to learn\n- Easy to scale\n- Loved by teams"
1754
1754
  },
1755
- render: ({ id, content }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.RichTextBlock, { content, testId: blockTestId(id) })
1755
+ render: ({ id, content }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.RichTextBlock, { content, testId: blockTestId(id) })
1756
1756
  };
1757
1757
  const CalloutBlock = {
1758
1758
  label: "Callout",
@@ -1806,7 +1806,7 @@ function createWebsiteBlocks(kit) {
1806
1806
  },
1807
1807
  defaultProps: { src: "", alt: "Image", aspect: "16:9", rounded: "lg", framed: false },
1808
1808
  render: ({ id, src, alt, aspect, rounded, framed }) => /* @__PURE__ */ jsxRuntime.jsx(
1809
- chunkFZQJ2S6P_cjs.BlockImage,
1809
+ chunkDREI7EQ2_cjs.BlockImage,
1810
1810
  {
1811
1811
  src,
1812
1812
  alt,
@@ -1834,7 +1834,7 @@ function createWebsiteBlocks(kit) {
1834
1834
  }
1835
1835
  },
1836
1836
  defaultProps: { src: "", name: "Jane Doe", size: "md" },
1837
- render: ({ id, src, name, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.AvatarBlock, { src, name, size, testId: blockTestId(id) })
1837
+ render: ({ id, src, name, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.AvatarBlock, { src, name, size, testId: blockTestId(id) })
1838
1838
  };
1839
1839
  const NavbarBlock = {
1840
1840
  label: "Navbar",
@@ -1862,7 +1862,7 @@ function createWebsiteBlocks(kit) {
1862
1862
  ],
1863
1863
  cta: { label: "Sign up", href: "#" }
1864
1864
  },
1865
- render: ({ id, brand, links, cta }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Navbar, { brand, links, cta, testId: blockTestId(id) })
1865
+ render: ({ id, brand, links, cta }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Navbar, { brand, links, cta, testId: blockTestId(id) })
1866
1866
  };
1867
1867
  const FooterBlock = {
1868
1868
  label: "Footer",
@@ -1921,7 +1921,7 @@ function createWebsiteBlocks(kit) {
1921
1921
  ],
1922
1922
  copyright: "\xA9 2026 Acme, Inc. All rights reserved."
1923
1923
  },
1924
- render: ({ id, columns, copyright }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Footer, { columns, copyright, testId: blockTestId(id) })
1924
+ render: ({ id, columns, copyright }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Footer, { columns, copyright, testId: blockTestId(id) })
1925
1925
  };
1926
1926
  const ListBlockConfig = {
1927
1927
  label: "List",
@@ -1939,7 +1939,7 @@ function createWebsiteBlocks(kit) {
1939
1939
  ordered: false,
1940
1940
  items: [{ text: "First item" }, { text: "Second item" }, { text: "Third item" }]
1941
1941
  },
1942
- render: ({ id, ordered, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.ListBlock, { ordered, items, testId: blockTestId(id) })
1942
+ render: ({ id, ordered, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.ListBlock, { ordered, items, testId: blockTestId(id) })
1943
1943
  };
1944
1944
  return {
1945
1945
  Columns: ColumnsBlock,
@@ -2042,7 +2042,7 @@ function createSiteBlocks(kit) {
2042
2042
  ]
2043
2043
  },
2044
2044
  render: ({ id, plans }) => /* @__PURE__ */ jsxRuntime.jsx(
2045
- chunkFZQJ2S6P_cjs.PricingTable,
2045
+ chunkDREI7EQ2_cjs.PricingTable,
2046
2046
  {
2047
2047
  plans: (plans ?? []).map(
2048
2048
  (p) => ({
@@ -2080,7 +2080,7 @@ function createSiteBlocks(kit) {
2080
2080
  { label: "FAQ", content: "Answers to common questions." }
2081
2081
  ]
2082
2082
  },
2083
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Tabs, { items, testId: blockTestId(id) })
2083
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Tabs, { items, testId: blockTestId(id) })
2084
2084
  };
2085
2085
  const AccordionBlock = {
2086
2086
  label: "Accordion",
@@ -2104,7 +2104,7 @@ function createSiteBlocks(kit) {
2104
2104
  { title: "How does billing work?", content: "Monthly or annually, cancel anytime." }
2105
2105
  ]
2106
2106
  },
2107
- render: ({ id, allowMultiple, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Accordion, { allowMultiple, items, testId: blockTestId(id) })
2107
+ render: ({ id, allowMultiple, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Accordion, { allowMultiple, items, testId: blockTestId(id) })
2108
2108
  };
2109
2109
  const GalleryBlock = {
2110
2110
  label: "Gallery",
@@ -2140,7 +2140,7 @@ function createSiteBlocks(kit) {
2140
2140
  { src: "", alt: "Image three", caption: "" }
2141
2141
  ]
2142
2142
  },
2143
- render: ({ id, columns, aspect, images }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Gallery, { columns, aspect, images, testId: blockTestId(id) })
2143
+ render: ({ id, columns, aspect, images }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Gallery, { columns, aspect, images, testId: blockTestId(id) })
2144
2144
  };
2145
2145
  const VideoBlock = {
2146
2146
  label: "Video",
@@ -2160,7 +2160,7 @@ function createSiteBlocks(kit) {
2160
2160
  },
2161
2161
  defaultProps: { url: "", title: "", aspect: "16:9", rounded: true },
2162
2162
  render: ({ id, url, title, aspect, rounded }) => /* @__PURE__ */ jsxRuntime.jsx(
2163
- chunkFZQJ2S6P_cjs.VideoEmbed,
2163
+ chunkDREI7EQ2_cjs.VideoEmbed,
2164
2164
  {
2165
2165
  url,
2166
2166
  title,
@@ -2209,7 +2209,7 @@ function createSiteBlocks(kit) {
2209
2209
  ]
2210
2210
  },
2211
2211
  render: ({ id, submitLabel, action, successMessage, fields }) => /* @__PURE__ */ jsxRuntime.jsx(
2212
- chunkFZQJ2S6P_cjs.ContactForm,
2212
+ chunkDREI7EQ2_cjs.ContactForm,
2213
2213
  {
2214
2214
  submitLabel,
2215
2215
  action: action || void 0,
@@ -2239,7 +2239,7 @@ function createSiteBlocks(kit) {
2239
2239
  cta: { label: "Read more", href: "#" },
2240
2240
  tone: "primary"
2241
2241
  },
2242
- render: ({ id, text, cta, tone }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Banner, { text, cta, tone, testId: blockTestId(id) })
2242
+ render: ({ id, text, cta, tone }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Banner, { text, cta, tone, testId: blockTestId(id) })
2243
2243
  };
2244
2244
  const MediaTextBlock = {
2245
2245
  label: "Media & text",
@@ -2267,7 +2267,7 @@ function createSiteBlocks(kit) {
2267
2267
  cta: { label: "Learn more", href: "#" }
2268
2268
  },
2269
2269
  render: ({ id, eyebrow, title, body, imageUrl, mediaSide, cta }) => /* @__PURE__ */ jsxRuntime.jsx(
2270
- chunkFZQJ2S6P_cjs.MediaText,
2270
+ chunkDREI7EQ2_cjs.MediaText,
2271
2271
  {
2272
2272
  eyebrow,
2273
2273
  title,
@@ -2304,7 +2304,7 @@ function createSiteBlocks(kit) {
2304
2304
  { name: "Jordan Lee", role: "Lead Engineer", bio: "", avatarUrl: "" }
2305
2305
  ]
2306
2306
  },
2307
- render: ({ id, columns, members }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.TeamGrid, { columns, members, testId: blockTestId(id) })
2307
+ render: ({ id, columns, members }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.TeamGrid, { columns, members, testId: blockTestId(id) })
2308
2308
  };
2309
2309
  const StepsBlock = {
2310
2310
  label: "Steps",
@@ -2336,7 +2336,7 @@ function createSiteBlocks(kit) {
2336
2336
  { title: "Launch", description: "Go live and start seeing results." }
2337
2337
  ]
2338
2338
  },
2339
- render: ({ id, variant, steps }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.Steps, { variant, steps, testId: blockTestId(id) })
2339
+ render: ({ id, variant, steps }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.Steps, { variant, steps, testId: blockTestId(id) })
2340
2340
  };
2341
2341
  const TestimonialGridBlock = {
2342
2342
  label: "Testimonial grid",
@@ -2378,7 +2378,7 @@ function createSiteBlocks(kit) {
2378
2378
  }
2379
2379
  ]
2380
2380
  },
2381
- render: ({ id, columns, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkFZQJ2S6P_cjs.TestimonialGrid, { columns, items, testId: blockTestId(id) })
2381
+ render: ({ id, columns, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkDREI7EQ2_cjs.TestimonialGrid, { columns, items, testId: blockTestId(id) })
2382
2382
  };
2383
2383
  return {
2384
2384
  Pricing: PricingBlock,
@@ -2422,7 +2422,7 @@ function createArbiBlocksConfig(opts = {}) {
2422
2422
  },
2423
2423
  defaultProps: { title: "Section title", align: "left", invert: false },
2424
2424
  render: ({ id, title, eyebrow, lead, align, invert }) => /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": blockTestId(id), children: /* @__PURE__ */ jsxRuntime.jsx(
2425
- chunkFZQJ2S6P_cjs.SectionHeading,
2425
+ chunkDREI7EQ2_cjs.SectionHeading,
2426
2426
  {
2427
2427
  title,
2428
2428
  eyebrow,
@@ -2445,7 +2445,7 @@ function createArbiBlocksConfig(opts = {}) {
2445
2445
  },
2446
2446
  defaultProps: { title: "Page title", actions: emptySlot2 },
2447
2447
  render: ({ id, title, eyebrow, description, actions: Actions }) => /* @__PURE__ */ jsxRuntime.jsx(
2448
- chunkKUA3BCT2_cjs.PageHeader,
2448
+ chunkAE5FHFZ5_cjs.PageHeader,
2449
2449
  {
2450
2450
  title,
2451
2451
  eyebrow,
@@ -2512,7 +2512,7 @@ function createArbiBlocksConfig(opts = {}) {
2512
2512
  },
2513
2513
  defaultProps: { label: "Metric", value: "0", accent: "default" },
2514
2514
  render: ({ id, label, value, hint, accent, delta, icon }) => /* @__PURE__ */ jsxRuntime.jsx(
2515
- chunkKUA3BCT2_cjs.MetricCard,
2515
+ chunkAE5FHFZ5_cjs.MetricCard,
2516
2516
  {
2517
2517
  label,
2518
2518
  value,
@@ -2628,7 +2628,7 @@ function createArbiBlocksConfig(opts = {}) {
2628
2628
  field: col.field || `col-${index}`
2629
2629
  }));
2630
2630
  return /* @__PURE__ */ jsxRuntime.jsx(
2631
- chunkKUA3BCT2_cjs.DataTableBlock,
2631
+ chunkAE5FHFZ5_cjs.DataTableBlock,
2632
2632
  {
2633
2633
  columns: normalisedCols,
2634
2634
  rows: recordRows,
@@ -3016,7 +3016,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
3016
3016
  {
3017
3017
  variant: "elevated",
3018
3018
  className: "rounded-lg",
3019
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-modules-section`, group.section),
3019
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-modules-section`, group.section),
3020
3020
  children: [
3021
3021
  /* @__PURE__ */ jsxRuntime.jsx(ui.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.CardTitle, { className: "text-base", children: group.section }) }),
3022
3022
  /* @__PURE__ */ jsxRuntime.jsx(ui.CardContent, { className: "space-y-1.5", children: group.modules.map((m, idx) => {
@@ -3025,7 +3025,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
3025
3025
  "div",
3026
3026
  {
3027
3027
  className: "flex items-center gap-3 rounded-md border border-border/60 bg-card px-3 py-2",
3028
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-module`, m.id),
3028
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-module`, m.id),
3029
3029
  children: [
3030
3030
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
3031
3031
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3037,7 +3037,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
3037
3037
  disabled: idx === 0,
3038
3038
  onClick: () => move(m.id, "up"),
3039
3039
  "aria-label": `Move ${m.label} up`,
3040
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-module-up`, m.id),
3040
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-module-up`, m.id),
3041
3041
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "size-3.5" })
3042
3042
  }
3043
3043
  ),
@@ -3050,7 +3050,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
3050
3050
  disabled: idx === group.modules.length - 1,
3051
3051
  onClick: () => move(m.id, "down"),
3052
3052
  "aria-label": `Move ${m.label} down`,
3053
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-module-down`, m.id),
3053
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-module-down`, m.id),
3054
3054
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-3.5" })
3055
3055
  }
3056
3056
  )
@@ -3070,7 +3070,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
3070
3070
  checked: m.enabled,
3071
3071
  onCheckedChange: () => toggle2(m.id),
3072
3072
  "aria-label": `Enable ${m.label}`,
3073
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-module-toggle`, m.id)
3073
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-module-toggle`, m.id)
3074
3074
  }
3075
3075
  )
3076
3076
  ]
@@ -3102,7 +3102,7 @@ function ConfigModelBadge({ configId, testIdPrefix }) {
3102
3102
  ui.Badge,
3103
3103
  {
3104
3104
  variant: TIER_VARIANT[tier] ?? "secondary",
3105
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-agents-config-tier`, configId),
3105
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-agents-config-tier`, configId),
3106
3106
  children: [
3107
3107
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Cpu, { className: "size-3" }),
3108
3108
  " ",
@@ -3139,14 +3139,14 @@ function AgentsPanel({ store, testIdPrefix = "builder" }) {
3139
3139
  "label",
3140
3140
  {
3141
3141
  className: "flex cursor-pointer items-center gap-3 rounded-md border border-border/60 bg-card px-3 py-2",
3142
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-agents-config`, v.external_id),
3142
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-agents-config`, v.external_id),
3143
3143
  children: [
3144
3144
  /* @__PURE__ */ jsxRuntime.jsx(
3145
3145
  ui.Checkbox,
3146
3146
  {
3147
3147
  checked: configIds.includes(v.external_id),
3148
3148
  onCheckedChange: () => toggleConfig(v.external_id),
3149
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-agents-config-toggle`, v.external_id)
3149
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-agents-config-toggle`, v.external_id)
3150
3150
  }
3151
3151
  ),
3152
3152
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
@@ -3175,14 +3175,14 @@ function AgentsPanel({ store, testIdPrefix = "builder" }) {
3175
3175
  "label",
3176
3176
  {
3177
3177
  className: "flex cursor-pointer items-center gap-3 rounded-md border border-border/60 bg-card px-3 py-2",
3178
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-agents-agent`, a.external_id),
3178
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-agents-agent`, a.external_id),
3179
3179
  children: [
3180
3180
  /* @__PURE__ */ jsxRuntime.jsx(
3181
3181
  ui.Checkbox,
3182
3182
  {
3183
3183
  checked: agentIds.includes(a.external_id),
3184
3184
  onCheckedChange: () => toggleAgent(a.external_id),
3185
- "data-testid": chunkFZQJ2S6P_cjs.tid(`${testIdPrefix}-agents-agent-toggle`, a.external_id)
3185
+ "data-testid": chunkDREI7EQ2_cjs.tid(`${testIdPrefix}-agents-agent-toggle`, a.external_id)
3186
3186
  }
3187
3187
  ),
3188
3188
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
@@ -3269,7 +3269,7 @@ function VerticalBuilder({
3269
3269
  ] })
3270
3270
  ] }),
3271
3271
  /* @__PURE__ */ jsxRuntime.jsx(ui.TabsContent, { value: "theme", children: /* @__PURE__ */ jsxRuntime.jsx(
3272
- chunkFZQJ2S6P_cjs.ThemeEditor,
3272
+ chunkDREI7EQ2_cjs.ThemeEditor,
3273
3273
  {
3274
3274
  bundle: themeBundle,
3275
3275
  variant: "panel",
@@ -3295,31 +3295,31 @@ function VerticalBuilder({
3295
3295
 
3296
3296
  Object.defineProperty(exports, "ASSET_REF_PREFIX", {
3297
3297
  enumerable: true,
3298
- get: function () { return chunkFZQJ2S6P_cjs.ASSET_REF_PREFIX; }
3298
+ get: function () { return chunkDREI7EQ2_cjs.ASSET_REF_PREFIX; }
3299
3299
  });
3300
3300
  Object.defineProperty(exports, "AssetResolverProvider", {
3301
3301
  enumerable: true,
3302
- get: function () { return chunkFZQJ2S6P_cjs.AssetResolverProvider; }
3302
+ get: function () { return chunkDREI7EQ2_cjs.AssetResolverProvider; }
3303
3303
  });
3304
3304
  Object.defineProperty(exports, "asAssetRef", {
3305
3305
  enumerable: true,
3306
- get: function () { return chunkFZQJ2S6P_cjs.asAssetRef; }
3306
+ get: function () { return chunkDREI7EQ2_cjs.asAssetRef; }
3307
3307
  });
3308
3308
  Object.defineProperty(exports, "assetRefId", {
3309
3309
  enumerable: true,
3310
- get: function () { return chunkFZQJ2S6P_cjs.assetRefId; }
3310
+ get: function () { return chunkDREI7EQ2_cjs.assetRefId; }
3311
3311
  });
3312
3312
  Object.defineProperty(exports, "isAssetRef", {
3313
3313
  enumerable: true,
3314
- get: function () { return chunkFZQJ2S6P_cjs.isAssetRef; }
3314
+ get: function () { return chunkDREI7EQ2_cjs.isAssetRef; }
3315
3315
  });
3316
3316
  Object.defineProperty(exports, "useAssetRenderer", {
3317
3317
  enumerable: true,
3318
- get: function () { return chunkFZQJ2S6P_cjs.useAssetRenderer; }
3318
+ get: function () { return chunkDREI7EQ2_cjs.useAssetRenderer; }
3319
3319
  });
3320
3320
  Object.defineProperty(exports, "useAssetResolverActive", {
3321
3321
  enumerable: true,
3322
- get: function () { return chunkFZQJ2S6P_cjs.useAssetResolverActive; }
3322
+ get: function () { return chunkDREI7EQ2_cjs.useAssetResolverActive; }
3323
3323
  });
3324
3324
  exports.AgentsPanel = AgentsPanel;
3325
3325
  exports.AssetThumb = AssetThumb;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { PageHeader, MetricCard, DataTableBlock, StatGroup } from '../chunk-S5T7ZTX2.js';
3
- import { assetRefId, applyStoredTheme, AssetResolverProvider, ThemeEditor, applyThemeVars, tid, SectionHeading, PricingTable, Tabs as Tabs$1, Accordion, Gallery, VideoEmbed, ContactForm, Banner, MediaText, TeamGrid, Steps, TestimonialGrid, Columns, Spacer, Container, Hero, FeatureGrid, Testimonial, CTABanner, LogoCloud, FAQ, RichTextBlock, BlockImage, AvatarBlock, Navbar, Footer, ListBlock, isAssetRef, asAssetRef } from '../chunk-RBXZYNVB.js';
4
- export { ASSET_REF_PREFIX, AssetResolverProvider, asAssetRef, assetRefId, isAssetRef, useAssetRenderer, useAssetResolverActive } from '../chunk-RBXZYNVB.js';
2
+ import { PageHeader, MetricCard, DataTableBlock, StatGroup } from '../chunk-2ORA62OF.js';
3
+ import { assetRefId, applyStoredTheme, AssetResolverProvider, ThemeEditor, applyThemeVars, tid, SectionHeading, PricingTable, Tabs as Tabs$1, Accordion, Gallery, VideoEmbed, ContactForm, Banner, MediaText, TeamGrid, Steps, TestimonialGrid, Columns, Spacer, Container, Hero, FeatureGrid, Testimonial, CTABanner, LogoCloud, FAQ, RichTextBlock, BlockImage, AvatarBlock, Navbar, Footer, ListBlock, isAssetRef, asAssetRef } from '../chunk-6P6AEQJB.js';
4
+ export { ASSET_REF_PREFIX, AssetResolverProvider, asAssetRef, assetRefId, isAssetRef, useAssetRenderer, useAssetResolverActive } from '../chunk-6P6AEQJB.js';
5
5
  import { Callout } from '../chunk-UJE32SST.js';
6
6
  import { Timeline } from '../chunk-OVEQERPO.js';
7
7
  import { EmptyState } from '../chunk-P6GHJSLR.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/blocks",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -174,7 +174,7 @@
174
174
  "typecheck": "tsc --noEmit"
175
175
  },
176
176
  "dependencies": {
177
- "@arbidocs/client": "0.4.0",
177
+ "@arbidocs/client": "0.4.1",
178
178
  "@dnd-kit/core": "^6.3.1",
179
179
  "@dnd-kit/sortable": "^10.0.0",
180
180
  "@dnd-kit/utilities": "^3.2.2",
@@ -189,7 +189,7 @@
189
189
  "zustand": "^5.0.14"
190
190
  },
191
191
  "peerDependencies": {
192
- "@arbidocs/react": "0.4.0",
192
+ "@arbidocs/react": "0.4.1",
193
193
  "@measured/puck": ">=0.20",
194
194
  "@playwright/test": ">=1.40",
195
195
  "@tanstack/react-query": ">=5",
package/src/blocks.css CHANGED
@@ -346,3 +346,20 @@
346
346
  color: rgb(254 240 138);
347
347
  }
348
348
  }
349
+
350
+ /*
351
+ * Reveal (`<Reveal>` in the editorial site parts): content is visible by default; once the part
352
+ * has mounted and an IntersectionObserver exists it is set to `pending` (hidden, lowered) and to
353
+ * `shown` on first scroll into view. Reduced motion collapses the transition above.
354
+ */
355
+ [data-reveal='pending'] {
356
+ opacity: 0;
357
+ transform: translateY(1.5rem);
358
+ }
359
+ [data-reveal='shown'] {
360
+ opacity: 1;
361
+ transform: none;
362
+ transition:
363
+ opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0ms),
364
+ transform 0.6s cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0ms);
365
+ }