@umkmall/proto 0.1.0-h2501e10385e1

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 ADDED
@@ -0,0 +1,12 @@
1
+ # @umkmall/proto
2
+
3
+ The three files a UMKMall prototype loads — `umkmall-tokens.css`, `umkmall-tailwind.js` and `umkmall-ui.js` —
4
+ published so Claude's and Gemini's artifact previews can load them from jsDelivr, the one CDN both allow.
5
+ Plus the docs a model reads (the four `.md` files and the raw starter), linked to each other at the same
6
+ version: Gemini cannot read them off the design host, which sends `X-Robots-Tag: nosnippet`.
7
+
8
+ **Generated, never committed.** `scripts/proto/build-assets.mjs` builds them; `.github/workflows/proto-publish.yml`
9
+ assembles them with this manifest and publishes them under a version that is their content hash
10
+ (`scripts/proto/content-version.mjs`). The `version` below is a placeholder the workflow overwrites.
11
+
12
+ See `docs/guidelines/prototyping-kit.md`.
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@umkmall/proto",
3
+ "version": "0.1.0-h2501e10385e1",
4
+ "description": "UMKMall design-system assets and prototyping docs, served from jsDelivr. Generated — see README.",
5
+ "license": "UNLICENSED",
6
+ "files": [
7
+ "umkmall-tokens.css",
8
+ "umkmall-tailwind.js",
9
+ "umkmall-ui.js",
10
+ "umkmall-starter.md",
11
+ "umkmall-starter-app.md",
12
+ "umkmall-components.md",
13
+ "umkmall-rules.md",
14
+ "umkmall-prototype-starter.html"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ }
19
+ }
@@ -0,0 +1,267 @@
1
+ # UMKMall UI — components and their axes
2
+
3
+ Generated from `packages/ui/src/contract/variants.ts`. Do not hand-edit.
4
+
5
+ Every component below is published on `window.UmkmallUI` by the browser bundle. Pass only the
6
+ axis values listed, and pass every REQUIRED prop an entry names.
7
+
8
+ ```
9
+ UMKMall UI — 56 components, and the values each axis accepts.
10
+ Generated from packages/ui/src/contract/variants.ts. Do not hand-edit.
11
+
12
+ Button (Foundations)
13
+ type: primary | ghost | text
14
+ color: primary | light | danger | dark
15
+ size: large | medium | small | micro
16
+ width: auto | full
17
+ booleans: disabled, isLoading
18
+
19
+ Alert (Feedback)
20
+ type: alert | toast
21
+ function: success | info | warning | danger
22
+ size: large | medium | small
23
+ treatment: full | accent | coach | banner
24
+
25
+ Badge (Content)
26
+ color: primary | warning | success | danger | light | bestseller | gradient
27
+ size: xlarge | medium | small | micro
28
+ booleans: showIconLeft, showIconRight
29
+
30
+ Chip (Content)
31
+ state: default | active
32
+ size: huge | xlarge | large | medium | small | micro
33
+ booleans: showIconLeft, showIconRight
34
+
35
+ TextField (Form)
36
+ size: large | small
37
+ booleans: error, disabled
38
+ REQUIRED props (not axes): label
39
+
40
+ CheckBox (Form)
41
+ size: xlarge | large | medium | small
42
+ booleans: error, disabled, indeterminate
43
+ REQUIRED props (not axes): label
44
+
45
+ Radio (Form)
46
+ size: large | medium | small
47
+ booleans: error, disabled
48
+ REQUIRED props (not axes): label
49
+
50
+ Switch (Form)
51
+ size: large | medium | small
52
+ booleans: disabled, loading
53
+ REQUIRED props (not axes): label
54
+
55
+ Slider (Form)
56
+ size: large | small
57
+ booleans: disabled
58
+
59
+ DateTimeInput (Form)
60
+ size: large | small
61
+ selection: single | range
62
+ booleans: error, disabled, withTime, portal
63
+
64
+ OtpInput (Form)
65
+ size: large | small
66
+ booleans: error, disabled
67
+ REQUIRED props (not axes): value, onChange
68
+
69
+ Tabs (Navigation)
70
+ size: large | small
71
+ state: default | active
72
+ booleans: showIconLeft, showNotif, showTitle
73
+
74
+ Tooltip (Feedback)
75
+ color: dark | white
76
+ size: large | small
77
+ booleans: showClose
78
+ REQUIRED props (not axes): content
79
+
80
+ Skeleton (Feedback)
81
+ shape: text | circle | rect
82
+
83
+ Text (Foundations)
84
+ role: display | h1 | h2 | h3 | h4 | h5 | h6 | paragraph | bodyLg | bodyMd | bodySm
85
+ weight: bold | semibold | medium | regular
86
+ color: primary | secondary | disable | invert | brand | success | error | warning
87
+
88
+ Icon (Foundations)
89
+ size: xs | sm | md | lg | xl
90
+ color: primary | secondary | disable | invert | brand | success | error | warning
91
+ REQUIRED props (not axes): name
92
+
93
+ Sidebar (Shell)
94
+ state: menu | submenu
95
+ booleans: collapsed, open, active, expanded, nested
96
+ REQUIRED props (not axes): label
97
+
98
+ Header (Shell)
99
+ type: nonLogin | nonLoginBlack | login | temanAiLearn | temanAiChat | dashboard | detailPage
100
+ booleans: showBack, showTab, showTextLeft, scrolled
101
+
102
+ AppShell (Shell)
103
+ booleans: scrolled
104
+
105
+ Lightbox (Overlays)
106
+ REQUIRED props (not axes): open, onOpenChange, src
107
+
108
+ ChatComposer (Chat)
109
+ tone: neutral | info | warning | danger
110
+ REQUIRED props (not axes): value, onValueChange, editorLabel
111
+
112
+ ChatComposerInput (Chat)
113
+ REQUIRED props (not axes): value, onValueChange, label
114
+
115
+ ChatDrawer (Chat)
116
+ variant: inherit | neutral | info | warning | danger
117
+ booleans: collapsed
118
+
119
+ ChatAttachment (Chat)
120
+ variant: image | file
121
+ booleans: showSize
122
+ REQUIRED props (not axes): name
123
+
124
+ ChatToolsButton (Chat)
125
+ state: default | active
126
+ REQUIRED props (not axes): label
127
+
128
+ ChatAttachmentButton (Chat)
129
+ state: default | active
130
+ REQUIRED props (not axes): label
131
+
132
+ ChatVoiceButton (Chat)
133
+ state: default | active
134
+ REQUIRED props (not axes): label
135
+
136
+ ChatSendButton (Chat)
137
+ state: send | stop | waiting
138
+ REQUIRED props (not axes): label
139
+
140
+ ChatSoundWave (Chat)
141
+ state: idle | listening
142
+
143
+ ChatVoiceBar (Chat)
144
+ size: compact | landing
145
+ REQUIRED props (not axes): size, label, stopLabel, onStop
146
+
147
+ ChatMessage (Chat)
148
+ sender: assistant | user | system
149
+ density: compact | balanced | spacious
150
+
151
+ ChatMessageBubble (Chat)
152
+ group: none | first | middle | last
153
+ width: auto | full
154
+ booleans: ghost
155
+
156
+ ChatMessageMetadata (Chat)
157
+ status: sending | sent | delivered | read | error
158
+
159
+ ChatMessageList (Chat)
160
+ density: compact | balanced | spacious
161
+ align: top | bottom
162
+ gap: none | 2xs | xs | sm | md | lg
163
+ booleans: streaming
164
+
165
+ ChatThread (Chat)
166
+
167
+ ChatScrollButton (Chat)
168
+ shape: icon | labelled
169
+ booleans: hasNewMessages
170
+ REQUIRED props (not axes): label
171
+
172
+ ChatMessageTTSButton (Chat)
173
+ state: idle | loading | playing | paused | error
174
+ REQUIRED props (not axes): state, label, onToggle
175
+
176
+ Dialog (Overlays)
177
+ size: small | medium | large | xlarge
178
+ side: none | left | right
179
+ booleans: centered, showCloseButton
180
+ REQUIRED props (not axes): open, onOpenChange
181
+
182
+ Menu (Overlays)
183
+ variant: pill | boxed
184
+ REQUIRED props (not axes): trigger, items
185
+
186
+ Popover (Overlays)
187
+ align: start | center | end
188
+ booleans: portal
189
+
190
+ Card (Content)
191
+ variant: elevated | outlined | plain
192
+ padding: none | small | medium | large
193
+
194
+ Divider (Content)
195
+ variant: default | dashed
196
+ orientation: horizontal | vertical
197
+
198
+ List (Content)
199
+
200
+ Disclosure (Content)
201
+ REQUIRED props (not axes): title
202
+
203
+ Image (Content)
204
+ type: thumbnail | banner | natural | avatar
205
+ size: regular | small | blog
206
+ booleans: hover
207
+
208
+ SelectionCard (Form)
209
+ size: large | small
210
+ state: default | selected | disabled
211
+ layout: row | tile
212
+ REQUIRED props (not axes): options
213
+
214
+ Upload (Form)
215
+ size: large | small
216
+ status: default | filled | error | disabled | busy
217
+ border: solid | dashed
218
+
219
+ Select (Form)
220
+ size: large | small
221
+ status: default | filled | error | disabled
222
+ booleans: multiple, portal
223
+ REQUIRED props (not axes): options
224
+
225
+ CodeBlock (Content)
226
+ size: large | small
227
+
228
+ Stepper (Navigation)
229
+ position: first | middle | last
230
+ state: default | current | done
231
+ orientation: horizontal | vertical
232
+ REQUIRED props (not axes): steps
233
+
234
+ Pagination (Navigation)
235
+ size: large | small
236
+ booleans: disabled
237
+ REQUIRED props (not axes): page, onPageChange
238
+
239
+ Table (Content)
240
+ booleans: loading, serverSide, hidePagination, fixedLayout, noBorder, slimScrollbar
241
+
242
+ Spinner (Feedback)
243
+ variant: primary | white | gray | gradient
244
+ size: sm | md | lg | xl
245
+
246
+ ProgressBar (Feedback)
247
+ variant: default | success | warning | error | gray | gradient
248
+ size: large | medium | small
249
+ shape: linear | radial
250
+
251
+ Toaster (Feedback)
252
+ position: top-left | top-center | top-right | bottom-left | bottom-center | bottom-right
253
+
254
+ Label (Form)
255
+ variant: default | error | success
256
+ size: sm | md | lg
257
+ booleans: required
258
+
259
+ TRAPS — each of these renders or ignores silently, with no error:
260
+
261
+ 1. `Text` roles are camelCase: `bodyLg`, `paragraphSm`, `labelMd`. A kebab-case or Title-Case role matches no variant and the text renders with no type styling at all.
262
+ 2. `Header`’s `title` is rendered ONLY when `showTextLeft` is also passed. `title` alone is silently dropped — the header renders, without its title.
263
+ 3. `Alert` has no `title` prop. Put the heading in `children`; a `title` passed to it lands on the underlying `div` as a DOM attribute and shows up as a tooltip.
264
+ 4. THE AXES ARE NOT THE PROP LIST. An axis is a STYLING choice; a component can also require DATA, and any entry above with a “REQUIRED props” line will not render without it. `Stepper` is the one that catches everyone: its axes are `position`, `state` and `orientation`, and all three belong to a STEP — the component itself takes `steps={[{ label, state, position }]}`. Writing `<Stepper position="first" state="done" />` throws inside the component, React unmounts the whole tree, and the page goes BLANK. Same shape for `SelectionCard` (`options`), `Select` (`options`), `Menu` (`trigger`, `items`) and `Dialog` (`open`, `onOpenChange`).
265
+ 5. AN AXIS NAME IS NOT ALWAYS THE PROP NAME. Every axis listed above is passed under its own name EXCEPT two: write `variant` (not `function`) for `Alert`, and `variant` (not `role`) for `Text` — taking the legal values from the `function` and `role` axes respectively. Those two keep Figma’s word in the contract because `function` is a reserved word and `role` is an ARIA attribute. Passing the axis name instead of the prop renders the component with no styling and no error.
266
+ 6. The `Table` entry exports the plain parts AND `DataTable`, and the REQUIRED props line above reads only the parts. `DataTable` needs `columns` (tanstack `ColumnDef`s, e.g. `[{ accessorKey: "name", header: "Nama" }]`) and `data`; without them it throws and the page goes blank. `Pagination` needs `page` (1-based) and `onPageChange`; pass `pageCount` for a numbered strip, or omit it and pass `hasNext` for a cursor source, or next stays disabled.
267
+ ```