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
@@ -1,39 +1,277 @@
1
1
  <script lang="ts">
2
2
  import type { SeblifyProps } from 'seblify';
3
3
 
4
+ type CheckboxTone =
5
+ | 'neutral'
6
+ | 'primary'
7
+ | 'secondary'
8
+ | 'success'
9
+ | 'danger'
10
+ | 'warning'
11
+ | 'info'
12
+ | 'inverse';
13
+ type CheckboxVisualState =
14
+ | 'default'
15
+ | 'derived'
16
+ | 'indirect'
17
+ | 'direct-and-derived'
18
+ | 'direct-and-indirect';
19
+
4
20
  type Props = SeblifyProps<{
21
+ ariaLabel?: string;
5
22
  checked?: boolean;
6
23
  disabled?: boolean;
7
24
  label?: string;
8
25
  description?: string;
26
+ indeterminate?: boolean;
9
27
  name?: string;
28
+ onclick?: (event: MouseEvent) => void;
29
+ tone?: CheckboxTone;
30
+ visualState?: CheckboxVisualState;
10
31
  value?: string;
11
32
  }>;
12
33
 
13
34
  let {
35
+ ariaLabel,
14
36
  checked = $bindable(false),
15
37
  disabled = false,
16
38
  label,
17
39
  description,
40
+ indeterminate = false,
18
41
  name,
42
+ onclick,
43
+ tone,
44
+ visualState = 'default',
19
45
  value,
20
46
  }: Props = $props();
47
+ const checkboxId = $props.id();
48
+ let inputElement: HTMLInputElement | undefined;
49
+
50
+ const labelId = $derived(label ? `${checkboxId}-label` : undefined);
51
+ const descriptionId = $derived(
52
+ description ? `${checkboxId}-description` : undefined,
53
+ );
54
+
55
+ const dataState = $derived(
56
+ disabled && indeterminate
57
+ ? 'disabled-indeterminate'
58
+ : disabled && checked
59
+ ? 'disabled-checked'
60
+ : disabled
61
+ ? 'disabled-unchecked'
62
+ : indeterminate
63
+ ? 'indeterminate'
64
+ : checked
65
+ ? 'checked'
66
+ : 'unchecked',
67
+ );
68
+
69
+ $effect(() => {
70
+ if (inputElement) {
71
+ inputElement.checked = checked;
72
+ inputElement.indeterminate = indeterminate;
73
+ }
74
+ });
75
+
76
+ function handleInputChange(event: Event) {
77
+ if (disabled) {
78
+ const input = event.currentTarget as HTMLInputElement;
79
+
80
+ input.checked = checked;
81
+ input.indeterminate = indeterminate;
82
+ return;
83
+ }
84
+
85
+ checked = (event.currentTarget as HTMLInputElement).checked;
86
+ }
87
+
88
+ function handleInputClick(event: MouseEvent) {
89
+ if (disabled) {
90
+ event.preventDefault();
91
+ event.stopPropagation();
92
+
93
+ if (inputElement) {
94
+ inputElement.checked = checked;
95
+ inputElement.indeterminate = indeterminate;
96
+ }
97
+
98
+ return;
99
+ }
100
+
101
+ onclick?.(event);
102
+ }
21
103
  </script>
22
104
 
