@widgetic/design-system 0.5.22 → 0.5.24

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 (258) hide show
  1. package/README.md +2 -0
  2. package/dist/components/CopyableHeader.svelte +260 -448
  3. package/dist/components/CopyableHeader.svelte.d.ts +8 -5
  4. package/dist/components/EmptyState.svelte +100 -128
  5. package/dist/components/EmptyState.svelte.d.ts +16 -19
  6. package/dist/components/GenerateLoader.svelte +17 -10
  7. package/dist/components/PasswordInput.svelte +41 -44
  8. package/dist/components/PasswordInput.svelte.d.ts +2 -0
  9. package/dist/components/ThumbHashImage.svelte +117 -119
  10. package/dist/components/WScrollArea.svelte +47 -41
  11. package/dist/components/chat/ActivityRow.svelte +115 -0
  12. package/dist/components/chat/ActivityRow.svelte.d.ts +18 -0
  13. package/dist/components/chat/ChatHeader.svelte +114 -0
  14. package/dist/components/chat/ChatHeader.svelte.d.ts +26 -0
  15. package/dist/components/chat/Composer.svelte +172 -0
  16. package/dist/components/chat/Composer.svelte.d.ts +27 -0
  17. package/dist/components/chat/Message.svelte +158 -0
  18. package/dist/components/chat/Message.svelte.d.ts +28 -0
  19. package/dist/components/chat/OptionRow.svelte +59 -0
  20. package/dist/components/chat/OptionRow.svelte.d.ts +14 -0
  21. package/dist/components/chat/PlanCard.svelte +220 -0
  22. package/dist/components/chat/PlanCard.svelte.d.ts +34 -0
  23. package/dist/components/chat/QuestionCard.svelte +265 -0
  24. package/dist/components/chat/QuestionCard.svelte.d.ts +38 -0
  25. package/dist/components/chat/ScrollToBottom.svelte +51 -0
  26. package/dist/components/chat/ScrollToBottom.svelte.d.ts +11 -0
  27. package/dist/components/chat/SuggestionCard.svelte +79 -0
  28. package/dist/components/chat/SuggestionCard.svelte.d.ts +20 -0
  29. package/dist/components/chat/TaskRow.svelte +59 -0
  30. package/dist/components/chat/TaskRow.svelte.d.ts +11 -0
  31. package/dist/components/chat/composerLogic.d.ts +16 -0
  32. package/dist/components/chat/composerLogic.js +29 -0
  33. package/dist/components/chat/index.d.ts +16 -0
  34. package/dist/components/chat/index.js +16 -0
  35. package/dist/components/chat/questionCardLogic.d.ts +11 -0
  36. package/dist/components/chat/questionCardLogic.js +39 -0
  37. package/dist/components/index.d.ts +10 -1
  38. package/dist/components/index.js +10 -0
  39. package/dist/components/modals/ActionModal.svelte +186 -180
  40. package/dist/components/modals/BaseModal.svelte +495 -401
  41. package/dist/components/modals/BaseModal.svelte.d.ts +4 -0
  42. package/dist/components/modals/NewItemDialog.svelte +198 -243
  43. package/dist/components/modals/Portal.svelte +109 -105
  44. package/dist/components/modals/README.md +16 -2
  45. package/dist/components/modals/RenameDialog.svelte +232 -292
  46. package/dist/components/modals/modalStore.d.ts +9 -1
  47. package/dist/components/modals/modalStore.js +44 -11
  48. package/dist/components/navigation/Breadcrumbs.svelte +421 -377
  49. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +3 -2
  50. package/dist/components/navigation/breadcrumbsAvailableWidth.d.ts +10 -0
  51. package/dist/components/navigation/breadcrumbsAvailableWidth.js +10 -0
  52. package/dist/components/navigation/types.d.ts +2 -0
  53. package/dist/components/pdf/PDFViewer.svelte +1 -1
  54. package/dist/components/search-input/SearchInput.svelte +63 -104
  55. package/dist/components/search-input/SearchInput.svelte.d.ts +13 -27
  56. package/dist/components/search-input/index2.d.ts +14 -9
  57. package/dist/components/shad-editor/editor.css +1 -1
  58. package/dist/components/shad-editor/i18n/messages.d.ts +1 -1
  59. package/dist/components/shad-editor/i18n/messages.js +1 -1
  60. package/dist/components/shell/AppShell.svelte +52 -0
  61. package/dist/components/shell/AppShell.svelte.d.ts +13 -0
  62. package/dist/components/shell/Banner.svelte +90 -0
  63. package/dist/components/shell/Banner.svelte.d.ts +61 -0
  64. package/dist/components/shell/ErrorState.svelte +60 -0
  65. package/dist/components/shell/ErrorState.svelte.d.ts +13 -0
  66. package/dist/components/shell/Link.svelte +63 -0
  67. package/dist/components/shell/Link.svelte.d.ts +53 -0
  68. package/dist/components/shell/NavDrawer.svelte +117 -0
  69. package/dist/components/shell/NavDrawer.svelte.d.ts +10 -0
  70. package/dist/components/shell/NavRow.svelte +128 -0
  71. package/dist/components/shell/NavRow.svelte.d.ts +65 -0
  72. package/dist/components/shell/NavSectionLabel.svelte +27 -0
  73. package/dist/components/shell/NavSectionLabel.svelte.d.ts +9 -0
  74. package/dist/components/shell/NotificationRow.svelte +76 -0
  75. package/dist/components/shell/NotificationRow.svelte.d.ts +16 -0
  76. package/dist/components/shell/PageHeader.svelte +42 -0
  77. package/dist/components/shell/PageHeader.svelte.d.ts +12 -0
  78. package/dist/components/shell/ProfileRow.svelte +95 -0
  79. package/dist/components/shell/ProfileRow.svelte.d.ts +54 -0
  80. package/dist/components/shell/SettingsDialog.svelte +163 -0
  81. package/dist/components/shell/SettingsDialog.svelte.d.ts +19 -0
  82. package/dist/components/shell/SettingsNav.svelte +46 -0
  83. package/dist/components/shell/SettingsNav.svelte.d.ts +11 -0
  84. package/dist/components/shell/Sidebar.svelte +82 -0
  85. package/dist/components/shell/Sidebar.svelte.d.ts +25 -0
  86. package/dist/components/shell/Stat.svelte +63 -0
  87. package/dist/components/shell/Stat.svelte.d.ts +58 -0
  88. package/dist/components/shell/TopBar.svelte +37 -0
  89. package/dist/components/shell/TopBar.svelte.d.ts +11 -0
  90. package/dist/components/shell/WidgetRow.svelte +126 -0
  91. package/dist/components/shell/WidgetRow.svelte.d.ts +78 -0
  92. package/dist/components/shell/error-state-messages.d.ts +7 -0
  93. package/dist/components/shell/error-state-messages.js +9 -0
  94. package/dist/components/shell/index.d.ts +22 -0
  95. package/dist/components/shell/index.js +25 -0
  96. package/dist/components/shell/link-external.d.ts +2 -0
  97. package/dist/components/shell/link-external.js +7 -0
  98. package/dist/components/shell/messages.d.ts +7 -0
  99. package/dist/components/shell/messages.js +5 -0
  100. package/dist/components/shell/nested-modal-guard.d.ts +25 -0
  101. package/dist/components/shell/nested-modal-guard.js +33 -0
  102. package/dist/components/shell/settings-nav-types.d.ts +12 -0
  103. package/dist/components/shell/settings-nav-types.js +3 -0
  104. package/dist/components/shell/shell-utils.d.ts +7 -0
  105. package/dist/components/shell/shell-utils.js +27 -0
  106. package/dist/components/shell/stat-tone.d.ts +3 -0
  107. package/dist/components/shell/stat-tone.js +11 -0
  108. package/dist/components/toast/ToasterModal.svelte +102 -168
  109. package/dist/components/toast/ToasterModal.svelte.d.ts +2 -12
  110. package/dist/components/ui/accordion/accordion-content.svelte +3 -2
  111. package/dist/components/ui/accordion/accordion-item.svelte +10 -1
  112. package/dist/components/ui/accordion/accordion-trigger.svelte +4 -3
  113. package/dist/components/ui/alert/alert-description.svelte +5 -1
  114. package/dist/components/ui/alert/alert-title.svelte +2 -1
  115. package/dist/components/ui/alert/index.d.ts +13 -11
  116. package/dist/components/ui/alert/index.js +4 -4
  117. package/dist/components/ui/avatar/avatar-utils.d.ts +2 -0
  118. package/dist/components/ui/avatar/avatar-utils.js +9 -0
  119. package/dist/components/ui/avatar/avatar.svelte +63 -0
  120. package/dist/components/ui/avatar/avatar.svelte.d.ts +80 -0
  121. package/dist/components/ui/avatar/index.d.ts +4 -0
  122. package/dist/components/ui/avatar/index.js +4 -0
  123. package/dist/components/ui/badge/badge.svelte +22 -10
  124. package/dist/components/ui/badge/badge.svelte.d.ts +14 -15
  125. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +2 -2
  126. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  127. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  128. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  129. package/dist/components/ui/button/button-padding.d.ts +9 -0
  130. package/dist/components/ui/button/button-padding.js +15 -0
  131. package/dist/components/ui/button/button.svelte +81 -31
  132. package/dist/components/ui/button/button.svelte.d.ts +48 -29
  133. package/dist/components/ui/calendar/calendar-cell.svelte +1 -1
  134. package/dist/components/ui/calendar/calendar-head-cell.svelte +1 -1
  135. package/dist/components/ui/calendar/calendar-next-button.svelte +2 -2
  136. package/dist/components/ui/calendar/calendar-prev-button.svelte +2 -2
  137. package/dist/components/ui/calendar/calendar.svelte.d.ts +1 -1
  138. package/dist/components/ui/card/card-description.svelte +1 -1
  139. package/dist/components/ui/card/card-title.svelte +1 -1
  140. package/dist/components/ui/card/card.svelte +1 -1
  141. package/dist/components/ui/checkbox/checkbox.svelte +9 -5
  142. package/dist/components/ui/chip/chip.svelte +48 -0
  143. package/dist/components/ui/chip/chip.svelte.d.ts +13 -0
  144. package/dist/components/ui/chip/index.d.ts +2 -0
  145. package/dist/components/ui/chip/index.js +2 -0
  146. package/dist/components/ui/command/command-dialog.svelte +1 -1
  147. package/dist/components/ui/command/command-input.svelte +4 -4
  148. package/dist/components/ui/command/command-item.svelte +1 -1
  149. package/dist/components/ui/command/command-link-item.svelte +1 -1
  150. package/dist/components/ui/command/command.svelte +1 -1
  151. package/dist/components/ui/dialog/dialog-content.svelte +11 -4
  152. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  153. package/dist/components/ui/dialog/dialog-overlay.svelte +8 -1
  154. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  155. package/dist/components/ui/drawer/drawer-content.svelte +1 -1
  156. package/dist/components/ui/drawer/drawer-overlay.svelte +1 -1
  157. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +5 -5
  158. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  159. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
  160. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +20 -2
  161. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +4 -0
  162. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +5 -1
  163. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +3 -3
  164. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +2 -1
  165. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  166. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +3 -3
  167. package/dist/components/ui/field/field-ids.d.ts +7 -0
  168. package/dist/components/ui/field/field-ids.js +15 -0
  169. package/dist/components/ui/field/field.svelte +62 -0
  170. package/dist/components/ui/field/field.svelte.d.ts +21 -0
  171. package/dist/components/ui/field/index.d.ts +3 -0
  172. package/dist/components/ui/field/index.js +3 -0
  173. package/dist/components/ui/hover-card/hover-card-content.svelte +1 -1
  174. package/dist/components/ui/icon-button/icon-button.svelte +72 -0
  175. package/dist/components/ui/icon-button/icon-button.svelte.d.ts +90 -0
  176. package/dist/components/ui/icon-button/index.d.ts +2 -0
  177. package/dist/components/ui/icon-button/index.js +4 -0
  178. package/dist/components/ui/input/index.d.ts +1 -0
  179. package/dist/components/ui/input/input.svelte +11 -4
  180. package/dist/components/ui/input/input.svelte.d.ts +4 -1
  181. package/dist/components/ui/input-otp/input-otp-separator.svelte +2 -2
  182. package/dist/components/ui/input-otp/input-otp-slot.svelte +5 -4
  183. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +1 -1
  184. package/dist/components/ui/input-otp/input-otp.svelte +1 -1
  185. package/dist/components/ui/label/label.svelte +3 -2
  186. package/dist/components/ui/popover/popover-content.svelte +1 -1
  187. package/dist/components/ui/progress/progress.svelte +19 -5
  188. package/dist/components/ui/progress/progress.svelte.d.ts +4 -2
  189. package/dist/components/ui/radio-group/radio-group-item.svelte +4 -4
  190. package/dist/components/ui/range-calendar/range-calendar-head-cell.svelte +1 -1
  191. package/dist/components/ui/range-calendar/range-calendar-next-button.svelte +2 -2
  192. package/dist/components/ui/range-calendar/range-calendar-prev-button.svelte +2 -2
  193. package/dist/components/ui/range-calendar/range-calendar.svelte.d.ts +1 -1
  194. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +4 -1
  195. package/dist/components/ui/scroll-area/scroll-area.svelte +1 -1
  196. package/dist/components/ui/select/select-content.svelte +1 -3
  197. package/dist/components/ui/select/select-item.svelte +5 -4
  198. package/dist/components/ui/select/select-scroll-down-button.svelte +2 -2
  199. package/dist/components/ui/select/select-scroll-up-button.svelte +2 -2
  200. package/dist/components/ui/select/select-trigger.svelte +4 -3
  201. package/dist/components/ui/skeleton/index.d.ts +2 -0
  202. package/dist/components/ui/skeleton/index.js +2 -0
  203. package/dist/components/ui/skeleton/skeleton.svelte +24 -0
  204. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +8 -0
  205. package/dist/components/ui/slider/slider.svelte +5 -10
  206. package/dist/components/ui/sonner/sonner.svelte +19 -13
  207. package/dist/components/ui/stepper-button/index.d.ts +3 -0
  208. package/dist/components/ui/stepper-button/index.js +2 -0
  209. package/dist/components/ui/stepper-button/stepper-button.svelte +37 -0
  210. package/dist/components/ui/stepper-button/stepper-button.svelte.d.ts +9 -0
  211. package/dist/components/ui/switch/switch.svelte +8 -3
  212. package/dist/components/ui/table/table-cell.svelte +1 -1
  213. package/dist/components/ui/table/table-head.svelte +1 -1
  214. package/dist/components/ui/table/table-row.svelte +1 -1
  215. package/dist/components/ui/tabs/tabs-list.svelte +1 -1
  216. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -1
  217. package/dist/components/ui/tag/index.d.ts +2 -0
  218. package/dist/components/ui/tag/index.js +2 -0
  219. package/dist/components/ui/tag/tag.svelte +42 -0
  220. package/dist/components/ui/tag/tag.svelte.d.ts +11 -0
  221. package/dist/components/ui/textarea/textarea.svelte +4 -3
  222. package/dist/components/ui/textarea/textarea.svelte.d.ts +2 -2
  223. package/dist/components/ui/toggle/toggle.svelte +9 -9
  224. package/dist/components/ui/toggle/toggle.svelte.d.ts +14 -21
  225. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  226. package/dist/fonts/Inter/Inter-Black.woff2 +0 -0
  227. package/dist/fonts/Inter/Inter-BlackItalic.woff2 +0 -0
  228. package/dist/fonts/Inter/Inter-Bold.woff2 +0 -0
  229. package/dist/fonts/Inter/Inter-BoldItalic.woff2 +0 -0
  230. package/dist/fonts/Inter/Inter-ExtraBold.woff2 +0 -0
  231. package/dist/fonts/Inter/Inter-ExtraBoldItalic.woff2 +0 -0
  232. package/dist/fonts/Inter/Inter-ExtraLight-BETA.woff2 +0 -0
  233. package/dist/fonts/Inter/Inter-ExtraLightItalic-BETA.woff2 +0 -0
  234. package/dist/fonts/Inter/Inter-Italic.woff2 +0 -0
  235. package/dist/fonts/Inter/Inter-Light-BETA.woff2 +0 -0
  236. package/dist/fonts/Inter/Inter-LightItalic-BETA.woff2 +0 -0
  237. package/dist/fonts/Inter/Inter-Medium.woff2 +0 -0
  238. package/dist/fonts/Inter/Inter-MediumItalic.woff2 +0 -0
  239. package/dist/fonts/Inter/Inter-Regular.woff2 +0 -0
  240. package/dist/fonts/Inter/Inter-SemiBold.woff2 +0 -0
  241. package/dist/fonts/Inter/Inter-SemiBoldItalic.woff2 +0 -0
  242. package/dist/fonts/Inter/Inter-Thin-BETA.woff2 +0 -0
  243. package/dist/fonts/Inter/Inter-ThinItalic-BETA.woff2 +0 -0
  244. package/dist/fonts/Inter/Inter-italic.var.woff2 +0 -0
  245. package/dist/fonts/Inter/Inter-upright.var.woff2 +0 -0
  246. package/dist/fonts/Inter/Inter.var.woff2 +0 -0
  247. package/dist/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 +0 -0
  248. package/dist/i18n/audit/designSystemWords.d.ts +1 -1
  249. package/dist/i18n/audit/designSystemWords.js +1 -1
  250. package/dist/styles/fonts.css +18 -14
  251. package/dist/styles/global.css +10 -21
  252. package/dist/styles/tokens.css +332 -0
  253. package/dist/utils/overlayMotion.d.ts +49 -0
  254. package/dist/utils/overlayMotion.js +71 -0
  255. package/dist/utils.d.ts +27 -0
  256. package/dist/utils.js +33 -2
  257. package/package.json +2 -1
  258. package/tailwind.config.ts +7 -47
