vobi_document 1.0.2 → 1.1.0

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 (96) hide show
  1. package/README.md +23 -6
  2. package/dist/blocks.cjs +100 -0
  3. package/dist/blocks.cjs.map +1 -0
  4. package/dist/blocks.d.cts +201 -0
  5. package/dist/blocks.d.ts +201 -0
  6. package/dist/blocks.js +7 -0
  7. package/dist/blocks.js.map +1 -0
  8. package/dist/catalogContext-DenbX-OW.d.cts +15 -0
  9. package/dist/catalogContext-HGMU-w_4.d.ts +15 -0
  10. package/dist/chunk-2EBYURIX.js +90 -0
  11. package/dist/chunk-2EBYURIX.js.map +1 -0
  12. package/dist/chunk-6GRYRVU5.js +824 -0
  13. package/dist/chunk-6GRYRVU5.js.map +1 -0
  14. package/dist/chunk-ABIEQHS2.js +159 -0
  15. package/dist/chunk-ABIEQHS2.js.map +1 -0
  16. package/dist/chunk-AQ5FAAP6.cjs +168 -0
  17. package/dist/chunk-AQ5FAAP6.cjs.map +1 -0
  18. package/dist/chunk-ERKU5FDV.cjs +407 -0
  19. package/dist/chunk-ERKU5FDV.cjs.map +1 -0
  20. package/dist/chunk-FKX46GKE.cjs +36 -0
  21. package/dist/chunk-FKX46GKE.cjs.map +1 -0
  22. package/dist/chunk-HMTCQOEV.js +1319 -0
  23. package/dist/chunk-HMTCQOEV.js.map +1 -0
  24. package/dist/chunk-IRFFN74K.cjs +89 -0
  25. package/dist/chunk-IRFFN74K.cjs.map +1 -0
  26. package/dist/chunk-IUDN2CGP.js +863 -0
  27. package/dist/chunk-IUDN2CGP.js.map +1 -0
  28. package/dist/chunk-JEVWEGSE.js +95 -0
  29. package/dist/chunk-JEVWEGSE.js.map +1 -0
  30. package/dist/chunk-KCZKC3OG.js +61 -0
  31. package/dist/chunk-KCZKC3OG.js.map +1 -0
  32. package/dist/chunk-KUB3TYG2.cjs +102 -0
  33. package/dist/chunk-KUB3TYG2.cjs.map +1 -0
  34. package/dist/chunk-L5FXGEKX.cjs +114 -0
  35. package/dist/chunk-L5FXGEKX.cjs.map +1 -0
  36. package/dist/chunk-LNBAFOVK.cjs +14 -0
  37. package/dist/chunk-LNBAFOVK.cjs.map +1 -0
  38. package/dist/chunk-M2TPAU2F.js +79 -0
  39. package/dist/chunk-M2TPAU2F.js.map +1 -0
  40. package/dist/chunk-MHTTFNK2.cjs +890 -0
  41. package/dist/chunk-MHTTFNK2.cjs.map +1 -0
  42. package/dist/chunk-NDHTMYPA.cjs +844 -0
  43. package/dist/chunk-NDHTMYPA.cjs.map +1 -0
  44. package/dist/chunk-PLQNNXS2.js +382 -0
  45. package/dist/chunk-PLQNNXS2.js.map +1 -0
  46. package/dist/chunk-QYBWIJXZ.js +98 -0
  47. package/dist/chunk-QYBWIJXZ.js.map +1 -0
  48. package/dist/chunk-U56KVTK5.cjs +68 -0
  49. package/dist/chunk-U56KVTK5.cjs.map +1 -0
  50. package/dist/chunk-X2BLERM5.cjs +1346 -0
  51. package/dist/chunk-X2BLERM5.cjs.map +1 -0
  52. package/dist/chunk-ZOJBDFKU.js +12 -0
  53. package/dist/chunk-ZOJBDFKU.js.map +1 -0
  54. package/dist/chunk-ZXWOZZXO.cjs +94 -0
  55. package/dist/chunk-ZXWOZZXO.cjs.map +1 -0
  56. package/dist/editor.cjs +60 -0
  57. package/dist/editor.cjs.map +1 -0
  58. package/dist/editor.d.cts +190 -0
  59. package/dist/editor.d.ts +190 -0
  60. package/dist/editor.js +7 -0
  61. package/dist/editor.js.map +1 -0
  62. package/dist/index.cjs +412 -3753
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +72 -7892
  65. package/dist/index.d.ts +72 -7892
  66. package/dist/index.js +22 -3662
  67. package/dist/index.js.map +1 -1
  68. package/dist/messages-Bi0JxNIH.d.cts +23 -0
  69. package/dist/messages-Bi0JxNIH.d.ts +23 -0
  70. package/dist/print.cjs +354 -0
  71. package/dist/print.cjs.map +1 -0
  72. package/dist/print.d.cts +43 -0
  73. package/dist/print.d.ts +43 -0
  74. package/dist/print.js +336 -0
  75. package/dist/print.js.map +1 -0
  76. package/dist/puck.cjs +8 -8
  77. package/dist/puck.cjs.map +1 -1
  78. package/dist/render.cjs +72 -0
  79. package/dist/render.cjs.map +1 -0
  80. package/dist/render.d.cts +93 -0
  81. package/dist/render.d.ts +93 -0
  82. package/dist/render.js +7 -0
  83. package/dist/render.js.map +1 -0
  84. package/dist/theme-BuEFpQeZ.d.cts +112 -0
  85. package/dist/theme-BuEFpQeZ.d.ts +112 -0
  86. package/dist/types-BgIugNWW.d.cts +25 -0
  87. package/dist/types-BgIugNWW.d.ts +25 -0
  88. package/dist/types-CvKSS1Sy.d.cts +38 -0
  89. package/dist/types-CvKSS1Sy.d.ts +38 -0
  90. package/dist/variables.cjs +95 -0
  91. package/dist/variables.cjs.map +1 -0
  92. package/dist/variables.d.cts +74 -0
  93. package/dist/variables.d.ts +74 -0
  94. package/dist/variables.js +6 -0
  95. package/dist/variables.js.map +1 -0
  96. package/package.json +39 -8
