seblify 0.2.0 → 0.2.1

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 (400) hide show
  1. package/README.md +44 -112
  2. package/dist/components/action/input/select/segment-control/SegmentControl.svelte +145 -21
  3. package/dist/components/action/input/select/segment-control/SegmentControl.svelte.d.ts +7 -2
  4. package/dist/components/action/input/select/switch/Switch.svelte +641 -38
  5. package/dist/components/action/input/select/switch/Switch.svelte.d.ts +16 -1
  6. package/dist/components/display/annotation/tag/Tag.svelte +141 -105
  7. package/dist/components/display/data-display/visual/timeline/Timeline.svelte +161 -0
  8. package/dist/components/display/data-display/visual/timeline/Timeline.svelte.d.ts +17 -0
  9. package/dist/components/display/data-display/visual/timeline/TimelineItem.svelte +470 -0
  10. package/dist/components/display/data-display/visual/timeline/TimelineItem.svelte.d.ts +15 -0
  11. package/dist/components/display/data-display/visual/timeline/context.d.ts +14 -0
  12. package/dist/components/display/data-display/visual/timeline/context.js +14 -0
  13. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte +120 -51
  14. package/dist/components/display/feedback/loading/spinner/Spinner.svelte +118 -49
  15. package/dist/components/display/media/icon/IconGlyph.svelte +8 -2
  16. package/dist/components/display/typography/code-snippet/CodeSnippet.svelte +145 -0
  17. package/dist/components/display/typography/code-snippet/CodeSnippet.svelte.d.ts +9 -0
  18. package/dist/components/display/typography/code-snippet/tokenize.d.ts +10 -0
  19. package/dist/components/display/typography/code-snippet/tokenize.js +352 -0
  20. package/dist/components/framework/layout/container/app-shell/AppShell.svelte +1 -1
  21. package/dist/components/framework/navigation/sidebar/sidebar/Sidebar.svelte +712 -0
  22. package/dist/components/framework/navigation/sidebar/sidebar/Sidebar.svelte.d.ts +18 -0
  23. package/dist/components/framework/navigation/sidebar/sidenav/Sidenav.svelte +195 -0
  24. package/dist/components/framework/navigation/sidebar/sidenav/Sidenav.svelte.d.ts +17 -0
  25. package/dist/components/framework/navigation/sidebar/sidenav/SidenavItem.svelte +89 -0
  26. package/dist/components/framework/navigation/sidebar/sidenav/SidenavItem.svelte.d.ts +19 -0
  27. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemBranch.svelte +203 -0
  28. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemBranch.svelte.d.ts +21 -0
  29. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemDivider.svelte +17 -0
  30. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemDivider.svelte.d.ts +26 -0
  31. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemLeaf.svelte +85 -0
  32. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemLeaf.svelte.d.ts +17 -0
  33. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemRow.svelte +404 -0
  34. package/dist/components/framework/navigation/sidebar/sidenav/fragments/SidenavItemRow.svelte.d.ts +30 -0
  35. package/dist/components/framework/navigation/sidebar/sidenav/sidenav.d.ts +29 -0
  36. package/dist/components/framework/navigation/sidebar/sidenav/sidenav.js +86 -0
  37. package/dist/design-system/inheritance/tokens.d.ts +7 -0
  38. package/dist/design-system/inheritance/tokens.js +39 -0
  39. package/dist/design-system/reserved-props/allowed-options.d.ts +7 -2
  40. package/dist/icons/generated/alarm-snooze.svelte +16 -0
  41. package/dist/icons/generated/alarm-snooze.svelte.d.ts +7 -0
  42. package/dist/icons/generated/alarm.svelte +16 -0
  43. package/dist/icons/generated/alarm.svelte.d.ts +7 -0
  44. package/dist/icons/generated/alert-octagon-outline.svelte +16 -0
  45. package/dist/icons/generated/alert-octagon-outline.svelte.d.ts +7 -0
  46. package/dist/icons/generated/alert-octagon.svelte +16 -0
  47. package/dist/icons/generated/alert-octagon.svelte.d.ts +7 -0
  48. package/dist/icons/generated/arrow-bottom-left-thin.svelte +16 -0
  49. package/dist/icons/generated/arrow-bottom-left-thin.svelte.d.ts +7 -0
  50. package/dist/icons/generated/arrow-bottom-right-thin.svelte +16 -0
  51. package/dist/icons/generated/arrow-bottom-right-thin.svelte.d.ts +7 -0
  52. package/dist/icons/generated/arrow-down-thin.svelte +16 -0
  53. package/dist/icons/generated/arrow-down-thin.svelte.d.ts +7 -0
  54. package/dist/icons/generated/arrow-left-thin.svelte +16 -0
  55. package/dist/icons/generated/arrow-left-thin.svelte.d.ts +7 -0
  56. package/dist/icons/generated/arrow-right-thin.svelte +16 -0
  57. package/dist/icons/generated/arrow-right-thin.svelte.d.ts +7 -0
  58. package/dist/icons/generated/arrow-top-left-thin.svelte +16 -0
  59. package/dist/icons/generated/arrow-top-left-thin.svelte.d.ts +7 -0
  60. package/dist/icons/generated/arrow-top-right-thin.svelte +16 -0
  61. package/dist/icons/generated/arrow-top-right-thin.svelte.d.ts +7 -0
  62. package/dist/icons/generated/arrow-up-thin.svelte +16 -0
  63. package/dist/icons/generated/arrow-up-thin.svelte.d.ts +7 -0
  64. package/dist/icons/generated/bell-outline.svelte +16 -0
  65. package/dist/icons/generated/bell-outline.svelte.d.ts +7 -0
  66. package/dist/icons/generated/bell.svelte +16 -0
  67. package/dist/icons/generated/bell.svelte.d.ts +7 -0
  68. package/dist/icons/generated/book-open-blank-variant-outline.svelte +16 -0
  69. package/dist/icons/generated/book-open-blank-variant-outline.svelte.d.ts +7 -0
  70. package/dist/icons/generated/book-open-blank-variant.svelte +16 -0
  71. package/dist/icons/generated/book-open-blank-variant.svelte.d.ts +7 -0
  72. package/dist/icons/generated/book-open-page-variant-outline.svelte +16 -0
  73. package/dist/icons/generated/book-open-page-variant-outline.svelte.d.ts +7 -0
  74. package/dist/icons/generated/book-open-page-variant.svelte +16 -0
  75. package/dist/icons/generated/book-open-page-variant.svelte.d.ts +7 -0
  76. package/dist/icons/generated/book-open-variant-outline.svelte +16 -0
  77. package/dist/icons/generated/book-open-variant-outline.svelte.d.ts +7 -0
  78. package/dist/icons/generated/book-open-variant.svelte +16 -0
  79. package/dist/icons/generated/book-open-variant.svelte.d.ts +7 -0
  80. package/dist/icons/generated/book-plus-outline.svelte +16 -0
  81. package/dist/icons/generated/book-plus-outline.svelte.d.ts +7 -0
  82. package/dist/icons/generated/button-cursor.svelte +16 -0
  83. package/dist/icons/generated/button-cursor.svelte.d.ts +7 -0
  84. package/dist/icons/generated/calendar-blank-outline.svelte +16 -0
  85. package/dist/icons/generated/calendar-blank-outline.svelte.d.ts +7 -0
  86. package/dist/icons/generated/calendar-blank.svelte +16 -0
  87. package/dist/icons/generated/calendar-blank.svelte.d.ts +7 -0
  88. package/dist/icons/generated/calendar-outline.svelte +16 -0
  89. package/dist/icons/generated/calendar-outline.svelte.d.ts +7 -0
  90. package/dist/icons/generated/calendar.svelte +16 -0
  91. package/dist/icons/generated/calendar.svelte.d.ts +7 -0
  92. package/dist/icons/generated/cancel.svelte +16 -0
  93. package/dist/icons/generated/cancel.svelte.d.ts +7 -0
  94. package/dist/icons/generated/certificate-outline.svelte +16 -0
  95. package/dist/icons/generated/certificate-outline.svelte.d.ts +7 -0
  96. package/dist/icons/generated/chart-box-outline.svelte +16 -0
  97. package/dist/icons/generated/chart-box-outline.svelte.d.ts +7 -0
  98. package/dist/icons/generated/chart-box.svelte +16 -0
  99. package/dist/icons/generated/chart-box.svelte.d.ts +7 -0
  100. package/dist/icons/generated/chat-outline.svelte +16 -0
  101. package/dist/icons/generated/chat-outline.svelte.d.ts +7 -0
  102. package/dist/icons/generated/chat-processing-outline.svelte +16 -0
  103. package/dist/icons/generated/chat-processing-outline.svelte.d.ts +7 -0
  104. package/dist/icons/generated/chat-processing.svelte +16 -0
  105. package/dist/icons/generated/chat-processing.svelte.d.ts +7 -0
  106. package/dist/icons/generated/chat-question-outline.svelte +16 -0
  107. package/dist/icons/generated/chat-question-outline.svelte.d.ts +7 -0
  108. package/dist/icons/generated/chat-question.svelte +16 -0
  109. package/dist/icons/generated/chat-question.svelte.d.ts +7 -0
  110. package/dist/icons/generated/chat.svelte +16 -0
  111. package/dist/icons/generated/chat.svelte.d.ts +7 -0
  112. package/dist/icons/generated/circle-large-outline.svelte +16 -0
  113. package/dist/icons/generated/circle-large-outline.svelte.d.ts +7 -0
  114. package/dist/icons/generated/circle-large.svelte +16 -0
  115. package/dist/icons/generated/circle-large.svelte.d.ts +7 -0
  116. package/dist/icons/generated/circle-medium.svelte +16 -0
  117. package/dist/icons/generated/circle-medium.svelte.d.ts +7 -0
  118. package/dist/icons/generated/circle-outline.svelte +16 -0
  119. package/dist/icons/generated/circle-outline.svelte.d.ts +7 -0
  120. package/dist/icons/generated/circle-small.svelte +16 -0
  121. package/dist/icons/generated/circle-small.svelte.d.ts +7 -0
  122. package/dist/icons/generated/circle.svelte +16 -0
  123. package/dist/icons/generated/circle.svelte.d.ts +7 -0
  124. package/dist/icons/generated/clipboard-account-outline.svelte +16 -0
  125. package/dist/icons/generated/clipboard-account-outline.svelte.d.ts +7 -0
  126. package/dist/icons/generated/clipboard-arrow-down-outline.svelte +16 -0
  127. package/dist/icons/generated/clipboard-arrow-down-outline.svelte.d.ts +7 -0
  128. package/dist/icons/generated/clipboard-arrow-up-outline.svelte +16 -0
  129. package/dist/icons/generated/clipboard-arrow-up-outline.svelte.d.ts +7 -0
  130. package/dist/icons/generated/clipboard-clock-outline.svelte +16 -0
  131. package/dist/icons/generated/clipboard-clock-outline.svelte.d.ts +7 -0
  132. package/dist/icons/generated/clipboard-edit-outline.svelte +16 -0
  133. package/dist/icons/generated/clipboard-edit-outline.svelte.d.ts +7 -0
  134. package/dist/icons/generated/clipboard-edit.svelte +16 -0
  135. package/dist/icons/generated/clipboard-edit.svelte.d.ts +7 -0
  136. package/dist/icons/generated/clipboard-flow-outline.svelte +16 -0
  137. package/dist/icons/generated/clipboard-flow-outline.svelte.d.ts +7 -0
  138. package/dist/icons/generated/clipboard-text-clock-outline.svelte +16 -0
  139. package/dist/icons/generated/clipboard-text-clock-outline.svelte.d.ts +7 -0
  140. package/dist/icons/generated/clipboard-text-clock.svelte +16 -0
  141. package/dist/icons/generated/clipboard-text-clock.svelte.d.ts +7 -0
  142. package/dist/icons/generated/clipboard-text-outline.svelte +16 -0
  143. package/dist/icons/generated/clipboard-text-outline.svelte.d.ts +7 -0
  144. package/dist/icons/generated/clipboard-text.svelte +16 -0
  145. package/dist/icons/generated/clipboard-text.svelte.d.ts +7 -0
  146. package/dist/icons/generated/clock-outline.svelte +16 -0
  147. package/dist/icons/generated/clock-outline.svelte.d.ts +7 -0
  148. package/dist/icons/generated/clock.svelte +16 -0
  149. package/dist/icons/generated/clock.svelte.d.ts +7 -0
  150. package/dist/icons/generated/cog-outline.svelte +16 -0
  151. package/dist/icons/generated/cog-outline.svelte.d.ts +7 -0
  152. package/dist/icons/generated/cog.svelte +16 -0
  153. package/dist/icons/generated/cog.svelte.d.ts +7 -0
  154. package/dist/icons/generated/copy.svelte +16 -0
  155. package/dist/icons/generated/copy.svelte.d.ts +7 -0
  156. package/dist/icons/generated/creation-outline.svelte +16 -0
  157. package/dist/icons/generated/creation-outline.svelte.d.ts +7 -0
  158. package/dist/icons/generated/creation.svelte +16 -0
  159. package/dist/icons/generated/creation.svelte.d.ts +7 -0
  160. package/dist/icons/generated/cursor-default-click-outline.svelte +16 -0
  161. package/dist/icons/generated/cursor-default-click-outline.svelte.d.ts +7 -0
  162. package/dist/icons/generated/cursor-default-click.svelte +16 -0
  163. package/dist/icons/generated/cursor-default-click.svelte.d.ts +7 -0
  164. package/dist/icons/generated/duck.svelte +16 -0
  165. package/dist/icons/generated/duck.svelte.d.ts +7 -0
  166. package/dist/icons/generated/email-open-outline.svelte +23 -0
  167. package/dist/icons/generated/email-open-outline.svelte.d.ts +7 -0
  168. package/dist/icons/generated/email-open.svelte +16 -0
  169. package/dist/icons/generated/email-open.svelte.d.ts +7 -0
  170. package/dist/icons/generated/email-outline.svelte +16 -0
  171. package/dist/icons/generated/email-outline.svelte.d.ts +7 -0
  172. package/dist/icons/generated/email.svelte +16 -0
  173. package/dist/icons/generated/email.svelte.d.ts +7 -0
  174. package/dist/icons/generated/emoticon-angry-outline.svelte +16 -0
  175. package/dist/icons/generated/emoticon-angry-outline.svelte.d.ts +7 -0
  176. package/dist/icons/generated/emoticon-angry.svelte +16 -0
  177. package/dist/icons/generated/emoticon-angry.svelte.d.ts +7 -0
  178. package/dist/icons/generated/emoticon-confused-outline.svelte +16 -0
  179. package/dist/icons/generated/emoticon-confused-outline.svelte.d.ts +7 -0
  180. package/dist/icons/generated/emoticon-confused.svelte +16 -0
  181. package/dist/icons/generated/emoticon-confused.svelte.d.ts +7 -0
  182. package/dist/icons/generated/emoticon-cool-outline.svelte +16 -0
  183. package/dist/icons/generated/emoticon-cool-outline.svelte.d.ts +7 -0
  184. package/dist/icons/generated/emoticon-cool.svelte +16 -0
  185. package/dist/icons/generated/emoticon-cool.svelte.d.ts +7 -0
  186. package/dist/icons/generated/emoticon-excited-outline.svelte +16 -0
  187. package/dist/icons/generated/emoticon-excited-outline.svelte.d.ts +7 -0
  188. package/dist/icons/generated/emoticon-excited.svelte +16 -0
  189. package/dist/icons/generated/emoticon-excited.svelte.d.ts +7 -0
  190. package/dist/icons/generated/emoticon-frown-outline.svelte +16 -0
  191. package/dist/icons/generated/emoticon-frown-outline.svelte.d.ts +7 -0
  192. package/dist/icons/generated/emoticon-frown.svelte +16 -0
  193. package/dist/icons/generated/emoticon-frown.svelte.d.ts +7 -0
  194. package/dist/icons/generated/emoticon-happy-outline.svelte +16 -0
  195. package/dist/icons/generated/emoticon-happy-outline.svelte.d.ts +7 -0
  196. package/dist/icons/generated/emoticon-happy.svelte +16 -0
  197. package/dist/icons/generated/emoticon-happy.svelte.d.ts +7 -0
  198. package/dist/icons/generated/emoticon-neutral-outline.svelte +16 -0
  199. package/dist/icons/generated/emoticon-neutral-outline.svelte.d.ts +7 -0
  200. package/dist/icons/generated/emoticon-neutral.svelte +16 -0
  201. package/dist/icons/generated/emoticon-neutral.svelte.d.ts +7 -0
  202. package/dist/icons/generated/emoticon-outline.svelte +16 -0
  203. package/dist/icons/generated/emoticon-outline.svelte.d.ts +7 -0
  204. package/dist/icons/generated/emoticon-sad-outline.svelte +16 -0
  205. package/dist/icons/generated/emoticon-sad-outline.svelte.d.ts +7 -0
  206. package/dist/icons/generated/emoticon-sad.svelte +16 -0
  207. package/dist/icons/generated/emoticon-sad.svelte.d.ts +7 -0
  208. package/dist/icons/generated/emoticon.svelte +16 -0
  209. package/dist/icons/generated/emoticon.svelte.d.ts +7 -0
  210. package/dist/icons/generated/eye-closed.svelte +16 -0
  211. package/dist/icons/generated/eye-closed.svelte.d.ts +7 -0
  212. package/dist/icons/generated/eye-off-outline.svelte +16 -0
  213. package/dist/icons/generated/eye-off-outline.svelte.d.ts +7 -0
  214. package/dist/icons/generated/eye-off.svelte +16 -0
  215. package/dist/icons/generated/eye-off.svelte.d.ts +7 -0
  216. package/dist/icons/generated/eye-outline.svelte +16 -0
  217. package/dist/icons/generated/eye-outline.svelte.d.ts +7 -0
  218. package/dist/icons/generated/eye.svelte +16 -0
  219. package/dist/icons/generated/eye.svelte.d.ts +7 -0
  220. package/dist/icons/generated/eyedropper.svelte +16 -0
  221. package/dist/icons/generated/eyedropper.svelte.d.ts +7 -0
  222. package/dist/icons/generated/file-document-outline.svelte +16 -0
  223. package/dist/icons/generated/file-document-outline.svelte.d.ts +7 -0
  224. package/dist/icons/generated/file-document.svelte +16 -0
  225. package/dist/icons/generated/file-document.svelte.d.ts +7 -0
  226. package/dist/icons/generated/file-star-outline.svelte +16 -0
  227. package/dist/icons/generated/file-star-outline.svelte.d.ts +7 -0
  228. package/dist/icons/generated/flower-head.svelte +16 -0
  229. package/dist/icons/generated/flower-head.svelte.d.ts +7 -0
  230. package/dist/icons/generated/flower-tulip.svelte +16 -0
  231. package/dist/icons/generated/flower-tulip.svelte.d.ts +7 -0
  232. package/dist/icons/generated/flower.svelte +16 -0
  233. package/dist/icons/generated/flower.svelte.d.ts +7 -0
  234. package/dist/icons/generated/folder-open-outline.svelte +16 -0
  235. package/dist/icons/generated/folder-open-outline.svelte.d.ts +7 -0
  236. package/dist/icons/generated/folder-open.svelte +16 -0
  237. package/dist/icons/generated/folder-open.svelte.d.ts +7 -0
  238. package/dist/icons/generated/folder-outline.svelte +16 -0
  239. package/dist/icons/generated/folder-outline.svelte.d.ts +7 -0
  240. package/dist/icons/generated/folder.svelte +16 -0
  241. package/dist/icons/generated/folder.svelte.d.ts +7 -0
  242. package/dist/icons/generated/format-color-fill.svelte +16 -0
  243. package/dist/icons/generated/format-color-fill.svelte.d.ts +7 -0
  244. package/dist/icons/generated/format-color-highlight.svelte +16 -0
  245. package/dist/icons/generated/format-color-highlight.svelte.d.ts +7 -0
  246. package/dist/icons/generated/format-list-bulleted-square.svelte +16 -0
  247. package/dist/icons/generated/format-list-bulleted-square.svelte.d.ts +7 -0
  248. package/dist/icons/generated/format-list-bulleted.svelte +16 -0
  249. package/dist/icons/generated/format-list-bulleted.svelte.d.ts +7 -0
  250. package/dist/icons/generated/format-quote-close-outline.svelte +16 -0
  251. package/dist/icons/generated/format-quote-close-outline.svelte.d.ts +7 -0
  252. package/dist/icons/generated/format-quote-close.svelte +16 -0
  253. package/dist/icons/generated/format-quote-close.svelte.d.ts +7 -0
  254. package/dist/icons/generated/format-quote-open-outline.svelte +16 -0
  255. package/dist/icons/generated/format-quote-open-outline.svelte.d.ts +7 -0
  256. package/dist/icons/generated/format-quote-open.svelte +16 -0
  257. package/dist/icons/generated/format-quote-open.svelte.d.ts +7 -0
  258. package/dist/icons/generated/group.svelte +16 -0
  259. package/dist/icons/generated/group.svelte.d.ts +7 -0
  260. package/dist/icons/generated/handle-grip.svelte +16 -0
  261. package/dist/icons/generated/handle-grip.svelte.d.ts +7 -0
  262. package/dist/icons/generated/image-outline.svelte +16 -0
  263. package/dist/icons/generated/image-outline.svelte.d.ts +7 -0
  264. package/dist/icons/generated/image.svelte +16 -0
  265. package/dist/icons/generated/image.svelte.d.ts +7 -0
  266. package/dist/icons/generated/index.d.ts +173 -0
  267. package/dist/icons/generated/index.js +173 -0
  268. package/dist/icons/generated/lead-pencil.svelte +16 -0
  269. package/dist/icons/generated/lead-pencil.svelte.d.ts +7 -0
  270. package/dist/icons/generated/lightbulb-outline.svelte +16 -0
  271. package/dist/icons/generated/lightbulb-outline.svelte.d.ts +7 -0
  272. package/dist/icons/generated/lightbulb.svelte +16 -0
  273. package/dist/icons/generated/lightbulb.svelte.d.ts +7 -0
  274. package/dist/icons/generated/lock-open-outline.svelte +16 -0
  275. package/dist/icons/generated/lock-open-outline.svelte.d.ts +7 -0
  276. package/dist/icons/generated/lock-open.svelte +16 -0
  277. package/dist/icons/generated/lock-open.svelte.d.ts +7 -0
  278. package/dist/icons/generated/lock-outline.svelte +16 -0
  279. package/dist/icons/generated/lock-outline.svelte.d.ts +7 -0
  280. package/dist/icons/generated/lock.svelte +16 -0
  281. package/dist/icons/generated/lock.svelte.d.ts +7 -0
  282. package/dist/icons/generated/magic-wand.svelte +16 -0
  283. package/dist/icons/generated/magic-wand.svelte.d.ts +7 -0
  284. package/dist/icons/generated/magnify.svelte +16 -0
  285. package/dist/icons/generated/magnify.svelte.d.ts +7 -0
  286. package/dist/icons/generated/manifest.js +1464 -62
  287. package/dist/icons/generated/menu-down.svelte +16 -0
  288. package/dist/icons/generated/menu-down.svelte.d.ts +7 -0
  289. package/dist/icons/generated/menu-up.svelte +16 -0
  290. package/dist/icons/generated/menu-up.svelte.d.ts +7 -0
  291. package/dist/icons/generated/minus-thick.svelte +16 -0
  292. package/dist/icons/generated/minus-thick.svelte.d.ts +7 -0
  293. package/dist/icons/generated/minus.svelte +16 -0
  294. package/dist/icons/generated/minus.svelte.d.ts +7 -0
  295. package/dist/icons/generated/page-layout-header-footer.svelte +16 -0
  296. package/dist/icons/generated/page-layout-header-footer.svelte.d.ts +7 -0
  297. package/dist/icons/generated/palette-outline.svelte +16 -0
  298. package/dist/icons/generated/palette-outline.svelte.d.ts +7 -0
  299. package/dist/icons/generated/palette.svelte +16 -0
  300. package/dist/icons/generated/palette.svelte.d.ts +7 -0
  301. package/dist/icons/generated/pause.svelte +16 -0
  302. package/dist/icons/generated/pause.svelte.d.ts +7 -0
  303. package/dist/icons/generated/pen.svelte +16 -0
  304. package/dist/icons/generated/pen.svelte.d.ts +7 -0
  305. package/dist/icons/generated/pencil-outline.svelte +16 -0
  306. package/dist/icons/generated/pencil-outline.svelte.d.ts +7 -0
  307. package/dist/icons/generated/pencil.svelte +16 -0
  308. package/dist/icons/generated/pencil.svelte.d.ts +7 -0
  309. package/dist/icons/generated/percent.svelte +16 -0
  310. package/dist/icons/generated/percent.svelte.d.ts +7 -0
  311. package/dist/icons/generated/pine-tree-box.svelte +16 -0
  312. package/dist/icons/generated/pine-tree-box.svelte.d.ts +7 -0
  313. package/dist/icons/generated/pine-tree-variant-outline.svelte +16 -0
  314. package/dist/icons/generated/pine-tree-variant-outline.svelte.d.ts +7 -0
  315. package/dist/icons/generated/play-pause.svelte +16 -0
  316. package/dist/icons/generated/play-pause.svelte.d.ts +7 -0
  317. package/dist/icons/generated/play.svelte +16 -0
  318. package/dist/icons/generated/play.svelte.d.ts +7 -0
  319. package/dist/icons/generated/plus-thick.svelte +16 -0
  320. package/dist/icons/generated/plus-thick.svelte.d.ts +7 -0
  321. package/dist/icons/generated/plus.svelte +16 -0
  322. package/dist/icons/generated/plus.svelte.d.ts +7 -0
  323. package/dist/icons/generated/reset-focus.svelte +16 -0
  324. package/dist/icons/generated/reset-focus.svelte.d.ts +7 -0
  325. package/dist/icons/generated/reset.svelte +16 -0
  326. package/dist/icons/generated/reset.svelte.d.ts +7 -0
  327. package/dist/icons/generated/ruler-square.svelte +16 -0
  328. package/dist/icons/generated/ruler-square.svelte.d.ts +7 -0
  329. package/dist/icons/generated/ruler.svelte +16 -0
  330. package/dist/icons/generated/ruler.svelte.d.ts +7 -0
  331. package/dist/icons/generated/star-outline.svelte +16 -0
  332. package/dist/icons/generated/star-outline.svelte.d.ts +7 -0
  333. package/dist/icons/generated/star.svelte +16 -0
  334. package/dist/icons/generated/star.svelte.d.ts +7 -0
  335. package/dist/icons/generated/table-border.svelte +16 -0
  336. package/dist/icons/generated/table-border.svelte.d.ts +7 -0
  337. package/dist/icons/generated/tag-multiple-outline.svelte +16 -0
  338. package/dist/icons/generated/tag-multiple-outline.svelte.d.ts +7 -0
  339. package/dist/icons/generated/tag-multiple.svelte +16 -0
  340. package/dist/icons/generated/tag-multiple.svelte.d.ts +7 -0
  341. package/dist/icons/generated/tag-outline.svelte +16 -0
  342. package/dist/icons/generated/tag-outline.svelte.d.ts +7 -0
  343. package/dist/icons/generated/tag.svelte +16 -0
  344. package/dist/icons/generated/tag.svelte.d.ts +7 -0
  345. package/dist/icons/generated/text-box-outline.svelte +16 -0
  346. package/dist/icons/generated/text-box-outline.svelte.d.ts +7 -0
  347. package/dist/icons/generated/text-box-plus-outline.svelte +16 -0
  348. package/dist/icons/generated/text-box-plus-outline.svelte.d.ts +7 -0
  349. package/dist/icons/generated/text-box-plus.svelte +16 -0
  350. package/dist/icons/generated/text-box-plus.svelte.d.ts +7 -0
  351. package/dist/icons/generated/text-box.svelte +16 -0
  352. package/dist/icons/generated/text-box.svelte.d.ts +7 -0
  353. package/dist/icons/generated/thumb-down-outline.svelte +16 -0
  354. package/dist/icons/generated/thumb-down-outline.svelte.d.ts +7 -0
  355. package/dist/icons/generated/thumb-down.svelte +16 -0
  356. package/dist/icons/generated/thumb-down.svelte.d.ts +7 -0
  357. package/dist/icons/generated/thumb-up-outline.svelte +16 -0
  358. package/dist/icons/generated/thumb-up-outline.svelte.d.ts +7 -0
  359. package/dist/icons/generated/thumb-up.svelte +16 -0
  360. package/dist/icons/generated/thumb-up.svelte.d.ts +7 -0
  361. package/dist/icons/generated/tilde.svelte +16 -0
  362. package/dist/icons/generated/tilde.svelte.d.ts +7 -0
  363. package/dist/icons/generated/tooltip-image-outline.svelte +16 -0
  364. package/dist/icons/generated/tooltip-image-outline.svelte.d.ts +7 -0
  365. package/dist/icons/generated/tooltip-question-outline.svelte +16 -0
  366. package/dist/icons/generated/tooltip-question-outline.svelte.d.ts +7 -0
  367. package/dist/icons/generated/tooltip-question.svelte +16 -0
  368. package/dist/icons/generated/tooltip-question.svelte.d.ts +7 -0
  369. package/dist/icons/generated/tooltip-text-outline.svelte +16 -0
  370. package/dist/icons/generated/tooltip-text-outline.svelte.d.ts +7 -0
  371. package/dist/icons/generated/tooltip-text.svelte +16 -0
  372. package/dist/icons/generated/tooltip-text.svelte.d.ts +7 -0
  373. package/dist/icons/generated/triangle-down-outline.svelte +16 -0
  374. package/dist/icons/generated/triangle-down-outline.svelte.d.ts +7 -0
  375. package/dist/icons/generated/triangle-down.svelte +16 -0
  376. package/dist/icons/generated/triangle-down.svelte.d.ts +7 -0
  377. package/dist/icons/generated/triangle-outline.svelte +16 -0
  378. package/dist/icons/generated/triangle-outline.svelte.d.ts +7 -0
  379. package/dist/icons/generated/triangle-small-down.svelte +16 -0
  380. package/dist/icons/generated/triangle-small-down.svelte.d.ts +7 -0
  381. package/dist/icons/generated/triangle-small.svelte +16 -0
  382. package/dist/icons/generated/triangle-small.svelte.d.ts +7 -0
  383. package/dist/icons/generated/triangle.svelte +16 -0
  384. package/dist/icons/generated/triangle.svelte.d.ts +7 -0
  385. package/dist/icons/generated/view-grid-outline.svelte +16 -0
  386. package/dist/icons/generated/view-grid-outline.svelte.d.ts +7 -0
  387. package/dist/icons/generated/view-grid.svelte +16 -0
  388. package/dist/icons/generated/view-grid.svelte.d.ts +7 -0
  389. package/dist/index.d.ts +7 -3
  390. package/dist/index.js +6 -2
  391. package/dist/styles/tone-context.css +94 -0
  392. package/package.json +2 -1
  393. package/dist/components/framework/layout/container/sidebar/Sidebar.svelte +0 -134
  394. package/dist/components/framework/layout/container/sidebar/Sidebar.svelte.d.ts +0 -9
  395. package/dist/components/framework/navigation/sidenav/Sidenav.svelte +0 -86
  396. package/dist/components/framework/navigation/sidenav/Sidenav.svelte.d.ts +0 -8
  397. package/dist/components/framework/navigation/sidenav/SidenavTree.svelte +0 -265
  398. package/dist/components/framework/navigation/sidenav/SidenavTree.svelte.d.ts +0 -14
  399. package/dist/components/framework/navigation/sidenav/sidenav.d.ts +0 -6
  400. package/dist/components/framework/navigation/sidenav/sidenav.js +0 -1
