@toon-ui/core 1.1.0 → 1.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyM,KAAK,YAAY,EAAE,KAAK,aAAa,EAAiB,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAO5S,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;gBAEH,KAAK,EAAE,eAAe;CAOnC;AAqMD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA2BxD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAmCL,KAAK,YAAY,EACjB,KAAK,aAAa,EAGlB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAOjB,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;gBAEH,KAAK,EAAE,eAAe;CAOnC;AAuaD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA2BxD"}
package/dist/parser.js CHANGED
@@ -1,4 +1,4 @@
1
- import { OFFICIAL_COMPONENT_KEYS } from './types';
1
+ import { OFFICIAL_COMPONENT_KEYS, } from './types';
2
2
  export class ToonSyntaxError extends Error {
3
3
  code;
4
4
  line;
@@ -11,13 +11,35 @@ export class ToonSyntaxError extends Error {
11
11
  this.column = issue.column ?? 1;
12
12
  }
13
13
  }
14
- const quoted = /"([^"]+)"/g;
14
+ const quoted = /"([^"]*)"/g;
15
15
  function getIndent(line) {
16
16
  return line.match(/^\s*/)?.[0].length ?? 0;
17
17
  }
18
18
  function getQuotedValues(input) {
19
19
  return [...input.matchAll(quoted)].map((match) => match[1]);
20
20
  }
21
+ function getStringAttribute(input, name) {
22
+ return input.match(new RegExp(`${name}="([^"]*)"`))?.[1];
23
+ }
24
+ function getNumberAttribute(input, name) {
25
+ const value = input.match(new RegExp(`${name}=([^\s]+)`))?.[1];
26
+ if (value === undefined)
27
+ return undefined;
28
+ const parsed = Number(value);
29
+ return Number.isNaN(parsed) ? undefined : parsed;
30
+ }
31
+ function getBooleanAttribute(input, name) {
32
+ const value = input.match(new RegExp(`${name}=(true|false)`))?.[1];
33
+ if (value === undefined)
34
+ return undefined;
35
+ return value === 'true';
36
+ }
37
+ function getDelimitedAttribute(input, name, delimiter = '|') {
38
+ const value = getStringAttribute(input, name);
39
+ if (!value)
40
+ return undefined;
41
+ return value.split(delimiter).map((entry) => entry.trim()).filter(Boolean);
42
+ }
21
43
  function parseDelimitedValues(input) {
22
44
  const values = [];
23
45
  let current = '';
@@ -50,6 +72,32 @@ function parseDelimitedValues(input) {
50
72
  }
51
73
  return values.map((value) => value.replace(/^"(.*)"$/s, '$1').trim());
52
74
  }
75
+ function parseActionDescriptor(input, line, column) {
76
+ const replyMatch = input.match(/reply="([^"]+)"/);
77
+ const isSubmit = /\bsubmit\b/.test(input);
78
+ if (!replyMatch && !isSubmit)
79
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: action requires reply or submit.`, line, column);
80
+ return replyMatch ? { kind: 'reply', value: replyMatch[1] } : { kind: 'submit' };
81
+ }
82
+ function parseFieldValue(fieldType, input) {
83
+ if (fieldType === 'multiselect') {
84
+ return input.split('|').map((entry) => entry.trim()).filter(Boolean);
85
+ }
86
+ if (fieldType === 'checkbox' || fieldType === 'switch') {
87
+ return input === 'true';
88
+ }
89
+ if (fieldType === 'number' || fieldType === 'slider') {
90
+ const parsed = Number(input);
91
+ return Number.isNaN(parsed) ? input : parsed;
92
+ }
93
+ return input;
94
+ }
95
+ function getVariantBeforeQuotedValue(input, prefix) {
96
+ const head = input.slice(prefix.length).trim();
97
+ if (head.startsWith('"'))
98
+ return undefined;
99
+ return head.split(/\s+/)[0];
100
+ }
53
101
  function syntaxIssue(code, message, line, column = 1) {
54
102
  throw new ToonSyntaxError({ code, message, line, column });
55
103
  }
@@ -59,10 +107,21 @@ function basePosition(line, raw) {
59
107
  function parseLine(content, line, column) {
60
108
  if (content.startsWith('text ')) {
61
109
  const [value] = getQuotedValues(content);
62
- if (!value)
110
+ if (value === undefined)
63
111
  syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: text requires a quoted value.`, line, column);
