@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.
Files changed (213) hide show
  1. package/AGENTS.md +61 -6
  2. package/README.md +57 -4
  3. package/globals.css +30 -2
  4. package/kit.css +2763 -0
  5. package/motion.css +79 -0
  6. package/nova.css +1387 -0
  7. package/package.json +10 -2
  8. package/registry/accordion.muten +11 -10
  9. package/registry/agenda.js +35 -0
  10. package/registry/agenda.muten +10 -0
  11. package/registry/alert-dialog.muten +9 -12
  12. package/registry/alert.muten +8 -8
  13. package/registry/app-shell.js +9 -0
  14. package/registry/app-shell.muten +12 -0
  15. package/registry/attachment.muten +13 -9
  16. package/registry/avatar.muten +24 -5
  17. package/registry/badge.muten +23 -8
  18. package/registry/band.muten +16 -0
  19. package/registry/bar-chart.muten +7 -0
  20. package/registry/bell.muten +3 -0
  21. package/registry/bento.muten +6 -9
  22. package/registry/booking.js +21 -0
  23. package/registry/booking.muten +13 -0
  24. package/registry/breadcrumb.muten +9 -7
  25. package/registry/button-group.muten +13 -4
  26. package/registry/button.muten +21 -8
  27. package/registry/calendar.js +28 -93
  28. package/registry/calendar.muten +9 -8
  29. package/registry/canvas-viewport.js +12 -5
  30. package/registry/canvas-viewport.muten +9 -9
  31. package/registry/card-field.muten +4 -0
  32. package/registry/card.muten +12 -8
  33. package/registry/carousel.js +5 -36
  34. package/registry/carousel.muten +12 -5
  35. package/registry/chatbot.muten +9 -0
  36. package/registry/checklist.muten +6 -0
  37. package/registry/choice-list.muten +16 -0
  38. package/registry/code.js +14 -12
  39. package/registry/code.muten +6 -7
  40. package/registry/collapsible.muten +14 -10
  41. package/registry/color-picker.js +460 -41
  42. package/registry/color-picker.muten +7 -6
  43. package/registry/combobox.js +5 -0
  44. package/registry/combobox.muten +6 -23
  45. package/registry/command-palette.muten +8 -12
  46. package/registry/command.js +32 -0
  47. package/registry/command.muten +32 -11
  48. package/registry/context-menu.muten +9 -8
  49. package/registry/count-up.muten +5 -10
  50. package/registry/date-field.js +5 -0
  51. package/registry/date-field.muten +7 -0
  52. package/registry/device-frame.muten +8 -0
  53. package/registry/dialog.muten +6 -12
  54. package/registry/dirty-bar.js +19 -0
  55. package/registry/dirty-bar.muten +13 -0
  56. package/registry/drawer.muten +6 -11
  57. package/registry/dropdown-menu.muten +37 -13
  58. package/registry/empty.muten +11 -7
  59. package/registry/feature-grid.muten +10 -12
  60. package/registry/feature-rows.muten +12 -8
  61. package/registry/field-behavior.js +33 -0
  62. package/registry/field-behavior.muten +9 -0
  63. package/registry/field.muten +26 -7
  64. package/registry/file-input.js +36 -21
  65. package/registry/file-input.muten +8 -7
  66. package/registry/fixed-card.muten +25 -0
  67. package/registry/folder-picker.js +13 -15
  68. package/registry/folder-picker.muten +5 -8
  69. package/registry/gradient-blinds.muten +6 -13
  70. package/registry/hover-card.muten +7 -9
  71. package/registry/image-upload.js +5 -0
  72. package/registry/image-upload.muten +8 -0
  73. package/registry/indicator.muten +5 -0
  74. package/registry/input-group.muten +27 -4
  75. package/registry/input-otp.js +8 -35
  76. package/registry/input-otp.muten +6 -6
  77. package/registry/input.muten +8 -7
  78. package/registry/inspector.muten +13 -15
  79. package/registry/island.js +7 -0
  80. package/registry/island.muten +5 -0
  81. package/registry/item.muten +20 -7
  82. package/registry/kbd.muten +3 -3
  83. package/registry/kit/board.js +300 -0
  84. package/registry/kit/collections.js +148 -0
  85. package/registry/kit/core.js +989 -0
  86. package/registry/kit/dates.js +106 -0
  87. package/registry/kit/menus.js +90 -0
  88. package/registry/kit/overlays.js +114 -0
  89. package/registry/kit/paint.js +211 -0
  90. package/registry/kit/qrcode.js +2291 -0
  91. package/registry/kit/structure.js +393 -0
  92. package/registry/kit/table.js +198 -0
  93. package/registry/kit/values.js +179 -0
  94. package/registry/kit-layer.js +2 -0
  95. package/registry/kit-layer.muten +5 -0
  96. package/registry/kit-skeleton.js +24 -0
  97. package/registry/kit-skeleton.muten +16 -0
  98. package/registry/kit-widget.js +79 -0
  99. package/registry/kit-widget.muten +4 -0
  100. package/registry/link-btn.muten +9 -7
  101. package/registry/live-stack.js +29 -0
  102. package/registry/live-stack.muten +7 -0
  103. package/registry/logo-cloud.muten +6 -11
  104. package/registry/member-list.muten +6 -0
  105. package/registry/menubar.muten +10 -14
  106. package/registry/message-scroller.js +12 -0
  107. package/registry/message-scroller.muten +8 -4
  108. package/registry/message.muten +27 -10
  109. package/registry/messaging.muten +11 -0
  110. package/registry/modal-behavior.js +56 -0
  111. package/registry/modal-behavior.muten +4 -0
  112. package/registry/modal.muten +29 -0
  113. package/registry/money-field.js +5 -0
  114. package/registry/money-field.muten +7 -0
  115. package/registry/nav-button.muten +14 -0
  116. package/registry/navigation-menu.muten +16 -14
  117. package/registry/navpill.muten +15 -9
  118. package/registry/new-appointment.js +8 -0
  119. package/registry/new-appointment.muten +10 -0
  120. package/registry/number-field.js +34 -24
  121. package/registry/number-field.muten +8 -6
  122. package/registry/order-board.js +6 -0
  123. package/registry/order-board.muten +21 -0
  124. package/registry/overlay-behavior.js +13 -0
  125. package/registry/overlay-behavior.muten +4 -0
  126. package/registry/pagination-nav.js +6 -0
  127. package/registry/pagination-nav.muten +8 -0
  128. package/registry/pagination.muten +12 -9
  129. package/registry/password-field.muten +3 -0
  130. package/registry/permission-matrix.muten +6 -0
  131. package/registry/phone-field.js +5 -0
  132. package/registry/phone-field.muten +7 -0
  133. package/registry/phone-shell.js +7 -0
  134. package/registry/phone-shell.muten +9 -0
  135. package/registry/pill.muten +6 -5
  136. package/registry/plans.muten +4 -0
  137. package/registry/popover.muten +16 -9
  138. package/registry/pricing.muten +21 -21
  139. package/registry/progress.muten +5 -5
  140. package/registry/queue.muten +3 -0
  141. package/registry/radio-group.muten +16 -8
  142. package/registry/range-slider.js +9 -24
  143. package/registry/range-slider.muten +4 -5
  144. package/registry/resizable.js +34 -27
  145. package/registry/resizable.muten +16 -5
  146. package/registry/roving-behavior.js +16 -0
  147. package/registry/roving-behavior.muten +3 -0
  148. package/registry/row-menu.js +5 -0
  149. package/registry/row-menu.muten +5 -0
  150. package/registry/save-button.muten +11 -0
  151. package/registry/scale-slider.js +7 -0
  152. package/registry/scale-slider.muten +9 -0
  153. package/registry/scroll-area.muten +8 -4
  154. package/registry/segmented-control.muten +8 -8
  155. package/registry/separator.muten +3 -3
  156. package/registry/share-button.js +7 -0
  157. package/registry/share-button.muten +10 -0
  158. package/registry/sheet.muten +6 -10
  159. package/registry/sidebar.muten +23 -15
  160. package/registry/skeleton.muten +6 -4
  161. package/registry/slider.js +73 -27
  162. package/registry/slider.muten +6 -6
  163. package/registry/sortable-behavior.js +43 -0
  164. package/registry/sortable-behavior.muten +2 -0
  165. package/registry/sortable-list.js +10 -26
  166. package/registry/sortable-list.muten +6 -7
  167. package/registry/sortable.muten +15 -0
  168. package/registry/spark.js +14 -0
  169. package/registry/spark.muten +3 -0
  170. package/registry/spinner.muten +4 -3
  171. package/registry/split-button.muten +12 -10
  172. package/registry/stamp-card.muten +7 -0
  173. package/registry/stat-band.muten +6 -9
  174. package/registry/stat.muten +23 -0
  175. package/registry/status-bar.muten +7 -6
  176. package/registry/stepper.muten +17 -14
  177. package/registry/store-qr.js +5 -0
  178. package/registry/store-qr.muten +5 -0
  179. package/registry/swatch.muten +8 -8
  180. package/registry/switch.muten +14 -6
  181. package/registry/table-view.muten +10 -0
  182. package/registry/tabs-behavior.js +27 -0
  183. package/registry/tabs-behavior.muten +3 -0
  184. package/registry/tabs.muten +19 -10
  185. package/registry/tag-input.js +4 -27
  186. package/registry/tag-input.muten +6 -6
  187. package/registry/text.muten +7 -0
  188. package/registry/time-field.js +5 -0
  189. package/registry/time-field.muten +6 -0
  190. package/registry/timeline.muten +14 -14
  191. package/registry/toaster.js +34 -22
  192. package/registry/toaster.muten +10 -8
  193. package/registry/toggle-group.muten +11 -6
  194. package/registry/toggle.muten +8 -5
  195. package/registry/toolbar.muten +11 -6
  196. package/registry/tooltip.muten +6 -9
  197. package/registry/tree-view.js +27 -7
  198. package/registry/tree-view.muten +8 -13
  199. package/registry/vector-field.muten +9 -8
  200. package/registry/virtual-list.js +5 -0
  201. package/registry/virtual-list.muten +6 -0
  202. package/registry/weekly-hours.muten +4 -0
  203. package/registry/wordline.muten +6 -0
  204. package/registry/zoom-control.muten +9 -9
  205. package/registry.json +868 -424
  206. package/themes/bloom.css +53 -0
  207. package/themes/editorial.css +65 -0
  208. package/themes/noir.css +54 -0
  209. package/registry/chart.js +0 -34
  210. package/registry/chart.muten +0 -7
  211. package/registry/checkbox.muten +0 -8
  212. package/registry/context-menu.js +0 -34
  213. 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
+ }