@@ -1,29 +1,171 @@
1
1
  <script lang="ts">
2
- import type { SeblifyProps } from 'seblify';
2
+ import type { SeblifyProps, CustomCssSize } from 'seblify';
3
+ import { CircleOutlineIcon, HandleGripIcon, MinusIcon } from 'seblify/icons';
4
+
5
+ type SwitchRadius = 'none' | 'sm' | 'md' | 'lg' | 'full' | CustomCssSize;
6
+ type SwitchAnimation = 'smooth' | 'snappy' | 'bouncy';
7
+ type SwitchShape = 'pill' | 'floating' | 'line' | 'flat' | 'long';
8
+ type SwitchSize =
9
+ | 'xxs'
10
+ | 'xs'
11
+ | 'sm'
12
+ | 'md'
13
+ | 'lg'
14
+ | 'xl'
15
+ | 'xxl'
16
+ | CustomCssSize;
17
+ type SwitchTone =
18
+ | 'neutral'
19
+ | 'primary'
20
+ | 'success'
21
+ | 'danger'
22
+ | 'warning'
23
+ | 'info'
24
+ | 'inverse';
25
+ type SwitchVariant = 'solid' | 'soft' | 'tint';
3
26
 
4
27
  type Props = SeblifyProps<{
28
+ animation?: SwitchAnimation;
5
29
  checked?: boolean;
30
+ description?: string;
6
31
  disabled?: boolean;
7
32
  label?: string;
8
- description?: string;
9
33
  name?: string;
34
+ radius?: SwitchRadius;
35
+ shape?: SwitchShape;
36
+ showGripIcon?: boolean;
37
+ showTrackIcon?: boolean;
38
+ size?: SwitchSize;
39
+ tone?: SwitchTone;
10
40
  value?: string;
41
+ variant?: SwitchVariant;
11
42
  }>;
