@promptframe/component-kit 0.1.11 → 0.1.13

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/README.md CHANGED
@@ -14,6 +14,7 @@ npm install @promptframe/component-kit
14
14
  - `public/` resource lookup helper for runtime-injected component resources with local-dev fallback.
15
15
  - Timing helpers for deterministic fps-aware timing and frame-driven animations.
16
16
  - Public style helpers backed by `@promptframe/contracts`.
17
+ - Shared React preview props inspector for scaffold and platform preview surfaces.
17
18
 
18
19
  ## Usage
19
20
 
@@ -40,7 +41,11 @@ export function Component(props: Props) {
40
41
  ```
41
42
 
42
43
  ```ts
43
- import { COMPONENT_PREVIEW_CONSTRAINTS, createPreviewCaseMatrix } from '@promptframe/component-kit/preview';
44
+ import {
45
+ COMPONENT_PREVIEW_CONSTRAINTS,
46
+ createPreviewCaseMatrix,
47
+ describePromptFramePreviewPropControl,
48
+ } from '@promptframe/component-kit/preview';
44
49
 
45
50
  export const maxPreviewWidth = COMPONENT_PREVIEW_CONSTRAINTS.maxWidth;
46
51
 
@@ -50,6 +55,8 @@ export const previewCases = createPreviewCaseMatrix({
50
55
  fpsPresets: [30, 60],
51
56
  validateProps: (candidate) => candidate,
52
57
  });
58
+
59
+ export const titleControl = describePromptFramePreviewPropControl(['title'], 'Quarterly revenue');
53
60
  ```
54
61
 
55
62
  ```ts
@@ -62,7 +69,52 @@ const timeline = createDurationTimeline({
62
69
  const introEnd = secondsToFrames(1.5, 30);
63
70
  ```
64
71
 
65
- Use `fpsPresets` for local fps-adaptive diagnostics such as 30fps / 60fps comparisons. Source `src/preview-props.json` remains governed by the current public preview policy; do not save or upload 60fps local preview cases until the public standard explicitly allows them.
72
+ `createPreviewCaseMatrix()` returns explicit `caseKind` metadata: `baseline_reset`, `aspect`, `props_stress`, and `fps_diagnostic`. Props stress cases should preserve the current author preview aspect/fps in scaffold UI; aspect and fps diagnostics are separate controls so a human author can see what changed. `probeCoverage` marks whether a case is platform-probe-equivalent or local-authoring-only.
73
+
74
+ Use `fpsPresets` for local fps-adaptive diagnostics such as 30fps / 60fps comparisons. Source `src/preview-props.json` remains governed by the current public preview policy; do not save or upload 60fps local preview cases until the public standard explicitly allows them. Use `describePromptFramePreviewPropControl()` and related preview helpers when building local prop editors so object/array props use structured or JSON fallback editing instead of accidental `[object Object]` strings.
75
+
76
+ ```tsx
77
+ import {
78
+ PromptFramePreviewInspector,
79
+ type PromptFramePreviewControl,
80
+ } from '@promptframe/component-kit/preview-react';
81
+
82
+ const controls: PromptFramePreviewControl[] = [
83
+ {
84
+ key: 'title',
85
+ type: 'text',
86
+ label: 'Title',
87
+ description: 'Main headline',
88
+ },
89
+ {
90
+ key: 'items',
91
+ type: 'array',
92
+ label: 'Items',
93
+ schema: {
94
+ type: 'array',
95
+ items: {
96
+ type: 'object',
97
+ properties: {
98
+ label: { type: 'string', description: 'Visible item label' },
99
+ count: { type: 'number', minimum: 0 },
100
+ },
101
+ },
102
+ },
103
+ },
104
+ ];
105
+
106
+ export function PreviewPropsPanel() {
107
+ return (
108
+ <PromptFramePreviewInspector
109
+ controls={controls}
110
+ previewProps={{ title: 'Launch', items: [{ label: 'A', count: 1 }] }}
111
+ editable={false}
112
+ />
113
+ );
114
+ }
115
+ ```
116
+
117
+ `@promptframe/component-kit/preview-react` is the public UI contract for preview props inspection. It renders stable `data-preview-props-*` selectors, scalar controls, enum/color controls, nested object/array editors, read-only states, missing-description warnings, and fail-closed Advanced JSON parsing. Host products may pass adapters such as `renderResourcePicker` and `renderToolbarActions`, but platform-only permissions, resource governance, Auth0/session state, storage deletion, and review workflow actions must stay in the host surface.
66
118
 
67
119
  ```ts
68
120
  import { resolvePromptFrameStyle } from '@promptframe/component-kit/style';
@@ -79,7 +131,8 @@ const style = resolvePromptFrameStyle({ tone: 'tech', accentColor: '#38bdf8' },
79
131
 
80
132
  ```ts
81
133
  import { getComponentStandardStamp } from '@promptframe/component-kit';
82
- import { COMPONENT_PREVIEW_CONSTRAINTS, createPreviewCaseMatrix } from '@promptframe/component-kit/preview';
134
+ import { COMPONENT_PREVIEW_CONSTRAINTS, createPreviewCaseMatrix, describePromptFramePreviewPropControl } from '@promptframe/component-kit/preview';
135
+ import { PromptFramePreviewInspector } from '@promptframe/component-kit/preview-react';
83
136
  import { createDurationTimeline } from '@promptframe/component-kit/timing';
84
137
  import { resolvePromptFrameStyle } from '@promptframe/component-kit/style';
85
138
  ```
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './layout.js';
1
2
  export * from './preview.js';
2
3
  export * from './resources.js';
3
4
  export * from './standard.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './layout.js';
1
2
  export * from './preview.js';
2
3
  export * from './resources.js';
3
4
  export * from './standard.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface PromptFrameLayoutOptions {
2
+ slotWidth: number;
3
+ slotHeight: number;
4
+ baseWidth: number;
5
+ baseHeight: number;
6
+ minScale?: number;
7
+ maxScale?: number;
8
+ precision?: number;
9
+ }
10
+ export interface PromptFrameLayout {
11
+ slotWidth: number;
12
+ slotHeight: number;
13
+ baseWidth: number;
14
+ baseHeight: number;
15
+ scale: number;
16
+ px(value: number): number;
17
+ clamp(min: number, preferred: number, max: number): string;
18
+ }
19
+ export declare function createPromptFrameLayout(options: PromptFrameLayoutOptions): PromptFrameLayout;
20
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAqC5F"}
package/dist/layout.js ADDED
@@ -0,0 +1,66 @@
1
+ export function createPromptFrameLayout(options) {
2
+ const slotWidth = positiveFinite(options.slotWidth, 'slotWidth');
3
+ const slotHeight = positiveFinite(options.slotHeight, 'slotHeight');
4
+ const baseWidth = positiveFinite(options.baseWidth, 'baseWidth');
5
+ const baseHeight = positiveFinite(options.baseHeight, 'baseHeight');
6
+ const precision = options.precision ?? 3;
7
+ if (!Number.isInteger(precision) || precision < 0 || precision > 6) {
8
+ throw new Error('precision must be an integer between 0 and 6');
9
+ }
10
+ const minScale = options.minScale === undefined ? 0 : nonNegativeFinite(options.minScale, 'minScale');
11
+ const maxScale = options.maxScale === undefined ? Number.POSITIVE_INFINITY : positiveFinite(options.maxScale, 'maxScale');
12
+ if (maxScale < minScale) {
13
+ throw new Error('maxScale must be greater than or equal to minScale');
14
+ }
15
+ const rawScale = Math.min(slotWidth / baseWidth, slotHeight / baseHeight);
16
+ const scale = round(clampNumber(rawScale, minScale, maxScale), precision);
17
+ const px = (value) => round(finite(value, 'value') * scale, precision);
18
+ return {
19
+ slotWidth,
20
+ slotHeight,
21
+ baseWidth,
22
+ baseHeight,
23
+ scale,
24
+ px,
25
+ clamp(min, preferred, max) {
26
+ const scaledMin = px(min);
27
+ const scaledPreferred = px(preferred);
28
+ const scaledMax = px(max);
29
+ if (scaledMax < scaledMin) {
30
+ throw new Error('clamp max must be greater than or equal to min');
31
+ }
32
+ return `clamp(${formatCssPx(scaledMin)}, ${formatCssPx(scaledPreferred)}, ${formatCssPx(scaledMax)})`;
33
+ },
34
+ };
35
+ }
36
+ function finite(value, label) {
37
+ if (!Number.isFinite(value)) {
38
+ throw new Error(`${label} must be a finite number`);
39
+ }
40
+ return value;
41
+ }
42
+ function positiveFinite(value, label) {
43
+ const result = finite(value, label);
44
+ if (result <= 0) {
45
+ throw new Error(`${label} must be a positive finite number`);
46
+ }
47
+ return result;
48
+ }
49
+ function nonNegativeFinite(value, label) {
50
+ const result = finite(value, label);
51
+ if (result < 0) {
52
+ throw new Error(`${label} must be a non-negative finite number`);
53
+ }
54
+ return result;
55
+ }
56
+ function clampNumber(value, min, max) {
57
+ return Math.min(max, Math.max(min, value));
58
+ }
59
+ function round(value, precision) {
60
+ const factor = 10 ** precision;
61
+ return Math.round(value * factor) / factor;
62
+ }
63
+ function formatCssPx(value) {
64
+ return `${Number.isInteger(value) ? value.toFixed(0) : String(value)}px`;
65
+ }
66
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import React from 'react';
2
+ export type PromptFramePreviewLocale = 'en' | 'zh';
3
+ export type PromptFramePreviewJsonSchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' | 'null';
4
+ export type PromptFramePreviewControlType = 'array' | 'boolean' | 'color' | 'enum' | 'number' | 'object' | 'text';
5
+ export type PromptFramePreviewInspectorDensity = 'comfortable' | 'compact';
6
+ export type PromptFramePreviewInspectorScrollMode = 'parent' | 'self';
7
+ export type PromptFramePreviewJsonControlType = 'array' | 'object';
8
+ export interface PromptFramePreviewJsonSchemaLike {
9
+ type?: PromptFramePreviewJsonSchemaType | PromptFramePreviewJsonSchemaType[];
10
+ description?: string;
11
+ const?: unknown;
12
+ enum?: readonly unknown[];
13
+ format?: string;
14
+ minLength?: number;
15
+ maxLength?: number;
16
+ properties?: Record<string, PromptFramePreviewJsonSchemaLike>;
17
+ items?: PromptFramePreviewJsonSchemaLike;
18
+ required?: readonly string[];
19
+ minimum?: number;
20
+ maximum?: number;
21
+ }
22
+ export interface PromptFramePreviewControl {
23
+ key: string;
24
+ type: PromptFramePreviewControlType;
25
+ label?: string;
26
+ labelI18n?: Partial<Record<PromptFramePreviewLocale, string>>;
27
+ description?: string;
28
+ descriptionI18n?: Partial<Record<PromptFramePreviewLocale, string>>;
29
+ required?: boolean;
30
+ enumValues?: readonly unknown[];
31
+ defaultValue?: unknown;
32
+ schema?: PromptFramePreviewJsonSchemaLike;
33
+ }
34
+ export type PromptFramePreviewInspectorJsonDraftResult = {
35
+ ok: true;
36
+ value: unknown;
37
+ } | {
38
+ ok: false;
39
+ error: string;
40
+ };
41
+ export interface PromptFramePreviewResourcePickerInput {
42
+ control: PromptFramePreviewControl;
43
+ value: unknown;
44
+ readOnly: boolean;
45
+ onSelect: (value: unknown) => void;
46
+ }
47
+ export interface PromptFramePreviewToolbarInput {
48
+ previewProps: Record<string, unknown>;
49
+ reset: () => void;
50
+ }
51
+ export interface PromptFramePreviewInspectorProps {
52
+ controls: readonly PromptFramePreviewControl[];
53
+ previewProps: Record<string, unknown>;
54
+ initialPreviewProps?: Record<string, unknown>;
55
+ editable?: boolean;
56
+ locale?: PromptFramePreviewLocale;
57
+ onPreviewPropsChange?: (next: Record<string, unknown>) => void;
58
+ renderResourcePicker?: (input: PromptFramePreviewResourcePickerInput) => React.ReactNode;
59
+ renderToolbarActions?: (input: PromptFramePreviewToolbarInput) => React.ReactNode;
60
+ readOnlyNotice?: React.ReactNode;
61
+ className?: string;
62
+ style?: React.CSSProperties;
63
+ density?: PromptFramePreviewInspectorDensity;
64
+ scrollMode?: PromptFramePreviewInspectorScrollMode;
65
+ }
66
+ export declare function parsePromptFramePreviewInspectorJsonDraft(draft: string, expectedType: PromptFramePreviewJsonControlType, locale?: PromptFramePreviewLocale, schema?: PromptFramePreviewJsonSchemaLike): PromptFramePreviewInspectorJsonDraftResult;
67
+ export declare function PromptFramePreviewInspector({ controls, previewProps, initialPreviewProps, editable, locale, onPreviewPropsChange, renderResourcePicker, renderToolbarActions, readOnlyNotice, className, style, density, scrollMode, }: PromptFramePreviewInspectorProps): React.ReactElement;
68
+ //# sourceMappingURL=preview-react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-react.d.ts","sourceRoot":"","sources":["../src/preview-react.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,555 @@
1
+ import React from 'react';
2
+ const messages = {
3
+ en: {
4
+ addItem: 'Add item',
5
+ advancedJson: 'Advanced JSON',
6
+ array: 'array',
7
+ copyProps: 'Copy props',
8
+ delete: 'Delete',
9
+ duplicate: 'Duplicate',
10
+ invalidArray: 'Enter a valid JSON array.',
11
+ invalidJson: 'Enter valid JSON.',
12
+ invalidObject: 'Enter a valid JSON object.',
13
+ missingDescription: 'No prop description was provided; add schema description or metadata.parameterDescriptions.',
14
+ noControls: 'No schema-derived controls are available.',
15
+ noStructuredFields: 'No structured fields are available; use Advanced JSON.',
16
+ object: 'object',
17
+ readOnly: 'Preview props are read-only in this surface.',
18
+ reset: 'Reset',
19
+ },
20
+ zh: {
21
+ addItem: '添加项',
22
+ advancedJson: '高级 JSON',
23
+ array: '数组',
24
+ copyProps: '复制 props',
25
+ delete: '删除',
26
+ duplicate: '复制',
27
+ invalidArray: '请输入有效的 JSON 数组。',
28
+ invalidJson: '请输入有效的 JSON。',
29
+ invalidObject: '请输入有效的 JSON 对象。',
30
+ missingDescription: '组件未提供参数说明;请在 schema description 或 metadata.parameterDescriptions 补齐。',
31
+ noControls: '当前组件没有可展示的 props 控件。',
32
+ noStructuredFields: '该对象没有可递归展示的字段,可使用高级 JSON。',
33
+ object: '对象',
34
+ readOnly: '当前表面只能查看 props,不能直接修改。',
35
+ reset: '重置默认值',
36
+ },
37
+ };
38
+ export function parsePromptFramePreviewInspectorJsonDraft(draft, expectedType, locale = 'en', schema) {
39
+ let parsed;
40
+ try {
41
+ parsed = JSON.parse(draft);
42
+ }
43
+ catch {
44
+ return { ok: false, error: messages[locale].invalidJson };
45
+ }
46
+ if (expectedType === 'array' && !Array.isArray(parsed)) {
47
+ return { ok: false, error: messages[locale].invalidArray };
48
+ }
49
+ if (expectedType === 'object' && (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))) {
50
+ return { ok: false, error: messages[locale].invalidObject };
51
+ }
52
+ const schemaError = validatePromptFramePreviewValue(parsed, schema);
53
+ if (schemaError)
54
+ return { ok: false, error: schemaError };
55
+ return { ok: true, value: parsed };
56
+ }
57
+ export function PromptFramePreviewInspector({ controls, previewProps, initialPreviewProps = previewProps, editable = true, locale = 'en', onPreviewPropsChange, renderResourcePicker, renderToolbarActions, readOnlyNotice, className, style, density = 'comfortable', scrollMode = 'self', }) {
58
+ const readOnly = !editable;
59
+ const setControlValue = (key, value) => {
60
+ if (readOnly || !onPreviewPropsChange)
61
+ return;
62
+ onPreviewPropsChange({ ...previewProps, [key]: value });
63
+ };
64
+ const reset = () => {
65
+ if (readOnly || !onPreviewPropsChange)
66
+ return;
67
+ onPreviewPropsChange({ ...initialPreviewProps });
68
+ };
69
+ if (controls.length === 0) {
70
+ return React.createElement('div', {
71
+ className,
72
+ 'data-preview-props-inspector': 'true',
73
+ style: shellStyle(style, density),
74
+ }, React.createElement('div', { style: stateStyle }, messages[locale].noControls));
75
+ }
76
+ const toolbarActions = renderToolbarActions?.({ previewProps, reset });
77
+ return React.createElement('div', {
78
+ className,
79
+ 'data-preview-props-inspector': 'true',
80
+ style: shellStyle(style, density),
81
+ }, readOnly
82
+ ? React.createElement('div', { style: stateStyle }, readOnlyNotice ?? messages[locale].readOnly)
83
+ : null, React.createElement('div', { style: toolbarStyle }, React.createElement('button', {
84
+ type: 'button',
85
+ disabled: readOnly,
86
+ onClick: reset,
87
+ style: actionButtonStyle(readOnly),
88
+ }, messages[locale].reset), toolbarActions ?? React.createElement('button', {
89
+ type: 'button',
90
+ onClick: () => undefined,
91
+ style: actionButtonStyle(false),
92
+ }, messages[locale].copyProps)), React.createElement('div', scrollMode === 'self'
93
+ ? { 'data-preview-props-scroll-pane': 'true', style: scrollPaneStyle }
94
+ : { style: contentStyle }, controls.map((control) => (React.createElement(ControlEditor, {
95
+ key: control.key,
96
+ control,
97
+ value: previewProps[control.key] !== undefined ? previewProps[control.key] : control.defaultValue,
98
+ readOnly,
99
+ locale,
100
+ onChange: (value) => setControlValue(control.key, value),
101
+ resourcePicker: renderResourcePicker,
102
+ }))), React.createElement('pre', { style: jsonBoxStyle }, JSON.stringify(previewProps, null, 2))));
103
+ }
104
+ function ControlEditor({ control, value, readOnly, locale, onChange, resourcePicker, }) {
105
+ const label = controlLabel(control, locale);
106
+ const description = controlDescription(control, locale);
107
+ const commonProps = {
108
+ 'aria-readonly': readOnly ? 'true' : undefined,
109
+ };
110
+ if (control.type === 'array' || control.type === 'object') {
111
+ const schema = control.schema ?? schemaFromControl(control);
112
+ return React.createElement('section', {
113
+ ...commonProps,
114
+ 'data-preview-props-structured-control': control.key,
115
+ style: complexControlStyle,
116
+ }, React.createElement('div', { style: controlHeaderStyle }, React.createElement('strong', null, `${label}${control.required ? ' *' : ''}`), React.createElement('span', null, control.type === 'array' ? messages[locale].array : messages[locale].object)), renderDescription(description, control.key, locale), React.createElement(SchemaValueEditor, {
117
+ schema,
118
+ value: value ?? createDefaultValueFromSchema(schema),
119
+ path: control.key,
120
+ readOnly,
121
+ locale,
122
+ onChange,
123
+ }), React.createElement('details', { 'data-preview-props-advanced-json': control.key, style: advancedJsonStyle }, React.createElement('summary', null, messages[locale].advancedJson), React.createElement(PreviewJsonControlEditor, {
124
+ control,
125
+ value,
126
+ readOnly,
127
+ locale,
128
+ onChange,
129
+ })));
130
+ }
131
+ return React.createElement('label', {
132
+ ...commonProps,
133
+ style: fieldShellStyle,
134
+ }, React.createElement('span', { style: fieldLabelStyle }, `${label}${control.required ? ' *' : ''}`), renderScalarInput({
135
+ kind: control.type,
136
+ path: control.key,
137
+ value,
138
+ readOnly,
139
+ schema: schemaFromControl(control),
140
+ enumValues: control.enumValues,
141
+ onChange,
142
+ }), renderDescription(description, control.key, locale), resourcePicker?.({
143
+ control,
144
+ value,
145
+ readOnly,
146
+ onSelect: onChange,
147
+ }) ?? null);
148
+ }
149
+ function SchemaValueEditor({ schema, value, path, readOnly, locale, onChange, }) {
150
+ const type = primarySchemaType(schema) ?? inferSchemaTypeFromValue(value);
151
+ if (type === 'array') {
152
+ const items = Array.isArray(value) ? value : [];
153
+ const itemSchema = schema?.items;
154
+ return React.createElement('div', { 'data-preview-props-array-control': path, style: arrayControlStyle }, React.createElement('div', { style: arrayToolbarStyle }, React.createElement('span', null, `${items.length} ${messages[locale].array}`), React.createElement('button', {
155
+ type: 'button',
156
+ disabled: readOnly,
157
+ 'data-preview-props-array-add': path,
158
+ onClick: () => {
159
+ if (!readOnly)
160
+ onChange([...items, createDefaultValueFromSchema(itemSchema)]);
161
+ },
162
+ style: inlineActionButtonStyle,
163
+ }, messages[locale].addItem)), items.length === 0
164
+ ? React.createElement('span', { style: emptyStructuredStyle }, messages[locale].noStructuredFields)
165
+ : items.map((item, index) => {
166
+ const itemPath = `${path}[${index}]`;
167
+ return React.createElement('div', { key: itemPath, 'data-preview-props-array-item': itemPath, style: arrayItemStyle }, React.createElement('div', { style: arrayItemHeaderStyle }, React.createElement('strong', null, `Item ${index + 1}`), React.createElement('span', null, React.createElement('button', {
168
+ type: 'button',
169
+ disabled: readOnly,
170
+ onClick: () => {
171
+ if (!readOnly)
172
+ onChange([...items.slice(0, index + 1), cloneJsonValue(item), ...items.slice(index + 1)]);
173
+ },
174
+ style: inlineActionButtonStyle,
175
+ }, messages[locale].duplicate), React.createElement('button', {
176
+ type: 'button',
177
+ disabled: readOnly,
178
+ onClick: () => {
179
+ if (!readOnly)
180
+ onChange(items.filter((_, candidateIndex) => candidateIndex !== index));
181
+ },
182
+ style: inlineActionButtonStyle,
183
+ }, messages[locale].delete))), React.createElement(SchemaValueEditor, {
184
+ schema: itemSchema ?? schemaFromValue(item),
185
+ value: item,
186
+ path: itemPath,
187
+ readOnly,
188
+ locale,
189
+ onChange: (nextValue) => onChange(items.map((candidate, candidateIndex) => (candidateIndex === index ? nextValue : candidate))),
190
+ }));
191
+ }), renderFieldError(path, validatePromptFramePreviewValue(items, schema)));
192
+ }
193
+ if (type === 'object') {
194
+ const record = isPlainRecord(value) ? value : {};
195
+ const properties = schema?.properties ?? {};
196
+ const keys = uniqueStrings([...Object.keys(properties), ...Object.keys(record)]).slice(0, 200);
197
+ return React.createElement('div', { 'data-preview-props-object-group': path, style: objectGroupStyle }, keys.length === 0
198
+ ? React.createElement('span', { style: emptyStructuredStyle }, messages[locale].noStructuredFields)
199
+ : keys.map((key) => {
200
+ const childSchema = properties[key] ?? schemaFromValue(record[key]);
201
+ const childPath = `${path}.${key}`;
202
+ return React.createElement(SchemaValueEditor, {
203
+ key,
204
+ schema: childSchema,
205
+ value: record[key] ?? createDefaultValueFromSchema(childSchema),
206
+ path: childPath,
207
+ readOnly,
208
+ locale,
209
+ onChange: (nextValue) => onChange({ ...record, [key]: nextValue }),
210
+ });
211
+ }), renderFieldError(path, validatePromptFramePreviewValue(record, schema)));
212
+ }
213
+ return React.createElement('label', { style: fieldShellStyle }, React.createElement('span', { style: fieldLabelStyle }, lastPathSegment(path)), renderScalarInput({
214
+ kind: scalarKindFromSchema(schema, value),
215
+ path,
216
+ value,
217
+ readOnly,
218
+ schema,
219
+ enumValues: schema?.enum,
220
+ onChange,
221
+ }), schema?.description ? React.createElement('span', { style: descriptionStyle }, schema.description) : null, renderFieldError(path, validatePromptFramePreviewValue(value, schema)));
222
+ }
223
+ function PreviewJsonControlEditor({ control, value, readOnly, locale, onChange, }) {
224
+ const expectedType = control.type === 'array' ? 'array' : 'object';
225
+ const serializedValue = React.useMemo(() => JSON.stringify(value !== undefined ? value : createDefaultValueFromSchema(control.schema), null, 2), [control.schema, value]);
226
+ const [draft, setDraft] = React.useState(serializedValue);
227
+ const [error, setError] = React.useState(null);
228
+ const errorId = `preview-props-json-error-${control.key.replace(/[^A-Za-z0-9_-]/g, '-')}`;
229
+ React.useEffect(() => {
230
+ setDraft(serializedValue);
231
+ setError(null);
232
+ }, [serializedValue]);
233
+ return React.createElement(React.Fragment, null, React.createElement('textarea', {
234
+ readOnly,
235
+ disabled: readOnly,
236
+ 'aria-invalid': error ? 'true' : undefined,
237
+ 'aria-describedby': error ? errorId : undefined,
238
+ 'data-preview-props-json-control': control.key,
239
+ value: draft,
240
+ onChange: (event) => {
241
+ if (readOnly)
242
+ return;
243
+ const nextDraft = eventValue(event);
244
+ setDraft(nextDraft);
245
+ const parsed = parsePromptFramePreviewInspectorJsonDraft(nextDraft, expectedType, locale, control.schema);
246
+ if (!parsed.ok) {
247
+ setError(parsed.error);
248
+ return;
249
+ }
250
+ setError(null);
251
+ onChange(parsed.value);
252
+ },
253
+ style: textAreaStyle,
254
+ }), error
255
+ ? React.createElement('span', { id: errorId, 'data-preview-props-json-error': control.key, style: errorStyle }, error)
256
+ : null);
257
+ }
258
+ function renderScalarInput({ kind, path, value, readOnly, schema, enumValues, onChange, }) {
259
+ if (kind === 'boolean') {
260
+ return React.createElement('input', {
261
+ type: 'checkbox',
262
+ checked: Boolean(value),
263
+ disabled: readOnly,
264
+ 'data-preview-props-field': path,
265
+ onChange: (event) => onChange(eventChecked(event)),
266
+ });
267
+ }
268
+ if (kind === 'enum') {
269
+ return React.createElement('select', {
270
+ value: String(value ?? ''),
271
+ disabled: readOnly,
272
+ 'data-preview-props-field': path,
273
+ onChange: (event) => onChange(coerceEnumValue(eventValue(event), enumValues)),
274
+ style: inputStyle,
275
+ }, (enumValues ?? []).map((option) => React.createElement('option', { key: String(option), value: String(option) }, String(option))));
276
+ }
277
+ if (kind === 'number') {
278
+ return React.createElement('input', {
279
+ type: 'number',
280
+ value: typeof value === 'number' ? value : '',
281
+ min: schema?.minimum,
282
+ max: schema?.maximum,
283
+ step: primarySchemaType(schema) === 'integer' ? 1 : 'any',
284
+ readOnly,
285
+ disabled: readOnly,
286
+ 'data-preview-props-field': path,
287
+ onChange: (event) => {
288
+ const nextValue = eventValue(event);
289
+ onChange(nextValue.trim() === '' ? undefined : Number(nextValue));
290
+ },
291
+ style: inputStyle,
292
+ });
293
+ }
294
+ if (kind === 'color') {
295
+ return React.createElement('span', { style: colorFieldStyle }, React.createElement('span', {
296
+ 'data-preview-props-color-swatch': path,
297
+ style: {
298
+ ...colorSwatchStyle,
299
+ background: typeof value === 'string' ? value : '#000000',
300
+ },
301
+ }), React.createElement('input', {
302
+ type: 'color',
303
+ value: typeof value === 'string' && isHexColor(value) ? value : '#000000',
304
+ disabled: readOnly,
305
+ 'data-preview-props-field': path,
306
+ onChange: (event) => onChange(eventValue(event)),
307
+ style: inputStyle,
308
+ }));
309
+ }
310
+ return React.createElement('input', {
311
+ type: 'text',
312
+ value: String(value ?? ''),
313
+ readOnly,
314
+ disabled: readOnly,
315
+ 'data-preview-props-field': path,
316
+ onChange: (event) => onChange(eventValue(event)),
317
+ style: inputStyle,
318
+ });
319
+ }
320
+ function validatePromptFramePreviewValue(value, schema, path = '') {
321
+ if (!schema)
322
+ return null;
323
+ const type = primarySchemaType(schema);
324
+ if ('const' in schema && schema.const !== undefined && !isJsonEqual(schema.const, value)) {
325
+ return `${path ? `${path} ` : ''}must match the const value.`;
326
+ }
327
+ if (type && !schemaTypeMatches(value, type))
328
+ return `${path ? `${path} ` : ''}must be ${type}.`;
329
+ if (type === 'string' && typeof value === 'string') {
330
+ if (schema.minLength !== undefined && value.length < schema.minLength) {
331
+ return `${path ? `${path} ` : ''}must be at least ${schema.minLength} characters.`;
332
+ }
333
+ if (schema.maxLength !== undefined && value.length > schema.maxLength) {
334
+ return `${path ? `${path} ` : ''}must be at most ${schema.maxLength} characters.`;
335
+ }
336
+ if (schema.format === 'color' && !isHexColor(value)) {
337
+ return `${path ? `${path} ` : ''}must be a valid color value.`;
338
+ }
339
+ }
340
+ if ((type === 'number' || type === 'integer') && typeof value === 'number') {
341
+ if (schema.minimum !== undefined && value < schema.minimum)
342
+ return `${path ? `${path} ` : ''}must be >= ${schema.minimum}.`;
343
+ if (schema.maximum !== undefined && value > schema.maximum)
344
+ return `${path ? `${path} ` : ''}must be <= ${schema.maximum}.`;
345
+ }
346
+ if (schema.enum && !schema.enum.some((candidate) => Object.is(candidate, value))) {
347
+ return `${path ? `${path} ` : ''}must be one of ${schema.enum.map(String).join(', ')}.`;
348
+ }
349
+ if ((type === 'object' || schema.properties) && isPlainRecord(value)) {
350
+ for (const key of schema.required ?? []) {
351
+ if (!(key in value))
352
+ return `${path ? `${path}.${key}` : key} is required.`;
353
+ }
354
+ for (const [key, childSchema] of Object.entries(schema.properties ?? {})) {
355
+ if (!(key in value))
356
+ continue;
357
+ const childError = validatePromptFramePreviewValue(value[key], childSchema, path ? `${path}.${key}` : key);
358
+ if (childError)
359
+ return childError;
360
+ }
361
+ }
362
+ if ((type === 'array' || schema.items) && Array.isArray(value)) {
363
+ for (let index = 0; index < value.length; index += 1) {
364
+ const childError = validatePromptFramePreviewValue(value[index], schema.items, `${path}[${index}]`);
365
+ if (childError)
366
+ return childError;
367
+ }
368
+ }
369
+ return null;
370
+ }
371
+ function renderDescription(description, key, locale) {
372
+ if (description)
373
+ return React.createElement('span', { style: descriptionStyle }, description);
374
+ return React.createElement('span', { 'data-preview-props-missing-description': key, style: missingDescriptionStyle }, messages[locale].missingDescription);
375
+ }
376
+ function renderFieldError(path, error) {
377
+ if (!error)
378
+ return null;
379
+ return React.createElement('span', { 'data-preview-props-field-error': path, style: errorStyle }, error);
380
+ }
381
+ function controlLabel(control, locale) {
382
+ return control.labelI18n?.[locale] ?? control.labelI18n?.en ?? control.labelI18n?.zh ?? control.label ?? control.key;
383
+ }
384
+ function controlDescription(control, locale) {
385
+ return control.descriptionI18n?.[locale] ?? control.descriptionI18n?.en ?? control.descriptionI18n?.zh ?? control.description;
386
+ }
387
+ function schemaFromControl(control) {
388
+ if (control.schema)
389
+ return control.schema;
390
+ if (control.type === 'enum')
391
+ return { type: 'string', enum: control.enumValues };
392
+ if (control.type === 'text' || control.type === 'color')
393
+ return { type: 'string' };
394
+ if (control.type === 'number')
395
+ return { type: 'number' };
396
+ if (control.type === 'boolean')
397
+ return { type: 'boolean' };
398
+ return { type: control.type };
399
+ }
400
+ function schemaFromValue(value) {
401
+ if (Array.isArray(value))
402
+ return { type: 'array', items: schemaFromValue(value[0]) };
403
+ if (isPlainRecord(value)) {
404
+ return {
405
+ type: 'object',
406
+ properties: Object.fromEntries(Object.entries(value).map(([key, nested]) => [key, schemaFromValue(nested) ?? {}])),
407
+ };
408
+ }
409
+ if (typeof value === 'boolean')
410
+ return { type: 'boolean' };
411
+ if (typeof value === 'number')
412
+ return { type: 'number' };
413
+ if (typeof value === 'string')
414
+ return { type: 'string' };
415
+ return undefined;
416
+ }
417
+ function createDefaultValueFromSchema(schema) {
418
+ const type = primarySchemaType(schema);
419
+ if (type === 'array')
420
+ return [];
421
+ if (type === 'object') {
422
+ return Object.fromEntries(Object.entries(schema?.properties ?? {}).map(([key, child]) => [key, createDefaultValueFromSchema(child)]));
423
+ }
424
+ if (type === 'boolean')
425
+ return false;
426
+ if (type === 'number' || type === 'integer')
427
+ return 0;
428
+ if (schema?.enum?.length)
429
+ return schema.enum[0];
430
+ return '';
431
+ }
432
+ function primarySchemaType(schema) {
433
+ const type = schema?.type;
434
+ return Array.isArray(type) ? type.find((candidate) => candidate !== 'null') : type;
435
+ }
436
+ function inferSchemaTypeFromValue(value) {
437
+ if (Array.isArray(value))
438
+ return 'array';
439
+ if (value === null)
440
+ return 'null';
441
+ if (typeof value === 'object')
442
+ return 'object';
443
+ if (typeof value === 'boolean')
444
+ return 'boolean';
445
+ if (typeof value === 'number')
446
+ return 'number';
447
+ return 'string';
448
+ }
449
+ function scalarKindFromSchema(schema, value) {
450
+ if (schema?.enum?.length)
451
+ return 'enum';
452
+ const type = primarySchemaType(schema);
453
+ if (type === 'boolean')
454
+ return 'boolean';
455
+ if (type === 'number' || type === 'integer')
456
+ return 'number';
457
+ if (typeof value === 'string' && isHexColor(value))
458
+ return 'color';
459
+ return 'text';
460
+ }
461
+ function schemaTypeMatches(value, type) {
462
+ if (type === 'array')
463
+ return Array.isArray(value);
464
+ if (type === 'object')
465
+ return isPlainRecord(value);
466
+ if (type === 'integer')
467
+ return Number.isInteger(value);
468
+ if (type === 'null')
469
+ return value === null;
470
+ return typeof value === type;
471
+ }
472
+ function coerceEnumValue(value, values) {
473
+ return values?.find((candidate) => String(candidate) === value) ?? value;
474
+ }
475
+ function isPlainRecord(value) {
476
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
477
+ }
478
+ function isJsonEqual(left, right) {
479
+ return JSON.stringify(left) === JSON.stringify(right);
480
+ }
481
+ function uniqueStrings(values) {
482
+ return [...new Set(values)];
483
+ }
484
+ function cloneJsonValue(value) {
485
+ return JSON.parse(JSON.stringify(value));
486
+ }
487
+ function eventValue(event) {
488
+ const target = eventTarget(event);
489
+ return typeof target.value === 'string' ? target.value : '';
490
+ }
491
+ function eventChecked(event) {
492
+ const target = eventTarget(event);
493
+ return target.checked === true;
494
+ }
495
+ function eventTarget(event) {
496
+ if (!event || typeof event !== 'object')
497
+ return {};
498
+ const candidate = event;
499
+ return candidate.currentTarget ?? candidate.target ?? {};
500
+ }
501
+ function lastPathSegment(path) {
502
+ return path.replace(/\[\d+\]/g, '').split('.').filter(Boolean).at(-1) ?? path;
503
+ }
504
+ function isHexColor(value) {
505
+ return /^#[0-9a-f]{6}$/i.test(value);
506
+ }
507
+ function shellStyle(style, density) {
508
+ return {
509
+ display: 'flex',
510
+ flexDirection: 'column',
511
+ gap: density === 'compact' ? 8 : 12,
512
+ color: 'var(--pf-preview-text, #172033)',
513
+ ...style,
514
+ };
515
+ }
516
+ const stateStyle = {
517
+ border: '1px dashed var(--pf-preview-border, #cbd5e1)',
518
+ borderRadius: 8,
519
+ padding: 12,
520
+ color: 'var(--pf-preview-muted, #64748b)',
521
+ };
522
+ const toolbarStyle = { display: 'flex', gap: 8, flexWrap: 'wrap' };
523
+ const contentStyle = { display: 'flex', flexDirection: 'column', gap: 12 };
524
+ const scrollPaneStyle = { ...contentStyle, maxHeight: 420, overflow: 'auto', paddingRight: 4 };
525
+ const complexControlStyle = { border: '1px solid var(--pf-preview-border, #e2e8f0)', borderRadius: 8, padding: 12, display: 'grid', gap: 8 };
526
+ const controlHeaderStyle = { display: 'flex', justifyContent: 'space-between', gap: 8, alignItems: 'center' };
527
+ const fieldShellStyle = { display: 'grid', gap: 4, fontSize: 12 };
528
+ const fieldLabelStyle = { fontWeight: 700 };
529
+ const inputStyle = { border: '1px solid var(--pf-preview-border, #cbd5e1)', borderRadius: 6, padding: '7px 9px', font: 'inherit' };
530
+ const textAreaStyle = { ...inputStyle, minHeight: 96, width: '100%', fontFamily: 'monospace' };
531
+ const descriptionStyle = { color: 'var(--pf-preview-muted, #64748b)', fontSize: 12 };
532
+ const missingDescriptionStyle = { ...descriptionStyle, fontStyle: 'italic' };
533
+ const errorStyle = { color: '#b91c1c', fontSize: 12 };
534
+ const objectGroupStyle = { display: 'grid', gap: 8, padding: 8, borderLeft: '2px solid var(--pf-preview-border, #e2e8f0)' };
535
+ const arrayControlStyle = { display: 'grid', gap: 8 };
536
+ const arrayToolbarStyle = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 8 };
537
+ const arrayItemStyle = { border: '1px solid var(--pf-preview-border, #e2e8f0)', borderRadius: 8, padding: 8, display: 'grid', gap: 8 };
538
+ const arrayItemHeaderStyle = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 8 };
539
+ const inlineActionButtonStyle = { border: '1px solid var(--pf-preview-border, #cbd5e1)', borderRadius: 6, padding: '5px 8px', background: '#fff' };
540
+ const emptyStructuredStyle = { color: 'var(--pf-preview-muted, #64748b)', fontSize: 12 };
541
+ const advancedJsonStyle = { display: 'grid', gap: 6 };
542
+ const colorFieldStyle = { display: 'flex', alignItems: 'center', gap: 8 };
543
+ const colorSwatchStyle = { width: 20, height: 20, borderRadius: 999, border: '1px solid var(--pf-preview-border, #cbd5e1)', display: 'inline-block' };
544
+ const jsonBoxStyle = { background: '#f8fafc', border: '1px solid #e2e8f0', borderRadius: 8, padding: 10, overflow: 'auto', fontSize: 12 };
545
+ function actionButtonStyle(disabled) {
546
+ return {
547
+ border: '1px solid var(--pf-preview-border, #cbd5e1)',
548
+ borderRadius: 6,
549
+ padding: '6px 10px',
550
+ background: '#fff',
551
+ cursor: disabled ? 'not-allowed' : 'pointer',
552
+ opacity: disabled ? 0.55 : 1,
553
+ };
554
+ }
555
+ //# sourceMappingURL=preview-react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-react.js","sourceRoot":"","sources":["../src/preview-react.ts"],"names":[],"mappings":"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"}
package/dist/preview.d.ts CHANGED
@@ -6,6 +6,11 @@ export interface ComponentPreviewConstraints {
6
6
  }