64
112
  return { type: 'text', value, line, column };
65
113
  }
114
+ if (content.startsWith('heading ')) {
115
+ const [text] = getQuotedValues(content);
116
+ const level = Number(content.trim().split(/\s+/)[1]);
117
+ if (!text || Number.isNaN(level))
118
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: heading requires level and quoted text.`, line, column);
119
+ return { type: 'heading', level: level, text, line, column };
120
+ }
121
+ if (content.startsWith('separator')) {
122
+ const orientation = content.trim().split(/\s+/)[1] ?? 'horizontal';
123
+ return { type: 'separator', orientation: orientation, line, column };
124
+ }
66
125
  if (content.startsWith('badge ')) {
67
126
  const [label] = getQuotedValues(content);
68
127
  const variant = content.trim().split(/\s+/).at(-1);
@@ -75,15 +134,11 @@ function parseLine(content, line, column) {
75
134
  const variant = content.trim().split(/\s+/)[1];
76
135
  if (!label || !variant)
77
136
  syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: button requires variant and label.`, line, column);
78
- const replyMatch = content.match(/reply="([^"]+)"/);
79
- const isSubmit = /\bsubmit\b/.test(content);
80
- if (!replyMatch && !isSubmit)
81
- syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: button requires reply or submit.`, line, column);
82
137
  return {
83
138
  type: 'button',
84
139
  variant: variant,
85
140
  label,
86
- action: replyMatch ? { kind: 'reply', value: replyMatch[1] } : { kind: 'submit' },
141
+ action: parseActionDescriptor(content, line, column),
87
142
  line,
88
143
  column,
89
144
  };
@@ -91,16 +146,23 @@ function parseLine(content, line, column) {
91
146
  if (content.startsWith('field ')) {
92
147
  const tokens = content.trim().split(/\s+/);
93
148
  const [label] = getQuotedValues(content);
94
- const placeholderMatch = content.match(/placeholder="([^"]+)"/);
149
+ const fieldType = tokens[2];
95
150
  if (tokens.length < 4 || !label)
96
151
  syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: field requires name, type and label.`, line, column);
152
+ const value = getStringAttribute(content, 'value');
97
153
  return {
98
154
  type: 'field',
99
155
  name: tokens[1],
100
- fieldType: tokens[2],
156
+ fieldType,
101
157
  label,
102
- placeholder: placeholderMatch?.[1],
158
+ placeholder: getStringAttribute(content, 'placeholder'),
159
+ helper: getStringAttribute(content, 'helper'),
103
160
  required: /\brequired\b/.test(content),
161
+ options: getDelimitedAttribute(content, 'options'),
162
+ min: getNumberAttribute(content, 'min'),
163
+ max: getNumberAttribute(content, 'max'),
164
+ step: getNumberAttribute(content, 'step'),
165
+ value: value === undefined ? undefined : parseFieldValue(fieldType, value),
104
166
  line,
105
167
  column,
106
168
  };
@@ -115,7 +177,14 @@ function parseLine(content, line, column) {
115
177
  const [title] = getQuotedValues(content);
116
178
  if (!title || !content.endsWith(':'))
117
179
  syntaxIssue('INVALID_SYNTAX', `Line ${line}: confirm requires a title and nested block.`, line, column);
118
- return { type: 'confirm', title, children: [], line, column };
180
+ return {
181
+ type: 'confirm',
182
+ variant: (getVariantBeforeQuotedValue(content, 'confirm') ?? 'neutral'),
183
+ title,
184
+ children: [],
185
+ line,
186
+ column,
187
+ };
119
188
  }