@@ -1,18 +1,20 @@
1
+ <!-- Figma: Toast (135:87) — flat popover surface, 1px border. -->
1
2
  <script lang="ts">
2
3
  import { Toaster as Sonner, type ToasterProps as SonnerProps } from "svelte-sonner";
3
4
 
4
- const browser = typeof window !== 'undefined';
5
+ const browser = typeof window !== "undefined";
5
6
 
6
7
  let restProps: SonnerProps = $props();
7
-
8
- // Determine theme based on browser preference, fallback to 'light'
9
- // This removes the dependency on mode-watcher which requires ModeWatcher component to be mounted
10
- function getTheme(): 'light' | 'dark' | 'system' {
11
- if (!browser) return 'light';
12
- if (typeof window !== 'undefined' && window.matchMedia?.('(prefers-color-scheme: dark)').matches) {
13
- return 'dark';
8
+
9
+ function getTheme(): "light" | "dark" | "system" {
10
+ if (!browser) return "light";
11
+ if (
12
+ typeof window !== "undefined" &&
13
+ window.matchMedia?.("(prefers-color-scheme: dark)").matches
14
+ ) {
15
+ return "dark";
14
16
  }
15
- return 'light';
17
+ return "light";
16
18
  }
17
19
  </script>
18
20
 
@@ -21,10 +23,14 @@
21
23
  class="toaster group"
22
24
  toastOptions={{
23
25
  classes: {
24
- toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
25
- description: "group-[.toast]:text-muted-foreground",
26
- actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
27
- cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
26
+ toast:
27
+ "group toast group-[.toaster]:rounded-xl group-[.toaster]:border group-[.toaster]:border-border group-[.toaster]:bg-popover group-[.toaster]:text-popover-foreground",
28
+ description: "group-[.toast]:text-muted-foreground group-[.toast]:text-body",
29
+ title: "group-[.toast]:text-body-medium",
30
+ actionButton:
31
+ "group-[.toast]:h-8 group-[.toast]:rounded-lg group-[.toast]:border group-[.toast]:border-input group-[.toast]:bg-background group-[.toast]:px-2 group-[.toast]:text-label",
32
+ cancelButton:
33
+ "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground group-[.toast]:text-label",
28
34
  },
29
35
  }}
30
36
  {...restProps}
@@ -0,0 +1,3 @@
1
+ import Root from "./stepper-button.svelte";
2
+ export { Root, Root as StepperButton };
3
+ export type { StepperKind } from "./stepper-button.svelte";
@@ -0,0 +1,2 @@
1
+ import Root from "./stepper-button.svelte";
2
+ export { Root, Root as StepperButton };
@@ -0,0 +1,37 @@
1
+ <!-- Figma: Stepper Button (Editor / Atoms 171:81). -->
2
+ <script lang="ts">
3
+ import type { HTMLButtonAttributes } from "svelte/elements";
4
+ import IconMinus from "@tabler/icons-svelte/icons/minus";
5
+ import IconPlus from "@tabler/icons-svelte/icons/plus";
6
+ import { cn } from "../../../utils.js";
7
+
8
+ export type StepperKind = "plus" | "minus";
9
+
10
+ let {
11
+ class: className,
12
+ kind = "plus",
13
+ label,
14
+ disabled = false,
15
+ ...restProps
16
+ }: HTMLButtonAttributes & {
17
+ kind?: StepperKind;
18
+ label: string;
19
+ } = $props();
20
+ </script>
21
+
22
+ <button
23
+ type="button"
24
+ aria-label={label}
25
+ {disabled}
26
+ class={cn(
27
+ "inline-flex size-6 shrink-0 items-center justify-center rounded-lg bg-transparent text-foreground transition-colors duration-fast hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 press-feedback",
28
+ className
29
+ )}
30
+ {...restProps}
31
+ >
32
+ {#if kind === "minus"}
33
+ <IconMinus class="size-4 stroke-[1.333]" aria-hidden="true" />
34
+ {:else}
35
+ <IconPlus class="size-4 stroke-[1.333]" aria-hidden="true" />
36
+ {/if}
37
+ </button>
@@ -0,0 +1,9 @@
1
+ import type { HTMLButtonAttributes } from "svelte/elements";
2
+ export type StepperKind = "plus" | "minus";
3
+ type $$ComponentProps = HTMLButtonAttributes & {
4
+ kind?: StepperKind;
5
+ label: string;
6
+ };
7
+ declare const StepperButton: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type StepperButton = ReturnType<typeof StepperButton>;
9
+ export default StepperButton;
@@ -1,10 +1,11 @@
1
+ <!-- Figma: Switch (component set 103:21, node 103:2). -->
1
2
  <script lang="ts" module>
2
3
  import { Switch as SwitchPrimitive, type WithoutChildrenOrChild } from "bits-ui";
3
4
  export type SwitchProps = WithoutChildrenOrChild<SwitchPrimitive.RootProps>;
4
5
  </script>
5
6
 
6
7
  <script lang="ts">
7
- import { cn } from "../../../utils.js";
8
+ import { cn } from "../../../utils.js";
8
9
 
9
10
  let {
10
11
  ref = $bindable(null),
@@ -14,18 +15,22 @@
14
15
  }: SwitchProps = $props();
15
16
  </script>
16
17
 
18
+ <!--
19
+ The track is 36x20. `relative before:absolute before:inset-x-0 before:-inset-y-0.5` adds an invisible 2px above and below,
20
+ so the tap target is 36x24 (the minimum height of a target). Figma keeps the same 24px frame around the 20px track.
21
+ -->
17
22
  <SwitchPrimitive.Root
18
23
  bind:ref
19
24
  bind:checked
20
25
  class={cn(
21
- "focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
26
+ "peer relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input p-0.5 transition-colors duration-base ease-out before:absolute before:inset-x-0 before:-inset-y-0.5 hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:hover:bg-primary/90",
22
27
  className
23
28
  )}
24
29
  {...restProps}
25
30
  >
26
31
  <SwitchPrimitive.Thumb
27
32
  class={cn(
28
- "bg-background pointer-events-none block size-5 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-5"
33
+ "pointer-events-none block size-4 rounded-full bg-background shadow-none transition-transform duration-base ease-out data-[state=checked]:translate-x-4 data-[state=checked]:bg-primary-foreground data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-4"
29
34
  )}
30
35
  />
31
36
  </SwitchPrimitive.Root>
@@ -18,7 +18,7 @@
18
18
 
19
19
  <td
20
20
  bind:this={ref}
21
- class={cn("p-4 align-middle [&:has([role=checkbox])]:pe-0", className)}
21
+ class={cn("text-body p-4 align-middle [&:has([role=checkbox])]:pe-0", className)}
22
22
  {...restProps}
23
23
  >
24
24
  {@render children?.()}
@@ -19,7 +19,7 @@
19
19
  <th
20
20
  bind:this={ref}
21
21
  class={cn(
22
- "text-muted-foreground h-12 px-4 text-start align-middle font-medium [&:has([role=checkbox])]:pe-0",
22
+ "text-caption-medium text-muted-foreground h-9 px-4 text-start align-middle [&:has([role=checkbox])]:pe-0",
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -19,7 +19,7 @@
19
19
  <tr
20
20
  bind:this={ref}
21
21
  class={cn(
22
- "hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
22
+ "border-border hover:bg-accent data-[state=selected]:bg-brand-subtle border-b transition-colors duration-fast",
23
23
  className
24
24
  )}
25
25
  {...restProps}
@@ -16,7 +16,7 @@
16
16
  <TabsPrimitive.List
17
17
  bind:ref
18
18
  class={cn(
19
- "bg-muted text-muted-foreground inline-flex h-10 items-center justify-center rounded-md p-1",
19
+ "bg-accent text-muted-foreground inline-flex h-9 items-center justify-center gap-0.5 rounded-xl p-1",
20
20
  className
21
21
  )}
22
22
  {...restProps}
@@ -16,7 +16,7 @@
16
16
  <TabsPrimitive.Trigger
17
17
  bind:ref
18
18
  class={cn(
19
- "ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-2xs",
19
+ "text-label focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=inactive]:text-muted-foreground inline-flex h-7 items-center justify-center whitespace-nowrap rounded-lg px-3 transition-colors duration-fast focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=inactive]:hover:bg-accent data-[state=inactive]:hover:text-foreground",
20
20
  className
21
21
  )}
22
22
  {...restProps}
@@ -0,0 +1,2 @@
1
+ import Root from "./tag.svelte";
2
+ export { Root, Root as Tag };
@@ -0,0 +1,2 @@
1
+ import Root from "./tag.svelte";
2
+ export { Root, Root as Tag };
@@ -0,0 +1,42 @@
1
+ <!-- Figma: Tag (component set 170:116, node 170:116); radius/lg (8px). -->
2
+ <script lang="ts">
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import IconX from "@tabler/icons-svelte/icons/x";
5
+ import { cn } from "../../../utils.js";
6
+
7
+ let {
8
+ class: className,
9
+ label,
10
+ showRemove = false,
11
+ removeLabel = "Remove tag",
12
+ disabled = false,
13
+ onRemove = undefined,
14
+ }: HTMLAttributes<HTMLSpanElement> & {
15
+ label: string;
16
+ showRemove?: boolean;
17
+ removeLabel?: string;
18
+ disabled?: boolean;
19
+ onRemove?: () => void;
20
+ } = $props();
21
+ </script>
22
+
23
+ <span
24
+ class={cn(
25
+ "inline-flex h-6 max-w-full items-center gap-1 rounded-lg border border-border bg-background px-2 text-label-small text-foreground transition-colors duration-fast",
26
+ disabled ? "pointer-events-none opacity-50" : "hover:bg-accent",
27
+ className
28
+ )}
29
+ >
30
+ <span class="truncate">{label}</span>
31
+ {#if showRemove && onRemove}
32
+ <button
33
+ type="button"
34
+ class="inline-flex size-4 shrink-0 items-center justify-center text-muted-foreground hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
35
+ aria-label={removeLabel}
36
+ {disabled}
37
+ onclick={onRemove}
38
+ >
39
+ <IconX class="size-4 stroke-[1.333]" aria-hidden="true" />
40
+ </button>
41
+ {/if}
42
+ </span>
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes } from "svelte/elements";
2
+ type $$ComponentProps = HTMLAttributes<HTMLSpanElement> & {
3
+ label: string;
4
+ showRemove?: boolean;
5
+ removeLabel?: string;
6
+ disabled?: boolean;
7
+ onRemove?: () => void;
8
+ };
9
+ declare const Tag: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type Tag = ReturnType<typeof Tag>;
11
+ export default Tag;
@@ -1,11 +1,12 @@
1
+ <!-- Figma: Textarea (component set 328:152, node 328:152). -->
1
2
  <script lang="ts" module>
3
+ import type { HTMLTextareaAttributes } from "svelte/elements";
4
+ import type { WithElementRef, WithoutChildren } from "bits-ui";
2
5
 
3
6
  export type TextareaProps = WithoutChildren<WithElementRef<HTMLTextareaAttributes>>;
4
7
  </script>
5
8
 
6
9
  <script lang="ts">
7
- import type { WithElementRef, WithoutChildren } from "bits-ui";
8
- import type { HTMLTextareaAttributes } from "svelte/elements";
9
10
  import { cn } from "../../../utils.js";
10
11
 
11
12
  let {
@@ -19,7 +20,7 @@
19
20
  <textarea
20
21
  bind:this={ref}
21
22
  class={cn(
22
- "border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:ring-ring flex min-h-[80px] w-full rounded-md border px-3 py-2 text-sm focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
23
+ "flex min-h-[5.5rem] w-full min-w-0 rounded-lg border border-input bg-background px-3 py-2 text-body text-foreground transition-colors duration-fast placeholder:text-muted-foreground hover:bg-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive",
23
24
  className
24
25
  )}
25
26
  bind:value
@@ -1,6 +1,6 @@
1
- export type TextareaProps = WithoutChildren<WithElementRef<HTMLTextareaAttributes>>;
2
- import type { WithElementRef, WithoutChildren } from "bits-ui";
3
1
  import type { HTMLTextareaAttributes } from "svelte/elements";
2
+ import type { WithElementRef, WithoutChildren } from "bits-ui";
3
+ export type TextareaProps = WithoutChildren<WithElementRef<HTMLTextareaAttributes>>;
4
4
  declare const Textarea: import("svelte").Component<Omit<WithElementRef<HTMLTextareaAttributes>, "children">, {}, "ref" | "value">;
5
5
  type Textarea = ReturnType<typeof Textarea>;
6
6
  export default Textarea;
@@ -1,18 +1,18 @@
1
+ <!-- Figma: Toolbar toggle pattern (brand-subtle when on). -->
1
2
  <script lang="ts" module>
2
- import { type VariantProps, tv } from "tailwind-variants";
3
+ import type { VariantProps } from "tailwind-variants";
3
4
 
4
5
  export const toggleVariants = tv({
5
- base: "ring-offset-background hover:bg-muted hover:text-muted-foreground focus-visible:ring-ring data-[state=on]:bg-accent data-[state=on]:text-accent-foreground inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
6
+ base: "inline-flex items-center justify-center gap-2 rounded-lg text-label transition-colors duration-fast focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-brand-subtle data-[state=on]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333] hover:bg-accent",
6
7
  variants: {
7
8
  variant: {
8
- default: "bg-transparent",
9
- outline:
10
- "border-input hover:bg-accent hover:text-accent-foreground border bg-transparent",
9
+ default: "bg-transparent text-foreground",
10
+ outline: "border border-input bg-background text-foreground hover:bg-accent",
11
11
  },
12
12
  size: {
13
- default: "h-10 min-w-10 px-3",
14
- sm: "h-9 min-w-9 px-2.5",
15
- lg: "h-11 min-w-11 px-5",
13
+ default: "h-9 min-w-9 px-3",
14
+ sm: "h-8 min-w-8 px-2",
15
+ lg: "h-9 min-w-9 px-3",
16
16
  },
17
17
  },
18
18
  defaultVariants: {
@@ -28,7 +28,7 @@
28
28
 
29
29
  <script lang="ts">
30
30
  import { Toggle as TogglePrimitive } from "bits-ui";
31
- import { cn } from "../../../utils.js";
31
+ import { cn, tv } from "../../../utils.js";
32
32
 
33
33
  let {
34
34
  ref = $bindable(null),
@@ -1,4 +1,4 @@
1
- import { type VariantProps } from "tailwind-variants";
1
+ import type { VariantProps } from "tailwind-variants";
2
2
  export declare const toggleVariants: import("tailwind-variants").TVReturnType<{
3
3
  variant: {
4
4
  default: string;
@@ -9,15 +9,18 @@ export declare const toggleVariants: import("tailwind-variants").TVReturnType<{
9
9
  sm: string;
10
10
  lg: string;
11
11
  };
12
- }, undefined, "ring-offset-background hover:bg-muted hover:text-muted-foreground focus-visible:ring-ring data-[state=on]:bg-accent data-[state=on]:text-accent-foreground inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", import("tailwind-variants/dist/config.js").TVConfig<{
13
- variant: {
14
- default: string;
15
- outline: string;
16
- };
17
- size: {
18
- default: string;
19
- sm: string;
20
- lg: string;
12
+ }, undefined, "inline-flex items-center justify-center gap-2 rounded-lg text-label transition-colors duration-fast focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-brand-subtle data-[state=on]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333] hover:bg-accent", {
13
+ responsiveVariants?: boolean | (string | number | symbol)[] | {
14
+ size?: boolean | (string | number | symbol)[] | undefined;
15
+ variant?: boolean | (string | number | symbol)[] | undefined;
16
+ } | undefined;
17
+ } & import("tailwind-variants/dist/config.js").TWMConfig & {
18
+ twMergeConfig: {
19
+ classGroups: {
20
+ "font-size": {
21
+ text: ("display-hero" | "heading-page" | "heading-section" | "body" | "body-medium" | "body-large" | "caption" | "caption-medium" | "label" | "label-small" | "code")[];
22
+ }[];
23
+ };
21
24
  };
22
25
  }, {
23
26
  variant: {
@@ -29,16 +32,6 @@ export declare const toggleVariants: import("tailwind-variants").TVReturnType<{
29
32
  sm: string;
30
33
  lg: string;
31
34
  };
32
- }>, {
33
- variant: {
34
- default: string;
35
- outline: string;
36
- };
37
- size: {
38
- default: string;
39
- sm: string;
40
- lg: string;
41
- };
42
35
  }, undefined, import("tailwind-variants").TVReturnType<{
43
36
  variant: {
44
37
  default: string;
@@ -49,7 +42,7 @@ export declare const toggleVariants: import("tailwind-variants").TVReturnType<{
49
42
  sm: string;
50
43
  lg: string;
51
44
  };
52
- }, undefined, "ring-offset-background hover:bg-muted hover:text-muted-foreground focus-visible:ring-ring data-[state=on]:bg-accent data-[state=on]:text-accent-foreground inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", import("tailwind-variants/dist/config.js").TVConfig<{
45
+ }, undefined, "inline-flex items-center justify-center gap-2 rounded-lg text-label transition-colors duration-fast focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-brand-subtle data-[state=on]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:stroke-[1.333] hover:bg-accent", import("tailwind-variants/dist/config.js").TVConfig<{
53
46
  variant: {
54
47
  default: string;
55
48
  outline: string;
@@ -24,7 +24,7 @@
24
24
  {sideOffset}
25
25
  dir={$textDirection}
26
26
  class={cn(
27
- "bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md border px-3 py-1.5 text-sm shadow-md",
27
+ "bg-popover text-popover-foreground border-border text-caption animate-in fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-lg border px-3 py-1.5",
28
28
  className
29
29
  )}
30
30
  {...restProps}
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Some components of the design system carry English of their own (the close button of a window, "Back" in the path above
3
- * the files, "Loading PDF..."). The design system lets a page replace each of those words with a prop, but a component that
3
+ * the files, "Loading PDF…"). The design system lets a page replace each of those words with a prop, but a component that
4
4
  * is used without the prop quietly shows English. This reads the syntax tree of each file of a package and reports a
5
5
  * component that shows words and is used without all of them.
6
6
  */
@@ -3,7 +3,7 @@ import path from 'node:path';
3
3
  import { lineOf, listSourceFiles, parseFile, walkTree } from "./syntaxTree.js";
4
4
  /**
5
5
  * Some components of the design system carry English of their own (the close button of a window, "Back" in the path above
6
- * the files, "Loading PDF..."). The design system lets a page replace each of those words with a prop, but a component that
6
+ * the files, "Loading PDF…"). The design system lets a page replace each of those words with a prop, but a component that
7
7
  * is used without the prop quietly shows English. This reads the syntax tree of each file of a package and reports a
8
8
  * component that shows words and is used without all of them.
9
9
  */
@@ -2,19 +2,15 @@
2
2
  * Paths are relative so Vite resolves them when consumers import fonts.css.
3
3
  * Site also mirrors these under static/fonts for /fonts/* URLs in app.html.
4
4
  *
5
- * ## OTS / Chromium validation (Sep 2026)
6
- * Several Inter / Cousine / JetBrains Mono WOFF2 files under src/lib/fonts fail
7
- * Chromium OpenType Sanitizer (console: "OTS parsing error", "Failed to convert
8
- * WOFF 2.0 font to SFNT") when served via Vite `@fs` in local monorepo links.
9
- * That does NOT mean CSS @font-face is wrong — the binary files themselves are
10
- * incomplete/corrupt for OTS. Google Fonts CDN faces (site app.html) still work
11
- * for the same family names, so UI typography stays correct even when local
12
- * @font-face errors appear in the console.
13
- *
14
- * Keep these @font-face rules for packaging / offline / consumers that ship
15
- * clean binaries. Prefer replacing the WOFF2 files with official releases
16
- * (rsms/inter, google/fonts) when cleaning the console is required — do not
17
- * delete @font-face solely to silence OTS.
5
+ * ## Font binaries (5 Nov 2026)
6
+ * The Inter files were corrupt (UTF-8 mangled: Chromium logged "OTS parsing
7
+ * error" and silently fell back to system-ui). They are now the official
8
+ * releases: Inter 4.1.1 (rsms/inter, `web/*.woff2` and `InterVariable*.woff2`
9
+ * from the npm package inter-ui) and JetBrains Mono Regular (latin subset,
10
+ * @fontsource/jetbrains-mono 5.3.0). The file names did not change.
11
+ * Check a file with: node -e "const b=require('fs').readFileSync(P);
12
+ * console.log(b.readUInt32BE(8)===b.length)" (the WOFF2 header stores the
13
+ * length of the file; a mismatch means the file was damaged).
18
14
  */
19
15
 
20
16
  /* Tailwind config */
@@ -111,7 +107,15 @@
111
107
  font-display: swap;
112
108
  }
113
109
 
114
- /* JETBRAINS MONO: Monospace Display (Developer API) */
110
+ /* JETBRAINS MONO: code / text-code (Figma style Code/Default is Regular) */
111
+ @font-face {
112
+ font-family: 'JetBrains Mono';
113
+ src: url('../fonts/JetBrainsMono/JetBrainsMono-Regular.woff2') format('woff2');
114
+ font-weight: 400;
115
+ font-style: normal;
116
+ font-display: swap;
117
+ }
118
+
115
119
  @font-face {
116
120
  font-family: 'JetBrains Mono';
117
121
  src: url('../fonts/JetBrainsMono/JetBrainsMono-ExtraBold.woff2') format('woff2');
@@ -4,6 +4,7 @@
4
4
  /* Import fonts css */
5
5
  /* @import './fonts.css' layer(utilities); */
6
6
  @import './fonts.css';
7
+ @import './tokens.css';
7
8
 
8
9
  /* Tailwind config load *after* main imports - needed for tailwind 4
9
10
  go 3 levels up in development mode, 2 levels up in production mode*/
@@ -13,14 +14,10 @@ go 3 levels up in development mode, 2 levels up in production mode*/
13
14
  @theme {
14
15
  --font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
15
16
 
16
- --color-dark: hsl(var(--dark));
17
- --color-deep-forest-green: hsl(var(--deep-forest-green));
18
- --color-sage-green: hsl(var(--sage-green));
17
+ /* Brand primitives: hex values live in tokens.css (@theme); legacy HSL triplets below for hsl(var(--*)) consumers */
19
18
  --color-sunny-yellow: hsl(var(--sunny-yellow));
20
- --color-light-green: hsl(var(--light-green));
21
19
  --color-forest-green: hsl(var(--forest-green));
22
20
  --color-forest-green-dark: hsl(var(--forest-green-dark));
23
- --color-error: hsl(var(--error));
24
21
  --color-error-dark: hsl(var(--error-dark));
25
22
  --color-light-error: hsl(var(--light-error));
26
23
  --color-grey1: hsl(var(--grey1));
@@ -149,10 +146,10 @@ go 3 levels up in development mode, 2 levels up in production mode*/
149
146
  --deep-forest-green: 116.3 25.4% 24.7%; /* #314F2F */
150
147
  --sage-green: 101.6 25.8% 52.9%; /* #7BA668 */
151
148
  --sunny-yellow: 45 89% 65.7%;
152
- --light-green: 88.2 20% 83.3%; /* #D5DDCC */
153
- --forest-green: 88.2 20% 83.3%; /* #D5DDCC */
149
+ --light-green: 95.3 38.9% 90.2%; /* #E3F0DB */
150
+ --forest-green: 95.3 38.9% 90.2%; /* legacy alias of light-green tint */
154
151
  --forest-green-dark: 116.3 25.4% 24.7%; /* #314F2F */
155
- --error: 0 88.6% 65.7%; /* #F55A5A */
152
+ --error: 357.5 100% 43.1%; /* #DC0009 */
156
153
  --error-dark: 0 89% 55%;
157
154
  --light-error: 0 45.5% 93.7%;
158
155
  /* Greys */
@@ -195,7 +192,7 @@ go 3 levels up in development mode, 2 levels up in production mode*/
195
192
 
196
193
  /*** GLOBAL STYLE CLASSES ***/
197
194
  * {
198
- border-color: hsl(var(--border));
195
+ border-color: var(--border);
199
196
  }
200
197
 
201
198
  button,
@@ -210,8 +207,7 @@ go 3 levels up in development mode, 2 levels up in production mode*/
210
207
  overflow: hidden; /* prevent scroll */
211
208
  margin: 0;
212
209
  font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
213
- background-color: hsl(var(--background));
214
- color: hsl(var(--foreground));
210
+ @apply bg-background text-foreground;
215
211
  }
216
212
 
217
213
  /* This is the root container of the website(app.html) */
@@ -613,10 +609,11 @@ go 3 levels up in development mode, 2 levels up in production mode*/
613
609
  }
614
610
 
615
611
  /* Modal System */
612
+ /* The scrim of every overlay: the muted foreground token at 80%, set on the colour, with a 3px blur (Figma `Overlay/Scrim blur`) */
616
613
  .modal-overlay {
617
614
  @apply fixed inset-0 z-50;
618
- backdrop-filter: blur(30px);
619
- background-color: rgba(255, 255, 255, 0.5);
615
+ backdrop-filter: blur(3px);
616
+ background-color: color-mix(in srgb, var(--muted-foreground) 80%, transparent);
620
617
  }
621
618
 
622
619
  .modal-shadow {
@@ -990,11 +987,3 @@ go 3 levels up in development mode, 2 levels up in production mode*/
990
987
  background-color: color-mix(in srgb, hsl(var(--deep-forest-green)) 90%, black) !important;
991
988
  color: white !important;
992
989
  }
993
-
994
- .accordion-trigger {
995
- height: 52px;
996
- }
997
-
998
- [data-radix-collapsible-trigger] {
999
- min-height: 52px !important;
1000
- }