@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,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>
@@ -1,23 +0,0 @@
1
- <script lang="ts">
2
- import * as AlertDialog from "../../../shadcn/alert-dialog/index.js";
3
- import { buttonVariants } from "../../../shadcn/button/index.js";
4
- </script>
5
-
6
- <AlertDialog.Root>
7
- <AlertDialog.Trigger class={buttonVariants({ variant: "outline" })}>
8
- Show Dialog
9
- </AlertDialog.Trigger>
10
- <AlertDialog.Content>
11
- <AlertDialog.Header>
12
- <AlertDialog.Title>Are you absolutely sure?</AlertDialog.Title>
13
- <AlertDialog.Description>
14
- This action cannot be undone. This will permanently delete your account and remove your data
15
- from our servers.
16
- </AlertDialog.Description>
17
- </AlertDialog.Header>
18
- <AlertDialog.Footer>
19
- <AlertDialog.Cancel>Cancel</AlertDialog.Cancel>
20
- <AlertDialog.Action>Continue</AlertDialog.Action>
21
- </AlertDialog.Footer>
22
- </AlertDialog.Content>
23
- </AlertDialog.Root>
@@ -1,30 +0,0 @@
1
- <script lang="ts">
2
- import AlertCircleIcon from "@lucide/svelte/icons/alert-circle";
3
- import CheckCircle2Icon from "@lucide/svelte/icons/check-circle-2";
4
- import PopcornIcon from "@lucide/svelte/icons/popcorn";
5
- import * as Alert from "../../../shadcn/alert/index.js";
6
- </script>
7
-
8
- <div class="grid w-full max-w-xl items-start gap-4">
9
- <Alert.Root>
10
- <CheckCircle2Icon />
11
- <Alert.Title>Success! Your changes have been saved</Alert.Title>
12
- <Alert.Description>This is an alert with icon, title and description.</Alert.Description>
13
- </Alert.Root>
14
- <Alert.Root>
15
- <PopcornIcon />
16
- <Alert.Title>This Alert has a title and an icon. No description.</Alert.Title>
17
- </Alert.Root>
18
- <Alert.Root variant="destructive">
19
- <AlertCircleIcon />
20
- <Alert.Title>Unable to process your payment.</Alert.Title>
21
- <Alert.Description>
22
- <p>Please verify your billing information and try again.</p>
23
- <ul class="list-inside list-disc text-sm">
24
- <li>Check your card details</li>
25
- <li>Ensure sufficient funds</li>
26
- <li>Verify billing address</li>
27
- </ul>
28
- </Alert.Description>
29
- </Alert.Root>
30
- </div>
@@ -1,71 +0,0 @@
1
- <script lang="ts">
2
- import FileCodeIcon from "@lucide/svelte/icons/file-code";
3
- import XIcon from "@lucide/svelte/icons/x";
4
- import * as Attachment from "../../../shadcn/attachment/index.js";
5
- import { Spinner } from "../../../shadcn/spinner/index.js";
6
-
7
- const images = [
8
- {
9
- name: "workspace.png",
10
- meta: "PNG · 820 KB",
11
- src: "https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=900&auto=format&fit=crop&q=80",
12
- alt: "Workspace",
13
- },
14
- {
15
- name: "desk-reference.jpg",
16
- meta: "JPG · 1.1 MB",
17
- src: "https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=900&auto=format&fit=crop&q=80",
18
- alt: "Desk",
19
- },
20
- {
21
- name: "office-reference.jpg",
22
- meta: "JPG · 940 KB",
23
- src: "https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=900&auto=format&fit=crop&q=80",
24
- alt: "Office",
25
- },
26
- ];
27
- </script>
28
-
29
- <div class="mx-auto flex w-full max-w-sm flex-col gap-3 py-12">
30
- <Attachment.Group>
31
- {#each images as image (image.name)}
32
- <Attachment.Root orientation="vertical">
33
- <Attachment.Media variant="image">
34
- <img src={image.src} alt={image.alt} />
35
- </Attachment.Media>
36
- <Attachment.Content>
37
- <Attachment.Title>{image.name}</Attachment.Title>
38
- <Attachment.Description>{image.meta}</Attachment.Description>
39
- </Attachment.Content>
40
- </Attachment.Root>
41
- {/each}
42
- </Attachment.Group>
43
- <Attachment.Root state="uploading" class="w-full">
44
- <Attachment.Media>
45
- <Spinner />
46
- </Attachment.Media>
47
- <Attachment.Content>
48
- <Attachment.Title>sales-dashboard.pdf</Attachment.Title>
49
- <Attachment.Description>Uploading · 64%</Attachment.Description>
50
- </Attachment.Content>
51
- <Attachment.Actions>
52
- <Attachment.Action aria-label="Cancel upload">
53
- <XIcon />
54
- </Attachment.Action>
55
- </Attachment.Actions>
56
- </Attachment.Root>
57
- <Attachment.Root class="w-full">
58
- <Attachment.Media>
59
- <FileCodeIcon />
60
- </Attachment.Media>
61
- <Attachment.Content>
62
- <Attachment.Title>message-renderer.tsx</Attachment.Title>
63
- <Attachment.Description>TypeScript · 12 KB</Attachment.Description>
64
- </Attachment.Content>
65
- <Attachment.Actions>
66
- <Attachment.Action aria-label="Remove message-renderer.tsx">
67
- <XIcon />
68
- </Attachment.Action>
69
- </Attachment.Actions>
70
- </Attachment.Root>
71
- </div>
@@ -1,30 +0,0 @@
1
- <script lang="ts">
2
- import * as Avatar from "../../../shadcn/avatar/index.js";
3
- </script>
4
-
5
- <div class="flex flex-row flex-wrap items-center gap-12">
6
- <Avatar.Root>
7
- <Avatar.Image src="https://github.com/shadcn.png" alt="@shadcn" />
8
- <Avatar.Fallback>CN</Avatar.Fallback>
9
- </Avatar.Root>
10
- <Avatar.Root class="rounded-lg">
11
- <Avatar.Image src="https://github.com/evilrabbit.png" alt="@evilrabbit" />
12
- <Avatar.Fallback>ER</Avatar.Fallback>
13
- </Avatar.Root>
14
- <div
15
- class="flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:grayscale"
16
- >
17
- <Avatar.Root>
18
- <Avatar.Image src="https://github.com/shadcn.png" alt="@shadcn" />
19
- <Avatar.Fallback>CN</Avatar.Fallback>
20
- </Avatar.Root>
21
- <Avatar.Root>
22
- <Avatar.Image src="https://github.com/leerob.png" alt="@leerob" />
23
- <Avatar.Fallback>LR</Avatar.Fallback>
24
- </Avatar.Root>
25
- <Avatar.Root>
26
- <Avatar.Image src="https://github.com/evilrabbit.png" alt="@evilrabbit" />
27
- <Avatar.Fallback>ER</Avatar.Fallback>
28
- </Avatar.Root>
29
- </div>
30
- </div>
@@ -1,26 +0,0 @@
1
- <script lang="ts">
2
- import BadgeCheckIcon from "@lucide/svelte/icons/badge-check";
3
- import { Badge } from "../../../shadcn/badge/index.js";
4
- </script>
5
-
6
- <div class="flex flex-col items-center gap-2">
7
- <div class="flex w-full flex-wrap gap-2">
8
- <Badge>Badge</Badge>
9
- <Badge variant="secondary">Secondary</Badge>
10
- <Badge variant="destructive">Destructive</Badge>
11
- <Badge variant="outline">Outline</Badge>
12
- </div>
13
- <div class="flex w-full flex-wrap gap-2">
14
- <Badge variant="secondary" class="bg-blue-500 text-white dark:bg-blue-600">
15
- <BadgeCheckIcon />
16
- Verified
17
- </Badge>
18
- <Badge class="h-5 min-w-5 rounded-full px-1 font-mono tabular-nums">8</Badge>
19
- <Badge class="h-5 min-w-5 rounded-full px-1 font-mono tabular-nums" variant="destructive">
20
- 99
21
- </Badge>
22
- <Badge class="h-5 min-w-5 rounded-full px-1 font-mono tabular-nums" variant="outline">
23
- 20+
24
- </Badge>
25
- </div>
26
- </div>
@@ -1,34 +0,0 @@
1
- <script lang="ts">
2
- import * as Breadcrumb from "../../../shadcn/breadcrumb/index.js";
3
- import * as DropdownMenu from "../../../shadcn/dropdown-menu/index.js";
4
- </script>
5
-
6
- <Breadcrumb.Root>
7
- <Breadcrumb.List>
8
- <Breadcrumb.Item>
9
- <Breadcrumb.Link href="/">Home</Breadcrumb.Link>
10
- </Breadcrumb.Item>
11
- <Breadcrumb.Separator />
12
- <Breadcrumb.Item>
13
- <DropdownMenu.Root>
14
- <DropdownMenu.Trigger class="flex items-center gap-1">
15
- <Breadcrumb.Ellipsis class="size-4" />
16
- <span class="sr-only">Toggle menu</span>
17
- </DropdownMenu.Trigger>
18
- <DropdownMenu.Content align="start">
19
- <DropdownMenu.Item>Documentation</DropdownMenu.Item>
20
- <DropdownMenu.Item>Themes</DropdownMenu.Item>
21
- <DropdownMenu.Item>GitHub</DropdownMenu.Item>
22
- </DropdownMenu.Content>
23
- </DropdownMenu.Root>
24
- </Breadcrumb.Item>
25
- <Breadcrumb.Separator />
26
- <Breadcrumb.Item>
27
- <Breadcrumb.Link href="/docs/components">Components</Breadcrumb.Link>
28
- </Breadcrumb.Item>
29
- <Breadcrumb.Separator />
30
- <Breadcrumb.Item>
31
- <Breadcrumb.Page>Breadcrumb</Breadcrumb.Page>
32
- </Breadcrumb.Item>
33
- </Breadcrumb.List>
34
- </Breadcrumb.Root>
@@ -1,36 +0,0 @@
1
- <script lang="ts">
2
- import * as Bubble from "../../../shadcn/bubble/index.js";
3
- </script>
4
-
5
- <div class="flex w-full max-w-sm flex-col gap-8 py-12">
6
- <Bubble.Root align="end">
7
- <Bubble.Content>Hey there! what's up?</Bubble.Content>
8
- </Bubble.Root>
9
- <Bubble.Group>
10
- <Bubble.Root variant="muted">
11
- <Bubble.Content>Hey! Want to see chat bubbles?</Bubble.Content>
12
- </Bubble.Root>
13
- <Bubble.Root variant="muted">
14
- <Bubble.Content>
15
- I can group messages, switch sides, and keep the whole thread easy to scan.
16
- </Bubble.Content>
17
- <Bubble.Reactions role="img" aria-label="Reaction: thumbs up">
18
- <span>👍</span>
19
- </Bubble.Reactions>
20
- </Bubble.Root>
21
- </Bubble.Group>
22
- <Bubble.Root align="end">
23
- <Bubble.Content>Sure. Hit me with your best demo.</Bubble.Content>
24
- </Bubble.Root>
25
- <Bubble.Root variant="muted">
26
- <Bubble.Content>
27
- Yes. You are reading a demo that is demoing itself. Very meta. Very on-brand.
28
- </Bubble.Content>
29
- <Bubble.Reactions role="img" aria-label="Reactions: thumbs up, fire, eyes, and 2 more">
30
- <span>👍</span>
31
- <span>🔥</span>
32
- <span>👀</span>
33
- <span>+2</span>
34
- </Bubble.Reactions>
35
- </Bubble.Root>
36
- </div>
@@ -1,11 +0,0 @@
1
- <script lang="ts">
2
- import ArrowUpIcon from "@lucide/svelte/icons/arrow-up";
3
- import { Button } from "../../../shadcn/button/index.js";
4
- </script>
5
-
6
- <div class="flex flex-wrap items-center gap-2 md:flex-row">
7
- <Button variant="outline">Button</Button>
8
- <Button variant="outline" size="icon" aria-label="Submit">
9
- <ArrowUpIcon />
10
- </Button>
11
- </div>
@@ -1,8 +0,0 @@
1
- <script lang="ts">
2
- import { getLocalTimeZone, today } from "@internationalized/date";
3
- import { Calendar } from "../../../shadcn/calendar/index.js";
4
-
5
- let value = today(getLocalTimeZone());
6
- </script>
7
-
8
- <Calendar type="single" bind:value class="rounded-md border shadow-sm" captionLayout="dropdown" />
@@ -1,39 +0,0 @@
1
- <script lang="ts">
2
- import * as Card from "../../../shadcn/card/index.js";
3
- import { Button } 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
- <Card.Root class="-my-4 w-full max-w-sm">
9
- <Card.Header>
10
- <Card.Title>Login to your account</Card.Title>
11
- <Card.Description>Enter your email below to login to your account</Card.Description>
12
- <Card.Action>
13
- <Button variant="link">Sign Up</Button>
14
- </Card.Action>
15
- </Card.Header>
16
- <Card.Content>
17
- <form>
18
- <div class="flex flex-col gap-6">
19
- <div class="grid gap-2">
20
- <Label for="email">Email</Label>
21
- <Input id="email" type="email" placeholder="m@example.com" required />
22
- </div>
23
- <div class="grid gap-2">
24
- <div class="flex items-center">
25
- <Label for="password">Password</Label>
26
- <a href="##" class="ms-auto inline-block text-sm underline-offset-4 hover:underline">
27
- Forgot your password?
28
- </a>
29
- </div>
30
- <Input id="password" type="password" required />
31
- </div>
32
- </div>
33
- </form>
34
- </Card.Content>
35
- <Card.Footer class="flex-col gap-2">
36
- <Button type="submit" class="w-full">Login</Button>
37
- <Button variant="outline" class="w-full">Login with Google</Button>
38
- </Card.Footer>
39
- </Card.Root>
@@ -1,39 +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 class="flex flex-col gap-6">
7
- <div class="flex items-center gap-3">
8
- <Checkbox id="terms" />
9
- <Label for="terms">Accept terms and conditions</Label>
10
- </div>
11
- <div class="flex items-start gap-3">
12
- <Checkbox id="terms-2" checked />
13
- <div class="grid gap-2">
14
- <Label for="terms-2">Accept terms and conditions</Label>
15
- <p class="text-sm text-muted-foreground">
16
- By clicking this checkbox, you agree to the terms and conditions.
17
- </p>
18
- </div>
19
- </div>
20
- <div class="flex items-start gap-3">
21
- <Checkbox id="toggle" disabled />
22
- <Label for="toggle">Enable notifications</Label>
23
- </div>
24
- <Label
25
- class="flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-[[aria-checked=true]]:border-blue-600 has-[[aria-checked=true]]:bg-blue-50 dark:has-[[aria-checked=true]]:border-blue-900 dark:has-[[aria-checked=true]]:bg-blue-950"
26
- >
27
- <Checkbox
28
- id="toggle-2"
29
- checked
30
- class="data-[state=checked]:border-blue-600 data-[state=checked]:bg-blue-600 data-[state=checked]:text-white dark:data-[state=checked]:border-blue-700 dark:data-[state=checked]:bg-blue-700"
31
- />
32
- <div class="grid gap-1.5 font-normal">
33
- <p class="text-sm leading-none font-medium">Enable notifications</p>
34
- <p class="text-sm text-muted-foreground">
35
- You can enable or disable notifications at any time.
36
- </p>
37
- </div>
38
- </Label>
39
- </div>
@@ -1,80 +0,0 @@
1
- <script lang="ts">
2
- import DownloadIcon from "@lucide/svelte/icons/download";
3
- import FileCodeIcon from "@lucide/svelte/icons/file-code";
4
- import WrapTextIcon from "@lucide/svelte/icons/text-wrap";
5
- import * as CodeBlock from "../../../shadcn/code-block/index.js";
6
- import { useHighlightedCode } from "../../../shadcn/hooks/use-highlighted-code.svelte.js";
7
- import { Button } from "../../../shadcn/button/index.js";
8
-
9
- const code = `import { streamText } from "ai"
10
-
11
- export async function POST(request: Request) {
12
- const { messages } = await request.json()
13
-
14
- const result = streamText({
15
- model: "anthropic/claude-sonnet-4.5",
16
- system: "You are a helpful assistant. Answer in one short paragraph.",
17
- messages,
18
- })
19
-
20
- return result.toUIMessageStreamResponse()
21
- }`;
22
-
23
- function download(value: string, filename: string) {
24
- const url = URL.createObjectURL(new Blob([value], { type: "text/plain" }));
25
- const link = document.createElement("a");
26
- link.href = url;
27
- link.download = filename;
28
- link.click();
29
- URL.revokeObjectURL(url);
30
- }
31
-
32
- let wrap = $state(false);
33
-
34
- const lines = useHighlightedCode(
35
- () => code,
36
- () => "ts"
37
- );
38
- </script>
39
-
40
- <div class="w-full max-w-lg">
41
- <CodeBlock.Root>
42
- <CodeBlock.Header>
43
- <CodeBlock.Title>
44
- <FileCodeIcon />
45
- app/api/chat/route.ts
46
- </CodeBlock.Title>
47
- <CodeBlock.Actions>
48
- <Button
49
- variant="ghost"
50
- size="sm"
51
- icon
52
- aria-label="Wrap lines"
53
- aria-pressed={wrap}
54
- class="aria-pressed:text-foreground"
55
- onclick={() => (wrap = !wrap)}
56
- >
57
- <WrapTextIcon />
58
- </Button>
59
- <Button
60
- variant="ghost"
61
- size="sm"
62
- icon
63
- aria-label="Download"
64
- onclick={() => download(code, "route.ts")}
65
- >
66
- <DownloadIcon />
67
- </Button>
68
- <CodeBlock.CopyButton value={code} />
69
- </CodeBlock.Actions>
70
- </CodeBlock.Header>
71
- <CodeBlock.Content {wrap} lineNumbers>
72
- {#each lines.current as line, index (index)}
73
- <CodeBlock.Line
74
- variant={index >= 5 && index <= 9 ? "highlighted" : "default"}
75
- code={line}
76
- />
77
- {/each}
78
- </CodeBlock.Content>
79
- </CodeBlock.Root>
80
- </div>
@@ -1,20 +0,0 @@
1
- <script lang="ts">
2
- import ChevronsUpDownIcon from "@lucide/svelte/icons/chevrons-up-down";
3
- import * as Collapsible from "../../../shadcn/collapsible/index.js";
4
- import { buttonVariants } from "../../../shadcn/button/index.js";
5
- </script>
6
-
7
- <Collapsible.Root class="w-[350px] space-y-2">
8
- <div class="flex items-center justify-between space-x-4 px-4">
9
- <h4 class="text-sm font-semibold">@huntabyte starred 3 repositories</h4>
10
- <Collapsible.Trigger class={buttonVariants({ variant: "ghost", size: "sm", class: "w-9 p-0" })}>
11
- <ChevronsUpDownIcon />
12
- <span class="sr-only">Toggle</span>
13
- </Collapsible.Trigger>
14
- </div>
15
- <div class="rounded-md border px-4 py-3 font-mono text-sm">@huntabyte/bits-ui</div>
16
- <Collapsible.Content class="space-y-2">
17
- <div class="rounded-md border px-4 py-3 font-mono text-sm">@melt-ui/melt-ui</div>
18
- <div class="rounded-md border px-4 py-3 font-mono text-sm">@sveltejs/svelte</div>
19
- </Collapsible.Content>
20
- </Collapsible.Root>
@@ -1,48 +0,0 @@
1
- <script lang="ts">
2
- import CalculatorIcon from "@lucide/svelte/icons/calculator";
3
- import CalendarIcon from "@lucide/svelte/icons/calendar";
4
- import CreditCardIcon from "@lucide/svelte/icons/credit-card";
5
- import SettingsIcon from "@lucide/svelte/icons/settings";
6
- import SmileIcon from "@lucide/svelte/icons/smile";
7
- import UserIcon from "@lucide/svelte/icons/user";
8
- import * as Command from "../../../shadcn/command/index.js";
9
- </script>
10
-
11
- <Command.Root class="rounded-lg border shadow-md md:min-w-[450px]">
12
- <Command.Input placeholder="Type a command or search..." />
13
- <Command.List>
14
- <Command.Empty>No results found.</Command.Empty>
15
- <Command.Group heading="Suggestions">
16
- <Command.Item>
17
- <CalendarIcon />
18
- <span>Calendar</span>
19
- </Command.Item>
20
- <Command.Item>
21
- <SmileIcon />
22
- <span>Search Emoji</span>
23
- </Command.Item>
24
- <Command.Item disabled>
25
- <CalculatorIcon />
26
- <span>Calculator</span>
27
- </Command.Item>
28
- </Command.Group>
29
- <Command.Separator />
30
- <Command.Group heading="Settings">
31
- <Command.Item>
32
- <UserIcon />
33
- <span>Profile</span>
34
- <Command.Shortcut>⌘P</Command.Shortcut>
35
- </Command.Item>
36
- <Command.Item>
37
- <CreditCardIcon />
38
- <span>Billing</span>
39
- <Command.Shortcut>⌘B</Command.Shortcut>
40
- </Command.Item>
41
- <Command.Item>
42
- <SettingsIcon />
43
- <span>Settings</span>
44
- <Command.Shortcut>⌘S</Command.Shortcut>
45
- </Command.Item>
46
- </Command.Group>
47
- </Command.List>
48
- </Command.Root>
@@ -1,54 +0,0 @@
1
- <script lang="ts">
2
- import * as ContextMenu from "../../../shadcn/context-menu/index.js";
3
-
4
- let showBookmarks = $state(false);
5
- let showFullURLs = $state(true);
6
-
7
- let value = $state("pedro");
8
- </script>
9
-
10
- <ContextMenu.Root>
11
- <ContextMenu.Trigger
12
- class="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm"
13
- >
14
- Right click here
15
- </ContextMenu.Trigger>
16
- <ContextMenu.Content class="w-52">
17
- <ContextMenu.Item>
18
- Back
19
- <ContextMenu.Shortcut>⌘[</ContextMenu.Shortcut>
20
- </ContextMenu.Item>
21
- <ContextMenu.Item disabled>
22
- Forward
23
- <ContextMenu.Shortcut>⌘]</ContextMenu.Shortcut>
24
- </ContextMenu.Item>
25
- <ContextMenu.Item>
26
- Reload
27
- <ContextMenu.Shortcut>⌘R</ContextMenu.Shortcut>
28
- </ContextMenu.Item>
29
- <ContextMenu.Sub>
30
- <ContextMenu.SubTrigger>More Tools</ContextMenu.SubTrigger>
31
- <ContextMenu.SubContent class="w-48">
32
- <ContextMenu.Item>
33
- Save Page As...
34
- <ContextMenu.Shortcut>⇧⌘S</ContextMenu.Shortcut>
35
- </ContextMenu.Item>
36
- <ContextMenu.Item>Create Shortcut...</ContextMenu.Item>
37
- <ContextMenu.Item>Name Window...</ContextMenu.Item>
38
- <ContextMenu.Separator />
39
- <ContextMenu.Item>Developer Tools</ContextMenu.Item>
40
- </ContextMenu.SubContent>
41
- </ContextMenu.Sub>
42
- <ContextMenu.Separator />
43
- <ContextMenu.CheckboxItem bind:checked={showBookmarks}>Show Bookmarks</ContextMenu.CheckboxItem>
44
- <ContextMenu.CheckboxItem bind:checked={showFullURLs}>Show Full URLs</ContextMenu.CheckboxItem>
45
- <ContextMenu.Separator />
46
- <ContextMenu.RadioGroup bind:value>
47
- <ContextMenu.Group>
48
- <ContextMenu.Label>People</ContextMenu.Label>
49
- <ContextMenu.RadioItem value="pedro">Pedro Duarte</ContextMenu.RadioItem>
50
- <ContextMenu.RadioItem value="colm">Colm Tuite</ContextMenu.RadioItem>
51
- </ContextMenu.Group>
52
- </ContextMenu.RadioGroup>
53
- </ContextMenu.Content>
54
- </ContextMenu.Root>