@selvajs/ui 6.6.0-beta.18 → 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 (204) 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/FooterItemRenderer.svelte +1 -1
  8. package/dist/components/layout/FooterItemRenderer.svelte.d.ts +1 -1
  9. package/dist/components/layout/PageFooter.svelte +3 -3
  10. package/dist/components/layout/PageHeader.svelte +1 -1
  11. package/dist/components/preview/ChartOutput.svelte +3 -3
  12. package/dist/components/preview/Group.svelte +1 -1
  13. package/dist/components/preview/HelpButton.svelte +1 -1
  14. package/dist/components/preview/ImageOutput.svelte +3 -3
  15. package/dist/components/preview/InputControl.svelte +9 -9
  16. package/dist/components/preview/OutputDisplay.svelte +4 -4
  17. package/dist/components/preview/TabBar.svelte +2 -2
  18. package/dist/components/preview/TabContent.svelte +6 -6
  19. package/dist/components/preview/TabLayout.svelte +3 -3
  20. package/dist/components/preview/inputs/CheckboxInput.svelte +1 -1
  21. package/dist/components/preview/inputs/ChecklistInput.svelte +2 -2
  22. package/dist/components/preview/inputs/ColorInput.svelte +6 -6
  23. package/dist/components/preview/inputs/DropdownInput.svelte +3 -3
  24. package/dist/components/preview/inputs/FileInput.svelte +14 -9
  25. package/dist/components/preview/inputs/GeometryInput.svelte +4 -4
  26. package/dist/components/preview/inputs/GeometryInput.svelte.d.ts +1 -1
  27. package/dist/components/preview/inputs/NumberInput.svelte +8 -8
  28. package/dist/components/preview/inputs/OptionGlyph.svelte +1 -1
  29. package/dist/components/preview/inputs/OptionGlyph.svelte.d.ts +1 -1
  30. package/dist/components/preview/inputs/SegmentedInput.svelte +2 -2
  31. package/dist/components/preview/inputs/TextInput.svelte +5 -5
  32. package/dist/components/preview/inputs/TileInput.svelte +1 -1
  33. package/dist/components/primitives/CalculateButton.svelte +1 -1
  34. package/dist/components/primitives/button/button.svelte +1 -1
  35. package/dist/components/primitives/button/button.svelte.d.ts +1 -1
  36. package/dist/components/primitives/dialog/dialog-content.svelte +1 -1
  37. package/dist/components/primitives/input-group/input-group-input.svelte.d.ts +1 -1
  38. package/dist/components/primitives/mode-toggle/mode-toggle.svelte +2 -2
  39. package/dist/components/primitives/select/select-content.svelte +1 -1
  40. package/dist/components/viewer/MeshMetadataPanel.svelte +1 -1
  41. package/dist/components/viewer/SceneManager.svelte +1 -1
  42. package/dist/components/viewer/Viewer.svelte +3 -35
  43. package/dist/components/viewer/Viewer.svelte.d.ts +1 -1
  44. package/dist/components/viewer/ViewerDock.svelte +1 -1
  45. package/dist/components/viewer/ViewerDock.svelte.d.ts +1 -1
  46. package/dist/composables/useFooterItem.svelte.d.ts +1 -1
  47. package/dist/composables/useFooterItem.svelte.js +1 -1
  48. package/dist/constants.js +1 -2
  49. package/dist/contexts/hostContext.svelte.d.ts +1 -1
  50. package/package.json +16 -12
  51. package/src/lib/components/ErrorScreen.svelte +1 -1
  52. package/src/lib/components/compute/AppLayout.svelte +3 -3
  53. package/src/lib/components/compute/ComputeApp.svelte +1 -1
  54. package/src/lib/components/compute/ComputeMessagesDialog.svelte +4 -4
  55. package/src/lib/components/compute/SolveMessages.svelte +5 -5
  56. package/src/lib/components/layout/FooterItemRenderer.svelte +1 -1
  57. package/src/lib/components/layout/PageFooter.svelte +3 -3
  58. package/src/lib/components/layout/PageHeader.svelte +1 -1
  59. package/src/lib/components/layout/SideNav.svelte +1 -1
  60. package/src/lib/components/preview/ChartOutput.svelte +3 -3
  61. package/src/lib/components/preview/Group.svelte +1 -1
  62. package/src/lib/components/preview/HelpButton.svelte +1 -1
  63. package/src/lib/components/preview/ImageOutput.svelte +3 -3
  64. package/src/lib/components/preview/InputControl.svelte +9 -9
  65. package/src/lib/components/preview/OutputDisplay.svelte +4 -4
  66. package/src/lib/components/preview/TabBar.svelte +2 -2
  67. package/src/lib/components/preview/TabContent.svelte +6 -6
  68. package/src/lib/components/preview/TabLayout.svelte +3 -3
  69. package/src/lib/components/preview/inputs/CheckboxInput.svelte +1 -1
  70. package/src/lib/components/preview/inputs/ChecklistInput.svelte +2 -2
  71. package/src/lib/components/preview/inputs/ColorInput.svelte +6 -6
  72. package/src/lib/components/preview/inputs/DropdownInput.svelte +3 -3
  73. package/src/lib/components/preview/inputs/FileInput.svelte +14 -9
  74. package/src/lib/components/preview/inputs/GeometryInput.svelte +4 -4
  75. package/src/lib/components/preview/inputs/NumberInput.svelte +8 -8
  76. package/src/lib/components/preview/inputs/OptionGlyph.svelte +2 -2
  77. package/src/lib/components/preview/inputs/SegmentedInput.svelte +2 -2
  78. package/src/lib/components/preview/inputs/TextInput.svelte +5 -5
  79. package/src/lib/components/preview/inputs/TileInput.svelte +1 -1
  80. package/src/lib/components/primitives/CalculateButton.svelte +1 -1
  81. package/src/lib/components/primitives/Callout.svelte +1 -1
  82. package/src/lib/components/primitives/FilterableDropdown.svelte +1 -1
  83. package/src/lib/components/primitives/IssueList.svelte +1 -1
  84. package/src/lib/components/primitives/SeverityIcon.svelte +1 -1
  85. package/src/lib/components/primitives/StateDisplay.svelte +1 -1
  86. package/src/lib/components/primitives/alert-dialog/alert-dialog-action.svelte +2 -2
  87. package/src/lib/components/primitives/alert-dialog/alert-dialog-cancel.svelte +2 -2
  88. package/src/lib/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
  89. package/src/lib/components/primitives/alert-dialog/alert-dialog-description.svelte +1 -1
  90. package/src/lib/components/primitives/alert-dialog/alert-dialog-footer.svelte +1 -1
  91. package/src/lib/components/primitives/alert-dialog/alert-dialog-header.svelte +1 -1
  92. package/src/lib/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
  93. package/src/lib/components/primitives/alert-dialog/alert-dialog-title.svelte +1 -1
  94. package/src/lib/components/primitives/badge/badge.svelte +1 -1
  95. package/src/lib/components/primitives/button/button.svelte +1 -1
  96. package/src/lib/components/primitives/button-group/button-group-separator.svelte +2 -2
  97. package/src/lib/components/primitives/button-group/button-group-text.svelte +1 -1
  98. package/src/lib/components/primitives/button-group/button-group.svelte +1 -1
  99. package/src/lib/components/primitives/card/card-content.svelte +1 -1
  100. package/src/lib/components/primitives/card/card-description.svelte +1 -1
  101. package/src/lib/components/primitives/card/card-footer.svelte +1 -1
  102. package/src/lib/components/primitives/card/card-header.svelte +1 -1
  103. package/src/lib/components/primitives/card/card-title.svelte +1 -1
  104. package/src/lib/components/primitives/card/card.svelte +1 -1
  105. package/src/lib/components/primitives/checkbox/checkbox.svelte +1 -1
  106. package/src/lib/components/primitives/command/command-dialog.svelte +2 -2
  107. package/src/lib/components/primitives/command/command-empty.svelte +1 -1
  108. package/src/lib/components/primitives/command/command-group.svelte +1 -1
  109. package/src/lib/components/primitives/command/command-input.svelte +2 -2
  110. package/src/lib/components/primitives/command/command-item.svelte +1 -1
  111. package/src/lib/components/primitives/command/command-link-item.svelte +1 -1
  112. package/src/lib/components/primitives/command/command-list.svelte +1 -1
  113. package/src/lib/components/primitives/command/command-separator.svelte +1 -1
  114. package/src/lib/components/primitives/command/command-shortcut.svelte +1 -1
  115. package/src/lib/components/primitives/command/command.svelte +1 -1
  116. package/src/lib/components/primitives/context-menu/context-menu-checkbox-item.svelte +1 -1
  117. package/src/lib/components/primitives/context-menu/context-menu-content.svelte +1 -1
  118. package/src/lib/components/primitives/context-menu/context-menu-group-heading.svelte +1 -1
  119. package/src/lib/components/primitives/context-menu/context-menu-item.svelte +1 -1
  120. package/src/lib/components/primitives/context-menu/context-menu-label.svelte +1 -1
  121. package/src/lib/components/primitives/context-menu/context-menu-radio-item.svelte +1 -1
  122. package/src/lib/components/primitives/context-menu/context-menu-separator.svelte +1 -1
  123. package/src/lib/components/primitives/context-menu/context-menu-shortcut.svelte +1 -1
  124. package/src/lib/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
  125. package/src/lib/components/primitives/context-menu/context-menu-sub-trigger.svelte +1 -1
  126. package/src/lib/components/primitives/dialog/dialog-content.svelte +2 -2
  127. package/src/lib/components/primitives/dialog/dialog-description.svelte +1 -1
  128. package/src/lib/components/primitives/dialog/dialog-footer.svelte +1 -1
  129. package/src/lib/components/primitives/dialog/dialog-header.svelte +1 -1
  130. package/src/lib/components/primitives/dialog/dialog-overlay.svelte +1 -1
  131. package/src/lib/components/primitives/dialog/dialog-title.svelte +1 -1
  132. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  133. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-content.svelte +1 -1
  134. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
  135. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-item.svelte +1 -1
  136. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-label.svelte +1 -1
  137. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
  138. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  139. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +1 -1
  140. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  141. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +1 -1
  142. package/src/lib/components/primitives/empty/empty-content.svelte +1 -1
  143. package/src/lib/components/primitives/empty/empty-description.svelte +1 -1
  144. package/src/lib/components/primitives/empty/empty-header.svelte +1 -1
  145. package/src/lib/components/primitives/empty/empty-media.svelte +1 -1
  146. package/src/lib/components/primitives/empty/empty-title.svelte +1 -1
  147. package/src/lib/components/primitives/empty/empty.svelte +1 -1
  148. package/src/lib/components/primitives/field/field-content.svelte +1 -1
  149. package/src/lib/components/primitives/field/field-description.svelte +1 -1
  150. package/src/lib/components/primitives/field/field-error.svelte +1 -1
  151. package/src/lib/components/primitives/field/field-group.svelte +1 -1
  152. package/src/lib/components/primitives/field/field-label.svelte +2 -2
  153. package/src/lib/components/primitives/field/field-legend.svelte +1 -1
  154. package/src/lib/components/primitives/field/field-separator.svelte +2 -2
  155. package/src/lib/components/primitives/field/field-set.svelte +1 -1
  156. package/src/lib/components/primitives/field/field-title.svelte +1 -1
  157. package/src/lib/components/primitives/field/field.svelte +1 -1
  158. package/src/lib/components/primitives/input/input.svelte +1 -1
  159. package/src/lib/components/primitives/input-group/input-group-addon.svelte +1 -1
  160. package/src/lib/components/primitives/input-group/input-group-button.svelte +2 -2
  161. package/src/lib/components/primitives/input-group/input-group-input.svelte +2 -2
  162. package/src/lib/components/primitives/input-group/input-group-text.svelte +1 -1
  163. package/src/lib/components/primitives/input-group/input-group-textarea.svelte +2 -2
  164. package/src/lib/components/primitives/input-group/input-group.svelte +1 -1
  165. package/src/lib/components/primitives/label/label.svelte +1 -1
  166. package/src/lib/components/primitives/mode-toggle/mode-toggle.svelte +2 -2
  167. package/src/lib/components/primitives/popover/popover-content.svelte +1 -1
  168. package/src/lib/components/primitives/popover/popover-description.svelte +1 -1
  169. package/src/lib/components/primitives/popover/popover-header.svelte +1 -1
  170. package/src/lib/components/primitives/popover/popover-title.svelte +1 -1
  171. package/src/lib/components/primitives/popover/popover-trigger.svelte +1 -1
  172. package/src/lib/components/primitives/resizable/resizable-handle.svelte +1 -1
  173. package/src/lib/components/primitives/resizable/resizable-pane-group.svelte +1 -1
  174. package/src/lib/components/primitives/scroll-area/scroll-area-scrollbar.svelte +1 -1
  175. package/src/lib/components/primitives/scroll-area/scroll-area.svelte +1 -1
  176. package/src/lib/components/primitives/search/search.svelte +1 -1
  177. package/src/lib/components/primitives/select/select-content.svelte +2 -2
  178. package/src/lib/components/primitives/select/select-group-heading.svelte +1 -1
  179. package/src/lib/components/primitives/select/select-item.svelte +1 -1
  180. package/src/lib/components/primitives/select/select-label.svelte +1 -1
  181. package/src/lib/components/primitives/select/select-scroll-down-button.svelte +1 -1
  182. package/src/lib/components/primitives/select/select-scroll-up-button.svelte +1 -1
  183. package/src/lib/components/primitives/select/select-separator.svelte +2 -2
  184. package/src/lib/components/primitives/select/select-trigger.svelte +1 -1
  185. package/src/lib/components/primitives/separator/separator.svelte +1 -1
  186. package/src/lib/components/primitives/slider/slider.svelte +1 -1
  187. package/src/lib/components/primitives/spinner/spinner.svelte +1 -1
  188. package/src/lib/components/primitives/switch/switch.svelte +1 -1
  189. package/src/lib/components/primitives/tabs/tabs-content.svelte +1 -1
  190. package/src/lib/components/primitives/tabs/tabs-list.svelte +1 -1
  191. package/src/lib/components/primitives/tabs/tabs-trigger.svelte +1 -1
  192. package/src/lib/components/primitives/tabs/tabs.svelte +1 -1
  193. package/src/lib/components/primitives/textarea/textarea.svelte +1 -1
  194. package/src/lib/components/primitives/toggle/toggle.svelte +1 -1
  195. package/src/lib/components/primitives/toggle-group/toggle-group-item.svelte +2 -2
  196. package/src/lib/components/primitives/toggle-group/toggle-group.svelte +2 -2
  197. package/src/lib/components/primitives/tooltip/tooltip-content.svelte +1 -1
  198. package/src/lib/components/viewer/MeshMetadataPanel.svelte +1 -1
  199. package/src/lib/components/viewer/SceneManager.svelte +1 -1
  200. package/src/lib/components/viewer/Viewer.svelte +4 -36
  201. package/src/lib/components/viewer/ViewerDock.svelte +2 -2
  202. package/src/lib/composables/useFooterItem.svelte.ts +1 -1
  203. package/src/lib/constants.ts +1 -2
  204. package/src/lib/contexts/hostContext.svelte.ts +1 -1
