@heyramzi/ui 6.1.0 → 8.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 (332) hide show
  1. package/COMPONENTS.md +32 -40
  2. package/README.md +10 -4
  3. package/package.json +31 -29
  4. package/scripts/sync-shadcn.mjs +29 -16
  5. package/scripts/sync-transitions.mjs +11 -11
  6. package/src/ai/ai-button/AiButton.svelte +86 -0
  7. package/src/ai/ai-button/index.ts +4 -0
  8. package/src/ai/confirmation/Confirmation.svelte +8 -8
  9. package/src/ai/confirmation/confirmation-context.svelte.ts +2 -2
  10. package/src/ai/generation-progress/GenerationProgress.svelte +354 -0
  11. package/src/ai/generation-progress/index.ts +7 -0
  12. package/src/ai/index.ts +16 -24
  13. package/src/ai/prompt-input/PromptInput.svelte +19 -1
  14. package/src/ai/prompt-input/PromptInputSubmit.svelte +9 -3
  15. package/src/ai/reasoning/Reasoning.svelte +11 -8
  16. package/src/ambient.d.ts +4 -0
  17. package/src/animations/README.md +17 -17
  18. package/src/animations/index.css +3 -14
  19. package/src/animations/upstream-coverage.test.ts +1 -1
  20. package/src/components/copy/clipboard.test.ts +206 -0
  21. package/src/components/copy/clipboard.ts +49 -0
  22. package/src/components/copy/copied.svelte.ts +39 -0
  23. package/src/components/copy/copy-button.svelte +175 -0
  24. package/src/components/copy/copy-button.test.ts +110 -0
  25. package/src/components/copy/index.ts +3 -0
  26. package/src/components/data-table/data-table.test.ts +134 -0
  27. package/src/components/data-table/data-table.ts +77 -0
  28. package/src/components/data-table/index.ts +20 -0
  29. package/src/components/data-table/infinite-scroll.svelte +69 -0
  30. package/src/components/data-table/pagination.svelte +62 -0
  31. package/src/components/data-table/row-arrow.svelte +28 -0
  32. package/src/components/data-table/row-context-menu.svelte +106 -0
  33. package/src/components/data-table/row-context-menu.test.ts +18 -0
  34. package/src/components/data-table/sortable-head.svelte +56 -0
  35. package/src/components/data-table/table-skeleton.svelte +83 -0
  36. package/src/components/hold-to-confirm/hold-to-confirm.svelte +232 -0
  37. package/src/components/hold-to-confirm/index.ts +1 -0
  38. package/src/components/icon/icon.svelte +23 -0
  39. package/src/components/icon/index.ts +1 -0
  40. package/src/components/language-flag/index.ts +1 -0
  41. package/src/components/language-flag/language-flag.svelte +60 -0
  42. package/src/components/list-page/detail-empty.svelte +50 -0
  43. package/src/components/list-page/detail-header.svelte +107 -0
  44. package/src/components/list-page/detail-panel.svelte +90 -0
  45. package/src/components/list-page/detail-row.svelte +36 -0
  46. package/src/components/list-page/detail-stack.svelte +33 -0
  47. package/src/components/list-page/empty-state.svelte +91 -0
  48. package/src/components/list-page/filter-item.svelte +49 -0
  49. package/src/components/list-page/filter-popover.svelte +88 -0
  50. package/src/components/list-page/filter-section.ts +12 -0
  51. package/src/components/list-page/grouped-list.svelte +116 -0
  52. package/src/components/list-page/index.ts +28 -0
  53. package/src/components/list-page/list-page-shell.svelte +195 -0
  54. package/src/components/list-page/list-table.ts +19 -0
  55. package/src/components/list-page/master-detail.svelte +206 -0
  56. package/src/components/list-page/master-detail.test.ts +37 -0
  57. package/src/components/list-page/notice-bar.svelte +68 -0
  58. package/src/components/list-page/prev-next.svelte +104 -0
  59. package/src/components/list-page/queue-rail.ts +25 -0
  60. package/src/components/list-page/rail-body.svelte +29 -0
  61. package/src/components/list-page/rail-empty.svelte +51 -0
  62. package/src/components/list-page/rail-head.svelte +49 -0
  63. package/src/components/list-page/rail-row.svelte +163 -0
  64. package/src/components/list-page/section-host.ts +24 -0
  65. package/src/components/list-page/section-label.svelte +39 -0
  66. package/src/components/list-page/step.test.ts +21 -0
  67. package/src/components/list-page/step.ts +10 -0
  68. package/src/components/list-page/toolbar-search.svelte +63 -0
  69. package/src/components/list-page/toolbar-trigger.ts +23 -0
  70. package/src/components/list-page/types.ts +1 -0
  71. package/src/components/locale-switch/index.ts +1 -0
  72. package/src/components/locale-switch/locale-switch.svelte +59 -0
  73. package/src/components/mark/index.ts +1 -0
  74. package/src/components/mark/mark.svelte +70 -0
  75. package/src/components/open-in/index.ts +6 -0
  76. package/src/components/open-in/open-in.svelte +106 -0
  77. package/src/components/picker/index.ts +4 -0
  78. package/src/components/picker/mark-picker.svelte +84 -0
  79. package/src/components/picker/picker.svelte +143 -0
  80. package/src/components/picker/trigger.ts +42 -0
  81. package/src/components/picker/types.ts +26 -0
  82. package/src/components/segmented/animated-tabs.svelte +175 -0
  83. package/src/components/segmented/collapse.test.ts +49 -0
  84. package/src/components/segmented/collapse.ts +39 -0
  85. package/src/components/segmented/index.ts +41 -0
  86. package/src/components/segmented/section-runs.svelte +79 -0
  87. package/src/components/segmented/segment.svelte +106 -0
  88. package/src/components/segmented/segmented-filter.svelte +125 -0
  89. package/src/components/segmented/segmented-nav.svelte +82 -0
  90. package/src/components/segmented/segmented-overflow.svelte +85 -0
  91. package/src/components/segmented/segmented-track.svelte +181 -0
  92. package/src/components/segmented/segmented.test.ts +20 -0
  93. package/src/components/segmented/segmented.ts +80 -0
  94. package/src/components/star-rating-input/index.ts +9 -0
  95. package/src/components/star-rating-input/star-rating-input.svelte +256 -0
  96. package/src/components/svg/index.ts +1 -0
  97. package/src/components/svg/svg.svelte +9 -0
  98. package/src/effects/border-beam/BorderBeam.svelte +1 -1
  99. package/src/effects/image-comparison/ImageComparison.css +42 -8
  100. package/src/effects/image-comparison/ImageComparison.svelte +138 -21
  101. package/src/effects/image-comparison/compare.test.ts +17 -0
  102. package/src/effects/image-comparison/compare.ts +5 -0
  103. package/src/effects/interactive-hover-button/InteractiveHoverButton.svelte +338 -0
  104. package/src/effects/magic-card/MagicCard.css +47 -0
  105. package/src/effects/magic-card/MagicCard.svelte +57 -0
  106. package/src/effects/marquee/Marquee.css +27 -1
  107. package/src/effects/marquee/Marquee.svelte +67 -3
  108. package/src/effects/reveal/index.ts +2 -1
  109. package/src/effects/reveal/observe.test.ts +60 -0
  110. package/src/effects/reveal/observe.ts +33 -1
  111. package/src/effects/reveal/types.ts +7 -0
  112. package/src/effects/theme-toggle/ThemeToggle.css +199 -6
  113. package/src/effects/theme-toggle/ThemeToggle.svelte +51 -26
  114. package/src/gallery.test.ts +52 -0
  115. package/src/index.ts +5 -1
  116. package/src/lib/panel.ts +7 -1
  117. package/src/lib/sliding-pill.ts +68 -0
  118. package/src/lib/theme-transition.ts +41 -13
  119. package/src/lib/tone.ts +48 -0
  120. package/src/shadcn/accordion/accordion-trigger.svelte +15 -6
  121. package/src/shadcn/alert/alert.svelte +3 -1
  122. package/src/shadcn/badge/badge.svelte +8 -7
  123. package/src/shadcn/breadcrumb/breadcrumb-ellipsis.svelte +2 -2
  124. package/src/shadcn/breadcrumb/breadcrumb-separator.svelte +2 -2
  125. package/src/shadcn/calendar/calendar-month-select.svelte +2 -2
  126. package/src/shadcn/calendar/calendar-next-button.svelte +2 -2
  127. package/src/shadcn/calendar/calendar-prev-button.svelte +2 -2
  128. package/src/shadcn/calendar/calendar-year-select.svelte +2 -2
  129. package/src/shadcn/calendar/calendar.svelte +6 -0
  130. package/src/shadcn/code-block/code-block-actions.svelte +23 -0
  131. package/src/shadcn/code-block/code-block-content.svelte +55 -0
  132. package/src/shadcn/code-block/code-block-copy-button.svelte +10 -0
  133. package/src/shadcn/code-block/code-block-footer.svelte +20 -0
  134. package/src/shadcn/code-block/code-block-header.svelte +23 -0
  135. package/src/shadcn/code-block/code-block-line.svelte +71 -0
  136. package/src/shadcn/code-block/code-block-title.svelte +23 -0
  137. package/src/shadcn/code-block/code-block.svelte +47 -0
  138. package/src/shadcn/code-block/index.ts +42 -0
  139. package/src/shadcn/command/index.ts +3 -0
  140. package/src/shadcn/field/index.ts +3 -0
  141. package/src/shadcn/field/simple-field.svelte +71 -0
  142. package/src/shadcn/field/simple-field.test.ts +47 -0
  143. package/src/shadcn/hooks/highlighter.ts +132 -0
  144. package/src/shadcn/hooks/use-highlighted-code.svelte.ts +98 -0
  145. package/src/shadcn/kbd/index.ts +10 -0
  146. package/src/shadcn/kbd/kbd-group.svelte +20 -0
  147. package/src/shadcn/kbd/kbd.svelte +23 -0
  148. package/src/shadcn/message-scroller/index.ts +28 -0
  149. package/src/shadcn/message-scroller/message-scroller-button.svelte +52 -0
  150. package/src/shadcn/message-scroller/message-scroller-content.svelte +17 -0
  151. package/src/shadcn/message-scroller/message-scroller-item.svelte +22 -0
  152. package/src/shadcn/message-scroller/message-scroller-provider.svelte +7 -0
  153. package/src/shadcn/message-scroller/message-scroller-viewport.svelte +20 -0
  154. package/src/shadcn/message-scroller/message-scroller.svelte +20 -0
  155. package/src/shadcn/radio-group/radio-group-item.svelte +3 -2
  156. package/src/shadcn/sheet/sheet-content.svelte +1 -0
  157. package/src/shadcn/sheet/sheet.css +48 -0
  158. package/src/shadcn/sonner/sonner.svelte +7 -10
  159. package/src/shadcn/tabs/tabs-list.svelte +13 -2
  160. package/src/shadcn/tabs/tabs-trigger.svelte +1 -1
  161. package/src/shadcn/toggle-group/toggle-group.svelte +10 -3
  162. package/src/shadcn/trace/index.ts +29 -0
  163. package/src/shadcn/trace/trace-collapsible-content.svelte +29 -0
  164. package/src/shadcn/trace/trace-collapsible-trigger.svelte +29 -0
  165. package/src/shadcn/trace/trace-collapsible.svelte +20 -0
  166. package/src/shadcn/trace/trace-description.svelte +20 -0
  167. package/src/shadcn/trace/trace-icon.svelte +24 -0
  168. package/src/shadcn/trace/trace-line.svelte +31 -0
  169. package/src/shadcn/trace/trace-title.svelte +20 -0
  170. package/src/shadcn/trace/trace.svelte +23 -0
  171. package/src/ai/composer/Composer.css +0 -108
  172. package/src/ai/composer/Composer.svelte +0 -111
  173. package/src/ai/composer/index.ts +0 -10
  174. package/src/ai/conversation/Conversation.svelte +0 -28
  175. package/src/ai/conversation/ConversationContent.svelte +0 -35
  176. package/src/ai/conversation/ConversationEmptyState.svelte +0 -46
  177. package/src/ai/conversation/ConversationScrollButton.svelte +0 -51
  178. package/src/ai/conversation/index.ts +0 -33
  179. package/src/ai/conversation/stick-to-bottom-context.svelte.ts +0 -131
  180. package/src/animations/accordion.css +0 -58
  181. package/src/animations/icon-swap.css +0 -43
  182. package/src/animations/notification-badge.css +0 -81
  183. package/src/animations/panel.css +0 -86
  184. package/src/animations/reasoning-stream.css +0 -49
  185. package/src/animations/skeleton-reveal.css +0 -97
  186. package/src/animations/streaming-text.css +0 -31
  187. package/src/animations/tabs-sliding.css +0 -83
  188. package/src/animations/texts-reveal.css +0 -70
  189. package/src/animations/tooltip.css +0 -72
  190. package/src/animations/view-transition-reveal.ts +0 -74
  191. package/src/charts/animated-value.css +0 -7
  192. package/src/charts/animated-value.svelte +0 -110
  193. package/src/charts/area-chart.css +0 -29
  194. package/src/charts/area-chart.svelte +0 -195
  195. package/src/charts/bar-chart.css +0 -119
  196. package/src/charts/bar-chart.svelte +0 -269
  197. package/src/charts/charts.css +0 -201
  198. package/src/charts/crosshair.svelte +0 -35
  199. package/src/charts/donut-chart.css +0 -56
  200. package/src/charts/donut-chart.svelte +0 -158
  201. package/src/charts/edge-fade.svelte +0 -43
  202. package/src/charts/edge-fade.ts +0 -16
  203. package/src/charts/figure.css +0 -100
  204. package/src/charts/figure.svelte +0 -122
  205. package/src/charts/gauge-chart.css +0 -94
  206. package/src/charts/gauge-chart.svelte +0 -303
  207. package/src/charts/hover-band.test.ts +0 -30
  208. package/src/charts/hover-band.ts +0 -21
  209. package/src/charts/hover-focus.svelte +0 -85
  210. package/src/charts/index.ts +0 -30
  211. package/src/charts/legend.css +0 -131
  212. package/src/charts/legend.svelte +0 -112
  213. package/src/charts/line-chart.css +0 -26
  214. package/src/charts/line-chart.svelte +0 -256
  215. package/src/charts/motion.ts +0 -19
  216. package/src/charts/number-chart.css +0 -168
  217. package/src/charts/number-chart.svelte +0 -177
  218. package/src/charts/primitives/chart-container.svelte +0 -57
  219. package/src/charts/primitives/chart-style.svelte +0 -36
  220. package/src/charts/primitives/chart-tooltip.svelte +0 -161
  221. package/src/charts/primitives/chart-utils.ts +0 -54
  222. package/src/charts/primitives/index.ts +0 -11
  223. package/src/charts/reveal.svelte +0 -61
  224. package/src/charts/ring-chart.css +0 -96
  225. package/src/charts/ring-chart.svelte +0 -158
  226. package/src/charts/sparkline.css +0 -45
  227. package/src/charts/sparkline.svelte +0 -140
  228. package/src/charts/stat-card.css +0 -103
  229. package/src/charts/stat-card.svelte +0 -267
  230. package/src/charts/time-series-chart.css +0 -28
  231. package/src/charts/time-series-chart.svelte +0 -179
  232. package/src/charts/trend-pill.css +0 -38
  233. package/src/charts/trend-pill.svelte +0 -48
  234. package/src/lib/hooks/is-mobile.svelte.ts +0 -11
  235. package/src/lib/utils.ts +0 -45
  236. package/src/showcase/AiSection.svelte +0 -157
  237. package/src/showcase/AnimationsSection.svelte +0 -1658
  238. package/src/showcase/ChartsSection.svelte +0 -458
  239. package/src/showcase/EffectsSection.svelte +0 -152
  240. package/src/showcase/ShadcnSection.svelte +0 -27
  241. package/src/showcase/ShowcaseImport.svelte +0 -126
  242. package/src/showcase/ShowcaseList.svelte +0 -132
  243. package/src/showcase/ShowcaseNav.svelte +0 -247
  244. package/src/showcase/ShowcaseSection.svelte +0 -112
  245. package/src/showcase/ShowcaseShell.svelte +0 -55
  246. package/src/showcase/ShowcaseStage.svelte +0 -342
  247. package/src/showcase/ShowcaseVariant.svelte +0 -109
  248. package/src/showcase/assets/image-reveal/art-1.jpg +0 -0
  249. package/src/showcase/assets/image-reveal/art-2.jpg +0 -0
  250. package/src/showcase/assets/image-reveal/art-3.jpg +0 -0
  251. package/src/showcase/check.svg +0 -1
  252. package/src/showcase/chevron-arms.svg +0 -2
  253. package/src/showcase/chevron-down.svg +0 -1
  254. package/src/showcase/copy.svg +0 -2
  255. package/src/showcase/demos/ai/confirmation.svelte +0 -59
  256. package/src/showcase/demos/ai/conversation.svelte +0 -59
  257. package/src/showcase/demos/ai/loading-state.svelte +0 -19
  258. package/src/showcase/demos/ai/prompt-input.svelte +0 -57
  259. package/src/showcase/demos/ai/reasoning.svelte +0 -19
  260. package/src/showcase/demos/ai/thinking-dots.svelte +0 -15
  261. package/src/showcase/demos/ai/voice-waveform.svelte +0 -24
  262. package/src/showcase/demos/effects/animated-beam.svelte +0 -50
  263. package/src/showcase/demos/effects/animated-group.svelte +0 -47
  264. package/src/showcase/demos/effects/border-beam-default.svelte +0 -20
  265. package/src/showcase/demos/effects/border-beam-line.svelte +0 -20
  266. package/src/showcase/demos/effects/border-beam-mono.svelte +0 -20
  267. package/src/showcase/demos/effects/border-beam-sunset.svelte +0 -20
  268. package/src/showcase/demos/effects/image-comparison.svelte +0 -25
  269. package/src/showcase/demos/effects/image-reveal.svelte +0 -49
  270. package/src/showcase/demos/effects/in-view.svelte +0 -41
  271. package/src/showcase/demos/effects/integrations-hub.svelte +0 -82
  272. package/src/showcase/demos/effects/magnetic.svelte +0 -31
  273. package/src/showcase/demos/effects/marquee.svelte +0 -33
  274. package/src/showcase/demos/effects/progressive-blur.svelte +0 -47
  275. package/src/showcase/demos/effects/spotlight.svelte +0 -40
  276. package/src/showcase/demos/effects/text-effect.svelte +0 -55
  277. package/src/showcase/demos/shadcn/accordion.svelte +0 -45
  278. package/src/showcase/demos/shadcn/alert-dialog.svelte +0 -23
  279. package/src/showcase/demos/shadcn/alert.svelte +0 -30
  280. package/src/showcase/demos/shadcn/attachment.svelte +0 -71
  281. package/src/showcase/demos/shadcn/avatar.svelte +0 -30
  282. package/src/showcase/demos/shadcn/badge.svelte +0 -26
  283. package/src/showcase/demos/shadcn/breadcrumb.svelte +0 -34
  284. package/src/showcase/demos/shadcn/bubble.svelte +0 -36
  285. package/src/showcase/demos/shadcn/button.svelte +0 -11
  286. package/src/showcase/demos/shadcn/calendar.svelte +0 -8
  287. package/src/showcase/demos/shadcn/card.svelte +0 -39
  288. package/src/showcase/demos/shadcn/checkbox.svelte +0 -39
  289. package/src/showcase/demos/shadcn/collapsible.svelte +0 -20
  290. package/src/showcase/demos/shadcn/command.svelte +0 -48
  291. package/src/showcase/demos/shadcn/context-menu.svelte +0 -54
  292. package/src/showcase/demos/shadcn/demo-harness.svelte +0 -12
  293. package/src/showcase/demos/shadcn/demos.test.ts +0 -20
  294. package/src/showcase/demos/shadcn/dialog.svelte +0 -38
  295. package/src/showcase/demos/shadcn/dropdown-menu.svelte +0 -59
  296. package/src/showcase/demos/shadcn/empty.svelte +0 -29
  297. package/src/showcase/demos/shadcn/field.svelte +0 -115
  298. package/src/showcase/demos/shadcn/hover-card.svelte +0 -32
  299. package/src/showcase/demos/shadcn/index.ts +0 -358
  300. package/src/showcase/demos/shadcn/input-otp.svelte +0 -19
  301. package/src/showcase/demos/shadcn/input.svelte +0 -5
  302. package/src/showcase/demos/shadcn/label.svelte +0 -11
  303. package/src/showcase/demos/shadcn/marker.svelte +0 -30
  304. package/src/showcase/demos/shadcn/message.svelte +0 -75
  305. package/src/showcase/demos/shadcn/popover.svelte +0 -36
  306. package/src/showcase/demos/shadcn/progress.svelte +0 -13
  307. package/src/showcase/demos/shadcn/radio-group.svelte +0 -19
  308. package/src/showcase/demos/shadcn/scroll-area.svelte +0 -18
  309. package/src/showcase/demos/shadcn/select.svelte +0 -29
  310. package/src/showcase/demos/shadcn/separator.svelte +0 -12
  311. package/src/showcase/demos/shadcn/sheet.svelte +0 -48
  312. package/src/showcase/demos/shadcn/skeleton.svelte +0 -11
  313. package/src/showcase/demos/shadcn/slider.svelte +0 -7
  314. package/src/showcase/demos/shadcn/sonner.svelte +0 -18
  315. package/src/showcase/demos/shadcn/spinner.svelte +0 -11
  316. package/src/showcase/demos/shadcn/switch.svelte +0 -9
  317. package/src/showcase/demos/shadcn/table.svelte +0 -76
  318. package/src/showcase/demos/shadcn/tabs.svelte +0 -62
  319. package/src/showcase/demos/shadcn/textarea.svelte +0 -5
  320. package/src/showcase/demos/shadcn/toggle-group.svelte +0 -18
  321. package/src/showcase/demos/shadcn/toggle.svelte +0 -14
  322. package/src/showcase/demos/shadcn/tooltip.svelte +0 -13
  323. package/src/showcase/heart.svg +0 -1
  324. package/src/showcase/index.ts +0 -38
  325. package/src/showcase/kit.test.ts +0 -72
  326. package/src/showcase/kit.ts +0 -17
  327. package/src/showcase/plus.svg +0 -1
  328. package/src/showcase/showcase-shell.css +0 -91
  329. package/src/showcase/stacked-section.css +0 -15
  330. package/src/showcase/success-check.svg +0 -1
  331. package/src/showcase/types.ts +0 -29
  332. package/src/svg-raw.d.ts +0 -7
