svelte-comp 1.1.3 → 1.1.5
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/dist/App.svelte +6 -10
- package/dist/Container.svelte +60 -0
- package/dist/Container.svelte.d.ts +12 -0
- package/dist/app.css +233 -1
- package/dist/lib/CodeView.svelte +3 -3
- package/dist/lib/Form.svelte +5 -2
- package/dist/lib/PrimaryColorSelect.svelte +19 -5
- package/dist/lib/ProgressBar.svelte +1 -1
- package/dist/lib/ProgressCircle.svelte +5 -4
- package/dist/lib/Select.svelte +1 -0
- package/dist/lib/Slider.svelte +2 -0
- package/dist/lib/TimePicker.svelte +3 -3
- package/dist/lib/lang.d.ts +7 -7
- package/dist/lib/lang.js +7 -7
- package/dist/main.d.ts +0 -1
- package/dist/main.js +0 -1
- package/package.json +1 -1
package/dist/App.svelte
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import Toast from "./lib/Toast.svelte";
|
|
20
20
|
import Tooltip from "./lib/Tooltip.svelte";
|
|
21
21
|
import type { ToastVariant } from "./lib/types";
|
|
22
|
+
import Container from "./Container.svelte";
|
|
22
23
|
|
|
23
24
|
const tabs = [
|
|
24
25
|
{ id: "overview", label: "Overview" },
|
|
@@ -151,15 +152,10 @@
|
|
|
151
152
|
}
|
|
152
153
|
</script>
|
|
153
154
|
|
|
154
|
-
<
|
|
155
|
-
<div class="pointer-events-none absolute inset-0 overflow-hidden">
|
|
156
|
-
<div class="absolute -left-10 top-10 h-64 w-64 rounded-full bg-[var(--color-bg-primary)]/10 blur-3xl"></div>
|
|
157
|
-
<div class="absolute right-0 bottom-0 h-72 w-72 rounded-full bg-[var(--color-bg-warning)]/20 blur-3xl"></div>
|
|
158
|
-
</div>
|
|
159
|
-
|
|
155
|
+
<Container>
|
|
160
156
|
<div class="relative mx-auto max-w-6xl space-y-8 px-6 py-10">
|
|
161
157
|
<section
|
|
162
|
-
class="relative
|
|
158
|
+
class="relative rounded-[28px] border border-[var(--border-color-default)] bg-gradient-to-br from-[var(--color-bg-surface)] via-white/70 to-[var(--color-bg-muted)] shadow-[0_20px_60px_-25px_var(--shadow-color)] dark:from-[var(--color-bg-surface)] dark:via-slate-900/70 dark:to-slate-900/50"
|
|
163
159
|
>
|
|
164
160
|
<div
|
|
165
161
|
class="absolute inset-0 bg-[radial-gradient(circle_at_20%_20%,rgba(99,102,241,0.18),transparent_35%),radial-gradient(circle_at_80%_0%,rgba(16,185,129,0.14),transparent_25%)]"
|
|
@@ -168,7 +164,7 @@
|
|
|
168
164
|
<div class="relative grid gap-8 p-8 md:p-10 lg:grid-cols-[1.1fr_0.9fr]">
|
|
169
165
|
<div class="space-y-4">
|
|
170
166
|
<p class="text-xs uppercase tracking-[0.25em] text-[var(--color-text-muted)]">
|
|
171
|
-
svelte-comp
|
|
167
|
+
svelte-comp
|
|
172
168
|
</p>
|
|
173
169
|
<h1 class="text-3xl font-bold leading-tight md:text-4xl">
|
|
174
170
|
Component showcase
|
|
@@ -203,7 +199,7 @@
|
|
|
203
199
|
</div>
|
|
204
200
|
|
|
205
201
|
<div
|
|
206
|
-
class="space-y-4 rounded-2xl border border-[var(--border-color-default)] bg-white/70 p-5 shadow-lg
|
|
202
|
+
class="space-y-4 rounded-2xl border border-[var(--border-color-default)] bg-white/70 p-5 shadow-lg dark:bg-slate-900/60"
|
|
207
203
|
>
|
|
208
204
|
<div class="flex items-start justify-between gap-3">
|
|
209
205
|
<div>
|
|
@@ -552,4 +548,4 @@
|
|
|
552
548
|
timeout={3500}
|
|
553
549
|
/>
|
|
554
550
|
{/each}
|
|
555
|
-
</
|
|
551
|
+
</Container>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- src/Container.svelte -->
|
|
2
|
+
<script lang="ts">
|
|
3
|
+
import type { Snippet } from "svelte";
|
|
4
|
+
import { cx } from "./utils";
|
|
5
|
+
|
|
6
|
+
type Props = {
|
|
7
|
+
header?: Snippet;
|
|
8
|
+
footer?: Snippet;
|
|
9
|
+
left?: Snippet;
|
|
10
|
+
right?: Snippet;
|
|
11
|
+
children?: Snippet;
|
|
12
|
+
class?: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
header,
|
|
17
|
+
footer,
|
|
18
|
+
left,
|
|
19
|
+
right,
|
|
20
|
+
children,
|
|
21
|
+
class: externalClass = "",
|
|
22
|
+
}: Props = $props();
|
|
23
|
+
|
|
24
|
+
const baseClass =
|
|
25
|
+
"min-h-dvh w-full bg-[var(--color-bg-page,oklch(98%_0_0))] text-[var(--color-text-default,oklch(15%_0_0))] transition-colors duration-[var(--transition-normal,300ms)]";
|
|
26
|
+
|
|
27
|
+
const rootClass = $derived(cx(baseClass, externalClass));
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<div class={rootClass}>
|
|
31
|
+
<div class="grid min-h-dvh grid-rows-[auto_1fr_auto]">
|
|
32
|
+
{#if header}
|
|
33
|
+
<header class="p-[var(--spacing-md,1rem)]">
|
|
34
|
+
{@render header?.()}
|
|
35
|
+
</header>
|
|
36
|
+
{/if}
|
|
37
|
+
|
|
38
|
+
{#if left}
|
|
39
|
+
<aside class="hidden lg:block p-[var(--spacing-md,1rem)]">
|
|
40
|
+
{@render left?.()}
|
|
41
|
+
</aside>
|
|
42
|
+
{/if}
|
|
43
|
+
|
|
44
|
+
<main class="p-[var(--spacing-md,1rem)]">
|
|
45
|
+
{@render children?.()}
|
|
46
|
+
</main>
|
|
47
|
+
|
|
48
|
+
{#if right}
|
|
49
|
+
<aside class="hidden lg:block p-[var(--spacing-md,1rem)]">
|
|
50
|
+
{@render right?.()}
|
|
51
|
+
</aside>
|
|
52
|
+
{/if}
|
|
53
|
+
|
|
54
|
+
{#if footer}
|
|
55
|
+
<footer class="p-[var(--spacing-md,1rem)]">
|
|
56
|
+
{@render footer?.()}
|
|
57
|
+
</footer>
|
|
58
|
+
{/if}
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
type Props = {
|
|
3
|
+
header?: Snippet;
|
|
4
|
+
footer?: Snippet;
|
|
5
|
+
left?: Snippet;
|
|
6
|
+
right?: Snippet;
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
class?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const Container: import("svelte").Component<Props, {}, "">;
|
|
11
|
+
type Container = ReturnType<typeof Container>;
|
|
12
|
+
export default Container;
|
package/dist/app.css
CHANGED
|
@@ -1,3 +1,235 @@
|
|
|
1
1
|
/* src/app.css */
|
|
2
2
|
|
|
3
|
-
@import "tailwindcss";
|
|
3
|
+
@import "tailwindcss";
|
|
4
|
+
|
|
5
|
+
/* src/styles.css */
|
|
6
|
+
@import "tailwindcss";
|
|
7
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
8
|
+
|
|
9
|
+
@theme {
|
|
10
|
+
/* COLORS — TEXT */
|
|
11
|
+
--color-text-default: oklch(15% 0 0deg);
|
|
12
|
+
--color-text-muted: oklch(60% 0 0deg);
|
|
13
|
+
--color-text-danger: oklch(92% 0.05 25deg);
|
|
14
|
+
--color-text-success: oklch(92% 0.05 150deg);
|
|
15
|
+
--color-text-warning: oklch(95% 0.05 90deg);
|
|
16
|
+
--color-text-link: oklch(35% 0.3 250deg);
|
|
17
|
+
--color-text-red: oklch(50% 0.25 30deg);
|
|
18
|
+
|
|
19
|
+
/* COLORS — BG */
|
|
20
|
+
--color-bg-page: oklch(98% 0 0deg);
|
|
21
|
+
--color-bg-surface: oklch(100% 0 0deg);
|
|
22
|
+
--color-bg-primary: oklch(62.3% 0.214 259.8deg);
|
|
23
|
+
--color-primary: var(--color-bg-primary);
|
|
24
|
+
--color-bg-secondary: oklch(80% 0 0deg);
|
|
25
|
+
--color-bg-danger: oklch(60% 0.25 30deg);
|
|
26
|
+
--color-bg-success: oklch(55% 0.2 150deg);
|
|
27
|
+
--color-bg-warning: oklch(75% 0.2 70deg);
|
|
28
|
+
--color-bg-muted: oklch(90% 0 0deg);
|
|
29
|
+
|
|
30
|
+
/* INTERACTION STATES */
|
|
31
|
+
--color-bg-hover: oklch(94% 0 0deg);
|
|
32
|
+
--color-bg-active: oklch(88% 0 0deg);
|
|
33
|
+
|
|
34
|
+
/* BORDER */
|
|
35
|
+
--border-color-default: oklch(85% 0 0deg);
|
|
36
|
+
--border-color-primary: oklch(50% 0.19 259.8deg);
|
|
37
|
+
--border-color-strong: oklch(75% 0 0deg);
|
|
38
|
+
--border-color-focus: oklch(68.7% 0.14 237.5deg);
|
|
39
|
+
|
|
40
|
+
/* SHADOW */
|
|
41
|
+
--shadow-color: oklch(0% 0 0deg / 0.15);
|
|
42
|
+
|
|
43
|
+
/* SPACING */
|
|
44
|
+
--spacing-xs: 0.25rem;
|
|
45
|
+
--spacing-sm: 0.5rem;
|
|
46
|
+
--spacing-md: 1rem;
|
|
47
|
+
--spacing-lg: 1.5rem;
|
|
48
|
+
--spacing-xl: 2rem;
|
|
49
|
+
|
|
50
|
+
/* TYPOGRAPHY */
|
|
51
|
+
--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
|
|
52
|
+
--font-mono: "Fira Code", "Consolas", "Monaco", monospace;
|
|
53
|
+
|
|
54
|
+
/* FONT WEIGHTS */
|
|
55
|
+
--font-weight-normal: 400;
|
|
56
|
+
--font-weight-medium: 500;
|
|
57
|
+
--font-weight-semibold: 600;
|
|
58
|
+
--font-weight-bold: 700;
|
|
59
|
+
|
|
60
|
+
/* TEXT SIZES */
|
|
61
|
+
--text-xs: 0.75rem;
|
|
62
|
+
--text-sm: 0.875rem;
|
|
63
|
+
--text-md: 1rem;
|
|
64
|
+
--text-lg: 1.125rem;
|
|
65
|
+
--text-xl: 1.25rem;
|
|
66
|
+
|
|
67
|
+
/* LINE HEIGHT & LETTER SPACING */
|
|
68
|
+
--line-height-tight: 1.1;
|
|
69
|
+
--line-height-normal: 1.4;
|
|
70
|
+
--line-height-relaxed: 1.6;
|
|
71
|
+
--letter-spacing-tight: -0.01em;
|
|
72
|
+
--letter-spacing-normal: 0;
|
|
73
|
+
--letter-spacing-wide: 0.02em;
|
|
74
|
+
|
|
75
|
+
/* RADIUS */
|
|
76
|
+
--radius-sm: 0.125rem;
|
|
77
|
+
--radius-md: 0.375rem;
|
|
78
|
+
--radius-lg: 0.5rem;
|
|
79
|
+
--radius-xl: 0.75rem;
|
|
80
|
+
--radius-2xl: 1rem;
|
|
81
|
+
--radius-full: 9999px;
|
|
82
|
+
|
|
83
|
+
/* TRANSITIONS */
|
|
84
|
+
--transition-fast: 150ms;
|
|
85
|
+
--transition-normal: 300ms;
|
|
86
|
+
--transition-slow: 500ms;
|
|
87
|
+
--timing-default: ease-in-out;
|
|
88
|
+
|
|
89
|
+
/* OPACITY */
|
|
90
|
+
--opacity-disabled: 0.5;
|
|
91
|
+
--opacity-hover: 0.9;
|
|
92
|
+
--opacity-overlay: 0.7;
|
|
93
|
+
|
|
94
|
+
/* Z-INDEX */
|
|
95
|
+
--z-base: 0;
|
|
96
|
+
--z-dropdown: 10;
|
|
97
|
+
--z-overlay: 50;
|
|
98
|
+
--z-modal: 100;
|
|
99
|
+
--z-toast: 200;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.dark {
|
|
103
|
+
/* COLORS — TEXT */
|
|
104
|
+
--color-text-default: oklch(98% 0 0deg);
|
|
105
|
+
--color-text-muted: oklch(60% 0 0deg);
|
|
106
|
+
--color-text-danger: oklch(98% 0.02 25deg);
|
|
107
|
+
--color-text-success: oklch(92% 0.05 150deg);
|
|
108
|
+
--color-text-warning: oklch(95% 0.05 90deg);
|
|
109
|
+
--color-text-link: oklch(65% 0.3 250deg);
|
|
110
|
+
--color-text-red: oklch(50% 0.25 30deg);
|
|
111
|
+
|
|
112
|
+
/* COLORS — BG */
|
|
113
|
+
--color-bg-page: oklch(15% 0 0deg);
|
|
114
|
+
--color-bg-surface: oklch(26% 0 0deg);
|
|
115
|
+
--color-bg-primary: oklch(42% 0.19 259.8deg);
|
|
116
|
+
--color-primary: var(--color-bg-primary);
|
|
117
|
+
--color-bg-secondary: oklch(45% 0 0deg);
|
|
118
|
+
--color-bg-danger: oklch(50% 0.25 30deg);
|
|
119
|
+
--color-bg-success: oklch(45% 0.2 150deg);
|
|
120
|
+
--color-bg-warning: oklch(65% 0.2 70deg);
|
|
121
|
+
--color-bg-muted: oklch(30% 0 0deg);
|
|
122
|
+
|
|
123
|
+
/* INTERACTION STATES */
|
|
124
|
+
--color-bg-hover: oklch(25% 0 0deg);
|
|
125
|
+
--color-bg-active: oklch(18% 0 0deg);
|
|
126
|
+
|
|
127
|
+
/* BORDER */
|
|
128
|
+
--border-color-default: oklch(35% 0 0deg);
|
|
129
|
+
--border-color-primary: oklch(50% 0.17 259.8deg);
|
|
130
|
+
--border-color-strong: oklch(45% 0 0deg);
|
|
131
|
+
--border-color-focus: oklch(68.7% 0.14 237.5deg);
|
|
132
|
+
|
|
133
|
+
/* SHADOW */
|
|
134
|
+
--shadow-color: oklch(0% 0 0deg / 0.6);
|
|
135
|
+
|
|
136
|
+
/* OPACITY */
|
|
137
|
+
--opacity-disabled: 0.4;
|
|
138
|
+
--opacity-hover: 0.85;
|
|
139
|
+
--opacity-overlay: 0.6;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* SCROLLBARS */
|
|
143
|
+
::-webkit-scrollbar {
|
|
144
|
+
width: 4px;
|
|
145
|
+
height: 4px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
::-webkit-scrollbar-track {
|
|
149
|
+
background: transparent;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
::-webkit-scrollbar-thumb {
|
|
153
|
+
background: var(--color-bg-secondary);
|
|
154
|
+
border-radius: 3px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
::-webkit-scrollbar-thumb:hover {
|
|
158
|
+
background: oklch(from var(--color-bg-secondary) l c h / 0.8);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@supports (scrollbar-width: thin) {
|
|
162
|
+
* {
|
|
163
|
+
scrollbar-width: thin;
|
|
164
|
+
scrollbar-color: var(--color-bg-secondary) transparent;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.dark * {
|
|
168
|
+
scrollbar-color: oklch(from var(--color-bg-secondary) l c h / 0.7)
|
|
169
|
+
transparent;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.dark ::-webkit-scrollbar-thumb {
|
|
174
|
+
background: oklch(from var(--color-bg-secondary) l c h / 0.7);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* ----------------------------- */
|
|
178
|
+
/* 🎨 Primary color palettes */
|
|
179
|
+
/* ----------------------------- */
|
|
180
|
+
|
|
181
|
+
[data-primary="default"] {
|
|
182
|
+
--color-primary: oklch(62.3% 0.214 259.8deg);
|
|
183
|
+
--color-bg-primary: var(--color-primary);
|
|
184
|
+
--border-color-primary: var(--color-primary);
|
|
185
|
+
--border-color-focus: var(--color-primary);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
[data-primary="cyan"] {
|
|
189
|
+
--color-primary: oklch(86.5% 0.127 207.078);
|
|
190
|
+
--color-bg-primary: var(--color-primary);
|
|
191
|
+
--border-color-primary: var(--color-primary);
|
|
192
|
+
--border-color-focus: var(--color-primary);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
[data-primary="red"] {
|
|
196
|
+
--color-primary: oklch(58% 0.24 30deg);
|
|
197
|
+
--color-bg-primary: var(--color-primary);
|
|
198
|
+
--border-color-primary: var(--color-primary);
|
|
199
|
+
--border-color-focus: var(--color-primary);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
[data-primary="green"] {
|
|
203
|
+
--color-primary: oklch(65% 0.22 140deg);
|
|
204
|
+
--color-bg-primary: var(--color-primary);
|
|
205
|
+
--border-color-primary: var(--color-primary);
|
|
206
|
+
--border-color-focus: var(--color-primary);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
[data-primary="yellow"] {
|
|
210
|
+
--color-primary: oklch(75% 0.18 90deg);
|
|
211
|
+
--color-bg-primary: var(--color-primary);
|
|
212
|
+
--border-color-primary: var(--color-primary);
|
|
213
|
+
--border-color-focus: var(--color-primary);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
[data-primary="pink"] {
|
|
217
|
+
--color-primary: oklch(70% 0.25 350deg);
|
|
218
|
+
--color-bg-primary: var(--color-primary);
|
|
219
|
+
--border-color-primary: var(--color-primary);
|
|
220
|
+
--border-color-focus: var(--color-primary);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
[data-primary="orange"] {
|
|
224
|
+
--color-primary: oklch(72% 0.22 60deg);
|
|
225
|
+
--color-bg-primary: var(--color-primary);
|
|
226
|
+
--border-color-primary: var(--color-primary);
|
|
227
|
+
--border-color-focus: var(--color-primary);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
[data-primary="purple"] {
|
|
231
|
+
--color-primary: oklch(55% 0.22 290deg);
|
|
232
|
+
--color-bg-primary: var(--color-primary);
|
|
233
|
+
--border-color-primary: var(--color-primary);
|
|
234
|
+
--border-color-focus: var(--color-primary);
|
|
235
|
+
}
|
package/dist/lib/CodeView.svelte
CHANGED
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
</div>
|
|
171
171
|
{/if}
|
|
172
172
|
|
|
173
|
-
<div class="flex font-mono
|
|
173
|
+
<div class={cx("flex font-mono", TEXT[sz], LINE_HEIGHT[sz])}>
|
|
174
174
|
{#if showLineNumbers}
|
|
175
175
|
<div
|
|
176
176
|
bind:this={gutterEl}
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
<div class="relative flex-1 min-h-[180px] max-h-[480px]">
|
|
190
190
|
<div
|
|
191
191
|
bind:this={highlightEl}
|
|
192
|
-
class="cv-highlight cv-layer
|
|
192
|
+
class={cx("cv-highlight cv-layer", TEXT[sz], LINE_HEIGHT[sz])}
|
|
193
193
|
class:cv-active-line={activeLine && editable}
|
|
194
194
|
style={activeLine && editable
|
|
195
195
|
? `--cv-line-height: ${lineHeightPx}px; --cv-active-line-top: ${padTopPx + activeLineIndex * lineHeightPx - highlightScroll}px;`
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
onfocus={editable ? updateActiveLine : undefined}
|
|
212
212
|
spellcheck="false"
|
|
213
213
|
readonly={!editable}
|
|
214
|
-
class="cv-input cv-layer
|
|
214
|
+
class={cx("cv-input cv-layer", TEXT[sz], LINE_HEIGHT[sz])}
|
|
215
215
|
></textarea>
|
|
216
216
|
</div>
|
|
217
217
|
</div>
|
package/dist/lib/Form.svelte
CHANGED
|
@@ -151,8 +151,11 @@
|
|
|
151
151
|
return compact ? (compactMap[size] ?? "md") : size;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
const globalFormInstanceCounter = globalThis as unknown as {
|
|
155
|
+
__svelteCompFormInstanceCounter?: number;
|
|
156
|
+
};
|
|
157
|
+
globalFormInstanceCounter.__svelteCompFormInstanceCounter ??= 0;
|
|
158
|
+
const instanceId = $state(globalFormInstanceCounter.__svelteCompFormInstanceCounter++);
|
|
156
159
|
|
|
157
160
|
const baseFormId = $derived.by(() => {
|
|
158
161
|
if (formId && formId.trim()) return formId.trim();
|
|
@@ -71,9 +71,15 @@
|
|
|
71
71
|
|
|
72
72
|
$effect(() => {
|
|
73
73
|
if (!mounted) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
try {
|
|
75
|
+
if (typeof window !== "undefined") {
|
|
76
|
+
const saved = localStorage.getItem("primary");
|
|
77
|
+
if (isPrimaryKey(saved)) {
|
|
78
|
+
selected = saved;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
} catch {
|
|
82
|
+
// ignore unavailable storage/environment
|
|
77
83
|
}
|
|
78
84
|
mounted = true;
|
|
79
85
|
}
|
|
@@ -81,8 +87,16 @@
|
|
|
81
87
|
|
|
82
88
|
$effect(() => {
|
|
83
89
|
if (mounted) {
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
try {
|
|
91
|
+
if (typeof document !== "undefined") {
|
|
92
|
+
document.documentElement.setAttribute("data-primary", selected);
|
|
93
|
+
}
|
|
94
|
+
if (typeof window !== "undefined") {
|
|
95
|
+
localStorage.setItem("primary", selected);
|
|
96
|
+
}
|
|
97
|
+
} catch {
|
|
98
|
+
// ignore unavailable storage/environment
|
|
99
|
+
}
|
|
86
100
|
}
|
|
87
101
|
});
|
|
88
102
|
</script>
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
{...rest}
|
|
95
95
|
>
|
|
96
96
|
{#if label}
|
|
97
|
-
<span class="text-[var(--color-text-muted)] select-none
|
|
97
|
+
<span class={cx("text-[var(--color-text-muted)] select-none", TEXT[sz])}>
|
|
98
98
|
{label}
|
|
99
99
|
</span>
|
|
100
100
|
{/if}
|
|
@@ -143,9 +143,10 @@
|
|
|
143
143
|
|
|
144
144
|
{#if !indeterminate}
|
|
145
145
|
<div
|
|
146
|
-
class=
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
class={cx(
|
|
147
|
+
"absolute inset-0 flex items-center justify-center text-[var(--color-text-muted)] font-medium select-none",
|
|
148
|
+
TEXT[sz]
|
|
149
|
+
)}
|
|
149
150
|
>
|
|
150
151
|
{pctText}%
|
|
151
152
|
</div>
|
package/dist/lib/Select.svelte
CHANGED
package/dist/lib/Slider.svelte
CHANGED
|
@@ -209,6 +209,8 @@
|
|
|
209
209
|
bind:this={wrap}
|
|
210
210
|
class={rootClass}
|
|
211
211
|
onclick={onTrackClick}
|
|
212
|
+
onfocusin={(e) => (rest as unknown as { onfocus?: (e: FocusEvent) => void }).onfocus?.(e as FocusEvent)}
|
|
213
|
+
onfocusout={(e) => (rest as unknown as { onblur?: (e: FocusEvent) => void }).onblur?.(e as FocusEvent)}
|
|
212
214
|
data-disabled={disabled ? "true" : undefined}
|
|
213
215
|
{...rest}
|
|
214
216
|
>
|
|
@@ -194,8 +194,8 @@
|
|
|
194
194
|
{labelFinal}
|
|
195
195
|
</div>
|
|
196
196
|
|
|
197
|
-
<div class="flex items-start gap-4">
|
|
198
|
-
<div class="flex flex-wrap gap-3 min-w-[0]">
|
|
197
|
+
<div class="flex flex-wrap items-start gap-4">
|
|
198
|
+
<div class="flex flex-wrap gap-3 min-w-[0] flex-1">
|
|
199
199
|
{#if timeSystem === "iso"}
|
|
200
200
|
<Select
|
|
201
201
|
label={L.hour}
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
/>
|
|
236
236
|
</div>
|
|
237
237
|
|
|
238
|
-
<div class="flex items-center gap-3 pt-
|
|
238
|
+
<div class="flex items-center gap-3 basis-full pt-2">
|
|
239
239
|
<Button onClick={toggleSystem} {disabled} sz="xs">
|
|
240
240
|
{timeSystem === "iso" ? L.switchTo12h : L.switchTo24h}
|
|
241
241
|
</Button>
|
package/dist/lib/lang.d.ts
CHANGED
|
@@ -51,9 +51,9 @@ export declare const TEXTS: {
|
|
|
51
51
|
readonly ru: {
|
|
52
52
|
readonly components: {
|
|
53
53
|
readonly colorPicker: {
|
|
54
|
-
readonly text: "
|
|
54
|
+
readonly text: "Выбрать цвет";
|
|
55
55
|
readonly color: "Цвет";
|
|
56
|
-
readonly clear: "
|
|
56
|
+
readonly clear: "Очистить";
|
|
57
57
|
readonly placeholder: "Цвет не выбран";
|
|
58
58
|
readonly selectedColor: "Выбранный цвет";
|
|
59
59
|
};
|
|
@@ -61,7 +61,7 @@ export declare const TEXTS: {
|
|
|
61
61
|
readonly text: "Выбрать дату";
|
|
62
62
|
readonly placeholder: "Дата не выбрана";
|
|
63
63
|
readonly date: "Дата";
|
|
64
|
-
readonly clear: "
|
|
64
|
+
readonly clear: "Очистить";
|
|
65
65
|
readonly selectedDate: "Выбранная дата";
|
|
66
66
|
};
|
|
67
67
|
readonly dialog: {
|
|
@@ -70,7 +70,7 @@ export declare const TEXTS: {
|
|
|
70
70
|
};
|
|
71
71
|
readonly filePicker: {
|
|
72
72
|
readonly text: "Выбрать файлы";
|
|
73
|
-
readonly clear: "
|
|
73
|
+
readonly clear: "Очистить";
|
|
74
74
|
readonly dragDrop: "Перетащите файлы сюда или нажмите, чтобы выбрать";
|
|
75
75
|
readonly accepted: "Допустимые форматы";
|
|
76
76
|
readonly selectedFiles: "Выбранные файлы";
|
|
@@ -79,7 +79,7 @@ export declare const TEXTS: {
|
|
|
79
79
|
readonly totalSize: "Общий размер";
|
|
80
80
|
};
|
|
81
81
|
readonly menu: {
|
|
82
|
-
readonly subtitle: "Меню с
|
|
82
|
+
readonly subtitle: "Меню с вариантами размеров";
|
|
83
83
|
};
|
|
84
84
|
readonly primaryColorSelect: {
|
|
85
85
|
readonly text: "Основной цвет";
|
|
@@ -88,8 +88,8 @@ export declare const TEXTS: {
|
|
|
88
88
|
readonly text: "Выбрать время";
|
|
89
89
|
readonly placeholder: "Время не выбрано";
|
|
90
90
|
readonly clear: "Очистить";
|
|
91
|
-
readonly hour: "
|
|
92
|
-
readonly minute: "
|
|
91
|
+
readonly hour: "Час";
|
|
92
|
+
readonly minute: "Минута";
|
|
93
93
|
readonly period: "Период";
|
|
94
94
|
readonly selectedTime: "Выбранное время";
|
|
95
95
|
readonly switchTo12h: "12ч";
|
package/dist/lib/lang.js
CHANGED
|
@@ -47,9 +47,9 @@ var enTexts = {
|
|
|
47
47
|
var ruTexts = {
|
|
48
48
|
components: {
|
|
49
49
|
colorPicker: {
|
|
50
|
-
text: "
|
|
50
|
+
text: "Выбрать цвет",
|
|
51
51
|
color: "Цвет",
|
|
52
|
-
clear: "
|
|
52
|
+
clear: "Очистить",
|
|
53
53
|
placeholder: "Цвет не выбран",
|
|
54
54
|
selectedColor: "Выбранный цвет",
|
|
55
55
|
},
|
|
@@ -57,7 +57,7 @@ var ruTexts = {
|
|
|
57
57
|
text: "Выбрать дату",
|
|
58
58
|
placeholder: "Дата не выбрана",
|
|
59
59
|
date: "Дата",
|
|
60
|
-
clear: "
|
|
60
|
+
clear: "Очистить",
|
|
61
61
|
selectedDate: "Выбранная дата",
|
|
62
62
|
},
|
|
63
63
|
dialog: {
|
|
@@ -66,7 +66,7 @@ var ruTexts = {
|
|
|
66
66
|
},
|
|
67
67
|
filePicker: {
|
|
68
68
|
text: "Выбрать файлы",
|
|
69
|
-
clear: "
|
|
69
|
+
clear: "Очистить",
|
|
70
70
|
dragDrop: "Перетащите файлы сюда или нажмите, чтобы выбрать",
|
|
71
71
|
accepted: "Допустимые форматы",
|
|
72
72
|
selectedFiles: "Выбранные файлы",
|
|
@@ -74,14 +74,14 @@ var ruTexts = {
|
|
|
74
74
|
fileCount: "{n} файл(ов) выбрано",
|
|
75
75
|
totalSize: "Общий размер",
|
|
76
76
|
},
|
|
77
|
-
menu: { subtitle: "Меню с
|
|
77
|
+
menu: { subtitle: "Меню с вариантами размеров" },
|
|
78
78
|
primaryColorSelect: { text: "Основной цвет" },
|
|
79
79
|
timePicker: {
|
|
80
80
|
text: "Выбрать время",
|
|
81
81
|
placeholder: "Время не выбрано",
|
|
82
82
|
clear: "Очистить",
|
|
83
|
-
hour: "
|
|
84
|
-
minute: "
|
|
83
|
+
hour: "Час",
|
|
84
|
+
minute: "Минута",
|
|
85
85
|
period: "Период",
|
|
86
86
|
selectedTime: "Выбранное время",
|
|
87
87
|
switchTo12h: "12ч",
|
package/dist/main.d.ts
CHANGED
package/dist/main.js
CHANGED
package/package.json
CHANGED