bref-ui 0.3.0 → 2.0.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 (359) hide show
  1. package/LICENSE +21 -0
  2. package/cli/commands/add/approve-overwrites.ts +17 -0
  3. package/cli/commands/add/display-changes.ts +11 -0
  4. package/cli/commands/add/index.ts +30 -0
  5. package/cli/commands/add/review-changes.ts +18 -0
  6. package/cli/commands/add/utils.ts +11 -0
  7. package/cli/commands/execute.ts +39 -0
  8. package/cli/commands/index.ts +19 -0
  9. package/cli/commands/init.ts +17 -0
  10. package/cli/commands/parse.ts +24 -0
  11. package/cli/commands/types.ts +2 -0
  12. package/cli/config/read/index.ts +15 -0
  13. package/cli/config/read/normalize-config.ts +21 -0
  14. package/cli/config/read/read-config-file.ts +13 -0
  15. package/cli/config/resolve/index.ts +20 -0
  16. package/cli/config/resolve/resolve-alias-target.ts +17 -0
  17. package/cli/config/resolve/resolve-alias.ts +17 -0
  18. package/cli/config/types.ts +5 -0
  19. package/cli/index.ts +4 -0
  20. package/cli/installation/copy/index.ts +25 -0
  21. package/cli/installation/copy/validate-overwrite-approvals.ts +18 -0
  22. package/cli/installation/copy/write-prepared-files.ts +26 -0
  23. package/cli/installation/exports/collect-exports.ts +19 -0
  24. package/cli/installation/exports/create-additions.ts +26 -0
  25. package/cli/installation/exports/index.ts +27 -0
  26. package/cli/installation/exports/merge-content.ts +12 -0
  27. package/cli/installation/exports/read-declared-export-names.ts +24 -0
  28. package/cli/installation/exports/read-exported-names.ts +21 -0
  29. package/cli/installation/exports/read-index.ts +14 -0
  30. package/cli/installation/exports/read-reexported-names.ts +24 -0
  31. package/cli/installation/exports/types.ts +10 -0
  32. package/cli/installation/exports/utils.ts +54 -0
  33. package/cli/installation/index.ts +35 -0
  34. package/cli/installation/parser/index.ts +29 -0
  35. package/cli/installation/parser/types.ts +12 -0
  36. package/cli/installation/parser/utils.ts +45 -0
  37. package/cli/installation/prepare/collect-source-files.ts +15 -0
  38. package/cli/installation/prepare/index.ts +15 -0
  39. package/cli/installation/prepare/read-source-files.ts +21 -0
  40. package/cli/installation/prepare/rewrite-imports.ts +50 -0
  41. package/cli/installation/prepare/rewrite-source.ts +36 -0
  42. package/cli/installation/prepare/types.ts +7 -0
  43. package/cli/installation/preview/compare-prepared-files.ts +18 -0
  44. package/cli/installation/preview/index.ts +18 -0
  45. package/cli/installation/preview/read-destination-files.ts +25 -0
  46. package/cli/installation/preview/types.ts +9 -0
  47. package/cli/installation/types.ts +15 -0
  48. package/cli/pack.ts +6 -0
  49. package/cli/registry/load/create-registry.ts +25 -0
  50. package/cli/registry/load/discover-manifests.ts +9 -0
  51. package/cli/registry/load/index.ts +21 -0
  52. package/cli/registry/load/load-entry.ts +22 -0
  53. package/cli/registry/load/utils.ts +70 -0
  54. package/cli/registry/load/validate-dependencies.ts +33 -0
  55. package/cli/registry/plan/collect-entries.ts +28 -0
  56. package/cli/registry/plan/index.ts +14 -0
  57. package/cli/registry/types.ts +17 -0
  58. package/dist/button/button.svelte +126 -0
  59. package/dist/button/button.svelte.d.ts +4 -0
  60. package/dist/button/registry.json +6 -0
  61. package/dist/button/types.d.ts +32 -0
  62. package/dist/checkbox/checkbox.svelte +143 -0
  63. package/dist/checkbox/checkbox.svelte.d.ts +4 -0
  64. package/dist/checkbox/registry.json +6 -0
  65. package/dist/checkbox/types.d.ts +6 -0
  66. package/dist/combobox/combobox.svelte +156 -0
  67. package/dist/combobox/combobox.svelte.d.ts +4 -0
  68. package/dist/combobox/form.svelte +61 -0
  69. package/dist/combobox/form.svelte.d.ts +4 -0
  70. package/dist/combobox/input.svelte +132 -0
  71. package/dist/combobox/input.svelte.d.ts +4 -0
  72. package/dist/combobox/list.svelte +78 -0
  73. package/dist/combobox/list.svelte.d.ts +4 -0
  74. package/dist/combobox/option.svelte +77 -0
  75. package/dist/combobox/option.svelte.d.ts +4 -0
  76. package/dist/combobox/registry.json +6 -0
  77. package/dist/combobox/types.d.ts +61 -0
  78. package/dist/dialog/dialog.svelte +182 -0
  79. package/dist/dialog/dialog.svelte.d.ts +4 -0
  80. package/dist/dialog/footer.svelte +26 -0
  81. package/dist/dialog/footer.svelte.d.ts +7 -0
  82. package/dist/dialog/header.svelte +56 -0
  83. package/dist/dialog/header.svelte.d.ts +4 -0
  84. package/dist/dialog/registry.json +6 -0
  85. package/dist/dialog/types.d.ts +31 -0
  86. package/dist/icon/icon.svelte +108 -0
  87. package/dist/icon/icon.svelte.d.ts +4 -0
  88. package/dist/icon/names.d.ts +7 -0
  89. package/dist/icon/registry.json +6 -0
  90. package/dist/icon/types.d.ts +16 -0
  91. package/dist/index.d.ts +20 -2
  92. package/dist/index.js +20 -2
  93. package/dist/pill/content.svelte +23 -0
  94. package/dist/pill/content.svelte.d.ts +4 -0
  95. package/dist/pill/on-delete.svelte +26 -0
  96. package/dist/pill/on-delete.svelte.d.ts +4 -0
  97. package/dist/pill/pill.svelte +200 -0
  98. package/dist/{base/pill → pill}/pill.svelte.d.ts +1 -1
  99. package/dist/pill/registry.json +6 -0
  100. package/dist/pill/types.d.ts +19 -0
  101. package/dist/pill-choice-group/pill-choice-group.svelte +131 -0
  102. package/dist/pill-choice-group/pill-choice-group.svelte.d.ts +4 -0
  103. package/dist/pill-choice-group/registry.json +6 -0
  104. package/dist/pill-choice-group/types.d.ts +13 -0
  105. package/dist/pill-group/container.svelte +40 -0
  106. package/dist/pill-group/container.svelte.d.ts +4 -0
  107. package/dist/pill-group/pill-group.svelte +27 -0
  108. package/dist/pill-group/pill-group.svelte.d.ts +4 -0
  109. package/dist/pill-group/registry.json +6 -0
  110. package/dist/pill-group/types.d.ts +13 -0
  111. package/dist/popover/popover.svelte +86 -0
  112. package/dist/popover/popover.svelte.d.ts +4 -0
  113. package/dist/popover/registry.json +6 -0
  114. package/dist/popover/types.d.ts +8 -0
  115. package/dist/progress/progress.svelte +256 -0
  116. package/dist/progress/progress.svelte.d.ts +4 -0
  117. package/dist/progress/registry.json +6 -0
  118. package/dist/progress/types.d.ts +11 -0
  119. package/dist/select/empty.svelte +25 -0
  120. package/dist/select/empty.svelte.d.ts +4 -0
  121. package/dist/select/list.svelte +27 -0
  122. package/dist/select/list.svelte.d.ts +4 -0
  123. package/dist/select/option.svelte +64 -0
  124. package/dist/select/option.svelte.d.ts +4 -0
  125. package/dist/select/registry.json +6 -0
  126. package/dist/select/select.svelte +70 -0
  127. package/dist/{base/select → select}/select.svelte.d.ts +2 -2
  128. package/dist/select/trigger.svelte +86 -0
  129. package/dist/select/trigger.svelte.d.ts +4 -0
  130. package/dist/select/types.d.ts +31 -0
  131. package/dist/select/types.js +1 -0
  132. package/dist/spinner/registry.json +6 -0
  133. package/dist/spinner/spinner.svelte +114 -0
  134. package/dist/spinner/spinner.svelte.d.ts +4 -0
  135. package/dist/spinner/types.d.ts +6 -0
  136. package/dist/spinner/types.js +1 -0
  137. package/dist/surface/registry.json +6 -0
  138. package/dist/surface/surface.svelte +96 -0
  139. package/dist/surface/surface.svelte.d.ts +4 -0
  140. package/dist/surface/types.d.ts +25 -0
  141. package/dist/surface/types.js +1 -0
  142. package/dist/switch/registry.json +6 -0
  143. package/dist/switch/switch.svelte +162 -0
  144. package/dist/switch/switch.svelte.d.ts +4 -0
  145. package/dist/switch/types.d.ts +8 -0
  146. package/dist/switch/types.js +1 -0
  147. package/dist/text-area/registry.json +8 -0
  148. package/dist/text-area/text-area.svelte +186 -0
  149. package/dist/text-area/text-area.svelte.d.ts +4 -0
  150. package/dist/text-area/types.d.ts +12 -0
  151. package/dist/text-area/types.js +1 -0
  152. package/dist/text-input/registry.json +8 -0
  153. package/dist/text-input/text-input.svelte +189 -0
  154. package/dist/text-input/text-input.svelte.d.ts +4 -0
  155. package/dist/text-input/types.d.ts +11 -0
  156. package/dist/text-input/types.js +1 -0
  157. package/dist/theme/cli-theme.svelte +16 -0
  158. package/dist/theme/cli-theme.svelte.d.ts +7 -0
  159. package/dist/theme/colors.svelte +102 -0
  160. package/dist/theme/colors.svelte.d.ts +4 -0
  161. package/dist/theme/fonts.svelte +10 -0
  162. package/dist/theme/fonts.svelte.d.ts +26 -0
  163. package/dist/theme/registry.json +13 -0
  164. package/dist/theme/styles.svelte +50 -0
  165. package/dist/theme/styles.svelte.d.ts +26 -0
  166. package/dist/theme/surface.d.ts +3 -0
  167. package/dist/theme/surface.js +10 -0
  168. package/dist/theme/surfaces.svelte +208 -0
  169. package/dist/theme/surfaces.svelte.d.ts +18 -0
  170. package/dist/theme/theme-mode-toggle.svelte +9 -0
  171. package/dist/theme/theme-mode-toggle.svelte.d.ts +4 -0
  172. package/dist/theme/theme.svelte +16 -0
  173. package/dist/theme/theme.svelte.d.ts +4 -0
  174. package/dist/theme/types.d.ts +17 -0
  175. package/dist/theme/types.js +1 -0
  176. package/dist/tree-view/registry.json +15 -0
  177. package/dist/tree-view/tree-node/chevron-button.svelte +56 -0
  178. package/dist/tree-view/tree-node/chevron-button.svelte.d.ts +4 -0
  179. package/dist/tree-view/tree-node/content.svelte +62 -0
  180. package/dist/tree-view/tree-node/content.svelte.d.ts +4 -0
  181. package/dist/tree-view/tree-node/delete-button.svelte +52 -0
  182. package/dist/tree-view/tree-node/delete-button.svelte.d.ts +4 -0
  183. package/dist/tree-view/tree-node/tree-node.svelte +111 -0
  184. package/dist/{base/tree-view → tree-view/tree-node}/tree-node.svelte.d.ts +2 -3
  185. package/dist/tree-view/tree-view-section.svelte +42 -0
  186. package/dist/tree-view/tree-view-section.svelte.d.ts +4 -0
  187. package/dist/tree-view/tree-view.svelte +65 -0
  188. package/dist/{base/tree-view → tree-view}/tree-view.svelte.d.ts +2 -2
  189. package/dist/tree-view/types.d.ts +31 -0
  190. package/dist/tree-view/types.js +1 -0
  191. package/dist/types.d.ts +25 -0
  192. package/dist/types.js +1 -0
  193. package/package.json +39 -45
  194. package/readme.md +157 -0
  195. package/src/lib/button/button.svelte +126 -0
  196. package/src/lib/button/registry.json +6 -0
  197. package/src/lib/button/types.ts +42 -0
  198. package/src/lib/checkbox/checkbox.svelte +143 -0
  199. package/src/lib/checkbox/registry.json +6 -0
  200. package/src/lib/checkbox/types.ts +7 -0
  201. package/src/lib/combobox/combobox.svelte +156 -0
  202. package/src/lib/combobox/form.svelte +61 -0
  203. package/src/lib/combobox/input.svelte +132 -0
  204. package/src/lib/combobox/list.svelte +78 -0
  205. package/src/lib/combobox/option.svelte +77 -0
  206. package/src/lib/combobox/registry.json +6 -0
  207. package/src/lib/combobox/types.ts +89 -0
  208. package/src/lib/dialog/dialog.svelte +182 -0
  209. package/src/lib/dialog/footer.svelte +26 -0
  210. package/src/lib/dialog/header.svelte +56 -0
  211. package/src/lib/dialog/registry.json +6 -0
  212. package/src/lib/dialog/types.ts +35 -0
  213. package/src/lib/icon/icon.svelte +108 -0
  214. package/src/lib/icon/names.ts +3794 -0
  215. package/src/lib/icon/registry.json +6 -0
  216. package/src/lib/icon/types.ts +18 -0
  217. package/src/lib/index.ts +20 -0
  218. package/src/lib/pill/content.svelte +23 -0
  219. package/src/lib/pill/on-delete.svelte +26 -0
  220. package/src/lib/pill/pill.svelte +200 -0
  221. package/src/lib/pill/registry.json +6 -0
  222. package/src/lib/pill/types.ts +22 -0
  223. package/src/lib/pill-choice-group/pill-choice-group.svelte +131 -0
  224. package/src/lib/pill-choice-group/registry.json +6 -0
  225. package/src/lib/pill-choice-group/types.ts +14 -0
  226. package/src/lib/pill-group/container.svelte +40 -0
  227. package/src/lib/pill-group/pill-group.svelte +27 -0
  228. package/src/lib/pill-group/registry.json +6 -0
  229. package/src/lib/pill-group/types.ts +15 -0
  230. package/src/lib/popover/popover.svelte +86 -0
  231. package/src/lib/popover/registry.json +6 -0
  232. package/src/lib/popover/types.ts +9 -0
  233. package/src/lib/progress/progress.svelte +256 -0
  234. package/src/lib/progress/registry.json +6 -0
  235. package/src/lib/progress/types.ts +15 -0
  236. package/src/lib/select/empty.svelte +25 -0
  237. package/src/lib/select/list.svelte +27 -0
  238. package/src/lib/select/option.svelte +64 -0
  239. package/src/lib/select/registry.json +6 -0
  240. package/src/lib/select/select.svelte +70 -0
  241. package/src/lib/select/trigger.svelte +86 -0
  242. package/src/lib/select/types.ts +41 -0
  243. package/src/lib/spinner/registry.json +6 -0
  244. package/src/lib/spinner/spinner.svelte +114 -0
  245. package/src/lib/spinner/types.ts +7 -0
  246. package/src/lib/surface/registry.json +6 -0
  247. package/src/lib/surface/surface.svelte +96 -0
  248. package/src/lib/surface/types.ts +28 -0
  249. package/src/lib/switch/registry.json +6 -0
  250. package/src/lib/switch/switch.svelte +162 -0
  251. package/src/lib/switch/types.ts +12 -0
  252. package/src/lib/text-area/registry.json +8 -0
  253. package/src/lib/text-area/text-area.svelte +186 -0
  254. package/src/lib/text-area/types.ts +13 -0
  255. package/src/lib/text-input/registry.json +8 -0
  256. package/src/lib/text-input/text-input.svelte +189 -0
  257. package/src/lib/text-input/types.ts +12 -0
  258. package/src/lib/theme/cli-theme.svelte +16 -0
  259. package/src/lib/theme/colors.svelte +102 -0
  260. package/src/lib/theme/fonts.svelte +10 -0
  261. package/src/lib/theme/registry.json +13 -0
  262. package/src/lib/theme/styles.svelte +50 -0
  263. package/src/lib/theme/surface.ts +18 -0
  264. package/src/lib/theme/surfaces.svelte +208 -0
  265. package/src/lib/theme/theme-mode-toggle.svelte +9 -0
  266. package/src/lib/theme/theme.svelte +16 -0
  267. package/src/lib/theme/types.ts +18 -0
  268. package/src/lib/tree-view/registry.json +15 -0
  269. package/src/lib/tree-view/tree-node/chevron-button.svelte +56 -0
  270. package/src/lib/tree-view/tree-node/content.svelte +62 -0
  271. package/src/lib/tree-view/tree-node/delete-button.svelte +52 -0
  272. package/src/lib/tree-view/tree-node/tree-node.svelte +111 -0
  273. package/src/lib/tree-view/tree-view-section.svelte +42 -0
  274. package/src/lib/tree-view/tree-view.svelte +65 -0
  275. package/src/lib/tree-view/types.ts +39 -0
  276. package/src/lib/types.ts +45 -0
  277. package/README.md +0 -110
  278. package/dist/base/button/button.svelte +0 -260
  279. package/dist/base/button/button.svelte.d.ts +0 -6
  280. package/dist/base/button/icon-button.svelte +0 -226
  281. package/dist/base/button/icon-button.svelte.d.ts +0 -6
  282. package/dist/base/button/index.d.ts +0 -2
  283. package/dist/base/button/index.js +0 -2
  284. package/dist/base/button/types.d.ts +0 -17
  285. package/dist/base/icon/icon.svelte +0 -118
  286. package/dist/base/icon/icon.svelte.d.ts +0 -7
  287. package/dist/base/icon/index.d.ts +0 -2
  288. package/dist/base/icon/index.js +0 -2
  289. package/dist/base/icon/types.d.ts +0 -10
  290. package/dist/base/index.d.ts +0 -12
  291. package/dist/base/index.js +0 -12
  292. package/dist/base/loading/circular-loading.svelte +0 -95
  293. package/dist/base/loading/circular-loading.svelte.d.ts +0 -4
  294. package/dist/base/loading/index.d.ts +0 -4
  295. package/dist/base/loading/index.js +0 -4
  296. package/dist/base/loading/morphing-shapes-loading.svelte +0 -241
  297. package/dist/base/loading/morphing-shapes-loading.svelte.d.ts +0 -4
  298. package/dist/base/loading/pulsing-dots-loading.svelte +0 -115
  299. package/dist/base/loading/pulsing-dots-loading.svelte.d.ts +0 -4
  300. package/dist/base/loading/textual-loading.svelte +0 -179
  301. package/dist/base/loading/textual-loading.svelte.d.ts +0 -4
  302. package/dist/base/loading/types.d.ts +0 -16
  303. package/dist/base/pill/index.d.ts +0 -1
  304. package/dist/base/pill/index.js +0 -1
  305. package/dist/base/pill/pill.svelte +0 -146
  306. package/dist/base/pill/types.d.ts +0 -9
  307. package/dist/base/progress-bar/index.d.ts +0 -1
  308. package/dist/base/progress-bar/index.js +0 -1
  309. package/dist/base/progress-bar/progress-bar.svelte +0 -174
  310. package/dist/base/progress-bar/progress-bar.svelte.d.ts +0 -4
  311. package/dist/base/progress-bar/types.d.ts +0 -9
  312. package/dist/base/select/index.d.ts +0 -2
  313. package/dist/base/select/index.js +0 -2
  314. package/dist/base/select/select.svelte +0 -145
  315. package/dist/base/select/types.d.ts +0 -16
  316. package/dist/base/slider/index.d.ts +0 -1
  317. package/dist/base/slider/index.js +0 -1
  318. package/dist/base/slider/slider.svelte +0 -192
  319. package/dist/base/slider/slider.svelte.d.ts +0 -6
  320. package/dist/base/slider/types.d.ts +0 -12
  321. package/dist/base/text-input/area-text-input.svelte +0 -105
  322. package/dist/base/text-input/area-text-input.svelte.d.ts +0 -6
  323. package/dist/base/text-input/index.d.ts +0 -2
  324. package/dist/base/text-input/index.js +0 -2
  325. package/dist/base/text-input/text-input.svelte +0 -213
  326. package/dist/base/text-input/text-input.svelte.d.ts +0 -6
  327. package/dist/base/text-input/types.d.ts +0 -27
  328. package/dist/base/theme/color-tokens.d.ts +0 -36
  329. package/dist/base/theme/color-tokens.js +0 -105
  330. package/dist/base/theme/index.d.ts +0 -3
  331. package/dist/base/theme/index.js +0 -3
  332. package/dist/base/theme/mode.d.ts +0 -3
  333. package/dist/base/theme/mode.js +0 -14
  334. package/dist/base/theme/theme.svelte +0 -87
  335. package/dist/base/theme/theme.svelte.d.ts +0 -3
  336. package/dist/base/theme/types.d.ts +0 -27
  337. package/dist/base/theme/types.js +0 -20
  338. package/dist/base/toggle/index.d.ts +0 -1
  339. package/dist/base/toggle/index.js +0 -1
  340. package/dist/base/toggle/toggle.svelte +0 -109
  341. package/dist/base/toggle/toggle.svelte.d.ts +0 -4
  342. package/dist/base/toggle/types.d.ts +0 -7
  343. package/dist/base/tree-view/index.d.ts +0 -3
  344. package/dist/base/tree-view/index.js +0 -3
  345. package/dist/base/tree-view/tree-node.svelte +0 -132
  346. package/dist/base/tree-view/tree-view.svelte +0 -56
  347. package/dist/base/tree-view/types.d.ts +0 -23
  348. package/dist/base/types.d.ts +0 -4
  349. /package/dist/{base/button → button}/types.js +0 -0
  350. /package/dist/{base/icon → checkbox}/types.js +0 -0
  351. /package/dist/{base/loading → combobox}/types.js +0 -0
  352. /package/dist/{base/pill → dialog}/types.js +0 -0
  353. /package/dist/{base/progress-bar/types.js → icon/names.js} +0 -0
  354. /package/dist/{base/select → icon}/types.js +0 -0
  355. /package/dist/{base/toggle → pill}/types.js +0 -0
  356. /package/dist/{base/slider → pill-choice-group}/types.js +0 -0
  357. /package/dist/{base/text-input → pill-group}/types.js +0 -0
  358. /package/dist/{base/tree-view → popover}/types.js +0 -0
  359. /package/dist/{base → progress}/types.js +0 -0
