@pyreon/document-primitives 0.24.6 → 0.25.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.
- package/lib/index.d.ts +6 -6
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js.map +1 -0
- package/package.json +17 -18
package/lib/index.d.ts
CHANGED
|
@@ -77,10 +77,10 @@ declare const DocButton: import("@pyreon/rocketstyle").RocketStyleComponent<Part
|
|
|
77
77
|
}> & import("@pyreon/core").PyreonHTMLAttributes<HTMLElement>, {
|
|
78
78
|
href?: string;
|
|
79
79
|
}, {}, {
|
|
80
|
-
padding: string;
|
|
81
80
|
borderRadius: number;
|
|
82
81
|
fontSize: number;
|
|
83
82
|
fontWeight: string;
|
|
83
|
+
padding: string;
|
|
84
84
|
textAlign: string;
|
|
85
85
|
textDecoration: string;
|
|
86
86
|
}, {
|
|
@@ -114,10 +114,10 @@ declare const DocCode: import("@pyreon/rocketstyle").RocketStyleComponent<Partia
|
|
|
114
114
|
language?: string;
|
|
115
115
|
}, {}, {
|
|
116
116
|
backgroundColor: string;
|
|
117
|
-
padding: string;
|
|
118
117
|
borderRadius: number;
|
|
119
118
|
fontFamily: string;
|
|
120
119
|
fontSize: number;
|
|
120
|
+
padding: string;
|
|
121
121
|
}, {
|
|
122
122
|
_documentType: "code";
|
|
123
123
|
}, {}, {
|
|
@@ -419,9 +419,9 @@ declare const DocImage: import("@pyreon/rocketstyle").RocketStyleComponent<Parti
|
|
|
419
419
|
beforeContentCss: import("@pyreon/elements").ExtendCss;
|
|
420
420
|
afterContentCss: import("@pyreon/elements").ExtendCss;
|
|
421
421
|
}> & import("@pyreon/core").PyreonHTMLAttributes<HTMLElement>, {
|
|
422
|
+
height?: number | string;
|
|
422
423
|
width?: number | string;
|
|
423
424
|
caption?: string;
|
|
424
|
-
height?: number | string;
|
|
425
425
|
src?: string;
|
|
426
426
|
alt?: string;
|
|
427
427
|
}, {}, {}, {
|
|
@@ -696,10 +696,10 @@ declare const DocQuote: import("@pyreon/rocketstyle").RocketStyleComponent<Parti
|
|
|
696
696
|
}> & import("@pyreon/core").PyreonHTMLAttributes<HTMLElement>, {
|
|
697
697
|
borderColor?: string;
|
|
698
698
|
}, {}, {
|
|
699
|
-
padding: string;
|
|
700
699
|
borderColor: string;
|
|
701
700
|
color: string;
|
|
702
701
|
fontStyle: string;
|
|
702
|
+
padding: string;
|
|
703
703
|
}, {
|
|
704
704
|
_documentType: "quote";
|
|
705
705
|
}, {}, {
|
|
@@ -757,8 +757,8 @@ declare const DocRow: import("@pyreon/rocketstyle").RocketStyleComponent<Partial
|
|
|
757
757
|
afterContentCss: import("@pyreon/elements").ExtendCss;
|
|
758
758
|
}> & import("@pyreon/core").PyreonHTMLAttributes<HTMLElement>, {
|
|
759
759
|
tag: string;
|
|
760
|
-
gap: number;
|
|
761
760
|
direction: "inline";
|
|
761
|
+
gap: number;
|
|
762
762
|
_documentProps: {};
|
|
763
763
|
}, {}, {}, {
|
|
764
764
|
_documentType: "row";
|
|
@@ -928,9 +928,9 @@ declare const DocTable: import("@pyreon/rocketstyle").RocketStyleComponent<Parti
|
|
|
928
928
|
beforeContentCss: import("@pyreon/elements").ExtendCss;
|
|
929
929
|
afterContentCss: import("@pyreon/elements").ExtendCss;
|
|
930
930
|
}> & import("@pyreon/core").PyreonHTMLAttributes<HTMLElement>, {
|
|
931
|
+
columns?: unknown[];
|
|
931
932
|
caption?: string;
|
|
932
933
|
rows?: unknown[];
|
|
933
|
-
columns?: unknown[];
|
|
934
934
|
headerStyle?: Record<string, unknown>;
|
|
935
935
|
striped?: boolean;
|
|
936
936
|
bordered?: boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../src/DocumentPreview.ts","../../src/primitives/DocButton.ts","../../src/primitives/DocCode.ts","../../src/primitives/DocColumn.ts","../../src/primitives/DocDivider.ts","../../src/primitives/DocDocument.ts","../../src/primitives/DocHeading.ts","../../src/primitives/DocImage.ts","../../src/primitives/DocLink.ts","../../src/primitives/DocList.ts","../../src/primitives/DocListItem.ts","../../src/primitives/DocPage.ts","../../src/primitives/DocPageBreak.ts","../../src/primitives/DocQuote.ts","../../src/primitives/DocRow.ts","../../src/primitives/DocSection.ts","../../src/primitives/DocSpacer.ts","../../src/primitives/DocTable.ts","../../src/primitives/DocText.ts","../../src/theme.ts","../../src/useDocumentExport.ts"],"mappings":";;;cAGM,eAAA,gCAAe,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCAf,SAAA,gCAAS,oBAAA,CAAA,OAAA;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCAT,OAAA,gCAAO,oBAAA,CAAA,OAAA;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cCAP,SAAA,gCAAS,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;cCAT,UAAA,gCAAU,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cC8CV,WAAA,gCAAW,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;cC9CX,UAAA,gCAAU,oBAAA,CAAA,OAAA;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCAV,QAAA,gCAAQ,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;cCAR,OAAA,gCAAO,oBAAA,CAAA,OAAA;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;cCAP,OAAA,gCAAO,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;cCAP,WAAA,gCAAW,oBAAA,CAAA,OAAA;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;cCAX,OAAA,gCAAO,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;cCAP,YAAA,gCAAY,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;cCAZ,QAAA,gCAAQ,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCMR,MAAA,gCAAM,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;cCNN,UAAA,gCAAU,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;cCAV,SAAA,gCAAS,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCkBT,QAAA,gCAAQ,oBAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAcI,MAAA;;;;;;;;;;;;;cChCZ,OAAA,gCAAO,oBAAA,CAAA,OAAA;;;;;;iDAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCHA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoCD,aAAA,UAAuB,aAAa;;;UCjC/B,qBAAA,SAA8B,gBAAc;;EAE3D,KAAA,GAAQ,MAAA;EpBwCL;EoBtCH,IAAA;AAAA;AAAA,UAGe,cAAA;EpBPI;EoBSnB,UAAA,QAAkB,SAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCX,cAAA,CACd,UAAA,iBACA,OAAA,GAAS,qBAAA,GACR,SAAO;;;;;;;;;;;;;;;;;;;;;;;;iBA2BM,oBAAA,CACd,UAAA,iBACA,OAAA,GAAS,qBAAA,GACR,cAAc"}
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["extractDocumentTree"],"sources":["../src/DocumentPreview.ts","../src/primitives/DocButton.ts","../src/primitives/DocCode.ts","../src/primitives/DocColumn.ts","../src/primitives/DocDivider.ts","../src/primitives/DocDocument.ts","../src/primitives/DocHeading.ts","../src/primitives/DocImage.ts","../src/primitives/DocLink.ts","../src/primitives/DocList.ts","../src/primitives/DocListItem.ts","../src/primitives/DocPage.ts","../src/primitives/DocPageBreak.ts","../src/primitives/DocQuote.ts","../src/primitives/DocRow.ts","../src/primitives/DocSection.ts","../src/primitives/DocSpacer.ts","../src/primitives/DocTable.ts","../src/primitives/DocText.ts","../src/theme.ts","../src/useDocumentExport.ts"],"sourcesContent":["import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocumentPreview = rocketstyle({\n dimensions: {\n sizes: 'size',\n },\n useBooleans: true,\n})({ name: 'DocumentPreview', component: Element })\n .theme({\n backgroundColor: '#f5f5f5',\n padding: 40,\n })\n .sizes({\n A4: { width: '210mm', minHeight: '297mm' },\n A3: { width: '297mm', minHeight: '420mm' },\n A5: { width: '148mm', minHeight: '210mm' },\n letter: { width: '8.5in', minHeight: '11in' },\n legal: { width: '8.5in', minHeight: '14in' },\n })\n .styles(\n (css: any) => css`\n display: flex;\n flex-direction: column;\n align-items: center;\n min-height: 100vh;\n\n & > * {\n background: white;\n padding: 25mm;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n margin: 20px 0;\n }\n `,\n )\n .statics({ _documentType: 'document' as const })\n .attrs<{\n size?: string\n showPageBreaks?: boolean\n }>((props) => ({\n tag: 'div',\n _documentProps: {\n ...(props.size ? { size: props.size } : { size: 'A4' }),\n ...(props.showPageBreaks ? { showPageBreaks: props.showPageBreaks } : {}),\n },\n }))\n\nexport default DocumentPreview\n","import { Text } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocButton = rocketstyle({\n dimensions: {\n variants: 'variant',\n },\n useBooleans: true,\n})({ name: 'DocButton', component: Text })\n .theme({\n fontSize: 14,\n fontWeight: 'bold',\n padding: '10px 24px',\n borderRadius: 4,\n textAlign: 'center',\n textDecoration: 'none',\n })\n .variants({\n primary: {\n backgroundColor: '#4f46e5',\n color: '#ffffff',\n },\n secondary: {\n backgroundColor: '#ffffff',\n color: '#4f46e5',\n borderWidth: 1,\n borderColor: '#4f46e5',\n borderStyle: 'solid',\n },\n })\n .statics({ _documentType: 'button' as const })\n .attrs<{ href?: string }>((props) => ({\n tag: 'a',\n _documentProps: { href: props.href ?? '#' },\n }))\n\nexport default DocButton\n","import { Text } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocCode = rocketstyle()({ name: 'DocCode', component: Text })\n .theme({\n fontFamily: 'ui-monospace, monospace',\n fontSize: 13,\n backgroundColor: '#f5f5f5',\n padding: '8px 12px',\n borderRadius: 4,\n })\n .statics({ _documentType: 'code' as const })\n .attrs<{ language?: string }>((props) => ({\n tag: 'pre',\n _documentProps: props.language ? { language: props.language } : {},\n }))\n\nexport default DocCode\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocColumn = rocketstyle()({ name: 'DocColumn', component: Element })\n .statics({ _documentType: 'column' as const })\n .attrs<{ width?: number | string }>((props) => ({\n tag: 'div',\n _documentProps: props.width != null ? { width: props.width } : {},\n }))\n\nexport default DocColumn\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocDivider = rocketstyle()({ name: 'DocDivider', component: Element })\n .theme({\n borderColor: '#dddddd',\n borderWidth: 1,\n })\n .statics({ _documentType: 'divider' as const })\n .attrs<{\n color?: string\n thickness?: number\n }>((props) => ({\n tag: 'hr',\n _documentProps: {\n ...(props.color ? { color: props.color } : {}),\n ...(props.thickness ? { thickness: props.thickness } : {}),\n },\n }))\n\nexport default DocDivider\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\n/**\n * Root document container with metadata for the export pipeline.\n *\n * The `title`, `author`, and `subject` props each accept either a\n * plain `string` or a `() => string` accessor. Accessors are\n * resolved by `extractDocumentTree` at export time, so consumers\n * can pass live signal accessors without capturing values at\n * component mount.\n *\n * **Why accessors are needed**: rocketstyle's `.attrs()` callback\n * runs ONCE at component mount (see\n * `packages/ui-system/rocketstyle/src/hoc/rocketstyleAttrsHoc.ts`\n * line 38: \".attrs() callbacks run once at mount\"). If `title` were\n * `string`-only and a consumer wanted to bind it to a live signal,\n * they'd have to capture the initial value at template setup time\n * — meaning the export metadata would be permanently stale relative\n * to the live UI state.\n *\n * Storing the accessor in `_documentProps` and resolving it at\n * extraction time means every `extractDocumentTree` call (one per\n * export click) reads the live value. Plain string values still\n * work as before — `extractDocumentTree` only calls the value if\n * it's a function.\n *\n * @example Plain string\n * ```tsx\n * <DocDocument title=\"My Report\" author=\"Alice\">\n * ...\n * </DocDocument>\n * ```\n *\n * @example Reactive accessor (recommended for templates that drive\n * a live preview AND export the same tree)\n * ```tsx\n * function MyTemplate({ resume }: { resume: () => Resume }) {\n * return (\n * <DocDocument\n * title={() => `${resume().name} — Resume`}\n * author={() => resume().name}\n * >\n * ...\n * </DocDocument>\n * )\n * }\n * ```\n */\nconst DocDocument = rocketstyle()({ name: 'DocDocument', component: Element })\n .statics({ _documentType: 'document' as const })\n .attrs<{\n title?: string | (() => string)\n author?: string | (() => string)\n subject?: string | (() => string)\n }>((props) => ({\n tag: 'div',\n _documentProps: {\n // Pass accessor functions through unmodified — extractDocumentTree\n // resolves them at export time. Plain strings pass through too.\n // Empty / nullish values are omitted entirely so they don't\n // appear as `title: undefined` in the export metadata.\n ...(props.title != null ? { title: props.title } : {}),\n ...(props.author != null ? { author: props.author } : {}),\n ...(props.subject != null ? { subject: props.subject } : {}),\n },\n }))\n\nexport default DocDocument\n","import { Text } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocHeading = rocketstyle({\n dimensions: {\n levels: 'level',\n },\n useBooleans: true,\n})({ name: 'DocHeading', component: Text })\n .theme({\n fontWeight: 'bold',\n color: '#1a1a2e',\n marginBottom: 12,\n })\n .levels({\n h1: { fontSize: 32, lineHeight: 1.2 },\n h2: { fontSize: 24, lineHeight: 1.3 },\n h3: { fontSize: 20, lineHeight: 1.4 },\n h4: { fontSize: 18, lineHeight: 1.4 },\n h5: { fontSize: 16, lineHeight: 1.5 },\n h6: { fontSize: 14, lineHeight: 1.5 },\n })\n .statics({ _documentType: 'heading' as const })\n .attrs<{ level?: string }>((props) => {\n const lvl = props.level ?? 'h1'\n const num = Number.parseInt(String(lvl).replace('h', ''), 10) || 1\n return {\n tag: lvl,\n _documentProps: { level: num },\n }\n })\n\nexport default DocHeading\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocImage = rocketstyle()({ name: 'DocImage', component: Element })\n .statics({ _documentType: 'image' as const })\n .attrs<{\n src?: string\n alt?: string\n width?: number | string\n height?: number | string\n caption?: string\n }>((props) => ({\n tag: 'img',\n _documentProps: {\n src: props.src ?? '',\n ...(props.alt ? { alt: props.alt } : {}),\n ...(props.width ? { width: props.width } : {}),\n ...(props.height ? { height: props.height } : {}),\n ...(props.caption ? { caption: props.caption } : {}),\n },\n }))\n\nexport default DocImage\n","import { Text } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocLink = rocketstyle()({ name: 'DocLink', component: Text })\n .theme({\n color: '#4f46e5',\n textDecoration: 'underline',\n })\n .statics({ _documentType: 'link' as const })\n .attrs<{ href?: string }>((props) => ({\n tag: 'a',\n _documentProps: { href: props.href ?? '#' },\n }))\n\nexport default DocLink\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocList = rocketstyle()({ name: 'DocList', component: Element })\n .theme({\n marginBottom: 8,\n paddingLeft: 20,\n })\n .statics({ _documentType: 'list' as const })\n .attrs<{ ordered?: boolean }>((props) => ({\n tag: props.ordered ? 'ol' : 'ul',\n _documentProps: props.ordered ? { ordered: props.ordered } : {},\n }))\n\nexport default DocList\n","import { Text } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocListItem = rocketstyle()({ name: 'DocListItem', component: Text })\n .theme({\n fontSize: 14,\n lineHeight: 1.5,\n })\n .statics({ _documentType: 'list-item' as const })\n .attrs(() => ({\n tag: 'li',\n _documentProps: {},\n }))\n\nexport default DocListItem\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocPage = rocketstyle()({ name: 'DocPage', component: Element })\n .theme({\n backgroundColor: '#ffffff',\n padding: '25mm',\n })\n .statics({ _documentType: 'page' as const })\n .attrs<{\n size?: string\n orientation?: string\n }>((props) => ({\n tag: 'div',\n _documentProps: {\n ...(props.size ? { size: props.size } : {}),\n ...(props.orientation ? { orientation: props.orientation } : {}),\n },\n }))\n\nexport default DocPage\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocPageBreak = rocketstyle()({ name: 'DocPageBreak', component: Element })\n .statics({ _documentType: 'page-break' as const })\n .attrs(() => ({\n tag: 'div',\n _documentProps: {},\n }))\n\nexport default DocPageBreak\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocQuote = rocketstyle()({ name: 'DocQuote', component: Element })\n .theme({\n borderColor: '#4f46e5',\n padding: '8px 16px',\n fontStyle: 'italic',\n color: '#666666',\n })\n .statics({ _documentType: 'quote' as const })\n .attrs<{ borderColor?: string }>((props) => ({\n tag: 'blockquote',\n _documentProps: props.borderColor ? { borderColor: props.borderColor } : {},\n }))\n\nexport default DocQuote\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\n/**\n * Horizontal row of inline children. Per project conventions, layout\n * props (`direction`, `gap`) live in `.attrs()`, not `.theme()`. The\n * Element base accepts `direction: 'inline' | 'rows' | 'reverseInline'\n * | 'reverseRows'` — `'row'` is not a valid value.\n */\nconst DocRow = rocketstyle()({ name: 'DocRow', component: Element })\n .statics({ _documentType: 'row' as const })\n .attrs(() => ({\n tag: 'div',\n direction: 'inline' as const,\n gap: 8,\n _documentProps: {},\n }))\n\nexport default DocRow\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocSection = rocketstyle({\n dimensions: {\n directions: 'direction',\n },\n useBooleans: false,\n})({ name: 'DocSection', component: Element })\n .theme({\n padding: 0,\n })\n .directions({\n column: {},\n row: { direction: 'row' },\n })\n .statics({ _documentType: 'section' as const })\n .attrs<{ direction?: string }>((props) => ({\n tag: 'div',\n _documentProps: { direction: props.direction ?? 'column' },\n }))\n\nexport default DocSection\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocSpacer = rocketstyle()({ name: 'DocSpacer', component: Element })\n .statics({ _documentType: 'spacer' as const })\n .attrs<{ height?: number }>((props) => ({\n tag: 'div',\n _documentProps: { height: props.height ?? 16 },\n }))\n\nexport default DocSpacer\n","import { Element } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\n/**\n * Tabular data primitive.\n *\n * The `columns`, `rows`, `headerStyle`, `striped`, `bordered`, and\n * `caption` props are document-export metadata — they belong in\n * `_documentProps` only and must NOT be forwarded to the rendered\n * `<table>` element. The `filter` option on `.attrs()` strips them\n * from the props that flow into the DOM.\n *\n * Why this matters: HTMLTableElement's `rows` property is a\n * read-only `HTMLCollection` of `<tr>` elements. If `rows` were\n * forwarded as a DOM attr, the runtime would call\n * `el.rows = [...]` and crash with\n * `TypeError: Cannot set property rows of [object Object] which has\n * only a getter`. Same family for `columns` (`HTMLTableColElement`'s\n * column collection on parent table). Filtering them at the\n * rocketstyle layer keeps the DOM render path clean.\n */\nconst DocTable = rocketstyle({\n dimensions: {\n variants: 'variant',\n },\n useBooleans: true,\n})({ name: 'DocTable', component: Element })\n .theme({\n fontSize: 14,\n borderColor: '#dddddd',\n })\n .statics({ _documentType: 'table' as const })\n .attrs<{\n columns?: unknown[]\n rows?: unknown[]\n headerStyle?: Record<string, unknown>\n striped?: boolean\n bordered?: boolean\n caption?: string\n }>(\n (props) => ({\n tag: 'table',\n _documentProps: {\n columns: props.columns ?? [],\n rows: props.rows ?? [],\n ...(props.headerStyle ? { headerStyle: props.headerStyle } : {}),\n ...(props.striped ? { striped: props.striped } : {}),\n ...(props.bordered ? { bordered: props.bordered } : {}),\n ...(props.caption ? { caption: props.caption } : {}),\n },\n }),\n {\n filter: ['columns', 'rows', 'headerStyle', 'striped', 'bordered', 'caption'],\n },\n )\n\nexport default DocTable\n","import { Text } from '@pyreon/elements'\nimport rocketstyle from '@pyreon/rocketstyle'\n\nconst DocText = rocketstyle({\n dimensions: {\n variants: 'variant',\n weights: 'weight',\n },\n useBooleans: true,\n})({ name: 'DocText', component: Text })\n .theme({\n color: '#333333',\n lineHeight: 1.5,\n marginBottom: 8,\n })\n .variants({\n body: { fontSize: 14 },\n caption: { fontSize: 12, color: '#666666' },\n label: { fontSize: 11, fontWeight: 'bold' },\n })\n .weights({\n normal: { fontWeight: 'normal' },\n bold: { fontWeight: 'bold' },\n })\n .statics({ _documentType: 'text' as const })\n .attrs(() => ({\n tag: 'p',\n _documentProps: {},\n }))\n\nexport default DocText\n","export const documentTheme = {\n colors: {\n primary: '#4f46e5',\n text: '#333333',\n textSecondary: '#666666',\n background: '#ffffff',\n border: '#dddddd',\n headerBg: '#1a1a2e',\n headerText: '#ffffff',\n stripedRow: '#f9f9f9',\n },\n fonts: {\n heading: 'system-ui, -apple-system, sans-serif',\n body: 'system-ui, -apple-system, sans-serif',\n mono: 'ui-monospace, monospace',\n },\n sizes: {\n h1: 32,\n h2: 24,\n h3: 20,\n h4: 18,\n h5: 16,\n h6: 14,\n body: 14,\n caption: 12,\n label: 11,\n },\n spacing: {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 40,\n },\n}\n\nexport type DocumentTheme = typeof documentTheme\n","import type { DocNode, ExtractOptions } from '@pyreon/connector-document'\nimport { extractDocumentTree } from '@pyreon/connector-document'\n\nexport interface DocumentExportOptions extends ExtractOptions {\n /** Theme object to provide during extraction. */\n theme?: Record<string, unknown>\n /** Mode: 'light' or 'dark'. */\n mode?: 'light' | 'dark'\n}\n\nexport interface DocumentExport {\n /** Extract the DocNode tree from the template. */\n getDocNode: () => DocNode\n}\n\n/**\n * One-step helper: extract a DocNode tree from a template function.\n *\n * Equivalent to `createDocumentExport(templateFn).getDocNode()` but\n * without the wrapper-object indirection. Use this when you just\n * need the tree to feed into `@pyreon/document`'s `render()` or\n * `download()` — which is the only thing the wrapper object was\n * ever used for in practice.\n *\n * ```ts\n * import { extractDocNode } from '@pyreon/document-primitives'\n * import { download } from '@pyreon/document'\n *\n * function ResumeTemplate({ resume }: { resume: () => Resume }) {\n * return (\n * <DocDocument title={() => `${resume().name} — Resume`}>\n * <DocPage>...</DocPage>\n * </DocDocument>\n * )\n * }\n *\n * // Export click handler:\n * const tree = extractDocNode(() => <ResumeTemplate resume={store.resume} />)\n * await download(tree, 'resume.pdf')\n * ```\n *\n * The two-step `createDocumentExport` form is still exported for\n * backward compatibility and for callers that want to pass the\n * helper object around (e.g. to wrapper components that take a\n * `DocumentExport` instance). New code should prefer this one-step\n * form unless you specifically need the helper object.\n */\nexport function extractDocNode(\n templateFn: () => unknown,\n options: DocumentExportOptions = {},\n): DocNode {\n return extractDocumentTree(templateFn(), options)\n}\n\n/**\n * Create a document export helper from a template function.\n *\n * The template function should return a VNode tree built with\n * document primitives (DocHeading, DocText, DocTable, etc.).\n *\n * ```ts\n * const doc = createDocumentExport(() =>\n * DocDocument({ title: 'Report', children: [\n * DocHeading({ h1: true, children: 'Sales Report' }),\n * DocText({ children: 'Q4 summary.' }),\n * ]})\n * )\n *\n * const tree = doc.getDocNode()\n * // Pass to @pyreon/document's render() for any format\n * ```\n *\n * **Most consumers should use `extractDocNode(templateFn)` instead**\n * — it's the same operation in one call without the wrapper\n * object. `createDocumentExport` is kept for callers that want to\n * pass the helper object around.\n */\nexport function createDocumentExport(\n templateFn: () => unknown,\n options: DocumentExportOptions = {},\n): DocumentExport {\n const getDocNode = (): DocNode => extractDocNode(templateFn, options)\n return { getDocNode }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pyreon/document-primitives",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.1",
|
|
4
4
|
"description": "Rocketstyle document components — render in browser, export to 18 formats",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"lib",
|
|
13
|
-
"!lib/**/*.map",
|
|
14
13
|
"!lib/analysis",
|
|
15
14
|
"README.md",
|
|
16
15
|
"LICENSE"
|
|
@@ -40,25 +39,25 @@
|
|
|
40
39
|
"typecheck": "tsc --noEmit"
|
|
41
40
|
},
|
|
42
41
|
"dependencies": {
|
|
43
|
-
"@pyreon/connector-document": "^0.
|
|
44
|
-
"@pyreon/core": "^0.
|
|
45
|
-
"@pyreon/document": "^0.
|
|
46
|
-
"@pyreon/elements": "^0.
|
|
47
|
-
"@pyreon/rocketstyle": "^0.
|
|
48
|
-
"@pyreon/styler": "^0.
|
|
49
|
-
"@pyreon/ui-core": "^0.
|
|
42
|
+
"@pyreon/connector-document": "^0.25.1",
|
|
43
|
+
"@pyreon/core": "^0.25.1",
|
|
44
|
+
"@pyreon/document": "^0.25.1",
|
|
45
|
+
"@pyreon/elements": "^0.25.1",
|
|
46
|
+
"@pyreon/rocketstyle": "^0.25.1",
|
|
47
|
+
"@pyreon/styler": "^0.25.1",
|
|
48
|
+
"@pyreon/ui-core": "^0.25.1"
|
|
50
49
|
},
|
|
51
50
|
"devDependencies": {
|
|
52
|
-
"@pyreon/core": "^0.
|
|
53
|
-
"@pyreon/elements": "^0.
|
|
51
|
+
"@pyreon/core": "^0.25.1",
|
|
52
|
+
"@pyreon/elements": "^0.25.1",
|
|
54
53
|
"@pyreon/manifest": "0.13.1",
|
|
55
|
-
"@pyreon/reactivity": "^0.
|
|
56
|
-
"@pyreon/rocketstyle": "^0.
|
|
57
|
-
"@pyreon/runtime-dom": "^0.
|
|
58
|
-
"@pyreon/styler": "^0.
|
|
59
|
-
"@pyreon/test-utils": "^0.13.
|
|
60
|
-
"@pyreon/typescript": "^0.
|
|
61
|
-
"@pyreon/ui-core": "^0.
|
|
54
|
+
"@pyreon/reactivity": "^0.25.1",
|
|
55
|
+
"@pyreon/rocketstyle": "^0.25.1",
|
|
56
|
+
"@pyreon/runtime-dom": "^0.25.1",
|
|
57
|
+
"@pyreon/styler": "^0.25.1",
|
|
58
|
+
"@pyreon/test-utils": "^0.13.12",
|
|
59
|
+
"@pyreon/typescript": "^0.25.1",
|
|
60
|
+
"@pyreon/ui-core": "^0.25.1",
|
|
62
61
|
"@vitest/browser-playwright": "^4.1.4",
|
|
63
62
|
"@vitus-labs/tools-rolldown": "^2.4.0"
|
|
64
63
|
},
|