motion-ui-skill 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (886) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +637 -0
  3. package/SKILL.md +529 -0
  4. package/agents/openai.yaml +8 -0
  5. package/bin/index.mjs +242 -0
  6. package/bin/installer.mjs +457 -0
  7. package/bin/updater.mjs +207 -0
  8. package/catalog.json +8120 -0
  9. package/components/agents/agent-activity/activity-row.tsx +242 -0
  10. package/components/agents/agent-activity/index.tsx +287 -0
  11. package/components/agents/agent-activity/types.ts +106 -0
  12. package/components/agents/agent-code.tsx +171 -0
  13. package/components/agents/agent-disclosure.tsx +55 -0
  14. package/components/agents/ai-sidebar.tsx +981 -0
  15. package/components/agents/approval-card/index.tsx +467 -0
  16. package/components/agents/approval-card/types.ts +56 -0
  17. package/components/agents/chat-app.tsx +97 -0
  18. package/components/agents/citations.tsx +288 -0
  19. package/components/agents/code-block.tsx +202 -0
  20. package/components/agents/file-diff.tsx +288 -0
  21. package/components/agents/image-generation.tsx +388 -0
  22. package/components/agents/loading-states/agent-progress.tsx +105 -0
  23. package/components/agents/loading-states/index.ts +13 -0
  24. package/components/agents/loading-states/reasoning-text.tsx +224 -0
  25. package/components/agents/loading-states/thinking-shimmer.tsx +27 -0
  26. package/components/agents/message-bubble.tsx +369 -0
  27. package/components/agents/message-context.tsx +9 -0
  28. package/components/agents/message-scroller.tsx +487 -0
  29. package/components/agents/message.tsx +272 -0
  30. package/components/agents/prompt-input.tsx +327 -0
  31. package/components/agents/streaming-response.tsx +263 -0
  32. package/components/agents/todo-list.tsx +387 -0
  33. package/components/agents/tool-approval.tsx +276 -0
  34. package/components/agents/tool-result.tsx +352 -0
  35. package/components/app/icons.tsx +19 -0
  36. package/components/audio/music-player-card.tsx +146 -0
  37. package/components/audio/music-playlist-card.tsx +172 -0
  38. package/components/audio/now-playing-bar.tsx +116 -0
  39. package/components/background-gradient/arc-bands-background.tsx +54 -0
  40. package/components/background-gradient/aurora-background.tsx +49 -0
  41. package/components/background-gradient/cherry-petal-background.tsx +50 -0
  42. package/components/background-gradient/coral-glow-background.tsx +47 -0
  43. package/components/background-gradient/dark-arc-bands-background.tsx +52 -0
  44. package/components/background-gradient/dark-aurora-background.tsx +52 -0
  45. package/components/background-gradient/dark-carbon-spotlight-background.tsx +47 -0
  46. package/components/background-gradient/dark-ember-background.tsx +47 -0
  47. package/components/background-gradient/dark-ink-field-background.tsx +46 -0
  48. package/components/background-gradient/dark-midnight-mesh-background.tsx +61 -0
  49. package/components/background-gradient/dark-rose-noir-background.tsx +52 -0
  50. package/components/background-gradient/dark-teal-depth-background.tsx +52 -0
  51. package/components/background-gradient/frost-mesh-background.tsx +56 -0
  52. package/components/background-gradient/halftone-pop-background.tsx +52 -0
  53. package/components/background-gradient/honey-ember-background.tsx +47 -0
  54. package/components/background-gradient/ink-wash-background.tsx +49 -0
  55. package/components/background-gradient/linen-weave-background.tsx +47 -0
  56. package/components/background-gradient/mint-lagoon-background.tsx +47 -0
  57. package/components/background-gradient/paper-fold-background.tsx +52 -0
  58. package/components/background-gradient/rain-prism-background.tsx +52 -0
  59. package/components/background-gradient/sand-drift-background.tsx +47 -0
  60. package/components/background-gradient/soft-spotlight-background.tsx +47 -0
  61. package/components/background-gradient/sunrise-horizon-background.tsx +51 -0
  62. package/components/background-gradient/sunset-bloom-background.tsx +47 -0
  63. package/components/background-gradient/terrazzo-fragment-background.tsx +53 -0
  64. package/components/background-gradient/tropical-tide-background.tsx +47 -0
  65. package/components/background-pattern/diagonal-box-pattern.tsx +29 -0
  66. package/components/background-pattern/dot-grid-pattern.tsx +29 -0
  67. package/components/background-pattern/fine-grain-pattern.tsx +39 -0
  68. package/components/background-pattern/graph-paper-pattern.tsx +29 -0
  69. package/components/background-pattern/line-grid-pattern.tsx +39 -0
  70. package/components/background-pattern/reverse-diagonal-box-pattern.tsx +30 -0
  71. package/components/buttons/add-to-cart-button.tsx +190 -0
  72. package/components/buttons/bookmark-save-button.tsx +105 -0
  73. package/components/buttons/cinder-latch-button.tsx +80 -0
  74. package/components/buttons/copy-button.tsx +155 -0
  75. package/components/buttons/depth-outline-button.tsx +72 -0
  76. package/components/buttons/dimple-switch.tsx +114 -0
  77. package/components/buttons/download-button.tsx +186 -0
  78. package/components/buttons/follow-button.tsx +98 -0
  79. package/components/buttons/hold-to-delete-button.tsx +205 -0
  80. package/components/buttons/inset-button.tsx +82 -0
  81. package/components/buttons/like-button.tsx +135 -0
  82. package/components/buttons/linen-tab-button.tsx +92 -0
  83. package/components/buttons/prism-depth-button.tsx +90 -0
  84. package/components/buttons/quantity-stepper-button.tsx +104 -0
  85. package/components/buttons/segmented-toggle-button.tsx +134 -0
  86. package/components/buttons/sheen-pill-button.tsx +127 -0
  87. package/components/buttons/slate-chip-switch.tsx +94 -0
  88. package/components/buttons/slide-to-confirm-button.tsx +163 -0
  89. package/components/buttons/soft-pill-button.tsx +86 -0
  90. package/components/buttons/soft-ui-button.tsx +59 -0
  91. package/components/buttons/three-d-button.tsx +99 -0
  92. package/components/buttons/three-d-icon-button.tsx +88 -0
  93. package/components/calendar/booking-slot-calendar.tsx +315 -0
  94. package/components/calendar/date-range-picker-card.tsx +216 -0
  95. package/components/calendar/event-countdown-card.tsx +105 -0
  96. package/components/calendar/month-picker-calendar.tsx +183 -0
  97. package/components/calendar/week-strip-calendar.tsx +182 -0
  98. package/components/contact/copy-email.tsx +94 -0
  99. package/components/docks/Icons.tsx +222 -0
  100. package/components/docks/app-dock.tsx +111 -0
  101. package/components/docks/editor-tool-dock.tsx +113 -0
  102. package/components/docks/mac-dock.tsx +144 -0
  103. package/components/docks/presence-dock.tsx +178 -0
  104. package/components/docks/spotlight-bar.tsx +188 -0
  105. package/components/dropdowns/file-menu-dropdown.tsx +192 -0
  106. package/components/dropdowns/filter-sort-dropdown.tsx +189 -0
  107. package/components/dropdowns/kebab-actions-dropdown.tsx +195 -0
  108. package/components/dropdowns/notification-dropdown.tsx +235 -0
  109. package/components/dropdowns/share-menu-dropdown.tsx +197 -0
  110. package/components/dropdowns/user-menu-dropdown.tsx +251 -0
  111. package/components/dropdowns/workspace-switcher-dropdown.tsx +248 -0
  112. package/components/event/event-ticket-card.tsx +116 -0
  113. package/components/files/ink-stamp-document-card.tsx +88 -0
  114. package/components/files/stacked-folder-card.tsx +176 -0
  115. package/components/folder/folder-tab-card.tsx +123 -0
  116. package/components/forms/contact-form.tsx +417 -0
  117. package/components/forms/forgot-password-form.tsx +264 -0
  118. package/components/forms/login-form.tsx +342 -0
  119. package/components/forms/newsletter-form.tsx +212 -0
  120. package/components/forms/signup-form.tsx +487 -0
  121. package/components/frames/circle-cut-frame.tsx +198 -0
  122. package/components/frames/hard-shadow-polaroid-frame.tsx +158 -0
  123. package/components/frames/sticky-note-polaroid-frame.tsx +230 -0
  124. package/components/frames/transform-box-frame.tsx +287 -0
  125. package/components/frames/transform-plus-frame.tsx +308 -0
  126. package/components/gallery/film-strip-card.tsx +103 -0
  127. package/components/gallery/gallery-grid-card.tsx +106 -0
  128. package/components/gallery/gallery-wall-card.tsx +71 -0
  129. package/components/gallery/glass-overlay-image-card.tsx +156 -0
  130. package/components/gallery/museum-placard-card.tsx +105 -0
  131. package/components/gallery/photo-album-card.tsx +114 -0
  132. package/components/gallery/photo-contact-sheet-card.tsx +71 -0
  133. package/components/gallery/polaroid-image-card.tsx +81 -0
  134. package/components/gallery/slow-living-polaroid-card.tsx +88 -0
  135. package/components/gallery/stamp-postcard-card.tsx +78 -0
  136. package/components/inputs/checkbox-field-input.tsx +148 -0
  137. package/components/inputs/combobox-field-input.tsx +466 -0
  138. package/components/inputs/date-field-input.tsx +472 -0
  139. package/components/inputs/file-upload-field-input.tsx +578 -0
  140. package/components/inputs/floating-label-field-input.tsx +206 -0
  141. package/components/inputs/input-group-field.tsx +132 -0
  142. package/components/inputs/password-field-input.tsx +125 -0
  143. package/components/inputs/phone-field-input.tsx +157 -0
  144. package/components/inputs/radio-group-field-input.tsx +220 -0
  145. package/components/inputs/search-input.tsx +163 -0
  146. package/components/inputs/select-field-input.tsx +416 -0
  147. package/components/inputs/switch-field-input.tsx +179 -0
  148. package/components/inputs/text-field-input.tsx +89 -0
  149. package/components/inputs/textarea-field-input.tsx +152 -0
  150. package/components/loaders/apple-hello-loader.tsx +86 -0
  151. package/components/loaders/spin-loader.tsx +51 -0
  152. package/components/loaders/text-loader.tsx +148 -0
  153. package/components/mockups/apple-ipod-mockup-card.tsx +155 -0
  154. package/components/mockups/apple-watch-mockup-card.tsx +278 -0
  155. package/components/mockups/browser-mockup-card.tsx +109 -0
  156. package/components/mockups/laptop-mockup-card.tsx +118 -0
  157. package/components/mockups/phone-mockup-card.tsx +210 -0
  158. package/components/mockups/tablet-mockup-card.tsx +212 -0
  159. package/components/motion/action-sheet.tsx +218 -0
  160. package/components/motion/action-swap-roll.tsx +32 -0
  161. package/components/motion/action-swap.tsx +340 -0
  162. package/components/motion/adaptive-stepper.tsx +442 -0
  163. package/components/motion/animated-badge.tsx +213 -0
  164. package/components/motion/animated-number.tsx +50 -0
  165. package/components/motion/animated-sidebar.tsx +1174 -0
  166. package/components/motion/animated-toast-stack.tsx +503 -0
  167. package/components/motion/aspect-ratio.tsx +55 -0
  168. package/components/motion/attachment-upload.tsx +1080 -0
  169. package/components/motion/audio-player.tsx +266 -0
  170. package/components/motion/autocomplete.tsx +183 -0
  171. package/components/motion/availability-scheduler/copy-menu.tsx +119 -0
  172. package/components/motion/availability-scheduler/day-row.tsx +231 -0
  173. package/components/motion/availability-scheduler/icon-button.tsx +46 -0
  174. package/components/motion/availability-scheduler/index.tsx +154 -0
  175. package/components/motion/availability-scheduler/time-select.tsx +49 -0
  176. package/components/motion/availability-scheduler/types.ts +189 -0
  177. package/components/motion/avatar-group.tsx +154 -0
  178. package/components/motion/bloom-menu.tsx +216 -0
  179. package/components/motion/bottom-sheet.tsx +249 -0
  180. package/components/motion/bounce-sidebar.tsx +266 -0
  181. package/components/motion/bouncy-accordion.tsx +325 -0
  182. package/components/motion/breadcrumb.tsx +122 -0
  183. package/components/motion/button/base.tsx +189 -0
  184. package/components/motion/button/index.tsx +13 -0
  185. package/components/motion/button/magnetic.tsx +25 -0
  186. package/components/motion/button/metallic.tsx +100 -0
  187. package/components/motion/button/stateful.tsx +237 -0
  188. package/components/motion/card-folder.tsx +345 -0
  189. package/components/motion/card-resize.tsx +229 -0
  190. package/components/motion/cascader.tsx +279 -0
  191. package/components/motion/center-morph-modal.tsx +366 -0
  192. package/components/motion/checkbox.tsx +123 -0
  193. package/components/motion/chip.tsx +121 -0
  194. package/components/motion/chromatic-text-reveal.tsx +203 -0
  195. package/components/motion/collapsible.tsx +108 -0
  196. package/components/motion/color-picker.tsx +206 -0
  197. package/components/motion/combobox/content.tsx +163 -0
  198. package/components/motion/combobox/context.tsx +359 -0
  199. package/components/motion/combobox/list.tsx +222 -0
  200. package/components/motion/combobox/trigger.tsx +191 -0
  201. package/components/motion/combobox/use-active-option.ts +130 -0
  202. package/components/motion/combobox.tsx +33 -0
  203. package/components/motion/command-palette.tsx +381 -0
  204. package/components/motion/confetti.tsx +128 -0
  205. package/components/motion/context-menu.tsx +790 -0
  206. package/components/motion/copy-button.tsx +103 -0
  207. package/components/motion/cylinder-carousel.tsx +459 -0
  208. package/components/motion/date-range-picker.tsx +218 -0
  209. package/components/motion/digit-swap.tsx +125 -0
  210. package/components/motion/dock.tsx +113 -0
  211. package/components/motion/drawer.tsx +108 -0
  212. package/components/motion/dynamic-island.tsx +221 -0
  213. package/components/motion/error-shake.tsx +66 -0
  214. package/components/motion/event-calendar.tsx +224 -0
  215. package/components/motion/expandable-action-bar.tsx +412 -0
  216. package/components/motion/expandable-control.tsx +254 -0
  217. package/components/motion/expandable-tabs.tsx +444 -0
  218. package/components/motion/expanding-arrow-button.tsx +171 -0
  219. package/components/motion/feedback-widget.tsx +473 -0
  220. package/components/motion/file-tree.tsx +429 -0
  221. package/components/motion/file-upload.tsx +606 -0
  222. package/components/motion/filter-builder.tsx +283 -0
  223. package/components/motion/frame.tsx +116 -0
  224. package/components/motion/gantt.tsx +156 -0
  225. package/components/motion/glow-button.tsx +101 -0
  226. package/components/motion/haptic-pressable.tsx +107 -0
  227. package/components/motion/hold-action-button.tsx +279 -0
  228. package/components/motion/hover-card.tsx +118 -0
  229. package/components/motion/icon-stack.tsx +138 -0
  230. package/components/motion/infinite-masonry.tsx +349 -0
  231. package/components/motion/input.tsx +242 -0
  232. package/components/motion/kanban.tsx +255 -0
  233. package/components/motion/kbd.tsx +127 -0
  234. package/components/motion/knockout-bracket.tsx +909 -0
  235. package/components/motion/knockout-wheel.tsx +1112 -0
  236. package/components/motion/liquid.tsx +351 -0
  237. package/components/motion/loader.tsx +616 -0
  238. package/components/motion/magnet-dock.tsx +117 -0
  239. package/components/motion/magnetic.tsx +50 -0
  240. package/components/motion/marquee.tsx +66 -0
  241. package/components/motion/metric-card.tsx +116 -0
  242. package/components/motion/morphing-modal.tsx +160 -0
  243. package/components/motion/morphing-search.tsx +643 -0
  244. package/components/motion/morphing-tabs.tsx +940 -0
  245. package/components/motion/multi-select/content.tsx +164 -0
  246. package/components/motion/multi-select/context.tsx +381 -0
  247. package/components/motion/multi-select/index.tsx +33 -0
  248. package/components/motion/multi-select/list.tsx +239 -0
  249. package/components/motion/multi-select/trigger.tsx +262 -0
  250. package/components/motion/not-found/glitch.tsx +107 -0
  251. package/components/motion/not-found/index.tsx +11 -0
  252. package/components/motion/not-found/magnetic.tsx +57 -0
  253. package/components/motion/not-found/shared.tsx +96 -0
  254. package/components/motion/not-found/spotlight.tsx +86 -0
  255. package/components/motion/not-found/stacked.tsx +77 -0
  256. package/components/motion/not-found/terminal.tsx +83 -0
  257. package/components/motion/notification-stack.tsx +380 -0
  258. package/components/motion/number-field.tsx +178 -0
  259. package/components/motion/number-ticker.tsx +185 -0
  260. package/components/motion/otp-input.tsx +392 -0
  261. package/components/motion/overflow-actions.tsx +375 -0
  262. package/components/motion/page-transition.tsx +92 -0
  263. package/components/motion/pagination.tsx +163 -0
  264. package/components/motion/parallax.tsx +64 -0
  265. package/components/motion/password-input.tsx +165 -0
  266. package/components/motion/phone-input.tsx +181 -0
  267. package/components/motion/popover-morph.tsx +317 -0
  268. package/components/motion/popover-position.ts +86 -0
  269. package/components/motion/popover.tsx +694 -0
  270. package/components/motion/prediction-market.tsx +682 -0
  271. package/components/motion/preview-rail.tsx +390 -0
  272. package/components/motion/progress-ring.tsx +115 -0
  273. package/components/motion/project-folder.tsx +418 -0
  274. package/components/motion/pull-to-refresh.tsx +522 -0
  275. package/components/motion/radio.tsx +148 -0
  276. package/components/motion/range-slider.tsx +93 -0
  277. package/components/motion/rating.tsx +171 -0
  278. package/components/motion/reorder-grid.tsx +123 -0
  279. package/components/motion/resizable-panel.tsx +160 -0
  280. package/components/motion/scroll-progress.tsx +127 -0
  281. package/components/motion/scroll-reveal.tsx +60 -0
  282. package/components/motion/scroll-to.tsx +48 -0
  283. package/components/motion/segmented-control.tsx +130 -0
  284. package/components/motion/segmented-progress.tsx +128 -0
  285. package/components/motion/select.tsx +440 -0
  286. package/components/motion/shader-background.tsx +134 -0
  287. package/components/motion/shared-layout-bg.tsx +151 -0
  288. package/components/motion/signup-form.tsx +467 -0
  289. package/components/motion/slide-action-button.tsx +203 -0
  290. package/components/motion/smooth-scroll.tsx +264 -0
  291. package/components/motion/sortable-list.tsx +98 -0
  292. package/components/motion/speed-dial.tsx +144 -0
  293. package/components/motion/split-text.tsx +115 -0
  294. package/components/motion/spotlight-card.tsx +89 -0
  295. package/components/motion/stepper.tsx +127 -0
  296. package/components/motion/success-check.tsx +142 -0
  297. package/components/motion/swap/constants.ts +2 -0
  298. package/components/motion/swap/controls.tsx +201 -0
  299. package/components/motion/swap/data.ts +186 -0
  300. package/components/motion/swap/field.tsx +115 -0
  301. package/components/motion/swap/quote-row.tsx +46 -0
  302. package/components/motion/swap/token-badges.tsx +83 -0
  303. package/components/motion/swap/token-picker.tsx +219 -0
  304. package/components/motion/swap/types.ts +20 -0
  305. package/components/motion/swap/utils.ts +28 -0
  306. package/components/motion/swap.tsx +182 -0
  307. package/components/motion/swipeable-list.tsx +507 -0
  308. package/components/motion/switch.tsx +96 -0
  309. package/components/motion/table/editable-cell.tsx +22 -0
  310. package/components/motion/table/index.tsx +431 -0
  311. package/components/motion/table/row-handle.tsx +81 -0
  312. package/components/motion/table/skeleton-rows.tsx +39 -0
  313. package/components/motion/table/table-header.tsx +344 -0
  314. package/components/motion/table/table-menu.tsx +129 -0
  315. package/components/motion/table/types.ts +86 -0
  316. package/components/motion/table/use-column-reorder.ts +105 -0
  317. package/components/motion/table/use-column-resize.ts +81 -0
  318. package/components/motion/table/use-column-sort.ts +64 -0
  319. package/components/motion/table/use-row-selection.ts +59 -0
  320. package/components/motion/table/utils.ts +33 -0
  321. package/components/motion/tabs.tsx +207 -0
  322. package/components/motion/text-cascade.tsx +22 -0
  323. package/components/motion/text-reveal.tsx +143 -0
  324. package/components/motion/text-scramble.tsx +84 -0
  325. package/components/motion/text-shimmer.tsx +34 -0
  326. package/components/motion/text-swap.tsx +56 -0
  327. package/components/motion/theme-toggle.tsx +210 -0
  328. package/components/motion/tilt-card.tsx +68 -0
  329. package/components/motion/timeline.tsx +236 -0
  330. package/components/motion/toggle-group.tsx +128 -0
  331. package/components/motion/tooltip.tsx +297 -0
  332. package/components/motion/tree-view.tsx +200 -0
  333. package/components/motion/wallet-card/account-avatar.tsx +21 -0
  334. package/components/motion/wallet-card/account-switcher.tsx +199 -0
  335. package/components/motion/wallet-card/actions.tsx +59 -0
  336. package/components/motion/wallet-card/balance-delta.tsx +69 -0
  337. package/components/motion/wallet-card/constants.ts +18 -0
  338. package/components/motion/wallet-card/copy-button.tsx +58 -0
  339. package/components/motion/wallet-card/index.tsx +151 -0
  340. package/components/motion/wallet-card/search-bar.tsx +198 -0
  341. package/components/motion/wallet-card/types.ts +34 -0
  342. package/components/motion/wallet-card/utils.ts +9 -0
  343. package/components/motion/wheel-picker.tsx +610 -0
  344. package/components/notifications/apple-notification-banner.tsx +155 -0
  345. package/components/notifications/calendar-reminder-notification-banner.tsx +138 -0
  346. package/components/notifications/chat-bubble-notification-banner.tsx +136 -0
  347. package/components/notifications/delivery-notification-banner.tsx +126 -0
  348. package/components/notifications/deploy-notification-banner.tsx +140 -0
  349. package/components/notifications/email-notification-banner.tsx +148 -0
  350. package/components/notifications/incoming-call-notification-banner.tsx +144 -0
  351. package/components/notifications/payment-notification-banner.tsx +137 -0
  352. package/components/notifications/system-alert-banner.tsx +137 -0
  353. package/components/notifications/toast-notification-banner.tsx +130 -0
  354. package/components/others/progress-ring-card.tsx +217 -0
  355. package/components/others/stacked-cards-effect.tsx +62 -0
  356. package/components/others/terminal-log-card.tsx +107 -0
  357. package/components/others/thermal-receipt-card.tsx +132 -0
  358. package/components/others/weather-snapshot-card.tsx +124 -0
  359. package/components/otp/otp-boxed-input.tsx +482 -0
  360. package/components/otp/otp-underline-input.tsx +356 -0
  361. package/components/previews/agents/agent-activity.preview.tsx +136 -0
  362. package/components/previews/agents/ai-sidebar.preview.tsx +236 -0
  363. package/components/previews/agents/chat-app-usage.tsx +689 -0
  364. package/components/previews/agents/chat-app.preview.tsx +130 -0
  365. package/components/previews/agents/chat-preview.tsx +285 -0
  366. package/components/previews/agents/citations.preview.tsx +78 -0
  367. package/components/previews/agents/code-block.preview.tsx +67 -0
  368. package/components/previews/agents/file-diff.preview.tsx +64 -0
  369. package/components/previews/agents/image-generation.preview.tsx +117 -0
  370. package/components/previews/agents/message-bubble.preview.tsx +12 -0
  371. package/components/previews/agents/message-scroller.preview.tsx +70 -0
  372. package/components/previews/agents/message.preview.tsx +14 -0
  373. package/components/previews/agents/prompt-input.preview.tsx +145 -0
  374. package/components/previews/agents/streaming-response.preview.tsx +156 -0
  375. package/components/previews/agents/todo-list.preview.tsx +73 -0
  376. package/components/previews/agents/tool-approval.preview.tsx +80 -0
  377. package/components/previews/agents/use-tool-result-demo.ts +28 -0
  378. package/components/previews/blocks/availability-scheduler.preview.tsx +11 -0
  379. package/components/previews/blocks/bloom-menu.preview.tsx +11 -0
  380. package/components/previews/blocks/card-folder.preview.tsx +105 -0
  381. package/components/previews/blocks/command-palette.preview.tsx +40 -0
  382. package/components/previews/blocks/dynamic-island.preview.tsx +150 -0
  383. package/components/previews/blocks/expandable-action-bar.preview.tsx +136 -0
  384. package/components/previews/blocks/expandable-tabs.preview.tsx +136 -0
  385. package/components/previews/blocks/feedback-widget.preview.tsx +34 -0
  386. package/components/previews/blocks/file-upload.preview.tsx +175 -0
  387. package/components/previews/blocks/infinite-masonry.preview.tsx +145 -0
  388. package/components/previews/blocks/knockout-bracket.preview.tsx +43 -0
  389. package/components/previews/blocks/morphing-search.preview.tsx +59 -0
  390. package/components/previews/blocks/morphing-tabs.preview.tsx +91 -0
  391. package/components/previews/blocks/notification-stack.preview.tsx +39 -0
  392. package/components/previews/blocks/otp-input.preview.tsx +29 -0
  393. package/components/previews/blocks/overflow-actions.preview.tsx +51 -0
  394. package/components/previews/blocks/prediction-market.preview.tsx +41 -0
  395. package/components/previews/blocks/project-folder.preview.tsx +41 -0
  396. package/components/previews/blocks/signup-form.preview.tsx +36 -0
  397. package/components/previews/blocks/swap.preview.tsx +11 -0
  398. package/components/previews/blocks/swipeable-list.preview.tsx +149 -0
  399. package/components/previews/blocks/wallet-card.preview.tsx +36 -0
  400. package/components/previews/motion/action-swap.preview.tsx +82 -0
  401. package/components/previews/motion/adaptive-stepper.preview.tsx +20 -0
  402. package/components/previews/motion/animated-badge.preview.tsx +43 -0
  403. package/components/previews/motion/animated-sidebar.preview.tsx +269 -0
  404. package/components/previews/motion/animated-toast-stack.preview.tsx +151 -0
  405. package/components/previews/motion/bottom-sheet.preview.tsx +35 -0
  406. package/components/previews/motion/bounce-sidebar.preview.tsx +30 -0
  407. package/components/previews/motion/bouncy-accordion.preview.tsx +66 -0
  408. package/components/previews/motion/center-morph-modal.preview.tsx +75 -0
  409. package/components/previews/motion/checkbox.preview.tsx +26 -0
  410. package/components/previews/motion/combobox.preview.tsx +119 -0
  411. package/components/previews/motion/context-menu.preview.tsx +144 -0
  412. package/components/previews/motion/cylinder-carousel.preview.tsx +96 -0
  413. package/components/previews/motion/dock.preview.tsx +46 -0
  414. package/components/previews/motion/drawer.preview.tsx +46 -0
  415. package/components/previews/motion/expandable-control.preview.tsx +27 -0
  416. package/components/previews/motion/expanding-arrow-button.preview.tsx +11 -0
  417. package/components/previews/motion/file-tree.preview.tsx +67 -0
  418. package/components/previews/motion/input.preview.tsx +55 -0
  419. package/components/previews/motion/loader.preview.tsx +36 -0
  420. package/components/previews/motion/marquee.preview.tsx +22 -0
  421. package/components/previews/motion/morphing-modal.preview.tsx +184 -0
  422. package/components/previews/motion/multi-select.preview.tsx +73 -0
  423. package/components/previews/motion/number.preview.tsx +61 -0
  424. package/components/previews/motion/popover.preview.tsx +53 -0
  425. package/components/previews/motion/preview-rail.preview.tsx +108 -0
  426. package/components/previews/motion/pull-to-refresh.preview.tsx +117 -0
  427. package/components/previews/motion/radio.preview.tsx +17 -0
  428. package/components/previews/motion/range-slider.preview.tsx +19 -0
  429. package/components/previews/motion/select.preview.tsx +29 -0
  430. package/components/previews/motion/shader-background.preview.tsx +308 -0
  431. package/components/previews/motion/shared-layout-bg.preview.tsx +33 -0
  432. package/components/previews/motion/switch.preview.tsx +15 -0
  433. package/components/previews/motion/table.preview.tsx +140 -0
  434. package/components/previews/motion/tabs.preview.tsx +49 -0
  435. package/components/previews/motion/text-animation.preview.tsx +63 -0
  436. package/components/previews/motion/theme-toggle.preview.tsx +28 -0
  437. package/components/previews/motion/tilt-card.preview.tsx +15 -0
  438. package/components/previews/motion/tooltip.preview.tsx +34 -0
  439. package/components/previews/motion/wheel-picker.preview.tsx +91 -0
  440. package/components/pricing/retail-price-tag-card.tsx +104 -0
  441. package/components/pricing/toggle-pricing-cards.tsx +209 -0
  442. package/components/profile/contact-profile-card.tsx +100 -0
  443. package/components/profile/editorial-staff-profile-card.tsx +79 -0
  444. package/components/profile/team-member-profile-grid.tsx +159 -0
  445. package/components/profile/user-profile-card.tsx +125 -0
  446. package/components/resources/resource-links-panel.tsx +176 -0
  447. package/components/socials/discord-chat-card.tsx +157 -0
  448. package/components/socials/facebook-post-card.tsx +198 -0
  449. package/components/socials/github-contribution.tsx +716 -0
  450. package/components/socials/github-repo-card.tsx +111 -0
  451. package/components/socials/instagram-post-card.tsx +204 -0
  452. package/components/socials/linked-in-post-card.tsx +213 -0
  453. package/components/socials/linked-in-profile-card.tsx +173 -0
  454. package/components/socials/threads-post-card.tsx +162 -0
  455. package/components/socials/twitter-post-card.tsx +184 -0
  456. package/components/socials/twitter-profile-card.tsx +180 -0
  457. package/components/system/loaders/index.ts +1 -0
  458. package/components/system/loaders/page-loader-overlay.tsx +16 -0
  459. package/components/table/customers-table.tsx +146 -0
  460. package/components/table/orders-table.tsx +195 -0
  461. package/components/table/recent-transactions-table.tsx +125 -0
  462. package/components/table/tasks-table.tsx +163 -0
  463. package/components/table/team-members-table.tsx +155 -0
  464. package/components/table/users-select-table.tsx +184 -0
  465. package/components/text/cafe-menu-board-card.tsx +101 -0
  466. package/components/text/cinema-ticket-card.tsx +99 -0
  467. package/components/text/daily-motivation-card.tsx +80 -0
  468. package/components/text/denim-product-editorial-card.tsx +101 -0
  469. package/components/text/drop-cap-editorial-card.tsx +54 -0
  470. package/components/text/editorial-quote-card.tsx +98 -0
  471. package/components/text/journal-writing-card.tsx +131 -0
  472. package/components/text/keyboard-shortcuts-card.tsx +92 -0
  473. package/components/text/magazine-cover-card.tsx +109 -0
  474. package/components/text/notepad-card.tsx +95 -0
  475. package/components/travel/flight-boarding-card.tsx +177 -0
  476. package/components/travel/travel-postcard-card.tsx +96 -0
  477. package/components/underlines/annotated-text-showcase.tsx +37 -0
  478. package/components/underlines/annotated-text.tsx +471 -0
  479. package/components/users/credit-card-glass.tsx +113 -0
  480. package/components/users/team-member-card.tsx +50 -0
  481. package/components/users/testimonial-card.tsx +239 -0
  482. package/components/wallet/wallet-pass-card.tsx +220 -0
  483. package/components/widgets/analog-clock-widget.tsx +203 -0
  484. package/components/widgets/audio-recorder-widget.tsx +87 -0
  485. package/components/widgets/battery-face-widget.tsx +152 -0
  486. package/components/widgets/blob-profile.tsx +64 -0
  487. package/components/widgets/bluetooth-face-widget.tsx +125 -0
  488. package/components/widgets/compass-widget.tsx +296 -0
  489. package/components/widgets/daily-activity-calendar-widget.tsx +133 -0
  490. package/components/widgets/dnd-face-widget.tsx +129 -0
  491. package/components/widgets/electric-scooter-widget.tsx +88 -0
  492. package/components/widgets/flight-arrival-widget.tsx +76 -0
  493. package/components/widgets/focus-breath-widget.tsx +71 -0
  494. package/components/widgets/heart-rate-widget.tsx +93 -0
  495. package/components/widgets/hydration-widget.tsx +109 -0
  496. package/components/widgets/ios-calendar-widget.tsx +87 -0
  497. package/components/widgets/ios-digital-clock-widget.tsx +192 -0
  498. package/components/widgets/ios-earbuds-widget.tsx +120 -0
  499. package/components/widgets/ios-map-location-widget.tsx +133 -0
  500. package/components/widgets/minimal-agenda-widget.tsx +123 -0
  501. package/components/widgets/pomodoro-widget.tsx +155 -0
  502. package/components/widgets/recorder-face-widget.tsx +146 -0
  503. package/components/widgets/ride-pickup-widget.tsx +72 -0
  504. package/components/widgets/sleep-score-widget.tsx +107 -0
  505. package/components/widgets/step-count-widget.tsx +53 -0
  506. package/components/widgets/stopwatch-widget.tsx +176 -0
  507. package/components/widgets/torch-face-widget.tsx +128 -0
  508. package/components/widgets/voice-assistant-widget.tsx +103 -0
  509. package/components/widgets/wifi-toggle-widget.tsx +108 -0
  510. package/lib/cn.ts +1 -0
  511. package/lib/ease.ts +108 -0
  512. package/lib/favicon.ts +8 -0
  513. package/lib/hooks/use-dismiss.ts +120 -0
  514. package/lib/hooks/use-favicon.ts +39 -0
  515. package/lib/hooks/use-haptic.ts +44 -0
  516. package/lib/hooks/use-hover-capable.ts +23 -0
  517. package/lib/hooks/use-hover-gesture.ts +61 -0
  518. package/lib/hooks/use-in-view-animation.ts +35 -0
  519. package/lib/hooks/use-measure.ts +39 -0
  520. package/lib/hooks/use-on-open.ts +24 -0
  521. package/lib/hooks/use-row-cursor.ts +86 -0
  522. package/lib/hooks/use-slider.ts +176 -0
  523. package/lib/hooks/use-tap-gesture.ts +66 -0
  524. package/lib/hooks/use-touch-capable.ts +31 -0
  525. package/lib/presence-gate.tsx +52 -0
  526. package/lib/styles.ts +124 -0
  527. package/lib/text-shimmer.ts +21 -0
  528. package/lib/tick-sound.ts +151 -0
  529. package/lib/touch.ts +117 -0
  530. package/lib/utils.ts +6 -0
  531. package/package.json +49 -0
  532. package/references/agents/agent-activity.md +747 -0
  533. package/references/agents/ai-sidebar.md +293 -0
  534. package/references/agents/approval-card.md +233 -0
  535. package/references/agents/chat-app.md +184 -0
  536. package/references/agents/citations.md +159 -0
  537. package/references/agents/code-block.md +122 -0
  538. package/references/agents/file-diff.md +119 -0
  539. package/references/agents/image-generation.md +173 -0
  540. package/references/agents/loading-states.md +186 -0
  541. package/references/agents/message-bubble.md +274 -0
  542. package/references/agents/message-scroller.md +128 -0
  543. package/references/agents/message.md +162 -0
  544. package/references/agents/prompt-input.md +204 -0
  545. package/references/agents/streaming-response.md +216 -0
  546. package/references/agents/todo-list.md +123 -0
  547. package/references/agents/tool-approval.md +143 -0
  548. package/references/agents/tool-result.md +199 -0
  549. package/references/blocks/availability-scheduler.md +59 -0
  550. package/references/blocks/bloom-menu.md +56 -0
  551. package/references/blocks/card-folder.md +165 -0
  552. package/references/blocks/command-palette.md +89 -0
  553. package/references/blocks/dynamic-island.md +203 -0
  554. package/references/blocks/expandable-action-bar.md +191 -0
  555. package/references/blocks/expandable-tabs.md +184 -0
  556. package/references/blocks/feedback-widget.md +82 -0
  557. package/references/blocks/file-upload.md +406 -0
  558. package/references/blocks/infinite-masonry.md +211 -0
  559. package/references/blocks/knockout-bracket.md +161 -0
  560. package/references/blocks/morphing-search.md +113 -0
  561. package/references/blocks/morphing-tabs.md +143 -0
  562. package/references/blocks/not-found.md +228 -0
  563. package/references/blocks/notification-stack.md +92 -0
  564. package/references/blocks/otp-input.md +85 -0
  565. package/references/blocks/overflow-actions.md +105 -0
  566. package/references/blocks/prediction-market.md +97 -0
  567. package/references/blocks/project-folder.md +99 -0
  568. package/references/blocks/signup-form.md +92 -0
  569. package/references/blocks/swap.md +58 -0
  570. package/references/blocks/swipeable-list.md +202 -0
  571. package/references/blocks/wallet-card.md +97 -0
  572. package/references/codex-install.md +59 -0
  573. package/references/craft/3d-button.md +51 -0
  574. package/references/craft/3d-icon-button.md +51 -0
  575. package/references/craft/add-to-cart-button.md +52 -0
  576. package/references/craft/analog-clock-minimal.md +51 -0
  577. package/references/craft/analog-clock-numeric.md +51 -0
  578. package/references/craft/analog-clock-roman.md +51 -0
  579. package/references/craft/annotated-text.md +51 -0
  580. package/references/craft/app-dock.md +52 -0
  581. package/references/craft/apple-hello-loader.md +51 -0
  582. package/references/craft/apple-notification.md +53 -0
  583. package/references/craft/apple-watch.md +51 -0
  584. package/references/craft/arc-bands-background.md +51 -0
  585. package/references/craft/audio-recorder.md +52 -0
  586. package/references/craft/aurora-background.md +51 -0
  587. package/references/craft/battery-face.md +52 -0
  588. package/references/craft/blob-profile.md +53 -0
  589. package/references/craft/bluetooth-face.md +52 -0
  590. package/references/craft/booking-slot-calendar.md +52 -0
  591. package/references/craft/bookmark-save-button.md +52 -0
  592. package/references/craft/browser.md +51 -0
  593. package/references/craft/cafe-menu-board.md +52 -0
  594. package/references/craft/calendar-reminder-notification.md +52 -0
  595. package/references/craft/chat-bubble-notification.md +53 -0
  596. package/references/craft/checkbox-field-input.md +52 -0
  597. package/references/craft/cherry-petal-background.md +51 -0
  598. package/references/craft/cinder-latch-button.md +51 -0
  599. package/references/craft/cinema-ticket.md +52 -0
  600. package/references/craft/circle-cut-frame.md +51 -0
  601. package/references/craft/combobox-field-input.md +52 -0
  602. package/references/craft/compass.md +51 -0
  603. package/references/craft/contact-form.md +52 -0
  604. package/references/craft/contact-profile.md +52 -0
  605. package/references/craft/copy-email.md +53 -0
  606. package/references/craft/coral-glow-background.md +51 -0
  607. package/references/craft/craft-copy-button.md +52 -0
  608. package/references/craft/craft-signup-form.md +53 -0
  609. package/references/craft/credit-card-glass.md +51 -0
  610. package/references/craft/customers-table.md +52 -0
  611. package/references/craft/daily-activity-calendar.md +52 -0
  612. package/references/craft/daily-motivation.md +53 -0
  613. package/references/craft/dark-arc-bands-background.md +51 -0
  614. package/references/craft/dark-aurora-background.md +51 -0
  615. package/references/craft/dark-carbon-spotlight-background.md +51 -0
  616. package/references/craft/dark-ember-background.md +51 -0
  617. package/references/craft/dark-ink-field-background.md +51 -0
  618. package/references/craft/dark-midnight-mesh-background.md +51 -0
  619. package/references/craft/dark-rose-noir-background.md +51 -0
  620. package/references/craft/dark-teal-depth-background.md +51 -0
  621. package/references/craft/date-field-input.md +52 -0
  622. package/references/craft/date-range-picker-card.md +52 -0
  623. package/references/craft/delivery-notification.md +52 -0
  624. package/references/craft/denim-product-editorial.md +52 -0
  625. package/references/craft/deploy-notification.md +52 -0
  626. package/references/craft/depth-outline-button.md +51 -0
  627. package/references/craft/diagonal-box-pattern.md +51 -0
  628. package/references/craft/dimple-switch.md +51 -0
  629. package/references/craft/discord-chat.md +53 -0
  630. package/references/craft/dnd-face.md +52 -0
  631. package/references/craft/dot-grid-pattern.md +51 -0
  632. package/references/craft/download-button.md +52 -0
  633. package/references/craft/drop-cap-editorial.md +52 -0
  634. package/references/craft/editor-tool-dock.md +52 -0
  635. package/references/craft/editorial-quote.md +52 -0
  636. package/references/craft/editorial-staff-profile.md +51 -0
  637. package/references/craft/electric-scooter.md +53 -0
  638. package/references/craft/email-notification.md +53 -0
  639. package/references/craft/event-countdown-card.md +51 -0
  640. package/references/craft/event-ticket.md +53 -0
  641. package/references/craft/facebook-post.md +53 -0
  642. package/references/craft/file-menu.md +52 -0
  643. package/references/craft/file-upload-field-input.md +52 -0
  644. package/references/craft/film-strip.md +52 -0
  645. package/references/craft/filter-sort.md +52 -0
  646. package/references/craft/fine-grain-pattern.md +51 -0
  647. package/references/craft/flight-arrival.md +52 -0
  648. package/references/craft/flight-boarding.md +52 -0
  649. package/references/craft/floating-label-field-input.md +51 -0
  650. package/references/craft/focus-breath.md +51 -0
  651. package/references/craft/folder-tab-card.md +52 -0
  652. package/references/craft/follow-button.md +52 -0
  653. package/references/craft/forgot-password-form.md +53 -0
  654. package/references/craft/frost-mesh-background.md +51 -0
  655. package/references/craft/gallery-grid.md +53 -0
  656. package/references/craft/gallery-wall.md +52 -0
  657. package/references/craft/github-contribution.md +52 -0
  658. package/references/craft/github-repo.md +52 -0
  659. package/references/craft/glass-overlay-image.md +53 -0
  660. package/references/craft/graph-paper-pattern.md +51 -0
  661. package/references/craft/halftone-pop-background.md +51 -0
  662. package/references/craft/hard-shadow-polaroid-frame.md +51 -0
  663. package/references/craft/heart-rate.md +52 -0
  664. package/references/craft/hold-to-delete-button.md +52 -0
  665. package/references/craft/honey-ember-background.md +51 -0
  666. package/references/craft/hydration.md +51 -0
  667. package/references/craft/incoming-call-notification.md +53 -0
  668. package/references/craft/ink-stamp-document.md +52 -0
  669. package/references/craft/ink-wash-background.md +51 -0
  670. package/references/craft/input-group-field.md +51 -0
  671. package/references/craft/inset-button.md +51 -0
  672. package/references/craft/instagram-post.md +53 -0
  673. package/references/craft/ios-calendar-widget.md +51 -0
  674. package/references/craft/ios-digital-clock.md +51 -0
  675. package/references/craft/ios-earbuds.md +51 -0
  676. package/references/craft/ios-map-location.md +51 -0
  677. package/references/craft/ipad.md +51 -0
  678. package/references/craft/ipod.md +51 -0
  679. package/references/craft/journal-writing.md +52 -0
  680. package/references/craft/kebab-actions.md +52 -0
  681. package/references/craft/keyboard-shortcuts.md +52 -0
  682. package/references/craft/laptop.md +51 -0
  683. package/references/craft/like-button.md +52 -0
  684. package/references/craft/line-grid-pattern.md +51 -0
  685. package/references/craft/linen-tab-button.md +51 -0
  686. package/references/craft/linen-weave-background.md +51 -0
  687. package/references/craft/linked-in-post.md +53 -0
  688. package/references/craft/linked-in-profile.md +52 -0
  689. package/references/craft/login-form.md +53 -0
  690. package/references/craft/mac-dock.md +52 -0
  691. package/references/craft/magazine-cover.md +53 -0
  692. package/references/craft/minimal-agenda.md +52 -0
  693. package/references/craft/mint-lagoon-background.md +51 -0
  694. package/references/craft/month-picker-calendar.md +52 -0
  695. package/references/craft/museum-placard.md +51 -0
  696. package/references/craft/music-player.md +53 -0
  697. package/references/craft/music-playlist.md +53 -0
  698. package/references/craft/newsletter-form.md +52 -0
  699. package/references/craft/notepad.md +52 -0
  700. package/references/craft/notification.md +52 -0
  701. package/references/craft/now-playing-bar.md +53 -0
  702. package/references/craft/orders-table.md +52 -0
  703. package/references/craft/otp-boxed-input.md +52 -0
  704. package/references/craft/otp-underline-input.md +51 -0
  705. package/references/craft/page-loader-overlay.md +46 -0
  706. package/references/craft/paper-fold-background.md +51 -0
  707. package/references/craft/password-field-input.md +52 -0
  708. package/references/craft/payment-notification.md +52 -0
  709. package/references/craft/phone-field-input.md +51 -0
  710. package/references/craft/phone.md +51 -0
  711. package/references/craft/photo-album.md +52 -0
  712. package/references/craft/photo-contact-sheet.md +52 -0
  713. package/references/craft/polaroid-image.md +52 -0
  714. package/references/craft/pomodoro.md +52 -0
  715. package/references/craft/presence-dock.md +51 -0
  716. package/references/craft/prism-depth-button.md +51 -0
  717. package/references/craft/progress-ring-card.md +51 -0
  718. package/references/craft/quantity-stepper-button.md +52 -0
  719. package/references/craft/radio-group-field-input.md +51 -0
  720. package/references/craft/rain-prism-background.md +51 -0
  721. package/references/craft/recent-transactions-table.md +52 -0
  722. package/references/craft/recorder-face.md +52 -0
  723. package/references/craft/resource-links-panel.md +52 -0
  724. package/references/craft/retail-price-tag.md +51 -0
  725. package/references/craft/reverse-diagonal-box-pattern.md +51 -0
  726. package/references/craft/ride-pickup.md +53 -0
  727. package/references/craft/sand-drift-background.md +51 -0
  728. package/references/craft/search-input.md +52 -0
  729. package/references/craft/segmented-toggle-button.md +51 -0
  730. package/references/craft/select-field-input.md +52 -0
  731. package/references/craft/share-menu.md +52 -0
  732. package/references/craft/sheen-pill-button.md +51 -0
  733. package/references/craft/slate-chip-switch.md +51 -0
  734. package/references/craft/sleep-score.md +52 -0
  735. package/references/craft/slide-to-confirm-button.md +52 -0
  736. package/references/craft/slow-living-polaroid.md +52 -0
  737. package/references/craft/soft-pill-button.md +51 -0
  738. package/references/craft/soft-spotlight-background.md +51 -0
  739. package/references/craft/soft-ui-button.md +51 -0
  740. package/references/craft/spin-loader.md +52 -0
  741. package/references/craft/spotlight-bar.md +52 -0
  742. package/references/craft/stacked-cards-effect.md +52 -0
  743. package/references/craft/stacked-folder-card.md +52 -0
  744. package/references/craft/stamp-postcard.md +52 -0
  745. package/references/craft/step-count.md +51 -0
  746. package/references/craft/sticky-note-polaroid-frame.md +51 -0
  747. package/references/craft/stopwatch.md +52 -0
  748. package/references/craft/sunrise-horizon-background.md +51 -0
  749. package/references/craft/sunset-bloom-background.md +51 -0
  750. package/references/craft/switch-field-input.md +51 -0
  751. package/references/craft/system-alert.md +52 -0
  752. package/references/craft/tasks-table.md +53 -0
  753. package/references/craft/team-member-profile-grid.md +52 -0
  754. package/references/craft/team-member.md +53 -0
  755. package/references/craft/team-members-table.md +53 -0
  756. package/references/craft/terminal-log.md +52 -0
  757. package/references/craft/terrazzo-fragment-background.md +51 -0
  758. package/references/craft/testimonial.md +53 -0
  759. package/references/craft/text-field-input.md +51 -0
  760. package/references/craft/text-loader.md +51 -0
  761. package/references/craft/textarea-field-input.md +51 -0
  762. package/references/craft/thermal-receipt.md +52 -0
  763. package/references/craft/threads-post.md +53 -0
  764. package/references/craft/toast-notification.md +52 -0
  765. package/references/craft/toggle-pricing-cards.md +52 -0
  766. package/references/craft/torch-face.md +52 -0
  767. package/references/craft/transform-box-frame.md +51 -0
  768. package/references/craft/transform-plus-frame.md +51 -0
  769. package/references/craft/travel-postcard.md +53 -0
  770. package/references/craft/tropical-tide-background.md +51 -0
  771. package/references/craft/twitter-post.md +53 -0
  772. package/references/craft/twitter-profile.md +53 -0
  773. package/references/craft/user-menu.md +53 -0
  774. package/references/craft/user-profile.md +53 -0
  775. package/references/craft/users-select-table.md +53 -0
  776. package/references/craft/voice-assistant.md +52 -0
  777. package/references/craft/wallet-pass.md +52 -0
  778. package/references/craft/weather-snapshot.md +52 -0
  779. package/references/craft/week-strip-calendar.md +52 -0
  780. package/references/craft/wifi-toggle.md +52 -0
  781. package/references/craft/workspace-switcher.md +52 -0
  782. package/references/guides/baseline-ui-craft.md +61 -0
  783. package/references/guides/craft-surface-design-system.md +120 -0
  784. package/references/guides/design-system-checklist.md +98 -0
  785. package/references/guides/enterprise-dashboard-patterns.md +53 -0
  786. package/references/guides/interaction-transitions.md +71 -0
  787. package/references/guides/motion-engineering.md +137 -0
  788. package/references/guides/motion-patterns.md +106 -0
  789. package/references/guides/motion-performance.md +66 -0
  790. package/references/guides/style-presets.md +115 -0
  791. package/references/guides/universal-mobile-patterns.md +72 -0
  792. package/references/motion/action-sheet.md +98 -0
  793. package/references/motion/action-swap.md +339 -0
  794. package/references/motion/adaptive-stepper.md +95 -0
  795. package/references/motion/animated-badge.md +92 -0
  796. package/references/motion/animated-sidebar.md +446 -0
  797. package/references/motion/animated-toast-stack.md +214 -0
  798. package/references/motion/aspect-ratio.md +59 -0
  799. package/references/motion/audio-player.md +59 -0
  800. package/references/motion/autocomplete.md +69 -0
  801. package/references/motion/avatar-group.md +93 -0
  802. package/references/motion/bottom-sheet.md +85 -0
  803. package/references/motion/bounce-sidebar.md +80 -0
  804. package/references/motion/bouncy-accordion.md +115 -0
  805. package/references/motion/breadcrumb.md +62 -0
  806. package/references/motion/button.md +271 -0
  807. package/references/motion/card-resize.md +60 -0
  808. package/references/motion/cascader.md +99 -0
  809. package/references/motion/center-morph-modal.md +133 -0
  810. package/references/motion/checkbox.md +76 -0
  811. package/references/motion/chip.md +81 -0
  812. package/references/motion/collapsible.md +73 -0
  813. package/references/motion/color-picker.md +57 -0
  814. package/references/motion/combobox.md +247 -0
  815. package/references/motion/confetti.md +65 -0
  816. package/references/motion/context-menu.md +269 -0
  817. package/references/motion/copy-button.md +59 -0
  818. package/references/motion/cylinder-carousel.md +151 -0
  819. package/references/motion/date-range-picker.md +68 -0
  820. package/references/motion/dock.md +105 -0
  821. package/references/motion/drawer.md +94 -0
  822. package/references/motion/error-shake.md +85 -0
  823. package/references/motion/event-calendar.md +81 -0
  824. package/references/motion/expandable-control.md +89 -0
  825. package/references/motion/expanding-arrow-button.md +178 -0
  826. package/references/motion/file-tree.md +139 -0
  827. package/references/motion/filter-builder.md +106 -0
  828. package/references/motion/frame.md +61 -0
  829. package/references/motion/gantt.md +61 -0
  830. package/references/motion/glow-button.md +59 -0
  831. package/references/motion/haptic-pressable.md +64 -0
  832. package/references/motion/hover-card.md +86 -0
  833. package/references/motion/icon-stack.md +64 -0
  834. package/references/motion/input.md +108 -0
  835. package/references/motion/kanban.md +111 -0
  836. package/references/motion/kbd.md +66 -0
  837. package/references/motion/loader.md +82 -0
  838. package/references/motion/magnet-dock.md +64 -0
  839. package/references/motion/marquee.md +68 -0
  840. package/references/motion/metric-card.md +81 -0
  841. package/references/motion/morphing-modal.md +230 -0
  842. package/references/motion/multi-select.md +202 -0
  843. package/references/motion/number-field.md +70 -0
  844. package/references/motion/number.md +198 -0
  845. package/references/motion/page-transition.md +78 -0
  846. package/references/motion/pagination.md +64 -0
  847. package/references/motion/password-input.md +77 -0
  848. package/references/motion/phone-input.md +63 -0
  849. package/references/motion/popover.md +209 -0
  850. package/references/motion/preview-rail.md +165 -0
  851. package/references/motion/progress-ring.md +73 -0
  852. package/references/motion/pull-to-refresh.md +172 -0
  853. package/references/motion/radio.md +73 -0
  854. package/references/motion/range-slider.md +290 -0
  855. package/references/motion/rating.md +69 -0
  856. package/references/motion/reorder-grid.md +69 -0
  857. package/references/motion/resizable-panel.md +75 -0
  858. package/references/motion/scroll-animation.md +397 -0
  859. package/references/motion/segmented-control.md +68 -0
  860. package/references/motion/segmented-progress.md +70 -0
  861. package/references/motion/select.md +196 -0
  862. package/references/motion/shader-background.md +351 -0
  863. package/references/motion/shared-layout-bg.md +80 -0
  864. package/references/motion/sortable-list.md +62 -0
  865. package/references/motion/speed-dial.md +63 -0
  866. package/references/motion/split-text.md +62 -0
  867. package/references/motion/spotlight-card.md +67 -0
  868. package/references/motion/stepper.md +83 -0
  869. package/references/motion/success-check.md +67 -0
  870. package/references/motion/switch.md +62 -0
  871. package/references/motion/table.md +519 -0
  872. package/references/motion/tabs.md +116 -0
  873. package/references/motion/text-animation.md +285 -0
  874. package/references/motion/text-swap.md +64 -0
  875. package/references/motion/theme-toggle.md +82 -0
  876. package/references/motion/tilt-card.md +59 -0
  877. package/references/motion/timeline.md +85 -0
  878. package/references/motion/toggle-group.md +70 -0
  879. package/references/motion/tooltip.md +82 -0
  880. package/references/motion/tree-view.md +87 -0
  881. package/references/motion/wheel-picker.md +142 -0
  882. package/scripts/build_docs.py +557 -0
  883. package/scripts/install-component.py +232 -0
  884. package/scripts/test_release.py +119 -0
  885. package/scripts/updater.mjs +9 -0
  886. package/scripts/verify_skill.py +84 -0