120
189
  if (content.startsWith('form ')) {
121
190
  const [title] = getQuotedValues(content);
@@ -148,6 +217,155 @@ function parseLine(content, line, column) {
148
217
  syntaxIssue('INVALID_SYNTAX', `Line ${line}: table requires a title and nested block.`, line, column);
149
218
  return { type: 'table', title, columns: [], rows: [], line, column };
150
219
  }
220
+ if (content.startsWith('empty ')) {
221
+ const [title] = getQuotedValues(content);
222
+ if (!title || !content.endsWith(':'))
223
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: empty requires a title and nested block.`, line, column);
224
+ return { type: 'empty', title, children: [], line, column };
225
+ }
226
+ if (content.startsWith('tabs ')) {
227
+ const [title] = getQuotedValues(content);
228
+ if (!title || !content.endsWith(':'))
229
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: tabs requires a title and nested block.`, line, column);
230
+ return { type: 'tabs', title, children: [], line, column };
231
+ }
232
+ if (content.startsWith('tab ')) {
233
+ const [label] = getQuotedValues(content);
234
+ if (!label || !content.endsWith(':'))
235
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: tab requires a label and nested block.`, line, column);
236
+ return { type: 'tab', label, children: [], line, column };
237
+ }
238
+ if (content.startsWith('accordion ')) {
239
+ const [title] = getQuotedValues(content);
240
+ if (!title || !content.endsWith(':'))
241
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: accordion requires a title and nested block.`, line, column);
242
+ return { type: 'accordion', title, children: [], line, column };
243
+ }
244
+ if (content.startsWith('section ')) {
245
+ const [title] = getQuotedValues(content);
246
+ if (!title || !content.endsWith(':'))
247
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: section requires a title and nested block.`, line, column);
248
+ return { type: 'section', title, children: [], line, column };
249
+ }
250
+ if (content.startsWith('dialog ')) {
251
+ const [title] = getQuotedValues(content);
252
+ if (!title || !content.endsWith(':'))
253
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: dialog requires a title and nested block.`, line, column);
254
+ return { type: 'dialog', title, children: [], line, column };
255
+ }
256
+ if (content.startsWith('sheet ')) {
257
+ const [title] = getQuotedValues(content);
258
+ if (!title || !content.endsWith(':'))
259
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: sheet requires a title and nested block.`, line, column);
260
+ return { type: 'sheet', title, side: (getStringAttribute(content, 'side') ?? 'right'), children: [], line, column };
261
+ }
262
+ if (content.startsWith('popover ')) {
263
+ const [title] = getQuotedValues(content);
264
+ if (!title || !content.endsWith(':'))
265
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: popover requires a title and nested block.`, line, column);
266
+ return { type: 'popover', title, children: [], line, column };
267
+ }
268
+ if (content.startsWith('tooltip ')) {
269
+ const [text] = getQuotedValues(content);
270
+ if (!text)
271
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: tooltip requires quoted text.`, line, column);
272
+ return { type: 'tooltip', text, line, column };
273
+ }
274
+ if (content.startsWith('progress ')) {
275
+ const [label] = getQuotedValues(content);
276
+ const value = getNumberAttribute(content, 'value');
277
+ const max = getNumberAttribute(content, 'max');
278
+ if (!label || value === undefined || max === undefined)
279
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: progress requires label, value and max.`, line, column);
280
+ return { type: 'progress', label, value, max, line, column };
281
+ }
282
+ if (content.startsWith('loading ')) {
283
+ const [text] = getQuotedValues(content);
284
+ if (!text)
285
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: loading requires quoted text.`, line, column);
286
+ return { type: 'loading', text, line, column };
287
+ }
288
+ if (content.startsWith('toast ')) {
289
+ const [text] = getQuotedValues(content);
290
+ const variant = content.trim().split(/\s+/)[1];
291
+ if (!text || !variant)
292
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: toast requires variant and quoted text.`, line, column);
293
+ return { type: 'toast', variant: variant, text, line, column };
294
+ }
295
+ if (content === 'breadcrumb:' || content.startsWith('breadcrumb ')) {
296
+ if (!content.endsWith(':'))
297
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: breadcrumb requires a nested block.`, line, column);
298
+ return { type: 'breadcrumb', children: [], line, column };
299
+ }
300
+ if (content.startsWith('crumb ')) {
301
+ const [label] = getQuotedValues(content);
302
+ if (!label)
303
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: crumb requires quoted text.`, line, column);
304
+ const reply = getStringAttribute(content, 'reply');
305
+ return { type: 'crumb', label, action: reply ? { kind: 'reply', value: reply } : undefined, line, column };
306
+ }
307
+ if (content.startsWith('pagination ')) {
308
+ const page = getNumberAttribute(content, 'page');
309
+ const totalPages = getNumberAttribute(content, 'totalPages');
310
+ if (page === undefined || totalPages === undefined)
311
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: pagination requires page and totalPages.`, line, column);
312
+ return { type: 'pagination', page, totalPages, line, column };
313
+ }
314
+ if (content.startsWith('menu ')) {
315
+ const [title] = getQuotedValues(content);
316
+ if (!title || !content.endsWith(':'))
317
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: menu requires a title and nested block.`, line, column);
318
+ return { type: 'menu', title, children: [], line, column };
319
+ }
320
+ if (content.startsWith('command ')) {
321
+ const [title] = getQuotedValues(content);
322
+ if (!title || !content.endsWith(':'))
323
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: command requires a title and nested block.`, line, column);
324
+ return { type: 'command', title, children: [], line, column };
325
+ }
326
+ if (content.startsWith('action ')) {
327
+ const [label] = getQuotedValues(content);
328
+ if (!label)
329
+ syntaxIssue('MISSING_REQUIRED_FIELD', `Line ${line}: action requires quoted text.`, line, column);
330
+ return {
331
+ type: 'action',
332
+ label,
333
+ action: parseActionDescriptor(content, line, column),
334
+ variant: getStringAttribute(content, 'variant'),
335
+ line,
336
+ column,
337
+ };
338
+ }
339
+ if (content.startsWith('chart ')) {
340
+ const [title] = getQuotedValues(content);
341
+ const chartType = content.trim().split(/\s+/)[1];
342
+ if (!title || !chartType || !content.endsWith(':'))
343
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: chart requires type, title and nested block.`, line, column);
344
+ return {
345
+ type: 'chart',
346
+ chartType: chartType,
347
+ title,
348
+ xLabel: getStringAttribute(content, 'x'),
349
+ yLabel: getStringAttribute(content, 'y'),
350
+ children: [],
351
+ line,
352
+ column,
353
+ };
354
+ }
355
+ if (content.startsWith('series ')) {
356
+ const [label] = getQuotedValues(content);
357
+ if (!label || !content.endsWith(':'))
358
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: series requires a label and nested block.`, line, column);
359
+ return { type: 'series', label, children: [], line, column };
360
+ }
361
+ if (content.startsWith('point ')) {
362
+ const [label] = getQuotedValues(content);
363
+ const valueText = content.trim().match(/"[^"]*"\s+([^\s]+)$/)?.[1];
364
+ const value = valueText === undefined ? Number.NaN : Number(valueText);
365
+ if (!label || Number.isNaN(value))
366
+ syntaxIssue('INVALID_SYNTAX', `Line ${line}: point requires a quoted label and numeric value.`, line, column);
367
+ return { type: 'point', label, value, line, column };
368
+ }
151
369
  if (content.startsWith('columns:')) {
152
370
  const columns = parseDelimitedValues(content.replace('columns:', ''));
153
371
  return { type: 'table', title: '__columns__', columns, rows: [], line, column };
@@ -163,14 +381,13 @@ function parseLine(content, line, column) {
163
381
  syntaxIssue('INVALID_SYNTAX', `Line ${line}: invalid ToonUI syntax.`, line, column);
164
382
  }
165
383
  function appendNode(parent, node) {
384
+ if (node.type === 'table' && (node.title === '__columns__' || node.title === '__row__') && parent.type !== 'table') {
385
+ syntaxIssue('INVALID_NESTING', `Line ${node.line}: tables only support columns and row entries inside table blocks.`, node.line, node.column);
386
+ }
166
387
  if (parent.type === 'document') {
167
388
  parent.body.push(node);
168
389
  return;
169
390
  }
170
- if ('children' in parent && Array.isArray(parent.children)) {
171
- parent.children.push(node);
172
- return;
173
- }
174
391
  if (parent.type === 'table') {
175
392
  if (node.type !== 'table') {
176
393
  syntaxIssue('INVALID_NESTING', `Line ${node.line}: tables only support columns and row entries.`, node.line, node.column);
@@ -184,6 +401,10 @@ function appendNode(parent, node) {
184
401
  return;
185
402
  }
186
403
  }
404
+ if ('children' in parent && Array.isArray(parent.children)) {
405
+ parent.children.push(node);
406
+ return;
407
+ }
187
408
  syntaxIssue('INVALID_NESTING', `Line ${node.line}: cannot append ${node.type} inside ${parent.type}.`, node.line, node.column);
188
409
  }
189
410
  export function parseToonUI(source) {
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/dist/prompts.d.ts CHANGED
@@ -3,6 +3,8 @@ export declare function createComponentPrompt(rules: ToonRules): string;
3
3
  export declare function createSyntaxPrompt(): string;
4
4
  export declare function createFallbackPrompt(): string;
5
5
  export declare function createSafetyPrompt(): string;
6
+ export declare function createCompositionPrompt(): string;
7
+ export declare function createFormBestPracticesPrompt(): string;
6
8
  export declare function createDecisionPrompt(): string;
7
9
  export declare function createExamplesPrompt(): string;
8
10
  export declare function createPrompt(rules: ToonRules): string;
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAQ9D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAkB3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAQ7C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAY7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAiD7C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAsBrD"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAU9D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAgC3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAahD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAgBtD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAiB7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAgE7C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA4BrD"}
package/dist/prompts.js CHANGED
@@ -4,7 +4,9 @@ export function createComponentPrompt(rules) {
4
4
  `Button variants: ${rules.buttonVariants.join(', ')}`,
5
5
  `Badge variants: ${rules.badgeVariants.join(', ')}`,
6
6
  `Alert variants: ${rules.alertVariants.join(', ')}`,
7
+ `Confirm variants: ${rules.confirmVariants.join(', ')}`,
7
8
  `Field types: ${rules.fieldTypes.join(', ')}`,
9
+ `Chart types: ${rules.chartTypes.join(', ')}`,
8
10
  ].join('\n');
9
11
  }
10
12
  export function createSyntaxPrompt() {
@@ -15,12 +17,26 @@ export function createSyntaxPrompt() {
15
17
  '- form MUST be: form "Title": followed by one or more field nodes and one submit button',
16
18
  '- field MUST be: field <name> <fieldType> "Label" [placeholder="..."] [required]',
17
19
  '- button MUST be: button <variant> "Label" reply="Value" OR button <variant> "Label" submit',
18
- '- confirm MUST be: confirm "Title": followed by indented child nodes',
20
+ '- confirm MUST be: confirm <variant> "Title": followed by indented child nodes',
19
21
  '- list MUST be: list "Title": followed only by item nodes',
20
22
  '- item MUST be: item "Title": followed by indented child nodes',
21
23
  '- badge MUST be: badge "Label" <variant>',
22
24
  '- alert MUST be: alert <variant> "Title": followed by indented child nodes',
23
25
  '- table MUST be: table "Title": followed by columns: ... and one or more row: ... lines',
26
+ '- heading MUST be: heading <1-6> "Visible text"',
27
+ '- separator MUST be: separator OR separator horizontal|vertical',
28
+ '- empty MUST be: empty "Title": followed by indented child nodes',
29
+ '- tabs MUST be: tabs "Title": followed by one or more tab "Label": blocks',
30
+ '- accordion MUST be: accordion "Title": followed by one or more section "Title": blocks',
31
+ '- dialog, sheet, and popover MUST be: <component> "Title": followed by indented child nodes',
32
+ '- tooltip MUST be: tooltip "Visible text"',
33
+ '- progress MUST be: progress "Label" value=<number> max=<number>',
34
+ '- loading MUST be: loading "Visible text"',
35
+ '- toast MUST be: toast <variant> "Visible text"',
36
+ '- breadcrumb MUST be: breadcrumb: followed by one or more crumb "Label" [reply="..."] lines',
37
+ '- pagination MUST be: pagination page=<number> totalPages=<number>',
38
+ '- menu and command MUST be: <component> "Title": followed by one or more action "Label" reply="..." or submit lines',
39
+ '- chart MUST be: chart <type> "Title": followed by one or more series "Label": blocks with point "Label" <number> rows',
24
40
  '- In tables, quote every column name and every row cell, especially when values may contain commas like currency or large numbers',
25
41
  '- card, form, confirm, list, item, alert, and table ALWAYS require a quoted title',
26
42
  '- badge NEVER has children and NEVER has a title prop',
@@ -29,10 +45,11 @@ export function createSyntaxPrompt() {
29
45
  export function createFallbackPrompt() {
30
46
  return [
31
47
  'Fallback rules:',
32
- '- If you are unsure, use only: card, text, badge, button, form, field, confirm, list, item, alert, table.',
33
- '- If you need a section heading inside a card, use text "..." instead of inventing header, subtitle, section, or footer.',
48
+ '- If you are unsure, use only: card, text, heading, badge, button, form, field, confirm, list, item, alert, table, empty.',
49
+ '- Use heading for hierarchy instead of inventing header, subtitle, or title props on random nodes.',
34
50
  '- If you need secondary information, use more text nodes instead of inventing props or components.',
35
- '- NEVER invent components such as header, section, footer, subtitle, description, input, modal, stack, grid, or divider.',
51
+ '- Use section only inside accordion, tab only inside tabs, action only inside menu/command, crumb only inside breadcrumb, series only inside chart, and point only inside series.',
52
+ '- NEVER invent components such as header, footer, subtitle, description, input, modal, stack, grid, or divider.',
36
53
  ].join('\n');
37
54
  }
38
55
  export function createSafetyPrompt() {
@@ -46,17 +63,53 @@ export function createSafetyPrompt() {
46
63
  '- The prompt instructions stay in English, but visible UI labels, titles, button text, and field labels should follow the user language and conversation context.',
47
64
  ].join('\n');
48
65
  }
66
+ export function createCompositionPrompt() {
67
+ return [
68
+ 'Composition best practices:',
69
+ '- Lead with the most useful UI, not with an explanation about the UI.',
70
+ '- Use ONE focused ToonUI block per intent unless the user truly needs multiple separate blocks.',
71
+ '- Keep actions close to the data they affect.',
72
+ '- Prefer simple trees over deeply nested trees.',
73
+ '- Use heading and separator to improve scanability when a card or dialog has multiple sections.',
74
+ '- Use empty for zero-result states instead of plain prose.',
75
+ '- Use loading, progress, and toast for system state and feedback when relevant.',
76
+ '- Use breadcrumb and pagination only when the user is navigating a larger result space.',
77
+ '- Use chart only when the user needs trend or comparison understanding; otherwise prefer table for precise values.',
78
+ ].join('\n');
79
+ }
80
+ export function createFormBestPracticesPrompt() {
81
+ return [
82
+ 'Form and data-capture best practices:',
83
+ '- If the assistant needs 2 or more structured inputs, prefer a form instead of asking one question at a time.',
84
+ '- If the user must fill several loose values, emit one complete form so the user can answer everything at once.',
85
+ '- Prefer field over ad-hoc text instructions whenever the data is structured.',
86
+ '- Use required only for truly mandatory fields.',
87
+ '- Add placeholder when it helps the user understand the expected format.',
88
+ '- Add helper text for constraints, formatting, or business rules that might be missed.',
89
+ '- Use select, radio, checkbox, switch, slider, or multiselect when the valid values are constrained.',
90
+ '- Use combobox when the user must search within a known set of options.',
91
+ '- Use textarea only for long-form text.',
92
+ '- Use otp only for verification codes, not generic numeric input.',
93
+ '- Group related fields in one form instead of scattering separate forms across the response.',
94
+ '- A form should usually end with exactly one primary submit button and optional secondary reply buttons only when needed.',
95
+ ].join('\n');
96
+ }
49
97
  export function createDecisionPrompt() {
50
98
  return [
51
99
  'UI decision policy:',
52
- '- Prefer ToonUI over plain markdown when the user needs to choose, confirm, fill structured data, or scan structured business results.',
100
+ '- Prefer ToonUI over plain markdown whenever the user needs to choose, confirm, fill structured data, scan structured business results, compare values, or navigate options.',
101
+ '- Default toward UI when it can reduce back-and-forth.',
53
102
  '- Use form blocks immediately for create, edit, register, capture, or update flows that need multiple structured fields.',
54
- '- Use confirm blocks immediately for destructive, risky, or irreversible actions.',
55
- '- Use table, list, or card blocks for structured business data such as products, sales, inventory, customers, search results, or status summaries.',
56
- '- Do NOT ask the user whether they want a UI if a form, confirm, table, list, or card is clearly useful. Emit the ToonUI directly.',
103
+ '- If collecting several loose pieces of information, do NOT ask for them in separate prose questions; emit a form immediately.',
104
+ '- Use confirm danger blocks for destructive actions, confirm warning blocks for risky actions, and confirm neutral blocks for basic confirmations.',
105
+ '- Use table, list, card, chart, tabs, accordion, dialog, sheet, menu, or command when they are a better semantic fit than prose.',
106
+ '- Do NOT ask the user whether they want a UI if a form, confirm, table, list, card, chart, or command block is clearly useful. Emit the ToonUI directly.',
57
107
  '- Do NOT ask for form fields one by one in plain prose when a form can capture them better.',
58
108
  '- If tool results return multiple records, prefer table or list instead of markdown bullets or ad-hoc prose.',
59
109
  '- If a single entity is found and the user may want a next action, prefer card plus buttons.',
110
+ '- If the user must choose among actions, prefer menu or command over prose bullet lists.',
111
+ '- If the user needs hierarchical or dense detail, prefer tabs or accordion over a wall of text.',
112
+ '- If the user asks for analytics, trends, or comparison, prefer chart plus optional supporting table.',
60
113
  ].join('\n');
61
114
  }
62
115
  export function createExamplesPrompt() {
@@ -77,13 +130,20 @@ export function createExamplesPrompt() {
77
130
  '```',
78
131
  '',
79
132
  '```toon-ui',
80
- 'confirm "Delete customer?":',
133
+ 'confirm danger "Delete customer?":',
81
134
  ' text "This action cannot be undone."',
82
135
  ' button secondary "Cancel" reply="Cancel"',
83
136
  ' button danger "Yes, delete" reply="Yes, delete customer"',
84
137
  '```',
85
138
  '',
86
139
  '```toon-ui',
140
+ 'confirm neutral "Continue with selected customer?":',
141
+ ' text "We will use this customer for the current sale."',
142
+ ' button secondary "Cancel" reply="Cancel"',
143
+ ' button primary "Continue" reply="Continue with selected customer"',
144
+ '```',
145
+ '',
146
+ '```toon-ui',
87
147
  'table "Sales":',
88
148
  ' columns: "Date", "Sale number", "Total", "Status"',
89
149
  ' row: "May 14", "177877222574876", "$ 387.45", "Completed"',
@@ -91,6 +151,13 @@ export function createExamplesPrompt() {
91
151
  '```',
92
152
  '',
93
153
  '```toon-ui',
154
+ 'chart bar "Weekly sales" x="Day" y="Revenue":',
155
+ ' series "Store A":',
156
+ ' point "Mon" 1200',
157
+ ' point "Tue" 980',
158
+ '```',
159
+ '',
160
+ '```toon-ui',
94
161
  'form "Create product":',
95
162
  ' field name text "Name" placeholder="Ex: Coca-Cola" required',
96
163
  ' field sku text "SKU" placeholder="Ex: COCA-355" required',
@@ -104,6 +171,7 @@ export function createExamplesPrompt() {
104
171
  '- header "Customer" -> INVALID because header is not an allowed component',
105
172
  '- card: -> INVALID because card requires a quoted title',
106
173
  '- badge success "Customer" -> INVALID because badge syntax is badge "Label" variant',
174
+ '- confirm "Delete customer?": -> VALID for backward compatibility, but prefer confirm danger|warning|neutral "Title":',
107
175
  '- form "Customer": with no submit button -> INVALID',
108
176
  '- row: May 09, $ 8,155.35, Completed -> RISKY because commas inside values can break the table unless cells are quoted',
109
177
  '- "Do you want me to build a UI for this?" -> BAD when a form, confirm, table, list, or card is already the obvious best response',
@@ -112,6 +180,7 @@ export function createExamplesPrompt() {
112
180
  export function createPrompt(rules) {
113
181
  return [
114
182
  'You are generating ToonUI for an AI-native app.',
183
+ 'Your job is to reduce friction for the user by turning structured intent into structured UI whenever it helps.',
115
184
  createComponentPrompt(rules),
116
185
  '',
117
186
  createSyntaxPrompt(),
@@ -119,9 +188,14 @@ export function createPrompt(rules) {
119
188
  'Interaction rules:',
120
189
  '- Every button must include variant, label, and reply="..." or submit.',
121
190
  '- Every form must include a title, fields, and a submit button.',
122
- '- Use confirm blocks for destructive actions.',
191
+ '- Prefer confirm danger for destructive actions, confirm warning for risky actions, and confirm neutral for normal confirmations.',
123
192
  '- Reply protocol: emit user intent through compact ui_reply messages only.',
124
193
  '- Submit protocol: emit compact ui_submit payloads with intent and field values only.',
194
+ '- Visible UI copy must match the user language and the business context.',
195
+ '',
196
+ createCompositionPrompt(),
197
+ '',
198
+ createFormBestPracticesPrompt(),
125
199
  '',
126
200
  createFallbackPrompt(),
127
201
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyF,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAgB7U,wBAAgB,WAAW,IAAI,SAAS,CAQvC;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,CAiBvI;AAED,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAM,GAAG,MAAM,CAiB1I;AAmBD,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,sBAAsB,EAAE,OAAO,EAAE,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAkBvH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,sBAAsB,EAAE,OAAO,EAAE,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAY3H;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAWjD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,SAAS,qBAAqB,GAAG,qBAAqB,EAAE,OAAO,GAAE,mBAAmB,CAAC,WAAW,CAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CASjL"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwH,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAgB5W,wBAAgB,WAAW,IAAI,SAAS,CAUvC;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,CAiBvI;AAED,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAM,GAAG,MAAM,CAiB1I;AAmBD,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,sBAAsB,EAAE,OAAO,EAAE,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAkBvH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,sBAAsB,EAAE,OAAO,EAAE,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAY3H;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAWjD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,SAAS,qBAAqB,GAAG,qBAAqB,EAAE,OAAO,GAAE,mBAAmB,CAAC,WAAW,CAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CASjL"}