@@ -0,0 +1,863 @@
1
+ import { TextIcon, HeadingIcon, ListIcon, QuoteIcon, ButtonIcon, DividerIcon, SpacerIcon, ImageIcon, ImageGridIcon, TwoColumnsIcon, ImageTextIcon, IconTextIcon, TableIcon, PageBreakIcon } from './chunk-QYBWIJXZ.js';
2
+ import { devWarn } from './chunk-ZOJBDFKU.js';
3
+ import { CHIP_CLASS, INVALID_CHIP_CLASS, resolveVariableHtml } from './chunk-JEVWEGSE.js';
4
+ import { useResolvedVariables, useCatalog, useUnresolvedDisplay } from './chunk-M2TPAU2F.js';
5
+ import { z } from 'zod';
6
+ import styled4 from 'styled-components';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ // src/blocks/defineBlock.ts
10
+ function defineBlock(entry) {
11
+ return entry;
12
+ }
13
+ var Prose = styled4.div`
14
+ > :first-child {
15
+ margin-top: 0;
16
+ }
17
+ > :last-child {
18
+ margin-bottom: 0;
19
+ }
20
+
21
+ p,
22
+ ul,
23
+ ol {
24
+ margin: 0 0 8px;
25
+ }
26
+
27
+ h1,
28
+ h2,
29
+ h3,
30
+ h4 {
31
+ margin: 0 0 8px;
32
+ line-height: 1.25;
33
+ }
34
+
35
+ a {
36
+ color: var(--doc-brand, #005ac3);
37
+ }
38
+
39
+ strong {
40
+ font-weight: 600;
41
+ }
42
+
43
+ .${CHIP_CLASS} {
44
+ padding: 1px 6px;
45
+ border-radius: 4px;
46
+ background: color-mix(in srgb, var(--doc-brand, #005ac3) 12%, transparent);
47
+ color: var(--doc-brand, #005ac3);
48
+ font-size: 0.94em;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ .${INVALID_CHIP_CLASS} {
53
+ background: #fdecea;
54
+ color: #b4341b;
55
+ }
56
+ `;
57
+ function RichText({ html = "", editing = false, as, className }) {
58
+ const resolved = useResolvedVariables();
59
+ const catalog = useCatalog();
60
+ const unresolved = useUnresolvedDisplay();
61
+ return /* @__PURE__ */ jsx(
62
+ Prose,
63
+ {
64
+ as,
65
+ className,
66
+ dangerouslySetInnerHTML: {
67
+ __html: resolveVariableHtml(html, resolved, { keepChip: editing, catalog, unresolved })
68
+ }
69
+ }
70
+ );
71
+ }
72
+ var TextBlock = defineBlock({
73
+ key: "Text",
74
+ label: "Texto",
75
+ category: "Conte\xFAdo",
76
+ icon: /* @__PURE__ */ jsx(TextIcon, {}),
77
+ fields: {
78
+ content: { type: "textarea", label: "Conte\xFAdo (HTML)" }
79
+ },
80
+ propsSchema: z.object({ content: z.string() }),
81
+ defaultProps: { content: "<p>Escreva o texto do documento aqui.</p>" },
82
+ component: ({ content, puck }) => /* @__PURE__ */ jsx(RichText, { html: content, editing: puck?.isEditing })
83
+ });
84
+ var HeadingBlock = defineBlock({
85
+ key: "Heading",
86
+ label: "T\xEDtulo",
87
+ category: "Conte\xFAdo",
88
+ icon: /* @__PURE__ */ jsx(HeadingIcon, {}),
89
+ fields: {
90
+ text: { type: "text", label: "T\xEDtulo" },
91
+ level: {
92
+ type: "select",
93
+ label: "N\xEDvel",
94
+ options: [
95
+ { label: "T\xEDtulo 1", value: 1 },
96
+ { label: "T\xEDtulo 2", value: 2 },
97
+ { label: "T\xEDtulo 3", value: 3 },
98
+ { label: "T\xEDtulo 4", value: 4 }
99
+ ]
100
+ }
101
+ },
102
+ propsSchema: z.object({ text: z.string(), level: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]) }),
103
+ defaultProps: { text: "T\xEDtulo da se\xE7\xE3o", level: 2 },
104
+ component: ({ text, level, puck }) => /* @__PURE__ */ jsx(RichText, { as: `h${level ?? 2}`, html: text, editing: puck?.isEditing })
105
+ });
106
+ var List = styled4.ul`
107
+ margin: 0;
108
+ padding-left: 22px;
109
+
110
+ li {
111
+ margin-bottom: 4px;
112
+ }
113
+ li::marker {
114
+ color: var(--doc-brand, #005ac3);
115
+ }
116
+ `;
117
+ var ListBlock = defineBlock({
118
+ key: "List",
119
+ label: "Lista",
120
+ category: "Conte\xFAdo",
121
+ icon: /* @__PURE__ */ jsx(ListIcon, {}),
122
+ fields: {
123
+ ordered: {
124
+ type: "radio",
125
+ label: "Marcador",
126
+ options: [
127
+ { label: "Bolinha", value: false },
128
+ { label: "Numerada", value: true }
129
+ ]
130
+ },
131
+ items: {
132
+ type: "array",
133
+ label: "Itens",
134
+ getItemSummary: (item, index) => item?.text || `Item ${(index ?? 0) + 1}`,
135
+ arrayFields: { text: { type: "text", label: "Texto" } },
136
+ defaultItemProps: { text: "Novo item" }
137
+ }
138
+ },
139
+ propsSchema: z.object({ items: z.array(z.object({ text: z.string() })), ordered: z.boolean() }),
140
+ defaultProps: {
141
+ ordered: false,
142
+ items: [{ text: "Primeiro item" }, { text: "Segundo item" }]
143
+ },
144
+ component: ({ items = [], ordered, puck }) => /* @__PURE__ */ jsx(List, { as: ordered ? "ol" : "ul", children: items.map((item, index) => (
145
+ // eslint-disable-next-line react/no-array-index-key -- o item não tem id próprio; a ordem é a identidade
146
+ /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(RichText, { as: "span", html: item?.text, editing: puck?.isEditing }) }, index)
147
+ )) })
148
+ });
149
+ var Callout = styled4.blockquote`
150
+ margin: 0;
151
+ padding: 12px 0 12px 16px;
152
+ border-left: 3px solid var(--doc-brand, #005ac3);
153
+ `;
154
+ var Author = styled4.footer`
155
+ margin-top: 6px;
156
+ font-size: 0.9em;
157
+ opacity: 0.75;
158
+ `;
159
+ var QuoteBlock = defineBlock({
160
+ key: "Quote",
161
+ label: "Destaque",
162
+ category: "Conte\xFAdo",
163
+ icon: /* @__PURE__ */ jsx(QuoteIcon, {}),
164
+ fields: {
165
+ content: { type: "textarea", label: "Texto (HTML)" },
166
+ author: { type: "text", label: "Autor (opcional)" }
167
+ },
168
+ propsSchema: z.object({ content: z.string(), author: z.string().optional() }),
169
+ defaultProps: { content: "<p>Texto em destaque.</p>", author: "" },
170
+ component: ({ content, author, puck }) => /* @__PURE__ */ jsxs(Callout, { children: [
171
+ /* @__PURE__ */ jsx(RichText, { html: content, editing: puck?.isEditing }),
172
+ author ? /* @__PURE__ */ jsx(Author, { children: author }) : null
173
+ ] })
174
+ });
175
+ var SIZE_WIDTH = { small: "33%", medium: "66%", large: "100%" };
176
+ var GAP_PX = { none: 0, small: 8, medium: 16, large: 24 };
177
+ var Placeholder = styled4.div`
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: center;
181
+ min-height: 64px;
182
+ padding: 16px;
183
+ border: 1px dashed #c3c9d2;
184
+ border-radius: 8px;
185
+ color: #9aa3af;
186
+ font-size: 13px;
187
+ text-align: center;
188
+ `;
189
+ var LinkButton = styled4.a`
190
+ display: inline-block;
191
+ padding: 8px 16px;
192
+ border-radius: 6px;
193
+ background: var(--doc-brand, #1a56db);
194
+ color: #fff;
195
+ text-decoration: none;
196
+ font-weight: 500;
197
+ `;
198
+ var PageBreakMark = styled4.div`
199
+ break-after: page;
200
+ margin: 8px 0;
201
+ border-top: 1px dashed #c3c9d2;
202
+ text-align: center;
203
+ color: #9aa3af;
204
+ font-size: 11px;
205
+ text-transform: uppercase;
206
+ letter-spacing: 0.04em;
207
+ `;
208
+ var SlotColumn = styled4.div`
209
+ flex: ${(props) => props.$basis} 1 0;
210
+ min-width: 0;
211
+ `;
212
+ var Row = styled4.div`
213
+ display: flex;
214
+ gap: ${(props) => props.$gap}px;
215
+ align-items: ${(props) => props.$align ?? "flex-start"};
216
+ `;
217
+ var renderSlot = (slot) => typeof slot === "function" ? slot() : null;
218
+ var ButtonBlock = defineBlock({
219
+ key: "Button",
220
+ label: "Bot\xE3o",
221
+ category: "Conte\xFAdo",
222
+ icon: /* @__PURE__ */ jsx(ButtonIcon, {}),
223
+ fields: {
224
+ text: { type: "text", label: "Texto do bot\xE3o", contentEditable: true },
225
+ href: { type: "text", label: "Link ao clicar" }
226
+ },
227
+ propsSchema: z.object({ text: z.string(), href: z.string() }),
228
+ defaultProps: { text: "Clique aqui", href: "#" },
229
+ component: ({ text, href }) => /* @__PURE__ */ jsx(LinkButton, { href: href || "#", target: "_blank", rel: "noopener noreferrer", children: text })
230
+ });
231
+ var Rule = styled4.hr`
232
+ border: none;
233
+ border-top: 1px ${(props) => props.$variant} currentColor;
234
+ opacity: 0.25;
235
+ margin: ${(props) => props.$spacing}px 0;
236
+ `;
237
+ var DividerBlock = defineBlock({
238
+ key: "Divider",
239
+ label: "Divisor",
240
+ category: "Conte\xFAdo",
241
+ icon: /* @__PURE__ */ jsx(DividerIcon, {}),
242
+ fields: {
243
+ variant: {
244
+ type: "select",
245
+ label: "Tra\xE7o",
246
+ options: [
247
+ { label: "Cont\xEDnuo", value: "solid" },
248
+ { label: "Tracejado", value: "dashed" },
249
+ { label: "Pontilhado", value: "dotted" }
250
+ ]
251
+ },
252
+ spacing: {
253
+ type: "select",
254
+ label: "Espa\xE7amento",
255
+ options: [
256
+ { label: "Nenhum", value: "none" },
257
+ { label: "Pequeno", value: "small" },
258
+ { label: "M\xE9dio", value: "medium" },
259
+ { label: "Grande", value: "large" }
260
+ ]
261
+ }
262
+ },
263
+ propsSchema: z.object({
264
+ variant: z.enum(["solid", "dashed", "dotted"]),
265
+ spacing: z.enum(["none", "small", "medium", "large"])
266
+ }),
267
+ defaultProps: { variant: "solid", spacing: "medium" },
268
+ component: ({ variant, spacing }) => /* @__PURE__ */ jsx(Rule, { $variant: variant ?? "solid", $spacing: GAP_PX[spacing] ?? 16 })
269
+ });
270
+ var Gap = styled4.div`
271
+ height: ${(props) => props.$height}px;
272
+ ${(props) => props.$editing ? "border: 1px dashed #dbe0e6; border-radius: 4px;" : ""}
273
+ `;
274
+ var SpacerBlock = defineBlock({
275
+ key: "Spacer",
276
+ label: "Espa\xE7o",
277
+ category: "Conte\xFAdo",
278
+ icon: /* @__PURE__ */ jsx(SpacerIcon, {}),
279
+ fields: {
280
+ height: { type: "number", label: "Altura (px)", min: 4, max: 400 }
281
+ },
282
+ propsSchema: z.object({ height: z.number().int().min(1).max(600) }),
283
+ defaultProps: { height: 24 },
284
+ component: ({ height, puck }) => /* @__PURE__ */ jsx(Gap, { $height: height ?? 24, $editing: Boolean(puck?.isEditing) })
285
+ });
286
+ var Figure = styled4.figure`
287
+ margin: 0;
288
+ `;
289
+ var Caption = styled4.figcaption`
290
+ margin-top: 6px;
291
+ font-size: 0.85em;
292
+ opacity: 0.7;
293
+ `;
294
+ var ImageBlock = defineBlock({
295
+ key: "Image",
296
+ label: "Imagem",
297
+ category: "M\xEDdia",
298
+ icon: /* @__PURE__ */ jsx(ImageIcon, {}),
299
+ fields: {
300
+ src: { type: "text", label: "Imagem (URL)" },
301
+ alt: { type: "text", label: "Texto alternativo" },
302
+ caption: { type: "text", label: "Legenda (opcional)" },
303
+ size: {
304
+ type: "select",
305
+ label: "Tamanho",
306
+ options: [
307
+ { label: "Pequeno", value: "small" },
308
+ { label: "M\xE9dio", value: "medium" },
309
+ { label: "Grande", value: "large" }
310
+ ]
311
+ },
312
+ opacity: { type: "number", label: "Opacidade (%)", min: 0, max: 100 }
313
+ },
314
+ propsSchema: z.object({
315
+ src: z.string(),
316
+ alt: z.string(),
317
+ caption: z.string().optional(),
318
+ size: z.enum(["small", "medium", "large"]),
319
+ opacity: z.number().min(0).max(100)
320
+ }),
321
+ defaultProps: { src: "", alt: "", caption: "", size: "medium", opacity: 100 },
322
+ component: ({ src, alt, caption, size, opacity, puck }) => {
323
+ if (!src) return puck?.isEditing ? /* @__PURE__ */ jsx(Placeholder, { children: "Informe a URL da imagem" }) : null;
324
+ return /* @__PURE__ */ jsxs(Figure, { children: [
325
+ /* @__PURE__ */ jsx(
326
+ "img",
327
+ {
328
+ src,
329
+ alt: alt ?? "",
330
+ style: { width: SIZE_WIDTH[size] ?? "66%", maxWidth: "100%", opacity: (opacity ?? 100) / 100 }
331
+ }
332
+ ),
333
+ caption ? /* @__PURE__ */ jsx(Caption, { children: caption }) : null
334
+ ] });
335
+ }
336
+ });
337
+ var RATIO = {
338
+ square: "1 / 1",
339
+ landscape: "4 / 3",
340
+ portrait: "3 / 4",
341
+ auto: void 0
342
+ };
343
+ var Grid = styled4.div`
344
+ display: grid;
345
+ grid-template-columns: repeat(${(props) => props.$columns}, 1fr);
346
+ gap: ${(props) => props.$gap}px;
347
+ `;
348
+ var Cell = styled4.img`
349
+ width: 100%;
350
+ height: ${(props) => props.$ratio ? "100%" : "auto"};
351
+ aspect-ratio: ${(props) => props.$ratio ?? "auto"};
352
+ object-fit: ${(props) => props.$ratio ? "cover" : "contain"};
353
+ display: block;
354
+ `;
355
+ var ImageGridBlock = defineBlock({
356
+ key: "ImageGrid",
357
+ label: "Grade de imagens",
358
+ category: "M\xEDdia",
359
+ icon: /* @__PURE__ */ jsx(ImageGridIcon, {}),
360
+ fields: {
361
+ images: {
362
+ type: "array",
363
+ label: "Imagens",
364
+ getItemSummary: (item, index) => item?.alt || item?.src || `Imagem ${(index ?? 0) + 1}`,
365
+ arrayFields: {
366
+ src: { type: "text", label: "URL" },
367
+ alt: { type: "text", label: "Texto alternativo" }
368
+ },
369
+ defaultItemProps: { src: "", alt: "" }
370
+ },
371
+ columns: { type: "number", label: "Colunas", min: 1, max: 4 },
372
+ gap: {
373
+ type: "select",
374
+ label: "Espa\xE7amento",
375
+ options: [
376
+ { label: "Nenhum", value: "none" },
377
+ { label: "Pequeno", value: "small" },
378
+ { label: "M\xE9dio", value: "medium" },
379
+ { label: "Grande", value: "large" }
380
+ ]
381
+ },
382
+ ratio: {
383
+ type: "select",
384
+ label: "Propor\xE7\xE3o",
385
+ options: [
386
+ { label: "Quadrada", value: "square" },
387
+ { label: "Paisagem", value: "landscape" },
388
+ { label: "Retrato", value: "portrait" },
389
+ { label: "Original", value: "auto" }
390
+ ]
391
+ }
392
+ },
393
+ propsSchema: z.object({
394
+ images: z.array(z.object({ src: z.string(), alt: z.string().optional() })),
395
+ columns: z.number().int().min(1).max(4),
396
+ gap: z.enum(["none", "small", "medium", "large"]),
397
+ ratio: z.enum(["square", "landscape", "portrait", "auto"])
398
+ }),
399
+ defaultProps: { images: [], columns: 2, gap: "small", ratio: "square" },
400
+ component: ({ images = [], columns, gap, ratio, puck }) => {
401
+ const filled = images.filter((image) => image?.src);
402
+ if (!filled.length) return puck?.isEditing ? /* @__PURE__ */ jsx(Placeholder, { children: "Adicione imagens \xE0 grade" }) : null;
403
+ return /* @__PURE__ */ jsx(Grid, { $columns: columns ?? 2, $gap: GAP_PX[gap] ?? 8, children: filled.map((image, index) => (
404
+ // eslint-disable-next-line react/no-array-index-key -- a imagem não tem id próprio; a ordem é a identidade
405
+ /* @__PURE__ */ jsx(Cell, { src: image.src, alt: image.alt ?? "", $ratio: RATIO[ratio ?? "square"] }, index)
406
+ )) });
407
+ }
408
+ });
409
+ var slotSchema = z.array(z.unknown()).optional();
410
+ var TwoColumnsBlock = defineBlock({
411
+ key: "TwoColumns",
412
+ label: "Duas colunas",
413
+ category: "Layout",
414
+ icon: /* @__PURE__ */ jsx(TwoColumnsIcon, {}),
415
+ fields: {
416
+ left: { type: "slot", label: "Coluna esquerda" },
417
+ right: { type: "slot", label: "Coluna direita" },
418
+ ratio: { type: "number", label: "Largura da esquerda (%)", min: 20, max: 80 },
419
+ gap: {
420
+ type: "select",
421
+ label: "Espa\xE7amento",
422
+ options: [
423
+ { label: "Nenhum", value: "none" },
424
+ { label: "Pequeno", value: "small" },
425
+ { label: "M\xE9dio", value: "medium" },
426
+ { label: "Grande", value: "large" }
427
+ ]
428
+ },
429
+ align: {
430
+ type: "radio",
431
+ label: "Alinhamento vertical",
432
+ options: [
433
+ { label: "Topo", value: "start" },
434
+ { label: "Centro", value: "center" }
435
+ ]
436
+ }
437
+ },
438
+ propsSchema: z.object({
439
+ left: slotSchema,
440
+ right: slotSchema,
441
+ ratio: z.number().min(0).max(100),
442
+ gap: z.enum(["none", "small", "medium", "large"]),
443
+ align: z.enum(["start", "center"])
444
+ }),
445
+ defaultProps: { ratio: 50, gap: "medium", align: "start" },
446
+ component: ({ left, right, ratio = 50, gap, align }) => /* @__PURE__ */ jsxs(Row, { $gap: GAP_PX[gap] ?? 16, $align: align === "center" ? "center" : "flex-start", children: [
447
+ /* @__PURE__ */ jsx(SlotColumn, { $basis: ratio, children: renderSlot(left) }),
448
+ /* @__PURE__ */ jsx(SlotColumn, { $basis: 100 - ratio, children: renderSlot(right) })
449
+ ] })
450
+ });
451
+ var slotSchema2 = z.array(z.unknown()).optional();
452
+ var ImageTextBlock = defineBlock({
453
+ key: "ImageText",
454
+ label: "Imagem e texto",
455
+ category: "Layout",
456
+ icon: /* @__PURE__ */ jsx(ImageTextIcon, {}),
457
+ fields: {
458
+ image: { type: "slot", label: "Imagem", allow: ["Image", "ImageGrid"] },
459
+ text: { type: "slot", label: "Texto", allow: ["Text", "Heading", "List", "Quote", "Button"] },
460
+ ratio: { type: "number", label: "Largura da imagem (%)", min: 20, max: 80 },
461
+ imageRight: {
462
+ type: "radio",
463
+ label: "Posi\xE7\xE3o da imagem",
464
+ options: [
465
+ { label: "Esquerda", value: false },
466
+ { label: "Direita", value: true }
467
+ ]
468
+ },
469
+ gap: {
470
+ type: "select",
471
+ label: "Espa\xE7amento",
472
+ options: [
473
+ { label: "Nenhum", value: "none" },
474
+ { label: "Pequeno", value: "small" },
475
+ { label: "M\xE9dio", value: "medium" },
476
+ { label: "Grande", value: "large" }
477
+ ]
478
+ }
479
+ },
480
+ propsSchema: z.object({
481
+ image: slotSchema2,
482
+ text: slotSchema2,
483
+ ratio: z.number().min(0).max(100),
484
+ imageRight: z.boolean(),
485
+ gap: z.enum(["none", "small", "medium", "large"])
486
+ }),
487
+ defaultProps: {
488
+ ratio: 40,
489
+ imageRight: false,
490
+ gap: "medium",
491
+ image: [{ type: "Image", props: {} }],
492
+ text: [{ type: "Text", props: {} }]
493
+ },
494
+ component: ({ image, text, ratio = 40, imageRight, gap }) => {
495
+ const imageColumn = /* @__PURE__ */ jsx(SlotColumn, { $basis: ratio, children: renderSlot(image) });
496
+ const textColumn = /* @__PURE__ */ jsx(SlotColumn, { $basis: 100 - ratio, children: renderSlot(text) });
497
+ return /* @__PURE__ */ jsxs(Row, { $gap: GAP_PX[gap] ?? 16, children: [
498
+ imageRight ? textColumn : imageColumn,
499
+ imageRight ? imageColumn : textColumn
500
+ ] });
501
+ }
502
+ });
503
+ var SOCIAL = "Social e contato";
504
+ var ACTIONS = "A\xE7\xF5es";
505
+ var NAV = "Navega\xE7\xE3o";
506
+ var TIME_PLACE = "Tempo e local";
507
+ var GENERAL = "Gerais";
508
+ var CONTENT_ICON_CATALOG = {
509
+ whatsapp: {
510
+ label: "WhatsApp",
511
+ group: SOCIAL,
512
+ variant: "fill",
513
+ viewBox: "0 0 448 512",
514
+ inner: '<path d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"/>'
515
+ },
516
+ instagram: {
517
+ label: "Instagram",
518
+ group: SOCIAL,
519
+ variant: "fill",
520
+ viewBox: "0 0 448 512",
521
+ inner: '<path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"/>'
522
+ },
523
+ facebook: {
524
+ label: "Facebook",
525
+ group: SOCIAL,
526
+ variant: "fill",
527
+ viewBox: "0 0 320 512",
528
+ inner: '<path d="M80 299.3V512H196V299.3h86.5l18-97.8H196V166.9c0-51.7 20.3-71.5 72.7-71.5c16.3 0 29.4 .4 37 1.2V7.9C291.4 4 256.4 0 236.2 0C129.3 0 80 50.5 80 159.4v42.1H14v97.8H80z"/>'
529
+ },
530
+ email: {
531
+ label: "E-mail",
532
+ group: SOCIAL,
533
+ viewBox: "0 0 24 24",
534
+ inner: '<path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7" /><rect x="2" y="4" width="20" height="16" rx="2" />'
535
+ },
536
+ telefone: {
537
+ label: "Telefone",
538
+ group: SOCIAL,
539
+ viewBox: "0 0 24 24",
540
+ inner: '<path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384" />'
541
+ },
542
+ link: {
543
+ label: "Link",
544
+ group: SOCIAL,
545
+ viewBox: "0 0 24 24",
546
+ inner: '<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />'
547
+ },
548
+ download: {
549
+ label: "Download",
550
+ group: ACTIONS,
551
+ viewBox: "0 0 24 24",
552
+ inner: '<path d="M12 15V3" /><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" /><path d="m7 10 5 5 5-5" />'
553
+ },
554
+ check: {
555
+ label: "Check",
556
+ group: ACTIONS,
557
+ viewBox: "0 0 24 24",
558
+ inner: '<path d="M20 6 9 17l-5-5" />'
559
+ },
560
+ enviar: {
561
+ label: "Enviar",
562
+ group: ACTIONS,
563
+ viewBox: "0 0 24 24",
564
+ inner: '<path d="M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z" /><path d="m21.854 2.147-10.94 10.939" />'
565
+ },
566
+ cifrao: {
567
+ label: "Cifr\xE3o",
568
+ group: ACTIONS,
569
+ viewBox: "0 0 24 24",
570
+ inner: '<line x1="12" x2="12" y1="2" y2="22" /><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6" />'
571
+ },
572
+ "seta-esquerda": {
573
+ label: "Seta esquerda",
574
+ group: NAV,
575
+ viewBox: "0 0 24 24",
576
+ inner: '<path d="m12 19-7-7 7-7" /><path d="M19 12H5" />'
577
+ },
578
+ "seta-direita": {
579
+ label: "Seta direita",
580
+ group: NAV,
581
+ viewBox: "0 0 24 24",
582
+ inner: '<path d="M5 12h14" /><path d="m12 5 7 7-7 7" />'
583
+ },
584
+ "link-externo": {
585
+ label: "Link externo",
586
+ group: NAV,
587
+ viewBox: "0 0 24 24",
588
+ inner: '<path d="M15 3h6v6" /><path d="M10 14 21 3" /><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />'
589
+ },
590
+ calendario: {
591
+ label: "Calend\xE1rio",
592
+ group: TIME_PLACE,
593
+ viewBox: "0 0 24 24",
594
+ inner: '<path d="M8 2v3" /><path d="M16 2v3" /><rect x="3" y="3" width="18" height="18" rx="2" /><path d="M3 9h18" />'
595
+ },
596
+ relogio: {
597
+ label: "Rel\xF3gio",
598
+ group: TIME_PLACE,
599
+ viewBox: "0 0 24 24",
600
+ inner: '<circle cx="12" cy="12" r="10" /><path d="M12 6v6l4 2" />'
601
+ },
602
+ localizacao: {
603
+ label: "Localiza\xE7\xE3o",
604
+ group: TIME_PLACE,
605
+ viewBox: "0 0 24 24",
606
+ inner: '<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" /><circle cx="12" cy="10" r="3" />'
607
+ },
608
+ predio: {
609
+ label: "Pr\xE9dio",
610
+ group: TIME_PLACE,
611
+ viewBox: "0 0 24 24",
612
+ inner: '<path d="M12 10h.01" /><path d="M12 14h.01" /><path d="M12 6h.01" /><path d="M16 10h.01" /><path d="M16 14h.01" /><path d="M16 6h.01" /><path d="M8 10h.01" /><path d="M8 14h.01" /><path d="M8 6h.01" /><path d="M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3" /><rect x="4" y="2" width="16" height="20" rx="2" />'
613
+ },
614
+ estrela: {
615
+ label: "Estrela",
616
+ group: GENERAL,
617
+ viewBox: "0 0 24 24",
618
+ inner: '<path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z" />'
619
+ },
620
+ coracao: {
621
+ label: "Cora\xE7\xE3o",
622
+ group: GENERAL,
623
+ viewBox: "0 0 24 24",
624
+ inner: '<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5" />'
625
+ },
626
+ globo: {
627
+ label: "Globo",
628
+ group: GENERAL,
629
+ viewBox: "0 0 24 24",
630
+ inner: '<circle cx="12" cy="12" r="10" /><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" /><path d="M2 12h20" />'
631
+ },
632
+ usuario: {
633
+ label: "Usu\xE1rio",
634
+ group: GENERAL,
635
+ viewBox: "0 0 24 24",
636
+ inner: '<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" /><circle cx="12" cy="7" r="4" />'
637
+ },
638
+ arquivo: {
639
+ label: "Arquivo",
640
+ group: GENERAL,
641
+ viewBox: "0 0 24 24",
642
+ inner: '<path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z" /><path d="M14 2v5a1 1 0 0 0 1 1h5" />'
643
+ },
644
+ imagem: {
645
+ label: "Imagem",
646
+ group: GENERAL,
647
+ viewBox: "0 0 24 24",
648
+ inner: '<rect width="18" height="18" x="3" y="3" rx="2" ry="2" /><circle cx="9" cy="9" r="2" /><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" />'
649
+ },
650
+ camera: {
651
+ label: "C\xE2mera",
652
+ group: GENERAL,
653
+ viewBox: "0 0 24 24",
654
+ inner: '<path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z" /><circle cx="12" cy="13" r="3" />'
655
+ }
656
+ };
657
+ var CONTENT_ICON_NAMES = Object.keys(CONTENT_ICON_CATALOG);
658
+ function ContentIcon({
659
+ name,
660
+ size = "1em",
661
+ color = "currentColor",
662
+ strokeWidth = 2,
663
+ style,
664
+ className
665
+ }) {
666
+ const def = name ? CONTENT_ICON_CATALOG[name] : void 0;
667
+ if (!def) return null;
668
+ const stroked = def.variant !== "fill";
669
+ return /* @__PURE__ */ jsx(
670
+ "svg",
671
+ {
672
+ width: size,
673
+ height: size,
674
+ viewBox: def.viewBox,
675
+ fill: stroked ? "none" : color,
676
+ ...stroked ? { stroke: color, strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" } : {},
677
+ "aria-hidden": "true",
678
+ focusable: "false",
679
+ className,
680
+ style: { display: "inline-block", verticalAlign: "-0.125em", flexShrink: 0, ...style },
681
+ dangerouslySetInnerHTML: { __html: def.inner }
682
+ }
683
+ );
684
+ }
685
+ var IconSlot = styled4.span`
686
+ flex: none;
687
+ color: var(--doc-brand, #005ac3);
688
+ line-height: 1;
689
+ `;
690
+ var Body = styled4.div`
691
+ flex: 1;
692
+ min-width: 0;
693
+ `;
694
+ var IconTextBlock = defineBlock({
695
+ key: "IconText",
696
+ label: "\xCDcone e texto",
697
+ category: "Layout",
698
+ icon: /* @__PURE__ */ jsx(IconTextIcon, {}),
699
+ fields: {
700
+ icon: {
701
+ type: "select",
702
+ label: "\xCDcone",
703
+ options: CONTENT_ICON_NAMES.map((name) => ({ label: CONTENT_ICON_CATALOG[name].label, value: name }))
704
+ },
705
+ content: { type: "textarea", label: "Texto (HTML)" },
706
+ iconSize: { type: "number", label: "Tamanho do \xEDcone (px)", min: 12, max: 96 },
707
+ iconRight: {
708
+ type: "radio",
709
+ label: "Posi\xE7\xE3o do \xEDcone",
710
+ options: [
711
+ { label: "Esquerda", value: false },
712
+ { label: "Direita", value: true }
713
+ ]
714
+ },
715
+ gap: {
716
+ type: "select",
717
+ label: "Espa\xE7amento",
718
+ options: [
719
+ { label: "Nenhum", value: "none" },
720
+ { label: "Pequeno", value: "small" },
721
+ { label: "M\xE9dio", value: "medium" },
722
+ { label: "Grande", value: "large" }
723
+ ]
724
+ }
725
+ },
726
+ propsSchema: z.object({
727
+ icon: z.string(),
728
+ content: z.string(),
729
+ iconSize: z.number().int().min(8).max(128),
730
+ iconRight: z.boolean(),
731
+ gap: z.enum(["none", "small", "medium", "large"])
732
+ }),
733
+ defaultProps: { icon: "check", content: "<p>Descreva o item.</p>", iconSize: 24, iconRight: false, gap: "small" },
734
+ component: ({ icon, content, iconSize, iconRight, gap, puck }) => {
735
+ const glyph = /* @__PURE__ */ jsx(IconSlot, { children: /* @__PURE__ */ jsx(ContentIcon, { name: icon, size: iconSize ?? 24 }) });
736
+ return /* @__PURE__ */ jsxs(Row, { $gap: GAP_PX[gap] ?? 8, $align: "flex-start", children: [
737
+ iconRight ? null : glyph,
738
+ /* @__PURE__ */ jsx(Body, { children: /* @__PURE__ */ jsx(RichText, { html: content, editing: puck?.isEditing }) }),
739
+ iconRight ? glyph : null
740
+ ] });
741
+ }
742
+ });
743
+ var Grid2 = styled4.table`
744
+ width: 100%;
745
+ border-collapse: collapse;
746
+ font-size: 0.95em;
747
+
748
+ th,
749
+ td {
750
+ padding: 8px 10px;
751
+ border-bottom: 1px solid rgba(127, 137, 152, 0.28);
752
+ text-align: left;
753
+ vertical-align: top;
754
+ }
755
+
756
+ th {
757
+ font-weight: 600;
758
+ background: color-mix(in srgb, var(--doc-brand, #005ac3) 8%, transparent);
759
+ }
760
+ `;
761
+ var TableBlock = defineBlock({
762
+ key: "Table",
763
+ label: "Tabela",
764
+ category: "Dados",
765
+ icon: /* @__PURE__ */ jsx(TableIcon, {}),
766
+ fields: {
767
+ headerRow: {
768
+ type: "radio",
769
+ label: "Primeira linha \xE9 cabe\xE7alho",
770
+ options: [
771
+ { label: "Sim", value: true },
772
+ { label: "N\xE3o", value: false }
773
+ ]
774
+ },
775
+ rows: {
776
+ type: "array",
777
+ label: "Linhas",
778
+ getItemSummary: (row, index) => row?.cells?.map((cell) => cell?.value).filter(Boolean).join(" \xB7 ") || `Linha ${(index ?? 0) + 1}`,
779
+ arrayFields: {
780
+ cells: {
781
+ type: "array",
782
+ label: "C\xE9lulas",
783
+ getItemSummary: (cell, index) => cell?.value || `Coluna ${(index ?? 0) + 1}`,
784
+ arrayFields: { value: { type: "text", label: "Conte\xFAdo" } },
785
+ defaultItemProps: { value: "" }
786
+ }
787
+ },
788
+ defaultItemProps: { cells: [{ value: "" }, { value: "" }] }
789
+ }
790
+ },
791
+ propsSchema: z.object({
792
+ rows: z.array(z.object({ cells: z.array(z.object({ value: z.string() })) })),
793
+ headerRow: z.boolean()
794
+ }),
795
+ defaultProps: {
796
+ headerRow: true,
797
+ rows: [{ cells: [{ value: "Item" }, { value: "Valor" }] }, { cells: [{ value: "Exemplo" }, { value: "R$ 0,00" }] }]
798
+ },
799
+ component: ({ rows = [], headerRow, puck }) => {
800
+ if (!rows.length) return puck?.isEditing ? /* @__PURE__ */ jsx(Placeholder, { children: "Adicione linhas \xE0 tabela" }) : null;
801
+ const [first, ...rest] = rows;
802
+ const body = headerRow ? rest : rows;
803
+ return /* @__PURE__ */ jsxs(Grid2, { children: [
804
+ headerRow ? /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { children: (first?.cells ?? []).map((cell, index) => (
805
+ // eslint-disable-next-line react/no-array-index-key -- a célula não tem id; a posição é a identidade
806
+ /* @__PURE__ */ jsx("th", { children: /* @__PURE__ */ jsx(RichText, { as: "span", html: cell?.value, editing: puck?.isEditing }) }, index)
807
+ )) }) }) : null,
808
+ /* @__PURE__ */ jsx("tbody", { children: body.map((row, rowIndex) => (
809
+ // eslint-disable-next-line react/no-array-index-key -- idem
810
+ /* @__PURE__ */ jsx("tr", { children: (row?.cells ?? []).map((cell, cellIndex) => (
811
+ // eslint-disable-next-line react/no-array-index-key -- idem
812
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(RichText, { as: "span", html: cell?.value, editing: puck?.isEditing }) }, cellIndex)
813
+ )) }, rowIndex)
814
+ )) })
815
+ ] });
816
+ }
817
+ });
818
+ var PageBreakBlock = defineBlock({
819
+ key: "PageBreak",
820
+ label: "Quebra de p\xE1gina",
821
+ category: "Estrutura",
822
+ icon: /* @__PURE__ */ jsx(PageBreakIcon, {}),
823
+ fields: {},
824
+ propsSchema: z.object({}),
825
+ component: ({ puck }) => puck?.isEditing ? /* @__PURE__ */ jsx(PageBreakMark, { children: "Quebra de p\xE1gina" }) : null
826
+ });
827
+
828
+ // src/blocks/defaults.tsx
829
+ var defaultBlocks = [
830
+ TextBlock,
831
+ HeadingBlock,
832
+ ListBlock,
833
+ QuoteBlock,
834
+ ButtonBlock,
835
+ DividerBlock,
836
+ SpacerBlock,
837
+ ImageBlock,
838
+ ImageGridBlock,
839
+ TwoColumnsBlock,
840
+ ImageTextBlock,
841
+ IconTextBlock,
842
+ TableBlock,
843
+ PageBreakBlock
844
+ ];
845
+ var blocksByKey = Object.fromEntries(
846
+ defaultBlocks.map((block) => [block.key, block])
847
+ );
848
+
849
+ // src/blocks/overrideBlock.ts
850
+ function overrideBlock(key, patch = {}) {
851
+ const base = blocksByKey[key];
852
+ if (!base) {
853
+ devWarn(
854
+ `override-unknown-block:${key}`,
855
+ `overrideBlock('${key}') n\xE3o achou bloco default com essa key \u2014 nada foi herdado. Bloco que \xE9 s\xF3 do host se declara com defineBlock.`
856
+ );
857
+ }
858
+ return { ...base, key, ...patch };
859
+ }
860
+
861
+ export { ButtonBlock, CONTENT_ICON_CATALOG, CONTENT_ICON_NAMES, ContentIcon, DividerBlock, HeadingBlock, IconTextBlock, ImageBlock, ImageGridBlock, ImageTextBlock, ListBlock, PageBreakBlock, QuoteBlock, RichText, SpacerBlock, TableBlock, TextBlock, TwoColumnsBlock, blocksByKey, defaultBlocks, defineBlock, overrideBlock };
862
+ //# sourceMappingURL=chunk-IUDN2CGP.js.map
863
+ //# sourceMappingURL=chunk-IUDN2CGP.js.map