@m3-baseui/react-tailwind 1.0.4 → 1.2.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/dist/bottom-app-bar.d.ts +62 -0
- package/dist/bottom-app-bar.js +51 -0
- package/dist/bottom-app-bar.js.map +1 -0
- package/dist/bottom-sheet.d.ts +101 -0
- package/dist/bottom-sheet.js +70 -0
- package/dist/bottom-sheet.js.map +1 -0
- package/dist/button-group.d.ts +48 -0
- package/dist/button-group.js +58 -0
- package/dist/button-group.js.map +1 -0
- package/dist/carousel.d.ts +115 -0
- package/dist/carousel.js +63 -0
- package/dist/carousel.js.map +1 -0
- package/dist/chip.js +5 -2
- package/dist/chip.js.map +1 -1
- package/dist/date-picker.d.ts +188 -0
- package/dist/date-picker.js +151 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/fab-menu.d.ts +132 -0
- package/dist/fab-menu.js +116 -0
- package/dist/fab-menu.js.map +1 -0
- package/dist/icon-button.js +4 -1
- package/dist/icon-button.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.js +654 -11
- package/dist/index.js.map +1 -1
- package/dist/loading-indicator.d.ts +68 -0
- package/dist/loading-indicator.js +61 -0
- package/dist/loading-indicator.js.map +1 -0
- package/dist/menu.d.ts +5 -5
- package/dist/navigation-bar.d.ts +5 -5
- package/dist/navigation-rail.d.ts +101 -0
- package/dist/navigation-rail.js +92 -0
- package/dist/navigation-rail.js.map +1 -0
- package/dist/search.d.ts +148 -0
- package/dist/search.js +105 -0
- package/dist/search.js.map +1 -0
- package/dist/segmented-button.d.ts +5 -5
- package/dist/select.d.ts +5 -5
- package/dist/side-sheet.d.ts +112 -0
- package/dist/side-sheet.js +90 -0
- package/dist/side-sheet.js.map +1 -0
- package/dist/split-button.d.ts +201 -0
- package/dist/split-button.js +126 -0
- package/dist/split-button.js.map +1 -0
- package/dist/time-picker.d.ts +144 -0
- package/dist/time-picker.js +101 -0
- package/dist/time-picker.js.map +1 -0
- package/dist/toolbar.d.ts +73 -0
- package/dist/toolbar.js +55 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/top-app-bar.d.ts +147 -0
- package/dist/top-app-bar.js +68 -0
- package/dist/top-app-bar.js.map +1 -0
- package/package.json +71 -1
- package/styles/preset.css +15 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as _m3_baseui_core from '@m3-baseui/core';
|
|
3
|
+
export { TopAppBarProps, TopAppBarVariant } from '@m3-baseui/core';
|
|
4
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
5
|
+
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
|
|
6
|
+
|
|
7
|
+
declare const topAppBarTv: tailwind_variants.TVReturnType<{
|
|
8
|
+
variant: {
|
|
9
|
+
small: {
|
|
10
|
+
headline: string;
|
|
11
|
+
};
|
|
12
|
+
center: {
|
|
13
|
+
headline: string;
|
|
14
|
+
};
|
|
15
|
+
medium: {
|
|
16
|
+
root: string;
|
|
17
|
+
headline: string;
|
|
18
|
+
};
|
|
19
|
+
large: {
|
|
20
|
+
root: string;
|
|
21
|
+
headline: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}, {
|
|
25
|
+
root: string;
|
|
26
|
+
row: string;
|
|
27
|
+
leading: string;
|
|
28
|
+
headline: string;
|
|
29
|
+
trailing: string;
|
|
30
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<{
|
|
31
|
+
variant: {
|
|
32
|
+
small: {
|
|
33
|
+
headline: string;
|
|
34
|
+
};
|
|
35
|
+
center: {
|
|
36
|
+
headline: string;
|
|
37
|
+
};
|
|
38
|
+
medium: {
|
|
39
|
+
root: string;
|
|
40
|
+
headline: string;
|
|
41
|
+
};
|
|
42
|
+
large: {
|
|
43
|
+
root: string;
|
|
44
|
+
headline: string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
}, {
|
|
48
|
+
variant: {
|
|
49
|
+
small: {
|
|
50
|
+
headline: string;
|
|
51
|
+
};
|
|
52
|
+
center: {
|
|
53
|
+
headline: string;
|
|
54
|
+
};
|
|
55
|
+
medium: {
|
|
56
|
+
root: string;
|
|
57
|
+
headline: string;
|
|
58
|
+
};
|
|
59
|
+
large: {
|
|
60
|
+
root: string;
|
|
61
|
+
headline: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
}>, {
|
|
65
|
+
variant: {
|
|
66
|
+
small: {
|
|
67
|
+
headline: string;
|
|
68
|
+
};
|
|
69
|
+
center: {
|
|
70
|
+
headline: string;
|
|
71
|
+
};
|
|
72
|
+
medium: {
|
|
73
|
+
root: string;
|
|
74
|
+
headline: string;
|
|
75
|
+
};
|
|
76
|
+
large: {
|
|
77
|
+
root: string;
|
|
78
|
+
headline: string;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
}, {
|
|
82
|
+
root: string;
|
|
83
|
+
row: string;
|
|
84
|
+
leading: string;
|
|
85
|
+
headline: string;
|
|
86
|
+
trailing: string;
|
|
87
|
+
}, tailwind_variants.TVReturnType<{
|
|
88
|
+
variant: {
|
|
89
|
+
small: {
|
|
90
|
+
headline: string;
|
|
91
|
+
};
|
|
92
|
+
center: {
|
|
93
|
+
headline: string;
|
|
94
|
+
};
|
|
95
|
+
medium: {
|
|
96
|
+
root: string;
|
|
97
|
+
headline: string;
|
|
98
|
+
};
|
|
99
|
+
large: {
|
|
100
|
+
root: string;
|
|
101
|
+
headline: string;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
}, {
|
|
105
|
+
root: string;
|
|
106
|
+
row: string;
|
|
107
|
+
leading: string;
|
|
108
|
+
headline: string;
|
|
109
|
+
trailing: string;
|
|
110
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<{
|
|
111
|
+
variant: {
|
|
112
|
+
small: {
|
|
113
|
+
headline: string;
|
|
114
|
+
};
|
|
115
|
+
center: {
|
|
116
|
+
headline: string;
|
|
117
|
+
};
|
|
118
|
+
medium: {
|
|
119
|
+
root: string;
|
|
120
|
+
headline: string;
|
|
121
|
+
};
|
|
122
|
+
large: {
|
|
123
|
+
root: string;
|
|
124
|
+
headline: string;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
}, {
|
|
128
|
+
variant: {
|
|
129
|
+
small: {
|
|
130
|
+
headline: string;
|
|
131
|
+
};
|
|
132
|
+
center: {
|
|
133
|
+
headline: string;
|
|
134
|
+
};
|
|
135
|
+
medium: {
|
|
136
|
+
root: string;
|
|
137
|
+
headline: string;
|
|
138
|
+
};
|
|
139
|
+
large: {
|
|
140
|
+
root: string;
|
|
141
|
+
headline: string;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
}>, unknown, unknown, undefined>>;
|
|
145
|
+
declare const TopAppBar: react.ForwardRefExoticComponent<_m3_baseui_core.TopAppBarOwnProps & Omit<react.HTMLAttributes<HTMLElement>, "title"> & react.RefAttributes<HTMLElement>>;
|
|
146
|
+
|
|
147
|
+
export { TopAppBar, topAppBarTv };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createTopAppBar } from '@m3-baseui/core';
|
|
3
|
+
import { tv as tv$1 } from 'tailwind-variants';
|
|
4
|
+
|
|
5
|
+
// src/top-app-bar.ts
|
|
6
|
+
var TYPESCALE = [
|
|
7
|
+
"display-large",
|
|
8
|
+
"display-medium",
|
|
9
|
+
"display-small",
|
|
10
|
+
"headline-large",
|
|
11
|
+
"headline-medium",
|
|
12
|
+
"headline-small",
|
|
13
|
+
"title-large",
|
|
14
|
+
"title-medium",
|
|
15
|
+
"title-small",
|
|
16
|
+
"body-large",
|
|
17
|
+
"body-medium",
|
|
18
|
+
"body-small",
|
|
19
|
+
"label-large",
|
|
20
|
+
"label-medium",
|
|
21
|
+
"label-small"
|
|
22
|
+
];
|
|
23
|
+
var tv = (options, config) => tv$1(options, {
|
|
24
|
+
...config,
|
|
25
|
+
twMergeConfig: {
|
|
26
|
+
extend: {
|
|
27
|
+
classGroups: {
|
|
28
|
+
"font-size": [{ text: [...TYPESCALE] }]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// src/top-app-bar.ts
|
|
35
|
+
var topAppBarTv = tv({
|
|
36
|
+
slots: {
|
|
37
|
+
root: "flex flex-col w-full box-border h-16 bg-surface text-on-surface",
|
|
38
|
+
row: "flex items-center gap-1 h-16 px-1",
|
|
39
|
+
leading: "flex items-center shrink-0 text-on-surface [&_svg]:size-6",
|
|
40
|
+
headline: "min-w-0 truncate text-on-surface",
|
|
41
|
+
trailing: "flex items-center gap-1 shrink-0 text-on-surface-variant [&_svg]:size-6"
|
|
42
|
+
},
|
|
43
|
+
variants: {
|
|
44
|
+
variant: {
|
|
45
|
+
small: { headline: "flex-1 px-3 text-title-large" },
|
|
46
|
+
center: { headline: "flex-1 px-3 text-center text-title-large" },
|
|
47
|
+
medium: { root: "h-28", headline: "px-4 pb-6 text-headline-small" },
|
|
48
|
+
large: { root: "h-38", headline: "px-4 pb-7 text-headline-medium" }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
defaultVariants: {
|
|
52
|
+
variant: "small"
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
var TopAppBar = createTopAppBar((args) => {
|
|
56
|
+
const s = topAppBarTv({ variant: args.variant });
|
|
57
|
+
return {
|
|
58
|
+
root: s.root(),
|
|
59
|
+
row: s.row(),
|
|
60
|
+
leading: s.leading(),
|
|
61
|
+
headline: s.headline(),
|
|
62
|
+
trailing: s.trailing()
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export { TopAppBar, topAppBarTv };
|
|
67
|
+
//# sourceMappingURL=top-app-bar.js.map
|
|
68
|
+
//# sourceMappingURL=top-app-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tv.ts","../src/top-app-bar.ts"],"names":["baseTv"],"mappings":";;;;;AAeA,IAAM,SAAA,GAAY;AAAA,EAChB,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,EAAA,GAAS,CAAC,OAAA,EAAS,MAAA,KAC9BA,KAAO,OAAA,EAAS;AAAA,EACd,GAAG,MAAA;AAAA,EACH,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ;AAAA,MACN,WAAA,EAAa;AAAA,QACX,WAAA,EAAa,CAAC,EAAE,IAAA,EAAM,CAAC,GAAG,SAAS,GAAG;AAAA;AACxC;AACF;AAEJ,CAAC,CAAA;;;AChCI,IAAM,cAAc,EAAA,CAAG;AAAA,EAC5B,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,iEAAA;AAAA,IACN,GAAA,EAAK,mCAAA;AAAA,IACL,OAAA,EAAS,2DAAA;AAAA,IACT,QAAA,EAAU,kCAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,KAAA,EAAO,EAAE,QAAA,EAAU,8BAAA,EAA+B;AAAA,MAClD,MAAA,EAAQ,EAAE,QAAA,EAAU,0CAAA,EAA2C;AAAA,MAC/D,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,+BAAA,EAAgC;AAAA,MAClE,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,gCAAA;AAAiC;AACpE,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,SAAA,GAAY,eAAA,CAAgB,CAAC,IAAA,KAAS;AACjD,EAAA,MAAM,IAAI,WAAA,CAAY,EAAE,OAAA,EAAS,IAAA,CAAK,SAAS,CAAA;AAC/C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,IACb,GAAA,EAAK,EAAE,GAAA,EAAI;AAAA,IACX,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,QAAA,EAAU,EAAE,QAAA,EAAS;AAAA,IACrB,QAAA,EAAU,EAAE,QAAA;AAAS,GACvB;AACF,CAAC","file":"top-app-bar.js","sourcesContent":["/**\n * tv.ts — a tailwind-variants factory pre-configured for the M3 typescale.\n *\n * The Tailwind v4 preset exposes the 15 typescale roles as `text-<role>`\n * font-size utilities (e.g. `text-body-small`, `text-label-large`). Stock\n * tailwind-merge does not know these custom names, so it groups them with the\n * `text-<color>` utilities and drops one when a slot sets both a color *and* a\n * typescale (the common M3 case). That silently strips either the color or the\n * type, breaking token compliance.\n *\n * Teaching tailwind-merge that the typescale names belong to the `font-size`\n * group keeps color and type independent, so both survive the merge.\n */\nimport { type TV, tv as baseTv } from 'tailwind-variants';\n\nconst TYPESCALE = [\n 'display-large',\n 'display-medium',\n 'display-small',\n 'headline-large',\n 'headline-medium',\n 'headline-small',\n 'title-large',\n 'title-medium',\n 'title-small',\n 'body-large',\n 'body-medium',\n 'body-small',\n 'label-large',\n 'label-medium',\n 'label-small',\n] as const;\n\nexport const tv: TV = (options, config) =>\n baseTv(options, {\n ...config,\n twMergeConfig: {\n extend: {\n classGroups: {\n 'font-size': [{ text: [...TYPESCALE] }],\n },\n },\n },\n });\n","/**\n * top-app-bar.ts — tailwind-variants slots for the M3 TopAppBar.\n *\n * A `surface` bar. `small`/`center` are a single 64dp row (title-large, left vs.\n * centered); `medium`/`large` add a second headline line (headline-small /\n * headline-medium) below a 64dp action row, for 112dp / 152dp totals. The active\n * variant is exposed as `data-variant`. Same DOM as the VE build.\n */\nimport { createTopAppBar } from '@m3-baseui/core';\nimport { tv } from './tv';\n\nexport const topAppBarTv = tv({\n slots: {\n root: 'flex flex-col w-full box-border h-16 bg-surface text-on-surface',\n row: 'flex items-center gap-1 h-16 px-1',\n leading: 'flex items-center shrink-0 text-on-surface [&_svg]:size-6',\n headline: 'min-w-0 truncate text-on-surface',\n trailing: 'flex items-center gap-1 shrink-0 text-on-surface-variant [&_svg]:size-6',\n },\n variants: {\n variant: {\n small: { headline: 'flex-1 px-3 text-title-large' },\n center: { headline: 'flex-1 px-3 text-center text-title-large' },\n medium: { root: 'h-28', headline: 'px-4 pb-6 text-headline-small' },\n large: { root: 'h-38', headline: 'px-4 pb-7 text-headline-medium' },\n },\n },\n defaultVariants: {\n variant: 'small',\n },\n});\n\nexport const TopAppBar = createTopAppBar((args) => {\n const s = topAppBarTv({ variant: args.variant });\n return {\n root: s.root(),\n row: s.row(),\n leading: s.leading(),\n headline: s.headline(),\n trailing: s.trailing(),\n };\n});\nexport type { TopAppBarProps, TopAppBarVariant } from '@m3-baseui/core';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m3-baseui/react-tailwind",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "M3 components implemented with tailwind-variants over the shared @m3-baseui/core factories. Ships the Tailwind v4 @theme preset.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -97,6 +97,11 @@
|
|
|
97
97
|
"types": "./dist/fab.d.ts",
|
|
98
98
|
"default": "./dist/fab.js"
|
|
99
99
|
},
|
|
100
|
+
"./fab-menu": {
|
|
101
|
+
"@m3/source": "./src/fab-menu.ts",
|
|
102
|
+
"types": "./dist/fab-menu.d.ts",
|
|
103
|
+
"default": "./dist/fab-menu.js"
|
|
104
|
+
},
|
|
100
105
|
"./divider": {
|
|
101
106
|
"@m3/source": "./src/divider.ts",
|
|
102
107
|
"types": "./dist/divider.d.ts",
|
|
@@ -107,6 +112,11 @@
|
|
|
107
112
|
"types": "./dist/progress.d.ts",
|
|
108
113
|
"default": "./dist/progress.js"
|
|
109
114
|
},
|
|
115
|
+
"./loading-indicator": {
|
|
116
|
+
"@m3/source": "./src/loading-indicator.ts",
|
|
117
|
+
"types": "./dist/loading-indicator.d.ts",
|
|
118
|
+
"default": "./dist/loading-indicator.js"
|
|
119
|
+
},
|
|
110
120
|
"./list": {
|
|
111
121
|
"@m3/source": "./src/list.ts",
|
|
112
122
|
"types": "./dist/list.d.ts",
|
|
@@ -137,11 +147,71 @@
|
|
|
137
147
|
"types": "./dist/segmented-button.d.ts",
|
|
138
148
|
"default": "./dist/segmented-button.js"
|
|
139
149
|
},
|
|
150
|
+
"./button-group": {
|
|
151
|
+
"@m3/source": "./src/button-group.ts",
|
|
152
|
+
"types": "./dist/button-group.d.ts",
|
|
153
|
+
"default": "./dist/button-group.js"
|
|
154
|
+
},
|
|
155
|
+
"./split-button": {
|
|
156
|
+
"@m3/source": "./src/split-button.ts",
|
|
157
|
+
"types": "./dist/split-button.d.ts",
|
|
158
|
+
"default": "./dist/split-button.js"
|
|
159
|
+
},
|
|
140
160
|
"./navigation-drawer": {
|
|
141
161
|
"@m3/source": "./src/navigation-drawer.ts",
|
|
142
162
|
"types": "./dist/navigation-drawer.d.ts",
|
|
143
163
|
"default": "./dist/navigation-drawer.js"
|
|
144
164
|
},
|
|
165
|
+
"./top-app-bar": {
|
|
166
|
+
"@m3/source": "./src/top-app-bar.ts",
|
|
167
|
+
"types": "./dist/top-app-bar.d.ts",
|
|
168
|
+
"default": "./dist/top-app-bar.js"
|
|
169
|
+
},
|
|
170
|
+
"./bottom-app-bar": {
|
|
171
|
+
"@m3/source": "./src/bottom-app-bar.ts",
|
|
172
|
+
"types": "./dist/bottom-app-bar.d.ts",
|
|
173
|
+
"default": "./dist/bottom-app-bar.js"
|
|
174
|
+
},
|
|
175
|
+
"./navigation-rail": {
|
|
176
|
+
"@m3/source": "./src/navigation-rail.ts",
|
|
177
|
+
"types": "./dist/navigation-rail.d.ts",
|
|
178
|
+
"default": "./dist/navigation-rail.js"
|
|
179
|
+
},
|
|
180
|
+
"./bottom-sheet": {
|
|
181
|
+
"@m3/source": "./src/bottom-sheet.ts",
|
|
182
|
+
"types": "./dist/bottom-sheet.d.ts",
|
|
183
|
+
"default": "./dist/bottom-sheet.js"
|
|
184
|
+
},
|
|
185
|
+
"./side-sheet": {
|
|
186
|
+
"@m3/source": "./src/side-sheet.ts",
|
|
187
|
+
"types": "./dist/side-sheet.d.ts",
|
|
188
|
+
"default": "./dist/side-sheet.js"
|
|
189
|
+
},
|
|
190
|
+
"./search": {
|
|
191
|
+
"@m3/source": "./src/search.ts",
|
|
192
|
+
"types": "./dist/search.d.ts",
|
|
193
|
+
"default": "./dist/search.js"
|
|
194
|
+
},
|
|
195
|
+
"./date-picker": {
|
|
196
|
+
"@m3/source": "./src/date-picker.ts",
|
|
197
|
+
"types": "./dist/date-picker.d.ts",
|
|
198
|
+
"default": "./dist/date-picker.js"
|
|
199
|
+
},
|
|
200
|
+
"./time-picker": {
|
|
201
|
+
"@m3/source": "./src/time-picker.ts",
|
|
202
|
+
"types": "./dist/time-picker.d.ts",
|
|
203
|
+
"default": "./dist/time-picker.js"
|
|
204
|
+
},
|
|
205
|
+
"./toolbar": {
|
|
206
|
+
"@m3/source": "./src/toolbar.ts",
|
|
207
|
+
"types": "./dist/toolbar.d.ts",
|
|
208
|
+
"default": "./dist/toolbar.js"
|
|
209
|
+
},
|
|
210
|
+
"./carousel": {
|
|
211
|
+
"@m3/source": "./src/carousel.ts",
|
|
212
|
+
"types": "./dist/carousel.d.ts",
|
|
213
|
+
"default": "./dist/carousel.js"
|
|
214
|
+
},
|
|
145
215
|
"./preset.css": "./styles/preset.css",
|
|
146
216
|
"./tokens.css": "./styles/tokens.css",
|
|
147
217
|
"./theme.css": "./styles/theme.css"
|
package/styles/preset.css
CHANGED
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
@theme {
|
|
21
21
|
--animate-m3-linear-indeterminate: m3-linear-indeterminate 2s ease-in-out infinite;
|
|
22
|
+
/* M3 Expressive loading indicator: the active shape rotates while it morphs
|
|
23
|
+
* (approximated as a rotate + scale pulse). The VE build matches this period. */
|
|
24
|
+
--animate-m3-loading: m3-loading 1.2s ease-in-out infinite;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
@keyframes m3-linear-indeterminate {
|
|
@@ -29,3 +32,15 @@
|
|
|
29
32
|
transform: translateX(400%);
|
|
30
33
|
}
|
|
31
34
|
}
|
|
35
|
+
|
|
36
|
+
@keyframes m3-loading {
|
|
37
|
+
0% {
|
|
38
|
+
transform: rotate(0deg) scale(1);
|
|
39
|
+
}
|
|
40
|
+
50% {
|
|
41
|
+
transform: rotate(180deg) scale(0.85);
|
|
42
|
+
}
|
|
43
|
+
100% {
|
|
44
|
+
transform: rotate(360deg) scale(1);
|
|
45
|
+
}
|
|
46
|
+
}
|