7
7
  export declare const COMPONENT_PREVIEW_CONSTRAINTS: ComponentPreviewConstraints;
8
8
  export type PromptFramePreviewFps = 30 | 60;
9
+ export type PromptFramePreviewCaseKind = 'baseline_reset' | 'aspect' | 'props_stress' | 'fps_diagnostic';
10
+ export type PromptFramePreviewProbeCoverage = 'platform_probe_equivalent' | 'local_authoring_only';
11
+ export type PromptFramePreviewPropPath = Array<string | number>;
12
+ export type PromptFramePreviewPropControlKind = 'boolean' | 'color' | 'json_array' | 'json_null' | 'json_object' | 'number' | 'text';
13
+ export type PromptFramePreviewPropInputType = 'color' | 'number' | 'select' | 'text';
9
14
  export interface ComponentPreviewPropsEnvelope<TProps extends Record<string, unknown> = Record<string, unknown>> {
10
15
  durationFrames: number;
11
16
  fps: 30;
@@ -17,8 +22,20 @@ export interface PromptFramePreviewCase<TProps extends Record<string, unknown> =
17
22
  id: string;
18
23
  name: string;
19
24
  description: string;
25
+ caseKind: PromptFramePreviewCaseKind;
26
+ probeCoverage: PromptFramePreviewProbeCoverage;
20
27
  fps: PromptFramePreviewFps;
21
28
  }
