@muten/shadcn 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +61 -6
- package/README.md +57 -4
- package/globals.css +30 -2
- package/kit.css +2763 -0
- package/motion.css +79 -0
- package/nova.css +1387 -0
- package/package.json +10 -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 +393 -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 +868 -424
- package/themes/bloom.css +53 -0
- package/themes/editorial.css +65 -0
- package/themes/noir.css +54 -0
- package/registry/chart.js +0 -34
- package/registry/chart.muten +0 -7
- package/registry/checkbox.muten +0 -8
- package/registry/context-menu.js +0 -34
- package/registry/select.muten +0 -21
package/motion.css
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* @muten/shadcn/motion.css — a small, tasteful set of entrance + hover animations, as CLASSES the AI can just
|
|
2
|
+
apply (`class("animate-rise")`). CSS-only, plays once on mount, and fully disabled under reduced-motion.
|
|
3
|
+
Import after globals: @import "@muten/shadcn/globals.css"; @import "@muten/shadcn/motion.css";
|
|
4
|
+
|
|
5
|
+
Vocabulary:
|
|
6
|
+
animate-fade-in — fade in
|
|
7
|
+
animate-rise — fade + slide up (the default for hero copy, cards, sections)
|
|
8
|
+
animate-scale-in — fade + subtle scale (badges, images, pop-ins)
|
|
9
|
+
animate-blur-in — fade + un-blur (editorial hero images / big type)
|
|
10
|
+
stagger — on a CONTAINER: its direct children rise in sequence (feature grids, lists)
|
|
11
|
+
hover-lift — on a card/link: lifts + deepens shadow on hover
|
|
12
|
+
hover-zoom — on an image WRAPPER (add `overflow-hidden`): the <img> scales gently on hover
|
|
13
|
+
words — on a HEADLINE whose words are each a Span: they rise in one after another, un-blurring
|
|
14
|
+
reveal — rises in as it scrolls into view (scroll-driven); where unsupported it is simply there
|
|
15
|
+
reveal-stagger — on a CONTAINER: its children reveal in sequence as they scroll in
|
|
16
|
+
drift — on a TRACK holding its items twice: it slides by itself forever, paused under the pointer
|
|
17
|
+
photo-in — on an image WRAPPER: the picture settles from a soft zoom as it appears
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
@keyframes mu-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
|
21
|
+
@keyframes mu-rise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
|
|
22
|
+
@keyframes mu-scale-in{ from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: none; } }
|
|
23
|
+
@keyframes mu-blur-in { from { opacity: 0; filter: blur(12px); transform: scale(1.02); } to { opacity: 1; filter: blur(0); transform: none; } }
|
|
24
|
+
|
|
25
|
+
.animate-fade-in { animation: mu-fade-in 0.6s var(--mu-ease, cubic-bezier(0.16,1,0.3,1)) both; }
|
|
26
|
+
.animate-rise { animation: mu-rise 0.7s var(--mu-ease, cubic-bezier(0.16,1,0.3,1)) both; }
|
|
27
|
+
.animate-scale-in { animation: mu-scale-in 0.6s var(--mu-ease, cubic-bezier(0.16,1,0.3,1)) both; }
|
|
28
|
+
.animate-blur-in { animation: mu-blur-in 0.9s var(--mu-ease, cubic-bezier(0.16,1,0.3,1)) both; }
|
|
29
|
+
|
|
30
|
+
/* Stagger: children rise in, each ~80ms after the last (up to 12; more just share the last delay). */
|
|
31
|
+
.stagger > * { animation: mu-rise 0.7s var(--mu-ease, cubic-bezier(0.16,1,0.3,1)) both; }
|
|
32
|
+
.stagger > *:nth-child(1) { animation-delay: 0.00s; }
|
|
33
|
+
.stagger > *:nth-child(2) { animation-delay: 0.08s; }
|
|
34
|
+
.stagger > *:nth-child(3) { animation-delay: 0.16s; }
|
|
35
|
+
.stagger > *:nth-child(4) { animation-delay: 0.24s; }
|
|
36
|
+
.stagger > *:nth-child(5) { animation-delay: 0.32s; }
|
|
37
|
+
.stagger > *:nth-child(6) { animation-delay: 0.40s; }
|
|
38
|
+
.stagger > *:nth-child(7) { animation-delay: 0.48s; }
|
|
39
|
+
.stagger > *:nth-child(8) { animation-delay: 0.56s; }
|
|
40
|
+
.stagger > *:nth-child(9) { animation-delay: 0.64s; }
|
|
41
|
+
.stagger > *:nth-child(10) { animation-delay: 0.72s; }
|
|
42
|
+
.stagger > *:nth-child(11) { animation-delay: 0.80s; }
|
|
43
|
+
.stagger > *:nth-child(n+12) { animation-delay: 0.88s; }
|
|
44
|
+
|
|
45
|
+
/* Words: a headline that writes itself in, one word after another (wrap each word in a Span). */
|
|
46
|
+
@keyframes mu-word { from { opacity: 0; transform: translateY(0.32em); filter: blur(8px); } to { opacity: 1; transform: none; filter: blur(0); } }
|
|
47
|
+
.words > * { display: inline-block; animation: mu-word 0.9s var(--mu-ease, cubic-bezier(0.23,1,0.32,1)) both; }
|
|
48
|
+
.words > *:nth-child(1) { animation-delay: 0.05s; } .words > *:nth-child(2) { animation-delay: 0.13s; }
|
|
49
|
+
.words > *:nth-child(3) { animation-delay: 0.21s; } .words > *:nth-child(4) { animation-delay: 0.29s; }
|
|
50
|
+
.words > *:nth-child(5) { animation-delay: 0.37s; } .words > *:nth-child(6) { animation-delay: 0.45s; }
|
|
51
|
+
.words > *:nth-child(n+7) { animation-delay: 0.53s; }
|
|
52
|
+
|
|
53
|
+
/* Reveal: things rise in as they scroll into view, tied to the scroll itself (no script). */
|
|
54
|
+
@supports (animation-timeline: view()) {
|
|
55
|
+
.reveal, .reveal-stagger > * { animation: mu-rise linear both; animation-timeline: view(); animation-range: entry 5% entry 55%; }
|
|
56
|
+
.reveal-stagger > *:nth-child(2) { animation-range: entry 10% entry 62%; }
|
|
57
|
+
.reveal-stagger > *:nth-child(3) { animation-range: entry 15% entry 69%; }
|
|
58
|
+
.reveal-stagger > *:nth-child(n+4) { animation-range: entry 20% entry 76%; }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Drift: a strip that slides by itself (put its items twice, so it loops without a seam). */
|
|
62
|
+
@keyframes mu-drift { to { transform: translateX(-50%); } }
|
|
63
|
+
.drift { display: flex; width: max-content; animation: mu-drift var(--drift, 60s) linear infinite; }
|
|
64
|
+
.drift:hover { animation-play-state: paused; }
|
|
65
|
+
|
|
66
|
+
/* Photo-in: a picture settles from a soft zoom as it appears. */
|
|
67
|
+
@keyframes mu-photo { from { opacity: 0; transform: scale(1.06); filter: blur(6px); } to { opacity: 1; transform: none; filter: blur(0); } }
|
|
68
|
+
.photo-in { overflow: hidden; } .photo-in img { animation: mu-photo 1.2s var(--mu-ease, cubic-bezier(0.23,1,0.32,1)) both; }
|
|
69
|
+
|
|
70
|
+
/* Hover affordances. */
|
|
71
|
+
.hover-lift { transition: transform var(--mu-motion, 200ms) var(--mu-ease, cubic-bezier(0.16,1,0.3,1)), box-shadow var(--mu-motion, 200ms) ease; }
|
|
72
|
+
.hover-lift:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft, 0 12px 32px -12px rgb(0 0 0 / 0.25)); }
|
|
73
|
+
.hover-zoom img { transition: transform 0.5s var(--mu-ease, cubic-bezier(0.16,1,0.3,1)); }
|
|
74
|
+
.hover-zoom:hover img { transform: scale(1.05); }
|
|
75
|
+
|
|
76
|
+
@media (prefers-reduced-motion: reduce) {
|
|
77
|
+
.animate-fade-in, .animate-rise, .animate-scale-in, .animate-blur-in, .stagger > *, .words > *, .reveal, .reveal-stagger > *, .drift, .photo-in img { animation: none !important; }
|
|
78
|
+
.hover-lift, .hover-zoom img { transition: none !important; }
|
|
79
|
+
}
|