nodoku-core 0.1.7 → 0.2.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.
@@ -9,7 +9,7 @@
9
9
  "type": "object",
10
10
  "properties": {
11
11
  "theme": {
12
- "$ref": "../node_modules/nodoku-core/schemas/skin-common-schema.json#/definitions/ThemeStyle",
12
+ "$ref": "../node_modules/nodoku-core/schemas/skin-common-schema.json#/definitions/RowThemeStyle",
13
13
  "additionalProperties": false
14
14
  },
15
15
  "maxCols": {
@@ -51,7 +51,7 @@ export class NdContentBlock {
51
51
  h6;
52
52
  footer;
53
53
  paragraphs = [];
54
- bgImageUrl;
54
+ // bgImageUrl?: NdTranslatableText;
55
55
  images = [];
56
56
  htmlElements = [];
57
57
  constructor(id, ns, lng) {
@@ -1,5 +1,4 @@
1
1
  import { NdCode, NdTranslatableText } from "../content/nd-content";
2
- // import {CodeComp} from "./code-comp";
3
2
  export async function DummyComp(props) {
4
3
  // console.log("content dummy comp", props.theme)
5
4
  const { content, i18nextProvider, lng, rowIndex, componentIndex } = props;
@@ -7,13 +6,14 @@ export async function DummyComp(props) {
7
6
  return <div>{await render(rowIndex, componentIndex, content[0], t)}</div>;
8
7
  }
9
8
  async function render(rowIndex, componentIndex, block, t) {
10
- var style = {};
11
- if (block.bgImageUrl) {
12
- style = { backgroundImage: `url(${t(block.bgImageUrl)})` };
13
- }
9
+ // var style = {};
10
+ // if (block.bgImageUrl) {
11
+ // style = {backgroundImage: `url(${t(block.bgImageUrl)})`}
12
+ // }
14
13
  return (<div className={"w-full w-full flex flex-col items-left justify-left border border-4 border-red-200 relative pb-10"}>
15
- <div className={"top-0 bottom-0 left-0 right-0 absolute bg-cover bg-no-repeat"} style={{ ...style, zIndex: -11 }}>
16
- </div>
14
+ {/*<div className={"top-0 bottom-0 left-0 right-0 absolute bg-cover bg-no-repeat"}*/}
15
+ {/* style={{...style, zIndex: -11}}>*/}
16
+ {/*</div>*/}
17
17
  <div className={"top-0 bottom-0 left-0 right-0 absolute bg-white "} style={{ zIndex: -5, opacity: 0.7 }}>
18
18
  </div>
19
19
  <div className={"p-5 w-full bg-red-400 text-center"}>dummy component<h3><b>{`ns-${block.namespace}-row-${rowIndex}-i-${componentIndex}`}</b></h3></div>
@@ -21,15 +21,15 @@ export class RenderingPageProps {
21
21
  skin = undefined;
22
22
  renderingPriority = RenderingPriority.content_first;
23
23
  componentResolver = undefined;
24
- imageUrlProvider = undefined;
24
+ imageProvider = undefined;
25
25
  i18nextProvider = undefined;
26
- constructor(lng, content, componentResolver, skin = undefined, renderingPriority = RenderingPriority.content_first, imageUrlProvider = undefined, i18nextProvider = undefined) {
26
+ constructor(lng, content, componentResolver, skin = undefined, renderingPriority = RenderingPriority.content_first, imageProvider = undefined, i18nextProvider = undefined) {
27
27
  this.lng = lng;
28
28
  this.renderingPriority = renderingPriority;
29
29
  this.content = content;
30
30
  this.componentResolver = componentResolver;
31
31
  this.skin = skin;
32
- this.imageUrlProvider = imageUrlProvider;
32
+ this.imageProvider = imageProvider;
33
33
  this.i18nextProvider = i18nextProvider;
34
34
  }
35
35
  }
@@ -5,15 +5,17 @@ import { DummyComp } from "./dummy-comp";
5
5
  import yaml from "js-yaml";
6
6
  import fs from "node:fs";
7
7
  import { mergeTheme } from "../theme-utils/theme-merger";
8
+ import { defaultRowThemeImpl } from "../theme-utils/row-style";
8
9
  async function defaultComponentResolver() {
9
10
  const compoDef = new NdComponentDefinition("unlimited", undefined, {});
10
11
  return { compo: DummyComp, compoDef: compoDef };
11
12
  }
12
- async function defaultImageUrlProvider(imageUrl) {
13
- return imageUrl;
13
+ async function defaultImageProvider(imageProps) {
14
+ const { imageStyle, url, alt } = imageProps;
15
+ return <img className={`${imageStyle?.base} ${imageStyle?.decoration}`} src={url} alt={alt}/>;
14
16
  }
15
17
  async function RenderingPage(props) {
16
- const { lng, renderingPriority, content, componentResolver, skin, imageUrlProvider, i18nextProvider } = props;
18
+ const { lng, renderingPriority, content, componentResolver, skin, imageProvider, i18nextProvider } = props;
17
19
  const actualComponentResolver = componentResolver ? componentResolver : defaultComponentResolver;
18
20
  let l;
19
21
  if (skin) {
@@ -23,10 +25,10 @@ async function RenderingPage(props) {
23
25
  }
24
26
  // console.log(" >>> this is my content <<< ", content)
25
27
  // console.log(" >>> this is my skin <<< ", JSON.stringify(blockSkin))
26
- l = await Promise.all(blockSkin.rows.map(async (row, iRow) => await createRow(row, iRow, content, lng, imageUrlProvider, i18nextProvider, actualComponentResolver)));
28
+ l = await Promise.all(blockSkin.rows.map(async (row, iRow) => await createRow(row, iRow, content, lng, imageProvider, i18nextProvider, actualComponentResolver)));
27
29
  }
28
30
  else {
29
- l = [await createRow(undefined, 0, content, lng, imageUrlProvider, i18nextProvider, actualComponentResolver)];
31
+ l = [await createRow(undefined, 0, content, lng, imageProvider, i18nextProvider, actualComponentResolver)];
30
32
  }
31
33
  return <div className={`${skin?.renderingPage?.base} ${skin?.renderingPage?.decoration}`}>{l}</div>;
32
34
  }
@@ -35,7 +37,7 @@ function generateSkinByContentBlocks(blocks, skin) {
35
37
  let currentRow = undefined;
36
38
  const res = new NdPageSkin();
37
39
  let rowIndex = 0;
38
- blocks.map((b, i) => {
40
+ blocks.map((b) => {
39
41
  if (!rendered.has(b.id)) {
40
42
  const bRows = skin.rows.filter(r => r.components.filter(c => c.selector.match(b)).length > 0);
41
43
  if (bRows.length > 0) {
@@ -62,66 +64,85 @@ function generateSkinByContentBlocks(blocks, skin) {
62
64
  // console.log("generated skin", JSON.stringify(res))
63
65
  return res;
64
66
  }
65
- async function createRow(row, iRow, blocks, lng, imageUrlProvider, i18nProvider, componentResolver) {
67
+ async function createRow(row, iRow, blocks, lng, imageProvider, i18nProvider, componentResolver) {
66
68
  let l;
67
69
  if (row) {
68
- l = await Promise.all(row.components.map(async (visualSection, iComp) => await createRowComponents(iRow, iComp, visualSection, blocks, lng, imageUrlProvider, i18nProvider, componentResolver)));
70
+ l = await Promise.all(row.components.map(async (visualSection, iComp) => await createRowComponents(iRow, iComp, visualSection, blocks, lng, imageProvider, i18nProvider, componentResolver)));
69
71
  }
70
72
  else {
71
- l = await Promise.all(blocks.map(async (block, iComp) => await createRowComponents(iRow, iComp, undefined, [block], lng, imageUrlProvider, i18nProvider, componentResolver)));
73
+ l = await Promise.all(blocks.map(async (block, iComp) => await createRowComponents(iRow, iComp, undefined, [block], lng, imageProvider, i18nProvider, componentResolver)));
72
74
  }
73
75
  const rowComponents = l.flatMap((p) => p);
74
76
  if (rowComponents.length == 0) {
75
77
  return <></>;
76
78
  }
77
79
  const numComponents = rowComponents.length;
78
- const rowEffectiveTheme = mergeTheme(row?.theme, NdRow.defaultRowTheme);
80
+ const rowEffectiveTheme = mergeTheme(row?.theme, defaultRowThemeImpl);
79
81
  const maxCols = row?.maxCols ? row.maxCols : 3;
80
82
  const numCols = numComponents <= maxCols ? numComponents : maxCols;
81
83
  let gridCols = "grid-cols-1";
84
+ let flexBasis = "basis-full";
82
85
  switch (numCols) {
83
86
  case 1:
84
87
  gridCols = "lg:grid-cols-1";
88
+ flexBasis = "lg:basis-full";
85
89
  break;
86
90
  case 2:
87
91
  gridCols = "lg:grid-cols-2";
92
+ flexBasis = "lg:basis-1/2";
88
93
  break;
89
94
  case 3:
90
95
  gridCols = "lg:grid-cols-3";
96
+ flexBasis = "lg:basis-1/3";
91
97
  break;
92
98
  case 4:
93
99
  gridCols = "lg:grid-cols-4";
100
+ flexBasis = "lg:basis-1/4";
94
101
  break;
95
102
  case 5:
96
103
  gridCols = "lg:grid-cols-5";
104
+ flexBasis = "lg:basis-1/5";
97
105
  break;
98
106
  case 6:
99
107
  gridCols = "lg:grid-cols-6";
108
+ flexBasis = "lg:basis-1/6";
100
109
  break;
101
110
  case 7:
102
111
  gridCols = "lg:grid-cols-7";
112
+ flexBasis = "lg:basis-1/7";
103
113
  break;
104
114
  case 8:
105
115
  gridCols = "lg:grid-cols-8";
116
+ flexBasis = "lg:basis-1/8";
106
117
  break;
107
118
  case 9:
108
119
  gridCols = "lg:grid-cols-9";
120
+ flexBasis = "lg:basis-1/9";
109
121
  break;
110
122
  case 10:
111
123
  gridCols = "lg:grid-cols-10";
124
+ flexBasis = "lg:basis-1/10";
112
125
  break;
113
126
  case 11:
114
127
  gridCols = "lg:grid-cols-11";
128
+ flexBasis = "lg:basis-1/11";
115
129
  break;
116
130
  case 12:
117
131
  gridCols = "lg:grid-cols-12";
132
+ flexBasis = "lg:basis-1/12";
118
133
  break;
119
134
  }
120
- return (<div key={`row-${iRow}`} className={`grid ${gridCols} ${rowEffectiveTheme?.base} ${rowEffectiveTheme?.decoration} class-row-${iRow}`}>
121
- {rowComponents}
135
+ let rowDisplay = `grid ${gridCols}`;
136
+ if (rowEffectiveTheme.rowDisplay == "flex") {
137
+ rowDisplay = "flex flex-row justify-center flex-wrap flex-1";
138
+ }
139
+ return (<div key={`row-${iRow}`} className={`${rowDisplay} ${rowEffectiveTheme?.base} ${rowEffectiveTheme?.decoration} class-row-${iRow}`}>
140
+ {rowComponents.map((c) => <div className={`nd-component-holder ${flexBasis} ${rowEffectiveTheme.componentHolder?.base} ${rowEffectiveTheme.componentHolder?.decoration}`}>
141
+ {c}
142
+ </div>)}
122
143
  </div>);
123
144
  }
124
- async function createRowComponents(rowIndex, blockIndex, skinComponent, pageContent, lng, imageUrlProvide, i18nProvider, componentResolver) {
145
+ async function createRowComponents(rowIndex, blockIndex, skinComponent, pageContent, lng, imageProvider, i18nProvider, componentResolver) {
125
146
  // console.log("before component", skinComponent)
126
147
  const filteredBlocks = skinComponent ? skinComponent.selector.filterBlocks(pageContent) : pageContent;
127
148
  if (filteredBlocks.length == 0) {
@@ -147,14 +168,14 @@ async function createRowComponents(rowIndex, blockIndex, skinComponent, pageCont
147
168
  const blocks = filteredBlocks.slice(start, end);
148
169
  const compIndex = blockIndex * filteredBlocks.length + i;
149
170
  // console.log("calculated compo index ", compIndex, "filteredBlocks.length", filteredBlocks.length, "blockIndex", blockIndex)
150
- res.push(await renderSingleComponent(rowIndex, compIndex, compo, blocks, skinComponent?.defaultThemeName || "light", compoDef.defaultTheme, skinComponent?.themeHierarchy, lng, imageUrlProvide, i18nProvider));
171
+ res.push(await renderSingleComponent(rowIndex, compIndex, compo, blocks, skinComponent?.defaultThemeName || "light", compoDef.defaultTheme, skinComponent?.themeHierarchy, lng, imageProvider, i18nProvider));
151
172
  }
152
173
  start = end;
153
174
  ++i;
154
175
  } while (end < filteredBlocks.length);
155
176
  return res;
156
177
  }
157
- async function renderSingleComponent(rowIndex, componentIndex, component, blocks, defaultThemeName, defaultTheme, themeHierarchy, lng, imageUrlProvider, i18nextProvider) {
178
+ async function renderSingleComponent(rowIndex, componentIndex, component, blocks, defaultThemeName, defaultTheme, themeHierarchy, lng, imageProvider, i18nextProvider) {
158
179
  let actualI18nextProvider;
159
180
  if (lng == blocks[0].lng || !i18nextProvider) {
160
181
  actualI18nextProvider = async (lng) => {
@@ -167,7 +188,7 @@ async function renderSingleComponent(rowIndex, componentIndex, component, blocks
167
188
  else {
168
189
  actualI18nextProvider = i18nextProvider;
169
190
  }
170
- const actualImageUrlProvider = imageUrlProvider ? imageUrlProvider : defaultImageUrlProvider;
191
+ const actualImageProvider = imageProvider ? imageProvider : defaultImageProvider;
171
192
  // if (themeHierarchy) {
172
193
  // console.log("themeHierarchy", themeHierarchy)
173
194
  // }
@@ -182,12 +203,12 @@ async function renderSingleComponent(rowIndex, componentIndex, component, blocks
182
203
  themes: effectiveThemes,
183
204
  options: effectiveOptions,
184
205
  lng: lng,
185
- imageUrlProvider: actualImageUrlProvider,
206
+ imageProvider: actualImageProvider,
186
207
  i18nextProvider: actualI18nextProvider
187
208
  };
188
209
  // console.log("start rendering page with props", props);
189
210
  const res = await component(props);
190
211
  // console.log("end rendering page with props", props);
191
- return <div className={"nd-component-holder"} style={{ minWidth: 0 }}>{res}</div>;
212
+ return res;
192
213
  }
193
214
  export { RenderingPage };
package/esm/index.js CHANGED
@@ -3,11 +3,16 @@ import { NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSele
3
3
  import { RenderingPageProps, RenderingPriority } from "./core/rendering-page-props";
4
4
  import { RenderingPage } from "./core/rendering-page";
5
5
  import { mergeTheme } from "./theme-utils/theme-merger";
6
- import { ThemeStyle } from "./theme-utils/theme-style";
7
- import { ExtendedThemeStyle } from "./theme-utils/extended-theme-style";
6
+ import { defaultRowThemeImpl } from "./theme-utils/row-style";
8
7
  export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy };
9
8
  export { RenderingPageProps, RenderingPriority, RenderingPage };
10
- export { mergeTheme, ThemeStyle, ExtendedThemeStyle };
9
+ export { mergeTheme };
11
10
  export { DummyComp } from "./core/dummy-comp";
12
11
  export { contentMarkdownProvider, parseMarkdownAsContent } from "./providers/content/content-markdown-provider";
13
12
  export { skinYamlProvider, parseYamlContentAsSkin } from "./providers/skin/skin-yaml-provider";
13
+ export const ts = function (t, key) {
14
+ const themeStyle = t[key];
15
+ const k = key;
16
+ return k + " " + themeStyle?.base + " " + themeStyle?.decoration;
17
+ };
18
+ export const defaultRowTheme = defaultRowThemeImpl;
@@ -250,9 +250,10 @@ class BlockHolder {
250
250
  if (this.blockContent.footer && this.blockContent.footer.trim().length > 0) {
251
251
  newBlock.footer = new NdTranslatableText(this.ns, `${blockId}.footer`, this.blockContent.footer);
252
252
  }
253
- if (this.blockContent.bgImage && this.blockContent.bgImage.getAttribute("src")) {
254
- newBlock.bgImageUrl = new NdTranslatableText(this.ns, `${blockId}.bgImageUrl`, this.blockContent.bgImage.getAttribute("src"), true);
255
- }
253
+ // if (this.blockContent.bgImage && this.blockContent.bgImage.getAttribute("src")) {
254
+ // newBlock.bgImageUrl = new NdTranslatableText(this.ns, `${blockId}.bgImageUrl`,
255
+ // this.blockContent.bgImage.getAttribute("src") as string, true);
256
+ // }
256
257
  // console.log("added block", newBlock)
257
258
  return newBlock;
258
259
  }
@@ -348,12 +349,11 @@ export function parseMarkdownAsContent(fileContents, contentLng, ns) {
348
349
  childNode.childNodes.filter(cn => cn.rawTagName == "img")
349
350
  .forEach((cn) => {
350
351
  const l = cn;
351
- if (l.getAttribute("alt") === "bg-image") {
352
- currentBlock.blockContent.bgImage = l;
353
- }
354
- else {
355
- currentBlock.addImage(cn);
356
- }
352
+ // if (l.getAttribute("alt") === "bg-image") {
353
+ // currentBlock.blockContent.bgImage = l;
354
+ // } else {
355
+ currentBlock.addImage(cn);
356
+ // }
357
357
  });
358
358
  }
359
359
  else {
@@ -72,10 +72,6 @@ export class NdRow {
72
72
  constructor(rowIndex) {
73
73
  this.rowIndex = rowIndex;
74
74
  }
75
- static defaultRowTheme = {
76
- base: "md:grid-cols-1",
77
- decoration: "gap-4"
78
- };
79
75
  }
80
76
  export class NdPageSkin {
81
77
  renderingPage;
@@ -121,9 +117,9 @@ export class NdSkinComponentProps {
121
117
  themes;
122
118
  options;
123
119
  lng;
124
- imageUrlProvider;
120
+ imageProvider;
125
121
  i18nextProvider;
126
- constructor(rowIndex, componentIndex, content, defaultThemeName, theme, themes, options, lng, imageUrlProvider, i18nextProvider) {
122
+ constructor(rowIndex, componentIndex, content, defaultThemeName, theme, themes, options, lng, imageProvider, i18nextProvider) {
127
123
  this.rowIndex = rowIndex;
128
124
  this.componentIndex = componentIndex;
129
125
  this.content = content;
@@ -132,7 +128,7 @@ export class NdSkinComponentProps {
132
128
  this.themes = themes.slice();
133
129
  this.options = options;
134
130
  this.lng = lng;
135
- this.imageUrlProvider = imageUrlProvider;
131
+ this.imageProvider = imageProvider;
136
132
  this.i18nextProvider = i18nextProvider;
137
133
  }
138
134
  }
@@ -1,4 +1 @@
1
- import { ThemeStyle } from "./theme-style";
2
- export class ExtendedThemeStyle extends ThemeStyle {
3
- css;
4
- }
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export const defaultRowThemeImpl = {
2
+ base: "md:grid-cols-1",
3
+ decoration: "gap-4",
4
+ rowDisplay: "grid",
5
+ componentHolder: {
6
+ base: "min-w-0 overflow-hidden",
7
+ decoration: ""
8
+ },
9
+ };
@@ -1,8 +1 @@
1
- export class ThemeStyle {
2
- base;
3
- decoration;
4
- constructor(base, decoration) {
5
- this.base = base;
6
- this.decoration = decoration;
7
- }
8
- }
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodoku-core",
3
- "version": "0.1.7",
3
+ "version": "0.2.1",
4
4
  "description": "basic foundation for nodoku static site generator",
5
5
  "exports": {
6
6
  ".": {
@@ -48,6 +48,47 @@
48
48
  ]
49
49
  },
50
50
 
51
+ "ImageStyle": {
52
+ "allOf": [
53
+ {
54
+ "$ref": "#/definitions/ThemeStyle"
55
+ },
56
+ {
57
+ "type": "object",
58
+ "properties": {
59
+ "imageWidth": {
60
+ "type": "string"
61
+ }
62
+ },
63
+ "additionalProperties": false
64
+ }
65
+ ],
66
+ "additionalProperties": false
67
+ },
68
+
69
+
70
+ "RowThemeStyle": {
71
+ "allOf": [
72
+ {
73
+ "$ref": "#/definitions/ThemeStyle"
74
+ },
75
+ {
76
+ "type": "object",
77
+ "properties": {
78
+ "rowDisplay": {
79
+ "type": "string",
80
+ "enum": ["flex", "grid"]
81
+ },
82
+ "componentHolder": {
83
+ "$ref": "#/definitions/ThemeStyle"
84
+ }
85
+ },
86
+ "additionalProperties": false
87
+ }
88
+ ],
89
+ "additionalProperties": false
90
+ },
91
+
51
92
 
52
93
 
53
94
  "Selector": {
@@ -40,7 +40,6 @@ export declare class NdContentBlock {
40
40
  h6?: NdTranslatableText;
41
41
  footer?: NdTranslatableText;
42
42
  paragraphs: (NdTranslatableText | NdList | NdCode)[];
43
- bgImageUrl?: NdTranslatableText;
44
43
  images: NdContentImage[];
45
44
  htmlElements: {
46
45
  htmlElem: HTMLElement;
@@ -1,6 +1,13 @@
1
1
  import { JSX } from "react";
2
2
  import { NdComponentDefinition, NdSkinComponentProps } from "../skin/nd-skin";
3
3
  import { NdTranslatableText } from "../content/nd-content";
4
+ import { ImageStyle } from "../theme-utils/image-style";
5
+ export type NdImageProps = {
6
+ url: string;
7
+ alt?: string;
8
+ title?: string;
9
+ imageStyle?: ImageStyle;
10
+ };
4
11
  export type AsyncFunctionComponent = (props: NdSkinComponentProps) => Promise<JSX.Element>;
5
12
  export type ComponentResolver = (componentName: string) => Promise<{
6
13
  compo: AsyncFunctionComponent;
@@ -9,4 +16,4 @@ export type ComponentResolver = (componentName: string) => Promise<{
9
16
  export type I18nextProvider = (lng: string) => Promise<{
10
17
  t: (text: NdTranslatableText) => string;
11
18
  }>;
12
- export type ImageUrlProvider = (imageUrl: string) => Promise<string>;
19
+ export type ImageProvider = (imageProps: NdImageProps) => Promise<JSX.Element>;
@@ -1,4 +1,4 @@
1
- import { ComponentResolver, I18nextProvider, ImageUrlProvider } from "./providers";
1
+ import { ComponentResolver, I18nextProvider, ImageProvider } from "./providers";
2
2
  import { NdContentBlock } from "../content/nd-content";
3
3
  import { NdPageSkin } from "../skin/nd-skin";
4
4
  export declare enum RenderingPriority {
@@ -11,7 +11,7 @@ export declare class RenderingPageProps {
11
11
  skin: NdPageSkin | undefined;
12
12
  renderingPriority: RenderingPriority;
13
13
  componentResolver: ComponentResolver | undefined;
14
- imageUrlProvider: ImageUrlProvider | undefined;
14
+ imageProvider: ImageProvider | undefined;
15
15
  i18nextProvider: I18nextProvider | undefined;
16
- constructor(lng: string, content: NdContentBlock[], componentResolver: ComponentResolver | undefined, skin?: NdPageSkin | undefined, renderingPriority?: RenderingPriority, imageUrlProvider?: ImageUrlProvider | undefined, i18nextProvider?: I18nextProvider | undefined);
16
+ constructor(lng: string, content: NdContentBlock[], componentResolver: ComponentResolver | undefined, skin?: NdPageSkin | undefined, renderingPriority?: RenderingPriority, imageProvider?: ImageProvider | undefined, i18nextProvider?: I18nextProvider | undefined);
17
17
  }
package/types/index.d.ts CHANGED
@@ -2,14 +2,18 @@ import { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock } fr
2
2
  import { NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy, NdDefaultThemeName } from "./skin/nd-skin";
3
3
  import { RenderingPageProps, RenderingPriority } from "./core/rendering-page-props";
4
4
  import { RenderingPage } from "./core/rendering-page";
5
- import { I18nextProvider, AsyncFunctionComponent, ImageUrlProvider } from "./core/providers";
5
+ import { I18nextProvider, AsyncFunctionComponent, ImageProvider, NdImageProps } from "./core/providers";
6
6
  import { mergeTheme } from "./theme-utils/theme-merger";
7
7
  import { ThemeStyle } from "./theme-utils/theme-style";
8
8
  import { ExtendedThemeStyle } from "./theme-utils/extended-theme-style";
9
- export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy, type NdDefaultThemeName };
9
+ import { ImageStyle } from "./theme-utils/image-style";
10
+ import { RowStyle } from "./theme-utils/row-style";
11
+ export { NdContentImage, NdTranslatableText, NdList, NdCode, NdContentBlock, NdSkinComponent, NdRow, NdPageSkin, NdSkinComponentProps, NdContentSelector, NdComponentDefinition, NdThemeHierarchy, type NdDefaultThemeName, type NdImageProps };
10
12
  export { RenderingPageProps, RenderingPriority, RenderingPage };
11
- export { mergeTheme, ThemeStyle, ExtendedThemeStyle };
12
- export type { I18nextProvider, AsyncFunctionComponent, ImageUrlProvider };
13
+ export { mergeTheme, type ThemeStyle, type ExtendedThemeStyle, type ImageStyle };
14
+ export type { I18nextProvider, AsyncFunctionComponent, ImageProvider };
13
15
  export { DummyComp } from "./core/dummy-comp";
14
16
  export { contentMarkdownProvider, parseMarkdownAsContent } from "./providers/content/content-markdown-provider";
15
17
  export { skinYamlProvider, parseYamlContentAsSkin } from "./providers/skin/skin-yaml-provider";
18
+ export declare const ts: <T>(t: T, key: keyof T) => string;
19
+ export declare const defaultRowTheme: RowStyle;
@@ -1,6 +1,7 @@
1
- import { I18nextProvider, ImageUrlProvider } from "../core/providers";
1
+ import { I18nextProvider, ImageProvider } from "../core/providers";
2
2
  import { NdContentBlock } from "../content/nd-content";
3
3
  import { ThemeStyle } from "../theme-utils/theme-style";
4
+ import { RowStyle } from "../theme-utils/row-style";
4
5
  export type NdDefaultThemeName = "light" | "dark";
5
6
  export declare class NdThemeHierarchy {
6
7
  defaultThemeName: NdDefaultThemeName;
@@ -31,10 +32,9 @@ export declare class NdSkinComponent {
31
32
  export declare class NdRow {
32
33
  rowIndex: number;
33
34
  maxCols?: number;
34
- theme: ThemeStyle | undefined;
35
+ theme?: RowStyle;
35
36
  components: NdSkinComponent[];
36
37
  constructor(rowIndex: number);
37
- static defaultRowTheme: ThemeStyle;
38
38
  }
39
39
  export declare class NdPageSkin {
40
40
  renderingPage: ThemeStyle | undefined;
@@ -69,7 +69,7 @@ export declare class NdSkinComponentProps<TComponentTheme = any, TComponentOptio
69
69
  themes: TComponentTheme[];
70
70
  options: TComponentOptions | undefined;
71
71
  lng: string;
72
- imageUrlProvider: ImageUrlProvider;
72
+ imageProvider: ImageProvider;
73
73
  i18nextProvider: I18nextProvider;
74
- constructor(rowIndex: number, componentIndex: number, content: NdContentBlock[], defaultThemeName: NdDefaultThemeName, theme: TComponentTheme, themes: TComponentTheme[], options: TComponentOptions, lng: string, imageUrlProvider: ImageUrlProvider, i18nextProvider: I18nextProvider);
74
+ constructor(rowIndex: number, componentIndex: number, content: NdContentBlock[], defaultThemeName: NdDefaultThemeName, theme: TComponentTheme, themes: TComponentTheme[], options: TComponentOptions, lng: string, imageProvider: ImageProvider, i18nextProvider: I18nextProvider);
75
75
  }
@@ -1,8 +1,8 @@
1
1
  import { CSSProperties } from "react";
2
2
  import { ThemeStyle } from "./theme-style";
3
- export declare class ExtendedThemeStyle extends ThemeStyle {
3
+ export type ExtendedThemeStyle = ThemeStyle & {
4
4
  css?: {
5
5
  light: CSSProperties;
6
6
  dark: CSSProperties;
7
7
  };
8
- }
8
+ };
@@ -0,0 +1,4 @@
1
+ import { ThemeStyle } from "./theme-style";
2
+ export type ImageStyle = ThemeStyle & {
3
+ imageWidth?: string;
4
+ };
@@ -0,0 +1,6 @@
1
+ import { ThemeStyle } from "./theme-style";
2
+ export type RowStyle = ThemeStyle & {
3
+ rowDisplay?: "flex" | "grid";
4
+ componentHolder?: ThemeStyle;
5
+ };
6
+ export declare const defaultRowThemeImpl: RowStyle;
@@ -1,5 +1,4 @@
1
- export declare class ThemeStyle {
1
+ export type ThemeStyle = {
2
2
  base: string;
3
3
  decoration: string;
4
- constructor(base: string, decoration: string);
5
- }
4
+ };