seblify 0.2.0 → 0.3.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 (432) hide show
  1. package/README.md +114 -109
  2. package/dist/components/action/input/select/checkbox/Checkbox.svelte +378 -16
  3. package/dist/components/action/input/select/checkbox/Checkbox.svelte.d.ts +7 -0
  4. package/dist/components/action/input/select/checkbox/checkbox-relations.svelte.d.ts +47 -0
  5. package/dist/components/action/input/select/checkbox/checkbox-relations.svelte.js +154 -0
  6. package/dist/components/action/input/select/segment-control/SegmentControl.svelte +145 -21
  7. package/dist/components/action/input/select/segment-control/SegmentControl.svelte.d.ts +7 -2
  8. package/dist/components/action/input/select/switch/Switch.svelte +958 -46
  9. package/dist/components/action/input/select/switch/Switch.svelte.d.ts +21 -1
  10. package/dist/components/display/annotation/tag/Tag.svelte +160 -105
  11. package/dist/components/display/data-display/metric/duration/Duration.svelte +64 -0
  12. package/dist/components/display/data-display/metric/duration/Duration.svelte.d.ts +16 -0
  13. package/dist/components/display/data-display/metric/relative-time/RelativeTime.svelte +104 -0
  14. package/dist/components/display/data-display/metric/relative-time/RelativeTime.svelte.d.ts +16 -0
  15. package/dist/components/display/data-display/visual/timeline/Timeline.svelte +161 -0
  16. package/dist/components/display/data-display/visual/timeline/Timeline.svelte.d.ts +17 -0
  17. package/dist/components/display/data-display/visual/timeline/TimelineItem.svelte +489 -0
  18. package/dist/components/display/data-display/visual/timeline/TimelineItem.svelte.d.ts +15 -0
  19. package/dist/components/display/data-display/visual/timeline/context.d.ts +14 -0
  20. package/dist/components/display/data-display/visual/timeline/context.js +14 -0
  21. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte +139 -51
  22. package/dist/components/display/feedback/loading/spinner/Spinner.svelte +137 -49
  23. package/dist/components/display/media/icon/IconGlyph.svelte +8 -2
  24. package/dist/components/display/motion/collapse/Collapse.svelte +115 -0
  25. package/dist/components/display/motion/collapse/Collapse.svelte.d.ts +17 -0
  26. package/dist/components/display/typography/accordion/Accordion.svelte +347 -0
  27. package/dist/components/display/typography/accordion/Accordion.svelte.d.ts +13 -0
  28. package/dist/components/display/typography/accordion/AccordionGroup.svelte +132 -0
  29. package/dist/components/display/typography/accordion/AccordionGroup.svelte.d.ts +11 -0
  30. package/dist/components/display/typography/accordion/context.d.ts +8 -0
  31. package/dist/components/display/typography/accordion/context.js +8 -0
  32. package/dist/components/display/typography/code-snippet/CodeSnippet.svelte +145 -0
  33. package/dist/components/display/typography/code-snippet/CodeSnippet.svelte.d.ts +9 -0
  34. package/dist/components/display/typography/code-snippet/tokenize.d.ts +10 -0
  35. package/dist/components/display/typography/code-snippet/tokenize.js +352 -0
  36. package/dist/components/framework/layout/container/app-shell/AppShell.svelte +1 -1
  37. package/dist/components/framework/navigation/sidebar/sidebar/Sidebar.svelte +712 -0
  38. package/dist/components/framework/navigation/sidebar/sidebar/Sidebar.svelte.d.ts +18 -0
  39. package/dist/components/framework/navigation/sidebar/sidenav/Sidenav.svelte +195 -0
  40. package/dist/components/framework/navigation/sidebar/sidenav/Sidenav.svelte.d.ts +17 -0
  41. package/dist/components/framework/navigation/sidebar/sidenav/SidenavItem.svelte +89 -0
  42. package/dist/components/framework/navigation/sidebar/sidenav/SidenavItem.svelte.d.ts +19 -0
  43. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemBranch.svelte +203 -0
  44. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemBranch.svelte.d.ts +21 -0
  45. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemDivider.svelte +17 -0
  46. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemDivider.svelte.d.ts +26 -0
  47. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemLeaf.svelte +85 -0
  48. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemLeaf.svelte.d.ts +17 -0
  49. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemRow.svelte +404 -0
  50. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemRow.svelte.d.ts +30 -0
  51. package/dist/components/framework/navigation/sidebar/sidenav/sidenav.d.ts +29 -0
  52. package/dist/components/framework/navigation/sidebar/sidenav/sidenav.js +86 -0
  53. package/dist/components/framework/overlay/tooltip/Tooltip.svelte +1012 -0
  54. package/dist/components/framework/overlay/tooltip/Tooltip.svelte.d.ts +31 -0
  55. package/dist/components/utility/format/duration/formatDuration.d.ts +15 -0
  56. package/dist/components/utility/format/duration/formatDuration.js +218 -0
  57. package/dist/components/utility/format/relative-time/formatRelativeTime.d.ts +35 -0
  58. package/dist/components/utility/format/relative-time/formatRelativeTime.js +343 -0
  59. package/dist/design-system/inheritance/tokens.d.ts +7 -0
  60. package/dist/design-system/inheritance/tokens.js +39 -0
  61. package/dist/design-system/reserved-props/allowed-options.d.ts +13 -5
  62. package/dist/design-system/theme/tokens.js +48 -0
  63. package/dist/icons/generated/alarm-snooze.svelte +16 -0
  64. package/dist/icons/generated/alarm-snooze.svelte.d.ts +7 -0
  65. package/dist/icons/generated/alarm.svelte +16 -0
  66. package/dist/icons/generated/alarm.svelte.d.ts +7 -0
  67. package/dist/icons/generated/alert-octagon-outline.svelte +16 -0
  68. package/dist/icons/generated/alert-octagon-outline.svelte.d.ts +7 -0
  69. package/dist/icons/generated/alert-octagon.svelte +16 -0
  70. package/dist/icons/generated/alert-octagon.svelte.d.ts +7 -0
  71. package/dist/icons/generated/arrow-bottom-left-thin.svelte +16 -0
  72. package/dist/icons/generated/arrow-bottom-left-thin.svelte.d.ts +7 -0
  73. package/dist/icons/generated/arrow-bottom-right-thin.svelte +16 -0
  74. package/dist/icons/generated/arrow-bottom-right-thin.svelte.d.ts +7 -0
  75. package/dist/icons/generated/arrow-down-thin.svelte +16 -0
  76. package/dist/icons/generated/arrow-down-thin.svelte.d.ts +7 -0
  77. package/dist/icons/generated/arrow-left-thin.svelte +16 -0
  78. package/dist/icons/generated/arrow-left-thin.svelte.d.ts +7 -0
  79. package/dist/icons/generated/arrow-right-thin.svelte +16 -0
  80. package/dist/icons/generated/arrow-right-thin.svelte.d.ts +7 -0
  81. package/dist/icons/generated/arrow-top-left-thin.svelte +16 -0
  82. package/dist/icons/generated/arrow-top-left-thin.svelte.d.ts +7 -0
  83. package/dist/icons/generated/arrow-top-right-thin.svelte +16 -0
  84. package/dist/icons/generated/arrow-top-right-thin.svelte.d.ts +7 -0
  85. package/dist/icons/generated/arrow-up-thin.svelte +16 -0
  86. package/dist/icons/generated/arrow-up-thin.svelte.d.ts +7 -0
  87. package/dist/icons/generated/bell-outline.svelte +16 -0
  88. package/dist/icons/generated/bell-outline.svelte.d.ts +7 -0
  89. package/dist/icons/generated/bell.svelte +16 -0
  90. package/dist/icons/generated/bell.svelte.d.ts +7 -0
  91. package/dist/icons/generated/book-open-blank-variant-outline.svelte +16 -0
  92. package/dist/icons/generated/book-open-blank-variant-outline.svelte.d.ts +7 -0
  93. package/dist/icons/generated/book-open-blank-variant.svelte +16 -0
  94. package/dist/icons/generated/book-open-blank-variant.svelte.d.ts +7 -0
  95. package/dist/icons/generated/book-open-page-variant-outline.svelte +16 -0
  96. package/dist/icons/generated/book-open-page-variant-outline.svelte.d.ts +7 -0
  97. package/dist/icons/generated/book-open-page-variant.svelte +16 -0
  98. package/dist/icons/generated/book-open-page-variant.svelte.d.ts +7 -0
  99. package/dist/icons/generated/book-open-variant-outline.svelte +16 -0
  100. package/dist/icons/generated/book-open-variant-outline.svelte.d.ts +7 -0
  101. package/dist/icons/generated/book-open-variant.svelte +16 -0
  102. package/dist/icons/generated/book-open-variant.svelte.d.ts +7 -0
  103. package/dist/icons/generated/book-plus-outline.svelte +16 -0
  104. package/dist/icons/generated/book-plus-outline.svelte.d.ts +7 -0
  105. package/dist/icons/generated/button-cursor.svelte +16 -0
  106. package/dist/icons/generated/button-cursor.svelte.d.ts +7 -0
  107. package/dist/icons/generated/calendar-blank-outline.svelte +16 -0
  108. package/dist/icons/generated/calendar-blank-outline.svelte.d.ts +7 -0
  109. package/dist/icons/generated/calendar-blank.svelte +16 -0
  110. package/dist/icons/generated/calendar-blank.svelte.d.ts +7 -0
  111. package/dist/icons/generated/calendar-outline.svelte +16 -0
  112. package/dist/icons/generated/calendar-outline.svelte.d.ts +7 -0
  113. package/dist/icons/generated/calendar.svelte +16 -0
  114. package/dist/icons/generated/calendar.svelte.d.ts +7 -0
  115. package/dist/icons/generated/cancel.svelte +16 -0
  116. package/dist/icons/generated/cancel.svelte.d.ts +7 -0
  117. package/dist/icons/generated/certificate-outline.svelte +16 -0
  118. package/dist/icons/generated/certificate-outline.svelte.d.ts +7 -0
  119. package/dist/icons/generated/chart-box-outline.svelte +16 -0
  120. package/dist/icons/generated/chart-box-outline.svelte.d.ts +7 -0
  121. package/dist/icons/generated/chart-box.svelte +16 -0
  122. package/dist/icons/generated/chart-box.svelte.d.ts +7 -0
  123. package/dist/icons/generated/chat-outline.svelte +16 -0
  124. package/dist/icons/generated/chat-outline.svelte.d.ts +7 -0
  125. package/dist/icons/generated/chat-processing-outline.svelte +16 -0
  126. package/dist/icons/generated/chat-processing-outline.svelte.d.ts +7 -0
  127. package/dist/icons/generated/chat-processing.svelte +16 -0
  128. package/dist/icons/generated/chat-processing.svelte.d.ts +7 -0
  129. package/dist/icons/generated/chat-question-outline.svelte +16 -0
  130. package/dist/icons/generated/chat-question-outline.svelte.d.ts +7 -0
  131. package/dist/icons/generated/chat-question.svelte +16 -0
  132. package/dist/icons/generated/chat-question.svelte.d.ts +7 -0
  133. package/dist/icons/generated/chat.svelte +16 -0
  134. package/dist/icons/generated/chat.svelte.d.ts +7 -0
  135. package/dist/icons/generated/check-thick.svelte +16 -0
  136. package/dist/icons/generated/check-thick.svelte.d.ts +7 -0
  137. package/dist/icons/generated/check.svelte +16 -0
  138. package/dist/icons/generated/check.svelte.d.ts +7 -0
  139. package/dist/icons/generated/circle-large-outline.svelte +16 -0
  140. package/dist/icons/generated/circle-large-outline.svelte.d.ts +7 -0
  141. package/dist/icons/generated/circle-large.svelte +16 -0
  142. package/dist/icons/generated/circle-large.svelte.d.ts +7 -0
  143. package/dist/icons/generated/circle-medium.svelte +16 -0
  144. package/dist/icons/generated/circle-medium.svelte.d.ts +7 -0
  145. package/dist/icons/generated/circle-outline.svelte +16 -0
  146. package/dist/icons/generated/circle-outline.svelte.d.ts +7 -0
  147. package/dist/icons/generated/circle-small.svelte +16 -0
  148. package/dist/icons/generated/circle-small.svelte.d.ts +7 -0
  149. package/dist/icons/generated/circle.svelte +16 -0
  150. package/dist/icons/generated/circle.svelte.d.ts +7 -0
  151. package/dist/icons/generated/clipboard-account-outline.svelte +16 -0
  152. package/dist/icons/generated/clipboard-account-outline.svelte.d.ts +7 -0
  153. package/dist/icons/generated/clipboard-arrow-down-outline.svelte +16 -0
  154. package/dist/icons/generated/clipboard-arrow-down-outline.svelte.d.ts +7 -0
  155. package/dist/icons/generated/clipboard-arrow-up-outline.svelte +16 -0
  156. package/dist/icons/generated/clipboard-arrow-up-outline.svelte.d.ts +7 -0
  157. package/dist/icons/generated/clipboard-clock-outline.svelte +16 -0
  158. package/dist/icons/generated/clipboard-clock-outline.svelte.d.ts +7 -0
  159. package/dist/icons/generated/clipboard-edit-outline.svelte +16 -0
  160. package/dist/icons/generated/clipboard-edit-outline.svelte.d.ts +7 -0
  161. package/dist/icons/generated/clipboard-edit.svelte +16 -0
  162. package/dist/icons/generated/clipboard-edit.svelte.d.ts +7 -0
  163. package/dist/icons/generated/clipboard-flow-outline.svelte +16 -0
  164. package/dist/icons/generated/clipboard-flow-outline.svelte.d.ts +7 -0
  165. package/dist/icons/generated/clipboard-text-clock-outline.svelte +16 -0
  166. package/dist/icons/generated/clipboard-text-clock-outline.svelte.d.ts +7 -0
  167. package/dist/icons/generated/clipboard-text-clock.svelte +16 -0
  168. package/dist/icons/generated/clipboard-text-clock.svelte.d.ts +7 -0
  169. package/dist/icons/generated/clipboard-text-outline.svelte +16 -0
  170. package/dist/icons/generated/clipboard-text-outline.svelte.d.ts +7 -0
  171. package/dist/icons/generated/clipboard-text.svelte +16 -0
  172. package/dist/icons/generated/clipboard-text.svelte.d.ts +7 -0
  173. package/dist/icons/generated/clock-outline.svelte +16 -0
  174. package/dist/icons/generated/clock-outline.svelte.d.ts +7 -0
  175. package/dist/icons/generated/clock.svelte +16 -0
  176. package/dist/icons/generated/clock.svelte.d.ts +7 -0
  177. package/dist/icons/generated/close-thick.svelte +16 -0
  178. package/dist/icons/generated/close-thick.svelte.d.ts +7 -0
  179. package/dist/icons/generated/close.svelte +16 -0
  180. package/dist/icons/generated/close.svelte.d.ts +7 -0
  181. package/dist/icons/generated/cog-outline.svelte +16 -0
  182. package/dist/icons/generated/cog-outline.svelte.d.ts +7 -0
  183. package/dist/icons/generated/cog.svelte +16 -0
  184. package/dist/icons/generated/cog.svelte.d.ts +7 -0
  185. package/dist/icons/generated/copy.svelte +16 -0
  186. package/dist/icons/generated/copy.svelte.d.ts +7 -0
  187. package/dist/icons/generated/creation-outline.svelte +16 -0
  188. package/dist/icons/generated/creation-outline.svelte.d.ts +7 -0
  189. package/dist/icons/generated/creation.svelte +16 -0
  190. package/dist/icons/generated/creation.svelte.d.ts +7 -0
  191. package/dist/icons/generated/cursor-default-click-outline.svelte +16 -0
  192. package/dist/icons/generated/cursor-default-click-outline.svelte.d.ts +7 -0
  193. package/dist/icons/generated/cursor-default-click.svelte +16 -0
  194. package/dist/icons/generated/cursor-default-click.svelte.d.ts +7 -0
  195. package/dist/icons/generated/duck.svelte +16 -0
  196. package/dist/icons/generated/duck.svelte.d.ts +7 -0
  197. package/dist/icons/generated/email-open-outline.svelte +23 -0
  198. package/dist/icons/generated/email-open-outline.svelte.d.ts +7 -0
  199. package/dist/icons/generated/email-open.svelte +16 -0
  200. package/dist/icons/generated/email-open.svelte.d.ts +7 -0
  201. package/dist/icons/generated/email-outline.svelte +16 -0
  202. package/dist/icons/generated/email-outline.svelte.d.ts +7 -0
  203. package/dist/icons/generated/email.svelte +16 -0
  204. package/dist/icons/generated/email.svelte.d.ts +7 -0
  205. package/dist/icons/generated/emoticon-angry-outline.svelte +16 -0
  206. package/dist/icons/generated/emoticon-angry-outline.svelte.d.ts +7 -0
  207. package/dist/icons/generated/emoticon-angry.svelte +16 -0
  208. package/dist/icons/generated/emoticon-angry.svelte.d.ts +7 -0
  209. package/dist/icons/generated/emoticon-confused-outline.svelte +16 -0
  210. package/dist/icons/generated/emoticon-confused-outline.svelte.d.ts +7 -0
  211. package/dist/icons/generated/emoticon-confused.svelte +16 -0
  212. package/dist/icons/generated/emoticon-confused.svelte.d.ts +7 -0
  213. package/dist/icons/generated/emoticon-cool-outline.svelte +16 -0
  214. package/dist/icons/generated/emoticon-cool-outline.svelte.d.ts +7 -0
  215. package/dist/icons/generated/emoticon-cool.svelte +16 -0
  216. package/dist/icons/generated/emoticon-cool.svelte.d.ts +7 -0
  217. package/dist/icons/generated/emoticon-excited-outline.svelte +16 -0
  218. package/dist/icons/generated/emoticon-excited-outline.svelte.d.ts +7 -0
  219. package/dist/icons/generated/emoticon-excited.svelte +16 -0
  220. package/dist/icons/generated/emoticon-excited.svelte.d.ts +7 -0
  221. package/dist/icons/generated/emoticon-frown-outline.svelte +16 -0
  222. package/dist/icons/generated/emoticon-frown-outline.svelte.d.ts +7 -0
  223. package/dist/icons/generated/emoticon-frown.svelte +16 -0
  224. package/dist/icons/generated/emoticon-frown.svelte.d.ts +7 -0
  225. package/dist/icons/generated/emoticon-happy-outline.svelte +16 -0
  226. package/dist/icons/generated/emoticon-happy-outline.svelte.d.ts +7 -0
  227. package/dist/icons/generated/emoticon-happy.svelte +16 -0
  228. package/dist/icons/generated/emoticon-happy.svelte.d.ts +7 -0
  229. package/dist/icons/generated/emoticon-neutral-outline.svelte +16 -0
  230. package/dist/icons/generated/emoticon-neutral-outline.svelte.d.ts +7 -0
  231. package/dist/icons/generated/emoticon-neutral.svelte +16 -0
  232. package/dist/icons/generated/emoticon-neutral.svelte.d.ts +7 -0
  233. package/dist/icons/generated/emoticon-outline.svelte +16 -0
  234. package/dist/icons/generated/emoticon-outline.svelte.d.ts +7 -0
  235. package/dist/icons/generated/emoticon-sad-outline.svelte +16 -0
  236. package/dist/icons/generated/emoticon-sad-outline.svelte.d.ts +7 -0
  237. package/dist/icons/generated/emoticon-sad.svelte +16 -0
  238. package/dist/icons/generated/emoticon-sad.svelte.d.ts +7 -0
  239. package/dist/icons/generated/emoticon.svelte +16 -0
  240. package/dist/icons/generated/emoticon.svelte.d.ts +7 -0
  241. package/dist/icons/generated/eye-closed.svelte +16 -0
  242. package/dist/icons/generated/eye-closed.svelte.d.ts +7 -0
  243. package/dist/icons/generated/eye-off-outline.svelte +16 -0
  244. package/dist/icons/generated/eye-off-outline.svelte.d.ts +7 -0
  245. package/dist/icons/generated/eye-off.svelte +16 -0
  246. package/dist/icons/generated/eye-off.svelte.d.ts +7 -0
  247. package/dist/icons/generated/eye-outline.svelte +16 -0
  248. package/dist/icons/generated/eye-outline.svelte.d.ts +7 -0
  249. package/dist/icons/generated/eye.svelte +16 -0
  250. package/dist/icons/generated/eye.svelte.d.ts +7 -0
  251. package/dist/icons/generated/eyedropper.svelte +16 -0
  252. package/dist/icons/generated/eyedropper.svelte.d.ts +7 -0
  253. package/dist/icons/generated/file-document-outline.svelte +16 -0
  254. package/dist/icons/generated/file-document-outline.svelte.d.ts +7 -0
  255. package/dist/icons/generated/file-document.svelte +16 -0
  256. package/dist/icons/generated/file-document.svelte.d.ts +7 -0
  257. package/dist/icons/generated/file-star-outline.svelte +16 -0
  258. package/dist/icons/generated/file-star-outline.svelte.d.ts +7 -0
  259. package/dist/icons/generated/flower-head.svelte +16 -0
  260. package/dist/icons/generated/flower-head.svelte.d.ts +7 -0
  261. package/dist/icons/generated/flower-tulip.svelte +16 -0
  262. package/dist/icons/generated/flower-tulip.svelte.d.ts +7 -0
  263. package/dist/icons/generated/flower.svelte +16 -0
  264. package/dist/icons/generated/flower.svelte.d.ts +7 -0
  265. package/dist/icons/generated/folder-open-outline.svelte +16 -0
  266. package/dist/icons/generated/folder-open-outline.svelte.d.ts +7 -0
  267. package/dist/icons/generated/folder-open.svelte +16 -0
  268. package/dist/icons/generated/folder-open.svelte.d.ts +7 -0
  269. package/dist/icons/generated/folder-outline.svelte +16 -0
  270. package/dist/icons/generated/folder-outline.svelte.d.ts +7 -0
  271. package/dist/icons/generated/folder.svelte +16 -0
  272. package/dist/icons/generated/folder.svelte.d.ts +7 -0
  273. package/dist/icons/generated/format-color-fill.svelte +16 -0
  274. package/dist/icons/generated/format-color-fill.svelte.d.ts +7 -0
  275. package/dist/icons/generated/format-color-highlight.svelte +16 -0
  276. package/dist/icons/generated/format-color-highlight.svelte.d.ts +7 -0
  277. package/dist/icons/generated/format-list-bulleted-square.svelte +16 -0
  278. package/dist/icons/generated/format-list-bulleted-square.svelte.d.ts +7 -0
  279. package/dist/icons/generated/format-list-bulleted.svelte +16 -0
  280. package/dist/icons/generated/format-list-bulleted.svelte.d.ts +7 -0
  281. package/dist/icons/generated/format-quote-close-outline.svelte +16 -0
  282. package/dist/icons/generated/format-quote-close-outline.svelte.d.ts +7 -0
  283. package/dist/icons/generated/format-quote-close.svelte +16 -0
  284. package/dist/icons/generated/format-quote-close.svelte.d.ts +7 -0
  285. package/dist/icons/generated/format-quote-open-outline.svelte +16 -0
  286. package/dist/icons/generated/format-quote-open-outline.svelte.d.ts +7 -0
  287. package/dist/icons/generated/format-quote-open.svelte +16 -0
  288. package/dist/icons/generated/format-quote-open.svelte.d.ts +7 -0
  289. package/dist/icons/generated/group.svelte +16 -0
  290. package/dist/icons/generated/group.svelte.d.ts +7 -0
  291. package/dist/icons/generated/handle-grip.svelte +16 -0
  292. package/dist/icons/generated/handle-grip.svelte.d.ts +7 -0
  293. package/dist/icons/generated/image-outline.svelte +16 -0
  294. package/dist/icons/generated/image-outline.svelte.d.ts +7 -0
  295. package/dist/icons/generated/image.svelte +16 -0
  296. package/dist/icons/generated/image.svelte.d.ts +7 -0
  297. package/dist/icons/generated/index.d.ts +177 -0
  298. package/dist/icons/generated/index.js +177 -0
  299. package/dist/icons/generated/lead-pencil.svelte +16 -0
  300. package/dist/icons/generated/lead-pencil.svelte.d.ts +7 -0
  301. package/dist/icons/generated/lightbulb-outline.svelte +16 -0
  302. package/dist/icons/generated/lightbulb-outline.svelte.d.ts +7 -0
  303. package/dist/icons/generated/lightbulb.svelte +16 -0
  304. package/dist/icons/generated/lightbulb.svelte.d.ts +7 -0
  305. package/dist/icons/generated/lock-open-outline.svelte +16 -0
  306. package/dist/icons/generated/lock-open-outline.svelte.d.ts +7 -0
  307. package/dist/icons/generated/lock-open.svelte +16 -0
  308. package/dist/icons/generated/lock-open.svelte.d.ts +7 -0
  309. package/dist/icons/generated/lock-outline.svelte +16 -0
  310. package/dist/icons/generated/lock-outline.svelte.d.ts +7 -0
  311. package/dist/icons/generated/lock.svelte +16 -0
  312. package/dist/icons/generated/lock.svelte.d.ts +7 -0
  313. package/dist/icons/generated/magic-wand.svelte +16 -0
  314. package/dist/icons/generated/magic-wand.svelte.d.ts +7 -0
  315. package/dist/icons/generated/magnify.svelte +16 -0
  316. package/dist/icons/generated/magnify.svelte.d.ts +7 -0
  317. package/dist/icons/generated/manifest.js +1493 -63
  318. package/dist/icons/generated/menu-down.svelte +16 -0
  319. package/dist/icons/generated/menu-down.svelte.d.ts +7 -0
  320. package/dist/icons/generated/menu-up.svelte +16 -0
  321. package/dist/icons/generated/menu-up.svelte.d.ts +7 -0
  322. package/dist/icons/generated/minus-thick.svelte +16 -0
  323. package/dist/icons/generated/minus-thick.svelte.d.ts +7 -0
  324. package/dist/icons/generated/minus.svelte +16 -0
  325. package/dist/icons/generated/minus.svelte.d.ts +7 -0
  326. package/dist/icons/generated/page-layout-header-footer.svelte +16 -0
  327. package/dist/icons/generated/page-layout-header-footer.svelte.d.ts +7 -0
  328. package/dist/icons/generated/palette-outline.svelte +16 -0
  329. package/dist/icons/generated/palette-outline.svelte.d.ts +7 -0
  330. package/dist/icons/generated/palette.svelte +16 -0
  331. package/dist/icons/generated/palette.svelte.d.ts +7 -0
  332. package/dist/icons/generated/pause.svelte +16 -0
  333. package/dist/icons/generated/pause.svelte.d.ts +7 -0
  334. package/dist/icons/generated/pen.svelte +16 -0
  335. package/dist/icons/generated/pen.svelte.d.ts +7 -0
  336. package/dist/icons/generated/pencil-outline.svelte +16 -0
  337. package/dist/icons/generated/pencil-outline.svelte.d.ts +7 -0
  338. package/dist/icons/generated/pencil.svelte +16 -0
  339. package/dist/icons/generated/pencil.svelte.d.ts +7 -0
  340. package/dist/icons/generated/percent.svelte +16 -0
  341. package/dist/icons/generated/percent.svelte.d.ts +7 -0
  342. package/dist/icons/generated/pine-tree-box.svelte +16 -0
  343. package/dist/icons/generated/pine-tree-box.svelte.d.ts +7 -0
  344. package/dist/icons/generated/pine-tree-variant-outline.svelte +16 -0
  345. package/dist/icons/generated/pine-tree-variant-outline.svelte.d.ts +7 -0
  346. package/dist/icons/generated/play-pause.svelte +16 -0
  347. package/dist/icons/generated/play-pause.svelte.d.ts +7 -0
  348. package/dist/icons/generated/play.svelte +16 -0
  349. package/dist/icons/generated/play.svelte.d.ts +7 -0
  350. package/dist/icons/generated/plus-thick.svelte +16 -0
  351. package/dist/icons/generated/plus-thick.svelte.d.ts +7 -0
  352. package/dist/icons/generated/plus.svelte +16 -0
  353. package/dist/icons/generated/plus.svelte.d.ts +7 -0
  354. package/dist/icons/generated/reset-focus.svelte +16 -0
  355. package/dist/icons/generated/reset-focus.svelte.d.ts +7 -0
  356. package/dist/icons/generated/reset.svelte +16 -0
  357. package/dist/icons/generated/reset.svelte.d.ts +7 -0
  358. package/dist/icons/generated/ruler-square.svelte +16 -0
  359. package/dist/icons/generated/ruler-square.svelte.d.ts +7 -0
  360. package/dist/icons/generated/ruler.svelte +16 -0
  361. package/dist/icons/generated/ruler.svelte.d.ts +7 -0
  362. package/dist/icons/generated/star-outline.svelte +16 -0
  363. package/dist/icons/generated/star-outline.svelte.d.ts +7 -0
  364. package/dist/icons/generated/star.svelte +16 -0
  365. package/dist/icons/generated/star.svelte.d.ts +7 -0
  366. package/dist/icons/generated/table-border.svelte +16 -0
  367. package/dist/icons/generated/table-border.svelte.d.ts +7 -0
  368. package/dist/icons/generated/tag-multiple-outline.svelte +16 -0
  369. package/dist/icons/generated/tag-multiple-outline.svelte.d.ts +7 -0
  370. package/dist/icons/generated/tag-multiple.svelte +16 -0
  371. package/dist/icons/generated/tag-multiple.svelte.d.ts +7 -0
  372. package/dist/icons/generated/tag-outline.svelte +16 -0
  373. package/dist/icons/generated/tag-outline.svelte.d.ts +7 -0
  374. package/dist/icons/generated/tag.svelte +16 -0
  375. package/dist/icons/generated/tag.svelte.d.ts +7 -0
  376. package/dist/icons/generated/text-box-outline.svelte +16 -0
  377. package/dist/icons/generated/text-box-outline.svelte.d.ts +7 -0
  378. package/dist/icons/generated/text-box-plus-outline.svelte +16 -0
  379. package/dist/icons/generated/text-box-plus-outline.svelte.d.ts +7 -0
  380. package/dist/icons/generated/text-box-plus.svelte +16 -0
  381. package/dist/icons/generated/text-box-plus.svelte.d.ts +7 -0
  382. package/dist/icons/generated/text-box.svelte +16 -0
  383. package/dist/icons/generated/text-box.svelte.d.ts +7 -0
  384. package/dist/icons/generated/thumb-down-outline.svelte +16 -0
  385. package/dist/icons/generated/thumb-down-outline.svelte.d.ts +7 -0
  386. package/dist/icons/generated/thumb-down.svelte +16 -0
  387. package/dist/icons/generated/thumb-down.svelte.d.ts +7 -0
  388. package/dist/icons/generated/thumb-up-outline.svelte +16 -0
  389. package/dist/icons/generated/thumb-up-outline.svelte.d.ts +7 -0
  390. package/dist/icons/generated/thumb-up.svelte +16 -0
  391. package/dist/icons/generated/thumb-up.svelte.d.ts +7 -0
  392. package/dist/icons/generated/tilde.svelte +16 -0
  393. package/dist/icons/generated/tilde.svelte.d.ts +7 -0
  394. package/dist/icons/generated/tooltip-image-outline.svelte +16 -0
  395. package/dist/icons/generated/tooltip-image-outline.svelte.d.ts +7 -0
  396. package/dist/icons/generated/tooltip-question-outline.svelte +16 -0
  397. package/dist/icons/generated/tooltip-question-outline.svelte.d.ts +7 -0
  398. package/dist/icons/generated/tooltip-question.svelte +16 -0
  399. package/dist/icons/generated/tooltip-question.svelte.d.ts +7 -0
  400. package/dist/icons/generated/tooltip-text-outline.svelte +16 -0
  401. package/dist/icons/generated/tooltip-text-outline.svelte.d.ts +7 -0
  402. package/dist/icons/generated/tooltip-text.svelte +16 -0
  403. package/dist/icons/generated/tooltip-text.svelte.d.ts +7 -0
  404. package/dist/icons/generated/triangle-down-outline.svelte +16 -0
  405. package/dist/icons/generated/triangle-down-outline.svelte.d.ts +7 -0
  406. package/dist/icons/generated/triangle-down.svelte +16 -0
  407. package/dist/icons/generated/triangle-down.svelte.d.ts +7 -0
  408. package/dist/icons/generated/triangle-outline.svelte +16 -0
  409. package/dist/icons/generated/triangle-outline.svelte.d.ts +7 -0
  410. package/dist/icons/generated/triangle-small-down.svelte +16 -0
  411. package/dist/icons/generated/triangle-small-down.svelte.d.ts +7 -0
  412. package/dist/icons/generated/triangle-small.svelte +16 -0
  413. package/dist/icons/generated/triangle-small.svelte.d.ts +7 -0
  414. package/dist/icons/generated/triangle.svelte +16 -0
  415. package/dist/icons/generated/triangle.svelte.d.ts +7 -0
  416. package/dist/icons/generated/view-grid-outline.svelte +16 -0
  417. package/dist/icons/generated/view-grid-outline.svelte.d.ts +7 -0
  418. package/dist/icons/generated/view-grid.svelte +16 -0
  419. package/dist/icons/generated/view-grid.svelte.d.ts +7 -0
  420. package/dist/index.d.ts +16 -3
  421. package/dist/index.js +15 -2
  422. package/dist/styles/tone-context.css +113 -0
  423. package/dist/theme.css +22 -0
  424. package/package.json +16 -3
  425. package/dist/components/framework/layout/container/sidebar/Sidebar.svelte +0 -134
  426. package/dist/components/framework/layout/container/sidebar/Sidebar.svelte.d.ts +0 -9
  427. package/dist/components/framework/navigation/sidenav/Sidenav.svelte +0 -86
  428. package/dist/components/framework/navigation/sidenav/Sidenav.svelte.d.ts +0 -8
  429. package/dist/components/framework/navigation/sidenav/SidenavTree.svelte +0 -265
  430. package/dist/components/framework/navigation/sidenav/SidenavTree.svelte.d.ts +0 -14
  431. package/dist/components/framework/navigation/sidenav/sidenav.d.ts +0 -6
  432. package/dist/components/framework/navigation/sidenav/sidenav.js +0 -1
