@m3-baseui/react-tailwind 1.0.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/badge.d.ts +45 -0
- package/dist/badge.js +50 -0
- package/dist/badge.js.map +1 -0
- package/dist/button.d.ts +69 -0
- package/dist/button.js +74 -0
- package/dist/button.js.map +1 -0
- package/dist/card.d.ts +80 -0
- package/dist/card.js +77 -0
- package/dist/card.js.map +1 -0
- package/dist/checkbox.d.ts +63 -0
- package/dist/checkbox.js +60 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chip.d.ts +165 -0
- package/dist/chip.js +76 -0
- package/dist/chip.js.map +1 -0
- package/dist/dialog.d.ts +86 -0
- package/dist/dialog.js +68 -0
- package/dist/dialog.js.map +1 -0
- package/dist/divider.d.ts +83 -0
- package/dist/divider.js +34 -0
- package/dist/divider.js.map +1 -0
- package/dist/fab.d.ts +104 -0
- package/dist/fab.js +43 -0
- package/dist/fab.js.map +1 -0
- package/dist/icon-button.d.ts +174 -0
- package/dist/icon-button.js +121 -0
- package/dist/icon-button.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +1157 -0
- package/dist/index.js.map +1 -0
- package/dist/item.d.ts +94 -0
- package/dist/item.js +62 -0
- package/dist/item.js.map +1 -0
- package/dist/list.d.ts +163 -0
- package/dist/list.js +94 -0
- package/dist/list.js.map +1 -0
- package/dist/menu.d.ts +119 -0
- package/dist/menu.js +114 -0
- package/dist/menu.js.map +1 -0
- package/dist/navigation-bar.d.ts +91 -0
- package/dist/navigation-bar.js +48 -0
- package/dist/navigation-bar.js.map +1 -0
- package/dist/navigation-drawer.d.ts +86 -0
- package/dist/navigation-drawer.js +78 -0
- package/dist/navigation-drawer.js.map +1 -0
- package/dist/progress.d.ts +118 -0
- package/dist/progress.js +41 -0
- package/dist/progress.js.map +1 -0
- package/dist/radio.d.ts +56 -0
- package/dist/radio.js +47 -0
- package/dist/radio.js.map +1 -0
- package/dist/segmented-button.d.ts +83 -0
- package/dist/segmented-button.js +71 -0
- package/dist/segmented-button.js.map +1 -0
- package/dist/select.d.ts +125 -0
- package/dist/select.js +99 -0
- package/dist/select.js.map +1 -0
- package/dist/slider.d.ts +94 -0
- package/dist/slider.js +71 -0
- package/dist/slider.js.map +1 -0
- package/dist/snackbar.d.ts +108 -0
- package/dist/snackbar.js +57 -0
- package/dist/snackbar.js.map +1 -0
- package/dist/switch.d.ts +72 -0
- package/dist/switch.js +66 -0
- package/dist/switch.js.map +1 -0
- package/dist/tabs.d.ts +118 -0
- package/dist/tabs.js +97 -0
- package/dist/tabs.js.map +1 -0
- package/dist/textfield.d.ts +127 -0
- package/dist/textfield.js +83 -0
- package/dist/textfield.js.map +1 -0
- package/dist/tooltip.d.ts +61 -0
- package/dist/tooltip.js +52 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tv.d.ts +19 -0
- package/dist/tv.js +35 -0
- package/dist/tv.js.map +1 -0
- package/package.json +171 -0
- package/styles/preset.css +30 -0
- package/styles/theme.css +213 -0
- package/styles/tokens.css +361 -0
package/dist/fab.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createFab } from '@m3-baseui/core';
|
|
3
|
+
import { tv } from 'tailwind-variants';
|
|
4
|
+
|
|
5
|
+
// src/fab.ts
|
|
6
|
+
var fabTv = tv({
|
|
7
|
+
base: [
|
|
8
|
+
"relative inline-flex items-center justify-center box-border overflow-hidden",
|
|
9
|
+
"border-0 cursor-pointer select-none outline-none",
|
|
10
|
+
"shadow-level3 hover:shadow-level4",
|
|
11
|
+
"transition-shadow duration-150 ease-standard",
|
|
12
|
+
"before:absolute before:inset-0 before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100",
|
|
13
|
+
"hover:before:opacity-[var(--md-sys-state-hover)]",
|
|
14
|
+
"focus-visible:before:opacity-[var(--md-sys-state-focus)]",
|
|
15
|
+
"active:before:opacity-[var(--md-sys-state-pressed)]",
|
|
16
|
+
"data-[pressed]:before:opacity-[var(--md-sys-state-pressed)]",
|
|
17
|
+
"disabled:opacity-[0.38] disabled:pointer-events-none disabled:shadow-none",
|
|
18
|
+
"data-[disabled]:opacity-[0.38] data-[disabled]:pointer-events-none data-[disabled]:shadow-none"
|
|
19
|
+
],
|
|
20
|
+
variants: {
|
|
21
|
+
size: {
|
|
22
|
+
small: "size-10 rounded-medium [&_svg]:size-6",
|
|
23
|
+
regular: "size-14 rounded-large [&_svg]:size-6",
|
|
24
|
+
large: "size-24 rounded-extra-large [&_svg]:size-9",
|
|
25
|
+
extended: "h-14 min-w-20 px-4 gap-3 rounded-large text-label-large [&_svg]:size-6"
|
|
26
|
+
},
|
|
27
|
+
color: {
|
|
28
|
+
surface: "bg-surface-container-high text-primary",
|
|
29
|
+
primary: "bg-primary-container text-on-primary-container",
|
|
30
|
+
secondary: "bg-secondary-container text-on-secondary-container",
|
|
31
|
+
tertiary: "bg-tertiary-container text-on-tertiary-container"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
defaultVariants: {
|
|
35
|
+
size: "regular",
|
|
36
|
+
color: "surface"
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
var Fab = createFab(({ size, color }) => fabTv({ size, color }));
|
|
40
|
+
|
|
41
|
+
export { Fab, fabTv };
|
|
42
|
+
//# sourceMappingURL=fab.js.map
|
|
43
|
+
//# sourceMappingURL=fab.js.map
|
package/dist/fab.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/fab.ts"],"names":[],"mappings":";;;;;AAUO,IAAM,QAAQ,EAAA,CAAG;AAAA,EACtB,IAAA,EAAM;AAAA,IACJ,6EAAA;AAAA,IACA,kDAAA;AAAA,IACA,mCAAA;AAAA,IACA,8CAAA;AAAA,IACA,4IAAA;AAAA,IACA,kDAAA;AAAA,IACA,0DAAA;AAAA,IACA,qDAAA;AAAA,IACA,6DAAA;AAAA,IACA,2EAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,uCAAA;AAAA,MACP,OAAA,EAAS,sCAAA;AAAA,MACT,KAAA,EAAO,4CAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,wCAAA;AAAA,MACT,OAAA,EAAS,gDAAA;AAAA,MACT,SAAA,EAAW,oDAAA;AAAA,MACX,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,GAAA,GAAM,SAAA,CAAU,CAAC,EAAE,IAAA,EAAM,KAAA,EAAM,KAAM,KAAA,CAAM,EAAE,IAAA,EAAM,KAAA,EAAO,CAAC","file":"fab.js","sourcesContent":["/**\n * fab.ts — tailwind-variants for the M3 FAB.\n *\n * Four sizes + four container colors, elevation level3 (level4 on hover) and a\n * currentColor state-layer `::before`. The pointer ripple is added by the\n * factory. Same DOM as the VE build.\n */\nimport { createFab } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\nexport const fabTv = tv({\n base: [\n 'relative inline-flex items-center justify-center box-border overflow-hidden',\n 'border-0 cursor-pointer select-none outline-none',\n 'shadow-level3 hover:shadow-level4',\n 'transition-shadow duration-150 ease-standard',\n 'before:absolute before:inset-0 before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100',\n 'hover:before:opacity-[var(--md-sys-state-hover)]',\n 'focus-visible:before:opacity-[var(--md-sys-state-focus)]',\n 'active:before:opacity-[var(--md-sys-state-pressed)]',\n 'data-[pressed]:before:opacity-[var(--md-sys-state-pressed)]',\n 'disabled:opacity-[0.38] disabled:pointer-events-none disabled:shadow-none',\n 'data-[disabled]:opacity-[0.38] data-[disabled]:pointer-events-none data-[disabled]:shadow-none',\n ],\n variants: {\n size: {\n small: 'size-10 rounded-medium [&_svg]:size-6',\n regular: 'size-14 rounded-large [&_svg]:size-6',\n large: 'size-24 rounded-extra-large [&_svg]:size-9',\n extended: 'h-14 min-w-20 px-4 gap-3 rounded-large text-label-large [&_svg]:size-6',\n },\n color: {\n surface: 'bg-surface-container-high text-primary',\n primary: 'bg-primary-container text-on-primary-container',\n secondary: 'bg-secondary-container text-on-secondary-container',\n tertiary: 'bg-tertiary-container text-on-tertiary-container',\n },\n },\n defaultVariants: {\n size: 'regular',\n color: 'surface',\n },\n});\n\nexport const Fab = createFab(({ size, color }) => fabTv({ size, color }));\nexport type { FabProps, FabSize, FabColor } from '@m3-baseui/core';\n"]}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import * as _base_ui_react from '@base-ui/react';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import * as _m3_baseui_core from '@m3-baseui/core';
|
|
4
|
+
export { IconButtonProps, IconButtonVariant } from '@m3-baseui/core';
|
|
5
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
6
|
+
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
|
|
7
|
+
|
|
8
|
+
declare const iconButton: tailwind_variants.TVReturnType<{
|
|
9
|
+
variant: {
|
|
10
|
+
standard: string[];
|
|
11
|
+
filled: string[];
|
|
12
|
+
tonal: string[];
|
|
13
|
+
outlined: string[];
|
|
14
|
+
};
|
|
15
|
+
selected: {
|
|
16
|
+
true: string;
|
|
17
|
+
false: string;
|
|
18
|
+
};
|
|
19
|
+
size: {
|
|
20
|
+
xs: string;
|
|
21
|
+
s: string;
|
|
22
|
+
m: string;
|
|
23
|
+
l: string;
|
|
24
|
+
xl: string;
|
|
25
|
+
};
|
|
26
|
+
width: {
|
|
27
|
+
narrow: string;
|
|
28
|
+
default: string;
|
|
29
|
+
wide: string;
|
|
30
|
+
};
|
|
31
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
32
|
+
variant: {
|
|
33
|
+
standard: string[];
|
|
34
|
+
filled: string[];
|
|
35
|
+
tonal: string[];
|
|
36
|
+
outlined: string[];
|
|
37
|
+
};
|
|
38
|
+
selected: {
|
|
39
|
+
true: string;
|
|
40
|
+
false: string;
|
|
41
|
+
};
|
|
42
|
+
size: {
|
|
43
|
+
xs: string;
|
|
44
|
+
s: string;
|
|
45
|
+
m: string;
|
|
46
|
+
l: string;
|
|
47
|
+
xl: string;
|
|
48
|
+
};
|
|
49
|
+
width: {
|
|
50
|
+
narrow: string;
|
|
51
|
+
default: string;
|
|
52
|
+
wide: string;
|
|
53
|
+
};
|
|
54
|
+
}, {
|
|
55
|
+
variant: {
|
|
56
|
+
standard: string[];
|
|
57
|
+
filled: string[];
|
|
58
|
+
tonal: string[];
|
|
59
|
+
outlined: string[];
|
|
60
|
+
};
|
|
61
|
+
selected: {
|
|
62
|
+
true: string;
|
|
63
|
+
false: string;
|
|
64
|
+
};
|
|
65
|
+
size: {
|
|
66
|
+
xs: string;
|
|
67
|
+
s: string;
|
|
68
|
+
m: string;
|
|
69
|
+
l: string;
|
|
70
|
+
xl: string;
|
|
71
|
+
};
|
|
72
|
+
width: {
|
|
73
|
+
narrow: string;
|
|
74
|
+
default: string;
|
|
75
|
+
wide: string;
|
|
76
|
+
};
|
|
77
|
+
}>, {
|
|
78
|
+
variant: {
|
|
79
|
+
standard: string[];
|
|
80
|
+
filled: string[];
|
|
81
|
+
tonal: string[];
|
|
82
|
+
outlined: string[];
|
|
83
|
+
};
|
|
84
|
+
selected: {
|
|
85
|
+
true: string;
|
|
86
|
+
false: string;
|
|
87
|
+
};
|
|
88
|
+
size: {
|
|
89
|
+
xs: string;
|
|
90
|
+
s: string;
|
|
91
|
+
m: string;
|
|
92
|
+
l: string;
|
|
93
|
+
xl: string;
|
|
94
|
+
};
|
|
95
|
+
width: {
|
|
96
|
+
narrow: string;
|
|
97
|
+
default: string;
|
|
98
|
+
wide: string;
|
|
99
|
+
};
|
|
100
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
101
|
+
variant: {
|
|
102
|
+
standard: string[];
|
|
103
|
+
filled: string[];
|
|
104
|
+
tonal: string[];
|
|
105
|
+
outlined: string[];
|
|
106
|
+
};
|
|
107
|
+
selected: {
|
|
108
|
+
true: string;
|
|
109
|
+
false: string;
|
|
110
|
+
};
|
|
111
|
+
size: {
|
|
112
|
+
xs: string;
|
|
113
|
+
s: string;
|
|
114
|
+
m: string;
|
|
115
|
+
l: string;
|
|
116
|
+
xl: string;
|
|
117
|
+
};
|
|
118
|
+
width: {
|
|
119
|
+
narrow: string;
|
|
120
|
+
default: string;
|
|
121
|
+
wide: string;
|
|
122
|
+
};
|
|
123
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
124
|
+
variant: {
|
|
125
|
+
standard: string[];
|
|
126
|
+
filled: string[];
|
|
127
|
+
tonal: string[];
|
|
128
|
+
outlined: string[];
|
|
129
|
+
};
|
|
130
|
+
selected: {
|
|
131
|
+
true: string;
|
|
132
|
+
false: string;
|
|
133
|
+
};
|
|
134
|
+
size: {
|
|
135
|
+
xs: string;
|
|
136
|
+
s: string;
|
|
137
|
+
m: string;
|
|
138
|
+
l: string;
|
|
139
|
+
xl: string;
|
|
140
|
+
};
|
|
141
|
+
width: {
|
|
142
|
+
narrow: string;
|
|
143
|
+
default: string;
|
|
144
|
+
wide: string;
|
|
145
|
+
};
|
|
146
|
+
}, {
|
|
147
|
+
variant: {
|
|
148
|
+
standard: string[];
|
|
149
|
+
filled: string[];
|
|
150
|
+
tonal: string[];
|
|
151
|
+
outlined: string[];
|
|
152
|
+
};
|
|
153
|
+
selected: {
|
|
154
|
+
true: string;
|
|
155
|
+
false: string;
|
|
156
|
+
};
|
|
157
|
+
size: {
|
|
158
|
+
xs: string;
|
|
159
|
+
s: string;
|
|
160
|
+
m: string;
|
|
161
|
+
l: string;
|
|
162
|
+
xl: string;
|
|
163
|
+
};
|
|
164
|
+
width: {
|
|
165
|
+
narrow: string;
|
|
166
|
+
default: string;
|
|
167
|
+
wide: string;
|
|
168
|
+
};
|
|
169
|
+
}>, unknown, unknown, undefined>>;
|
|
170
|
+
declare const IconButton: react.ForwardRefExoticComponent<_m3_baseui_core.IconButtonOwnProps & Omit<react.ButtonHTMLAttributes<HTMLButtonElement>, "color"> & {
|
|
171
|
+
render?: _base_ui_react.useRender.RenderProp;
|
|
172
|
+
} & react.RefAttributes<HTMLButtonElement>>;
|
|
173
|
+
|
|
174
|
+
export { IconButton, iconButton };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createIconButton } from '@m3-baseui/core';
|
|
3
|
+
import { tv } from 'tailwind-variants';
|
|
4
|
+
|
|
5
|
+
// src/icon-button.ts
|
|
6
|
+
var WIDTHS = {
|
|
7
|
+
xs: { narrow: "w-7", default: "w-8", wide: "w-10" },
|
|
8
|
+
// 28 / 32 / 40
|
|
9
|
+
s: { narrow: "w-8", default: "w-10", wide: "w-13" },
|
|
10
|
+
// 32 / 40 / 52
|
|
11
|
+
m: { narrow: "w-12", default: "w-14", wide: "w-18" },
|
|
12
|
+
// 48 / 56 / 72
|
|
13
|
+
l: { narrow: "w-16", default: "w-24", wide: "w-32" },
|
|
14
|
+
// 64 / 96 / 128
|
|
15
|
+
xl: { narrow: "w-26", default: "w-34", wide: "w-46" }
|
|
16
|
+
// 104 / 136 / 184
|
|
17
|
+
};
|
|
18
|
+
var widthCompounds = Object.entries(WIDTHS).flatMap(
|
|
19
|
+
([size, w]) => Object.entries(w).map(([width, klass]) => ({
|
|
20
|
+
size,
|
|
21
|
+
width,
|
|
22
|
+
class: klass
|
|
23
|
+
}))
|
|
24
|
+
);
|
|
25
|
+
var iconButton = tv({
|
|
26
|
+
base: [
|
|
27
|
+
"relative inline-flex items-center justify-center shrink-0",
|
|
28
|
+
"rounded-full overflow-hidden cursor-pointer select-none border-0 bg-transparent",
|
|
29
|
+
"transition-[box-shadow,background-color,color] duration-200 ease-standard",
|
|
30
|
+
// State layer overlay
|
|
31
|
+
"before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none",
|
|
32
|
+
"before:transition-opacity before:duration-100",
|
|
33
|
+
"hover:before:opacity-[var(--md-sys-state-hover)]",
|
|
34
|
+
"focus-visible:before:opacity-[var(--md-sys-state-focus)]",
|
|
35
|
+
"active:before:opacity-[var(--md-sys-state-pressed)]",
|
|
36
|
+
"data-[pressed]:before:opacity-[var(--md-sys-state-pressed)]",
|
|
37
|
+
// Focus ring (M3: 3px secondary, 2px offset)
|
|
38
|
+
"focus-visible:outline-[3px] focus-visible:outline-offset-2 focus-visible:outline-secondary",
|
|
39
|
+
// Disabled: no interaction, no state layer. Per-variant disabled colors
|
|
40
|
+
// (container on-surface/12, icon on-surface/38) live on each variant.
|
|
41
|
+
"disabled:pointer-events-none disabled:before:opacity-0",
|
|
42
|
+
"data-[disabled]:pointer-events-none data-[disabled]:before:opacity-0"
|
|
43
|
+
],
|
|
44
|
+
variants: {
|
|
45
|
+
// Disabled icon is on-surface/38 for every variant; filled/tonal disabled
|
|
46
|
+
// container is on-surface/12; outlined disabled outline is on-surface/12
|
|
47
|
+
// (material-web parity).
|
|
48
|
+
variant: {
|
|
49
|
+
standard: [
|
|
50
|
+
"text-on-surface-variant",
|
|
51
|
+
"disabled:text-on-surface/38 data-[disabled]:text-on-surface/38"
|
|
52
|
+
],
|
|
53
|
+
filled: [
|
|
54
|
+
"bg-primary text-on-primary",
|
|
55
|
+
"disabled:bg-on-surface/12 disabled:text-on-surface/38",
|
|
56
|
+
"data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38"
|
|
57
|
+
],
|
|
58
|
+
tonal: [
|
|
59
|
+
"bg-secondary-container text-on-secondary-container",
|
|
60
|
+
"disabled:bg-on-surface/12 disabled:text-on-surface/38",
|
|
61
|
+
"data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38"
|
|
62
|
+
],
|
|
63
|
+
outlined: [
|
|
64
|
+
"border border-outline text-on-surface-variant",
|
|
65
|
+
"disabled:border-on-surface/12 disabled:text-on-surface/38",
|
|
66
|
+
"data-[disabled]:border-on-surface/12 data-[disabled]:text-on-surface/38"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
selected: {
|
|
70
|
+
true: "",
|
|
71
|
+
false: ""
|
|
72
|
+
},
|
|
73
|
+
// Container height + icon size per M3 Expressive size. Width comes from the
|
|
74
|
+
// (size, width) compound variants below.
|
|
75
|
+
size: {
|
|
76
|
+
xs: "h-8 [&>svg]:size-5",
|
|
77
|
+
s: "h-10 [&>svg]:size-6",
|
|
78
|
+
m: "h-14 [&>svg]:size-6",
|
|
79
|
+
l: "h-24 [&>svg]:size-8",
|
|
80
|
+
xl: "h-[136px] [&>svg]:size-10"
|
|
81
|
+
},
|
|
82
|
+
width: {
|
|
83
|
+
narrow: "",
|
|
84
|
+
default: "",
|
|
85
|
+
wide: ""
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
compoundVariants: [
|
|
89
|
+
...widthCompounds,
|
|
90
|
+
{ variant: "standard", selected: true, class: "text-primary" },
|
|
91
|
+
{ variant: "filled", selected: false, class: "bg-surface-container-highest text-primary" },
|
|
92
|
+
{
|
|
93
|
+
variant: "tonal",
|
|
94
|
+
selected: false,
|
|
95
|
+
class: "bg-surface-container-highest text-on-surface-variant"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
variant: "outlined",
|
|
99
|
+
selected: true,
|
|
100
|
+
class: [
|
|
101
|
+
"bg-inverse-surface text-inverse-on-surface border-transparent",
|
|
102
|
+
// M3 disabled + selected: faint on-surface/12 container, no outline
|
|
103
|
+
// (icon falls back to on-surface/38 from the variant). NOT transparent.
|
|
104
|
+
"disabled:bg-on-surface/12 disabled:border-transparent",
|
|
105
|
+
"data-[disabled]:bg-on-surface/12 data-[disabled]:border-transparent"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
defaultVariants: {
|
|
110
|
+
variant: "standard",
|
|
111
|
+
size: "s",
|
|
112
|
+
width: "default"
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
var IconButton = createIconButton(
|
|
116
|
+
({ variant, selected, size, width }) => iconButton({ variant, selected, size, width })
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
export { IconButton, iconButton };
|
|
120
|
+
//# sourceMappingURL=icon-button.js.map
|
|
121
|
+
//# sourceMappingURL=icon-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/icon-button.ts"],"names":[],"mappings":"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","file":"icon-button.js","sourcesContent":["/**\n * icon-button.ts — tailwind-variants resolver for the M3 Icon Button.\n *\n * 40×40 circular target with a centered icon. The `selected` variant supports\n * toggle icon buttons; when `selected` is undefined the variant's default\n * (filled/active) look is used. Emits the same DOM + ripple as the VE build.\n */\nimport { createIconButton } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\n// M3 Expressive container widths (px) per size × width. Tailwind v4's dynamic\n// spacing scale resolves any integer (e.g. w-13 = 52px, w-46 = 184px).\nconst WIDTHS = {\n xs: { narrow: 'w-7', default: 'w-8', wide: 'w-10' }, // 28 / 32 / 40\n s: { narrow: 'w-8', default: 'w-10', wide: 'w-13' }, // 32 / 40 / 52\n m: { narrow: 'w-12', default: 'w-14', wide: 'w-18' }, // 48 / 56 / 72\n l: { narrow: 'w-16', default: 'w-24', wide: 'w-32' }, // 64 / 96 / 128\n xl: { narrow: 'w-26', default: 'w-34', wide: 'w-46' }, // 104 / 136 / 184\n} as const;\n\nconst widthCompounds = Object.entries(WIDTHS).flatMap(([size, w]) =>\n Object.entries(w).map(([width, klass]) => ({\n size: size as keyof typeof WIDTHS,\n width: width as 'narrow' | 'default' | 'wide',\n class: klass,\n })),\n);\n\nexport const iconButton = tv({\n base: [\n 'relative inline-flex items-center justify-center shrink-0',\n 'rounded-full overflow-hidden cursor-pointer select-none border-0 bg-transparent',\n 'transition-[box-shadow,background-color,color] duration-200 ease-standard',\n // State layer overlay\n 'before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none',\n 'before:transition-opacity before:duration-100',\n 'hover:before:opacity-[var(--md-sys-state-hover)]',\n 'focus-visible:before:opacity-[var(--md-sys-state-focus)]',\n 'active:before:opacity-[var(--md-sys-state-pressed)]',\n 'data-[pressed]:before:opacity-[var(--md-sys-state-pressed)]',\n // Focus ring (M3: 3px secondary, 2px offset)\n 'focus-visible:outline-[3px] focus-visible:outline-offset-2 focus-visible:outline-secondary',\n // Disabled: no interaction, no state layer. Per-variant disabled colors\n // (container on-surface/12, icon on-surface/38) live on each variant.\n 'disabled:pointer-events-none disabled:before:opacity-0',\n 'data-[disabled]:pointer-events-none data-[disabled]:before:opacity-0',\n ],\n variants: {\n // Disabled icon is on-surface/38 for every variant; filled/tonal disabled\n // container is on-surface/12; outlined disabled outline is on-surface/12\n // (material-web parity).\n variant: {\n standard: [\n 'text-on-surface-variant',\n 'disabled:text-on-surface/38 data-[disabled]:text-on-surface/38',\n ],\n filled: [\n 'bg-primary text-on-primary',\n 'disabled:bg-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n tonal: [\n 'bg-secondary-container text-on-secondary-container',\n 'disabled:bg-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n outlined: [\n 'border border-outline text-on-surface-variant',\n 'disabled:border-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:border-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n },\n selected: {\n true: '',\n false: '',\n },\n // Container height + icon size per M3 Expressive size. Width comes from the\n // (size, width) compound variants below.\n size: {\n xs: 'h-8 [&>svg]:size-5',\n s: 'h-10 [&>svg]:size-6',\n m: 'h-14 [&>svg]:size-6',\n l: 'h-24 [&>svg]:size-8',\n xl: 'h-[136px] [&>svg]:size-10',\n },\n width: {\n narrow: '',\n default: '',\n wide: '',\n },\n },\n compoundVariants: [\n ...widthCompounds,\n { variant: 'standard', selected: true, class: 'text-primary' },\n { variant: 'filled', selected: false, class: 'bg-surface-container-highest text-primary' },\n {\n variant: 'tonal',\n selected: false,\n class: 'bg-surface-container-highest text-on-surface-variant',\n },\n {\n variant: 'outlined',\n selected: true,\n class: [\n 'bg-inverse-surface text-inverse-on-surface border-transparent',\n // M3 disabled + selected: faint on-surface/12 container, no outline\n // (icon falls back to on-surface/38 from the variant). NOT transparent.\n 'disabled:bg-on-surface/12 disabled:border-transparent',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:border-transparent',\n ],\n },\n ],\n defaultVariants: {\n variant: 'standard',\n size: 's',\n width: 'default',\n },\n});\n\nexport const IconButton = createIconButton(({ variant, selected, size, width }) =>\n iconButton({ variant, selected, size, width }),\n);\nexport type { IconButtonProps, IconButtonVariant } from '@m3-baseui/core';\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { Button, button } from './button.js';
|
|
2
|
+
export { IconButton, iconButton } from './icon-button.js';
|
|
3
|
+
export { Switch, switchTv } from './switch.js';
|
|
4
|
+
export { Checkbox, checkboxTv } from './checkbox.js';
|
|
5
|
+
export { Radio, RadioGroup, radioTv } from './radio.js';
|
|
6
|
+
export { Chip, chipTv } from './chip.js';
|
|
7
|
+
export { Tooltip, tooltipTv } from './tooltip.js';
|
|
8
|
+
export { Dialog, dialogTv } from './dialog.js';
|
|
9
|
+
export { Menu, menuTv } from './menu.js';
|
|
10
|
+
export { Tabs, tabsTv } from './tabs.js';
|
|
11
|
+
export { Slider, sliderTv } from './slider.js';
|
|
12
|
+
export { Select, selectTv } from './select.js';
|
|
13
|
+
export { TextField, textFieldTv } from './textfield.js';
|
|
14
|
+
export { NavigationBar, navigationBarTv } from './navigation-bar.js';
|
|
15
|
+
export { Fab, fabTv } from './fab.js';
|
|
16
|
+
export { Divider, dividerTv } from './divider.js';
|
|
17
|
+
export { Progress, circularTv, linearTv } from './progress.js';
|
|
18
|
+
export { List, listTv } from './list.js';
|
|
19
|
+
export { Snackbar, snackbarTv } from './snackbar.js';
|
|
20
|
+
export { Item, itemTv } from './item.js';
|
|
21
|
+
export { Badge, badgeTv } from './badge.js';
|
|
22
|
+
export { Card, cardTv } from './card.js';
|
|
23
|
+
export { SegmentedButton, segmentedButtonTv } from './segmented-button.js';
|
|
24
|
+
export { NavigationDrawer, navigationDrawerTv } from './navigation-drawer.js';
|
|
25
|
+
export { BadgeProps, BadgeSize, ButtonProps, ButtonVariant, CardProps, CardVariant, ChipProps, ChipVariant, CircularProgressProps, ContrastLevel, DividerInset, DividerOrientation, DividerProps, FabColor, FabProps, FabSize, IconButtonProps, IconButtonVariant, ItemProps, LinearProgressProps, ListItemLines, ListItemProps, NavigationDrawerVariant, Ripple, SchemeVariant, TabsVariant, TextFieldProps, TextFieldVariant, ThemeMode, ThemeProvider, ThemeProviderProps, applyScheme, generateScheme, schemeToCssText, useSnackbar, useTheme } from '@m3-baseui/core';
|
|
26
|
+
import '@base-ui/react';
|
|
27
|
+
import 'react';
|
|
28
|
+
import 'tailwind-variants';
|
|
29
|
+
import 'tailwind-variants/dist/config.js';
|