@selvajs/ui 6.6.0-beta.17 → 6.6.0-beta.19

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 (221) hide show
  1. package/dist/components/ErrorScreen.svelte +1 -1
  2. package/dist/components/compute/AppLayout.svelte +2 -2
  3. package/dist/components/compute/ComputeApp.svelte +1 -1
  4. package/dist/components/compute/ComputeApp.svelte.d.ts +1 -1
  5. package/dist/components/compute/ComputeMessagesDialog.svelte +3 -3
  6. package/dist/components/compute/SolveMessages.svelte +3 -3
  7. package/dist/components/layout/AppShell.svelte +1 -1
  8. package/dist/components/layout/FooterItemRenderer.svelte +1 -1
  9. package/dist/components/layout/FooterItemRenderer.svelte.d.ts +1 -1
  10. package/dist/components/layout/PageContent.svelte +3 -2
  11. package/dist/components/layout/PageFooter.svelte +3 -3
  12. package/dist/components/layout/PageHeader.svelte +2 -2
  13. package/dist/components/preview/ChartOutput.svelte +3 -3
  14. package/dist/components/preview/Group.svelte +3 -3
  15. package/dist/components/preview/HelpButton.svelte +1 -1
  16. package/dist/components/preview/ImageOutput.svelte +3 -3
  17. package/dist/components/preview/InputControl.svelte +12 -12
  18. package/dist/components/preview/OutputDisplay.svelte +4 -4
  19. package/dist/components/preview/TabBar.svelte +2 -2
  20. package/dist/components/preview/TabContent.svelte +7 -7
  21. package/dist/components/preview/TabLayout.svelte +3 -3
  22. package/dist/components/preview/inputs/CheckboxInput.svelte +1 -1
  23. package/dist/components/preview/inputs/ChecklistInput.svelte +2 -2
  24. package/dist/components/preview/inputs/ColorInput.svelte +6 -6
  25. package/dist/components/preview/inputs/DropdownInput.svelte +3 -3
  26. package/dist/components/preview/inputs/FileInput.svelte +14 -9
  27. package/dist/components/preview/inputs/GeometryInput.svelte +4 -4
  28. package/dist/components/preview/inputs/GeometryInput.svelte.d.ts +1 -1
  29. package/dist/components/preview/inputs/NumberInput.svelte +8 -8
  30. package/dist/components/preview/inputs/OptionGlyph.svelte +1 -1
  31. package/dist/components/preview/inputs/OptionGlyph.svelte.d.ts +1 -1
  32. package/dist/components/preview/inputs/SegmentedInput.svelte +4 -4
  33. package/dist/components/preview/inputs/TextInput.svelte +5 -5
  34. package/dist/components/preview/inputs/TileInput.svelte +5 -3
  35. package/dist/components/primitives/CalculateButton.svelte +1 -1
  36. package/dist/components/primitives/FilterableDropdown.svelte +13 -1
  37. package/dist/components/primitives/FilterableDropdown.svelte.d.ts +5 -0
  38. package/dist/components/primitives/button/button.svelte +1 -1
  39. package/dist/components/primitives/button/button.svelte.d.ts +1 -1
  40. package/dist/components/primitives/dialog/dialog-content.svelte +1 -1
  41. package/dist/components/primitives/input-group/input-group-input.svelte.d.ts +1 -1
  42. package/dist/components/primitives/mode-toggle/mode-toggle.svelte +2 -2
  43. package/dist/components/primitives/select/select-content.svelte +1 -1
  44. package/dist/components/primitives/tabs/tabs-list.svelte +1 -1
  45. package/dist/components/primitives/tabs/tabs-list.svelte.d.ts +3 -3
  46. package/dist/components/primitives/tabs/tabs-trigger.svelte +1 -1
  47. package/dist/components/primitives/tabs/tabs-trigger.svelte.d.ts +3 -3
  48. package/dist/components/primitives/toggle/toggle.svelte +1 -1
  49. package/dist/components/primitives/toggle/toggle.svelte.d.ts +3 -3
  50. package/dist/components/viewer/MeshMetadataPanel.svelte +1 -1
  51. package/dist/components/viewer/SceneManager.svelte +1 -1
  52. package/dist/components/viewer/Viewer.svelte +3 -35
  53. package/dist/components/viewer/Viewer.svelte.d.ts +1 -1
  54. package/dist/components/viewer/ViewerDock.svelte +10 -10
  55. package/dist/components/viewer/ViewerDock.svelte.d.ts +1 -1
  56. package/dist/composables/useFooterItem.svelte.d.ts +1 -1
  57. package/dist/composables/useFooterItem.svelte.js +1 -1
  58. package/dist/constants.js +1 -2
  59. package/dist/contexts/hostContext.svelte.d.ts +1 -1
  60. package/dist/index.d.ts +1 -0
  61. package/dist/index.js +1 -0
  62. package/dist/styles/base.css +49 -44
  63. package/package.json +17 -12
  64. package/src/lib/components/ErrorScreen.svelte +1 -1
  65. package/src/lib/components/compute/AppLayout.svelte +3 -3
  66. package/src/lib/components/compute/ComputeApp.svelte +1 -1
  67. package/src/lib/components/compute/ComputeMessagesDialog.svelte +4 -4
  68. package/src/lib/components/compute/SolveMessages.svelte +5 -5
  69. package/src/lib/components/layout/AppShell.svelte +1 -1
  70. package/src/lib/components/layout/FooterItemRenderer.svelte +1 -1
  71. package/src/lib/components/layout/PageContent.svelte +3 -2
  72. package/src/lib/components/layout/PageFooter.svelte +3 -3
  73. package/src/lib/components/layout/PageHeader.svelte +2 -2
  74. package/src/lib/components/layout/SideNav.svelte +1 -1
  75. package/src/lib/components/preview/ChartOutput.svelte +3 -3
  76. package/src/lib/components/preview/Group.svelte +3 -3
  77. package/src/lib/components/preview/HelpButton.svelte +1 -1
  78. package/src/lib/components/preview/ImageOutput.svelte +3 -3
  79. package/src/lib/components/preview/InputControl.svelte +12 -12
  80. package/src/lib/components/preview/OutputDisplay.svelte +4 -4
  81. package/src/lib/components/preview/TabBar.svelte +2 -2
  82. package/src/lib/components/preview/TabContent.svelte +7 -7
  83. package/src/lib/components/preview/TabLayout.svelte +3 -3
  84. package/src/lib/components/preview/inputs/CheckboxInput.svelte +1 -1
  85. package/src/lib/components/preview/inputs/ChecklistInput.svelte +2 -2
  86. package/src/lib/components/preview/inputs/ColorInput.svelte +6 -6
  87. package/src/lib/components/preview/inputs/DropdownInput.svelte +3 -3
  88. package/src/lib/components/preview/inputs/FileInput.svelte +14 -9
  89. package/src/lib/components/preview/inputs/GeometryInput.svelte +4 -4
  90. package/src/lib/components/preview/inputs/NumberInput.svelte +8 -8
  91. package/src/lib/components/preview/inputs/OptionGlyph.svelte +2 -2
  92. package/src/lib/components/preview/inputs/SegmentedInput.svelte +4 -4
  93. package/src/lib/components/preview/inputs/TextInput.svelte +5 -5
  94. package/src/lib/components/preview/inputs/TileInput.svelte +5 -3
  95. package/src/lib/components/primitives/CalculateButton.svelte +1 -1
  96. package/src/lib/components/primitives/Callout.svelte +1 -1
  97. package/src/lib/components/primitives/FilterableDropdown.svelte +14 -2
  98. package/src/lib/components/primitives/IssueList.svelte +1 -1
  99. package/src/lib/components/primitives/SeverityIcon.svelte +1 -1
  100. package/src/lib/components/primitives/StateDisplay.svelte +1 -1
  101. package/src/lib/components/primitives/alert-dialog/alert-dialog-action.svelte +2 -2
  102. package/src/lib/components/primitives/alert-dialog/alert-dialog-cancel.svelte +2 -2
  103. package/src/lib/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
  104. package/src/lib/components/primitives/alert-dialog/alert-dialog-description.svelte +1 -1
  105. package/src/lib/components/primitives/alert-dialog/alert-dialog-footer.svelte +1 -1
  106. package/src/lib/components/primitives/alert-dialog/alert-dialog-header.svelte +1 -1
  107. package/src/lib/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
  108. package/src/lib/components/primitives/alert-dialog/alert-dialog-title.svelte +1 -1
  109. package/src/lib/components/primitives/badge/badge.svelte +1 -1
  110. package/src/lib/components/primitives/button/button.svelte +1 -1
  111. package/src/lib/components/primitives/button-group/button-group-separator.svelte +2 -2
  112. package/src/lib/components/primitives/button-group/button-group-text.svelte +1 -1
  113. package/src/lib/components/primitives/button-group/button-group.svelte +1 -1
  114. package/src/lib/components/primitives/card/card-content.svelte +1 -1
  115. package/src/lib/components/primitives/card/card-description.svelte +1 -1
  116. package/src/lib/components/primitives/card/card-footer.svelte +1 -1
  117. package/src/lib/components/primitives/card/card-header.svelte +1 -1
  118. package/src/lib/components/primitives/card/card-title.svelte +1 -1
  119. package/src/lib/components/primitives/card/card.svelte +1 -1
  120. package/src/lib/components/primitives/checkbox/checkbox.svelte +1 -1
  121. package/src/lib/components/primitives/command/command-dialog.svelte +2 -2
  122. package/src/lib/components/primitives/command/command-empty.svelte +1 -1
  123. package/src/lib/components/primitives/command/command-group.svelte +1 -1
  124. package/src/lib/components/primitives/command/command-input.svelte +2 -2
  125. package/src/lib/components/primitives/command/command-item.svelte +1 -1
  126. package/src/lib/components/primitives/command/command-link-item.svelte +1 -1
  127. package/src/lib/components/primitives/command/command-list.svelte +1 -1
  128. package/src/lib/components/primitives/command/command-separator.svelte +1 -1
  129. package/src/lib/components/primitives/command/command-shortcut.svelte +1 -1
  130. package/src/lib/components/primitives/command/command.svelte +1 -1
  131. package/src/lib/components/primitives/context-menu/context-menu-checkbox-item.svelte +1 -1
  132. package/src/lib/components/primitives/context-menu/context-menu-content.svelte +1 -1
  133. package/src/lib/components/primitives/context-menu/context-menu-group-heading.svelte +1 -1
  134. package/src/lib/components/primitives/context-menu/context-menu-item.svelte +1 -1
  135. package/src/lib/components/primitives/context-menu/context-menu-label.svelte +1 -1
  136. package/src/lib/components/primitives/context-menu/context-menu-radio-item.svelte +1 -1
  137. package/src/lib/components/primitives/context-menu/context-menu-separator.svelte +1 -1
  138. package/src/lib/components/primitives/context-menu/context-menu-shortcut.svelte +1 -1
  139. package/src/lib/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
  140. package/src/lib/components/primitives/context-menu/context-menu-sub-trigger.svelte +1 -1
  141. package/src/lib/components/primitives/dialog/dialog-content.svelte +2 -2
  142. package/src/lib/components/primitives/dialog/dialog-description.svelte +1 -1
  143. package/src/lib/components/primitives/dialog/dialog-footer.svelte +1 -1
  144. package/src/lib/components/primitives/dialog/dialog-header.svelte +1 -1
  145. package/src/lib/components/primitives/dialog/dialog-overlay.svelte +1 -1
  146. package/src/lib/components/primitives/dialog/dialog-title.svelte +1 -1
  147. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  148. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-content.svelte +1 -1
  149. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
  150. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-item.svelte +1 -1
  151. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-label.svelte +1 -1
  152. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
  153. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  154. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +1 -1
  155. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  156. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +1 -1
  157. package/src/lib/components/primitives/empty/empty-content.svelte +1 -1
  158. package/src/lib/components/primitives/empty/empty-description.svelte +1 -1
  159. package/src/lib/components/primitives/empty/empty-header.svelte +1 -1
  160. package/src/lib/components/primitives/empty/empty-media.svelte +1 -1
  161. package/src/lib/components/primitives/empty/empty-title.svelte +1 -1
  162. package/src/lib/components/primitives/empty/empty.svelte +1 -1
  163. package/src/lib/components/primitives/field/field-content.svelte +1 -1
  164. package/src/lib/components/primitives/field/field-description.svelte +1 -1
  165. package/src/lib/components/primitives/field/field-error.svelte +1 -1
  166. package/src/lib/components/primitives/field/field-group.svelte +1 -1
  167. package/src/lib/components/primitives/field/field-label.svelte +2 -2
  168. package/src/lib/components/primitives/field/field-legend.svelte +1 -1
  169. package/src/lib/components/primitives/field/field-separator.svelte +2 -2
  170. package/src/lib/components/primitives/field/field-set.svelte +1 -1
  171. package/src/lib/components/primitives/field/field-title.svelte +1 -1
  172. package/src/lib/components/primitives/field/field.svelte +1 -1
  173. package/src/lib/components/primitives/input/input.svelte +1 -1
  174. package/src/lib/components/primitives/input-group/input-group-addon.svelte +1 -1
  175. package/src/lib/components/primitives/input-group/input-group-button.svelte +2 -2
  176. package/src/lib/components/primitives/input-group/input-group-input.svelte +2 -2
  177. package/src/lib/components/primitives/input-group/input-group-text.svelte +1 -1
  178. package/src/lib/components/primitives/input-group/input-group-textarea.svelte +2 -2
  179. package/src/lib/components/primitives/input-group/input-group.svelte +1 -1
  180. package/src/lib/components/primitives/label/label.svelte +1 -1
  181. package/src/lib/components/primitives/mode-toggle/mode-toggle.svelte +2 -2
  182. package/src/lib/components/primitives/popover/popover-content.svelte +1 -1
  183. package/src/lib/components/primitives/popover/popover-description.svelte +1 -1
  184. package/src/lib/components/primitives/popover/popover-header.svelte +1 -1
  185. package/src/lib/components/primitives/popover/popover-title.svelte +1 -1
  186. package/src/lib/components/primitives/popover/popover-trigger.svelte +1 -1
  187. package/src/lib/components/primitives/resizable/resizable-handle.svelte +1 -1
  188. package/src/lib/components/primitives/resizable/resizable-pane-group.svelte +1 -1
  189. package/src/lib/components/primitives/scroll-area/scroll-area-scrollbar.svelte +1 -1
  190. package/src/lib/components/primitives/scroll-area/scroll-area.svelte +1 -1
  191. package/src/lib/components/primitives/search/search.svelte +1 -1
  192. package/src/lib/components/primitives/select/select-content.svelte +2 -2
  193. package/src/lib/components/primitives/select/select-group-heading.svelte +1 -1
  194. package/src/lib/components/primitives/select/select-item.svelte +1 -1
  195. package/src/lib/components/primitives/select/select-label.svelte +1 -1
  196. package/src/lib/components/primitives/select/select-scroll-down-button.svelte +1 -1
  197. package/src/lib/components/primitives/select/select-scroll-up-button.svelte +1 -1
  198. package/src/lib/components/primitives/select/select-separator.svelte +2 -2
  199. package/src/lib/components/primitives/select/select-trigger.svelte +1 -1
  200. package/src/lib/components/primitives/separator/separator.svelte +1 -1
  201. package/src/lib/components/primitives/slider/slider.svelte +1 -1
  202. package/src/lib/components/primitives/spinner/spinner.svelte +1 -1
  203. package/src/lib/components/primitives/switch/switch.svelte +1 -1
  204. package/src/lib/components/primitives/tabs/tabs-content.svelte +1 -1
  205. package/src/lib/components/primitives/tabs/tabs-list.svelte +2 -2
  206. package/src/lib/components/primitives/tabs/tabs-trigger.svelte +2 -2
  207. package/src/lib/components/primitives/tabs/tabs.svelte +1 -1
  208. package/src/lib/components/primitives/textarea/textarea.svelte +1 -1
  209. package/src/lib/components/primitives/toggle/toggle.svelte +2 -2
  210. package/src/lib/components/primitives/toggle-group/toggle-group-item.svelte +2 -2
  211. package/src/lib/components/primitives/toggle-group/toggle-group.svelte +2 -2
  212. package/src/lib/components/primitives/tooltip/tooltip-content.svelte +1 -1
  213. package/src/lib/components/viewer/MeshMetadataPanel.svelte +1 -1
  214. package/src/lib/components/viewer/SceneManager.svelte +1 -1
  215. package/src/lib/components/viewer/Viewer.svelte +4 -36
  216. package/src/lib/components/viewer/ViewerDock.svelte +11 -11
  217. package/src/lib/composables/useFooterItem.svelte.ts +1 -1
  218. package/src/lib/constants.ts +1 -2
  219. package/src/lib/contexts/hostContext.svelte.ts +1 -1
  220. package/src/lib/index.ts +1 -0
  221. package/src/lib/styles/base.css +49 -44