@@ -0,0 +1,115 @@
1
+ ---
2
+ title: "Multi-Style Presets & Aesthetic Themes Guide"
3
+ description: "Architecture and guidelines for AI agents to select, switch, and apply shared design tokens across components."
4
+ category: "Design Systems"
5
+ publishedAt: "2026-09-05"
6
+ updatedAt: "2026-09-05"
7
+ documentation: "references/guides/style-presets.md"
8
+ markdown: "references/guides/style-presets.md"
9
+ license: "MIT"
10
+ ---
11
+
12
+ # Multi-Style Presets & Aesthetic Themes
13
+
14
+ > Architecture and guidelines for AI agents to select, switch, and apply shared design tokens across components in this skill.
15
+
16
+ Modern web and mobile applications span dramatically different visual aesthetics. Rather than forcing a single rigid look, the Motion UI Skill equips agents with **6 Canonical Style Presets**:
17
+
18
+ 1. **`minimal`** — Clean, flat monochrome, crisp 1px borders, subtle hover transitions (inspired by *shadcn/ui* and *Linear*).
19
+ 2. **`origin`** — High-craft, micro-elevation, subtle specular inner borders, precision focus rings, dark-mode luxury (inspired by *Coss* and *Cal.com*).
20
+ 3. **`enterprise`** — High information density, compact spacing, clear semantic contrast, sharp geometry, data-heavy (inspired by *KeenThemes ReUI*).
21
+ 4. **`glow`** — Luminous radial gradient halos, spotlight cursor highlights, dark ambient glass, metallic beams (inspired by *ibelick/ui-skills*).
22
+ 5. **`ios`** — Deep rounded squircle curves (`rounded-2xl` to `rounded-3xl`), translucent blurred glass (`backdrop-blur-2xl`), tactile spring bounce, haptic vibrations (inspired by *Expo* and *Apple iOS*).
23
+ 6. **`brutalist`** — Bold 2px/3px black outlines, high-contrast flat fills, hard 4px offset drop-shadows, tactile press translations (Neo-brutalist aesthetic).
24
+
25
+ ---
26
+
27
+ ## The Style Tokens Architecture (`lib/styles.ts`)
28
+
29
+ Every preset is formalized into reusable Tailwind utility tokens and spring physics configurations:
30
+
31
+ ```ts
32
+ import { STYLE_PRESETS, getStylePreset, type StylePreset } from "@/lib/styles";
33
+
34
+ const tokens = getStylePreset("origin");
35
+ // tokens.card -> Card surface classes
36
+ // tokens.buttonPrimary -> Primary action button classes
37
+ // tokens.input -> Text/search field classes
38
+ // tokens.badge -> Status badge classes
39
+ // tokens.panel -> Modal/drawer/popover container classes
40
+ // tokens.radius -> Corner rounding token
41
+ // tokens.spring -> Corresponding Motion spring curve
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Visual Comparison of the 6 Styles
47
+
48
+ | Style Preset | Border & Geometry | Surface & Lighting | Shadows & Elevation | Motion Physics | Target Archetype |
49
+ | :--- | :--- | :--- | :--- | :--- | :--- |
50
+ | **`minimal`** | `border-border`, `rounded-xl` | Flat `bg-card`, monochrome | `shadow-none` / `shadow-sm` | `SPRING_PRESS` (stiff) | Minimalist SaaS, developer tools |
51
+ | **`origin`** | `border-border/70`, `rounded-2xl`, `ring-1 ring-white/5` | Gradient `from-card to-card/90`, glass | Refined micro-shadows | `SPRING_SNAPPY` (velocity) | Cal.com, Stripe, high-craft web apps |
52
+ | **`enterprise`** | `border-border`, `rounded-md`, compact | High contrast, clear cells | Minimal shadow | `SPRING_PRESS` (subtle) | ReUI dashboards, ERP, CRM, data grids |
53
+ | **`glow`** | `border-border/60`, `rounded-2xl` | Radial gradient spotlights, cyan/indigo | `shadow-2xl`, glow blooms | `SPRING_GENTLE` (smooth) | Web3, AI platforms, luxury landing pages |
54
+ | **`ios`** | `border-white/10`, `rounded-3xl` | Translucent glass `backdrop-blur-2xl` | Diffuse ambient soft shadows | `SPRING_BOUNCE` (playful) | Expo mobile apps, consumer iOS PWAs |
55
+ | **`brutalist`** | `border-2 border-foreground`, `rounded-none` | High contrast flat fills, saturated accents | Hard offset `shadow-[4px_4px_0px_0px_currentColor]` | Snappy step transitions | Creative studios, modern editorial, web zines |
56
+
57
+ ---
58
+
59
+ ## How AI Agents Should Select Styles
60
+
61
+ When generating UI code or answering user prompts, follow these decision heuristics:
62
+
63
+ ### Step 1: Detect User Aesthetic Preference
64
+ - If the user specifies an aesthetic (e.g. *"make it look like Apple"*, *"make a high-craft Stripe/Cal.com interface"*, *"make a compact admin dashboard"*, *"make a cyber glow look"*), map immediately to the preset:
65
+ - *"Apple / Mobile / Expo"* $\rightarrow$ **`ios`**
66
+ - *"Stripe / Linear / Cal.com / High Craft"* $\rightarrow$ **`origin`**
67
+ - *"Shadcn / Minimal / Clean"* $\rightarrow$ **`minimal`**
68
+ - *"KeenThemes / ReUI / Enterprise / Compact / Admin"* $\rightarrow$ **`enterprise`**
69
+ - *"Glow / Cyber / Dark Modern / Spotlight"* $\rightarrow$ **`glow`**
70
+ - *"Retro / Brutalist / Bold / Outline"* $\rightarrow$ **`brutalist`**
71
+
72
+ ### Step 2: If Unspecified, Ask or Default Wisely
73
+ - Default for web apps: **`origin`** (balanced high-craft, works in both dark and light mode).
74
+ - Default for mobile / touch-first: **`ios`**.
75
+ - Default for heavy data tables / Gantt / Kanban: **`enterprise`**.
76
+
77
+ ### Step 3: Implement with Style Preset Props or Utility Tokens
78
+ `MetricCard` accepts a `stylePreset` prop directly. Other components can consume the shared tokens in a wrapper:
79
+
80
+ ```tsx
81
+ <MetricCard
82
+ title="Monthly Recurring Revenue"
83
+ value="$48,250"
84
+ change="+14.2%"
85
+ stylePreset="origin"
86
+ />
87
+ ```
88
+
89
+ Or consume `STYLE_PRESETS` in custom wrappers:
90
+
91
+ ```tsx
92
+ import { STYLE_PRESETS, type StylePreset } from "@/lib/styles";
93
+ import { cn } from "@/lib/utils";
94
+
95
+ export function CustomCard({ stylePreset = "origin", children }: { stylePreset?: StylePreset; children: React.ReactNode }) {
96
+ const tokens = STYLE_PRESETS[stylePreset];
97
+ return <div className={cn(tokens.card)}>{children}</div>;
98
+ }
99
+ ```
100
+
101
+ ---
102
+
103
+ ## CLI Style Flag
104
+
105
+ The CLI component installer supports explicit style selection:
106
+
107
+ The selected value is reported for the agent and the shared `lib/styles.ts` helper is copied; component class names are not rewritten automatically.
108
+
109
+ ```bash
110
+ # Install a component and include the shared style tokens
111
+ python scripts/install-component.py metric-card --style origin --dest ./src
112
+
113
+ # List all available styles and tokens
114
+ python scripts/install-component.py --list-styles
115
+ ```
@@ -0,0 +1,72 @@
1
+ ---
2
+ title: "Universal Mobile-First Interaction Patterns"
3
+ description: "Cross-platform touch guidelines, mobile gesture physics, haptic feedback semantics, and responsive adaptive component adaptations inspired by Expo."
4
+ documentation: "references/guides/universal-mobile-patterns.md"
5
+ markdown: "references/guides/universal-mobile-patterns.md"
6
+ ---
7
+
8
+ # Universal Mobile-First Interaction Patterns
9
+
10
+ > Engineering resilient cross-platform web and mobile interfaces, synthesizing principles from [expo/expo](https://github.com/expo/expo) and Apple HIG / Material Design standards.
11
+
12
+ ---
13
+
14
+ ## 1. Touch Target Ergonomics
15
+
16
+ On mobile devices, human thumbs and index fingers lack pixel-level precision.
17
+ - **Minimum Interactive Touch Region**:
18
+ - Apple Human Interface Guidelines: **$44 \times 44\text{pt}$**
19
+ - Android Material Design: **$48 \times 48\text{dp}$**
20
+ - **Visual vs Tap Target**: An icon button may visually measure $28 \times 28\text{px}$, but its clickable hit area must be expanded via padding or pseudo-elements (`after:absolute after:-inset-2`).
21
+ - **Pointer Media Query Guard**:
22
+ ```tsx
23
+ // lib/hooks/use-hover-capable.ts
24
+ // Only enable hover transforms on devices with a true pointer
25
+ @media (hover: hover) and (pointer: fine) { ... }
26
+ ```
27
+ Prevents mobile browsers from entering sticky tap states where a tapped button permanently retains its desktop `:hover` appearance.
28
+
29
+ ---
30
+
31
+ ## 2. Semantic Haptic Feedback
32
+
33
+ Haptics bridge the gap between digital software and physical tactile perception.
34
+
35
+ ### Haptic Trigger Taxonomy
36
+ | Haptic Role | Sensation | Use Case |
37
+ | :--- | :--- | :--- |
38
+ | `selection` | 10ms crisp tap | Wheel picker notches, slider steps, tab switching. |
39
+ | `light` | 15ms soft impulse | Button tap, toggle switch, dropdown menu item click. |
40
+ | `medium` | 30ms firm impulse | Long-press activation, reordering item pickup. |
41
+ | `heavy` | 50ms deep thump | Bottom sheet snap to max height, pull-to-refresh trigger threshold. |
42
+ | `success` | Light-pause-medium | Form submission success, transaction confirmed, task completed. |
43
+ | `warning` | Medium-pause-medium | Destructive action confirmation, near limit alert. |
44
+ | `error` | Rapid 3-pulse vibration | Validation failure, unauthorized action, network error. |
45
+
46
+ ---
47
+
48
+ ## 3. Gesture Physics & Sheet Dynamics
49
+
50
+ ### Dragging & Rubber-Banding
51
+ When an overlay or bottom sheet is pulled past its boundary, apply exponential decay rather than hard clamping:
52
+ $$\text{offset}_{\text{damped}} = \text{threshold} + (\text{excess} \times 0.2)$$
53
+ This gives the interface a tactile, elastic physical boundary.
54
+
55
+ ### Velocity Handoff (Flick vs Distance)
56
+ When dismissing a bottom sheet or swipeable row:
57
+ - If velocity $v_y > 400\text{px/s}$, dismiss the sheet regardless of distance moved.
58
+ - If velocity is low, dismiss only if dragged past 40% of the total height.
59
+ - If released before 40% with low velocity, spring back to open state using `SPRING_PANEL`.
60
+
61
+ ---
62
+
63
+ ## 4. Adaptive Responsive Primitives
64
+
65
+ Universal components gracefully adapt between mobile and desktop form factors:
66
+
67
+ | Mobile Primitive | Desktop Adaptation | Rationale |
68
+ | :--- | :--- | :--- |
69
+ | **Action Sheet** | Dropdown Menu / Popover | Mobile thumbs reach bottom edge easily; desktop users click near mouse cursor. |
70
+ | **Bottom Sheet** | Center Modal Dialog | Bottom sheet fills mobile viewport ergonomically; modals center on widescreen displays. |
71
+ | **Segmented Control** | Tabs / Underline Bar | Touch thumbs tap wide pills; desktop users navigate compact tab rows. |
72
+ | **Full-Screen Search** | Command Palette (⌘K) | Mobile keyboards need full screen space; desktop keyboards favor centered palettes. |
@@ -0,0 +1,98 @@
1
+ ---
2
+ title: "Action Sheet"
3
+ description: "Universal mobile action sheet menu with drag gesture dismissal, rubber-band resistance, haptic feedback, and desktop center modal fallback."
4
+ category: "Blocks"
5
+ publishedAt: "2026-09-05"
6
+ updatedAt: "2026-09-05"
7
+ documentation: "references/motion/action-sheet.md"
8
+ markdown: "references/motion/action-sheet.md"
9
+ license: "MIT"
10
+ ---
11
+
12
+ # Action Sheet
13
+
14
+ > Universal mobile action sheet menu with drag gesture dismissal, rubber-band resistance, haptic feedback, and desktop center modal fallback. Inspired by Expo and Apple HIG.
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ # Install via motion-ui skill CLI:
20
+ python scripts/install-component.py action-sheet --dest ./src
21
+ ```
22
+
23
+ ## Dependencies
24
+
25
+ - `clsx`
26
+ - `lucide-react`
27
+ - `motion`
28
+ - `react`
29
+ - `react-dom`
30
+ - `tailwind-merge`
31
+
32
+ ## Usage
33
+
34
+ ```tsx
35
+ "use client";
36
+
37
+ import { ActionSheet, type ActionSheetAction } from "@/components/motion/action-sheet";
38
+ import { Copy, Share2, Trash2 } from "lucide-react";
39
+ import { useState } from "react";
40
+
41
+ export function ActionSheetExample() {
42
+ const [isOpen, setIsOpen] = useState(false);
43
+
44
+ const actions: ActionSheetAction[] = [
45
+ {
46
+ id: "share",
47
+ label: "Share Workflow Link",
48
+ icon: <Share2 className="size-4" />,
49
+ onClick: () => console.log("Shared"),
50
+ },
51
+ {
52
+ id: "copy",
53
+ label: "Copy Configuration JSON",
54
+ icon: <Copy className="size-4" />,
55
+ onClick: () => console.log("Copied"),
56
+ },
57
+ {
58
+ id: "delete",
59
+ label: "Delete Project",
60
+ icon: <Trash2 className="size-4" />,
61
+ destructive: true,
62
+ onClick: () => console.log("Deleted"),
63
+ },
64
+ ];
65
+
66
+ return (
67
+ <div className="p-8">
68
+ <button
69
+ type="button"
70
+ onClick={() => setIsOpen(true)}
71
+ className="px-4 py-2.5 rounded-xl bg-primary text-primary-foreground text-xs font-semibold"
72
+ >
73
+ Open Action Sheet
74
+ </button>
75
+
76
+ <ActionSheet
77
+ isOpen={isOpen}
78
+ onClose={() => setIsOpen(false)}
79
+ title="Project Options"
80
+ description="Choose an action to perform on this workspace."
81
+ actions={actions}
82
+ />
83
+ </div>
84
+ );
85
+ }
86
+ ```
87
+
88
+ ## Props
89
+
90
+ | Prop | Type | Default | Description |
91
+ | :--- | :--- | :--- | :--- |
92
+ | `isOpen` | `boolean` | required | Visibility state of the action sheet overlay. |
93
+ | `onClose` | `() => void` | required | Callback triggered on backdrop tap, Escape key, or drag dismissal. |
94
+ | `title` | `string` | `undefined` | Header title displayed above action items. |
95
+ | `description` | `string` | `undefined` | Explanatory subtitle below header title. |
96
+ | `actions` | `ActionSheetAction[]` | required | List of action buttons with labels, icons, and destructive flags. |
97
+ | `cancelLabel` | `string` | `"Cancel"` | Label text on the bottom dismissal button. |
98
+ | `className` | `string` | `undefined` | Custom styling overrides merged via `cn()`. |
@@ -0,0 +1,339 @@
1
+ ---
2
+ title: "Action Swap"
3
+ description: "CTA button and slot primitives for swapping text and icons with blur motion."
4
+ category: "Components"
5
+ publishedAt: "2026-06-10"
6
+ updatedAt: "2026-06-28"
7
+ documentation: "references/motion/action-swap.md"
8
+ markdown: "references/motion/action-swap.md"
9
+ license: "MIT"
10
+ ---
11
+
12
+ # Action Swap
13
+
14
+ > CTA button and slot primitives for swapping text and icons with blur motion.
15
+
16
+ ## Install
17
+
18
+ ### Cascade
19
+
20
+ Letter-by-letter slot roll — the old label's letters drop away as the new ones land, left to right.
21
+
22
+ ```bash
23
+ # Install via motion-ui skill CLI:
24
+ python scripts/install-component.py action-swap-cascade --dest ./src
25
+ ```
26
+
27
+ ### Blur
28
+
29
+ Copy-button style swap with blur, opacity and scale.
30
+
31
+ ```bash
32
+ # Install via motion-ui skill CLI:
33
+ python scripts/install-component.py action-swap-blur --dest ./src
34
+ ```
35
+
36
+ ### Roll
37
+
38
+ The next text or icon rolls in from below with blur.
39
+
40
+ ```bash
41
+ # Install via motion-ui skill CLI:
42
+ python scripts/install-component.py action-swap-roll --dest ./src
43
+ ```
44
+
45
+ ## Dependencies
46
+
47
+ - `clsx`
48
+ - `lucide-react`
49
+ - `motion`
50
+ - `react`
51
+ - `tailwind-merge`
52
+
53
+ ## Usage
54
+
55
+ ### Cascade usage
56
+
57
+ Letter-by-letter slot roll — the old label's letters drop away as the new ones land, left to right.
58
+
59
+ ```tsx
60
+ "use client";
61
+
62
+ import { Check, Copy } from "lucide-react";
63
+ import {
64
+ ActionSwapCascadeButton,
65
+ type ActionSwapItem,
66
+ } from "@/components/motion/action-swap-cascade";
67
+
68
+ const CTA_ITEMS: ActionSwapItem[] = [
69
+ {
70
+ id: "copy",
71
+ label: "Copy link",
72
+ icon: <Copy className="h-4 w-4" />,
73
+ ariaLabel: "Copy link",
74
+ },
75
+ {
76
+ id: "copied",
77
+ label: "Copied!",
78
+ icon: <Check className="h-4 w-4" />,
79
+ ariaLabel: "Copied",
80
+ },
81
+ ];
82
+
83
+ export function ActionSwapCascadePreview() {
84
+ return (
85
+ <div className="flex w-full justify-center">
86
+ <ActionSwapCascadeButton items={CTA_ITEMS} variant="primary" />
87
+ </div>
88
+ );
89
+ }
90
+ ```
91
+
92
+ ### Blur usage
93
+
94
+ Copy-button style swap with blur, opacity and scale.
95
+
96
+ ```tsx
97
+ "use client";
98
+
99
+ import { Check, Copy, Moon, Sun } from "lucide-react";
100
+ import { useState } from "react";
101
+ import {
102
+ ActionSwapBlurButton,
103
+ type ActionSwapItem,
104
+ } from "@/components/motion/action-swap-blur";
105
+
106
+ const TEXT_ITEMS: ActionSwapItem[] = [
107
+ { id: "copy", label: "Copy" },
108
+ { id: "copied", label: "Copied" },
109
+ ];
110
+
111
+ const ICON_ITEMS: ActionSwapItem[] = [
112
+ {
113
+ id: "light",
114
+ label: "Light",
115
+ icon: <Sun className="h-4 w-4" />,
116
+ ariaLabel: "Use light theme",
117
+ },
118
+ {
119
+ id: "dark",
120
+ label: "Dark",
121
+ icon: <Moon className="h-4 w-4" />,
122
+ ariaLabel: "Use dark theme",
123
+ },
124
+ ];
125
+
126
+ const CTA_ITEMS: ActionSwapItem[] = [
127
+ {
128
+ id: "copy",
129
+ label: "Copy link",
130
+ icon: <Copy className="h-4 w-4" />,
131
+ ariaLabel: "Copy link",
132
+ },
133
+ {
134
+ id: "copied",
135
+ label: "Copied",
136
+ icon: <Check className="h-4 w-4" />,
137
+ ariaLabel: "Copied",
138
+ },
139
+ ];
140
+
141
+ export function ActionSwapBlurPreview() {
142
+ const [textValue, setTextValue] = useState(TEXT_ITEMS[0]?.id);
143
+ const [iconValue, setIconValue] = useState(ICON_ITEMS[0]?.id);
144
+ const [ctaValue, setCtaValue] = useState(CTA_ITEMS[0]?.id);
145
+
146
+ return (
147
+ <div className="flex flex-wrap items-center justify-center gap-3">
148
+ <ActionSwapBlurButton
149
+ items={TEXT_ITEMS}
150
+ value={textValue}
151
+ onValueChange={setTextValue}
152
+ variant="secondary"
153
+ />
154
+ <ActionSwapBlurButton
155
+ items={ICON_ITEMS}
156
+ value={iconValue}
157
+ onValueChange={setIconValue}
158
+ variant="outline"
159
+ size="icon"
160
+ iconOnly
161
+ />
162
+ <ActionSwapBlurButton
163
+ items={CTA_ITEMS}
164
+ value={ctaValue}
165
+ onValueChange={setCtaValue}
166
+ variant="primary"
167
+ />
168
+ </div>
169
+ );
170
+ }
171
+ ```
172
+
173
+ ### Roll usage
174
+
175
+ The next text or icon rolls in from below with blur.
176
+
177
+ ```tsx
178
+ "use client";
179
+
180
+ import { Moon, Send, Sparkles, Sun } from "lucide-react";
181
+ import { useState } from "react";
182
+ import {
183
+ type ActionSwapItem,
184
+ ActionSwapRollButton,
185
+ } from "@/components/motion/action-swap-roll";
186
+
187
+ const TEXT_ITEMS: ActionSwapItem[] = [
188
+ { id: "idle", label: "Save" },
189
+ { id: "done", label: "Saved" },
190
+ ];
191
+
192
+ const ICON_ITEMS: ActionSwapItem[] = [
193
+ {
194
+ id: "light",
195
+ label: "Light",
196
+ icon: <Sun className="h-4 w-4" />,
197
+ ariaLabel: "Use light theme",
198
+ },
199
+ {
200
+ id: "dark",
201
+ label: "Dark",
202
+ icon: <Moon className="h-4 w-4" />,
203
+ ariaLabel: "Use dark theme",
204
+ },
205
+ ];
206
+
207
+ const CTA_ITEMS: ActionSwapItem[] = [
208
+ {
209
+ id: "send",
210
+ label: "Send invite",
211
+ icon: <Send className="h-4 w-4" />,
212
+ ariaLabel: "Send invite",
213
+ },
214
+ {
215
+ id: "sent",
216
+ label: "Invite sent",
217
+ icon: <Sparkles className="h-4 w-4" />,
218
+ ariaLabel: "Invite sent",
219
+ },
220
+ ];
221
+
222
+ export function ActionSwapRollPreview() {
223
+ const [textValue, setTextValue] = useState(TEXT_ITEMS[0]?.id);
224
+ const [iconValue, setIconValue] = useState(ICON_ITEMS[0]?.id);
225
+ const [ctaValue, setCtaValue] = useState(CTA_ITEMS[0]?.id);
226
+
227
+ return (
228
+ <div className="flex flex-wrap items-center justify-center gap-3">
229
+ <ActionSwapRollButton
230
+ items={TEXT_ITEMS}
231
+ value={textValue}
232
+ onValueChange={setTextValue}
233
+ variant="secondary"
234
+ />
235
+ <ActionSwapRollButton
236
+ items={ICON_ITEMS}
237
+ value={iconValue}
238
+ onValueChange={setIconValue}
239
+ variant="outline"
240
+ size="icon"
241
+ iconOnly
242
+ />
243
+ <ActionSwapRollButton
244
+ items={CTA_ITEMS}
245
+ value={ctaValue}
246
+ onValueChange={setCtaValue}
247
+ variant="primary"
248
+ />
249
+ </div>
250
+ );
251
+ }
252
+ ```
253
+
254
+ ## API Reference
255
+
256
+ ### ActionSwapCascadeButton
257
+
258
+ | Prop | Type | Default | Required | Description |
259
+ | --- | --- | --- | --- | --- |
260
+ | `value` | `string` | — | No | — |
261
+ | `defaultValue` | `string` | — | No | — |
262
+ | `size` | `"icon" \| "sm" \| "md" \| "lg"` | — | No | — |
263
+ | `className` | `string` | — | No | — |
264
+ | `variant` | `"outline" \| "primary" \| "secondary" \| "ghost"` | — | No | — |
265
+ | `items` | `ActionSwapItem[]` | — | Yes | — |
266
+ | `onValueChange` | `((value: string, item: ActionSwapItem) => void)` | — | No | — |
267
+ | `iconOnly` | `boolean` | — | No | — |
268
+ | `cycle` | `boolean` | — | No | — |
269
+
270
+ ### ActionSwapCascadeText
271
+
272
+ | Prop | Type | Default | Required | Description |
273
+ | --- | --- | --- | --- | --- |
274
+ | `value` | `string` | — | Yes | — |
275
+ | `className` | `string` | — | No | — |
276
+
277
+ ### ActionSwapCascadeIcon
278
+
279
+ | Prop | Type | Default | Required | Description |
280
+ | --- | --- | --- | --- | --- |
281
+ | `value` | `string` | — | Yes | — |
282
+ | `className` | `string` | — | No | — |
283
+
284
+ ### ActionSwapBlurButton
285
+
286
+ | Prop | Type | Default | Required | Description |
287
+ | --- | --- | --- | --- | --- |
288
+ | `value` | `string` | — | No | — |
289
+ | `defaultValue` | `string` | — | No | — |
290
+ | `size` | `"icon" \| "sm" \| "md" \| "lg"` | — | No | — |
291
+ | `className` | `string` | — | No | — |
292
+ | `variant` | `"outline" \| "primary" \| "secondary" \| "ghost"` | — | No | — |
293
+ | `items` | `ActionSwapItem[]` | — | Yes | — |
294
+ | `onValueChange` | `((value: string, item: ActionSwapItem) => void)` | — | No | — |
295
+ | `iconOnly` | `boolean` | — | No | — |
296
+ | `cycle` | `boolean` | — | No | — |
297
+
298
+ ### ActionSwapBlurText
299
+
300
+ | Prop | Type | Default | Required | Description |
301
+ | --- | --- | --- | --- | --- |
302
+ | `value` | `string` | — | Yes | — |
303
+ | `className` | `string` | — | No | — |
304
+
305
+ ### ActionSwapBlurIcon
306
+
307
+ | Prop | Type | Default | Required | Description |
308
+ | --- | --- | --- | --- | --- |
309
+ | `value` | `string` | — | Yes | — |
310
+ | `className` | `string` | — | No | — |
311
+
312
+ ### ActionSwapRollButton
313
+
314
+ | Prop | Type | Default | Required | Description |
315
+ | --- | --- | --- | --- | --- |
316
+ | `value` | `string` | — | No | — |
317
+ | `defaultValue` | `string` | — | No | — |
318
+ | `size` | `"icon" \| "sm" \| "md" \| "lg"` | — | No | — |
319
+ | `className` | `string` | — | No | — |
320
+ | `variant` | `"outline" \| "primary" \| "secondary" \| "ghost"` | — | No | — |
321
+ | `items` | `ActionSwapItem[]` | — | Yes | — |
322
+ | `onValueChange` | `((value: string, item: ActionSwapItem) => void)` | — | No | — |
323
+ | `iconOnly` | `boolean` | — | No | — |
324
+ | `cycle` | `boolean` | — | No | — |
325
+
326
+ ### ActionSwapRollText
327
+
328
+ | Prop | Type | Default | Required | Description |
329
+ | --- | --- | --- | --- | --- |
330
+ | `value` | `string` | — | Yes | — |
331
+ | `className` | `string` | — | No | — |
332
+
333
+ ### ActionSwapRollIcon
334
+
335
+ | Prop | Type | Default | Required | Description |
336
+ | --- | --- | --- | --- | --- |
337
+ | `value` | `string` | — | Yes | — |
338
+ | `className` | `string` | — | No | — |
339
+