@synthaxai/ui 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.
- package/README.md +262 -0
- package/dist/app.css +2 -0
- package/dist/app.html +12 -0
- package/dist/data-display/DataTable/DataTable.svelte +773 -0
- package/dist/data-display/DataTable/DataTable.svelte.d.ts +120 -0
- package/dist/data-display/DataTable/DataTable.svelte.d.ts.map +1 -0
- package/dist/data-display/DataTable/index.d.ts +2 -0
- package/dist/data-display/DataTable/index.d.ts.map +1 -0
- package/dist/data-display/DataTable/index.js +1 -0
- package/dist/data-display/StatCard/StatCard.svelte +409 -0
- package/dist/data-display/StatCard/StatCard.svelte.d.ts +63 -0
- package/dist/data-display/StatCard/StatCard.svelte.d.ts.map +1 -0
- package/dist/data-display/StatCard/index.d.ts +2 -0
- package/dist/data-display/StatCard/index.d.ts.map +1 -0
- package/dist/data-display/StatCard/index.js +1 -0
- package/dist/data-display/index.d.ts +8 -0
- package/dist/data-display/index.d.ts.map +1 -0
- package/dist/data-display/index.js +7 -0
- package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte +693 -0
- package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte.d.ts +66 -0
- package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte.d.ts.map +1 -0
- package/dist/dialogs/ConfirmDialog/index.d.ts +2 -0
- package/dist/dialogs/ConfirmDialog/index.d.ts.map +1 -0
- package/dist/dialogs/ConfirmDialog/index.js +1 -0
- package/dist/dialogs/Modal/Modal.svelte +441 -0
- package/dist/dialogs/Modal/Modal.svelte.d.ts +69 -0
- package/dist/dialogs/Modal/Modal.svelte.d.ts.map +1 -0
- package/dist/dialogs/Modal/index.d.ts +2 -0
- package/dist/dialogs/Modal/index.d.ts.map +1 -0
- package/dist/dialogs/Modal/index.js +1 -0
- package/dist/dialogs/index.d.ts +8 -0
- package/dist/dialogs/index.d.ts.map +1 -0
- package/dist/dialogs/index.js +7 -0
- package/dist/feedback/Alert/Alert.svelte +565 -0
- package/dist/feedback/Alert/Alert.svelte.d.ts +60 -0
- package/dist/feedback/Alert/Alert.svelte.d.ts.map +1 -0
- package/dist/feedback/Alert/index.d.ts +2 -0
- package/dist/feedback/Alert/index.d.ts.map +1 -0
- package/dist/feedback/Alert/index.js +1 -0
- package/dist/feedback/EmptyState/EmptyState.svelte +377 -0
- package/dist/feedback/EmptyState/EmptyState.svelte.d.ts +63 -0
- package/dist/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -0
- package/dist/feedback/EmptyState/index.d.ts +2 -0
- package/dist/feedback/EmptyState/index.d.ts.map +1 -0
- package/dist/feedback/EmptyState/index.js +1 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte +585 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +68 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.d.ts +2 -0
- package/dist/feedback/ProgressBar/index.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.js +1 -0
- package/dist/feedback/Skeleton/Skeleton.svelte +568 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +54 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.d.ts +2 -0
- package/dist/feedback/Skeleton/index.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.js +1 -0
- package/dist/feedback/Spinner/Spinner.svelte +434 -0
- package/dist/feedback/Spinner/Spinner.svelte.d.ts +49 -0
- package/dist/feedback/Spinner/Spinner.svelte.d.ts.map +1 -0
- package/dist/feedback/Spinner/index.d.ts +2 -0
- package/dist/feedback/Spinner/index.d.ts.map +1 -0
- package/dist/feedback/Spinner/index.js +1 -0
- package/dist/feedback/Toast/Toast.svelte +587 -0
- package/dist/feedback/Toast/Toast.svelte.d.ts +55 -0
- package/dist/feedback/Toast/Toast.svelte.d.ts.map +1 -0
- package/dist/feedback/Toast/ToastContainer.svelte +168 -0
- package/dist/feedback/Toast/ToastContainer.svelte.d.ts +28 -0
- package/dist/feedback/Toast/ToastContainer.svelte.d.ts.map +1 -0
- package/dist/feedback/Toast/index.d.ts +4 -0
- package/dist/feedback/Toast/index.d.ts.map +1 -0
- package/dist/feedback/Toast/index.js +3 -0
- package/dist/feedback/Toast/toast-store.d.ts +72 -0
- package/dist/feedback/Toast/toast-store.d.ts.map +1 -0
- package/dist/feedback/Toast/toast-store.js +157 -0
- package/dist/feedback/index.d.ts +13 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +12 -0
- package/dist/forms/Checkbox/Checkbox.svelte +404 -0
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts +62 -0
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts.map +1 -0
- package/dist/forms/Checkbox/index.d.ts +2 -0
- package/dist/forms/Checkbox/index.d.ts.map +1 -0
- package/dist/forms/Checkbox/index.js +1 -0
- package/dist/forms/FormField/FormField.svelte +299 -0
- package/dist/forms/FormField/FormField.svelte.d.ts +43 -0
- package/dist/forms/FormField/FormField.svelte.d.ts.map +1 -0
- package/dist/forms/FormField/index.d.ts +2 -0
- package/dist/forms/FormField/index.d.ts.map +1 -0
- package/dist/forms/FormField/index.js +1 -0
- package/dist/forms/RadioGroup/RadioGroup.svelte +418 -0
- package/dist/forms/RadioGroup/RadioGroup.svelte.d.ts +70 -0
- package/dist/forms/RadioGroup/RadioGroup.svelte.d.ts.map +1 -0
- package/dist/forms/RadioGroup/index.d.ts +2 -0
- package/dist/forms/RadioGroup/index.d.ts.map +1 -0
- package/dist/forms/RadioGroup/index.js +1 -0
- package/dist/forms/Select/Select.svelte +548 -0
- package/dist/forms/Select/Select.svelte.d.ts +74 -0
- package/dist/forms/Select/Select.svelte.d.ts.map +1 -0
- package/dist/forms/Select/index.d.ts +2 -0
- package/dist/forms/Select/index.d.ts.map +1 -0
- package/dist/forms/Select/index.js +1 -0
- package/dist/forms/TextInput/TextInput.svelte +628 -0
- package/dist/forms/TextInput/TextInput.svelte.d.ts +97 -0
- package/dist/forms/TextInput/TextInput.svelte.d.ts.map +1 -0
- package/dist/forms/TextInput/index.d.ts +2 -0
- package/dist/forms/TextInput/index.d.ts.map +1 -0
- package/dist/forms/TextInput/index.js +1 -0
- package/dist/forms/Textarea/Textarea.svelte +587 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts +71 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts.map +1 -0
- package/dist/forms/Textarea/index.d.ts +2 -0
- package/dist/forms/Textarea/index.d.ts.map +1 -0
- package/dist/forms/Textarea/index.js +1 -0
- package/dist/forms/index.d.ts +13 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +12 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/layout/Card/Card.svelte +316 -0
- package/dist/layout/Card/Card.svelte.d.ts +63 -0
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -0
- package/dist/layout/Card/index.d.ts +2 -0
- package/dist/layout/Card/index.d.ts.map +1 -0
- package/dist/layout/Card/index.js +1 -0
- package/dist/layout/Container/Container.svelte +252 -0
- package/dist/layout/Container/Container.svelte.d.ts +50 -0
- package/dist/layout/Container/Container.svelte.d.ts.map +1 -0
- package/dist/layout/Container/index.d.ts +2 -0
- package/dist/layout/Container/index.d.ts.map +1 -0
- package/dist/layout/Container/index.js +1 -0
- package/dist/layout/index.d.ts +8 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +7 -0
- package/dist/navigation/StepIndicator/StepIndicator.svelte +601 -0
- package/dist/navigation/StepIndicator/StepIndicator.svelte.d.ts +70 -0
- package/dist/navigation/StepIndicator/StepIndicator.svelte.d.ts.map +1 -0
- package/dist/navigation/StepIndicator/index.d.ts +2 -0
- package/dist/navigation/StepIndicator/index.d.ts.map +1 -0
- package/dist/navigation/StepIndicator/index.js +1 -0
- package/dist/navigation/index.d.ts +7 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +6 -0
- package/dist/primitives/Badge/Badge.svelte +365 -0
- package/dist/primitives/Badge/Badge.svelte.d.ts +39 -0
- package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -0
- package/dist/primitives/Badge/index.d.ts +2 -0
- package/dist/primitives/Badge/index.d.ts.map +1 -0
- package/dist/primitives/Badge/index.js +1 -0
- package/dist/primitives/Button/Button.svelte +430 -0
- package/dist/primitives/Button/Button.svelte.d.ts +50 -0
- package/dist/primitives/Button/Button.svelte.d.ts.map +1 -0
- package/dist/primitives/Button/index.d.ts +2 -0
- package/dist/primitives/Button/index.d.ts.map +1 -0
- package/dist/primitives/Button/index.js +1 -0
- package/dist/primitives/index.d.ts +9 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +8 -0
- package/dist/routes/+layout.svelte +12 -0
- package/dist/routes/+layout.svelte.d.ts +12 -0
- package/dist/routes/+layout.svelte.d.ts.map +1 -0
- package/dist/routes/+page.svelte +53 -0
- package/dist/routes/+page.svelte.d.ts +27 -0
- package/dist/routes/+page.svelte.d.ts.map +1 -0
- package/dist/styles/tokens.css +399 -0
- package/dist/types/index.d.ts +175 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/utils/accessibility.d.ts +103 -0
- package/dist/utils/accessibility.d.ts.map +1 -0
- package/dist/utils/accessibility.js +202 -0
- package/dist/utils/cn.d.ts +71 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +61 -0
- package/dist/utils/form-styles.d.ts +76 -0
- package/dist/utils/form-styles.d.ts.map +1 -0
- package/dist/utils/form-styles.js +95 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +13 -0
- package/dist/utils/keyboard.d.ts +94 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/keyboard.js +179 -0
- package/package.json +119 -0
package/README.md
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# @synthaxai/ui — Component Library
|
|
2
|
+
|
|
3
|
+
Production-quality UI component library for Synthax healthcare applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **23 Components** — Comprehensive set of UI components for healthcare apps
|
|
8
|
+
- **Svelte 5** — Built with modern runes and snippets
|
|
9
|
+
- **TypeScript** — Full type definitions for all components
|
|
10
|
+
- **Accessible** — WCAG 2.1 AA compliant with screen reader support
|
|
11
|
+
- **Dark Mode** — Automatic theme support via CSS variables
|
|
12
|
+
- **Healthcare-Ready** — Designed for critical healthcare application requirements
|
|
13
|
+
- **463 Tests** — Comprehensive unit tests with Vitest
|
|
14
|
+
- **E2E Testing Ready** — All components support `testId` prop for Playwright/Cypress
|
|
15
|
+
- **Focus Management** — Proper focus restoration for modals and dialogs
|
|
16
|
+
- **Reduced Motion** — Respects `prefers-reduced-motion` user preference
|
|
17
|
+
|
|
18
|
+
## Components
|
|
19
|
+
|
|
20
|
+
### Primitives
|
|
21
|
+
- **Button** — Multi-variant with loading states and icon-only mode
|
|
22
|
+
- **Badge** — Status indicators with semantic colors
|
|
23
|
+
|
|
24
|
+
### Forms
|
|
25
|
+
- **TextInput** — Text, email, password, tel input with validation
|
|
26
|
+
- **Textarea** — Multi-line input for clinical notes with auto-resize
|
|
27
|
+
- **Select** — Dropdown with grouped options support
|
|
28
|
+
- **Checkbox** — Accessible checkbox with indeterminate state
|
|
29
|
+
- **RadioGroup** — Accessible radio group with descriptions
|
|
30
|
+
- **FormField** — Wrapper for consistent form layouts
|
|
31
|
+
|
|
32
|
+
### Feedback
|
|
33
|
+
- **Alert** — Inline/banner alerts with clinical type support
|
|
34
|
+
- **Toast** — Temporary notifications
|
|
35
|
+
- **Spinner** — Loading indicators
|
|
36
|
+
- **ProgressBar** — Determinate and indeterminate progress
|
|
37
|
+
- **Skeleton** — Loading placeholders with shimmer/pulse animations
|
|
38
|
+
- **EmptyState** — Empty data placeholders
|
|
39
|
+
|
|
40
|
+
### Layout
|
|
41
|
+
- **Card** — Glass morphism cards with header/footer slots
|
|
42
|
+
- **Container** — Responsive content containers
|
|
43
|
+
|
|
44
|
+
### Data Display
|
|
45
|
+
- **StatCard** — Dashboard statistics with trends
|
|
46
|
+
- **DataTable** — Sortable tables with mobile-responsive design
|
|
47
|
+
|
|
48
|
+
### Navigation
|
|
49
|
+
- **StepIndicator** — Multi-step workflow progress
|
|
50
|
+
|
|
51
|
+
### Dialogs
|
|
52
|
+
- **Modal** — Accessible modal with focus trap
|
|
53
|
+
- **ConfirmDialog** — Confirmation dialogs for critical actions
|
|
54
|
+
|
|
55
|
+
## Structure
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
src/
|
|
59
|
+
├── index.ts # Main exports
|
|
60
|
+
├── types/ # TypeScript type definitions
|
|
61
|
+
├── utils/ # Utility functions (cn, keyboard, a11y)
|
|
62
|
+
├── styles/ # Design tokens CSS
|
|
63
|
+
├── primitives/ # Button, Badge
|
|
64
|
+
├── forms/ # TextInput, Textarea, Select, Checkbox, RadioGroup, FormField
|
|
65
|
+
├── feedback/ # Alert, Toast, Spinner, ProgressBar, Skeleton, EmptyState
|
|
66
|
+
├── layout/ # Card, Container
|
|
67
|
+
├── data-display/ # StatCard, DataTable
|
|
68
|
+
├── navigation/ # StepIndicator
|
|
69
|
+
└── dialogs/ # Modal, ConfirmDialog
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Installation
|
|
73
|
+
|
|
74
|
+
### For synthaxweb or other Synthax apps
|
|
75
|
+
|
|
76
|
+
Add the library as a local dependency in your `package.json`:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"dependencies": {
|
|
81
|
+
"@synthaxai/ui": "file:../ui/lib"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Then install:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pnpm install
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Peer Dependencies
|
|
93
|
+
|
|
94
|
+
The library requires:
|
|
95
|
+
- `svelte` ^5.0.0
|
|
96
|
+
- `lucide-svelte` ^0.400.0
|
|
97
|
+
|
|
98
|
+
## Usage
|
|
99
|
+
|
|
100
|
+
### 1. Import styles in your app's CSS
|
|
101
|
+
|
|
102
|
+
```css
|
|
103
|
+
/* app.css */
|
|
104
|
+
@import '@synthaxai/ui/styles';
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 2. Use components in your Svelte files
|
|
108
|
+
|
|
109
|
+
```svelte
|
|
110
|
+
<script>
|
|
111
|
+
import { Button, Card, TextInput } from '@synthaxai/ui';
|
|
112
|
+
</script>
|
|
113
|
+
|
|
114
|
+
<Card>
|
|
115
|
+
<TextInput label="Patient Name" bind:value={patientName} />
|
|
116
|
+
<Button variant="primary" onclick={handleSubmit}>Save</Button>
|
|
117
|
+
</Card>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Import by category (tree-shaking friendly)
|
|
121
|
+
|
|
122
|
+
```svelte
|
|
123
|
+
<script>
|
|
124
|
+
import { Button } from '@synthaxai/ui/primitives';
|
|
125
|
+
import { TextInput, Select } from '@synthaxai/ui/forms';
|
|
126
|
+
import { Modal } from '@synthaxai/ui/dialogs';
|
|
127
|
+
import { Alert } from '@synthaxai/ui/feedback';
|
|
128
|
+
</script>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Using utilities
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
import { cn, announce, generateId } from '@synthaxai/ui/utils';
|
|
135
|
+
|
|
136
|
+
// Merge class names conditionally
|
|
137
|
+
const className = cn('base-class', isActive && 'active-class');
|
|
138
|
+
|
|
139
|
+
// Announce to screen readers
|
|
140
|
+
announce('Form submitted successfully');
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Development
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Install dependencies
|
|
147
|
+
pnpm install
|
|
148
|
+
|
|
149
|
+
# Start dev server
|
|
150
|
+
pnpm dev
|
|
151
|
+
|
|
152
|
+
# Run tests
|
|
153
|
+
pnpm test
|
|
154
|
+
|
|
155
|
+
# Run tests in watch mode
|
|
156
|
+
pnpm test:watch
|
|
157
|
+
|
|
158
|
+
# Build the library
|
|
159
|
+
pnpm build
|
|
160
|
+
|
|
161
|
+
# Type check
|
|
162
|
+
pnpm check
|
|
163
|
+
|
|
164
|
+
# Lint (with Biome)
|
|
165
|
+
pnpm lint
|
|
166
|
+
|
|
167
|
+
# Lint and fix
|
|
168
|
+
pnpm lint:fix
|
|
169
|
+
|
|
170
|
+
# Format (with Biome)
|
|
171
|
+
pnpm format
|
|
172
|
+
|
|
173
|
+
# Check format
|
|
174
|
+
pnpm format:check
|
|
175
|
+
|
|
176
|
+
# Lint + format + organize imports
|
|
177
|
+
pnpm check:all
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## E2E Testing Support
|
|
181
|
+
|
|
182
|
+
All interactive components support the `testId` prop for Playwright or Cypress selectors:
|
|
183
|
+
|
|
184
|
+
```svelte
|
|
185
|
+
<Button testId="submit-button" onclick={handleSubmit}>Submit</Button>
|
|
186
|
+
<TextInput testId="patient-name" label="Patient Name" bind:value={name} />
|
|
187
|
+
<Modal testId="confirm-modal" open={isOpen} onclose={() => isOpen = false}>
|
|
188
|
+
...
|
|
189
|
+
</Modal>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
In Playwright tests:
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
await page.getByTestId('submit-button').click();
|
|
196
|
+
await page.getByTestId('patient-name').fill('John Doe');
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Component Guidelines
|
|
200
|
+
|
|
201
|
+
Each component:
|
|
202
|
+
|
|
203
|
+
1. **Is self-contained** — Own styles, types, and tests
|
|
204
|
+
2. **Supports dark mode** — Uses CSS variables for theming
|
|
205
|
+
3. **Is accessible** — Proper ARIA attributes and keyboard navigation
|
|
206
|
+
4. **Is typed** — Exports TypeScript interfaces for all props
|
|
207
|
+
5. **Is documented** — JSDoc comments and usage examples
|
|
208
|
+
6. **Is tested** — Unit tests covering rendering, states, and accessibility
|
|
209
|
+
7. **Supports E2E testing** — Optional `testId` prop for test selectors
|
|
210
|
+
|
|
211
|
+
## Theme Support
|
|
212
|
+
|
|
213
|
+
The library supports light and dark themes in three modes:
|
|
214
|
+
|
|
215
|
+
### 1. Automatic (System Preference)
|
|
216
|
+
|
|
217
|
+
By default, the library respects `prefers-color-scheme`:
|
|
218
|
+
|
|
219
|
+
```css
|
|
220
|
+
/* Just import the styles - theme auto-detected */
|
|
221
|
+
@import '@synthaxai/ui/styles';
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### 2. Explicit Theme Control
|
|
225
|
+
|
|
226
|
+
Set `data-theme` on the root element:
|
|
227
|
+
|
|
228
|
+
```html
|
|
229
|
+
<!-- Force light mode -->
|
|
230
|
+
<html data-theme="light">
|
|
231
|
+
|
|
232
|
+
<!-- Force dark mode -->
|
|
233
|
+
<html data-theme="dark">
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 3. Toggle with JavaScript
|
|
237
|
+
|
|
238
|
+
```javascript
|
|
239
|
+
// Toggle theme
|
|
240
|
+
function toggleTheme() {
|
|
241
|
+
const current = document.documentElement.dataset.theme;
|
|
242
|
+
document.documentElement.dataset.theme = current === 'dark' ? 'light' : 'dark';
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Theme precedence:**
|
|
247
|
+
1. `data-theme="dark"` → dark mode
|
|
248
|
+
2. `data-theme="light"` → light mode
|
|
249
|
+
3. No `data-theme` → follows system preference
|
|
250
|
+
|
|
251
|
+
## Design System
|
|
252
|
+
|
|
253
|
+
The library follows Synthax's design system:
|
|
254
|
+
|
|
255
|
+
| Token | Value | Usage |
|
|
256
|
+
|-------|-------|-------|
|
|
257
|
+
| Primary | `#124545` | Brand color, CTAs |
|
|
258
|
+
| Radius (buttons) | `8px` | rounded-lg |
|
|
259
|
+
| Radius (cards) | `12px` | rounded-xl |
|
|
260
|
+
| Radius (modals) | `16px` | rounded-2xl |
|
|
261
|
+
|
|
262
|
+
See `src/styles/tokens.css` for all design tokens.
|
package/dist/app.css
ADDED
package/dist/app.html
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
%sveltekit.head%
|
|
8
|
+
</head>
|
|
9
|
+
<body data-sveltekit-preload-data="hover">
|
|
10
|
+
<div style="display: contents">%sveltekit.body%</div>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|