@ruckc/truss-ui 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +91 -2
  3. package/dist/color.d.ts +21 -0
  4. package/dist/color.js +32 -0
  5. package/dist/components/Accordion.svelte +70 -0
  6. package/dist/components/Accordion.svelte.d.ts +15 -0
  7. package/dist/components/Alert.svelte +46 -0
  8. package/dist/components/Alert.svelte.d.ts +15 -0
  9. package/dist/components/Avatar.svelte +32 -0
  10. package/dist/components/Avatar.svelte.d.ts +9 -0
  11. package/dist/components/AvatarGroup.svelte +20 -0
  12. package/dist/components/AvatarGroup.svelte.d.ts +11 -0
  13. package/dist/components/Badge.svelte +27 -0
  14. package/dist/components/Badge.svelte.d.ts +9 -0
  15. package/dist/components/Breadcrumbs.svelte +38 -0
  16. package/dist/components/Breadcrumbs.svelte.d.ts +12 -0
  17. package/dist/components/Button.svelte +119 -0
  18. package/dist/components/Button.svelte.d.ts +16 -0
  19. package/dist/components/ButtonGroup.svelte +23 -0
  20. package/dist/components/ButtonGroup.svelte.d.ts +9 -0
  21. package/dist/components/Calendar.svelte +166 -0
  22. package/dist/components/Calendar.svelte.d.ts +19 -0
  23. package/dist/components/Callout.svelte +50 -0
  24. package/dist/components/Callout.svelte.d.ts +14 -0
  25. package/dist/components/Card.svelte +50 -0
  26. package/dist/components/Card.svelte.d.ts +15 -0
  27. package/dist/components/Checkbox.svelte +37 -0
  28. package/dist/components/Checkbox.svelte.d.ts +16 -0
  29. package/dist/components/ColorPicker.svelte +164 -0
  30. package/dist/components/ColorPicker.svelte.d.ts +14 -0
  31. package/dist/components/Combobox.svelte +131 -0
  32. package/dist/components/Combobox.svelte.d.ts +19 -0
  33. package/dist/components/ContextMenu.svelte +51 -0
  34. package/dist/components/ContextMenu.svelte.d.ts +10 -0
  35. package/dist/components/DataTable.svelte +657 -0
  36. package/dist/components/DataTable.svelte.d.ts +76 -0
  37. package/dist/components/DatePicker.svelte +70 -0
  38. package/dist/components/DatePicker.svelte.d.ts +15 -0
  39. package/dist/components/DateRangePicker.svelte +92 -0
  40. package/dist/components/DateRangePicker.svelte.d.ts +15 -0
  41. package/dist/components/DateTimePicker.svelte +62 -0
  42. package/dist/components/DateTimePicker.svelte.d.ts +19 -0
  43. package/dist/components/DateTimeRangePicker.svelte +167 -0
  44. package/dist/components/DateTimeRangePicker.svelte.d.ts +22 -0
  45. package/dist/components/Dialog.svelte +70 -0
  46. package/dist/components/Dialog.svelte.d.ts +14 -0
  47. package/dist/components/Divider.svelte +16 -0
  48. package/dist/components/Divider.svelte.d.ts +8 -0
  49. package/dist/components/Drawer.svelte +64 -0
  50. package/dist/components/Drawer.svelte.d.ts +13 -0
  51. package/dist/components/DurationInput.svelte +112 -0
  52. package/dist/components/DurationInput.svelte.d.ts +19 -0
  53. package/dist/components/EditableText.svelte +73 -0
  54. package/dist/components/EditableText.svelte.d.ts +14 -0
  55. package/dist/components/EmptyState.svelte +30 -0
  56. package/dist/components/EmptyState.svelte.d.ts +12 -0
  57. package/dist/components/FileUpload.svelte +143 -0
  58. package/dist/components/FileUpload.svelte.d.ts +18 -0
  59. package/dist/components/FormGroup.svelte +27 -0
  60. package/dist/components/FormGroup.svelte.d.ts +13 -0
  61. package/dist/components/Input.svelte +62 -0
  62. package/dist/components/Input.svelte.d.ts +15 -0
  63. package/dist/components/InputAddon.svelte +21 -0
  64. package/dist/components/InputAddon.svelte.d.ts +9 -0
  65. package/dist/components/InputGroup.svelte +70 -0
  66. package/dist/components/InputGroup.svelte.d.ts +16 -0
  67. package/dist/components/Menu.svelte +95 -0
  68. package/dist/components/Menu.svelte.d.ts +15 -0
  69. package/dist/components/MenuButton.svelte +45 -0
  70. package/dist/components/MenuButton.svelte.d.ts +16 -0
  71. package/dist/components/MultiSelect.svelte +129 -0
  72. package/dist/components/MultiSelect.svelte.d.ts +18 -0
  73. package/dist/components/Navbar.svelte +17 -0
  74. package/dist/components/Navbar.svelte.d.ts +10 -0
  75. package/dist/components/NumberInput.svelte +66 -0
  76. package/dist/components/NumberInput.svelte.d.ts +16 -0
  77. package/dist/components/OptionList.svelte +74 -0
  78. package/dist/components/OptionList.svelte.d.ts +15 -0
  79. package/dist/components/Popover.svelte +87 -0
  80. package/dist/components/Popover.svelte.d.ts +14 -0
  81. package/dist/components/ProgressBar.svelte +35 -0
  82. package/dist/components/ProgressBar.svelte.d.ts +10 -0
  83. package/dist/components/RadioGroup.svelte +39 -0
  84. package/dist/components/RadioGroup.svelte.d.ts +14 -0
  85. package/dist/components/Section.svelte +56 -0
  86. package/dist/components/Section.svelte.d.ts +15 -0
  87. package/dist/components/SegmentedControl.svelte +56 -0
  88. package/dist/components/SegmentedControl.svelte.d.ts +17 -0
  89. package/dist/components/Select.svelte +204 -0
  90. package/dist/components/Select.svelte.d.ts +41 -0
  91. package/dist/components/Shell.svelte +143 -0
  92. package/dist/components/Shell.svelte.d.ts +36 -0
  93. package/dist/components/Sidebar.svelte +84 -0
  94. package/dist/components/Sidebar.svelte.d.ts +24 -0
  95. package/dist/components/Skeleton.svelte +25 -0
  96. package/dist/components/Skeleton.svelte.d.ts +9 -0
  97. package/dist/components/Slider.svelte +121 -0
  98. package/dist/components/Slider.svelte.d.ts +16 -0
  99. package/dist/components/Spinner.svelte +30 -0
  100. package/dist/components/Spinner.svelte.d.ts +9 -0
  101. package/dist/components/SplitButton.svelte +113 -0
  102. package/dist/components/SplitButton.svelte.d.ts +14 -0
  103. package/dist/components/SplitPane.svelte +106 -0
  104. package/dist/components/SplitPane.svelte.d.ts +16 -0
  105. package/dist/components/Stepper.svelte +73 -0
  106. package/dist/components/Stepper.svelte.d.ts +26 -0
  107. package/dist/components/Switch.svelte +21 -0
  108. package/dist/components/Switch.svelte.d.ts +10 -0
  109. package/dist/components/Tabs.svelte +74 -0
  110. package/dist/components/Tabs.svelte.d.ts +18 -0
  111. package/dist/components/Tag.svelte +49 -0
  112. package/dist/components/Tag.svelte.d.ts +16 -0
  113. package/dist/components/TagInput.svelte +72 -0
  114. package/dist/components/TagInput.svelte.d.ts +17 -0
  115. package/dist/components/Textarea.svelte +37 -0
  116. package/dist/components/Textarea.svelte.d.ts +11 -0
  117. package/dist/components/TimeList.svelte +76 -0
  118. package/dist/components/TimeList.svelte.d.ts +10 -0
  119. package/dist/components/TimePicker.svelte +79 -0
  120. package/dist/components/TimePicker.svelte.d.ts +15 -0
  121. package/dist/components/TimeRangePicker.svelte +44 -0
  122. package/dist/components/TimeRangePicker.svelte.d.ts +17 -0
  123. package/dist/components/Timeline.svelte +38 -0
  124. package/dist/components/Timeline.svelte.d.ts +17 -0
  125. package/dist/components/Toaster.svelte +35 -0
  126. package/dist/components/Toaster.svelte.d.ts +18 -0
  127. package/dist/components/Tooltip.svelte +66 -0
  128. package/dist/components/Tooltip.svelte.d.ts +11 -0
  129. package/dist/components/Tree.svelte +147 -0
  130. package/dist/components/Tree.svelte.d.ts +16 -0
  131. package/dist/date.d.ts +19 -0
  132. package/dist/date.js +43 -0
  133. package/dist/duration.d.ts +11 -0
  134. package/dist/duration.js +44 -0
  135. package/dist/fonts/LICENSE-Inter.txt +93 -0
  136. package/dist/fonts/LICENSE-JetBrainsMono.txt +93 -0
  137. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  138. package/dist/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  139. package/dist/icons/Icon.svelte +30 -0
  140. package/dist/icons/Icon.svelte.d.ts +9 -0
  141. package/dist/icons/paths.d.ts +39 -0
  142. package/dist/icons/paths.js +43 -0
  143. package/dist/index.d.ts +69 -0
  144. package/dist/index.js +65 -0
  145. package/dist/styles/base.css +71 -0
  146. package/dist/styles/fonts.css +21 -0
  147. package/dist/styles/index.css +3 -0
  148. package/dist/styles/tokens.css +143 -0
  149. package/dist/time.d.ts +7 -0
  150. package/dist/time.js +30 -0
  151. package/dist/toast.svelte.d.ts +22 -0
  152. package/dist/toast.svelte.js +19 -0
  153. package/dist/types.d.ts +70 -0
  154. package/dist/types.js +1 -0
  155. package/package.json +76 -5
