@m3e/switch 1.0.0-rc.1

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.
Files changed (45) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +174 -0
  3. package/cem.config.mjs +16 -0
  4. package/demo/index.html +65 -0
  5. package/dist/css-custom-data.json +352 -0
  6. package/dist/custom-elements.json +633 -0
  7. package/dist/html-custom-data.json +38 -0
  8. package/dist/index.js +774 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/index.min.js +399 -0
  11. package/dist/index.min.js.map +1 -0
  12. package/dist/src/SwitchElement.d.ts +147 -0
  13. package/dist/src/SwitchElement.d.ts.map +1 -0
  14. package/dist/src/SwitchIcons.d.ts +3 -0
  15. package/dist/src/SwitchIcons.d.ts.map +1 -0
  16. package/dist/src/index.d.ts +3 -0
  17. package/dist/src/index.d.ts.map +1 -0
  18. package/dist/src/styles/SwitchHandleStyle.d.ts +6 -0
  19. package/dist/src/styles/SwitchHandleStyle.d.ts.map +1 -0
  20. package/dist/src/styles/SwitchIconStyle.d.ts +6 -0
  21. package/dist/src/styles/SwitchIconStyle.d.ts.map +1 -0
  22. package/dist/src/styles/SwitchStateLayerStyle.d.ts +6 -0
  23. package/dist/src/styles/SwitchStateLayerStyle.d.ts.map +1 -0
  24. package/dist/src/styles/SwitchStyle.d.ts +6 -0
  25. package/dist/src/styles/SwitchStyle.d.ts.map +1 -0
  26. package/dist/src/styles/SwitchToken.d.ts +76 -0
  27. package/dist/src/styles/SwitchToken.d.ts.map +1 -0
  28. package/dist/src/styles/SwitchTrackStyle.d.ts +6 -0
  29. package/dist/src/styles/SwitchTrackStyle.d.ts.map +1 -0
  30. package/dist/src/styles/index.d.ts +6 -0
  31. package/dist/src/styles/index.d.ts.map +1 -0
  32. package/eslint.config.mjs +13 -0
  33. package/package.json +48 -0
  34. package/rollup.config.js +32 -0
  35. package/src/SwitchElement.ts +268 -0
  36. package/src/SwitchIcons.ts +2 -0
  37. package/src/index.ts +2 -0
  38. package/src/styles/SwitchHandleStyle.ts +140 -0
  39. package/src/styles/SwitchIconStyle.ts +89 -0
  40. package/src/styles/SwitchStateLayerStyle.ts +43 -0
  41. package/src/styles/SwitchStyle.ts +30 -0
  42. package/src/styles/SwitchToken.ts +145 -0
  43. package/src/styles/SwitchTrackStyle.ts +104 -0
  44. package/src/styles/index.ts +5 -0
  45. package/tsconfig.json +9 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 matraic
