m3-svelte 5.4.0 → 5.7.0
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/package/buttons/Button.svelte +15 -10
- package/package/buttons/Button.svelte.d.ts +6 -6
- package/package/buttons/SplitButton.svelte +4 -4
- package/package/buttons/SplitButton.svelte.d.ts +2 -2
- package/package/containers/Card.svelte +2 -3
- package/package/containers/Card.svelte.d.ts +2 -3
- package/package/containers/Dialog.svelte +35 -37
- package/package/containers/Dialog.svelte.d.ts +4 -0
- package/package/containers/ListItem.svelte +36 -47
- package/package/containers/ListItem.svelte.d.ts +3 -3
- package/package/containers/Snackbar.svelte +2 -2
- package/package/containers/Snackbar.svelte.d.ts +2 -2
- package/package/containers/SnackbarItem.svelte +2 -2
- package/package/containers/SnackbarItem.svelte.d.ts +2 -2
- package/package/forms/Checkbox.svelte +3 -2
- package/package/forms/Checkbox.svelte.d.ts +2 -2
- package/package/forms/Chip.svelte +20 -13
- package/package/forms/Chip.svelte.d.ts +3 -3
- package/package/forms/DateField.svelte +1 -1
- package/package/forms/DateFieldOutlined.svelte +1 -1
- package/package/forms/LinearProgressIndeterminate.svelte +2 -2
- package/package/forms/LinearProgressIndeterminate.svelte.d.ts +2 -2
- package/package/forms/RadioAnim1.svelte +3 -2
- package/package/forms/RadioAnim1.svelte.d.ts +2 -2
- package/package/forms/RadioAnim2.svelte +3 -2
- package/package/forms/RadioAnim2.svelte.d.ts +2 -2
- package/package/forms/RadioAnim3.svelte +3 -2
- package/package/forms/RadioAnim3.svelte.d.ts +2 -2
- package/package/forms/Select.svelte +2 -1
- package/package/forms/SelectOutlined.svelte +3 -3
- package/package/forms/Slider.svelte +127 -147
- package/package/forms/Slider.svelte.d.ts +1 -1
- package/package/forms/SliderTicks.svelte +2 -2
- package/package/forms/SliderTicks.svelte.d.ts +2 -2
- package/package/forms/TextField.svelte +5 -4
- package/package/forms/TextFieldMultiline.svelte +5 -4
- package/package/forms/TextFieldOutlined.svelte +8 -4
- package/package/forms/TextFieldOutlinedMultiline.svelte +8 -4
- package/package/forms/WavyLinearProgress.svelte +5 -7
- package/package/index.d.ts +1 -0
- package/package/index.js +1 -0
- package/package/misc/_icon.svelte +14 -1
- package/package/misc/typing-utils.d.ts +4 -1
- package/package/nav/NavCMLXItem.svelte +4 -2
- package/package/utils/badge.d.ts +11 -0
- package/package/utils/badge.js +30 -0
- package/package.json +10 -10
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
{...extra}
|
|
48
48
|
defaultValue={extra.defaultValue}
|
|
49
49
|
></textarea>
|
|
50
|
-
<!-- TODO: once https://github.com/sveltejs/svelte/pull/16481 is finished, remove the defaultvalue thing -->
|
|
50
|
+
<!-- TODO/deprecated: once https://github.com/sveltejs/svelte/pull/16481 is finished, remove the defaultvalue thing -->
|
|
51
51
|
<div class="layer"></div>
|
|
52
52
|
<label class="m3-font-body-large" for={id}>{label}</label>
|
|
53
53
|
{#if leadingIcon}
|
|
@@ -61,7 +61,11 @@
|
|
|
61
61
|
do this: <TextFieldOutlinedMultiline --m3-util-background="rgb(var(--m3-scheme-surface-container))" />
|
|
62
62
|
*/
|
|
63
63
|
:root {
|
|
64
|
-
|
|
64
|
+
/* "textfield" is deprecated */
|
|
65
|
+
--m3-field-outlined-shape: var(
|
|
66
|
+
--m3-textfield-outlined-shape,
|
|
67
|
+
var(--m3-util-rounding-extra-small)
|
|
68
|
+
);
|
|
65
69
|
}
|
|
66
70
|
.m3-container {
|
|
67
71
|
display: inline-flex;
|
|
@@ -78,7 +82,7 @@
|
|
|
78
82
|
border: none;
|
|
79
83
|
outline: none;
|
|
80
84
|
padding: 1rem;
|
|
81
|
-
border-radius: var(--m3-
|
|
85
|
+
border-radius: var(--m3-field-outlined-shape);
|
|
82
86
|
background-color: transparent;
|
|
83
87
|
color: rgb(var(--m3-scheme-on-surface));
|
|
84
88
|
resize: none;
|
|
@@ -118,7 +122,7 @@
|
|
|
118
122
|
position: absolute;
|
|
119
123
|
inset: 0;
|
|
120
124
|
border: 1px solid rgb(var(--error, var(--m3-scheme-outline)));
|
|
121
|
-
border-radius: var(--m3-
|
|
125
|
+
border-radius: var(--m3-field-outlined-shape);
|
|
122
126
|
pointer-events: none;
|
|
123
127
|
transition: all 100ms;
|
|
124
128
|
&:is(textarea:enabled:hover ~ .layer) {
|
|
@@ -26,16 +26,14 @@
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
onMount(() => {
|
|
29
|
-
let mounted = true;
|
|
30
29
|
const start = performance.now();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
let id: number;
|
|
31
|
+
const updateTime = () => {
|
|
34
32
|
time = performance.now() - start;
|
|
35
|
-
requestAnimationFrame(
|
|
33
|
+
id = requestAnimationFrame(updateTime);
|
|
36
34
|
};
|
|
37
|
-
|
|
38
|
-
return () => (
|
|
35
|
+
updateTime();
|
|
36
|
+
return () => cancelAnimationFrame(id);
|
|
39
37
|
});
|
|
40
38
|
</script>
|
|
41
39
|
|
package/package/index.d.ts
CHANGED
|
@@ -49,5 +49,6 @@ export { default as Tabs } from "./nav/Tabs.svelte";
|
|
|
49
49
|
export { default as TabsLink } from "./nav/TabsLink.svelte";
|
|
50
50
|
export { default as VariableTabs } from "./nav/VariableTabs.svelte";
|
|
51
51
|
export { default as VariableTabsLink } from "./nav/VariableTabsLink.svelte";
|
|
52
|
+
export * from "./utils/badge.js";
|
|
52
53
|
export { default as ChipChooser } from "./utils/ChipChooser.svelte";
|
|
53
54
|
export { default as Divider } from "./utils/Divider.svelte";
|
package/package/index.js
CHANGED
|
@@ -48,5 +48,6 @@ export { default as Tabs } from "./nav/Tabs.svelte";
|
|
|
48
48
|
export { default as TabsLink } from "./nav/TabsLink.svelte";
|
|
49
49
|
export { default as VariableTabs } from "./nav/VariableTabs.svelte";
|
|
50
50
|
export { default as VariableTabsLink } from "./nav/VariableTabsLink.svelte";
|
|
51
|
+
export * from "./utils/badge.js";
|
|
51
52
|
export { default as ChipChooser } from "./utils/ChipChooser.svelte";
|
|
52
53
|
export { default as Divider } from "./utils/Divider.svelte";
|
|
@@ -14,6 +14,19 @@
|
|
|
14
14
|
} = $props();
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
|
-
<svg
|
|
17
|
+
<svg
|
|
18
|
+
{width}
|
|
19
|
+
{height}
|
|
20
|
+
class={clazz}
|
|
21
|
+
data-badge={icon.body.includes("<!--badge-->") ? "" : undefined}
|
|
22
|
+
viewBox="0 0 {icon.width} {icon.height}"
|
|
23
|
+
>
|
|
18
24
|
{@html icon.body}
|
|
19
25
|
</svg>
|
|
26
|
+
|
|
27
|
+
<style>
|
|
28
|
+
/* deprecated: eventually want to just do this for all icons */
|
|
29
|
+
svg[data-badge] {
|
|
30
|
+
overflow: visible;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
1
|
+
import type { HTMLLabelAttributes, HTMLAnchorAttributes, HTMLButtonAttributes, HTMLAttributes } from "svelte/elements";
|
|
2
|
+
export type LabelAttrs = HTMLLabelAttributes & Required<Pick<HTMLLabelAttributes, "for">>;
|
|
3
|
+
export type AnchorAttrs = HTMLAnchorAttributes & Required<Pick<HTMLAnchorAttributes, "href">>;
|
|
2
4
|
export type NotButton<T> = Omit<T, "onclick">;
|
|
3
5
|
export type ButtonAttrs = HTMLButtonAttributes & Required<Pick<HTMLButtonAttributes, "onclick">>;
|
|
6
|
+
export type DivAttrs = NotButton<HTMLAttributes<HTMLDivElement>>;
|
|
@@ -106,6 +106,9 @@
|
|
|
106
106
|
color: rgb(var(--m3-scheme-on-secondary-container));
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
+
&:is(.large .content) {
|
|
110
|
+
padding-block: 0.375rem;
|
|
111
|
+
}
|
|
109
112
|
&:is(.expanded .content) {
|
|
110
113
|
gap: 0.75rem;
|
|
111
114
|
}
|
|
@@ -148,7 +151,6 @@
|
|
|
148
151
|
&.large {
|
|
149
152
|
flex-direction: column;
|
|
150
153
|
min-height: 4rem;
|
|
151
|
-
padding-block: 0.375rem;
|
|
152
154
|
}
|
|
153
155
|
&.expanded {
|
|
154
156
|
height: 3.5rem;
|
|
@@ -229,10 +231,10 @@
|
|
|
229
231
|
flex-direction: column;
|
|
230
232
|
text-align: center;
|
|
231
233
|
min-height: 4rem;
|
|
232
|
-
padding-block: 0.375rem;
|
|
233
234
|
|
|
234
235
|
.content {
|
|
235
236
|
flex-direction: column;
|
|
237
|
+
padding-block: 0.375rem;
|
|
236
238
|
|
|
237
239
|
&.selected {
|
|
238
240
|
color: rgb(var(--m3-scheme-secondary));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IconifyIcon } from "@iconify/types";
|
|
2
|
+
export declare const addBadge: (icon: IconifyIcon, n?: number) => {
|
|
3
|
+
body: string;
|
|
4
|
+
left?: number;
|
|
5
|
+
top?: number;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
rotate?: number;
|
|
9
|
+
hFlip?: boolean;
|
|
10
|
+
vFlip?: boolean;
|
|
11
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const addBadge = (icon, n) => {
|
|
2
|
+
const { width, height } = icon;
|
|
3
|
+
if (!width || !height)
|
|
4
|
+
throw new Error("Icon must have icon and height");
|
|
5
|
+
let badge;
|
|
6
|
+
if (n) {
|
|
7
|
+
const x = width - 12;
|
|
8
|
+
const y = 14 - 16; // 14 down, 16 up
|
|
9
|
+
const max = 999;
|
|
10
|
+
const text = n > max ? `${max}+` : n.toString();
|
|
11
|
+
badge =
|
|
12
|
+
`<!--badge--><foreignObject x="${x}" y="${y}" width="40" height="16">` +
|
|
13
|
+
`<div class="m3-font-label-small" style="${[
|
|
14
|
+
"background-color:rgb(var(--m3-scheme-error))",
|
|
15
|
+
"color:rgb(var(--m3-scheme-on-error))",
|
|
16
|
+
"width:max-content",
|
|
17
|
+
"padding-inline:4px",
|
|
18
|
+
"border-radius:var(--m3-util-rounding-full)",
|
|
19
|
+
].join(";")}">` +
|
|
20
|
+
text +
|
|
21
|
+
`</div>`;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
badge = `<circle cx="${width - 3}" cy="3" r="3" fill="rgb(var(--m3-scheme-error))"/>`;
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
...icon,
|
|
28
|
+
body: icon.body + badge,
|
|
29
|
+
};
|
|
30
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "m3-svelte",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.0",
|
|
4
4
|
"license": "Apache-2.0 OR GPL-3.0-only",
|
|
5
5
|
"repository": "KTibow/m3-svelte",
|
|
6
6
|
"author": {
|
|
@@ -36,16 +36,16 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@iconify/types": "^2.0.0",
|
|
38
38
|
"@ktibow/iconset-material-symbols": "^0.0.1755063979",
|
|
39
|
-
"@ktibow/material-color-utilities-nightly": "^0.3.
|
|
40
|
-
"svelte": "^5.38.
|
|
39
|
+
"@ktibow/material-color-utilities-nightly": "^0.3.11756690739504",
|
|
40
|
+
"svelte": "^5.38.6"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@eslint/compat": "^1.3.2",
|
|
44
|
-
"@eslint/js": "^9.
|
|
44
|
+
"@eslint/js": "^9.34.0",
|
|
45
45
|
"@sveltejs/adapter-static": "^3.0.9",
|
|
46
|
-
"@sveltejs/kit": "^2.
|
|
47
|
-
"@sveltejs/package": "^2.
|
|
48
|
-
"@sveltejs/vite-plugin-svelte": "^6.1.
|
|
46
|
+
"@sveltejs/kit": "^2.37.0",
|
|
47
|
+
"@sveltejs/package": "^2.5.0",
|
|
48
|
+
"@sveltejs/vite-plugin-svelte": "^6.1.3",
|
|
49
49
|
"eslint": "^9.27.0",
|
|
50
50
|
"eslint-config-prettier": "^10.1.8",
|
|
51
51
|
"eslint-plugin-svelte": "^3.11.0",
|
|
@@ -55,10 +55,10 @@
|
|
|
55
55
|
"prettier-plugin-svelte": "^3.4.0",
|
|
56
56
|
"publint": "^0.3.12",
|
|
57
57
|
"svelte-check": "^4.3.1",
|
|
58
|
-
"svelte-highlight": "^7.8.
|
|
58
|
+
"svelte-highlight": "^7.8.4",
|
|
59
59
|
"typescript": "^5.9.2",
|
|
60
|
-
"typescript-eslint": "^8.
|
|
61
|
-
"vite": "^7.1.
|
|
60
|
+
"typescript-eslint": "^8.41.0",
|
|
61
|
+
"vite": "^7.1.4"
|
|
62
62
|
},
|
|
63
63
|
"keywords": [
|
|
64
64
|
"svelte",
|