@noxlovette/material 0.3.2 → 0.4.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 (299) hide show
  1. package/README.md +1 -0
  2. package/dist/actions/index.d.ts +1 -0
  3. package/dist/actions/index.js +1 -0
  4. package/dist/actions/rovingFocusGroup.d.ts +20 -0
  5. package/dist/actions/rovingFocusGroup.js +82 -0
  6. package/dist/components/badge/theme.d.ts +8 -8
  7. package/dist/components/buttons/button-group/ButtonGroup.stories.svelte +83 -0
  8. package/dist/components/buttons/button-group/ButtonGroup.stories.svelte.d.ts +19 -0
  9. package/dist/components/buttons/button-group/ButtonGroup.svelte +10 -29
  10. package/dist/components/buttons/button-group/ButtonGroup.svelte.d.ts +7 -3
  11. package/dist/components/buttons/button-group/index.d.ts +0 -1
  12. package/dist/components/buttons/button-group/index.js +3 -1
  13. package/dist/components/buttons/button-group/theme.d.ts +17 -103
  14. package/dist/components/buttons/button-group/theme.js +7 -35
  15. package/dist/components/buttons/button-group/types.d.ts +9 -20
  16. package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte +118 -0
  17. package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte.d.ts +19 -0
  18. package/dist/components/buttons/connected/ConnectedButtonGroup.svelte +52 -0
  19. package/dist/components/buttons/connected/ConnectedButtonGroup.svelte.d.ts +12 -0
  20. package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte +37 -0
  21. package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte.d.ts +9 -0
  22. package/dist/components/buttons/connected/index.d.ts +3 -1
  23. package/dist/components/buttons/connected/index.js +3 -1
  24. package/dist/components/buttons/connected/theme.d.ts +125 -0
  25. package/dist/components/buttons/connected/theme.js +38 -0
  26. package/dist/components/buttons/connected/types.d.ts +32 -13
  27. package/dist/components/buttons/index.d.ts +1 -0
  28. package/dist/components/buttons/index.js +1 -0
  29. package/dist/components/buttons/split-button/SplitButton.stories.svelte +103 -0
  30. package/dist/components/buttons/split-button/SplitButton.stories.svelte.d.ts +19 -0
  31. package/dist/components/buttons/split-button/SplitButton.svelte +104 -0
  32. package/dist/components/buttons/split-button/SplitButton.svelte.d.ts +19 -0
  33. package/dist/components/buttons/split-button/index.d.ts +3 -0
  34. package/dist/components/{containers/panes → buttons/split-button}/index.js +1 -3
  35. package/dist/components/buttons/split-button/theme.d.ts +35 -0
  36. package/dist/components/buttons/split-button/theme.js +26 -0
  37. package/dist/components/buttons/split-button/types.d.ts +33 -0
  38. package/dist/components/buttons/theme.d.ts +142 -142
  39. package/dist/components/buttons/theme.js +2 -2
  40. package/dist/components/cards/Card.stories.svelte +58 -0
  41. package/dist/components/cards/Card.stories.svelte.d.ts +2 -17
  42. package/dist/components/cards/Card.svelte +76 -8
  43. package/dist/components/cards/theme.d.ts +26 -14
  44. package/dist/components/cards/theme.js +5 -1
  45. package/dist/components/cards/types.d.ts +39 -1
  46. package/dist/components/chips/Chip.stories.svelte +64 -0
  47. package/dist/components/chips/Chip.stories.svelte.d.ts +19 -0
  48. package/dist/components/chips/Chip.svelte +115 -0
  49. package/dist/components/chips/Chip.svelte.d.ts +14 -0
  50. package/dist/components/chips/index.d.ts +3 -0
  51. package/dist/components/chips/index.js +6 -0
  52. package/dist/components/chips/theme.d.ts +78 -0
  53. package/dist/components/chips/theme.js +72 -0
  54. package/dist/components/chips/types.d.ts +43 -0
  55. package/dist/components/containers/action-rail/ActionRail.stories.svelte +36 -0
  56. package/dist/components/containers/{panes/SinglePane.stories.svelte.d.ts → action-rail/ActionRail.stories.svelte.d.ts} +4 -4
  57. package/dist/components/containers/action-rail/ActionRail.svelte +35 -0
  58. package/dist/components/containers/action-rail/ActionRail.svelte.d.ts +17 -0
  59. package/dist/components/containers/action-rail/index.d.ts +3 -0
  60. package/dist/components/containers/action-rail/index.js +6 -0
  61. package/dist/components/containers/action-rail/theme.d.ts +45 -0
  62. package/dist/components/containers/action-rail/theme.js +26 -0
  63. package/dist/components/containers/action-rail/types.d.ts +20 -0
  64. package/dist/components/containers/action-rail/types.js +1 -0
  65. package/dist/components/containers/app/App.svelte +6 -6
  66. package/dist/components/containers/app/App.svelte.d.ts +4 -2
  67. package/dist/components/containers/app/theme.d.ts +1 -1
  68. package/dist/components/containers/app/types.d.ts +9 -4
  69. package/dist/components/containers/bottom-sheet/BottomSheet.stories.svelte +1 -1
  70. package/dist/components/containers/bottom-sheet/BottomSheet.svelte +1 -1
  71. package/dist/components/containers/context-menu/ContextMenu.stories.svelte +44 -0
  72. package/dist/components/containers/context-menu/ContextMenu.svelte +21 -5
  73. package/dist/components/containers/context-menu/ContextMenu.svelte.d.ts +11 -0
  74. package/dist/components/containers/context-menu/theme.d.ts +20 -2
  75. package/dist/components/containers/context-menu/theme.js +31 -8
  76. package/dist/components/containers/context-menu/types.d.ts +14 -2
  77. package/dist/components/containers/dialogue/theme.d.ts +20 -20
  78. package/dist/components/containers/divider/theme.d.ts +17 -17
  79. package/dist/components/containers/index.d.ts +2 -3
  80. package/dist/components/containers/index.js +2 -3
  81. package/dist/components/containers/link-preview/theme.d.ts +11 -11
  82. package/dist/components/containers/list/ListItem.stories.svelte +100 -0
  83. package/dist/components/containers/list/ListItem.stories.svelte.d.ts +19 -0
  84. package/dist/components/containers/list/theme.d.ts +14 -14
  85. package/dist/components/containers/list/theme.js +3 -3
  86. package/dist/components/containers/menu/Menu.stories.svelte +105 -3
  87. package/dist/components/containers/menu/Menu.stories.svelte.d.ts +2 -17
  88. package/dist/components/containers/menu/Menu.svelte +9 -7
  89. package/dist/components/containers/menu/MenuCheckboxItem.svelte +55 -0
  90. package/dist/components/containers/menu/MenuCheckboxItem.svelte.d.ts +25 -0
  91. package/dist/components/containers/menu/MenuGroup.svelte +43 -0
  92. package/dist/components/containers/menu/MenuGroup.svelte.d.ts +28 -0
  93. package/dist/components/containers/menu/MenuRadioGroup.svelte +39 -0
  94. package/dist/components/containers/menu/MenuRadioGroup.svelte.d.ts +27 -0
  95. package/dist/components/containers/menu/MenuRadioItem.svelte +49 -0
  96. package/dist/components/containers/menu/MenuRadioItem.svelte.d.ts +17 -0
  97. package/dist/components/containers/menu/MenuSub.svelte +91 -0
  98. package/dist/components/containers/menu/MenuSub.svelte.d.ts +29 -0
  99. package/dist/components/containers/menu/index.d.ts +7 -0
  100. package/dist/components/containers/menu/index.js +8 -0
  101. package/dist/components/containers/menu/menu-item/MenuItem.svelte +71 -0
  102. package/dist/components/containers/{menu-item → menu/menu-item}/MenuItem.svelte.d.ts +2 -1
  103. package/dist/components/containers/{menu-item → menu/menu-item}/types.d.ts +5 -1
  104. package/dist/components/containers/menu/menu-item/types.js +1 -0
  105. package/dist/components/containers/menu/theme.d.ts +68 -0
  106. package/dist/components/containers/menu/theme.js +36 -0
  107. package/dist/components/containers/menu/types.d.ts +113 -2
  108. package/dist/components/containers/pane/DraggablePane.stories.svelte +199 -0
  109. package/dist/components/containers/pane/DraggablePane.stories.svelte.d.ts +4 -0
  110. package/dist/components/containers/pane/DraggablePane.svelte +533 -0
  111. package/dist/components/containers/pane/DraggablePane.svelte.d.ts +29 -0
  112. package/dist/components/containers/pane/Pane.stories.svelte +104 -0
  113. package/dist/components/containers/pane/Pane.stories.svelte.d.ts +19 -0
  114. package/dist/components/containers/pane/Pane.svelte +78 -0
  115. package/dist/components/containers/pane/Pane.svelte.d.ts +18 -0
  116. package/dist/components/containers/pane/PaneGrid.stories.svelte +134 -0
  117. package/dist/components/containers/pane/PaneGrid.stories.svelte.d.ts +19 -0
  118. package/dist/components/containers/pane/PaneGrid.svelte +43 -0
  119. package/dist/components/containers/pane/PaneGrid.svelte.d.ts +13 -0
  120. package/dist/components/containers/pane/PaneHandle.svelte +90 -0
  121. package/dist/components/containers/pane/PaneHandle.svelte.d.ts +12 -0
  122. package/dist/components/containers/pane/dragStore.svelte.d.ts +16 -0
  123. package/dist/components/containers/pane/dragStore.svelte.js +38 -0
  124. package/dist/components/containers/pane/index.d.ts +8 -0
  125. package/dist/components/containers/pane/index.js +11 -0
  126. package/dist/components/containers/pane/resizeStore.svelte.d.ts +10 -0
  127. package/dist/components/containers/pane/resizeStore.svelte.js +30 -0
  128. package/dist/components/containers/pane/theme.d.ts +571 -0
  129. package/dist/components/containers/pane/theme.js +211 -0
  130. package/dist/components/containers/pane/types.d.ts +249 -0
  131. package/dist/components/containers/pane/types.js +1 -0
  132. package/dist/components/containers/popover/Popover.stories.svelte +4 -4
  133. package/dist/components/containers/popover/Popover.svelte +3 -1
  134. package/dist/components/containers/popover/theme.d.ts +20 -20
  135. package/dist/components/containers/popover/types.d.ts +6 -2
  136. package/dist/components/containers/scroll-area/theme.d.ts +2 -2
  137. package/dist/components/containers/side-sheet/SideSheet.stories.svelte +16 -24
  138. package/dist/components/containers/side-sheet/SideSheet.svelte +73 -7
  139. package/dist/components/containers/side-sheet/SideSheet.svelte.d.ts +5 -0
  140. package/dist/components/containers/stack/theme.d.ts +44 -44
  141. package/dist/components/date/DateField.stories.svelte +57 -0
  142. package/dist/components/{containers/panes/SplitPane.stories.svelte.d.ts → date/DateField.stories.svelte.d.ts} +4 -4
  143. package/dist/components/date/DateField.svelte +11 -2
  144. package/dist/components/date/DateRangeField.stories.svelte +53 -0
  145. package/dist/components/{containers/panes/SupportingPane.stories.svelte.d.ts → date/DateRangeField.stories.svelte.d.ts} +4 -4
  146. package/dist/components/date/DateRangeField.svelte +2 -1
  147. package/dist/components/date/theme.d.ts +73 -4
  148. package/dist/components/date/theme.js +95 -26
  149. package/dist/components/date/types.d.ts +5 -0
  150. package/dist/components/forms/checkbox/Checkbox.svelte +7 -9
  151. package/dist/components/forms/checkbox/theme.d.ts +8 -8
  152. package/dist/components/forms/checkbox/theme.js +31 -9
  153. package/dist/components/forms/command/Command.stories.svelte +86 -0
  154. package/dist/components/forms/command/Command.stories.svelte.d.ts +19 -0
  155. package/dist/components/forms/command/theme.d.ts +35 -35
  156. package/dist/components/forms/command/theme.js +4 -4
  157. package/dist/components/forms/pin/theme.d.ts +2 -2
  158. package/dist/components/forms/radio-group/theme.d.ts +2 -2
  159. package/dist/components/forms/search/theme.d.ts +8 -8
  160. package/dist/components/forms/select/Select.svelte +3 -2
  161. package/dist/components/forms/select/theme.d.ts +26 -2
  162. package/dist/components/forms/select/theme.js +56 -22
  163. package/dist/components/forms/slider/theme.d.ts +20 -20
  164. package/dist/components/forms/switch/theme.d.ts +2 -2
  165. package/dist/components/forms/textfield/Textfield.stories.svelte +22 -0
  166. package/dist/components/forms/textfield/Textfield.svelte +10 -1
  167. package/dist/components/forms/textfield/theme.d.ts +44 -2
  168. package/dist/components/forms/textfield/theme.js +56 -16
  169. package/dist/components/forms/toggle-group/ToggleGroup.svelte +2 -2
  170. package/dist/components/forms/toggle-group/ToggleGroup.svelte.d.ts +2 -2
  171. package/dist/components/forms/toggle-group/ToggleGroupItem.svelte +1 -1
  172. package/dist/components/forms/toggle-group/ToggleGroupItem.svelte.d.ts +1 -1
  173. package/dist/components/forms/toggle-group/theme.d.ts +16 -16
  174. package/dist/components/forms/toggle-group/types.d.ts +2 -2
  175. package/dist/components/forms/tooltip/Tooltip.stories.svelte +90 -0
  176. package/dist/components/forms/tooltip/Tooltip.stories.svelte.d.ts +19 -0
  177. package/dist/components/forms/tooltip/Tooltip.svelte +5 -4
  178. package/dist/components/forms/tooltip/theme.d.ts +5 -2
  179. package/dist/components/forms/tooltip/theme.js +6 -5
  180. package/dist/components/index.d.ts +1 -0
  181. package/dist/components/index.js +1 -0
  182. package/dist/components/misc/Avatar.stories.svelte +63 -0
  183. package/dist/components/misc/Avatar.stories.svelte.d.ts +19 -0
  184. package/dist/components/misc/Avatar.svelte +35 -10
  185. package/dist/components/misc/DicebearAvatarBuilder.d.ts +59 -0
  186. package/dist/components/misc/DicebearAvatarBuilder.js +115 -0
  187. package/dist/components/misc/ThemeSettings.svelte +1 -1
  188. package/dist/components/misc/ThemeSwitcher.svelte +2 -2
  189. package/dist/components/misc/dicebearStyles.d.ts +21 -0
  190. package/dist/components/misc/dicebearStyles.js +169 -0
  191. package/dist/components/misc/index.d.ts +3 -0
  192. package/dist/components/misc/index.js +3 -0
  193. package/dist/components/misc/materialAvatarPalette.d.ts +6 -0
  194. package/dist/components/misc/materialAvatarPalette.js +44 -0
  195. package/dist/components/misc/theme.d.ts +20 -2
  196. package/dist/components/misc/theme.js +9 -3
  197. package/dist/components/misc/types.d.ts +20 -2
  198. package/dist/components/nav/appbar/AppBar.stories.svelte +1 -1
  199. package/dist/components/nav/appbar/AppBar.svelte +46 -15
  200. package/dist/components/nav/appbar/AppBar.svelte.d.ts +5 -0
  201. package/dist/components/nav/appbar/theme.d.ts +20 -14
  202. package/dist/components/nav/appbar/theme.js +11 -7
  203. package/dist/components/nav/appbar/types.d.ts +3 -1
  204. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte +50 -0
  205. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte.d.ts +19 -0
  206. package/dist/components/nav/breadcrumb/Breadcrumb.svelte +46 -0
  207. package/dist/components/nav/breadcrumb/Breadcrumb.svelte.d.ts +13 -0
  208. package/dist/components/nav/breadcrumb/index.d.ts +3 -0
  209. package/dist/components/nav/breadcrumb/index.js +6 -0
  210. package/dist/components/nav/breadcrumb/theme.d.ts +84 -0
  211. package/dist/components/nav/breadcrumb/theme.js +35 -0
  212. package/dist/components/nav/breadcrumb/types.d.ts +14 -0
  213. package/dist/components/nav/breadcrumb/types.js +1 -0
  214. package/dist/components/nav/index.d.ts +1 -0
  215. package/dist/components/nav/index.js +1 -0
  216. package/dist/components/nav/navbar/theme.d.ts +19 -19
  217. package/dist/components/nav/rail/Rail.stories.svelte +1 -5
  218. package/dist/components/nav/rail/Rail.svelte +3 -25
  219. package/dist/components/nav/rail/theme.d.ts +4 -4
  220. package/dist/components/nav/rail/types.d.ts +0 -5
  221. package/dist/components/nav/tabs/TabHolder.svelte +2 -1
  222. package/dist/components/nav/tabs/theme.d.ts +21 -21
  223. package/dist/components/nav/tabs/theme.js +6 -0
  224. package/dist/components/nav/tabs/types.d.ts +2 -2
  225. package/dist/components/pill/theme.d.ts +35 -35
  226. package/dist/components/snackbar/theme.d.ts +8 -8
  227. package/dist/components/table/Table.stories.svelte +267 -0
  228. package/dist/components/table/Table.stories.svelte.d.ts +19 -0
  229. package/dist/components/table/Table.svelte +1 -1
  230. package/dist/components/table/TableBody.svelte +16 -3
  231. package/dist/components/table/TableBody.svelte.d.ts +5 -1
  232. package/dist/components/table/TableRow.svelte +1 -1
  233. package/dist/components/table/theme.d.ts +2 -2
  234. package/dist/components/table/theme.js +2 -2
  235. package/dist/components/table/types.d.ts +7 -0
  236. package/dist/components/time/theme.d.ts +29 -29
  237. package/dist/components/time/theme.js +2 -2
  238. package/dist/components/toolbar/Toolbar.stories.svelte +71 -0
  239. package/dist/components/toolbar/Toolbar.stories.svelte.d.ts +19 -0
  240. package/dist/components/toolbar/Toolbar.svelte +19 -3
  241. package/dist/components/toolbar/Toolbar.svelte.d.ts +8 -2
  242. package/dist/components/toolbar/ToolbarButton.svelte +28 -4
  243. package/dist/components/toolbar/ToolbarDivider.svelte +4 -3
  244. package/dist/components/toolbar/ToolbarGroup.svelte +7 -2
  245. package/dist/components/toolbar/ToolbarGroupItem.svelte +29 -4
  246. package/dist/components/toolbar/ToolbarSection.svelte +35 -0
  247. package/dist/components/toolbar/ToolbarSection.svelte.d.ts +9 -0
  248. package/dist/components/toolbar/ToolbarSpacer.svelte +18 -0
  249. package/dist/components/toolbar/ToolbarSpacer.svelte.d.ts +9 -0
  250. package/dist/components/toolbar/index.d.ts +2 -0
  251. package/dist/components/toolbar/index.js +2 -0
  252. package/dist/components/toolbar/theme.d.ts +36 -21
  253. package/dist/components/toolbar/theme.js +27 -11
  254. package/dist/components/toolbar/types.d.ts +37 -4
  255. package/dist/components/typography/body/theme.d.ts +14 -14
  256. package/dist/components/typography/display/theme.d.ts +14 -14
  257. package/dist/components/typography/headline/theme.d.ts +14 -14
  258. package/dist/components/typography/kbd/Kbd.stories.svelte +41 -0
  259. package/dist/components/typography/kbd/Kbd.stories.svelte.d.ts +19 -0
  260. package/dist/components/typography/kbd/theme.d.ts +9 -9
  261. package/dist/components/typography/kbd/theme.js +2 -2
  262. package/dist/components/typography/label/theme.d.ts +14 -14
  263. package/dist/components/typography/title/theme.d.ts +14 -14
  264. package/dist/styles/component.css +126 -4
  265. package/dist/styles/motion.css +6 -3
  266. package/dist/utils/Layer.svelte +7 -3
  267. package/dist/utils/Theme.svelte +20 -20
  268. package/dist/utils/ThemeScript.svelte +1 -1
  269. package/dist/utils/icon/theme.d.ts +14 -14
  270. package/package.json +38 -37
  271. package/bin/install-skill.js +0 -29
  272. package/dist/components/buttons/button-group/ButtonGroupItem.svelte +0 -41
  273. package/dist/components/buttons/button-group/ButtonGroupItem.svelte.d.ts +0 -8
  274. package/dist/components/buttons/connected/ConnectedButtons.svelte +0 -14
  275. package/dist/components/buttons/connected/ConnectedButtons.svelte.d.ts +0 -8
  276. package/dist/components/containers/menu-item/MenuItem.svelte +0 -74
  277. package/dist/components/containers/merger/InputMerger.svelte +0 -29
  278. package/dist/components/containers/merger/InputMerger.svelte.d.ts +0 -14
  279. package/dist/components/containers/merger/index.d.ts +0 -1
  280. package/dist/components/containers/merger/index.js +0 -3
  281. package/dist/components/containers/panes/SinglePane.stories.svelte +0 -67
  282. package/dist/components/containers/panes/SinglePane.svelte +0 -32
  283. package/dist/components/containers/panes/SinglePane.svelte.d.ts +0 -5
  284. package/dist/components/containers/panes/SplitPane.stories.svelte +0 -124
  285. package/dist/components/containers/panes/SplitPane.svelte +0 -144
  286. package/dist/components/containers/panes/SplitPane.svelte.d.ts +0 -8
  287. package/dist/components/containers/panes/SupportingPane.stories.svelte +0 -113
  288. package/dist/components/containers/panes/SupportingPane.svelte +0 -175
  289. package/dist/components/containers/panes/SupportingPane.svelte.d.ts +0 -9
  290. package/dist/components/containers/panes/index.d.ts +0 -5
  291. package/dist/components/containers/panes/theme.d.ts +0 -490
  292. package/dist/components/containers/panes/theme.js +0 -185
  293. package/dist/components/containers/panes/types.d.ts +0 -108
  294. package/dist/components/nav/rail/RailNavContext.svelte +0 -14
  295. package/dist/components/nav/rail/RailNavContext.svelte.d.ts +0 -8
  296. /package/dist/components/{containers/menu-item → buttons/split-button}/types.js +0 -0
  297. /package/dist/components/{containers/panes → chips}/types.js +0 -0
  298. /package/dist/components/containers/{menu-item → menu/menu-item}/index.d.ts +0 -0
  299. /package/dist/components/containers/{menu-item → menu/menu-item}/index.js +0 -0