@@ -1,15 +0,0 @@
1
- <script lang="ts">
2
- import { ThinkingDots } from "../../../ai/index.js";
3
- </script>
4
-
5
- <div class="c"><ThinkingDots label="Thinking" /></div>
6
-
7
- <style>
8
- .c {
9
- display: flex;
10
- align-items: center;
11
- justify-content: center;
12
- width: 100%;
13
- min-height: 5rem;
14
- }
15
- </style>
@@ -1,24 +0,0 @@
1
- <script lang="ts">
2
- import { VoiceWaveform } from "../../../ai/index.js";
3
-
4
- let active = $state(true);
5
- </script>
6
-
7
- <button type="button" class="c" onclick={() => (active = !active)}>
8
- <VoiceWaveform {active} />
9
- </button>
10
-
11
- <style>
12
- .c {
13
- display: flex;
14
- align-items: center;
15
- justify-content: center;
16
- width: 100%;
17
- min-height: 5rem;
18
- background: none;
19
- border: none;
20
- padding: 0;
21
- color: var(--primary);
22
- cursor: pointer;
23
- }
24
- </style>
@@ -1,50 +0,0 @@
1
- <script lang="ts">
2
- import { AnimatedBeam } from "../../../index.js";
3
-
4
- let container = $state<HTMLElement | null>(null);
5
- let from = $state<HTMLElement | null>(null);
6
- let to = $state<HTMLElement | null>(null);
7
- </script>
8
-
9
- <div bind:this={container} class="stage">
10
- <div bind:this={from} class="node">A</div>
11
- <div bind:this={to} class="node">B</div>
12
- {#if container && from && to}
13
- <AnimatedBeam
14
- containerRef={container}
15
- fromRef={from}
16
- toRef={to}
17
- fromAnchor="right"
18
- toAnchor="left"
19
- gradientStartColor="#6647F0"
20
- gradientStopColor="#22d3ee"
21
- pathColor="var(--muted-foreground)"
22
- />
23
- {/if}
24
- </div>
25
-
26
- <style>
27
- .stage {
28
- position: relative;
29
- display: flex;
30
- align-items: center;
31
- justify-content: space-between;
32
- width: 100%;
33
- min-height: 7rem;
34
- padding: 0 1.25rem;
35
- }
36
- .node {
37
- z-index: 1;
38
- display: flex;
39
- align-items: center;
40
- justify-content: center;
41
- width: 2.75rem;
42
- height: 2.75rem;
43
- border-radius: 0.75rem;
44
- font-size: 0.8125rem;
45
- font-weight: 600;
46
- color: var(--foreground);
47
- background: var(--card);
48
- border: 1px solid var(--border);
49
- }
50
- </style>
@@ -1,47 +0,0 @@
1
- <script lang="ts">
2
- import { AnimatedGroup } from "../../../index.js";
3
-
4
- const rows = ["Audit", "Blueprint", "Build", "Handover"];
5
- let run = $state(0);
6
- </script>
7
-
8
- <div class="stage">
9
- {#key run}
10
- <AnimatedGroup class="list" preset="blur-slide" stagger={70} onMount>
11
- {#each rows as row (row)}
12
- <span class="pill">{row}</span>
13
- {/each}
14
- </AnimatedGroup>
15
- {/key}
16
- <button onclick={() => run++}>Replay</button>
17
- </div>
18
-
19
- <style>
20
- .stage {
21
- display: grid;
22
- gap: 0.75rem;
23
- justify-items: start;
24
- padding: 1rem;
25
- }
26
- .stage :global(.list) {
27
- display: flex;
28
- flex-wrap: wrap;
29
- gap: 0.5rem;
30
- }
31
- .pill {
32
- padding: 0.375rem 0.75rem;
33
- font-size: 0.8125rem;
34
- color: var(--foreground);
35
- background: var(--card);
36
- border: 1px solid var(--border);
37
- border-radius: 999px;
38
- }
39
- button {
40
- padding: 0.25rem 0.625rem;
41
- font-size: 0.75rem;
42
- color: var(--foreground);
43
- background: var(--card);
44
- border: 1px solid var(--border);
45
- border-radius: 0.5rem;
46
- }
47
- </style>
@@ -1,20 +0,0 @@
1
- <script lang="ts">
2
- import { BorderBeam } from "../../../index.js";
3
- </script>
4
-
5
- <BorderBeam>
6
- <div class="card-inner">Hover hosting card</div>
7
- </BorderBeam>
8
-
9
- <style>
10
- .card-inner {
11
- display: flex;
12
- align-items: center;
13
- justify-content: center;
14
- padding: 1.25rem 1rem;
15
- font-size: 0.875rem;
16
- color: var(--foreground);
17
- background: var(--card);
18
- border-radius: 0.5rem;
19
- }
20
- </style>
@@ -1,20 +0,0 @@
1
- <script lang="ts">
2
- import { BorderBeam } from "../../../index.js";
3
- </script>
4
-
5
- <BorderBeam size="line" colorVariant="ocean">
6
- <div class="card-inner">Line ocean beam</div>
7
- </BorderBeam>
8
-
9
- <style>
10
- .card-inner {
11
- display: flex;
12
- align-items: center;
13
- justify-content: center;
14
- padding: 1.25rem 1rem;
15
- font-size: 0.875rem;
16
- color: var(--foreground);
17
- background: var(--card);
18
- border-radius: 0.5rem;
19
- }
20
- </style>
@@ -1,20 +0,0 @@
1
- <script lang="ts">
2
- import { BorderBeam } from "../../../index.js";
3
- </script>
4
-
5
- <BorderBeam size="sm" colorVariant="mono">
6
- <div class="card-inner">Small mono beam</div>
7
- </BorderBeam>
8
-
9
- <style>
10
- .card-inner {
11
- display: flex;
12
- align-items: center;
13
- justify-content: center;
14
- padding: 1.25rem 1rem;
15
- font-size: 0.875rem;
16
- color: var(--foreground);
17
- background: var(--card);
18
- border-radius: 0.5rem;
19
- }
20
- </style>
@@ -1,20 +0,0 @@
1
- <script lang="ts">
2
- import { BorderBeam } from "../../../index.js";
3
- </script>
4
-
5
- <BorderBeam staticColors duration={6} colorVariant="sunset">
6
- <div class="card-inner">Slow sunset beam</div>
7
- </BorderBeam>
8
-
9
- <style>
10
- .card-inner {
11
- display: flex;
12
- align-items: center;
13
- justify-content: center;
14
- padding: 1.25rem 1rem;
15
- font-size: 0.875rem;
16
- color: var(--foreground);
17
- background: var(--card);
18
- border-radius: 0.5rem;
19
- }
20
- </style>
@@ -1,25 +0,0 @@
1
- <script lang="ts">
2
- import { ImageComparison } from "../../../index.js";
3
-
4
- // Inline SVGs so the demo carries no asset and still shows the wipe.
5
- const plate = (bg: string, fg: string, text: string) =>
6
- "data:image/svg+xml;utf8," +
7
- encodeURIComponent(
8
- `<svg xmlns="http://www.w3.org/2000/svg" width="480" height="270"><rect width="480" height="270" fill="${bg}"/><text x="50%" y="52%" text-anchor="middle" font-family="sans-serif" font-size="34" fill="${fg}">${text}</text></svg>`,
9
- );
10
- </script>
11
-
12
- <div class="frame">
13
- <ImageComparison
14
- class="compare"
15
- before={{ src: plate("#1f2937", "#9ca3af", "Before"), alt: "The board before the rebuild" }}
16
- after={{ src: plate("#0ea5e9", "#052e3f", "After"), alt: "The board after the rebuild" }}
17
- />
18
- </div>
19
-
20
- <style>
21
- .frame :global(.compare) {
22
- aspect-ratio: 16 / 9;
23
- border-radius: 0.75rem;
24
- }
25
- </style>
@@ -1,49 +0,0 @@
1
- <script lang="ts">
2
- import { ImageReveal, type ImageRevealHandle } from "../../../index.js";
3
- import art1 from "../../assets/image-reveal/art-1.jpg";
4
- import art2 from "../../assets/image-reveal/art-2.jpg";
5
- import art3 from "../../assets/image-reveal/art-3.jpg";
6
-
7
- // WHY: real photos served same-origin so the canvas pixel-sampling stays
8
- // untainted, standing in for an LLM-generated image the loader resolves into.
9
- const images = [art1, art2, art3];
10
- let reveal = $state<ImageRevealHandle>();
11
- </script>
12
-
13
- <div class="wrap">
14
- <div class="frame">
15
- <ImageReveal bind:this={reveal} src={images} autoReveal revealHoldMs={2200} />
16
- </div>
17
- <button type="button" class="btn" onclick={() => reveal?.triggerReveal()}>Reveal image</button>
18
- </div>
19
-
20
- <style>
21
- .wrap {
22
- display: flex;
23
- flex-direction: column;
24
- gap: 0.625rem;
25
- width: 100%;
26
- }
27
- .frame {
28
- width: 100%;
29
- height: 11rem;
30
- border-radius: 0.75rem;
31
- overflow: hidden;
32
- border: 1px solid var(--border);
33
- }
34
- .btn {
35
- align-self: flex-start;
36
- padding: 0.375rem 0.75rem;
37
- font-size: 0.75rem;
38
- font-weight: 500;
39
- color: var(--foreground);
40
- background: var(--card);
41
- border: 1px solid var(--border);
42
- border-radius: 0.5rem;
43
- cursor: pointer;
44
- transition: transform 0.1s;
45
- }
46
- .btn:active {
47
- transform: scale(0.97);
48
- }
49
- </style>
@@ -1,41 +0,0 @@
1
- <script lang="ts">
2
- import { InView } from "../../../index.js";
3
-
4
- const blocks = [1, 2, 3, 4];
5
- </script>
6
-
7
- <div class="scroller">
8
- <p class="hint">Scroll this panel.</p>
9
- {#each blocks as n (n)}
10
- <InView preset="slide" amount={0.4} once={false} class="block">
11
- {#snippet children()}
12
- <span>Block {n}</span>
13
- {/snippet}
14
- </InView>
15
- {/each}
16
- </div>
17
-
18
- <style>
19
- .scroller {
20
- display: grid;
21
- gap: 0.75rem;
22
- height: 11rem;
23
- overflow-y: auto;
24
- padding: 0.75rem;
25
- }
26
- .hint {
27
- margin: 0;
28
- font-size: 0.75rem;
29
- color: var(--muted-foreground);
30
- }
31
- .scroller :global(.block) {
32
- display: grid;
33
- place-items: center;
34
- min-height: 4.5rem;
35
- font-size: 0.8125rem;
36
- color: var(--foreground);
37
- background: var(--card);
38
- border: 1px solid var(--border);
39
- border-radius: 0.75rem;
40
- }
41
- </style>
@@ -1,82 +0,0 @@
1
- <script lang="ts">
2
- import { AnimatedBeam } from "../../../index.js";
3
-
4
- let container = $state<HTMLElement | null>(null);
5
- let hub = $state<HTMLElement | null>(null);
6
- let sources = $state<HTMLElement[]>([]);
7
-
8
- const labels = ["1", "2", "3"];
9
- const colors = ["#7B68EE", "#22d3ee", "#10b981"];
10
- </script>
11
-
12
- <div bind:this={container} class="stage">
13
- <div class="col">
14
- {#each labels as label, i (label)}
15
- <div bind:this={sources[i]} class="node" style="border-color: {colors[i]}55">{label}</div>
16
- {/each}
17
- </div>
18
- <div class="hub-wrap">
19
- <div bind:this={hub} class="node hub">UI</div>
20
- </div>
21
-
22
- {#each labels as _, i (i)}
23
- {#if container && hub && sources[i]}
24
- <AnimatedBeam
25
- containerRef={container}
26
- fromRef={sources[i]}
27
- toRef={hub}
28
- fromAnchor="right"
29
- toAnchor="left"
30
- delay={i * 0.6}
31
- duration={4}
32
- gradientStartColor={colors[i]}
33
- gradientStopColor="#6647F0"
34
- pathColor="var(--muted-foreground)"
35
- pathOpacity={0.12}
36
- />
37
- {/if}
38
- {/each}
39
- </div>
40
-
41
- <style>
42
- .stage {
43
- position: relative;
44
- display: grid;
45
- grid-template-columns: auto 1fr;
46
- align-items: center;
47
- gap: 3rem;
48
- width: 100%;
49
- min-height: 9rem;
50
- padding: 0 1.25rem;
51
- }
52
- .col {
53
- z-index: 1;
54
- display: flex;
55
- flex-direction: column;
56
- gap: 0.75rem;
57
- }
58
- .hub-wrap {
59
- z-index: 1;
60
- display: flex;
61
- justify-content: center;
62
- }
63
- .node {
64
- display: flex;
65
- align-items: center;
66
- justify-content: center;
67
- width: 2.5rem;
68
- height: 2.5rem;
69
- border-radius: 0.7rem;
70
- font-size: 0.75rem;
71
- font-weight: 600;
72
- color: var(--foreground);
73
- background: var(--card);
74
- border: 1px solid var(--border);
75
- }
76
- .hub {
77
- width: 3.25rem;
78
- height: 3.25rem;
79
- border-color: color-mix(in oklab, #6647f0 40%, transparent);
80
- box-shadow: 0 0 0 4px color-mix(in oklab, #6647f0 10%, transparent);
81
- }
82
- </style>
@@ -1,31 +0,0 @@
1
- <script lang="ts">
2
- import { magnetic } from "../../../index.js";
3
- </script>
4
-
5
- <div class="stage">
6
- <button class="cta" use:magnetic={{ intensity: 0.5, range: 130 }}>Book a call</button>
7
- <p class="hint">Move the pointer near the button.</p>
8
- </div>
9
-
10
- <style>
11
- .stage {
12
- display: grid;
13
- gap: 0.75rem;
14
- place-items: center;
15
- padding: 2rem 1rem;
16
- }
17
- .cta {
18
- padding: 0.5rem 1rem;
19
- font-size: 0.8125rem;
20
- font-weight: 500;
21
- color: var(--foreground);
22
- background: var(--card);
23
- border: 1px solid var(--border);
24
- border-radius: 999px;
25
- }
26
- .hint {
27
- margin: 0;
28
- font-size: 0.75rem;
29
- color: var(--muted-foreground);
30
- }
31
- </style>
@@ -1,33 +0,0 @@
1
- <script lang="ts">
2
- import { Marquee } from "../../../index.js";
3
-
4
- const items = ["Design", "Build", "Ship", "Measure", "Learn", "Repeat"];
5
- </script>
6
-
7
- <div class="stage">
8
- <Marquee pauseOnHover duration="18s">
9
- {#each items as item (item)}
10
- <span class="pill">{item}</span>
11
- {/each}
12
- </Marquee>
13
- </div>
14
-
15
- <style>
16
- .stage {
17
- width: 100%;
18
- -webkit-mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);
19
- mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);
20
- }
21
- .pill {
22
- display: flex;
23
- align-items: center;
24
- padding: 0.5rem 1rem;
25
- font-size: 0.8125rem;
26
- font-weight: 500;
27
- white-space: nowrap;
28
- color: var(--foreground);
29
- background: var(--card);
30
- border: 1px solid var(--border);
31
- border-radius: 999px;
32
- }
33
- </style>
@@ -1,47 +0,0 @@
1
- <script lang="ts">
2
- import { ProgressiveBlur } from "../../../index.js";
3
- </script>
4
-
5
- <div class="frame">
6
- <div class="grid">
7
- {#each Array(48) as _, i (i)}
8
- <span class="cell"></span>
9
- {/each}
10
- </div>
11
- <ProgressiveBlur class="fade" direction="bottom" layers={10} intensity={0.6} />
12
- <span class="label">Progressive blur</span>
13
- </div>
14
-
15
- <style>
16
- .frame {
17
- position: relative;
18
- height: 9rem;
19
- overflow: hidden;
20
- border: 1px solid var(--border);
21
- border-radius: 0.75rem;
22
- }
23
- .grid {
24
- display: grid;
25
- grid-template-columns: repeat(8, 1fr);
26
- gap: 0.25rem;
27
- padding: 0.5rem;
28
- }
29
- .cell {
30
- height: 1.5rem;
31
- background: var(--card);
32
- border-radius: 0.25rem;
33
- }
34
- .frame :global(.fade) {
35
- position: absolute;
36
- inset-inline: 0;
37
- bottom: 0;
38
- height: 60%;
39
- }
40
- .label {
41
- position: absolute;
42
- bottom: 0.625rem;
43
- left: 0.75rem;
44
- font-size: 0.75rem;
45
- color: var(--foreground);
46
- }
47
- </style>
@@ -1,40 +0,0 @@
1
- <script lang="ts">
2
- import { Spotlight } from "../../../index.js";
3
- </script>
4
-
5
- <div class="stage">
6
- <Spotlight class="-top-10 left-0 md:-top-20 md:left-20" fill="white" />
7
- <div class="content">
8
- <h4>Spotlight</h4>
9
- <p>A soft beam sweeps in over a dark surface on mount.</p>
10
- </div>
11
- </div>
12
-
13
- <style>
14
- .stage {
15
- position: relative;
16
- display: flex;
17
- align-items: center;
18
- justify-content: center;
19
- width: 100%;
20
- min-height: 8rem;
21
- overflow: hidden;
22
- border-radius: 0.5rem;
23
- background: #050505;
24
- }
25
- .content {
26
- z-index: 2;
27
- text-align: center;
28
- color: #f5f5f5;
29
- }
30
- .content h4 {
31
- margin: 0 0 0.25rem;
32
- font-size: 1rem;
33
- font-weight: 600;
34
- }
35
- .content p {
36
- margin: 0;
37
- font-size: 0.8125rem;
38
- color: #a3a3a3;
39
- }
40
- </style>
@@ -1,55 +0,0 @@
1
- <script lang="ts">
2
- import { TextEffect } from "../../../index.js";
3
-
4
- let run = $state(0);
5
- </script>
6
-
7
- <div class="stage">
8
- {#key run}
9
- <TextEffect
10
- text="Ship the thing."
11
- per="char"
12
- preset="blur-slide"
13
- as="h3"
14
- class="line"
15
- onMount
16
- />
17
- <TextEffect
18
- text="Every primitive is CSS, no runtime."
19
- preset="fade"
20
- delay={400}
21
- class="sub"
22
- onMount
23
- />
24
- {/key}
25
- <button onclick={() => run++}>Replay</button>
26
- </div>
27
-
28
- <style>
29
- .stage {
30
- display: grid;
31
- gap: 0.5rem;
32
- justify-items: start;
33
- padding: 1rem;
34
- }
35
- .stage :global(.line) {
36
- margin: 0;
37
- font-size: 1.25rem;
38
- font-weight: 600;
39
- color: var(--foreground);
40
- }
41
- .stage :global(.sub) {
42
- margin: 0;
43
- font-size: 0.8125rem;
44
- color: var(--muted-foreground);
45
- }
46
- button {
47
- margin-top: 0.5rem;
48
- padding: 0.25rem 0.625rem;
49
- font-size: 0.75rem;
50
- color: var(--foreground);
51
- background: var(--card);
52
- border: 1px solid var(--border);
53
- border-radius: 0.5rem;
54
- }
55
- </style>
@@ -1,45 +0,0 @@
1
- <script lang="ts">
2
- import * as Accordion from "../../../shadcn/accordion/index.js";
3
- </script>
4
-
5
- <Accordion.Root type="single" class="w-full sm:max-w-[70%]" value="item-1">
6
- <Accordion.Item value="item-1">
7
- <Accordion.Trigger>Product Information</Accordion.Trigger>
8
- <Accordion.Content class="flex flex-col gap-4 text-balance">
9
- <p>
10
- Our flagship product combines cutting-edge technology with sleek design. Built with premium
11
- materials, it offers unparalleled performance and reliability.
12
- </p>
13
- <p>
14
- Key features include advanced processing capabilities, and an intuitive user interface
15
- designed for both beginners and experts.
16
- </p>
17
- </Accordion.Content>
18
- </Accordion.Item>
19
- <Accordion.Item value="item-2">
20
- <Accordion.Trigger>Shipping Details</Accordion.Trigger>
21
- <Accordion.Content class="flex flex-col gap-4 text-balance">
22
- <p>
23
- We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5
24
- business days, while express shipping ensures delivery within 1-2 business days.
25
- </p>
26
- <p>
27
- All orders are carefully packaged and fully insured. Track your shipment in real-time
28
- through our dedicated tracking portal.
29
- </p>
30
- </Accordion.Content>
31
- </Accordion.Item>
32
- <Accordion.Item value="item-3">
33
- <Accordion.Trigger>Return Policy</Accordion.Trigger>
34
- <Accordion.Content class="flex flex-col gap-4 text-balance">
35
- <p>
36
- We stand behind our products with a comprehensive 30-day return policy. If you&apos;re not
37
- completely satisfied, simply return the item in its original condition.
38
- </p>
39
- <p>
40
- Our hassle-free return process includes free return shipping and full refunds processed
41
- within 48 hours of receiving the returned item.
42
- </p>
43
- </Accordion.Content>
44
- </Accordion.Item>
45
- </Accordion.Root>