@motion-proto/live-tokens 0.38.0 → 0.40.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.
@@ -69,15 +69,15 @@
69
69
  --shadow-lg: 5px 5px 9px 0px hsla(237, 18%, 3%, 0.9);
70
70
  --shadow-xl: 6px 7px 13px 0px hsla(237, 18%, 3%, 0.9);
71
71
  --shadow-2xl: 8px 9px 16px 0px hsla(237, 18%, 3%, 0.9);
72
- --color-neutral-100: #dde6ec;
73
- --color-neutral-200: #c4cdd3;
74
- --color-neutral-300: #a8b1b7;
75
- --color-neutral-400: #8b949a;
72
+ --color-neutral-100: #dde6ed;
73
+ --color-neutral-200: #c4cdd4;
74
+ --color-neutral-300: #a8b0b7;
75
+ --color-neutral-400: #8c949a;
76
76
  --color-neutral-500: #70787e;
77
- --color-neutral-600: #555e63;
78
- --color-neutral-700: #3c4449;
77
+ --color-neutral-600: #565d63;
78
+ --color-neutral-700: #3d4449;
79
79
  --color-neutral-800: #252c31;
80
- --color-neutral-850: #0f161a;
80
+ --color-neutral-850: #10161b;
81
81
  --color-neutral-900: #020407;
82
82
  --color-neutral-950: #000000;
83
83
  --surface-neutral-lowest: #040c13;
@@ -97,16 +97,16 @@
97
97
  --text-tertiary: #7e8285;
98
98
  --text-muted: #4e4f50;
99
99
  --text-disabled: #383838;
100
- --color-alternate-100: #e9e3e0;
101
- --color-alternate-200: #d2ccc8;
100
+ --color-alternate-100: #eae3e0;
101
+ --color-alternate-200: #d2cbc8;
102
102
  --color-alternate-300: #b7b1ad;
103
- --color-alternate-400: #9b9693;
103
+ --color-alternate-400: #9c9693;
104
104
  --color-alternate-500: #817b78;
105
- --color-alternate-600: #67625f;
106
- --color-alternate-700: #4f4a47;
107
- --color-alternate-800: #373330;
105
+ --color-alternate-600: #68625f;
106
+ --color-alternate-700: #4f4947;
107
+ --color-alternate-800: #383330;
108
108
  --color-alternate-850: #221d1b;
109
- --color-alternate-900: #0e0b08;
109
+ --color-alternate-900: #0f0b08;
110
110
  --color-alternate-950: #030101;
111
111
  --surface-alternate-lowest: #100907;
112
112
  --surface-alternate-lower: #231d19;
