@mlola-ui/registry 1.0.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.
Files changed (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/components/accordion.json +54 -0
  4. package/components/activity-heatmap.json +54 -0
  5. package/components/alert.json +56 -0
  6. package/components/app-shell.json +53 -0
  7. package/components/avatar.json +54 -0
  8. package/components/badge.json +62 -0
  9. package/components/breadcrumb.json +49 -0
  10. package/components/button.json +62 -0
  11. package/components/calendar.json +55 -0
  12. package/components/card.json +53 -0
  13. package/components/carousel.json +52 -0
  14. package/components/checkbox.json +50 -0
  15. package/components/color-picker.json +60 -0
  16. package/components/combobox.json +64 -0
  17. package/components/command-menu.json +64 -0
  18. package/components/context-menu.json +61 -0
  19. package/components/date-picker.json +59 -0
  20. package/components/dropdown-menu.json +51 -0
  21. package/components/dropzone.json +45 -0
  22. package/components/empty-state.json +45 -0
  23. package/components/hover-card.json +59 -0
  24. package/components/input.json +56 -0
  25. package/components/kbd.json +45 -0
  26. package/components/modal.json +63 -0
  27. package/components/number-input.json +58 -0
  28. package/components/otp-input.json +49 -0
  29. package/components/pagination.json +50 -0
  30. package/components/popover.json +58 -0
  31. package/components/priority-icon.json +53 -0
  32. package/components/progress.json +57 -0
  33. package/components/radio-group.json +48 -0
  34. package/components/rating.json +48 -0
  35. package/components/resizable.json +46 -0
  36. package/components/segmented-control.json +51 -0
  37. package/components/select.json +67 -0
  38. package/components/sheet.json +66 -0
  39. package/components/skeleton.json +48 -0
  40. package/components/slider.json +53 -0
  41. package/components/status-icon.json +53 -0
  42. package/components/stepper.json +50 -0
  43. package/components/table.json +53 -0
  44. package/components/tabs.json +54 -0
  45. package/components/tag-input.json +53 -0
  46. package/components/textarea.json +48 -0
  47. package/components/time-picker.json +58 -0
  48. package/components/timeline.json +54 -0
  49. package/components/toast.json +56 -0
  50. package/components/toggle.json +52 -0
  51. package/components/tooltip.json +54 -0
  52. package/components/tour.json +62 -0
  53. package/components/virtual-list.json +54 -0
  54. package/generated/catalog.ts +2037 -0
  55. package/index.json +413 -0
  56. package/package.json +47 -0
  57. package/schema/mlola.config.schema.json +51 -0
  58. package/schema/registry-index.schema.json +116 -0
  59. package/schema/registry-item.schema.json +80 -0
  60. package/snapshot/index.json +2938 -0
  61. package/snapshot/items/components/accordion.json +54 -0
  62. package/snapshot/items/components/activity-heatmap.json +54 -0
  63. package/snapshot/items/components/alert.json +56 -0
  64. package/snapshot/items/components/app-shell.json +53 -0
  65. package/snapshot/items/components/avatar.json +54 -0
  66. package/snapshot/items/components/badge.json +62 -0
  67. package/snapshot/items/components/breadcrumb.json +49 -0
  68. package/snapshot/items/components/button.json +62 -0
  69. package/snapshot/items/components/calendar.json +55 -0
  70. package/snapshot/items/components/card.json +53 -0
  71. package/snapshot/items/components/carousel.json +52 -0
  72. package/snapshot/items/components/checkbox.json +50 -0
  73. package/snapshot/items/components/color-picker.json +60 -0
  74. package/snapshot/items/components/combobox.json +64 -0
  75. package/snapshot/items/components/command-menu.json +64 -0
  76. package/snapshot/items/components/context-menu.json +61 -0
  77. package/snapshot/items/components/date-picker.json +59 -0
  78. package/snapshot/items/components/dropdown-menu.json +51 -0
  79. package/snapshot/items/components/dropzone.json +45 -0
  80. package/snapshot/items/components/empty-state.json +45 -0
  81. package/snapshot/items/components/hover-card.json +59 -0
  82. package/snapshot/items/components/input.json +56 -0
  83. package/snapshot/items/components/kbd.json +45 -0
  84. package/snapshot/items/components/modal.json +63 -0
  85. package/snapshot/items/components/number-input.json +58 -0
  86. package/snapshot/items/components/otp-input.json +49 -0
  87. package/snapshot/items/components/pagination.json +50 -0
  88. package/snapshot/items/components/popover.json +58 -0
  89. package/snapshot/items/components/priority-icon.json +53 -0
  90. package/snapshot/items/components/progress.json +57 -0
  91. package/snapshot/items/components/radio-group.json +48 -0
  92. package/snapshot/items/components/rating.json +48 -0
  93. package/snapshot/items/components/resizable.json +46 -0
  94. package/snapshot/items/components/segmented-control.json +51 -0
  95. package/snapshot/items/components/select.json +67 -0
  96. package/snapshot/items/components/sheet.json +66 -0
  97. package/snapshot/items/components/skeleton.json +48 -0
  98. package/snapshot/items/components/slider.json +53 -0
  99. package/snapshot/items/components/status-icon.json +53 -0
  100. package/snapshot/items/components/stepper.json +50 -0
  101. package/snapshot/items/components/table.json +53 -0
  102. package/snapshot/items/components/tabs.json +54 -0
  103. package/snapshot/items/components/tag-input.json +53 -0
  104. package/snapshot/items/components/textarea.json +48 -0
  105. package/snapshot/items/components/time-picker.json +58 -0
  106. package/snapshot/items/components/timeline.json +54 -0
  107. package/snapshot/items/components/toast.json +56 -0
  108. package/snapshot/items/components/toggle.json +52 -0
  109. package/snapshot/items/components/tooltip.json +54 -0
  110. package/snapshot/items/components/tour.json +62 -0
  111. package/snapshot/items/components/virtual-list.json +54 -0
  112. package/snapshot/source/packages/components/_internal/anchor.ts +54 -0
  113. package/snapshot/source/packages/components/_internal/dialog.ts +142 -0
  114. package/snapshot/source/packages/components/_internal/floating.ts +73 -0
  115. package/snapshot/source/packages/components/_internal/match.ts +39 -0
  116. package/snapshot/source/packages/components/_internal/react.ts +40 -0
  117. package/snapshot/source/packages/components/_internal/scroll.ts +15 -0
  118. package/snapshot/source/packages/components/accordion/accordion.tsx +164 -0
  119. package/snapshot/source/packages/components/activity-heatmap/activity-heatmap.tsx +204 -0
  120. package/snapshot/source/packages/components/activity-heatmap/calendar.ts +92 -0
  121. package/snapshot/source/packages/components/alert/alert.tsx +83 -0
  122. package/snapshot/source/packages/components/app-shell/app-shell.tsx +186 -0
  123. package/snapshot/source/packages/components/avatar/avatar.tsx +56 -0
  124. package/snapshot/source/packages/components/badge/badge.tsx +39 -0
  125. package/snapshot/source/packages/components/breadcrumb/breadcrumb.tsx +61 -0
  126. package/snapshot/source/packages/components/button/button.tsx +42 -0
  127. package/snapshot/source/packages/components/calendar/calendar.tsx +309 -0
  128. package/snapshot/source/packages/components/calendar/dates.ts +163 -0
  129. package/snapshot/source/packages/components/card/card.tsx +39 -0
  130. package/snapshot/source/packages/components/carousel/carousel.tsx +248 -0
  131. package/snapshot/source/packages/components/checkbox/checkbox.tsx +66 -0
  132. package/snapshot/source/packages/components/color-picker/color-picker.tsx +261 -0
  133. package/snapshot/source/packages/components/color-picker/color.ts +124 -0
  134. package/snapshot/source/packages/components/combobox/combobox.tsx +320 -0
  135. package/snapshot/source/packages/components/command-menu/command-menu.tsx +199 -0
  136. package/snapshot/source/packages/components/context-menu/context-menu.tsx +192 -0
  137. package/snapshot/source/packages/components/date-picker/date-picker.tsx +185 -0
  138. package/snapshot/source/packages/components/dropdown-menu/dropdown-menu.tsx +157 -0
  139. package/snapshot/source/packages/components/dropzone/dropzone.tsx +185 -0
  140. package/snapshot/source/packages/components/empty-state/empty-state.tsx +32 -0
  141. package/snapshot/source/packages/components/hover-card/hover-card.tsx +103 -0
  142. package/snapshot/source/packages/components/input/input.tsx +101 -0
  143. package/snapshot/source/packages/components/kbd/kbd.tsx +54 -0
  144. package/snapshot/source/packages/components/modal/modal.tsx +100 -0
  145. package/snapshot/source/packages/components/number-input/number-input.tsx +184 -0
  146. package/snapshot/source/packages/components/number-input/number.ts +50 -0
  147. package/snapshot/source/packages/components/otp-input/otp-input.tsx +116 -0
  148. package/snapshot/source/packages/components/pagination/pagination.tsx +65 -0
  149. package/snapshot/source/packages/components/popover/popover.tsx +107 -0
  150. package/snapshot/source/packages/components/priority-icon/labels.ts +13 -0
  151. package/snapshot/source/packages/components/priority-icon/priority-icon.tsx +60 -0
  152. package/snapshot/source/packages/components/progress/progress.tsx +110 -0
  153. package/snapshot/source/packages/components/radio-group/radio-group.tsx +106 -0
  154. package/snapshot/source/packages/components/rating/rating.tsx +94 -0
  155. package/snapshot/source/packages/components/resizable/resizable.tsx +171 -0
  156. package/snapshot/source/packages/components/segmented-control/segmented-control.tsx +78 -0
  157. package/snapshot/source/packages/components/select/select.tsx +332 -0
  158. package/snapshot/source/packages/components/sheet/sheet.tsx +109 -0
  159. package/snapshot/source/packages/components/skeleton/skeleton.tsx +84 -0
  160. package/snapshot/source/packages/components/slider/slider.tsx +99 -0
  161. package/snapshot/source/packages/components/status-icon/labels.ts +14 -0
  162. package/snapshot/source/packages/components/status-icon/status-icon.tsx +76 -0
  163. package/snapshot/source/packages/components/stepper/stepper.tsx +87 -0
  164. package/snapshot/source/packages/components/table/table.tsx +66 -0
  165. package/snapshot/source/packages/components/tabs/tabs.tsx +163 -0
  166. package/snapshot/source/packages/components/tag-input/tag-input.tsx +273 -0
  167. package/snapshot/source/packages/components/textarea/textarea.tsx +70 -0
  168. package/snapshot/source/packages/components/time-picker/time-picker.tsx +286 -0
  169. package/snapshot/source/packages/components/time-picker/times.ts +76 -0
  170. package/snapshot/source/packages/components/timeline/timeline.tsx +115 -0
  171. package/snapshot/source/packages/components/toast/toast.tsx +317 -0
  172. package/snapshot/source/packages/components/toggle/toggle.tsx +80 -0
  173. package/snapshot/source/packages/components/tooltip/tooltip.tsx +70 -0
  174. package/snapshot/source/packages/components/tour/tour.tsx +193 -0
  175. package/snapshot/source/packages/components/virtual-list/virtual-list.tsx +121 -0
  176. package/snapshot/source/packages/components/virtual-list/virtual.ts +33 -0
  177. package/snapshot/source-manifest.json +67 -0
package/index.json ADDED
@@ -0,0 +1,413 @@
1
+ {
2
+ "$schema": "./schema/registry-index.schema.json",
3
+ "schemaVersion": 2,
4
+ "name": "mlola-ui",
5
+ "version": "1.0.0",
6
+ "homepage": "https://ui.mlola.com",
7
+ "themeContract": {
8
+ "attribute": "data-theme",
9
+ "modeAttribute": "data-mode",
10
+ "default": "graphite",
11
+ "channels": [
12
+ "color",
13
+ "typography",
14
+ "geometry",
15
+ "density",
16
+ "depth",
17
+ "motion",
18
+ "texture",
19
+ "rhythm",
20
+ "icons"
21
+ ],
22
+ "invariants": [
23
+ "semantics",
24
+ "behavior",
25
+ "accessibility",
26
+ "component-anatomy"
27
+ ]
28
+ },
29
+ "themes": [
30
+ {
31
+ "id": "graphite",
32
+ "name": "Graphite",
33
+ "genre": "Product & AI",
34
+ "description": "Neutral graphite, crisp hairlines, and ink that stays out of the way."
35
+ },
36
+ {
37
+ "id": "atelier",
38
+ "name": "Atelier Umami",
39
+ "genre": "Editorial & Craft",
40
+ "description": "Warm cotton paper, artisanal ink, and an amber signal."
41
+ },
42
+ {
43
+ "id": "machined",
44
+ "name": "Machined Titanium",
45
+ "genre": "Industrial & Telemetry",
46
+ "description": "Aerospace telemetry, compact precision, and high contrast."
47
+ },
48
+ {
49
+ "id": "aerogel",
50
+ "name": "Aerogel Glass",
51
+ "genre": "Liquid AI & Optics",
52
+ "description": "Optical luminescence, liquid refraction, and specular depth."
53
+ },
54
+ {
55
+ "id": "nordic",
56
+ "name": "Nordic Earth",
57
+ "genre": "Organic & Minimal",
58
+ "description": "Forest moss, fjord stone, terracotta, and organic calm."
59
+ }
60
+ ],
61
+ "themeAliases": {},
62
+ "description": "Mlola UI open-source registry for source-copy components.",
63
+ "categories": [
64
+ {
65
+ "id": "actions",
66
+ "title": "Actions",
67
+ "description": "Buttons and menus that make something happen."
68
+ },
69
+ {
70
+ "id": "forms",
71
+ "title": "Forms",
72
+ "description": "Controls for entering and choosing values."
73
+ },
74
+ {
75
+ "id": "data",
76
+ "title": "Data display",
77
+ "description": "People, status and records at a glance."
78
+ },
79
+ {
80
+ "id": "feedback",
81
+ "title": "Feedback",
82
+ "description": "What happened, what is happening, and what is loading."
83
+ },
84
+ {
85
+ "id": "navigation",
86
+ "title": "Navigation",
87
+ "description": "Moving between pages, views and commands."
88
+ },
89
+ {
90
+ "id": "overlays",
91
+ "title": "Overlays",
92
+ "description": "Layers that sit above the page."
93
+ },
94
+ {
95
+ "id": "layout",
96
+ "title": "Layout",
97
+ "description": "Structure: disclosure, panes and space."
98
+ }
99
+ ],
100
+ "components": [
101
+ "accordion",
102
+ "alert",
103
+ "avatar",
104
+ "badge",
105
+ "breadcrumb",
106
+ "button",
107
+ "card",
108
+ "carousel",
109
+ "checkbox",
110
+ "command-menu",
111
+ "dropdown-menu",
112
+ "dropzone",
113
+ "empty-state",
114
+ "input",
115
+ "kbd",
116
+ "modal",
117
+ "otp-input",
118
+ "pagination",
119
+ "popover",
120
+ "progress",
121
+ "radio-group",
122
+ "rating",
123
+ "resizable",
124
+ "segmented-control",
125
+ "select",
126
+ "sheet",
127
+ "skeleton",
128
+ "slider",
129
+ "table",
130
+ "tabs",
131
+ "textarea",
132
+ "timeline",
133
+ "toast",
134
+ "toggle",
135
+ "tooltip",
136
+ "activity-heatmap",
137
+ "calendar",
138
+ "date-picker",
139
+ "time-picker",
140
+ "status-icon",
141
+ "priority-icon",
142
+ "combobox",
143
+ "tag-input",
144
+ "number-input",
145
+ "color-picker",
146
+ "stepper",
147
+ "virtual-list",
148
+ "context-menu",
149
+ "hover-card",
150
+ "tour",
151
+ "app-shell"
152
+ ],
153
+ "blocks": [],
154
+ "pages": [],
155
+ "templates": [],
156
+ "items": [
157
+ {
158
+ "name": "accordion",
159
+ "kind": "component",
160
+ "manifest": "components/accordion.json"
161
+ },
162
+ {
163
+ "name": "alert",
164
+ "kind": "component",
165
+ "manifest": "components/alert.json"
166
+ },
167
+ {
168
+ "name": "avatar",
169
+ "kind": "component",
170
+ "manifest": "components/avatar.json"
171
+ },
172
+ {
173
+ "name": "badge",
174
+ "kind": "component",
175
+ "manifest": "components/badge.json"
176
+ },
177
+ {
178
+ "name": "breadcrumb",
179
+ "kind": "component",
180
+ "manifest": "components/breadcrumb.json"
181
+ },
182
+ {
183
+ "name": "button",
184
+ "kind": "component",
185
+ "manifest": "components/button.json"
186
+ },
187
+ {
188
+ "name": "card",
189
+ "kind": "component",
190
+ "manifest": "components/card.json"
191
+ },
192
+ {
193
+ "name": "carousel",
194
+ "kind": "component",
195
+ "manifest": "components/carousel.json"
196
+ },
197
+ {
198
+ "name": "checkbox",
199
+ "kind": "component",
200
+ "manifest": "components/checkbox.json"
201
+ },
202
+ {
203
+ "name": "command-menu",
204
+ "kind": "component",
205
+ "manifest": "components/command-menu.json"
206
+ },
207
+ {
208
+ "name": "dropdown-menu",
209
+ "kind": "component",
210
+ "manifest": "components/dropdown-menu.json"
211
+ },
212
+ {
213
+ "name": "dropzone",
214
+ "kind": "component",
215
+ "manifest": "components/dropzone.json"
216
+ },
217
+ {
218
+ "name": "empty-state",
219
+ "kind": "component",
220
+ "manifest": "components/empty-state.json"
221
+ },
222
+ {
223
+ "name": "input",
224
+ "kind": "component",
225
+ "manifest": "components/input.json"
226
+ },
227
+ {
228
+ "name": "kbd",
229
+ "kind": "component",
230
+ "manifest": "components/kbd.json"
231
+ },
232
+ {
233
+ "name": "modal",
234
+ "kind": "component",
235
+ "manifest": "components/modal.json"
236
+ },
237
+ {
238
+ "name": "otp-input",
239
+ "kind": "component",
240
+ "manifest": "components/otp-input.json"
241
+ },
242
+ {
243
+ "name": "pagination",
244
+ "kind": "component",
245
+ "manifest": "components/pagination.json"
246
+ },
247
+ {
248
+ "name": "popover",
249
+ "kind": "component",
250
+ "manifest": "components/popover.json"
251
+ },
252
+ {
253
+ "name": "progress",
254
+ "kind": "component",
255
+ "manifest": "components/progress.json"
256
+ },
257
+ {
258
+ "name": "radio-group",
259
+ "kind": "component",
260
+ "manifest": "components/radio-group.json"
261
+ },
262
+ {
263
+ "name": "rating",
264
+ "kind": "component",
265
+ "manifest": "components/rating.json"
266
+ },
267
+ {
268
+ "name": "resizable",
269
+ "kind": "component",
270
+ "manifest": "components/resizable.json"
271
+ },
272
+ {
273
+ "name": "segmented-control",
274
+ "kind": "component",
275
+ "manifest": "components/segmented-control.json"
276
+ },
277
+ {
278
+ "name": "select",
279
+ "kind": "component",
280
+ "manifest": "components/select.json"
281
+ },
282
+ {
283
+ "name": "sheet",
284
+ "kind": "component",
285
+ "manifest": "components/sheet.json"
286
+ },
287
+ {
288
+ "name": "skeleton",
289
+ "kind": "component",
290
+ "manifest": "components/skeleton.json"
291
+ },
292
+ {
293
+ "name": "slider",
294
+ "kind": "component",
295
+ "manifest": "components/slider.json"
296
+ },
297
+ {
298
+ "name": "table",
299
+ "kind": "component",
300
+ "manifest": "components/table.json"
301
+ },
302
+ {
303
+ "name": "tabs",
304
+ "kind": "component",
305
+ "manifest": "components/tabs.json"
306
+ },
307
+ {
308
+ "name": "textarea",
309
+ "kind": "component",
310
+ "manifest": "components/textarea.json"
311
+ },
312
+ {
313
+ "name": "timeline",
314
+ "kind": "component",
315
+ "manifest": "components/timeline.json"
316
+ },
317
+ {
318
+ "name": "toast",
319
+ "kind": "component",
320
+ "manifest": "components/toast.json"
321
+ },
322
+ {
323
+ "name": "toggle",
324
+ "kind": "component",
325
+ "manifest": "components/toggle.json"
326
+ },
327
+ {
328
+ "name": "tooltip",
329
+ "kind": "component",
330
+ "manifest": "components/tooltip.json"
331
+ },
332
+ {
333
+ "name": "activity-heatmap",
334
+ "kind": "component",
335
+ "manifest": "components/activity-heatmap.json"
336
+ },
337
+ {
338
+ "name": "calendar",
339
+ "kind": "component",
340
+ "manifest": "components/calendar.json"
341
+ },
342
+ {
343
+ "name": "date-picker",
344
+ "kind": "component",
345
+ "manifest": "components/date-picker.json"
346
+ },
347
+ {
348
+ "name": "time-picker",
349
+ "kind": "component",
350
+ "manifest": "components/time-picker.json"
351
+ },
352
+ {
353
+ "name": "status-icon",
354
+ "kind": "component",
355
+ "manifest": "components/status-icon.json"
356
+ },
357
+ {
358
+ "name": "priority-icon",
359
+ "kind": "component",
360
+ "manifest": "components/priority-icon.json"
361
+ },
362
+ {
363
+ "name": "combobox",
364
+ "kind": "component",
365
+ "manifest": "components/combobox.json"
366
+ },
367
+ {
368
+ "name": "tag-input",
369
+ "kind": "component",
370
+ "manifest": "components/tag-input.json"
371
+ },
372
+ {
373
+ "name": "number-input",
374
+ "kind": "component",
375
+ "manifest": "components/number-input.json"
376
+ },
377
+ {
378
+ "name": "color-picker",
379
+ "kind": "component",
380
+ "manifest": "components/color-picker.json"
381
+ },
382
+ {
383
+ "name": "stepper",
384
+ "kind": "component",
385
+ "manifest": "components/stepper.json"
386
+ },
387
+ {
388
+ "name": "virtual-list",
389
+ "kind": "component",
390
+ "manifest": "components/virtual-list.json"
391
+ },
392
+ {
393
+ "name": "context-menu",
394
+ "kind": "component",
395
+ "manifest": "components/context-menu.json"
396
+ },
397
+ {
398
+ "name": "hover-card",
399
+ "kind": "component",
400
+ "manifest": "components/hover-card.json"
401
+ },
402
+ {
403
+ "name": "tour",
404
+ "kind": "component",
405
+ "manifest": "components/tour.json"
406
+ },
407
+ {
408
+ "name": "app-shell",
409
+ "kind": "component",
410
+ "manifest": "components/app-shell.json"
411
+ }
412
+ ]
413
+ }
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@mlola-ui/registry",
3
+ "version": "1.0.0",
4
+ "description": "Validated Registry v2 metadata and source snapshot for Mlola UI",
5
+ "type": "module",
6
+ "main": "./snapshot/index.json",
7
+ "exports": {
8
+ ".": "./snapshot/index.json",
9
+ "./index": "./index.json",
10
+ "./items/components/*": "./components/*.json",
11
+ "./schema/*": "./schema/*.json",
12
+ "./generated/catalog": "./generated/catalog.ts",
13
+ "./snapshot/*": "./snapshot/*"
14
+ },
15
+ "files": [
16
+ "index.json",
17
+ "components",
18
+ "schema",
19
+ "snapshot",
20
+ "generated"
21
+ ],
22
+ "engines": {
23
+ "node": ">=20"
24
+ },
25
+ "sideEffects": false,
26
+ "license": "MIT",
27
+ "author": "Mlola",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/mlolahq/mlola-ui.git",
31
+ "directory": "packages/registry"
32
+ },
33
+ "homepage": "https://ui.mlola.com",
34
+ "bugs": {
35
+ "url": "https://github.com/mlolahq/mlola-ui/issues"
36
+ },
37
+ "keywords": [
38
+ "mlola",
39
+ "ui",
40
+ "registry",
41
+ "components",
42
+ "source-copy"
43
+ ],
44
+ "publishConfig": {
45
+ "access": "public"
46
+ }
47
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://ui.mlola.com/schema/mlola.config.json",
4
+ "title": "Mlola CLI configuration",
5
+ "type": "object",
6
+ "required": ["$schema", "version", "theme", "aliases", "engine"],
7
+ "properties": {
8
+ "$schema": { "type": "string" },
9
+ "version": { "const": 1 },
10
+ "theme": { "enum": ["graphite", "atelier", "machined", "aerogel", "nordic"] },
11
+ "aliases": {
12
+ "type": "object",
13
+ "required": ["components", "blocks", "templates", "lib", "styles"],
14
+ "properties": {
15
+ "components": { "type": "string", "minLength": 1 },
16
+ "blocks": { "type": "string", "minLength": 1 },
17
+ "pages": { "type": "string", "minLength": 1 },
18
+ "templates": { "type": "string", "minLength": 1 },
19
+ "lib": { "type": "string", "minLength": 1 },
20
+ "styles": { "type": "string", "minLength": 1 }
21
+ },
22
+ "additionalProperties": false
23
+ },
24
+ "targets": {
25
+ "type": "object",
26
+ "properties": {
27
+ "components": { "type": "string", "minLength": 1 },
28
+ "blocks": { "type": "string", "minLength": 1 },
29
+ "pages": { "type": "string", "minLength": 1 },
30
+ "templates": { "type": "string", "minLength": 1 },
31
+ "lib": { "type": "string", "minLength": 1 },
32
+ "styles": { "type": "string", "minLength": 1 }
33
+ },
34
+ "additionalProperties": false
35
+ },
36
+ "engine": {
37
+ "type": "object",
38
+ "required": ["engine", "tokens", "motion", "scene", "icons", "behavior"],
39
+ "properties": {
40
+ "engine": { "type": "string" },
41
+ "tokens": { "type": "string" },
42
+ "motion": { "type": "string" },
43
+ "scene": { "type": "string" },
44
+ "icons": { "type": "string" },
45
+ "behavior": { "type": "string" }
46
+ },
47
+ "additionalProperties": false
48
+ }
49
+ },
50
+ "additionalProperties": false
51
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://ui.mlola.com/schema/registry-index.v2.json",
4
+ "title": "Mlola Registry Index v2",
5
+ "type": "object",
6
+ "required": [
7
+ "$schema",
8
+ "schemaVersion",
9
+ "name",
10
+ "version",
11
+ "themeContract",
12
+ "themes",
13
+ "themeAliases",
14
+ "components",
15
+ "blocks",
16
+ "pages",
17
+ "templates",
18
+ "items"
19
+ ],
20
+ "properties": {
21
+ "$schema": { "type": "string" },
22
+ "schemaVersion": { "const": 2 },
23
+ "name": { "const": "mlola-ui" },
24
+ "version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+" },
25
+ "description": { "type": "string" },
26
+ "homepage": { "type": "string", "format": "uri" },
27
+ "categories": {
28
+ "description": "Categories in display order; every item's category is one of these ids.",
29
+ "type": "array",
30
+ "items": {
31
+ "type": "object",
32
+ "required": ["id", "title", "description"],
33
+ "properties": {
34
+ "id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
35
+ "title": { "type": "string" },
36
+ "description": { "type": "string" },
37
+ "tier": { "enum": ["pro"], "description": "Pro categories ship in the commercial catalog." }
38
+ },
39
+ "additionalProperties": false
40
+ }
41
+ },
42
+ "themeContract": {
43
+ "type": "object",
44
+ "required": ["attribute", "modeAttribute", "default", "channels", "invariants"],
45
+ "properties": {
46
+ "attribute": { "const": "data-theme" },
47
+ "modeAttribute": { "const": "data-mode" },
48
+ "default": { "enum": ["graphite", "atelier", "machined", "aerogel", "nordic"] },
49
+ "channels": {
50
+ "type": "array",
51
+ "minItems": 1,
52
+ "items": { "type": "string" },
53
+ "uniqueItems": true
54
+ },
55
+ "invariants": {
56
+ "type": "array",
57
+ "minItems": 1,
58
+ "items": { "type": "string" },
59
+ "uniqueItems": true
60
+ }
61
+ },
62
+ "additionalProperties": false
63
+ },
64
+ "themes": {
65
+ "type": "array",
66
+ "minItems": 4,
67
+ "maxItems": 4,
68
+ "items": {
69
+ "type": "object",
70
+ "required": ["id", "name", "genre", "description"],
71
+ "properties": {
72
+ "id": { "enum": ["graphite", "atelier", "machined", "aerogel", "nordic"] },
73
+ "name": { "type": "string" },
74
+ "genre": { "type": "string" },
75
+ "description": { "type": "string" }
76
+ },
77
+ "additionalProperties": false
78
+ }
79
+ },
80
+ "themeAliases": {
81
+ "type": "object",
82
+ "additionalProperties": {
83
+ "enum": ["graphite", "atelier", "machined", "aerogel", "nordic"]
84
+ }
85
+ },
86
+ "components": { "$ref": "#/$defs/names" },
87
+ "blocks": { "$ref": "#/$defs/names" },
88
+ "pages": { "$ref": "#/$defs/names" },
89
+ "templates": { "$ref": "#/$defs/names" },
90
+ "items": {
91
+ "type": "array",
92
+ "minItems": 42,
93
+ "items": {
94
+ "type": "object",
95
+ "required": ["name", "kind", "manifest"],
96
+ "properties": {
97
+ "name": { "type": "string" },
98
+ "kind": { "enum": ["component", "block", "page", "template"] },
99
+ "manifest": { "type": "string" }
100
+ },
101
+ "additionalProperties": false
102
+ }
103
+ }
104
+ },
105
+ "$defs": {
106
+ "names": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "string",
110
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
111
+ },
112
+ "uniqueItems": true
113
+ }
114
+ },
115
+ "additionalProperties": false
116
+ }