12
43
 
44
+ const SWITCH_SIZE_MAP: Record<Exclude<SwitchSize, CustomCssSize>, string> = {
45
+ xxs: '1rem',
46
+ xs: '1.125rem',
47
+ sm: '1.25rem',
48
+ md: '1.5rem',
49
+ lg: '1.75rem',
50
+ xl: '2rem',
51
+ xxl: '2.25rem',
52
+ };
53
+
54
+ const SWITCH_RADIUS_MAP: Record<
55
+ Exclude<SwitchRadius, CustomCssSize>,
56
+ string
57
+ > = {
58
+ none: '0',
59
+ sm: 'calc(var(--switch-size) * 0.1666667)',
60
+ md: 'calc(var(--switch-size) * 0.25)',
61
+ lg: 'calc(var(--switch-size) * 0.3333333)',
62
+ full: '999px',
63
+ };
64
+
65
+ function resolveSizeValue(size: SwitchSize): string {
66
+ if (typeof size === 'number') {
67
+ return `${size}px`;
68
+ }
69
+
70
+ return SWITCH_SIZE_MAP[size as keyof typeof SWITCH_SIZE_MAP] ?? size;
71
+ }
72
+
73
+ function resolveRadiusValue(radius: SwitchRadius): string {
74
+ if (typeof radius === 'number') {
75
+ return `${radius}px`;
76
+ }
77
+
78
+ return (
79
+ SWITCH_RADIUS_MAP[radius as keyof typeof SWITCH_RADIUS_MAP] ?? radius
80
+ );
81
+ }
82
+
13
83
  let {
14
84
  checked = $bindable(false),
85
+ animation = 'smooth',
86
+ description,
15
87
  disabled = false,
16
88
  label,
17
- description,
18
89
  name,
90
+ radius = 'full',
91
+ shape = 'pill',
92
+ showGripIcon = false,
93
+ showTrackIcon = false,
94
+ size = 'md',
95
+ tone,
19
96
  value,
97
+ variant = 'solid',
20
98
  }: Props = $props();