29
+ export interface PromptFramePreviewPropControlDescriptor {
30
+ path: PromptFramePreviewPropPath;
31
+ pathKey: string;
32
+ label: string;
33
+ kind: PromptFramePreviewPropControlKind;
34
+ inputType?: PromptFramePreviewPropInputType;
35
+ jsonLike: boolean;
36
+ primitive: boolean;
37
+ structured: boolean;
38
+ }
22
39
  export interface CreatePreviewCaseMatrixInput<TProps extends Record<string, unknown>> {
23
40
  basePreview: Omit<ComponentPreviewPropsEnvelope<TProps>, 'props'>;
24
41
  baseProps: TProps;
@@ -33,4 +50,17 @@ export interface CreatePreviewCaseMatrixInput<TProps extends Record<string, unkn
33
50
  }
34
51
  export declare function assertPreviewWithinConstraints(preview: ComponentPreviewPropsEnvelope, constraints?: ComponentPreviewConstraints): void;
35
52
  export declare function createPreviewCaseMatrix<TProps extends Record<string, unknown>>({ basePreview, baseProps, validateProps, fpsPresets, aspectPresets, }: CreatePreviewCaseMatrixInput<TProps>): PromptFramePreviewCase<TProps>[];
53
+ export declare function formatPromptFramePreviewPropLabel(rawKey: string): string;
54
+ export declare function formatPromptFramePreviewPropPath(path: PromptFramePreviewPropPath): string;
55
+ export declare function describePromptFramePreviewPropControl(path: PromptFramePreviewPropPath, value: unknown, label?: string): PromptFramePreviewPropControlDescriptor;
56
+ export declare function isPromptFramePreviewJsonLikeValue(value: unknown): value is Record<string, unknown> | unknown[] | null;
57
+ export declare function formatPromptFramePreviewControlValue(value: unknown): string | number;
58
+ export declare function coercePromptFramePreviewControlValue(currentValue: unknown, rawValue: string): unknown;
59
+ export declare function parsePromptFramePreviewJsonDraft(rawValue: string): {
60
+ success: true;
61
+ value: unknown;
62
+ } | {
63
+ success: false;
64
+ message: string;
65
+ };
36
66
  //# sourceMappingURL=preview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,6BAA6B,EAAE,2BAK3C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,CAAC;AAE5C,MAAM,WAAW,6BAA6B,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7G,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,EAAE,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACtG,SAAQ,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,qBAAqB,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClF,WAAW,EAAE,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,UAAU,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC5B,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAQD,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,6BAA6B,EACtC,WAAW,GAAE,2BAA2D,GACvE,IAAI,CAON;AAED,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC9E,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,aAA4C,GAC7C,EAAE,4BAA4B,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAgEzE"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