@@ -3,7 +3,7 @@
3
3
  import * as Card from './primitives/card/index.js';
4
4
  import { Button } from './primitives/button/index.js';
5
5
  import Callout from './primitives/Callout.svelte';
6
- import { getLocaleContext } from '../i18n/localeContext.svelte';
6
+ import { getLocaleContext } from '../i18n/localeContext.svelte.js';
7
7
 
8
8
  interface Props {
9
9
  status?: number;
@@ -11,9 +11,9 @@
11
11
  import SolvingIndicator from '../primitives/SolvingIndicator.svelte';
12
12
  import TabLayout from '../preview/TabLayout.svelte';
13
13
  import CollapsedPanelStrip from './CollapsedPanelStrip.svelte';
14
- import * as Resizable from '../primitives/resizable';
14
+ import * as Resizable from '../primitives/resizable/index.js';
15
15
  import * as DropdownMenu from '../primitives/dropdown-menu/index.js';
16
- import { Button } from '../..';
16
+ import { Button } from '../../index.js';
17
17
  import ParameterPresetManager from './ParameterPresetManager.svelte';
18
18
  import { runPanelAction } from '../../compute/run-panel-action';
19
19
  import { getLocaleContext } from '../../i18n/localeContext.svelte';
@@ -57,7 +57,7 @@
57
57
  footerText?: string;
58
58
  /**
59
59
  * How long one solve may take before the client aborts it (ms). Pass the same value the
60
- * server enforces (`COMPUTE_SOLVE_DEADLINE_MS`), or the client aborts solves that would
60
+ * server enforces for this definition's compute server, or the client aborts solves that would
61
61
  * have finished.
62
62
  */
63
63
  solveDeadlineMs: number;
@@ -36,7 +36,7 @@ interface Props {
36
36
  footerText?: string;
37
37
  /**
38
38
  * How long one solve may take before the client aborts it (ms). Pass the same value the
39
- * server enforces (`COMPUTE_SOLVE_DEADLINE_MS`), or the client aborts solves that would
39
+ * server enforces for this definition's compute server, or the client aborts solves that would
40
40
  * have finished.
41
41
  */
42
42
  solveDeadlineMs: number;
@@ -8,10 +8,10 @@
8
8
 
9
9
  import type { Snippet } from 'svelte';
10
10
  import type { SolveDiagnostic } from '@selvajs/solve/shared';
11
- import * as Dialog from '../primitives/dialog';
11
+ import * as Dialog from '../primitives/dialog/index.js';
12
12
  import IssueList, { type Issue } from '../primitives/IssueList.svelte';
13
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
14
- import { formatCount } from '../../i18n/messages';
13
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
14
+ import { formatCount } from '../../i18n/messages.js';
15
15
 
16
16
  interface Props {
17
17
  /** The last solve's messages. Preferred over `errors`/`warnings` when both are given. */
@@ -16,10 +16,10 @@
16
16
  import { LoaderCircle } from '@lucide/svelte';
17
17
  import type { SolveDiagnostic } from '@selvajs/solve/shared';
18
18
  import type { LiveSolveState, SolvePhase } from '@selvajs/solve/client';
19
- import { Button } from '../primitives/button';
19
+ import { Button } from '../primitives/button/index.js';
20
20
  import IssueList, { type Issue } from '../primitives/IssueList.svelte';
21
21
  import SeverityIcon from '../primitives/SeverityIcon.svelte';
22
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
22
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
23
23
 
24
24
  interface Props {
25
25
  /** What the running (or most recent) solve has said over the live channel. */
@@ -319,7 +319,7 @@
319
319
  title={t.solveMessagesEscHint}
320
320
  >
321
321
  {t.solveMessagesAbort}
322
- <kbd class="px-1 font-sans rounded-sm border border-border text-2xs opacity-70">
322
+ <kbd class="px-1 rounded-sm border border-border font-sans text-2xs opacity-70">
323
323
  Esc
324
324
  </kbd>
325
325
  </Button>
@@ -101,7 +101,7 @@
101
101
  // from the main column's left edge — that one spans the full body height.
102
102
  const mainClass = $derived(
103
103
  _mode === 'fixed'
104
- ? 'min-h-0 flex-1 overflow-y-auto'
104
+ ? 'min-h-0 min-w-0 flex-1 overflow-y-auto'
105
105
  : 'min-w-0 flex-1 overflow-y-auto border-border sm:border-l'
106
106
  );
107
107
  </script>
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { FooterItem } from '../../contexts/footerContext.svelte';
2
+ import type { FooterItem } from '../../contexts/footerContext.svelte.js';
3
3
 
4
4
  let { item }: { item: FooterItem } = $props();
5
5
 
@@ -1,4 +1,4 @@
1
- import type { FooterItem } from '../../contexts/footerContext.svelte';
1
+ import type { FooterItem } from '../../contexts/footerContext.svelte.js';
2
2
  type $$ComponentProps = {
3
3
  item: FooterItem;
4
4
  };
@@ -7,6 +7,7 @@
7
7
  let { class: className = '', children }: PageContentProps = $props();
8
8
  </script>
9
9
 
10
- <main class={`px-(--page-px) py-(--page-py) ${className}`}>
10
+ <!-- One content width for every page, so moving between pages doesn't change the frame. -->
11
+ <div class={`max-w-6xl min-w-0 mx-auto w-full px-(--page-px) py-(--page-py) ${className}`}>
11
12
  {@render children?.()}
12
- </main>
13
+ </div>
@@ -2,11 +2,11 @@
2
2
  import type { Snippet } from 'svelte';
3
3
  import { CircleAlert, TriangleAlert, Info } from '@lucide/svelte';
4
4
  import type { SolveDiagnostic } from '@selvajs/solve/shared';
5
- import { useFooter } from '../../contexts/footerContext.svelte';
5
+ import { useFooter } from '../../contexts/footerContext.svelte.js';
6
6
  import ComputeMessagesDialog from '../compute/ComputeMessagesDialog.svelte';
7
7
  import FooterItemRenderer from './FooterItemRenderer.svelte';
8
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
9
- import { formatCount, formatMessage } from '../../i18n/messages';
8
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
9
+ import { formatCount, formatMessage } from '../../i18n/messages.js';
10
10
 
11
11
  interface Props {
12
12
  errors?: string[];
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
- import { ModeToggle } from '../primitives/mode-toggle';
3
+ import { ModeToggle } from '../primitives/mode-toggle/index.js';
4
4
 
5
5
  interface PageHeaderProps {
6
6
  homeUrl?: string;
@@ -34,7 +34,7 @@
34
34
  <div class="gap-2 sm:gap-5 flex h-(--header-h) items-center px-(--page-px)">
35
35
  <!-- Logo -->
36
36
  <a href={homeUrl} class="gap-2 flex shrink-0 items-center" aria-label={brandName}>
37
- <img src={logo} alt="" aria-hidden="true" class="h-5 w-5" />
37
+ <img src={logo} alt="" aria-hidden="true" class="h-7 w-7" />
38
38
  <!-- On a phone the page title needs the room more than the brand does. -->
39
39
  <span
40
40
  class="font-semibold text-sm tracking-tight {title !== undefined ? 'sm:inline hidden' : ''}"
@@ -3,9 +3,9 @@
3
3
  import { onMount, tick } from 'svelte';
4
4
  import { mode } from 'mode-watcher';
5
5
  import { Loader, Maximize, Minimize } from '@lucide/svelte';
6
- import { loadScript } from '../../utils/loadScript';
7
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
8
- import { formatMessage } from '../../i18n/messages';
6
+ import { loadScript } from '../../utils/loadScript.js';
7
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
8
+ import { formatMessage } from '../../i18n/messages.js';
9
9
 
10
10
  interface Props {
11
11
  item: OutputChartLayoutItem;
@@ -2,7 +2,7 @@
2
2
  import type { LayoutItem, InputLayoutItem, OutputLayoutItem } from '@selvajs/schemas';
3
3
  import type { Snippet } from 'svelte';
4
4
  import { ChevronDown } from '@lucide/svelte';
5
- import { buildVisibilityMap, itemKey } from '../../schema/visibility-rules';
5
+ import { buildVisibilityMap, itemKey } from '../../schema/visibility-rules.js';
6
6
 
7
7
  interface Props {
8
8
  label: string;
@@ -107,7 +107,7 @@
107
107
  {/if}
108
108
  <div class="content-wrapper" class:collapsed inert={collapsed}>
109
109
  <div class="content-inner">
110
- <div class="px-4 pt-1 pb-4">
110
+ <div class="px-4 pt-2 pb-5">
111
111
  {@render grid()}
112
112
  </div>
113
113
  </div>
@@ -152,7 +152,7 @@
152
152
  .schema-grid {
153
153
  display: grid;
154
154
  grid-template-columns: repeat(var(--schema-cols), minmax(0, 1fr));
155
- gap: 1rem var(--column-gap);
155
+ gap: 1.25rem var(--column-gap);
156
156
  align-items: start;
157
157
  }
158
158
 
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { HelpCircle } from '@lucide/svelte';
3
- import * as Dialog from '../primitives/dialog';
3
+ import * as Dialog from '../primitives/dialog/index.js';
4
4
 
5
5
  interface Props {
6
6
  /** The field's label: the dialog title and the button's accessible name. */
@@ -12,9 +12,9 @@
12
12
  ZoomIn,
13
13
  ZoomOut
14
14
  } from '@lucide/svelte';
15
- import { downloadFiles, isFileData, MIME_BY_EXT } from '../../utils/file-download';
16
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
17
- import { formatMessage } from '../../i18n/messages';
15
+ import { downloadFiles, isFileData, MIME_BY_EXT } from '../../utils/file-download.js';
16
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
17
+ import { formatMessage } from '../../i18n/messages.js';
18
18
 
19
19
  interface Props {
20
20
  item: OutputImageLayoutItem;
@@ -16,9 +16,9 @@
16
16
  isFileWidget,
17
17
  isColorWidget
18
18
  } from '@selvajs/schemas';
19
- import * as Field from '../primitives/field';
20
- import { Button } from '../primitives/button';
21
- import { toast } from '../primitives/sonner';
19
+ import * as Field from '../primitives/field/index.js';
20
+ import { Button } from '../primitives/button/index.js';
21
+ import { toast } from '../primitives/sonner/index.js';
22
22
  import HelpButton from './HelpButton.svelte';
23
23
  import {
24
24
  CheckboxInput,
@@ -31,16 +31,16 @@
31
31
  SegmentedInput,
32
32
  TextInput,
33
33
  TileInput
34
- } from './inputs';
35
- import { getClientSlot } from '../../contexts/clientSlotContext.svelte';
34
+ } from './inputs/index.js';
35
+ import { getClientSlot } from '../../contexts/clientSlotContext.svelte.js';
36
36
  import {
37
37
  getHostContext,
38
38
  type GeometryPickTarget,
39
39
  type PickKind
40
- } from '../../contexts/hostContext.svelte';
41
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
42
- import { isGeometryParamType, isTriggerItem } from '../../schema/host-support';
43
- import { resolveOptionDisplay } from '../../schema/option-display';
40
+ } from '../../contexts/hostContext.svelte.js';
41
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
42
+ import { isGeometryParamType, isTriggerItem } from '../../schema/host-support.js';
43
+ import { resolveOptionDisplay } from '../../schema/option-display.js';
44
44
 
45
45
  interface Props {
46
46
  item: InputLayoutItem;
@@ -283,7 +283,7 @@
283
283
 
284
284
  {#if isClientSlot}
285
285
  {#if clientSlot}
286
- <div role="group" class="group/field gap-1.5 min-w-0 flex flex-col">
286
+ <div role="group" class="group/field gap-2 min-w-0 flex flex-col">
287
287
  {@render fieldHeader()}
288
288
  {@render clientSlot({
289
289
  inputId: item.paramId,
@@ -294,7 +294,7 @@
294
294
  </div>
295
295
  {/if}
296
296
  {:else if isGeometry}
297
- <div role="group" class="group/field gap-1.5 min-w-0 flex flex-col">
297
+ <div role="group" class="group/field gap-2 min-w-0 flex flex-col">
298
298
  {@render fieldHeader(inputId)}
299
299
  <GeometryInput
300
300
  {inputId}
@@ -322,7 +322,7 @@
322
322
  {@render helpButton()}
323
323
  </div>
324
324
  {:else if !hideDynamicListWhenEmpty}
325
- <div role="group" class="group/field gap-1.5 min-w-0 flex flex-col">
325
+ <div role="group" class="group/field gap-2 min-w-0 flex flex-col">
326
326
  {#if !isCheckboxWidget(item)}
327
327
  {@render fieldHeader(inputId)}
328
328
  {/if}
@@ -8,14 +8,14 @@
8
8
  formatFileSize,
9
9
  getBase64FileSize,
10
10
  isFileData
11
- } from '../../utils/file-download';
11
+ } from '../../utils/file-download.js';
12
12
  import { Button } from '../primitives';
13
13
  import { Folder, FolderOpen, FileIcon, ChevronRight } from '@lucide/svelte';
14
14
  import HelpButton from './HelpButton.svelte';
15
15
  import { SvelteMap, SvelteSet } from 'svelte/reactivity';
16
- import { Label } from '../primitives/label';
17
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
18
- import { formatCount, formatMessage } from '../../i18n/messages';
16
+ import { Label } from '../primitives/label/index.js';
17
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
18
+ import { formatCount, formatMessage } from '../../i18n/messages.js';
19
19
 
20
20
  interface Props {
21
21
  item: OutputLayoutItem;
@@ -1,9 +1,9 @@
1
1
  <script lang="ts">
2
2
  import type { TabConfig } from '@selvajs/schemas';
3
- import * as Tabs from '../primitives/tabs';
3
+ import * as Tabs from '../primitives/tabs/index.js';
4
4
  import { ChevronLeft, ChevronRight } from '@lucide/svelte';
5
5
  import Icon from '@iconify/svelte';
6
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
6
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
7
7
 
8
8
  const locale = getLocaleContext();
9
9
  const t = $derived(locale.messages);
@@ -8,16 +8,16 @@
8
8
  InputLayoutItem,
9
9
  OutputLayoutItem
10
10
  } from '@selvajs/schemas';
11
- import * as Tabs from '../primitives/tabs';
12
- import { ScrollArea } from '../primitives/scroll-area';
11
+ import * as Tabs from '../primitives/tabs/index.js';
12
+ import { ScrollArea } from '../primitives/scroll-area/index.js';
13
13
  import StateDisplay from '../primitives/StateDisplay.svelte';
14
14
  import Group from './Group.svelte';
15
15
  import InputControl from './InputControl.svelte';
16
16
  import OutputDisplay from './OutputDisplay.svelte';
17
- import { evaluateGroupVisibility } from '../../schema/visibility-rules';
18
- import { isSupportedOn, layoutItemKind } from '../../schema/host-support';
19
- import { getHostContext } from '../../contexts/hostContext.svelte';
20
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
17
+ import { evaluateGroupVisibility } from '../../schema/visibility-rules.js';
18
+ import { isSupportedOn, layoutItemKind } from '../../schema/host-support.js';
19
+ import { getHostContext } from '../../contexts/hostContext.svelte.js';
20
+ import { getLocaleContext } from '../../i18n/localeContext.svelte.js';
21
21
 
22
22
  const locale = getLocaleContext();
23
23
  const t = $derived(locale.messages);
@@ -113,7 +113,7 @@
113
113
  {#if visibleGroups.length === 0}
114
114
  <StateDisplay type="empty" size="medium" message={t.tabNoGroups} />
115
115
  {:else}
116
- <div class="gap-3 py-3 flex flex-col">
116
+ <div class="gap-4 py-4 flex flex-col">
117
117
  {#each visibleGroups as group (group.id)}
118
118
  <Group
119
119
  label={group.label}
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
2
  import type { UISchema, SupportedTypes } from '@selvajs/schemas';
3
- import * as Tabs from '../primitives/tabs';
3
+ import * as Tabs from '../primitives/tabs/index.js';
4
4
  import TabBar from './TabBar.svelte';
5
5
  import TabContent from './TabContent.svelte';
6
- import { isTabVisible } from '../../schema/visibility-rules';
7
- import { buildDynamicValueListOptions } from '../../schema/dynamic-value-list';
6
+ import { isTabVisible } from '../../schema/visibility-rules.js';
7
+ import { buildDynamicValueListOptions } from '../../schema/dynamic-value-list.js';
8
8
 
9
9
  interface Props {
10
10
  schema: UISchema;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { SupportedTypes } from '@selvajs/schemas';
4
- import { Checkbox } from '../../primitives/checkbox';
4
+ import { Checkbox } from '../../primitives/checkbox/index.js';
5
5
 
6
6
  interface Props {
7
7
  inputId: string;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { DropdownWidgetConfig, SupportedTypes, UISchema } from '@selvajs/schemas';
3
- import { Checkbox } from '../../primitives/checkbox';
4
- import { optionGlyph } from '../../../schema/option-display';
3
+ import { Checkbox } from '../../primitives/checkbox/index.js';
4
+ import { optionGlyph } from '../../../schema/option-display.js';
5
5
  import OptionGlyph from './OptionGlyph.svelte';
6
6
  import { SvelteSet } from 'svelte/reactivity';
7
7
 
@@ -1,18 +1,18 @@
1
1
  <script lang="ts">
2
2
  import { untrack } from 'svelte';
3
3
  import { Check, Pipette } from '@lucide/svelte';
4
- import * as Popover from '../../primitives/popover';
5
- import { Input } from '../../primitives/input';
6
- import { getLocaleContext } from '../../../i18n/localeContext.svelte';
7
- import { formatMessage } from '../../../i18n/messages';
8
- import { debounce } from '../../../utils/debounce';
4
+ import * as Popover from '../../primitives/popover/index.js';
5
+ import { Input } from '../../primitives/input/index.js';
6
+ import { getLocaleContext } from '../../../i18n/localeContext.svelte.js';
7
+ import { formatMessage } from '../../../i18n/messages.js';
8
+ import { debounce } from '../../../utils/debounce.js';
9
9
  import {
10
10
  contrastRatio,
11
11
  hexToHsv,
12
12
  hsvToHex,
13
13
  normalizeHex,
14
14
  type Hsv
15
- } from '../../../utils/color-space';
15
+ } from '../../../utils/color-space.js';
16
16
 
17
17
  interface Props {
18
18
  inputId: string;
@@ -1,9 +1,9 @@
1
1
  <script lang="ts">
2
2
  import type { DropdownWidgetConfig, SupportedTypes, UISchema } from '@selvajs/schemas';
3
- import * as Select from '../../primitives/select';
4
- import { optionGlyph } from '../../../schema/option-display';
3
+ import * as Select from '../../primitives/select/index.js';
4
+ import { optionGlyph } from '../../../schema/option-display.js';
5
5
  import OptionGlyph from './OptionGlyph.svelte';
6
- import { getLocaleContext } from '../../../i18n/localeContext.svelte';
6
+ import { getLocaleContext } from '../../../i18n/localeContext.svelte.js';
7
7
 
8
8
  interface Props {
9
9
  value?: string;
@@ -1,14 +1,19 @@
1
1
  <script lang="ts">
2
- import { Input } from '../../primitives/input';
3
- import { Button } from '../../primitives/button';
4
- import { Label } from '../../primitives/label';
5
- import { toast } from '../../primitives/sonner';
2
+ import { Input } from '../../primitives/input/index.js';
3
+ import { Button } from '../../primitives/button/index.js';
4
+ import { Label } from '../../primitives/label/index.js';
5
+ import { toast } from '../../primitives/sonner/index.js';
6
6
  import { FileUp, Link, CircleAlert, CircleCheck } from '@lucide/svelte';
7
- import { APP_DEFAULTS } from '../../../constants';
8
- import { getLocaleContext } from '../../../i18n/localeContext.svelte';
9
- import { formatMessage } from '../../../i18n/messages';
10
- import { pickFile } from '../../../utils/host-files';
11
- import { acceptsFileEnding, isWebp, shouldConvertWebp, webpToPng } from '../../../utils/webp-to-png';
7
+ import { APP_DEFAULTS } from '../../../constants.js';
8
+ import { getLocaleContext } from '../../../i18n/localeContext.svelte.js';
9
+ import { formatMessage } from '../../../i18n/messages.js';
10
+ import { pickFile } from '../../../utils/host-files.js';
11
+ import {
12
+ acceptsFileEnding,
13
+ isWebp,
14
+ shouldConvertWebp,
15
+ webpToPng
16
+ } from '../../../utils/webp-to-png.js';
12
17
 
13
18
  interface Props {
14
19
  value?: string;
@@ -1,8 +1,8 @@
1
1
  <script lang="ts">
2
- import { Button } from '../../primitives/button';
3
- import type { GeometryPickResult, PickKind } from '../../../contexts/hostContext.svelte';
4
- import { getLocaleContext } from '../../../i18n/localeContext.svelte';
5
- import type { ViewerMessages } from '../../../i18n/messages';
2
+ import { Button } from '../../primitives/button/index.js';
3
+ import type { GeometryPickResult, PickKind } from '../../../contexts/hostContext.svelte.js';
4
+ import { getLocaleContext } from '../../../i18n/localeContext.svelte.js';
5
+ import type { ViewerMessages } from '../../../i18n/messages.js';
6
6
 
7
7
  interface Props {
8
8
  inputId: string;
@@ -1,4 +1,4 @@
1
- import type { GeometryPickResult, PickKind } from '../../../contexts/hostContext.svelte';
1
+ import type { GeometryPickResult, PickKind } from '../../../contexts/hostContext.svelte.js';
2
2
  interface Props {
3
3
  inputId: string;
4
4
  /** The kinds of object the input takes; one kind names the button after it. */
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
2
  import type { NumberWidgetConfig, SupportedTypes } from '@selvajs/schemas';
3
- import { debounce } from '../../../utils/debounce';
4
- import { Input } from '../../primitives/input';
5
- import { Slider } from '../../primitives/slider';
6
- import * as InputGroup from '../../primitives/input-group';
7
- import { Separator } from '../../primitives/separator';
8
- import * as Field from '../../primitives/field';
9
- import { getLocaleContext } from '../../../i18n/localeContext.svelte';
10
- import { formatMessage } from '../../../i18n/messages';
3
+ import { debounce } from '../../../utils/debounce.js';
4
+ import { Input } from '../../primitives/input/index.js';
5
+ import { Slider } from '../../primitives/slider/index.js';
6
+ import * as InputGroup from '../../primitives/input-group/index.js';
7
+ import { Separator } from '../../primitives/separator/index.js';
8
+ import * as Field from '../../primitives/field/index.js';
9
+ import { getLocaleContext } from '../../../i18n/localeContext.svelte.js';
10
+ import { formatMessage } from '../../../i18n/messages.js';
11
11
 
12
12
  interface Props {
13
13
  inputId: string;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { GlyphSource } from '../../../schema/option-display';
2
+ import type { GlyphSource } from '../../../schema/option-display.js';
3
3
  import { cn } from '../../../utils.js';
4
4
 
5
5
  interface Props {
@@ -1,4 +1,4 @@
1
- import type { GlyphSource } from '../../../schema/option-display';
1
+ import type { GlyphSource } from '../../../schema/option-display.js';
2
2
  interface Props {
3
3
  glyph: GlyphSource;
4
4
  class?: string;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { DropdownWidgetConfig, SupportedTypes, UISchema } from '@selvajs/schemas';
3
- import * as ToggleGroup from '../../primitives/toggle-group';
4
- import { optionGlyph } from '../../../schema/option-display';
3
+ import * as ToggleGroup from '../../primitives/toggle-group/index.js';
4
+ import { optionGlyph } from '../../../schema/option-display.js';
5
5
  import OptionGlyph from './OptionGlyph.svelte';
6
6
 
7
7
  interface Props {
@@ -23,8 +23,8 @@
23
23
 
24
24
  <ToggleGroup.Root
25
25
  type="single"
26
- variant="segmented"
27
- spacing={1}
26
+ variant="outline"
27
+ spacing={0}
28
28
  size={hasIcons ? 'stacked' : 'default'}
29
29
  class="w-full"
30
30
  aria-labelledby={labelId}
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
2
  import type { TextWidgetConfig, SupportedTypes } from '@selvajs/schemas';
3
- import { debounce } from '../../../utils/debounce';
4
- import { Input } from '../../primitives/input';
5
- import * as Field from '../../primitives/field';
6
- import { getLocaleContext } from '../../../i18n/localeContext.svelte';
7
- import { formatMessage } from '../../../i18n/messages';
3
+ import { debounce } from '../../../utils/debounce.js';
4
+ import { Input } from '../../primitives/input/index.js';
5
+ import * as Field from '../../primitives/field/index.js';
6
+ import { getLocaleContext } from '../../../i18n/localeContext.svelte.js';
7
+ import { formatMessage } from '../../../i18n/messages.js';
8
8
 
9
9
  interface Props {
10
10
  inputId: string;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import type { DropdownWidgetConfig, SupportedTypes, UISchema } from '@selvajs/schemas';
3
- import { optionGlyph } from '../../../schema/option-display';
3
+ import { optionGlyph } from '../../../schema/option-display.js';
4
4
  import OptionGlyph from './OptionGlyph.svelte';
5
5
 
6
6
  interface Props {
@@ -52,11 +52,13 @@
52
52
  onclick={() => onChange(option.value)}
53
53
  onkeydown={(e) => onKeydown(e, index)}
54
54
  class="gap-1.5 p-1.5 min-w-0 flex flex-col rounded-lg border text-left transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 {selected
55
- ? 'border-primary bg-primary/5 ring-1 ring-primary'
55
+ ? 'border-primary bg-primary/10 ring-1 ring-primary'
56
56
  : 'border-input hover:bg-hover'}"
57
57
  >
58
58
  <span
59
- class="flex aspect-square w-full items-center justify-center overflow-hidden rounded-md bg-muted text-muted-foreground"
59
+ class="flex aspect-square w-full items-center justify-center overflow-hidden rounded-md bg-muted {selected
60
+ ? 'text-foreground'
61
+ : 'text-muted-foreground'}"
60
62
  >
61
63
  {#if glyph?.kind === 'image'}
62
64
  <OptionGlyph {glyph} class="size-full" />
@@ -55,7 +55,7 @@
55
55
  <Loader class="h-4 w-4 animate-spin" />
56
56
  {t.solvingEllipsis}
57
57
  <kbd
58
- class="px-1 font-sans rounded-sm border border-current/30 text-2xs opacity-70"
58
+ class="px-1 rounded-sm border border-current/30 font-sans text-2xs opacity-70"
59
59
  title={t.solveMessagesEscHint}
60
60
  >
61
61
  Esc