svelte-comp 1.3.3 → 1.3.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/README.md +12 -11
- package/dist/App.svelte +540 -540
- package/dist/app.css +2 -3
- package/dist/app.d.ts +10 -0
- package/dist/lib/Accordion.svelte +14 -14
- package/dist/lib/Button.svelte +23 -8
- package/dist/lib/Card.svelte +6 -6
- package/dist/lib/Carousel.svelte +16 -16
- package/dist/lib/Carousel.svelte.d.ts +1 -1
- package/dist/lib/CheckBox.svelte +2 -2
- package/dist/lib/CodeView.svelte +6 -5
- package/dist/lib/ContextMenu.svelte +19 -13
- package/dist/lib/Dialog.svelte +3 -3
- package/dist/lib/Field.svelte +1 -1
- package/dist/lib/FilePicker.svelte +66 -11
- package/dist/lib/FilePicker.svelte.d.ts +6 -1
- package/dist/lib/Hamburger.svelte +12 -12
- package/dist/lib/Menu.svelte +18 -18
- package/dist/lib/NoticeBase.svelte +5 -5
- package/dist/lib/Select.svelte +2 -2
- package/dist/lib/Slider.svelte +1 -1
- package/dist/lib/Splitter.svelte +15 -6
- package/dist/lib/Switch.svelte +5 -4
- package/dist/lib/Tabs.svelte +6 -6
- package/dist/lib/ThemeToggle.svelte +1 -0
- package/dist/lib/TimePickerNew.svelte +634 -0
- package/dist/lib/TimePickerNew.svelte.d.ts +49 -0
- package/dist/lib/Tooltip.svelte +7 -7
- package/dist/lib/Topbar.svelte +6 -6
- package/dist/lib/__tests__/Accordion.test.d.ts +1 -0
- package/dist/lib/__tests__/Accordion.test.js +171 -0
- package/dist/lib/__tests__/Badge.test.d.ts +1 -0
- package/dist/lib/__tests__/Badge.test.js +41 -0
- package/dist/lib/__tests__/Button.test.d.ts +1 -0
- package/dist/lib/__tests__/Button.test.js +269 -0
- package/dist/lib/__tests__/Calendar.test.d.ts +1 -0
- package/dist/lib/__tests__/Calendar.test.js +171 -0
- package/dist/lib/__tests__/Card.test.d.ts +1 -0
- package/dist/lib/__tests__/Card.test.js +148 -0
- package/dist/lib/__tests__/Carousel.test.d.ts +1 -0
- package/dist/lib/__tests__/Carousel.test.js +439 -0
- package/dist/lib/__tests__/CheckBox.test.d.ts +1 -0
- package/dist/lib/__tests__/CheckBox.test.js +152 -0
- package/dist/lib/__tests__/CodeView.test.d.ts +1 -0
- package/dist/lib/__tests__/CodeView.test.js +157 -0
- package/dist/lib/__tests__/ColorPicker.test.d.ts +1 -0
- package/dist/lib/__tests__/ColorPicker.test.js +93 -0
- package/dist/lib/__tests__/ContextMenu.test.d.ts +1 -0
- package/dist/lib/__tests__/ContextMenu.test.js +67 -0
- package/dist/lib/__tests__/DatePicker.test.d.ts +1 -0
- package/dist/lib/__tests__/DatePicker.test.js +108 -0
- package/dist/lib/__tests__/Dialog.test.d.ts +1 -0
- package/dist/lib/__tests__/Dialog.test.js +183 -0
- package/dist/lib/__tests__/Field.test.d.ts +1 -0
- package/dist/lib/__tests__/Field.test.js +190 -0
- package/dist/lib/__tests__/FilePicker.test.d.ts +1 -0
- package/dist/lib/__tests__/FilePicker.test.js +179 -0
- package/dist/lib/__tests__/Form.integration.test.d.ts +1 -0
- package/dist/lib/__tests__/Form.integration.test.js +158 -0
- package/dist/lib/__tests__/Form.test.d.ts +1 -0
- package/dist/lib/__tests__/Form.test.js +463 -0
- package/dist/lib/__tests__/Hamburger.test.d.ts +1 -0
- package/dist/lib/__tests__/Hamburger.test.js +161 -0
- package/dist/lib/__tests__/InstallPWA.test.d.ts +1 -0
- package/dist/lib/__tests__/InstallPWA.test.js +15 -0
- package/dist/lib/__tests__/Menu.test.d.ts +1 -0
- package/dist/lib/__tests__/Menu.test.js +285 -0
- package/dist/lib/__tests__/NoticeBase.test.d.ts +1 -0
- package/dist/lib/__tests__/NoticeBase.test.js +60 -0
- package/dist/lib/__tests__/PaginatedCard.test.d.ts +1 -0
- package/dist/lib/__tests__/PaginatedCard.test.js +89 -0
- package/dist/lib/__tests__/Pagination.test.d.ts +1 -0
- package/dist/lib/__tests__/Pagination.test.js +168 -0
- package/dist/lib/__tests__/PrimaryColorSelect.test.d.ts +1 -0
- package/dist/lib/__tests__/PrimaryColorSelect.test.js +92 -0
- package/dist/lib/__tests__/ProgressBar.test.d.ts +1 -0
- package/dist/lib/__tests__/ProgressBar.test.js +69 -0
- package/dist/lib/__tests__/ProgressCircle.test.d.ts +1 -0
- package/dist/lib/__tests__/ProgressCircle.test.js +71 -0
- package/dist/lib/__tests__/Radio.test.d.ts +1 -0
- package/dist/lib/__tests__/Radio.test.js +127 -0
- package/dist/lib/__tests__/SearchInput.test.d.ts +1 -0
- package/dist/lib/__tests__/SearchInput.test.js +80 -0
- package/dist/lib/__tests__/Select.test.d.ts +1 -0
- package/dist/lib/__tests__/Select.test.js +408 -0
- package/dist/lib/__tests__/Slider.test.d.ts +1 -0
- package/dist/lib/__tests__/Slider.test.js +213 -0
- package/dist/lib/__tests__/Splitter.test.d.ts +1 -0
- package/dist/lib/__tests__/Splitter.test.js +87 -0
- package/dist/lib/__tests__/Switch.test.d.ts +1 -0
- package/dist/lib/__tests__/Switch.test.js +97 -0
- package/dist/lib/__tests__/Table.test.d.ts +1 -0
- package/dist/lib/__tests__/Table.test.js +349 -0
- package/dist/lib/__tests__/Tabs.test.d.ts +1 -0
- package/dist/lib/__tests__/Tabs.test.js +262 -0
- package/dist/lib/__tests__/ThemeToggle.test.d.ts +1 -0
- package/dist/lib/__tests__/ThemeToggle.test.js +84 -0
- package/dist/lib/__tests__/TimePicker.test.d.ts +1 -0
- package/dist/lib/__tests__/TimePicker.test.js +146 -0
- package/dist/lib/__tests__/TimePickerNew.test.d.ts +1 -0
- package/dist/lib/__tests__/TimePickerNew.test.js +322 -0
- package/dist/lib/__tests__/Toast.test.d.ts +1 -0
- package/dist/lib/__tests__/Toast.test.js +135 -0
- package/dist/lib/__tests__/Tooltip.test.d.ts +1 -0
- package/dist/lib/__tests__/Tooltip.test.js +171 -0
- package/dist/lib/__tests__/Topbar.test.d.ts +1 -0
- package/dist/lib/__tests__/Topbar.test.js +25 -0
- package/dist/lib/__tests__/setupLangContext.d.ts +1 -0
- package/dist/lib/__tests__/setupLangContext.js +65 -0
- package/dist/lib/__tests__/storage.test.d.ts +1 -0
- package/dist/lib/__tests__/storage.test.js +124 -0
- package/dist/lib/__tests__/utils.test.d.ts +1 -0
- package/dist/lib/__tests__/utils.test.js +11 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +1 -0
- package/dist/lib/lang.d.ts +4 -0
- package/dist/lib/lang.js +4 -0
- package/dist/styles.css +2 -0
- package/dist/utils/index.js +15 -4
- package/package.json +12 -12
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
});
|
|
118
118
|
|
|
119
119
|
const triggerBase =
|
|
120
|
-
"fixed top-4 left-4 inline-flex items-center justify-center h-8 w-8 rounded-md border border-[var(--border-color-default)] bg-[var(--color-bg-secondary)] hover:bg-[var(--color-bg-hover)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-color-focus)] transition-colors z-[var(--z-modal)]";
|
|
120
|
+
"fixed top-4 left-4 inline-flex items-center justify-center h-8 w-8 rounded-[var(--radius-md)] [@media(pointer:coarse)]:min-h-11 [@media(pointer:coarse)]:min-w-11 border border-[var(--border-color-default)] bg-[var(--color-bg-secondary)] hover:bg-[var(--color-bg-hover)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-color-focus)] transition-colors z-[var(--z-modal)]";
|
|
121
121
|
|
|
122
122
|
const triggerClass = $derived(cx(triggerBase, externalClass));
|
|
123
123
|
</script>
|
|
@@ -133,19 +133,19 @@
|
|
|
133
133
|
<span class="relative block w-5 h-3.5">
|
|
134
134
|
<span
|
|
135
135
|
class={cx(
|
|
136
|
-
|
|
136
|
+
"absolute left-0 top-1/2 h-[2px] w-full bg-current transition-transform duration-[var(--transition-fast)]",
|
|
137
137
|
open ? "translate-y-[-50%] rotate-45" : "translate-y-[calc(-50%_-_6px)]"
|
|
138
138
|
)}
|
|
139
139
|
></span>
|
|
140
140
|
<span
|
|
141
141
|
class={cx(
|
|
142
|
-
|
|
142
|
+
"absolute left-0 top-1/2 h-[2px] w-full bg-current transition-opacity duration-[var(--transition-fast)] translate-y-[-50%]",
|
|
143
143
|
open ? "opacity-0" : "opacity-100"
|
|
144
144
|
)}
|
|
145
145
|
></span>
|
|
146
146
|
<span
|
|
147
147
|
class={cx(
|
|
148
|
-
|
|
148
|
+
"absolute left-0 top-1/2 h-[2px] w-full bg-current transition-transform duration-[var(--transition-fast)]",
|
|
149
149
|
open
|
|
150
150
|
? "translate-y-[-50%] -rotate-45"
|
|
151
151
|
: "translate-y-[calc(-50%_+_6px)]"
|
|
@@ -165,26 +165,26 @@
|
|
|
165
165
|
style={`width:${typeof width === "number" ? `${width}px` : width}`}
|
|
166
166
|
>
|
|
167
167
|
{#if header}
|
|
168
|
-
|
|
168
|
+
<div class="p-[var(--spacing-md)] border-b border-[var(--border-color-default)]">
|
|
169
169
|
{@render header?.()}
|
|
170
170
|
</div>
|
|
171
171
|
{/if}
|
|
172
172
|
|
|
173
|
-
<div class="flex-1 overflow-y-auto
|
|
173
|
+
<div class="flex-1 overflow-y-auto" tabindex="-1">
|
|
174
174
|
{#if menuItems.length === 0}
|
|
175
|
-
|
|
175
|
+
<div class="[font-size:var(--text-xs)] opacity-70 px-[calc(var(--spacing-sm)+var(--spacing-xs))] py-[var(--spacing-sm)] text-center">No items</div>
|
|
176
176
|
{:else}
|
|
177
|
-
|
|
177
|
+
<ul class="grid gap-[var(--spacing-sm)] p-[var(--spacing-md)]">
|
|
178
178
|
{#each menuItems as it (it.id)}
|
|
179
179
|
{#if it.type === "section"}
|
|
180
|
-
|
|
180
|
+
<li class="px-[calc(var(--spacing-sm)+var(--spacing-xs))] pt-[var(--spacing-sm)] mt-[calc(var(--spacing-sm)+var(--spacing-xs))] text-[var(--color-text-muted)] [font-size:var(--text-xs)] lowercase tracking-wide opacity-70">
|
|
181
181
|
{it.label}
|
|
182
182
|
</li>
|
|
183
183
|
{:else}
|
|
184
184
|
<li>
|
|
185
185
|
<button
|
|
186
186
|
type="button"
|
|
187
|
-
|
|
187
|
+
class="w-full text-left px-[calc(var(--spacing-sm)+var(--spacing-xs))] py-[var(--spacing-sm)] rounded-[var(--radius-md)] hover:bg-[var(--color-bg-hover)] focus:outline-[var(--border-color-focus)] focus:outline-2 transition-colors"
|
|
188
188
|
aria-current={activeItem === it.id ? "page" : undefined}
|
|
189
189
|
onclick={() => {
|
|
190
190
|
onSelect?.(it.id);
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
</div>
|
|
202
202
|
|
|
203
203
|
{#if footer}
|
|
204
|
-
|
|
204
|
+
<div class="p-[var(--spacing-md)] border-t border-[var(--border-color-default)]">
|
|
205
205
|
{@render footer?.()}
|
|
206
206
|
</div>
|
|
207
207
|
{/if}
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
|
|
210
210
|
<button
|
|
211
211
|
type="button"
|
|
212
|
-
|
|
212
|
+
class="flex-1 bg-[oklch(0_0_0/0.4)]"
|
|
213
213
|
aria-hidden="true"
|
|
214
214
|
onclick={closeMenu}
|
|
215
215
|
></button>
|
package/dist/lib/Menu.svelte
CHANGED
|
@@ -61,20 +61,20 @@
|
|
|
61
61
|
let subMenuLeft = $state(0);
|
|
62
62
|
|
|
63
63
|
const sizes: Record<SizeKey, string> = {
|
|
64
|
-
xs: "h-
|
|
65
|
-
sm: "h-
|
|
66
|
-
md: "h-
|
|
67
|
-
lg: "h-
|
|
68
|
-
xl: "h-
|
|
64
|
+
xs: "h-[calc(var(--spacing-md)+var(--spacing-sm)+var(--spacing-xs))] px-[calc(var(--spacing-sm)+var(--spacing-xs))]",
|
|
65
|
+
sm: "h-[var(--spacing-xl)] px-[calc(var(--spacing-sm)+var(--spacing-xs))]",
|
|
66
|
+
md: "h-[calc(var(--spacing-xl)+var(--spacing-xs))] px-[var(--spacing-md)]",
|
|
67
|
+
lg: "h-[calc(var(--spacing-xl)+var(--spacing-sm))] px-[var(--spacing-md)]",
|
|
68
|
+
xl: "h-[calc(var(--spacing-xl)+var(--spacing-sm)+var(--spacing-xs))] px-[calc(var(--spacing-md)+var(--spacing-xs))]",
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
const navBase =
|
|
72
|
-
"flex items-stretch pl-
|
|
72
|
+
"flex items-stretch pl-[var(--spacing-sm)] gap-[var(--spacing-xs)] border-b relative z-10 bg-[var(--color-bg-surface)] text-[var(--color-text-default)] border-[var(--border-color-default)]";
|
|
73
73
|
|
|
74
74
|
const subMenuGutter = 8;
|
|
75
75
|
|
|
76
76
|
const topButtonBase =
|
|
77
|
-
"px-
|
|
77
|
+
"px-[var(--spacing-md)] rounded-[var(--radius-sm)] leading-none transition-colors outline-none [@media(pointer:coarse)]:min-h-11 focus-visible:shadow-[inset_0_0_0_2px_var(--border-color-focus)]";
|
|
78
78
|
|
|
79
79
|
const topButtonActive =
|
|
80
80
|
"bg-[var(--color-bg-muted)] text-[var(--color-text-default)]";
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
<div
|
|
481
481
|
bind:this={menuRefs[menuItem.name]}
|
|
482
482
|
class={cx(
|
|
483
|
-
"fixed z-50 min-w-44 p-
|
|
483
|
+
"fixed z-50 min-w-44 p-[var(--spacing-sm)] rounded-[var(--radius-sm)] shadow-[0_2px_4px_var(--shadow-color)] ",
|
|
484
484
|
"border border-[var(--border-color-default)] bg-[var(--color-bg-surface)]"
|
|
485
485
|
)}
|
|
486
486
|
style={menuStyle}
|
|
@@ -491,7 +491,7 @@
|
|
|
491
491
|
{#each menuItem.actions as action, i (actionKey(action, i))}
|
|
492
492
|
{#if isSeparator(action)}
|
|
493
493
|
<div
|
|
494
|
-
class="my-
|
|
494
|
+
class="my-[var(--spacing-xs)] mx-[var(--spacing-xs)] border-t border-[var(--border-color-default)]"
|
|
495
495
|
role="separator"
|
|
496
496
|
></div>
|
|
497
497
|
{:else}
|
|
@@ -501,8 +501,8 @@
|
|
|
501
501
|
type="button"
|
|
502
502
|
role="menuitem"
|
|
503
503
|
class={cx(
|
|
504
|
-
"relative text-left rounded-
|
|
505
|
-
"gap-
|
|
504
|
+
"relative text-left rounded-[var(--radius-sm)] transition-colors outline-none px-[calc(var(--spacing-sm)+var(--spacing-xs)/2)] py-[calc(var(--spacing-xs)/2)] my-[var(--spacing-xs)] mr-[var(--spacing-xs)] min-w-full flex items-center",
|
|
505
|
+
"gap-[calc(var(--spacing-sm)+var(--spacing-xs))] hover:bg-[var(--color-bg-muted)] focus-visible:bg-[var(--color-bg-muted)]",
|
|
506
506
|
"focus-visible:shadow-[inset_0_0_0_2px_var(--border-color-focus)]",
|
|
507
507
|
textCls
|
|
508
508
|
)}
|
|
@@ -528,11 +528,11 @@
|
|
|
528
528
|
focusMenuAction(menuItem, i);
|
|
529
529
|
}}
|
|
530
530
|
>
|
|
531
|
-
<span class="flex items-center gap-
|
|
531
|
+
<span class="flex items-center gap-[var(--spacing-sm)] flex-1 min-w-0">
|
|
532
532
|
<span class="truncate">{actionText(action)}</span>
|
|
533
533
|
</span>
|
|
534
534
|
|
|
535
|
-
<span class="flex items-center shrink-0 ml-auto gap-
|
|
535
|
+
<span class="flex items-center shrink-0 ml-auto gap-[var(--spacing-xs)]">
|
|
536
536
|
{#if actionShortcut(action)}
|
|
537
537
|
<span
|
|
538
538
|
class={cx(
|
|
@@ -562,7 +562,7 @@
|
|
|
562
562
|
<div
|
|
563
563
|
bind:this={subMenuRefs[actionId(action)]}
|
|
564
564
|
class={cx(
|
|
565
|
-
"fixed z-50 min-w-44 p-
|
|
565
|
+
"fixed z-50 min-w-44 p-[var(--spacing-sm)] rounded-[var(--radius-sm)] shadow-[0_2px_4px_var(--shadow-color)]",
|
|
566
566
|
"border border-[var(--border-color-default)] bg-[var(--color-bg-surface)]"
|
|
567
567
|
)}
|
|
568
568
|
style={subMenuStyle}
|
|
@@ -574,7 +574,7 @@
|
|
|
574
574
|
{#each action.submenu as sub, j (actionKey(sub, j))}
|
|
575
575
|
{#if isSeparator(sub)}
|
|
576
576
|
<div
|
|
577
|
-
class="my-
|
|
577
|
+
class="my-[var(--spacing-xs)] mx-[var(--spacing-xs)] border-t border-[var(--border-color-default)]"
|
|
578
578
|
role="separator"
|
|
579
579
|
></div>
|
|
580
580
|
{:else}
|
|
@@ -583,8 +583,8 @@
|
|
|
583
583
|
type="button"
|
|
584
584
|
role="menuitem"
|
|
585
585
|
class={cx(
|
|
586
|
-
"relative text-left rounded-
|
|
587
|
-
"my-
|
|
586
|
+
"relative text-left rounded-[var(--radius-sm)] transition-colors outline-none px-[calc(var(--spacing-sm)+var(--spacing-xs)/2)] py-[calc(var(--spacing-xs)/2)]",
|
|
587
|
+
"my-[var(--spacing-xs)] mr-[var(--spacing-xs)] w-full flex items-center justify-between gap-[calc(var(--spacing-sm)+var(--spacing-xs))]",
|
|
588
588
|
"hover:bg-[var(--color-bg-muted)] focus-visible:bg-[var(--color-bg-muted)]",
|
|
589
589
|
"focus-visible:shadow-[inset_0_0_0_2px_var(--border-color-focus)]",
|
|
590
590
|
"decoration-[var(--color-text-default)]",
|
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
onmouseenter={() => (activeSubIndex = j)}
|
|
596
596
|
onfocus={() => (activeSubIndex = j)}
|
|
597
597
|
>
|
|
598
|
-
<span class="flex items-center gap-
|
|
598
|
+
<span class="flex items-center gap-[var(--spacing-sm)] flex-1 min-w-0">
|
|
599
599
|
<span class="truncate">{actionText(sub)}</span>
|
|
600
600
|
</span>
|
|
601
601
|
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
|
|
70
70
|
const sizeClasses = $derived(
|
|
71
71
|
size === "md"
|
|
72
|
-
? "gap-
|
|
73
|
-
: "gap-
|
|
72
|
+
? "gap-[calc(var(--spacing-sm)+var(--spacing-xs))] px-[var(--spacing-md)] py-[calc(var(--spacing-sm)+var(--spacing-xs))] rounded-[var(--radius-lg)]"
|
|
73
|
+
: "gap-[var(--spacing-sm)] px-[calc(var(--spacing-sm)+var(--spacing-xs))] py-[calc(var(--spacing-sm)+var(--spacing-xs)/2)] rounded-[var(--radius-md)]"
|
|
74
74
|
);
|
|
75
75
|
|
|
76
76
|
const iconClass = $derived(size === "md" ? "w-5 h-5" : "w-4 h-4");
|
|
@@ -78,20 +78,20 @@
|
|
|
78
78
|
const titleClass = $derived(
|
|
79
79
|
size === "md"
|
|
80
80
|
? "font-[var(--font-weight-medium)] truncate [font-size:var(--text-md)] max-sm:[font-size:var(--text-sm)]"
|
|
81
|
-
: "font-[var(--font-weight-medium)] truncate text-sm"
|
|
81
|
+
: "font-[var(--font-weight-medium)] truncate [font-size:var(--text-sm)]"
|
|
82
82
|
);
|
|
83
83
|
|
|
84
84
|
const messageClass = $derived(
|
|
85
85
|
size === "md"
|
|
86
86
|
? "line-clamp-3 [font-size:var(--text-sm)] max-sm:[font-size:var(--text-xs)]"
|
|
87
|
-
: "truncate text-xs"
|
|
87
|
+
: "truncate [font-size:var(--text-xs)]"
|
|
88
88
|
);
|
|
89
89
|
|
|
90
90
|
const rootClass = $derived(
|
|
91
91
|
cx(
|
|
92
92
|
"flex items-center border border-[var(--border-color-default)]",
|
|
93
93
|
sizeClasses,
|
|
94
|
-
!inline && "shadow-
|
|
94
|
+
!inline && "shadow-[0_8px_16px_var(--shadow-color)] backdrop-blur-sm",
|
|
95
95
|
variantClasses(variant),
|
|
96
96
|
externalClass
|
|
97
97
|
)
|
package/dist/lib/Select.svelte
CHANGED
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
let menuPosition = $state<"top" | "bottom">("bottom");
|
|
103
103
|
|
|
104
104
|
const base =
|
|
105
|
-
"relative w-full outline-none appearance-none cursor-pointer transition-colors duration-[var(--transition-fast)] ease-[var(--timing-default)] box-border rounded-[var(--radius-md)] border focus:border-[var(--border-color-focus)] focus:ring-2 focus:ring-[var(--border-color-focus)] [color:var(--color-text-default)] disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed";
|
|
105
|
+
"relative w-full outline-none appearance-none cursor-pointer transition-colors duration-[var(--transition-fast)] ease-[var(--timing-default)] box-border rounded-[var(--radius-md)] border focus:border-[var(--border-color-focus)] focus:ring-2 focus:ring-[var(--border-color-focus)] [color:var(--color-text-default)] disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed [@media(pointer:coarse)]:min-h-11";
|
|
106
106
|
|
|
107
107
|
const sizes: Record<SizeKey, string> = {
|
|
108
108
|
xs: "px-2 pr-6 h-6",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
|
|
153
153
|
const itemBaseClass = $derived(
|
|
154
154
|
cx(
|
|
155
|
-
"w-full text-left px-4 py-2 transition-colors duration-[var(--transition-fast)] cursor-pointer",
|
|
155
|
+
"w-full text-left px-4 py-2 transition-colors duration-[var(--transition-fast)] cursor-pointer [@media(pointer:coarse)]:min-h-11",
|
|
156
156
|
TEXT[sz]
|
|
157
157
|
)
|
|
158
158
|
);
|
package/dist/lib/Slider.svelte
CHANGED
package/dist/lib/Splitter.svelte
CHANGED
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
function onDrag(e: PointerEvent): void {
|
|
86
|
-
if (!isDragging) return;
|
|
86
|
+
if (!isDragging || containerSize <= 0) return;
|
|
87
87
|
|
|
88
88
|
const currentPos = direction === "horizontal" ? e.clientX : e.clientY;
|
|
89
89
|
const delta = currentPos - startPos;
|
|
@@ -124,8 +124,11 @@
|
|
|
124
124
|
</div>
|
|
125
125
|
|
|
126
126
|
<div
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
role="separator"
|
|
128
|
+
aria-orientation="vertical"
|
|
129
|
+
aria-label="Resize handle"
|
|
130
|
+
class="touch-none select-none z-10 cursor-col-resize bg-[var(--color-bg-muted)] hover:bg-[var(--color-bg-hover)] transition-colors [@media(pointer:coarse)]:min-w-11"
|
|
131
|
+
style="width: {dividerSize}px; min-width: {dividerSize}px"
|
|
129
132
|
onpointerdown={startDrag}
|
|
130
133
|
></div>
|
|
131
134
|
|
|
@@ -138,12 +141,18 @@
|
|
|
138
141
|
</div>
|
|
139
142
|
|
|
140
143
|
<div
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
role="separator"
|
|
145
|
+
aria-orientation="horizontal"
|
|
146
|
+
aria-label="Resize handle"
|
|
147
|
+
class="touch-none select-none z-10 cursor-row-resize bg-[var(--color-bg-muted)] hover:bg-[var(--color-bg-hover)] transition-colors [@media(pointer:coarse)]:min-h-11"
|
|
148
|
+
style="height: {dividerSize}px; min-height: {dividerSize}px"
|
|
143
149
|
onpointerdown={startDrag}
|
|
144
150
|
></div>
|
|
145
151
|
|
|
146
|
-
<div
|
|
152
|
+
<div
|
|
153
|
+
class="overflow-auto min-w-0 min-h-0"
|
|
154
|
+
style="height: calc(100% - {size}% - {dividerSize}px)"
|
|
155
|
+
>
|
|
147
156
|
{@render second?.()}
|
|
148
157
|
</div>
|
|
149
158
|
{/if}
|
package/dist/lib/Switch.svelte
CHANGED
|
@@ -103,6 +103,7 @@
|
|
|
103
103
|
isDisabled
|
|
104
104
|
? "opacity-[var(--opacity-disabled)] cursor-not-allowed"
|
|
105
105
|
: "cursor-pointer",
|
|
106
|
+
"[@media(pointer:coarse)]:min-h-11 [@media(pointer:coarse)]:min-w-11",
|
|
106
107
|
justifyClass
|
|
107
108
|
)
|
|
108
109
|
);
|
|
@@ -114,21 +115,21 @@
|
|
|
114
115
|
const knobClass = $derived(
|
|
115
116
|
cx(
|
|
116
117
|
knob[sz],
|
|
117
|
-
"rounded-full bg-
|
|
118
|
+
"rounded-full bg-[var(--color-text-inverse,#fff)] border border-[var(--border-color-default)] shadow-[0_1px_2px_var(--shadow-color)]"
|
|
118
119
|
)
|
|
119
120
|
);
|
|
120
121
|
</script>
|
|
121
122
|
|
|
122
123
|
<label class={rootClass} for={inputId}>
|
|
123
124
|
{#if topLabel}
|
|
124
|
-
<span class="text-[var(--color-text-muted)]
|
|
125
|
+
<span class={cx("text-[var(--color-text-muted)]", TEXT[sz])}>
|
|
125
126
|
{topLabel}
|
|
126
127
|
</span>
|
|
127
128
|
{/if}
|
|
128
129
|
|
|
129
130
|
<div class="inline-flex items-center gap-2">
|
|
130
131
|
{#if leftLabel}
|
|
131
|
-
<span class="text-[var(--color-text-muted)]
|
|
132
|
+
<span class={cx("text-[var(--color-text-muted)]", TEXT[sz])}>
|
|
132
133
|
{leftLabel}
|
|
133
134
|
</span>
|
|
134
135
|
{/if}
|
|
@@ -159,7 +160,7 @@
|
|
|
159
160
|
</button>
|
|
160
161
|
|
|
161
162
|
{#if rightLabel}
|
|
162
|
-
<span class="text-[var(--color-text-muted)]
|
|
163
|
+
<span class={cx("text-[var(--color-text-muted)]", TEXT[sz])}>
|
|
163
164
|
{rightLabel}
|
|
164
165
|
</span>
|
|
165
166
|
{/if}
|
package/dist/lib/Tabs.svelte
CHANGED
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
0,
|
|
91
91
|
enabled.findIndex((t) => t.id === activeTab)
|
|
92
92
|
);
|
|
93
|
-
let next
|
|
93
|
+
let next: number;
|
|
94
94
|
|
|
95
95
|
if (e.key === "ArrowRight") next = (idx + 1) % enabled.length;
|
|
96
96
|
else if (e.key === "ArrowLeft")
|
|
@@ -115,27 +115,27 @@
|
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
const base =
|
|
118
|
-
"inline-flex items-center justify-center font-medium transition-colors duration-
|
|
118
|
+
"inline-flex items-center justify-center font-medium transition-colors duration-[var(--transition-fast)] focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-[var(--border-color-focus)] focus-visible:ring-offset-0 focus:outline-none disabled:opacity-[var(--opacity-disabled)] disabled:cursor-not-allowed [@media(pointer:coarse)]:min-h-11";
|
|
119
119
|
|
|
120
120
|
const variants = $derived({
|
|
121
121
|
default: {
|
|
122
|
-
base: "border-b-2 border-transparent text-[var(--color-text-
|
|
122
|
+
base: "border-b-2 border-transparent text-[var(--color-text-default)]",
|
|
123
123
|
active:
|
|
124
124
|
"bg-[var(--color-bg-secondary)] !text-[var(--color-text-default)] border-[var(--border-color-strong)]",
|
|
125
125
|
hover:
|
|
126
126
|
"hover:text-[var(--color-text-default)] hover:bg-[var(--color-bg-muted)]",
|
|
127
127
|
},
|
|
128
128
|
underline: {
|
|
129
|
-
base: "border-b-2 border-transparent text-[var(--color-text-
|
|
129
|
+
base: "border-b-2 border-transparent text-[var(--color-text-default)]",
|
|
130
130
|
active:
|
|
131
131
|
"border-[var(--border-color-focus)] !text-[var(--color-text-default)]",
|
|
132
132
|
hover:
|
|
133
133
|
"hover:text-[var(--color-text-default)] hover:border-[var(--border-color-strong)]",
|
|
134
134
|
},
|
|
135
135
|
pills: {
|
|
136
|
-
base: "text-[var(--color-text-
|
|
136
|
+
base: "text-[var(--color-text-default)] border border-transparent font-medium",
|
|
137
137
|
active:
|
|
138
|
-
"bg-[var(--color-bg-primary)] text-
|
|
138
|
+
"bg-[var(--color-bg-primary)] text-[var(--color-text-default)] border-[var(--color-bg-primary)] font-[var(--font-weight-semibold)]",
|
|
139
139
|
hover:
|
|
140
140
|
"hover:bg-[var(--color-bg-secondary)] hover:text-[var(--color-text-default)]",
|
|
141
141
|
},
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
border border-[var(--border-color-default)] bg-[var(--color-bg-secondary)]
|
|
49
49
|
hover:bg-[var(--color-bg-hover)] focus-visible:outline-none focus-visible:ring-2
|
|
50
50
|
focus-visible:ring-[var(--border-color-focus)] transition-colors
|
|
51
|
+
[@media(pointer:coarse)]:min-h-11 [@media(pointer:coarse)]:min-w-11
|
|
51
52
|
disabled:opacity-[var(--opacity-disabled)]
|
|
52
53
|
disabled:cursor-not-allowed
|
|
53
54
|
disabled:brightness-100
|