@@ -0,0 +1,322 @@
1
+ <script lang="ts">
2
+ interface Props {
3
+ disabled?: boolean;
4
+ type?: 'button' | 'submit' | 'reset';
5
+ variant?: 'primary' | 'secondary' | 'outline' | 'success' | 'danger' | 'warning';
6
+ size?: 'default' | 'small';
7
+ icon: string;
8
+ /** Required: the button has no visible text, so it needs an accessible name. */
9
+ ariaLabel: string;
10
+ tooltip?: string | undefined;
11
+ buttonRef?: HTMLButtonElement | undefined;
12
+ class?: string;
13
+ onclick?: (event: MouseEvent) => void;
14
+ }
15
+
16
+ let {
17
+ disabled = false,
18
+ type = 'button',
19
+ variant = 'primary',
20
+ size = 'default',
21
+ icon,
22
+ ariaLabel,
23
+ tooltip = undefined,
24
+ buttonRef = $bindable(undefined),
25
+ class: className = '',
26
+ onclick
27
+ }: Props = $props();
28
+
29
+ function handleClick(event: MouseEvent) {
30
+ if (!disabled) onclick?.(event);
31
+ }
32
+ </script>
33
+
34
+ <button
35
+ bind:this={buttonRef}
36
+ {type}
37
+ class="icon-button {variant} {className}"
38
+ class:small={size === 'small'}
39
+ {disabled}
40
+ aria-label={ariaLabel}
41
+ data-tooltip={tooltip}
42
+ onclick={handleClick}
43
+ >
44
+ <i class={icon}></i>
45
+ </button>
46
+
47
+ <style lang="scss">
48
+ @use '../styles/padding' as *;
49
+
50
+ :global(:root) {
51
+ /* Primary */
52
+ --iconbutton-primary-surface: var(--surface-brand-high);
53
+ --iconbutton-primary-icon: var(--text-primary);
54
+ --iconbutton-primary-border: var(--border-brand);
55
+ --iconbutton-primary-border-width: var(--border-width-1);
56
+ --iconbutton-primary-radius: var(--radius-xl);
57
+ --iconbutton-primary-padding: var(--space-8);
58
+ --iconbutton-primary-icon-size: var(--icon-size-md);
59
+ --iconbutton-primary-hover-surface: var(--surface-brand-higher);
60
+ --iconbutton-primary-hover-icon: var(--text-primary);
61
+ --iconbutton-primary-hover-border: var(--border-brand-strong);
62
+ --iconbutton-primary-disabled-surface: var(--color-neutral-700);
63
+ --iconbutton-primary-disabled-icon: var(--text-tertiary);
64
+ --iconbutton-primary-disabled-border: var(--border-neutral-faint);
65
+
66
+ /* Secondary */
67
+ --iconbutton-secondary-surface: var(--surface-neutral-high);
68
+ --iconbutton-secondary-icon: var(--text-primary);
69
+ --iconbutton-secondary-border: var(--border-neutral);
70
+ --iconbutton-secondary-border-width: var(--border-width-1);
71
+ --iconbutton-secondary-radius: var(--radius-xl);
72
+ --iconbutton-secondary-padding: var(--space-8);
73
+ --iconbutton-secondary-icon-size: var(--icon-size-md);
74
+ --iconbutton-secondary-hover-surface: var(--surface-neutral-higher);
75
+ --iconbutton-secondary-hover-icon: var(--text-primary);
76
+ --iconbutton-secondary-hover-border: var(--border-neutral-strong);
77
+ --iconbutton-secondary-disabled-surface: var(--color-neutral-700);
78
+ --iconbutton-secondary-disabled-icon: var(--text-tertiary);
79
+ --iconbutton-secondary-disabled-border: var(--border-neutral-faint);
80
+
81
+ /* Outline */
82
+ --iconbutton-outline-surface: var(--color-transparent);
83
+ --iconbutton-outline-icon: var(--text-primary);
84
+ --iconbutton-outline-border: var(--border-neutral);
85
+ --iconbutton-outline-border-width: var(--border-width-1);
86
+ --iconbutton-outline-radius: var(--radius-xl);
87
+ --iconbutton-outline-padding: var(--space-8);
88
+ --iconbutton-outline-icon-size: var(--icon-size-md);
89
+ --iconbutton-outline-hover-surface: var(--surface-neutral-lower);
90
+ --iconbutton-outline-hover-icon: var(--text-primary);
91
+ --iconbutton-outline-hover-border: var(--border-neutral-strong);
92
+ --iconbutton-outline-active-surface: var(--hover);
93
+ --iconbutton-outline-disabled-surface: var(--color-transparent);
94
+ --iconbutton-outline-disabled-icon: var(--text-tertiary);
95
+ --iconbutton-outline-disabled-border: var(--border-neutral-faint);
96
+
97
+ /* Success */
98
+ --iconbutton-success-surface: var(--surface-success-low);
99
+ --iconbutton-success-icon: var(--text-success);
100
+ --iconbutton-success-border: var(--border-success);
101
+ --iconbutton-success-border-width: var(--border-width-1);
102
+ --iconbutton-success-radius: var(--radius-xl);
103
+ --iconbutton-success-padding: var(--space-8);
104
+ --iconbutton-success-icon-size: var(--icon-size-md);
105
+ --iconbutton-success-hover-surface: var(--surface-success-higher);
106
+ --iconbutton-success-hover-icon: var(--text-primary);
107
+ --iconbutton-success-hover-border: var(--border-success-strong);
108
+ --iconbutton-success-disabled-surface: var(--color-neutral-700);
109
+ --iconbutton-success-disabled-icon: var(--text-tertiary);
110
+ --iconbutton-success-disabled-border: var(--border-neutral-faint);
111
+
112
+ /* Danger */
113
+ --iconbutton-danger-surface: var(--surface-danger-low);
114
+ --iconbutton-danger-icon: var(--text-danger);
115
+ --iconbutton-danger-border: var(--border-danger);
116
+ --iconbutton-danger-border-width: var(--border-width-1);
117
+ --iconbutton-danger-radius: var(--radius-xl);
118
+ --iconbutton-danger-padding: var(--space-8);
119
+ --iconbutton-danger-icon-size: var(--icon-size-md);
120
+ --iconbutton-danger-hover-surface: var(--surface-danger-high);
121
+ --iconbutton-danger-hover-icon: var(--text-primary);
122
+ --iconbutton-danger-hover-border: var(--border-danger-medium);
123
+ --iconbutton-danger-disabled-surface: var(--color-neutral-700);
124
+ --iconbutton-danger-disabled-icon: var(--text-tertiary);
125
+ --iconbutton-danger-disabled-border: var(--border-neutral-faint);
126
+
127
+ /* Warning */
128
+ --iconbutton-warning-surface: var(--surface-warning-low);
129
+ --iconbutton-warning-icon: var(--text-warning);
130
+ --iconbutton-warning-border: var(--border-warning);
131
+ --iconbutton-warning-border-width: var(--border-width-1);
132
+ --iconbutton-warning-radius: var(--radius-xl);
133
+ --iconbutton-warning-padding: var(--space-8);
134
+ --iconbutton-warning-icon-size: var(--icon-size-md);
135
+ --iconbutton-warning-hover-surface: var(--surface-warning-high);
136
+ --iconbutton-warning-hover-icon: var(--text-primary);
137
+ --iconbutton-warning-hover-border: var(--border-warning-medium);
138
+ --iconbutton-warning-disabled-surface: var(--color-neutral-700);
139
+ --iconbutton-warning-disabled-icon: var(--text-tertiary);
140
+ --iconbutton-warning-disabled-border: var(--border-neutral-faint);
141
+
142
+ /* Small size — shared across all variants, mirroring Button. */
143
+ --iconbutton-small-padding: var(--space-6);
144
+ --iconbutton-small-icon-size: var(--icon-size-sm);
145
+ }
146
+
147
+ .icon-button {
148
+ cursor: pointer;
149
+ display: inline-flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ aspect-ratio: 1;
153
+ transition: all var(--duration-150);
154
+
155
+ &:hover:not(:disabled),
156
+ &.force-hover:not(:disabled) {
157
+ transform: translateY(-0.0625rem);
158
+ box-shadow: var(--shadow-md);
159
+ }
160
+
161
+ &:active:not(:disabled) {
162
+ transform: translateY(0);
163
+ }
164
+
165
+ &:disabled {
166
+ cursor: not-allowed;
167
+ }
168
+
169
+ &.primary {
170
+ --iconbutton-icon-size: var(--iconbutton-primary-icon-size);
171
+ background: var(--iconbutton-primary-surface);
172
+ color: var(--iconbutton-primary-icon);
173
+ border: var(--iconbutton-primary-border-width) solid var(--iconbutton-primary-border);
174
+ border-radius: var(--iconbutton-primary-radius);
175
+ @include themed-padding(--iconbutton-primary-padding);
176
+
177
+ &:hover:not(:disabled),
178
+ &.force-hover:not(:disabled) {
179
+ background: var(--iconbutton-primary-hover-surface);
180
+ border-color: var(--iconbutton-primary-hover-border);
181
+ color: var(--iconbutton-primary-hover-icon);
182
+ }
183
+
184
+ &:active:not(:disabled) {
185
+ box-shadow: var(--shadow-sm);
186
+ }
187
+
188
+ &:disabled {
189
+ background: var(--iconbutton-primary-disabled-surface);
190
+ border-color: var(--iconbutton-primary-disabled-border);
191
+ color: var(--iconbutton-primary-disabled-icon);
192
+ }
193
+ }
194
+
195
+ &.secondary {
196
+ --iconbutton-icon-size: var(--iconbutton-secondary-icon-size);
197
+ background: var(--iconbutton-secondary-surface);
198
+ color: var(--iconbutton-secondary-icon);
199
+ border: var(--iconbutton-secondary-border-width) solid var(--iconbutton-secondary-border);
200
+ border-radius: var(--iconbutton-secondary-radius);
201
+ @include themed-padding(--iconbutton-secondary-padding);
202
+
203
+ &:hover:not(:disabled),
204
+ &.force-hover:not(:disabled) {
205
+ background: var(--iconbutton-secondary-hover-surface);
206
+ border-color: var(--iconbutton-secondary-hover-border);
207
+ color: var(--iconbutton-secondary-hover-icon);
208
+ }
209
+
210
+ &:disabled {
211
+ background: var(--iconbutton-secondary-disabled-surface);
212
+ border-color: var(--iconbutton-secondary-disabled-border);
213
+ color: var(--iconbutton-secondary-disabled-icon);
214
+ }
215
+ }
216
+
217
+ &.outline {
218
+ --iconbutton-icon-size: var(--iconbutton-outline-icon-size);
219
+ background: var(--iconbutton-outline-surface);
220
+ color: var(--iconbutton-outline-icon);
221
+ border: var(--iconbutton-outline-border-width) solid var(--iconbutton-outline-border);
222
+ border-radius: var(--iconbutton-outline-radius);
223
+ @include themed-padding(--iconbutton-outline-padding);
224
+
225
+ &:hover:not(:disabled),
226
+ &.force-hover:not(:disabled) {
227
+ background: var(--iconbutton-outline-hover-surface);
228
+ border-color: var(--iconbutton-outline-hover-border);
229
+ color: var(--iconbutton-outline-hover-icon);
230
+ }
231
+
232
+ &:active:not(:disabled) {
233
+ background: var(--iconbutton-outline-active-surface);
234
+ }
235
+
236
+ &:disabled {
237
+ background: var(--iconbutton-outline-disabled-surface);
238
+ border-color: var(--iconbutton-outline-disabled-border);
239
+ color: var(--iconbutton-outline-disabled-icon);
240
+ }
241
+ }
242
+
243
+ &.success {
244
+ --iconbutton-icon-size: var(--iconbutton-success-icon-size);
245
+ background: var(--iconbutton-success-surface);
246
+ color: var(--iconbutton-success-icon);
247
+ border: var(--iconbutton-success-border-width) solid var(--iconbutton-success-border);
248
+ border-radius: var(--iconbutton-success-radius);
249
+ @include themed-padding(--iconbutton-success-padding);
250
+
251
+ &:hover:not(:disabled),
252
+ &.force-hover:not(:disabled) {
253
+ background: var(--iconbutton-success-hover-surface);
254
+ border-color: var(--iconbutton-success-hover-border);
255
+ color: var(--iconbutton-success-hover-icon);
256
+ }
257
+
258
+ &:disabled {
259
+ background: var(--iconbutton-success-disabled-surface);
260
+ border-color: var(--iconbutton-success-disabled-border);
261
+ color: var(--iconbutton-success-disabled-icon);
262
+ }
263
+ }
264
+
265
+ &.danger {
266
+ --iconbutton-icon-size: var(--iconbutton-danger-icon-size);
267
+ background: var(--iconbutton-danger-surface);
268
+ color: var(--iconbutton-danger-icon);
269
+ border: var(--iconbutton-danger-border-width) solid var(--iconbutton-danger-border);
270
+ border-radius: var(--iconbutton-danger-radius);
271
+ @include themed-padding(--iconbutton-danger-padding);
272
+
273
+ &:hover:not(:disabled),
274
+ &.force-hover:not(:disabled) {
275
+ background: var(--iconbutton-danger-hover-surface);
276
+ border-color: var(--iconbutton-danger-hover-border);
277
+ color: var(--iconbutton-danger-hover-icon);
278
+ }
279
+
280
+ &:disabled {
281
+ background: var(--iconbutton-danger-disabled-surface);
282
+ border-color: var(--iconbutton-danger-disabled-border);
283
+ color: var(--iconbutton-danger-disabled-icon);
284
+ }
285
+ }
286
+
287
+ &.warning {
288
+ --iconbutton-icon-size: var(--iconbutton-warning-icon-size);
289
+ background: var(--iconbutton-warning-surface);
290
+ color: var(--iconbutton-warning-icon);
291
+ border: var(--iconbutton-warning-border-width) solid var(--iconbutton-warning-border);
292
+ border-radius: var(--iconbutton-warning-radius);
293
+ @include themed-padding(--iconbutton-warning-padding);
294
+
295
+ &:hover:not(:disabled),
296
+ &.force-hover:not(:disabled) {
297
+ background: var(--iconbutton-warning-hover-surface);
298
+ border-color: var(--iconbutton-warning-hover-border);
299
+ color: var(--iconbutton-warning-hover-icon);
300
+ }
301
+
302
+ &:disabled {
303
+ background: var(--iconbutton-warning-disabled-surface);
304
+ border-color: var(--iconbutton-warning-disabled-border);
305
+ color: var(--iconbutton-warning-disabled-icon);
306
+ }
307
+ }
308
+
309
+ &.small {
310
+ @include themed-padding(--iconbutton-small-padding);
311
+ }
312
+
313
+ &.small :global(i) {
314
+ font-size: var(--iconbutton-small-icon-size);
315
+ }
316
+
317
+ :global(i) {
318
+ font-size: var(--iconbutton-icon-size, var(--icon-size-md));
319
+ line-height: 1;
320
+ }
321
+ }
322
+ </style>