@marwes-ui/presets 0.0.4 → 1.0.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 (47) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +271 -47
  3. package/dist/chunk-2JNIKK66.js +21 -0
  4. package/dist/chunk-2JNIKK66.js.map +1 -0
  5. package/dist/firstEdition/index.d.ts +3 -3
  6. package/dist/firstEdition/index.js +1 -1
  7. package/dist/index.d.ts +2 -2
  8. package/dist/index.js +1 -1
  9. package/package.json +15 -9
  10. package/src/firstEdition/accordion.css +140 -0
  11. package/src/firstEdition/avatar.css +204 -0
  12. package/src/firstEdition/badge.css +139 -0
  13. package/src/firstEdition/button.css +219 -0
  14. package/src/firstEdition/card.css +136 -0
  15. package/src/firstEdition/checkbox.css +214 -0
  16. package/src/firstEdition/dialog.css +149 -0
  17. package/src/firstEdition/divider.css +37 -0
  18. package/src/firstEdition/icon.css +72 -0
  19. package/src/firstEdition/index.ts +19 -0
  20. package/src/firstEdition/input-otp.css +107 -0
  21. package/src/firstEdition/input.css +73 -0
  22. package/src/firstEdition/molecules/accordion-field.css +46 -0
  23. package/src/firstEdition/molecules/checkbox-field.css +53 -0
  24. package/src/firstEdition/molecules/checkbox-group-field.css +67 -0
  25. package/src/firstEdition/molecules/dialog-modal.css +34 -0
  26. package/src/firstEdition/molecules/input-field.css +260 -0
  27. package/src/firstEdition/molecules/radio-group-field.css +59 -0
  28. package/src/firstEdition/molecules/slider-field.css +83 -0
  29. package/src/firstEdition/molecules/switch-field.css +37 -0
  30. package/src/firstEdition/molecules/tab-group.css +26 -0
  31. package/src/firstEdition/molecules/toast-container.css +45 -0
  32. package/src/firstEdition/radio.css +121 -0
  33. package/src/firstEdition/rich-text.css +134 -0
  34. package/src/firstEdition/select.css +337 -0
  35. package/src/firstEdition/slider.css +228 -0
  36. package/src/firstEdition/spacing.css +6 -0
  37. package/src/firstEdition/spinner.css +94 -0
  38. package/src/firstEdition/styles.css +27 -0
  39. package/src/firstEdition/switch.css +156 -0
  40. package/src/firstEdition/tab.css +81 -0
  41. package/src/firstEdition/textarea.css +63 -0
  42. package/src/firstEdition/toast.css +318 -0
  43. package/src/firstEdition/tokens.css +35 -0
  44. package/src/firstEdition/tooltip.css +112 -0
  45. package/src/firstEdition/typography.css +33 -0
  46. package/dist/chunk-UJIVT75P.js +0 -26
  47. package/dist/chunk-UJIVT75P.js.map +0 -1
