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,347 @@
1
+ <script lang="ts" module>
2
+ let nextAccordionId = 0;
3
+ </script>
4
+
5
+ <script lang="ts">
6
+ import type { SeblifyProps } from 'seblify';
7
+ import type { Snippet } from 'svelte';
8
+ import { onMount, tick } from 'svelte';
9
+ import ChevronRightIcon from '../../../../icons/generated/chevron-right.svelte';
10
+ import Collapse from '../../motion/collapse/Collapse.svelte';
11
+ import { getAccordionGroupContext } from './context';
12
+
13
+ const COLLAPSE_DURATION_MS = 220;
14
+
15
+ type Props = SeblifyProps<{
16
+ [key: string]: unknown;
17
+ children?: Snippet;
18
+ class?: string;
19
+ description?: string;
20
+ disabled?: boolean;
21
+ open?: boolean;
22
+ title: string;
23
+ value?: string;
24
+ }>;
25
+
26
+ let {
27
+ children,
28
+ class: className,
29
+ description,
30
+ disabled = false,
31
+ open = $bindable(false),
32
+ title,
33
+ value,
34
+ ...restProps
35
+ }: Props = $props();
36
+
37
+ const group = getAccordionGroupContext();
38
+ const generatedValue = `accordion-${++nextAccordionId}`;
39
+ const itemValue = $derived(value ?? generatedValue);
40
+ let closeTimer: ReturnType<typeof setTimeout> | undefined;
41
+ let hasInitialized = false;
42
+ let isRegisteredWithGroup = $state(false);
43
+ let motionVersion = 0;
44
+ let nativeOpen = $state(open);
45
+ let visualOpen = $state(open);
46
+
47
+ function clearCloseTimer() {
48
+ if (closeTimer) {
49
+ clearTimeout(closeTimer);
50
+ closeTimer = undefined;
51
+ }
52
+ }
53
+
54
+ function nextFrame(): Promise<void> {
55
+ return new Promise((resolve) => {
56
+ if (typeof requestAnimationFrame === 'function') {
57
+ requestAnimationFrame(() => resolve());
58
+ return;
59
+ }
60
+
61
+ setTimeout(resolve, 0);
62
+ });
63
+ }
64
+
65
+ function finishClose(version = motionVersion) {
66
+ if (version !== motionVersion || open) {
67
+ return;
68
+ }
69
+
70
+ clearCloseTimer();
71
+ nativeOpen = false;
72
+ }
73
+
74
+ $effect(() => {
75
+ const nextOpen = open;
76
+ const version = ++motionVersion;
77
+
78
+ clearCloseTimer();
79
+
80
+ if (!hasInitialized) {
81
+ hasInitialized = true;
82
+ nativeOpen = nextOpen;
83
+ visualOpen = nextOpen;
84
+ return;
85
+ }
86
+
87
+ if (nextOpen) {
88
+ nativeOpen = true;
89
+
90
+ void tick()
91
+ .then(nextFrame)
92
+ .then(() => {
93
+ if (version !== motionVersion || !open) {
94
+ return;
95
+ }
96
+
97
+ visualOpen = true;
98
+ });
99
+
100
+ return;
101
+ }
102
+
103
+ nativeOpen = true;
104
+ visualOpen = false;
105
+
106
+ closeTimer = setTimeout(() => {
107
+ finishClose(version);
108
+ }, COLLAPSE_DURATION_MS + 80);
109
+ });
110
+
111
+ onMount(() => {
112
+ if (!group) {
113
+ return;
114
+ }
115
+
116
+ group.register(itemValue, open);
117
+ open = group.isOpen(itemValue);
118
+ isRegisteredWithGroup = true;
119
+
120
+ return () => {
121
+ isRegisteredWithGroup = false;
122
+ group.unregister(itemValue);
123
+ };
124
+ });
125
+
126
+ $effect(() => {
127
+ if (!group || !isRegisteredWithGroup) {
128
+ return;
129
+ }
130
+
131
+ const groupOpen = group.isOpen(itemValue);
132
+
133
+ if (open !== groupOpen) {
134
+ open = groupOpen;
135
+ }
136
+ });
137
+
138
+ function handleSummaryClick(event: MouseEvent) {
139
+ event.preventDefault();
140
+
141
+ if (disabled) {
142
+ event.stopPropagation();
143
+ return;
144
+ }
145
+
146
+ setOpenState(!open);
147
+ }
148
+
149
+ function handleSummaryKeydown(event: KeyboardEvent) {
150
+ if (event.key !== 'Enter' && event.key !== ' ') {
151
+ return;
152
+ }
153
+
154
+ event.preventDefault();
155
+
156
+ if (disabled) {
157
+ event.stopPropagation();
158
+ return;
159
+ }
160
+
161
+ setOpenState(!open);
162
+ }
163
+
164
+ function handleToggle(event: Event) {
165
+ const details = event.currentTarget as HTMLDetailsElement;
166
+
167
+ if (disabled) {
168
+ details.open = nativeOpen;
169
+ return;
170
+ }
171
+
172
+ if (details.open !== nativeOpen) {
173
+ setOpenState(details.open);
174
+ }
175
+ }
176
+
177
+ function setOpenState(nextOpen: boolean) {
178
+ if (group) {
179
+ group.setOpen(itemValue, nextOpen);
180
+ open = group.isOpen(itemValue);
181
+ return;
182
+ }
183
+
184
+ open = nextOpen;
185
+ }
186
+
187
+ function handleCollapseTransitionEnd(event: TransitionEvent) {
188
+ if (event.propertyName !== 'height') {
189
+ return;
190
+ }
191
+
192
+ finishClose();
193
+ }
194
+ </script>
195
+
196
+ <details
197
+ {...restProps}
198
+ class={`accordion${className ? ` ${className}` : ''}`}
199
+ data-disabled={disabled}
200
+ data-state={open ? 'open' : 'closed'}
201
+ open={nativeOpen}
202
+ ontoggle={handleToggle}
203
+ >
204
+ <summary
205
+ class="accordion__summary"
206
+ aria-disabled={disabled}
207
+ aria-expanded={open}
208
+ onclick={handleSummaryClick}
209
+ onkeydown={handleSummaryKeydown}
210
+ tabindex={disabled ? -1 : undefined}
211
+ >
212
+ <span class="accordion__summary-text">
213
+ <span class="accordion__title">{title}</span>
214
+ {#if description}
215
+ <span class="accordion__description">{description}</span>
216
+ {/if}
217
+ </span>
218
+ <span class="accordion__icon" aria-hidden="true">
219
+ <ChevronRightIcon size="1.125rem" />
220
+ </span>
221
+ </summary>
222
+
223
+ <Collapse
224
+ class="accordion__collapse"
225
+ expanded={visualOpen}
226
+ aria-hidden={!open}
227
+ ontransitionend={handleCollapseTransitionEnd}
228
+ >
229
+ <div class="accordion__body">
230
+ {@render children?.()}
231
+ </div>
232
+ </Collapse>
233
+ </details>
234
+
235
+ <style>
236
+ .accordion {
237
+ --accordion-radius: 8px;
238
+ --accordion-border: var(--seblify-color-border, #c8d2df);
239
+ --accordion-border-hover: var(--seblify-color-border-strong, #aab7c5);
240
+ --accordion-surface: var(--seblify-color-surface, #ffffff);
241
+ --accordion-surface-hover: var(--seblify-color-surface-hover, #f1f4f9);
242
+ --accordion-text: var(--seblify-color-text, #172033);
243
+ --accordion-description: var(--seblify-color-text-muted, #516176);
244
+ --accordion-focus-ring: color-mix(
245
+ in srgb,
246
+ var(--seblify-color-focus-ring, #9bd4d8) 72%,
247
+ transparent
248
+ );
249
+
250
+ display: block;
251
+ border: 1px solid var(--accordion-border);
252
+ border-radius: var(--accordion-radius);
253
+ background: var(--accordion-surface);
254
+ color: var(--accordion-text);
255
+ }
256
+
257
+ .accordion__summary {
258
+ display: grid;
259
+ grid-template-columns: minmax(0, 1fr) auto;
260
+ gap: 0.75rem;
261
+ align-items: center;
262
+ min-height: 3rem;
263
+ padding: 0.75rem 1rem;
264
+ border-radius: calc(var(--accordion-radius) - 1px);
265
+ cursor: pointer;
266
+ list-style: none;
267
+ }
268
+
269
+ .accordion[data-state='open'] .accordion__summary {
270
+ border-bottom-left-radius: 0;
271
+ border-bottom-right-radius: 0;
272
+ }
273
+
274
+ .accordion__summary::-webkit-details-marker {
275
+ display: none;
276
+ }
277
+
278
+ .accordion__summary:hover {
279
+ background: var(--accordion-surface-hover);
280
+ }
281
+
282
+ .accordion__summary:focus-visible {
283
+ outline: 3px solid var(--accordion-focus-ring);
284
+ outline-offset: 2px;
285
+ }
286
+
287
+ .accordion__summary-text {
288
+ display: grid;
289
+ gap: 0.25rem;
290
+ min-width: 0;
291
+ }
292
+
293
+ .accordion__title {
294
+ overflow-wrap: anywhere;
295
+ font-size: 0.95rem;
296
+ font-weight: 650;
297
+ line-height: 1.35;
298
+ }
299
+
300
+ .accordion__description {
301
+ overflow-wrap: anywhere;
302
+ color: var(--accordion-description);
303
+ font-size: 0.875rem;
304
+ line-height: 1.4;
305
+ }
306
+
307
+ .accordion__icon {
308
+ display: inline-flex;
309
+ color: var(--accordion-description);
310
+ transition: transform 160ms ease;
311
+ }
312
+
313
+ .accordion[data-state='open'] .accordion__icon {
314
+ transform: rotate(90deg);
315
+ }
316
+
317
+ .accordion :global(.accordion__collapse) {
318
+ display: block;
319
+ }
320
+
321
+ .accordion__body {
322
+ padding: 0 1rem 1rem;
323
+ color: var(--accordion-text);
324
+ font-size: 0.95rem;
325
+ line-height: 1.55;
326
+ }
327
+
328
+ .accordion__body :global(:first-child) {
329
+ margin-top: 0;
330
+ }
331
+
332
+ .accordion__body :global(:last-child) {
333
+ margin-bottom: 0;
334
+ }
335
+
336
+ .accordion[data-disabled='true'] {
337
+ opacity: var(--seblify-opacity-disabled, 0.56);
338
+ }
339
+
340
+ .accordion[data-disabled='true'] .accordion__summary {
341
+ cursor: not-allowed;
342
+ }
343
+
344
+ .accordion[data-disabled='true'] .accordion__summary:hover {
345
+ background: transparent;
346
+ }
347
+ </style>
@@ -0,0 +1,13 @@
1
+ import type { Snippet } from 'svelte';
2
+ declare const Accordion: import("svelte").Component<{
3
+ [x: string]: unknown;
4
+ children?: Snippet | undefined;
5
+ class?: string | undefined;
6
+ description?: string | undefined;
7
+ disabled?: boolean | undefined;
8
+ open?: boolean | undefined;
9
+ title: string;
10
+ value?: string | undefined;
11
+ }, {}, "open">;
12
+ type Accordion = ReturnType<typeof Accordion>;
13
+ export default Accordion;
@@ -0,0 +1,132 @@
1
+ <script lang="ts">
2
+ import type { SeblifyProps } from 'seblify';
3
+ import type { Snippet } from 'svelte';
4
+ import { setAccordionGroupContext } from './context';
5
+
6
+ type AccordionGroupElement = keyof HTMLElementTagNameMap;
7
+
8
+ type Props = SeblifyProps<{
9
+ [key: string]: unknown;
10
+ as?: AccordionGroupElement;
11
+ children?: Snippet;
12
+ class?: string;
13
+ multiple?: boolean;
14
+ }>;
15
+
16
+ let {
17
+ as = 'div',
18
+ children,
19
+ class: className,
20
+ multiple = false,
21
+ ...restProps
22
+ }: Props = $props();
23
+
24
+ let itemState = $state<Record<string, boolean>>({});
25
+
26
+ function closeOtherItems(value: string) {
27
+ for (const itemValue of Object.keys(itemState)) {
28
+ if (itemValue !== value) {
29
+ itemState[itemValue] = false;
30
+ }
31
+ }
32
+ }
33
+
34
+ function register(value: string, initialOpen: boolean) {
35
+ if (value in itemState) {
36
+ return;
37
+ }
38
+
39
+ if (initialOpen && !multiple) {
40
+ closeOtherItems(value);
41
+ }
42
+
43
+ itemState[value] = initialOpen;
44
+ }
45
+
46
+ function unregister(value: string) {
47
+ delete itemState[value];
48
+ }
49
+
50
+ function isOpen(value: string): boolean {
51
+ return itemState[value] === true;
52
+ }
53
+
54
+ function setOpen(value: string, open: boolean) {
55
+ if (open && !multiple) {
56
+ closeOtherItems(value);
57
+ }
58
+
59
+ itemState[value] = open;
60
+ }
61
+
62
+ $effect(() => {
63
+ if (multiple) {
64
+ return;
65
+ }
66
+
67
+ const openValues = Object.entries(itemState)
68
+ .filter(([, open]) => open)
69
+ .map(([value]) => value);
70
+
71
+ for (const value of openValues.slice(1)) {
72
+ itemState[value] = false;
73
+ }
74
+ });
75
+
76
+ setAccordionGroupContext({
77
+ isOpen,
78
+ register,
79
+ setOpen,
80
+ unregister,
81
+ });
82
+ </script>
83
+
84
+ <svelte:element
85
+ this={as}
86
+ {...restProps}
87
+ class={`accordion-group${className ? ` ${className}` : ''}`}
88
+ data-multiple={multiple}
89
+ >
90
+ {@render children?.()}
91
+ </svelte:element>
92
+
93
+ <style>
94
+ .accordion-group {
95
+ --accordion-group-radius: 8px;
96
+
97
+ display: block;
98
+ }
99
+
100
+ .accordion-group :global(.accordion) {
101
+ border-radius: 0;
102
+ }
103
+
104
+ .accordion-group :global(.accordion + .accordion) {
105
+ margin-top: -1px;
106
+ }
107
+
108
+ .accordion-group :global(.accordion .accordion__summary) {
109
+ border-radius: 0;
110
+ }
111
+
112
+ .accordion-group :global(.accordion:first-child) {
113
+ border-top-left-radius: var(--accordion-group-radius);
114
+ border-top-right-radius: var(--accordion-group-radius);
115
+ }
116
+
117
+ .accordion-group :global(.accordion:first-child .accordion__summary) {
118
+ border-top-left-radius: calc(var(--accordion-group-radius) - 1px);
119
+ border-top-right-radius: calc(var(--accordion-group-radius) - 1px);
120
+ }
121
+
122
+ .accordion-group :global(.accordion:last-child) {
123
+ border-bottom-left-radius: var(--accordion-group-radius);
124
+ border-bottom-right-radius: var(--accordion-group-radius);
125
+ }
126
+
127
+ .accordion-group
128
+ :global(.accordion:last-child[data-state='closed'] .accordion__summary) {
129
+ border-bottom-left-radius: calc(var(--accordion-group-radius) - 1px);
130
+ border-bottom-right-radius: calc(var(--accordion-group-radius) - 1px);
131
+ }
132
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ type AccordionGroupElement = keyof HTMLElementTagNameMap;
3
+ declare const AccordionGroup: import("svelte").Component<{
4
+ [x: string]: unknown;
5
+ as?: AccordionGroupElement | undefined;
6
+ children?: Snippet | undefined;
7
+ class?: string | undefined;
8
+ multiple?: boolean | undefined;
9
+ }, {}, "">;
10
+ type AccordionGroup = ReturnType<typeof AccordionGroup>;
11
+ export default AccordionGroup;
@@ -0,0 +1,8 @@
1
+ export interface AccordionGroupContext {
2
+ isOpen: (value: string) => boolean;
3
+ register: (value: string, initialOpen: boolean) => void;
4
+ setOpen: (value: string, open: boolean) => void;
5
+ unregister: (value: string) => void;
6
+ }
7
+ export declare function setAccordionGroupContext(value: AccordionGroupContext): void;
8
+ export declare function getAccordionGroupContext(): AccordionGroupContext | undefined;
@@ -0,0 +1,8 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const accordionGroupContextKey = Symbol('seblify-accordion-group');
3
+ export function setAccordionGroupContext(value) {
4
+ setContext(accordionGroupContextKey, value);
5
+ }
6
+ export function getAccordionGroupContext() {
7
+ return getContext(accordionGroupContextKey);
8
+ }
@@ -0,0 +1,145 @@
1
+ <script lang="ts">
2
+ import type { SeblifyProps } from 'seblify';
3
+ import { tokenizeCode, type CodeLanguage } from './tokenize';
4
+
5
+ type Props = SeblifyProps<{
6
+ code: string;
7
+ language?: CodeLanguage;
8
+ showLineNumbers?: boolean;
9
+ wrap?: boolean;
10
+ }>;
11
+
12
+ let {
13
+ code,
14
+ language = 'svelte',
15
+ showLineNumbers = false,
16
+ wrap = false,
17
+ }: Props = $props();
18
+
19
+ let lines = $derived(tokenizeCode(code, language));
20
+ let lineDigits = $derived(String(lines.length).length);
21
+ </script>
22
+
23
+ <pre
24
+ class="code-snippet"
25
+ data-language={language}
26
+ data-line-numbers={showLineNumbers}
27
+ data-wrap={wrap}
28
+ style={`--code-snippet-line-digits: ${lineDigits};`}><code
29
+ >{#each lines as line}<span class="code-snippet__row"
30
+ >{#if showLineNumbers}<span
31
+ aria-hidden="true"
32
+ class="code-snippet__line-number">{line.number}</span
33
+ >{/if}<span class="code-snippet__line"
34
+ >{#each line.tokens as token}<span
35
+ class="code-snippet__token"
36
+ data-token-type={token.type}>{token.text}</span
37
+ >{/each}</span
38
+ ></span
39
+ >{/each}</code
40
+ ></pre>
41
+
42
+ <style>
43
+ .code-snippet {
44
+ --code-snippet-background: var(--seblify-color-surface-muted, #d9e0e8);
45
+ --code-snippet-border: var(--seblify-color-border, #c8d2df);
46
+ --code-snippet-text: var(--seblify-color-text, #172033);
47
+ --code-snippet-muted: var(--seblify-color-text-muted, #516176);
48
+ --code-snippet-comment: var(--seblify-color-text-muted, #516176);
49
+ --code-snippet-string: var(--seblify-color-success-text, #143d25);
50
+ --code-snippet-keyword: var(--seblify-color-fill-primary, #146a6f);
51
+ --code-snippet-number: var(--seblify-color-warning-text, #4d3900);
52
+ --code-snippet-tag: var(--seblify-color-info-text, #102f55);
53
+ --code-snippet-attribute: var(--seblify-color-fill-danger, #c93434);
54
+ --code-snippet-directive: var(--seblify-color-fill-primary, #146a6f);
55
+ --code-snippet-punctuation: var(--seblify-color-text-muted, #516176);
56
+
57
+ margin: 0;
58
+ overflow-x: auto;
59
+ border: 1px solid var(--code-snippet-border);
60
+ border-radius: 0.5rem;
61
+ padding: 1rem;
62
+ color: var(--code-snippet-text);
63
+ background: var(--code-snippet-background);
64
+ font-family:
65
+ ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas,
66
+ 'Liberation Mono', 'Courier New', monospace;
67
+ font-size: 0.875rem;
68
+ line-height: 1.6;
69
+ tab-size: 2;
70
+ white-space: pre;
71
+ }
72
+
73
+ code {
74
+ display: block;
75
+ min-width: max-content;
76
+ }
77
+
78
+ .code-snippet[data-wrap='true'] {
79
+ white-space: pre-wrap;
80
+ overflow-wrap: anywhere;
81
+ }
82
+
83
+ .code-snippet[data-wrap='true'] code {
84
+ min-width: 0;
85
+ }
86
+
87
+ .code-snippet__row {
88
+ display: grid;
89
+ grid-template-columns: minmax(0, auto);
90
+ }
91
+
92
+ .code-snippet[data-line-numbers='true'] .code-snippet__row {
93
+ grid-template-columns:
94
+ minmax(calc(var(--code-snippet-line-digits) * 1ch + 0.75rem), auto)
95
+ minmax(0, 1fr);
96
+ column-gap: 1rem;
97
+ }
98
+
99
+ .code-snippet__line-number {
100
+ color: var(--code-snippet-muted);
101
+ text-align: right;
102
+ user-select: none;
103
+ }
104
+
105
+ .code-snippet__line {
106
+ min-width: 0;
107
+ }
108
+
109
+ .code-snippet__line:empty::before {
110
+ content: ' ';
111
+ white-space: pre;
112
+ }
113
+
114
+ .code-snippet__token[data-token-type='comment'] {
115
+ color: var(--code-snippet-comment);
116
+ }
117
+
118
+ .code-snippet__token[data-token-type='string'] {
119
+ color: var(--code-snippet-string);
120
+ }
121
+
122
+ .code-snippet__token[data-token-type='keyword'] {
123
+ color: var(--code-snippet-keyword);
124
+ }
125
+
126
+ .code-snippet__token[data-token-type='number'] {
127
+ color: var(--code-snippet-number);
128
+ }
129
+
130
+ .code-snippet__token[data-token-type='tag'] {
131
+ color: var(--code-snippet-tag);
132
+ }
133
+
134
+ .code-snippet__token[data-token-type='attribute'] {
135
+ color: var(--code-snippet-attribute);
136
+ }
137
+
138
+ .code-snippet__token[data-token-type='directive'] {
139
+ color: var(--code-snippet-directive);
140
+ }
141
+
142
+ .code-snippet__token[data-token-type='punctuation'] {
143
+ color: var(--code-snippet-punctuation);
144
+ }
145
+ </style>
@@ -0,0 +1,9 @@
1
+ import { type CodeLanguage } from './tokenize';
2
+ declare const CodeSnippet: import("svelte").Component<{
3
+ code: string;
4
+ language?: CodeLanguage | undefined;
5
+ showLineNumbers?: boolean | undefined;
6
+ wrap?: boolean | undefined;
7
+ }, {}, "">;
8
+ type CodeSnippet = ReturnType<typeof CodeSnippet>;
9
+ export default CodeSnippet;
@@ -0,0 +1,10 @@
1
+ export type CodeLanguage = 'svelte' | (string & {});
2
+ export interface CodeToken {
3
+ text: string;
4
+ type: 'plain' | 'comment' | 'string' | 'keyword' | 'number' | 'tag' | 'attribute' | 'directive' | 'punctuation';
5
+ }
6
+ export interface CodeLine {
7
+ number: number;
8
+ tokens: CodeToken[];
9
+ }
10
+ export declare function tokenizeCode(source: string, language?: CodeLanguage): CodeLine[];