uidl-runtime 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +175 -0
- package/bin/validate.mjs +44 -0
- package/dist/actions/eventBus.d.ts +7 -0
- package/dist/actions/index.d.ts +5 -0
- package/dist/actions/interpreter.d.ts +54 -0
- package/dist/compiler/dashboard.d.ts +10 -0
- package/dist/compiler/form.d.ts +22 -0
- package/dist/compiler/index.d.ts +16 -0
- package/dist/compiler/list.d.ts +20 -0
- package/dist/compiler/report.d.ts +10 -0
- package/dist/compiler/settings.d.ts +10 -0
- package/dist/compiler/tree.d.ts +10 -0
- package/dist/compiler/types.d.ts +315 -0
- package/dist/compiler/wizard.d.ts +10 -0
- package/dist/components/BarcodeAndQRCode.d.ts +29 -0
- package/dist/components/charts.d.ts +66 -0
- package/dist/components/iconPaths.d.ts +5 -0
- package/dist/components/icons.d.ts +31 -0
- package/dist/components/primitives.d.ts +411 -0
- package/dist/data/adapters/http.d.ts +37 -0
- package/dist/data/adapters/inMemory.d.ts +62 -0
- package/dist/data/errors.d.ts +15 -0
- package/dist/data/index.d.ts +7 -0
- package/dist/data/testing/mockHttpServer.d.ts +16 -0
- package/dist/data/types.d.ts +74 -0
- package/dist/editor/Canvas.d.ts +22 -0
- package/dist/editor/Editor.d.ts +18 -0
- package/dist/editor/LayerTree.d.ts +12 -0
- package/dist/editor/PropertyPanel.d.ts +7 -0
- package/dist/editor/StylePanel.d.ts +7 -0
- package/dist/editor/ValidationStatus.d.ts +9 -0
- package/dist/editor/WidgetPalette.d.ts +6 -0
- package/dist/editor/document.d.ts +10 -0
- package/dist/editor/index.d.ts +2 -0
- package/dist/editor/store.d.ts +46 -0
- package/dist/expr/evaluate.d.ts +51 -0
- package/dist/hooks/useElementWidth.d.ts +14 -0
- package/dist/index.d.ts +61 -0
- package/dist/registry/defaults.d.ts +2 -0
- package/dist/registry/registry.d.ts +4 -0
- package/dist/renderer/RenderNode.d.ts +16 -0
- package/dist/renderer/UIDocumentRenderer.d.ts +13 -0
- package/dist/renderer/instantiateComponent.d.ts +18 -0
- package/dist/renderer/renderDocument.d.ts +63 -0
- package/dist/schema/action.schema.json +515 -0
- package/dist/schema/design-tokens.schema.json +51 -0
- package/dist/schema/jsonSchema.d.ts +11 -0
- package/dist/schema/theme-presets.schema.json +952 -0
- package/dist/schema/uidl-document.schema.json +187 -0
- package/dist/schemas/actions.d.ts +5 -0
- package/dist/schemas/document.d.ts +35 -0
- package/dist/schemas/theme.d.ts +260 -0
- package/dist/services/aiPromptGenerator.d.ts +11 -0
- package/dist/state/createDocumentState.d.ts +18 -0
- package/dist/state/dataSources.d.ts +58 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/style.css +2 -0
- package/dist/theme/engine.d.ts +9 -0
- package/dist/theme/index.d.ts +7 -0
- package/dist/theme/meridianPreset.d.ts +5 -0
- package/dist/theme/presets.d.ts +5 -0
- package/dist/theme/registry.d.ts +15 -0
- package/dist/theme/serialize.d.ts +5 -0
- package/dist/theme/tailwind.d.ts +11 -0
- package/dist/types/actions.d.ts +116 -0
- package/dist/types/editor.d.ts +45 -0
- package/dist/types/index.d.ts +82 -0
- package/dist/types/theme.d.ts +95 -0
- package/dist/uidl-runtime.js +98 -0
- package/dist/uidl-runtime.js.map +1 -0
- package/dist/uidl-runtime.mjs +17779 -0
- package/dist/uidl-runtime.mjs.map +1 -0
- package/dist/utils/chart.d.ts +12 -0
- package/dist/utils/cn.d.ts +1 -0
- package/dist/utils/formLayout.d.ts +93 -0
- package/dist/utils/i18n.d.ts +132 -0
- package/dist/utils/listCell.d.ts +21 -0
- package/dist/utils/responsive.d.ts +3 -0
- package/dist/utils/tailwind.d.ts +23 -0
- package/dist/validate/validateResponsive.d.ts +7 -0
- package/dist/version.d.ts +10 -0
- package/package.json +109 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** utils/chart.ts — y-axis labels as "1 K" / "12 M" / "3 B". */
|
|
2
|
+
export declare function prefixFormat(value: number): string;
|
|
3
|
+
/**
|
|
4
|
+
* Meridian's Expenses donut ramp: a single-hue pink scale, darkest first. Kept as a named
|
|
5
|
+
* export so a document that supplies no per-series colors still lands on the app's palette
|
|
6
|
+
* instead of an ad-hoc rainbow.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MERIDIAN_DONUT_COLORS: string[];
|
|
9
|
+
/** Meridian's two-series dashboard palette (Cashflow inflow/outflow, P&L positive/negative). */
|
|
10
|
+
export declare const MERIDIAN_SERIES_COLORS: string[];
|
|
11
|
+
export declare const MERIDIAN_CHART_GRID_COLOR = "rgba(0, 0, 0, 0.2)";
|
|
12
|
+
export declare const MERIDIAN_CHART_FONT_COLOR = "#7c7c7c";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function cn(...classes: (string | undefined | false | null)[]): string;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** FormContainer's page: the card is centred on the page ground, not flush to it. */
|
|
2
|
+
export declare const MERIDIAN_FORM_PAGE_STYLE: {
|
|
3
|
+
readonly display: "flex";
|
|
4
|
+
readonly flexDirection: "column";
|
|
5
|
+
readonly alignItems: "center";
|
|
6
|
+
readonly width: "w-full";
|
|
7
|
+
readonly minHeight: "min-h-full";
|
|
8
|
+
readonly background: "{primitives.color.surface}";
|
|
9
|
+
readonly paddingTop: "pt-4";
|
|
10
|
+
readonly fontSize: "text-base";
|
|
11
|
+
};
|
|
12
|
+
/** A full-width form (FormContainer's `useFullWidth`, used when the document has a line table). */
|
|
13
|
+
export declare const MERIDIAN_FORM_PAGE_FULL_STYLE: {
|
|
14
|
+
readonly display: "flex";
|
|
15
|
+
readonly flexDirection: "column";
|
|
16
|
+
readonly width: "w-full";
|
|
17
|
+
readonly minHeight: "min-h-full";
|
|
18
|
+
readonly background: "{primitives.color.surface}";
|
|
19
|
+
readonly fontSize: "text-base";
|
|
20
|
+
};
|
|
21
|
+
/** FormContainer — the one place in Meridian where border, radius and shadow are all used. */
|
|
22
|
+
export declare const MERIDIAN_FORM_SHELL_STYLE: {
|
|
23
|
+
readonly display: "flex";
|
|
24
|
+
readonly flexDirection: "column";
|
|
25
|
+
readonly width: "w-form";
|
|
26
|
+
readonly maxWidth: "max-w-full";
|
|
27
|
+
readonly margin: "mx-4 mb-4";
|
|
28
|
+
readonly background: "{primitives.color.surface-elevated}";
|
|
29
|
+
readonly borderWidth: "border";
|
|
30
|
+
readonly borderColor: "{primitives.color.border}";
|
|
31
|
+
readonly borderRadius: "rounded-lg";
|
|
32
|
+
readonly shadow: "{primitives.shadow.lg}";
|
|
33
|
+
};
|
|
34
|
+
/** FormHeader — the in-page title bar. */
|
|
35
|
+
export declare const MERIDIAN_FORM_HEADER_STYLE: {
|
|
36
|
+
readonly display: "flex";
|
|
37
|
+
readonly justifyContent: "space-between";
|
|
38
|
+
readonly alignItems: "center";
|
|
39
|
+
readonly padding: "px-4";
|
|
40
|
+
readonly height: "h-row-large";
|
|
41
|
+
readonly borderWidth: "border-b";
|
|
42
|
+
readonly borderColor: "{primitives.color.border}";
|
|
43
|
+
};
|
|
44
|
+
/** TwoColumnForm — label and control share one row, closed by a rule. */
|
|
45
|
+
export declare const MERIDIAN_FORM_ROW_STYLE: {
|
|
46
|
+
readonly borderWidth: "border-b";
|
|
47
|
+
readonly borderColor: "{primitives.color.border}";
|
|
48
|
+
readonly minHeight: "min-h-row-mid";
|
|
49
|
+
};
|
|
50
|
+
export declare const MERIDIAN_FORM_ROW_GRID: {
|
|
51
|
+
readonly display: "grid";
|
|
52
|
+
readonly gridTemplateColumns: "minmax(0, 1fr) minmax(0, 1fr)";
|
|
53
|
+
readonly alignItems: "center";
|
|
54
|
+
};
|
|
55
|
+
/** The label sits in the start column; only it carries the leading padding. */
|
|
56
|
+
export declare const MERIDIAN_FORM_LABEL_STYLE: {
|
|
57
|
+
readonly padding: "ps-4";
|
|
58
|
+
readonly color: "{primitives.color.text-secondary}";
|
|
59
|
+
readonly fontSize: "text-base";
|
|
60
|
+
};
|
|
61
|
+
/** The control sits flush in the end column — the row's rule does the separating. */
|
|
62
|
+
export declare const MERIDIAN_FORM_CONTROL_STYLE: {
|
|
63
|
+
readonly padding: "py-2 pe-4";
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Controls/Base: inside a form row a control is borderless and `size="small"`, because the
|
|
67
|
+
* row it sits in is already bounded. A boxed control there reads as a second frame.
|
|
68
|
+
*/
|
|
69
|
+
export declare const MERIDIAN_FORM_CONTROL_PROPS: {
|
|
70
|
+
readonly border: false;
|
|
71
|
+
readonly size: "small";
|
|
72
|
+
};
|
|
73
|
+
/** SectionHeader */
|
|
74
|
+
export declare const MERIDIAN_SECTION_HEADER_STYLE: {
|
|
75
|
+
readonly display: "flex";
|
|
76
|
+
readonly justifyContent: "space-between";
|
|
77
|
+
readonly alignItems: "center";
|
|
78
|
+
readonly padding: "px-4 py-2.5";
|
|
79
|
+
readonly background: "{primitives.color.surface}";
|
|
80
|
+
readonly borderWidth: "border-b";
|
|
81
|
+
readonly borderColor: "{primitives.color.border}";
|
|
82
|
+
readonly fontSize: "text-sm";
|
|
83
|
+
readonly fontWeight: 600;
|
|
84
|
+
readonly color: "{primitives.color.text-secondary}";
|
|
85
|
+
};
|
|
86
|
+
/** CommonForm's footer: actions right-aligned in a `p-4` strip below the last row. */
|
|
87
|
+
export declare const MERIDIAN_FORM_FOOTER_STYLE: {
|
|
88
|
+
readonly display: "flex";
|
|
89
|
+
readonly justifyContent: "end";
|
|
90
|
+
readonly alignItems: "center";
|
|
91
|
+
readonly gap: "gap-2";
|
|
92
|
+
readonly padding: "p-4";
|
|
93
|
+
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export type Language = "id" | "en";
|
|
2
|
+
export declare const DICTIONARY: {
|
|
3
|
+
id: {
|
|
4
|
+
dashboard: string;
|
|
5
|
+
operations: string;
|
|
6
|
+
inventory: string;
|
|
7
|
+
accounting: string;
|
|
8
|
+
reports: string;
|
|
9
|
+
controls: string;
|
|
10
|
+
settings: string;
|
|
11
|
+
playground: string;
|
|
12
|
+
search: string;
|
|
13
|
+
openConsole: string;
|
|
14
|
+
backToCatalog: string;
|
|
15
|
+
create: string;
|
|
16
|
+
save: string;
|
|
17
|
+
cancel: string;
|
|
18
|
+
print: string;
|
|
19
|
+
export: string;
|
|
20
|
+
import: string;
|
|
21
|
+
format: string;
|
|
22
|
+
copy: string;
|
|
23
|
+
delete: string;
|
|
24
|
+
edit: string;
|
|
25
|
+
detail: string;
|
|
26
|
+
filter: string;
|
|
27
|
+
downloadPdf: string;
|
|
28
|
+
totalReceivables: string;
|
|
29
|
+
totalPayables: string;
|
|
30
|
+
netProfit: string;
|
|
31
|
+
cashBalance: string;
|
|
32
|
+
debit: string;
|
|
33
|
+
credit: string;
|
|
34
|
+
balance: string;
|
|
35
|
+
taxInvoice: string;
|
|
36
|
+
salesInvoice: string;
|
|
37
|
+
purchaseOrder: string;
|
|
38
|
+
billOfMaterials: string;
|
|
39
|
+
workOrder: string;
|
|
40
|
+
deviceHistoryRecord: string;
|
|
41
|
+
prescription: string;
|
|
42
|
+
murabahahAgreement: string;
|
|
43
|
+
shippingLabel: string;
|
|
44
|
+
customer: string;
|
|
45
|
+
supplier: string;
|
|
46
|
+
status: string;
|
|
47
|
+
date: string;
|
|
48
|
+
dueDate: string;
|
|
49
|
+
amount: string;
|
|
50
|
+
qty: string;
|
|
51
|
+
price: string;
|
|
52
|
+
subtotal: string;
|
|
53
|
+
tax: string;
|
|
54
|
+
grandTotal: string;
|
|
55
|
+
terbilang: string;
|
|
56
|
+
};
|
|
57
|
+
en: {
|
|
58
|
+
dashboard: string;
|
|
59
|
+
operations: string;
|
|
60
|
+
inventory: string;
|
|
61
|
+
accounting: string;
|
|
62
|
+
reports: string;
|
|
63
|
+
controls: string;
|
|
64
|
+
settings: string;
|
|
65
|
+
playground: string;
|
|
66
|
+
search: string;
|
|
67
|
+
openConsole: string;
|
|
68
|
+
backToCatalog: string;
|
|
69
|
+
create: string;
|
|
70
|
+
save: string;
|
|
71
|
+
cancel: string;
|
|
72
|
+
print: string;
|
|
73
|
+
export: string;
|
|
74
|
+
import: string;
|
|
75
|
+
format: string;
|
|
76
|
+
copy: string;
|
|
77
|
+
delete: string;
|
|
78
|
+
edit: string;
|
|
79
|
+
detail: string;
|
|
80
|
+
filter: string;
|
|
81
|
+
downloadPdf: string;
|
|
82
|
+
totalReceivables: string;
|
|
83
|
+
totalPayables: string;
|
|
84
|
+
netProfit: string;
|
|
85
|
+
cashBalance: string;
|
|
86
|
+
debit: string;
|
|
87
|
+
credit: string;
|
|
88
|
+
balance: string;
|
|
89
|
+
taxInvoice: string;
|
|
90
|
+
salesInvoice: string;
|
|
91
|
+
purchaseOrder: string;
|
|
92
|
+
billOfMaterials: string;
|
|
93
|
+
workOrder: string;
|
|
94
|
+
deviceHistoryRecord: string;
|
|
95
|
+
prescription: string;
|
|
96
|
+
murabahahAgreement: string;
|
|
97
|
+
shippingLabel: string;
|
|
98
|
+
customer: string;
|
|
99
|
+
supplier: string;
|
|
100
|
+
status: string;
|
|
101
|
+
date: string;
|
|
102
|
+
dueDate: string;
|
|
103
|
+
amount: string;
|
|
104
|
+
qty: string;
|
|
105
|
+
price: string;
|
|
106
|
+
subtotal: string;
|
|
107
|
+
tax: string;
|
|
108
|
+
grandTotal: string;
|
|
109
|
+
terbilang: string;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
export declare function t(key: keyof typeof DICTIONARY["id"] | string, lang?: Language): string;
|
|
113
|
+
/**
|
|
114
|
+
* Resolves a bilingual label object ({ id: string, en: string }) or plain string according to active language.
|
|
115
|
+
*/
|
|
116
|
+
export declare function localize(label: {
|
|
117
|
+
id?: string;
|
|
118
|
+
en?: string;
|
|
119
|
+
} | string | undefined, lang?: Language): string;
|
|
120
|
+
/**
|
|
121
|
+
* Formats a number or numeric string to Indonesian Rupiah currency standard (e.g. Rp 1.500.000).
|
|
122
|
+
*/
|
|
123
|
+
export declare function formatRupiah(amount: number | string, includePrefix?: boolean): string;
|
|
124
|
+
/**
|
|
125
|
+
* Formats date string (YYYY-MM-DD or ISO) into formatted Indonesian or English date text.
|
|
126
|
+
*/
|
|
127
|
+
export declare function formatIndonesianDate(dateInput: string | Date, lang?: Language): string;
|
|
128
|
+
/**
|
|
129
|
+
* Converts Indonesian numeric amount into canonical legal words (Terbilang Rupiah).
|
|
130
|
+
* Example: 1540000 -> "Satu Juta Lima Ratus Empat Puluh Ribu Rupiah"
|
|
131
|
+
*/
|
|
132
|
+
export declare function formatTerbilang(amountInput: number | string): string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare function statusColor(status: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* How a column's values are printed. Mirrors the `fieldtype` distinctions Meridian's formatter
|
|
4
|
+
* actually branches on, not the full widget list — `text` is everything with no special rule.
|
|
5
|
+
*/
|
|
6
|
+
export type CellFormat = "text" | "currency" | "number" | "integer" | "date" | "status" | "check";
|
|
7
|
+
/** `isNumeric` in utils.ts — the fieldtypes Meridian right-aligns. */
|
|
8
|
+
export declare function isNumericFormat(format: CellFormat | undefined): boolean;
|
|
9
|
+
export interface CellFormatOptions {
|
|
10
|
+
/** BCP 47 tag for number/date formatting. Meridian uses the instance's locale. */
|
|
11
|
+
locale?: string;
|
|
12
|
+
/** ISO 4217 code. When set, `currency` columns print with the symbol. */
|
|
13
|
+
currency?: string;
|
|
14
|
+
/** Decimal places for `number` columns — SystemSettings.displayPrecision upstream. */
|
|
15
|
+
precision?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns the printable text for a cell, or `null` when the caller should render a status pill
|
|
19
|
+
* instead (the one case Meridian does not render as text).
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatCellValue(value: unknown, format: CellFormat | undefined, options?: CellFormatOptions): string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare function resolveFlexDirection(value: unknown): string | undefined;
|
|
2
|
+
export declare function resolveJustify(value: unknown): string | undefined;
|
|
3
|
+
export declare function resolveAlign(value: unknown): string | undefined;
|
|
4
|
+
export declare function resolvePosition(value: unknown): string | undefined;
|
|
5
|
+
export declare function resolvePadding(value: unknown): string | undefined;
|
|
6
|
+
export declare function resolveMargin(value: unknown): string | undefined;
|
|
7
|
+
export declare function resolveTextStyle(value: unknown): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Turns a `visibility.breakpoints` list (which categories the node should be visible in) into
|
|
10
|
+
* Tailwind `hidden`/`block` classes. Named `resolveBreakpointVisibility` (not `resolveVisibility`)
|
|
11
|
+
* to avoid confusion with `RenderNode.tsx`'s condition-based `resolveVisibility`, which decides
|
|
12
|
+
* whether to render the node at all — this one keeps the node in the DOM and toggles CSS
|
|
13
|
+
* `display` per breakpoint instead.
|
|
14
|
+
*
|
|
15
|
+
* Only emits a class where visibility actually *changes* between adjacent breakpoints, so e.g.
|
|
16
|
+
* `breakpoints: ["mobile"]` produces just `"md:hidden"` (hidden from md up, no need to also
|
|
17
|
+
* repeat `lg:hidden xl:hidden` — nothing turns it back on) instead of one `hidden`/`block`
|
|
18
|
+
* class per category independently, which could contradict a previous one at the same
|
|
19
|
+
* breakpoint (e.g. both `md:block` and `md:hidden` applying at once, whichever wins depending
|
|
20
|
+
* on unrelated CSS declaration order).
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveVisibility(visibility: unknown): string | undefined;
|
|
23
|
+
export declare function resolveClassName(style?: Record<string, unknown>, _responsive?: Record<string, unknown>): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Theme } from '../types/theme';
|
|
2
|
+
export interface ResponsiveValidationError {
|
|
3
|
+
path: string;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function validateResponsiveValue(value: unknown, theme: Theme): ResponsiveValidationError[];
|
|
7
|
+
export declare function validateResponsiveStyle(style: Record<string, unknown>, theme: Theme): ResponsiveValidationError[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const UIDL_RUNTIME_VERSION = "1.1.0";
|
|
2
|
+
export type RegistryVersion = {
|
|
3
|
+
version: string;
|
|
4
|
+
componentCount: number;
|
|
5
|
+
components: string[];
|
|
6
|
+
};
|
|
7
|
+
export declare function computeRegistryVersion(): RegistryVersion;
|
|
8
|
+
export declare const REGISTRY_VERSION: RegistryVersion;
|
|
9
|
+
export declare function getRegistryVersion(): RegistryVersion;
|
|
10
|
+
export declare function getRegistryFingerprint(): string;
|
package/package.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "uidl-runtime",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"main": "./dist/uidl-runtime.js",
|
|
5
|
+
"module": "./dist/uidl-runtime.mjs",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/uidl-runtime.mjs",
|
|
11
|
+
"require": "./dist/uidl-runtime.js",
|
|
12
|
+
"default": "./dist/uidl-runtime.mjs"
|
|
13
|
+
},
|
|
14
|
+
"./style.css": "./dist/style.css",
|
|
15
|
+
"./schema/*.json": "./dist/schema/*.json"
|
|
16
|
+
},
|
|
17
|
+
"bin": {
|
|
18
|
+
"uidl-validate": "./bin/validate.mjs"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"bin"
|
|
23
|
+
],
|
|
24
|
+
"workspaces": [
|
|
25
|
+
"packages/*",
|
|
26
|
+
"apps/*"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"dev": "npm run dev:reference",
|
|
30
|
+
"dev:core": "vite",
|
|
31
|
+
"dev:reference": "vite --config apps/reference/vite.config.ts",
|
|
32
|
+
"dev:reference:http": "VITE_DATA_MODE=http VITE_API_BASE_URL=http://127.0.0.1:8787/api vite --config apps/reference/vite.config.ts",
|
|
33
|
+
"mock:api": "node scripts/mock-server.mjs",
|
|
34
|
+
"build:reference": "vite build --config apps/reference/vite.config.ts",
|
|
35
|
+
"preview:reference": "vite preview --config apps/reference/vite.config.ts",
|
|
36
|
+
"build": "tsc -b && vite build && npm run build:css && npm run build:schema",
|
|
37
|
+
"build:css": "tailwindcss -i packages/core/src/style.css -o dist/style.css --minify",
|
|
38
|
+
"build:schema": "node scripts/generate-json-schema.mjs",
|
|
39
|
+
"preview": "vite preview",
|
|
40
|
+
"lint": "eslint .",
|
|
41
|
+
"typecheck": "tsc --noEmit",
|
|
42
|
+
"test": "vitest run",
|
|
43
|
+
"test:watch": "vitest",
|
|
44
|
+
"smoke:package": "npm run build && node scripts/smoke-package-consumer.mjs",
|
|
45
|
+
"validate": "node bin/validate.mjs",
|
|
46
|
+
"validate:examples": "node bin/validate.mjs packages/templates/src/documents/*.json",
|
|
47
|
+
"audit:reference": "tsx scripts/audit-reference-coverage.mts",
|
|
48
|
+
"test:reference": "playwright test",
|
|
49
|
+
"test:reference:update": "playwright test --update-snapshots",
|
|
50
|
+
"test:reference:http": "PLAYWRIGHT_DATA_MODE=http playwright test e2e/real-reference-acceptance.spec.ts"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
54
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@eslint/js": "^10.0.1",
|
|
58
|
+
"@heroicons/react": "^2.2.0",
|
|
59
|
+
"@playwright/test": "^1.62.1",
|
|
60
|
+
"@tailwindcss/cli": "^4.3.3",
|
|
61
|
+
"@tailwindcss/vite": "^4.0.0",
|
|
62
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
63
|
+
"@testing-library/react": "^16.3.2",
|
|
64
|
+
"@testing-library/user-event": "^14.6.4",
|
|
65
|
+
"@types/node": "^26.2.0",
|
|
66
|
+
"@types/react": "^19.0.0",
|
|
67
|
+
"@types/react-dom": "^19.0.0",
|
|
68
|
+
"@vitejs/plugin-react": "^4.3.0",
|
|
69
|
+
"ajv": "^8.20.0",
|
|
70
|
+
"autoprefixer": "^10.4.0",
|
|
71
|
+
"eslint": "^10.8.1",
|
|
72
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
73
|
+
"eslint-plugin-react-refresh": "^0.5.4",
|
|
74
|
+
"globals": "^17.11.0",
|
|
75
|
+
"jsdom": "^30.0.1",
|
|
76
|
+
"postcss": "^8.4.0",
|
|
77
|
+
"tailwindcss": "^4.0.0",
|
|
78
|
+
"tsx": "^4.23.12",
|
|
79
|
+
"typescript": "~5.6.0",
|
|
80
|
+
"typescript-eslint": "^8.67.0",
|
|
81
|
+
"vite": "^6.0.0",
|
|
82
|
+
"vite-plugin-dts": "^4.3.0",
|
|
83
|
+
"vitest": "^4.1.10"
|
|
84
|
+
},
|
|
85
|
+
"dependencies": {
|
|
86
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
87
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
88
|
+
"clsx": "^2.1.1",
|
|
89
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
90
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
91
|
+
"tailwind-merge": "^3.6.0",
|
|
92
|
+
"zod": "^4.4.3",
|
|
93
|
+
"zustand": "^5.0.15"
|
|
94
|
+
},
|
|
95
|
+
"description": "A schema-driven React runtime that renders validated JSON UIDL documents into lists, forms, reports and dashboards.",
|
|
96
|
+
"license": "MIT",
|
|
97
|
+
"engines": {
|
|
98
|
+
"node": ">=20.11"
|
|
99
|
+
},
|
|
100
|
+
"keywords": [
|
|
101
|
+
"uidl",
|
|
102
|
+
"json-ui",
|
|
103
|
+
"schema-driven-ui",
|
|
104
|
+
"react",
|
|
105
|
+
"low-code",
|
|
106
|
+
"ui-runtime",
|
|
107
|
+
"erp"
|
|
108
|
+
]
|
|
109
|
+
}
|