@@ -0,0 +1,228 @@
1
+ /*
2
+ * Slider Component Styles
3
+ *
4
+ * Figma references:
5
+ * - .figma/marwes/components/slider.json
6
+ * - .figma/marwes/components/slider-field.json
7
+ * - .figma/marwes/pages/-v2-slider/component-container_1574-26984.json
8
+ */
9
+
10
+ .mw-slider {
11
+ --mw-slider-fill-percentage: 50%;
12
+ --mw-slider-track-height: 5px;
13
+ --mw-slider-thumb-size: 16px;
14
+ --mw-slider-touch-area-size: 32px;
15
+ --mw-slider-tooltip-gap: 2px;
16
+ --mw-slider-track-background: var(--mw-color-border-subtle, #c2c2c2);
17
+ --mw-slider-track-fill: var(--mw-color-primary-base, #2f31fc);
18
+ --mw-slider-thumb-background: var(--mw-color-surface, #ffffff);
19
+ --mw-slider-thumb-border: var(--mw-color-primary-base, #2f31fc);
20
+ --mw-slider-touch-area-background: var(--mw-color-primary-base, #2f31fc);
21
+ --mw-slider-tooltip-background: var(--mw-color-text, #141414);
22
+ --mw-slider-tooltip-color: var(--mw-color-text-inverted, #ffffff);
23
+ --mw-slider-focus-ring-inner: var(--mw-color-surface, #ffffff);
24
+ --mw-slider-focus-ring-outer: var(--mw-color-primary-base, #2f31fc);
25
+
26
+ position: relative;
27
+ display: inline-grid;
28
+ width: 232px;
29
+ max-width: 100%;
30
+ margin: 0;
31
+ padding: 0;
32
+ font-family: var(--mw-font-primary, inherit);
33
+ overflow: visible;
34
+ }
35
+
36
+ .mw-slider__control {
37
+ position: relative;
38
+ width: 100%;
39
+ height: var(--mw-slider-touch-area-size);
40
+ }
41
+
42
+ .mw-slider__native {
43
+ position: absolute;
44
+ inset: 0;
45
+ width: 100%;
46
+ height: 100%;
47
+ margin: 0;
48
+ opacity: 0;
49
+ cursor: pointer;
50
+ z-index: 3;
51
+ }
52
+
53
+ .mw-slider__visual {
54
+ position: absolute;
55
+ inset: 0;
56
+ pointer-events: none;
57
+ }
58
+
59
+ .mw-slider__track,
60
+ .mw-slider__fill {
61
+ position: absolute;
62
+ top: 50%;
63
+ height: var(--mw-slider-track-height);
64
+ transform: translateY(-50%);
65
+ }
66
+
67
+ .mw-slider__track {
68
+ left: 0;
69
+ right: 0;
70
+ border-radius: 4px;
71
+ background: var(--mw-slider-track-background);
72
+ }
73
+
74
+ .mw-slider__fill {
75
+ left: 0;
76
+ width: var(--mw-slider-fill-percentage);
77
+ border-radius: 3px;
78
+ background: var(--mw-slider-track-fill);
79
+ }
80
+
81
+ .mw-slider__touch-area,
82
+ .mw-slider__thumb,
83
+ .mw-slider__tooltip {
84
+ position: absolute;
85
+ left: var(--mw-slider-fill-percentage);
86
+ }
87
+
88
+ .mw-slider__touch-area,
89
+ .mw-slider__thumb {
90
+ top: 50%;
91
+ transform: translate(-50%, -50%);
92
+ border-radius: 999px;
93
+ }
94
+
95
+ .mw-slider__touch-area {
96
+ width: var(--mw-slider-touch-area-size);
97
+ height: var(--mw-slider-touch-area-size);
98
+ background: var(--mw-slider-touch-area-background);
99
+ opacity: 0;
100
+ transition: opacity 150ms ease;
101
+ }
102
+
103
+ .mw-slider__thumb {
104
+ box-sizing: border-box;
105
+ width: var(--mw-slider-thumb-size);
106
+ height: var(--mw-slider-thumb-size);
107
+ border: 1.5px solid var(--mw-slider-thumb-border);
108
+ background: var(--mw-slider-thumb-background);
109
+ transition: box-shadow 150ms ease, border-color 150ms ease;
110
+ }
111
+
112
+ .mw-slider__tooltip {
113
+ bottom: calc(100% + var(--mw-slider-tooltip-gap));
114
+ transform: translateX(-50%);
115
+ min-width: 2rem;
116
+ padding: 8px 12px;
117
+ border-radius: 4px;
118
+ background: var(--mw-slider-tooltip-background);
119
+ color: var(--mw-slider-tooltip-color);
120
+ font-size: 12px;
121
+ font-weight: 400;
122
+ line-height: 16px;
123
+ text-align: center;
124
+ pointer-events: none;
125
+ opacity: 0;
126
+ transition: opacity 150ms ease;
127
+ z-index: 4;
128
+ }
129
+
130
+ .mw-slider__native:active ~ .mw-slider__tooltip,
131
+ .mw-slider--state-pressed .mw-slider__tooltip {
132
+ opacity: 1;
133
+ }
134
+
135
+ .mw-slider--with-touch-area .mw-slider__touch-area {
136
+ opacity: 0.6;
137
+ }
138
+
139
+ .mw-slider__native:hover + .mw-slider__visual .mw-slider__touch-area,
140
+ .mw-slider--state-hover .mw-slider__touch-area {
141
+ opacity: 0.36;
142
+ }
143
+
144
+ .mw-slider__native:active + .mw-slider__visual .mw-slider__touch-area,
145
+ .mw-slider--state-pressed .mw-slider__touch-area {
146
+ opacity: 0.6;
147
+ }
148
+
149
+ .mw-slider__native:focus-visible + .mw-slider__visual .mw-slider__thumb,
150
+ .mw-slider--state-focus .mw-slider__thumb {
151
+ box-shadow: 0 0 0 3px var(--mw-slider-focus-ring-inner), 0 0 0 5px
152
+ var(--mw-slider-focus-ring-outer);
153
+ }
154
+
155
+ .mw-slider--disabled {
156
+ --mw-slider-track-background: var(--mw-color-border-disabled, #d1d5db);
157
+ --mw-slider-track-fill: var(--mw-color-primary-disabled, rgba(47, 49, 252, 0.5));
158
+ --mw-slider-thumb-border: var(--mw-color-primary-disabled, rgba(47, 49, 252, 0.5));
159
+
160
+ opacity: 0.72;
161
+ }
162
+
163
+ .mw-slider--disabled .mw-slider__native {
164
+ cursor: not-allowed;
165
+ }
166
+
167
+ .mw-slider--disabled .mw-slider__touch-area {
168
+ opacity: 0;
169
+ }
170
+
171
+ .mw-slider--vertical {
172
+ width: var(--mw-slider-touch-area-size);
173
+ height: 232px;
174
+ }
175
+
176
+ .mw-slider--vertical .mw-slider__control {
177
+ width: var(--mw-slider-touch-area-size);
178
+ height: 100%;
179
+ }
180
+
181
+ .mw-slider--vertical .mw-slider__native {
182
+ writing-mode: vertical-lr;
183
+ direction: rtl;
184
+ }
185
+
186
+ .mw-slider--vertical .mw-slider__track,
187
+ .mw-slider--vertical .mw-slider__fill {
188
+ left: 50%;
189
+ top: auto;
190
+ width: var(--mw-slider-track-height);
191
+ transform: translateX(-50%);
192
+ }
193
+
194
+ .mw-slider--vertical .mw-slider__track {
195
+ top: 0;
196
+ bottom: 0;
197
+ right: auto;
198
+ }
199
+
200
+ .mw-slider--vertical .mw-slider__fill {
201
+ bottom: 0;
202
+ height: var(--mw-slider-fill-percentage);
203
+ }
204
+
205
+ .mw-slider--vertical .mw-slider__touch-area,
206
+ .mw-slider--vertical .mw-slider__thumb,
207
+ .mw-slider--vertical .mw-slider__tooltip {
208
+ left: 50%;
209
+ top: calc(100% - var(--mw-slider-fill-percentage));
210
+ }
211
+
212
+ .mw-slider--vertical .mw-slider__touch-area,
213
+ .mw-slider--vertical .mw-slider__thumb {
214
+ transform: translate(-50%, -50%);
215
+ }
216
+
217
+ .mw-slider--vertical .mw-slider__tooltip {
218
+ bottom: auto;
219
+ transform: translate(calc(-100% - var(--mw-slider-tooltip-gap)), -50%);
220
+ }
221
+
222
+ .mw-theme--dark .mw-slider {
223
+ --mw-slider-track-background: var(--mw-color-border-subtle);
224
+ --mw-slider-thumb-background: var(--mw-color-surface-inverted);
225
+ --mw-slider-tooltip-background: var(--mw-color-surface-inverted);
226
+ --mw-slider-tooltip-color: var(--mw-color-text-inverted);
227
+ --mw-slider-focus-ring-inner: var(--mw-color-surface-elevated);
228
+ }
@@ -0,0 +1,6 @@
1
+ .mw-spacing {
2
+ display: block;
3
+ width: 100%;
4
+ height: var(--mw-spacing-value, 24px);
5
+ flex-shrink: 0;
6
+ }
@@ -0,0 +1,94 @@
1
+ /*
2
+ * Spinner atom styles
3
+ * Figma references:
4
+ * - .figma/marwes/components/spinnerclassic.json
5
+ * - .figma/marwes/components/spinnerring.json
6
+ * - .figma/marwes/components/spinnerdual.json
7
+ * - .figma/marwes/components/spinnerdots-round.json
8
+ * - .figma/marwes/components/spinnerdots-square.json
9
+ * - .figma/marwes/components/spinnerlines.json
10
+ * - .figma/marwes/components/spinnercross.json
11
+ * - .figma/marwes/pages/-spinner/-spinner_1737-10635.json
12
+ * - .figma/marwes/pages/-spinner/-spinner-dark_1780-1543.json
13
+ */
14
+
15
+ .mw-spinner {
16
+ --mw-spinner-size: 24px;
17
+ --mw-spinner-track-color: var(--mw-color-text-muted, #a3a3a3);
18
+ --mw-spinner-indicator-color: var(--mw-color-primary-base, #2f31fc);
19
+ --mw-spinner-rotation-duration: 800ms;
20
+
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ flex: none;
25
+ inline-size: var(--mw-spinner-size);
26
+ block-size: var(--mw-spinner-size);
27
+ line-height: 0;
28
+ }
29
+
30
+ .mw-spinner__svg {
31
+ inline-size: 100%;
32
+ block-size: 100%;
33
+ animation: mw-spinner-rotate var(--mw-spinner-rotation-duration) linear infinite;
34
+ transform-origin: center;
35
+ }
36
+
37
+ .mw-spinner--cross .mw-spinner__svg {
38
+ animation: none;
39
+ }
40
+
41
+ .mw-spinner--cross .mw-spinner__svg rect {
42
+ animation: mw-spinner-cross-shift var(--mw-spinner-rotation-duration) steps(4, end) infinite;
43
+ }
44
+
45
+ .mw-spinner--cross .mw-spinner__svg rect:nth-child(2) {
46
+ animation-delay: calc(var(--mw-spinner-rotation-duration) * -0.75);
47
+ }
48
+
49
+ .mw-spinner--cross .mw-spinner__svg rect:nth-child(3) {
50
+ animation-delay: calc(var(--mw-spinner-rotation-duration) * -0.5);
51
+ }
52
+
53
+ .mw-spinner--cross .mw-spinner__svg rect:nth-child(4) {
54
+ animation-delay: calc(var(--mw-spinner-rotation-duration) * -0.25);
55
+ }
56
+
57
+ @keyframes mw-spinner-rotate {
58
+ from {
59
+ transform: rotate(0deg);
60
+ }
61
+
62
+ to {
63
+ transform: rotate(360deg);
64
+ }
65
+ }
66
+
67
+ @keyframes mw-spinner-cross-shift {
68
+ 0%,
69
+ 100% {
70
+ opacity: 1;
71
+ }
72
+
73
+ 25% {
74
+ opacity: 0.6;
75
+ }
76
+
77
+ 50% {
78
+ opacity: 0.4;
79
+ }
80
+
81
+ 75% {
82
+ opacity: 0.2;
83
+ }
84
+ }
85
+
86
+ @media (prefers-reduced-motion: reduce) {
87
+ .mw-spinner__svg {
88
+ animation-duration: 1600ms;
89
+ }
90
+
91
+ .mw-spinner--cross .mw-spinner__svg rect {
92
+ animation-duration: 1600ms;
93
+ }
94
+ }
@@ -5,13 +5,40 @@
5
5
  * Each component has its own CSS file for better organization.
6
6
  */
7
7
 
8
+ @import "./tokens.css";
9
+
10
+ @import "./accordion.css";
11
+ @import "./avatar.css";
12
+ @import "./card.css";
13
+ @import "./dialog.css";
14
+ @import "./toast.css";
15
+ @import "./tooltip.css";
16
+ @import "./badge.css";
8
17
  @import "./button.css";
9
18
  @import "./input.css";
19
+ @import "./input-otp.css";
20
+ @import "./select.css";
21
+ @import "./textarea.css";
22
+ @import "./rich-text.css";
10
23
  @import "./icon.css";
11
24
  @import "./checkbox.css";
12
25
  @import "./divider.css";
26
+ @import "./spinner.css";
27
+ @import "./spacing.css";
28
+ @import "./radio.css";
29
+ @import "./switch.css";
30
+ @import "./slider.css";
31
+ @import "./tab.css";
13
32
  @import "./typography.css";
14
33
 
15
34
  /* Molecules */
35
+ @import "./molecules/accordion-field.css";
16
36
  @import "./molecules/checkbox-field.css";
37
+ @import "./molecules/checkbox-group-field.css";
38
+ @import "./molecules/dialog-modal.css";
17
39
  @import "./molecules/input-field.css";
40
+ @import "./molecules/radio-group-field.css";
41
+ @import "./molecules/slider-field.css";
42
+ @import "./molecules/switch-field.css";
43
+ @import "./molecules/tab-group.css";
44
+ @import "./molecules/toast-container.css";
@@ -0,0 +1,156 @@
1
+ /*
2
+ * Switch Component Styles
3
+ * Figma: 1364:11442 (light) / 1369:4001 (dark)
4
+ *
5
+ * Tokens (from Figma nodes.json):
6
+ * switch/track-off (light): #e5e7eb (dark): #374151
7
+ * switch/track-on (light): #2f31fc (dark): #2f31fc (= primary-base)
8
+ * switch/thumb-off (light): #f9fafb (dark): #141414
9
+ * switch/thumb-on (light): #ffffff (dark): #ffffff
10
+ * switch/label (light): #141414 (dark): #f9fafb
11
+ * Sizes: Compact 24×16 / 12px, Wide 30×16 / 12px, Rich 30×20 / 16px
12
+ */
13
+
14
+ .mw-switch {
15
+ --mw-switch-track-off: var(--mw-color-border-subtle);
16
+ --mw-switch-track-off-hover: color-mix(in srgb, var(--mw-color-border) 60%, var(--mw-color-text));
17
+ --mw-switch-track-off-active: var(--mw-color-border);
18
+ --mw-switch-track-off-disabled: var(--mw-color-border-disabled);
19
+ --mw-switch-track-on: var(--mw-color-primary-base, #2f31fc);
20
+ --mw-switch-track-on-hover: var(--mw-color-primary-hover, #2527ca);
21
+ --mw-switch-track-on-active: var(--mw-color-primary-pressed, #1b1d97);
22
+ --mw-switch-track-on-disabled: var(--mw-color-primary-disabled, #8182fc);
23
+ --mw-switch-thumb-off: var(--mw-color-surface);
24
+ --mw-switch-thumb-off-disabled: var(--mw-color-surface-disabled);
25
+ --mw-switch-thumb-on: var(--mw-color-primary-label);
26
+ --mw-switch-thumb-on-disabled: var(--mw-color-primary-label-disabled);
27
+ --mw-switch-label: var(--mw-color-text);
28
+ --mw-switch-label-disabled: var(--mw-color-text-disabled);
29
+ --mw-switch-focus-ring: var(--mw-color-focus, #2f31fc);
30
+ --mw-switch-track-width: 24px;
31
+ --mw-switch-track-height: 16px;
32
+ --mw-switch-thumb-size: 12px;
33
+ --mw-switch-thumb-offset: 2px;
34
+ --mw-switch-thumb-translate: 8px;
35
+
36
+ display: inline-flex;
37
+ align-items: center;
38
+ gap: var(--mw-spacing-sp-8, 8px);
39
+ padding: 0;
40
+ border: none;
41
+ background: none;
42
+ cursor: pointer;
43
+ color: var(--mw-switch-label);
44
+ font-family: var(--mw-font-primary, inherit);
45
+ font-size: 14px;
46
+ font-weight: 500;
47
+ line-height: 18px;
48
+ }
49
+
50
+ .mw-switch__track {
51
+ position: relative;
52
+ width: var(--mw-switch-track-width);
53
+ height: var(--mw-switch-track-height);
54
+ border-radius: 9999px;
55
+ background: var(--mw-switch-track-off);
56
+ flex-shrink: 0;
57
+ transition: background 150ms ease;
58
+ }
59
+
60
+ .mw-switch__thumb {
61
+ position: absolute;
62
+ top: var(--mw-switch-thumb-offset);
63
+ left: var(--mw-switch-thumb-offset);
64
+ width: var(--mw-switch-thumb-size);
65
+ height: var(--mw-switch-thumb-size);
66
+ border-radius: 50%;
67
+ background: var(--mw-switch-thumb-off);
68
+ transition: transform 150ms ease, background 150ms ease;
69
+ }
70
+
71
+ .mw-switch--wide {
72
+ --mw-switch-track-width: 30px;
73
+ --mw-switch-thumb-translate: 14px;
74
+ }
75
+
76
+ .mw-switch--rich {
77
+ --mw-switch-track-width: 30px;
78
+ --mw-switch-track-height: 20px;
79
+ --mw-switch-thumb-size: 16px;
80
+ --mw-switch-thumb-translate: 10px;
81
+ }
82
+
83
+ .mw-switch--checked .mw-switch__track {
84
+ background: var(--mw-switch-track-on);
85
+ }
86
+
87
+ .mw-switch--checked .mw-switch__thumb {
88
+ transform: translateX(var(--mw-switch-thumb-translate));
89
+ background: var(--mw-switch-thumb-on);
90
+ }
91
+
92
+ .mw-switch:not(.mw-switch--disabled):hover .mw-switch__track {
93
+ background: var(--mw-switch-track-off-hover);
94
+ }
95
+
96
+ .mw-switch:not(.mw-switch--disabled).mw-switch--checked:hover .mw-switch__track {
97
+ background: var(--mw-switch-track-on-hover);
98
+ }
99
+
100
+ .mw-switch:not(.mw-switch--disabled):active .mw-switch__track {
101
+ background: var(--mw-switch-track-off-active);
102
+ }
103
+
104
+ .mw-switch:not(.mw-switch--disabled).mw-switch--checked:active .mw-switch__track {
105
+ background: var(--mw-switch-track-on-active);
106
+ }
107
+
108
+ .mw-switch--disabled {
109
+ cursor: not-allowed;
110
+ color: var(--mw-switch-label-disabled);
111
+ pointer-events: none;
112
+ }
113
+
114
+ .mw-switch--disabled .mw-switch__track {
115
+ background: var(--mw-switch-track-off-disabled);
116
+ }
117
+
118
+ .mw-switch--disabled .mw-switch__thumb {
119
+ background: var(--mw-switch-thumb-off-disabled);
120
+ }
121
+
122
+ .mw-switch--disabled.mw-switch--checked .mw-switch__track {
123
+ background: var(--mw-switch-track-on-disabled);
124
+ }
125
+
126
+ .mw-switch--disabled.mw-switch--checked .mw-switch__thumb {
127
+ background: var(--mw-switch-thumb-on-disabled);
128
+ }
129
+
130
+ .mw-switch:focus-visible {
131
+ outline: none;
132
+ }
133
+
134
+ .mw-switch:focus-visible .mw-switch__track {
135
+ outline: 2px solid var(--mw-switch-focus-ring);
136
+ outline-offset: 2px;
137
+ border-radius: 9999px;
138
+ }
139
+
140
+ .mw-theme--dark .mw-switch {
141
+ --mw-switch-track-off: var(--mw-color-border-subtle);
142
+ --mw-switch-track-off-hover: color-mix(in srgb, var(--mw-color-border) 60%, var(--mw-color-text));
143
+ --mw-switch-track-off-active: var(--mw-color-border);
144
+ --mw-switch-track-off-disabled: var(--mw-color-border-disabled);
145
+ --mw-switch-track-on: var(--mw-color-primary-base, #2f31fc);
146
+ --mw-switch-track-on-hover: var(--mw-color-primary-hover, #5859fc);
147
+ --mw-switch-track-on-active: var(--mw-color-primary-pressed, #8182fc);
148
+ --mw-switch-track-on-disabled: var(--mw-color-primary-disabled, #121365);
149
+ --mw-switch-thumb-off: var(--mw-color-surface);
150
+ --mw-switch-thumb-off-disabled: var(--mw-color-surface-disabled);
151
+ --mw-switch-thumb-on: var(--mw-color-primary-label);
152
+ --mw-switch-thumb-on-disabled: var(--mw-color-primary-label-disabled);
153
+ --mw-switch-label: var(--mw-color-text);
154
+ --mw-switch-label-disabled: var(--mw-color-text-disabled);
155
+ --mw-switch-focus-ring: var(--mw-color-focus, #5859fc);
156
+ }
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Tab Component Styles
3
+ * Figma refs: 1364:11703 (light) / 1368:6067 (dark)
4
+ *
5
+ * The live sync uses tab-specific state colours that do not map 1:1 to the
6
+ * shared theme tokens yet, so the preset keeps them component-scoped here.
7
+ */
8
+
9
+ .mw-tab {
10
+ --mw-tab-surface: var(--mw-color-surface-elevated);
11
+ --mw-tab-surface-hover: var(--mw-color-surface-subtle);
12
+ --mw-tab-surface-pressed: var(--mw-color-border-subtle);
13
+ --mw-tab-label: var(--mw-color-text-muted);
14
+ --mw-tab-label-active: var(--mw-color-text, #141414);
15
+ --mw-tab-label-disabled: var(--mw-color-text-disabled);
16
+ --mw-tab-indicator: var(--mw-color-primary-base, #2f31fc);
17
+ --mw-tab-indicator-disabled: var(--mw-color-border-disabled);
18
+
19
+ appearance: none;
20
+ position: relative;
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ box-sizing: border-box;
25
+ padding: var(--mw-spacing-sp-8, 8px) var(--mw-spacing-sp-16, 16px);
26
+ background: var(--mw-tab-surface);
27
+ color: var(--mw-tab-label);
28
+ font-family: var(--mw-font-primary, inherit);
29
+ font-size: var(--mw-density-font-size, 14px);
30
+ font-weight: 500;
31
+ line-height: 16px;
32
+ border: none;
33
+ border-bottom: 2px solid transparent;
34
+ cursor: pointer;
35
+ white-space: nowrap;
36
+ transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
37
+ }
38
+
39
+ .mw-tab--selected {
40
+ border-bottom-color: var(--mw-tab-indicator);
41
+ }
42
+
43
+ .mw-tab:hover:not(:disabled):not(.mw-tab--disabled) {
44
+ background: var(--mw-tab-surface-hover);
45
+ color: var(--mw-tab-label-active);
46
+ }
47
+
48
+ .mw-tab:active:not(:disabled):not(.mw-tab--disabled) {
49
+ background: var(--mw-tab-surface-pressed);
50
+ color: var(--mw-tab-label-active);
51
+ }
52
+
53
+ .mw-tab--disabled,
54
+ .mw-tab:disabled {
55
+ background: var(--mw-tab-surface);
56
+ color: var(--mw-tab-label-disabled);
57
+ cursor: not-allowed;
58
+ pointer-events: none;
59
+ }
60
+
61
+ .mw-tab--selected.mw-tab--disabled,
62
+ .mw-tab--selected:disabled {
63
+ border-bottom-color: var(--mw-tab-indicator-disabled);
64
+ }
65
+
66
+ .mw-tab:focus-visible {
67
+ outline: none;
68
+ box-shadow: inset 0 0 0 2px var(--mw-color-focus, #2684ff);
69
+ z-index: 1;
70
+ }
71
+
72
+ .mw-theme--dark .mw-tab {
73
+ --mw-tab-surface: var(--mw-color-surface-elevated);
74
+ --mw-tab-surface-hover: var(--mw-color-surface-subtle);
75
+ --mw-tab-surface-pressed: var(--mw-color-border);
76
+ --mw-tab-label: var(--mw-color-text-muted);
77
+ --mw-tab-label-active: var(--mw-color-text);
78
+ --mw-tab-label-disabled: var(--mw-color-text-disabled);
79
+ --mw-tab-indicator: var(--mw-color-primary-base, #5859fc);
80
+ --mw-tab-indicator-disabled: var(--mw-color-border-disabled);
81
+ }
@@ -0,0 +1,63 @@
1
+ /*
2
+ * Textarea Component Styles
3
+ * Multiline companion to the Input atom.
4
+ */
5
+
6
+ .mw-textarea {
7
+ min-height: calc(var(--mw-density-height) * 3);
8
+ padding: var(--mw-density-padding-y) var(--mw-density-padding-x);
9
+ border-radius: var(--mw-ui-radius);
10
+ border: 1px solid var(--mw-color-border);
11
+ background: var(--mw-color-surface);
12
+ color: var(--mw-color-text);
13
+ font-family: var(--mw-font-primary, inherit);
14
+ font-size: var(--mw-density-font-size);
15
+ width: 260px;
16
+ line-height: 1.5;
17
+ resize: var(--mw-textarea-resize, vertical);
18
+ transition: border-color 150ms ease, outline 150ms ease;
19
+ }
20
+
21
+ .mw-textarea::placeholder {
22
+ color: var(--mw-color-text-muted);
23
+ }
24
+
25
+ .mw-textarea:hover:not(:disabled):not(:focus) {
26
+ border-color: color-mix(in srgb, var(--mw-color-border) 70%, var(--mw-color-text));
27
+ }
28
+
29
+ .mw-textarea:focus-visible {
30
+ outline: 2px solid var(--mw-color-focus);
31
+ outline-offset: 2px;
32
+ }
33
+
34
+ .mw-textarea.is-invalid,
35
+ .mw-textarea--danger {
36
+ border-color: var(--mw-color-danger-base);
37
+ }
38
+
39
+ .mw-textarea.is-invalid:focus-visible,
40
+ .mw-textarea--danger:focus-visible {
41
+ outline-color: var(--mw-color-danger-base);
42
+ }
43
+
44
+ .mw-textarea--success {
45
+ border-color: var(--mw-color-success-base);
46
+ }
47
+
48
+ .mw-textarea--success:focus-visible {
49
+ outline-color: var(--mw-color-success-base);
50
+ }
51
+
52
+ .mw-textarea:disabled {
53
+ opacity: 0.2;
54
+ cursor: not-allowed;
55
+ pointer-events: none;
56
+ border-color: var(--mw-color-border-disabled);
57
+ background: var(--mw-color-surface-disabled);
58
+ color: var(--mw-color-text-disabled);
59
+ }
60
+
61
+ .mw-theme--dark .mw-textarea {
62
+ background: var(--mw-color-surface);
63
+ }