@@ -1,6 +0,0 @@
1
- import type { SvelteHTMLElements } from 'svelte/elements';
2
- import type { TextInputProps } from './types.ts';
3
- type $$ComponentProps = TextInputProps & Omit<SvelteHTMLElements['input'], 'value'>;
4
- declare const TextInput: import("svelte").Component<$$ComponentProps, {}, "">;
5
- type TextInput = ReturnType<typeof TextInput>;
6
- export default TextInput;
@@ -1,27 +0,0 @@
1
- import type { IconButtonProps } from '../button/types.ts';
2
- import type { IconName } from '../icon/types.ts';
3
- import type { Variant } from '../types.ts';
4
- interface BaseTextInputProps {
5
- value: string;
6
- placeholder?: string;
7
- disabled?: boolean;
8
- onChange: (value: string) => void;
9
- wide?: boolean;
10
- }
11
- export interface TextInputProps extends BaseTextInputProps {
12
- startIcon?: IconName;
13
- ctaIconButton?: IconButtonProps & {
14
- triggerOnEnter?: boolean;
15
- clearOnTrigger?: boolean;
16
- };
17
- variant?: Extract<Variant, 'soft' | 'ghost'>;
18
- validation?: {
19
- regex: RegExp;
20
- message: string;
21
- };
22
- }
23
- export interface AreaTextInputProps extends BaseTextInputProps {
24
- rows?: number;
25
- resizable?: boolean;
26
- }
27
- export {};
@@ -1,36 +0,0 @@
1
- import type { ColorTokenProps, ThemeProps } from './types.ts';
2
- /**
3
- * Generates a minimal set of color tokens based on a base color.
4
- * Produces soft, saturated, and contrast variants. Hover/active states are
5
- * left to components using CSS color-mix() for context-aware state derivation.
6
- *
7
- * @param color - The base color in any valid CSS color format
8
- * @returns An object containing soft, saturated, and contrast color tokens
9
- */
10
- declare const generateColorTokens: (color: string) => ColorTokenProps;
11
- /**
12
- * Sets a CSS custom property on the document root element.
13
- * Automatically prefixes the key with '--' if not already present.
14
- *
15
- * @param key - The CSS custom property name (with or without '--' prefix)
16
- * @param value - The value to assign to the CSS custom property
17
- */
18
- declare const setCSSProperty: (key: string, value: string) => void;
19
- /**
20
- * Generates and applies a complete set of color tokens as CSS custom properties.
21
- * Each token is set as `--color-{colorKey}` and `--color-{colorKey}-{variant}` on the document root.
22
- *
23
- * @param colorKey - The semantic name for the color (e.g., 'primary', 'success')
24
- * @param baseColor - The base color in any valid CSS color format
25
- */
26
- declare const setColorTokens: (colorKey: string, baseColor: string) => void;
27
- /**
28
- * Applies all theme tokens as CSS custom properties.
29
- * Palette colors are set without mode prefix (consistent across themes).
30
- * Surface colors (background/foreground) are set with mode prefix for light/dark switching.
31
- *
32
- * @param theme - The theme configuration object containing palette and surface colors
33
- */
34
- declare const setThemeTokens: (theme: ThemeProps) => void;
35
- export { generateColorTokens, setCSSProperty, setThemeTokens };
36
- export default setColorTokens;
@@ -1,105 +0,0 @@
1
- import { colord } from 'colord';
2
- /**
3
- * Generates a soft background color from the base color.
4
- * Produces a lighter, slightly desaturated shade suitable as a
5
- * background when using the base color as foreground.
6
- *
7
- * @param baseColor - The base color in any valid CSS color format
8
- * @returns A hex color string representing the soft background color
9
- */
10
- const generateSoftColor = (baseColor) => colord(baseColor).lighten(0.25).desaturate(0.1).toHex();
11
- /**
12
- * Generates a saturated (darker) version of the base color.
13
- * Produces a deeper, more intense shade suitable for emphasis or contrast.
14
- *
15
- * @param baseColor - The base color in any valid CSS color format
16
- * @returns A hex color string representing the saturated color
17
- */
18
- const generateSaturatedColor = (baseColor) => colord(baseColor).darken(0.15).saturate(0.1).toHex();
19
- /**
20
- * Generates a contrast color for text or icons placed on top of the base color.
21
- * Returns either black or white depending on the base color's perceived brightness,
22
- * ensuring readability and accessibility (WCAG compliance).
23
- *
24
- * @param baseColor - The base color in any valid CSS color format
25
- * @returns '#ffffff' for dark base colors, '#000000' for light base colors
26
- */
27
- const generateContrastColor = (baseColor) => colord(baseColor).isDark() ? '#ffffff' : '#000000';
28
- /**
29
- * Generates a minimal set of color tokens based on a base color.
30
- * Produces soft, saturated, and contrast variants. Hover/active states are
31
- * left to components using CSS color-mix() for context-aware state derivation.
32
- *
33
- * @param color - The base color in any valid CSS color format
34
- * @returns An object containing soft, saturated, and contrast color tokens
35
- */
36
- const generateColorTokens = (color) => ({
37
- soft: generateSoftColor(color),
38
- saturated: generateSaturatedColor(color),
39
- contrast: generateContrastColor(color)
40
- });
41
- /**
42
- * Sets a CSS custom property on the document root element.
43
- * Automatically prefixes the key with '--' if not already present.
44
- *
45
- * @param key - The CSS custom property name (with or without '--' prefix)
46
- * @param value - The value to assign to the CSS custom property
47
- */
48
- const setCSSProperty = (key, value) => {
49
- const prefixedKey = key.startsWith('--') ? key : `--${key}`;
50
- document.documentElement.style.setProperty(prefixedKey, value);
51
- };
52
- /**
53
- * Generates and applies a complete set of color tokens as CSS custom properties.
54
- * Each token is set as `--color-{colorKey}` and `--color-{colorKey}-{variant}` on the document root.
55
- *
56
- * @param colorKey - The semantic name for the color (e.g., 'primary', 'success')
57
- * @param baseColor - The base color in any valid CSS color format
58
- */
59
- const setColorTokens = (colorKey, baseColor) => {
60
- const tokens = generateColorTokens(baseColor);
61
- setCSSProperty(`--color-${colorKey}`, baseColor);
62
- Object.entries(tokens).forEach(([variant, value]) => {
63
- setCSSProperty(`--color-${colorKey}-${variant}`, value);
64
- });
65
- };
66
- /**
67
- * Generates and applies surface color tokens with mode prefix for light/dark switching.
68
- * Each token is set as `--color-{mode}-{surfaceKey}-{variant}` on the document root.
69
- *
70
- * @param surfaceKey - The semantic name for the surface (e.g., 'background', 'foreground')
71
- * @param baseColor - The base color in any valid CSS color format
72
- * @param mode - The theme mode ('light' or 'dark')
73
- */
74
- const setSurfaceTokens = (surfaceKey, baseColor, mode) => {
75
- const tokens = generateColorTokens(baseColor);
76
- setCSSProperty(`--color-${mode}-${surfaceKey}`, baseColor);
77
- Object.entries(tokens).forEach(([variant, value]) => {
78
- setCSSProperty(`--color-${mode}-${surfaceKey}-${variant}`, value);
79
- });
80
- };
81
- /**
82
- * Applies all theme tokens as CSS custom properties.
83
- * Palette colors are set without mode prefix (consistent across themes).
84
- * Surface colors (background/foreground) are set with mode prefix for light/dark switching.
85
- *
86
- * @param theme - The theme configuration object containing palette and surface colors
87
- */
88
- const setThemeTokens = (theme) => {
89
- // Palette colors: same across light/dark modes
90
- Object.entries(theme.paletteHex).forEach(([color, value]) => {
91
- setColorTokens(color, value);
92
- });
93
- // Surface colors: different for light/dark modes
94
- // Light mode uses colors as-is
95
- Object.entries(theme.surfaceHex).forEach(([surface, value]) => {
96
- setSurfaceTokens(surface, value, 'light');
97
- });
98
- // Dark mode flips background and foreground
99
- setSurfaceTokens('background', theme.surfaceHex.foreground, 'dark');
100
- setSurfaceTokens('foreground', theme.surfaceHex.background, 'dark');
101
- // Border color
102
- setCSSProperty('--color-border', theme.border.colorHex);
103
- };
104
- export { generateColorTokens, setCSSProperty, setThemeTokens };
105
- export default setColorTokens;
@@ -1,3 +0,0 @@
1
- export { default as Theme } from './theme.svelte';
2
- export * from './mode.ts';
3
- export * from './types.ts';
@@ -1,3 +0,0 @@
1
- export { default as Theme } from './theme.svelte';
2
- export * from "./mode.js";
3
- export * from "./types.js";
@@ -1,3 +0,0 @@
1
- import type { ThemeMode } from './types.ts';
2
- export declare const toggleThemeMode: (mode: ThemeMode) => void;
3
- export declare const initializeThemeMode: () => ThemeMode;
@@ -1,14 +0,0 @@
1
- export const toggleThemeMode = (mode) => {
2
- if (typeof window === 'undefined')
3
- return console.warn('toggleThemeMode called on server side');
4
- document.documentElement.setAttribute('data-theme', mode);
5
- localStorage.setItem('theme-mode', mode);
6
- };
7
- export const initializeThemeMode = () => {
8
- if (typeof window === 'undefined')
9
- return 'light';
10
- const stored = localStorage.getItem('theme-mode');
11
- const resolved = stored ?? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
12
- toggleThemeMode(resolved);
13
- return resolved;
14
- };
@@ -1,87 +0,0 @@
1
- <script lang="ts">
2
- import { setCSSProperty, setThemeTokens } from './color-tokens.js';
3
- import { initializeThemeMode } from './mode.js';
4
- import { DEFAULT_THEME, type ThemeProps } from './types.js';
5
-
6
- const userTheme: ThemeProps | undefined | Partial<ThemeProps> = $props();
7
-
8
- const theme: ThemeProps = {
9
- ...DEFAULT_THEME,
10
- ...userTheme,
11
- paletteHex: {
12
- ...DEFAULT_THEME.paletteHex,
13
- ...(userTheme?.paletteHex ?? {})
14
- },
15
- surfaceHex: {
16
- ...DEFAULT_THEME.surfaceHex,
17
- ...(userTheme?.surfaceHex ?? {})
18
- },
19
- border: {
20
- ...DEFAULT_THEME.border,
21
- ...(userTheme?.border ?? {})
22
- }
23
- };
24
-
25
- $effect.pre(() => {
26
- setThemeTokens(theme);
27
-
28
- setCSSProperty(`--border-width`, `${theme.border.widthPx}px`);
29
- setCSSProperty(`--border-radius`, `${theme.border.radiusRem}rem`);
30
- setCSSProperty(`--spacing`, `${theme.spacingRem}rem`);
31
-
32
- initializeThemeMode();
33
- });
34
- </script>
35
-
36
- <style>
37
- :global(:root),
38
- :global(:root[data-theme='light']) {
39
- color-scheme: light;
40
- --color-background: var(--color-light-background);
41
- --color-background-soft: var(--color-light-background-soft);
42
- --color-background-saturated: var(--color-light-background-saturated);
43
- --color-background-contrast: var(--color-light-background-contrast);
44
- --color-foreground: var(--color-light-foreground);
45
- --color-foreground-soft: var(--color-light-foreground-soft);
46
- --color-foreground-saturated: var(--color-light-foreground-saturated);
47
- --color-foreground-contrast: var(--color-light-foreground-contrast);
48
- }
49
-
50
- :global(*) {
51
- color: var(--color-foreground);
52
- }
53
-
54
- :global(body) {
55
- background-color: var(--color-background);
56
- }
57
-
58
- :global(*) {
59
- gap: var(--spacing);
60
- }
61
-
62
- :global(:root[data-theme='dark']) {
63
- color-scheme: dark;
64
- --color-background: var(--color-dark-background);
65
- --color-background-soft: var(--color-dark-background-soft);
66
- --color-background-saturated: var(--color-dark-background-saturated);
67
- --color-background-contrast: var(--color-dark-background-contrast);
68
- --color-foreground: var(--color-dark-foreground);
69
- --color-foreground-soft: var(--color-dark-foreground-soft);
70
- --color-foreground-saturated: var(--color-dark-foreground-saturated);
71
- --color-foreground-contrast: var(--color-dark-foreground-contrast);
72
- }
73
-
74
- @media (prefers-color-scheme: dark) {
75
- :global(:root:not([data-theme='light'])) {
76
- color-scheme: dark;
77
- --color-background: var(--color-dark-background);
78
- --color-background-soft: var(--color-dark-background-soft);
79
- --color-background-saturated: var(--color-dark-background-saturated);
80
- --color-background-contrast: var(--color-dark-background-contrast);
81
- --color-foreground: var(--color-dark-foreground);
82
- --color-foreground-soft: var(--color-dark-foreground-soft);
83
- --color-foreground-saturated: var(--color-dark-foreground-saturated);
84
- --color-foreground-contrast: var(--color-dark-foreground-contrast);
85
- }
86
- }
87
- </style>
@@ -1,3 +0,0 @@
1
- declare const Theme: import("svelte").Component<Record<string, any>, {}, "">;
2
- type Theme = ReturnType<typeof Theme>;
3
- export default Theme;
@@ -1,27 +0,0 @@
1
- export type ThemeMode = 'light' | 'dark';
2
- export interface ThemeProps {
3
- paletteHex: {
4
- primary: string;
5
- secondary: string;
6
- success: string;
7
- warning: string;
8
- danger: string;
9
- info: string;
10
- };
11
- surfaceHex: {
12
- background: string;
13
- foreground: string;
14
- };
15
- border: {
16
- widthPx: number;
17
- radiusRem: number;
18
- colorHex: string;
19
- };
20
- spacingRem: number;
21
- }
22
- export interface ColorTokenProps {
23
- soft: string;
24
- saturated: string;
25
- contrast: string;
26
- }
27
- export declare const DEFAULT_THEME: ThemeProps;
@@ -1,20 +0,0 @@
1
- export const DEFAULT_THEME = {
2
- paletteHex: {
3
- primary: '#736CED',
4
- secondary: '#E08D79',
5
- success: '#60935D',
6
- warning: '#E67F0D',
7
- danger: '#F03A47',
8
- info: '#4D9DE0'
9
- },
10
- surfaceHex: {
11
- background: '#eee',
12
- foreground: '#222'
13
- },
14
- border: {
15
- widthPx: 1,
16
- radiusRem: 0.5,
17
- colorHex: '#CCCCCC'
18
- },
19
- spacingRem: 1
20
- };
@@ -1 +0,0 @@
1
- export { default as Toggle } from './toggle.svelte';
@@ -1 +0,0 @@
1
- export { default as Toggle } from './toggle.svelte';
@@ -1,109 +0,0 @@
1
- <script lang="ts">
2
- import type { ToggleProps } from './types.js';
3
-
4
- const {
5
- checked = false,
6
- disabled = false,
7
- size = 'medium',
8
- onChange
9
- }: ToggleProps = $props();
10
-
11
- const handleClick = () => {
12
- if (!disabled) {
13
- onChange(!checked);
14
- }
15
- };
16
- </script>
17
-
18
- <!-- svelte-ignore a11y_interactive_supports_focus -->
19
- <!-- svelte-ignore a11y_click_events_have_key_events -->
20
- <div
21
- class={size}
22
- class:checked
23
- class:disabled
24
- role="switch"
25
- aria-checked={checked}
26
- aria-disabled={disabled}
27
- onclick={handleClick}
28
- >
29
- <span></span>
30
- </div>
31
-
32
- <style>
33
- div {
34
- --internal-track-width: 2.5rem;
35
- --internal-track-height: 1.5rem;
36
- --internal-thumb-size: 1.125rem;
37
- --internal-thumb-offset: 0.1875rem;
38
-
39
- position: relative;
40
- width: var(--internal-track-width);
41
- height: var(--internal-track-height);
42
- background: var(--color-foreground-soft);
43
- border-radius: calc(var(--internal-track-height) / 2);
44
- cursor: pointer;
45
- transition: background 0.2s ease;
46
- }
47
-
48
- div.checked {
49
- background: var(--color-primary);
50
- }
51
-
52
- /* Size variants */
53
- div.x-small {
54
- --internal-track-width: 1.5rem;
55
- --internal-track-height: 0.875rem;
56
- --internal-thumb-size: 0.625rem;
57
- --internal-thumb-offset: 0.125rem;
58
- }
59
-
60
- div.small {
61
- --internal-track-width: 2rem;
62
- --internal-track-height: 1.25rem;
63
- --internal-thumb-size: 0.875rem;
64
- --internal-thumb-offset: 0.1875rem;
65
- }
66
-
67
- div.medium {
68
- --internal-track-width: 2.5rem;
69
- --internal-track-height: 1.5rem;
70
- --internal-thumb-size: 1.125rem;
71
- --internal-thumb-offset: 0.1875rem;
72
- }
73
-
74
- div.large {
75
- --internal-track-width: 3rem;
76
- --internal-track-height: 1.75rem;
77
- --internal-thumb-size: 1.375rem;
78
- --internal-thumb-offset: 0.1875rem;
79
- }
80
-
81
- div.x-large {
82
- --internal-track-width: 3.5rem;
83
- --internal-track-height: 2rem;
84
- --internal-thumb-size: 1.625rem;
85
- --internal-thumb-offset: 0.1875rem;
86
- }
87
-
88
- span {
89
- position: absolute;
90
- top: var(--internal-thumb-offset);
91
- left: var(--internal-thumb-offset);
92
- width: var(--internal-thumb-size);
93
- height: var(--internal-thumb-size);
94
- background: var(--color-background);
95
- border-radius: 50%;
96
- transition: left 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
97
- }
98
-
99
- div.checked span {
100
- left: calc(
101
- var(--internal-track-width) - var(--internal-thumb-size) - var(--internal-thumb-offset)
102
- );
103
- }
104
-
105
- div.disabled {
106
- opacity: 0.4;
107
- cursor: not-allowed;
108
- }
109
- </style>
@@ -1,4 +0,0 @@
1
- import type { ToggleProps } from './types.ts';
2
- declare const Toggle: import("svelte").Component<ToggleProps, {}, "">;
3
- type Toggle = ReturnType<typeof Toggle>;
4
- export default Toggle;
@@ -1,7 +0,0 @@
1
- import type { Size } from '../types.ts';
2
- export interface ToggleProps {
3
- onChange: (checked: boolean) => void;
4
- checked?: boolean;
5
- disabled?: boolean;
6
- size?: Size;
7
- }
@@ -1,3 +0,0 @@
1
- export { default as TreeView } from './tree-view.svelte';
2
- export { default as TreeNode } from './tree-node.svelte';
3
- export * from './types.ts';
@@ -1,3 +0,0 @@
1
- export { default as TreeView } from './tree-view.svelte';
2
- export { default as TreeNode } from './tree-node.svelte';
3
- export * from "./types.js";
@@ -1,132 +0,0 @@
1
- <script lang="ts">
2
- import type { TreeNodeProps } from './types.js';
3
- import Icon from '../icon/icon.svelte';
4
- import TreeNode from './tree-node.svelte';
5
- const {
6
- node,
7
- level,
8
- size,
9
- onSelect,
10
- selectedIds,
11
- filledIcon,
12
- wide,
13
- expandOnSelect
14
- }: TreeNodeProps = $props();
15
-
16
- let expanded: boolean = $state(false);
17
- let selected: boolean = $derived(selectedIds?.has(node.id) ?? false);
18
-
19
- const hasChildren = $derived(node.children && node.children.length > 0);
20
-
21
- const toggleExpand = (e: MouseEvent) => {
22
- e.stopPropagation();
23
- if (hasChildren) expanded = !expanded;
24
- };
25
-
26
- const handleSelect = () => {
27
- onSelect(node.id);
28
- if (expandOnSelect && hasChildren) expanded = true;
29
- };
30
-
31
- const nextLevel = $derived(level + 1);
32
- </script>
33
-
34
- <!-- svelte-ignore a11y_click_events_have_key_events -->
35
- <!-- svelte-ignore a11y_no_static_element_interactions -->
36
- <div
37
- class={size}
38
- class:selected
39
- style:padding-left="calc({level} * var(--tree-indent))"
40
- onclick={handleSelect}
41
- class:wide
42
- >
43
- {#if hasChildren}
44
- <button class:expanded onclick={toggleExpand}>
45
- <Icon name="chevron_right" {size} color={selected ? 'primary' : undefined} />
46
- </button>
47
- {:else}
48
- <span class="spacer"></span>
49
- {/if}
50
-
51
- {#if node.icon}
52
- <Icon
53
- name={node.icon}
54
- filled={selected || filledIcon}
55
- {size}
56
- color={selected ? 'primary' : undefined}
57
- />
58
- {/if}
59
-
60
- <span>{node.label}</span>
61
- </div>
62
-
63
- {#if expanded && hasChildren}
64
- {#each node.children as child (child.id)}
65
- <TreeNode
66
- node={child}
67
- level={nextLevel}
68
- {size}
69
- {onSelect}
70
- {selectedIds}
71
- {filledIcon}
72
- {wide}
73
- {expandOnSelect}
74
- />
75
- {/each}
76
- {/if}
77
-
78
- <style>
79
- div,
80
- span,
81
- button {
82
- transition: all 0.1s ease-in-out;
83
- }
84
-
85
- div {
86
- --tree-indent: 1em;
87
- display: flex;
88
- flex-shrink: 0;
89
- align-items: center;
90
- padding: 0.25em 0.5em;
91
- gap: 0.25em;
92
- border-radius: var(--border-radius);
93
- cursor: pointer;
94
- }
95
-
96
- div:hover {
97
- background-color: color-mix(in srgb, var(--color-foreground) 10%, transparent);
98
- }
99
-
100
- .selected {
101
- background-color: var(--color-primary-soft);
102
- }
103
- .selected:hover {
104
- background-color: color-mix(in srgb, var(--color-primary) 20%, var(--color-primary-soft));
105
- }
106
-
107
- .selected span {
108
- color: var(--color-primary);
109
- }
110
- span {
111
- user-select: none;
112
- }
113
-
114
- button {
115
- all: unset;
116
- display: flex;
117
- padding: 0.25em;
118
- cursor: pointer;
119
- }
120
-
121
- button.expanded {
122
- transform: rotate(90deg);
123
- }
124
-
125
- .spacer {
126
- width: 1em;
127
- }
128
-
129
- .wide {
130
- width: 100%;
131
- }
132
- </style>
@@ -1,56 +0,0 @@
1
- <script lang="ts">
2
- import type { TreeViewProps } from './types.js';
3
- import TreeNode from './tree-node.svelte';
4
-
5
- let {
6
- data,
7
- size = 'medium',
8
- onSelect,
9
- selectedIds,
10
- wide,
11
- filledIcon,
12
- expandOnSelect
13
- }: TreeViewProps = $props();
14
- </script>
15
-
16
- <div role="tree" class={size} class:wide>
17
- {#each data as node (node.id)}
18
- <TreeNode
19
- {node}
20
- level={0}
21
- {size}
22
- {onSelect}
23
- {selectedIds}
24
- {wide}
25
- {filledIcon}
26
- {expandOnSelect}
27
- />
28
- {/each}
29
- </div>
30
-
31
- <style>
32
- div {
33
- display: flex;
34
- flex-direction: column;
35
- }
36
-
37
- .wide {
38
- width: 100%;
39
- }
40
-
41
- .x-small {
42
- gap: 0.125rem;
43
- }
44
- .small {
45
- gap: 0.25rem;
46
- }
47
- .medium {
48
- gap: 0.5rem;
49
- }
50
- .large {
51
- gap: 0.75rem;
52
- }
53
- .x-large {
54
- gap: 1rem;
55
- }
56
- </style>