99
+ let bouncyMotion: 'none' | 'to-on' | 'to-off' = $state('none');
100
+ let previousChecked = checked;
101
+ let hasMounted = false;
102
+
103
+ const sizeValue = $derived(resolveSizeValue(size));
104
+ const radiusValue = $derived(resolveRadiusValue(radius));
105
+ const showThumbGrip = $derived(
106
+ showGripIcon &&
107
+ (shape === 'pill' || shape === 'floating' || shape === 'line'),
108
+ );
109
+ const showTrackIcons = $derived(showTrackIcon && shape !== 'line');
110
+ const gripIconSize = $derived(
111
+ shape === 'floating' || shape === 'line' ? '1em' : '0.75em',
112
+ );
113
+ const onTrackIconSize = $derived(shape === 'pill' ? '0.95em' : '0.75em');
114
+ const offTrackIconSize = $derived(shape === 'pill' ? '0.9em' : '0.7em');
115
+
116
+ $effect(() => {
117
+ const currentChecked = checked;
118
+
119
+ if (!hasMounted) {
120
+ hasMounted = true;
121
+ previousChecked = currentChecked;
122
+ return;
123
+ }
124
+
125
+ if (currentChecked !== previousChecked) {
126
+ bouncyMotion =
127
+ animation === 'bouncy' ? (currentChecked ? 'to-on' : 'to-off') : 'none';
128
+ previousChecked = currentChecked;
129
+ }
130
+ });
131
+
132
+ function handleThumbAnimationEnd() {
133
+ if (animation === 'bouncy') {
134
+ bouncyMotion = 'none';
135
+ }
136
+ }
21
137
  </script>
