@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/AGENTS.md
CHANGED
|
@@ -11,6 +11,53 @@
|
|
|
11
11
|
> **The exact props of every part are in the header comment of `node_modules/@muten/shadcn/registry/<name>.muten` —
|
|
12
12
|
> read it before calling (the one-liners below are the catalog, not the API).**
|
|
13
13
|
|
|
14
|
+
## Nova + the system kit
|
|
15
|
+
|
|
16
|
+
The newer half of the plugin is shadcn's **Nova** style plus a kit of generic, data-driven components (agenda,
|
|
17
|
+
inbox, order board, booking, app shell…). It is 1:1 with the reference artifact the bench page `plugins/playground`
|
|
18
|
+
shows. Setup, on top of the install above:
|
|
19
|
+
|
|
20
|
+
```css
|
|
21
|
+
/* src/styles.css, after globals.css */
|
|
22
|
+
@import "@muten/shadcn/nova.css"; /* shadcn's Nova source, scoped under .style-nova */
|
|
23
|
+
@import "@muten/shadcn/kit.css"; /* muten adapters + the kit's layout and motion */
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<!-- index.html: the style class on <html>, and Geist -->
|
|
28
|
+
<html class="style-nova">
|
|
29
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap">
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
# src/app.muten: once, in the shell (a shell cannot call plugin parts, so the Custom directly)
|
|
34
|
+
shell { Stack { Custom KitLayer class("cx-kit-host") slot } }
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`KitLayer` loads the kit core once: the icon sprite, the tooltip on anything with `data-name`, the Island, the one
|
|
38
|
+
adaptive modal (Dialog wide, Drawer on a phone) the kit's components share, and the wheels. Every component's exact
|
|
39
|
+
props are in the header comment of its `registry/<name>.muten`; the data shapes are documented there too.
|
|
40
|
+
|
|
41
|
+
| Group | Parts |
|
|
42
|
+
|---|---|
|
|
43
|
+
| Atoms | `Btn` (variant, size, tone), `Txt`, `Badge`/`StatusBadge`/`ToneBadge`/`Chip`, `Avatar`/`AvatarGroup`/`Who`, `Kbd`, `Spinner`, `Skeleton`, `Indicator`, `Separator`, `Progress` |
|
|
44
|
+
| Lists and cards | `Item…`, `Price`, `Card…` (with the action zone), `FixedCard`/`Row3`/`EmptyMini`, `StatCard`/`StatGrid`, `Spark` |
|
|
45
|
+
| Controls | `Switch`/`SwitchRow`, `Tabs`, `SegmentedControl`, `ChoiceList`, `Sortable`, `SaveButton`, `NavButton` |
|
|
46
|
+
| Fields | `Field…`, `Input`/`TextArea`, `InputGroup`/`SearchInput`, `MoneyField`, `PhoneField`, `InputOtp`, `PasswordField` |
|
|
47
|
+
| Notices | `Alert`, `Band`, `Island`, `Modal`/`ModalFooter`, `SettingsForm`/`DirtyBar` |
|
|
48
|
+
| Menus and content | `Combobox`, `RowMenu`, `Accordion`, `StoreQr` |
|
|
49
|
+
| Values | `ScaleSlider`, `RangeSlider`, `Slider`, `ColorPicker` |
|
|
50
|
+
| Collections | `TagInput`, `PaginationNav`, `VirtualList`, `Carousel`/`CarouselSlide` |
|
|
51
|
+
| Data | `TableView` (filters as data, chips, bulk), `OrderBoard`, `OrderCards` |
|
|
52
|
+
| Dates and files | `Booking`, `Calendar`, `DateField`, `TimeField`, `ImageUpload` |
|
|
53
|
+
| Structure | `PhoneShell`, `ShareButton`, `AppShell` (Sidebar, page header, detail Sheet, ⌘K) |
|
|
54
|
+
| System | `Agenda`, `NewAppointment`, `Messaging`, `Chatbot`, `BarChart`, `Checklist`, `Plans`, `CardField`, `MemberList`, `PermissionMatrix`, `StampCard`, `Bell`, `Queue`, `WeeklyHours` |
|
|
55
|
+
| Loading | `Skeletons(kind)`, `Loading(busy, kind) { … }`: content-shaped skeletons, a fade when the data lands |
|
|
56
|
+
|
|
57
|
+
Rules the kit keeps: the page owns the state and gets JSON back through actions; functions never travel as data
|
|
58
|
+
(a bot's answers are `{match, text}` rules); a skeleton only shows while there is nothing to show; no native
|
|
59
|
+
`<select>`, the wheels and menus instead.
|
|
60
|
+
|
|
14
61
|
## PLUG-AND-PLAY (zero class props)
|
|
15
62
|
- **Btn**(variant, onClick) { slot } · **LinkBtn**(to, variant) { slot } · **Input**(value, placeholder)
|
|
16
63
|
- **DataTable** @rows columns(a, b) - STYLED BY DEFAULT, no class needed.
|
package/README.md
CHANGED
|
@@ -118,6 +118,53 @@ date picker is **native** — `Chart`/`Range`/`Date` — not a Custom; don't `mu
|
|
|
118
118
|
`caption` (`label` / `dropdown`). `selected` encodes the value (`"yyyy-mm-dd"`, `"from/to"`, or `"d1,d2,..."`).
|
|
119
119
|
A **date picker** is just `Popover { Calendar … }`.
|
|
120
120
|
|
|
121
|
+
## Nova + the system kit
|
|
122
|
+
|
|
123
|
+
The newer half of the plugin is shadcn's **Nova** style plus a kit of generic, data-driven components (agenda,
|
|
124
|
+
inbox, order board, booking, app shell…). It is 1:1 with the reference artifact the bench page `plugins/playground`
|
|
125
|
+
shows. Setup, on top of the install above:
|
|
126
|
+
|
|
127
|
+
```css
|
|
128
|
+
/* src/styles.css, after globals.css */
|
|
129
|
+
@import "@muten/shadcn/nova.css"; /* shadcn's Nova source, scoped under .style-nova */
|
|
130
|
+
@import "@muten/shadcn/kit.css"; /* muten adapters + the kit's layout and motion */
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
```html
|
|
134
|
+
<!-- index.html: the style class on <html>, and Geist -->
|
|
135
|
+
<html class="style-nova">
|
|
136
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap">
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
# src/app.muten: once, in the shell (a shell cannot call plugin parts, so the Custom directly)
|
|
141
|
+
shell { Stack { Custom KitLayer class("cx-kit-host") slot } }
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`KitLayer` loads the kit core once: the icon sprite, the tooltip on anything with `data-name`, the Island, the one
|
|
145
|
+
adaptive modal (Dialog wide, Drawer on a phone) the kit's components share, and the wheels. Every component's exact
|
|
146
|
+
props are in the header comment of its `registry/<name>.muten`; the data shapes are documented there too.
|
|
147
|
+
|
|
148
|
+
| Group | Parts |
|
|
149
|
+
|---|---|
|
|
150
|
+
| Atoms | `Btn` (variant, size, tone), `Txt`, `Badge`/`StatusBadge`/`ToneBadge`/`Chip`, `Avatar`/`AvatarGroup`/`Who`, `Kbd`, `Spinner`, `Skeleton`, `Indicator`, `Separator`, `Progress` |
|
|
151
|
+
| Lists and cards | `Item…`, `Price`, `Card…` (with the action zone), `FixedCard`/`Row3`/`EmptyMini`, `StatCard`/`StatGrid`, `Spark` |
|
|
152
|
+
| Controls | `Switch`/`SwitchRow`, `Tabs`, `SegmentedControl`, `ChoiceList`, `Sortable`, `SaveButton`, `NavButton` |
|
|
153
|
+
| Fields | `Field…`, `Input`/`TextArea`, `InputGroup`/`SearchInput`, `MoneyField`, `PhoneField`, `InputOtp`, `PasswordField` |
|
|
154
|
+
| Notices | `Alert`, `Band`, `Island`, `Modal`/`ModalFooter`, `SettingsForm`/`DirtyBar` |
|
|
155
|
+
| Menus and content | `Combobox`, `RowMenu`, `Accordion`, `StoreQr` |
|
|
156
|
+
| Values | `ScaleSlider`, `RangeSlider`, `Slider`, `ColorPicker` |
|
|
157
|
+
| Collections | `TagInput`, `PaginationNav`, `VirtualList`, `Carousel`/`CarouselSlide` |
|
|
158
|
+
| Data | `TableView` (filters as data, chips, bulk), `OrderBoard`, `OrderCards` |
|
|
159
|
+
| Dates and files | `Booking`, `Calendar`, `DateField`, `TimeField`, `ImageUpload` |
|
|
160
|
+
| Structure | `PhoneShell`, `ShareButton`, `AppShell` (Sidebar, page header, detail Sheet, ⌘K) |
|
|
161
|
+
| System | `Agenda`, `NewAppointment`, `Messaging`, `Chatbot`, `BarChart`, `Checklist`, `Plans`, `CardField`, `MemberList`, `PermissionMatrix`, `StampCard`, `Bell`, `Queue`, `WeeklyHours` |
|
|
162
|
+
| Loading | `Skeletons(kind)`, `Loading(busy, kind) { … }`: content-shaped skeletons, a fade when the data lands |
|
|
163
|
+
|
|
164
|
+
Rules the kit keeps: the page owns the state and gets JSON back through actions; functions never travel as data
|
|
165
|
+
(a bot's answers are `{match, text}` rules); a skeleton only shows while there is nothing to show; no native
|
|
166
|
+
`<select>`, the wheels and menus instead.
|
|
167
|
+
|
|
121
168
|
---
|
|
122
169
|
|
|
123
170
|
## The container / presentational pattern
|