@muten/shadcn 0.0.7 → 0.1.1
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/AGENTS.md +47 -0
- package/README.md +47 -0
- package/kit.css +2767 -0
- package/motion.css +31 -1
- package/nova.css +1387 -0
- package/package.json +6 -2
- package/registry/accordion.muten +11 -10
- package/registry/agenda.js +35 -0
- package/registry/agenda.muten +10 -0
- package/registry/alert-dialog.muten +9 -12
- package/registry/alert.muten +8 -8
- package/registry/app-shell.js +9 -0
- package/registry/app-shell.muten +12 -0
- package/registry/attachment.muten +13 -9
- package/registry/avatar.muten +24 -5
- package/registry/badge.muten +23 -8
- package/registry/band.muten +16 -0
- package/registry/bar-chart.muten +7 -0
- package/registry/bell.muten +3 -0
- package/registry/bento.muten +6 -9
- package/registry/booking.js +21 -0
- package/registry/booking.muten +13 -0
- package/registry/breadcrumb.muten +9 -7
- package/registry/button-group.muten +13 -4
- package/registry/button.muten +21 -8
- package/registry/calendar.js +28 -93
- package/registry/calendar.muten +9 -8
- package/registry/canvas-viewport.js +12 -5
- package/registry/canvas-viewport.muten +9 -9
- package/registry/card-field.muten +4 -0
- package/registry/card.muten +12 -8
- package/registry/carousel.js +5 -36
- package/registry/carousel.muten +12 -5
- package/registry/chatbot.muten +9 -0
- package/registry/checklist.muten +6 -0
- package/registry/choice-list.muten +16 -0
- package/registry/code.js +14 -12
- package/registry/code.muten +6 -7
- package/registry/collapsible.muten +14 -10
- package/registry/color-picker.js +460 -41
- package/registry/color-picker.muten +7 -6
- package/registry/combobox.js +5 -0
- package/registry/combobox.muten +6 -23
- package/registry/command-palette.muten +8 -12
- package/registry/command.js +32 -0
- package/registry/command.muten +32 -11
- package/registry/context-menu.muten +9 -8
- package/registry/count-up.muten +5 -10
- package/registry/date-field.js +5 -0
- package/registry/date-field.muten +7 -0
- package/registry/device-frame.muten +8 -0
- package/registry/dialog.muten +6 -12
- package/registry/dirty-bar.js +19 -0
- package/registry/dirty-bar.muten +13 -0
- package/registry/drawer.muten +6 -11
- package/registry/dropdown-menu.muten +37 -13
- package/registry/empty.muten +11 -7
- package/registry/feature-grid.muten +10 -12
- package/registry/feature-rows.muten +12 -8
- package/registry/field-behavior.js +33 -0
- package/registry/field-behavior.muten +9 -0
- package/registry/field.muten +26 -7
- package/registry/file-input.js +36 -21
- package/registry/file-input.muten +8 -7
- package/registry/fixed-card.muten +25 -0
- package/registry/folder-picker.js +13 -15
- package/registry/folder-picker.muten +5 -8
- package/registry/gradient-blinds.muten +6 -13
- package/registry/hover-card.muten +7 -9
- package/registry/image-upload.js +5 -0
- package/registry/image-upload.muten +8 -0
- package/registry/indicator.muten +5 -0
- package/registry/input-group.muten +27 -4
- package/registry/input-otp.js +8 -35
- package/registry/input-otp.muten +6 -6
- package/registry/input.muten +8 -7
- package/registry/inspector.muten +13 -15
- package/registry/island.js +7 -0
- package/registry/island.muten +5 -0
- package/registry/item.muten +20 -7
- package/registry/kbd.muten +3 -3
- package/registry/kit/board.js +300 -0
- package/registry/kit/collections.js +148 -0
- package/registry/kit/core.js +989 -0
- package/registry/kit/dates.js +106 -0
- package/registry/kit/menus.js +90 -0
- package/registry/kit/overlays.js +114 -0
- package/registry/kit/paint.js +211 -0
- package/registry/kit/qrcode.js +2291 -0
- package/registry/kit/structure.js +395 -0
- package/registry/kit/table.js +198 -0
- package/registry/kit/values.js +179 -0
- package/registry/kit-layer.js +2 -0
- package/registry/kit-layer.muten +5 -0
- package/registry/kit-skeleton.js +24 -0
- package/registry/kit-skeleton.muten +16 -0
- package/registry/kit-widget.js +79 -0
- package/registry/kit-widget.muten +4 -0
- package/registry/link-btn.muten +9 -7
- package/registry/live-stack.js +29 -0
- package/registry/live-stack.muten +7 -0
- package/registry/logo-cloud.muten +6 -11
- package/registry/member-list.muten +6 -0
- package/registry/menubar.muten +10 -14
- package/registry/message-scroller.js +12 -0
- package/registry/message-scroller.muten +8 -4
- package/registry/message.muten +27 -10
- package/registry/messaging.muten +11 -0
- package/registry/modal-behavior.js +56 -0
- package/registry/modal-behavior.muten +4 -0
- package/registry/modal.muten +29 -0
- package/registry/money-field.js +5 -0
- package/registry/money-field.muten +7 -0
- package/registry/nav-button.muten +14 -0
- package/registry/navigation-menu.muten +16 -14
- package/registry/navpill.muten +15 -9
- package/registry/new-appointment.js +8 -0
- package/registry/new-appointment.muten +10 -0
- package/registry/number-field.js +34 -24
- package/registry/number-field.muten +8 -6
- package/registry/order-board.js +6 -0
- package/registry/order-board.muten +21 -0
- package/registry/overlay-behavior.js +13 -0
- package/registry/overlay-behavior.muten +4 -0
- package/registry/pagination-nav.js +6 -0
- package/registry/pagination-nav.muten +8 -0
- package/registry/pagination.muten +12 -9
- package/registry/password-field.muten +3 -0
- package/registry/permission-matrix.muten +6 -0
- package/registry/phone-field.js +5 -0
- package/registry/phone-field.muten +7 -0
- package/registry/phone-shell.js +7 -0
- package/registry/phone-shell.muten +9 -0
- package/registry/pill.muten +6 -5
- package/registry/plans.muten +4 -0
- package/registry/popover.muten +16 -9
- package/registry/pricing.muten +21 -21
- package/registry/progress.muten +5 -5
- package/registry/queue.muten +3 -0
- package/registry/radio-group.muten +16 -8
- package/registry/range-slider.js +9 -24
- package/registry/range-slider.muten +4 -5
- package/registry/resizable.js +34 -27
- package/registry/resizable.muten +16 -5
- package/registry/roving-behavior.js +16 -0
- package/registry/roving-behavior.muten +3 -0
- package/registry/row-menu.js +5 -0
- package/registry/row-menu.muten +5 -0
- package/registry/save-button.muten +11 -0
- package/registry/scale-slider.js +7 -0
- package/registry/scale-slider.muten +9 -0
- package/registry/scroll-area.muten +8 -4
- package/registry/segmented-control.muten +8 -8
- package/registry/separator.muten +3 -3
- package/registry/share-button.js +7 -0
- package/registry/share-button.muten +10 -0
- package/registry/sheet.muten +6 -10
- package/registry/sidebar.muten +23 -15
- package/registry/skeleton.muten +6 -4
- package/registry/slider.js +73 -27
- package/registry/slider.muten +6 -6
- package/registry/sortable-behavior.js +43 -0
- package/registry/sortable-behavior.muten +2 -0
- package/registry/sortable-list.js +10 -26
- package/registry/sortable-list.muten +6 -7
- package/registry/sortable.muten +15 -0
- package/registry/spark.js +14 -0
- package/registry/spark.muten +3 -0
- package/registry/spinner.muten +4 -3
- package/registry/split-button.muten +12 -10
- package/registry/stamp-card.muten +7 -0
- package/registry/stat-band.muten +6 -9
- package/registry/stat.muten +23 -0
- package/registry/status-bar.muten +7 -6
- package/registry/stepper.muten +17 -14
- package/registry/store-qr.js +5 -0
- package/registry/store-qr.muten +5 -0
- package/registry/swatch.muten +8 -8
- package/registry/switch.muten +14 -6
- package/registry/table-view.muten +10 -0
- package/registry/tabs-behavior.js +27 -0
- package/registry/tabs-behavior.muten +3 -0
- package/registry/tabs.muten +19 -10
- package/registry/tag-input.js +4 -27
- package/registry/tag-input.muten +6 -6
- package/registry/text.muten +7 -0
- package/registry/time-field.js +5 -0
- package/registry/time-field.muten +6 -0
- package/registry/timeline.muten +14 -14
- package/registry/toaster.js +34 -22
- package/registry/toaster.muten +10 -8
- package/registry/toggle-group.muten +11 -6
- package/registry/toggle.muten +8 -5
- package/registry/toolbar.muten +11 -6
- package/registry/tooltip.muten +6 -9
- package/registry/tree-view.js +27 -7
- package/registry/tree-view.muten +8 -13
- package/registry/vector-field.muten +9 -8
- package/registry/virtual-list.js +5 -0
- package/registry/virtual-list.muten +6 -0
- package/registry/weekly-hours.muten +4 -0
- package/registry/wordline.muten +6 -0
- package/registry/zoom-control.muten +9 -9
- package/registry.json +872 -406
- package/registry/context-menu.js +0 -34
package/registry.json
CHANGED
|
@@ -4,602 +4,1068 @@
|
|
|
4
4
|
"style": "shadcn zinc dark (tokens shipped by globals.css: bg-card / bg-primary / text-muted-foreground / border-border / …)",
|
|
5
5
|
"components": [
|
|
6
6
|
{
|
|
7
|
-
"name": "
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
7
|
+
"name": "accordion",
|
|
8
|
+
"deps": [],
|
|
9
|
+
"part": "Accordion",
|
|
10
|
+
"file": "registry/accordion.muten",
|
|
11
|
+
"description": "Stacked expandable sections with AccordionItem; page owns a bool per item."
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"name": "
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
14
|
+
"name": "agenda",
|
|
15
|
+
"deps": [],
|
|
16
|
+
"part": "Agenda",
|
|
17
|
+
"file": "registry/agenda.muten",
|
|
18
|
+
"component": "Agenda",
|
|
19
|
+
"description": "Agenda(resources, hours, events, blocks, from, to, slot, onCreate, onChange): day/week/list, drag, resize, appointment sheet (Custom, kit core)."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "alert-dialog",
|
|
23
|
+
"deps": [],
|
|
24
|
+
"part": "AlertDialog",
|
|
25
|
+
"file": "registry/alert-dialog.muten",
|
|
26
|
+
"description": "A modal requiring an explicit choice (no backdrop dismiss); page owns the open bool."
|
|
19
27
|
},
|
|
20
28
|
{
|
|
21
29
|
"name": "alert",
|
|
30
|
+
"deps": [],
|
|
22
31
|
"part": "Alert",
|
|
23
32
|
"file": "registry/alert.muten",
|
|
24
|
-
"description": "
|
|
25
|
-
|
|
33
|
+
"description": "Alert(variant, tone) callout: an Icon, AlertTitle, AlertDescription, AlertAction at the corner. tone: info | ok | wait."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "app-shell",
|
|
37
|
+
"deps": [],
|
|
38
|
+
"part": "AppShell",
|
|
39
|
+
"file": "registry/app-shell.muten",
|
|
40
|
+
"component": "AppShell",
|
|
41
|
+
"description": "AppShell(brand, user, nav, pages, rows, commands, narrow, onNavigate, onOpen, onAction): Sidebar, page header, detail Sheet, ⌘K Command."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "attachment",
|
|
45
|
+
"deps": [],
|
|
46
|
+
"part": "Attachment",
|
|
47
|
+
"file": "registry/attachment.muten",
|
|
48
|
+
"description": "A file attachment chip (icon + name + size)."
|
|
26
49
|
},
|
|
27
50
|
{
|
|
28
51
|
"name": "avatar",
|
|
52
|
+
"deps": [],
|
|
29
53
|
"part": "Avatar",
|
|
30
54
|
"file": "registry/avatar.muten",
|
|
31
|
-
"description": "
|
|
32
|
-
"deps": []
|
|
55
|
+
"description": "Avatar(name, size, shape, status): initials with a stable tone from the name, name on hover, online dot · AvatarImage · AvatarGroup + AvatarMore · Who."
|
|
33
56
|
},
|
|
34
57
|
{
|
|
35
|
-
"name": "
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
58
|
+
"name": "badge",
|
|
59
|
+
"deps": [],
|
|
60
|
+
"part": "Badge",
|
|
61
|
+
"file": "registry/badge.muten",
|
|
62
|
+
"description": "Badge(label, variant) · StatusBadge(label, tone) dot+word · ToneBadge(label, tone, dot) tinted · Chip(label, onRemove) removable."
|
|
40
63
|
},
|
|
41
64
|
{
|
|
42
|
-
"name": "
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
65
|
+
"name": "band",
|
|
66
|
+
"deps": [],
|
|
67
|
+
"part": "Band",
|
|
68
|
+
"file": "registry/band.muten",
|
|
69
|
+
"description": "Band(open, tone, text, action, onAction) { Icon }: the top strip for a lasting state; folds, never clips."
|
|
47
70
|
},
|
|
48
71
|
{
|
|
49
|
-
"name": "
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
72
|
+
"name": "bar-chart",
|
|
73
|
+
"deps": [
|
|
74
|
+
"kit-widget"
|
|
75
|
+
],
|
|
76
|
+
"part": "BarChart",
|
|
77
|
+
"file": "registry/bar-chart.muten",
|
|
78
|
+
"description": "BarChart - bars that always fill their height, a period switch (14 días / 30 días). periods: {label, values} - the"
|
|
54
79
|
},
|
|
55
80
|
{
|
|
56
|
-
"name": "
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"
|
|
81
|
+
"name": "bell",
|
|
82
|
+
"deps": [
|
|
83
|
+
"kit-widget"
|
|
84
|
+
],
|
|
85
|
+
"part": "Bell",
|
|
86
|
+
"file": "registry/bell.muten",
|
|
87
|
+
"description": "Bell - the system's notifications: tap to see them, mark all read. Bell(items: @notices) items: {icon, tone, title, desc, time, unread}"
|
|
61
88
|
},
|
|
62
89
|
{
|
|
63
|
-
"name": "
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
90
|
+
"name": "bento",
|
|
91
|
+
"deps": [],
|
|
92
|
+
"part": "BentoGallery",
|
|
93
|
+
"file": "registry/bento.muten",
|
|
94
|
+
"description": "BLOCK: fixed-row-height tiling gallery; cells pick their col-span. Parts: BentoGallery, BentoCell."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "booking",
|
|
98
|
+
"deps": [],
|
|
99
|
+
"part": "Booking",
|
|
100
|
+
"file": "registry/booking.muten",
|
|
101
|
+
"component": "Booking",
|
|
102
|
+
"description": "Booking(week, taken, wait, onSelect): week strip and hours, closed and full days, skeleton while loading."
|
|
68
103
|
},
|
|
69
104
|
{
|
|
70
105
|
"name": "breadcrumb",
|
|
106
|
+
"deps": [],
|
|
71
107
|
"part": "Breadcrumb",
|
|
72
108
|
"file": "registry/breadcrumb.muten",
|
|
73
|
-
"description": "A breadcrumb trail with BreadcrumbLink / BreadcrumbSeparator / BreadcrumbPage."
|
|
74
|
-
"deps": []
|
|
109
|
+
"description": "A breadcrumb trail with BreadcrumbLink / BreadcrumbSeparator / BreadcrumbPage."
|
|
75
110
|
},
|
|
76
111
|
{
|
|
77
|
-
"name": "
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
112
|
+
"name": "button-group",
|
|
113
|
+
"deps": [],
|
|
114
|
+
"part": "ButtonGroup",
|
|
115
|
+
"file": "registry/button-group.muten",
|
|
116
|
+
"description": "A segmented row of buttons that share borders. Put btn-outline buttons inside."
|
|
82
117
|
},
|
|
83
118
|
{
|
|
84
|
-
"name": "
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
119
|
+
"name": "button",
|
|
120
|
+
"deps": [],
|
|
121
|
+
"part": "Btn",
|
|
122
|
+
"file": "registry/button.muten",
|
|
123
|
+
"description": "Btn(variant, size, onClick) { slot }: Nova button with fixed heights; icons move on hover. variant: default | outline | secondary | ghost | destructive | link. size: xs | sm | default | lg | icon | icon-xs | icon-sm | icon-lg."
|
|
89
124
|
},
|
|
90
125
|
{
|
|
91
|
-
"name": "
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
126
|
+
"name": "calendar",
|
|
127
|
+
"deps": [],
|
|
128
|
+
"part": "Calendar",
|
|
129
|
+
"file": "registry/calendar.muten",
|
|
130
|
+
"component": "Calendar",
|
|
131
|
+
"description": "Calendar(selected, mode, months, min, onSelect): the kit month grid, single day or range, 1 or 2 months (Custom, kit core)."
|
|
96
132
|
},
|
|
97
133
|
{
|
|
98
|
-
"name": "
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
134
|
+
"name": "canvas-viewport",
|
|
135
|
+
"deps": [],
|
|
136
|
+
"part": "CanvasViewport",
|
|
137
|
+
"file": "registry/canvas-viewport.muten",
|
|
138
|
+
"component": "CanvasHost",
|
|
139
|
+
"description": "A <canvas> with pan/zoom (Custom) + a muten toolbar slot floating on top."
|
|
103
140
|
},
|
|
104
141
|
{
|
|
105
|
-
"name": "
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"
|
|
142
|
+
"name": "card-field",
|
|
143
|
+
"deps": [
|
|
144
|
+
"kit-widget"
|
|
145
|
+
],
|
|
146
|
+
"part": "CardField",
|
|
147
|
+
"file": "registry/card-field.muten",
|
|
148
|
+
"description": "CardField - card number with its brand, expiry, code; validates (Luhn) and says what was saved."
|
|
110
149
|
},
|
|
111
150
|
{
|
|
112
|
-
"name": "
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
151
|
+
"name": "card",
|
|
152
|
+
"deps": [],
|
|
153
|
+
"part": "Card",
|
|
154
|
+
"file": "registry/card.muten",
|
|
155
|
+
"description": "Card(size) surface that only conveys: CardHeader (CardTitle, CardDescription, CardAction) / CardContent / CardFooter. size: default | sm."
|
|
117
156
|
},
|
|
118
157
|
{
|
|
119
|
-
"name": "
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
158
|
+
"name": "carousel",
|
|
159
|
+
"deps": [],
|
|
160
|
+
"part": "Carousel",
|
|
161
|
+
"file": "registry/carousel.muten",
|
|
162
|
+
"component": "Carousel",
|
|
163
|
+
"description": "Carousel(label, perView, center, loop, autoplay, indicator, arrows) { CarouselSlide }: one component, options instead of copies."
|
|
124
164
|
},
|
|
125
165
|
{
|
|
126
|
-
"name": "
|
|
127
|
-
"
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
"
|
|
166
|
+
"name": "chatbot",
|
|
167
|
+
"deps": [
|
|
168
|
+
"kit-widget"
|
|
169
|
+
],
|
|
170
|
+
"part": "Chatbot",
|
|
171
|
+
"file": "registry/chatbot.muten",
|
|
172
|
+
"description": "Chatbot - the assistant: greets, offers suggestions, «thinks», writes the answer live (with Stop), can carry an"
|
|
131
173
|
},
|
|
132
174
|
{
|
|
133
|
-
"name": "
|
|
134
|
-
"
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
"
|
|
175
|
+
"name": "checklist",
|
|
176
|
+
"deps": [
|
|
177
|
+
"kit-widget"
|
|
178
|
+
],
|
|
179
|
+
"part": "Checklist",
|
|
180
|
+
"file": "registry/checklist.muten",
|
|
181
|
+
"description": "Checklist - first steps with progress: done steps checked, the next ones with their action (onAction gets its label)."
|
|
138
182
|
},
|
|
139
183
|
{
|
|
140
|
-
"name": "
|
|
141
|
-
"
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
"
|
|
184
|
+
"name": "choice-list",
|
|
185
|
+
"deps": [
|
|
186
|
+
"roving-behavior"
|
|
187
|
+
],
|
|
188
|
+
"part": "ChoiceList",
|
|
189
|
+
"file": "registry/choice-list.muten",
|
|
190
|
+
"description": "ChoiceList(label) + ChoiceItem(value, current, onPick, title, description, price): Items as a radio group (arrows pick)."
|
|
145
191
|
},
|
|
146
192
|
{
|
|
147
|
-
"name": "
|
|
148
|
-
"
|
|
149
|
-
"
|
|
150
|
-
"
|
|
151
|
-
"
|
|
193
|
+
"name": "code",
|
|
194
|
+
"deps": [],
|
|
195
|
+
"part": "Code",
|
|
196
|
+
"file": "registry/code.muten",
|
|
197
|
+
"component": "Code",
|
|
198
|
+
"description": "Syntax-highlighted code block that understands muten (shared highlight.js, same grammar as the VS Code extension)."
|
|
152
199
|
},
|
|
153
200
|
{
|
|
154
|
-
"name": "
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
201
|
+
"name": "collapsible",
|
|
202
|
+
"deps": [],
|
|
203
|
+
"part": "Collapsible",
|
|
204
|
+
"file": "registry/collapsible.muten",
|
|
205
|
+
"description": "A trigger + content shown when open; page owns the bool."
|
|
159
206
|
},
|
|
160
207
|
{
|
|
161
|
-
"name": "
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
"
|
|
208
|
+
"name": "color-picker",
|
|
209
|
+
"deps": [],
|
|
210
|
+
"part": "ColorPicker",
|
|
211
|
+
"file": "registry/color-picker.muten",
|
|
212
|
+
"component": "ColorPicker",
|
|
213
|
+
"description": "ColorPicker(value, modes, anims, label, onInput): Storio's colour picker (solid, gradient, animations)."
|
|
166
214
|
},
|
|
167
215
|
{
|
|
168
|
-
"name": "
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"
|
|
216
|
+
"name": "combobox",
|
|
217
|
+
"deps": [],
|
|
218
|
+
"part": "Combobox",
|
|
219
|
+
"file": "registry/combobox.muten",
|
|
220
|
+
"component": "Combobox",
|
|
221
|
+
"description": "Combobox(label, options, value, placeholder, allowNew, onChange): filters and marks the match, «Usar …» for a new value."
|
|
173
222
|
},
|
|
174
223
|
{
|
|
175
|
-
"name": "
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
"
|
|
224
|
+
"name": "command-palette",
|
|
225
|
+
"deps": [],
|
|
226
|
+
"part": "CommandPalette",
|
|
227
|
+
"file": "registry/command-palette.muten",
|
|
228
|
+
"description": "A top-anchored modal holding a Command; page owns the open bool."
|
|
180
229
|
},
|
|
181
230
|
{
|
|
182
|
-
"name": "
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
231
|
+
"name": "command",
|
|
232
|
+
"deps": [],
|
|
233
|
+
"part": "Command",
|
|
234
|
+
"file": "registry/command.muten",
|
|
235
|
+
"component": "CommandBehavior",
|
|
236
|
+
"description": "A command palette (search + grouped CommandItem list)."
|
|
187
237
|
},
|
|
188
238
|
{
|
|
189
|
-
"name": "
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"
|
|
239
|
+
"name": "context-menu",
|
|
240
|
+
"deps": [],
|
|
241
|
+
"part": "ContextMenu",
|
|
242
|
+
"file": "registry/context-menu.muten",
|
|
243
|
+
"description": "Right-click an area to open a menu of items (Custom)."
|
|
194
244
|
},
|
|
195
245
|
{
|
|
196
|
-
"name": "
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
"
|
|
200
|
-
"
|
|
246
|
+
"name": "count-up",
|
|
247
|
+
"deps": [],
|
|
248
|
+
"part": "CountUp",
|
|
249
|
+
"file": "registry/count-up.muten",
|
|
250
|
+
"component": "CountUp",
|
|
251
|
+
"description": "Animate a formatted number (2.4M / 94% / 40ms / 99.99%) from 0 when it scrolls into view; lands on the exact target. Custom. Styled form (takes the class): `Custom CountUp inputs(to: \"2.4M\") class(\"text-4xl font-bold\")`. For stat bands + hero metrics."
|
|
201
252
|
},
|
|
202
253
|
{
|
|
203
|
-
"name": "
|
|
204
|
-
"
|
|
205
|
-
"
|
|
206
|
-
"
|
|
207
|
-
"
|
|
254
|
+
"name": "date-field",
|
|
255
|
+
"deps": [],
|
|
256
|
+
"part": "DateField",
|
|
257
|
+
"file": "registry/date-field.muten",
|
|
258
|
+
"component": "DateField",
|
|
259
|
+
"description": "DateField(label, value, min, years, onChange): the long date; opens the date wheels."
|
|
208
260
|
},
|
|
209
261
|
{
|
|
210
|
-
"name": "
|
|
211
|
-
"
|
|
212
|
-
"
|
|
213
|
-
"
|
|
214
|
-
"
|
|
262
|
+
"name": "device-frame",
|
|
263
|
+
"deps": [],
|
|
264
|
+
"part": "DeviceFrame",
|
|
265
|
+
"file": "registry/device-frame.muten",
|
|
266
|
+
"description": "DeviceFrame - a device around a picture of a product: a phone (rounded bezel) or a browser window (a bar with"
|
|
215
267
|
},
|
|
216
268
|
{
|
|
217
|
-
"name": "
|
|
218
|
-
"
|
|
219
|
-
"
|
|
220
|
-
"
|
|
221
|
-
"
|
|
269
|
+
"name": "dialog",
|
|
270
|
+
"deps": [],
|
|
271
|
+
"part": "Dialog",
|
|
272
|
+
"file": "registry/dialog.muten",
|
|
273
|
+
"description": "A modal with DialogTitle/Description/Footer; page owns the open bool. Backdrop click closes."
|
|
222
274
|
},
|
|
223
275
|
{
|
|
224
|
-
"name": "
|
|
225
|
-
"
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
"
|
|
276
|
+
"name": "dirty-bar",
|
|
277
|
+
"deps": [],
|
|
278
|
+
"part": "SettingsForm",
|
|
279
|
+
"file": "registry/dirty-bar.muten",
|
|
280
|
+
"component": "DirtyBar",
|
|
281
|
+
"description": "DirtyBar - «Tienes cambios sin guardar»: a floating footer of the form it sits in. It appears when any field,"
|
|
229
282
|
},
|
|
230
283
|
{
|
|
231
|
-
"name": "
|
|
232
|
-
"
|
|
233
|
-
"
|
|
234
|
-
"
|
|
235
|
-
"
|
|
284
|
+
"name": "drawer",
|
|
285
|
+
"deps": [],
|
|
286
|
+
"part": "Drawer",
|
|
287
|
+
"file": "registry/drawer.muten",
|
|
288
|
+
"description": "A panel that slides up from the bottom; page owns the open bool."
|
|
236
289
|
},
|
|
237
290
|
{
|
|
238
|
-
"name": "
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"
|
|
291
|
+
"name": "dropdown-menu",
|
|
292
|
+
"deps": [],
|
|
293
|
+
"part": "DropdownMenu",
|
|
294
|
+
"file": "registry/dropdown-menu.muten",
|
|
295
|
+
"description": "A menu below a trigger with DropdownItem/Label/Separator; page owns the open bool."
|
|
243
296
|
},
|
|
244
297
|
{
|
|
245
|
-
"name": "
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
298
|
+
"name": "empty",
|
|
299
|
+
"deps": [],
|
|
300
|
+
"part": "Empty",
|
|
301
|
+
"file": "registry/empty.muten",
|
|
302
|
+
"description": "Empty(title, description) { Icon } — what a list says when it has nothing yet."
|
|
250
303
|
},
|
|
251
304
|
{
|
|
252
|
-
"name": "
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"description": "
|
|
257
|
-
"deps": []
|
|
305
|
+
"name": "feature-grid",
|
|
306
|
+
"deps": [],
|
|
307
|
+
"part": "FeatureGrid",
|
|
308
|
+
"file": "registry/feature-grid.muten",
|
|
309
|
+
"description": "BLOCK: responsive grid of feature cards (icon + title + copy). Parts: FeatureGrid, FeatureCard."
|
|
258
310
|
},
|
|
259
311
|
{
|
|
260
|
-
"name": "
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
"
|
|
264
|
-
"description": "
|
|
265
|
-
"deps": []
|
|
312
|
+
"name": "feature-rows",
|
|
313
|
+
"deps": [],
|
|
314
|
+
"part": "FeatureRows",
|
|
315
|
+
"file": "registry/feature-rows.muten",
|
|
316
|
+
"description": "BLOCK: numbered feature/schedule rows with side gutters (12-col grid inside). Parts: FeatureRows, FeatureRow."
|
|
266
317
|
},
|
|
267
318
|
{
|
|
268
|
-
"name": "
|
|
269
|
-
"
|
|
270
|
-
"
|
|
271
|
-
"
|
|
272
|
-
"
|
|
273
|
-
"
|
|
319
|
+
"name": "field-behavior",
|
|
320
|
+
"deps": [],
|
|
321
|
+
"part": "FieldBehavior",
|
|
322
|
+
"file": "registry/field-behavior.muten",
|
|
323
|
+
"component": "FieldBehavior",
|
|
324
|
+
"description": "FieldBehavior(kind, message, max): money thousands on blur · email checked on blur · Esc clears search · character count."
|
|
274
325
|
},
|
|
275
326
|
{
|
|
276
|
-
"name": "
|
|
277
|
-
"
|
|
278
|
-
"
|
|
279
|
-
"
|
|
280
|
-
"description": "
|
|
281
|
-
"deps": []
|
|
327
|
+
"name": "field",
|
|
328
|
+
"deps": [],
|
|
329
|
+
"part": "Field",
|
|
330
|
+
"file": "registry/field.muten",
|
|
331
|
+
"description": "Field(label, description, orientation) { control } + FieldRow (two columns) + FieldLabel / FieldDescription / FieldError."
|
|
282
332
|
},
|
|
283
333
|
{
|
|
284
|
-
"name": "
|
|
285
|
-
"
|
|
286
|
-
"
|
|
287
|
-
"
|
|
288
|
-
"
|
|
289
|
-
"
|
|
334
|
+
"name": "file-input",
|
|
335
|
+
"deps": [],
|
|
336
|
+
"part": "FileInput",
|
|
337
|
+
"file": "registry/file-input.muten",
|
|
338
|
+
"component": "FileInput",
|
|
339
|
+
"description": "A click/drag-drop file dropzone (Custom); emits file names."
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"name": "fixed-card",
|
|
343
|
+
"deps": [],
|
|
344
|
+
"part": "FixedCard",
|
|
345
|
+
"file": "registry/fixed-card.muten",
|
|
346
|
+
"description": "FixedCard(title, description) + Row3(time, title, subtitle) + EmptyMini(text): a card that never grows (3 rows + «Ver todas»)."
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"name": "folder-picker",
|
|
350
|
+
"deps": [],
|
|
351
|
+
"part": "FolderPicker",
|
|
352
|
+
"file": "registry/folder-picker.muten",
|
|
353
|
+
"component": "FolderPicker",
|
|
354
|
+
"description": "Connect a local folder via showDirectoryPicker (Custom); emits the name."
|
|
290
355
|
},
|
|
291
356
|
{
|
|
292
357
|
"name": "gradient-blinds",
|
|
358
|
+
"deps": [
|
|
359
|
+
"ogl"
|
|
360
|
+
],
|
|
293
361
|
"part": "GradientBlinds",
|
|
294
362
|
"file": "registry/gradient-blinds.muten",
|
|
295
363
|
"component": "GradientBlinds",
|
|
296
|
-
"description": "Animated WebGL gradient + diagonal-blinds hero background that follows the cursor and fades into the page (needs ogl)."
|
|
297
|
-
"deps": [
|
|
298
|
-
"ogl"
|
|
299
|
-
]
|
|
364
|
+
"description": "Animated WebGL gradient + diagonal-blinds hero background that follows the cursor and fades into the page (needs ogl)."
|
|
300
365
|
},
|
|
301
366
|
{
|
|
302
|
-
"name": "
|
|
303
|
-
"
|
|
304
|
-
"
|
|
305
|
-
"
|
|
306
|
-
"
|
|
307
|
-
"
|
|
367
|
+
"name": "hotkey",
|
|
368
|
+
"deps": [],
|
|
369
|
+
"part": "Hotkey",
|
|
370
|
+
"file": "registry/hotkey.muten",
|
|
371
|
+
"component": "Hotkey",
|
|
372
|
+
"description": "A global keyboard shortcut (Cmd/Ctrl+key), invisible (Custom)."
|
|
308
373
|
},
|
|
309
374
|
{
|
|
310
|
-
"name": "
|
|
311
|
-
"
|
|
312
|
-
"
|
|
313
|
-
"
|
|
314
|
-
"description": "
|
|
315
|
-
"deps": []
|
|
375
|
+
"name": "hover-card",
|
|
376
|
+
"deps": [],
|
|
377
|
+
"part": "HoverCard",
|
|
378
|
+
"file": "registry/hover-card.muten",
|
|
379
|
+
"description": "Richer content shown on hover (pure CSS, no state)."
|
|
316
380
|
},
|
|
317
381
|
{
|
|
318
|
-
"name": "
|
|
319
|
-
"
|
|
320
|
-
"
|
|
321
|
-
"
|
|
322
|
-
"
|
|
323
|
-
"
|
|
382
|
+
"name": "image-upload",
|
|
383
|
+
"deps": [],
|
|
384
|
+
"part": "ImageUpload",
|
|
385
|
+
"file": "registry/image-upload.muten",
|
|
386
|
+
"component": "ImageUpload",
|
|
387
|
+
"description": "ImageUpload(title, hint, maxMb, size, uploadUrl, sample, onReady): validate, decode, crop, shrink, upload with progress."
|
|
324
388
|
},
|
|
325
389
|
{
|
|
326
|
-
"name": "
|
|
327
|
-
"
|
|
328
|
-
"
|
|
329
|
-
"
|
|
330
|
-
"
|
|
390
|
+
"name": "indicator",
|
|
391
|
+
"deps": [],
|
|
392
|
+
"part": "Indicator",
|
|
393
|
+
"file": "registry/indicator.muten",
|
|
394
|
+
"description": "Indicator(tone): the corner dot that says something needs you."
|
|
331
395
|
},
|
|
332
396
|
{
|
|
333
|
-
"name": "
|
|
334
|
-
"
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
"
|
|
338
|
-
"
|
|
397
|
+
"name": "input-group",
|
|
398
|
+
"deps": [
|
|
399
|
+
"field-behavior"
|
|
400
|
+
],
|
|
401
|
+
"part": "InputGroup",
|
|
402
|
+
"file": "registry/input-group.muten",
|
|
403
|
+
"description": "InputGroup + InputAddon(align) + GroupInput(value) · SearchInput(value, placeholder, onClear) with × only when there is text."
|
|
339
404
|
},
|
|
340
405
|
{
|
|
341
|
-
"name": "
|
|
342
|
-
"
|
|
343
|
-
"
|
|
344
|
-
"
|
|
345
|
-
"
|
|
346
|
-
"
|
|
406
|
+
"name": "input-otp",
|
|
407
|
+
"deps": [],
|
|
408
|
+
"part": "InputOtp",
|
|
409
|
+
"file": "registry/input-otp.muten",
|
|
410
|
+
"component": "InputOtp",
|
|
411
|
+
"description": "InputOtp(value, length, hint, state, message, resendIn, onInput): slots, caret, ok/bad, resend countdown."
|
|
347
412
|
},
|
|
348
413
|
{
|
|
349
|
-
"name": "
|
|
350
|
-
"
|
|
351
|
-
"
|
|
352
|
-
"
|
|
414
|
+
"name": "input",
|
|
415
|
+
"deps": [],
|
|
416
|
+
"part": "Input",
|
|
417
|
+
"file": "registry/input.muten",
|
|
418
|
+
"description": "Input(value, placeholder) and TextArea(value, placeholder): Nova fields bound to a page text state."
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"name": "inspector",
|
|
422
|
+
"deps": [],
|
|
423
|
+
"part": "Inspector",
|
|
424
|
+
"file": "registry/inspector.muten",
|
|
425
|
+
"description": "Property grid: InspectorSection (collapsible) / InspectorRow (label : value slot)."
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "island",
|
|
429
|
+
"deps": [],
|
|
430
|
+
"part": "Island",
|
|
431
|
+
"file": "registry/island.muten",
|
|
432
|
+
"component": "Island",
|
|
433
|
+
"description": "Island(tone, text, ms): the one floating notice that morphs (kit core)."
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"name": "item",
|
|
437
|
+
"deps": [],
|
|
438
|
+
"part": "Item",
|
|
439
|
+
"file": "registry/item.muten",
|
|
440
|
+
"description": "Item(variant, size) row with ItemMedia / ItemContent / ItemTitle / ItemDescription / ItemActions / ItemFooter; lists = ItemGroup + ItemSeparator."
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"name": "kbd",
|
|
444
|
+
"deps": [],
|
|
445
|
+
"part": "Kbd",
|
|
446
|
+
"file": "registry/kbd.muten",
|
|
447
|
+
"description": "A keyboard key hint. Kbd { Span \"Ctrl\" }."
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"name": "kit-layer",
|
|
451
|
+
"deps": [],
|
|
452
|
+
"part": "KitLayer",
|
|
453
|
+
"file": "registry/kit-layer.muten",
|
|
454
|
+
"component": "KitLayer",
|
|
455
|
+
"description": "KitLayer(): once in the shell; loads the kit core (tooltip, island, sprite)."
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"name": "kit-skeleton",
|
|
459
|
+
"deps": [],
|
|
460
|
+
"part": "Skeletons",
|
|
461
|
+
"file": "registry/kit-skeleton.muten",
|
|
462
|
+
"component": "KitSkeleton",
|
|
463
|
+
"description": "Skeletons(kind, count) / Loading(busy, kind) { … }: content-shaped skeletons, fade on arrival."
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"name": "kit-widget",
|
|
467
|
+
"deps": [],
|
|
468
|
+
"part": "KitWidget",
|
|
469
|
+
"file": "registry/kit-widget.muten",
|
|
470
|
+
"component": "KitWidget",
|
|
471
|
+
"description": "Host of the system kit widgets (Custom, kit core). Use the named parts."
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"name": "link-btn",
|
|
475
|
+
"deps": [],
|
|
476
|
+
"part": "LinkBtn",
|
|
477
|
+
"file": "registry/link-btn.muten",
|
|
478
|
+
"description": "A navigation link styled as a button. `LinkBtn(to: \"/signup\", variant: \"default\") { Span \"Get started\" }`."
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"name": "live-stack",
|
|
482
|
+
"deps": [],
|
|
483
|
+
"part": "LiveStack",
|
|
484
|
+
"file": "registry/live-stack.muten",
|
|
485
|
+
"component": "LiveStack",
|
|
486
|
+
"description": "LiveStack - news that keeps arriving, for a landing page: what the product does while nobody watches («Carla agendó"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"name": "logo-cloud",
|
|
490
|
+
"deps": [],
|
|
491
|
+
"part": "LogoCloud",
|
|
492
|
+
"file": "registry/logo-cloud.muten",
|
|
493
|
+
"description": "BLOCK: a 'trusted by' strip of logos, muted + grayscale until hover. Parts: LogoCloud, LogoCloudItem."
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"name": "member-list",
|
|
353
497
|
"deps": [
|
|
354
|
-
"
|
|
355
|
-
]
|
|
498
|
+
"kit-widget"
|
|
499
|
+
],
|
|
500
|
+
"part": "MemberList",
|
|
501
|
+
"file": "registry/member-list.muten",
|
|
502
|
+
"description": "MemberList - any group (team, workspace, family plan): who is in, their role in the library's menu, invite."
|
|
356
503
|
},
|
|
357
504
|
{
|
|
358
|
-
"name": "
|
|
359
|
-
"
|
|
360
|
-
"
|
|
361
|
-
"
|
|
362
|
-
"description": "A
|
|
363
|
-
"deps": []
|
|
505
|
+
"name": "menubar",
|
|
506
|
+
"deps": [],
|
|
507
|
+
"part": "Menubar",
|
|
508
|
+
"file": "registry/menubar.muten",
|
|
509
|
+
"description": "A bar of menus (File/Edit/View); page owns which is open via a text state."
|
|
364
510
|
},
|
|
365
511
|
{
|
|
366
|
-
"name": "
|
|
367
|
-
"
|
|
368
|
-
"
|
|
369
|
-
"
|
|
370
|
-
"
|
|
512
|
+
"name": "message-scroller",
|
|
513
|
+
"deps": [],
|
|
514
|
+
"part": "MessageScroller",
|
|
515
|
+
"file": "registry/message-scroller.muten",
|
|
516
|
+
"component": "MessageScrollerBehavior",
|
|
517
|
+
"description": "A scrollable column of chat messages."
|
|
371
518
|
},
|
|
372
519
|
{
|
|
373
|
-
"name": "
|
|
374
|
-
"
|
|
375
|
-
"
|
|
376
|
-
"
|
|
377
|
-
"description": "
|
|
378
|
-
"deps": []
|
|
520
|
+
"name": "message",
|
|
521
|
+
"deps": [],
|
|
522
|
+
"part": "Message",
|
|
523
|
+
"file": "registry/message.muten",
|
|
524
|
+
"description": "Chat Message + Bubble + Marker (variant: sent | received)."
|
|
379
525
|
},
|
|
380
526
|
{
|
|
381
|
-
"name": "
|
|
382
|
-
"
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
"
|
|
527
|
+
"name": "messaging",
|
|
528
|
+
"deps": [
|
|
529
|
+
"kit-widget"
|
|
530
|
+
],
|
|
531
|
+
"part": "Messaging",
|
|
532
|
+
"file": "registry/messaging.muten",
|
|
533
|
+
"description": "Messaging - one inbox for every channel: list (search, filters with counts, channel, state, unread), the chat (the"
|
|
386
534
|
},
|
|
387
535
|
{
|
|
388
|
-
"name": "
|
|
389
|
-
"
|
|
390
|
-
"
|
|
391
|
-
"
|
|
392
|
-
"
|
|
536
|
+
"name": "modal-behavior",
|
|
537
|
+
"deps": [],
|
|
538
|
+
"part": "ModalBehavior",
|
|
539
|
+
"file": "registry/modal-behavior.muten",
|
|
540
|
+
"component": "ModalBehavior",
|
|
541
|
+
"description": "The adaptive modal's behaviour (history, Esc, focus trap, drawer drag). Used by Modal."
|
|
393
542
|
},
|
|
394
543
|
{
|
|
395
|
-
"name": "
|
|
396
|
-
"
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
"
|
|
544
|
+
"name": "modal",
|
|
545
|
+
"deps": [
|
|
546
|
+
"modal-behavior"
|
|
547
|
+
],
|
|
548
|
+
"part": "Modal",
|
|
549
|
+
"file": "registry/modal.muten",
|
|
550
|
+
"description": "Modal(open, onClose, title, description, mode, size) + ModalFooter: THE adaptive modal (Dialog on desktop, Drawer on phone). Back/Esc/overlay/✕/drag close it."
|
|
400
551
|
},
|
|
401
552
|
{
|
|
402
|
-
"name": "
|
|
403
|
-
"
|
|
404
|
-
"
|
|
405
|
-
"
|
|
406
|
-
"
|
|
407
|
-
"
|
|
553
|
+
"name": "money-field",
|
|
554
|
+
"deps": [],
|
|
555
|
+
"part": "MoneyField",
|
|
556
|
+
"file": "registry/money-field.muten",
|
|
557
|
+
"component": "MoneyField",
|
|
558
|
+
"description": "MoneyField(label, value, currency, onChange): Intl currency, searchable currency list, minor units."
|
|
408
559
|
},
|
|
409
560
|
{
|
|
410
|
-
"name": "
|
|
411
|
-
"
|
|
412
|
-
"
|
|
413
|
-
"
|
|
414
|
-
"
|
|
561
|
+
"name": "nav-button",
|
|
562
|
+
"deps": [],
|
|
563
|
+
"part": "NavButton",
|
|
564
|
+
"file": "registry/nav-button.muten",
|
|
565
|
+
"description": "NavButton(label, current, onClick) + NavBar: chosen is a state (--selected + dot), not a variant."
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"name": "navigation-menu",
|
|
569
|
+
"deps": [],
|
|
570
|
+
"part": "NavigationMenu",
|
|
571
|
+
"file": "registry/navigation-menu.muten",
|
|
572
|
+
"description": "A nav bar with hover-revealed panels (pure CSS, no state)."
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"name": "navpill",
|
|
576
|
+
"deps": [],
|
|
577
|
+
"part": "NavPill",
|
|
578
|
+
"file": "registry/navpill.muten",
|
|
579
|
+
"description": "BLOCK: the floating glass navbar (sticky wrapper + glass pill + scroll animation baked in). Drop logo/links/CTA inside."
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"name": "new-appointment",
|
|
583
|
+
"deps": [],
|
|
584
|
+
"part": "NewAppointment",
|
|
585
|
+
"file": "registry/new-appointment.muten",
|
|
586
|
+
"component": "NewAppointment",
|
|
587
|
+
"description": "NewAppointment(open, clients, services, hours, closed, onCreate, onClose): «Nueva cita» in 4 steps."
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"name": "number-field",
|
|
591
|
+
"deps": [],
|
|
592
|
+
"part": "NumberField",
|
|
593
|
+
"file": "registry/number-field.muten",
|
|
594
|
+
"component": "NumberField",
|
|
595
|
+
"description": "A numeric input with -/+ steppers, min/max/step (Custom)."
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"name": "order-board",
|
|
599
|
+
"deps": [],
|
|
600
|
+
"part": "OrderBoard",
|
|
601
|
+
"file": "registry/order-board.muten",
|
|
602
|
+
"component": "OrderBoard",
|
|
603
|
+
"description": "OrderBoard(lanes, cards, onChange, onAction) / OrderCards(cards, sizes): order board and card with its modals."
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"name": "overlay-behavior",
|
|
607
|
+
"deps": [],
|
|
608
|
+
"part": "OverlayBehavior",
|
|
609
|
+
"file": "registry/overlay-behavior.muten",
|
|
610
|
+
"component": "OverlayBehavior",
|
|
611
|
+
"description": "OverlayBehavior - the opening, placing and closing of a floating panel; the floating parts (Popover, HoverCard,"
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"name": "pagination-nav",
|
|
615
|
+
"deps": [],
|
|
616
|
+
"part": "PaginationNav",
|
|
617
|
+
"file": "registry/pagination-nav.muten",
|
|
618
|
+
"component": "PaginationNav",
|
|
619
|
+
"description": "PaginationNav(total, per, page, noun, onPage): server pages, 7 fixed slots, range line."
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "pagination",
|
|
623
|
+
"deps": [],
|
|
624
|
+
"part": "Pagination",
|
|
625
|
+
"file": "registry/pagination.muten",
|
|
626
|
+
"description": "Page navigation with PaginationLink / Previous / Next / Ellipsis."
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
"name": "password-field",
|
|
630
|
+
"deps": [
|
|
631
|
+
"kit-widget"
|
|
632
|
+
],
|
|
633
|
+
"part": "PasswordField",
|
|
634
|
+
"file": "registry/password-field.muten",
|
|
635
|
+
"description": "PasswordField - a password with show/hide and its strength. PasswordField(label: \"Contraseña nueva\")"
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "permission-matrix",
|
|
639
|
+
"deps": [
|
|
640
|
+
"kit-widget"
|
|
641
|
+
],
|
|
642
|
+
"part": "PermissionMatrix",
|
|
643
|
+
"file": "registry/permission-matrix.muten",
|
|
644
|
+
"description": "PermissionMatrix - any rows × any roles; one role can be locked (always allowed)."
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"name": "phone-field",
|
|
648
|
+
"deps": [],
|
|
649
|
+
"part": "PhoneField",
|
|
650
|
+
"file": "registry/phone-field.muten",
|
|
651
|
+
"component": "PhoneField",
|
|
652
|
+
"description": "PhoneField(label, value, country, onChange): dial code list, mask, E.164."
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"name": "phone-shell",
|
|
656
|
+
"deps": [],
|
|
657
|
+
"part": "PhoneShell",
|
|
658
|
+
"file": "registry/phone-shell.muten",
|
|
659
|
+
"component": "PhoneShell",
|
|
660
|
+
"description": "PhoneShell(tabs, rows, onSelect): phone frame, big title that shrinks on scroll, three fixed bottom tabs."
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"name": "pill",
|
|
664
|
+
"deps": [],
|
|
665
|
+
"part": "Pill",
|
|
666
|
+
"file": "registry/pill.muten",
|
|
667
|
+
"description": "A hero eyebrow chip (rounded-full, bigger than Badge); slot-based for an icon + text."
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"name": "plans",
|
|
671
|
+
"deps": [
|
|
672
|
+
"kit-widget"
|
|
673
|
+
],
|
|
674
|
+
"part": "Plans",
|
|
675
|
+
"file": "registry/plans.muten",
|
|
676
|
+
"description": "Plans - plan cards with a monthly/yearly switch; the current plan is marked; going up is one tap, going down asks."
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"name": "popover",
|
|
680
|
+
"deps": [],
|
|
681
|
+
"part": "Popover",
|
|
682
|
+
"file": "registry/popover.muten",
|
|
683
|
+
"description": "A floating panel below a trigger; page owns the open bool."
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"name": "pricing",
|
|
687
|
+
"deps": [],
|
|
688
|
+
"part": "Pricing",
|
|
689
|
+
"file": "registry/pricing.muten",
|
|
690
|
+
"description": "BLOCK: a row of pricing tiers (name/price/features/CTA), featured highlight. Parts: Pricing, PricingTier, PricingFeature."
|
|
691
|
+
},
|
|
692
|
+
{
|
|
693
|
+
"name": "progress",
|
|
694
|
+
"deps": [],
|
|
695
|
+
"part": "Progress",
|
|
696
|
+
"file": "registry/progress.muten",
|
|
697
|
+
"description": "Progress(value, label): determinate bar 0-100 that eases between values."
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"name": "queue",
|
|
701
|
+
"deps": [
|
|
702
|
+
"kit-widget"
|
|
703
|
+
],
|
|
704
|
+
"part": "Queue",
|
|
705
|
+
"file": "registry/queue.muten",
|
|
706
|
+
"description": "Queue - a waitlist: offer a freed slot to the first in line, with a countdown. Queue(title: \"Lista de espera · sábado\", people: @waiting)"
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
"name": "radio-group",
|
|
710
|
+
"deps": [],
|
|
711
|
+
"part": "RadioGroup",
|
|
712
|
+
"file": "registry/radio-group.muten",
|
|
713
|
+
"description": "Single choice with RadioGroupItem; page owns a text state."
|
|
415
714
|
},
|
|
416
715
|
{
|
|
417
716
|
"name": "range-slider",
|
|
717
|
+
"deps": [],
|
|
418
718
|
"part": "RangeSlider",
|
|
419
719
|
"file": "registry/range-slider.muten",
|
|
420
720
|
"component": "RangeSlider",
|
|
421
|
-
"description": "
|
|
422
|
-
|
|
721
|
+
"description": "RangeSlider(lo, hi, min, max, step, onLo, onHi): two thumbs on the kit ScaleSlider."
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
"name": "resizable",
|
|
725
|
+
"deps": [],
|
|
726
|
+
"part": "ResizablePanelGroup",
|
|
727
|
+
"file": "registry/resizable.muten",
|
|
728
|
+
"component": "ResizableBehavior",
|
|
729
|
+
"description": "Resizable - panels you size by dragging the line between them (shadcn Nova). Each panel starts at its size (a"
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
"name": "roving-behavior",
|
|
733
|
+
"deps": [],
|
|
734
|
+
"part": "RovingBehavior",
|
|
735
|
+
"file": "registry/roving-behavior.muten",
|
|
736
|
+
"component": "RovingBehavior",
|
|
737
|
+
"description": "Arrow keys for a radio group (Custom)."
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "row-menu",
|
|
741
|
+
"deps": [],
|
|
742
|
+
"part": "RowMenu",
|
|
743
|
+
"file": "registry/row-menu.muten",
|
|
744
|
+
"component": "RowMenu",
|
|
745
|
+
"description": "RowMenu(label, items, onPick): the ⋯ menu of a row (arrows, type-ahead, Esc)."
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
"name": "save-button",
|
|
749
|
+
"deps": [],
|
|
750
|
+
"part": "SaveButton",
|
|
751
|
+
"file": "registry/save-button.muten",
|
|
752
|
+
"description": "SaveButton(status, onClick, label): idle → saving → saved, fixed width."
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"name": "scale-slider",
|
|
756
|
+
"deps": [],
|
|
757
|
+
"part": "ScaleSlider",
|
|
758
|
+
"file": "registry/scale-slider.muten",
|
|
759
|
+
"component": "ScaleSlider",
|
|
760
|
+
"description": "ScaleSlider(label, min, max, step, values, gap, format, onChange): value rides on the thumb; two bubbles merge."
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
"name": "scroll-area",
|
|
764
|
+
"deps": [],
|
|
765
|
+
"part": "ScrollArea",
|
|
766
|
+
"file": "registry/scroll-area.muten",
|
|
767
|
+
"description": "A scrollable region with styled scrollbars."
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"name": "segmented-control",
|
|
771
|
+
"deps": [
|
|
772
|
+
"tabs-behavior"
|
|
773
|
+
],
|
|
774
|
+
"part": "SegmentedControl",
|
|
775
|
+
"file": "registry/segmented-control.muten",
|
|
776
|
+
"description": "A single-select toolbar (SegmentedItem); page owns a text state."
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"name": "separator",
|
|
780
|
+
"deps": [],
|
|
781
|
+
"part": "Separator",
|
|
782
|
+
"file": "registry/separator.muten",
|
|
783
|
+
"description": "Separator(orientation): a hairline. horizontal | vertical."
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"name": "share-button",
|
|
787
|
+
"deps": [],
|
|
788
|
+
"part": "ShareButton",
|
|
789
|
+
"file": "registry/share-button.muten",
|
|
790
|
+
"component": "ShareButton",
|
|
791
|
+
"description": "ShareButton(label, kind, name, initials, url, product…): share sheet in the adaptive modal, brand targets, QR."
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
"name": "sheet",
|
|
795
|
+
"deps": [],
|
|
796
|
+
"part": "Sheet",
|
|
797
|
+
"file": "registry/sheet.muten",
|
|
798
|
+
"description": "A panel that slides in from the right; page owns the open bool."
|
|
423
799
|
},
|
|
424
800
|
{
|
|
425
801
|
"name": "sidebar",
|
|
802
|
+
"deps": [],
|
|
426
803
|
"part": "AppSidebar",
|
|
427
804
|
"file": "registry/sidebar.muten",
|
|
428
|
-
"description": "AppSidebar - a collapsible nav panel (SidebarHeader / SidebarGroup / SidebarItem). Named AppSidebar so it never shadows muten's core Sidebar <aside> primitive."
|
|
429
|
-
|
|
805
|
+
"description": "AppSidebar - a collapsible nav panel (SidebarHeader / SidebarGroup / SidebarItem). Named AppSidebar so it never shadows muten's core Sidebar <aside> primitive."
|
|
806
|
+
},
|
|
807
|
+
{
|
|
808
|
+
"name": "skeleton",
|
|
809
|
+
"deps": [],
|
|
810
|
+
"part": "Skeleton",
|
|
811
|
+
"file": "registry/skeleton.muten",
|
|
812
|
+
"description": "Skeleton(shape) sized with class(): the shape of content not yet loaded, with a shimmer. shape: \"\" | circle | pill."
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"name": "slider",
|
|
816
|
+
"deps": [],
|
|
817
|
+
"part": "Slider",
|
|
818
|
+
"file": "registry/slider.muten",
|
|
819
|
+
"component": "Slider",
|
|
820
|
+
"description": "Slider(value, min, max, step, suffix, onInput): Storio's slider with the value bubble."
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
"name": "sortable-behavior",
|
|
824
|
+
"deps": [],
|
|
825
|
+
"part": "SortableBehavior",
|
|
826
|
+
"file": "registry/sortable-behavior.muten",
|
|
827
|
+
"component": "SortableBehavior",
|
|
828
|
+
"description": "The drag of a Sortable (Custom)."
|
|
430
829
|
},
|
|
431
830
|
{
|
|
432
831
|
"name": "sortable-list",
|
|
832
|
+
"deps": [],
|
|
433
833
|
"part": "SortableList",
|
|
434
834
|
"file": "registry/sortable-list.muten",
|
|
435
835
|
"component": "SortableList",
|
|
436
|
-
"description": "Drag rows to reorder (Custom); page owns a comma-joined order."
|
|
437
|
-
"deps": []
|
|
836
|
+
"description": "Drag rows to reorder (Custom); page owns a comma-joined order."
|
|
438
837
|
},
|
|
439
838
|
{
|
|
440
|
-
"name": "
|
|
441
|
-
"
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
"
|
|
839
|
+
"name": "sortable",
|
|
840
|
+
"deps": [
|
|
841
|
+
"sortable-behavior"
|
|
842
|
+
],
|
|
843
|
+
"part": "Sortable",
|
|
844
|
+
"file": "registry/sortable.muten",
|
|
845
|
+
"description": "Sortable(label, onReorder) + SortItem(key, title, price): drag the grip (pointer or arrows); emits the new key order."
|
|
445
846
|
},
|
|
446
847
|
{
|
|
447
|
-
"name": "
|
|
448
|
-
"
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
452
|
-
"
|
|
848
|
+
"name": "spark",
|
|
849
|
+
"deps": [],
|
|
850
|
+
"part": "Spark",
|
|
851
|
+
"file": "registry/spark.muten",
|
|
852
|
+
"component": "Spark",
|
|
853
|
+
"description": "Spark(series, tone): a tiny line for a series (Custom)."
|
|
453
854
|
},
|
|
454
855
|
{
|
|
455
|
-
"name": "
|
|
456
|
-
"
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"
|
|
856
|
+
"name": "spinner",
|
|
857
|
+
"deps": [],
|
|
858
|
+
"part": "Spinner",
|
|
859
|
+
"file": "registry/spinner.muten",
|
|
860
|
+
"description": "A loading indicator (animate-spin loader)."
|
|
460
861
|
},
|
|
461
862
|
{
|
|
462
|
-
"name": "
|
|
463
|
-
"
|
|
464
|
-
"
|
|
465
|
-
"
|
|
466
|
-
"description": "A
|
|
467
|
-
"deps": []
|
|
863
|
+
"name": "split-button",
|
|
864
|
+
"deps": [],
|
|
865
|
+
"part": "SplitButton",
|
|
866
|
+
"file": "registry/split-button.muten",
|
|
867
|
+
"description": "A main action + a caret dropdown; page owns the open bool."
|
|
468
868
|
},
|
|
469
869
|
{
|
|
470
|
-
"name": "
|
|
471
|
-
"
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
"
|
|
475
|
-
"
|
|
870
|
+
"name": "stamp-card",
|
|
871
|
+
"deps": [
|
|
872
|
+
"kit-widget"
|
|
873
|
+
],
|
|
874
|
+
"part": "StampCard",
|
|
875
|
+
"file": "registry/stamp-card.muten",
|
|
876
|
+
"description": "StampCard - a loyalty card: stamps toward a reward (good for any shop)."
|
|
877
|
+
},
|
|
878
|
+
{
|
|
879
|
+
"name": "stat-band",
|
|
880
|
+
"deps": [],
|
|
881
|
+
"part": "StatBand",
|
|
882
|
+
"file": "registry/stat-band.muten",
|
|
883
|
+
"description": "BLOCK: a divided row of KPI stats. Parts: StatBand, Stat(label) - value goes in the slot (Span or Custom CountUp)."
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
"name": "stat",
|
|
887
|
+
"deps": [
|
|
888
|
+
"spark"
|
|
889
|
+
],
|
|
890
|
+
"part": "StatCard",
|
|
891
|
+
"file": "registry/stat.muten",
|
|
892
|
+
"description": "StatCard(label, value, delta, tone, compare, series) { Icon } + StatGrid + Spark: a number for any use."
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
"name": "status-bar",
|
|
896
|
+
"deps": [],
|
|
897
|
+
"part": "StatusBar",
|
|
898
|
+
"file": "registry/status-bar.muten",
|
|
899
|
+
"description": "A thin bottom bar with StatusItem / StatusSpacer."
|
|
476
900
|
},
|
|
477
901
|
{
|
|
478
902
|
"name": "stepper",
|
|
903
|
+
"deps": [],
|
|
479
904
|
"part": "Stepper",
|
|
480
905
|
"file": "registry/stepper.muten",
|
|
481
|
-
"description": "Horizontal or vertical step progress indicator; done steps show a check, the current step is ringed (parts: Stepper, StepperVertical, Step)."
|
|
482
|
-
"deps": []
|
|
906
|
+
"description": "Horizontal or vertical step progress indicator; done steps show a check, the current step is ringed (parts: Stepper, StepperVertical, Step)."
|
|
483
907
|
},
|
|
484
908
|
{
|
|
485
|
-
"name": "
|
|
486
|
-
"
|
|
487
|
-
"
|
|
488
|
-
"
|
|
489
|
-
"
|
|
909
|
+
"name": "store-qr",
|
|
910
|
+
"deps": [],
|
|
911
|
+
"part": "StoreQr",
|
|
912
|
+
"file": "registry/store-qr.muten",
|
|
913
|
+
"component": "StoreQr",
|
|
914
|
+
"description": "StoreQr(url, name, mark): the shop QR with its mark and «Copiar enlace»."
|
|
490
915
|
},
|
|
491
916
|
{
|
|
492
|
-
"name": "
|
|
493
|
-
"
|
|
494
|
-
"
|
|
495
|
-
"
|
|
496
|
-
"
|
|
917
|
+
"name": "swatch",
|
|
918
|
+
"deps": [],
|
|
919
|
+
"part": "SwatchPalette",
|
|
920
|
+
"file": "registry/swatch.muten",
|
|
921
|
+
"description": "A grid of selectable color swatches (Swatch); page owns the selected hex + colors."
|
|
497
922
|
},
|
|
498
923
|
{
|
|
499
|
-
"name": "
|
|
500
|
-
"
|
|
501
|
-
"
|
|
502
|
-
"
|
|
503
|
-
"
|
|
924
|
+
"name": "switch",
|
|
925
|
+
"deps": [],
|
|
926
|
+
"part": "Switch",
|
|
927
|
+
"file": "registry/switch.muten",
|
|
928
|
+
"description": "Switch(on, onToggle, label, size) + SwitchRow(on, onToggle, label, description): Nova switch, the page owns the bool."
|
|
504
929
|
},
|
|
505
930
|
{
|
|
506
|
-
"name": "
|
|
507
|
-
"
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
"
|
|
931
|
+
"name": "table-view",
|
|
932
|
+
"deps": [
|
|
933
|
+
"kit-widget"
|
|
934
|
+
],
|
|
935
|
+
"part": "TableView",
|
|
936
|
+
"file": "registry/table-view.muten",
|
|
937
|
+
"description": "TableView(columns, rows, filters, statuses, bulk, one, many, onAction): the DataTable with filters as data, animated rows, selection, phone sheet, narrow → Items (kit core)."
|
|
511
938
|
},
|
|
512
939
|
{
|
|
513
|
-
"name": "
|
|
514
|
-
"
|
|
515
|
-
"
|
|
516
|
-
"
|
|
517
|
-
"
|
|
940
|
+
"name": "tabs-behavior",
|
|
941
|
+
"deps": [],
|
|
942
|
+
"part": "TabsBehavior",
|
|
943
|
+
"file": "registry/tabs-behavior.muten",
|
|
944
|
+
"component": "TabsBehavior",
|
|
945
|
+
"description": "The sliding indicator + keys of Tabs/SegmentedControl (Custom)."
|
|
518
946
|
},
|
|
519
947
|
{
|
|
520
|
-
"name": "
|
|
521
|
-
"
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
"
|
|
525
|
-
"
|
|
948
|
+
"name": "tabs",
|
|
949
|
+
"deps": [
|
|
950
|
+
"tabs-behavior"
|
|
951
|
+
],
|
|
952
|
+
"part": "Tabs",
|
|
953
|
+
"file": "registry/tabs.muten",
|
|
954
|
+
"description": "Tabs(label, variant) + TabsTrigger(value, current, label, onSelect, count) + TabsContent: sliding indicator, arrow keys; variant \"\" (segmented) | line."
|
|
526
955
|
},
|
|
527
956
|
{
|
|
528
|
-
"name": "
|
|
529
|
-
"
|
|
530
|
-
"
|
|
531
|
-
"
|
|
532
|
-
"
|
|
957
|
+
"name": "tag-input",
|
|
958
|
+
"deps": [],
|
|
959
|
+
"part": "TagInput",
|
|
960
|
+
"file": "registry/tag-input.muten",
|
|
961
|
+
"component": "TagInput",
|
|
962
|
+
"description": "TagInput(value, label, suggestions, max, hint, onChange): chips in/out, height eases, cap with count."
|
|
533
963
|
},
|
|
534
964
|
{
|
|
535
|
-
"name": "
|
|
536
|
-
"
|
|
537
|
-
"
|
|
538
|
-
"
|
|
539
|
-
"
|
|
965
|
+
"name": "text",
|
|
966
|
+
"deps": [],
|
|
967
|
+
"part": "Txt",
|
|
968
|
+
"file": "registry/text.muten",
|
|
969
|
+
"description": "Txt(value, variant): the one text atom. variant: body | title | heading | strong | label | muted | caption."
|
|
540
970
|
},
|
|
541
971
|
{
|
|
542
|
-
"name": "
|
|
543
|
-
"
|
|
544
|
-
"
|
|
545
|
-
"
|
|
546
|
-
"
|
|
972
|
+
"name": "time-field",
|
|
973
|
+
"deps": [],
|
|
974
|
+
"part": "TimeField",
|
|
975
|
+
"file": "registry/time-field.muten",
|
|
976
|
+
"component": "TimeField",
|
|
977
|
+
"description": "TimeField(label, value, from, to, step, onChange): opens the time wheels."
|
|
547
978
|
},
|
|
548
979
|
{
|
|
549
|
-
"name": "
|
|
550
|
-
"
|
|
551
|
-
"
|
|
552
|
-
"
|
|
553
|
-
"
|
|
980
|
+
"name": "timeline",
|
|
981
|
+
"deps": [],
|
|
982
|
+
"part": "Timeline",
|
|
983
|
+
"file": "registry/timeline.muten",
|
|
984
|
+
"description": "Vertical event timeline: a dot on a connector line + title/time/description per item (parts: Timeline, TimelineItem)."
|
|
554
985
|
},
|
|
555
986
|
{
|
|
556
|
-
"name": "
|
|
557
|
-
"
|
|
558
|
-
"
|
|
559
|
-
"
|
|
560
|
-
"
|
|
987
|
+
"name": "toaster",
|
|
988
|
+
"deps": [],
|
|
989
|
+
"part": "Toaster",
|
|
990
|
+
"file": "registry/toaster.muten",
|
|
991
|
+
"component": "Toaster",
|
|
992
|
+
"description": "Fixed toast notifications (Custom). Page bumps a trigger counter to fire one."
|
|
561
993
|
},
|
|
562
994
|
{
|
|
563
|
-
"name": "
|
|
564
|
-
"
|
|
565
|
-
"
|
|
566
|
-
"
|
|
567
|
-
"
|
|
995
|
+
"name": "toggle-group",
|
|
996
|
+
"deps": [],
|
|
997
|
+
"part": "ToggleGroup",
|
|
998
|
+
"file": "registry/toggle-group.muten",
|
|
999
|
+
"description": "Single-select toolbar with ToggleGroupItem; page owns a text state."
|
|
568
1000
|
},
|
|
569
1001
|
{
|
|
570
|
-
"name": "
|
|
571
|
-
"
|
|
572
|
-
"
|
|
573
|
-
"
|
|
574
|
-
"
|
|
1002
|
+
"name": "toggle",
|
|
1003
|
+
"deps": [],
|
|
1004
|
+
"part": "Toggle",
|
|
1005
|
+
"file": "registry/toggle.muten",
|
|
1006
|
+
"description": "A two-state button; the page owns the bool + the toggle action."
|
|
575
1007
|
},
|
|
576
1008
|
{
|
|
577
|
-
"name": "
|
|
578
|
-
"
|
|
579
|
-
"
|
|
580
|
-
"
|
|
581
|
-
"
|
|
1009
|
+
"name": "toolbar",
|
|
1010
|
+
"deps": [],
|
|
1011
|
+
"part": "Toolbar",
|
|
1012
|
+
"file": "registry/toolbar.muten",
|
|
1013
|
+
"description": "A grouped button bar with ToolbarGroup / ToolbarSeparator."
|
|
582
1014
|
},
|
|
583
1015
|
{
|
|
584
|
-
"name": "
|
|
585
|
-
"
|
|
586
|
-
"
|
|
587
|
-
"
|
|
588
|
-
"
|
|
1016
|
+
"name": "tooltip",
|
|
1017
|
+
"deps": [],
|
|
1018
|
+
"part": "Tooltip",
|
|
1019
|
+
"file": "registry/tooltip.muten",
|
|
1020
|
+
"description": "A hover tooltip (pure CSS, no state). The slot is the trigger."
|
|
589
1021
|
},
|
|
590
1022
|
{
|
|
591
|
-
"name": "
|
|
592
|
-
"
|
|
593
|
-
"
|
|
594
|
-
"
|
|
595
|
-
"
|
|
1023
|
+
"name": "tree-view",
|
|
1024
|
+
"deps": [],
|
|
1025
|
+
"part": "TreeView",
|
|
1026
|
+
"file": "registry/tree-view.muten",
|
|
1027
|
+
"component": "TreeView",
|
|
1028
|
+
"description": "A nested folder/file tree (Custom): expandable, selectable, icons + indent."
|
|
596
1029
|
},
|
|
597
1030
|
{
|
|
598
|
-
"name": "
|
|
599
|
-
"
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
"
|
|
1031
|
+
"name": "vector-field",
|
|
1032
|
+
"deps": [
|
|
1033
|
+
"number-field"
|
|
1034
|
+
],
|
|
1035
|
+
"part": "VectorField",
|
|
1036
|
+
"file": "registry/vector-field.muten",
|
|
1037
|
+
"description": "Paired NumberFields (X/Y) for position or size."
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
"name": "virtual-list",
|
|
1041
|
+
"deps": [],
|
|
1042
|
+
"part": "VirtualList",
|
|
1043
|
+
"file": "registry/virtual-list.muten",
|
|
1044
|
+
"component": "VirtualList",
|
|
1045
|
+
"description": "VirtualList(rows, total, rowHeight, label, jump): only visible rows in the DOM."
|
|
1046
|
+
},
|
|
1047
|
+
{
|
|
1048
|
+
"name": "weekly-hours",
|
|
1049
|
+
"deps": [
|
|
1050
|
+
"kit-widget"
|
|
1051
|
+
],
|
|
1052
|
+
"part": "WeeklyHours",
|
|
1053
|
+
"file": "registry/weekly-hours.muten",
|
|
1054
|
+
"description": "WeeklyHours(days, onChange): a switch per day, ranges with the wheel time picker (kit core)."
|
|
1055
|
+
},
|
|
1056
|
+
{
|
|
1057
|
+
"name": "wordline",
|
|
1058
|
+
"deps": [],
|
|
1059
|
+
"part": "WordLine",
|
|
1060
|
+
"file": "registry/wordline.muten",
|
|
1061
|
+
"description": "WordLine - a line of words set as big type: who a product is for, what a shop does. The words sit in a soft grey,"
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
"name": "zoom-control",
|
|
1065
|
+
"deps": [],
|
|
1066
|
+
"part": "ZoomControl",
|
|
1067
|
+
"file": "registry/zoom-control.muten",
|
|
1068
|
+
"description": "A - 100% + zoom widget; page owns the zoom number."
|
|
603
1069
|
}
|
|
604
1070
|
],
|
|
605
1071
|
"classComponents": {
|