svelte-comp 1.2.7 → 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 +497 -2
- package/dist/app.css +2 -3
- package/dist/app.d.ts +10 -0
- package/dist/lang.d.ts +3 -3
- package/dist/lang.js +3 -3
- package/dist/lib/Accordion.svelte +14 -14
- package/dist/lib/Badge.svelte +44 -0
- package/dist/lib/Badge.svelte.d.ts +10 -0
- package/dist/lib/Button.svelte +23 -8
- package/dist/lib/Calendar.svelte +384 -377
- 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/ColorPicker.svelte +6 -6
- package/dist/lib/ContextMenu.svelte +328 -0
- package/dist/lib/ContextMenu.svelte.d.ts +14 -0
- package/dist/lib/DatePicker.svelte +161 -161
- package/dist/lib/Dialog.svelte +10 -10
- package/dist/lib/Field.svelte +1 -1
- package/dist/lib/FilePicker.svelte +127 -74
- package/dist/lib/FilePicker.svelte.d.ts +6 -3
- package/dist/lib/Hamburger.svelte +27 -21
- package/dist/lib/InstallPWA.svelte +94 -0
- package/dist/lib/InstallPWA.svelte.d.ts +8 -0
- package/dist/lib/Menu.svelte +18 -18
- package/dist/lib/NoticeBase.svelte +140 -0
- package/dist/lib/NoticeBase.svelte.d.ts +43 -0
- package/dist/lib/PrimaryColorSelect.svelte +6 -6
- package/dist/lib/ProgressCircle.svelte +7 -9
- package/dist/lib/ProgressCircle.svelte.d.ts +7 -9
- package/dist/lib/SearchInput.svelte +6 -6
- 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/TimePicker.svelte +103 -95
- package/dist/lib/TimePickerNew.svelte +634 -0
- package/dist/lib/TimePickerNew.svelte.d.ts +49 -0
- package/dist/lib/Toast.svelte +17 -120
- package/dist/lib/Tooltip.svelte +7 -7
- package/dist/lib/Topbar.svelte +112 -0
- package/dist/lib/Topbar.svelte.d.ts +44 -0
- 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 +5 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/lang.d.ts +64 -0
- package/dist/lib/lang.js +64 -0
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/styles.css +2 -0
- package/dist/utils/index.js +15 -4
- package/package.json +12 -12
package/dist/lang.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var enTexts = {
|
|
2
2
|
app: {
|
|
3
|
-
version: "v1.
|
|
3
|
+
version: "v1.3.3",
|
|
4
4
|
title: "Svelte 5 UI Components",
|
|
5
5
|
footer: "© 2025 MaestroFusion360",
|
|
6
6
|
authorUrl: "https://github.com/MaestroFusion360/svelte-comp",
|
|
@@ -361,7 +361,7 @@ var enTexts = {
|
|
|
361
361
|
};
|
|
362
362
|
var ruTexts = {
|
|
363
363
|
app: {
|
|
364
|
-
version: "v1.
|
|
364
|
+
version: "v1.3.3",
|
|
365
365
|
title: "Svelte 5 UI Components",
|
|
366
366
|
footer: "© 2025 MaestroFusion360",
|
|
367
367
|
authorUrl: "https://github.com/MaestroFusion360/svelte-comp",
|
|
@@ -723,7 +723,7 @@ var ruTexts = {
|
|
|
723
723
|
};
|
|
724
724
|
var esTexts = {
|
|
725
725
|
app: {
|
|
726
|
-
version: "v1.
|
|
726
|
+
version: "v1.3.3",
|
|
727
727
|
title: "Svelte 5 UI Components",
|
|
728
728
|
footer: "© 2025 MaestroFusion360",
|
|
729
729
|
authorUrl: "https://github.com/MaestroFusion360/svelte-comp",
|
|
@@ -51,22 +51,22 @@
|
|
|
51
51
|
}: Props = $props();
|
|
52
52
|
|
|
53
53
|
const base =
|
|
54
|
-
"w-full border border-[var(--border-color-default)] bg-[var(--color-bg-surface)] shadow-
|
|
54
|
+
"w-full border border-[var(--border-color-default)] bg-[var(--color-bg-surface)] shadow-[0_1px_2px_var(--shadow-color)]";
|
|
55
55
|
|
|
56
56
|
const sizes: Record<SizeKey, string> = {
|
|
57
|
-
xs: "rounded-[var(--radius-md)]
|
|
58
|
-
sm: "rounded-[var(--radius-md)]
|
|
59
|
-
md: "rounded-[var(--radius-lg)]
|
|
60
|
-
lg: "rounded-[var(--radius-lg)]
|
|
61
|
-
xl: "rounded-[var(--radius-xl)]
|
|
57
|
+
xs: cx("rounded-[var(--radius-md)]", TEXT.xs),
|
|
58
|
+
sm: cx("rounded-[var(--radius-md)]", TEXT.sm),
|
|
59
|
+
md: cx("rounded-[var(--radius-lg)]", TEXT.md),
|
|
60
|
+
lg: cx("rounded-[var(--radius-lg)]", TEXT.lg),
|
|
61
|
+
xl: cx("rounded-[var(--radius-xl)]", TEXT.xl),
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
const contentSize: Record<SizeKey, string> = {
|
|
65
|
-
xs: "px-
|
|
66
|
-
sm: "px-
|
|
67
|
-
md: "px-
|
|
68
|
-
lg: "px-
|
|
69
|
-
xl: "px-
|
|
65
|
+
xs: "px-[var(--spacing-md)] pb-[var(--spacing-md)] mt-[var(--spacing-xs)]",
|
|
66
|
+
sm: "px-[calc(var(--spacing-md)+var(--spacing-xs))] pb-[calc(var(--spacing-md)+var(--spacing-xs))] mt-[var(--spacing-sm)]",
|
|
67
|
+
md: "px-[calc(var(--spacing-md)+var(--spacing-sm))] pb-[calc(var(--spacing-md)+var(--spacing-sm))] mt-[calc(var(--spacing-sm)+var(--spacing-xs))]",
|
|
68
|
+
lg: "px-[var(--spacing-xl)] pb-[var(--spacing-xl)] mt-[var(--spacing-md)]",
|
|
69
|
+
xl: "px-[calc(var(--spacing-xl)+var(--spacing-sm))] pb-[calc(var(--spacing-xl)+var(--spacing-sm))] mt-[calc(var(--spacing-md)+var(--spacing-xs))]",
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
const iconSize: Record<SizeKey, string> = {
|
|
@@ -110,14 +110,14 @@
|
|
|
110
110
|
<h3>
|
|
111
111
|
<button
|
|
112
112
|
type="button"
|
|
113
|
-
class="flex w-full items-center justify-between gap-
|
|
113
|
+
class="flex w-full items-center justify-between gap-[calc(var(--spacing-sm)+var(--spacing-xs))] p-[var(--spacing-sm)] text-left font-medium text-[var(--color-text-default)] bg-transparent transition-colors hover:bg-[var(--color-bg-hover)] active:bg-[var(--color-bg-active)] focus:outline-none focus:ring-2 focus:ring-[var(--border-color-focus)] focus:ring-inset"
|
|
114
114
|
aria-expanded={isOpen(i)}
|
|
115
115
|
onclick={() => toggle(i)}
|
|
116
116
|
>
|
|
117
117
|
<span>{item.title}</span>
|
|
118
118
|
<svg
|
|
119
119
|
class={cx(
|
|
120
|
-
"shrink-0 transition-transform duration-
|
|
120
|
+
"shrink-0 transition-transform duration-[var(--transition-fast)] text-[var(--color-text-muted)]",
|
|
121
121
|
iconClass
|
|
122
122
|
)}
|
|
123
123
|
class:rotate-180={isOpen(i)}
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
</h3>
|
|
136
136
|
|
|
137
137
|
<div
|
|
138
|
-
class="grid overflow-hidden transition-[grid-template-rows] duration-
|
|
138
|
+
class="grid overflow-hidden transition-[grid-template-rows] duration-[var(--transition-fast)]"
|
|
139
139
|
class:grid-rows-[1fr]={isOpen(i)}
|
|
140
140
|
class:grid-rows-[0fr]={!isOpen(i)}
|
|
141
141
|
>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- src/lib/Badge.svelte -->
|
|
2
|
+
<script lang="ts">
|
|
3
|
+
/**
|
|
4
|
+
* @component Badge
|
|
5
|
+
* @description Compact status badge for inline labels and small indicators.
|
|
6
|
+
*
|
|
7
|
+
* @prop message {string} - Badge text
|
|
8
|
+
*
|
|
9
|
+
* @prop variant {ToastVariant} - Visual style
|
|
10
|
+
* @options success|danger|warning|info
|
|
11
|
+
* @default info
|
|
12
|
+
*
|
|
13
|
+
* @prop showIcon {boolean} - Shows a variant icon
|
|
14
|
+
* @default false
|
|
15
|
+
*
|
|
16
|
+
* @prop class {string} - Additional wrapper classes
|
|
17
|
+
* @default ""
|
|
18
|
+
*
|
|
19
|
+
* @note Intended for inline status labels.
|
|
20
|
+
* @note Uses NoticeBase for shared styling with Toast.
|
|
21
|
+
*/
|
|
22
|
+
import NoticeBase from "./NoticeBase.svelte";
|
|
23
|
+
import type { ToastVariant } from "./types";
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
message,
|
|
27
|
+
variant = "info",
|
|
28
|
+
showIcon = false,
|
|
29
|
+
class: externalClass = "",
|
|
30
|
+
}: {
|
|
31
|
+
message: string;
|
|
32
|
+
variant?: ToastVariant;
|
|
33
|
+
showIcon?: boolean;
|
|
34
|
+
class?: string;
|
|
35
|
+
} = $props();
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<NoticeBase
|
|
39
|
+
{message}
|
|
40
|
+
{variant}
|
|
41
|
+
{showIcon}
|
|
42
|
+
inline
|
|
43
|
+
class={externalClass}
|
|
44
|
+
/>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ToastVariant } from "./types";
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
message: string;
|
|
4
|
+
variant?: ToastVariant;
|
|
5
|
+
showIcon?: boolean;
|
|
6
|
+
class?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const Badge: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type Badge = ReturnType<typeof Badge>;
|
|
10
|
+
export default Badge;
|
package/dist/lib/Button.svelte
CHANGED
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
relative inline-flex items-center justify-center gap-2 rounded-[var(--radius-md)] border font-medium
|
|
71
71
|
transition-all duration-[var(--transition-fast)] ease-[var(--timing-default)] whitespace-nowrap select-none
|
|
72
72
|
focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-color-focus)]
|
|
73
|
+
[@media(pointer:coarse)]:min-h-11 [@media(pointer:coarse)]:min-w-11
|
|
73
74
|
disabled:opacity-[var(--opacity-disabled)]
|
|
74
75
|
disabled:cursor-not-allowed
|
|
75
76
|
disabled:brightness-100
|
|
@@ -87,20 +88,20 @@
|
|
|
87
88
|
|
|
88
89
|
const variants: Record<ButtonVariant, string> = {
|
|
89
90
|
primary:
|
|
90
|
-
"bg-[var(--color-bg-primary)] text-
|
|
91
|
+
"bg-[var(--color-bg-primary)] text-[var(--color-text-inverse,#fff)] border-[var(--border-color-primary)] hover:brightness-110 active:scale-95",
|
|
91
92
|
secondary:
|
|
92
93
|
"bg-[var(--color-bg-secondary)] [color:var(--color-text-default)] border-[var(--border-color-default)] hover:bg-[var(--color-bg-hover)] active:scale-95",
|
|
93
|
-
pill: "bg-[var(--color-bg-primary)] text-
|
|
94
|
+
pill: "bg-[var(--color-bg-primary)] text-[var(--color-text-inverse,#fff)] border-[var(--border-color-primary)] rounded-full hover:brightness-110 active:scale-95",
|
|
94
95
|
danger:
|
|
95
|
-
"bg-[var(--color-bg-danger)] text-
|
|
96
|
+
"bg-[var(--color-bg-danger)] text-[var(--color-text-inverse,#fff)] border-[var(--color-bg-danger)] hover:brightness-110 active:scale-95",
|
|
96
97
|
success:
|
|
97
|
-
"bg-[var(--color-bg-success)] text-
|
|
98
|
+
"bg-[var(--color-bg-success)] text-[var(--color-text-inverse,#fff)] border-[var(--color-bg-success)] hover:brightness-110 active:scale-95",
|
|
98
99
|
warning:
|
|
99
|
-
"bg-[var(--color-bg-warning)] text-
|
|
100
|
+
"bg-[var(--color-bg-warning)] text-[var(--color-text-inverse,#fff)] border-[var(--color-bg-warning)] hover:brightness-110 active:scale-95",
|
|
100
101
|
ghost:
|
|
101
102
|
"bg-transparent [color:var(--color-text-default)] border-transparent hover:bg-[var(--color-bg-hover)] active:bg-[var(--color-bg-active)] active:scale-95",
|
|
102
103
|
link: "bg-transparent underline border-transparent [color:var(--color-text-link)] hover:brightness-110 active:scale-95 transition-transform ",
|
|
103
|
-
info: "bg-[var(--color-bg-secondary)] text-
|
|
104
|
+
info: "bg-[var(--color-bg-secondary)] text-[var(--color-text-inverse,#fff)] border-[var(--border-color-default)] hover:bg-[var(--color-bg-hover)] active:scale-95",
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
const buttonClass = $derived(
|
|
@@ -132,15 +133,29 @@
|
|
|
132
133
|
|
|
133
134
|
function navigateToLink() {
|
|
134
135
|
if (!link || typeof window === "undefined") return;
|
|
136
|
+
const safeLink = getSafeLink(link);
|
|
137
|
+
if (!safeLink) return;
|
|
135
138
|
|
|
136
139
|
const restAttrs = rest as Record<string, unknown>;
|
|
137
140
|
const target =
|
|
138
141
|
typeof restAttrs.target === "string" ? restAttrs.target : undefined;
|
|
139
142
|
|
|
140
143
|
if (target === "_blank") {
|
|
141
|
-
window.open(
|
|
144
|
+
window.open(safeLink, "_blank", "noopener,noreferrer");
|
|
142
145
|
} else {
|
|
143
|
-
window.location.assign(
|
|
146
|
+
window.location.assign(safeLink);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function getSafeLink(value: string) {
|
|
151
|
+
try {
|
|
152
|
+
const url = new URL(value, window.location.href);
|
|
153
|
+
if (!["http:", "https:", "mailto:", "tel:"].includes(url.protocol)) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
return value;
|
|
157
|
+
} catch {
|
|
158
|
+
return null;
|
|
144
159
|
}
|
|
145
160
|
}
|
|
146
161
|
</script>
|