@joewinke/jatui 0.1.33 → 0.2.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 (209) hide show
  1. package/CLAUDE.md +22 -0
  2. package/dist/actions/attention.d.ts +24 -0
  3. package/dist/actions/attention.js +94 -0
  4. package/dist/actions/floating.d.ts +53 -0
  5. package/dist/actions/floating.js +158 -0
  6. package/dist/actions/staggerEntrance.d.ts +28 -0
  7. package/dist/actions/staggerEntrance.js +71 -0
  8. package/dist/actions/tooltip.d.ts +28 -0
  9. package/dist/actions/tooltip.js +186 -0
  10. package/dist/assets/sounds/README.md +47 -0
  11. package/dist/assets/sounds/error.d.ts +1 -0
  12. package/dist/assets/sounds/error.js +4 -0
  13. package/dist/assets/sounds/notify.d.ts +1 -0
  14. package/dist/assets/sounds/notify.js +4 -0
  15. package/dist/assets/sounds/pop.d.ts +1 -0
  16. package/dist/assets/sounds/pop.js +4 -0
  17. package/dist/assets/sounds/send.d.ts +1 -0
  18. package/dist/assets/sounds/send.js +4 -0
  19. package/dist/assets/sounds/success.d.ts +1 -0
  20. package/dist/assets/sounds/success.js +4 -0
  21. package/dist/assets/sounds/toggle.d.ts +1 -0
  22. package/dist/assets/sounds/toggle.js +4 -0
  23. package/dist/components/AnimatedNumber.svelte +112 -0
  24. package/dist/components/AnimatedNumber.svelte.d.ts +8 -0
  25. package/dist/components/Badge.svelte +75 -4
  26. package/dist/components/Badge.svelte.d.ts +6 -1
  27. package/dist/components/Button.svelte +196 -21
  28. package/dist/components/Button.svelte.d.ts +10 -1
  29. package/dist/components/Carousel.svelte +265 -0
  30. package/dist/components/Carousel.svelte.d.ts +21 -0
  31. package/dist/components/ChipInput.svelte +63 -3
  32. package/dist/components/Collapse.svelte +70 -14
  33. package/dist/components/Collapse.svelte.d.ts +11 -0
  34. package/dist/components/ColorSelector.svelte +21 -24
  35. package/dist/components/CommandPalette.svelte +475 -0
  36. package/dist/components/CommandPalette.svelte.d.ts +3 -0
  37. package/dist/components/ContextMenu.svelte +9 -73
  38. package/dist/components/CopyButton.svelte +156 -0
  39. package/dist/components/CopyButton.svelte.d.ts +12 -0
  40. package/dist/components/HoldToConfirm.svelte +183 -0
  41. package/dist/components/HoldToConfirm.svelte.d.ts +11 -0
  42. package/dist/components/KeyboardShortcutsOverlay.svelte +54 -8
  43. package/dist/components/KeyboardShortcutsOverlay.svelte.d.ts +3 -0
  44. package/dist/components/PasswordMeter.svelte +87 -0
  45. package/dist/components/PasswordMeter.svelte.d.ts +8 -0
  46. package/dist/components/PinInput.svelte +186 -0
  47. package/dist/components/PinInput.svelte.d.ts +13 -0
  48. package/dist/components/QuantityStepper.svelte +185 -0
  49. package/dist/components/QuantityStepper.svelte.d.ts +12 -0
  50. package/dist/components/Skeleton.svelte +123 -0
  51. package/dist/components/Skeleton.svelte.d.ts +12 -0
  52. package/dist/components/SpeechForm.svelte +37 -0
  53. package/dist/components/StatusBadge.svelte +31 -3
  54. package/dist/components/StatusBadge.svelte.d.ts +0 -5
  55. package/dist/components/Tabs.svelte +270 -0
  56. package/dist/components/Tabs.svelte.d.ts +15 -0
  57. package/dist/components/TextInput.svelte +138 -38
  58. package/dist/components/TextInput.svelte.d.ts +9 -1
  59. package/dist/components/VoicePlayer.svelte +51 -0
  60. package/dist/components/basic/Alert.svelte +36 -0
  61. package/dist/components/basic/Alert.svelte.d.ts +9 -0
  62. package/dist/components/basic/Breadcrumb.svelte +27 -0
  63. package/dist/components/basic/Breadcrumb.svelte.d.ts +11 -0
  64. package/dist/components/basic/ButtonGroup.svelte +15 -0
  65. package/dist/components/basic/ButtonGroup.svelte.d.ts +8 -0
  66. package/dist/components/basic/Checkbox.svelte +85 -0
  67. package/dist/components/basic/Checkbox.svelte.d.ts +15 -0
  68. package/dist/components/basic/Empty.svelte +17 -0
  69. package/dist/components/basic/Empty.svelte.d.ts +8 -0
  70. package/dist/components/basic/Kbd.svelte +16 -0
  71. package/dist/components/basic/Kbd.svelte.d.ts +8 -0
  72. package/dist/components/basic/Pagination.svelte +104 -0
  73. package/dist/components/basic/Pagination.svelte.d.ts +12 -0
  74. package/dist/components/basic/RadioGroup.svelte +71 -0
  75. package/dist/components/basic/RadioGroup.svelte.d.ts +18 -0
  76. package/dist/components/basic/Separator.svelte +19 -0
  77. package/dist/components/basic/Separator.svelte.d.ts +8 -0
  78. package/dist/components/basic/Slider.svelte +72 -0
  79. package/dist/components/basic/Slider.svelte.d.ts +17 -0
  80. package/dist/components/basic/Switch.svelte +88 -0
  81. package/dist/components/basic/Switch.svelte.d.ts +14 -0
  82. package/dist/components/basic/Toggle.svelte +43 -0
  83. package/dist/components/basic/Toggle.svelte.d.ts +14 -0
  84. package/dist/components/graph/GraphCanvas.svelte +103 -0
  85. package/dist/components/graph/GraphCanvas.svelte.d.ts +22 -0
  86. package/dist/components/graph/JatuiNode.svelte +128 -0
  87. package/dist/components/graph/JatuiNode.svelte.d.ts +14 -0
  88. package/dist/components/graph/theme.d.ts +27 -0
  89. package/dist/components/graph/theme.js +136 -0
  90. package/dist/components/messaging/MessageItem.svelte +92 -0
  91. package/dist/components/messaging/MessageItem.svelte.d.ts +5 -0
  92. package/dist/components/messaging/TypingIndicator.svelte +63 -0
  93. package/dist/components/messaging/TypingIndicator.svelte.d.ts +7 -0
  94. package/dist/components/pipeline/PipelineColumn.svelte +44 -3
  95. package/dist/components/progress/ProgressBar.svelte +189 -0
  96. package/dist/components/progress/ProgressBar.svelte.d.ts +17 -0
  97. package/dist/components/progress/ProgressRing.svelte +138 -0
  98. package/dist/components/progress/ProgressRing.svelte.d.ts +12 -0
  99. package/dist/components/progress/Steps.svelte +195 -0
  100. package/dist/components/progress/Steps.svelte.d.ts +14 -0
  101. package/dist/components/shell/NavigationMenu.svelte +422 -0
  102. package/dist/components/shell/NavigationMenu.svelte.d.ts +43 -0
  103. package/dist/components/shell/Sidebar.svelte +276 -0
  104. package/dist/components/shell/Sidebar.svelte.d.ts +32 -0
  105. package/dist/components/shell/SidebarGroup.svelte +180 -0
  106. package/dist/components/shell/SidebarGroup.svelte.d.ts +19 -0
  107. package/dist/components/shell/SidebarItem.svelte +170 -0
  108. package/dist/components/shell/SidebarItem.svelte.d.ts +24 -0
  109. package/dist/components/shell/shell.d.ts +30 -0
  110. package/dist/components/shell/shell.js +65 -0
  111. package/dist/components/table/DataTable.svelte +364 -0
  112. package/dist/components/table/DataTable.svelte.d.ts +4 -0
  113. package/dist/components/table/flexRender.d.ts +31 -0
  114. package/dist/components/table/flexRender.js +32 -0
  115. package/dist/components/table/types.d.ts +28 -0
  116. package/dist/components/table/types.js +1 -0
  117. package/dist/components/toast/ToastHost.svelte +21 -0
  118. package/dist/components/toast/ToastHost.svelte.d.ts +3 -0
  119. package/dist/components/toast/ToastItem.svelte +287 -0
  120. package/dist/components/toast/ToastItem.svelte.d.ts +9 -0
  121. package/dist/index.d.ts +59 -0
  122. package/dist/index.js +67 -0
  123. package/dist/showcase/AnimatedBeam.svelte +183 -0
  124. package/dist/showcase/AnimatedBeam.svelte.d.ts +26 -0
  125. package/dist/showcase/AuroraDrift.svelte +74 -0
  126. package/dist/showcase/AuroraDrift.svelte.d.ts +9 -0
  127. package/dist/showcase/BentoCard.svelte +50 -0
  128. package/dist/showcase/BentoCard.svelte.d.ts +14 -0
  129. package/dist/showcase/BentoGrid.svelte +43 -0
  130. package/dist/showcase/BentoGrid.svelte.d.ts +12 -0
  131. package/dist/showcase/BorderBeam.svelte +79 -0
  132. package/dist/showcase/BorderBeam.svelte.d.ts +12 -0
  133. package/dist/showcase/ClipWipe.svelte +82 -0
  134. package/dist/showcase/ClipWipe.svelte.d.ts +12 -0
  135. package/dist/showcase/Confetti.svelte +71 -0
  136. package/dist/showcase/Confetti.svelte.d.ts +10 -0
  137. package/dist/showcase/CursorSpotlight.svelte +85 -0
  138. package/dist/showcase/CursorSpotlight.svelte.d.ts +9 -0
  139. package/dist/showcase/DeviceMock.svelte +186 -0
  140. package/dist/showcase/DeviceMock.svelte.d.ts +11 -0
  141. package/dist/showcase/Dock.svelte +123 -0
  142. package/dist/showcase/Dock.svelte.d.ts +17 -0
  143. package/dist/showcase/FlipCard.svelte +103 -0
  144. package/dist/showcase/FlipCard.svelte.d.ts +10 -0
  145. package/dist/showcase/FocusReveal.svelte +83 -0
  146. package/dist/showcase/FocusReveal.svelte.d.ts +11 -0
  147. package/dist/showcase/Globe.svelte +202 -0
  148. package/dist/showcase/Globe.svelte.d.ts +16 -0
  149. package/dist/showcase/KenBurns.svelte +105 -0
  150. package/dist/showcase/KenBurns.svelte.d.ts +13 -0
  151. package/dist/showcase/Marquee.svelte +89 -0
  152. package/dist/showcase/Marquee.svelte.d.ts +9 -0
  153. package/dist/showcase/ParallaxTilt.svelte +98 -0
  154. package/dist/showcase/ParallaxTilt.svelte.d.ts +10 -0
  155. package/dist/showcase/ScrambleText.svelte +98 -0
  156. package/dist/showcase/ScrambleText.svelte.d.ts +11 -0
  157. package/dist/showcase/ShineSweep.svelte +81 -0
  158. package/dist/showcase/ShineSweep.svelte.d.ts +9 -0
  159. package/dist/showcase/Terminal.svelte +230 -0
  160. package/dist/showcase/Terminal.svelte.d.ts +18 -0
  161. package/dist/showcase/TextSplitReveal.svelte +146 -0
  162. package/dist/showcase/TextSplitReveal.svelte.d.ts +13 -0
  163. package/dist/showcase/TextWave.svelte +55 -0
  164. package/dist/showcase/TextWave.svelte.d.ts +8 -0
  165. package/dist/showcase/TypewriterText.svelte +130 -0
  166. package/dist/showcase/TypewriterText.svelte.d.ts +9 -0
  167. package/dist/showcase/backdrop/GrainGradient.svelte +126 -0
  168. package/dist/showcase/backdrop/GrainGradient.svelte.d.ts +23 -0
  169. package/dist/showcase/backdrop/MeshGradient.svelte +104 -0
  170. package/dist/showcase/backdrop/MeshGradient.svelte.d.ts +20 -0
  171. package/dist/showcase/backdrop/Metaballs.svelte +116 -0
  172. package/dist/showcase/backdrop/Metaballs.svelte.d.ts +18 -0
  173. package/dist/showcase/backdrop/NeuroNoise.svelte +115 -0
  174. package/dist/showcase/backdrop/NeuroNoise.svelte.d.ts +20 -0
  175. package/dist/showcase/backdrop/ShowcaseBackdrop.svelte +48 -0
  176. package/dist/showcase/backdrop/ShowcaseBackdrop.svelte.d.ts +12 -0
  177. package/dist/showcase/generative/GenerativeBackdrop.svelte +234 -0
  178. package/dist/showcase/generative/GenerativeBackdrop.svelte.d.ts +9 -0
  179. package/dist/showcase/generative/intent.d.ts +7 -0
  180. package/dist/showcase/generative/intent.js +67 -0
  181. package/dist/showcase/generative/manifest.d.ts +9 -0
  182. package/dist/showcase/generative/manifest.js +97 -0
  183. package/dist/showcase/generative/types.d.ts +48 -0
  184. package/dist/showcase/generative/types.js +8 -0
  185. package/dist/showcase/index.d.ts +36 -0
  186. package/dist/showcase/index.js +46 -0
  187. package/dist/showcase/scroll/SmoothScroll.svelte +49 -0
  188. package/dist/showcase/scroll/SmoothScroll.svelte.d.ts +12 -0
  189. package/dist/showcase/scroll/scrollProgress.d.ts +24 -0
  190. package/dist/showcase/scroll/scrollProgress.js +65 -0
  191. package/dist/showcase/scroll/scrollReveal.d.ts +30 -0
  192. package/dist/showcase/scroll/scrollReveal.js +70 -0
  193. package/dist/stores/commandPalette.svelte.d.ts +24 -0
  194. package/dist/stores/commandPalette.svelte.js +82 -0
  195. package/dist/stores/toast.svelte.d.ts +28 -0
  196. package/dist/stores/toast.svelte.js +33 -0
  197. package/dist/styles/motion.css +46 -0
  198. package/dist/styles/tokens.css +31 -0
  199. package/dist/transitions/glide.d.ts +31 -0
  200. package/dist/transitions/glide.js +58 -0
  201. package/dist/utils/sound.d.ts +6 -0
  202. package/dist/utils/sound.js +113 -0
  203. package/dist/utils/splitText.d.ts +25 -0
  204. package/dist/utils/splitText.js +94 -0
  205. package/dist/utils/themeWipe.d.ts +21 -0
  206. package/dist/utils/themeWipe.js +94 -0
  207. package/dist/utils/viewTransition.d.ts +23 -0
  208. package/dist/utils/viewTransition.js +75 -0
  209. package/package.json +50 -3