@@ -0,0 +1,90 @@
1
+ <!--
2
+ Tooltip only renders its content while open, and opening normally requires a real hover/focus
3
+ interaction on the trigger. Each story below passes `isOpen={true}` so the tooltip renders open
4
+ by default for visual review, without needing to hover in Storybook.
5
+ -->
6
+ <script module lang="ts">
7
+ import { defineMeta } from '@storybook/addon-svelte-csf';
8
+ import Tooltip from './Tooltip.svelte';
9
+ import Button from '../../buttons/Button.svelte';
10
+
11
+ const { Story } = defineMeta({
12
+ title: 'Forms/Tooltip',
13
+ component: Tooltip
14
+ });
15
+ </script>
16
+
17
+ <Story name="Snack (Default)" asChild>
18
+ <div class="p-24">
19
+ <Tooltip supportingText="Add to library" isOpen={true}>
20
+ {#snippet trigger(props)}
21
+ <Button {...props} variant="filled" iconProps={{ name: 'add' }}>Add</Button>
22
+ {/snippet}
23
+ </Tooltip>
24
+ </div>
25
+ </Story>
26
+
27
+ <Story name="Rich" asChild>
28
+ <div class="p-24">
29
+ <Tooltip
30
+ variant="rich"
31
+ style="container"
32
+ subhead="Accessibility settings"
33
+ supportingText="Adjust text size, contrast, and motion preferences."
34
+ isOpen={true}
35
+ >
36
+ {#snippet trigger(props)}
37
+ <Button {...props} variant="outlined">Settings</Button>
38
+ {/snippet}
39
+ </Tooltip>
40
+ </div>
41
+ </Story>
42
+
43
+ <Story name="Rich — All Styles" asChild>
44
+ <div class="flex flex-wrap gap-24 p-24">
45
+ <Tooltip
46
+ variant="rich"
47
+ style="container"
48
+ subhead="Container"
49
+ supportingText="bg-surface-container"
50
+ isOpen={true}
51
+ >
52
+ {#snippet trigger(props)}
53
+ <Button {...props} variant="outlined">Container</Button>
54
+ {/snippet}
55
+ </Tooltip>
56
+ <Tooltip
57
+ variant="rich"
58
+ style="primary"
59
+ subhead="Primary"
60
+ supportingText="bg-primary-container"
61
+ isOpen={true}
62
+ >
63
+ {#snippet trigger(props)}
64
+ <Button {...props} variant="outlined">Primary</Button>
65
+ {/snippet}
66
+ </Tooltip>
67
+ <Tooltip
68
+ variant="rich"
69
+ style="secondary"
70
+ subhead="Secondary"
71
+ supportingText="bg-secondary-container"
72
+ isOpen={true}
73
+ >
74
+ {#snippet trigger(props)}
75
+ <Button {...props} variant="outlined">Secondary</Button>
76
+ {/snippet}
77
+ </Tooltip>
78
+ <Tooltip
79
+ variant="rich"
80
+ style="tertiary"
81
+ subhead="Tertiary"
82
+ supportingText="bg-tertiary-container"
83
+ isOpen={true}
84
+ >
85
+ {#snippet trigger(props)}
86
+ <Button {...props} variant="outlined">Tertiary</Button>
87
+ {/snippet}
88
+ </Tooltip>
89
+ </div>
90
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Tooltip from './Tooltip.svelte';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Tooltip: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Tooltip = InstanceType<typeof Tooltip>;
19
+ export default Tooltip;
@@ -21,7 +21,7 @@ Plain tooltips are used for simple labels, while rich tooltips can contain forma
21
21
  children,
22
22
  trigger,
23
23
  triggerClass,
24
- delayDuration = 100,
24
+ delayDuration = 150,
25
25
  class: className,
26
26
  variant = 'snack',
27
27
  style = 'container',
@@ -36,10 +36,11 @@ Plain tooltips are used for simple labels, while rich tooltips can contain forma
36
36
  subhead: subheadCls,
37
37
  base,
38
38
  trigger: triggerCls,
39
- supportingText: supportingTextCls
39
+ supportingText: supportingTextCls,
40
+ textContainer: textContainerCls
40
41
  } = $derived(tooltip({ variant, style }));
41
42
 
42
- const baseCls = $derived(base({ class: clsx(className) }));
43
+ const baseCls = $derived(base({ class: clsx(className, textContainerCls()) }));
43
44
 
44
45
  /**
45
46
  * ButtonIcons always have tooltips on, but not always with text
@@ -86,7 +87,7 @@ Plain tooltips are used for simple labels, while rich tooltips can contain forma
86
87
  {#if variant === 'rich'}
87
88
  <Layer />
88
89
  {#if subhead}
89
- <Title class={subheadCls()}>
90
+ <Title size="small" class={subheadCls()}>
90
91
  {subhead}
91
92
  </Title>
92
93
  {/if}
@@ -33,6 +33,7 @@ export declare const tooltip: import("tailwind-variants").TVReturnType<{
33
33
  base: string;
34
34
  subhead: string;
35
35
  supportingText: string;
36
+ textContainer: string;
36
37
  trigger: string;
37
38
  }, undefined, {
38
39
  variant: {
@@ -67,8 +68,9 @@ export declare const tooltip: import("tailwind-variants").TVReturnType<{
67
68
  base: string;
68
69
  subhead: string;
69
70
  supportingText: string;
71
+ textContainer: string;
70
72
  trigger: string;
71
- }, import("tailwind-variants").TVReturnType<{
73
+ }, import("tailwind-variants").TVReturnTypeLike<{
72
74
  variant: {
73
75
  rich: {
74
76
  base: string;
@@ -101,5 +103,6 @@ export declare const tooltip: import("tailwind-variants").TVReturnType<{
101
103
  base: string;
102
104
  subhead: string;
103
105
  supportingText: string;
106
+ textContainer: string;
104
107
  trigger: string;
105
- }, undefined, unknown, unknown, undefined>>;
108
+ }>>;
@@ -4,6 +4,7 @@ export const tooltip = tv({
4
4
  base: 'min-w-60 py-3 px-4 shadow-elevation-2 rounded-md relative z-[100] pointer-events-auto',
5
5
  subhead: '',
6
6
  supportingText: '',
7
+ textContainer: '',
7
8
  trigger: 'relative inline-flex'
8
9
  },
9
10
  variants: {
@@ -12,7 +13,7 @@ export const tooltip = tv({
12
13
  base: 'flex flex-col gap-3'
13
14
  },
14
15
  snack: {
15
- base: 'inlie-flex min-w-0 max-w-50 bg-md-sys-color-inverse-surface text-md-sys-color-inverse-on-surface md-sys-typescale-body-small px-3 py-2 shadow-elevation-3 before:rounded-md',
16
+ base: 'inline-flex min-w-0 max-w-50 bg-md-sys-color-inverse-surface text-md-sys-color-inverse-on-surface md-sys-typescale-body-small px-3 py-2 shadow-elevation-3 before:rounded-md',
16
17
  supportingText: 'text-md-sys-color-inverse-on-surface md-sys-typescale-body-small',
17
18
  textContainer: ''
18
19
  }
@@ -20,19 +21,19 @@ export const tooltip = tv({
20
21
  style: {
21
22
  container: {
22
23
  base: 'bg-md-sys-color-surface-container',
23
- textContainer: 'text-md-sys-on-surface-variant'
24
+ textContainer: 'text-md-sys-color-on-surface-variant'
24
25
  },
25
26
  primary: {
26
27
  base: 'bg-md-sys-color-primary-container',
27
- textContainer: 'text-md-sys-on-primary-container'
28
+ textContainer: 'text-md-sys-color-on-primary-container'
28
29
  },
29
30
  secondary: {
30
31
  base: 'bg-md-sys-color-secondary-container',
31
- textContainer: 'text-md-sys-on-secondary-container'
32
+ textContainer: 'text-md-sys-color-on-secondary-container'
32
33
  },
33
34
  tertiary: {
34
35
  base: 'bg-md-sys-color-tertiary-container',
35
- textContainer: 'text-md-sys-on-tertiary-container'
36
+ textContainer: 'text-md-sys-color-on-tertiary-container'
36
37
  }
37
38
  }
38
39
  },
@@ -1,6 +1,7 @@
1
1
  export * from './badge/index.js';
2
2
  export * from './buttons/index.js';
3
3
  export * from './cards/index.js';
4
+ export * from './chips/index.js';
4
5
  export * from './containers/index.js';
5
6
  export * from './date/index.js';
6
7
  export * from './forms/index.js';
@@ -3,6 +3,7 @@
3
3
  export * from './badge/index.js';
4
4
  export * from './buttons/index.js';
5
5
  export * from './cards/index.js';
6
+ export * from './chips/index.js';
6
7
  export * from './containers/index.js';
7
8
  export * from './date/index.js';
8
9
  export * from './forms/index.js';
@@ -0,0 +1,63 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Avatar from './Avatar.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Misc/Avatar',
7
+ component: Avatar,
8
+ argTypes: {
9
+ size: { control: 'select', options: ['sm', 'md', 'lg'] },
10
+ seed: { control: 'text' },
11
+ dicebearStyle: { control: 'text' }
12
+ },
13
+ args: {
14
+ size: 'lg',
15
+ seed: 'ogonek'
16
+ }
17
+ });
18
+ </script>
19
+
20
+ <Story name="Playground">
21
+ {#snippet template(args)}
22
+ <Avatar size={args.size} seed={args.seed} dicebearStyle={args.dicebearStyle} />
23
+ {/snippet}
24
+ </Story>
25
+
26
+ <Story name="Sizes" asChild>
27
+ <div class="flex items-end gap-4">
28
+ <Avatar size="sm" seed="small" />
29
+ <Avatar size="md" seed="medium" />
30
+ <Avatar size="lg" seed="large" />
31
+ </div>
32
+ </Story>
33
+
34
+ <Story name="Generated Fallback" asChild>
35
+ <div class="flex items-end gap-4">
36
+ <Avatar seed="alice" />
37
+ <Avatar seed="bob" />
38
+ <Avatar seed="carol" />
39
+ </div>
40
+ </Story>
41
+
42
+ <Story name="With Image" asChild>
43
+ <div class="flex items-end gap-4">
44
+ <Avatar src="https://picsum.photos/seed/ogonek-1/200" alt="Sample user" />
45
+ <Avatar
46
+ src="https://this-url-does-not-resolve.example/broken.jpg"
47
+ alt="Broken image"
48
+ seed="fallback"
49
+ />
50
+ </div>
51
+ </Story>
52
+
53
+ <Story name="Clickable" asChild>
54
+ <Avatar seed="clickable" onclick={() => console.log('Avatar clicked')} />
55
+ </Story>
56
+
57
+ <Story name="Animated" asChild>
58
+ <div class="flex items-end gap-4">
59
+ <Avatar seed="alice" dicebearStyle="gaze" tags={['animation']} />
60
+ <Avatar seed="bob" dicebearStyle="shapes" tags={['animation']} />
61
+ <Avatar seed="carol" dicebearStyle="blobs" tags={['animation']} />
62
+ </div>
63
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Avatar from './Avatar.svelte';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Avatar: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Avatar = InstanceType<typeof Avatar>;
19
+ export default Avatar;
@@ -8,6 +8,8 @@ Avatars can be used to represent people or objects.
8
8
  import { Avatar as AvatarPrimitive } from 'bits-ui';
9
9
  import { Layer } from '../../utils/index.js';
10
10
  import { avatar } from './theme.js';
11
+ import { DicebearAvatarBuilder } from './DicebearAvatarBuilder.js';
12
+ import { getMaterialAvatarPalette } from './materialAvatarPalette.js';
11
13
  import type { AvatarProps } from './types.js';
12
14
 
13
15
  let {
@@ -15,6 +17,8 @@ Avatars can be used to represent people or objects.
15
17
  alt = 'User avatar',
16
18
  seed = 'ogonek',
17
19
  dicebearStyle = 'shapes',
20
+ backgroundColor,
21
+ tags,
18
22
  size = 'lg',
19
23
  loadingStatus = $bindable('loading'),
20
24
  class: className,
@@ -22,23 +26,40 @@ Avatars can be used to represent people or objects.
22
26
  ...rest
23
27
  }: AvatarProps = $props();
24
28
 
25
- const materialPalette = ['e8f0fe', 'e8f5e9', 'fff7e6', 'fde7ec', 'e3f2fd'];
26
29
  const sizeMap = {
30
+ xxs: 20,
31
+ xs: 32,
27
32
  sm: 48,
28
33
  md: 72,
29
34
  lg: 96
30
35
  } as const;
31
36
 
32
- const generatedAvatar = $derived.by(() => {
37
+ let generatedAvatar = $state('');
38
+
39
+ $effect(() => {
33
40
  const sizePx = sizeMap[size ?? 'lg'] ?? 96;
34
- const params = new URLSearchParams({
35
- seed,
36
- size: String(sizePx),
37
- radius: '50',
38
- backgroundColor: materialPalette.join(',')
41
+ const currentSeed = seed;
42
+ const currentStyle = dicebearStyle ?? 'shapes';
43
+ const palette = backgroundColor ?? getMaterialAvatarPalette();
44
+ const currentTags = tags;
45
+ let cancelled = false;
46
+
47
+ const builder = new DicebearAvatarBuilder(currentStyle)
48
+ .seed(currentSeed)
49
+ .size(sizePx)
50
+ .borderRadius(50)
51
+ .background(palette);
52
+
53
+ if (currentTags) builder.tags(currentTags);
54
+
55
+ builder.toDataUri().then((uri) => {
56
+ if (cancelled) return;
57
+ generatedAvatar = uri;
39
58
  });
40
59
 
41
- return `https://api.dicebear.com/9.x/${dicebearStyle}/svg?${params.toString()}`;
60
+ return () => {
61
+ cancelled = true;
62
+ };
42
63
  });
43
64
 
44
65
  const { root, image, fallback, button } = $derived(avatar({ size }));
@@ -54,7 +75,9 @@ Avatars can be used to represent people or objects.
54
75
  <AvatarPrimitive.Image {src} {alt} class={image()} />
55
76
  {/if}
56
77
  <AvatarPrimitive.Fallback class={fallback()}>
57
- <img src={generatedAvatar} {alt} class={image()} />
78
+ {#if generatedAvatar}
79
+ <img src={generatedAvatar} {alt} class={image()} />
80
+ {/if}
58
81
  </AvatarPrimitive.Fallback>
59
82
  </AvatarPrimitive.Root>
60
83
  </button>
@@ -64,7 +87,9 @@ Avatars can be used to represent people or objects.
64
87
  <AvatarPrimitive.Image {src} {alt} class={image()} />
65
88
  {/if}
66
89
  <AvatarPrimitive.Fallback class={fallback()}>
67
- <img src={generatedAvatar} {alt} class={image()} />
90
+ {#if generatedAvatar}
91
+ <img src={generatedAvatar} {alt} class={image()} />
92
+ {/if}
68
93
  </AvatarPrimitive.Fallback>
69
94
  </AvatarPrimitive.Root>
70
95
  {/if}
@@ -0,0 +1,59 @@
1
+ import { Avatar as DicebearAvatar } from '@dicebear/core';
2
+ import type { DicebearStyleName } from './dicebearStyles.js';
3
+ export type DicebearFlip = 'none' | 'horizontal' | 'vertical' | 'both';
4
+ export type DicebearColorFill = 'solid' | 'linear' | 'radial';
5
+ export type DicebearColorOrder = 'random' | 'fixed';
6
+ /** The raw options bag passed to DiceBear's `Avatar` constructor. */
7
+ export type DicebearAvatarOptions = Record<string, unknown>;
8
+ /**
9
+ * Fluent builder around DiceBear's `Style` + `Avatar` SDK classes
10
+ * (https://www.dicebear.com/customize/options/). The style definition is only
11
+ * lazily imported once a terminal method (`build`/`toDataUri`/`toSvg`) is called.
12
+ *
13
+ * Covers the generic options every style accepts (seed, transform, background,
14
+ * typography) as named methods; use `.option()`/`.options()` for options specific
15
+ * to the chosen style's own components (e.g. `hairColor`, `eyesVariant`), which
16
+ * can't be named generically — see the selected style's `OptionsDescriptor`.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const uri = await new DicebearAvatarBuilder('lorelei')
21
+ * .seed('alice')
22
+ * .size(96)
23
+ * .background(['b6e3f4', 'c0aede'])
24
+ * .option('hairColor', ['2c1b18'])
25
+ * .toDataUri();
26
+ * ```
27
+ */
28
+ export declare class DicebearAvatarBuilder {
29
+ #private;
30
+ constructor(styleName: DicebearStyleName);
31
+ seed(seed: string): this;
32
+ size(px: number): this;
33
+ idRandomization(enabled?: boolean): this;
34
+ title(text: string): this;
35
+ font(family: string | string[], weight?: number): this;
36
+ flip(value: DicebearFlip): this;
37
+ rotate(degrees: number): this;
38
+ scale(factor: number): this;
39
+ borderRadius(radius: number): this;
40
+ translate(x: number, y: number): this;
41
+ background(colors: string[], fill?: DicebearColorFill, order?: DicebearColorOrder): this;
42
+ backgroundGradient(stops: number, angle: number): this;
43
+ /**
44
+ * Filters which variant a style picks by tag — currently DiceBear's only tag is
45
+ * `'animation'`, which opts a supporting style (e.g. `gaze`, `shapes`, `blobs`) into its
46
+ * animated variants; prefix with `!` (e.g. `'!animation'`) to force the static variant
47
+ * instead. A no-op for styles that don't define the tag.
48
+ * @see https://www.dicebear.com/guides/filter-variants-with-tags
49
+ */
50
+ tags(tags: string[]): this;
51
+ /** Escape hatch for an option specific to the chosen style (e.g. `hairColor`, `eyesVariant`). */
52
+ option(key: string, value: unknown): this;
53
+ /** Merges an arbitrary options object in, e.g. one collected from user input. */
54
+ options(values: DicebearAvatarOptions): this;
55
+ /** Resolves the style definition and constructs the underlying `Avatar` instance. */
56
+ build(): Promise<DicebearAvatar>;
57
+ toDataUri(): Promise<string>;
58
+ toSvg(): Promise<string>;
59
+ }
@@ -0,0 +1,115 @@
1
+ import { Avatar as DicebearAvatar } from '@dicebear/core';
2
+ import { loadDicebearStyle } from './dicebearStyles.js';
3
+ /**
4
+ * Fluent builder around DiceBear's `Style` + `Avatar` SDK classes
5
+ * (https://www.dicebear.com/customize/options/). The style definition is only
6
+ * lazily imported once a terminal method (`build`/`toDataUri`/`toSvg`) is called.
7
+ *
8
+ * Covers the generic options every style accepts (seed, transform, background,
9
+ * typography) as named methods; use `.option()`/`.options()` for options specific
10
+ * to the chosen style's own components (e.g. `hairColor`, `eyesVariant`), which
11
+ * can't be named generically — see the selected style's `OptionsDescriptor`.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const uri = await new DicebearAvatarBuilder('lorelei')
16
+ * .seed('alice')
17
+ * .size(96)
18
+ * .background(['b6e3f4', 'c0aede'])
19
+ * .option('hairColor', ['2c1b18'])
20
+ * .toDataUri();
21
+ * ```
22
+ */
23
+ export class DicebearAvatarBuilder {
24
+ #styleName;
25
+ #options = {};
26
+ constructor(styleName) {
27
+ this.#styleName = styleName;
28
+ }
29
+ seed(seed) {
30
+ this.#options.seed = seed;
31
+ return this;
32
+ }
33
+ size(px) {
34
+ this.#options.size = px;
35
+ return this;
36
+ }
37
+ idRandomization(enabled = true) {
38
+ this.#options.idRandomization = enabled;
39
+ return this;
40
+ }
41
+ title(text) {
42
+ this.#options.title = text;
43
+ return this;
44
+ }
45
+ font(family, weight) {
46
+ this.#options.fontFamily = Array.isArray(family) ? family : [family];
47
+ if (weight !== undefined)
48
+ this.#options.fontWeight = weight;
49
+ return this;
50
+ }
51
+ flip(value) {
52
+ this.#options.flip = value;
53
+ return this;
54
+ }
55
+ rotate(degrees) {
56
+ this.#options.rotate = degrees;
57
+ return this;
58
+ }
59
+ scale(factor) {
60
+ this.#options.scale = factor;
61
+ return this;
62
+ }
63
+ borderRadius(radius) {
64
+ this.#options.borderRadius = radius;
65
+ return this;
66
+ }
67
+ translate(x, y) {
68
+ this.#options.translateX = x;
69
+ this.#options.translateY = y;
70
+ return this;
71
+ }
72
+ background(colors, fill = 'solid', order = 'random') {
73
+ this.#options.backgroundColor = colors;
74
+ this.#options.backgroundColorFill = fill;
75
+ this.#options.backgroundColorOrder = order;
76
+ return this;
77
+ }
78
+ backgroundGradient(stops, angle) {
79
+ this.#options.backgroundColorFillStops = stops;
80
+ this.#options.backgroundColorAngle = angle;
81
+ return this;
82
+ }
83
+ /**
84
+ * Filters which variant a style picks by tag — currently DiceBear's only tag is
85
+ * `'animation'`, which opts a supporting style (e.g. `gaze`, `shapes`, `blobs`) into its
86
+ * animated variants; prefix with `!` (e.g. `'!animation'`) to force the static variant
87
+ * instead. A no-op for styles that don't define the tag.
88
+ * @see https://www.dicebear.com/guides/filter-variants-with-tags
89
+ */
90
+ tags(tags) {
91
+ this.#options.tags = tags;
92
+ return this;
93
+ }
94
+ /** Escape hatch for an option specific to the chosen style (e.g. `hairColor`, `eyesVariant`). */
95
+ option(key, value) {
96
+ this.#options[key] = value;
97
+ return this;
98
+ }
99
+ /** Merges an arbitrary options object in, e.g. one collected from user input. */
100
+ options(values) {
101
+ Object.assign(this.#options, values);
102
+ return this;
103
+ }
104
+ /** Resolves the style definition and constructs the underlying `Avatar` instance. */
105
+ async build() {
106
+ const style = await loadDicebearStyle(this.#styleName);
107
+ return new DicebearAvatar(style, this.#options);
108
+ }
109
+ async toDataUri() {
110
+ return (await this.build()).toDataUri();
111
+ }
112
+ async toSvg() {
113
+ return (await this.build()).toString();
114
+ }
115
+ }
@@ -55,7 +55,7 @@
55
55
  type="file"
56
56
  accept="image/*"
57
57
  onchange={handleImageUpload}
58
- class="file:bg-md-sys-color-primary-container file:text-md-sys-color-on-primary-container hover:file:bg-md-sys-color-primary-container/80 text-sm file:mr-4 file:rounded-full file:border-0 file:px-4 file:py-2 file:text-sm file:font-semibold"
58
+ class="file:bg-md-sys-color-primary-container file:text-md-sys-color-on-primary-container hover:file:bg-md-sys-color-primary-container/80 md-sys-typescale-body-medium file:md-sys-typescale-label-large file:mr-4 file:rounded-full file:border-0 file:px-4 file:py-2"
59
59
  />
60
60
  </div>
61
61
  </div>
@@ -8,8 +8,8 @@
8
8
 
9
9
  <div class="fixed right-4 bottom-4 z-50 hidden md:block">
10
10
  <Popover bind:open title="Theme Settings" side="top" align="end" sideOffset={16}>
11
- {#snippet trigger()}
12
- <FAB iconProps={{ name: 'palette' }} config="primary" />
11
+ {#snippet trigger(triggerProps)}
12
+ <FAB iconProps={{ name: 'palette' }} config="primary" {...triggerProps} />
13
13
  {/snippet}
14
14
 
15
15
  <div
@@ -0,0 +1,21 @@
1
+ import { OptionsDescriptor, Style } from '@dicebear/core';
2
+ /**
3
+ * `@dicebear/core` does not publicly export its `Descriptor`/`FieldDescriptor` types (only
4
+ * the `OptionsDescriptor` class itself), so they're recovered structurally from its `toJSON()`
5
+ * return type instead of being duplicated by hand.
6
+ */
7
+ export type DicebearDescriptor = ReturnType<InstanceType<typeof OptionsDescriptor>['toJSON']>;
8
+ export type DicebearFieldDescriptor = DicebearDescriptor[string];
9
+ /**
10
+ * Every style shipped by `@dicebear/styles` (v10). Kept as the single source of
11
+ * truth for the `DicebearStyle` type in `types.ts` — extend this list first when
12
+ * DiceBear adds a new style, everything else derives from it.
13
+ */
14
+ export declare const DICEBEAR_STYLES: readonly ["adventurer", "adventurer-neutral", "avataaars", "avataaars-neutral", "big-ears", "big-ears-neutral", "big-smile", "blobs", "bottts", "bottts-neutral", "cameo", "clay", "constellation", "critters", "croodles", "croodles-neutral", "cutouts", "disco", "dylan", "fun-emoji", "gaze", "glass", "glyphs", "icons", "identicon", "initial-face", "initials", "landscape", "line-face", "loops", "lorelei", "lorelei-neutral", "marbles", "micah", "miniavs", "moods", "notionists", "notionists-neutral", "open-peeps", "patchwork", "personas", "pixel-art", "pixel-art-neutral", "pixelbot", "planets", "rings", "shadows", "shape-grid", "shapes", "slice", "sprouts", "squircles", "stack", "stripes", "thumbs", "toon-head", "triangles", "voxel-art", "voxel-bot", "waves", "weave"];
15
+ export type DicebearStyleName = (typeof DICEBEAR_STYLES)[number];
16
+ /** Lazily imports and validates a style definition, caching the resulting `Style` instance. */
17
+ export declare function loadDicebearStyle(name: DicebearStyleName): Promise<Style>;
18
+ /** Lazily builds the `OptionsDescriptor` JSON for a style, describing every option it accepts. */
19
+ export declare function loadDicebearOptionsDescriptor(name: DicebearStyleName): Promise<DicebearDescriptor>;
20
+ /** Turns a style name like `big-ears-neutral` into `Big Ears Neutral`. */
21
+ export declare function formatDicebearStyleLabel(name: string): string;