vobi_document 1.1.4 → 1.1.5
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.
- package/dist/blocks.cjs +25 -25
- package/dist/blocks.d.cts +1 -1
- package/dist/blocks.d.ts +1 -1
- package/dist/blocks.js +1 -1
- package/dist/{chunk-3KIK2XTA.cjs → chunk-3F5SJWGQ.cjs} +14 -14
- package/dist/{chunk-3KIK2XTA.cjs.map → chunk-3F5SJWGQ.cjs.map} +1 -1
- package/dist/{chunk-2EVBMRJR.js → chunk-4BAC7SQD.js} +3 -3
- package/dist/{chunk-2EVBMRJR.js.map → chunk-4BAC7SQD.js.map} +1 -1
- package/dist/{chunk-5H27FECZ.cjs → chunk-GDLKTYDB.cjs} +3 -3
- package/dist/{chunk-5H27FECZ.cjs.map → chunk-GDLKTYDB.cjs.map} +1 -1
- package/dist/{chunk-DQ4AL6SJ.js → chunk-K6ZKB5EA.js} +3 -3
- package/dist/{chunk-DQ4AL6SJ.js.map → chunk-K6ZKB5EA.js.map} +1 -1
- package/dist/{chunk-D3JG6YEL.cjs → chunk-LQAZBMG4.cjs} +8 -8
- package/dist/{chunk-D3JG6YEL.cjs.map → chunk-LQAZBMG4.cjs.map} +1 -1
- package/dist/{chunk-PBBPAMLP.js → chunk-MFBZNNYC.js} +92 -92
- package/dist/chunk-MFBZNNYC.js.map +1 -0
- package/dist/{chunk-P2FDTTXF.js → chunk-NPNQGHGK.js} +9 -9
- package/dist/{chunk-P2FDTTXF.js.map → chunk-NPNQGHGK.js.map} +1 -1
- package/dist/{chunk-EX252M4Y.js → chunk-QQHKBSAG.js} +3 -3
- package/dist/{chunk-EX252M4Y.js.map → chunk-QQHKBSAG.js.map} +1 -1
- package/dist/{chunk-CPU4SK5F.cjs → chunk-RKYQRL6M.cjs} +104 -104
- package/dist/chunk-RKYQRL6M.cjs.map +1 -0
- package/dist/{chunk-RP4T57MA.cjs → chunk-USMVHVHF.cjs} +9 -9
- package/dist/{chunk-RP4T57MA.cjs.map → chunk-USMVHVHF.cjs.map} +1 -1
- package/dist/editor.cjs +14 -14
- package/dist/editor.d.cts +1 -1
- package/dist/editor.d.ts +1 -1
- package/dist/editor.js +2 -2
- package/dist/index.cjs +83 -83
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -6
- package/dist/print.cjs +17 -17
- package/dist/print.d.cts +1 -1
- package/dist/print.d.ts +1 -1
- package/dist/print.js +3 -3
- package/dist/render.cjs +18 -18
- package/dist/render.d.cts +1 -1
- package/dist/render.d.ts +1 -1
- package/dist/render.js +3 -3
- package/dist/{theme-BuEFpQeZ.d.cts → theme-DWRLG-2_.d.cts} +1 -1
- package/dist/{theme-BuEFpQeZ.d.ts → theme-DWRLG-2_.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-CPU4SK5F.cjs.map +0 -1
- package/dist/chunk-PBBPAMLP.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_DOCUMENT_COLORS, buildConfig, useDocumentFont, DocumentThemeProvider, fontStack } from './chunk-
|
|
1
|
+
import { DEFAULT_DOCUMENT_COLORS, buildConfig, useDocumentFont, DocumentThemeProvider, fontStack } from './chunk-K6ZKB5EA.js';
|
|
2
2
|
import { resolveDocumentVariables } from './chunk-CZB7F2LA.js';
|
|
3
3
|
import { extractBindingKeys, CatalogProvider, ResolvedProvider } from './chunk-SOIYSSU3.js';
|
|
4
4
|
import { createContext, useContext, useMemo, useState, useEffect } from 'react';
|
|
@@ -157,95 +157,17 @@ styled6.div`
|
|
|
157
157
|
letter-spacing: 0.04em;
|
|
158
158
|
opacity: 0.8;
|
|
159
159
|
`;
|
|
160
|
-
var HAIRLINE = "#d9d9d9";
|
|
161
|
-
var Chrome = styled6.div`
|
|
162
|
-
position: relative;
|
|
163
|
-
display: flex;
|
|
164
|
-
flex-direction: column;
|
|
165
|
-
justify-content: space-between;
|
|
166
|
-
height: 100%;
|
|
167
|
-
padding: 0 7cqw 8cqw;
|
|
168
|
-
`;
|
|
169
|
-
var TopRow = styled6.div`
|
|
170
|
-
display: flex;
|
|
171
|
-
justify-content: space-between;
|
|
172
|
-
align-items: flex-start;
|
|
173
|
-
gap: 4cqw;
|
|
174
|
-
`;
|
|
175
|
-
var Logo = styled6(CoverLogoImg)`
|
|
176
|
-
max-width: 17cqw;
|
|
177
|
-
max-height: 17cqw;
|
|
178
|
-
`;
|
|
179
|
-
var Company = styled6(CoverField)`
|
|
180
|
-
display: block;
|
|
181
|
-
margin-top: 5cqw;
|
|
182
|
-
max-width: 45cqw;
|
|
183
|
-
font-size: 2.94cqw;
|
|
184
|
-
font-weight: 800;
|
|
185
|
-
line-height: 1.15;
|
|
186
|
-
letter-spacing: 0.3cqw;
|
|
187
|
-
text-align: right;
|
|
188
|
-
text-transform: uppercase;
|
|
189
|
-
`;
|
|
190
|
-
var Head = styled6.div`
|
|
191
|
-
display: flex;
|
|
192
|
-
flex-direction: column;
|
|
193
|
-
|
|
194
|
-
&::before,
|
|
195
|
-
&::after {
|
|
196
|
-
content: '';
|
|
197
|
-
width: 19cqw;
|
|
198
|
-
height: 0.9cqw;
|
|
199
|
-
background: ${HAIRLINE};
|
|
200
|
-
}
|
|
201
|
-
&::before {
|
|
202
|
-
margin-bottom: 6cqw;
|
|
203
|
-
}
|
|
204
|
-
&::after {
|
|
205
|
-
margin-top: 6cqw;
|
|
206
|
-
}
|
|
207
|
-
`;
|
|
208
|
-
var Title = styled6(CoverField)`
|
|
209
|
-
display: block;
|
|
210
|
-
font-size: 8.82cqw;
|
|
211
|
-
font-weight: 800;
|
|
212
|
-
line-height: 1.15;
|
|
213
|
-
letter-spacing: 0.88cqw;
|
|
214
|
-
text-transform: uppercase;
|
|
215
|
-
`;
|
|
216
|
-
var Subtitle = styled6(CoverField)`
|
|
217
|
-
display: block;
|
|
218
|
-
margin-top: 3cqw;
|
|
219
|
-
font-size: 3.53cqw;
|
|
220
|
-
font-weight: 400;
|
|
221
|
-
line-height: 1.3;
|
|
222
|
-
`;
|
|
223
|
-
function Model1({ fields, theme, textColor, bgColor }) {
|
|
224
|
-
return /* @__PURE__ */ jsxs(CoverFrame, { $font: fontStack(theme?.documentFont), $bg: fields.imageUrl ? void 0 : bgColor, $color: textColor, children: [
|
|
225
|
-
fields.imageUrl ? /* @__PURE__ */ jsx(FullBleedImage, { $overlay: bgColor, $overlayOpacity: 0.85, children: /* @__PURE__ */ jsx(CoverImage, { src: fields.imageUrl }) }) : null,
|
|
226
|
-
/* @__PURE__ */ jsxs(Chrome, { children: [
|
|
227
|
-
/* @__PURE__ */ jsxs(TopRow, { children: [
|
|
228
|
-
theme?.logo?.url ? /* @__PURE__ */ jsx(Logo, { src: theme.logo.url, alt: "" }) : /* @__PURE__ */ jsx("span", {}),
|
|
229
|
-
/* @__PURE__ */ jsx(Company, { name: "presentedBy", value: fields.presentedBy, placeholder: "Nome da empresa" })
|
|
230
|
-
] }),
|
|
231
|
-
/* @__PURE__ */ jsxs(Head, { children: [
|
|
232
|
-
/* @__PURE__ */ jsx(Title, { name: "title", value: fields.title, placeholder: "Digite o t\xEDtulo..." }),
|
|
233
|
-
/* @__PURE__ */ jsx(Subtitle, { name: "subtitle", value: fields.subtitle, placeholder: "Digite o subt\xEDtulo..." })
|
|
234
|
-
] })
|
|
235
|
-
] })
|
|
236
|
-
] });
|
|
237
|
-
}
|
|
238
160
|
var BAND_BG = "#e8ecf1";
|
|
239
|
-
var
|
|
161
|
+
var HAIRLINE = "#d5dae1";
|
|
240
162
|
var Hairline = styled6.div`
|
|
241
163
|
position: absolute;
|
|
242
164
|
left: 4.7%;
|
|
243
165
|
top: 3%;
|
|
244
166
|
height: 94%;
|
|
245
167
|
width: 1px;
|
|
246
|
-
background: ${
|
|
168
|
+
background: ${HAIRLINE};
|
|
247
169
|
`;
|
|
248
|
-
var
|
|
170
|
+
var Logo = styled6(CoverLogoImg)`
|
|
249
171
|
position: absolute;
|
|
250
172
|
left: 10.9%;
|
|
251
173
|
top: 6%;
|
|
@@ -260,7 +182,7 @@ var AccentBar = styled6.div`
|
|
|
260
182
|
height: 28.7%;
|
|
261
183
|
background: ${(p) => p.$accent};
|
|
262
184
|
`;
|
|
263
|
-
var
|
|
185
|
+
var Head = styled6.div`
|
|
264
186
|
position: absolute;
|
|
265
187
|
left: 10.9%;
|
|
266
188
|
right: 6%;
|
|
@@ -268,7 +190,7 @@ var Head2 = styled6.div`
|
|
|
268
190
|
display: flex;
|
|
269
191
|
flex-direction: column;
|
|
270
192
|
`;
|
|
271
|
-
var
|
|
193
|
+
var Title = styled6(CoverField)`
|
|
272
194
|
display: block;
|
|
273
195
|
font-weight: 800;
|
|
274
196
|
font-size: 12.6cqw;
|
|
@@ -309,18 +231,18 @@ var Value = styled6(CoverField)`
|
|
|
309
231
|
line-height: 1.3;
|
|
310
232
|
text-transform: uppercase;
|
|
311
233
|
`;
|
|
312
|
-
function
|
|
234
|
+
function Model1({ fields, theme, accent, textColor, bgColor }) {
|
|
313
235
|
const { editable } = useContext(CoverEditContext);
|
|
314
236
|
const showHead = editable || Boolean(fields.title || fields.date);
|
|
315
237
|
const showPrepared = editable || Boolean(fields.preparedFor);
|
|
316
238
|
const showPresented = editable || Boolean(fields.presentedBy);
|
|
317
239
|
const hasBand = showPrepared || showPresented;
|
|
318
240
|
return /* @__PURE__ */ jsxs(CoverFrame, { $font: fontStack(theme?.documentFont), $bg: bgColor, $color: textColor, children: [
|
|
319
|
-
theme?.logo?.url ? /* @__PURE__ */ jsx(
|
|
241
|
+
theme?.logo?.url ? /* @__PURE__ */ jsx(Logo, { src: theme.logo.url, alt: "" }) : null,
|
|
320
242
|
showHead ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
321
243
|
/* @__PURE__ */ jsx(AccentBar, { $accent: accent }),
|
|
322
|
-
/* @__PURE__ */ jsxs(
|
|
323
|
-
/* @__PURE__ */ jsx(
|
|
244
|
+
/* @__PURE__ */ jsxs(Head, { "data-cover-head": true, children: [
|
|
245
|
+
/* @__PURE__ */ jsx(Title, { name: "title", value: fields.title, placeholder: "Digite o t\xEDtulo..." }),
|
|
324
246
|
/* @__PURE__ */ jsx(DateLine, { name: "date", value: fields.date, placeholder: "M\xEAs e ano" })
|
|
325
247
|
] })
|
|
326
248
|
] }) : null,
|
|
@@ -337,6 +259,84 @@ function Model2({ fields, theme, accent, textColor, bgColor }) {
|
|
|
337
259
|
/* @__PURE__ */ jsx(Hairline, {})
|
|
338
260
|
] });
|
|
339
261
|
}
|
|
262
|
+
var HAIRLINE2 = "#d9d9d9";
|
|
263
|
+
var Chrome = styled6.div`
|
|
264
|
+
position: relative;
|
|
265
|
+
display: flex;
|
|
266
|
+
flex-direction: column;
|
|
267
|
+
justify-content: space-between;
|
|
268
|
+
height: 100%;
|
|
269
|
+
padding: 0 7cqw 8cqw;
|
|
270
|
+
`;
|
|
271
|
+
var TopRow = styled6.div`
|
|
272
|
+
display: flex;
|
|
273
|
+
justify-content: space-between;
|
|
274
|
+
align-items: flex-start;
|
|
275
|
+
gap: 4cqw;
|
|
276
|
+
`;
|
|
277
|
+
var Logo2 = styled6(CoverLogoImg)`
|
|
278
|
+
max-width: 17cqw;
|
|
279
|
+
max-height: 17cqw;
|
|
280
|
+
`;
|
|
281
|
+
var Company = styled6(CoverField)`
|
|
282
|
+
display: block;
|
|
283
|
+
margin-top: 5cqw;
|
|
284
|
+
max-width: 45cqw;
|
|
285
|
+
font-size: 2.94cqw;
|
|
286
|
+
font-weight: 800;
|
|
287
|
+
line-height: 1.15;
|
|
288
|
+
letter-spacing: 0.3cqw;
|
|
289
|
+
text-align: right;
|
|
290
|
+
text-transform: uppercase;
|
|
291
|
+
`;
|
|
292
|
+
var Head2 = styled6.div`
|
|
293
|
+
display: flex;
|
|
294
|
+
flex-direction: column;
|
|
295
|
+
|
|
296
|
+
&::before,
|
|
297
|
+
&::after {
|
|
298
|
+
content: '';
|
|
299
|
+
width: 19cqw;
|
|
300
|
+
height: 0.9cqw;
|
|
301
|
+
background: ${HAIRLINE2};
|
|
302
|
+
}
|
|
303
|
+
&::before {
|
|
304
|
+
margin-bottom: 6cqw;
|
|
305
|
+
}
|
|
306
|
+
&::after {
|
|
307
|
+
margin-top: 6cqw;
|
|
308
|
+
}
|
|
309
|
+
`;
|
|
310
|
+
var Title2 = styled6(CoverField)`
|
|
311
|
+
display: block;
|
|
312
|
+
font-size: 8.82cqw;
|
|
313
|
+
font-weight: 800;
|
|
314
|
+
line-height: 1.15;
|
|
315
|
+
letter-spacing: 0.88cqw;
|
|
316
|
+
text-transform: uppercase;
|
|
317
|
+
`;
|
|
318
|
+
var Subtitle = styled6(CoverField)`
|
|
319
|
+
display: block;
|
|
320
|
+
margin-top: 3cqw;
|
|
321
|
+
font-size: 3.53cqw;
|
|
322
|
+
font-weight: 400;
|
|
323
|
+
line-height: 1.3;
|
|
324
|
+
`;
|
|
325
|
+
function Model2({ fields, theme, textColor, bgColor }) {
|
|
326
|
+
return /* @__PURE__ */ jsxs(CoverFrame, { $font: fontStack(theme?.documentFont), $bg: fields.imageUrl ? void 0 : bgColor, $color: textColor, children: [
|
|
327
|
+
fields.imageUrl ? /* @__PURE__ */ jsx(FullBleedImage, { $overlay: bgColor, $overlayOpacity: 0.85, children: /* @__PURE__ */ jsx(CoverImage, { src: fields.imageUrl }) }) : null,
|
|
328
|
+
/* @__PURE__ */ jsxs(Chrome, { children: [
|
|
329
|
+
/* @__PURE__ */ jsxs(TopRow, { children: [
|
|
330
|
+
theme?.logo?.url ? /* @__PURE__ */ jsx(Logo2, { src: theme.logo.url, alt: "" }) : /* @__PURE__ */ jsx("span", {}),
|
|
331
|
+
/* @__PURE__ */ jsx(Company, { name: "presentedBy", value: fields.presentedBy, placeholder: "Nome da empresa" })
|
|
332
|
+
] }),
|
|
333
|
+
/* @__PURE__ */ jsxs(Head2, { children: [
|
|
334
|
+
/* @__PURE__ */ jsx(Title2, { name: "title", value: fields.title, placeholder: "Digite o t\xEDtulo..." }),
|
|
335
|
+
/* @__PURE__ */ jsx(Subtitle, { name: "subtitle", value: fields.subtitle, placeholder: "Digite o subt\xEDtulo..." })
|
|
336
|
+
] })
|
|
337
|
+
] })
|
|
338
|
+
] });
|
|
339
|
+
}
|
|
340
340
|
var ImageBand = styled6.div`
|
|
341
341
|
position: relative;
|
|
342
342
|
width: 100%;
|
|
@@ -608,8 +608,8 @@ var COVER_TEMPLATES = {
|
|
|
608
608
|
var COVER_TEMPLATE_IDS = Object.keys(COVER_TEMPLATES);
|
|
609
609
|
var resolveCoverAccent = (accent, theme) => accent ?? theme?.colors?.brand ?? DEFAULT_DOCUMENT_COLORS.brand;
|
|
610
610
|
var COVER_SURFACES = {
|
|
611
|
-
"model-1": "
|
|
612
|
-
"model-2": "
|
|
611
|
+
"model-1": "background",
|
|
612
|
+
"model-2": "brand",
|
|
613
613
|
"model-3": "brand",
|
|
614
614
|
"model-4": "dark",
|
|
615
615
|
"model-5": "background"
|
|
@@ -817,5 +817,5 @@ var DG_READY = "dg-ready";
|
|
|
817
817
|
var DG_ERROR = "dg-error";
|
|
818
818
|
|
|
819
819
|
export { COMPANY_INFO_ICONS, COVER_TEMPLATES, COVER_TEMPLATE_IDS, CoverEditContext, CoverPage, DG_ERROR, DG_MESSAGE_SOURCE, DG_READY, DocumentRenderer, FOOTER_INFO_ORDER, FooterBar, HEADER_INFO_ORDER, HeaderBar, resolveCoverAccent, resolveCoverColors };
|
|
820
|
-
//# sourceMappingURL=chunk-
|
|
821
|
-
//# sourceMappingURL=chunk-
|
|
820
|
+
//# sourceMappingURL=chunk-MFBZNNYC.js.map
|
|
821
|
+
//# sourceMappingURL=chunk-MFBZNNYC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/render/DocumentRenderer.tsx","../src/render/chrome/covers/primitives.tsx","../src/render/chrome/covers/covers.styles.ts","../src/render/chrome/covers/Model1.tsx","../src/render/chrome/covers/Model2.tsx","../src/render/chrome/covers/Model3.tsx","../src/render/chrome/covers/Model4.tsx","../src/render/chrome/covers/Model5.tsx","../src/render/chrome/covers/index.ts","../src/render/chrome/CoverPage.tsx","../src/render/chrome/icons.tsx","../src/render/chrome/chrome.styles.ts","../src/render/chrome/HeaderBar.tsx","../src/render/chrome/FooterBar.tsx","../src/render/messages.ts"],"names":["jsx","styled","useContext","HAIRLINE","Logo","Head","Title","jsxs","Subtitle","Label","Value","Body","ImageBand"],"mappings":"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","file":"chunk-MFBZNNYC.js","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport { type Data, type Metadata, Render } from '@puckeditor/core';\nimport { buildConfig } from '../core/buildConfig';\nimport type { Registry } from '../blocks/types';\nimport type { Theme } from '../schema/theme';\nimport { useDocumentFont } from '../surface/useDocumentFont';\nimport { DocumentThemeProvider } from '../surface/themeContext';\nimport { CatalogProvider } from '../variables/catalogContext';\nimport { ResolvedProvider } from '../variables/resolvedContext';\nimport { resolveDocumentVariables } from '../variables/resolve';\nimport { extractBindingKeys } from '../variables/bindings';\nimport type {\n ResolvedVariables,\n UnresolvedDisplay,\n VariableContext,\n VariableDef,\n VariableResolver\n} from '../variables/types';\n\nexport type DocumentRendererProps = {\n registry: Registry;\n data: Data;\n theme?: Theme;\n catalog?: VariableDef[];\n /** Live resolution (browser preview). Called in an effect. */\n resolver?: VariableResolver;\n ctx?: VariableContext;\n resolvedVariables?: ResolvedVariables;\n unresolvedDisplay?: UnresolvedDisplay;\n metadata?: Metadata;\n};\n\nexport function DocumentRenderer({\n registry,\n data,\n theme = {},\n catalog = [],\n resolver,\n ctx = {},\n resolvedVariables,\n unresolvedDisplay = 'placeholder',\n metadata\n}: DocumentRendererProps) {\n // Sem `theme`: ele chega pelo DocumentThemeProvider (config estável — ver docs/architecture.md).\n const config = useMemo(() => buildConfig(registry), [registry]);\n const [resolved, setResolved] = useState<ResolvedVariables>(resolvedVariables ?? {});\n\n useDocumentFont(theme.documentFont);\n\n const keysHash = useMemo(() => extractBindingKeys(data).sort().join('|'), [data]);\n const ctxHash = JSON.stringify(ctx);\n\n useEffect(() => {\n if (resolvedVariables || !resolver || keysHash === '') return undefined;\n let active = true;\n resolveDocumentVariables(data, catalog, resolver, ctx).then(next => {\n if (active) setResolved(next);\n });\n return () => {\n active = false;\n };\n // Keyado por keysHash/ctxHash (não por data) — evita refetch por edição.\n }, [resolvedVariables, resolver, catalog, keysHash, ctxHash]);\n\n const effective = resolvedVariables ?? resolved;\n\n return (\n <DocumentThemeProvider theme={theme}>\n <CatalogProvider catalog={catalog}>\n <ResolvedProvider resolved={effective} unresolvedDisplay={unresolvedDisplay}>\n <Render config={config} data={data} metadata={metadata} />\n </ResolvedProvider>\n </CatalogProvider>\n </DocumentThemeProvider>\n );\n}\n","import { createContext, useContext, type ElementType, type KeyboardEvent, type FocusEvent } from 'react';\nimport type { Theme, CoverFields } from '../../../schema/theme';\n\nexport type CoverEditCtx = {\n editable: boolean;\n onFieldChange?: (name: keyof CoverFields, value: string) => void;\n onImagePick?: () => void;\n};\n\nexport const CoverEditContext = createContext<CoverEditCtx>({ editable: false });\n\nexport type CoverTemplateProps = {\n fields: CoverFields;\n theme?: Theme;\n accent: string;\n textColor: string;\n bgColor: string;\n};\n\ntype CoverFieldProps = {\n name: keyof CoverFields;\n value?: string;\n placeholder: string;\n as?: ElementType;\n className?: string;\n};\n\nexport function CoverField({ name, value, placeholder, as: Tag = 'span', className }: CoverFieldProps) {\n const { editable, onFieldChange } = useContext(CoverEditContext);\n if (!editable) return value ? <Tag className={className}>{value}</Tag> : null;\n return (\n <Tag\n className={className}\n data-cover-field={name}\n data-placeholder={placeholder}\n contentEditable\n suppressContentEditableWarning\n onBlur={(e: FocusEvent<HTMLElement>) => onFieldChange?.(name, e.currentTarget.textContent?.trim() ?? '')}\n onKeyDown={(e: KeyboardEvent<HTMLElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n (e.currentTarget as HTMLElement).blur();\n }\n }}\n >\n {value}\n </Tag>\n );\n}\n\ntype CoverImageProps = { src?: string; className?: string };\n\nexport function CoverImage({ src, className }: CoverImageProps) {\n const { editable, onImagePick } = useContext(CoverEditContext);\n if (!editable) {\n return src ? (\n <div className={className} data-cover-image>\n <img src={src} alt=\"\" />\n </div>\n ) : null;\n }\n return (\n <div\n className={className}\n data-cover-image\n role=\"button\"\n tabIndex={0}\n onClick={() => onImagePick?.()}\n onKeyDown={(e: KeyboardEvent<HTMLElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onImagePick?.();\n }\n }}\n >\n {src ? <img src={src} alt=\"\" /> : <span>Adicionar imagem</span>}\n </div>\n );\n}\n","import styled from 'styled-components';\n\n// Página A4 inteira; cores/fonte por props (capa é irmã do PageFrame, não herda --doc-*).\nexport const CoverFrame = styled.div<{ $font: string; $bg?: string; $color?: string }>`\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: ${p => p.$font};\n background: ${p => p.$bg ?? '#FFFFFF'};\n color: ${p => p.$color ?? '#111827'};\n overflow-wrap: break-word;\n\n [data-cover-field][contenteditable] {\n cursor: text;\n outline: 1px dashed transparent;\n outline-offset: 3px;\n transition: outline-color 0.12s ease;\n }\n [data-cover-field][contenteditable]:hover {\n outline-color: rgba(0, 90, 195, 0.45);\n }\n [data-cover-field][contenteditable]:focus {\n outline: 1px solid rgba(0, 90, 195, 0.8);\n }\n [data-cover-field][contenteditable]:empty::before {\n content: attr(data-placeholder);\n opacity: 0.45;\n font-style: italic;\n }\n [data-cover-image][role='button'] {\n cursor: pointer;\n outline: 1px dashed transparent;\n outline-offset: 3px;\n transition: outline-color 0.12s ease;\n }\n [data-cover-image][role='button']:hover {\n outline-color: rgba(0, 90, 195, 0.45);\n }\n [data-cover-image] img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n`;\n\nexport const FullBleedImage = styled.div<{ $overlay: string; $overlayOpacity?: number }>`\n position: absolute;\n inset: 0;\n\n & > [data-cover-image] {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #ffffff;\n }\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: ${p => p.$overlay};\n opacity: ${p => p.$overlayOpacity ?? 0.55};\n }\n`;\n\nexport const CoverLogoImg = styled.img`\n max-height: 48px;\n max-width: 160px;\n object-fit: contain;\n`;\n\nexport const LabelSmall = styled.div`\n font-size: 11px;\n letter-spacing: 0.04em;\n opacity: 0.8;\n`;\n","import { useContext } from 'react';\nimport styled from 'styled-components';\nimport { fontStack } from '../../../surface/fonts';\nimport { CoverEditContext, CoverField, type CoverTemplateProps } from './primitives';\nimport { CoverFrame, CoverLogoImg } from './covers.styles';\n\nconst BAND_BG = '#e8ecf1';\nconst HAIRLINE = '#d5dae1';\n\nconst Hairline = styled.div`\n position: absolute;\n left: 4.7%;\n top: 3%;\n height: 94%;\n width: 1px;\n background: ${HAIRLINE};\n`;\n\nconst Logo = styled(CoverLogoImg)`\n position: absolute;\n left: 10.9%;\n top: 6%;\n max-height: 13.6cqw;\n max-width: 32.7cqw;\n`;\n\nconst AccentBar = styled.div<{ $accent: string }>`\n position: absolute;\n left: 4.7%;\n top: 22.3%;\n width: 1.13cqw;\n height: 28.7%;\n background: ${p => p.$accent};\n`;\n\nconst Head = styled.div`\n position: absolute;\n left: 10.9%;\n right: 6%;\n top: 22.3%;\n display: flex;\n flex-direction: column;\n`;\n\nconst Title = styled(CoverField)`\n display: block;\n font-weight: 800;\n font-size: 12.6cqw;\n line-height: 1.2;\n letter-spacing: -0.63cqw;\n text-transform: uppercase;\n`;\n\nconst DateLine = styled(CoverField)`\n display: block;\n margin-top: 3.3cqw;\n font-size: 4.5cqw;\n font-weight: 400;\n`;\n\nconst Band = styled.div`\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 29.2%;\n background: ${BAND_BG};\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 4.3cqw;\n padding-left: 10.9%;\n padding-right: 6%;\n box-sizing: border-box;\n`;\n\nconst Label = styled.div`\n font-size: 2.77cqw;\n font-weight: 400;\n`;\n\nconst Value = styled(CoverField)`\n display: block;\n margin-top: 1cqw;\n font-size: 3.4cqw;\n font-weight: 700;\n line-height: 1.3;\n text-transform: uppercase;\n`;\n\nexport function Model1({ fields, theme, accent, textColor, bgColor }: CoverTemplateProps) {\n const { editable } = useContext(CoverEditContext);\n const showHead = editable || Boolean(fields.title || fields.date);\n const showPrepared = editable || Boolean(fields.preparedFor);\n const showPresented = editable || Boolean(fields.presentedBy);\n const hasBand = showPrepared || showPresented;\n return (\n <CoverFrame $font={fontStack(theme?.documentFont)} $bg={bgColor} $color={textColor}>\n {theme?.logo?.url ? <Logo src={theme.logo.url} alt=\"\" /> : null}\n {showHead ? (\n <>\n <AccentBar $accent={accent} />\n <Head data-cover-head>\n <Title name=\"title\" value={fields.title} placeholder=\"Digite o título...\" />\n <DateLine name=\"date\" value={fields.date} placeholder=\"Mês e ano\" />\n </Head>\n </>\n ) : null}\n {hasBand ? (\n <Band data-cover-band>\n {showPrepared ? (\n <div>\n <Label>Preparada para</Label>\n <Value name=\"preparedFor\" value={fields.preparedFor} placeholder=\"Nome do cliente\" />\n </div>\n ) : null}\n {showPresented ? (\n <div>\n <Label>Apresentada por</Label>\n <Value name=\"presentedBy\" value={fields.presentedBy} placeholder=\"Nome da empresa\" />\n </div>\n ) : null}\n </Band>\n ) : null}\n <Hairline />\n </CoverFrame>\n );\n}\n","import styled from 'styled-components';\nimport { fontStack } from '../../../surface/fonts';\nimport { CoverField, CoverImage, type CoverTemplateProps } from './primitives';\nimport { CoverFrame, FullBleedImage, CoverLogoImg } from './covers.styles';\n\nconst HAIRLINE = '#d9d9d9';\n\nconst Chrome = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 100%;\n padding: 0 7cqw 8cqw;\n`;\n\nconst TopRow = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 4cqw;\n`;\n\nconst Logo = styled(CoverLogoImg)`\n max-width: 17cqw;\n max-height: 17cqw;\n`;\n\nconst Company = styled(CoverField)`\n display: block;\n margin-top: 5cqw;\n max-width: 45cqw;\n font-size: 2.94cqw;\n font-weight: 800;\n line-height: 1.15;\n letter-spacing: 0.3cqw;\n text-align: right;\n text-transform: uppercase;\n`;\n\nconst Head = styled.div`\n display: flex;\n flex-direction: column;\n\n &::before,\n &::after {\n content: '';\n width: 19cqw;\n height: 0.9cqw;\n background: ${HAIRLINE};\n }\n &::before {\n margin-bottom: 6cqw;\n }\n &::after {\n margin-top: 6cqw;\n }\n`;\n\nconst Title = styled(CoverField)`\n display: block;\n font-size: 8.82cqw;\n font-weight: 800;\n line-height: 1.15;\n letter-spacing: 0.88cqw;\n text-transform: uppercase;\n`;\n\nconst Subtitle = styled(CoverField)`\n display: block;\n margin-top: 3cqw;\n font-size: 3.53cqw;\n font-weight: 400;\n line-height: 1.3;\n`;\n\nexport function Model2({ fields, theme, textColor, bgColor }: CoverTemplateProps) {\n return (\n <CoverFrame $font={fontStack(theme?.documentFont)} $bg={fields.imageUrl ? undefined : bgColor} $color={textColor}>\n {fields.imageUrl ? (\n <FullBleedImage $overlay={bgColor} $overlayOpacity={0.85}>\n <CoverImage src={fields.imageUrl} />\n </FullBleedImage>\n ) : null}\n <Chrome>\n <TopRow>\n {theme?.logo?.url ? <Logo src={theme.logo.url} alt=\"\" /> : <span />}\n <Company name=\"presentedBy\" value={fields.presentedBy} placeholder=\"Nome da empresa\" />\n </TopRow>\n <Head>\n <Title name=\"title\" value={fields.title} placeholder=\"Digite o título...\" />\n <Subtitle name=\"subtitle\" value={fields.subtitle} placeholder=\"Digite o subtítulo...\" />\n </Head>\n </Chrome>\n </CoverFrame>\n );\n}\n","import { useContext } from 'react';\nimport styled from 'styled-components';\nimport { fontStack } from '../../../surface/fonts';\nimport { CoverEditContext, CoverField, CoverImage, type CoverTemplateProps } from './primitives';\nimport { CoverFrame, CoverLogoImg } from './covers.styles';\n\nconst ImageBand = styled.div`\n position: relative;\n width: 100%;\n height: 42.9cqw;\n flex-shrink: 0;\n overflow: hidden;\n background: #1a1a1a;\n\n & > [data-cover-image] {\n position: absolute;\n inset: 0;\n }\n`;\n\nconst Logo = styled(CoverLogoImg)`\n position: absolute;\n top: 1.2cqw;\n right: 5.9cqw;\n max-width: 14.7cqw;\n max-height: 14.7cqw;\n`;\n\nconst Body = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 11.5cqw 9.4cqw 7.35cqw;\n`;\n\nconst DateField = styled(CoverField)`\n display: block;\n font-size: 2.94cqw;\n font-weight: 400;\n opacity: 0.5;\n`;\n\nconst Title = styled(CoverField)`\n display: block;\n margin-top: 2.35cqw;\n font-size: 10.6cqw;\n font-weight: 800;\n line-height: 1.2;\n text-transform: uppercase;\n`;\n\nconst Subtitle = styled(CoverField)`\n display: block;\n margin-top: 4.7cqw;\n font-size: 3.53cqw;\n font-weight: 400;\n opacity: 0.62;\n`;\n\nconst Parties = styled.div`\n margin-top: 13.8cqw;\n display: flex;\n flex-direction: column;\n gap: 4.7cqw;\n`;\n\nconst Label = styled.div`\n font-size: 3.53cqw;\n font-weight: 600;\n`;\n\nconst Value = styled(CoverField)`\n display: block;\n margin-top: 0.7cqw;\n font-size: 3.53cqw;\n font-weight: 400;\n opacity: 0.62;\n`;\n\nexport function Model3({ fields, theme, textColor, bgColor }: CoverTemplateProps) {\n const { editable } = useContext(CoverEditContext);\n const showPresented = editable || Boolean(fields.presentedBy);\n const showPrepared = editable || Boolean(fields.preparedFor);\n return (\n <CoverFrame $font={fontStack(theme?.documentFont)} $bg={bgColor} $color={textColor}>\n <ImageBand>\n {fields.imageUrl ? <CoverImage src={fields.imageUrl} /> : null}\n {theme?.logo?.url ? <Logo src={theme.logo.url} alt=\"\" /> : null}\n </ImageBand>\n <Body>\n <DateField name=\"date\" value={fields.date} placeholder=\"Mês e ano\" />\n <Title name=\"title\" value={fields.title} placeholder=\"Digite o título...\" />\n <Subtitle name=\"subtitle\" value={fields.subtitle} placeholder=\"Digite o subtítulo...\" />\n {showPresented || showPrepared ? (\n <Parties data-cover-parties>\n {showPresented ? (\n <div>\n <Label>Apresentada por</Label>\n <Value name=\"presentedBy\" value={fields.presentedBy} placeholder=\"Nome da empresa\" />\n </div>\n ) : null}\n {showPrepared ? (\n <div>\n <Label>Preparada para</Label>\n <Value name=\"preparedFor\" value={fields.preparedFor} placeholder=\"Nome do cliente\" />\n </div>\n ) : null}\n </Parties>\n ) : null}\n </Body>\n </CoverFrame>\n );\n}\n","import { useContext } from 'react';\nimport styled from 'styled-components';\nimport { fontStack } from '../../../surface/fonts';\nimport { CoverEditContext, CoverField, type CoverTemplateProps } from './primitives';\nimport { CoverFrame, CoverLogoImg } from './covers.styles';\n\nconst Body = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 4.12cqw 9.4cqw 0;\n`;\n\nconst Logo = styled(CoverLogoImg)`\n max-width: 14.7cqw;\n max-height: 14.7cqw;\n`;\n\nconst Head = styled.div`\n margin-top: 23.2cqw;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`;\n\nconst DateChip = styled(CoverField)<{ $accent: string }>`\n display: inline-block;\n align-self: flex-start;\n max-width: 100%;\n background: ${p => p.$accent};\n border-radius: 1000px;\n padding: 1.18cqw 2.94cqw;\n font-size: 2.94cqw;\n font-weight: 400;\n color: #ffffff;\n`;\n\nconst Title = styled(CoverField)`\n display: block;\n align-self: stretch;\n margin-top: 3.5cqw;\n font-size: 14.1cqw;\n font-weight: 300;\n line-height: 1.1;\n`;\n\nconst Footer = styled.div`\n margin-top: auto;\n padding-bottom: 11cqw;\n display: flex;\n gap: 6cqw;\n`;\n\nconst Party = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nconst Label = styled.div`\n font-size: 3.53cqw;\n font-weight: 300;\n opacity: 0.72;\n`;\n\nconst Value = styled(CoverField)`\n display: block;\n margin-top: 1.5cqw;\n font-size: 4.12cqw;\n font-weight: 500;\n`;\n\nexport function Model4({ fields, theme, accent, textColor, bgColor }: CoverTemplateProps) {\n const { editable } = useContext(CoverEditContext);\n const showPrepared = editable || Boolean(fields.preparedFor);\n const showPresented = editable || Boolean(fields.presentedBy);\n return (\n <CoverFrame $font={fontStack(theme?.documentFont)} $bg={bgColor} $color={textColor}>\n <Body>\n {theme?.logo?.url ? <Logo src={theme.logo.url} alt=\"\" /> : <span />}\n <Head>\n <DateChip name=\"date\" value={fields.date} placeholder=\"Mês e ano\" $accent={accent} />\n <Title name=\"title\" value={fields.title} placeholder=\"Digite o título...\" />\n </Head>\n {showPrepared || showPresented ? (\n <Footer data-cover-footer>\n {showPrepared ? (\n <Party>\n <Label>Apresentada para</Label>\n <Value name=\"preparedFor\" value={fields.preparedFor} placeholder=\"Nome do cliente\" />\n </Party>\n ) : null}\n {showPresented ? (\n <Party>\n <Label>Apresentada por</Label>\n <Value name=\"presentedBy\" value={fields.presentedBy} placeholder=\"Nome da empresa\" />\n </Party>\n ) : null}\n </Footer>\n ) : null}\n </Body>\n </CoverFrame>\n );\n}\n","import { useContext } from 'react';\nimport styled from 'styled-components';\nimport { fontStack } from '../../../surface/fonts';\nimport { CoverEditContext, CoverField, CoverImage, type CoverTemplateProps } from './primitives';\nimport { CoverFrame, FullBleedImage, CoverLogoImg } from './covers.styles';\n\nconst Spacer = styled.div`\n height: 24.4cqw;\n flex-shrink: 0;\n`;\n\nconst ImageBand = styled.div`\n position: relative;\n width: 100%;\n height: 64.4cqw;\n flex-shrink: 0;\n overflow: hidden;\n background: #e8eef7;\n`;\n\nconst Bar = styled.div<{ $accent: string }>`\n position: absolute;\n width: 47.9cqw;\n height: 2.06cqw;\n background: ${p => p.$accent};\n`;\n\nconst BarTop = styled(Bar)`\n top: 0;\n right: 0;\n`;\n\nconst BarBottom = styled(Bar)`\n bottom: 0;\n left: 0;\n`;\n\nconst Bottom = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n gap: 7cqw;\n padding: 0 4.7cqw 4cqw 7cqw;\n`;\n\nconst LogoCol = styled.div`\n flex-shrink: 0;\n width: 29.4cqw;\n`;\n\nconst Logo = styled(CoverLogoImg)`\n max-width: 29.4cqw;\n max-height: 29.4cqw;\n`;\n\nconst TextCol = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nconst Title = styled(CoverField)`\n display: block;\n font-size: 7.06cqw;\n font-weight: 700;\n line-height: 1.2;\n text-transform: uppercase;\n`;\n\nconst Subtitle = styled(CoverField)`\n display: block;\n margin-top: 2.47cqw;\n font-size: 2.94cqw;\n font-weight: 400;\n line-height: 1.2;\n opacity: 0.72;\n`;\n\nconst Presented = styled.div`\n margin-top: 3.5cqw;\n font-size: 2.94cqw;\n font-weight: 600;\n line-height: 1.2;\n`;\n\nconst PresentedValue = styled(CoverField)`\n font-weight: 600;\n`;\n\nexport function Model5({ fields, theme, accent, textColor, bgColor }: CoverTemplateProps) {\n const { editable } = useContext(CoverEditContext);\n const showPresented = editable || Boolean(fields.presentedBy);\n return (\n <CoverFrame $font={fontStack(theme?.documentFont)} $bg={bgColor} $color={textColor}>\n <Spacer />\n <ImageBand>\n {fields.imageUrl ? (\n <FullBleedImage $overlay={accent} $overlayOpacity={0.5}>\n <CoverImage src={fields.imageUrl} />\n </FullBleedImage>\n ) : null}\n </ImageBand>\n <Bottom>\n <LogoCol>{theme?.logo?.url ? <Logo src={theme.logo.url} alt=\"\" /> : null}</LogoCol>\n <TextCol>\n <Title name=\"title\" value={fields.title} placeholder=\"Digite o título...\" />\n <Subtitle name=\"subtitle\" value={fields.subtitle} placeholder=\"Digite o subtítulo...\" />\n {showPresented ? (\n <Presented>\n Apresentada por:{' '}\n <PresentedValue name=\"presentedBy\" value={fields.presentedBy} placeholder=\"Nome da empresa\" />\n </Presented>\n ) : null}\n </TextCol>\n </Bottom>\n <BarTop $accent={accent} />\n <BarBottom $accent={accent} />\n </CoverFrame>\n );\n}\n","import type { ComponentType } from 'react';\nimport type { Theme } from '../../../schema/theme';\nimport { DEFAULT_DOCUMENT_COLORS } from '../../../surface/surface';\nimport type { CoverTemplateProps } from './primitives';\nimport { Model1 } from './Model1';\nimport { Model2 } from './Model2';\nimport { Model3 } from './Model3';\nimport { Model4 } from './Model4';\nimport { Model5 } from './Model5';\n\nexport const COVER_TEMPLATES: Record<string, ComponentType<CoverTemplateProps>> = {\n 'model-1': Model1,\n 'model-2': Model2,\n 'model-3': Model3,\n 'model-4': Model4,\n 'model-5': Model5\n};\n\nexport const COVER_TEMPLATE_IDS = Object.keys(COVER_TEMPLATES);\n\nexport const resolveCoverAccent = (accent?: string, theme?: Theme): string =>\n accent ?? theme?.colors?.brand ?? DEFAULT_DOCUMENT_COLORS.brand;\n\nconst COVER_SURFACES: Record<string, 'brand' | 'background' | 'dark'> = {\n 'model-1': 'background',\n 'model-2': 'brand',\n 'model-3': 'brand',\n 'model-4': 'dark',\n 'model-5': 'background'\n};\n\nconst ON_BRAND_TEXT = '#FFFFFF';\n\nconst DARK_SURFACE_BG = '#131B2C';\n\nexport type CoverColorOverrides = { accent?: string; textColor?: string; bgColor?: string };\n\nexport type CoverColors = { accent: string; textColor: string; bgColor: string };\n\nexport const resolveCoverColors = (\n templateId: string | undefined,\n { accent, textColor, bgColor }: CoverColorOverrides,\n theme?: Theme\n): CoverColors => {\n const colors = { ...DEFAULT_DOCUMENT_COLORS, ...theme?.colors };\n const surface = COVER_SURFACES[templateId ?? ''] ?? COVER_SURFACES['model-1'];\n const resolvedAccent = resolveCoverAccent(accent, theme);\n const surfaceBg = { brand: resolvedAccent, dark: DARK_SURFACE_BG, background: colors.background }[surface];\n\n return {\n accent: resolvedAccent,\n textColor: textColor ?? (surface === 'background' ? colors.text : ON_BRAND_TEXT),\n bgColor: bgColor ?? surfaceBg\n };\n};\n","import type { CSSProperties } from 'react';\nimport type { CoverFields, Theme } from '../../schema/theme';\nimport { DEFAULT_DOCUMENT_COLORS } from '../../surface/surface';\nimport { COVER_TEMPLATES, resolveCoverColors } from './covers';\n\nexport type CoverPageProps = {\n templateId?: string;\n accent?: string;\n fields?: CoverFields;\n theme?: Theme;\n textColor?: string;\n bgColor?: string;\n};\n\nexport function CoverPage({ templateId, accent, fields, theme, textColor, bgColor }: CoverPageProps) {\n if (!templateId) return null;\n\n // CoverPage é IRMÃO do PageFrame no body (buildDocumentHtml), não descendente —\n // não pode contar com as --doc-* vars setadas lá, precisa das próprias.\n const colors = { ...DEFAULT_DOCUMENT_COLORS, ...theme?.colors };\n const vars: CSSProperties = {\n ['--doc-brand' as keyof CSSProperties]: colors.brand,\n ['--doc-text' as keyof CSSProperties]: colors.text,\n ['--doc-bg' as keyof CSSProperties]: colors.background\n } as CSSProperties;\n\n const Template = COVER_TEMPLATES[templateId] ?? COVER_TEMPLATES['model-1'];\n const resolved = resolveCoverColors(templateId, { accent, textColor, bgColor }, theme);\n\n // Layout (width/height/overflow) vem do CSS gerado (buildPageCss.ts): .dg-cover\n // já define width, e o escopo .pagedjs_page_content .dg-cover define height/overflow\n // para a página impressa. Inline aqui só carrega as --doc-* vars.\n return (\n <section className=\"dg-cover\" style={vars}>\n <Template fields={fields ?? {}} theme={theme} {...resolved} />\n </section>\n );\n}\n","import type { ReactNode } from 'react';\nimport type { CompanyInfo } from './types';\n\nconst BOX: { width: number; height: number; 'aria-hidden': true } = { width: 14, height: 14, 'aria-hidden': true };\n\nconst stroke = (inner: string): ReactNode => (\n <svg\n {...BOX}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n // eslint-disable-next-line react/no-danger -- markup estático deste arquivo, nunca entrada do host\n dangerouslySetInnerHTML={{ __html: inner }}\n />\n);\n\nconst brand = (viewBox: string, d: string): ReactNode => (\n <svg {...BOX} viewBox={viewBox} fill=\"currentColor\">\n <path d={d} />\n </svg>\n);\n\nexport const COMPANY_INFO_ICONS: Record<keyof CompanyInfo, ReactNode> = {\n companyName: stroke(\n '<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\" />'\n ),\n cnpj: stroke(\n '<path d=\"M16 10h2\" /><path d=\"M16 14h2\" /><path d=\"M6.17 15a3 3 0 0 1 5.66 0\" /><circle cx=\"9\" cy=\"11\" r=\"2\" /><rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />'\n ),\n phone: stroke(\n '<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\" />'\n ),\n email: stroke(\n '<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\" />'\n ),\n address: stroke(\n '<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\" />'\n ),\n site: stroke(\n '<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\" />'\n ),\n instagram: brand(\n '0 0 448 512',\n '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'\n ),\n facebook: brand(\n '0 0 320 512',\n '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'\n ),\n twitter: brand(\n '0 0 512 512',\n 'M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z'\n ),\n linkedin: brand(\n '0 0 448 512',\n 'M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z'\n )\n};\n","import styled from 'styled-components';\n\n// Chrome roda dentro das margin boxes do Paged.js — fora do PageFrame, sem herdar\n// font-family nem --doc-* vars; cada root recebe fonte e cores via props.\n// O Paged.js força `display: block` no filho direto da margin box com especificidade\n// (0,4,0) — por isso o root é block e o layout flex fica num wrapper interno.\n// O fundo da faixa NÃO fica aqui: é pintado na row inteira do Paged.js (corners\n// inclusos) pelo buildPageCss, pra faixa ser full-bleed até as bordas da página.\nexport const HeaderRoot = styled.header<{ $color: string; $font: string }>`\n height: 100%;\n color: ${props => props.$color};\n font-family: ${props => props.$font};\n line-height: 1.5;\n`;\n\nexport const HeaderLayout = styled.div<{ $reverse: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-direction: ${props => (props.$reverse ? 'row-reverse' : 'row')};\n gap: 16px;\n height: 100%;\n padding: 20px 0;\n`;\n\nexport const HeaderInfo = styled.div<{ $alignEnd?: boolean }>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: ${props => (props.$alignEnd ? 'flex-end' : 'flex-start')};\n min-width: 0;\n font-size: 12px;\n text-align: ${props => (props.$alignEnd ? 'right' : 'left')};\n`;\n\n// Ícone fica sempre na borda externa da página: infos à direita (logo left) → texto, ícone.\nexport const InfoLine = styled.span<{ $strong?: boolean; $iconAfter?: boolean }>`\n display: flex;\n flex-direction: ${props => (props.$iconAfter ? 'row-reverse' : 'row')};\n align-items: center;\n gap: 8px;\n height: 22px;\n font-weight: ${props => (props.$strong ? 600 : 400)};\n font-size: ${props => (props.$strong ? '12.5px' : '12px')};\n\n svg {\n flex-shrink: 0;\n }\n`;\n\nexport const HeaderLogo = styled.img`\n max-height: 44px;\n max-width: 180px;\n object-fit: contain;\n`;\n\nexport const FooterRoot = styled.footer<{ $color: string; $font: string }>`\n height: 100%;\n color: ${props => props.$color};\n font-family: ${props => props.$font};\n line-height: 1.5;\n`;\n\nexport const FooterLayout = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n padding: 12px 0;\n`;\n\nexport const FooterInfoRows = styled.div<{ $justify: string }>`\n display: flex;\n align-items: center;\n justify-content: ${props => props.$justify};\n flex-wrap: wrap;\n column-gap: 24px;\n font-size: 12px;\n`;\n\nexport const FooterItem = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n height: 22px;\n white-space: nowrap;\n\n svg {\n flex-shrink: 0;\n }\n`;\n","import type { HeaderConfig } from '../../schema/theme';\nimport type { CompanyInfo } from './types';\nimport { fontStack } from '../../surface/fonts';\nimport { COMPANY_INFO_ICONS } from './icons';\nimport { HeaderInfo, HeaderLayout, HeaderLogo, HeaderRoot, InfoLine } from './chrome.styles';\n\n/** Ordem em que as informações da empresa aparecem no cabeçalho. */\nexport const HEADER_INFO_ORDER: Array<keyof CompanyInfo> = ['companyName', 'cnpj', 'phone', 'email', 'address'];\n\nexport type HeaderBarProps = {\n config?: Partial<HeaderConfig>;\n companyInfo?: CompanyInfo;\n logoUrl?: string;\n documentFont?: string;\n};\n\nexport function HeaderBar({ config, companyInfo = {}, logoUrl, documentFont }: HeaderBarProps) {\n if (!config?.enabled) return null;\n\n const lines = HEADER_INFO_ORDER.filter(\n key => config.info?.[key as keyof NonNullable<HeaderConfig['info']>] && companyInfo[key]\n );\n const logoLeft = config.logoPosition === 'left';\n\n return (\n <HeaderRoot className=\"dg-running-header\" $color={config.color ?? '#3F4759'} $font={fontStack(documentFont)}>\n <HeaderLayout $reverse={logoLeft}>\n <HeaderInfo $alignEnd={logoLeft}>\n {lines.map(key => (\n <InfoLine key={key} $strong={key === 'companyName'} $iconAfter={logoLeft}>\n {COMPANY_INFO_ICONS[key]}\n <span>{companyInfo[key]}</span>\n </InfoLine>\n ))}\n </HeaderInfo>\n {logoUrl ? <HeaderLogo src={logoUrl} alt=\"\" /> : null}\n </HeaderLayout>\n </HeaderRoot>\n );\n}\n","import type { FooterConfig } from '../../schema/theme';\nimport type { CompanyInfo } from './types';\nimport { fontStack } from '../../surface/fonts';\nimport { COMPANY_INFO_ICONS } from './icons';\nimport { FooterInfoRows, FooterItem, FooterLayout, FooterRoot } from './chrome.styles';\n\nexport const FOOTER_INFO_ORDER: Array<keyof CompanyInfo> = [\n 'phone',\n 'site',\n 'instagram',\n 'facebook',\n 'twitter',\n 'linkedin',\n 'email',\n 'address'\n];\n\nconst ALIGNMENT_TO_JUSTIFY: Record<NonNullable<FooterConfig['alignment']>, string> = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end'\n};\n\nexport type FooterBarProps = {\n config?: Partial<FooterConfig>;\n companyInfo?: CompanyInfo;\n documentFont?: string;\n};\n\nexport function FooterBar({ config, companyInfo = {}, documentFont }: FooterBarProps) {\n const showBand = Boolean(config?.enabled);\n const showPageNumber = Boolean(config?.pageNumber);\n if (!showBand && !showPageNumber) return null;\n\n const lines = showBand\n ? FOOTER_INFO_ORDER.filter(\n key => config?.info?.[key as keyof NonNullable<FooterConfig['info']>] && companyInfo[key]\n )\n : [];\n const justify = ALIGNMENT_TO_JUSTIFY[config?.alignment ?? 'center'];\n\n return (\n <FooterRoot className=\"dg-running-footer\" $color={config?.color ?? '#3F4759'} $font={fontStack(documentFont)}>\n {showPageNumber ? <span className=\"dg-page-number\" /> : null}\n {showBand ? (\n <FooterLayout>\n {lines.length ? (\n <FooterInfoRows $justify={justify}>\n {lines.map(key => (\n <FooterItem key={key}>\n {COMPANY_INFO_ICONS[key]}\n <span>{companyInfo[key]}</span>\n </FooterItem>\n ))}\n </FooterInfoRows>\n ) : null}\n </FooterLayout>\n ) : null}\n </FooterRoot>\n );\n}\n","/**\n * Protocolo `postMessage` entre o documento gerado (iframe) e o host.\n * Módulo separado do `previewBootstrap` de propósito: o host precisa destas\n * constantes no browser, e o bootstrap só existe no caminho de impressão.\n */\nexport const DG_MESSAGE_SOURCE = 'document-generator';\nexport const DG_READY = 'dg-ready';\nexport const DG_ERROR = 'dg-error';\n"]}
|
|
@@ -52,7 +52,7 @@ strong, b { font-weight: 600; }
|
|
|
52
52
|
em, i { font-style: italic; }
|
|
53
53
|
|
|
54
54
|
a {
|
|
55
|
-
color: var(--doc-brand, #
|
|
55
|
+
color: var(--doc-brand, #001a43);
|
|
56
56
|
text-decoration: underline;
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -89,8 +89,8 @@ var Prose = styled4.div`
|
|
|
89
89
|
.${CHIP_CLASS} {
|
|
90
90
|
padding: 1px 6px;
|
|
91
91
|
border-radius: 4px;
|
|
92
|
-
background: color-mix(in srgb, var(--doc-brand, #
|
|
93
|
-
color: var(--doc-brand, #
|
|
92
|
+
background: color-mix(in srgb, var(--doc-brand, #001a43) 12%, transparent);
|
|
93
|
+
color: var(--doc-brand, #001a43);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
.${INVALID_CHIP_CLASS} {
|
|
@@ -160,7 +160,7 @@ var List = styled4.ul`
|
|
|
160
160
|
margin-bottom: 4px;
|
|
161
161
|
}
|
|
162
162
|
li::marker {
|
|
163
|
-
color: var(--doc-brand, #
|
|
163
|
+
color: var(--doc-brand, #001a43);
|
|
164
164
|
}
|
|
165
165
|
`;
|
|
166
166
|
var ListBlock = defineBlock({
|
|
@@ -198,7 +198,7 @@ var ListBlock = defineBlock({
|
|
|
198
198
|
var Callout = styled4.blockquote`
|
|
199
199
|
margin: 0;
|
|
200
200
|
padding: 12px 0 12px 16px;
|
|
201
|
-
border-left: 3px solid var(--doc-brand, #
|
|
201
|
+
border-left: 3px solid var(--doc-brand, #001a43);
|
|
202
202
|
`;
|
|
203
203
|
var Author = styled4.footer`
|
|
204
204
|
margin-top: 6px;
|
|
@@ -733,7 +733,7 @@ function ContentIcon({
|
|
|
733
733
|
}
|
|
734
734
|
var IconSlot = styled4.span`
|
|
735
735
|
flex: none;
|
|
736
|
-
color: var(--doc-brand, #
|
|
736
|
+
color: var(--doc-brand, #001a43);
|
|
737
737
|
line-height: 1;
|
|
738
738
|
`;
|
|
739
739
|
var Body = styled4.div`
|
|
@@ -804,7 +804,7 @@ var Grid2 = styled4.table`
|
|
|
804
804
|
|
|
805
805
|
th {
|
|
806
806
|
font-weight: 600;
|
|
807
|
-
background: color-mix(in srgb, var(--doc-brand, #
|
|
807
|
+
background: color-mix(in srgb, var(--doc-brand, #001a43) 8%, transparent);
|
|
808
808
|
}
|
|
809
809
|
`;
|
|
810
810
|
var TableBlock = defineBlock({
|
|
@@ -908,5 +908,5 @@ function overrideBlock(key, patch = {}) {
|
|
|
908
908
|
}
|
|
909
909
|
|
|
910
910
|
export { ButtonBlock, CONTENT_ICON_CATALOG, CONTENT_ICON_NAMES, ContentIcon, DOCUMENT_PROSE_CSS, DOCUMENT_TEXT_CSS, DividerBlock, HeadingBlock, IconTextBlock, ImageBlock, ImageGridBlock, ImageTextBlock, ListBlock, PageBreakBlock, QuoteBlock, RichText, SpacerBlock, TableBlock, TextBlock, TwoColumnsBlock, blocksByKey, defaultBlocks, defineBlock, overrideBlock };
|
|
911
|
-
//# sourceMappingURL=chunk-
|
|
912
|
-
//# sourceMappingURL=chunk-
|
|
911
|
+
//# sourceMappingURL=chunk-NPNQGHGK.js.map
|
|
912
|
+
//# sourceMappingURL=chunk-NPNQGHGK.js.map
|