23
- <label class:disabled class="checkbox">
24
- <input bind:checked {disabled} {name} type="checkbox" {value} />
25
- <span class="content">
105
+ <label
106
+ class:disabled
107
+ class="seblify-checkbox seblify-tone-context"
108
+ data-indeterminate={indeterminate}
109
+ data-seblify-tone={tone ?? 'inherit'}
110
+ data-state={dataState}
111
+ data-visual-state={visualState}
112
+ >
113
+ <input
114
+ aria-checked={indeterminate ? 'mixed' : undefined}
115
+ aria-describedby={descriptionId}
116
+ aria-label={labelId ? undefined : ariaLabel}
117
+ aria-labelledby={labelId}
118
+ bind:this={inputElement}
119
+ checked={checked}
120
+ {disabled}
121
+ {name}
122
+ data-state={dataState}
123
+ onchange={handleInputChange}
124
+ onclick={handleInputClick}
125
+ type="checkbox"
126
+ {value}
127
+ />
128
+ <span class="seblify-checkbox__control" aria-hidden="true">
129
+ <span class="seblify-checkbox__mark"></span>
130
+ </span>
131
+ <span class="seblify-checkbox__content">
26
132
  {#if label}
27
- <span class="label">{label}</span>
133
+ <span class="seblify-checkbox__label" id={labelId}>{label}</span>
28
134
  {/if}
29
135
  {#if description}
30
- <span class="description">{description}</span>
136
+ <span class="seblify-checkbox__description" id={descriptionId}
137
+ >{description}</span
138
+ >
31
139
  {/if}
32
140
  </span>
33
141
  </label>
34
142
 
35
- <style>
36
- .checkbox {
143
+ <style>:where(.seblify-tone-context) {
144
+ --seblify-tone-fill: var(--seblify-color-fill-neutral, #516176);
145
+ --seblify-tone-fill-text: var(--seblify-color-fill-neutral-text, #ffffff);
146
+ --seblify-tone-surface: var(--seblify-color-surface-muted, #d9e0e8);
147
+ --seblify-tone-text: var(--seblify-color-text-muted, #516176);
148
+ --seblify-tone-border: var(--seblify-color-border, #c8d2df);
149
+ }
150
+
151
+ :where(.seblify-tone-context[data-seblify-tone='inherit']) {
152
+ --seblify-tone-fill: var(
153
+ --seblify-current-tone-fill,
154
+ var(--seblify-color-fill-neutral, #516176)
155
+ );
156
+ --seblify-tone-fill-text: var(
157
+ --seblify-current-tone-fill-text,
158
+ var(--seblify-color-fill-neutral-text, #ffffff)
159
+ );
160
+ --seblify-tone-surface: var(
161
+ --seblify-current-tone-surface,
162
+ var(--seblify-color-surface-muted, #d9e0e8)
163
+ );
164
+ --seblify-tone-text: var(
165
+ --seblify-current-tone-text,
166
+ var(--seblify-color-text-muted, #516176)
167
+ );
168
+ --seblify-tone-border: var(
169
+ --seblify-current-tone-border,
170
+ var(--seblify-color-border, #c8d2df)
171
+ );
172
+ }
173
+
174
+ :where(.seblify-tone-context[data-seblify-tone='neutral']) {
175
+ --seblify-tone-fill: var(--seblify-color-fill-neutral, #516176);
176
+ --seblify-tone-fill-text: var(--seblify-color-fill-neutral-text, #ffffff);
177
+ --seblify-tone-surface: var(--seblify-color-surface-muted, #d9e0e8);
178
+ --seblify-tone-text: var(--seblify-color-text-muted, #516176);
179
+ --seblify-tone-border: var(--seblify-color-border, #c8d2df);
180
+ }
181
+
182
+ :where(.seblify-tone-context[data-seblify-tone='strong']) {
183
+ --seblify-tone-fill: var(--seblify-color-fill-strong, #172033);
184
+ --seblify-tone-fill-text: var(--seblify-color-fill-strong-text, #ffffff);
185
+ --seblify-tone-surface: var(--seblify-color-surface-raised, #ffffff);
186
+ --seblify-tone-text: var(--seblify-color-text, #172033);
187
+ --seblify-tone-border: var(--seblify-color-border-strong, #aab7c5);
188
+ }
189
+
190
+ :where(.seblify-tone-context[data-seblify-tone='primary']) {
191
+ --seblify-tone-fill: var(--seblify-color-fill-primary, #146a6f);
192
+ --seblify-tone-fill-text: var(--seblify-color-fill-primary-text, #ffffff);
193
+ --seblify-tone-surface: var(--seblify-color-surface-accent, #f7fbfb);
194
+ --seblify-tone-text: var(--seblify-color-fill-primary, #146a6f);
195
+ --seblify-tone-border: var(--seblify-color-border-accent, #9ab7ba);
196
+ }
197
+
198
+ :where(.seblify-tone-context[data-seblify-tone='secondary']) {
199
+ --seblify-tone-fill: var(--seblify-color-fill-secondary, #5b5fc7);
200
+ --seblify-tone-fill-text: var(
201
+ --seblify-color-fill-secondary-text,
202
+ #ffffff
203
+ );
204
+ --seblify-tone-surface: var(--seblify-color-secondary-surface, #f0efff);
205
+ --seblify-tone-text: var(--seblify-color-secondary-text, #2f316f);
206
+ --seblify-tone-border: var(--seblify-color-secondary-border, #c8c6f4);
207
+ }
208
+
209
+ :where(.seblify-tone-context[data-seblify-tone='success']) {
210
+ --seblify-tone-fill: var(--seblify-color-fill-success, #1f7a3f);
211
+ --seblify-tone-fill-text: var(--seblify-color-fill-success-text, #ffffff);
212
+ --seblify-tone-surface: var(--seblify-color-success-surface, #e8f8ee);
213
+ --seblify-tone-text: var(--seblify-color-success-text, #143d25);
214
+ --seblify-tone-border: var(--seblify-color-success-border, #b8ddc7);
215
+ }
216
+
217
+ :where(.seblify-tone-context[data-seblify-tone='danger']) {
218
+ --seblify-tone-fill: var(--seblify-color-fill-danger, #c93434);
219
+ --seblify-tone-fill-text: var(--seblify-color-fill-danger-text, #ffffff);
220
+ --seblify-tone-surface: var(--seblify-color-error-surface, #fff0f0);
221
+ --seblify-tone-text: var(--seblify-color-error-text, #5a1717);
222
+ --seblify-tone-border: var(--seblify-color-error-border, #efb6b6);
223
+ }
224
+
225
+ :where(.seblify-tone-context[data-seblify-tone='warning']) {
226
+ --seblify-tone-fill: var(--seblify-color-fill-warning, #8a5a00);
227
+ --seblify-tone-fill-text: var(--seblify-color-fill-warning-text, #ffffff);
228
+ --seblify-tone-surface: var(--seblify-color-warning-surface, #fff6d8);
229
+ --seblify-tone-text: var(--seblify-color-warning-text, #4d3900);
230
+ --seblify-tone-border: var(--seblify-color-warning-border, #e8d28f);
231
+ }
232
+
233
+ :where(.seblify-tone-context[data-seblify-tone='info']) {
234
+ --seblify-tone-fill: var(--seblify-color-fill-info, #1f6fb2);
235
+ --seblify-tone-fill-text: var(--seblify-color-fill-info-text, #ffffff);
236
+ --seblify-tone-surface: var(--seblify-color-info-surface, #eaf3ff);
237
+ --seblify-tone-text: var(--seblify-color-info-text, #102f55);
238
+ --seblify-tone-border: var(--seblify-color-info-border, #bfd1ea);
239
+ }
240
+
241
+ :where(.seblify-tone-context[data-seblify-tone='inverse']) {
242
+ --seblify-tone-fill: var(--seblify-color-fill-inverse, #172033);
243
+ --seblify-tone-fill-text: var(--seblify-color-fill-inverse-text, #ffffff);
244
+ --seblify-tone-surface: var(--seblify-color-surface-inverse-hover, #263043);
245
+ --seblify-tone-text: var(--seblify-color-fill-inverse-text, #ffffff);
246
+ --seblify-tone-border: var(--seblify-color-border-inverse, #263043);
247
+ }
248
+
249
+ :where(.seblify-tone-publisher) {
250
+ --seblify-current-tone-fill: var(--seblify-tone-fill);
251
+ --seblify-current-tone-fill-text: var(--seblify-tone-fill-text);
252
+ --seblify-current-tone-surface: var(--seblify-tone-surface);
253
+ --seblify-current-tone-text: var(--seblify-tone-text);
254
+ --seblify-current-tone-border: var(--seblify-tone-border);
255
+ }
256
+
257
+ .seblify-checkbox {
258
+ --checkbox-size: 1.125rem;
259
+ --checkbox-radius: 0.25rem;
260
+ --checkbox-border: var(--seblify-color-border-strong, #aab7c5);
261
+ --checkbox-surface: var(--seblify-color-surface, #ffffff);
262
+ --checkbox-active-border: var(--seblify-tone-fill);
263
+ --checkbox-active-surface: var(--seblify-tone-fill);
264
+ --checkbox-active-mark: var(--seblify-tone-fill-text);
265
+ --checkbox-focus-ring: color-mix(
266
+ in srgb,
267
+ var(--seblify-tone-fill) 54%,
268
+ transparent
269
+ );
270
+ --checkbox-derived-border: var(--seblify-color-border-strong, #aab7c5);
271
+ --checkbox-derived-surface: var(--seblify-color-surface-muted, #d9e0e8);
272
+ --checkbox-derived-mark: var(--seblify-color-text-muted, #516176);
273
+
274
+ position: relative;
37
275
  display: inline-flex;
38
276
  gap: 10px;
39
277
  align-items: flex-start;
@@ -41,30 +279,154 @@
41
279
  cursor: pointer;
42
280
  }
43
281
 
44
- input {
45
- width: 18px;
46
- height: 18px;
47
- margin: 2px 0 0;
48
- accent-color: var(--seblify-color-fill-accent, #146a6f);
282
+ .seblify-checkbox[data-seblify-tone='inherit'] {
283
+ --seblify-tone-fill: var(
284
+ --seblify-current-tone-fill,
285
+ var(--seblify-color-fill-primary, #146a6f)
286
+ );
287
+ --seblify-tone-fill-text: var(
288
+ --seblify-current-tone-fill-text,
289
+ var(--seblify-color-fill-primary-text, #ffffff)
290
+ );
291
+ }
292
+
293
+ .seblify-checkbox > input {
294
+ position: absolute;
295
+ width: 1px !important;
296
+ height: 1px !important;
297
+ padding: 0 !important;
298
+ border: 0 !important;
299
+ margin: -1px !important;
300
+ overflow: hidden;
301
+ background: transparent !important;
302
+ clip: rect(0 0 0 0);
303
+ clip-path: inset(50%);
304
+ white-space: nowrap;
305
+ }
306
+
307
+ .seblify-checkbox__control {
308
+ position: relative;
309
+ display: inline-flex;
310
+ width: var(--checkbox-size);
311
+ height: var(--checkbox-size);
312
+ flex: 0 0 auto;
313
+ align-items: center;
314
+ justify-content: center;
315
+ border: 1px solid var(--checkbox-border);
316
+ border-radius: var(--checkbox-radius);
317
+ margin-top: 0.125rem;
318
+ background: var(--checkbox-surface);
319
+ box-sizing: border-box;
320
+ color: var(--checkbox-active-mark);
321
+ transition:
322
+ border-color 140ms ease,
323
+ background 140ms ease,
324
+ box-shadow 140ms ease;
325
+ }
326
+
327
+ .seblify-checkbox__mark {
328
+ position: relative;
329
+ display: block;
330
+ width: 0.625rem;
331
+ height: 0.625rem;
332
+ opacity: 0;
333
+ transform: scale(0.86);
334
+ transition:
335
+ opacity 120ms ease,
336
+ transform 120ms ease;
337
+ }
338
+
339
+ .seblify-checkbox[data-state='checked'] .seblify-checkbox__control,
340
+ .seblify-checkbox[data-state='indeterminate'] .seblify-checkbox__control,
341
+ .seblify-checkbox[data-state='disabled-checked'] .seblify-checkbox__control,
342
+ .seblify-checkbox[data-state='disabled-indeterminate']
343
+ .seblify-checkbox__control {
344
+ border-color: var(--checkbox-active-border);
345
+ background: var(--checkbox-active-surface);
346
+ }
347
+
348
+ .seblify-checkbox[data-state='checked'] .seblify-checkbox__mark,
349
+ .seblify-checkbox[data-state='indeterminate'] .seblify-checkbox__mark,
350
+ .seblify-checkbox[data-state='disabled-checked'] .seblify-checkbox__mark,
351
+ .seblify-checkbox[data-state='disabled-indeterminate']
352
+ .seblify-checkbox__mark {
353
+ opacity: 1;
354
+ transform: scale(1);
355
+ }
356
+
357
+ .seblify-checkbox[data-state='checked'] .seblify-checkbox__mark::before,
358
+ .seblify-checkbox[data-state='disabled-checked']
359
+ .seblify-checkbox__mark::before {
360
+ position: absolute;
361
+ left: 50%;
362
+ top: 50%;
363
+ width: 0.25rem;
364
+ height: 0.55rem;
365
+ border: solid currentColor;
366
+ border-width: 0 0.125rem 0.125rem 0;
367
+ content: '';
368
+ transform: translate(-50%, -58%) rotate(45deg);
369
+ }
370
+
371
+ .seblify-checkbox[data-state='indeterminate']
372
+ .seblify-checkbox__mark::before,
373
+ .seblify-checkbox[data-state='disabled-indeterminate']
374
+ .seblify-checkbox__mark::before {
375
+ position: absolute;
376
+ left: 0.0625rem;
377
+ right: 0.0625rem;
378
+ top: 50%;
379
+ height: 0.125rem;
380
+ border-radius: 999px;
381
+ background: currentColor;
382
+ content: '';
383
+ transform: translateY(-50%);
384
+ }
385
+
386
+ .seblify-checkbox > input:focus-visible + .seblify-checkbox__control {
387
+ outline: 3px solid var(--checkbox-focus-ring);
388
+ outline-offset: 2px;
389
+ }
390
+
391
+ .seblify-checkbox[data-visual-state='derived']
392
+ .seblify-checkbox__control,
393
+ .seblify-checkbox[data-visual-state='indirect']
394
+ .seblify-checkbox__control {
395
+ --checkbox-active-border: var(--checkbox-derived-border);
396
+ --checkbox-active-surface: var(--checkbox-derived-surface);
397
+ --checkbox-active-mark: var(--checkbox-derived-mark);
398
+
399
+ border-color: var(--checkbox-derived-border);
400
+ background: var(--checkbox-derived-surface);
401
+ color: var(--checkbox-derived-mark);
402
+ }
403
+
404
+ .seblify-checkbox[data-visual-state='direct-and-derived']
405
+ .seblify-checkbox__control,
406
+ .seblify-checkbox[data-visual-state='direct-and-indirect']
407
+ .seblify-checkbox__control {
408
+ box-shadow: 0 0 0 2px
409
+ color-mix(in srgb, var(--seblify-tone-fill) 22%, transparent);
49
410
  }
50
411
 
51
- .content {
412
+ .seblify-checkbox__content {
52
413
  display: grid;
53
414
  gap: 2px;
415
+ min-width: 0;
54
416
  }
55
417
 
56
- .label {
418
+ .seblify-checkbox__label {
57
419
  font-weight: 700;
58
420
  line-height: 1.35;
59
421
  }
60
422
 
61
- .description {
423
+ .seblify-checkbox__description {
62
424
  color: var(--seblify-color-text-muted, #516176);
63
425
  font-size: 0.875rem;
64
426
  line-height: 1.45;
65
427
  }
66
428
 
67
- .disabled {
429
+ .seblify-checkbox.disabled {
68
430
  cursor: not-allowed;
69
431
  opacity: var(--seblify-opacity-disabled, 0.56);
70
432
  }
@@ -1,9 +1,16 @@
1
+ type CheckboxTone = 'neutral' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'inverse';
2
+ type CheckboxVisualState = 'default' | 'derived' | 'indirect' | 'direct-and-derived' | 'direct-and-indirect';
1
3
  declare const Checkbox: import("svelte").Component<{
4
+ ariaLabel?: string | undefined;
2
5
  checked?: boolean | undefined;
3
6
  disabled?: boolean | undefined;
4
7
  label?: string | undefined;
5
8
  description?: string | undefined;
9
+ indeterminate?: boolean | undefined;
6
10
  name?: string | undefined;
11
+ onclick?: ((event: MouseEvent) => void) | undefined;
12
+ tone?: CheckboxTone | undefined;
13
+ visualState?: CheckboxVisualState | undefined;
7
14
  value?: string | undefined;
8
15
  }, {}, "checked">;
9
16
  type Checkbox = ReturnType<typeof Checkbox>;
@@ -0,0 +1,47 @@
1
+ export type CheckboxRelationsId = string;
2
+ export interface CheckboxRelationsItemConfig {
3
+ checked?: boolean;
4
+ disabled?: boolean;
5
+ requires?: CheckboxRelationsId[];
6
+ selects?: CheckboxRelationsId[];
7
+ }
8
+ export type CheckboxRelationsGroupConfig = CheckboxRelationsId[] | {
9
+ itemIds: CheckboxRelationsId[];
10
+ };
11
+ export interface CheckboxRelationsConfig {
12
+ groups?: Record<CheckboxRelationsId, CheckboxRelationsGroupConfig>;
13
+ items: Record<CheckboxRelationsId, CheckboxRelationsItemConfig>;
14
+ }
15
+ export type CheckboxRelationsVisualState = 'default' | 'indirect';
16
+ export interface CheckboxRelationsItemState {
17
+ blockedBy: CheckboxRelationsId[];
18
+ checked: boolean;
19
+ directChecked: boolean;
20
+ disabled: boolean;
21
+ indirectChecked: boolean;
22
+ requires: CheckboxRelationsId[];
23
+ selects: CheckboxRelationsId[];
24
+ setChecked: (checked: boolean) => void;
25
+ toggle: () => void;
26
+ visualState: CheckboxRelationsVisualState;
27
+ }
28
+ export interface CheckboxRelationsGroupState {
29
+ checked: boolean;
30
+ directSelectedCount: number;
31
+ indeterminate: boolean;
32
+ indirectSelectedCount: number;
33
+ itemIds: CheckboxRelationsId[];
34
+ selectedCount: number;
35
+ selectableCount: number;
36
+ setChecked: (checked: boolean) => void;
37
+ toggle: () => void;
38
+ visualState: CheckboxRelationsVisualState;
39
+ }
40
+ export interface CheckboxRelations {
41
+ group: (id: CheckboxRelationsId) => CheckboxRelationsGroupState;
42
+ item: (id: CheckboxRelationsId) => CheckboxRelationsItemState;
43
+ setItemChecked: (id: CheckboxRelationsId, checked: boolean) => void;
44
+ toggleGroup: (id: CheckboxRelationsId) => void;
45
+ toggleItem: (id: CheckboxRelationsId) => void;
46
+ }
47
+ export declare function createCheckboxRelations(config: CheckboxRelationsConfig): CheckboxRelations;
@@ -0,0 +1,154 @@
1
+ export function createCheckboxRelations(config) {
2
+ const items = config.items;
3
+ const groups = normalizeGroups(config.groups ?? {});
4
+ let directChecked = $state(Object.fromEntries(Object.entries(items).map(([id, item]) => [id, item.checked === true])));
5
+ const effectiveChecked = $derived(resolveEffectiveChecked(items, groups, directChecked));
6
+ function item(id) {
7
+ const config = getItemConfig(items, id);
8
+ const blockedBy = getBlockedBy(items, id, effectiveChecked);
9
+ const checked = effectiveChecked.has(id);
10
+ const direct = directChecked[id] === true && checked;
11
+ const indirect = checked && !direct;
12
+ return {
13
+ blockedBy,
14
+ checked,
15
+ directChecked: direct,
16
+ disabled: config.disabled === true || blockedBy.length > 0,
17
+ indirectChecked: indirect,
18
+ requires: config.requires ?? [],
19
+ selects: config.selects ?? [],
20
+ setChecked: (checked) => setItemChecked(id, checked),
21
+ toggle: () => toggleItem(id),
22
+ visualState: indirect ? 'indirect' : 'default',
23
+ };
24
+ }
25
+ function group(id) {
26
+ const itemIds = getGroupItemIds(groups, id);
27
+ const selectableItems = itemIds
28
+ .map((itemId) => item(itemId))
29
+ .filter((itemState) => !itemState.disabled);
30
+ const selectedCount = selectableItems.filter((itemState) => itemState.checked).length;
31
+ const directSelectedCount = selectableItems.filter((itemState) => itemState.directChecked).length;
32
+ const indirectSelectedCount = selectableItems.filter((itemState) => itemState.indirectChecked).length;
33
+ const checked = selectableItems.length > 0 && selectedCount === selectableItems.length;
34
+ const visualState = selectedCount > 0 && directSelectedCount === 0 ? 'indirect' : 'default';
35
+ return {
36
+ checked,
37
+ directSelectedCount,
38
+ indeterminate: selectedCount > 0 && !checked,
39
+ indirectSelectedCount,
40
+ itemIds,
41
+ selectedCount,
42
+ selectableCount: selectableItems.length,
43
+ setChecked: (checked) => setGroupChecked(id, checked),
44
+ toggle: () => toggleGroup(id),
45
+ visualState,
46
+ };
47
+ }
48
+ function setItemChecked(id, checked) {
49
+ const currentItem = item(id);
50
+ if (currentItem.disabled && checked) {
51
+ return;
52
+ }
53
+ directChecked[id] = checked;
54
+ }
55
+ function toggleItem(id) {
56
+ const currentItem = item(id);
57
+ if (currentItem.disabled) {
58
+ return;
59
+ }
60
+ directChecked[id] = !currentItem.directChecked;
61
+ }
62
+ function setGroupChecked(id, checked) {
63
+ const groupItemIds = getGroupItemIds(groups, id);
64
+ if (!checked) {
65
+ const selectableItemIds = groupItemIds.filter((itemId) => !item(itemId).disabled);
66
+ for (const itemId of selectableItemIds) {
67
+ directChecked[itemId] = false;
68
+ }
69
+ return;
70
+ }
71
+ let changed = true;
72
+ while (changed) {
73
+ changed = false;
74
+ for (const itemId of groupItemIds) {
75
+ const currentItem = item(itemId);
76
+ if (!currentItem.disabled && directChecked[itemId] !== true) {
77
+ directChecked[itemId] = true;
78
+ changed = true;
79
+ }
80
+ }
81
+ }
82
+ }
83
+ function toggleGroup(id) {
84
+ const currentGroup = group(id);
85
+ setGroupChecked(id, !(currentGroup.checked && currentGroup.directSelectedCount > 0));
86
+ }
87
+ return {
88
+ group,
89
+ item,
90
+ setItemChecked,
91
+ toggleGroup,
92
+ toggleItem,
93
+ };
94
+ }
95
+ function normalizeGroups(groups) {
96
+ return Object.fromEntries(Object.entries(groups).map(([id, group]) => [
97
+ id,
98
+ Array.isArray(group) ? group : group.itemIds,
99
+ ]));
100
+ }
101
+ function getItemConfig(items, id) {
102
+ const item = items[id];
103
+ if (!item) {
104
+ throw new Error(`Unknown checkbox relations item "${id}".`);
105
+ }
106
+ return item;
107
+ }
108
+ function getGroupItemIds(groups, id) {
109
+ const itemIds = groups[id];
110
+ if (!itemIds) {
111
+ throw new Error(`Unknown checkbox relations group "${id}".`);
112
+ }
113
+ return itemIds;
114
+ }
115
+ function resolveEffectiveChecked(items, groups, directChecked) {
116
+ const effectiveChecked = new Set();
117
+ let changed = true;
118
+ while (changed) {
119
+ changed = false;
120
+ for (const [id, item] of Object.entries(items)) {
121
+ if (directChecked[id] === true &&
122
+ item.disabled !== true &&
123
+ hasRequiredItems(item, effectiveChecked) &&
124
+ !effectiveChecked.has(id)) {
125
+ effectiveChecked.add(id);
126
+ changed = true;
127
+ }
128
+ }
129
+ for (const id of Array.from(effectiveChecked)) {
130
+ for (const selectedId of getSelectedItemIds(items, groups, id)) {
131
+ const selectedItem = getItemConfig(items, selectedId);
132
+ if (selectedItem.disabled !== true &&
133
+ hasRequiredItems(selectedItem, effectiveChecked) &&
134
+ !effectiveChecked.has(selectedId)) {
135
+ effectiveChecked.add(selectedId);
136
+ changed = true;
137
+ }
138
+ }
139
+ }
140
+ }
141
+ return effectiveChecked;
142
+ }
143
+ function getSelectedItemIds(items, groups, id) {
144
+ return (items[id]?.selects ?? []).flatMap((selectedId) => [
145
+ ...(items[selectedId] ? [selectedId] : []),
146
+ ...(groups[selectedId] ?? []),
147
+ ]);
148
+ }
149
+ function hasRequiredItems(item, effectiveChecked) {
150
+ return (item.requires ?? []).every((id) => effectiveChecked.has(id));
151
+ }
152
+ function getBlockedBy(items, id, effectiveChecked) {
153
+ return (getItemConfig(items, id).requires ?? []).filter((requiredId) => !effectiveChecked.has(requiredId));
154
+ }