@@ -24,9 +24,9 @@
24
24
  import ViewerDock from './ViewerDock.svelte';
25
25
  import MeshMetadataPanel from './MeshMetadataPanel.svelte';
26
26
  import * as Resizable from '../primitives/resizable/index.js';
27
- import type { Locale } from '../../i18n/messages';
28
- import { layerLocaleContext } from '../../i18n/localeContext.svelte';
29
- import { saveBlob } from '../../utils/host-files';
27
+ import type { Locale } from '../../i18n/messages.js';
28
+ import { layerLocaleContext } from '../../i18n/localeContext.svelte.js';
29
+ import { saveBlob } from '../../utils/host-files.js';
30
30
 
31
31
  export interface ViewerConfig {
32
32
  showScreenshotButton?: boolean;
@@ -85,7 +85,6 @@
85
85
  let {
86
86
  meshes,
87
87
  isFullscreen = $bindable(false),
88
- isSolving = false,
89
88
  isSlow = false,
90
89
  isBlurred = false,
91
90
  drawerOpen = false,
@@ -525,16 +524,6 @@
525
524
  : 'blur-overlay-inactive'}"
526
525
  ></div>
527
526
 
528
- <!-- The last result stays sharp while the next one solves: blurring it on every
529
- solve hides the model the user is adjusting. -->
530
- {#if isSolving}
531
- <div
532
- class="inset-x-0 top-0 animate-in fade-in pointer-events-none absolute z-20 h-px overflow-hidden duration-300"
533
- aria-hidden="true"
534
- >
535
- <div class="solve-bar h-full w-1/3 bg-faint-foreground"></div>
536
- </div>
537
- {/if}
538
527
  {#if isSlow}
539
528
  <div
540
529
  class="inset-0 animate-in fade-in pointer-events-none absolute z-10 bg-background/25 duration-500"
@@ -633,27 +622,6 @@
633
622
  -webkit-tap-highlight-color: transparent;
634
623
  }
635
624
 
636
- .solve-bar {
637
- animation: solve-bar 1.2s cubic-bezier(0.65, 0, 0.35, 1) infinite;
638
- }
639
-
640
- @keyframes solve-bar {
641
- from {
642
- transform: translateX(-100%);
643
- }
644
- to {
645
- transform: translateX(300%);
646
- }
647
- }
648
-
649
- @media (prefers-reduced-motion: reduce) {
650
- .solve-bar {
651
- animation: none;
652
- width: 100%;
653
- opacity: 0.6;
654
- }
655
- }
656
-
657
625
  .blur-overlay {
658
626
  pointer-events: none;
659
627
  }
@@ -1,5 +1,5 @@
1
1
  import { type Look, type ThreeViewer } from '@selvajs/visualization/render';
2
- import type { Locale } from '../../i18n/messages';
2
+ import type { Locale } from '../../i18n/messages.js';
3
3
  export interface ViewerConfig {
4
4
  showScreenshotButton?: boolean;
5
5
  showFullscreenButton?: boolean;
@@ -17,7 +17,7 @@
17
17
  } from '@lucide/svelte';
18
18
  import type { CameraProjection, Look, ViewPreset } from '@selvajs/visualization/render';
19
19
  import * as DropdownMenu from '../primitives/dropdown-menu/index.js';
20
- import type { ViewerMessages } from '../../i18n/messages';
20
+ import type { ViewerMessages } from '../../i18n/messages.js';
21
21
 
22
22
  interface Props {
23
23
  t: ViewerMessages;
@@ -1,5 +1,5 @@
1
1
  import type { CameraProjection, Look, ViewPreset } from '@selvajs/visualization/render';
2
- import type { ViewerMessages } from '../../i18n/messages';
2
+ import type { ViewerMessages } from '../../i18n/messages.js';
3
3
  interface Props {
4
4
  t: ViewerMessages;
5
5
  /** Fades the dock out while a host drawer covers the viewer. */
@@ -1,5 +1,5 @@
1
1
  import { type Component } from 'svelte';
2
- import { type FooterItem } from '../contexts/footerContext.svelte';
2
+ import { type FooterItem } from '../contexts/footerContext.svelte.js';
3
3
  export type FooterItemConfig<P extends Record<string, unknown> = Record<string, unknown>> = Omit<FooterItem<P>, 'position' | 'priority'> & Partial<Pick<FooterItem<P>, 'position' | 'priority'>>;
4
4
  /**
5
5
  * Register a footer item for the lifetime of the calling component.
@@ -1,5 +1,5 @@
1
1
  import { getContext, onMount, onDestroy } from 'svelte';
2
- import { FOOTER_CONTEXT_KEY } from '../contexts/footerContext.svelte';
2
+ import { FOOTER_CONTEXT_KEY } from '../contexts/footerContext.svelte.js';
3
3
  /**
4
4
  * Register a footer item for the lifetime of the calling component.
5
5
  *
package/dist/constants.js CHANGED
@@ -1,8 +1,7 @@
1
1
  export const APP_DEFAULTS = {
2
2
  // File upload limits
3
3
  // TEMP (dev): raised 150 MB → 300 MB so large dev file-widget inputs aren't
4
- // blocked client-side. The server request cap (COMPUTE_REQUEST_MAX_BYTES)
5
- // still defaults to 256 MB, and base64 inflates a raw file by ~4/3, so
4
+ // blocked client-side. The server request cap is 256 MB, and base64 inflates a raw file by ~4/3, so
6
5
  // anything over ~192 MB is rejected with a 413 after the client accepts it.
7
6
  // Revert to 150 before release.
8
7
  FILE_UPLOAD: {
@@ -1,5 +1,5 @@
1
1
  import type { GeometryKind } from '@selvajs/schemas';
2
- import type { UIHost } from '../schema/host-support';
2
+ import type { UIHost } from '../schema/host-support.js';
3
3
  export type GeometryPickResult = {
4
4
  outcome: 'picked';
5
5
  summary: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@selvajs/ui",
3
- "version": "6.6.0-beta.18",
3
+ "version": "6.6.0-beta.19",
4
4
  "description": "Shared UI components and utilities for Selva applications",
5
5
  "license": "MIT",
6
6
  "author": "VektorNode",
@@ -62,10 +62,10 @@
62
62
  "svelte": "^5",
63
63
  "tailwind-variants": "^3.3.1",
64
64
  "three": "^0.187.0",
65
- "@selvajs/compute": "^5.0.0-beta.9",
65
+ "@selvajs/compute": "^5.0.0-beta.10",
66
66
  "@selvajs/schemas": "^5.3.0-beta.3",
67
- "@selvajs/visualization": "^1.6.0-beta.9",
68
- "@selvajs/solve": "^2.0.0-beta.12"
67
+ "@selvajs/solve": "^2.0.0-beta.12",
68
+ "@selvajs/visualization": "^1.6.0-beta.10"
69
69
  },
70
70
  "peerDependenciesMeta": {
71
71
  "three": {
@@ -75,31 +75,35 @@
75
75
  "dependencies": {
76
76
  "@floating-ui/dom": "^1.8.0",
77
77
  "@fontsource-variable/hanken-grotesk": "^5.3.0",
78
- "@iconify/svelte": "^5.2.3",
79
- "@lucide/svelte": "^1.61.0",
78
+ "@iconify/svelte": "^5.2.4",
79
+ "@lucide/svelte": "^1.66.0",
80
80
  "clsx": "^2.1.1",
81
81
  "mode-watcher": "^1.1.0",
82
82
  "paneforge": "^1.0.2",
83
- "svelte-sonner": "^1.2.1",
83
+ "svelte-sonner": "^1.2.2",
84
84
  "tailwind-merge": "^3.7.0",
85
85
  "tw-animate-css": "^1.4.0"
86
86
  },
87
87
  "devDependencies": {
88
88
  "@internationalized/date": "^3.12.4",
89
- "@sveltejs/kit": "2.70.3",
89
+ "@sveltejs/kit": "3.1.1",
90
90
  "@sveltejs/vite-plugin-svelte": "^7.3.1",
91
91
  "@types/three": "^0.187.0",
92
92
  "bits-ui": "^2.20.2",
93
93
  "rimraf": "^6.1.3",
94
- "svelte": "5.57.2",
94
+ "svelte": "5.57.3",
95
95
  "tailwind-variants": "^3.3.1",
96
96
  "vitest": "^5.0.5",
97
- "@selvajs/compute": "5.0.0-beta.9",
98
- "@selvajs/config": "0.0.4",
97
+ "@selvajs/compute": "5.0.0-beta.10",
99
98
  "@selvajs/schemas": "5.3.0-beta.3",
100
- "@selvajs/visualization": "1.6.0-beta.9",
99
+ "@selvajs/visualization": "1.6.0-beta.10",
100
+ "@selvajs/config": "0.0.4",
101
101
  "@selvajs/solve": "2.0.0-beta.12"
102
102
  },
103
+ "imports": {
104
+ "#lib": "./src/lib/index.js",
105
+ "#lib/*": "./src/lib/*"
106
+ },
103
107
  "scripts": {
104
108
  "predev": "node ../../scripts/sync-shared-assets.js",
105
109
  "dev": "vite dev",
@@ -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 '$lib/i18n/localeContext.svelte';
6
+ import { getLocaleContext } from '#lib/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 '$lib/components/primitives/resizable';
15
- import * as DropdownMenu from '$lib/components/primitives/dropdown-menu/index.js';
16
- import { Button } from '$lib';
14
+ import * as Resizable from '#lib/components/primitives/resizable/index.js';
15
+ import * as DropdownMenu from '#lib/components/primitives/dropdown-menu/index.js';
16
+ import { Button } from '#lib';
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;
@@ -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 '$lib/components/primitives/dialog';
12
- import IssueList, { type Issue } from '$lib/components/primitives/IssueList.svelte';
13
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
14
- import { formatCount } from '$lib/i18n/messages';
11
+ import * as Dialog from '#lib/components/primitives/dialog/index.js';
12
+ import IssueList, { type Issue } from '#lib/components/primitives/IssueList.svelte';
13
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
14
+ import { formatCount } from '#lib/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 '$lib/components/primitives/button';
20
- import IssueList, { type Issue } from '$lib/components/primitives/IssueList.svelte';
21
- import SeverityIcon from '$lib/components/primitives/SeverityIcon.svelte';
22
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
19
+ import { Button } from '#lib/components/primitives/button/index.js';
20
+ import IssueList, { type Issue } from '#lib/components/primitives/IssueList.svelte';
21
+ import SeverityIcon from '#lib/components/primitives/SeverityIcon.svelte';
22
+ import { getLocaleContext } from '#lib/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>
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { FooterItem } from '$lib/contexts/footerContext.svelte';
2
+ import type { FooterItem } from '#lib/contexts/footerContext.svelte.js';
3
3
 
4
4
  let { item }: { item: FooterItem } = $props();
5
5
 
@@ -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 '$lib/contexts/footerContext.svelte';
5
+ import { useFooter } from '#lib/contexts/footerContext.svelte.js';
6
6
  import ComputeMessagesDialog from '../compute/ComputeMessagesDialog.svelte';
7
7
  import FooterItemRenderer from './FooterItemRenderer.svelte';
8
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
9
- import { formatCount, formatMessage } from '$lib/i18n/messages';
8
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
9
+ import { formatCount, formatMessage } from '#lib/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 '$lib/components/primitives/mode-toggle';
3
+ import { ModeToggle } from '#lib/components/primitives/mode-toggle/index.js';
4
4
 
5
5
  interface PageHeaderProps {
6
6
  homeUrl?: string;
@@ -15,7 +15,7 @@
15
15
  import { page } from '$app/state';
16
16
  import ChevronsUpDown from '@lucide/svelte/icons/chevrons-up-down';
17
17
  import Check from '@lucide/svelte/icons/check';
18
- import * as DropdownMenu from '$lib/components/primitives/dropdown-menu/index.js';
18
+ import * as DropdownMenu from '#lib/components/primitives/dropdown-menu/index.js';
19
19
 
20
20
  interface SideNavProps {
21
21
  items: SideNavItem[];
@@ -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 '$lib/utils/loadScript';
7
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
8
- import { formatMessage } from '$lib/i18n/messages';
6
+ import { loadScript } from '#lib/utils/loadScript.js';
7
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
8
+ import { formatMessage } from '#lib/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 '$lib/schema/visibility-rules';
5
+ import { buildVisibilityMap, itemKey } from '#lib/schema/visibility-rules.js';
6
6
 
7
7
  interface Props {
8
8
  label: string;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { HelpCircle } from '@lucide/svelte';
3
- import * as Dialog from '$lib/components/primitives/dialog';
3
+ import * as Dialog from '#lib/components/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 '$lib/utils/file-download';
16
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
17
- import { formatMessage } from '$lib/i18n/messages';
15
+ import { downloadFiles, isFileData, MIME_BY_EXT } from '#lib/utils/file-download.js';
16
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
17
+ import { formatMessage } from '#lib/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 '$lib/components/primitives/field';
20
- import { Button } from '$lib/components/primitives/button';
21
- import { toast } from '$lib/components/primitives/sonner';
19
+ import * as Field from '#lib/components/primitives/field/index.js';
20
+ import { Button } from '#lib/components/primitives/button/index.js';
21
+ import { toast } from '#lib/components/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 '$lib/components/preview/inputs';
35
- import { getClientSlot } from '$lib/contexts/clientSlotContext.svelte';
34
+ } from '#lib/components/preview/inputs/index.js';
35
+ import { getClientSlot } from '#lib/contexts/clientSlotContext.svelte.js';
36
36
  import {
37
37
  getHostContext,
38
38
  type GeometryPickTarget,
39
39
  type PickKind
40
- } from '$lib/contexts/hostContext.svelte';
41
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
42
- import { isGeometryParamType, isTriggerItem } from '$lib/schema/host-support';
43
- import { resolveOptionDisplay } from '$lib/schema/option-display';
40
+ } from '#lib/contexts/hostContext.svelte.js';
41
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
42
+ import { isGeometryParamType, isTriggerItem } from '#lib/schema/host-support.js';
43
+ import { resolveOptionDisplay } from '#lib/schema/option-display.js';
44
44
 
45
45
  interface Props {
46
46
  item: InputLayoutItem;
@@ -8,14 +8,14 @@
8
8
  formatFileSize,
9
9
  getBase64FileSize,
10
10
  isFileData
11
- } from '$lib/utils/file-download';
11
+ } from '#lib/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 '$lib/components/primitives/label';
17
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
18
- import { formatCount, formatMessage } from '$lib/i18n/messages';
16
+ import { Label } from '#lib/components/primitives/label/index.js';
17
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
18
+ import { formatCount, formatMessage } from '#lib/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 '$lib/components/primitives/tabs';
3
+ import * as Tabs from '#lib/components/primitives/tabs/index.js';
4
4
  import { ChevronLeft, ChevronRight } from '@lucide/svelte';
5
5
  import Icon from '@iconify/svelte';
6
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
6
+ import { getLocaleContext } from '#lib/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 '$lib/components/primitives/tabs';
12
- import { ScrollArea } from '$lib/components/primitives/scroll-area';
11
+ import * as Tabs from '#lib/components/primitives/tabs/index.js';
12
+ import { ScrollArea } from '#lib/components/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 '$lib/schema/visibility-rules';
18
- import { isSupportedOn, layoutItemKind } from '$lib/schema/host-support';
19
- import { getHostContext } from '$lib/contexts/hostContext.svelte';
20
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
17
+ import { evaluateGroupVisibility } from '#lib/schema/visibility-rules.js';
18
+ import { isSupportedOn, layoutItemKind } from '#lib/schema/host-support.js';
19
+ import { getHostContext } from '#lib/contexts/hostContext.svelte.js';
20
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
21
21
 
22
22
  const locale = getLocaleContext();
23
23
  const t = $derived(locale.messages);
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
2
  import type { UISchema, SupportedTypes } from '@selvajs/schemas';
3
- import * as Tabs from '$lib/components/primitives/tabs';
3
+ import * as Tabs from '#lib/components/primitives/tabs/index.js';
4
4
  import TabBar from './TabBar.svelte';
5
5
  import TabContent from './TabContent.svelte';
6
- import { isTabVisible } from '$lib/schema/visibility-rules';
7
- import { buildDynamicValueListOptions } from '$lib/schema/dynamic-value-list';
6
+ import { isTabVisible } from '#lib/schema/visibility-rules.js';
7
+ import { buildDynamicValueListOptions } from '#lib/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 '$lib/components/primitives/checkbox';
4
+ import { Checkbox } from '#lib/components/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 '$lib/components/primitives/checkbox';
4
- import { optionGlyph } from '$lib/schema/option-display';
3
+ import { Checkbox } from '#lib/components/primitives/checkbox/index.js';
4
+ import { optionGlyph } from '#lib/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 '$lib/components/primitives/popover';
5
- import { Input } from '$lib/components/primitives/input';
6
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
7
- import { formatMessage } from '$lib/i18n/messages';
8
- import { debounce } from '$lib/utils/debounce';
4
+ import * as Popover from '#lib/components/primitives/popover/index.js';
5
+ import { Input } from '#lib/components/primitives/input/index.js';
6
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
7
+ import { formatMessage } from '#lib/i18n/messages.js';
8
+ import { debounce } from '#lib/utils/debounce.js';
9
9
  import {
10
10
  contrastRatio,
11
11
  hexToHsv,
12
12
  hsvToHex,
13
13
  normalizeHex,
14
14
  type Hsv
15
- } from '$lib/utils/color-space';
15
+ } from '#lib/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 '$lib/components/primitives/select';
4
- import { optionGlyph } from '$lib/schema/option-display';
3
+ import * as Select from '#lib/components/primitives/select/index.js';
4
+ import { optionGlyph } from '#lib/schema/option-display.js';
5
5
  import OptionGlyph from './OptionGlyph.svelte';
6
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
6
+ import { getLocaleContext } from '#lib/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 '$lib/components/primitives/input';
3
- import { Button } from '$lib/components/primitives/button';
4
- import { Label } from '$lib/components/primitives/label';
5
- import { toast } from '$lib/components/primitives/sonner';
2
+ import { Input } from '#lib/components/primitives/input/index.js';
3
+ import { Button } from '#lib/components/primitives/button/index.js';
4
+ import { Label } from '#lib/components/primitives/label/index.js';
5
+ import { toast } from '#lib/components/primitives/sonner/index.js';
6
6
  import { FileUp, Link, CircleAlert, CircleCheck } from '@lucide/svelte';
7
- import { APP_DEFAULTS } from '$lib/constants';
8
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
9
- import { formatMessage } from '$lib/i18n/messages';
10
- import { pickFile } from '$lib/utils/host-files';
11
- import { acceptsFileEnding, isWebp, shouldConvertWebp, webpToPng } from '$lib/utils/webp-to-png';
7
+ import { APP_DEFAULTS } from '#lib/constants.js';
8
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
9
+ import { formatMessage } from '#lib/i18n/messages.js';
10
+ import { pickFile } from '#lib/utils/host-files.js';
11
+ import {
12
+ acceptsFileEnding,
13
+ isWebp,
14
+ shouldConvertWebp,
15
+ webpToPng
16
+ } from '#lib/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 '$lib/components/primitives/button';
3
- import type { GeometryPickResult, PickKind } from '$lib/contexts/hostContext.svelte';
4
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
5
- import type { ViewerMessages } from '$lib/i18n/messages';
2
+ import { Button } from '#lib/components/primitives/button/index.js';
3
+ import type { GeometryPickResult, PickKind } from '#lib/contexts/hostContext.svelte.js';
4
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
5
+ import type { ViewerMessages } from '#lib/i18n/messages.js';
6
6
 
7
7
  interface Props {
8
8
  inputId: string;
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
2
  import type { NumberWidgetConfig, SupportedTypes } from '@selvajs/schemas';
3
- import { debounce } from '$lib/utils/debounce';
4
- import { Input } from '$lib/components/primitives/input';
5
- import { Slider } from '$lib/components/primitives/slider';
6
- import * as InputGroup from '$lib/components/primitives/input-group';
7
- import { Separator } from '$lib/components/primitives/separator';
8
- import * as Field from '$lib/components/primitives/field';
9
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
10
- import { formatMessage } from '$lib/i18n/messages';
3
+ import { debounce } from '#lib/utils/debounce.js';
4
+ import { Input } from '#lib/components/primitives/input/index.js';
5
+ import { Slider } from '#lib/components/primitives/slider/index.js';
6
+ import * as InputGroup from '#lib/components/primitives/input-group/index.js';
7
+ import { Separator } from '#lib/components/primitives/separator/index.js';
8
+ import * as Field from '#lib/components/primitives/field/index.js';
9
+ import { getLocaleContext } from '#lib/i18n/localeContext.svelte.js';
10
+ import { formatMessage } from '#lib/i18n/messages.js';
11
11
 
12
12
  interface Props {
13
13
  inputId: string;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- import type { GlyphSource } from '$lib/schema/option-display';
3
- import { cn } from '$lib/utils.js';
2
+ import type { GlyphSource } from '#lib/schema/option-display.js';
3
+ import { cn } from '#lib/utils.js';
4
4
 
5
5
  interface Props {
6
6
  glyph: GlyphSource;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { DropdownWidgetConfig, SupportedTypes, UISchema } from '@selvajs/schemas';
3
- import * as ToggleGroup from '$lib/components/primitives/toggle-group';
4
- import { optionGlyph } from '$lib/schema/option-display';
3
+ import * as ToggleGroup from '#lib/components/primitives/toggle-group/index.js';
4
+ import { optionGlyph } from '#lib/schema/option-display.js';
5
5
  import OptionGlyph from './OptionGlyph.svelte';
6
6
 
7
7
  interface Props {