@@ -0,0 +1,47 @@
1
+ # UI Sound Clips
2
+
3
+ CC0-licensed UI sound clips sourced from Kenney's Interface Sounds pack, pre-encoded as MP3 base64 data URIs via the [soundcn](https://github.com/kapishdima/soundcn) pipeline (OGG/WAV → MP3 @ 64kbps mono 44.1kHz → base64).
4
+
5
+ ## Clips
6
+
7
+ | File | Sound Name | Duration | Description |
8
+ |------|-----------|----------|-------------|
9
+ | `success.ts` | success-chime | ~0.49s | Task completed or action succeeded |
10
+ | `error.ts` | error-buzz | ~0.10s | Error or destructive action |
11
+ | `notify.ts` | notification-pop | ~0.54s | New message or notification |
12
+ | `toggle.ts` | toggle-001 | ~0.14s | Toggle switch or checkbox state change |
13
+ | `send.ts` | switch-on | ~0.36s | Message sent or form submitted |
14
+ | `pop.ts` | click-soft | ~0.007s | Subtle click or button tap |
15
+
16
+ ## Provenance
17
+
18
+ | Clip | Source URL | License |
19
+ |------|-----------|---------|
20
+ | success-chime | https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/success-chime/success-chime.ts | CC0 |
21
+ | error-buzz | https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/error-buzz/error-buzz.ts | CC0 |
22
+ | notification-pop | https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/notification-pop/notification-pop.ts | CC0 |
23
+ | toggle-001 | https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/toggle-001/toggle-001.ts | CC0 |
24
+ | switch-on | https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/switch-on/switch-on.ts | CC0 |
25
+ | click-soft | https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/click-soft/click-soft.ts | CC0 |
26
+
27
+ Original pack: **Kenney Interface Sounds** — https://kenney.nl/assets/interface-sounds (CC0 / Public Domain)
28
+
29
+ ## Usage
30
+
31
+ ```typescript
32
+ import { registerSound, play, setSoundEnabled, isSoundEnabled } from '$lib/utils/sound';
33
+ import { successSound } from '$lib/assets/sounds/success';
34
+ import { errorSound } from '$lib/assets/sounds/error';
35
+
36
+ // Register on app init (after first user gesture)
37
+ await registerSound('success', successSound);
38
+ await registerSound('error', errorSound);
39
+
40
+ // Play
41
+ play('success'); // default volume 0.15
42
+ play('error', { volume: 0.2 });
43
+
44
+ // Toggle
45
+ setSoundEnabled(true);
46
+ isSoundEnabled(); // → true
47
+ ```
@@ -0,0 +1 @@
1
+ export declare const errorSound = "data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAAAUAAATkAFVVVVVVVVVVVVVVVVVVVVVVVVV/f39/f39/f39/f39/f39/f39/f6qqqqqqqqqqqqqqqqqqqqqqqqqq1dXV1dXV1dXV1dXV1dXV1dXV1dX//////////////////////////wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkAkAAAAAAAAAE5Ct0VKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAABrBja7SRAAHpFK03MPAAAAADpAAQG24rFaPVBQCAYJG5znPz/b6NqcOBgZzv/QIBgYs7/6lBj4Ph///3cuH+c5c//+GAAQHa6AAAAASCUWIBQCyQJZStElAWcc9uAG+mh4XttXtzdiUNiuVScgn20gM5uFsLE6Fxhn+ooJIxfQBCzFUpjz1wPUomKsWXV38+X77GWGKcTC8hH7Co3sLLRijb/OSZ8+EokIpc0wKgoFjAlEQPHQa/EoSES2//LFVoN1sAAAFygDXWUv/7UsQFgArspWW9hAARbhFq6rKwAqVF/AdqejzEmlOy1F5XbkjDHJAIyEgPA+AKAqSGQaGguBULhCkD3qDWeB8DzUNJbb7lrlVWa/rjaIbq/7ygo9INWMicMl4dEirDxb3I3gAAAnMANIK2GREbZA8FCWtPoXkVeZzwrfKGDLmaM47+A5HoEIbi4gyFJy6Lmkkmkkdp1KkjzrddOq2w5zrn//3Nb8JPBk7SoFXc7lVA0eBoqdd2w6VOjw0oNAAAAAUKKBQgQAQAi/uhmyAnxM15//tSxAoADGU5Z5j2gAGGky63mPAAjm0TcAIi5zgBMLwtS483d1dBIkP8lB5jsGA/8YMkx5gGgOZ/+aKWbkcKh//iUBzyXNzyaf//5o0uMgOcvp///+hpqQJc3Bx3//EBlEuHxpKKAdn8DBSAiMlz2HZmqAgCAHn1q11bWu4/1m+IicMtXoeozcJYmSXkwOp65uK0nVEe7qD41qvYsXN5ILFBbn7x2zNszFuDq0bFoVg6sFiOvelwLQEx5WIgKdJSURXEINB2aJcjaCAKTlorySL/+1LEBYAL0Etrp72BUXuPKaqwkAD4DYLuOE5S4k4J4hxEGgahzphEVjuagsILJWXG/d9eq7/vOigiDq0gqDbknASNA0YvDQbJESwUU8kImtSMLJLDGicxMKiQe4VORi841zX1q6GfTvAYEAgAgvgaCLXAQXsZE6LXsnhdaMzDtOVL3drZqkuERpYLEy3TQoclLx9xjGMaRISEysTNRQilEiRbFCAg4DRXKuWCuInh0RA0DR46CoalUc7EUsGv9ySwNBxUis9ztQVJJbJBdbhcBv/7UsQEgAuknU+5iIARao9j256QAAGAgAAIlpEiPnR6OUh6uOfPDAyW+TEqJml80EGSJscj0FieQbVBbINzdM3A8AKYG0QGf80QNEIWLhZwPzBsSFx//wbOBc0IIixkmLI/hcOAmz/SlQBAADMWYATAD4rgqQAkAxJKukNQ0tpcVC9ep1DQ0/+SyJEijkVUKHEQqZWIhUKiaZCKWlUKFnyWayUrVQsuEoaiUNo8qGiwcEQdWCvWdWdg1PXeV///f2f7OJVMQU1FMy4xMDBVVVVV";
@@ -0,0 +1,4 @@
1
+ // Source: https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/error-buzz/error-buzz.ts
2
+ // License: CC0 — Kenney (kenney.nl/assets/interface-sounds)
3
+ // Error or destructive action
4
+ export var errorSound = "data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAAAUAAATkAFVVVVVVVVVVVVVVVVVVVVVVVVV/f39/f39/f39/f39/f39/f39/f6qqqqqqqqqqqqqqqqqqqqqqqqqq1dXV1dXV1dXV1dXV1dXV1dXV1dX//////////////////////////wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkAkAAAAAAAAAE5Ct0VKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAABrBja7SRAAHpFK03MPAAAAADpAAQG24rFaPVBQCAYJG5znPz/b6NqcOBgZzv/QIBgYs7/6lBj4Ph///3cuH+c5c//+GAAQHa6AAAAASCUWIBQCyQJZStElAWcc9uAG+mh4XttXtzdiUNiuVScgn20gM5uFsLE6Fxhn+ooJIxfQBCzFUpjz1wPUomKsWXV38+X77GWGKcTC8hH7Co3sLLRijb/OSZ8+EokIpc0wKgoFjAlEQPHQa/EoSES2//LFVoN1sAAAFygDXWUv/7UsQFgArspWW9hAARbhFq6rKwAqVF/AdqejzEmlOy1F5XbkjDHJAIyEgPA+AKAqSGQaGguBULhCkD3qDWeB8DzUNJbb7lrlVWa/rjaIbq/7ygo9INWMicMl4dEirDxb3I3gAAAnMANIK2GREbZA8FCWtPoXkVeZzwrfKGDLmaM47+A5HoEIbi4gyFJy6Lmkkmkkdp1KkjzrddOq2w5zrn//3Nb8JPBk7SoFXc7lVA0eBoqdd2w6VOjw0oNAAAAAUKKBQgQAQAi/uhmyAnxM15//tSxAoADGU5Z5j2gAGGky63mPAAjm0TcAIi5zgBMLwtS483d1dBIkP8lB5jsGA/8YMkx5gGgOZ/+aKWbkcKh//iUBzyXNzyaf//5o0uMgOcvp///+hpqQJc3Bx3//EBlEuHxpKKAdn8DBSAiMlz2HZmqAgCAHn1q11bWu4/1m+IicMtXoeozcJYmSXkwOp65uK0nVEe7qD41qvYsXN5ILFBbn7x2zNszFuDq0bFoVg6sFiOvelwLQEx5WIgKdJSURXEINB2aJcjaCAKTlorySL/+1LEBYAL0Etrp72BUXuPKaqwkAD4DYLuOE5S4k4J4hxEGgahzphEVjuagsILJWXG/d9eq7/vOigiDq0gqDbknASNA0YvDQbJESwUU8kImtSMLJLDGicxMKiQe4VORi841zX1q6GfTvAYEAgAgvgaCLXAQXsZE6LXsnhdaMzDtOVL3drZqkuERpYLEy3TQoclLx9xjGMaRISEysTNRQilEiRbFCAg4DRXKuWCuInh0RA0DR46CoalUc7EUsGv9ySwNBxUis9ztQVJJbJBdbhcBv/7UsQEgAuknU+5iIARao9j256QAAGAgAAIlpEiPnR6OUh6uOfPDAyW+TEqJml80EGSJscj0FieQbVBbINzdM3A8AKYG0QGf80QNEIWLhZwPzBsSFx//wbOBc0IIixkmLI/hcOAmz/SlQBAADMWYATAD4rgqQAkAxJKukNQ0tpcVC9ep1DQ0/+SyJEijkVUKHEQqZWIhUKiaZCKWlUKFnyWayUrVQsuEoaiUNo8qGiwcEQdWCvWdWdg1PXeV///f2f7OJVMQU1FMy4xMDBVVVVV";
@@ -0,0 +1 @@
1
+ export declare const notifySound = "data:audio/mpeg;base64,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AMldGRsI+FZBESMjYR6KyFfsYw0FQuLPC/bV23T09PL4xGIw/j+NYaY3Ng8sjFjBBRdjEHcllPbDgIAgCYPgcLh91xP/////f93bR/RVA/4/+xAF+wQZ1zW9NNcyGMUpehjFrWurQh9ANxeFP4FAlBlBl3LuZ0zpyXJcl2XdcFkh6gSgTuv7Xsu67sZjMZpqamBoGg6Vc3bs+z9H89///0kuqrICAAy3dnptattrWnXtvQd2V3dev37k1Sxp2WFCgFMBog/HSTC4AYCY//tSxIcAB5RvJ6bPicFKEqg0VeIarBA8BoSBhV2///7/K5v6W09fr/9f+3//+v//Ufb/5pURkUbAAAGVVr2Stsh7O6k72q2WlZnWhV7fTmq9I3MUARgU2mabsYFBaG4kYU8IbEu3////W/t0XX/7f+yf8///b/unt4N/QihOArP+r2ofXvo+zJXqXRqsvSWkga16KVtoj+YcAh/KamMAECAMED9pcYDDHY////+jsvV66bJb//PSRetXVG//t1221aX4MR/9a8TKAE4ACAAEb///+1LEnQAKVJc3or9WASquY6UOF0D/z/3rcYz/JEieede1BI6QHLjDYrb0QNOSiMQw/j+OW5bluW77/w/T5SuG3LZ2zth673nxUPMDBU81hGuP5LLHiAEEf//6P//ySglAFA2YNgoDq9bf9Nf/wl2Mz2MUG//qq3+woKAsbMzMzf7MzMkKiqoKxGWx5hyQwFDGGJjXA8JRX0rhl/Ydpcg6VBV12c//pq6emappBaBUDKAmVZW1XY5LxIV4mcoocKKJhWEJiEYfEi7rwo//+9yZMP/7UsSsAEkVcx0ocFoBKy6jBS4LQC+IRAbwZUTqZFvw1rZEv+o8rgqHRLUeTq+DR6v/eCQKjQSyYbhlwzxqJxpRZZTs5RZRZZTtZZQYqI4qLNf6hbWKigtFhYVFYqKC3FfxUVFqhYXFaxUWb//7KxUUFosLCrMUbUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxMAACizHJOaHa8EwmSh0ceqiVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LEzwNIdL8WRIYtwRQJVsDDDLhVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==";
@@ -0,0 +1,4 @@
1
+ // Source: https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/notification-pop/notification-pop.ts
2
+ // License: CC0 — Kenney (kenney.nl/assets/interface-sounds)
3
+ // New message or notification
4
+ export var notifySound = "data:audio/mpeg;base64,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AMldGRsI+FZBESMjYR6KyFfsYw0FQuLPC/bV23T09PL4xGIw/j+NYaY3Ng8sjFjBBRdjEHcllPbDgIAgCYPgcLh91xP/////f93bR/RVA/4/+xAF+wQZ1zW9NNcyGMUpehjFrWurQh9ANxeFP4FAlBlBl3LuZ0zpyXJcl2XdcFkh6gSgTuv7Xsu67sZjMZpqamBoGg6Vc3bs+z9H89///0kuqrICAAy3dnptattrWnXtvQd2V3dev37k1Sxp2WFCgFMBog/HSTC4AYCY//tSxIcAB5RvJ6bPicFKEqg0VeIarBA8BoSBhV2///7/K5v6W09fr/9f+3//+v//Ufb/5pURkUbAAAGVVr2Stsh7O6k72q2WlZnWhV7fTmq9I3MUARgU2mabsYFBaG4kYU8IbEu3////W/t0XX/7f+yf8///b/unt4N/QihOArP+r2ofXvo+zJXqXRqsvSWkga16KVtoj+YcAh/KamMAECAMED9pcYDDHY////+jsvV66bJb//PSRetXVG//t1221aX4MR/9a8TKAE4ACAAEb///+1LEnQAKVJc3or9WASquY6UOF0D/z/3rcYz/JEieede1BI6QHLjDYrb0QNOSiMQw/j+OW5bluW77/w/T5SuG3LZ2zth673nxUPMDBU81hGuP5LLHiAEEf//6P//ySglAFA2YNgoDq9bf9Nf/wl2Mz2MUG//qq3+woKAsbMzMzf7MzMkKiqoKxGWx5hyQwFDGGJjXA8JRX0rhl/Ydpcg6VBV12c//pq6emappBaBUDKAmVZW1XY5LxIV4mcoocKKJhWEJiEYfEi7rwo//+9yZMP/7UsSsAEkVcx0ocFoBKy6jBS4LQC+IRAbwZUTqZFvw1rZEv+o8rgqHRLUeTq+DR6v/eCQKjQSyYbhlwzxqJxpRZZTs5RZRZZTtZZQYqI4qLNf6hbWKigtFhYVFYqKC3FfxUVFqhYXFaxUWb//7KxUUFosLCrMUbUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tSxMAACizHJOaHa8EwmSh0ceqiVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+1LEzwNIdL8WRIYtwRQJVsDDDLhVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==";
@@ -0,0 +1 @@
1
+ export declare const popSound = "data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAAAIAAAJxAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr//////////////////////////////////////////////////////////////////wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkBYYAAAAAAAACcU7MYgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAACghZUlTHgAGDlWufHzAAAVWgJg3EszX3mlF95pSk7enve+GBDEMNMg4R8BLACwAsA7BVjjOhDEMQxWKx5EcJwfB/KBiU8/wI7QH+BHaA/ynv6PB8/LgQEMgD78CHO/oGiAIBAQBAYFAA1hDi4z22DmJ7Et+PSEd1f8Y4PmLI5uDYKAWyCmBlSZJ3gAmD0RBEUDS/HKFzC5iZIr/5FTIvE0Yl3/8ipkXi8Yl0u/xEFQVER7/WCoiCoKiL/4VBURPOqgAQuacbblgZh//7UsQEg8aUBv9cMIAgAAA0gAAABIKqErhFDZUNQ7PRK4S8s8r1HiuGlHuSnenrcW9yvO/PcFflep5XqPKfrO9NTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV";
@@ -0,0 +1,4 @@
1
+ // Source: https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/click-soft/click-soft.ts
2
+ // License: CC0 — Kenney (kenney.nl/assets/interface-sounds)
3
+ // Subtle click or button tap
4
+ export var popSound = "data:audio/mpeg;base64,SUQzBAAAAAAAIlRTU0UAAAAOAAADTGF2ZjYyLjMuMTAwAAAAAAAAAAAAAAD/+1DAAAAAAAAAAAAAAAAAAAAAAABJbmZvAAAADwAAAAIAAAJxAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr//////////////////////////////////////////////////////////////////wAAAABMYXZjNjIuMTEAAAAAAAAAAAAAAAAkBYYAAAAAAAACcU7MYgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tQxAAACghZUlTHgAGDlWufHzAAAVWgJg3EszX3mlF95pSk7enve+GBDEMNMg4R8BLACwAsA7BVjjOhDEMQxWKx5EcJwfB/KBiU8/wI7QH+BHaA/ynv6PB8/LgQEMgD78CHO/oGiAIBAQBAYFAA1hDi4z22DmJ7Et+PSEd1f8Y4PmLI5uDYKAWyCmBlSZJ3gAmD0RBEUDS/HKFzC5iZIr/5FTIvE0Yl3/8ipkXi8Yl0u/xEFQVER7/WCoiCoKiL/4VBURPOqgAQuacbblgZh//7UsQEg8aUBv9cMIAgAAA0gAAABIKqErhFDZUNQ7PRK4S8s8r1HiuGlHuSnenrcW9yvO/PcFflep5XqPKfrO9NTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV";
@@ -0,0 +1 @@
1
+ export declare const sendSound = "data:audio/mpeg;base64,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";
@@ -0,0 +1,4 @@
1
+ // Source: https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/switch-on/switch-on.ts
2
+ // License: CC0 — Kenney (kenney.nl/assets/interface-sounds)
3
+ // Message sent or form submitted
4
+ export var sendSound = "data:audio/mpeg;base64,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";
@@ -0,0 +1 @@
1
+ export declare const successSound = "data:audio/mpeg;base64,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";
@@ -0,0 +1,4 @@
1
+ // Source: https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/success-chime/success-chime.ts
2
+ // License: CC0 — Kenney (kenney.nl/assets/interface-sounds)
3
+ // Task completed or action succeeded
4
+ export var successSound = "data:audio/mpeg;base64,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";
@@ -0,0 +1 @@
1
+ export declare const toggleSound = "data:audio/mpeg;base64,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";
@@ -0,0 +1,4 @@
1
+ // Source: https://github.com/kapishdima/soundcn/blob/main/registry/soundcn/sounds/toggle-001/toggle-001.ts
2
+ // License: CC0 — Kenney (kenney.nl/assets/interface-sounds)
3
+ // Toggle switch or checkbox state change
4
+ export var toggleSound = "data:audio/mpeg;base64,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";
@@ -0,0 +1,112 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ value: number;
4
+ format?: Intl.NumberFormatOptions;
5
+ class?: string;
6
+ }
7
+
8
+ let { value, format = {}, class: className = '' }: Props = $props();
9
+
10
+ type Digit = { prev: string; next: string; animating: boolean; id: number };
11
+
12
+ let idCounter = 0;
13
+
14
+ function formatNumber(n: number, opts: Intl.NumberFormatOptions): string {
15
+ return new Intl.NumberFormat(undefined, opts).format(n);
16
+ }
17
+
18
+ function toChars(n: number, opts: Intl.NumberFormatOptions): string[] {
19
+ return formatNumber(n, opts).split('');
20
+ }
21
+
22
+ let prevValue = $state(value);
23
+ let chars = $state<Digit[]>(
24
+ toChars(value, format).map((ch) => ({ prev: ch, next: ch, animating: false, id: idCounter++ }))
25
+ );
26
+
27
+ $effect(() => {
28
+ const prev = prevValue;
29
+ const next = value;
30
+ if (prev === next) return;
31
+
32
+ const prevChars = toChars(prev, format);
33
+ const nextChars = toChars(next, format);
34
+
35
+ // Align from the right (least significant digit)
36
+ const maxLen = Math.max(prevChars.length, nextChars.length);
37
+ const prevPadded = prevChars.join('').padStart(maxLen, ' ').split('');
38
+ const nextPadded = nextChars.join('').padStart(maxLen, ' ').split('');
39
+
40
+ chars = nextPadded.map((ch, i) => {
41
+ const p = prevPadded[i] ?? ' ';
42
+ const changed = ch !== p;
43
+ return { prev: p, next: ch, animating: changed, id: idCounter++ };
44
+ });
45
+
46
+ prevValue = next;
47
+
48
+ // Reset animating flag after animation completes
49
+ const timeout = setTimeout(() => {
50
+ chars = chars.map((d) => ({ ...d, animating: false }));
51
+ }, 400);
52
+
53
+ return () => clearTimeout(timeout);
54
+ });
55
+ </script>
56
+
57
+ <span
58
+ class="animated-number inline-flex tabular-nums {className}"
59
+ aria-live="polite"
60
+ aria-atomic="true"
61
+ aria-label={formatNumber(value, format)}
62
+ >
63
+ {#each chars as digit (digit.id)}
64
+ {#if digit.next === ' '}
65
+ <span class="digit-col invisible" aria-hidden="true">{digit.next}</span>
66
+ {:else if /\d/.test(digit.next)}
67
+ <span
68
+ class="digit-col overflow-hidden inline-block"
69
+ aria-hidden="true"
70
+ style="height: 1.2em; vertical-align: bottom;"
71
+ >
72
+ <span
73
+ class="digit-inner inline-block leading-[1.2]"
74
+ class:animating={digit.animating}
75
+ data-prev={digit.prev}
76
+ >{digit.next}</span>
77
+ </span>
78
+ {:else}
79
+ <span class="digit-sep" aria-hidden="true">{digit.next}</span>
80
+ {/if}
81
+ {/each}
82
+ </span>
83
+
84
+ <style>
85
+ .digit-inner {
86
+ transition: transform var(--motion-fast, 150ms) var(--motion-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
87
+ }
88
+
89
+ .digit-inner.animating {
90
+ animation: digit-roll var(--motion-fast, 150ms) var(--motion-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
91
+ }
92
+
93
+ @keyframes digit-roll {
94
+ 0% {
95
+ transform: translateY(40%);
96
+ opacity: 0.4;
97
+ }
98
+ 100% {
99
+ transform: translateY(0);
100
+ opacity: 1;
101
+ }
102
+ }
103
+
104
+ @media (prefers-reduced-motion: reduce) {
105
+ .digit-inner {
106
+ transition: none;
107
+ }
108
+ .digit-inner.animating {
109
+ animation: none;
110
+ }
111
+ }
112
+ </style>
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ value: number;
3
+ format?: Intl.NumberFormatOptions;
4
+ class?: string;
5
+ }
6
+ declare const AnimatedNumber: import("svelte").Component<Props, {}, "">;
7
+ type AnimatedNumber = ReturnType<typeof AnimatedNumber>;
8
+ export default AnimatedNumber;
@@ -2,17 +2,22 @@
2
2
  /**
3
3
  * Badge Component
4
4
  *
5
- * Simple DaisyUI badge with variant and size options.
5
+ * DaisyUI badge with variant, size, optional numeric count with digit-tick animation,
6
+ * and opt-in pulse prop for live/unread states.
6
7
  */
7
8
 
8
9
  interface Props {
9
10
  variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';
10
11
  size?: 'sm' | 'md' | 'lg';
12
+ /** Numeric count displayed in the badge. Animates on change. */
13
+ count?: number | null;
14
+ /** When true, emits a slow expanding-ring pulse. Use for live/unread states. */
15
+ pulse?: boolean;
11
16
  class?: string;
12
17
  children?: import('svelte').Snippet;
13
18
  }
14
19
 
15
- let { variant = 'default', size = 'md', class: className = '', children }: Props = $props();
20
+ let { variant = 'default', size = 'md', count = null, pulse = false, class: className = '', children }: Props = $props();
16
21
 
17
22
  const variantClass = $derived(
18
23
  {
@@ -29,10 +34,76 @@
29
34
 
30
35
  const sizeClass = $derived({ sm: 'badge-sm', md: '', lg: 'badge-lg' }[size]);
31
36
  const badgeClass = $derived(`badge ${variantClass} ${sizeClass} ${className}`.trim());
37
+
38
+ // Track previous count to trigger animation only on changes
39
+ let prevCount = $state(count);
40
+ let ticking = $state(false);
41
+
42
+ $effect(() => {
43
+ if (count !== prevCount && count !== null && prevCount !== null) {
44
+ ticking = false;
45
+ // Force a reflow to restart the animation
46
+ requestAnimationFrame(() => {
47
+ ticking = true;
48
+ setTimeout(() => { ticking = false; }, 300);
49
+ });
50
+ }
51
+ prevCount = count;
52
+ });
32
53
  </script>
33
54
 
34
- <span class={badgeClass}>
35
- {#if children}
55
+ <span class={badgeClass} class:badge-pulse={pulse}>
56
+ {#if count !== null}
57
+ <span class="badge-count" class:badge-count-tick={ticking}>{count}</span>
58
+ {:else if children}
36
59
  {@render children()}
37
60
  {/if}
38
61
  </span>
62
+
63
+ <style>
64
+ /* Digit tick — small upward roll on count change */
65
+ .badge-count {
66
+ display: inline-block;
67
+ font-variant-numeric: tabular-nums;
68
+ }
69
+
70
+ .badge-count-tick {
71
+ animation: badge-tick var(--motion-fast) var(--motion-spring);
72
+ }
73
+
74
+ @keyframes badge-tick {
75
+ from { transform: translateY(40%) scale(0.8); opacity: 0.4; }
76
+ to { transform: translateY(0) scale(1); opacity: 1; }
77
+ }
78
+
79
+ /* Pulse — slow expanding rings, pure CSS, opt-in via prop */
80
+ .badge-pulse {
81
+ position: relative;
82
+ }
83
+
84
+ .badge-pulse::before,
85
+ .badge-pulse::after {
86
+ content: "";
87
+ position: absolute;
88
+ inset: 0;
89
+ border-radius: inherit;
90
+ border: 2px solid currentColor;
91
+ opacity: 0;
92
+ animation: badge-ring 2s ease-out infinite;
93
+ }
94
+
95
+ .badge-pulse::after {
96
+ animation-delay: 1s;
97
+ }
98
+
99
+ @keyframes badge-ring {
100
+ 0% { transform: scale(1); opacity: 0.6; }
101
+ 100% { transform: scale(2.2); opacity: 0; }
102
+ }
103
+
104
+ @media (prefers-reduced-motion: reduce) {
105
+ .badge-count-tick { animation: none; }
106
+ .badge-pulse::before,
107
+ .badge-pulse::after { animation: none; opacity: 0; }
108
+ }
109
+ </style>
@@ -1,11 +1,16 @@
1
1
  /**
2
2
  * Badge Component
3
3
  *
4
- * Simple DaisyUI badge with variant and size options.
4
+ * DaisyUI badge with variant, size, optional numeric count with digit-tick animation,
5
+ * and opt-in pulse prop for live/unread states.
5
6
  */
6
7
  interface Props {
7
8
  variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';
8
9
  size?: 'sm' | 'md' | 'lg';
10
+ /** Numeric count displayed in the badge. Animates on change. */
11
+ count?: number | null;
12
+ /** When true, emits a slow expanding-ring pulse. Use for live/unread states. */
13
+ pulse?: boolean;
9
14
  class?: string;
10
15
  children?: import('svelte').Snippet;
11
16
  }