package/dist/preview.js CHANGED
@@ -47,6 +47,8 @@ export function createPreviewCaseMatrix({ basePreview, baseProps, validateProps,
47
47
  id: 'default',
48
48
  name: 'Default',
49
49
  description: 'Canonical src/preview-props.json case.',
50
+ caseKind: 'baseline_reset',
51
+ probeCoverage: 'platform_probe_equivalent',
50
52
  ...basePreview,
51
53
  props: cloneProps(baseProps),
52
54
  });
@@ -57,6 +59,8 @@ export function createPreviewCaseMatrix({ basePreview, baseProps, validateProps,
57
59
  id: `fps-${fps}`,
58
60
  name: `${fps}fps`,
59
61
  description: `${fps}fps timing case scaled from ${basePreview.fps}fps for fps-adaptive diagnostics.`,
62
+ caseKind: 'fps_diagnostic',
63
+ probeCoverage: 'local_authoring_only',
60
64
  ...basePreview,
61
65
  fps,
62
66
  durationFrames: scaleDurationFramesForFps(basePreview.durationFrames, basePreview.fps, fps),
@@ -68,6 +72,8 @@ export function createPreviewCaseMatrix({ basePreview, baseProps, validateProps,
68
72
  id: preset.id,
69
73
  name: preset.name,
70
74
  description: `Aspect case ${preset.name}.`,
75
+ caseKind: 'aspect',
76
+ probeCoverage: 'platform_probe_equivalent',
71
77
  ...basePreview,
72
78
  width: preset.width,
73
79
  height: preset.height,
@@ -79,12 +85,143 @@ export function createPreviewCaseMatrix({ basePreview, baseProps, validateProps,
79
85
  id: variant.id,
80
86
  name: variant.name,
81
87
  description: variant.description,
88
+ caseKind: 'props_stress',
89
+ probeCoverage: 'platform_probe_equivalent',
82
90
  ...basePreview,
83
91
  props: variant.props,
84
92
  });
85
93
  }
86
94
  return cases;
87
95
  }
96
+ export function formatPromptFramePreviewPropLabel(rawKey) {
97
+ const spaced = rawKey
98
+ .replace(/[_-]+/g, ' ')
99
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
100
+ .replace(/\s+/g, ' ')
101
+ .trim();
102
+ if (!spaced)
103
+ return rawKey;
104
+ return spaced.replace(/\b[a-z]/g, (character) => character.toUpperCase());
105
+ }
106
+ export function formatPromptFramePreviewPropPath(path) {
107
+ return path.map(String).join('.');
108
+ }
109
+ export function describePromptFramePreviewPropControl(path, value, label = formatPromptFramePreviewPropLabel(String(path.at(-1) ?? 'value'))) {
110
+ const pathKey = formatPromptFramePreviewPropPath(path);
111
+ if (Array.isArray(value)) {
112
+ return {
113
+ path,
114
+ pathKey,
115
+ label,
116
+ kind: 'json_array',
117
+ jsonLike: true,
118
+ primitive: false,
119
+ structured: true,
120
+ };
121
+ }
122
+ if (value === null) {
123
+ return {
124
+ path,
125
+ pathKey,
126
+ label,
127
+ kind: 'json_null',
128
+ jsonLike: true,
129
+ primitive: false,
130
+ structured: true,
131
+ };
132
+ }
133
+ if (typeof value === 'object') {
134
+ return {
135
+ path,
136
+ pathKey,
137
+ label,
138
+ kind: 'json_object',
139
+ jsonLike: true,
140
+ primitive: false,
141
+ structured: true,
142
+ };
143
+ }
144
+ if (typeof value === 'boolean') {
145
+ return {
146
+ path,
147
+ pathKey,
148
+ label,
149
+ kind: 'boolean',
150
+ inputType: 'select',
151
+ jsonLike: false,
152
+ primitive: true,
153
+ structured: false,
154
+ };
155
+ }
156
+ if (typeof value === 'number') {
157
+ return {
158
+ path,
159
+ pathKey,
160
+ label,
161
+ kind: 'number',
162
+ inputType: 'number',
163
+ jsonLike: false,
164
+ primitive: true,
165
+ structured: false,
166
+ };
167
+ }
168
+ if (typeof value === 'string' && isHexColor(value)) {
169
+ return {
170
+ path,
171
+ pathKey,
172
+ label,
173
+ kind: 'color',
174
+ inputType: 'color',
175
+ jsonLike: false,
176
+ primitive: true,
177
+ structured: false,
178
+ };
179
+ }
180
+ return {
181
+ path,
182
+ pathKey,
183
+ label,
184
+ kind: 'text',
185
+ inputType: 'text',
186
+ jsonLike: false,
187
+ primitive: true,
188
+ structured: false,
189
+ };
190
+ }
191
+ export function isPromptFramePreviewJsonLikeValue(value) {
192
+ return value === null || typeof value === 'object';
193
+ }
194
+ export function formatPromptFramePreviewControlValue(value) {
195
+ if (typeof value === 'number')
196
+ return Number.isFinite(value) ? value : '';
197
+ if (typeof value === 'boolean')
198
+ return value ? 'true' : 'false';
199
+ return typeof value === 'string' ? value : '';
200
+ }
201
+ export function coercePromptFramePreviewControlValue(currentValue, rawValue) {
202
+ if (typeof currentValue === 'number') {
203
+ const numeric = Number(rawValue);
204
+ return Number.isFinite(numeric) ? numeric : currentValue;
205
+ }
206
+ if (typeof currentValue === 'boolean')
207
+ return rawValue === 'true';
208
+ if (isPromptFramePreviewJsonLikeValue(currentValue)) {
209
+ const parsed = parsePromptFramePreviewJsonDraft(rawValue);
210
+ return parsed.success ? parsed.value : currentValue;
211
+ }
212
+ return rawValue;
213
+ }
214
+ export function parsePromptFramePreviewJsonDraft(rawValue) {
215
+ try {
216
+ return { success: true, value: JSON.parse(rawValue) };
217
+ }
218
+ catch (error) {
219
+ return {
220
+ success: false,
221
+ message: error instanceof Error ? error.message : 'Unable to parse JSON.',
222
+ };
223
+ }
224
+ }
88
225
  function normalizeFpsPresets(fpsPresets) {
89
226
  return Array.from(new Set(fpsPresets ?? [])).sort((left, right) => left - right);
90
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  export declare const COMPONENT_STANDARD_VERSION: "component-standard.v0.1.0";
2
2
  export declare const COMPONENT_STANDARD_SOURCE_HASH: "sha256:8c1e01c36155b4b646981064d24df9bd8cda501fd9cd9da93e5b62f40db22d52";
3
3
  export declare const COMPONENT_STANDARD_SOURCE_PATH: "https://github.com/ty-teams/promptframe-component-authoring#readme";
4
- export declare const COMPONENT_KIT_VERSION: "0.1.11";
4
+ export declare const COMPONENT_KIT_VERSION: "0.1.13";
5
5
  export declare const COMPONENT_MANIFEST_SCHEMA_VERSION: "component-manifest.v0.1.0";
6
6
  export declare const COMPONENT_REVIEW_CHECKLIST_VERSION: "component-review-checklist.v0.1.0";
7
7
  export declare function getComponentStandardStamp(): {
8
8
  sourceVersion: "component-standard.v0.1.0";
9
9
  sourceHash: "sha256:8c1e01c36155b4b646981064d24df9bd8cda501fd9cd9da93e5b62f40db22d52";
10
10
  sourcePath: "https://github.com/ty-teams/promptframe-component-authoring#readme";
11
- componentKitVersion: "0.1.11";
11
+ componentKitVersion: "0.1.13";
12
12
  manifestSchemaVersion: "component-manifest.v0.1.0";
13
13
  reviewChecklistVersion: "component-review-checklist.v0.1.0";
14
14
  };
package/dist/standard.js CHANGED
@@ -2,7 +2,7 @@ import { COMPONENT_MANIFEST_SCHEMA_VERSION as CONTRACTS_COMPONENT_MANIFEST_SCHEM
2
2
  export const COMPONENT_STANDARD_VERSION = CONTRACTS_COMPONENT_STANDARD_VERSION;
3
3
  export const COMPONENT_STANDARD_SOURCE_HASH = CONTRACTS_COMPONENT_STANDARD_SOURCE_HASH;
4
4
  export const COMPONENT_STANDARD_SOURCE_PATH = 'https://github.com/ty-teams/promptframe-component-authoring#readme';
5
- export const COMPONENT_KIT_VERSION = '0.1.11';
5
+ export const COMPONENT_KIT_VERSION = '0.1.13';
6
6
  export const COMPONENT_MANIFEST_SCHEMA_VERSION = CONTRACTS_COMPONENT_MANIFEST_SCHEMA_VERSION;
7
7
  export const COMPONENT_REVIEW_CHECKLIST_VERSION = 'component-review-checklist.v0.1.0';
8
8
  export function getComponentStandardStamp() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptframe/component-kit",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -27,6 +27,14 @@
27
27
  "import": "./dist/preview.js",
28
28
  "types": "./dist/preview.d.ts"
29
29
  },
30
+ "./preview-react": {
31
+ "import": "./dist/preview-react.js",
32
+ "types": "./dist/preview-react.d.ts"
33
+ },
34
+ "./layout": {
35
+ "import": "./dist/layout.js",
36
+ "types": "./dist/layout.d.ts"
37
+ },
30
38
  "./timing": {
31
39
  "import": "./dist/timing.js",
32
40
  "types": "./dist/timing.d.ts"
@@ -57,7 +65,7 @@
57
65
  "clean": "rm -rf dist"
58
66
  },
59
67
  "dependencies": {
60
- "@promptframe/contracts": "^0.1.13"
68
+ "@promptframe/contracts": "^0.1.15"
61
69
  },
62
70
  "peerDependencies": {
63
71
  "react": "^19.0.0",
@@ -72,6 +80,9 @@
72
80
  }
73
81
  },
74
82
  "devDependencies": {
83
+ "@types/react": "^19.2.17",
84
+ "@types/react-dom": "^19.2.3",
85
+ "react-dom": "^19.2.6",
75
86
  "tsx": "^4.19.0",
76
87
  "typescript": "~5.7.0"
77
88
  }