@heyramzi/ui 7.0.0 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/COMPONENTS.md +28 -17
  2. package/README.md +6 -2
  3. package/package.json +25 -15
  4. package/scripts/sync-shadcn.mjs +17 -13
  5. package/scripts/sync-transitions.mjs +11 -11
  6. package/src/agents/agent-avatar.svelte +67 -114
  7. package/src/agents/agent-cast.svelte +31 -7
  8. package/src/agents/demo.svelte +55 -8
  9. package/src/agents/helpers.ts +58 -0
  10. package/src/agents/page-state.ts +70 -0
  11. package/src/agents/types.ts +3 -1
  12. package/src/ai/ai-button/AiButton.svelte +86 -0
  13. package/src/ai/ai-button/index.ts +4 -0
  14. package/src/ai/confirmation/Confirmation.svelte +8 -8
  15. package/src/ai/confirmation/confirmation-context.svelte.ts +2 -2
  16. package/src/ai/generation-progress/GenerationProgress.svelte +354 -0
  17. package/src/ai/generation-progress/index.ts +7 -0
  18. package/src/ai/index.ts +16 -6
  19. package/src/ai/prompt-input/PromptInput.svelte +19 -1
  20. package/src/ai/prompt-input/PromptInputSubmit.svelte +9 -3
  21. package/src/ai/reasoning/Reasoning.svelte +11 -8
  22. package/src/ambient.d.ts +4 -0
  23. package/src/animations/README.md +14 -14
  24. package/src/animations/index.css +3 -14
  25. package/src/animations/upstream-coverage.test.ts +1 -1
  26. package/src/components/copy/clipboard.test.ts +206 -0
  27. package/src/components/copy/clipboard.ts +49 -0
  28. package/src/components/copy/copied.svelte.ts +39 -0
  29. package/src/components/copy/copy-button.svelte +175 -0
  30. package/src/components/copy/copy-button.test.ts +110 -0
  31. package/src/components/copy/index.ts +3 -0
  32. package/src/components/data-table/data-table.test.ts +134 -0
  33. package/src/components/data-table/data-table.ts +77 -0
  34. package/src/components/data-table/index.ts +20 -0
  35. package/src/components/data-table/infinite-scroll.svelte +69 -0
  36. package/src/components/data-table/pagination.svelte +62 -0
  37. package/src/components/data-table/row-arrow.svelte +28 -0
  38. package/src/components/data-table/row-context-menu.svelte +106 -0
  39. package/src/components/data-table/row-context-menu.test.ts +18 -0
  40. package/src/components/data-table/sortable-head.svelte +56 -0
  41. package/src/components/data-table/table-skeleton.svelte +83 -0
  42. package/src/components/hold-to-confirm/hold-to-confirm.svelte +232 -0
  43. package/src/components/hold-to-confirm/index.ts +1 -0
  44. package/src/components/icon/icon.svelte +23 -0
  45. package/src/components/icon/index.ts +1 -0
  46. package/src/components/language-flag/index.ts +1 -0
  47. package/src/components/language-flag/language-flag.svelte +60 -0
  48. package/src/components/list-page/detail-empty.svelte +50 -0
  49. package/src/components/list-page/detail-header.svelte +107 -0
  50. package/src/components/list-page/detail-panel.svelte +90 -0
  51. package/src/components/list-page/detail-row.svelte +36 -0
  52. package/src/components/list-page/detail-stack.svelte +33 -0
  53. package/src/components/list-page/empty-state.svelte +91 -0
  54. package/src/components/list-page/filter-item.svelte +49 -0
  55. package/src/components/list-page/filter-popover.svelte +88 -0
  56. package/src/components/list-page/filter-section.ts +12 -0
  57. package/src/components/list-page/grouped-list.svelte +116 -0
  58. package/src/components/list-page/index.ts +28 -0
  59. package/src/components/list-page/list-page-shell.svelte +195 -0
  60. package/src/components/list-page/list-table.ts +19 -0
  61. package/src/components/list-page/master-detail.svelte +206 -0
  62. package/src/components/list-page/master-detail.test.ts +37 -0
  63. package/src/components/list-page/notice-bar.svelte +68 -0
  64. package/src/components/list-page/prev-next.svelte +104 -0
  65. package/src/components/list-page/queue-rail.ts +25 -0
  66. package/src/components/list-page/rail-body.svelte +29 -0
  67. package/src/components/list-page/rail-empty.svelte +51 -0
  68. package/src/components/list-page/rail-head.svelte +49 -0
  69. package/src/components/list-page/rail-row.svelte +163 -0
  70. package/src/components/list-page/section-host.ts +24 -0
  71. package/src/components/list-page/section-label.svelte +39 -0
  72. package/src/components/list-page/step.test.ts +21 -0
  73. package/src/components/list-page/step.ts +10 -0
  74. package/src/components/list-page/toolbar-search.svelte +63 -0
  75. package/src/components/list-page/toolbar-trigger.ts +23 -0
  76. package/src/components/list-page/types.ts +1 -0
  77. package/src/components/locale-switch/index.ts +1 -0
  78. package/src/components/locale-switch/locale-switch.svelte +59 -0
  79. package/src/components/mark/index.ts +1 -0
  80. package/src/components/mark/mark.svelte +70 -0
  81. package/src/components/open-in/index.ts +6 -0
  82. package/src/components/open-in/open-in.svelte +106 -0
  83. package/src/components/picker/index.ts +4 -0
  84. package/src/components/picker/mark-picker.svelte +84 -0
  85. package/src/components/picker/picker.svelte +143 -0
  86. package/src/components/picker/trigger.ts +42 -0
  87. package/src/components/picker/types.ts +26 -0
  88. package/src/components/segmented/animated-tabs.svelte +175 -0
  89. package/src/components/segmented/collapse.test.ts +49 -0
  90. package/src/components/segmented/collapse.ts +39 -0
  91. package/src/components/segmented/index.ts +41 -0
  92. package/src/components/segmented/section-runs.svelte +79 -0
  93. package/src/components/segmented/segment.svelte +106 -0
  94. package/src/components/segmented/segmented-filter.svelte +125 -0
  95. package/src/components/segmented/segmented-nav.svelte +82 -0
  96. package/src/components/segmented/segmented-overflow.svelte +85 -0
  97. package/src/components/segmented/segmented-track.svelte +181 -0
  98. package/src/components/segmented/segmented.test.ts +20 -0
  99. package/src/components/segmented/segmented.ts +80 -0
  100. package/src/components/star-rating-input/index.ts +9 -0
  101. package/src/components/star-rating-input/star-rating-input.svelte +256 -0
  102. package/src/components/svg/index.ts +1 -0
  103. package/src/components/svg/svg.svelte +9 -0
  104. package/src/effects/border-beam/BorderBeam.svelte +1 -1
  105. package/src/effects/image-comparison/ImageComparison.css +42 -8
  106. package/src/effects/image-comparison/ImageComparison.svelte +138 -21
  107. package/src/effects/image-comparison/compare.test.ts +17 -0
  108. package/src/effects/image-comparison/compare.ts +5 -0
  109. package/src/effects/interactive-hover-button/InteractiveHoverButton.svelte +338 -0
  110. package/src/effects/magic-card/MagicCard.css +47 -0
  111. package/src/effects/magic-card/MagicCard.svelte +57 -0
  112. package/src/effects/marquee/Marquee.css +27 -1
  113. package/src/effects/marquee/Marquee.svelte +67 -3
  114. package/src/effects/reveal/index.ts +2 -1
  115. package/src/effects/reveal/observe.test.ts +60 -0
  116. package/src/effects/reveal/observe.ts +33 -1
  117. package/src/effects/reveal/types.ts +7 -0
  118. package/src/effects/theme-toggle/ThemeToggle.css +199 -6
  119. package/src/effects/theme-toggle/ThemeToggle.svelte +51 -26
  120. package/src/gallery.test.ts +52 -0
  121. package/src/index.ts +5 -1
  122. package/src/lib/panel.ts +7 -1
  123. package/src/lib/theme-transition.ts +37 -11
  124. package/src/lib/tone.ts +48 -0
  125. package/src/shadcn/accordion/accordion-trigger.svelte +15 -6
  126. package/src/shadcn/alert/alert.svelte +3 -1
  127. package/src/shadcn/badge/badge.svelte +8 -7
  128. package/src/shadcn/breadcrumb/breadcrumb-ellipsis.svelte +2 -2
  129. package/src/shadcn/breadcrumb/breadcrumb-separator.svelte +2 -2
  130. package/src/shadcn/calendar/calendar-month-select.svelte +2 -2
  131. package/src/shadcn/calendar/calendar-next-button.svelte +2 -2
  132. package/src/shadcn/calendar/calendar-prev-button.svelte +2 -2
  133. package/src/shadcn/calendar/calendar-year-select.svelte +2 -2
  134. package/src/shadcn/calendar/calendar.svelte +6 -0
  135. package/src/shadcn/code-block/code-block-copy-button.svelte +6 -55
  136. package/src/shadcn/command/index.ts +3 -0
  137. package/src/shadcn/field/index.ts +3 -0
  138. package/src/shadcn/field/simple-field.svelte +71 -0
  139. package/src/shadcn/field/simple-field.test.ts +47 -0
  140. package/src/shadcn/message-scroller/message-scroller-button.svelte +2 -2
  141. package/src/shadcn/radio-group/radio-group-item.svelte +3 -2
  142. package/src/shadcn/sheet/sheet-content.svelte +1 -0
  143. package/src/shadcn/sheet/sheet.css +48 -0
  144. package/src/shadcn/sonner/sonner.svelte +7 -10
  145. package/src/shadcn/toggle-group/toggle-group.svelte +10 -3
  146. package/src/shadcn/trace/trace-collapsible-trigger.svelte +2 -2
  147. package/src/ai/composer/Composer.css +0 -108
  148. package/src/ai/composer/Composer.svelte +0 -111
  149. package/src/ai/composer/index.ts +0 -10
  150. package/src/animations/accordion.css +0 -58
  151. package/src/animations/icon-swap.css +0 -43
  152. package/src/animations/notification-badge.css +0 -81
  153. package/src/animations/panel.css +0 -86
  154. package/src/animations/reasoning-stream.css +0 -49
  155. package/src/animations/skeleton-reveal.css +0 -97
  156. package/src/animations/streaming-text.css +0 -31
  157. package/src/animations/tabs-sliding.css +0 -83
  158. package/src/animations/texts-reveal.css +0 -70
  159. package/src/animations/tooltip.css +0 -72
  160. package/src/animations/view-transition-reveal.ts +0 -74
  161. package/src/lib/utils.ts +0 -45
  162. package/src/showcase/AiSection.svelte +0 -150
  163. package/src/showcase/AnimationsSection.svelte +0 -1658
  164. package/src/showcase/EffectsSection.svelte +0 -152
  165. package/src/showcase/ShadcnSection.svelte +0 -27
  166. package/src/showcase/ShowcaseImport.svelte +0 -126
  167. package/src/showcase/ShowcaseList.svelte +0 -132
  168. package/src/showcase/ShowcaseNav.svelte +0 -247
  169. package/src/showcase/ShowcaseSection.svelte +0 -112
  170. package/src/showcase/ShowcaseShell.svelte +0 -55
  171. package/src/showcase/ShowcaseStage.svelte +0 -342
  172. package/src/showcase/ShowcaseVariant.svelte +0 -109
  173. package/src/showcase/assets/image-reveal/art-1.jpg +0 -0
  174. package/src/showcase/assets/image-reveal/art-2.jpg +0 -0
  175. package/src/showcase/assets/image-reveal/art-3.jpg +0 -0
  176. package/src/showcase/check.svg +0 -1
  177. package/src/showcase/chevron-arms.svg +0 -2
  178. package/src/showcase/chevron-down.svg +0 -1
  179. package/src/showcase/copy.svg +0 -2
  180. package/src/showcase/demos/ai/confirmation.svelte +0 -59
  181. package/src/showcase/demos/ai/loading-state.svelte +0 -19
  182. package/src/showcase/demos/ai/prompt-input.svelte +0 -57
  183. package/src/showcase/demos/ai/reasoning.svelte +0 -19
  184. package/src/showcase/demos/ai/thinking-dots.svelte +0 -15
  185. package/src/showcase/demos/ai/voice-waveform.svelte +0 -24
  186. package/src/showcase/demos/effects/animated-beam.svelte +0 -50
  187. package/src/showcase/demos/effects/animated-group.svelte +0 -47
  188. package/src/showcase/demos/effects/border-beam-default.svelte +0 -20
  189. package/src/showcase/demos/effects/border-beam-line.svelte +0 -20
  190. package/src/showcase/demos/effects/border-beam-mono.svelte +0 -20
  191. package/src/showcase/demos/effects/border-beam-sunset.svelte +0 -20
  192. package/src/showcase/demos/effects/image-comparison.svelte +0 -25
  193. package/src/showcase/demos/effects/image-reveal.svelte +0 -49
  194. package/src/showcase/demos/effects/in-view.svelte +0 -41
  195. package/src/showcase/demos/effects/integrations-hub.svelte +0 -82
  196. package/src/showcase/demos/effects/magnetic.svelte +0 -31
  197. package/src/showcase/demos/effects/marquee.svelte +0 -33
  198. package/src/showcase/demos/effects/progressive-blur.svelte +0 -47
  199. package/src/showcase/demos/effects/spotlight.svelte +0 -40
  200. package/src/showcase/demos/effects/text-effect.svelte +0 -55
  201. package/src/showcase/demos/shadcn/accordion.svelte +0 -45
  202. package/src/showcase/demos/shadcn/alert-dialog.svelte +0 -23
  203. package/src/showcase/demos/shadcn/alert.svelte +0 -30
  204. package/src/showcase/demos/shadcn/attachment.svelte +0 -71
  205. package/src/showcase/demos/shadcn/avatar.svelte +0 -30
  206. package/src/showcase/demos/shadcn/badge.svelte +0 -26
  207. package/src/showcase/demos/shadcn/breadcrumb.svelte +0 -34
  208. package/src/showcase/demos/shadcn/bubble.svelte +0 -36
  209. package/src/showcase/demos/shadcn/button.svelte +0 -11
  210. package/src/showcase/demos/shadcn/calendar.svelte +0 -8
  211. package/src/showcase/demos/shadcn/card.svelte +0 -39
  212. package/src/showcase/demos/shadcn/checkbox.svelte +0 -39
  213. package/src/showcase/demos/shadcn/code-block.svelte +0 -80
  214. package/src/showcase/demos/shadcn/collapsible.svelte +0 -20
  215. package/src/showcase/demos/shadcn/command.svelte +0 -48
  216. package/src/showcase/demos/shadcn/context-menu.svelte +0 -54
  217. package/src/showcase/demos/shadcn/demo-harness.svelte +0 -12
  218. package/src/showcase/demos/shadcn/demos.test.ts +0 -20
  219. package/src/showcase/demos/shadcn/dialog.svelte +0 -38
  220. package/src/showcase/demos/shadcn/dropdown-menu.svelte +0 -59
  221. package/src/showcase/demos/shadcn/empty.svelte +0 -29
  222. package/src/showcase/demos/shadcn/field.svelte +0 -115
  223. package/src/showcase/demos/shadcn/hover-card.svelte +0 -32
  224. package/src/showcase/demos/shadcn/index.ts +0 -382
  225. package/src/showcase/demos/shadcn/input-otp.svelte +0 -19
  226. package/src/showcase/demos/shadcn/input.svelte +0 -5
  227. package/src/showcase/demos/shadcn/label.svelte +0 -11
  228. package/src/showcase/demos/shadcn/marker.svelte +0 -30
  229. package/src/showcase/demos/shadcn/message-scroller.svelte +0 -44
  230. package/src/showcase/demos/shadcn/message.svelte +0 -75
  231. package/src/showcase/demos/shadcn/popover.svelte +0 -36
  232. package/src/showcase/demos/shadcn/progress.svelte +0 -13
  233. package/src/showcase/demos/shadcn/radio-group.svelte +0 -19
  234. package/src/showcase/demos/shadcn/scroll-area.svelte +0 -18
  235. package/src/showcase/demos/shadcn/select.svelte +0 -29
  236. package/src/showcase/demos/shadcn/separator.svelte +0 -12
  237. package/src/showcase/demos/shadcn/sheet.svelte +0 -48
  238. package/src/showcase/demos/shadcn/skeleton.svelte +0 -11
  239. package/src/showcase/demos/shadcn/slider.svelte +0 -7
  240. package/src/showcase/demos/shadcn/sonner.svelte +0 -18
  241. package/src/showcase/demos/shadcn/spinner.svelte +0 -11
  242. package/src/showcase/demos/shadcn/switch.svelte +0 -9
  243. package/src/showcase/demos/shadcn/table.svelte +0 -76
  244. package/src/showcase/demos/shadcn/tabs.svelte +0 -62
  245. package/src/showcase/demos/shadcn/textarea.svelte +0 -5
  246. package/src/showcase/demos/shadcn/toggle-group.svelte +0 -18
  247. package/src/showcase/demos/shadcn/toggle.svelte +0 -14
  248. package/src/showcase/demos/shadcn/tooltip.svelte +0 -13
  249. package/src/showcase/demos/shadcn/trace.svelte +0 -51
  250. package/src/showcase/heart.svg +0 -1
  251. package/src/showcase/index.ts +0 -38
  252. package/src/showcase/kit.test.ts +0 -72
  253. package/src/showcase/kit.ts +0 -16
  254. package/src/showcase/plus.svg +0 -1
  255. package/src/showcase/showcase-shell.css +0 -91
  256. package/src/showcase/stacked-section.css +0 -15
  257. package/src/showcase/success-check.svg +0 -1
  258. package/src/showcase/types.ts +0 -29
  259. package/src/svg-raw.d.ts +0 -7
