@muibook/components 19.1.1 → 19.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.
- package/dist/esm/agent/keywords/index.js +67 -24
- package/dist/esm/agent/prompts/index.js +297 -845
- package/dist/esm/components/mui-dialog/index.js +14 -5
- package/dist/esm/components/mui-field/index.js +1 -1
- package/dist/esm/components/mui-illustrations/index.js +1 -0
- package/dist/esm/components/mui-illustrations/trash/index.js +81 -0
- package/dist/esm/components/mui-input/index.js +2 -2
- package/dist/esm/css/mui-brand.css +1 -1
- package/dist/esm/css/mui-tokens.css +16 -0
- package/dist/esm/custom-elements.json +1024 -928
- package/dist/esm/dynamic-attrs.json +1 -1
- package/dist/esm/index.js +5 -4
- package/dist/types/agent/keywords/index.d.ts +1 -1
- package/dist/types/agent/prompts/index.d.ts +1 -10
- package/dist/types/components/mui-illustrations/doc.d.ts +2 -0
- package/dist/types/components/mui-illustrations/index.d.ts +1 -0
- package/dist/types/components/mui-illustrations/trash.d.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/package.json +9 -1
|
@@ -2,398 +2,171 @@ const e = [
|
|
|
2
2
|
{
|
|
3
3
|
role: "system",
|
|
4
4
|
content: `
|
|
5
|
-
|
|
6
|
-
Supported components:
|
|
7
|
-
- Inputs: <mui-addon>, <mui-checkbox>, <mui-field>, <mui-file-upload>, <mui-input>, <mui-progress>, <mui-select>, <mui-switch>
|
|
8
|
-
- Content: <mui-accordion>, <mui-heading>, <mui-body>, <mui-code>, <mui-dialog>, <mui-drawer>, <mui-quote>, <mui-slat>, <mui-smart-card>, <mui-table>, <mui-image>, <figcaption>, <img>, <mui-list>, <mui-list-item>, <mui-icon-*>
|
|
9
|
-
- Layout: <mui-card>, <mui-container>, <mui-responsive>, <mui-rule>, <mui-v-stack>, <mui-h-stack>, <mui-grid>
|
|
10
|
-
- Feedback: <mui-alert>, <mui-badge>, <mui-message>, <mui-loader>
|
|
11
|
-
- Actions: <mui-button>, <mui-button-group>, <mui-chip>, <mui-dropdown>, <mui-link>
|
|
12
|
-
- Navigation: <mui-carousel-controller>, <mui-stepper>, <mui-step>, <mui-tab-controller>, <mui-tab-bar>, <mui-tab-item>
|
|
13
|
-
Rules:
|
|
14
|
-
- If 'mui-scan' is detected, convert the mui-scan code to web components. Refer to this prompt file for context on how to use the components.
|
|
15
|
-
- For mui-scan, preserve the hierarchy and nesting of elements as in the original design.
|
|
16
|
-
- When translating mui-scan code, if you encounter <mui-v-stack>, <mui-h-stack>, or <mui-grid>, append the inline styles like this: <mui-v-stack style="...">.
|
|
17
|
-
- All mui-* components should carry over their props, appended like this: <mui-v-stack space="..." alignx="..." aligny="...">.
|
|
18
|
-
- Maintain proper closing of all custom elements to avoid HTML parsing issues.
|
|
19
|
-
- When responding to a text prompt, strictly follow the user’s directions. Do not include text, content, or components unrelated to the request.
|
|
20
|
-
`
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
role: "assistant",
|
|
24
|
-
name: "examples",
|
|
25
|
-
content: JSON.stringify({
|
|
26
|
-
// Inputs
|
|
27
|
-
field: {
|
|
28
|
-
placeholder: '<mui-field label="Email"><mui-input type="email" placeholder="you@example.com" value="..."></mui-input></mui-field>',
|
|
29
|
-
message: `<mui-field label="Name" message="This field doesn't accept special characters"><mui-input></mui-input></mui-field>`,
|
|
30
|
-
select: `<mui-field label="Brand"><mui-select options='[{ "value": "jpy", "label": "JPY" },{ "value": "usd", "label": "USD" }]'></mui-select></mui-field>`,
|
|
31
|
-
inputAndSelect: `<mui-field label="Amount to transfer"><mui-input type="number"><mui-select slot="after" label="Currency" hide-label style="width: 100px;" options='[{ "value": "jpy", "label": "JPY" },{ "value": "usd", "label": "USD" }]'></mui-select></mui-input></mui-field>`
|
|
32
|
-
},
|
|
33
|
-
addon: {
|
|
34
|
-
text: [
|
|
35
|
-
'<mui-input><mui-addon slot="before">$</mui-addon></mui-input>',
|
|
36
|
-
'<mui-input><mui-addon slot="after">kg</mui-addon></mui-input>',
|
|
37
|
-
'<mui-input><mui-addon slot="before">%</mui-addon></mui-input>',
|
|
38
|
-
'<mui-field label="Website"><mui-input><mui-addon slot="before">https://</mui-addon></mui-input></mui-field>'
|
|
39
|
-
],
|
|
40
|
-
icon: [
|
|
41
|
-
'<mui-input><mui-addon slot="before"><mui-icon name="search"></mui-icon></mui-addon></mui-input>',
|
|
42
|
-
'<mui-input><mui-addon slot="after"><mui-icon name="calendar"></mui-icon></mui-addon></mui-input>',
|
|
43
|
-
'<mui-field label="Email"><mui-input type="email"><mui-addon slot="before"><mui-icon name="mail"></mui-icon></mui-addon></mui-input></mui-field>'
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
checkbox: "<mui-checkbox>...</mui-checkbox>",
|
|
47
|
-
fileUpload: "<mui-file-upload>...</mui-file-upload>",
|
|
48
|
-
input: "<mui-input>...</mui-input>",
|
|
49
|
-
progress: "<mui-progress>...</mui-progress>",
|
|
50
|
-
select: "<mui-select>...</mui-select>",
|
|
51
|
-
switch: "<mui-switch>...</mui-switch>",
|
|
52
|
-
// Content
|
|
53
|
-
slat: {
|
|
54
|
-
default: '<mui-slat><mui-heading slot="start" size="5">...</mui-heading><mui-h-stack slot="end"><mui-body>...</mui-body></mui-h-stack></mui-slat>',
|
|
55
|
-
header: '<mui-slat variant="header"><mui-heading slot="start" size="6">Heading</mui-heading><mui-h-stack slot="end" alignX="end"><mui-body size="small">End slot</mui-body></mui-h-stack></mui-slat>',
|
|
56
|
-
row: '<mui-slat variant="row"><mui-v-stack slot="start"><mui-body size="medium" weight="bold">...</mui-body><mui-body size="small">...</mui-body></mui-v-stack><mui-v-stack slot="end" alignX="end"><mui-body size="small">...</mui-body><mui-body size="small">...</mui-body></mui-v-stack></mui-slat>',
|
|
57
|
-
action: '<mui-slat variant="action"><mui-v-stack slot="start"><mui-body size="medium" weight="bold">...</mui-body><mui-body size="small">...</mui-body></mui-v-stack></mui-slat>'
|
|
58
|
-
},
|
|
59
|
-
table: {
|
|
60
|
-
basic: '<mui-table><mui-row-group heading><mui-row columns="1fr 1fr"><mui-cell>Heading 1</mui-cell><mui-cell>Heading 2</mui-cell></mui-row></mui-row-group><mui-row-group><mui-row columns="1fr 1fr"><mui-cell>Row 1</mui-cell><mui-cell>Row 1</mui-cell></mui-row></mui-row-group></mui-table>'
|
|
61
|
-
},
|
|
62
|
-
accordion: {
|
|
63
|
-
block: '<mui-accordion-group><mui-accordion-block heading="Section A"><div slot="detail">...</div></mui-accordion-block><mui-accordion-block heading="Section B"><div slot="detail">...</div></mui-accordion-block></mui-accordion-group>',
|
|
64
|
-
inline: '<mui-accordion-inline heading="..."><mui-list as="ul" slot="detail">...</mui-list></mui-accordion-inline>',
|
|
65
|
-
exclusiveGroup: '<mui-accordion-group exclusive><mui-accordion-block heading="..."><div slot="detail">...</div></mui-accordion-block><mui-accordion-block heading="..."><div slot="detail">...</div></mui-accordion-block></mui-accordion-group>',
|
|
66
|
-
withLinks: '<mui-accordion-block heading="..." detail-space="none" style="width:26rem;"><mui-v-stack slot="detail" space="var(--space-000)" style="padding:var(--space-100)"><mui-link variant="tertiary" class="nav-link">...</mui-link><mui-link variant="tertiary" class="nav-link">...</mui-link><mui-link variant="tertiary" class="nav-link">...</mui-link></mui-v-stack></mui-accordion-block>',
|
|
67
|
-
slat: '<mui-accordion-group exclusive><mui-accordion-block heading="..."><mui-v-stack slot="detail"><mui-body>...</mui-body><mui-slat-group><mui-slat variant="header"><mui-heading slot="start" size="6">...</mui-heading><mui-h-stack slot="end" alignX="end"><mui-body size="small">...</mui-body></mui-h-stack></mui-slat><mui-slat variant="action"><mui-v-stack slot="start" space="0"><mui-body size="small" weight="bold">...</mui-body><mui-body size="x-small">...</mui-body></mui-v-stack><mui-v-stack space="0" slot="end" alignX="end"><mui-body size="x-small">...</mui-body></mui-v-stack></mui-slat><mui-slat variant="action"><mui-v-stack slot="start" space="0"><mui-body size="small" weight="bold">...</mui-body><mui-body size="x-small">...</mui-body></mui-v-stack><mui-v-stack space="0" slot="end" alignX="end"><mui-body size="x-small">...</mui-body></mui-v-stack></mui-slat><mui-rule></mui-rule></mui-slat-group></mui-v-stack></mui-accordion-block><mui-accordion-block heading="..."><mui-v-stack slot="detail" space="var(--space-200)" style="max-width:400px;margin:var(--space-200) auto 0;">...</mui-v-stack></mui-accordion-block></mui-accordion-group>'
|
|
68
|
-
},
|
|
69
|
-
image: {
|
|
70
|
-
default: '<mui-image><img slot="image" src="https://muibook.com/images/buttercup.png" alt="..."/></mui-image>',
|
|
71
|
-
caption: '<mui-image><img slot="image" src="https://muibook.com/images/buttercup.png" alt="..."/><figcaption slot="caption">This is a caption</figcaption></mui-image>'
|
|
72
|
-
},
|
|
73
|
-
heading: "<mui-heading>...</mui-heading>",
|
|
74
|
-
body: {
|
|
75
|
-
default: "<mui-body>...</mui-body>",
|
|
76
|
-
optional: '<mui-body variant="optional">...</mui-body>',
|
|
77
|
-
success: '<mui-body variant="success">...</mui-body>',
|
|
78
|
-
warning: '<mui-body variant="warning">...</mui-body>',
|
|
79
|
-
error: '<mui-body variant="error">...</mui-body>'
|
|
80
|
-
},
|
|
81
|
-
code: "<mui-code>...</mui-code>",
|
|
82
|
-
dialog: "<mui-dialog>...</mui-dialog>",
|
|
83
|
-
drawer: "<mui-drawer>...</mui-drawer>",
|
|
84
|
-
quote: "<mui-quote>...</mui-quote>",
|
|
85
|
-
list: "<mui-list>...</mui-list>",
|
|
86
|
-
listItem: "<mui-list-item>...</mui-list-item>",
|
|
87
|
-
icon: "<mui-icon-...></mui-icon-...>",
|
|
88
|
-
smartCard: {
|
|
89
|
-
plain: '<mui-smart-card number="1234" type="Debit" logo="https://muibook.com/images/image-220.png" partner="https://muibook.com/images/visa-black.svg" variant="plain"/>'
|
|
90
|
-
},
|
|
91
|
-
// Layout
|
|
92
|
-
card: "<mui-card>...</mui-card>",
|
|
93
|
-
container: "<mui-container>...</mui-container>",
|
|
94
|
-
responsive: "<mui-responsive>...</mui-responsive>",
|
|
95
|
-
rule: "<mui-rule />",
|
|
96
|
-
vStack: "<mui-v-stack>...</mui-v-stack>",
|
|
97
|
-
hStack: "<mui-h-stack>...</mui-h-stack>",
|
|
98
|
-
grid: "<mui-grid>...</mui-grid>",
|
|
99
|
-
// Feedback
|
|
100
|
-
alert: {
|
|
101
|
-
success: '<mui-alert variant="success">...</mui-alert>',
|
|
102
|
-
info: '<mui-alert variant="info">...</mui-alert>',
|
|
103
|
-
warning: '<mui-alert variant="warning">...</mui-alert>',
|
|
104
|
-
attention: '<mui-alert variant="attention">...</mui-alert>',
|
|
105
|
-
errorWithButton: '<mui-alert variant="error"><mui-button slot="action"><mui-icon-close></mui-icon-close></mui-button></mui-alert>',
|
|
106
|
-
successWithButton: '<mui-alert variant="success"><mui-button slot="action">Undo</mui-button></mui-alert>',
|
|
107
|
-
warningWithLink: '<mui-alert variant="warning"><mui-link slot="action">Upgrade</mui-link></mui-alert>'
|
|
108
|
-
},
|
|
109
|
-
badge: "<mui-badge>...</mui-badge>",
|
|
110
|
-
loader: "<mui-loader>...</mui-loader>",
|
|
111
|
-
// Actions
|
|
112
|
-
button: {
|
|
113
|
-
primary: '<mui-button variant="primary">...</mui-button>',
|
|
114
|
-
secondary: '<mui-button variant="secondary">...</mui-button>',
|
|
115
|
-
tertiary: '<mui-button variant="tertiary">...</mui-button>',
|
|
116
|
-
attention: '<mui-button variant="attention">...</mui-button>',
|
|
117
|
-
before: '<mui-button variant="primary">Add New<mui-icon-add slot="before" size="x-small"></mui-icon-add></mui-button>',
|
|
118
|
-
after: '<mui-button variant="primary">More<mui-icon-down-chevron slot="after" size="x-small"></mui-icon-down-chevron></mui-button>',
|
|
119
|
-
iconOnly: '<mui-button variant="primary"><mui-icon-add></mui-icon-add></mui-button>',
|
|
120
|
-
disabled: "<mui-button disabled>...</mui-button>",
|
|
121
|
-
toggle: '<mui-button id="btn" variant="primary"><mui-icon-toggle><mui-icon-add slot="start"></mui-icon-add><mui-icon-subtract slot="end"></mui-icon-subtract></mui-icon-toggle></mui-button>',
|
|
122
|
-
toggleRotate: '<mui-button id="btn" variant="primary"><mui-icon-toggle rotate><mui-icon-add slot="start"></mui-icon-add><mui-icon-subtract slot="end"></mui-icon-subtract></mui-icon-toggle></mui-button>'
|
|
123
|
-
},
|
|
124
|
-
buttonGroup: {
|
|
125
|
-
default: "<mui-button-group>...</mui-button-group>",
|
|
126
|
-
alignedRight: '<mui-button-group align="right">...</mui-button-group>'
|
|
127
|
-
},
|
|
128
|
-
chip: "<mui-chip>...</mui-chip>",
|
|
129
|
-
dropdown: "<mui-dropdown>...</mui-dropdown>",
|
|
130
|
-
link: "<mui-link>...</mui-link>",
|
|
131
|
-
// Navigation
|
|
132
|
-
carouselController: "<mui-carousel-controller>...</mui-carousel-controller>",
|
|
133
|
-
stepper: "<mui-stepper>...</mui-stepper>",
|
|
134
|
-
step: "<mui-step>...</mui-step>",
|
|
135
|
-
tabController: "<mui-tab-controller>...</mui-tab-controller>",
|
|
136
|
-
tabBar: "<mui-tab-bar>...</mui-tab-bar>",
|
|
137
|
-
tabItem: "<mui-tab-item>...</mui-tab-item>"
|
|
138
|
-
})
|
|
139
|
-
}
|
|
140
|
-
], i = [
|
|
141
|
-
{
|
|
142
|
-
role: "system",
|
|
143
|
-
content: `
|
|
144
|
-
You are a UI generator that creates component trees in JSON format for a MUIBOOK design system.
|
|
5
|
+
Generate MUIBOOK component trees as JSON.
|
|
145
6
|
|
|
146
|
-
|
|
147
|
-
- type:
|
|
148
|
-
- id:
|
|
149
|
-
- props:
|
|
150
|
-
- children:
|
|
7
|
+
Output JSON tree nodes with:
|
|
8
|
+
- type: component type
|
|
9
|
+
- id: unique descriptive id
|
|
10
|
+
- props: component props
|
|
11
|
+
- children: child nodes, or []
|
|
151
12
|
|
|
152
13
|
CRITICAL RULES:
|
|
153
14
|
1. Always return ONLY valid JSON - no markdown, no code blocks, no explanations
|
|
154
15
|
2. Every node MUST have: type, id, props, and children
|
|
155
16
|
3. IDs must be unique across the entire tree
|
|
156
17
|
4. Use descriptive IDs that reflect the component's purpose
|
|
157
|
-
5.
|
|
158
|
-
6. Container components
|
|
159
|
-
7. Leaf components
|
|
160
|
-
8. Props must match the component
|
|
161
|
-
9.
|
|
18
|
+
5. Card content must be inside direct child CardBody.
|
|
19
|
+
6. Container components can have children.
|
|
20
|
+
7. Leaf components use children: [].
|
|
21
|
+
8. Props must match the component API.
|
|
22
|
+
9. Root additions use Container with center=true and size=medium.
|
|
23
|
+
10. Button and Link text stays on the component; do not wrap in Body.
|
|
24
|
+
11. Put visual backgrounds on layout style or SmartCard bg props.
|
|
25
|
+
12. SmartCard props use kebab-case: bg-image, bg-color, logo-height.
|
|
26
|
+
13. Normalize scanned Muibook/Figma names to Redactd component types before output.
|
|
162
27
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
|
|
172
|
-
-
|
|
173
|
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
-
|
|
177
|
-
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
- Container: Full-width container
|
|
181
|
-
Props: size ("small"|"medium"|"large"|"fluid"), center (boolean)
|
|
182
|
-
- Responsive: Responsive wrapper
|
|
183
|
-
Props: breakpoint (string), breakpoint-low (string), breakpoint-high (string)
|
|
28
|
+
MUI SCAN NORMALIZATION RULES:
|
|
29
|
+
- Normalize muiscan to Redactd types before output
|
|
30
|
+
- Final JSON cannot contain mui-*, raw span, TEXT, or text node types
|
|
31
|
+
- Core mappings:
|
|
32
|
+
- mui-v-stack -> VStack
|
|
33
|
+
- mui-h-stack -> HStack
|
|
34
|
+
- mui-button -> Button
|
|
35
|
+
- mui-link -> Link
|
|
36
|
+
- mui-input -> Input
|
|
37
|
+
- mui-select -> Select
|
|
38
|
+
- span -> Span
|
|
39
|
+
- mui-icon-[name] -> _Icon with props.icon = "mui-icon-[name]"
|
|
40
|
+
- Preserve hierarchy, spacing, slots, key props, and valid style strings
|
|
41
|
+
- Preserve icon slots:
|
|
42
|
+
- slot=before -> props.slot = "before"
|
|
43
|
+
- slot=after -> props.slot = "after"
|
|
44
|
+
- if an icon is the only child of Button, Link, or Chip, keep it as the default child
|
|
184
45
|
|
|
185
|
-
|
|
186
|
-
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
-
|
|
193
|
-
|
|
194
|
-
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
-
|
|
204
|
-
Props: none
|
|
205
|
-
Slots: default (accordion-block elements)
|
|
206
|
-
- Code: Code display
|
|
207
|
-
Props: size (string), scrollable (boolean)
|
|
208
|
-
Slots: default (code text)
|
|
209
|
-
- Quote: Quotation block
|
|
210
|
-
Props: none
|
|
211
|
-
Slots: default (quote text)
|
|
212
|
-
- Image: Image with caption
|
|
213
|
-
Props: src (string), alt (string)
|
|
214
|
-
Slots: caption (optional caption text)
|
|
215
|
-
- Avatar: User avatar
|
|
216
|
-
Props: label (string), image (string), size (string), background (string), backgroundColor (string)
|
|
217
|
-
Slots: default (optional custom content)
|
|
218
|
-
- List: Ordered/unordered list (allows children)
|
|
219
|
-
Props: none
|
|
220
|
-
Slots: default (list-item elements)
|
|
221
|
-
- ListItem: List item
|
|
222
|
-
Props: variant (string), size (string), weight (string)
|
|
223
|
-
Slots: default (item text)
|
|
224
|
-
- Icons: Icon components
|
|
225
|
-
Props: size ("x-small"|"small"|"medium"|"large"), color (string)
|
|
226
|
-
- Dialog: Modal dialog (allows children)
|
|
227
|
-
Props: open (boolean), width (string)
|
|
228
|
-
Slots: default (dialog content), actions (footer actions)
|
|
229
|
-
- Drawer: Side drawer (allows children)
|
|
230
|
-
Props: open (boolean), width (string), side ("left"|"right"), variant ("overlay"|"push"|"persistent"), zIndex (string), drawerSpace (string), breakpoint (string)
|
|
231
|
-
Slots: header (optional header), default (drawer content), actions (footer actions)
|
|
232
|
-
- Slat: Data row display (allows children)
|
|
233
|
-
Props: variant (string), col (string), space (string)
|
|
234
|
-
Slots: header-start, header-end, row-start, row-end, accessory, action
|
|
235
|
-
- SlatGroup: Groups slats (allows children)
|
|
236
|
-
Props: usage (string)
|
|
237
|
-
Slots: default (slat elements)
|
|
238
|
-
- SmartCard: Visual card component
|
|
239
|
-
Props: state (string), number (string), variant (string), partner (string), type (string), logo (string), logoWidth (string), logoHeight (string), bgColor (string), bgImage (string), inverted (boolean)
|
|
240
|
-
- Table: Data table (allows children)
|
|
241
|
-
Props: none
|
|
242
|
-
Slots: default (row-group elements)
|
|
243
|
-
- RowGroup: Table section (allows children)
|
|
244
|
-
Props: none
|
|
245
|
-
Slots: default (row elements)
|
|
246
|
-
- Row: Table row (allows children)
|
|
247
|
-
Props: columns (string)
|
|
248
|
-
Slots: default (cell elements)
|
|
249
|
-
- Cell: Table cell
|
|
250
|
-
Props: alignY (string)
|
|
251
|
-
Slots: default (cell content)
|
|
46
|
+
TEXT NODE RULES FOR MUISCAN:
|
|
47
|
+
- TEXT is input-only; collapse into the nearest valid Redactd text model
|
|
48
|
+
- Collapse TEXT -> props.text for:
|
|
49
|
+
- mui-body -> Body.props.text
|
|
50
|
+
- mui-heading -> Heading.props.text
|
|
51
|
+
- mui-button -> Button.props.text
|
|
52
|
+
- mui-link -> Link.props.text
|
|
53
|
+
- mui-tab-item -> TabItem.props.text
|
|
54
|
+
- mui-list-item -> ListItem.props.text
|
|
55
|
+
- For span:
|
|
56
|
+
- convert to Span
|
|
57
|
+
- consume direct TEXT into Span.props.text
|
|
58
|
+
- keep inline children such as Link nested inside the same Span
|
|
59
|
+
- Exceptions:
|
|
60
|
+
- mui-badge: consume TEXT as the badge's direct rendered text; preserve before/after slot children; do not invent Body
|
|
61
|
+
- mui-chip: consume TEXT as the chip's direct rendered text; preserve before/after slot children; do not invent Body
|
|
62
|
+
- mui-alert: preserve variant/label, convert default content to Span, consume TEXT into Span.props.text, keep inline children such as Link, do not invent Body
|
|
63
|
+
- mui-message: map scanned heading directly to Message.props.heading, preserve variant/icon/size, keep remaining children as default message content
|
|
64
|
+
- Do not invent wrappers when the target already supports text
|
|
252
65
|
|
|
66
|
+
Available Components:
|
|
253
67
|
|
|
254
|
-
|
|
255
|
-
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
-
|
|
259
|
-
|
|
260
|
-
-
|
|
261
|
-
Props: checked (boolean), id (string), disabled (boolean), indeterminate (boolean), aria-label (string)
|
|
262
|
-
Slots: default (text, mui-link, mui-icon-[name])
|
|
263
|
-
- Switch: Toggle switch
|
|
264
|
-
Props: label (string - required), checked (boolean), disabled (boolean)
|
|
265
|
-
Slots: on-icon (mui-icon-[name]), off-icon (mui-icon-[name])
|
|
266
|
-
- Field: Form field wrapper (allows children)
|
|
267
|
-
Props: label (string - required), variant ("default"|"success"|"warning"|"error"), message (string), hideLabel (boolean)
|
|
268
|
-
Slots: default (mui-input, mui-select)
|
|
269
|
-
- FileUpload: File upload input
|
|
270
|
-
Props: acceptedFileTypes (string - comma-separated), currentFileName (string)
|
|
271
|
-
- Progress: Progress bar
|
|
272
|
-
Props: progress (number 0-100), state ("pending"|"syncing")
|
|
68
|
+
LAYOUT:
|
|
69
|
+
- VStack: space, alignX, alignY, style
|
|
70
|
+
- HStack: space, alignX, alignY, style
|
|
71
|
+
- Grid: col, space, alignX, alignY
|
|
72
|
+
- Container: size (small|medium|large), center, style
|
|
73
|
+
- Responsive: breakpoint, breakpoint-low, breakpoint-high; slots showBelow/showMiddle/showAbove
|
|
74
|
+
- Rule: length, weight, direction (horizontal|vertical)
|
|
273
75
|
|
|
274
|
-
|
|
275
|
-
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
- Chip: Interactive chip/tag
|
|
285
|
-
Props: active (boolean), dismiss (boolean), usage (string like "input")
|
|
286
|
-
Slots: default (text), before (mui-icon-[name], mui-badge, avatars), after (mui-icon-[name], mui-badge, avatars)
|
|
76
|
+
SURFACES:
|
|
77
|
+
- Card: use CardBody for card content
|
|
78
|
+
- CardHeader: none
|
|
79
|
+
- CardBody: condensed, style
|
|
80
|
+
- CardFooter: none
|
|
81
|
+
- Dialog: open, width, content-max-height, style
|
|
82
|
+
- Drawer: open, variant (overlay|push|persistent), side (left|right), width, z-index, drawer-space, breakpoint, style
|
|
83
|
+
- Slat: variant, col, space; slots header-start/header-end/row-start/row-end/accessory/action
|
|
84
|
+
- SlatGroup: usage
|
|
85
|
+
- SmartCard: state, number, variant, partner, type, logo, logo-height, bg-color, bg-image, inverted
|
|
287
86
|
|
|
288
|
-
|
|
289
|
-
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
-
|
|
299
|
-
|
|
300
|
-
-
|
|
301
|
-
Props: none
|
|
302
|
-
Slots: default (mui-tab-bar, mui-carousel-panel - required)
|
|
303
|
-
- CarouselPanel: Carousel panel content
|
|
304
|
-
Props: item (string - maps to tab-item id)
|
|
305
|
-
Slots: item (named slot - required to place panel in carousel)
|
|
306
|
-
- Stepper: Step indicator
|
|
307
|
-
Props: direction ("horizontal"|"vertical"), activeStep (number)
|
|
308
|
-
Slots: default (mui-step elements)
|
|
309
|
-
- Step: Individual step (no children)
|
|
310
|
-
Props: title (string - required)
|
|
87
|
+
CONTENT:
|
|
88
|
+
- Heading: text, size (1|2|3|4|5|6), level (1|2|3|4|5|6)
|
|
89
|
+
- Body: text, size (x-small|small|medium|large), weight (regular|bold), variant (default|optional|success|warning|error), style
|
|
90
|
+
- Span: text, style; supports inline children such as Link
|
|
91
|
+
- Code: size, scrollable
|
|
92
|
+
- Quote: default text
|
|
93
|
+
- Image: src, alt; slot caption
|
|
94
|
+
- Avatar: label, image, icon, size (x-small|small|medium|large), background, backgroundColor
|
|
95
|
+
- List: slot default
|
|
96
|
+
- ListItem: text, variant, size (x-small|small|medium|large), weight (regular|bold)
|
|
97
|
+
- _Icon: icon, size (xx-small|x-small|small|medium|large), color, slot
|
|
98
|
+
- Badge: text, variant (default|positive|warning|error|overlay)
|
|
99
|
+
- Skeleton: loading, shape (line|rect|circle), size, animation (shimmer|pulse|none), lines, width, height, radius, gap, duration, line-widths, max-width, style
|
|
311
100
|
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
- Alert: Dismissible alert notification
|
|
317
|
-
Props: variant ("success"|"error"|"warning"|"info")
|
|
318
|
-
Slots: default (text or content), action (optional action slot)
|
|
319
|
-
- Loader: Loading state wrapper
|
|
320
|
-
Props: loading (boolean), animation ("pulsate"|"fade-in"|"translate"), direction ("up"|"down"|"left"|"right"), duration (string)
|
|
321
|
-
Slots: default (content to show when loaded)
|
|
322
|
-
- Badge: Status indicator badge
|
|
323
|
-
Props: variant ("default"|"positive"|"warning"|"error")
|
|
324
|
-
Slots: default (text)
|
|
325
|
-
- Progress: Progress indicator
|
|
326
|
-
Props: progress (number 0-100), state ("pending"|"syncing")
|
|
101
|
+
ACCORDION:
|
|
102
|
+
- AccordionBlock: heading, level (1|2|3|4|5|6), size, detail-space
|
|
103
|
+
- AccordionInline: heading, level (1|2|3|4|5|6)
|
|
104
|
+
- AccordionGroup: slot default
|
|
327
105
|
|
|
328
|
-
|
|
329
|
-
|
|
106
|
+
FORMS AND INPUTS:
|
|
107
|
+
- FormSection: heading, hide-label, style
|
|
108
|
+
- FormSectionFooter: slot, style
|
|
109
|
+
- FormGroup: heading, variant (vertical|horizontal), hide-label, style
|
|
110
|
+
- Field: label, variant (default|success|warning|error), message, hide-label, size (x-small|small|medium|large), optional, style
|
|
111
|
+
- FormMessage: text, size (x-small|small|medium|large), weight (regular|bold), variant (default|optional|success|warning|error), style
|
|
112
|
+
- Input: label, type (text|email|password|number|tel|url), placeholder, value, id, name, disabled, hide-label, variant (default|error), size (x-small|small|medium|large), optional, max-length; slots before/after
|
|
113
|
+
- Textarea: label, placeholder, value, name, id, variant (default|success|warning|error), size (x-small|small|medium|large), rows, optional, hide-label, max-length, disabled, style
|
|
114
|
+
- Select: label, placeholder, options, value, id, name, disabled, variant (default|error), size (x-small|small|medium|large)
|
|
115
|
+
- Checkbox: text, checked, id, disabled, indeterminate, size (x-small|small|medium|large)
|
|
116
|
+
- Radio: text, checked, disabled, id, name, value, aria-label, size (x-small|small|medium|large)
|
|
117
|
+
- RadioGroup: name, value, label, size (x-small|small|medium|large), optional, hide-label, disabled
|
|
118
|
+
- Switch: label, checked, disabled, size (x-small|small|medium|large)
|
|
119
|
+
- RangeInput: min, max, value, step, bubble, bubble-format (time), disabled
|
|
120
|
+
- ChipInput: label, placeholder, size (x-small|small|medium|large), placement (before|after), breakpoint, allow-custom, mobile-stack, hide-label, disabled, options, value, id
|
|
121
|
+
- FileUpload: acceptedFileTypes, currentFileName
|
|
122
|
+
- Addon: text, size (x-small|small|medium|large), slot (before|after), style
|
|
330
123
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
• Component: Text Label, Spacing: 100
|
|
124
|
+
ACTIONS:
|
|
125
|
+
- Button: text, variant (primary|secondary|tertiary|overlay|attention), size (small|medium|large), disabled, aria-label; slots default/before/after
|
|
126
|
+
- ButtonGroup: slot default, right, style
|
|
127
|
+
- Link: text, href, variant (primary|secondary|tertiary|overlay|attention), size (x-small|small|medium|large), target, download, weight (regular|bold), disabled; slots default/before/after
|
|
128
|
+
- Dropdown: zindex, position, persistent; slots action/default
|
|
129
|
+
- Chip: text, active, dismiss, usage; slots default/before/after
|
|
338
130
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
131
|
+
NAVIGATION:
|
|
132
|
+
- TabBar: speed, controlsPosition; slots default/controls
|
|
133
|
+
- TabItem: text, icon, active, id
|
|
134
|
+
- TabController: slot default
|
|
135
|
+
- TabPanel: item
|
|
136
|
+
- Stepper: direction (horizontal|vertical), activeStep
|
|
137
|
+
- Step: title
|
|
138
|
+
- CarouselController: slot default, style
|
|
139
|
+
- CarouselPanel: item, style
|
|
345
140
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
141
|
+
FEEDBACK:
|
|
142
|
+
- Message: heading, variant (plain|neutral|positive|info|warning|attention), icon, size (small|medium|large); slot default
|
|
143
|
+
- Alert: variant (success|info|warning|error), label; slots default/action
|
|
144
|
+
- Loader: loading, animation (pulsate|fade-in|translate), direction (up|right|down|left), duration; slot default
|
|
145
|
+
- Spinner: size (xx-small|x-small|small|medium|large), color, duration, label, style
|
|
146
|
+
- Progress: progress, state
|
|
351
147
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
• Component: Grid, Spacing: 700
|
|
358
|
-
• Component: Section, Spacing: 800
|
|
148
|
+
PROMPT COMPONENTS:
|
|
149
|
+
- Prompt: placeholder, value, rows, enter-submit, fan-open, disabled, loading, loading-label, context-mode (icon|chip), preview-dialog-width, preview-dialog-title, preview-overflow-to-preview, preview-threshold-chars, preview-auto-clickable, preview-loading, preview-loading-label, preview-scrollbar, error-message, debug, effects-off, color-top-start, color-top-mid, color-top-end, color-top-accent, color-layout, style
|
|
150
|
+
- PromptMessage: size (x-small|small|medium|large), variant (default|ghost), density (default|compact), style
|
|
151
|
+
- PromptPreview: value, badge, label, bg-image, image-tint, accent, inverted, show-text, badge-only, animated, loading, loading-label, clickable, animation-mode, style
|
|
152
|
+
- PromptToggle: mode (icon|chip), style
|
|
359
153
|
|
|
154
|
+
PRESENTATION:
|
|
155
|
+
- SlideFrame: title, footer-text, ratio (16:9|4:3|1:1|3:2|9:16), present, active-section, padding, variant (default|plain), radius, notes-open, hide-header, hide-footer, hide-counter, allow-add-section, fullscreen, scroll, style
|
|
360
156
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
- Group related inputs with proper spacing
|
|
365
|
-
- Use descriptive IDs like "email-input", "submit-btn", "main-title"
|
|
366
|
-
- Add proper labels to all inputs
|
|
367
|
-
- Use appropriate heading sizes (1=largest, 6=smallest)
|
|
157
|
+
SPACING VALUES:
|
|
158
|
+
000, 025, 050, 100, 200, 300, 400, 500, 600, 700, 800
|
|
159
|
+
Use 100-300 for tight/form spacing and 400-800 for layout.
|
|
368
160
|
|
|
369
161
|
ASSETS:
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
- '
|
|
374
|
-
- '
|
|
375
|
-
- 'https://muibook.com/images/mui.svg'
|
|
376
|
-
|
|
377
|
-
Smart Card Background Image
|
|
378
|
-
- 'https://muibook.com/images/placeholder.png'
|
|
379
|
-
- 'https://muibook.com/images/snowy-mint.png'
|
|
380
|
-
- 'https://muibook.com/images/buttercup.png'
|
|
381
|
-
- 'https://muibook.com/images/sapphire.png'
|
|
382
|
-
- 'https://muibook.com/images/crystal.png'
|
|
383
|
-
- 'https://muibook.com/images/premier.png'
|
|
384
|
-
- 'https://muibook.com/images/diamond.png'
|
|
385
|
-
|
|
386
|
-
Smart Card Partners / Alliances
|
|
387
|
-
- 'https://muibook.com/images/mastercard.svg'
|
|
388
|
-
- 'https://muibook.com/images/visa-black.svg'
|
|
389
|
-
- 'https://muibook.com/images/visa-white.svg'
|
|
390
|
-
- 'https://muibook.com/images/amex.svg'
|
|
391
|
-
- 'https://muibook.com/images/emerald.svg'
|
|
392
|
-
- 'https://muibook.com/images/ruby.svg'
|
|
393
|
-
- 'https://muibook.com/images/sapphire.svg'
|
|
162
|
+
Use real Muibook asset paths:
|
|
163
|
+
- Base path: 'https://muibook.com/images/'
|
|
164
|
+
- Logos: 'logo.png', 'guides.svg', 'mui.svg'
|
|
165
|
+
- Backgrounds: 'placeholder.png', 'snowy-mint.png', 'buttercup.png', 'sapphire.png', 'crystal.png', 'premier.png', 'diamond.png'
|
|
166
|
+
- Partners: 'mastercard.svg', 'visa-black.svg', 'visa-white.svg', 'amex.svg', 'emerald.svg', 'ruby.svg', 'sapphire.svg'
|
|
394
167
|
|
|
395
168
|
FORMATTING:
|
|
396
|
-
-
|
|
169
|
+
- SmartCard number: last four digits only (e.g. 1234).
|
|
397
170
|
|
|
398
171
|
`
|
|
399
172
|
},
|
|
@@ -401,39 +174,139 @@ FORMATTING:
|
|
|
401
174
|
role: "assistant",
|
|
402
175
|
name: "examples",
|
|
403
176
|
content: JSON.stringify({
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
177
|
+
signupFlow: {
|
|
178
|
+
type: "Container",
|
|
179
|
+
id: "signup_container",
|
|
180
|
+
props: {
|
|
181
|
+
center: !0,
|
|
182
|
+
size: "medium",
|
|
183
|
+
style: "padding-block: var(--space-800);"
|
|
184
|
+
},
|
|
409
185
|
children: [
|
|
410
186
|
{
|
|
411
|
-
type: "
|
|
412
|
-
id: "
|
|
413
|
-
props: {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
187
|
+
type: "Card",
|
|
188
|
+
id: "signup_card",
|
|
189
|
+
props: {
|
|
190
|
+
style: "width: 100%; max-width: 32rem; margin-inline: auto;"
|
|
191
|
+
},
|
|
192
|
+
children: [
|
|
193
|
+
{
|
|
194
|
+
type: "CardBody",
|
|
195
|
+
id: "signup_card_body",
|
|
196
|
+
props: { style: "padding: var(--space-500);" },
|
|
197
|
+
children: [
|
|
198
|
+
{
|
|
199
|
+
type: "VStack",
|
|
200
|
+
id: "signup_stack",
|
|
201
|
+
props: { space: "var(--space-400)", alignX: "stretch" },
|
|
202
|
+
children: [
|
|
203
|
+
{
|
|
204
|
+
type: "Heading",
|
|
205
|
+
id: "signup_title",
|
|
206
|
+
props: {
|
|
207
|
+
text: "Create your account",
|
|
208
|
+
size: "2",
|
|
209
|
+
level: "1"
|
|
210
|
+
},
|
|
211
|
+
children: []
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
type: "Body",
|
|
215
|
+
id: "signup_intro",
|
|
216
|
+
props: {
|
|
217
|
+
text: "Start with your work email and a secure password.",
|
|
218
|
+
size: "small",
|
|
219
|
+
variant: "optional"
|
|
220
|
+
},
|
|
221
|
+
children: []
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
type: "FormGroup",
|
|
225
|
+
id: "signup_fields",
|
|
226
|
+
props: { variant: "vertical", "hide-label": !0 },
|
|
227
|
+
children: [
|
|
228
|
+
{
|
|
229
|
+
type: "Field",
|
|
230
|
+
id: "signup_name_field",
|
|
231
|
+
props: { label: "Name" },
|
|
232
|
+
children: [
|
|
233
|
+
{
|
|
234
|
+
type: "Input",
|
|
235
|
+
id: "signup_name",
|
|
236
|
+
props: {
|
|
237
|
+
label: "Name",
|
|
238
|
+
placeholder: "Jane Smith",
|
|
239
|
+
name: "name"
|
|
240
|
+
},
|
|
241
|
+
children: []
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
type: "Field",
|
|
247
|
+
id: "signup_email_field",
|
|
248
|
+
props: { label: "Email" },
|
|
249
|
+
children: [
|
|
250
|
+
{
|
|
251
|
+
type: "Input",
|
|
252
|
+
id: "signup_email",
|
|
253
|
+
props: {
|
|
254
|
+
label: "Email",
|
|
255
|
+
type: "email",
|
|
256
|
+
placeholder: "jane@company.com",
|
|
257
|
+
name: "email"
|
|
258
|
+
},
|
|
259
|
+
children: []
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
type: "Field",
|
|
265
|
+
id: "signup_password_field",
|
|
266
|
+
props: { label: "Password" },
|
|
267
|
+
children: [
|
|
268
|
+
{
|
|
269
|
+
type: "Input",
|
|
270
|
+
id: "signup_password",
|
|
271
|
+
props: {
|
|
272
|
+
label: "Password",
|
|
273
|
+
type: "password",
|
|
274
|
+
placeholder: "Create password",
|
|
275
|
+
name: "password"
|
|
276
|
+
},
|
|
277
|
+
children: []
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
type: "Checkbox",
|
|
283
|
+
id: "signup_terms",
|
|
284
|
+
props: {
|
|
285
|
+
text: "I agree to the terms",
|
|
286
|
+
size: "small"
|
|
287
|
+
},
|
|
288
|
+
children: []
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
type: "Button",
|
|
294
|
+
id: "signup_submit",
|
|
295
|
+
props: {
|
|
296
|
+
text: "Create account",
|
|
297
|
+
variant: "primary",
|
|
298
|
+
size: "large"
|
|
299
|
+
},
|
|
300
|
+
children: []
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
]
|
|
433
307
|
}
|
|
434
308
|
]
|
|
435
309
|
},
|
|
436
|
-
// Rewards card with smart-card component
|
|
437
310
|
rewardsCard: {
|
|
438
311
|
type: "Container",
|
|
439
312
|
id: "root",
|
|
@@ -441,17 +314,17 @@ FORMATTING:
|
|
|
441
314
|
children: [
|
|
442
315
|
{
|
|
443
316
|
type: "Card",
|
|
444
|
-
id: "
|
|
317
|
+
id: "card",
|
|
445
318
|
props: {},
|
|
446
319
|
children: [
|
|
447
320
|
{
|
|
448
321
|
type: "CardHeader",
|
|
449
|
-
id: "
|
|
322
|
+
id: "header",
|
|
450
323
|
props: {},
|
|
451
324
|
children: [
|
|
452
325
|
{
|
|
453
326
|
type: "Heading",
|
|
454
|
-
id: "
|
|
327
|
+
id: "title",
|
|
455
328
|
props: { text: "Rewards", size: "4", level: "4" },
|
|
456
329
|
children: []
|
|
457
330
|
}
|
|
@@ -459,23 +332,20 @@ FORMATTING:
|
|
|
459
332
|
},
|
|
460
333
|
{
|
|
461
334
|
type: "CardBody",
|
|
462
|
-
id: "
|
|
335
|
+
id: "body",
|
|
463
336
|
props: {},
|
|
464
337
|
children: [
|
|
465
338
|
{
|
|
466
339
|
type: "VStack",
|
|
467
|
-
id: "
|
|
340
|
+
id: "content",
|
|
468
341
|
props: { space: "var(--space-200)", alignX: "center" },
|
|
469
342
|
children: [
|
|
470
343
|
{
|
|
471
344
|
type: "SmartCard",
|
|
472
|
-
id: "
|
|
345
|
+
id: "smart-card",
|
|
473
346
|
props: {
|
|
474
347
|
inverted: !0,
|
|
475
|
-
|
|
476
|
-
bgImage: "https://muibook.com/images/diamond.png",
|
|
477
|
-
logo: void 0,
|
|
478
|
-
logoHeight: void 0,
|
|
348
|
+
"bg-image": "https://muibook.com/images/diamond.png",
|
|
479
349
|
partner: "https://muibook.com/images/emerald.svg",
|
|
480
350
|
number: "1234",
|
|
481
351
|
type: "Rewards",
|
|
@@ -492,296 +362,42 @@ FORMATTING:
|
|
|
492
362
|
}
|
|
493
363
|
]
|
|
494
364
|
},
|
|
495
|
-
|
|
496
|
-
confirmDialog: {
|
|
497
|
-
type: "VStack",
|
|
498
|
-
id: "root",
|
|
499
|
-
props: { space: "var(--space-200)" },
|
|
500
|
-
children: [
|
|
501
|
-
{
|
|
502
|
-
type: "Heading",
|
|
503
|
-
id: "title",
|
|
504
|
-
props: { text: "Confirm Action", size: "3", level: "3" },
|
|
505
|
-
children: []
|
|
506
|
-
},
|
|
507
|
-
{
|
|
508
|
-
type: "Body",
|
|
509
|
-
id: "message",
|
|
510
|
-
props: { text: "Are you sure you want to proceed?", size: "medium" },
|
|
511
|
-
children: []
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
type: "HStack",
|
|
515
|
-
id: "buttons",
|
|
516
|
-
props: { space: "var(--space-100)", alignX: "end" },
|
|
517
|
-
children: [
|
|
518
|
-
{
|
|
519
|
-
type: "Button",
|
|
520
|
-
id: "cancel",
|
|
521
|
-
props: { text: "Cancel", variant: "secondary" },
|
|
522
|
-
children: []
|
|
523
|
-
},
|
|
524
|
-
{
|
|
525
|
-
type: "Button",
|
|
526
|
-
id: "confirm",
|
|
527
|
-
props: { text: "Confirm", variant: "primary" },
|
|
528
|
-
children: []
|
|
529
|
-
}
|
|
530
|
-
]
|
|
531
|
-
}
|
|
532
|
-
]
|
|
533
|
-
},
|
|
534
|
-
// Booking form with multiple input types
|
|
535
|
-
bookingForm: {
|
|
365
|
+
contactForm: {
|
|
536
366
|
type: "VStack",
|
|
537
367
|
id: "root",
|
|
538
|
-
props: {
|
|
368
|
+
props: {
|
|
369
|
+
space: "var(--space-300)",
|
|
370
|
+
style: "width: 100%; max-width: 960px;"
|
|
371
|
+
},
|
|
539
372
|
children: [
|
|
540
373
|
{
|
|
541
374
|
type: "Heading",
|
|
542
375
|
id: "title",
|
|
543
|
-
props: { text: "
|
|
544
|
-
children: []
|
|
545
|
-
},
|
|
546
|
-
{
|
|
547
|
-
type: "Body",
|
|
548
|
-
id: "subtitle",
|
|
549
|
-
props: { text: "Reserve your spot at our restaurant", size: "medium" },
|
|
376
|
+
props: { text: "Contact Us", size: "1", level: "1" },
|
|
550
377
|
children: []
|
|
551
378
|
},
|
|
552
379
|
{
|
|
553
|
-
type: "
|
|
554
|
-
id: "
|
|
555
|
-
props: {
|
|
556
|
-
children: [
|
|
557
|
-
{
|
|
558
|
-
type: "Input",
|
|
559
|
-
id: "name",
|
|
560
|
-
props: { label: "Your Name", type: "text", placeholder: "John Doe" },
|
|
561
|
-
children: []
|
|
562
|
-
},
|
|
563
|
-
{
|
|
564
|
-
type: "Input",
|
|
565
|
-
id: "email",
|
|
566
|
-
props: { label: "Email", type: "email", placeholder: "john@example.com" },
|
|
567
|
-
children: []
|
|
568
|
-
},
|
|
569
|
-
{
|
|
570
|
-
type: "Input",
|
|
571
|
-
id: "phone",
|
|
572
|
-
props: { label: "Phone", type: "tel", placeholder: "+1 (555) 000-0000" },
|
|
573
|
-
children: []
|
|
574
|
-
},
|
|
575
|
-
{
|
|
576
|
-
type: "HStack",
|
|
577
|
-
id: "datetime",
|
|
578
|
-
props: { space: "var(--space-200)" },
|
|
579
|
-
children: [
|
|
580
|
-
{
|
|
581
|
-
type: "Input",
|
|
582
|
-
id: "date",
|
|
583
|
-
props: { label: "Date", type: "date" },
|
|
584
|
-
children: []
|
|
585
|
-
},
|
|
586
|
-
{
|
|
587
|
-
type: "Input",
|
|
588
|
-
id: "time",
|
|
589
|
-
props: { label: "Time", type: "time" },
|
|
590
|
-
children: []
|
|
591
|
-
}
|
|
592
|
-
]
|
|
593
|
-
},
|
|
594
|
-
{
|
|
595
|
-
type: "Select",
|
|
596
|
-
id: "guests",
|
|
597
|
-
props: {
|
|
598
|
-
label: "Number of Guests",
|
|
599
|
-
options: [
|
|
600
|
-
{ value: "1", label: "1 Guest" },
|
|
601
|
-
{ value: "2", label: "2 Guests" },
|
|
602
|
-
{ value: "3", label: "3 Guests" },
|
|
603
|
-
{ value: "4", label: "4 Guests" },
|
|
604
|
-
{ value: "5", label: "5+ Guests" }
|
|
605
|
-
]
|
|
606
|
-
},
|
|
607
|
-
children: []
|
|
608
|
-
}
|
|
609
|
-
]
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
type: "HStack",
|
|
613
|
-
id: "actions",
|
|
614
|
-
props: { space: "var(--space-100)", alignX: "end" },
|
|
380
|
+
type: "Alert",
|
|
381
|
+
id: "info",
|
|
382
|
+
props: { variant: "info", label: "Info" },
|
|
615
383
|
children: [
|
|
616
384
|
{
|
|
617
|
-
type: "
|
|
618
|
-
id: "
|
|
619
|
-
props: { text: "
|
|
620
|
-
children: []
|
|
621
|
-
},
|
|
622
|
-
{
|
|
623
|
-
type: "Button",
|
|
624
|
-
id: "submit",
|
|
625
|
-
props: { text: "Confirm Booking", variant: "primary" },
|
|
385
|
+
type: "Span",
|
|
386
|
+
id: "copy",
|
|
387
|
+
props: { text: "Reply in 24h." },
|
|
626
388
|
children: []
|
|
627
389
|
}
|
|
628
390
|
]
|
|
629
|
-
}
|
|
630
|
-
]
|
|
631
|
-
},
|
|
632
|
-
// Card layout with grid
|
|
633
|
-
dashboard: {
|
|
634
|
-
type: "VStack",
|
|
635
|
-
id: "root",
|
|
636
|
-
props: { space: "var(--space-400)" },
|
|
637
|
-
children: [
|
|
638
|
-
{
|
|
639
|
-
type: "Heading",
|
|
640
|
-
id: "title",
|
|
641
|
-
props: { text: "Dashboard", size: "1", level: "1" },
|
|
642
|
-
children: []
|
|
643
|
-
},
|
|
644
|
-
{
|
|
645
|
-
type: "Grid",
|
|
646
|
-
id: "stats-grid",
|
|
647
|
-
props: { col: "1fr 1fr 1fr", space: "var(--space-200)" },
|
|
648
|
-
children: [
|
|
649
|
-
{
|
|
650
|
-
type: "Card",
|
|
651
|
-
id: "card-1",
|
|
652
|
-
props: {},
|
|
653
|
-
children: [
|
|
654
|
-
{
|
|
655
|
-
type: "CardBody",
|
|
656
|
-
id: "card-1-body",
|
|
657
|
-
props: {},
|
|
658
|
-
children: [
|
|
659
|
-
{
|
|
660
|
-
type: "VStack",
|
|
661
|
-
id: "card-1-content",
|
|
662
|
-
props: { space: "var(--space-100)" },
|
|
663
|
-
children: [
|
|
664
|
-
{
|
|
665
|
-
type: "Body",
|
|
666
|
-
id: "label-1",
|
|
667
|
-
props: { text: "Total Users", size: "small", weight: "bold" },
|
|
668
|
-
children: []
|
|
669
|
-
},
|
|
670
|
-
{
|
|
671
|
-
type: "Heading",
|
|
672
|
-
id: "value-1",
|
|
673
|
-
props: { text: "1,2,3,4", size: "2", level: "2" },
|
|
674
|
-
children: []
|
|
675
|
-
}
|
|
676
|
-
]
|
|
677
|
-
}
|
|
678
|
-
]
|
|
679
|
-
}
|
|
680
|
-
]
|
|
681
|
-
},
|
|
682
|
-
{
|
|
683
|
-
type: "Card",
|
|
684
|
-
id: "card-2",
|
|
685
|
-
props: {},
|
|
686
|
-
children: [
|
|
687
|
-
{
|
|
688
|
-
type: "CardBody",
|
|
689
|
-
id: "card-2-body",
|
|
690
|
-
props: {},
|
|
691
|
-
children: [
|
|
692
|
-
{
|
|
693
|
-
type: "VStack",
|
|
694
|
-
id: "card-2-content",
|
|
695
|
-
props: { space: "var(--space-100)" },
|
|
696
|
-
children: [
|
|
697
|
-
{
|
|
698
|
-
type: "Body",
|
|
699
|
-
id: "label-2",
|
|
700
|
-
props: { text: "Revenue", size: "small", weight: "bold" },
|
|
701
|
-
children: []
|
|
702
|
-
},
|
|
703
|
-
{
|
|
704
|
-
type: "Heading",
|
|
705
|
-
id: "value-2",
|
|
706
|
-
props: { text: "$45,678", size: "2", level: "2" },
|
|
707
|
-
children: []
|
|
708
|
-
}
|
|
709
|
-
]
|
|
710
|
-
}
|
|
711
|
-
]
|
|
712
|
-
}
|
|
713
|
-
]
|
|
714
|
-
},
|
|
715
|
-
{
|
|
716
|
-
type: "Card",
|
|
717
|
-
id: "card-3",
|
|
718
|
-
props: {},
|
|
719
|
-
children: [
|
|
720
|
-
{
|
|
721
|
-
type: "CardBody",
|
|
722
|
-
id: "card-3-body",
|
|
723
|
-
props: {},
|
|
724
|
-
children: [
|
|
725
|
-
{
|
|
726
|
-
type: "VStack",
|
|
727
|
-
id: "card-3-content",
|
|
728
|
-
props: { space: "var(--space-100)" },
|
|
729
|
-
children: [
|
|
730
|
-
{
|
|
731
|
-
type: "Body",
|
|
732
|
-
id: "label-3",
|
|
733
|
-
props: { text: "Active Sessions", size: "small", weight: "bold" },
|
|
734
|
-
children: []
|
|
735
|
-
},
|
|
736
|
-
{
|
|
737
|
-
type: "Heading",
|
|
738
|
-
id: "value-3",
|
|
739
|
-
props: { text: "89", size: "2", level: "2" },
|
|
740
|
-
children: []
|
|
741
|
-
}
|
|
742
|
-
]
|
|
743
|
-
}
|
|
744
|
-
]
|
|
745
|
-
}
|
|
746
|
-
]
|
|
747
|
-
}
|
|
748
|
-
]
|
|
749
|
-
}
|
|
750
|
-
]
|
|
751
|
-
},
|
|
752
|
-
// Contact form with alerts
|
|
753
|
-
contactForm: {
|
|
754
|
-
type: "VStack",
|
|
755
|
-
id: "root",
|
|
756
|
-
props: { space: "var(--space-300)" },
|
|
757
|
-
children: [
|
|
758
|
-
{
|
|
759
|
-
type: "Heading",
|
|
760
|
-
id: "title",
|
|
761
|
-
props: { text: "Contact Us", size: "1", level: "1" },
|
|
762
|
-
children: []
|
|
763
|
-
},
|
|
764
|
-
{
|
|
765
|
-
type: "Alert",
|
|
766
|
-
id: "info",
|
|
767
|
-
props: { text: "We typically respond within 24 hours", variant: "info" },
|
|
768
|
-
children: []
|
|
769
391
|
},
|
|
770
392
|
{
|
|
771
393
|
type: "VStack",
|
|
772
394
|
id: "form",
|
|
773
395
|
props: { space: "var(--space-200)" },
|
|
774
396
|
children: [
|
|
775
|
-
{
|
|
776
|
-
type: "Input",
|
|
777
|
-
id: "name",
|
|
778
|
-
props: { label: "Your Name", type: "text" },
|
|
779
|
-
children: []
|
|
780
|
-
},
|
|
781
397
|
{
|
|
782
398
|
type: "Input",
|
|
783
399
|
id: "email",
|
|
784
|
-
props: { label: "Email
|
|
400
|
+
props: { label: "Email", type: "email" },
|
|
785
401
|
children: []
|
|
786
402
|
},
|
|
787
403
|
{
|
|
@@ -790,9 +406,9 @@ FORMATTING:
|
|
|
790
406
|
props: {
|
|
791
407
|
label: "Subject",
|
|
792
408
|
options: [
|
|
793
|
-
{ value: "general", label: "General
|
|
794
|
-
{ value: "support", label: "
|
|
795
|
-
{ value: "billing", label: "Billing
|
|
409
|
+
{ value: "general", label: "General" },
|
|
410
|
+
{ value: "support", label: "Support" },
|
|
411
|
+
{ value: "billing", label: "Billing" }
|
|
796
412
|
]
|
|
797
413
|
},
|
|
798
414
|
children: []
|
|
@@ -800,7 +416,11 @@ FORMATTING:
|
|
|
800
416
|
{
|
|
801
417
|
type: "Input",
|
|
802
418
|
id: "message",
|
|
803
|
-
props: {
|
|
419
|
+
props: {
|
|
420
|
+
label: "Message",
|
|
421
|
+
type: "text",
|
|
422
|
+
placeholder: "How can we help?"
|
|
423
|
+
},
|
|
804
424
|
children: []
|
|
805
425
|
}
|
|
806
426
|
]
|
|
@@ -812,178 +432,10 @@ FORMATTING:
|
|
|
812
432
|
children: []
|
|
813
433
|
}
|
|
814
434
|
]
|
|
815
|
-
},
|
|
816
|
-
// Settings page with switches
|
|
817
|
-
settingsPage: {
|
|
818
|
-
type: "VStack",
|
|
819
|
-
id: "root",
|
|
820
|
-
props: { space: "var(--space-400)" },
|
|
821
|
-
children: [
|
|
822
|
-
{
|
|
823
|
-
type: "Heading",
|
|
824
|
-
id: "title",
|
|
825
|
-
props: { text: "Settings", size: "1", level: "1" },
|
|
826
|
-
children: []
|
|
827
|
-
},
|
|
828
|
-
{
|
|
829
|
-
type: "VStack",
|
|
830
|
-
id: "notifications-section",
|
|
831
|
-
props: { space: "var(--space-200)" },
|
|
832
|
-
children: [
|
|
833
|
-
{
|
|
834
|
-
type: "Heading",
|
|
835
|
-
id: "notifications-title",
|
|
836
|
-
props: { text: "Notifications", size: "3", level: "3" },
|
|
837
|
-
children: []
|
|
838
|
-
},
|
|
839
|
-
{
|
|
840
|
-
type: "Switch",
|
|
841
|
-
id: "email-notifications",
|
|
842
|
-
props: { label: "Email Notifications", checked: !0 },
|
|
843
|
-
children: []
|
|
844
|
-
},
|
|
845
|
-
{
|
|
846
|
-
type: "Switch",
|
|
847
|
-
id: "push-notifications",
|
|
848
|
-
props: { label: "Push Notifications", checked: !1 },
|
|
849
|
-
children: []
|
|
850
|
-
},
|
|
851
|
-
{
|
|
852
|
-
type: "Switch",
|
|
853
|
-
id: "sms-notifications",
|
|
854
|
-
props: { label: "SMS Notifications", checked: !0 },
|
|
855
|
-
children: []
|
|
856
|
-
}
|
|
857
|
-
]
|
|
858
|
-
},
|
|
859
|
-
{
|
|
860
|
-
type: "Rule",
|
|
861
|
-
id: "divider",
|
|
862
|
-
props: {},
|
|
863
|
-
children: []
|
|
864
|
-
},
|
|
865
|
-
{
|
|
866
|
-
type: "VStack",
|
|
867
|
-
id: "privacy-section",
|
|
868
|
-
props: { space: "var(--space-200)" },
|
|
869
|
-
children: [
|
|
870
|
-
{
|
|
871
|
-
type: "Heading",
|
|
872
|
-
id: "privacy-title",
|
|
873
|
-
props: { text: "Privacy", size: "3", level: "3" },
|
|
874
|
-
children: []
|
|
875
|
-
},
|
|
876
|
-
{
|
|
877
|
-
type: "Checkbox",
|
|
878
|
-
id: "public-profile",
|
|
879
|
-
props: { label: "Make profile public", checked: !1 },
|
|
880
|
-
children: []
|
|
881
|
-
},
|
|
882
|
-
{
|
|
883
|
-
type: "Checkbox",
|
|
884
|
-
id: "show-email",
|
|
885
|
-
props: { label: "Show email to other users", checked: !1 },
|
|
886
|
-
children: []
|
|
887
|
-
}
|
|
888
|
-
]
|
|
889
|
-
},
|
|
890
|
-
{
|
|
891
|
-
type: "HStack",
|
|
892
|
-
id: "actions",
|
|
893
|
-
props: { space: "var(--space-100)", alignX: "end" },
|
|
894
|
-
children: [
|
|
895
|
-
{
|
|
896
|
-
type: "Button",
|
|
897
|
-
id: "cancel",
|
|
898
|
-
props: { text: "Cancel", variant: "secondary" },
|
|
899
|
-
children: []
|
|
900
|
-
},
|
|
901
|
-
{
|
|
902
|
-
type: "Button",
|
|
903
|
-
id: "save",
|
|
904
|
-
props: { text: "Save Changes", variant: "primary" },
|
|
905
|
-
children: []
|
|
906
|
-
}
|
|
907
|
-
]
|
|
908
|
-
}
|
|
909
|
-
]
|
|
910
|
-
},
|
|
911
|
-
// Tabs navigation
|
|
912
|
-
tabsExample: {
|
|
913
|
-
type: "VStack",
|
|
914
|
-
id: "root",
|
|
915
|
-
props: { space: "var(--space-300)" },
|
|
916
|
-
children: [
|
|
917
|
-
{
|
|
918
|
-
type: "Heading",
|
|
919
|
-
id: "title",
|
|
920
|
-
props: { text: "Product Details", size: "1", level: "1" },
|
|
921
|
-
children: []
|
|
922
|
-
},
|
|
923
|
-
{
|
|
924
|
-
type: "TabBar",
|
|
925
|
-
id: "tabs",
|
|
926
|
-
props: {},
|
|
927
|
-
children: [
|
|
928
|
-
{
|
|
929
|
-
type: "TabItem",
|
|
930
|
-
id: "overview-tab",
|
|
931
|
-
props: { text: "Overview", active: !0 },
|
|
932
|
-
children: []
|
|
933
|
-
},
|
|
934
|
-
{
|
|
935
|
-
type: "TabItem",
|
|
936
|
-
id: "specs-tab",
|
|
937
|
-
props: { text: "Specifications", active: !1 },
|
|
938
|
-
children: []
|
|
939
|
-
},
|
|
940
|
-
{
|
|
941
|
-
type: "TabItem",
|
|
942
|
-
id: "reviews-tab",
|
|
943
|
-
props: { text: "Reviews", active: !1 },
|
|
944
|
-
children: []
|
|
945
|
-
}
|
|
946
|
-
]
|
|
947
|
-
},
|
|
948
|
-
{
|
|
949
|
-
type: "Card",
|
|
950
|
-
id: "content",
|
|
951
|
-
props: {},
|
|
952
|
-
children: [
|
|
953
|
-
{
|
|
954
|
-
type: "CardBody",
|
|
955
|
-
id: "product-details-card-body",
|
|
956
|
-
props: {},
|
|
957
|
-
children: [
|
|
958
|
-
{
|
|
959
|
-
type: "VStack",
|
|
960
|
-
id: "tab-content",
|
|
961
|
-
props: { space: "var(--space-200)" },
|
|
962
|
-
children: [
|
|
963
|
-
{
|
|
964
|
-
type: "Heading",
|
|
965
|
-
id: "content-title",
|
|
966
|
-
props: { text: "Product Overview", size: "3", level: "3" },
|
|
967
|
-
children: []
|
|
968
|
-
},
|
|
969
|
-
{
|
|
970
|
-
type: "Body",
|
|
971
|
-
id: "content-text",
|
|
972
|
-
props: { text: "This is a high-quality product designed for professionals.", size: "medium" },
|
|
973
|
-
children: []
|
|
974
|
-
}
|
|
975
|
-
]
|
|
976
|
-
}
|
|
977
|
-
]
|
|
978
|
-
}
|
|
979
|
-
]
|
|
980
|
-
}
|
|
981
|
-
]
|
|
982
435
|
}
|
|
983
436
|
})
|
|
984
437
|
}
|
|
985
438
|
];
|
|
986
439
|
export {
|
|
987
|
-
|
|
988
|
-
e as muiPrompts
|
|
440
|
+
e as prompts
|
|
989
441
|
};
|