22
138
 
23
- <label class:disabled class="switch">
139
+ <label
140
+ class:disabled
141
+ class="switch seblify-tone-context"
142
+ data-animation={animation}
143
+ data-bouncy-motion={bouncyMotion}
144
+ data-seblify-tone={tone ?? 'inherit'}
145
+ data-shape={shape}
146
+ data-variant={variant}
147
+ style:--switch-size={sizeValue}
148
+ style:--switch-radius={radiusValue}
149
+ >
24
150
  <input bind:checked {disabled} {name} role="switch" type="checkbox" {value} />
25
151
  <span class="control" aria-hidden="true">
26
- <span class="thumb"></span>
152
+ {#if showTrackIcons}
153
+ <span class="track-icons">
154
+ <span class="track-icon track-icon--on">
155
+ <MinusIcon size={onTrackIconSize} />
156
+ </span>
157
+ <span class="track-icon track-icon--off">
158
+ <CircleOutlineIcon size={offTrackIconSize} />
159
+ </span>
160
+ </span>
161
+ {/if}
162
+ <span class="thumb" onanimationend={handleThumbAnimationEnd}>
163
+ {#if showThumbGrip}
164
+ <span class="thumb-grip">
165
+ <HandleGripIcon size={gripIconSize} />
166
+ </span>
167
+ {/if}
168
+ </span>
27
169
  </span>
28
170
  <span class="content">
29
171
  {#if label}
@@ -35,17 +177,281 @@
35
177
  </span>
36
178
  </label>
37
179
 
38
- <style>
39
- .switch {
180
+ <style>:where(.seblify-tone-context) {
181
+ --seblify-tone-fill: var(--seblify-color-fill-neutral, #516176);
182
+ --seblify-tone-fill-text: var(--seblify-color-fill-neutral-text, #ffffff);
183
+ --seblify-tone-surface: var(--seblify-color-surface-muted, #d9e0e8);
184
+ --seblify-tone-text: var(--seblify-color-text-muted, #516176);
185
+ --seblify-tone-border: var(--seblify-color-border, #c8d2df);
186
+ }
187
+
188
+ :where(.seblify-tone-context[data-seblify-tone='inherit']) {
189
+ --seblify-tone-fill: var(
190
+ --seblify-current-tone-fill,
191
+ var(--seblify-color-fill-neutral, #516176)
192
+ );
193
+ --seblify-tone-fill-text: var(
194
+ --seblify-current-tone-fill-text,
195
+ var(--seblify-color-fill-neutral-text, #ffffff)
196
+ );
197
+ --seblify-tone-surface: var(
198
+ --seblify-current-tone-surface,
199
+ var(--seblify-color-surface-muted, #d9e0e8)
200
+ );
201
+ --seblify-tone-text: var(
202
+ --seblify-current-tone-text,
203
+ var(--seblify-color-text-muted, #516176)
204
+ );
205
+ --seblify-tone-border: var(
206
+ --seblify-current-tone-border,
207
+ var(--seblify-color-border, #c8d2df)
208
+ );
209
+ }
210
+
211
+ :where(.seblify-tone-context[data-seblify-tone='neutral']) {
212
+ --seblify-tone-fill: var(--seblify-color-fill-neutral, #516176);
213
+ --seblify-tone-fill-text: var(--seblify-color-fill-neutral-text, #ffffff);
214
+ --seblify-tone-surface: var(--seblify-color-surface-muted, #d9e0e8);
215
+ --seblify-tone-text: var(--seblify-color-text-muted, #516176);
216
+ --seblify-tone-border: var(--seblify-color-border, #c8d2df);
217
+ }
218
+
219
+ :where(.seblify-tone-context[data-seblify-tone='primary']) {
220
+ --seblify-tone-fill: var(--seblify-color-fill-primary, #146a6f);
221
+ --seblify-tone-fill-text: var(--seblify-color-fill-primary-text, #ffffff);
222
+ --seblify-tone-surface: var(--seblify-color-surface-accent, #f7fbfb);
223
+ --seblify-tone-text: var(--seblify-color-fill-primary, #146a6f);
224
+ --seblify-tone-border: var(--seblify-color-border-accent, #9ab7ba);
225
+ }
226
+
227
+ :where(.seblify-tone-context[data-seblify-tone='success']) {
228
+ --seblify-tone-fill: var(--seblify-color-fill-success, #1f7a3f);
229
+ --seblify-tone-fill-text: var(--seblify-color-fill-success-text, #ffffff);
230
+ --seblify-tone-surface: var(--seblify-color-success-surface, #e8f8ee);
231
+ --seblify-tone-text: var(--seblify-color-success-text, #143d25);
232
+ --seblify-tone-border: var(--seblify-color-success-border, #b8ddc7);
233
+ }
234
+
235
+ :where(.seblify-tone-context[data-seblify-tone='danger']) {
236
+ --seblify-tone-fill: var(--seblify-color-fill-danger, #c93434);
237
+ --seblify-tone-fill-text: var(--seblify-color-fill-danger-text, #ffffff);
238
+ --seblify-tone-surface: var(--seblify-color-error-surface, #fff0f0);
239
+ --seblify-tone-text: var(--seblify-color-error-text, #5a1717);
240
+ --seblify-tone-border: var(--seblify-color-error-border, #efb6b6);
241
+ }
242
+
243
+ :where(.seblify-tone-context[data-seblify-tone='warning']) {
244
+ --seblify-tone-fill: var(--seblify-color-fill-warning, #8a5a00);
245
+ --seblify-tone-fill-text: var(--seblify-color-fill-warning-text, #ffffff);
246
+ --seblify-tone-surface: var(--seblify-color-warning-surface, #fff6d8);
247
+ --seblify-tone-text: var(--seblify-color-warning-text, #4d3900);
248
+ --seblify-tone-border: var(--seblify-color-warning-border, #e8d28f);
249
+ }
250
+
251
+ :where(.seblify-tone-context[data-seblify-tone='info']) {
252
+ --seblify-tone-fill: var(--seblify-color-fill-info, #1f6fb2);
253
+ --seblify-tone-fill-text: var(--seblify-color-fill-info-text, #ffffff);
254
+ --seblify-tone-surface: var(--seblify-color-info-surface, #eaf3ff);
255
+ --seblify-tone-text: var(--seblify-color-info-text, #102f55);
256
+ --seblify-tone-border: var(--seblify-color-info-border, #bfd1ea);
257
+ }
258
+
259
+ :where(.seblify-tone-context[data-seblify-tone='inverse']) {
260
+ --seblify-tone-fill: var(--seblify-color-fill-inverse, #172033);
261
+ --seblify-tone-fill-text: var(--seblify-color-fill-inverse-text, #ffffff);
262
+ --seblify-tone-surface: var(--seblify-color-surface-inverse-hover, #263043);
263
+ --seblify-tone-text: var(--seblify-color-fill-inverse-text, #ffffff);
264
+ --seblify-tone-border: var(--seblify-color-border-inverse, #263043);
265
+ }
266
+
267
+ :where(.seblify-tone-publisher) {
268
+ --seblify-current-tone-fill: var(--seblify-tone-fill);
269
+ --seblify-current-tone-fill-text: var(--seblify-tone-fill-text);
270
+ --seblify-current-tone-surface: var(--seblify-tone-surface);
271
+ --seblify-current-tone-text: var(--seblify-tone-text);
272
+ --seblify-current-tone-border: var(--seblify-tone-border);
273
+ }
274
+
275
+ .switch {
276
+ --switch-track-width: calc(var(--switch-size) * 1.75);
277
+ --switch-track-height: var(--switch-size);
278
+ --switch-border-width: 1px;
279
+ --switch-padding: max(1px, calc(var(--switch-size) * 0.0833333));
280
+ --switch-radius-inset: calc(
281
+ var(--switch-border-width) + var(--switch-padding)
282
+ );
283
+ --switch-thumb-size: calc(
284
+ var(--switch-track-height) - 2 * var(--switch-radius-inset)
285
+ );
286
+ --switch-thumb-width: var(--switch-thumb-size);
287
+ --switch-thumb-travel: calc(
288
+ var(--switch-track-width) - var(--switch-thumb-width) - 2 *
289
+ var(--switch-radius-inset)
290
+ );
291
+ --switch-thumb-position-off: 0px;
292
+ --switch-thumb-position-on: var(--switch-thumb-travel);
293
+ --switch-thumb-radius: max(
294
+ 0px,
295
+ min(
296
+ max(1px, calc(var(--switch-radius) - var(--switch-radius-inset))),
297
+ var(--switch-radius)
298
+ )
299
+ );
300
+ --switch-solid-border: var(--seblify-tone-fill);
301
+ --switch-solid-surface: var(--seblify-tone-fill);
302
+ --switch-solid-thumb: color-mix(
303
+ in srgb,
304
+ var(--seblify-tone-fill) 8%,
305
+ var(--seblify-color-surface, #ffffff)
306
+ );
307
+ --switch-soft-border: color-mix(
308
+ in srgb,
309
+ var(--seblify-tone-fill) 22%,
310
+ var(--seblify-color-border, #c8d2df)
311
+ );
312
+ --switch-soft-surface: color-mix(
313
+ in srgb,
314
+ var(--seblify-tone-fill) 14%,
315
+ var(--seblify-color-surface, #ffffff)
316
+ );
317
+ --switch-soft-thumb: color-mix(
318
+ in srgb,
319
+ var(--seblify-tone-fill) 78%,
320
+ var(--seblify-color-surface, #ffffff)
321
+ );
322
+ --switch-off-border: var(--seblify-color-border-strong, #aab7c5);
323
+ --switch-off-surface: var(--seblify-color-surface-muted, #d9e0e8);
324
+ --switch-off-thumb: var(--seblify-color-surface, #ffffff);
325
+ --switch-thumb-shadow: var(
326
+ --seblify-shadow-control,
327
+ 0 1px 3px rgb(16 24 40 / 24%)
328
+ );
329
+ --switch-on-border: var(--switch-solid-border);
330
+ --switch-on-surface: var(--switch-solid-surface);
331
+ --switch-on-thumb-base: var(--switch-solid-thumb);
332
+ --switch-on-thumb: var(--switch-on-thumb-base);
333
+ --switch-track-icon-offset: calc(
334
+ var(--switch-radius-inset) + var(--switch-thumb-size) * 0.18
335
+ );
336
+ --switch-bouncy-runup: max(1px, calc(var(--switch-thumb-size) * 0.1));
337
+ --switch-bouncy-overshoot: max(1px, calc(var(--switch-thumb-size) * 0.07));
338
+ --switch-thumb-motion-duration: 160ms;
339
+ --switch-thumb-motion-timing: cubic-bezier(0.32, 0.72, 0, 1);
340
+ --switch-state-duration: 160ms;
341
+ --switch-state-timing: ease;
342
+ --switch-track-icon-on-color: color-mix(
343
+ in srgb,
344
+ var(--seblify-tone-fill-text, #ffffff) 48%,
345
+ transparent
346
+ );
347
+ --switch-track-icon-off-color: color-mix(
348
+ in srgb,
349
+ var(--seblify-color-text-muted, #516176) 42%,
350
+ transparent
351
+ );
352
+ --switch-focus-ring-color: color-mix(
353
+ in srgb,
354
+ var(--seblify-tone-fill) 56%,
355
+ transparent
356
+ );
357
+
40
358
  position: relative;
41
359
  display: inline-flex;
42
- gap: 12px;
360
+ gap: max(0.5rem, calc(var(--switch-size) * 0.5));
43
361
  align-items: flex-start;
44
362
  color: var(--seblify-color-text, #172033);
45
363
  cursor: pointer;
46
364
  }
47
365
 
48
- input {
366
+ .switch[data-seblify-tone='inherit'] {
367
+ --seblify-tone-fill: var(
368
+ --seblify-current-tone-fill,
369
+ var(--seblify-color-fill-neutral, #5b6675)
370
+ );
371
+ --seblify-tone-fill-text: var(
372
+ --seblify-current-tone-fill-text,
373
+ var(--seblify-color-fill-neutral-text, #ffffff)
374
+ );
375
+ --seblify-tone-surface: var(
376
+ --seblify-current-tone-surface,
377
+ var(--seblify-color-surface-neutral, #f4f6f8)
378
+ );
379
+ --seblify-tone-text: var(
380
+ --seblify-current-tone-text,
381
+ var(--seblify-color-fill-neutral, #5b6675)
382
+ );
383
+ --seblify-tone-border: var(
384
+ --seblify-current-tone-border,
385
+ var(--seblify-color-border-neutral, #c5ccd6)
386
+ );
387
+ }
388
+
389
+ .switch[data-animation='smooth'] {
390
+ --switch-thumb-motion-duration: 190ms;
391
+ --switch-thumb-motion-timing: cubic-bezier(0.32, 0.72, 0, 1);
392
+ --switch-state-duration: 190ms;
393
+ --switch-state-timing: ease;
394
+ }
395
+
396
+ .switch[data-animation='snappy'] {
397
+ --switch-thumb-motion-duration: 90ms;
398
+ --switch-thumb-motion-timing: cubic-bezier(0.12, 0.92, 0.18, 1);
399
+ --switch-state-duration: 90ms;
400
+ --switch-state-timing: linear;
401
+ }
402
+
403
+ .switch[data-animation='bouncy'] {
404
+ --switch-thumb-motion-duration: 380ms;
405
+ --switch-thumb-motion-timing: cubic-bezier(0.24, 1.18, 0.4, 1);
406
+ --switch-state-duration: 220ms;
407
+ --switch-state-timing: ease;
408
+ }
409
+
410
+ @keyframes switch-bouncy-to-on {
411
+ 0% {
412
+ transform: translateX(var(--switch-thumb-position-off));
413
+ }
414
+
415
+ 20% {
416
+ transform: translateX(
417
+ calc(var(--switch-thumb-position-off) - var(--switch-bouncy-runup))
418
+ );
419
+ }
420
+
421
+ 76% {
422
+ transform: translateX(
423
+ calc(var(--switch-thumb-position-on) + var(--switch-bouncy-overshoot))
424
+ );
425
+ }
426
+
427
+ 100% {
428
+ transform: translateX(var(--switch-thumb-position-on));
429
+ }
430
+ }
431
+
432
+ @keyframes switch-bouncy-to-off {
433
+ 0% {
434
+ transform: translateX(var(--switch-thumb-position-on));
435
+ }
436
+
437
+ 20% {
438
+ transform: translateX(
439
+ calc(var(--switch-thumb-position-on) + var(--switch-bouncy-runup))
440
+ );
441
+ }
442
+
443
+ 76% {
444
+ transform: translateX(
445
+ calc(var(--switch-thumb-position-off) - var(--switch-bouncy-overshoot))
446
+ );
447
+ }
448
+
449
+ 100% {
450
+ transform: translateX(var(--switch-thumb-position-off));
451
+ }
452
+ }
453
+
454
+ input {
49
455
  position: absolute;
50
456
  width: 1px;
51
457
  height: 1px;
@@ -56,66 +462,263 @@
56
462
  white-space: nowrap;
57
463
  }
58
464
 
59
- .control {
465
+ .control {
466
+ position: relative;
60
467
  display: inline-flex;
61
- width: 42px;
62
- height: 24px;
468
+ width: var(--switch-track-width);
469
+ height: var(--switch-track-height);
63
470
  flex: 0 0 auto;
64
471
  align-items: center;
65
- border: 1px solid var(--seblify-color-border-strong, #aab7c5);
66
- border-radius: 999px;
67
- background: var(--seblify-color-surface-muted, #d9e0e8);
68
- padding: 2px;
472
+ border: var(--switch-border-width) solid var(--switch-off-border);
473
+ border-radius: var(--switch-radius);
474
+ background: var(--switch-off-surface);
475
+ padding: var(--switch-padding);
476
+ box-sizing: border-box;
477
+ transition:
478
+ border-color var(--switch-state-duration) var(--switch-state-timing),
479
+ background var(--switch-state-duration) var(--switch-state-timing);
480
+ }
481
+
482
+ .track-icons {
483
+ position: absolute;
484
+ inset: 0;
485
+ pointer-events: none;
486
+ }
487
+
488
+ .track-icon {
489
+ position: absolute;
490
+ top: 50%;
491
+ display: inline-flex;
492
+ align-items: center;
493
+ justify-content: center;
494
+ line-height: 0;
495
+ transform: translateY(-50%);
496
+ transition: opacity var(--switch-state-duration) var(--switch-state-timing);
497
+ }
498
+
499
+ .track-icon--on {
500
+ left: var(--switch-track-icon-offset);
501
+ color: var(--switch-track-icon-on-color);
502
+ opacity: 0;
503
+ transform: translateY(-50%) rotate(90deg);
504
+ }
505
+
506
+ .track-icon--off {
507
+ right: var(--switch-track-icon-offset);
508
+ color: var(--switch-track-icon-off-color);
509
+ opacity: 1;
510
+ }
511
+
512
+ .thumb {
513
+ display: inline-flex;
514
+ width: var(--switch-thumb-width);
515
+ height: var(--switch-thumb-size);
516
+ align-items: center;
517
+ justify-content: center;
518
+ border-radius: var(--switch-thumb-radius);
519
+ background: var(--switch-off-thumb);
520
+ box-sizing: border-box;
521
+ box-shadow: var(--switch-thumb-shadow);
522
+ color: color-mix(
523
+ in srgb,
524
+ var(--seblify-color-text-muted, #516176) 36%,
525
+ transparent
526
+ );
527
+ transform: translateX(var(--switch-thumb-position-off));
69
528
  transition:
70
- border-color 160ms ease,
71
- background 160ms ease;
529
+ transform var(--switch-thumb-motion-duration)
530
+ var(--switch-thumb-motion-timing),
531
+ background var(--switch-state-duration) var(--switch-state-timing),
532
+ box-shadow var(--switch-state-duration) var(--switch-state-timing),
533
+ color var(--switch-state-duration) var(--switch-state-timing);
534
+ }
535
+
536
+ .switch[data-shape='floating'],
537
+ .switch[data-shape='line'] {
538
+ --switch-track-height: calc(var(--switch-size) * 0.6666667);
539
+ --switch-padding: 0px;
540
+ --switch-radius-inset: var(--switch-border-width);
541
+ --switch-thumb-size: var(--switch-size);
542
+ --switch-thumb-width: var(--switch-thumb-size);
543
+ --switch-thumb-travel: calc(
544
+ var(--switch-track-width) - var(--switch-thumb-width)
545
+ );
546
+ --switch-thumb-position-off: calc(-2 * var(--switch-border-width));
547
+ --switch-thumb-position-on: var(--switch-thumb-travel);
548
+ --switch-thumb-radius: max(
549
+ 1px,
550
+ min(var(--switch-radius), calc(var(--switch-thumb-size) / 2))
551
+ );
552
+ --switch-off-thumb: var(--switch-on-thumb-base);
553
+ --switch-on-thumb: color-mix(
554
+ in srgb,
555
+ var(--switch-on-thumb-base) 72%,
556
+ white
557
+ );
558
+ --switch-thumb-shadow:
559
+ 0 4px 10px rgb(16 24 40 / 18%), 0 1px 3px rgb(16 24 40 / 18%);
560
+ }
561
+
562
+ .switch[data-shape='pill'] {
563
+ --switch-track-icon-offset: calc(
564
+ var(--switch-radius-inset) + var(--switch-thumb-size) * 0.08
565
+ );
566
+ }
567
+
568
+ .switch[data-shape='line'] {
569
+ --switch-track-height: calc(var(--switch-size) * 0.3333333);
570
+ }
571
+
572
+ .switch[data-shape='floating'] .track-icon--on,
573
+ .switch[data-shape='floating'] .track-icon--off {
574
+ top: 50%;
575
+ }
576
+
577
+ .switch[data-shape='flat'],
578
+ .switch[data-shape='long'] {
579
+ --switch-track-height: calc(var(--switch-size) * 0.75);
580
+ --switch-padding: max(1px, calc(var(--switch-size) * 0.0833333));
581
+ --switch-radius-inset: calc(
582
+ var(--switch-border-width) + var(--switch-padding)
583
+ );
584
+ --switch-thumb-size: calc(
585
+ var(--switch-track-height) - 2 * var(--switch-radius-inset)
586
+ );
587
+ --switch-thumb-width: calc(var(--switch-thumb-size) * 1.55);
588
+ --switch-thumb-travel: calc(
589
+ var(--switch-track-width) - var(--switch-thumb-width) - 2 *
590
+ var(--switch-radius-inset)
591
+ );
592
+ --switch-thumb-radius: 999px;
593
+ }
594
+
595
+ .switch[data-shape='long'] {
596
+ --switch-thumb-width: var(--switch-thumb-size);
597
+ }
598
+
599
+ input:checked + .control {
600
+ border-color: var(--switch-on-border);
601
+ background: var(--switch-on-surface);
602
+ }
603
+
604
+ input:checked + .control .thumb {
605
+ background: var(--switch-on-thumb);
606
+ }
607
+
608
+ input:checked + .control .track-icon--on {
609
+ opacity: 1;
610
+ }
611
+
612
+ input:checked + .control .track-icon--off {
613
+ opacity: 0;
614
+ }
615
+
616
+ input:checked + .control .thumb {
617
+ color: color-mix(
618
+ in srgb,
619
+ var(--seblify-color-text, #172033) 32%,
620
+ transparent
621
+ );
622
+ }
623
+
624
+ input:checked + .control .thumb {
625
+ transform: translateX(var(--switch-thumb-position-on));
72
626
  }
73
627
 
74
- .thumb {
75
- width: 18px;
76
- height: 18px;
77
- border-radius: 999px;
78
- background: var(--seblify-color-surface, #ffffff);
79
- box-shadow: var(--seblify-shadow-control, 0 1px 3px rgb(16 24 40 / 24%));
80
- transition: transform 160ms ease;
628
+ .thumb-grip {
629
+ display: inline-flex;
630
+ width: 100%;
631
+ height: 100%;
632
+ align-items: center;
633
+ justify-content: center;
634
+ line-height: 0;
635
+ }
636
+
637
+ .switch[data-shape='floating'] .control,
638
+ .switch[data-shape='line'] .control {
639
+ overflow: visible;
81
640
  }
82
641
 
83
- input:checked + .control {
84
- border-color: var(--seblify-color-fill-accent, #146a6f);
85
- background: var(--seblify-color-fill-accent, #146a6f);
642
+ .switch[data-animation='bouncy'][data-bouncy-motion='to-on'] .thumb {
643
+ animation: switch-bouncy-to-on var(--switch-thumb-motion-duration)
644
+ var(--switch-thumb-motion-timing);
86
645
  }
87
646
 
88
- input:checked + .control .thumb {
89
- background: var(--seblify-color-fill-accent-text, #ffffff);
647
+ .switch[data-animation='bouncy'][data-bouncy-motion='to-off'] .thumb {
648
+ animation: switch-bouncy-to-off var(--switch-thumb-motion-duration)
649
+ var(--switch-thumb-motion-timing);
90
650
  }
91
651
 
92
- input:checked + .control .thumb {
93
- transform: translateX(18px);
652
+ .switch[data-variant='soft'] {
653
+ --switch-on-border: var(--switch-soft-border);
654
+ --switch-on-surface: var(--switch-soft-surface);
655
+ --switch-on-thumb-base: var(--switch-soft-thumb);
656
+ --switch-on-thumb: var(--switch-on-thumb-base);
657
+ }
658
+
659
+ .switch[data-variant='tint'] {
660
+ --switch-off-border: var(--switch-soft-border);
661
+ --switch-off-surface: var(--switch-soft-surface);
662
+ --switch-off-thumb: var(--switch-soft-thumb);
663
+ }
664
+
665
+ :global([data-theme='dark']) .switch {
666
+ --switch-solid-thumb: color-mix(
667
+ in srgb,
668
+ var(--seblify-tone-fill) 18%,
669
+ var(--seblify-color-surface, #ffffff)
670
+ );
671
+ --switch-soft-thumb: var(--seblify-tone-fill);
672
+ }
673
+
674
+ :global([data-theme='dark']) .switch[data-shape='floating'],
675
+ :global([data-theme='dark']) .switch[data-shape='line'] {
676
+ --switch-off-thumb: var(--seblify-color-surface-hover, #253241);
677
+ --switch-thumb-shadow:
678
+ 0 6px 14px rgb(0 0 0 / 34%), 0 2px 5px rgb(0 0 0 / 28%);
679
+ }
680
+
681
+ @media (prefers-color-scheme: dark) {
682
+ :global(:root:not([data-theme])) .switch {
683
+ --switch-solid-thumb: color-mix(
684
+ in srgb,
685
+ var(--seblify-tone-fill) 18%,
686
+ var(--seblify-color-surface, #ffffff)
687
+ );
688
+ --switch-soft-thumb: var(--seblify-tone-fill);
689
+ }
690
+
691
+ :global(:root:not([data-theme])) .switch[data-shape='floating'],
692
+ :global(:root:not([data-theme])) .switch[data-shape='line'] {
693
+ --switch-off-thumb: var(--seblify-color-surface-hover, #253241);
694
+ --switch-thumb-shadow:
695
+ 0 6px 14px rgb(0 0 0 / 34%), 0 2px 5px rgb(0 0 0 / 28%);
696
+ }
94
697
  }
95
698
 
96
- input:focus-visible + .control {
97
- outline: 3px solid var(--seblify-color-focus-ring, #9bd4d8);
699
+ input:focus-visible + .control {
700
+ outline: 3px solid var(--switch-focus-ring-color);
98
701
  outline-offset: 2px;
99
702
  }
100
703
 
101
- .content {
704
+ .content {
102
705
  display: grid;
103
706
  gap: 2px;
104
707
  min-width: 0;
105
708
  }
106
709
 
107
- .label {
710
+ .label {
108
711
  font-weight: 700;
109
712
  line-height: 1.35;
110
713
  }
111
714
 
112
- .description {
715
+ .description {
113
716
  color: var(--seblify-color-text-muted, #516176);
114
717
  font-size: 0.875rem;
115
718
  line-height: 1.45;
116
719
  }
117
720
 
118
- .disabled {
721
+ .disabled {
119
722
  cursor: not-allowed;
120
723
  opacity: var(--seblify-opacity-disabled, 0.56);
121
724
  }