@@ -1,382 +0,0 @@
1
- /* Generated by scripts/sync-shadcn.mjs. Do not edit: the demos are upstream's
2
- * own, and the sync rewrites this list. */
3
- import type { Component } from "svelte";
4
- import AccordionDemo from "./accordion.svelte";
5
- import AlertDemo from "./alert.svelte";
6
- import AlertDialogDemo from "./alert-dialog.svelte";
7
- import AttachmentDemo from "./attachment.svelte";
8
- import AvatarDemo from "./avatar.svelte";
9
- import BadgeDemo from "./badge.svelte";
10
- import BreadcrumbDemo from "./breadcrumb.svelte";
11
- import BubbleDemo from "./bubble.svelte";
12
- import ButtonDemo from "./button.svelte";
13
- import CalendarDemo from "./calendar.svelte";
14
- import CardDemo from "./card.svelte";
15
- import CheckboxDemo from "./checkbox.svelte";
16
- import CodeBlockDemo from "./code-block.svelte";
17
- import CollapsibleDemo from "./collapsible.svelte";
18
- import CommandDemo from "./command.svelte";
19
- import ContextMenuDemo from "./context-menu.svelte";
20
- import DialogDemo from "./dialog.svelte";
21
- import DropdownMenuDemo from "./dropdown-menu.svelte";
22
- import EmptyDemo from "./empty.svelte";
23
- import FieldDemo from "./field.svelte";
24
- import HoverCardDemo from "./hover-card.svelte";
25
- import InputDemo from "./input.svelte";
26
- import InputOtpDemo from "./input-otp.svelte";
27
- import LabelDemo from "./label.svelte";
28
- import MarkerDemo from "./marker.svelte";
29
- import MessageDemo from "./message.svelte";
30
- import MessageScrollerDemo from "./message-scroller.svelte";
31
- import PopoverDemo from "./popover.svelte";
32
- import ProgressDemo from "./progress.svelte";
33
- import RadioGroupDemo from "./radio-group.svelte";
34
- import ScrollAreaDemo from "./scroll-area.svelte";
35
- import SelectDemo from "./select.svelte";
36
- import SeparatorDemo from "./separator.svelte";
37
- import SheetDemo from "./sheet.svelte";
38
- import SkeletonDemo from "./skeleton.svelte";
39
- import SliderDemo from "./slider.svelte";
40
- import SonnerDemo from "./sonner.svelte";
41
- import SpinnerDemo from "./spinner.svelte";
42
- import SwitchDemo from "./switch.svelte";
43
- import TableDemo from "./table.svelte";
44
- import TabsDemo from "./tabs.svelte";
45
- import TextareaDemo from "./textarea.svelte";
46
- import ToggleDemo from "./toggle.svelte";
47
- import ToggleGroupDemo from "./toggle-group.svelte";
48
- import TooltipDemo from "./tooltip.svelte";
49
- import TraceDemo from "./trace.svelte";
50
-
51
- export type ShadcnDemo = {
52
- name: string;
53
- title: string;
54
- note: string;
55
- path: string;
56
- Comp: Component;
57
- };
58
-
59
- export const SHADCN_DEMOS: ShadcnDemo[] = [
60
- {
61
- name: "accordion",
62
- title: "Accordion",
63
- note: "A vertically stacked set of interactive headings that each reveal a section of content.",
64
- path: 'import * as Accordion from "@heyramzi/ui/shadcn/accordion";',
65
- Comp: AccordionDemo,
66
- },
67
- {
68
- name: "alert",
69
- title: "Alert",
70
- note: "Displays a callout for user attention.",
71
- path: 'import * as Alert from "@heyramzi/ui/shadcn/alert";',
72
- Comp: AlertDemo,
73
- },
74
- {
75
- name: "alert-dialog",
76
- title: "Alert Dialog",
77
- note: "A modal dialog that interrupts the user with important content and expects a response.",
78
- path: 'import * as AlertDialog from "@heyramzi/ui/shadcn/alert-dialog";\nimport { buttonVariants } from "@heyramzi/ui/shadcn/button";',
79
- Comp: AlertDialogDemo,
80
- },
81
- {
82
- name: "attachment",
83
- title: "Attachment",
84
- note: "Displays a file or image attachment with media, metadata, upload state, and actions.",
85
- path: 'import * as Attachment from "@heyramzi/ui/shadcn/attachment";\nimport { Spinner } from "@heyramzi/ui/shadcn/spinner";',
86
- Comp: AttachmentDemo,
87
- },
88
- {
89
- name: "avatar",
90
- title: "Avatar",
91
- note: "An image element with a fallback for representing the user.",
92
- path: 'import * as Avatar from "@heyramzi/ui/shadcn/avatar";',
93
- Comp: AvatarDemo,
94
- },
95
- {
96
- name: "badge",
97
- title: "Badge",
98
- note: "Displays a badge or a component that looks like a badge.",
99
- path: 'import { Badge } from "@heyramzi/ui/shadcn/badge";',
100
- Comp: BadgeDemo,
101
- },
102
- {
103
- name: "breadcrumb",
104
- title: "Breadcrumb",
105
- note: "Displays the path to the current resource using a hierarchy of links.",
106
- path: 'import * as Breadcrumb from "@heyramzi/ui/shadcn/breadcrumb";\nimport * as DropdownMenu from "@heyramzi/ui/shadcn/dropdown-menu";',
107
- Comp: BreadcrumbDemo,
108
- },
109
- {
110
- name: "bubble",
111
- title: "Bubble",
112
- note: "Displays conversational content in a message bubble. Supports variants, alignment, grouping, reactions, and collapsible content.",
113
- path: 'import * as Bubble from "@heyramzi/ui/shadcn/bubble";',
114
- Comp: BubbleDemo,
115
- },
116
- {
117
- name: "button",
118
- title: "Button",
119
- note: "Displays a button or a component that looks like a button.",
120
- path: 'import { Button } from "@heyramzi/ui/shadcn/button";',
121
- Comp: ButtonDemo,
122
- },
123
- {
124
- name: "calendar",
125
- title: "Calendar",
126
- note: "A calendar component that allows users to select a date or a range of dates.",
127
- path: 'import { Calendar } from "@heyramzi/ui/shadcn/calendar";',
128
- Comp: CalendarDemo,
129
- },
130
- {
131
- name: "card",
132
- title: "Card",
133
- note: "Displays a card with header, content, and footer.",
134
- path: 'import * as Card from "@heyramzi/ui/shadcn/card";\nimport { Button } from "@heyramzi/ui/shadcn/button";\nimport { Input } from "@heyramzi/ui/shadcn/input";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
135
- Comp: CardDemo,
136
- },
137
- {
138
- name: "checkbox",
139
- title: "Checkbox",
140
- note: "A control that allows the user to toggle between checked and not checked.",
141
- path: 'import { Checkbox } from "@heyramzi/ui/shadcn/checkbox";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
142
- Comp: CheckboxDemo,
143
- },
144
- {
145
- name: "code-block",
146
- title: "Code Block",
147
- note: "Displays code, terminal output and diffs with an optional header, line numbers and a copy button.",
148
- path: 'import * as CodeBlock from "@heyramzi/ui/shadcn/code-block";\nimport { useHighlightedCode } from "@heyramzi/ui/shadcn/hooks/use-highlighted-code.svelte.js";\nimport { Button } from "@heyramzi/ui/shadcn/button";',
149
- Comp: CodeBlockDemo,
150
- },
151
- {
152
- name: "collapsible",
153
- title: "Collapsible",
154
- note: "An interactive component which expands/collapses a panel.",
155
- path: 'import * as Collapsible from "@heyramzi/ui/shadcn/collapsible";\nimport { buttonVariants } from "@heyramzi/ui/shadcn/button";',
156
- Comp: CollapsibleDemo,
157
- },
158
- {
159
- name: "command",
160
- title: "Command",
161
- note: "Command menu for search and quick actions.",
162
- path: 'import * as Command from "@heyramzi/ui/shadcn/command";',
163
- Comp: CommandDemo,
164
- },
165
- {
166
- name: "context-menu",
167
- title: "Context Menu",
168
- note: "Displays a menu of actions triggered by a right click.",
169
- path: 'import * as ContextMenu from "@heyramzi/ui/shadcn/context-menu";',
170
- Comp: ContextMenuDemo,
171
- },
172
- {
173
- name: "dialog",
174
- title: "Dialog",
175
- note: "A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.",
176
- path: 'import * as Dialog from "@heyramzi/ui/shadcn/dialog";\nimport { Button, buttonVariants } from "@heyramzi/ui/shadcn/button";\nimport { Input } from "@heyramzi/ui/shadcn/input";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
177
- Comp: DialogDemo,
178
- },
179
- {
180
- name: "dropdown-menu",
181
- title: "Dropdown Menu",
182
- note: "Displays a menu to the user — such as a set of actions or functions — triggered by a button.",
183
- path: 'import * as DropdownMenu from "@heyramzi/ui/shadcn/dropdown-menu";\nimport { Button } from "@heyramzi/ui/shadcn/button";',
184
- Comp: DropdownMenuDemo,
185
- },
186
- {
187
- name: "empty",
188
- title: "Empty",
189
- note: "Use the Empty component to display an empty state.",
190
- path: 'import * as Empty from "@heyramzi/ui/shadcn/empty";\nimport { Button } from "@heyramzi/ui/shadcn/button";',
191
- Comp: EmptyDemo,
192
- },
193
- {
194
- name: "field",
195
- title: "Field",
196
- note: "Combine labels, controls, and help text to compose accessible form fields and grouped inputs.",
197
- path: 'import * as Field from "@heyramzi/ui/shadcn/field";\nimport * as Select from "@heyramzi/ui/shadcn/select";\nimport { Button } from "@heyramzi/ui/shadcn/button";\nimport { Checkbox } from "@heyramzi/ui/shadcn/checkbox";\nimport { Input } from "@heyramzi/ui/shadcn/input";\nimport { Textarea } from "@heyramzi/ui/shadcn/textarea";',
198
- Comp: FieldDemo,
199
- },
200
- {
201
- name: "hover-card",
202
- title: "Hover Card",
203
- note: "For sighted users to preview content available behind a link.",
204
- path: 'import * as Avatar from "@heyramzi/ui/shadcn/avatar";\nimport * as HoverCard from "@heyramzi/ui/shadcn/hover-card";',
205
- Comp: HoverCardDemo,
206
- },
207
- {
208
- name: "input",
209
- title: "Input",
210
- note: "A text input component for forms and user data entry with built-in styling and accessibility features.",
211
- path: 'import { Input } from "@heyramzi/ui/shadcn/input";',
212
- Comp: InputDemo,
213
- },
214
- {
215
- name: "input-otp",
216
- title: "Input OTP",
217
- note: "Accessible one-time password component with copy-paste functionality.",
218
- path: 'import * as InputOTP from "@heyramzi/ui/shadcn/input-otp";',
219
- Comp: InputOtpDemo,
220
- },
221
- {
222
- name: "label",
223
- title: "Label",
224
- note: "Renders an accessible label associated with controls.",
225
- path: 'import { Checkbox } from "@heyramzi/ui/shadcn/checkbox";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
226
- Comp: LabelDemo,
227
- },
228
- {
229
- name: "marker",
230
- title: "Marker",
231
- note: "Displays an inline status, system note, bordered row, or labeled separator in a conversation.",
232
- path: 'import * as Marker from "@heyramzi/ui/shadcn/marker";\nimport { Spinner } from "@heyramzi/ui/shadcn/spinner";',
233
- Comp: MarkerDemo,
234
- },
235
- {
236
- name: "message",
237
- title: "Message",
238
- note: "Displays a message in a conversation, with optional avatar, header, footer, and alignment.",
239
- path: 'import * as Avatar from "@heyramzi/ui/shadcn/avatar";\nimport * as Bubble from "@heyramzi/ui/shadcn/bubble";\nimport * as Marker from "@heyramzi/ui/shadcn/marker";\nimport * as Message from "@heyramzi/ui/shadcn/message";',
240
- Comp: MessageDemo,
241
- },
242
- {
243
- name: "message-scroller",
244
- title: "Message Scroller",
245
- note: "A chat scroll container that anchors turns, opens saved transcripts, follows streamed responses, loads history without jumping, and jumps to any message.",
246
- path: 'import * as Card from "@heyramzi/ui/shadcn/card";\nimport * as DropdownMenu from "@heyramzi/ui/shadcn/dropdown-menu";\nimport * as Empty from "@heyramzi/ui/shadcn/empty";\nimport * as InputGroup from "@heyramzi/ui/shadcn/input-group";\nimport * as MessageScroller from "@heyramzi/ui/shadcn/message-scroller";\nimport * as Tooltip from "@heyramzi/ui/shadcn/tooltip";\nimport { Button } from "@heyramzi/ui/shadcn/button";',
247
- Comp: MessageScrollerDemo,
248
- },
249
- {
250
- name: "popover",
251
- title: "Popover",
252
- note: "Displays rich content in a portal, triggered by a button.",
253
- path: 'import * as Popover from "@heyramzi/ui/shadcn/popover";\nimport { buttonVariants } from "@heyramzi/ui/shadcn/button";\nimport { Input } from "@heyramzi/ui/shadcn/input";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
254
- Comp: PopoverDemo,
255
- },
256
- {
257
- name: "progress",
258
- title: "Progress",
259
- note: "Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.",
260
- path: 'import { Progress } from "@heyramzi/ui/shadcn/progress";',
261
- Comp: ProgressDemo,
262
- },
263
- {
264
- name: "radio-group",
265
- title: "Radio Group",
266
- note: "A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.",
267
- path: 'import * as RadioGroup from "@heyramzi/ui/shadcn/radio-group";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
268
- Comp: RadioGroupDemo,
269
- },
270
- {
271
- name: "scroll-area",
272
- title: "Scroll Area",
273
- note: "Augments native scroll functionality for custom, cross-browser styling.",
274
- path: 'import { ScrollArea } from "@heyramzi/ui/shadcn/scroll-area";\nimport { Separator } from "@heyramzi/ui/shadcn/separator";',
275
- Comp: ScrollAreaDemo,
276
- },
277
- {
278
- name: "select",
279
- title: "Select",
280
- note: "Displays a list of options for the user to pick from—triggered by a button.",
281
- path: 'import * as Select from "@heyramzi/ui/shadcn/select";',
282
- Comp: SelectDemo,
283
- },
284
- {
285
- name: "separator",
286
- title: "Separator",
287
- note: "Visually or semantically separates content.",
288
- path: 'import { Separator } from "@heyramzi/ui/shadcn/separator";',
289
- Comp: SeparatorDemo,
290
- },
291
- {
292
- name: "sheet",
293
- title: "Sheet",
294
- note: "Extends the Dialog component to display content that complements the main content of the screen.",
295
- path: 'import * as Sheet from "@heyramzi/ui/shadcn/sheet";\nimport { Button } from "@heyramzi/ui/shadcn/button";\nimport { buttonVariants } from "@heyramzi/ui/shadcn/button";\nimport { Input } from "@heyramzi/ui/shadcn/input";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
296
- Comp: SheetDemo,
297
- },
298
- {
299
- name: "skeleton",
300
- title: "Skeleton",
301
- note: "Use to show a placeholder while content is loading.",
302
- path: 'import { Skeleton } from "@heyramzi/ui/shadcn/skeleton";',
303
- Comp: SkeletonDemo,
304
- },
305
- {
306
- name: "slider",
307
- title: "Slider",
308
- note: "An input where the user selects a value from within a given range.",
309
- path: 'import { Slider } from "@heyramzi/ui/shadcn/slider";',
310
- Comp: SliderDemo,
311
- },
312
- {
313
- name: "sonner",
314
- title: "Sonner",
315
- note: "An opinionated toast component for Svelte.",
316
- path: 'import { Button } from "@heyramzi/ui/shadcn/button";',
317
- Comp: SonnerDemo,
318
- },
319
- {
320
- name: "spinner",
321
- title: "Spinner",
322
- note: "An indicator that can be used to show a loading state.",
323
- path: 'import { Spinner } from "@heyramzi/ui/shadcn/spinner";',
324
- Comp: SpinnerDemo,
325
- },
326
- {
327
- name: "switch",
328
- title: "Switch",
329
- note: "A control that allows the user to toggle between checked and not checked.",
330
- path: 'import { Label } from "@heyramzi/ui/shadcn/label";\nimport { Switch } from "@heyramzi/ui/shadcn/switch";',
331
- Comp: SwitchDemo,
332
- },
333
- {
334
- name: "table",
335
- title: "Table",
336
- note: "A responsive table component.",
337
- path: 'import * as Table from "@heyramzi/ui/shadcn/table";',
338
- Comp: TableDemo,
339
- },
340
- {
341
- name: "tabs",
342
- title: "Tabs",
343
- note: "A set of layered sections of content—known as tab panels—that are displayed one at a time.",
344
- path: 'import * as Card from "@heyramzi/ui/shadcn/card";\nimport * as Tabs from "@heyramzi/ui/shadcn/tabs";\nimport { Button } from "@heyramzi/ui/shadcn/button";\nimport { Input } from "@heyramzi/ui/shadcn/input";\nimport { Label } from "@heyramzi/ui/shadcn/label";',
345
- Comp: TabsDemo,
346
- },
347
- {
348
- name: "textarea",
349
- title: "Textarea",
350
- note: "Displays a form textarea or a component that looks like a textarea.",
351
- path: 'import { Textarea } from "@heyramzi/ui/shadcn/textarea";',
352
- Comp: TextareaDemo,
353
- },
354
- {
355
- name: "toggle",
356
- title: "Toggle",
357
- note: "A two-state button that can be either on or off.",
358
- path: 'import { Toggle } from "@heyramzi/ui/shadcn/toggle";',
359
- Comp: ToggleDemo,
360
- },
361
- {
362
- name: "toggle-group",
363
- title: "Toggle Group",
364
- note: "A set of two-state buttons that can be toggled on or off.",
365
- path: 'import * as ToggleGroup from "@heyramzi/ui/shadcn/toggle-group";',
366
- Comp: ToggleGroupDemo,
367
- },
368
- {
369
- name: "tooltip",
370
- title: "Tooltip",
371
- note: "A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.",
372
- path: 'import * as Tooltip from "@heyramzi/ui/shadcn/tooltip";\nimport { buttonVariants } from "@heyramzi/ui/shadcn/button";',
373
- Comp: TooltipDemo,
374
- },
375
- {
376
- name: "trace",
377
- title: "Trace",
378
- note: "The building block for reasoning, tool calls, sources and more.",
379
- path: 'import * as Bubble from "@heyramzi/ui/shadcn/bubble";\nimport * as CodeBlock from "@heyramzi/ui/shadcn/code-block";\nimport * as Message from "@heyramzi/ui/shadcn/message";\nimport * as Trace from "@heyramzi/ui/shadcn/trace";\nimport { Button } from "@heyramzi/ui/shadcn/button";',
380
- Comp: TraceDemo,
381
- },
382
- ];
@@ -1,19 +0,0 @@
1
- <script lang="ts">
2
- import * as InputOTP from "../../../shadcn/input-otp/index.js";
3
- </script>
4
-
5
- <InputOTP.Root maxlength={6}>
6
- {#snippet children({ cells })}
7
- <InputOTP.Group>
8
- {#each cells.slice(0, 3) as cell (cell)}
9
- <InputOTP.Slot {cell} />
10
- {/each}
11
- </InputOTP.Group>
12
- <InputOTP.Separator />
13
- <InputOTP.Group>
14
- {#each cells.slice(3, 6) as cell (cell)}
15
- <InputOTP.Slot {cell} />
16
- {/each}
17
- </InputOTP.Group>
18
- {/snippet}
19
- </InputOTP.Root>
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import { Input } from "../../../shadcn/input/index.js";
3
- </script>
4
-
5
- <Input type="email" placeholder="Email" class="max-w-xs" />
@@ -1,11 +0,0 @@
1
- <script lang="ts">
2
- import { Checkbox } from "../../../shadcn/checkbox/index.js";
3
- import { Label } from "../../../shadcn/label/index.js";
4
- </script>
5
-
6
- <div>
7
- <div class="flex items-center space-x-2">
8
- <Checkbox id="terms" />
9
- <Label for="terms">Accept terms and conditions</Label>
10
- </div>
11
- </div>
@@ -1,30 +0,0 @@
1
- <script lang="ts">
2
- import GitBranchIcon from "@lucide/svelte/icons/git-branch";
3
- import SearchIcon from "@lucide/svelte/icons/search";
4
- import * as Marker from "../../../shadcn/marker/index.js";
5
- import { Spinner } from "../../../shadcn/spinner/index.js";
6
- </script>
7
-
8
- <div class="flex w-full max-w-sm flex-col gap-8 py-12">
9
- <Marker.Root>
10
- <Marker.Icon>
11
- <GitBranchIcon />
12
- </Marker.Icon>
13
- <Marker.Content>Switched to a new branch</Marker.Content>
14
- </Marker.Root>
15
- <Marker.Root role="status">
16
- <Marker.Icon>
17
- <Spinner />
18
- </Marker.Icon>
19
- <Marker.Content class="shimmer">Thinking...</Marker.Content>
20
- </Marker.Root>
21
- <Marker.Root variant="separator">
22
- <Marker.Content>Conversation compacted</Marker.Content>
23
- </Marker.Root>
24
- <Marker.Root>
25
- <Marker.Icon>
26
- <SearchIcon />
27
- </Marker.Icon>
28
- <Marker.Content>Explored 4 files</Marker.Content>
29
- </Marker.Root>
30
- </div>
@@ -1,44 +0,0 @@
1
- <!-- Ours, not upstream's: theirs streams through @ai-sdk/svelte and docs-only helpers this package doesn't ship. -->
2
- <script lang="ts">
3
- import * as Bubble from "../../../shadcn/bubble/index.js";
4
- import * as Message from "../../../shadcn/message/index.js";
5
- import * as MessageScroller from "../../../shadcn/message-scroller/index.js";
6
- import { Response } from "../../../ai/index.js";
7
-
8
- const turns = [
9
- { id: "q1", role: "user", text: "How should I clean up our beam effects?" },
10
- {
11
- id: "a1",
12
- role: "assistant",
13
- text: "Here is the plan:\n\n1. **Extract** the beam into the shared package\n2. **Showcase** it on the Effects page\n3. **Migrate** both apps onto the shared copy",
14
- },
15
- { id: "q2", role: "user", text: "And the old copies?" },
16
- { id: "a2", role: "assistant", text: "Delete them in the same change, so nothing imports the stale one." },
17
- ] as const;
18
- </script>
19
-
20
- <div class="h-68 w-full max-w-md">
21
- <MessageScroller.Provider>
22
- <MessageScroller.Root>
23
- <MessageScroller.Viewport>
24
- <MessageScroller.Content class="gap-4 p-1">
25
- {#each turns as turn (turn.id)}
26
- {@const user = turn.role === "user"}
27
- <MessageScroller.Item messageId={turn.id} scrollAnchor={user}>
28
- <Message.Root align={user ? "end" : "start"}>
29
- <Message.Content>
30
- <Bubble.Root variant={user ? "default" : "muted"} align={user ? "end" : "start"}>
31
- <Bubble.Content>
32
- {#if user}{turn.text}{:else}<Response content={turn.text} />{/if}
33
- </Bubble.Content>
34
- </Bubble.Root>
35
- </Message.Content>
36
- </Message.Root>
37
- </MessageScroller.Item>
38
- {/each}
39
- </MessageScroller.Content>
40
- </MessageScroller.Viewport>
41
- <MessageScroller.Button />
42
- </MessageScroller.Root>
43
- </MessageScroller.Provider>
44
- </div>
@@ -1,75 +0,0 @@
1
- <script lang="ts">
2
- import * as Avatar from "../../../shadcn/avatar/index.js";
3
- import * as Bubble from "../../../shadcn/bubble/index.js";
4
- import * as Marker from "../../../shadcn/marker/index.js";
5
- import * as Message from "../../../shadcn/message/index.js";
6
- </script>
7
-
8
- <div class="flex w-full max-w-sm flex-col gap-6 py-12">
9
- <Message.Root align="end">
10
- <Message.Avatar>
11
- <Avatar.Root>
12
- <Avatar.Image src="/avatars/10.png" alt="@me" />
13
- <Avatar.Fallback>ME</Avatar.Fallback>
14
- </Avatar.Root>
15
- </Message.Avatar>
16
- <Message.Content>
17
- <Bubble.Root>
18
- <Bubble.Content>Deploying to prod real quick.</Bubble.Content>
19
- </Bubble.Root>
20
- </Message.Content>
21
- </Message.Root>
22
- <Message.Root>
23
- <Message.Avatar>
24
- <Avatar.Root>
25
- <Avatar.Image src="/avatars/02.png" alt="@rabbit" />
26
- <Avatar.Fallback>R</Avatar.Fallback>
27
- </Avatar.Root>
28
- </Message.Avatar>
29
- <Message.Content>
30
- <Bubble.Root variant="muted">
31
- <Bubble.Content>It's 4:55 PM. On a Friday.</Bubble.Content>
32
- </Bubble.Root>
33
- </Message.Content>
34
- </Message.Root>
35
- <Message.Root align="end">
36
- <Message.Avatar>
37
- <Avatar.Root>
38
- <Avatar.Image src="/avatars/10.png" alt="@me" />
39
- <Avatar.Fallback>ME</Avatar.Fallback>
40
- </Avatar.Root>
41
- </Message.Avatar>
42
- <Message.Content>
43
- <Bubble.Root>
44
- <Bubble.Content>It's a one-line change.</Bubble.Content>
45
- </Bubble.Root>
46
- <Message.Footer>Delivered</Message.Footer>
47
- </Message.Content>
48
- </Message.Root>
49
- <Message.Root>
50
- <Message.Avatar>
51
- <Avatar.Root>
52
- <Avatar.Image src="/avatars/02.png" alt="@rabbit" />
53
- <Avatar.Fallback>R</Avatar.Fallback>
54
- </Avatar.Root>
55
- </Message.Avatar>
56
- <Message.Content>
57
- <Bubble.Group>
58
- <Bubble.Root variant="muted">
59
- <Bubble.Content>It's always a one-line change 😭.</Bubble.Content>
60
- </Bubble.Root>
61
- <Bubble.Root variant="muted">
62
- <Bubble.Content>Alright, let me take a look.</Bubble.Content>
63
- <Bubble.Reactions aria-label="Reactions: thumbs up">
64
- <span>👍</span>
65
- </Bubble.Reactions>
66
- </Bubble.Root>
67
- </Bubble.Group>
68
- </Message.Content>
69
- </Message.Root>
70
- <Marker.Root role="status">
71
- <Marker.Content class="shimmer">
72
- <span class="font-medium">Oliver</span> is typing...
73
- </Marker.Content>
74
- </Marker.Root>
75
- </div>
@@ -1,36 +0,0 @@
1
- <script lang="ts">
2
- import * as Popover from "../../../shadcn/popover/index.js";
3
- import { buttonVariants } from "../../../shadcn/button/index.js";
4
- import { Input } from "../../../shadcn/input/index.js";
5
- import { Label } from "../../../shadcn/label/index.js";
6
- </script>
7
-
8
- <Popover.Root>
9
- <Popover.Trigger class={buttonVariants({ variant: "outline" })}>Open popover</Popover.Trigger>
10
- <Popover.Content class="w-80">
11
- <div class="grid gap-4">
12
- <div class="space-y-2">
13
- <h4 class="leading-none font-medium">Dimensions</h4>
14
- <p class="text-sm text-muted-foreground">Set the dimensions for the layer.</p>
15
- </div>
16
- <div class="grid gap-2">
17
- <div class="grid grid-cols-3 items-center gap-4">
18
- <Label for="width">Width</Label>
19
- <Input id="width" value="100%" class="col-span-2 h-8" />
20
- </div>
21
- <div class="grid grid-cols-3 items-center gap-4">
22
- <Label for="maxWidth">Max. width</Label>
23
- <Input id="maxWidth" value="300px" class="col-span-2 h-8" />
24
- </div>
25
- <div class="grid grid-cols-3 items-center gap-4">
26
- <Label for="height">Height</Label>
27
- <Input id="height" value="25px" class="col-span-2 h-8" />
28
- </div>
29
- <div class="grid grid-cols-3 items-center gap-4">
30
- <Label for="maxHeight">Max. height</Label>
31
- <Input id="maxHeight" value="none" class="col-span-2 h-8" />
32
- </div>
33
- </div>
34
- </div>
35
- </Popover.Content>
36
- </Popover.Root>
@@ -1,13 +0,0 @@
1
- <script lang="ts">
2
- import { onMount } from "svelte";
3
- import { Progress } from "../../../shadcn/progress/index.js";
4
-
5
- let value = $state(13);
6
-
7
- onMount(() => {
8
- const timer = setTimeout(() => (value = 66), 500);
9
- return () => clearTimeout(timer);
10
- });
11
- </script>
12
-
13
- <Progress {value} max={100} class="w-[60%]" />
@@ -1,19 +0,0 @@
1
- <script lang="ts">
2
- import * as RadioGroup from "../../../shadcn/radio-group/index.js";
3
- import { Label } from "../../../shadcn/label/index.js";
4
- </script>
5
-
6
- <RadioGroup.Root value="comfortable">
7
- <div class="flex items-center space-x-2">
8
- <RadioGroup.Item value="default" id="r1" />
9
- <Label for="r1">Default</Label>
10
- </div>
11
- <div class="flex items-center space-x-2">
12
- <RadioGroup.Item value="comfortable" id="r2" />
13
- <Label for="r2">Comfortable</Label>
14
- </div>
15
- <div class="flex items-center space-x-2">
16
- <RadioGroup.Item value="compact" id="r3" />
17
- <Label for="r3">Compact</Label>
18
- </div>
19
- </RadioGroup.Root>
@@ -1,18 +0,0 @@
1
- <script lang="ts">
2
- import { ScrollArea } from "../../../shadcn/scroll-area/index.js";
3
- import { Separator } from "../../../shadcn/separator/index.js";
4
-
5
- const tags = Array.from({ length: 50 }).map((_, i, a) => `v1.2.0-beta.${a.length - i}`);
6
- </script>
7
-
8
- <ScrollArea class="h-72 w-48 rounded-md border">
9
- <div class="p-4">
10
- <h4 class="mb-4 text-sm leading-none font-medium">Tags</h4>
11
- {#each tags as tag (tag)}
12
- <div class="text-sm">
13
- {tag}
14
- </div>
15
- <Separator class="my-2" />
16
- {/each}
17
- </div>
18
- </ScrollArea>