svelte-comp 1.1.2 → 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 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
- <main class="min-h-screen bg-[var(--color-bg-page)] text-[var(--color-text-default)]">
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 overflow-hidden 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"
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 kit
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 backdrop-blur dark:bg-slate-900/60"
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
- </main>
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
- <!-- src/lib/TimePicker.svelte -->
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-6">
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
@@ -1,4 +1,3 @@
1
1
  import "./app.css";
2
- import "./styles.css";
3
2
  declare const app: {};
4
3
  export default app;
package/dist/main.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { mount } from "svelte";
2
2
  import "./app.css";
3
- import "./styles.css";
4
3
  import App from "./App.svelte";
5
4
  var app = mount(App, {
6
5
  target: document.getElementById("app"),
package/package.json CHANGED
@@ -47,5 +47,5 @@
47
47
  "svelte": "./dist/lib/index.js",
48
48
  "type": "module",
49
49
  "types": "./dist/lib/index.d.ts",
50
- "version": "1.1.2"
50
+ "version": "1.1.4"
51
51
  }