svelte-comp 1.1.3 → 1.1.4
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/TimePicker.svelte +5 -5
- 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
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<!-- src/lib/TimePicker.svelte -->
|
|
2
2
|
<script lang="ts">
|
|
3
3
|
/**
|
|
4
4
|
* @component TimePicker
|
|
@@ -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>
|
|
@@ -266,4 +266,4 @@
|
|
|
266
266
|
{/if}
|
|
267
267
|
</p>
|
|
268
268
|
</div>
|
|
269
|
-
</div>
|
|
269
|
+
</div>
|
package/dist/main.d.ts
CHANGED
package/dist/main.js
CHANGED
package/package.json
CHANGED