@@ -0,0 +1,195 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type { SeblifyProps } from 'seblify';
4
+ import SidenavItem from './SidenavItem.svelte';
5
+ import {
6
+ getDescendantSidenavItemIds,
7
+ getSidenavAccentAncestorId,
8
+ type SidenavActionDetail,
9
+ type SidenavItemData,
10
+ } from './sidenav';
11
+
12
+ type Props = SeblifyProps<{
13
+ items: SidenavItemData[];
14
+ currentHref?: string;
15
+ ariaLabel?: string;
16
+ defaultOpenIds?: string[];
17
+ openStateKey?: string | number;
18
+ maxDepth?: number;
19
+ compact?: boolean;
20
+ onAction?: (detail: SidenavActionDetail) => void;
21
+ onItemActivate?: (item: SidenavItemData) => void;
22
+ label?: Snippet<[SidenavItemData]>;
23
+ trailing?: Snippet<[SidenavItemData]>;
24
+ }>;
25
+
26
+ let {
27
+ items,
28
+ currentHref,
29
+ ariaLabel = 'Navigation',
30
+ defaultOpenIds = [],
31
+ openStateKey,
32
+ maxDepth,
33
+ compact = false,
34
+ onAction,
35
+ onItemActivate,
36
+ label: labelSnippet,
37
+ trailing: trailingSnippet,
38
+ }: Props = $props();
39
+
40
+ let openIds = $state(new Set<string>());
41
+ let suppressedDefaultOpenIds = $state(new Set<string>());
42
+ let accentAncestorId = $derived(getSidenavAccentAncestorId(items, currentHref));
43
+ let lastOpenStateKey = $state<string | number | undefined>(undefined);
44
+ let lastDefaultOpenSignature = $state('');
45
+
46
+ function getDefaultOpenSignature(ids: string[]): string {
47
+ return ids.join('|');
48
+ }
49
+
50
+ $effect(() => {
51
+ const defaultOpenSignature = getDefaultOpenSignature(defaultOpenIds);
52
+
53
+ if (openStateKey !== undefined && openStateKey !== lastOpenStateKey) {
54
+ lastOpenStateKey = openStateKey;
55
+ lastDefaultOpenSignature = defaultOpenSignature;
56
+ suppressedDefaultOpenIds = new Set();
57
+ openIds = new Set(defaultOpenIds);
58
+ return;
59
+ }
60
+
61
+ if (defaultOpenSignature !== lastDefaultOpenSignature) {
62
+ lastDefaultOpenSignature = defaultOpenSignature;
63
+ suppressedDefaultOpenIds = new Set();
64
+ }
65
+
66
+ const nextOpenIds = new Set(openIds);
67
+
68
+ for (const id of defaultOpenIds) {
69
+ if (!suppressedDefaultOpenIds.has(id)) {
70
+ nextOpenIds.add(id);
71
+ }
72
+ }
73
+
74
+ if (!setsEqual(openIds, nextOpenIds)) {
75
+ openIds = nextOpenIds;
76
+ }
77
+ });
78
+
79
+ function isItemOpen(id: string): boolean {
80
+ return openIds.has(id);
81
+ }
82
+
83
+ function findItemById(
84
+ searchItems: SidenavItemData[],
85
+ id: string,
86
+ ): SidenavItemData | undefined {
87
+ for (const item of searchItems) {
88
+ if (item.id === id) {
89
+ return item;
90
+ }
91
+
92
+ if (item.children?.length) {
93
+ const match = findItemById(item.children, id);
94
+
95
+ if (match) {
96
+ return match;
97
+ }
98
+ }
99
+ }
100
+
101
+ return undefined;
102
+ }
103
+
104
+ function toggleItem(id: string): void {
105
+ const nextOpenIds = new Set(openIds);
106
+ const nextSuppressedDefaultOpenIds = new Set(suppressedDefaultOpenIds);
107
+
108
+ if (nextOpenIds.has(id)) {
109
+ nextOpenIds.delete(id);
110
+ nextSuppressedDefaultOpenIds.add(id);
111
+ const item = findItemById(items, id);
112
+
113
+ for (const descendantId of getDescendantSidenavItemIds(item?.children)) {
114
+ nextOpenIds.delete(descendantId);
115
+ nextSuppressedDefaultOpenIds.add(descendantId);
116
+ }
117
+ } else {
118
+ nextOpenIds.add(id);
119
+ nextSuppressedDefaultOpenIds.delete(id);
120
+ }
121
+
122
+ openIds = nextOpenIds;
123
+ suppressedDefaultOpenIds = nextSuppressedDefaultOpenIds;
124
+ }
125
+
126
+ function setsEqual(a: Set<string>, b: Set<string>): boolean {
127
+ if (a.size !== b.size) {
128
+ return false;
129
+ }
130
+
131
+ for (const value of a) {
132
+ if (!b.has(value)) {
133
+ return false;
134
+ }
135
+ }
136
+
137
+ return true;
138
+ }
139
+ </script>
140
+
141
+ <nav aria-label={ariaLabel} class="sidenav">
142
+ <ul class="sidenav__list">
143
+ {#each items as item (item.id)}
144
+ <SidenavItem
145
+ {accentAncestorId}
146
+ {compact}
147
+ {currentHref}
148
+ depth={0}
149
+ isItemOpen={isItemOpen}
150
+ {item}
151
+ label={labelSnippet}
152
+ {maxDepth}
153
+ {onAction}
154
+ {onItemActivate}
155
+ trailing={trailingSnippet}
156
+ toggleItem={toggleItem}
157
+ />
158
+ {/each}
159
+ </ul>
160
+ </nav>
161
+
162
+ <style>
163
+ .sidenav {
164
+ --seblify-sidenav-accent-background: color-mix(
165
+ in srgb,
166
+ var(--seblify-color-fill-primary, #146a6f) 22%,
167
+ transparent
168
+ );
169
+ --seblify-sidenav-accent-foreground: var(
170
+ --seblify-color-fill-primary,
171
+ #146a6f
172
+ );
173
+ --seblify-sidenav-hover-background: var(
174
+ --seblify-color-surface-hover,
175
+ #f1f4f9
176
+ );
177
+ --seblify-sidenav-link-label: var(--seblify-color-text-muted, #aebdd2);
178
+ --seblify-sidenav-link-label-current: var(--seblify-color-text, #ffffff);
179
+ --seblify-sidenav-disabled: var(--seblify-color-text-disabled, #58677b);
180
+ --seblify-sidenav-supporting: color-mix(
181
+ in srgb,
182
+ var(--seblify-color-text-subtle, #667085) 45%,
183
+ var(--seblify-color-text-disabled, #58677b) 55%
184
+ );
185
+ font-size: 0.925rem;
186
+ }
187
+
188
+ .sidenav__list {
189
+ display: grid;
190
+ gap: 0.125rem;
191
+ margin: 0;
192
+ padding: 0;
193
+ list-style: none;
194
+ }
195
+ </style>
@@ -0,0 +1,17 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type SidenavActionDetail, type SidenavItemData } from './sidenav';
3
+ declare const Sidenav: import("svelte").Component<{
4
+ items: SidenavItemData[];
5
+ currentHref?: string | undefined;
6
+ ariaLabel?: string | undefined;
7
+ defaultOpenIds?: string[] | undefined;
8
+ openStateKey?: string | number | undefined;
9
+ maxDepth?: number | undefined;
10
+ compact?: boolean | undefined;
11
+ onAction?: ((detail: SidenavActionDetail) => void) | undefined;
12
+ onItemActivate?: ((item: SidenavItemData) => void) | undefined;
13
+ label?: string | undefined;
14
+ trailing?: Snippet<[SidenavItemData]> | undefined;
15
+ }, {}, "">;
16
+ type Sidenav = ReturnType<typeof Sidenav>;
17
+ export default Sidenav;
@@ -0,0 +1,89 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import SidenavItemBranch from './fragments/SidenavItemBranch.svelte';
4
+ import SidenavItemDivider from './fragments/SidenavItemDivider.svelte';
5
+ import SidenavItemLeaf from './fragments/SidenavItemLeaf.svelte';
6
+ import type {
7
+ SidenavActionDetail,
8
+ SidenavItemData,
9
+ SidenavItemKind,
10
+ } from './sidenav';
11
+ import { getSidenavItemKind } from './sidenav';
12
+
13
+ type Props = {
14
+ item: SidenavItemData;
15
+ depth: number;
16
+ accentAncestorId?: string;
17
+ currentHref?: string;
18
+ compact?: boolean;
19
+ maxDepth?: number;
20
+ isItemOpen: (id: string) => boolean;
21
+ toggleItem: (id: string) => void;
22
+ onAction?: (detail: SidenavActionDetail) => void;
23
+ onItemActivate?: (item: SidenavItemData) => void;
24
+ label?: Snippet<[SidenavItemData]>;
25
+ trailing?: Snippet<[SidenavItemData]>;
26
+ };
27
+
28
+ let {
29
+ item,
30
+ depth,
31
+ accentAncestorId,
32
+ currentHref,
33
+ compact = false,
34
+ maxDepth,
35
+ isItemOpen,
36
+ toggleItem,
37
+ onAction,
38
+ onItemActivate,
39
+ label: labelSnippet,
40
+ trailing: trailingSnippet,
41
+ }: Props =
42
+ $props();
43
+
44
+ let kind = $derived(getSidenavItemKind(item));
45
+
46
+ function isBranchKind(value: SidenavItemKind): boolean {
47
+ return (
48
+ value === 'group' || value === 'action-group' || value === 'link-group'
49
+ );
50
+ }
51
+
52
+ function isDividerKind(value: SidenavItemKind): boolean {
53
+ return value === 'divider';
54
+ }
55
+ </script>
56
+
57
+ {#if isDividerKind(kind)}
58
+ <SidenavItemDivider />
59
+ {:else if isBranchKind(kind)}
60
+ <SidenavItemBranch
61
+ {accentAncestorId}
62
+ {compact}
63
+ {currentHref}
64
+ {depth}
65
+ isOpen={isItemOpen(item.id)}
66
+ {isItemOpen}
67
+ {item}
68
+ {kind}
69
+ label={labelSnippet}
70
+ {maxDepth}
71
+ {onAction}
72
+ {onItemActivate}
73
+ trailing={trailingSnippet}
74
+ {toggleItem}
75
+ />
76
+ {:else}
77
+ <SidenavItemLeaf
78
+ {accentAncestorId}
79
+ {compact}
80
+ {currentHref}
81
+ {depth}
82
+ {item}
83
+ {kind}
84
+ label={labelSnippet}
85
+ {onAction}
86
+ {onItemActivate}
87
+ trailing={trailingSnippet}
88
+ />
89
+ {/if}
@@ -0,0 +1,19 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { SidenavActionDetail, SidenavItemData } from './sidenav';
3
+ type Props = {
4
+ item: SidenavItemData;
5
+ depth: number;
6
+ accentAncestorId?: string;
7
+ currentHref?: string;
8
+ compact?: boolean;
9
+ maxDepth?: number;
10
+ isItemOpen: (id: string) => boolean;
11
+ toggleItem: (id: string) => void;
12
+ onAction?: (detail: SidenavActionDetail) => void;
13
+ onItemActivate?: (item: SidenavItemData) => void;
14
+ label?: Snippet<[SidenavItemData]>;
15
+ trailing?: Snippet<[SidenavItemData]>;
16
+ };
17
+ declare const SidenavItem: import("svelte").Component<Props, {}, "">;
18
+ type SidenavItem = ReturnType<typeof SidenavItem>;
19
+ export default SidenavItem;
@@ -0,0 +1,203 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import SidenavItem from '../SidenavItem.svelte';
4
+ import SidenavItemRow from './SidenavItemRow.svelte';
5
+ import type {
6
+ SidenavActionDetail,
7
+ SidenavItemData,
8
+ SidenavItemKind,
9
+ } from '../sidenav';
10
+ import {
11
+ getSidenavItemLabel,
12
+ itemContainsHref,
13
+ itemMatchesHref,
14
+ } from '../sidenav';
15
+
16
+ type Props = {
17
+ item: SidenavItemData;
18
+ kind: Extract<SidenavItemKind, 'group' | 'action-group' | 'link-group'>;
19
+ depth: number;
20
+ accentAncestorId?: string;
21
+ currentHref?: string;
22
+ compact?: boolean;
23
+ maxDepth?: number;
24
+ isOpen: boolean;
25
+ isItemOpen: (id: string) => boolean;
26
+ toggleItem: (id: string) => void;
27
+ onAction?: (detail: SidenavActionDetail) => void;
28
+ onItemActivate?: (item: SidenavItemData) => void;
29
+ label?: Snippet<[SidenavItemData]>;
30
+ trailing?: Snippet<[SidenavItemData]>;
31
+ };
32
+
33
+ let {
34
+ item,
35
+ kind,
36
+ depth,
37
+ accentAncestorId,
38
+ currentHref,
39
+ compact = false,
40
+ maxDepth,
41
+ isOpen,
42
+ isItemOpen,
43
+ toggleItem,
44
+ onAction,
45
+ onItemActivate,
46
+ label: labelSnippet,
47
+ trailing: trailingSnippet,
48
+ }: Props = $props();
49
+
50
+ let label = $derived(getSidenavItemLabel(item));
51
+ let hasChildren = $derived(Boolean(item.children?.length));
52
+ let collapsible = $derived(item.collapsible !== false);
53
+ let expanded = $derived(!collapsible || (canRenderChildren ? isOpen : false));
54
+ let current = $derived(itemMatchesHref(item, currentHref));
55
+ let containsCurrent = $derived(itemContainsHref(item, currentHref));
56
+ let canRenderChildren = $derived(
57
+ maxDepth === undefined || depth + 1 < maxDepth,
58
+ );
59
+ let showToggle = $derived(collapsible && !compact && hasChildren);
60
+ let toggleMode = $derived(showToggle && canRenderChildren ? 'button' : 'indicator');
61
+ let canActivateCompactRoot = $derived(
62
+ compact && depth === 0 && kind === 'group' && Boolean(onItemActivate),
63
+ );
64
+ let primaryInteractive = $derived(
65
+ kind === 'group'
66
+ ? canActivateCompactRoot || (collapsible && !compact && canRenderChildren)
67
+ ? 'button'
68
+ : 'static'
69
+ : kind === 'link-group'
70
+ ? 'link'
71
+ : 'button',
72
+ );
73
+
74
+ function handlePrimary(): void {
75
+ if (kind === 'group') {
76
+ if (canActivateCompactRoot && !item.disabled) {
77
+ onItemActivate?.(item);
78
+ }
79
+ return;
80
+ }
81
+
82
+ if (kind === 'action-group') {
83
+ if (item.action && !item.disabled) {
84
+ onAction?.({
85
+ id: item.id,
86
+ action: item.action,
87
+ payload: item.payload,
88
+ item,
89
+ });
90
+ }
91
+ }
92
+ }
93
+
94
+ function handleDisabledLinkClick(event: MouseEvent): void {
95
+ if (item.disabled) {
96
+ event.preventDefault();
97
+ return;
98
+ }
99
+
100
+ if (
101
+ kind === 'link-group' &&
102
+ current &&
103
+ !canRenderChildren &&
104
+ hasChildren &&
105
+ onItemActivate
106
+ ) {
107
+ event.preventDefault();
108
+ onItemActivate(item);
109
+ return;
110
+ }
111
+
112
+ if (kind === 'link-group' && collapsible && canRenderChildren && !compact) {
113
+ if (containsCurrent && expanded) {
114
+ event.preventDefault();
115
+ toggleItem(item.id);
116
+ return;
117
+ }
118
+
119
+ if (!expanded) {
120
+ toggleItem(item.id);
121
+ }
122
+ }
123
+ }
124
+
125
+ function handleToggle(): void {
126
+ if (item.disabled) {
127
+ return;
128
+ }
129
+
130
+ toggleItem(item.id);
131
+ }
132
+ </script>
133
+
134
+ <li class="sidenav-branch">
135
+ <SidenavItemRow
136
+ accentAncestor={item.id === accentAncestorId}
137
+ appearance={kind === 'group' ? 'header' : kind === 'action-group' ? 'muted' : 'default'}
138
+ ariaCurrent={current ? 'page' : undefined}
139
+ {compact}
140
+ current={current}
141
+ {depth}
142
+ disabled={item.disabled}
143
+ expandable={showToggle}
144
+ expanded={expanded}
145
+ href={kind === 'link-group' ? item.href : undefined}
146
+ icon={item.icon}
147
+ {item}
148
+ interactive={primaryInteractive}
149
+ label={label}
150
+ labelContent={labelSnippet}
151
+ onLinkClick={kind === 'link-group' ? handleDisabledLinkClick : undefined}
152
+ onPrimary={
153
+ kind === 'group'
154
+ ? canActivateCompactRoot
155
+ ? handlePrimary
156
+ : collapsible && !compact && canRenderChildren
157
+ ? handleToggle
158
+ : undefined
159
+ : kind === 'action-group'
160
+ ? handlePrimary
161
+ : undefined
162
+ }
163
+ onToggle={handleToggle}
164
+ trailingContent={trailingSnippet}
165
+ toggleDisabled={item.disabled}
166
+ {toggleMode}
167
+ />
168
+
169
+ {#if expanded && canRenderChildren}
170
+ <ul class="sidenav-branch__children">
171
+ {#each item.children ?? [] as child (child.id)}
172
+ <SidenavItem
173
+ {accentAncestorId}
174
+ {compact}
175
+ {currentHref}
176
+ depth={depth + 1}
177
+ {isItemOpen}
178
+ item={child}
179
+ label={labelSnippet}
180
+ {maxDepth}
181
+ {onAction}
182
+ {onItemActivate}
183
+ trailing={trailingSnippet}
184
+ {toggleItem}
185
+ />
186
+ {/each}
187
+ </ul>
188
+ {/if}
189
+ </li>
190
+
191
+ <style>
192
+ .sidenav-branch {
193
+ list-style: none;
194
+ }
195
+
196
+ .sidenav-branch__children {
197
+ display: grid;
198
+ gap: 0.125rem;
199
+ margin: 0;
200
+ padding: 0;
201
+ list-style: none;
202
+ }
203
+ </style>
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { SidenavActionDetail, SidenavItemData, SidenavItemKind } from '../sidenav';
3
+ type Props = {
4
+ item: SidenavItemData;
5
+ kind: Extract<SidenavItemKind, 'group' | 'action-group' | 'link-group'>;
6
+ depth: number;
7
+ accentAncestorId?: string;
8
+ currentHref?: string;
9
+ compact?: boolean;
10
+ maxDepth?: number;
11
+ isOpen: boolean;
12
+ isItemOpen: (id: string) => boolean;
13
+ toggleItem: (id: string) => void;
14
+ onAction?: (detail: SidenavActionDetail) => void;
15
+ onItemActivate?: (item: SidenavItemData) => void;
16
+ label?: Snippet<[SidenavItemData]>;
17
+ trailing?: Snippet<[SidenavItemData]>;
18
+ };
19
+ declare const SidenavItemBranch: import("svelte").Component<Props, {}, "">;
20
+ type SidenavItemBranch = ReturnType<typeof SidenavItemBranch>;
21
+ export default SidenavItemBranch;
@@ -0,0 +1,17 @@
1
+ <li class="sidenav-divider">
2
+ <hr />
3
+ </li>
4
+
5
+ <style>
6
+ .sidenav-divider {
7
+ margin: 0.375rem 0;
8
+ padding: 0 0.75rem;
9
+ list-style: none;
10
+ }
11
+
12
+ hr {
13
+ margin: 0;
14
+ border: 0;
15
+ border-top: 1px solid var(--seblify-color-border, #c8d2df);
16
+ }
17
+ </style>
@@ -0,0 +1,26 @@
1
+ export default SidenavItemDivider;
2
+ type SidenavItemDivider = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const SidenavItemDivider: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,85 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import SidenavItemRow from './SidenavItemRow.svelte';
4
+ import type {
5
+ SidenavActionDetail,
6
+ SidenavItemData,
7
+ SidenavItemKind,
8
+ } from '../sidenav';
9
+ import { getSidenavItemLabel, itemMatchesHref } from '../sidenav';
10
+
11
+ type Props = {
12
+ item: SidenavItemData;
13
+ kind: Exclude<SidenavItemKind, 'divider' | 'group' | 'action-group' | 'link-group'>;
14
+ depth: number;
15
+ accentAncestorId?: string;
16
+ currentHref?: string;
17
+ compact?: boolean;
18
+ onAction?: (detail: SidenavActionDetail) => void;
19
+ onItemActivate?: (item: SidenavItemData) => void;
20
+ label?: Snippet<[SidenavItemData]>;
21
+ trailing?: Snippet<[SidenavItemData]>;
22
+ };
23
+
24
+ let {
25
+ item,
26
+ kind,
27
+ depth,
28
+ accentAncestorId,
29
+ currentHref,
30
+ compact = false,
31
+ onAction,
32
+ onItemActivate,
33
+ label: labelSnippet,
34
+ trailing: trailingSnippet,
35
+ }: Props = $props();
36
+
37
+ let label = $derived(getSidenavItemLabel(item));
38
+ let current = $derived(itemMatchesHref(item, currentHref));
39
+
40
+ function handleAction(): void {
41
+ if (!item.action || item.disabled) {
42
+ return;
43
+ }
44
+
45
+ onAction?.({
46
+ id: item.id,
47
+ action: item.action,
48
+ payload: item.payload,
49
+ item,
50
+ });
51
+ }
52
+
53
+ function handleDisabledLinkClick(event: MouseEvent): void {
54
+ if (item.disabled) {
55
+ event.preventDefault();
56
+ }
57
+ }
58
+ </script>
59
+
60
+ <li>
61
+ <SidenavItemRow
62
+ accentAncestor={item.id === accentAncestorId}
63
+ appearance={kind === 'header' ? 'header' : kind === 'action' ? 'muted' : 'default'}
64
+ ariaCurrent={current ? 'page' : undefined}
65
+ current={current}
66
+ {compact}
67
+ {depth}
68
+ disabled={item.disabled}
69
+ href={kind === 'link' ? item.href : undefined}
70
+ icon={item.icon}
71
+ {item}
72
+ interactive={kind === 'header' ? 'static' : kind === 'link' ? 'link' : 'button'}
73
+ label={label}
74
+ labelContent={labelSnippet}
75
+ onLinkClick={kind === 'link' ? handleDisabledLinkClick : undefined}
76
+ onPrimary={kind === 'action' ? handleAction : undefined}
77
+ trailingContent={trailingSnippet}
78
+ />
79
+ </li>
80
+
81
+ <style>
82
+ li {
83
+ list-style: none;
84
+ }
85
+ </style>
@@ -0,0 +1,17 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { SidenavActionDetail, SidenavItemData, SidenavItemKind } from '../sidenav';
3
+ type Props = {
4
+ item: SidenavItemData;
5
+ kind: Exclude<SidenavItemKind, 'divider' | 'group' | 'action-group' | 'link-group'>;
6
+ depth: number;
7
+ accentAncestorId?: string;
8
+ currentHref?: string;
9
+ compact?: boolean;
10
+ onAction?: (detail: SidenavActionDetail) => void;
11
+ onItemActivate?: (item: SidenavItemData) => void;
12
+ label?: Snippet<[SidenavItemData]>;
13
+ trailing?: Snippet<[SidenavItemData]>;
14
+ };
15
+ declare const SidenavItemLeaf: import("svelte").Component<Props, {}, "">;
16
+ type SidenavItemLeaf = ReturnType<typeof SidenavItemLeaf>;
17
+ export default SidenavItemLeaf;