@@ -0,0 +1,143 @@
1
+ /*
2
+ * truss tokens
3
+ * Material 3 supplies: tonal color roles, surface containers, elevation, shape.
4
+ * Blueprint supplies: 32px controls, 1px structural borders, density, intent colors.
5
+ * Theme: follows the OS by default; force with <html data-theme="light|dark">.
6
+ */
7
+ :root {
8
+ /* Typography */
9
+ --tr-font-sans: 'Inter Variable', Inter, 'Segoe UI', system-ui, -apple-system, Roboto, sans-serif;
10
+ --tr-font-mono: 'JetBrains Mono Variable', 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
11
+ --tr-text-xs: 11px;
12
+ --tr-text-sm: 12px;
13
+ --tr-text-md: 14px;
14
+ --tr-text-lg: 16px;
15
+ --tr-text-xl: 20px;
16
+
17
+ /* Control sizing (Blueprint rigidity) */
18
+ --tr-control-h-sm: 24px;
19
+ --tr-control-h: 32px;
20
+ --tr-control-h-lg: 40px;
21
+ --tr-icon-sm: 16px;
22
+ --tr-icon-lg: 20px;
23
+ --tr-gap: 8px;
24
+
25
+ /* Shape (Material rounding, tightened) */
26
+ --tr-radius-sm: 4px;
27
+ --tr-radius-md: 8px;
28
+ --tr-radius-lg: 12px;
29
+ --tr-radius-pill: 999px;
30
+
31
+ /* Motion */
32
+ --tr-ease: cubic-bezier(0.2, 0, 0, 1);
33
+ --tr-dur-fast: 90ms;
34
+ --tr-dur: 160ms;
35
+
36
+ /* Color roles — light */
37
+ --tr-primary: #1f5fbf;
38
+ --tr-on-primary: #ffffff;
39
+ --tr-primary-container: #d8e4ff;
40
+ --tr-on-primary-container: #001a41;
41
+
42
+ --tr-success: #1b7a4b;
43
+ --tr-on-success: #ffffff;
44
+ --tr-success-container: #cdeedb;
45
+ --tr-on-success-container: #00210f;
46
+
47
+ --tr-warning: #8a5300;
48
+ --tr-on-warning: #ffffff;
49
+ --tr-warning-container: #ffe0a8;
50
+ --tr-on-warning-container: #2b1700;
51
+
52
+ --tr-danger: #b3261e;
53
+ --tr-on-danger: #ffffff;
54
+ --tr-danger-container: #ffdad5;
55
+ --tr-on-danger-container: #410002;
56
+
57
+ --tr-surface: #fbfbfe;
58
+ --tr-surface-container-low: #f4f5fa;
59
+ --tr-surface-container: #eef0f6;
60
+ --tr-surface-container-high: #e7e9f1;
61
+ --tr-surface-container-highest: #e0e3ec;
62
+ --tr-on-surface: #1a1c22;
63
+ --tr-on-surface-variant: #454955;
64
+ --tr-placeholder: #5f6471; /* ≥4.5:1 on input fill */
65
+ --tr-outline: #7a7f8e;
66
+ --tr-outline-variant: #c3c7d3;
67
+ --tr-scrim: rgb(10 14 24 / 0.4);
68
+
69
+ --tr-shadow-color: 24 30 48;
70
+ --tr-elevation-1: 0 1px 2px rgb(var(--tr-shadow-color) / 0.14), 0 1px 3px 1px rgb(var(--tr-shadow-color) / 0.08);
71
+ --tr-elevation-2: 0 2px 6px 2px rgb(var(--tr-shadow-color) / 0.12), 0 1px 2px rgb(var(--tr-shadow-color) / 0.2);
72
+ --tr-elevation-3: 0 6px 16px 4px rgb(var(--tr-shadow-color) / 0.14), 0 2px 4px rgb(var(--tr-shadow-color) / 0.2);
73
+ --tr-elevation-4: 0 12px 32px 8px rgb(var(--tr-shadow-color) / 0.18), 0 4px 8px rgb(var(--tr-shadow-color) / 0.24);
74
+
75
+ --tr-focus-ring: 0 0 0 3px color-mix(in srgb, var(--tr-primary) 32%, transparent);
76
+ color-scheme: light;
77
+ }
78
+
79
+ @media (prefers-color-scheme: dark) {
80
+ :root:not([data-theme='light']) {
81
+ color-scheme: dark;
82
+ --tr-primary: #a8c7ff;
83
+ --tr-on-primary: #002f68;
84
+ --tr-primary-container: #0d448f;
85
+ --tr-on-primary-container: #d8e4ff;
86
+ --tr-success: #7fd7a3;
87
+ --tr-on-success: #00391d;
88
+ --tr-success-container: #0a5230;
89
+ --tr-on-success-container: #cdeedb;
90
+ --tr-warning: #ffb958;
91
+ --tr-on-warning: #482900;
92
+ --tr-warning-container: #683d00;
93
+ --tr-on-warning-container: #ffe0a8;
94
+ --tr-danger: #ffb4ab;
95
+ --tr-on-danger: #690005;
96
+ --tr-danger-container: #93000a;
97
+ --tr-on-danger-container: #ffdad5;
98
+ --tr-surface: #111318;
99
+ --tr-surface-container-low: #181a20;
100
+ --tr-surface-container: #1d2026;
101
+ --tr-surface-container-high: #272a31;
102
+ --tr-surface-container-highest: #32353c;
103
+ --tr-on-surface: #e2e2e9;
104
+ --tr-on-surface-variant: #c3c6d1;
105
+ --tr-placeholder: #9a9eac;
106
+ --tr-outline: #8d919d;
107
+ --tr-outline-variant: #434752;
108
+ --tr-scrim: rgb(0 0 0 / 0.55);
109
+ --tr-shadow-color: 0 0 0;
110
+ }
111
+ }
112
+
113
+ :root[data-theme='dark'] {
114
+ color-scheme: dark;
115
+ --tr-primary: #a8c7ff;
116
+ --tr-on-primary: #002f68;
117
+ --tr-primary-container: #0d448f;
118
+ --tr-on-primary-container: #d8e4ff;
119
+ --tr-success: #7fd7a3;
120
+ --tr-on-success: #00391d;
121
+ --tr-success-container: #0a5230;
122
+ --tr-on-success-container: #cdeedb;
123
+ --tr-warning: #ffb958;
124
+ --tr-on-warning: #482900;
125
+ --tr-warning-container: #683d00;
126
+ --tr-on-warning-container: #ffe0a8;
127
+ --tr-danger: #ffb4ab;
128
+ --tr-on-danger: #690005;
129
+ --tr-danger-container: #93000a;
130
+ --tr-on-danger-container: #ffdad5;
131
+ --tr-surface: #111318;
132
+ --tr-surface-container-low: #181a20;
133
+ --tr-surface-container: #1d2026;
134
+ --tr-surface-container-high: #272a31;
135
+ --tr-surface-container-highest: #32353c;
136
+ --tr-on-surface: #e2e2e9;
137
+ --tr-on-surface-variant: #c3c6d1;
138
+ --tr-placeholder: #9a9eac;
139
+ --tr-outline: #8d919d;
140
+ --tr-outline-variant: #434752;
141
+ --tr-scrim: rgb(0 0 0 / 0.55);
142
+ --tr-shadow-color: 0 0 0;
143
+ }
package/dist/time.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /** Parses "14:30", "1430", "2:30 pm", "9a", "7" into a 24h "HH:MM" string, or null. */
2
+ export declare function parseTime(text: string): string | null;
3
+ export declare function formatTime(value: string, hour12: boolean): string;
4
+ export declare const splitTime: (value?: string) => {
5
+ h: number;
6
+ m: number;
7
+ };
package/dist/time.js ADDED
@@ -0,0 +1,30 @@
1
+ import { pad } from './date.js';
2
+ /** Parses "14:30", "1430", "2:30 pm", "9a", "7" into a 24h "HH:MM" string, or null. */
3
+ export function parseTime(text) {
4
+ const m = /^(\d{1,2})(?::?(\d{2}))?\s*(?:([ap])\.?m?\.?)?$/i.exec(text.trim());
5
+ if (!m)
6
+ return null;
7
+ let h = +m[1];
8
+ const min = +(m[2] ?? 0);
9
+ const ap = m[3]?.toLowerCase();
10
+ if (min > 59)
11
+ return null;
12
+ if (ap) {
13
+ if (h < 1 || h > 12)
14
+ return null;
15
+ h = (h % 12) + (ap === 'p' ? 12 : 0);
16
+ }
17
+ else if (h > 23)
18
+ return null;
19
+ return `${pad(h)}:${pad(min)}`;
20
+ }
21
+ export function formatTime(value, hour12) {
22
+ if (!hour12)
23
+ return value;
24
+ const [h, m] = value.split(':').map(Number);
25
+ return `${h % 12 || 12}:${pad(m)} ${h < 12 ? 'AM' : 'PM'}`;
26
+ }
27
+ export const splitTime = (value) => {
28
+ const [h, m] = (value ?? '00:00').split(':').map(Number);
29
+ return { h, m };
30
+ };
@@ -0,0 +1,22 @@
1
+ export type ToastIntent = 'primary' | 'success' | 'warning' | 'danger';
2
+ export type Toast = {
3
+ id: number;
4
+ intent: ToastIntent;
5
+ message: string;
6
+ timeout: number;
7
+ };
8
+ declare class ToastStore {
9
+ #private;
10
+ items: Toast[];
11
+ /** Show a toast. `timeout: 0` keeps it until dismissed. Returns its id. */
12
+ push(message: string, opts?: {
13
+ intent?: ToastIntent;
14
+ timeout?: number;
15
+ }): number;
16
+ success: (message: string, timeout?: number) => number;
17
+ warning: (message: string, timeout?: number) => number;
18
+ danger: (message: string, timeout?: number) => number;
19
+ dismiss(id: number): void;
20
+ }
21
+ export declare const toasts: ToastStore;
22
+ export {};
@@ -0,0 +1,19 @@
1
+ class ToastStore {
2
+ items = $state([]);
3
+ #next = 1;
4
+ /** Show a toast. `timeout: 0` keeps it until dismissed. Returns its id. */
5
+ push(message, opts = {}) {
6
+ const toast = { id: this.#next++, intent: opts.intent ?? 'primary', message, timeout: opts.timeout ?? 5000 };
7
+ this.items.push(toast);
8
+ if (toast.timeout > 0)
9
+ setTimeout(() => this.dismiss(toast.id), toast.timeout);
10
+ return toast.id;
11
+ }
12
+ success = (message, timeout) => this.push(message, { intent: 'success', timeout });
13
+ warning = (message, timeout) => this.push(message, { intent: 'warning', timeout });
14
+ danger = (message, timeout) => this.push(message, { intent: 'danger', timeout });
15
+ dismiss(id) {
16
+ this.items = this.items.filter((t) => t.id !== id);
17
+ }
18
+ }
19
+ export const toasts = new ToastStore();
@@ -0,0 +1,70 @@
1
+ import type { IconName } from './icons/paths.js';
2
+ export type Intent = 'primary' | 'neutral' | 'success' | 'warning' | 'danger';
3
+ export type MenuItem = {
4
+ label: string;
5
+ icon?: IconName;
6
+ disabled?: boolean;
7
+ /** Tint as a destructive action. */
8
+ danger?: boolean;
9
+ /** Right-aligned hint, e.g. "⌘K". Display only. */
10
+ shortcut?: string;
11
+ /** When set, renders as a checkbox menu item. */
12
+ checked?: boolean;
13
+ /** Nested submenu. */
14
+ items?: MenuEntry[];
15
+ onselect?: () => void;
16
+ };
17
+ export type MenuEntry = MenuItem | {
18
+ divider: true;
19
+ } | {
20
+ heading: string;
21
+ };
22
+ export type Column<R> = {
23
+ key: keyof R & string;
24
+ header: string;
25
+ width?: number;
26
+ minWidth?: number;
27
+ align?: 'start' | 'end';
28
+ sortable?: boolean;
29
+ /** Defaults to true (except the last column). */
30
+ resizable?: boolean;
31
+ /** Adds a filter control to this column when the table is `filterable`. */
32
+ filter?: 'text' | 'select' | 'number';
33
+ /** Choices for `filter: 'select'` (defaults to the distinct values in the data). */
34
+ filterOptions?: string[];
35
+ };
36
+ export type ColumnFilters = Record<string, string | string[] | {
37
+ min?: number;
38
+ max?: number;
39
+ } | undefined>;
40
+ export type SortState = {
41
+ key: string;
42
+ dir: 1 | -1;
43
+ } | null;
44
+ export type Option<V extends string | number = string> = {
45
+ value: V;
46
+ label: string;
47
+ icon?: IconName;
48
+ description?: string;
49
+ disabled?: boolean;
50
+ };
51
+ export type DateRange = {
52
+ start?: string;
53
+ end?: string;
54
+ };
55
+ export type TreeNode = {
56
+ id: string;
57
+ label: string;
58
+ icon?: IconName;
59
+ disabled?: boolean;
60
+ children?: TreeNode[];
61
+ /** With `loadChildren`: marks a node whose children are fetched on first expand. */
62
+ hasChildren?: boolean;
63
+ };
64
+ export type UploadItem = {
65
+ id: string;
66
+ file: File;
67
+ status: 'ready' | 'uploading' | 'done' | 'error';
68
+ progress: number;
69
+ error?: string;
70
+ };
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,77 @@
1
1
  {
2
- "name": "@ruckc/truss-ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
2
+ "name": "@ruckc/truss-ui",
3
+ "version": "1.0.0",
4
+ "description": "Svelte 5 / SvelteKit design system blending Material 3 surfaces with Blueprint density",
5
+ "keywords": [
6
+ "svelte",
7
+ "sveltekit",
8
+ "design-system",
9
+ "ui",
10
+ "components",
11
+ "accessible",
12
+ "material",
13
+ "blueprint"
14
+ ],
15
+ "type": "module",
16
+ "license": "MIT",
17
+ "author": "Curtis Ruck",
18
+ "homepage": "https://truss.ruck.io",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/ruckc/truss-ui.git"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/ruckc/truss-ui/issues"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "scripts": {
30
+ "dev": "vite dev",
31
+ "docs": "node scripts/extract-api.mjs",
32
+ "build": "npm run docs && vite build",
33
+ "preview": "vite preview",
34
+ "package": "svelte-kit sync && svelte-package",
35
+ "package:all": "npm run package && npm run package --workspaces",
36
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
37
+ "test": "playwright test",
38
+ "test:quick": "playwright test tests/lib.spec.ts tests/inputs.spec.ts tests/misc.spec.ts"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "!dist/**/*.test.*",
43
+ "!dist/**/*.spec.*"
44
+ ],
45
+ "sideEffects": [
46
+ "**/*.css"
47
+ ],
48
+ "svelte": "./dist/index.js",
49
+ "types": "./dist/index.d.ts",
50
+ "exports": {
51
+ ".": {
52
+ "types": "./dist/index.d.ts",
53
+ "svelte": "./dist/index.js"
54
+ },
55
+ "./styles.css": "./dist/styles/index.css",
56
+ "./tokens.css": "./dist/styles/tokens.css",
57
+ "./fonts.css": "./dist/styles/fonts.css"
58
+ },
59
+ "peerDependencies": {
60
+ "svelte": "^5.20.0"
61
+ },
62
+ "devDependencies": {
63
+ "@playwright/test": "^1.65.0",
64
+ "@sveltejs/adapter-static": "^4.0.1",
65
+ "@sveltejs/kit": "^2.20.0",
66
+ "@sveltejs/package": "^2.3.0",
67
+ "@sveltejs/vite-plugin-svelte": "^6.0.0",
68
+ "@types/node": "^26.6.6",
69
+ "svelte": "^5.20.0",
70
+ "svelte-check": "^4.0.0",
71
+ "typescript": "^5.6.0",
72
+ "vite": "^7.0.0"
73
+ },
74
+ "workspaces": [
75
+ "packages/*"
76
+ ]
77
+ }