4
+ Contact: matraic@yahoo.com
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,174 @@
1
+ # @m3e/switch
2
+
3
+ The `m3e-switch` component is a semantic, accessible toggle control that reflects a binary state. Designed according to Material Design 3 guidelines, it supports shape transitions, and adaptive color theming across selected, unselected, and disabled states. The component responds to user interaction with smooth motion and expressive feedback. It supports optional icons (`none`, `selected`, or `both`) and integrates with form-associated behavior, emitting `input` and `change` events when toggled.
4
+
5
+ > **Part of the [M3E](../../README.md) monorepo**
6
+ > This package is maintained within the unified M3E repository, which provides a suite of Material 3 web components.
7
+
8
+ ## 📦 Installation
9
+
10
+ ```bash
11
+ npm install @m3e/switch
12
+ ```
13
+
14
+ ## 💻 Editor Integration
15
+
16
+ This package includes a [Custom Elements Manifest](https://github.com/webcomponents/custom-elements-manifest) to support enhanced editor tooling and developer experience.
17
+
18
+ ### Visual Studio Code
19
+
20
+ To enable autocomplete and hover documentation for `@m3e/switch`, install the [Custom Elements Manifest Language Server](https://marketplace.visualstudio.com/items?itemName=pwrs.cem-language-server-vscode) extension. It will automatically detect the manifest bundled with this package and surface tag names, attributes, slots, and events in supported files.
21
+
22
+ Alternately, you can explicitly reference the `html-custom-data.json` and `css-custom-data.json` in your workspace settings:
23
+
24
+ ```json
25
+ {
26
+ "html.customData": ["./node_modules/@m3e/switch/dist/html-custom-data.json"],
27
+ "css.customData": ["./node_modules/@m3e/switch/dist/css-custom-data.json"]
28
+ }
29
+ ```
30
+
31
+ ## 🚀 Browser Usage
32
+
33
+ This package uses [JavaScript Modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#module_specifiers). To use it directly in a browser without a bundler, use a module script similar to the following.
34
+
35
+ ```html
36
+ <script type="module" src="/node_modules/@m3e/switch/dist/index.js"></script>
37
+ ```
38
+
39
+ In addition, you must use an [import map](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/script/type/importmap) to include dependencies.
40
+
41
+ ```html
42
+ <script type="importmap">
43
+ {
44
+ "imports": {
45
+ "lit": "https://cdn.jsdelivr.net/npm/lit@3.3.0/+esm",
46
+ "@m3e/core": "/node_modules/@m3e/core/dist/index.js"
47
+ }
48
+ }
49
+ </script>
50
+ ```
51
+
52
+ > For production, use index.min.js for faster load times.
53
+
54
+ ## 🗂️ Elements
55
+
56
+ - `m3e-switch` — An on/off control that can be toggled by clicking.
57
+
58
+ ## 🧪 Examples
59
+
60
+ The following example illustrates a switch wrapped by a `label`.
61
+
62
+ ```html
63
+ <label>Switch label&nbsp;<m3e-switch></m3e-switch></label>
64
+ ```
65
+
66
+ By default, icons are not presented. Use the `icons` attribute to control which icons to show. The next example illustrates showing both the unselected and selected icons.
67
+
68
+ ```html
69
+ <label>Switch label&nbsp;<m3e-switch icons="both"></m3e-switch></label>
70
+ ```
71
+
72
+ ## 📖 API Reference
73
+
74
+ This section details the attributes, events and CSS custom properties available for the `m3e-switch` component.
75
+
76
+ ### ⚙️ Attributes
77
+
78
+ | Attribute | Type | Default | Description |
79
+ | ---------- | ------------------------------------ | -------- | ------------------------------------------------------------------------- |
80
+ | `checked` | `boolean` | `false` | Whether the element is checked. |
81
+ | `disabled` | `boolean` | `false` | Whether the element is disabled. |
82
+ | `icons` | `"none"` \| `"selected"` \| `"both"` | `"none"` | The icons to present. |
83
+ | `name` | `string` | | The name that identifies the element when submitting the associated form. |
84
+ | `value` | `string` | `"on"` | A string representing the value of the switch. |
85
+ | `icons` | `boolean` | `false` | Whether to present icons. |
86
+
87
+ #### 🔔 Events
88
+
89
+ | Event | Description |
90
+ | -------- | --------------------------------------- |
91
+ | `input` | Emitted when the checked state changes. |
92
+ | `change` | Emitted when the checked state changes. |
93
+
94
+ ### 🎛️ CSS Custom Properties
95
+
96
+ | Property | Description |
97
+ | ------------------------------------------------------ | ----------------------------------------------- |
98
+ | `--m3e-switch-selected-icon-color` | Icon color when selected |
99
+ | `--m3e-switch-selected-icon-size` | Icon size when selected |
100
+ | `--m3e-switch-unselected-icon-color` | Icon color when unselected |
101
+ | `--m3e-switch-unselected-icon-size` | Icon size when unselected |
102
+ | `--m3e-switch-track-height` | Track height |
103
+ | `--m3e-switch-track-width` | Track width |
104
+ | `--m3e-switch-track-outline-color` | Track outline color |
105
+ | `--m3e-switch-track-outline-width` | Track outline thickness |
106
+ | `--m3e-switch-track-shape` | Track corner shape |
107
+ | `--m3e-switch-selected-track-color` | Track color when selected |
108
+ | `--m3e-switch-unselected-track-color` | Track color when unselected |
109
+ | `--m3e-switch-unselected-handle-height` | Handle height when unselected |
110
+ | `--m3e-switch-unselected-handle-width` | Handle width when unselected |
111
+ | `--m3e-switch-with-icon-handle-height` | Handle height when icons are present |
112
+ | `--m3e-switch-with-icon-handle-width` | Handle width when icons are present |
113
+ | `--m3e-switch-selected-handle-height` | Handle height when selected |
114
+ | `--m3e-switch-selected-handle-width` | Handle width when selected |
115
+ | `--m3e-switch-pressed-handle-height` | Handle height when pressed |
116
+ | `--m3e-switch-pressed-handle-width` | Handle width when pressed |
117
+ | `--m3e-switch-handle-shape` | Handle corner shape |
118
+ | `--m3e-switch-selected-handle-color` | Handle color when selected |
119
+ | `--m3e-switch-unselected-handle-color` | Handle color when unselected |
120
+ | `--m3e-switch-state-layer-size` | Diameter of the state layer overlay |
121
+ | `--m3e-switch-state-layer-shape` | Corner shape of the state layer |
122
+ | `--m3e-switch-disabled-selected-icon-color` | Icon color when selected and disabled |
123
+ | `--m3e-switch-disabled-selected-icon-opacity` | Icon opacity when selected and disabled |
124
+ | `--m3e-switch-disabled-unselected-icon-color` | Icon color when unselected and disabled |
125
+ | `--m3e-switch-disabled-unselected-icon-opacity` | Icon opacity when unselected and disabled |
126
+ | `--m3e-switch-disabled-track-opacity` | Track opacity when disabled |
127
+ | `--m3e-switch-disabled-selected-track-color` | Track color when selected and disabled |
128
+ | `--m3e-switch-disabled-unselected-track-color` | Track color when unselected and disabled |
129
+ | `--m3e-switch-disabled-unselected-track-outline-color` | Outline color when unselected and disabled |
130
+ | `--m3e-switch-disabled-unselected-handle-opacity` | Handle opacity when unselected and disabled |
131
+ | `--m3e-switch-disabled-selected-handle-opacity` | Handle opacity when selected and disabled |
132
+ | `--m3e-switch-disabled-selected-handle-color` | Handle color when selected and disabled |
133
+ | `--m3e-switch-disabled-unselected-handle-color` | Handle color when unselected and disabled |
134
+ | `--m3e-switch-selected-hover-icon-color` | Icon color when selected and hovered |
135
+ | `--m3e-switch-unselected-hover-icon-color` | Icon color when unselected and hovered |
136
+ | `--m3e-switch-selected-hover-track-color` | Track color when selected and hovered |
137
+ | `--m3e-switch-selected-hover-state-layer-color` | State layer color when selected and hovered |
138
+ | `--m3e-switch-selected-hover-state-layer-opacity` | State layer opacity when selected and hovered |
139
+ | `--m3e-switch-unselected-hover-track-color` | Track color when unselected and hovered |
140
+ | `--m3e-switch-unselected-hover-track-outline-color` | Outline color when unselected and hovered |
141
+ | `--m3e-switch-unselected-hover-state-layer-color` | State layer color when unselected and hovered |
142
+ | `--m3e-switch-unselected-hover-state-layer-opacity` | State layer opacity when unselected and hovered |
143
+ | `--m3e-switch-selected-hover-handle-color` | Handle color when selected and hovered |
144
+ | `--m3e-switch-unselected-hover-handle-color` | Handle color when unselected and hovered |
145
+ | `--m3e-switch-selected-focus-icon-color` | Icon color when selected and focused |
146
+ | `--m3e-switch-unselected-focus-icon-color` | Icon color when unselected and focused |
147
+ | `--m3e-switch-selected-focus-track-color` | Track color when selected and focused |
148
+ | `--m3e-switch-selected-focus-state-layer-color` | State layer color when selected and focused |
149
+ | `--m3e-switch-selected-focus-state-layer-opacity` | State layer opacity when selected and focused |
150
+ | `--m3e-switch-unselected-focus-track-color` | Track color when unselected and focused |
151
+ | `--m3e-switch-unselected-focus-track-outline-color` | Outline color when unselected and focused |
152
+ | `--m3e-switch-unselected-focus-state-layer-color` | State layer color when unselected and focused |
153
+ | `--m3e-switch-unselected-focus-state-layer-opacity` | State layer opacity when unselected and focused |
154
+ | `--m3e-switch-selected-focus-handle-color` | Handle color when selected and focused |
155
+ | `--m3e-switch-unselected-focus-handle-color` | Handle color when unselected and focused |
156
+ | `--m3e-switch-selected-pressed-icon-color` | Icon color when selected and pressed |
157
+ | `--m3e-switch-unselected-pressed-icon-color` | Icon color when unselected and pressed |
158
+ | `--m3e-switch-selected-pressed-track-color` | Track color when selected and pressed |
159
+ | `--m3e-switch-selected-pressed-state-layer-color` | State layer color when selected and pressed |
160
+ | `--m3e-switch-selected-pressed-state-layer-opacity` | State layer opacity when selected and pressed |
161
+ | `--m3e-switch-unselected-pressed-track-color` | Track color when unselected and pressed |
162
+ | `--m3e-switch-unselected-pressed-track-outline-color` | Outline color when unselected and pressed |
163
+ | `--m3e-switch-unselected-pressed-state-layer-color` | State layer color when unselected and pressed |
164
+ | `--m3e-switch-unselected-pressed-state-layer-opacity` | State layer opacity when unselected and pressed |
165
+ | `--m3e-switch-selected-pressed-handle-color` | Handle color when selected and pressed |
166
+ | `--m3e-switch-unselected-pressed-handle-color` | Handle color when unselected and pressed |
167
+
168
+ ## 🤝 Contributing
169
+
170
+ See the root monorepo `CONTRIBUTING.md` for guidelines on contributing to this package.
171
+
172
+ ## 📄 License
173
+
174
+ This package is licensed under the MIT License.
package/cem.config.mjs ADDED
@@ -0,0 +1,16 @@
1
+ import { customElementVsCodePlugin } from "custom-element-vs-code-integration";
2
+
3
+ export default {
4
+ globs: ["src/**/*.ts"],
5
+ exclude: ["src/**/*.spec.ts"],
6
+ packagejson: true,
7
+ outdir: "dist",
8
+ litelement: true,
9
+ plugins: [
10
+ customElementVsCodePlugin({
11
+ outdir: "dist",
12
+ htmlFileName: "html-custom-data.json",
13
+ cssFileName: "css-custom-data.json",
14
+ }),
15
+ ],
16
+ };
@@ -0,0 +1,65 @@
1
+ <!doctype html>
2
+ <html lang="en" style="overflow-y: auto">
3
+ <head>
4
+ <title>Switch for M3E</title>
5
+ <meta charset="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <meta name="description" content="Switch for M3E" />
8
+ <base href="./" />
9
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
11
+ <link
12
+ href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap"
13
+ rel="stylesheet"
14
+ />
15
+ <link
16
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0..1,0"
17
+ rel="stylesheet"
18
+ />
19
+ <script type="importmap">
20
+ {
21
+ "imports": {
22
+ "lit": "https://cdn.jsdelivr.net/npm/lit@3.3.0/+esm",
23
+ "@m3e/core": "../../core/dist/index.min.js"
24
+ }
25
+ }
26
+ </script>
27
+ <script type="module" src="../../theme/dist/index.min.js"></script>
28
+ <script type="module" src="../dist/index.min.js"></script>
29
+ <style>
30
+ body {
31
+ font-family: "Roboto";
32
+ }
33
+ *:not(:defined) {
34
+ display: none;
35
+ }
36
+ label {
37
+ display: inline-flex;
38
+ align-items: center;
39
+ justify-content: space-between;
40
+ width: 400px;
41
+ margin-bottom: 1rem;
42
+ }
43
+ </style>
44
+ </head>
45
+ <body>
46
+ <m3e-theme strong-focus motion="expressive">
47
+ <label>Without icons<m3e-switch></m3e-switch></label>
48
+ <br />
49
+ <label>With icons<m3e-switch icons="both"></m3e-switch></label>
50
+ <br />
51
+ <label>With selected icon<m3e-switch icons="selected"></m3e-switch></label>
52
+ <label>Disabled without icons<m3e-switch disabled></m3e-switch></label>
53
+ <br />
54
+ <label>Disabled without icons checked<m3e-switch checked disabled></m3e-switch></label>
55
+ <br />
56
+ <label>Disabled with icons<m3e-switch icons="both" disabled></m3e-switch></label>
57
+ <br />
58
+ <label>Disabled with icons checked<m3e-switch icons="both" checked disabled></m3e-switch></label>
59
+ <br />
60
+ <label>Disabled with selected icon<m3e-switch icons="selected" disabled></m3e-switch></label>
61
+ <br />
62
+ <label>Disabled with selected icon checked<m3e-switch icons="selected" checked disabled></m3e-switch></label>
63
+ </m3e-theme>
64
+ </body>
65
+ </html>
@@ -0,0 +1,352 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/microsoft/vscode-css-languageservice/main/docs/customData.schema.json",
3
+ "version": 1.1,
4
+ "properties": [
5
+ {
6
+ "name": "--m3e-switch-selected-icon-color",
7
+ "description": "Color of the icon when the switch is selected.",
8
+ "values": []
9
+ },
10
+ {
11
+ "name": "--m3e-switch-selected-icon-size",
12
+ "description": "Size of the icon in the selected state.",
13
+ "values": []
14
+ },
15
+ {
16
+ "name": "--m3e-switch-unselected-icon-color",
17
+ "description": "Color of the icon when the switch is unselected.",
18
+ "values": []
19
+ },
20
+ {
21
+ "name": "--m3e-switch-unselected-icon-size",
22
+ "description": "Size of the icon in the unselected state.",
23
+ "values": []
24
+ },
25
+ {
26
+ "name": "--m3e-switch-track-height",
27
+ "description": "Height of the switch track.",
28
+ "values": []
29
+ },
30
+ {
31
+ "name": "--m3e-switch-track-width",
32
+ "description": "Width of the switch track.",
33
+ "values": []
34
+ },
35
+ {
36
+ "name": "--m3e-switch-track-outline-color",
37
+ "description": "Color of the track’s outline.",
38
+ "values": []
39
+ },
40
+ {
41
+ "name": "--m3e-switch-track-outline-width",
42
+ "description": "Thickness of the track’s outline.",
43
+ "values": []
44
+ },
45
+ {
46
+ "name": "--m3e-switch-track-shape",
47
+ "description": "Corner shape of the track.",
48
+ "values": []
49
+ },
50
+ {
51
+ "name": "--m3e-switch-selected-track-color",
52
+ "description": "Track color when selected.",
53
+ "values": []
54
+ },
55
+ {
56
+ "name": "--m3e-switch-unselected-track-color",
57
+ "description": "Track color when unselected.",
58
+ "values": []
59
+ },
60
+ {
61
+ "name": "--m3e-switch-unselected-handle-height",
62
+ "description": "Height of the handle when unselected.",
63
+ "values": []
64
+ },
65
+ {
66
+ "name": "--m3e-switch-unselected-handle-width",
67
+ "description": "Width of the handle when unselected.",
68
+ "values": []
69
+ },
70
+ {
71
+ "name": "--m3e-switch-with-icon-handle-height",
72
+ "description": "Height of the handle when icons are present.",
73
+ "values": []
74
+ },
75
+ {
76
+ "name": "--m3e-switch-with-icon-handle-width",
77
+ "description": "Width of the handle when icons are present.",
78
+ "values": []
79
+ },
80
+ {
81
+ "name": "--m3e-switch-selected-handle-height",
82
+ "description": "Height of the handle when selected.",
83
+ "values": []
84
+ },
85
+ {
86
+ "name": "--m3e-switch-selected-handle-width",
87
+ "description": "Width of the handle when selected.",
88
+ "values": []
89
+ },
90
+ {
91
+ "name": "--m3e-switch-pressed-handle-height",
92
+ "description": "Height of the handle during press.",
93
+ "values": []
94
+ },
95
+ {
96
+ "name": "--m3e-switch-pressed-handle-width",
97
+ "description": "Width of the handle during press.",
98
+ "values": []
99
+ },
100
+ {
101
+ "name": "--m3e-switch-handle-shape",
102
+ "description": "Corner shape of the handle.",
103
+ "values": []
104
+ },
105
+ {
106
+ "name": "--m3e-switch-selected-handle-color",
107
+ "description": "Handle color when selected.",
108
+ "values": []
109
+ },
110
+ {
111
+ "name": "--m3e-switch-unselected-handle-color",
112
+ "description": "Handle color when unselected.",
113
+ "values": []
114
+ },
115
+ {
116
+ "name": "--m3e-switch-state-layer-size",
117
+ "description": "Diameter of the state layer overlay.",
118
+ "values": []
119
+ },
120
+ {
121
+ "name": "--m3e-switch-state-layer-shape",
122
+ "description": "Corner shape of the state layer.",
123
+ "values": []
124
+ },
125
+ {
126
+ "name": "--m3e-switch-disabled-selected-icon-color",
127
+ "description": "Icon color when selected and disabled.",
128
+ "values": []
129
+ },
130
+ {
131
+ "name": "--m3e-switch-disabled-selected-icon-opacity",
132
+ "description": "Icon opacity when selected and disabled.",
133
+ "values": []
134
+ },
135
+ {
136
+ "name": "--m3e-switch-disabled-unselected-icon-color",
137
+ "description": "Icon color when unselected and disabled.",
138
+ "values": []
139
+ },
140
+ {
141
+ "name": "--m3e-switch-disabled-unselected-icon-opacity",
142
+ "description": "Icon opacity when unselected and disabled.",
143
+ "values": []
144
+ },
145
+ {
146
+ "name": "--m3e-switch-disabled-track-opacity",
147
+ "description": "Track opacity when disabled.",
148
+ "values": []
149
+ },
150
+ {
151
+ "name": "--m3e-switch-disabled-selected-track-color",
152
+ "description": "Track color when selected and disabled.",
153
+ "values": []
154
+ },
155
+ {
156
+ "name": "--m3e-switch-disabled-unselected-track-color",
157
+ "description": "Track color when unselected and disabled.",
158
+ "values": []
159
+ },
160
+ {
161
+ "name": "--m3e-switch-disabled-unselected-track-outline-color",
162
+ "description": "Outline color when unselected and disabled.",
163
+ "values": []
164
+ },
165
+ {
166
+ "name": "--m3e-switch-disabled-unselected-handle-opacity",
167
+ "description": "Handle opacity when unselected and disabled.",
168
+ "values": []
169
+ },
170
+ {
171
+ "name": "--m3e-switch-disabled-selected-handle-opacity",
172
+ "description": "Handle opacity when selected and disabled.",
173
+ "values": []
174
+ },
175
+ {
176
+ "name": "--m3e-switch-disabled-selected-handle-color",
177
+ "description": "Handle color when selected and disabled.",
178
+ "values": []
179
+ },
180
+ {
181
+ "name": "--m3e-switch-disabled-unselected-handle-color",
182
+ "description": "Handle color when unselected and disabled.",
183
+ "values": []
184
+ },
185
+ {
186
+ "name": "--m3e-switch-selected-hover-icon-color",
187
+ "description": "Icon color when selected and hovered.",
188
+ "values": []
189
+ },
190
+ {
191
+ "name": "--m3e-switch-unselected-hover-icon-color",
192
+ "description": "Icon color when unselected and hovered.",
193
+ "values": []
194
+ },
195
+ {
196
+ "name": "--m3e-switch-selected-hover-track-color",
197
+ "description": "Track color when selected and hovered.",
198
+ "values": []
199
+ },
200
+ {
201
+ "name": "--m3e-switch-selected-hover-state-layer-color",
202
+ "description": "State layer color when selected and hovered.",
203
+ "values": []
204
+ },
205
+ {
206
+ "name": "--m3e-switch-selected-hover-state-layer-opacity",
207
+ "description": "State layer opacity when selected and hovered.",
208
+ "values": []
209
+ },
210
+ {
211
+ "name": "--m3e-switch-unselected-hover-track-color",
212
+ "description": "Track color when unselected and hovered.",
213
+ "values": []
214
+ },
215
+ {
216
+ "name": "--m3e-switch-unselected-hover-track-outline-color",
217
+ "description": "Outline color when unselected and hovered.",
218
+ "values": []
219
+ },
220
+ {
221
+ "name": "--m3e-switch-unselected-hover-state-layer-color",
222
+ "description": "State layer color when unselected and hovered.",
223
+ "values": []
224
+ },
225
+ {
226
+ "name": "--m3e-switch-unselected-hover-state-layer-opacity",
227
+ "description": "State layer opacity when unselected and hovered.",
228
+ "values": []
229
+ },
230
+ {
231
+ "name": "--m3e-switch-selected-hover-handle-color",
232
+ "description": "Handle color when selected and hovered.",
233
+ "values": []
234
+ },
235
+ {
236
+ "name": "--m3e-switch-unselected-hover-handle-color",
237
+ "description": "Handle color when unselected and hovered.",
238
+ "values": []
239
+ },
240
+ {
241
+ "name": "--m3e-switch-selected-focus-icon-color",
242
+ "description": "Icon color when selected and focused.",
243
+ "values": []
244
+ },
245
+ {
246
+ "name": "--m3e-switch-unselected-focus-icon-color",
247
+ "description": "Icon color when unselected and focused.",
248
+ "values": []
249
+ },
250
+ {
251
+ "name": "--m3e-switch-selected-focus-track-color",
252
+ "description": "Track color when selected and focused.",
253
+ "values": []
254
+ },
255
+ {
256
+ "name": "--m3e-switch-selected-focus-state-layer-color",
257
+ "description": "State layer color when selected and focused.",
258
+ "values": []
259
+ },
260
+ {
261
+ "name": "--m3e-switch-selected-focus-state-layer-opacity",
262
+ "description": "State layer opacity when selected and focused.",
263
+ "values": []
264
+ },
265
+ {
266
+ "name": "--m3e-switch-unselected-focus-track-color",
267
+ "description": "Track color when unselected and focused.",
268
+ "values": []
269
+ },
270
+ {
271
+ "name": "--m3e-switch-unselected-focus-track-outline-color",
272
+ "description": "Outline color when unselected and focused.",
273
+ "values": []
274
+ },
275
+ {
276
+ "name": "--m3e-switch-unselected-focus-state-layer-color",
277
+ "description": "State layer color when unselected and focused.",
278
+ "values": []
279
+ },
280
+ {
281
+ "name": "--m3e-switch-unselected-focus-state-layer-opacity",
282
+ "description": "State layer opacity when unselected and focused.",
283
+ "values": []
284
+ },
285
+ {
286
+ "name": "--m3e-switch-selected-focus-handle-color",
287
+ "description": "Handle color when selected and focused.",
288
+ "values": []
289
+ },
290
+ {
291
+ "name": "--m3e-switch-unselected-focus-handle-color",
292
+ "description": "Handle color when unselected and focused.",
293
+ "values": []
294
+ },
295
+ {
296
+ "name": "--m3e-switch-selected-pressed-icon-color",
297
+ "description": "Icon color when selected and pressed.",
298
+ "values": []
299
+ },
300
+ {
301
+ "name": "--m3e-switch-unselected-pressed-icon-color",
302
+ "description": "Icon color when unselected and pressed.",
303
+ "values": []
304
+ },
305
+ {
306
+ "name": "--m3e-switch-selected-pressed-track-color",
307
+ "description": "Track color when selected and pressed.",
308
+ "values": []
309
+ },
310
+ {
311
+ "name": "--m3e-switch-selected-pressed-state-layer-color",
312
+ "description": "State layer color when selected and pressed.",
313
+ "values": []
314
+ },
315
+ {
316
+ "name": "--m3e-switch-selected-pressed-state-layer-opacity",
317
+ "description": "State layer opacity when selected and pressed.",
318
+ "values": []
319
+ },
320
+ {
321
+ "name": "--m3e-switch-unselected-pressed-track-color",
322
+ "description": "Track color when unselected and pressed.",
323
+ "values": []
324
+ },
325
+ {
326
+ "name": "--m3e-switch-unselected-pressed-track-outline-color",
327
+ "description": "Outline color when unselected and pressed.",
328
+ "values": []
329
+ },
330
+ {
331
+ "name": "--m3e-switch-unselected-pressed-state-layer-color",
332
+ "description": "State layer color when unselected and pressed.",
333
+ "values": []
334
+ },
335
+ {
336
+ "name": "--m3e-switch-unselected-pressed-state-layer-opacity",
337
+ "description": "State layer opacity when unselected and pressed.",
338
+ "values": []
339
+ },
340
+ {
341
+ "name": "--m3e-switch-selected-pressed-handle-color",
342
+ "description": "Handle color when selected and pressed.",
343
+ "values": []
344
+ },
345
+ {
346
+ "name": "--m3e-switch-unselected-pressed-handle-color",
347
+ "description": "Handle color when unselected and pressed.",
348
+ "values": []
349
+ }
350
+ ],
351
+ "pseudoElements": []
352
+ }