seblify 0.3.0 → 0.4.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.
Files changed (118) hide show
  1. package/README.md +77 -54
  2. package/dist/components/AppShell.svelte +1 -1
  3. package/dist/components/Banner.svelte +3 -3
  4. package/dist/components/Button.svelte +4 -4
  5. package/dist/components/action/button/button/Button.svelte +1041 -0
  6. package/dist/components/action/button/button/Button.svelte.d.ts +28 -0
  7. package/dist/components/action/button/button-group/ButtonGroup.svelte +146 -0
  8. package/dist/components/action/button/button-group/ButtonGroup.svelte.d.ts +14 -0
  9. package/dist/components/action/button/floating-action-button/FloatingActionButton.svelte +1102 -0
  10. package/dist/components/action/button/floating-action-button/FloatingActionButton.svelte.d.ts +26 -0
  11. package/dist/components/action/button/icon-button/IconButton.svelte +954 -0
  12. package/dist/components/action/button/icon-button/IconButton.svelte.d.ts +22 -0
  13. package/dist/components/action/button/timed-button/TimedButton.svelte +1143 -0
  14. package/dist/components/action/button/timed-button/TimedButton.svelte.d.ts +32 -0
  15. package/dist/components/action/button/toggle-button/ToggleButton.svelte +1109 -0
  16. package/dist/components/action/button/toggle-button/ToggleButton.svelte.d.ts +28 -0
  17. package/dist/components/action/button/toggle-button-group/ToggleButtonGroup.svelte +242 -0
  18. package/dist/components/action/button/toggle-button-group/ToggleButtonGroup.svelte.d.ts +19 -0
  19. package/dist/components/action/button/toggle-button-group/ToggleButtonGroup.test.svelte +36 -0
  20. package/dist/components/action/button/toggle-button-group/ToggleButtonGroup.test.svelte.d.ts +11 -0
  21. package/dist/components/action/button/toggle-button-group/context.d.ts +8 -0
  22. package/dist/components/action/button/toggle-button-group/context.js +8 -0
  23. package/dist/components/action/input/field/pin-input/PinInput.svelte +4 -4
  24. package/dist/components/action/input/select/checkbox/Checkbox.svelte +4484 -167
  25. package/dist/components/action/input/select/checkbox/Checkbox.svelte.d.ts +22 -1
  26. package/dist/components/action/input/select/checkbox/checkbox-relations.svelte.d.ts +11 -12
  27. package/dist/components/action/input/select/checkbox/checkbox-relations.svelte.js +56 -8
  28. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/bounce.d.ts +1 -0
  29. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/bounce.html +27 -0
  30. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/bounce.js +13 -0
  31. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/bump.d.ts +1 -0
  32. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/bump.html +12 -0
  33. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/bump.js +13 -0
  34. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/draw.d.ts +1 -0
  35. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/draw.html +12 -0
  36. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/draw.js +12 -0
  37. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/fade.d.ts +1 -0
  38. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/fade.html +12 -0
  39. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/fade.js +12 -0
  40. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/pop.d.ts +1 -0
  41. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/pop.html +12 -0
  42. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/pop.js +13 -0
  43. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/rise.d.ts +1 -0
  44. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/rise.html +27 -0
  45. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/rise.js +13 -0
  46. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/scale.d.ts +1 -0
  47. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/scale.html +27 -0
  48. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/scale.js +13 -0
  49. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/visual-state.d.ts +1 -0
  50. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/visual-state.html +12 -0
  51. package/dist/components/action/input/select/checkbox/tests/visual-fixtures/visual-state.js +278 -0
  52. package/dist/components/action/input/select/{theme-switch/ThemeSwitch.svelte → color-mode-switch/ColorModeSwitch.svelte} +8 -8
  53. package/dist/components/action/input/select/color-mode-switch/ColorModeSwitch.svelte.d.ts +10 -0
  54. package/dist/components/action/input/select/segment-control/SegmentControl.svelte +2 -2
  55. package/dist/components/action/input/select/slider/Slider.svelte +1 -1
  56. package/dist/components/action/input/select/switch/Switch.svelte +678 -82
  57. package/dist/components/action/input/select/switch/Switch.svelte.d.ts +1 -1
  58. package/dist/components/display/annotation/badge/Badge.svelte +732 -63
  59. package/dist/components/display/annotation/badge/Badge.svelte.d.ts +1 -1
  60. package/dist/components/display/annotation/tag/Tag.svelte +663 -70
  61. package/dist/components/display/annotation/tag/Tag.svelte.d.ts +3 -1
  62. package/dist/components/display/data-display/metric/date-time/DateTimeValue.svelte +59 -0
  63. package/dist/components/display/data-display/metric/date-time/DateTimeValue.svelte.d.ts +13 -0
  64. package/dist/components/display/data-display/metric/date-time/DateValue.svelte +52 -0
  65. package/dist/components/display/data-display/metric/date-time/DateValue.svelte.d.ts +11 -0
  66. package/dist/components/display/data-display/metric/date-time/TimeValue.svelte +55 -0
  67. package/dist/components/display/data-display/metric/date-time/TimeValue.svelte.d.ts +12 -0
  68. package/dist/components/display/data-display/metric/relative-time/RelativeTime.svelte +17 -0
  69. package/dist/components/display/data-display/metric/relative-time/RelativeTime.svelte.d.ts +6 -1
  70. package/dist/components/display/data-display/metric/timestamp-card/TimestampCard.svelte +121 -0
  71. package/dist/components/display/data-display/metric/timestamp-card/TimestampCard.svelte.d.ts +25 -0
  72. package/dist/components/display/data-display/visual/timeline/TimelineItem.svelte +653 -63
  73. package/dist/components/display/data-display/visual/timeline/context.d.ts +1 -1
  74. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte +650 -60
  75. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte.d.ts +1 -1
  76. package/dist/components/display/feedback/loading/spinner/Spinner.svelte +650 -60
  77. package/dist/components/display/feedback/loading/spinner/Spinner.svelte.d.ts +1 -1
  78. package/dist/components/display/typography/code-snippet/CodeSnippet.svelte +3 -3
  79. package/dist/components/display/typography/eyebrow/Eyebrow.svelte +2 -2
  80. package/dist/components/display/typography/highlight/Highlight.svelte +719 -59
  81. package/dist/components/display/typography/highlight/Highlight.svelte.d.ts +1 -1
  82. package/dist/components/framework/layout/container/app-shell/AppShell.svelte +16 -2
  83. package/dist/components/framework/navigation/context/breadcrumb/Breadcrumb.svelte +1 -1
  84. package/dist/components/framework/navigation/sidebar/sidebar/Sidebar.svelte +35 -10
  85. package/dist/components/framework/navigation/sidebar/sidenav/Sidenav.svelte +5 -5
  86. package/dist/components/framework/overlay/tooltip/Tooltip.svelte +2 -3
  87. package/dist/components/framework/overlay/tooltip/Tooltip.svelte.d.ts +2 -2
  88. package/dist/components/framework/surface/paper/Paper.svelte +730 -87
  89. package/dist/components/framework/surface/paper/Paper.svelte.d.ts +1 -1
  90. package/dist/components/utility/format/date-time/formatDateTime.d.ts +23 -0
  91. package/dist/components/utility/format/date-time/formatDateTime.js +33 -0
  92. package/dist/components/utility/format/relative-time/formatRelativeTime.d.ts +7 -0
  93. package/dist/components/utility/format/relative-time/formatRelativeTime.js +194 -7
  94. package/dist/design-system/inheritance/tokens.js +6 -0
  95. package/dist/design-system/reserved-props/allowed-options.d.ts +5 -3
  96. package/dist/design-system/theme/tokens.d.ts +72 -2
  97. package/dist/design-system/theme/tokens.js +167 -176
  98. package/dist/index.d.ts +15 -4
  99. package/dist/index.js +14 -3
  100. package/dist/styles/tone-context.css +649 -58
  101. package/dist/theme.css +1 -183
  102. package/dist/themes/canopy.css +373 -0
  103. package/dist/themes/cobalt.css +373 -0
  104. package/dist/themes/iris.css +373 -0
  105. package/dist/themes/lumen.css +373 -0
  106. package/dist/themes/mono.css +373 -0
  107. package/dist/themes/moss.css +373 -0
  108. package/dist/themes/noir.css +373 -0
  109. package/dist/themes/plain.css +373 -0
  110. package/dist/themes/pulse.css +373 -0
  111. package/dist/themes/signal.css +373 -0
  112. package/dist/themes/slate.css +373 -0
  113. package/dist/themes/solar.css +373 -0
  114. package/dist/themes/sorbet.css +373 -0
  115. package/dist/themes/studio.css +369 -0
  116. package/dist/themes/vesper.css +373 -0
  117. package/package.json +18 -2
  118. package/dist/components/action/input/select/theme-switch/ThemeSwitch.svelte.d.ts +0 -10
@@ -1,46 +1,146 @@
1
1
  <script lang="ts">
2
- import type { SeblifyProps } from 'seblify';
2
+ import { untrack } from 'svelte';
3
+ import type { CustomCssSize, SeblifyProps } from 'seblify';
3
4
 
5
+ type CheckboxAnimation =
6
+ | 'none'
7
+ | 'fade'
8
+ | 'scale'
9
+ | 'bump'
10
+ | 'pop'
11
+ | 'draw'
12
+ | 'rise'
13
+ | 'bounce';
14
+ type CheckboxVariant =
15
+ | 'solid'
16
+ | 'outline'
17
+ | 'soft'
18
+ | 'tint'
19
+ | 'plain'
20
+ | 'blank'
21
+ | 'inset'
22
+ | 'overflow';
23
+ type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full' | CustomCssSize;
24
+ type CheckboxSize = 'sm' | 'md' | 'lg' | 'xl' | CustomCssSize;
25
+ type CheckboxIntermediateMark = 'dash' | 'tilde' | 'dot' | 'square';
4
26
  type CheckboxTone =
5
27
  | 'neutral'
28
+ | 'strong'
6
29
  | 'primary'
7
30
  | 'secondary'
8
31
  | 'success'
9
32
  | 'danger'
10
33
  | 'warning'
11
- | 'info'
12
- | 'inverse';
34
+ | 'info';
13
35
  type CheckboxVisualState =
14
36
  | 'default'
15
37
  | 'derived'
16
38
  | 'indirect'
17
39
  | 'direct-and-derived'
18
40
  | 'direct-and-indirect';
41
+ type CheckboxSelectedState = 'checked' | 'indeterminate' | 'unchecked';
42
+ type CheckboxVisualLayer = 'direct' | 'derived' | 'empty';
43
+ type CheckboxStackLayer =
44
+ | 'empty'
45
+ | 'indirect-indeterminate'
46
+ | 'indirect-checked'
47
+ | 'direct-indeterminate'
48
+ | 'direct-checked';
49
+ type CheckboxStackTransition = 'none' | 'enter' | 'exit';
50
+ type CheckboxLayerState = 'hidden' | 'visible' | 'enter' | 'exit';
51
+ type CheckboxManagedState = {
52
+ checked: boolean;
53
+ disabled?: boolean;
54
+ indeterminate?: boolean;
55
+ toggle?: () => void;
56
+ trigger?: () => void;
57
+ visualState?: CheckboxVisualState;
58
+ };
19
59
 
20
60
  type Props = SeblifyProps<{
61
+ animation?: CheckboxAnimation;
21
62
  ariaLabel?: string;
22
63
  checked?: boolean;
23
64
  disabled?: boolean;
65
+ duration?: number;
24
66
  label?: string;
25
67
  description?: string;
26
68
  indeterminate?: boolean;
69
+ intermediateMark?: CheckboxIntermediateMark;
70
+ managed?: CheckboxManagedState;
27
71
  name?: string;
28
72
  onclick?: (event: MouseEvent) => void;
73
+ radius?: CheckboxRadius;
74
+ size?: CheckboxSize;
29
75
  tone?: CheckboxTone;
76
+ variant?: CheckboxVariant;
30
77
  visualState?: CheckboxVisualState;
31
78
  value?: string;
32
79
  }>;
33
80
 
81
+ const CHECKBOX_RADIUS_MAP: Record<
82
+ Exclude<CheckboxRadius, CustomCssSize>,
83
+ string
84
+ > = {
85
+ none: '0',
86
+ sm: '0.125rem',
87
+ md: '0.25rem',
88
+ lg: '0.375rem',
89
+ full: '999px',
90
+ };
91
+ const CHECKBOX_SIZE_MAP: Record<
92
+ Exclude<CheckboxSize, CustomCssSize>,
93
+ string
94
+ > = {
95
+ sm: '1rem',
96
+ md: '1.125rem',
97
+ lg: '1.25rem',
98
+ xl: '1.5rem',
99
+ };
100
+ const CHECKBOX_SIZE_PIXEL_MAP: Record<
101
+ Exclude<CheckboxSize, CustomCssSize>,
102
+ number
103
+ > = {
104
+ sm: 16,
105
+ md: 18,
106
+ lg: 20,
107
+ xl: 24,
108
+ };
109
+ const CHECKBOX_SIZE_BASE_PIXELS = 24;
110
+ const CHECKBOX_STACK_LAYERS: CheckboxStackLayer[] = [
111
+ 'empty',
112
+ 'indirect-indeterminate',
113
+ 'indirect-checked',
114
+ 'direct-indeterminate',
115
+ 'direct-checked',
116
+ ];
117
+ const CHECKBOX_LAYER_PRIORITY: Record<CheckboxStackLayer, number> = {
118
+ empty: 0,
119
+ 'indirect-indeterminate': 1,
120
+ 'indirect-checked': 2,
121
+ 'direct-indeterminate': 3,
122
+ 'direct-checked': 4,
123
+ };
124
+ const CHECKBOX_CHECK_PATH = 'M3.75 12.75L8.75 17.75L20.5 5.75';
125
+ const CHECKBOX_OVERFLOW_CHECK_PATH = 'M6.25 9.875L11.75 15.375L24.75 2.375';
126
+
34
127
  let {
128
+ animation = 'scale',
35
129
  ariaLabel,
36
130
  checked = $bindable(false),
37
131
  disabled = false,
132
+ duration,
38
133
  label,
39
134
  description,
40
135
  indeterminate = false,
136
+ intermediateMark = 'dash',
137
+ managed,
41
138
  name,
42
139
  onclick,
140
+ radius = 'md',
141
+ size = 'md',
43
142
  tone,
143
+ variant = 'solid',
44
144
  visualState = 'default',
45
145
  value,
46
146
  }: Props = $props();
@@ -51,73 +151,608 @@
51
151
  const descriptionId = $derived(
52
152
  description ? `${checkboxId}-description` : undefined,
53
153
  );
154
+ const radiusValue = $derived(resolveRadiusValue(radius));
155
+ const sizeValue = $derived(resolveSizeValue(size));
156
+ const durationValue = $derived(resolveDurationValue(duration));
157
+ const resolvedChecked = $derived(managed?.checked ?? checked);
158
+ const resolvedDisabled = $derived(managed?.disabled ?? disabled);
159
+ const resolvedIndeterminate = $derived(
160
+ managed?.indeterminate ?? indeterminate,
161
+ );
162
+ const resolvedVisualState = $derived(managed?.visualState ?? visualState);
163
+ const checkPath = $derived(
164
+ variant === 'overflow' ? CHECKBOX_OVERFLOW_CHECK_PATH : CHECKBOX_CHECK_PATH,
165
+ );
166
+ const intermediatePath = $derived(
167
+ intermediateMark === 'tilde'
168
+ ? 'M4 13C6 9 8.5 9 11 13C13.5 17 16 17 20 11'
169
+ : 'M4 12H20',
170
+ );
171
+ let activeAnimation = $state<CheckboxAnimation>('scale');
172
+ let animateFromClick = false;
173
+ let clearAnimateFromClickTimeout: ReturnType<typeof setTimeout> | undefined;
174
+ let animating = $state(false);
175
+ let observedVisualLayer: CheckboxVisualLayer | undefined;
176
+ let observedSelectedState: CheckboxSelectedState | undefined;
177
+ let observedHasDerivedLayer: boolean | undefined;
178
+ let observedTopLayer: CheckboxStackLayer | undefined;
179
+ let transitionFromLayer = $state<CheckboxStackLayer>('empty');
180
+ let transitionToLayer = $state<CheckboxStackLayer>('empty');
181
+ let stackTransition = $state<CheckboxStackTransition>('none');
182
+ let derivedLayerState = $state<
183
+ Exclude<CheckboxSelectedState, 'unchecked'> | 'none'
184
+ >('none');
185
+ let layerTransition = $state<
186
+ | 'none'
187
+ | 'empty-to-derived'
188
+ | 'derived-to-empty'
189
+ | 'direct-to-derived'
190
+ | 'derived-to-direct'
191
+ >('none');
192
+ const renderedAnimation = $derived(animating ? activeAnimation : animation);
193
+ const defaultDurationValue = $derived(
194
+ `${resolveDefaultAnimationDuration(renderedAnimation, size)}ms`,
195
+ );
54
196
 
55
197
  const dataState = $derived(
56
- disabled && indeterminate
198
+ resolvedDisabled && resolvedIndeterminate
57
199
  ? 'disabled-indeterminate'
58
- : disabled && checked
59
- ? 'disabled-checked'
60
- : disabled
61
- ? 'disabled-unchecked'
62
- : indeterminate
63
- ? 'indeterminate'
64
- : checked
65
- ? 'checked'
66
- : 'unchecked',
200
+ : resolvedDisabled && resolvedChecked
201
+ ? 'disabled-checked'
202
+ : resolvedDisabled
203
+ ? 'disabled-unchecked'
204
+ : resolvedIndeterminate
205
+ ? 'indeterminate'
206
+ : resolvedChecked
207
+ ? 'checked'
208
+ : 'unchecked',
67
209
  );
210
+ const selectedState = $derived<CheckboxSelectedState>(
211
+ resolvedIndeterminate
212
+ ? 'indeterminate'
213
+ : resolvedChecked
214
+ ? 'checked'
215
+ : 'unchecked',
216
+ );
217
+ const derivedVisual = $derived(
218
+ resolvedVisualState === 'derived' || resolvedVisualState === 'indirect',
219
+ );
220
+ const hasDerivedLayer = $derived(
221
+ resolvedVisualState === 'derived' ||
222
+ resolvedVisualState === 'indirect' ||
223
+ resolvedVisualState === 'direct-and-derived' ||
224
+ resolvedVisualState === 'direct-and-indirect',
225
+ );
226
+ const visualLayer = $derived<CheckboxVisualLayer>(
227
+ selectedState === 'unchecked'
228
+ ? 'empty'
229
+ : derivedVisual
230
+ ? 'derived'
231
+ : 'direct',
232
+ );
233
+ const topLayer = $derived(
234
+ resolveTopLayer(selectedState, resolvedVisualState, derivedVisual),
235
+ );
236
+ const animationStateSignature = $derived(
237
+ `${selectedState}:${resolvedVisualState}`,
238
+ );
239
+ let hasObservedAnimationState = false;
68
240
 
69
241
  $effect(() => {
70
242
  if (inputElement) {
71
- inputElement.checked = checked;
72
- inputElement.indeterminate = indeterminate;
243
+ inputElement.checked = resolvedChecked;
244
+ inputElement.indeterminate = resolvedIndeterminate;
245
+ }
246
+ });
247
+
248
+ $effect(() => {
249
+ const signature = animationStateSignature;
250
+ const currentVisualLayer = visualLayer;
251
+ const currentSelectedState = selectedState;
252
+ const currentHasDerivedLayer = hasDerivedLayer;
253
+ const currentTopLayer = topLayer;
254
+
255
+ if (!hasObservedAnimationState) {
256
+ hasObservedAnimationState = true;
257
+ observedVisualLayer = currentVisualLayer;
258
+ observedSelectedState = currentSelectedState;
259
+ observedHasDerivedLayer = currentHasDerivedLayer;
260
+ observedTopLayer = currentTopLayer;
261
+ transitionFromLayer = currentTopLayer;
262
+ transitionToLayer = currentTopLayer;
263
+ derivedLayerState = resolveSettledDerivedLayerState(
264
+ currentHasDerivedLayer,
265
+ currentSelectedState,
266
+ );
267
+ return;
268
+ }
269
+
270
+ const previousVisualLayer = observedVisualLayer;
271
+ const previousSelectedState = observedSelectedState;
272
+ const previousHasDerivedLayer = observedHasDerivedLayer;
273
+ const previousTopLayer = observedTopLayer ?? 'empty';
274
+ const animationForChange = consumeAnimationForChange();
275
+ layerTransition = resolveLayerTransition(
276
+ previousVisualLayer,
277
+ currentVisualLayer,
278
+ );
279
+ transitionFromLayer = previousTopLayer;
280
+ transitionToLayer = currentTopLayer;
281
+ stackTransition = resolveStackTransition(previousTopLayer, currentTopLayer);
282
+ derivedLayerState = resolveTransitionDerivedLayerState(
283
+ previousVisualLayer,
284
+ previousSelectedState,
285
+ previousHasDerivedLayer,
286
+ currentSelectedState,
287
+ currentHasDerivedLayer,
288
+ );
289
+ observedVisualLayer = currentVisualLayer;
290
+ observedSelectedState = currentSelectedState;
291
+ observedHasDerivedLayer = currentHasDerivedLayer;
292
+ observedTopLayer = currentTopLayer;
293
+
294
+ if (animationForChange === 'none') {
295
+ activeAnimation = animationForChange;
296
+ animating = false;
297
+ layerTransition = 'none';
298
+ stackTransition = 'none';
299
+ transitionFromLayer = currentTopLayer;
300
+ transitionToLayer = currentTopLayer;
301
+ derivedLayerState = resolveSettledDerivedLayerState(
302
+ currentHasDerivedLayer,
303
+ currentSelectedState,
304
+ );
305
+ return;
73
306
  }
307
+
308
+ activeAnimation = animationForChange;
309
+ animating = true;
310
+
311
+ const animationDuration = untrack(() =>
312
+ resolveAnimationDuration(
313
+ animationForChange,
314
+ duration,
315
+ stackTransition === 'exit' ? 'unchecked' : dataState,
316
+ size,
317
+ ),
318
+ );
319
+ const timeout = setTimeout(() => {
320
+ if (signature === animationStateSignature) {
321
+ animating = false;
322
+ layerTransition = 'none';
323
+ stackTransition = 'none';
324
+ transitionFromLayer = topLayer;
325
+ transitionToLayer = topLayer;
326
+ derivedLayerState = resolveSettledDerivedLayerState(
327
+ hasDerivedLayer,
328
+ selectedState,
329
+ );
330
+ }
331
+ }, animationDuration + 40);
332
+
333
+ return () => {
334
+ clearTimeout(timeout);
335
+ };
74
336
  });
75
337
 
76
338
  function handleInputChange(event: Event) {
77
- if (disabled) {
339
+ if (managed || resolvedDisabled) {
78
340
  const input = event.currentTarget as HTMLInputElement;
79
341
 
80
- input.checked = checked;
81
- input.indeterminate = indeterminate;
342
+ input.checked = resolvedChecked;
343
+ input.indeterminate = resolvedIndeterminate;
82
344
  return;
83
345
  }
84
346
 
347
+ startAnimation();
85
348
  checked = (event.currentTarget as HTMLInputElement).checked;
86
349
  }
87
350
 
88
351
  function handleInputClick(event: MouseEvent) {
89
- if (disabled) {
352
+ if (resolvedDisabled) {
90
353
  event.preventDefault();
91
354
  event.stopPropagation();
92
355
 
93
356
  if (inputElement) {
94
- inputElement.checked = checked;
95
- inputElement.indeterminate = indeterminate;
357
+ inputElement.checked = resolvedChecked;
358
+ inputElement.indeterminate = resolvedIndeterminate;
96
359
  }
97
360
 
98
361
  return;
99
362
  }
100
363
 
364
+ requestClickAnimation();
365
+
366
+ if (managed) {
367
+ event.preventDefault();
368
+ managed.trigger?.();
369
+ if (!managed.trigger) {
370
+ managed.toggle?.();
371
+ }
372
+ }
373
+
101
374
  onclick?.(event);
102
375
  }
376
+
377
+ function requestClickAnimation() {
378
+ animateFromClick = true;
379
+ activeAnimation = animation;
380
+
381
+ if (clearAnimateFromClickTimeout) {
382
+ clearTimeout(clearAnimateFromClickTimeout);
383
+ }
384
+
385
+ clearAnimateFromClickTimeout = setTimeout(() => {
386
+ animateFromClick = false;
387
+ clearAnimateFromClickTimeout = undefined;
388
+ }, 0);
389
+ }
390
+
391
+ function consumeAnimationForChange(): CheckboxAnimation {
392
+ const animationForChange = animateFromClick
393
+ ? animation
394
+ : animation === 'none'
395
+ ? 'none'
396
+ : 'fade';
397
+
398
+ animateFromClick = false;
399
+
400
+ if (clearAnimateFromClickTimeout) {
401
+ clearTimeout(clearAnimateFromClickTimeout);
402
+ clearAnimateFromClickTimeout = undefined;
403
+ }
404
+
405
+ return animationForChange;
406
+ }
407
+
408
+ function cssSize(value: CustomCssSize): string {
409
+ return typeof value === 'number' ? `${value}px` : value;
410
+ }
411
+
412
+ function resolveRadiusValue(value: CheckboxRadius): string {
413
+ if (typeof value === 'number') {
414
+ return cssSize(value);
415
+ }
416
+
417
+ return (
418
+ CHECKBOX_RADIUS_MAP[value as keyof typeof CHECKBOX_RADIUS_MAP] ?? value
419
+ );
420
+ }
421
+
422
+ function resolveSizeValue(value: CheckboxSize): string {
423
+ if (typeof value === 'number') {
424
+ return cssSize(value);
425
+ }
426
+
427
+ return CHECKBOX_SIZE_MAP[value as keyof typeof CHECKBOX_SIZE_MAP] ?? value;
428
+ }
429
+
430
+ function resolveDurationNumber(value: number): number {
431
+ if (!Number.isFinite(value)) {
432
+ return 0;
433
+ }
434
+
435
+ return Math.max(0, value);
436
+ }
437
+
438
+ function resolveDurationValue(value: number | undefined): string | undefined {
439
+ return value === undefined
440
+ ? undefined
441
+ : `${resolveDurationNumber(value)}ms`;
442
+ }
443
+
444
+ function resolveSettledDerivedLayerState(
445
+ hasLayer: boolean,
446
+ state: CheckboxSelectedState,
447
+ ): Exclude<CheckboxSelectedState, 'unchecked'> | 'none' {
448
+ return hasLayer && state !== 'unchecked' ? state : 'none';
449
+ }
450
+
451
+ function resolveTransitionDerivedLayerState(
452
+ previousLayer: CheckboxVisualLayer | undefined,
453
+ previousState: CheckboxSelectedState | undefined,
454
+ previousHasLayer: boolean | undefined,
455
+ currentState: CheckboxSelectedState,
456
+ currentHasLayer: boolean,
457
+ ): Exclude<CheckboxSelectedState, 'unchecked'> | 'none' {
458
+ if (currentHasLayer && currentState !== 'unchecked') {
459
+ return currentState;
460
+ }
461
+
462
+ if (
463
+ previousLayer !== 'empty' &&
464
+ previousHasLayer &&
465
+ previousState &&
466
+ previousState !== 'unchecked'
467
+ ) {
468
+ return previousState;
469
+ }
470
+
471
+ return 'none';
472
+ }
473
+
474
+ function resolveLayerTransition(
475
+ previousLayer: CheckboxVisualLayer | undefined,
476
+ currentLayer: CheckboxVisualLayer,
477
+ ):
478
+ | 'none'
479
+ | 'empty-to-derived'
480
+ | 'derived-to-empty'
481
+ | 'direct-to-derived'
482
+ | 'derived-to-direct' {
483
+ if (previousLayer === 'empty' && currentLayer === 'derived') {
484
+ return 'empty-to-derived';
485
+ }
486
+
487
+ if (previousLayer === 'derived' && currentLayer === 'empty') {
488
+ return 'derived-to-empty';
489
+ }
490
+
491
+ if (previousLayer === 'direct' && currentLayer === 'derived') {
492
+ return 'direct-to-derived';
493
+ }
494
+
495
+ if (previousLayer === 'derived' && currentLayer === 'direct') {
496
+ return 'derived-to-direct';
497
+ }
498
+
499
+ return 'none';
500
+ }
501
+
502
+ function resolveTopLayer(
503
+ state: CheckboxSelectedState,
504
+ visualStateValue: CheckboxVisualState,
505
+ derivedVisualValue: boolean,
506
+ ): CheckboxStackLayer {
507
+ if (state === 'unchecked') {
508
+ return 'empty';
509
+ }
510
+
511
+ if (derivedVisualValue) {
512
+ return state === 'checked'
513
+ ? 'indirect-checked'
514
+ : 'indirect-indeterminate';
515
+ }
516
+
517
+ if (
518
+ visualStateValue === 'direct-and-derived' ||
519
+ visualStateValue === 'direct-and-indirect' ||
520
+ visualStateValue === 'default'
521
+ ) {
522
+ return state === 'checked' ? 'direct-checked' : 'direct-indeterminate';
523
+ }
524
+
525
+ return 'empty';
526
+ }
527
+
528
+ function resolveStackTransition(
529
+ previousLayer: CheckboxStackLayer,
530
+ currentLayer: CheckboxStackLayer,
531
+ ): CheckboxStackTransition {
532
+ if (previousLayer === currentLayer) {
533
+ return 'none';
534
+ }
535
+
536
+ return CHECKBOX_LAYER_PRIORITY[currentLayer] >
537
+ CHECKBOX_LAYER_PRIORITY[previousLayer]
538
+ ? 'enter'
539
+ : 'exit';
540
+ }
541
+
542
+ function resolveLayerState(layer: CheckboxStackLayer): CheckboxLayerState {
543
+ if (stackTransition === 'enter') {
544
+ if (layer === transitionToLayer) {
545
+ return 'enter';
546
+ }
547
+
548
+ if (layer === transitionFromLayer) {
549
+ return layer === 'empty' ||
550
+ (renderedAnimation === 'bounce' &&
551
+ layer.startsWith('indirect') &&
552
+ transitionToLayer.startsWith('direct'))
553
+ ? 'exit'
554
+ : 'visible';
555
+ }
556
+ }
557
+
558
+ if (stackTransition === 'exit') {
559
+ if (layer === transitionFromLayer) {
560
+ return 'exit';
561
+ }
562
+
563
+ if (layer === transitionToLayer) {
564
+ return layer === 'empty' ||
565
+ (renderedAnimation === 'bounce' && layer.startsWith('indirect'))
566
+ ? 'enter'
567
+ : 'visible';
568
+ }
569
+ }
570
+
571
+ if (layer === topLayer) {
572
+ return 'visible';
573
+ }
574
+
575
+ return 'hidden';
576
+ }
577
+
578
+ function layerKind(layer: CheckboxStackLayer): 'direct' | 'indirect' {
579
+ return layer.startsWith('direct') ? 'direct' : 'indirect';
580
+ }
581
+
582
+ function layerSelection(
583
+ layer: CheckboxStackLayer,
584
+ ): Exclude<CheckboxSelectedState, 'unchecked'> {
585
+ return layer.endsWith('checked') ? 'checked' : 'indeterminate';
586
+ }
587
+
588
+ function startAnimation() {
589
+ if (activeAnimation === 'none' || !hasObservedAnimationState) {
590
+ return;
591
+ }
592
+
593
+ animating = true;
594
+ }
595
+
596
+ function resolveAnimationDuration(
597
+ animationValue: CheckboxAnimation,
598
+ durationValue: number | undefined,
599
+ stateValue = dataState,
600
+ sizeValue = size,
601
+ ): number {
602
+ const baseDuration =
603
+ durationValue !== undefined
604
+ ? resolveDurationNumber(durationValue)
605
+ : resolveDefaultAnimationDuration(animationValue, sizeValue);
606
+
607
+ if (
608
+ animationValue === 'bounce' &&
609
+ (stateValue === 'unchecked' || stateValue === 'disabled-unchecked')
610
+ ) {
611
+ return (baseDuration * 9) / 16;
612
+ }
613
+
614
+ if (
615
+ animationValue === 'rise' &&
616
+ (stateValue === 'unchecked' || stateValue === 'disabled-unchecked')
617
+ ) {
618
+ return (baseDuration * 9) / 16;
619
+ }
620
+
621
+ if (
622
+ (animationValue === 'bump' || animationValue === 'pop') &&
623
+ (stateValue === 'unchecked' || stateValue === 'disabled-unchecked')
624
+ ) {
625
+ return (baseDuration * 3) / 5;
626
+ }
627
+
628
+ if (
629
+ animationValue === 'draw' &&
630
+ (stateValue === 'unchecked' || stateValue === 'disabled-unchecked')
631
+ ) {
632
+ return (baseDuration * 3) / 5;
633
+ }
634
+
635
+ if (
636
+ animationValue === 'draw' &&
637
+ (stateValue === 'checked' || stateValue === 'disabled-checked')
638
+ ) {
639
+ return (baseDuration * 5) / 4;
640
+ }
641
+
642
+ return baseDuration;
643
+ }
644
+
645
+ function resolveDefaultAnimationDuration(
646
+ animationValue: CheckboxAnimation,
647
+ sizeValue: CheckboxSize,
648
+ ): number {
649
+ if (animationValue === 'none') {
650
+ return 0;
651
+ }
652
+
653
+ return Math.max(
654
+ 0,
655
+ resolveBaseAnimationDuration(animationValue) +
656
+ resolveSizeDurationOffset(sizeValue),
657
+ );
658
+ }
659
+
660
+ function resolveBaseAnimationDuration(
661
+ animationValue: CheckboxAnimation,
662
+ ): number {
663
+ switch (animationValue) {
664
+ case 'bump':
665
+ return 220;
666
+ case 'pop':
667
+ return 300;
668
+ case 'draw':
669
+ return 340;
670
+ case 'fade':
671
+ return 300;
672
+ case 'scale':
673
+ return 240;
674
+ case 'rise':
675
+ case 'bounce':
676
+ default:
677
+ return 400;
678
+ }
679
+ }
680
+
681
+ function resolveSizeDurationOffset(sizeValue: CheckboxSize): number {
682
+ const pixels = resolveSizePixels(sizeValue);
683
+
684
+ if (pixels === undefined) {
685
+ return 0;
686
+ }
687
+
688
+ if (pixels <= CHECKBOX_SIZE_BASE_PIXELS) {
689
+ return ((pixels - CHECKBOX_SIZE_BASE_PIXELS) / 8) * 20;
690
+ }
691
+
692
+ return ((pixels - CHECKBOX_SIZE_BASE_PIXELS) / 16) * 20;
693
+ }
694
+
695
+ function resolveSizePixels(sizeValue: CheckboxSize): number | undefined {
696
+ if (typeof sizeValue === 'number') {
697
+ return sizeValue;
698
+ }
699
+
700
+ if (sizeValue in CHECKBOX_SIZE_PIXEL_MAP) {
701
+ return CHECKBOX_SIZE_PIXEL_MAP[
702
+ sizeValue as keyof typeof CHECKBOX_SIZE_PIXEL_MAP
703
+ ];
704
+ }
705
+
706
+ const pxMatch = sizeValue.match(/^(-?\d+(?:\.\d+)?)px$/);
707
+
708
+ if (pxMatch) {
709
+ return Number(pxMatch[1]);
710
+ }
711
+
712
+ const remMatch = sizeValue.match(/^(-?\d+(?:\.\d+)?)rem$/);
713
+
714
+ if (remMatch) {
715
+ return Number(remMatch[1]) * 16;
716
+ }
717
+
718
+ return undefined;
719
+ }
103
720
  </script>
104
721
 
105
722
  <label
106
- class:disabled
723
+ class:disabled={resolvedDisabled}
107
724
  class="seblify-checkbox seblify-tone-context"
108
- data-indeterminate={indeterminate}
725
+ data-animation={renderedAnimation}
726
+ data-animating={animating}
727
+ data-has-description={description ? true : undefined}
728
+ data-has-label={label ? true : undefined}
729
+ data-indeterminate={resolvedIndeterminate}
730
+ data-radius={radius}
109
731
  data-seblify-tone={tone ?? 'inherit'}
732
+ data-size={size}
110
733
  data-state={dataState}
111
- data-visual-state={visualState}
734
+ data-derived-layer-state={derivedLayerState}
735
+ data-intermediate-mark={intermediateMark}
736
+ data-layer-transition={layerTransition}
737
+ data-stack-transition={stackTransition}
738
+ data-transition-from-layer={transitionFromLayer}
739
+ data-transition-to-layer={transitionToLayer}
740
+ data-variant={variant}
741
+ data-visual-layer={visualLayer}
742
+ data-visual-state={resolvedVisualState}
743
+ style:--checkbox-radius={radiusValue}
744
+ style:--checkbox-size={sizeValue}
745
+ style:--checkbox-default-duration={defaultDurationValue}
746
+ style:--checkbox-duration={durationValue}
112
747
  >
113
748
  <input
114
- aria-checked={indeterminate ? 'mixed' : undefined}
749
+ aria-checked={resolvedIndeterminate ? 'mixed' : undefined}
115
750
  aria-describedby={descriptionId}
116
751
  aria-label={labelId ? undefined : ariaLabel}
117
752
  aria-labelledby={labelId}
118
753
  bind:this={inputElement}
119
- checked={checked}
120
- {disabled}
754
+ checked={resolvedChecked}
755
+ disabled={resolvedDisabled}
121
756
  {name}
122
757
  data-state={dataState}
123
758
  onchange={handleInputChange}
@@ -126,7 +761,174 @@
126
761
  {value}
127
762
  />
128
763
  <span class="seblify-checkbox__control" aria-hidden="true">
129
- <span class="seblify-checkbox__mark"></span>
764
+ <span
765
+ class="seblify-checkbox__derived-layer"
766
+ data-state={derivedLayerState}
767
+ >
768
+ <span class="seblify-checkbox__derived-mark">
769
+ <svg
770
+ class="seblify-checkbox__derived-check"
771
+ focusable="false"
772
+ viewBox="0 0 24 24"
773
+ >
774
+ <path
775
+ class="seblify-checkbox__derived-check-path"
776
+ d={checkPath}
777
+ pathLength="1"
778
+ />
779
+ </svg>
780
+ <svg
781
+ class="seblify-checkbox__derived-indeterminate"
782
+ focusable="false"
783
+ viewBox="0 0 24 24"
784
+ >
785
+ {#if intermediateMark === 'dot'}
786
+ <circle
787
+ class="seblify-checkbox__derived-indeterminate-path"
788
+ cx="12"
789
+ cy="12"
790
+ data-intermediate-mark={intermediateMark}
791
+ r="3.25"
792
+ />
793
+ {:else if intermediateMark === 'square'}
794
+ <rect
795
+ class="seblify-checkbox__derived-indeterminate-path"
796
+ data-intermediate-mark={intermediateMark}
797
+ height="7.5"
798
+ rx="0.35"
799
+ width="7.5"
800
+ x="8.25"
801
+ y="8.25"
802
+ />
803
+ {:else}
804
+ <path
805
+ class="seblify-checkbox__derived-indeterminate-path"
806
+ d={intermediatePath}
807
+ data-intermediate-mark={intermediateMark}
808
+ pathLength="1"
809
+ />
810
+ {/if}
811
+ </svg>
812
+ </span>
813
+ </span>
814
+ <span class="seblify-checkbox__mark">
815
+ <svg
816
+ class="seblify-checkbox__check"
817
+ focusable="false"
818
+ viewBox="0 0 24 24"
819
+ >
820
+ <path
821
+ class="seblify-checkbox__check-cutout"
822
+ d={checkPath}
823
+ pathLength="1"
824
+ />
825
+ <path
826
+ class="seblify-checkbox__check-path"
827
+ d={checkPath}
828
+ pathLength="1"
829
+ />
830
+ </svg>
831
+ <svg
832
+ class="seblify-checkbox__indeterminate"
833
+ focusable="false"
834
+ viewBox="0 0 24 24"
835
+ >
836
+ {#if intermediateMark === 'dot'}
837
+ <circle
838
+ class="seblify-checkbox__indeterminate-path"
839
+ cx="12"
840
+ cy="12"
841
+ data-intermediate-mark={intermediateMark}
842
+ r="3.25"
843
+ />
844
+ {:else if intermediateMark === 'square'}
845
+ <rect
846
+ class="seblify-checkbox__indeterminate-path"
847
+ data-intermediate-mark={intermediateMark}
848
+ height="7.5"
849
+ rx="0.35"
850
+ width="7.5"
851
+ x="8.25"
852
+ y="8.25"
853
+ />
854
+ {:else}
855
+ <path
856
+ class="seblify-checkbox__indeterminate-path"
857
+ d={intermediatePath}
858
+ data-intermediate-mark={intermediateMark}
859
+ pathLength="1"
860
+ />
861
+ {/if}
862
+ </svg>
863
+ </span>
864
+ <span class="seblify-checkbox__visual-stack">
865
+ {#each CHECKBOX_STACK_LAYERS as layer}
866
+ <span
867
+ class="seblify-checkbox__visual-layer"
868
+ data-checkbox-layer={layer}
869
+ data-layer-kind={layer === 'empty' ? undefined : layerKind(layer)}
870
+ data-layer-state={resolveLayerState(layer)}
871
+ data-selection={layer === 'empty' ? undefined : layerSelection(layer)}
872
+ >
873
+ <span class="seblify-checkbox__visual-surface"></span>
874
+ {#if layer !== 'empty'}
875
+ <span class="seblify-checkbox__visual-mark">
876
+ {#if layerSelection(layer) === 'checked'}
877
+ <svg
878
+ class="seblify-checkbox__visual-check"
879
+ focusable="false"
880
+ viewBox="0 0 24 24"
881
+ >
882
+ <path
883
+ class="seblify-checkbox__visual-check-cutout"
884
+ d={checkPath}
885
+ pathLength="1"
886
+ />
887
+ <path
888
+ class="seblify-checkbox__visual-check-path"
889
+ d={checkPath}
890
+ pathLength="1"
891
+ />
892
+ </svg>
893
+ {:else}
894
+ <svg
895
+ class="seblify-checkbox__visual-indeterminate"
896
+ focusable="false"
897
+ viewBox="0 0 24 24"
898
+ >
899
+ {#if intermediateMark === 'dot'}
900
+ <circle
901
+ class="seblify-checkbox__visual-indeterminate-path"
902
+ cx="12"
903
+ cy="12"
904
+ data-intermediate-mark={intermediateMark}
905
+ r="3.25"
906
+ />
907
+ {:else if intermediateMark === 'square'}
908
+ <rect
909
+ class="seblify-checkbox__visual-indeterminate-path"
910
+ data-intermediate-mark={intermediateMark}
911
+ height="7.5"
912
+ rx="0.35"
913
+ width="7.5"
914
+ x="8.25"
915
+ y="8.25"
916
+ />
917
+ {:else}
918
+ <path
919
+ class="seblify-checkbox__visual-indeterminate-path"
920
+ d={intermediatePath}
921
+ data-intermediate-mark={intermediateMark}
922
+ pathLength="1"
923
+ />
924
+ {/if}
925
+ </svg>
926
+ {/if}
927
+ </span>
928
+ {/if}
929
+ </span>
930
+ {/each}
931
+ </span>
130
932
  </span>
131
933
  <span class="seblify-checkbox__content">
132
934
  {#if label}
@@ -141,136 +943,795 @@
141
943
  </label>
142
944
 
143
945
  <style>:where(.seblify-tone-context) {
144
- --seblify-tone-fill: var(--seblify-color-fill-neutral, #516176);
145
- --seblify-tone-fill-text: var(--seblify-color-fill-neutral-text, #ffffff);
146
- --seblify-tone-surface: var(--seblify-color-surface-muted, #d9e0e8);
147
- --seblify-tone-text: var(--seblify-color-text-muted, #516176);
148
- --seblify-tone-border: var(--seblify-color-border, #c8d2df);
946
+ --seblify-tone-fill: var(--seblify-color-neutral-fill, #6f5f55);
947
+ --seblify-tone-fill-hover: var(--seblify-color-neutral-fill-hover, #5b4d45);
948
+ --seblify-tone-fill-text: var(--seblify-color-neutral-fill-text, #fff4e7);
949
+ --seblify-tone-surface: var(--seblify-color-neutral-surface, #f2ebe4);
950
+ --seblify-tone-surface-hover: var(
951
+ --seblify-color-neutral-surface-hover,
952
+ #ebe1d8
953
+ );
954
+ --seblify-tone-text: var(--seblify-color-neutral-text, #6f5f55);
955
+ --seblify-tone-border: var(--seblify-color-neutral-border, #ded0c4);
956
+ --seblify-tone-derived-surface: var(
957
+ --seblify-color-neutral-derived-surface,
958
+ var(--seblify-color-surface-muted, #f2ebe4)
959
+ );
960
+ --seblify-tone-derived-border: var(
961
+ --seblify-color-neutral-derived-border,
962
+ color-mix(
963
+ in srgb,
964
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
965
+ var(--seblify-color-border-strong, #c5afa0) 78%
966
+ )
967
+ );
968
+ --seblify-tone-derived-text: var(
969
+ --seblify-color-neutral-derived-text,
970
+ var(--seblify-color-text-subtle, #8b7a70)
971
+ );
972
+ --seblify-tone-on-inverse-surface: var(
973
+ --seblify-color-neutral-on-inverse-surface,
974
+ color-mix(
975
+ in srgb,
976
+ var(--seblify-color-text-inverse, #fff4e7) 10%,
977
+ var(--seblify-color-surface-inverse, #15110f) 90%
978
+ )
979
+ );
980
+ --seblify-tone-on-inverse-surface-hover: var(
981
+ --seblify-color-neutral-on-inverse-surface-hover,
982
+ color-mix(
983
+ in srgb,
984
+ var(--seblify-color-text-inverse, #fff4e7) 16%,
985
+ var(--seblify-color-surface-inverse, #15110f) 84%
986
+ )
987
+ );
988
+ --seblify-tone-on-inverse-text: var(
989
+ --seblify-color-neutral-on-inverse-text,
990
+ var(--seblify-color-text-inverse, #fff4e7)
991
+ );
992
+ --seblify-tone-on-inverse-border: var(
993
+ --seblify-color-neutral-on-inverse-border,
994
+ var(--seblify-color-border-inverse, #4a3b32)
995
+ );
996
+ --seblify-tone-control-fill: var(--seblify-tone-fill);
997
+ --seblify-tone-control-fill-hover: var(--seblify-tone-fill-hover);
998
+ --seblify-tone-control-fill-text: var(--seblify-tone-fill-text);
999
+ --seblify-tone-control-surface: var(--seblify-tone-surface);
1000
+ --seblify-tone-control-surface-hover: var(--seblify-tone-surface-hover);
1001
+ --seblify-tone-control-default-text: var(--seblify-color-text, #211916);
1002
+ --seblify-tone-control-text: var(--seblify-tone-text);
1003
+ --seblify-tone-control-border: var(--seblify-tone-border);
1004
+ --seblify-tone-control-derived-surface: var(--seblify-tone-derived-surface);
1005
+ --seblify-tone-control-derived-border: var(--seblify-tone-derived-border);
1006
+ --seblify-tone-control-derived-text: var(--seblify-tone-derived-text);
149
1007
  }
150
1008
 
151
1009
  :where(.seblify-tone-context[data-seblify-tone='inherit']) {
152
1010
  --seblify-tone-fill: var(
153
1011
  --seblify-current-tone-fill,
154
- var(--seblify-color-fill-neutral, #516176)
1012
+ var(--seblify-color-neutral-fill, #6f5f55)
1013
+ );
1014
+ --seblify-tone-fill-hover: var(
1015
+ --seblify-current-tone-fill-hover,
1016
+ var(--seblify-color-neutral-fill-hover, #5b4d45)
155
1017
  );
156
1018
  --seblify-tone-fill-text: var(
157
1019
  --seblify-current-tone-fill-text,
158
- var(--seblify-color-fill-neutral-text, #ffffff)
1020
+ var(--seblify-color-neutral-fill-text, #fff4e7)
159
1021
  );
160
1022
  --seblify-tone-surface: var(
161
1023
  --seblify-current-tone-surface,
162
- var(--seblify-color-surface-muted, #d9e0e8)
1024
+ var(--seblify-color-neutral-surface, #f2ebe4)
1025
+ );
1026
+ --seblify-tone-surface-hover: var(
1027
+ --seblify-current-tone-surface-hover,
1028
+ var(--seblify-color-neutral-surface-hover, #ebe1d8)
163
1029
  );
164
1030
  --seblify-tone-text: var(
165
1031
  --seblify-current-tone-text,
166
- var(--seblify-color-text-muted, #516176)
1032
+ var(--seblify-color-neutral-text, #6f5f55)
167
1033
  );
168
1034
  --seblify-tone-border: var(
169
1035
  --seblify-current-tone-border,
170
- var(--seblify-color-border, #c8d2df)
1036
+ var(--seblify-color-neutral-border, #ded0c4)
1037
+ );
1038
+ --seblify-tone-derived-surface: var(
1039
+ --seblify-current-tone-derived-surface,
1040
+ var(
1041
+ --seblify-color-neutral-derived-surface,
1042
+ var(--seblify-color-surface-muted, #f2ebe4)
1043
+ )
1044
+ );
1045
+ --seblify-tone-derived-border: var(
1046
+ --seblify-current-tone-derived-border,
1047
+ var(
1048
+ --seblify-color-neutral-derived-border,
1049
+ color-mix(
1050
+ in srgb,
1051
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1052
+ var(--seblify-color-border-strong, #c5afa0) 78%
1053
+ )
1054
+ )
1055
+ );
1056
+ --seblify-tone-derived-text: var(
1057
+ --seblify-current-tone-derived-text,
1058
+ var(
1059
+ --seblify-color-neutral-derived-text,
1060
+ var(--seblify-color-text-subtle, #8b7a70)
1061
+ )
1062
+ );
1063
+ --seblify-tone-on-inverse-surface: var(
1064
+ --seblify-current-tone-on-inverse-surface,
1065
+ var(
1066
+ --seblify-color-neutral-on-inverse-surface,
1067
+ color-mix(
1068
+ in srgb,
1069
+ var(--seblify-color-text-inverse, #fff4e7) 10%,
1070
+ var(--seblify-color-surface-inverse, #15110f) 90%
1071
+ )
1072
+ )
1073
+ );
1074
+ --seblify-tone-on-inverse-surface-hover: var(
1075
+ --seblify-current-tone-on-inverse-surface-hover,
1076
+ var(
1077
+ --seblify-color-neutral-on-inverse-surface-hover,
1078
+ color-mix(
1079
+ in srgb,
1080
+ var(--seblify-color-text-inverse, #fff4e7) 16%,
1081
+ var(--seblify-color-surface-inverse, #15110f) 84%
1082
+ )
1083
+ )
1084
+ );
1085
+ --seblify-tone-on-inverse-text: var(
1086
+ --seblify-current-tone-on-inverse-text,
1087
+ var(
1088
+ --seblify-color-neutral-on-inverse-text,
1089
+ var(--seblify-color-text-inverse, #fff4e7)
1090
+ )
1091
+ );
1092
+ --seblify-tone-on-inverse-border: var(
1093
+ --seblify-current-tone-on-inverse-border,
1094
+ var(
1095
+ --seblify-color-neutral-on-inverse-border,
1096
+ var(--seblify-color-border-inverse, #4a3b32)
1097
+ )
171
1098
  );
172
1099
  }
173
1100
 
174
1101
  :where(.seblify-tone-context[data-seblify-tone='neutral']) {
175
- --seblify-tone-fill: var(--seblify-color-fill-neutral, #516176);
176
- --seblify-tone-fill-text: var(--seblify-color-fill-neutral-text, #ffffff);
177
- --seblify-tone-surface: var(--seblify-color-surface-muted, #d9e0e8);
178
- --seblify-tone-text: var(--seblify-color-text-muted, #516176);
179
- --seblify-tone-border: var(--seblify-color-border, #c8d2df);
1102
+ --seblify-tone-fill: var(--seblify-color-neutral-fill, #6f5f55);
1103
+ --seblify-tone-fill-hover: var(--seblify-color-neutral-fill-hover, #5b4d45);
1104
+ --seblify-tone-fill-text: var(--seblify-color-neutral-fill-text, #fff4e7);
1105
+ --seblify-tone-surface: var(--seblify-color-neutral-surface, #f2ebe4);
1106
+ --seblify-tone-surface-hover: var(
1107
+ --seblify-color-neutral-surface-hover,
1108
+ #ebe1d8
1109
+ );
1110
+ --seblify-tone-text: var(--seblify-color-neutral-text, #6f5f55);
1111
+ --seblify-tone-border: var(--seblify-color-neutral-border, #ded0c4);
1112
+ --seblify-tone-derived-surface: var(
1113
+ --seblify-color-neutral-derived-surface,
1114
+ var(--seblify-color-surface-muted, #f2ebe4)
1115
+ );
1116
+ --seblify-tone-derived-border: var(
1117
+ --seblify-color-neutral-derived-border,
1118
+ color-mix(
1119
+ in srgb,
1120
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1121
+ var(--seblify-color-border-strong, #c5afa0) 78%
1122
+ )
1123
+ );
1124
+ --seblify-tone-derived-text: var(
1125
+ --seblify-color-neutral-derived-text,
1126
+ var(--seblify-color-text-subtle, #8b7a70)
1127
+ );
1128
+ --seblify-tone-on-inverse-surface: var(
1129
+ --seblify-color-neutral-on-inverse-surface,
1130
+ color-mix(
1131
+ in srgb,
1132
+ var(--seblify-color-text-inverse, #fff4e7) 10%,
1133
+ var(--seblify-color-surface-inverse, #15110f) 90%
1134
+ )
1135
+ );
1136
+ --seblify-tone-on-inverse-surface-hover: var(
1137
+ --seblify-color-neutral-on-inverse-surface-hover,
1138
+ color-mix(
1139
+ in srgb,
1140
+ var(--seblify-color-text-inverse, #fff4e7) 16%,
1141
+ var(--seblify-color-surface-inverse, #15110f) 84%
1142
+ )
1143
+ );
1144
+ --seblify-tone-on-inverse-text: var(
1145
+ --seblify-color-neutral-on-inverse-text,
1146
+ var(--seblify-color-text-inverse, #fff4e7)
1147
+ );
1148
+ --seblify-tone-on-inverse-border: var(
1149
+ --seblify-color-neutral-on-inverse-border,
1150
+ var(--seblify-color-border-inverse, #4a3b32)
1151
+ );
180
1152
  }
181
1153
 
182
1154
  :where(.seblify-tone-context[data-seblify-tone='strong']) {
183
- --seblify-tone-fill: var(--seblify-color-fill-strong, #172033);
184
- --seblify-tone-fill-text: var(--seblify-color-fill-strong-text, #ffffff);
185
- --seblify-tone-surface: var(--seblify-color-surface-raised, #ffffff);
186
- --seblify-tone-text: var(--seblify-color-text, #172033);
187
- --seblify-tone-border: var(--seblify-color-border-strong, #aab7c5);
1155
+ --seblify-tone-fill: var(--seblify-color-strong-fill, #211916);
1156
+ --seblify-tone-fill-hover: var(--seblify-color-strong-fill-hover, #080706);
1157
+ --seblify-tone-fill-text: var(--seblify-color-strong-fill-text, #fff4e7);
1158
+ --seblify-tone-surface: var(--seblify-color-strong-surface, #ffffff);
1159
+ --seblify-tone-surface-hover: var(
1160
+ --seblify-color-strong-surface-hover,
1161
+ #f2ebe4
1162
+ );
1163
+ --seblify-tone-text: var(--seblify-color-strong-text, #211916);
1164
+ --seblify-tone-border: var(--seblify-color-strong-border, #c5afa0);
1165
+ --seblify-tone-derived-surface: var(
1166
+ --seblify-color-strong-derived-surface,
1167
+ color-mix(
1168
+ in srgb,
1169
+ var(--seblify-tone-fill) 10%,
1170
+ var(--seblify-color-surface, #fffdf9) 90%
1171
+ )
1172
+ );
1173
+ --seblify-tone-derived-border: var(
1174
+ --seblify-color-strong-derived-border,
1175
+ color-mix(
1176
+ in srgb,
1177
+ var(--seblify-tone-fill) 26%,
1178
+ var(--seblify-color-border-strong, #c5afa0) 74%
1179
+ )
1180
+ );
1181
+ --seblify-tone-derived-text: var(
1182
+ --seblify-color-strong-derived-text,
1183
+ color-mix(
1184
+ in srgb,
1185
+ var(--seblify-tone-fill) 66%,
1186
+ var(--seblify-color-text-muted, #6f5f55) 34%
1187
+ )
1188
+ );
1189
+ --seblify-tone-on-inverse-surface: var(
1190
+ --seblify-color-strong-on-inverse-surface,
1191
+ color-mix(
1192
+ in srgb,
1193
+ var(--seblify-color-text-inverse, #fff4e7) 14%,
1194
+ var(--seblify-color-surface-inverse, #15110f) 86%
1195
+ )
1196
+ );
1197
+ --seblify-tone-on-inverse-surface-hover: var(
1198
+ --seblify-color-strong-on-inverse-surface-hover,
1199
+ color-mix(
1200
+ in srgb,
1201
+ var(--seblify-color-text-inverse, #fff4e7) 22%,
1202
+ var(--seblify-color-surface-inverse, #15110f) 78%
1203
+ )
1204
+ );
1205
+ --seblify-tone-on-inverse-text: var(
1206
+ --seblify-color-strong-on-inverse-text,
1207
+ var(--seblify-color-text-inverse, #fff4e7)
1208
+ );
1209
+ --seblify-tone-on-inverse-border: var(
1210
+ --seblify-color-strong-on-inverse-border,
1211
+ color-mix(
1212
+ in srgb,
1213
+ var(--seblify-color-text-inverse, #fff4e7) 42%,
1214
+ var(--seblify-color-border-inverse, #4a3b32) 58%
1215
+ )
1216
+ );
188
1217
  }
189
1218
 
190
1219
  :where(.seblify-tone-context[data-seblify-tone='primary']) {
191
- --seblify-tone-fill: var(--seblify-color-fill-primary, #146a6f);
192
- --seblify-tone-fill-text: var(--seblify-color-fill-primary-text, #ffffff);
193
- --seblify-tone-surface: var(--seblify-color-surface-accent, #f7fbfb);
194
- --seblify-tone-text: var(--seblify-color-fill-primary, #146a6f);
195
- --seblify-tone-border: var(--seblify-color-border-accent, #9ab7ba);
1220
+ --seblify-tone-fill: var(--seblify-color-primary-fill, #b43f5a);
1221
+ --seblify-tone-fill-hover: var(--seblify-color-primary-fill-hover, #9f334d);
1222
+ --seblify-tone-fill-text: var(--seblify-color-primary-fill-text, #fff4e7);
1223
+ --seblify-tone-surface: var(--seblify-color-primary-surface, #fae8ed);
1224
+ --seblify-tone-surface-hover: var(
1225
+ --seblify-color-primary-surface-hover,
1226
+ #f5d5dd
1227
+ );
1228
+ --seblify-tone-text: var(--seblify-color-primary-text, #8f2b43);
1229
+ --seblify-tone-border: var(--seblify-color-primary-border, #e6a6b5);
1230
+ --seblify-tone-derived-surface: var(
1231
+ --seblify-color-primary-derived-surface,
1232
+ var(
1233
+ --seblify-color-neutral-derived-surface,
1234
+ var(--seblify-color-surface-muted, #f2ebe4)
1235
+ )
1236
+ );
1237
+ --seblify-tone-derived-border: var(
1238
+ --seblify-color-primary-derived-border,
1239
+ var(
1240
+ --seblify-color-neutral-derived-border,
1241
+ color-mix(
1242
+ in srgb,
1243
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1244
+ var(--seblify-color-border-strong, #c5afa0) 78%
1245
+ )
1246
+ )
1247
+ );
1248
+ --seblify-tone-derived-text: var(
1249
+ --seblify-color-primary-derived-text,
1250
+ var(
1251
+ --seblify-color-neutral-derived-text,
1252
+ var(--seblify-color-text-subtle, #8b7a70)
1253
+ )
1254
+ );
1255
+ --seblify-tone-on-inverse-surface: var(
1256
+ --seblify-color-primary-on-inverse-surface,
1257
+ color-mix(
1258
+ in srgb,
1259
+ var(--seblify-color-primary-fill, #b43f5a) 22%,
1260
+ var(--seblify-color-surface-inverse, #15110f) 78%
1261
+ )
1262
+ );
1263
+ --seblify-tone-on-inverse-surface-hover: var(
1264
+ --seblify-color-primary-on-inverse-surface-hover,
1265
+ color-mix(
1266
+ in srgb,
1267
+ var(--seblify-color-primary-fill, #b43f5a) 32%,
1268
+ var(--seblify-color-surface-inverse, #15110f) 68%
1269
+ )
1270
+ );
1271
+ --seblify-tone-on-inverse-text: var(
1272
+ --seblify-color-primary-on-inverse-text,
1273
+ var(--seblify-color-primary-fill, #b43f5a)
1274
+ );
1275
+ --seblify-tone-on-inverse-border: var(
1276
+ --seblify-color-primary-on-inverse-border,
1277
+ var(--seblify-color-primary-border, #e6a6b5)
1278
+ );
196
1279
  }
197
1280
 
198
1281
  :where(.seblify-tone-context[data-seblify-tone='secondary']) {
199
- --seblify-tone-fill: var(--seblify-color-fill-secondary, #5b5fc7);
200
- --seblify-tone-fill-text: var(
201
- --seblify-color-fill-secondary-text,
202
- #ffffff
1282
+ --seblify-tone-fill: var(--seblify-color-secondary-fill, #6f3a55);
1283
+ --seblify-tone-fill-hover: var(--seblify-color-secondary-fill-hover, #5e2f47);
1284
+ --seblify-tone-fill-text: var(--seblify-color-secondary-fill-text, #fff4e7);
1285
+ --seblify-tone-surface: var(--seblify-color-secondary-surface, #f4e5ee);
1286
+ --seblify-tone-surface-hover: var(
1287
+ --seblify-color-secondary-surface-hover,
1288
+ #ecd3e0
1289
+ );
1290
+ --seblify-tone-text: var(--seblify-color-secondary-text, #6f3a55);
1291
+ --seblify-tone-border: var(--seblify-color-secondary-border, #d7a6bf);
1292
+ --seblify-tone-derived-surface: var(
1293
+ --seblify-color-secondary-derived-surface,
1294
+ var(
1295
+ --seblify-color-neutral-derived-surface,
1296
+ var(--seblify-color-surface-muted, #f2ebe4)
1297
+ )
1298
+ );
1299
+ --seblify-tone-derived-border: var(
1300
+ --seblify-color-secondary-derived-border,
1301
+ var(
1302
+ --seblify-color-neutral-derived-border,
1303
+ color-mix(
1304
+ in srgb,
1305
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1306
+ var(--seblify-color-border-strong, #c5afa0) 78%
1307
+ )
1308
+ )
1309
+ );
1310
+ --seblify-tone-derived-text: var(
1311
+ --seblify-color-secondary-derived-text,
1312
+ var(
1313
+ --seblify-color-neutral-derived-text,
1314
+ var(--seblify-color-text-subtle, #8b7a70)
1315
+ )
1316
+ );
1317
+ --seblify-tone-on-inverse-surface: var(
1318
+ --seblify-color-secondary-on-inverse-surface,
1319
+ color-mix(
1320
+ in srgb,
1321
+ var(--seblify-color-secondary-fill, #6f3a55) 22%,
1322
+ var(--seblify-color-surface-inverse, #15110f) 78%
1323
+ )
1324
+ );
1325
+ --seblify-tone-on-inverse-surface-hover: var(
1326
+ --seblify-color-secondary-on-inverse-surface-hover,
1327
+ color-mix(
1328
+ in srgb,
1329
+ var(--seblify-color-secondary-fill, #6f3a55) 32%,
1330
+ var(--seblify-color-surface-inverse, #15110f) 68%
1331
+ )
1332
+ );
1333
+ --seblify-tone-on-inverse-text: var(
1334
+ --seblify-color-secondary-on-inverse-text,
1335
+ var(--seblify-color-secondary-fill, #6f3a55)
1336
+ );
1337
+ --seblify-tone-on-inverse-border: var(
1338
+ --seblify-color-secondary-on-inverse-border,
1339
+ var(--seblify-color-secondary-border, #d7a6bf)
203
1340
  );
204
- --seblify-tone-surface: var(--seblify-color-secondary-surface, #f0efff);
205
- --seblify-tone-text: var(--seblify-color-secondary-text, #2f316f);
206
- --seblify-tone-border: var(--seblify-color-secondary-border, #c8c6f4);
207
1341
  }
208
1342
 
209
1343
  :where(.seblify-tone-context[data-seblify-tone='success']) {
210
- --seblify-tone-fill: var(--seblify-color-fill-success, #1f7a3f);
211
- --seblify-tone-fill-text: var(--seblify-color-fill-success-text, #ffffff);
212
- --seblify-tone-surface: var(--seblify-color-success-surface, #e8f8ee);
213
- --seblify-tone-text: var(--seblify-color-success-text, #143d25);
214
- --seblify-tone-border: var(--seblify-color-success-border, #b8ddc7);
1344
+ --seblify-tone-fill: var(--seblify-color-success-fill, #777447);
1345
+ --seblify-tone-fill-hover: var(--seblify-color-success-fill-hover, #66633c);
1346
+ --seblify-tone-fill-text: var(--seblify-color-success-fill-text, #fff4e7);
1347
+ --seblify-tone-surface: var(--seblify-color-success-surface, #eeeddf);
1348
+ --seblify-tone-surface-hover: var(
1349
+ --seblify-color-success-surface-hover,
1350
+ #e1dfc4
1351
+ );
1352
+ --seblify-tone-text: var(--seblify-color-success-text, #5d5b34);
1353
+ --seblify-tone-border: var(--seblify-color-success-border, #cbc790);
1354
+ --seblify-tone-derived-surface: var(
1355
+ --seblify-color-success-derived-surface,
1356
+ var(
1357
+ --seblify-color-neutral-derived-surface,
1358
+ var(--seblify-color-surface-muted, #f2ebe4)
1359
+ )
1360
+ );
1361
+ --seblify-tone-derived-border: var(
1362
+ --seblify-color-success-derived-border,
1363
+ var(
1364
+ --seblify-color-neutral-derived-border,
1365
+ color-mix(
1366
+ in srgb,
1367
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1368
+ var(--seblify-color-border-strong, #c5afa0) 78%
1369
+ )
1370
+ )
1371
+ );
1372
+ --seblify-tone-derived-text: var(
1373
+ --seblify-color-success-derived-text,
1374
+ var(
1375
+ --seblify-color-neutral-derived-text,
1376
+ var(--seblify-color-text-subtle, #8b7a70)
1377
+ )
1378
+ );
1379
+ --seblify-tone-on-inverse-surface: var(
1380
+ --seblify-color-success-on-inverse-surface,
1381
+ color-mix(
1382
+ in srgb,
1383
+ var(--seblify-color-success-fill, #777447) 22%,
1384
+ var(--seblify-color-surface-inverse, #15110f) 78%
1385
+ )
1386
+ );
1387
+ --seblify-tone-on-inverse-surface-hover: var(
1388
+ --seblify-color-success-on-inverse-surface-hover,
1389
+ color-mix(
1390
+ in srgb,
1391
+ var(--seblify-color-success-fill, #777447) 32%,
1392
+ var(--seblify-color-surface-inverse, #15110f) 68%
1393
+ )
1394
+ );
1395
+ --seblify-tone-on-inverse-text: var(
1396
+ --seblify-color-success-on-inverse-text,
1397
+ var(--seblify-color-success-fill, #777447)
1398
+ );
1399
+ --seblify-tone-on-inverse-border: var(
1400
+ --seblify-color-success-on-inverse-border,
1401
+ var(--seblify-color-success-border, #cbc790)
1402
+ );
215
1403
  }
216
1404
 
217
1405
  :where(.seblify-tone-context[data-seblify-tone='danger']) {
218
- --seblify-tone-fill: var(--seblify-color-fill-danger, #c93434);
219
- --seblify-tone-fill-text: var(--seblify-color-fill-danger-text, #ffffff);
220
- --seblify-tone-surface: var(--seblify-color-error-surface, #fff0f0);
221
- --seblify-tone-text: var(--seblify-color-error-text, #5a1717);
222
- --seblify-tone-border: var(--seblify-color-error-border, #efb6b6);
1406
+ --seblify-tone-fill: var(--seblify-color-danger-fill, #b83d45);
1407
+ --seblify-tone-fill-hover: var(--seblify-color-danger-fill-hover, #9f3239);
1408
+ --seblify-tone-fill-text: var(--seblify-color-danger-fill-text, #fff4e7);
1409
+ --seblify-tone-surface: var(--seblify-color-danger-surface, #fae7e8);
1410
+ --seblify-tone-surface-hover: var(
1411
+ --seblify-color-danger-surface-hover,
1412
+ #f3d2d4
1413
+ );
1414
+ --seblify-tone-text: var(--seblify-color-danger-text, #923038);
1415
+ --seblify-tone-border: var(--seblify-color-danger-border, #e2a2a7);
1416
+ --seblify-tone-derived-surface: var(
1417
+ --seblify-color-danger-derived-surface,
1418
+ var(
1419
+ --seblify-color-neutral-derived-surface,
1420
+ var(--seblify-color-surface-muted, #f2ebe4)
1421
+ )
1422
+ );
1423
+ --seblify-tone-derived-border: var(
1424
+ --seblify-color-danger-derived-border,
1425
+ var(
1426
+ --seblify-color-neutral-derived-border,
1427
+ color-mix(
1428
+ in srgb,
1429
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1430
+ var(--seblify-color-border-strong, #c5afa0) 78%
1431
+ )
1432
+ )
1433
+ );
1434
+ --seblify-tone-derived-text: var(
1435
+ --seblify-color-danger-derived-text,
1436
+ var(
1437
+ --seblify-color-neutral-derived-text,
1438
+ var(--seblify-color-text-subtle, #8b7a70)
1439
+ )
1440
+ );
1441
+ --seblify-tone-on-inverse-surface: var(
1442
+ --seblify-color-danger-on-inverse-surface,
1443
+ color-mix(
1444
+ in srgb,
1445
+ var(--seblify-color-danger-fill, #b83d45) 22%,
1446
+ var(--seblify-color-surface-inverse, #15110f) 78%
1447
+ )
1448
+ );
1449
+ --seblify-tone-on-inverse-surface-hover: var(
1450
+ --seblify-color-danger-on-inverse-surface-hover,
1451
+ color-mix(
1452
+ in srgb,
1453
+ var(--seblify-color-danger-fill, #b83d45) 32%,
1454
+ var(--seblify-color-surface-inverse, #15110f) 68%
1455
+ )
1456
+ );
1457
+ --seblify-tone-on-inverse-text: var(
1458
+ --seblify-color-danger-on-inverse-text,
1459
+ var(--seblify-color-danger-fill, #b83d45)
1460
+ );
1461
+ --seblify-tone-on-inverse-border: var(
1462
+ --seblify-color-danger-on-inverse-border,
1463
+ var(--seblify-color-danger-border, #e2a2a7)
1464
+ );
223
1465
  }
224
1466
 
225
1467
  :where(.seblify-tone-context[data-seblify-tone='warning']) {
226
- --seblify-tone-fill: var(--seblify-color-fill-warning, #8a5a00);
227
- --seblify-tone-fill-text: var(--seblify-color-fill-warning-text, #ffffff);
228
- --seblify-tone-surface: var(--seblify-color-warning-surface, #fff6d8);
229
- --seblify-tone-text: var(--seblify-color-warning-text, #4d3900);
230
- --seblify-tone-border: var(--seblify-color-warning-border, #e8d28f);
1468
+ --seblify-tone-fill: var(--seblify-color-warning-fill, #9a6d24);
1469
+ --seblify-tone-fill-hover: var(--seblify-color-warning-fill-hover, #805918);
1470
+ --seblify-tone-fill-text: var(--seblify-color-warning-fill-text, #fff4e7);
1471
+ --seblify-tone-surface: var(--seblify-color-warning-surface, #f8edd8);
1472
+ --seblify-tone-surface-hover: var(
1473
+ --seblify-color-warning-surface-hover,
1474
+ #efddbd
1475
+ );
1476
+ --seblify-tone-text: var(--seblify-color-warning-text, #7a5418);
1477
+ --seblify-tone-border: var(--seblify-color-warning-border, #d8b46c);
1478
+ --seblify-tone-derived-surface: var(
1479
+ --seblify-color-warning-derived-surface,
1480
+ var(
1481
+ --seblify-color-neutral-derived-surface,
1482
+ var(--seblify-color-surface-muted, #f2ebe4)
1483
+ )
1484
+ );
1485
+ --seblify-tone-derived-border: var(
1486
+ --seblify-color-warning-derived-border,
1487
+ var(
1488
+ --seblify-color-neutral-derived-border,
1489
+ color-mix(
1490
+ in srgb,
1491
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1492
+ var(--seblify-color-border-strong, #c5afa0) 78%
1493
+ )
1494
+ )
1495
+ );
1496
+ --seblify-tone-derived-text: var(
1497
+ --seblify-color-warning-derived-text,
1498
+ var(
1499
+ --seblify-color-neutral-derived-text,
1500
+ var(--seblify-color-text-subtle, #8b7a70)
1501
+ )
1502
+ );
1503
+ --seblify-tone-on-inverse-surface: var(
1504
+ --seblify-color-warning-on-inverse-surface,
1505
+ color-mix(
1506
+ in srgb,
1507
+ var(--seblify-color-warning-fill, #9a6d24) 22%,
1508
+ var(--seblify-color-surface-inverse, #15110f) 78%
1509
+ )
1510
+ );
1511
+ --seblify-tone-on-inverse-surface-hover: var(
1512
+ --seblify-color-warning-on-inverse-surface-hover,
1513
+ color-mix(
1514
+ in srgb,
1515
+ var(--seblify-color-warning-fill, #9a6d24) 32%,
1516
+ var(--seblify-color-surface-inverse, #15110f) 68%
1517
+ )
1518
+ );
1519
+ --seblify-tone-on-inverse-text: var(
1520
+ --seblify-color-warning-on-inverse-text,
1521
+ var(--seblify-color-warning-fill, #9a6d24)
1522
+ );
1523
+ --seblify-tone-on-inverse-border: var(
1524
+ --seblify-color-warning-on-inverse-border,
1525
+ var(--seblify-color-warning-border, #d8b46c)
1526
+ );
231
1527
  }
232
1528
 
233
1529
  :where(.seblify-tone-context[data-seblify-tone='info']) {
234
- --seblify-tone-fill: var(--seblify-color-fill-info, #1f6fb2);
235
- --seblify-tone-fill-text: var(--seblify-color-fill-info-text, #ffffff);
236
- --seblify-tone-surface: var(--seblify-color-info-surface, #eaf3ff);
237
- --seblify-tone-text: var(--seblify-color-info-text, #102f55);
238
- --seblify-tone-border: var(--seblify-color-info-border, #bfd1ea);
239
- }
240
-
241
- :where(.seblify-tone-context[data-seblify-tone='inverse']) {
242
- --seblify-tone-fill: var(--seblify-color-fill-inverse, #172033);
243
- --seblify-tone-fill-text: var(--seblify-color-fill-inverse-text, #ffffff);
244
- --seblify-tone-surface: var(--seblify-color-surface-inverse-hover, #263043);
245
- --seblify-tone-text: var(--seblify-color-fill-inverse-text, #ffffff);
246
- --seblify-tone-border: var(--seblify-color-border-inverse, #263043);
1530
+ --seblify-tone-fill: var(--seblify-color-info-fill, #a5664a);
1531
+ --seblify-tone-fill-hover: var(--seblify-color-info-fill-hover, #8f543b);
1532
+ --seblify-tone-fill-text: var(--seblify-color-info-fill-text, #fff4e7);
1533
+ --seblify-tone-surface: var(--seblify-color-info-surface, #f6e6de);
1534
+ --seblify-tone-surface-hover: var(
1535
+ --seblify-color-info-surface-hover,
1536
+ #edd3c6
1537
+ );
1538
+ --seblify-tone-text: var(--seblify-color-info-text, #844932);
1539
+ --seblify-tone-border: var(--seblify-color-info-border, #d49d85);
1540
+ --seblify-tone-derived-surface: var(
1541
+ --seblify-color-info-derived-surface,
1542
+ var(
1543
+ --seblify-color-neutral-derived-surface,
1544
+ var(--seblify-color-surface-muted, #f2ebe4)
1545
+ )
1546
+ );
1547
+ --seblify-tone-derived-border: var(
1548
+ --seblify-color-info-derived-border,
1549
+ var(
1550
+ --seblify-color-neutral-derived-border,
1551
+ color-mix(
1552
+ in srgb,
1553
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
1554
+ var(--seblify-color-border-strong, #c5afa0) 78%
1555
+ )
1556
+ )
1557
+ );
1558
+ --seblify-tone-derived-text: var(
1559
+ --seblify-color-info-derived-text,
1560
+ var(
1561
+ --seblify-color-neutral-derived-text,
1562
+ var(--seblify-color-text-subtle, #8b7a70)
1563
+ )
1564
+ );
1565
+ --seblify-tone-on-inverse-surface: var(
1566
+ --seblify-color-info-on-inverse-surface,
1567
+ color-mix(
1568
+ in srgb,
1569
+ var(--seblify-color-info-fill, #a5664a) 22%,
1570
+ var(--seblify-color-surface-inverse, #15110f) 78%
1571
+ )
1572
+ );
1573
+ --seblify-tone-on-inverse-surface-hover: var(
1574
+ --seblify-color-info-on-inverse-surface-hover,
1575
+ color-mix(
1576
+ in srgb,
1577
+ var(--seblify-color-info-fill, #a5664a) 32%,
1578
+ var(--seblify-color-surface-inverse, #15110f) 68%
1579
+ )
1580
+ );
1581
+ --seblify-tone-on-inverse-text: var(
1582
+ --seblify-color-info-on-inverse-text,
1583
+ var(--seblify-color-info-fill, #a5664a)
1584
+ );
1585
+ --seblify-tone-on-inverse-border: var(
1586
+ --seblify-color-info-on-inverse-border,
1587
+ var(--seblify-color-info-border, #d49d85)
1588
+ );
1589
+ }
1590
+
1591
+ :where(.seblify-tone-context[data-seblify-surface='inverse']) {
1592
+ --seblify-tone-control-surface: var(--seblify-tone-on-inverse-surface);
1593
+ --seblify-tone-control-surface-hover: var(
1594
+ --seblify-tone-on-inverse-surface-hover
1595
+ );
1596
+ --seblify-tone-control-default-text: var(
1597
+ --seblify-color-text-inverse,
1598
+ #fff4e7
1599
+ );
1600
+ --seblify-tone-control-text: var(--seblify-tone-on-inverse-text);
1601
+ --seblify-tone-control-border: var(--seblify-tone-on-inverse-border);
1602
+ --seblify-tone-control-derived-surface: color-mix(
1603
+ in srgb,
1604
+ var(--seblify-tone-on-inverse-surface) 70%,
1605
+ var(--seblify-color-surface-inverse, #15110f) 30%
1606
+ );
1607
+ --seblify-tone-control-derived-border: color-mix(
1608
+ in srgb,
1609
+ var(--seblify-tone-on-inverse-border) 72%,
1610
+ var(--seblify-color-border-inverse, #4a3b32) 28%
1611
+ );
1612
+ --seblify-tone-control-derived-text: var(--seblify-tone-on-inverse-text);
1613
+ }
1614
+
1615
+ :where(
1616
+ .seblify-tone-context[data-seblify-surface='inverse'][data-seblify-tone='strong']
1617
+ ) {
1618
+ --seblify-tone-control-fill: var(--seblify-color-text-inverse, #fff4e7);
1619
+ --seblify-tone-control-fill-hover: color-mix(
1620
+ in srgb,
1621
+ var(--seblify-color-text-inverse, #fff4e7) 88%,
1622
+ var(--seblify-color-surface-inverse, #15110f) 12%
1623
+ );
1624
+ --seblify-tone-control-fill-text: var(--seblify-color-text, #211916);
247
1625
  }
248
1626
 
249
1627
  :where(.seblify-tone-publisher) {
250
1628
  --seblify-current-tone-fill: var(--seblify-tone-fill);
1629
+ --seblify-current-tone-fill-hover: var(--seblify-tone-fill-hover);
251
1630
  --seblify-current-tone-fill-text: var(--seblify-tone-fill-text);
252
1631
  --seblify-current-tone-surface: var(--seblify-tone-surface);
1632
+ --seblify-current-tone-surface-hover: var(--seblify-tone-surface-hover);
253
1633
  --seblify-current-tone-text: var(--seblify-tone-text);
254
1634
  --seblify-current-tone-border: var(--seblify-tone-border);
1635
+ --seblify-current-tone-derived-surface: var(--seblify-tone-derived-surface);
1636
+ --seblify-current-tone-derived-border: var(--seblify-tone-derived-border);
1637
+ --seblify-current-tone-derived-text: var(--seblify-tone-derived-text);
1638
+ --seblify-current-tone-on-inverse-surface: var(
1639
+ --seblify-tone-on-inverse-surface
1640
+ );
1641
+ --seblify-current-tone-on-inverse-surface-hover: var(
1642
+ --seblify-tone-on-inverse-surface-hover
1643
+ );
1644
+ --seblify-current-tone-on-inverse-text: var(--seblify-tone-on-inverse-text);
1645
+ --seblify-current-tone-on-inverse-border: var(
1646
+ --seblify-tone-on-inverse-border
1647
+ );
255
1648
  }
256
1649
 
257
1650
  .seblify-checkbox {
258
- --checkbox-size: 1.125rem;
259
- --checkbox-radius: 0.25rem;
260
1651
  --checkbox-border: var(--seblify-color-border-strong, #aab7c5);
261
1652
  --checkbox-surface: var(--seblify-color-surface, #ffffff);
262
1653
  --checkbox-active-border: var(--seblify-tone-fill);
263
1654
  --checkbox-active-surface: var(--seblify-tone-fill);
1655
+ --checkbox-active-soft-surface: var(--seblify-tone-surface);
1656
+ --checkbox-active-soft-mark: var(--seblify-tone-control-default-text);
264
1657
  --checkbox-active-mark: var(--seblify-tone-fill-text);
265
1658
  --checkbox-focus-ring: color-mix(
266
1659
  in srgb,
267
1660
  var(--seblify-tone-fill) 54%,
268
1661
  transparent
269
1662
  );
270
- --checkbox-derived-border: var(--seblify-color-border-strong, #aab7c5);
271
- --checkbox-derived-surface: var(--seblify-color-surface-muted, #d9e0e8);
272
- --checkbox-derived-mark: var(--seblify-color-text-muted, #516176);
273
-
1663
+ --checkbox-derived-border: var(
1664
+ --seblify-tone-control-derived-border,
1665
+ var(--seblify-color-border-strong, #aab7c5)
1666
+ );
1667
+ --checkbox-derived-control-border: var(--checkbox-derived-border);
1668
+ --checkbox-derived-surface: var(
1669
+ --seblify-tone-control-derived-surface,
1670
+ var(--seblify-color-surface-muted, #d9e0e8)
1671
+ );
1672
+ --checkbox-derived-mark: var(
1673
+ --seblify-tone-control-derived-text,
1674
+ var(--seblify-color-text-muted, #516176)
1675
+ );
1676
+ --checkbox-inner-radius: max(0px, calc(var(--checkbox-radius) - 1px));
1677
+ --checkbox-bounce-fill-inset: 0;
1678
+ --checkbox-bounce-fill-radius: var(--checkbox-inner-radius);
1679
+ --checkbox-default-duration: 400ms;
1680
+ --checkbox-control-duration: var(--checkbox-duration, 140ms);
1681
+ --checkbox-mark-duration: var(--checkbox-duration, 120ms);
1682
+ --checkbox-fade-duration: var(
1683
+ --checkbox-duration,
1684
+ var(--checkbox-default-duration)
1685
+ );
1686
+ --checkbox-scale-duration: var(
1687
+ --checkbox-duration,
1688
+ var(--checkbox-default-duration)
1689
+ );
1690
+ --checkbox-bump-duration: var(
1691
+ --checkbox-duration,
1692
+ var(--checkbox-default-duration)
1693
+ );
1694
+ --checkbox-pop-duration: var(
1695
+ --checkbox-duration,
1696
+ var(--checkbox-default-duration)
1697
+ );
1698
+ --checkbox-rise-duration: var(
1699
+ --checkbox-duration,
1700
+ var(--checkbox-default-duration)
1701
+ );
1702
+ --checkbox-rise-exit-phase-duration: calc(
1703
+ var(--checkbox-rise-duration) * 9 / 32
1704
+ );
1705
+ --checkbox-bounce-duration: var(
1706
+ --checkbox-duration,
1707
+ var(--checkbox-default-duration)
1708
+ );
1709
+ --checkbox-bounce-enter-collapse-duration: calc(
1710
+ var(--checkbox-bounce-duration) / 3
1711
+ );
1712
+ --checkbox-bounce-exit-phase-duration: calc(
1713
+ var(--checkbox-bounce-duration) * 9 / 32
1714
+ );
1715
+ --checkbox-draw-check-duration: var(
1716
+ --checkbox-duration,
1717
+ var(--checkbox-default-duration)
1718
+ );
1719
+ --checkbox-draw-indeterminate-duration: var(
1720
+ --checkbox-duration,
1721
+ var(--checkbox-default-duration)
1722
+ );
1723
+ --checkbox-label-line-size: 0px;
1724
+ --checkbox-description-line-size: 0px;
1725
+ --checkbox-content-gap: 0px;
1726
+ --checkbox-content-size: var(--checkbox-label-line-size);
1727
+ --checkbox-control-offset: max(
1728
+ 0px,
1729
+ calc((var(--checkbox-label-line-size) - var(--checkbox-size)) / 2)
1730
+ );
1731
+ --checkbox-content-offset: max(
1732
+ 0px,
1733
+ calc((var(--checkbox-size) - var(--checkbox-content-size)) / 2)
1734
+ );
274
1735
  position: relative;
275
1736
  display: inline-flex;
276
1737
  gap: 10px;
@@ -279,14 +1740,39 @@
279
1740
  cursor: pointer;
280
1741
  }
281
1742
 
1743
+ .seblify-checkbox[data-has-label='true'] {
1744
+ --checkbox-label-line-size: 1.35em;
1745
+ }
1746
+
1747
+ .seblify-checkbox[data-has-description='true'] {
1748
+ --checkbox-description-line-size: calc(0.875em * 1.45);
1749
+ --checkbox-content-gap: 2px;
1750
+ --checkbox-content-size: calc(
1751
+ var(--checkbox-label-line-size) + var(--checkbox-content-gap) +
1752
+ var(--checkbox-description-line-size)
1753
+ );
1754
+ }
1755
+
282
1756
  .seblify-checkbox[data-seblify-tone='inherit'] {
283
1757
  --seblify-tone-fill: var(
284
1758
  --seblify-current-tone-fill,
285
- var(--seblify-color-fill-primary, #146a6f)
1759
+ var(--seblify-color-primary-fill, #b43f5a)
1760
+ );
1761
+ --seblify-tone-fill-hover: var(
1762
+ --seblify-current-tone-fill-hover,
1763
+ var(--seblify-color-primary-fill-hover, #9f334d)
286
1764
  );
287
1765
  --seblify-tone-fill-text: var(
288
1766
  --seblify-current-tone-fill-text,
289
- var(--seblify-color-fill-primary-text, #ffffff)
1767
+ var(--seblify-color-primary-fill-text, #fff4e7)
1768
+ );
1769
+ --seblify-tone-surface: var(
1770
+ --seblify-current-tone-surface,
1771
+ var(--seblify-color-primary-surface, #fae8ed)
1772
+ );
1773
+ --seblify-tone-surface-hover: var(
1774
+ --seblify-current-tone-surface-hover,
1775
+ var(--seblify-color-primary-surface-hover, #f5d5dd)
290
1776
  );
291
1777
  }
292
1778
 
@@ -314,26 +1800,310 @@
314
1800
  justify-content: center;
315
1801
  border: 1px solid var(--checkbox-border);
316
1802
  border-radius: var(--checkbox-radius);
317
- margin-top: 0.125rem;
1803
+ margin-top: var(--checkbox-control-offset);
318
1804
  background: var(--checkbox-surface);
319
1805
  box-sizing: border-box;
320
1806
  color: var(--checkbox-active-mark);
1807
+ isolation: isolate;
1808
+ transform-origin: center;
321
1809
  transition:
322
- border-color 140ms ease,
323
- background 140ms ease,
324
- box-shadow 140ms ease;
1810
+ border-color var(--checkbox-control-duration) ease,
1811
+ background var(--checkbox-control-duration) ease,
1812
+ transform var(--checkbox-control-duration) ease,
1813
+ box-shadow var(--checkbox-control-duration) ease;
325
1814
  }
326
1815
 
327
- .seblify-checkbox__mark {
1816
+ .seblify-checkbox__control::before {
1817
+ position: absolute;
1818
+ inset: var(--checkbox-bounce-fill-inset);
1819
+ z-index: 3;
1820
+ border-radius: var(--checkbox-bounce-fill-radius);
1821
+ background: var(--checkbox-bounce-fill, var(--checkbox-active-surface));
1822
+ content: '';
1823
+ opacity: 0;
1824
+ pointer-events: none;
1825
+ transform: scale(0);
1826
+ transform-origin: center;
1827
+ }
1828
+
1829
+ .seblify-checkbox__control::after {
1830
+ position: absolute;
1831
+ inset: 0;
1832
+ z-index: 4;
1833
+ border: 1px solid var(--checkbox-border);
1834
+ border-radius: inherit;
1835
+ box-sizing: border-box;
1836
+ content: '';
1837
+ opacity: 0;
1838
+ pointer-events: none;
1839
+ transform: scale(0);
1840
+ transform-origin: center;
1841
+ }
1842
+
1843
+ .seblify-checkbox__derived-layer {
1844
+ position: absolute;
1845
+ inset: 0;
1846
+ z-index: 2;
1847
+ display: inline-flex;
1848
+ align-items: center;
1849
+ justify-content: center;
1850
+ border: 1px solid var(--checkbox-derived-control-border);
1851
+ border-radius: inherit;
1852
+ background: var(--checkbox-derived-surface);
1853
+ box-sizing: border-box;
1854
+ color: var(--checkbox-derived-mark);
1855
+ opacity: 0;
1856
+ pointer-events: none;
1857
+ }
1858
+
1859
+ .seblify-checkbox__derived-mark {
328
1860
  position: relative;
1861
+ display: grid;
1862
+ width: calc(var(--checkbox-size) * 0.8333333);
1863
+ height: calc(var(--checkbox-size) * 0.8333333);
1864
+ place-items: center;
1865
+ transform: scale(1);
1866
+ transform-origin: center;
1867
+ }
1868
+
1869
+ .seblify-checkbox__derived-check,
1870
+ .seblify-checkbox__derived-indeterminate {
1871
+ position: absolute;
1872
+ inset: 0;
329
1873
  display: block;
330
- width: 0.625rem;
331
- height: 0.625rem;
1874
+ width: 100%;
1875
+ height: 100%;
1876
+ overflow: visible;
1877
+ opacity: 0;
1878
+ transform: scale(1);
1879
+ transform-origin: center;
1880
+ }
1881
+
1882
+ .seblify-checkbox__derived-check-path,
1883
+ .seblify-checkbox__derived-indeterminate-path {
1884
+ fill: none;
1885
+ stroke: currentColor;
1886
+ stroke-dasharray: 1;
1887
+ stroke-dashoffset: 0;
1888
+ stroke-linecap: butt;
1889
+ stroke-linejoin: miter;
1890
+ stroke-width: 3.2;
1891
+ transform-box: fill-box;
1892
+ transform-origin: center;
1893
+ }
1894
+
1895
+ .seblify-checkbox__derived-indeterminate-path:is(
1896
+ [data-intermediate-mark='dot'],
1897
+ [data-intermediate-mark='square']
1898
+ ) {
1899
+ fill: currentColor;
1900
+ stroke: none;
1901
+ stroke-dasharray: none;
1902
+ }
1903
+
1904
+ .seblify-checkbox[data-derived-layer-state='checked']
1905
+ .seblify-checkbox__derived-layer,
1906
+ .seblify-checkbox[data-derived-layer-state='indeterminate']
1907
+ .seblify-checkbox__derived-layer {
1908
+ opacity: 1;
1909
+ }
1910
+
1911
+ .seblify-checkbox[data-derived-layer-state='checked']
1912
+ .seblify-checkbox__derived-check,
1913
+ .seblify-checkbox[data-derived-layer-state='indeterminate']
1914
+ .seblify-checkbox__derived-indeterminate {
1915
+ opacity: 1;
1916
+ }
1917
+
1918
+ .seblify-checkbox[data-visual-layer='derived']:not(
1919
+ [data-layer-transition='direct-to-derived']
1920
+ )
1921
+ .seblify-checkbox__derived-layer {
1922
+ z-index: 4;
1923
+ }
1924
+
1925
+ .seblify-checkbox[data-visual-layer='derived']:not(
1926
+ [data-layer-transition='direct-to-derived']
1927
+ )
1928
+ .seblify-checkbox__mark {
1929
+ animation: none;
1930
+ opacity: 0;
1931
+ }
1932
+
1933
+ .seblify-checkbox__mark {
1934
+ position: relative;
1935
+ display: grid;
1936
+ width: calc(var(--checkbox-size) * 0.8333333);
1937
+ height: calc(var(--checkbox-size) * 0.8333333);
1938
+ place-items: center;
332
1939
  opacity: 0;
333
1940
  transform: scale(0.86);
1941
+ transform-origin: center;
1942
+ z-index: 5;
1943
+ transition:
1944
+ opacity var(--checkbox-mark-duration) ease,
1945
+ transform var(--checkbox-mark-duration) ease;
1946
+ }
1947
+
1948
+ .seblify-checkbox__check,
1949
+ .seblify-checkbox__indeterminate {
1950
+ position: absolute;
1951
+ inset: 0;
1952
+ display: block;
1953
+ width: 100%;
1954
+ height: 100%;
1955
+ overflow: visible;
1956
+ opacity: 0;
1957
+ transform: scale(1);
1958
+ transform-origin: center;
1959
+ }
1960
+
1961
+ .seblify-checkbox__check-path,
1962
+ .seblify-checkbox__check-cutout,
1963
+ .seblify-checkbox__indeterminate-path {
1964
+ fill: none;
1965
+ stroke: currentColor;
1966
+ stroke-dasharray: 1;
1967
+ stroke-dashoffset: 0;
1968
+ stroke-linecap: butt;
1969
+ stroke-linejoin: miter;
1970
+ stroke-width: 3.2;
1971
+ transform-box: fill-box;
1972
+ transform-origin: center;
1973
+ }
1974
+
1975
+ .seblify-checkbox__indeterminate-path:is(
1976
+ [data-intermediate-mark='dot'],
1977
+ [data-intermediate-mark='square']
1978
+ ) {
1979
+ fill: currentColor;
1980
+ stroke: none;
1981
+ stroke-dasharray: none;
1982
+ }
1983
+
1984
+ .seblify-checkbox__check-cutout {
1985
+ display: none;
1986
+ stroke: var(--checkbox-surface);
1987
+ stroke-width: 7.9;
1988
+ }
1989
+
1990
+ .seblify-checkbox[data-state='checked'] .seblify-checkbox__check,
1991
+ .seblify-checkbox[data-state='disabled-checked'] .seblify-checkbox__check,
1992
+ .seblify-checkbox[data-animating='true'][data-state='unchecked']
1993
+ .seblify-checkbox__check,
1994
+ .seblify-checkbox[data-animating='true'][data-state='disabled-unchecked']
1995
+ .seblify-checkbox__check {
1996
+ opacity: 1;
1997
+ }
1998
+
1999
+ .seblify-checkbox[data-state='indeterminate']
2000
+ .seblify-checkbox__indeterminate,
2001
+ .seblify-checkbox[data-state='disabled-indeterminate']
2002
+ .seblify-checkbox__indeterminate {
2003
+ opacity: 1;
2004
+ }
2005
+
2006
+ .seblify-checkbox[data-animation='none'] .seblify-checkbox__control,
2007
+ .seblify-checkbox[data-animation='none'] .seblify-checkbox__mark {
2008
+ transition-duration: 0ms;
2009
+ }
2010
+
2011
+ .seblify-checkbox[data-animation='fade'] .seblify-checkbox__mark {
2012
+ transform: scale(1);
2013
+ transition:
2014
+ opacity 0ms linear,
2015
+ transform 0ms linear;
2016
+ }
2017
+
2018
+ .seblify-checkbox[data-animation='fade'] .seblify-checkbox__control {
2019
+ transition:
2020
+ border-color var(--checkbox-fade-duration) ease,
2021
+ background 0ms linear,
2022
+ transform 0ms linear,
2023
+ box-shadow var(--checkbox-fade-duration) ease;
2024
+ }
2025
+
2026
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='unchecked']
2027
+ .seblify-checkbox__control,
2028
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='disabled-unchecked']
2029
+ .seblify-checkbox__control {
2030
+ transition:
2031
+ border-color calc(var(--checkbox-fade-duration) * 7 / 10) ease,
2032
+ background 0ms linear,
2033
+ transform 0ms linear,
2034
+ box-shadow var(--checkbox-fade-duration) ease;
2035
+ }
2036
+
2037
+ .seblify-checkbox[data-animation='bump'] .seblify-checkbox__control,
2038
+ .seblify-checkbox[data-animation='pop'] .seblify-checkbox__control {
2039
+ transition:
2040
+ border-color 0ms linear,
2041
+ background 0ms linear,
2042
+ transform 0ms linear,
2043
+ box-shadow var(--checkbox-duration, var(--checkbox-default-duration)) ease;
2044
+ }
2045
+
2046
+ .seblify-checkbox[data-animation='scale'] .seblify-checkbox__mark,
2047
+ .seblify-checkbox[data-animation='bump'] .seblify-checkbox__mark,
2048
+ .seblify-checkbox[data-animation='pop'] .seblify-checkbox__mark,
2049
+ .seblify-checkbox[data-animation='rise'] .seblify-checkbox__mark,
2050
+ .seblify-checkbox[data-animation='bounce'] .seblify-checkbox__mark,
2051
+ .seblify-checkbox[data-animation='draw'] .seblify-checkbox__mark {
2052
+ transition:
2053
+ opacity 100ms ease,
2054
+ transform 0ms linear;
2055
+ }
2056
+
2057
+ .seblify-checkbox[data-animation='scale'] .seblify-checkbox__control {
2058
+ transition:
2059
+ border-color var(--checkbox-scale-duration) ease,
2060
+ background 0ms linear,
2061
+ transform 0ms linear,
2062
+ box-shadow var(--checkbox-scale-duration) ease;
2063
+ }
2064
+
2065
+ .seblify-checkbox[data-animation='draw'] .seblify-checkbox__control {
2066
+ overflow: hidden;
2067
+ }
2068
+
2069
+ .seblify-checkbox[data-animation='draw'] .seblify-checkbox__control::before {
2070
+ inset: -1px auto auto -1px;
2071
+ width: calc(var(--checkbox-size) * 3.4);
2072
+ height: calc(var(--checkbox-size) * 3.4);
2073
+ border-radius: 999px;
2074
+ transform: translate(-50%, -50%) scale(0);
2075
+ z-index: 3;
2076
+ }
2077
+
2078
+ .seblify-checkbox[data-animation='draw'] .seblify-checkbox__control::after {
2079
+ inset: 1px;
2080
+ border: 0;
2081
+ border-radius: max(0px, calc(var(--checkbox-radius) - 1px));
2082
+ background: var(--checkbox-surface);
2083
+ opacity: 1;
2084
+ transform: none;
2085
+ z-index: 0;
2086
+ }
2087
+
2088
+ .seblify-checkbox[data-animation='draw'] .seblify-checkbox__mark {
2089
+ z-index: 5;
2090
+ }
2091
+
2092
+ .seblify-checkbox[data-animation='bounce'] .seblify-checkbox__control {
2093
+ transition:
2094
+ border-color 0ms linear,
2095
+ background 0ms linear,
2096
+ transform 0ms linear,
2097
+ box-shadow var(--checkbox-bounce-duration) ease;
2098
+ }
2099
+
2100
+ .seblify-checkbox[data-animation='rise'] .seblify-checkbox__control {
2101
+ overflow: hidden;
334
2102
  transition:
335
- opacity 120ms ease,
336
- transform 120ms ease;
2103
+ border-color 0ms linear,
2104
+ background 0ms linear,
2105
+ transform 0ms linear,
2106
+ box-shadow var(--checkbox-rise-duration) ease;
337
2107
  }
338
2108
 
339
2109
  .seblify-checkbox[data-state='checked'] .seblify-checkbox__control,
@@ -345,89 +2115,2636 @@
345
2115
  background: var(--checkbox-active-surface);
346
2116
  }
347
2117
 
348
- .seblify-checkbox[data-state='checked'] .seblify-checkbox__mark,
349
- .seblify-checkbox[data-state='indeterminate'] .seblify-checkbox__mark,
350
- .seblify-checkbox[data-state='disabled-checked'] .seblify-checkbox__mark,
351
- .seblify-checkbox[data-state='disabled-indeterminate']
352
- .seblify-checkbox__mark {
353
- opacity: 1;
354
- transform: scale(1);
2118
+ .seblify-checkbox[data-variant='solid'] {
2119
+ --checkbox-bounce-fill: var(--checkbox-active-surface);
2120
+ --checkbox-bounce-fill-inset: -1px;
2121
+ --checkbox-bounce-fill-radius: var(--checkbox-radius);
2122
+ --checkbox-derived-control-border: transparent;
355
2123
  }
356
2124
 
357
- .seblify-checkbox[data-state='checked'] .seblify-checkbox__mark::before,
358
- .seblify-checkbox[data-state='disabled-checked']
359
- .seblify-checkbox__mark::before {
360
- position: absolute;
361
- left: 50%;
362
- top: 50%;
363
- width: 0.25rem;
364
- height: 0.55rem;
365
- border: solid currentColor;
366
- border-width: 0 0.125rem 0.125rem 0;
367
- content: '';
368
- transform: translate(-50%, -58%) rotate(45deg);
2125
+ .seblify-checkbox[data-animation='rise'] {
2126
+ --checkbox-bounce-fill-inset: -2px;
2127
+ --checkbox-bounce-fill-radius: calc(var(--checkbox-radius) + 1px);
369
2128
  }
370
2129
 
371
- .seblify-checkbox[data-state='indeterminate']
372
- .seblify-checkbox__mark::before,
373
- .seblify-checkbox[data-state='disabled-indeterminate']
374
- .seblify-checkbox__mark::before {
375
- position: absolute;
376
- left: 0.0625rem;
377
- right: 0.0625rem;
378
- top: 50%;
379
- height: 0.125rem;
380
- border-radius: 999px;
381
- background: currentColor;
382
- content: '';
383
- transform: translateY(-50%);
2130
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='checked']
2131
+ .seblify-checkbox__control,
2132
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='indeterminate']
2133
+ .seblify-checkbox__control,
2134
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='disabled-checked']
2135
+ .seblify-checkbox__control,
2136
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='disabled-indeterminate']
2137
+ .seblify-checkbox__control {
2138
+ border-color: transparent;
384
2139
  }
385
2140
 
386
- .seblify-checkbox > input:focus-visible + .seblify-checkbox__control {
387
- outline: 3px solid var(--checkbox-focus-ring);
388
- outline-offset: 2px;
2141
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='checked']
2142
+ .seblify-checkbox__control,
2143
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='indeterminate']
2144
+ .seblify-checkbox__control,
2145
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='disabled-checked']
2146
+ .seblify-checkbox__control,
2147
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='disabled-indeterminate']
2148
+ .seblify-checkbox__control,
2149
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='checked']
2150
+ .seblify-checkbox__control,
2151
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='indeterminate']
2152
+ .seblify-checkbox__control,
2153
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='disabled-checked']
2154
+ .seblify-checkbox__control,
2155
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='disabled-indeterminate']
2156
+ .seblify-checkbox__control,
2157
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='checked']
2158
+ .seblify-checkbox__control,
2159
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='indeterminate']
2160
+ .seblify-checkbox__control,
2161
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='disabled-checked']
2162
+ .seblify-checkbox__control,
2163
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='disabled-indeterminate']
2164
+ .seblify-checkbox__control,
2165
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='checked']
2166
+ .seblify-checkbox__control,
2167
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='indeterminate']
2168
+ .seblify-checkbox__control,
2169
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='disabled-checked']
2170
+ .seblify-checkbox__control,
2171
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='disabled-indeterminate']
2172
+ .seblify-checkbox__control {
2173
+ background: var(--checkbox-surface);
389
2174
  }
390
2175
 
391
- .seblify-checkbox[data-visual-state='derived']
2176
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='checked']
2177
+ .seblify-checkbox__control,
2178
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='indeterminate']
2179
+ .seblify-checkbox__control,
2180
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='disabled-checked']
2181
+ .seblify-checkbox__control,
2182
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='disabled-indeterminate']
2183
+ .seblify-checkbox__control,
2184
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='checked']
2185
+ .seblify-checkbox__control,
2186
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='indeterminate']
2187
+ .seblify-checkbox__control,
2188
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='disabled-checked']
2189
+ .seblify-checkbox__control,
2190
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='disabled-indeterminate']
2191
+ .seblify-checkbox__control,
2192
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='checked']
2193
+ .seblify-checkbox__control,
2194
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='indeterminate']
2195
+ .seblify-checkbox__control,
2196
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='disabled-checked']
392
2197
  .seblify-checkbox__control,
393
- .seblify-checkbox[data-visual-state='indirect']
2198
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='disabled-indeterminate']
2199
+ .seblify-checkbox__control,
2200
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='checked']
2201
+ .seblify-checkbox__control,
2202
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='indeterminate']
2203
+ .seblify-checkbox__control,
2204
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='disabled-checked']
2205
+ .seblify-checkbox__control,
2206
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='disabled-indeterminate']
394
2207
  .seblify-checkbox__control {
395
- --checkbox-active-border: var(--checkbox-derived-border);
396
- --checkbox-active-surface: var(--checkbox-derived-surface);
397
- --checkbox-active-mark: var(--checkbox-derived-mark);
2208
+ background: var(--checkbox-active-surface);
2209
+ }
398
2210
 
399
- border-color: var(--checkbox-derived-border);
400
- background: var(--checkbox-derived-surface);
401
- color: var(--checkbox-derived-mark);
2211
+ .seblify-checkbox[data-animation='rise'][data-animating='false']:is(
2212
+ [data-variant='solid'],
2213
+ [data-variant='soft'],
2214
+ [data-variant='tint'],
2215
+ [data-variant='blank']
2216
+ ):is(
2217
+ [data-state='checked'],
2218
+ [data-state='indeterminate'],
2219
+ [data-state='disabled-checked'],
2220
+ [data-state='disabled-indeterminate']
2221
+ )
2222
+ .seblify-checkbox__control {
2223
+ background: var(--checkbox-active-surface);
402
2224
  }
403
2225
 
404
- .seblify-checkbox[data-visual-state='direct-and-derived']
405
- .seblify-checkbox__control,
406
- .seblify-checkbox[data-visual-state='direct-and-indirect']
2226
+ .seblify-checkbox[data-animation='rise'][data-animating='true']:is(
2227
+ [data-variant='solid'],
2228
+ [data-variant='soft'],
2229
+ [data-variant='tint'],
2230
+ [data-variant='blank']
2231
+ ):is([data-state='checked'], [data-state='indeterminate'])
2232
+ .seblify-checkbox__control::before {
2233
+ background: var(--checkbox-surface);
2234
+ }
2235
+
2236
+ .seblify-checkbox:is(
2237
+ [data-animation='fade'],
2238
+ [data-animation='bump'],
2239
+ [data-animation='pop'],
2240
+ [data-animation='scale'],
2241
+ [data-animation='draw']
2242
+ ):is(
2243
+ [data-variant='solid'],
2244
+ [data-variant='soft'],
2245
+ [data-variant='tint'],
2246
+ [data-variant='blank']
2247
+ ):is(
2248
+ [data-state='checked'],
2249
+ [data-state='indeterminate'],
2250
+ [data-state='disabled-checked'],
2251
+ [data-state='disabled-indeterminate']
2252
+ )
407
2253
  .seblify-checkbox__control {
408
- box-shadow: 0 0 0 2px
409
- color-mix(in srgb, var(--seblify-tone-fill) 22%, transparent);
2254
+ background: var(--checkbox-surface);
410
2255
  }
411
2256
 
412
- .seblify-checkbox__content {
413
- display: grid;
414
- gap: 2px;
415
- min-width: 0;
2257
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='checked']
2258
+ .seblify-checkbox__control::before,
2259
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='indeterminate']
2260
+ .seblify-checkbox__control::before,
2261
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='disabled-checked']
2262
+ .seblify-checkbox__control::before,
2263
+ .seblify-checkbox[data-animation='bounce'][data-variant='solid'][data-state='disabled-indeterminate']
2264
+ .seblify-checkbox__control::before,
2265
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='checked']
2266
+ .seblify-checkbox__control::before,
2267
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='indeterminate']
2268
+ .seblify-checkbox__control::before,
2269
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='disabled-checked']
2270
+ .seblify-checkbox__control::before,
2271
+ .seblify-checkbox[data-animation='bounce'][data-variant='soft'][data-state='disabled-indeterminate']
2272
+ .seblify-checkbox__control::before,
2273
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='checked']
2274
+ .seblify-checkbox__control::before,
2275
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='indeterminate']
2276
+ .seblify-checkbox__control::before,
2277
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='disabled-checked']
2278
+ .seblify-checkbox__control::before,
2279
+ .seblify-checkbox[data-animation='bounce'][data-variant='tint'][data-state='disabled-indeterminate']
2280
+ .seblify-checkbox__control::before,
2281
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='checked']
2282
+ .seblify-checkbox__control::before,
2283
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='indeterminate']
2284
+ .seblify-checkbox__control::before,
2285
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='disabled-checked']
2286
+ .seblify-checkbox__control::before,
2287
+ .seblify-checkbox[data-animation='bounce'][data-variant='blank'][data-state='disabled-indeterminate']
2288
+ .seblify-checkbox__control::before {
2289
+ opacity: 1;
2290
+ transform: scale(1);
416
2291
  }
417
2292
 
418
- .seblify-checkbox__label {
419
- font-weight: 700;
420
- line-height: 1.35;
2293
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='checked']
2294
+ .seblify-checkbox__control::before,
2295
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='indeterminate']
2296
+ .seblify-checkbox__control::before,
2297
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='disabled-checked']
2298
+ .seblify-checkbox__control::before,
2299
+ .seblify-checkbox[data-animation='rise'][data-variant='solid'][data-state='disabled-indeterminate']
2300
+ .seblify-checkbox__control::before,
2301
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='checked']
2302
+ .seblify-checkbox__control::before,
2303
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='indeterminate']
2304
+ .seblify-checkbox__control::before,
2305
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='disabled-checked']
2306
+ .seblify-checkbox__control::before,
2307
+ .seblify-checkbox[data-animation='rise'][data-variant='soft'][data-state='disabled-indeterminate']
2308
+ .seblify-checkbox__control::before,
2309
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='checked']
2310
+ .seblify-checkbox__control::before,
2311
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='indeterminate']
2312
+ .seblify-checkbox__control::before,
2313
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='disabled-checked']
2314
+ .seblify-checkbox__control::before,
2315
+ .seblify-checkbox[data-animation='rise'][data-variant='tint'][data-state='disabled-indeterminate']
2316
+ .seblify-checkbox__control::before,
2317
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='checked']
2318
+ .seblify-checkbox__control::before,
2319
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='indeterminate']
2320
+ .seblify-checkbox__control::before,
2321
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='disabled-checked']
2322
+ .seblify-checkbox__control::before,
2323
+ .seblify-checkbox[data-animation='rise'][data-variant='blank'][data-state='disabled-indeterminate']
2324
+ .seblify-checkbox__control::before {
2325
+ opacity: 1;
2326
+ transform: translateY(0);
421
2327
  }
422
2328
 
423
- .seblify-checkbox__description {
424
- color: var(--seblify-color-text-muted, #516176);
425
- font-size: 0.875rem;
426
- line-height: 1.45;
2329
+ .seblify-checkbox:is(
2330
+ [data-animation='fade'],
2331
+ [data-animation='bump'],
2332
+ [data-animation='pop'],
2333
+ [data-animation='scale'],
2334
+ [data-animation='draw']
2335
+ ):is(
2336
+ [data-variant='solid'],
2337
+ [data-variant='soft'],
2338
+ [data-variant='tint'],
2339
+ [data-variant='blank']
2340
+ ):is(
2341
+ [data-state='checked'],
2342
+ [data-state='indeterminate'],
2343
+ [data-state='disabled-checked'],
2344
+ [data-state='disabled-indeterminate']
2345
+ )
2346
+ .seblify-checkbox__control::before {
2347
+ opacity: 1;
2348
+ transform: scale(1);
427
2349
  }
428
2350
 
429
- .seblify-checkbox.disabled {
430
- cursor: not-allowed;
431
- opacity: var(--seblify-opacity-disabled, 0.56);
2351
+ .seblify-checkbox[data-animation='draw']:is(
2352
+ [data-variant='solid'],
2353
+ [data-variant='soft'],
2354
+ [data-variant='tint'],
2355
+ [data-variant='blank']
2356
+ ):is(
2357
+ [data-state='checked'],
2358
+ [data-state='indeterminate'],
2359
+ [data-state='disabled-checked'],
2360
+ [data-state='disabled-indeterminate']
2361
+ )
2362
+ .seblify-checkbox__control::before {
2363
+ transform: translate(-50%, -50%) scale(1);
2364
+ }
2365
+
2366
+ .seblify-checkbox[data-variant='outline'][data-state='checked']
2367
+ .seblify-checkbox__control,
2368
+ .seblify-checkbox[data-variant='outline'][data-state='indeterminate']
2369
+ .seblify-checkbox__control,
2370
+ .seblify-checkbox[data-variant='outline'][data-state='disabled-checked']
2371
+ .seblify-checkbox__control,
2372
+ .seblify-checkbox[data-variant='outline'][data-state='disabled-indeterminate']
2373
+ .seblify-checkbox__control,
2374
+ .seblify-checkbox[data-variant='overflow'][data-state='checked']
2375
+ .seblify-checkbox__control,
2376
+ .seblify-checkbox[data-variant='overflow'][data-state='indeterminate']
2377
+ .seblify-checkbox__control,
2378
+ .seblify-checkbox[data-variant='overflow'][data-state='disabled-checked']
2379
+ .seblify-checkbox__control,
2380
+ .seblify-checkbox[data-variant='overflow'][data-state='disabled-indeterminate']
2381
+ .seblify-checkbox__control {
2382
+ border-color: var(--checkbox-active-border);
2383
+ background: var(--checkbox-surface);
2384
+ color: var(--checkbox-active-border);
2385
+ }
2386
+
2387
+ .seblify-checkbox[data-variant='plain'][data-state='checked']
2388
+ .seblify-checkbox__control,
2389
+ .seblify-checkbox[data-variant='plain'][data-state='indeterminate']
2390
+ .seblify-checkbox__control,
2391
+ .seblify-checkbox[data-variant='plain'][data-state='disabled-checked']
2392
+ .seblify-checkbox__control,
2393
+ .seblify-checkbox[data-variant='plain'][data-state='disabled-indeterminate']
2394
+ .seblify-checkbox__control {
2395
+ border-color: transparent;
2396
+ background: transparent;
2397
+ color: var(--checkbox-active-border);
2398
+ }
2399
+
2400
+ .seblify-checkbox[data-variant='outline'] .seblify-checkbox__control::before,
2401
+ .seblify-checkbox[data-variant='overflow'] .seblify-checkbox__control::before,
2402
+ .seblify-checkbox[data-variant='plain'] .seblify-checkbox__control::before,
2403
+ .seblify-checkbox[data-variant='inset'] .seblify-checkbox__control::before {
2404
+ content: none;
2405
+ }
2406
+
2407
+ .seblify-checkbox[data-variant='soft'][data-state='checked']
2408
+ .seblify-checkbox__control,
2409
+ .seblify-checkbox[data-variant='soft'][data-state='indeterminate']
2410
+ .seblify-checkbox__control,
2411
+ .seblify-checkbox[data-variant='soft'][data-state='disabled-checked']
2412
+ .seblify-checkbox__control,
2413
+ .seblify-checkbox[data-variant='soft'][data-state='disabled-indeterminate']
2414
+ .seblify-checkbox__control {
2415
+ border-color: transparent;
2416
+ background: var(--checkbox-active-soft-surface);
2417
+ color: var(--checkbox-active-soft-mark);
2418
+ }
2419
+
2420
+ .seblify-checkbox[data-variant='soft'] {
2421
+ --checkbox-bounce-fill: var(--checkbox-active-soft-surface);
2422
+ --checkbox-derived-control-border: transparent;
2423
+ }
2424
+
2425
+ .seblify-checkbox[data-variant='tint'][data-state='checked']
2426
+ .seblify-checkbox__control,
2427
+ .seblify-checkbox[data-variant='tint'][data-state='indeterminate']
2428
+ .seblify-checkbox__control,
2429
+ .seblify-checkbox[data-variant='tint'][data-state='disabled-checked']
2430
+ .seblify-checkbox__control,
2431
+ .seblify-checkbox[data-variant='tint'][data-state='disabled-indeterminate']
2432
+ .seblify-checkbox__control {
2433
+ border-color: transparent;
2434
+ background: var(--checkbox-active-soft-surface);
2435
+ color: var(--checkbox-active-border);
2436
+ }
2437
+
2438
+ .seblify-checkbox[data-variant='tint'] {
2439
+ --checkbox-bounce-fill: var(--checkbox-active-soft-surface);
2440
+ --checkbox-derived-control-border: transparent;
2441
+ }
2442
+
2443
+ .seblify-checkbox[data-variant='plain'],
2444
+ .seblify-checkbox[data-variant='blank'] {
2445
+ --checkbox-derived-control-border: transparent;
2446
+ }
2447
+
2448
+ .seblify-checkbox[data-variant='inset'][data-state='checked']
2449
+ .seblify-checkbox__control,
2450
+ .seblify-checkbox[data-variant='inset'][data-state='indeterminate']
2451
+ .seblify-checkbox__control,
2452
+ .seblify-checkbox[data-variant='inset'][data-state='disabled-checked']
2453
+ .seblify-checkbox__control,
2454
+ .seblify-checkbox[data-variant='inset'][data-state='disabled-indeterminate']
2455
+ .seblify-checkbox__control {
2456
+ border-color: var(--checkbox-active-border);
2457
+ background: var(--checkbox-surface);
2458
+ color: var(--checkbox-active-mark);
2459
+ }
2460
+
2461
+ .seblify-checkbox[data-animation='draw']:is(
2462
+ [data-variant='solid'],
2463
+ [data-variant='soft'],
2464
+ [data-variant='tint'],
2465
+ [data-variant='blank']
2466
+ ):is(
2467
+ [data-state='checked'],
2468
+ [data-state='indeterminate'],
2469
+ [data-state='disabled-checked'],
2470
+ [data-state='disabled-indeterminate']
2471
+ )
2472
+ .seblify-checkbox__control,
2473
+ .seblify-checkbox[data-animation='draw'][data-animating='true']:is(
2474
+ [data-variant='solid'],
2475
+ [data-variant='soft'],
2476
+ [data-variant='tint'],
2477
+ [data-variant='blank']
2478
+ ):is([data-state='unchecked'], [data-state='disabled-unchecked'])
2479
+ .seblify-checkbox__control {
2480
+ background: var(--checkbox-bounce-fill, var(--checkbox-active-surface));
2481
+ }
2482
+
2483
+ .seblify-checkbox[data-state='checked'] .seblify-checkbox__mark,
2484
+ .seblify-checkbox[data-state='indeterminate'] .seblify-checkbox__mark,
2485
+ .seblify-checkbox[data-state='disabled-checked'] .seblify-checkbox__mark,
2486
+ .seblify-checkbox[data-state='disabled-indeterminate']
2487
+ .seblify-checkbox__mark {
2488
+ opacity: 1;
2489
+ transform: scale(1);
2490
+ }
2491
+
2492
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='checked']
2493
+ .seblify-checkbox__control::before,
2494
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='indeterminate']
2495
+ .seblify-checkbox__control::before {
2496
+ animation: checkbox-fade-fill-in
2497
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
2498
+ }
2499
+
2500
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='checked']
2501
+ .seblify-checkbox__mark,
2502
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='indeterminate']
2503
+ .seblify-checkbox__mark {
2504
+ animation: checkbox-fade-mark-in var(--checkbox-fade-duration) ease both;
2505
+ }
2506
+
2507
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='unchecked']
2508
+ .seblify-checkbox__mark,
2509
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='disabled-unchecked']
2510
+ .seblify-checkbox__mark {
2511
+ animation: checkbox-fade-mark-out
2512
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
2513
+ }
2514
+
2515
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='unchecked']
2516
+ .seblify-checkbox__control::before,
2517
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-state='disabled-unchecked']
2518
+ .seblify-checkbox__control::before {
2519
+ animation: checkbox-fade-fill-out
2520
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
2521
+ }
2522
+
2523
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='checked']
2524
+ .seblify-checkbox__control::before,
2525
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='indeterminate']
2526
+ .seblify-checkbox__control::before {
2527
+ animation: checkbox-bump-fill-in var(--checkbox-bump-duration)
2528
+ cubic-bezier(0.2, 0.86, 0.2, 1) both;
2529
+ }
2530
+
2531
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='checked']
2532
+ .seblify-checkbox__mark,
2533
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='indeterminate']
2534
+ .seblify-checkbox__mark {
2535
+ animation: checkbox-bump-in calc(var(--checkbox-bump-duration) * 7 / 10)
2536
+ ease calc(var(--checkbox-bump-duration) * 3 / 20) both;
2537
+ }
2538
+
2539
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='unchecked']
2540
+ .seblify-checkbox__mark,
2541
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='disabled-unchecked']
2542
+ .seblify-checkbox__mark {
2543
+ animation: checkbox-bump-out calc(var(--checkbox-bump-duration) * 2 / 5)
2544
+ ease both;
2545
+ }
2546
+
2547
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='unchecked']
2548
+ .seblify-checkbox__control::before,
2549
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-state='disabled-unchecked']
2550
+ .seblify-checkbox__control::before {
2551
+ animation: checkbox-bump-fill-out calc(var(--checkbox-bump-duration) / 2)
2552
+ ease calc(var(--checkbox-bump-duration) / 10) both;
2553
+ }
2554
+
2555
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='checked']
2556
+ .seblify-checkbox__control::before,
2557
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='indeterminate']
2558
+ .seblify-checkbox__control::before {
2559
+ animation: checkbox-pop-fill-in calc(var(--checkbox-pop-duration) * 3 / 5)
2560
+ ease-out both;
2561
+ }
2562
+
2563
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='checked']
2564
+ .seblify-checkbox__check,
2565
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='indeterminate']
2566
+ .seblify-checkbox__indeterminate {
2567
+ animation: checkbox-pop-mark-in calc(var(--checkbox-pop-duration) * 4 / 5)
2568
+ cubic-bezier(0.16, 0.82, 0.24, 1) calc(var(--checkbox-pop-duration) / 5)
2569
+ both;
2570
+ }
2571
+
2572
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='unchecked']
2573
+ .seblify-checkbox__check,
2574
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='disabled-unchecked']
2575
+ .seblify-checkbox__check {
2576
+ animation: checkbox-pop-mark-out calc(var(--checkbox-pop-duration) * 2 / 5)
2577
+ ease-in both;
2578
+ }
2579
+
2580
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='unchecked']
2581
+ .seblify-checkbox__control::before,
2582
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-state='disabled-unchecked']
2583
+ .seblify-checkbox__control::before {
2584
+ animation: checkbox-pop-fill-out calc(var(--checkbox-pop-duration) / 2) ease
2585
+ calc(var(--checkbox-pop-duration) / 10) both;
2586
+ }
2587
+
2588
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='checked']
2589
+ .seblify-checkbox__control::before,
2590
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='indeterminate']
2591
+ .seblify-checkbox__control::before {
2592
+ animation: checkbox-scale-fill-in
2593
+ calc(var(--checkbox-scale-duration) * 9 / 10)
2594
+ cubic-bezier(0.2, 0.78, 0.24, 1) both;
2595
+ }
2596
+
2597
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='checked']
2598
+ .seblify-checkbox__mark,
2599
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='indeterminate']
2600
+ .seblify-checkbox__mark {
2601
+ animation: checkbox-scale-mark-in
2602
+ calc(var(--checkbox-scale-duration) * 7 / 10)
2603
+ cubic-bezier(0.2, 0.78, 0.24, 1)
2604
+ calc(var(--checkbox-scale-duration) * 3 / 10) both;
2605
+ }
2606
+
2607
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='unchecked']
2608
+ .seblify-checkbox__mark,
2609
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='disabled-unchecked']
2610
+ .seblify-checkbox__mark,
2611
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-layer-transition='direct-to-derived']
2612
+ .seblify-checkbox__mark {
2613
+ animation: checkbox-scale-mark-out
2614
+ calc(var(--checkbox-scale-duration) * 7 / 10) ease both;
2615
+ }
2616
+
2617
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='checked']:not(
2618
+ [data-variant='blank']
2619
+ ):not([data-variant='inset']):not([data-variant='overflow'])
2620
+ .seblify-checkbox__check {
2621
+ animation: checkbox-scale-check-in
2622
+ calc(var(--checkbox-scale-duration) * 7 / 10)
2623
+ cubic-bezier(0.2, 0.78, 0.24, 1)
2624
+ calc(var(--checkbox-scale-duration) * 3 / 10) both;
2625
+ }
2626
+
2627
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='unchecked']:not(
2628
+ [data-variant='blank']
2629
+ ):not([data-variant='inset']):not([data-variant='overflow'])
2630
+ .seblify-checkbox__check,
2631
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='disabled-unchecked']:not(
2632
+ [data-variant='blank']
2633
+ ):not([data-variant='inset']):not([data-variant='overflow'])
2634
+ .seblify-checkbox__check,
2635
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-layer-transition='direct-to-derived']:not(
2636
+ [data-variant='blank']
2637
+ ):not([data-variant='inset']):not([data-variant='overflow'])
2638
+ .seblify-checkbox__check {
2639
+ animation: checkbox-scale-check-out
2640
+ calc(var(--checkbox-scale-duration) * 7 / 10) ease both;
2641
+ }
2642
+
2643
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='unchecked']
2644
+ .seblify-checkbox__control::before,
2645
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-state='disabled-unchecked']
2646
+ .seblify-checkbox__control::before,
2647
+ .seblify-checkbox[data-animation='scale'][data-animating='true'][data-layer-transition='direct-to-derived']
2648
+ .seblify-checkbox__control::before {
2649
+ animation: checkbox-scale-fill-out
2650
+ calc(var(--checkbox-scale-duration) * 9 / 10) ease
2651
+ calc(var(--checkbox-scale-duration) / 10) both;
2652
+ }
2653
+
2654
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='checked']
2655
+ .seblify-checkbox__control::before,
2656
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='indeterminate']
2657
+ .seblify-checkbox__control::before {
2658
+ animation: checkbox-rise-fill-in calc(var(--checkbox-rise-duration) * 5 / 8)
2659
+ cubic-bezier(0.18, 0.78, 0.24, 1) both;
2660
+ }
2661
+
2662
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='checked']
2663
+ .seblify-checkbox__mark,
2664
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='indeterminate']
2665
+ .seblify-checkbox__mark {
2666
+ animation: checkbox-rise-mark-in calc(var(--checkbox-rise-duration) * 3 / 4)
2667
+ cubic-bezier(0.18, 0.78, 0.24, 1) calc(var(--checkbox-rise-duration) / 4)
2668
+ both;
2669
+ }
2670
+
2671
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='unchecked']
2672
+ .seblify-checkbox__mark,
2673
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='disabled-unchecked']
2674
+ .seblify-checkbox__mark,
2675
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-layer-transition='direct-to-derived']
2676
+ .seblify-checkbox__mark {
2677
+ animation: checkbox-rise-mark-out var(--checkbox-rise-exit-phase-duration)
2678
+ ease-in both;
2679
+ }
2680
+
2681
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='unchecked']
2682
+ .seblify-checkbox__control::before,
2683
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-state='disabled-unchecked']
2684
+ .seblify-checkbox__control::before,
2685
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-layer-transition='direct-to-derived']:is(
2686
+ [data-variant='solid'],
2687
+ [data-variant='soft'],
2688
+ [data-variant='tint'],
2689
+ [data-variant='blank']
2690
+ ):is(
2691
+ [data-state='checked'],
2692
+ [data-state='indeterminate'],
2693
+ [data-state='disabled-checked'],
2694
+ [data-state='disabled-indeterminate']
2695
+ )
2696
+ .seblify-checkbox__control::before {
2697
+ animation: checkbox-rise-fill-out var(--checkbox-rise-exit-phase-duration)
2698
+ ease-in var(--checkbox-rise-exit-phase-duration) both;
2699
+ }
2700
+
2701
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='checked']
2702
+ .seblify-checkbox__control,
2703
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='indeterminate']
2704
+ .seblify-checkbox__control,
2705
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-checked']
2706
+ .seblify-checkbox__control,
2707
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-indeterminate']
2708
+ .seblify-checkbox__control,
2709
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='unchecked']
2710
+ .seblify-checkbox__control,
2711
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-unchecked']
2712
+ .seblify-checkbox__control {
2713
+ border-color: transparent;
2714
+ }
2715
+
2716
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='checked']
2717
+ .seblify-checkbox__control::after,
2718
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='indeterminate']
2719
+ .seblify-checkbox__control::after,
2720
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-checked']
2721
+ .seblify-checkbox__control::after,
2722
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-indeterminate']
2723
+ .seblify-checkbox__control::after {
2724
+ animation: checkbox-bounce-border-collapse
2725
+ var(--checkbox-bounce-enter-collapse-duration) ease-in both;
2726
+ }
2727
+
2728
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='unchecked']
2729
+ .seblify-checkbox__control::after,
2730
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-unchecked']
2731
+ .seblify-checkbox__control::after {
2732
+ animation: checkbox-bounce-border-grow
2733
+ var(--checkbox-bounce-exit-phase-duration) ease-out
2734
+ var(--checkbox-bounce-exit-phase-duration) both;
2735
+ }
2736
+
2737
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-layer-transition='direct-to-derived']
2738
+ .seblify-checkbox__control::after,
2739
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-layer-transition='empty-to-derived']
2740
+ .seblify-checkbox__control::after {
2741
+ animation: none;
2742
+ opacity: 0;
2743
+ }
2744
+
2745
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='checked']
2746
+ .seblify-checkbox__control::before,
2747
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='indeterminate']
2748
+ .seblify-checkbox__control::before {
2749
+ animation: checkbox-bounce-fill-in
2750
+ calc(
2751
+ var(--checkbox-bounce-duration) -
2752
+ var(--checkbox-bounce-enter-collapse-duration)
2753
+ )
2754
+ cubic-bezier(0.18, 0.88, 0.28, 1)
2755
+ var(--checkbox-bounce-enter-collapse-duration) both;
2756
+ }
2757
+
2758
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='unchecked']
2759
+ .seblify-checkbox__control::before,
2760
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-unchecked']
2761
+ .seblify-checkbox__control::before {
2762
+ animation: checkbox-bounce-fill-out
2763
+ var(--checkbox-bounce-exit-phase-duration) ease-in both;
2764
+ }
2765
+
2766
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='indeterminate']
2767
+ .seblify-checkbox__mark {
2768
+ animation: checkbox-bounce-in
2769
+ calc(
2770
+ var(--checkbox-bounce-duration) -
2771
+ var(--checkbox-bounce-enter-collapse-duration)
2772
+ )
2773
+ cubic-bezier(0.18, 0.88, 0.28, 1)
2774
+ var(--checkbox-bounce-enter-collapse-duration) both;
2775
+ }
2776
+
2777
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='checked']:not(
2778
+ [data-variant='overflow']
2779
+ )
2780
+ .seblify-checkbox__check {
2781
+ animation: checkbox-bounce-check-in
2782
+ calc(
2783
+ var(--checkbox-bounce-duration) -
2784
+ var(--checkbox-bounce-enter-collapse-duration)
2785
+ )
2786
+ cubic-bezier(0.18, 0.88, 0.28, 1)
2787
+ var(--checkbox-bounce-enter-collapse-duration) both;
2788
+ }
2789
+
2790
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='checked'][data-variant='overflow']
2791
+ .seblify-checkbox__mark {
2792
+ animation: checkbox-bounce-in
2793
+ calc(
2794
+ var(--checkbox-bounce-duration) -
2795
+ var(--checkbox-bounce-enter-collapse-duration)
2796
+ )
2797
+ cubic-bezier(0.18, 0.88, 0.28, 1)
2798
+ var(--checkbox-bounce-enter-collapse-duration) both;
2799
+ }
2800
+
2801
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='unchecked']
2802
+ .seblify-checkbox__mark,
2803
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-state='disabled-unchecked']
2804
+ .seblify-checkbox__mark {
2805
+ animation: checkbox-bounce-out var(--checkbox-bounce-exit-phase-duration)
2806
+ ease-in both;
2807
+ }
2808
+
2809
+ .seblify-checkbox[data-variant='blank'][data-state='checked']
2810
+ .seblify-checkbox__mark,
2811
+ .seblify-checkbox[data-variant='blank'][data-state='disabled-checked']
2812
+ .seblify-checkbox__mark {
2813
+ opacity: 0;
2814
+ }
2815
+
2816
+ .seblify-checkbox[data-variant='inset'][data-state='checked']
2817
+ .seblify-checkbox__mark,
2818
+ .seblify-checkbox[data-variant='inset'][data-state='disabled-checked']
2819
+ .seblify-checkbox__mark {
2820
+ width: calc(var(--checkbox-size) * 0.5555556);
2821
+ height: calc(var(--checkbox-size) * 0.5555556);
2822
+ border-radius: max(0px, calc(var(--checkbox-radius) - 0.125rem));
2823
+ background: var(--checkbox-active-surface);
2824
+ transform: scale(1);
2825
+ }
2826
+
2827
+ .seblify-checkbox[data-variant='inset'][data-state='checked']
2828
+ .seblify-checkbox__check,
2829
+ .seblify-checkbox[data-variant='inset'][data-state='disabled-checked']
2830
+ .seblify-checkbox__check {
2831
+ opacity: 0;
2832
+ }
2833
+
2834
+ .seblify-checkbox[data-variant='overflow'][data-state='checked']
2835
+ .seblify-checkbox__mark,
2836
+ .seblify-checkbox[data-variant='overflow'][data-state='disabled-checked']
2837
+ .seblify-checkbox__mark {
2838
+ flex: 0 0 auto;
2839
+ width: var(--checkbox-size);
2840
+ height: var(--checkbox-size);
2841
+ transform: scale(1);
2842
+ }
2843
+
2844
+ .seblify-checkbox[data-variant='overflow'][data-state='checked']
2845
+ .seblify-checkbox__check-cutout,
2846
+ .seblify-checkbox[data-variant='overflow'][data-state='disabled-checked']
2847
+ .seblify-checkbox__check-cutout {
2848
+ display: block;
2849
+ }
2850
+
2851
+ .seblify-checkbox[data-variant='overflow']
2852
+ :is(
2853
+ .seblify-checkbox__derived-check-path,
2854
+ .seblify-checkbox__check-path,
2855
+ .seblify-checkbox__visual-check-path
2856
+ ) {
2857
+ stroke-width: clamp(1.6px, calc(var(--checkbox-size) * 0.1333333), 3.2px);
2858
+ }
2859
+
2860
+ .seblify-checkbox[data-variant='overflow']
2861
+ :is(
2862
+ .seblify-checkbox__check-cutout,
2863
+ .seblify-checkbox__visual-check-cutout
2864
+ ) {
2865
+ stroke-width: clamp(4px, calc(var(--checkbox-size) * 0.3291667), 7.9px);
2866
+ }
2867
+
2868
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='checked']
2869
+ .seblify-checkbox__control::before {
2870
+ animation: checkbox-draw-fill
2871
+ calc(var(--checkbox-draw-check-duration) * 7 / 10) ease-out both;
2872
+ }
2873
+
2874
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='checked']
2875
+ .seblify-checkbox__check-path {
2876
+ animation: checkbox-draw-check
2877
+ calc(var(--checkbox-draw-check-duration) * 5 / 4) ease-out both;
2878
+ }
2879
+
2880
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='unchecked']
2881
+ .seblify-checkbox__mark,
2882
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='disabled-unchecked']
2883
+ .seblify-checkbox__mark {
2884
+ animation: checkbox-draw-mark-out
2885
+ calc(var(--checkbox-draw-check-duration) * 3 / 5) linear both;
2886
+ transform: scale(1);
2887
+ }
2888
+
2889
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='unchecked']
2890
+ .seblify-checkbox__check-path,
2891
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='disabled-unchecked']
2892
+ .seblify-checkbox__check-path {
2893
+ animation: checkbox-draw-check-out
2894
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in both;
2895
+ }
2896
+
2897
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='unchecked']
2898
+ .seblify-checkbox__control::before,
2899
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='disabled-unchecked']
2900
+ .seblify-checkbox__control::before {
2901
+ animation: checkbox-draw-fill-out
2902
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in
2903
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) both;
2904
+ }
2905
+
2906
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-state='indeterminate']:is(
2907
+ [data-intermediate-mark='dash'],
2908
+ [data-intermediate-mark='tilde']
2909
+ )
2910
+ .seblify-checkbox__indeterminate {
2911
+ animation: checkbox-draw-indeterminate
2912
+ var(--checkbox-draw-indeterminate-duration) ease-out;
2913
+ transform-origin: right;
2914
+ }
2915
+
2916
+ .seblify-checkbox > input:focus-visible + .seblify-checkbox__control {
2917
+ outline: 3px solid var(--checkbox-focus-ring);
2918
+ outline-offset: 2px;
2919
+ }
2920
+
2921
+ .seblify-checkbox[data-visual-state='derived'],
2922
+ .seblify-checkbox[data-visual-state='indirect'] {
2923
+ --checkbox-active-border: var(--checkbox-derived-border);
2924
+ --checkbox-active-surface: var(--checkbox-derived-surface);
2925
+ --checkbox-active-mark: var(--checkbox-derived-mark);
2926
+ }
2927
+
2928
+ .seblify-checkbox[data-visual-state='derived'] .seblify-checkbox__control,
2929
+ .seblify-checkbox[data-visual-state='indirect'] .seblify-checkbox__control {
2930
+ border-color: var(--checkbox-derived-control-border);
2931
+ background: var(--checkbox-derived-surface);
2932
+ color: var(--checkbox-derived-mark);
2933
+ }
2934
+
2935
+ .seblify-checkbox[data-layer-transition='empty-to-derived']
2936
+ .seblify-checkbox__control {
2937
+ border-color: var(--checkbox-derived-control-border);
2938
+ background: var(--checkbox-surface);
2939
+ }
2940
+
2941
+ .seblify-checkbox[data-animating='true'][data-layer-transition='empty-to-derived']
2942
+ .seblify-checkbox__control {
2943
+ transition:
2944
+ border-color var(--checkbox-fade-duration) ease,
2945
+ background 0ms linear,
2946
+ transform 0ms linear,
2947
+ box-shadow 0ms linear;
2948
+ }
2949
+
2950
+ .seblify-checkbox[data-animating='true'][data-layer-transition='direct-to-derived']
2951
+ .seblify-checkbox__control {
2952
+ transition:
2953
+ border-color 0ms linear,
2954
+ background 0ms linear,
2955
+ transform 0ms linear,
2956
+ box-shadow 0ms linear;
2957
+ }
2958
+
2959
+ .seblify-checkbox[data-layer-transition='direct-to-derived'] {
2960
+ --checkbox-active-border: var(--seblify-tone-fill);
2961
+ --checkbox-active-surface: var(--seblify-tone-fill);
2962
+ --checkbox-active-mark: var(--seblify-tone-fill-text);
2963
+ --checkbox-bounce-fill-inset: 0;
2964
+ --checkbox-bounce-fill-radius: var(--checkbox-inner-radius);
2965
+ }
2966
+
2967
+ .seblify-checkbox[data-layer-transition='direct-to-derived']
2968
+ .seblify-checkbox__control {
2969
+ border-width: 0;
2970
+ border-color: transparent;
2971
+ color: var(--checkbox-active-mark);
2972
+ }
2973
+
2974
+ .seblify-checkbox[data-animating='true']:is(
2975
+ [data-layer-transition='empty-to-derived']
2976
+ )
2977
+ .seblify-checkbox__derived-layer {
2978
+ border-color: transparent;
2979
+ }
2980
+
2981
+ .seblify-checkbox:is(
2982
+ [data-animation='draw'],
2983
+ [data-animation='rise']
2984
+ )[data-animating='true']:is(
2985
+ [data-layer-transition='direct-to-derived'],
2986
+ [data-layer-transition='derived-to-direct']
2987
+ ):is(
2988
+ [data-state='checked'],
2989
+ [data-state='indeterminate'],
2990
+ [data-state='disabled-checked'],
2991
+ [data-state='disabled-indeterminate']
2992
+ )
2993
+ .seblify-checkbox__control {
2994
+ background: transparent !important;
2995
+ transition:
2996
+ border-color 0ms linear,
2997
+ background 0ms linear,
2998
+ transform 0ms linear,
2999
+ box-shadow var(--checkbox-control-duration) ease;
3000
+ }
3001
+
3002
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-layer-transition='derived-to-direct']:is(
3003
+ [data-variant='solid'],
3004
+ [data-variant='soft'],
3005
+ [data-variant='tint'],
3006
+ [data-variant='blank']
3007
+ ):is(
3008
+ [data-state='checked'],
3009
+ [data-state='indeterminate'],
3010
+ [data-state='disabled-checked'],
3011
+ [data-state='disabled-indeterminate']
3012
+ )
3013
+ .seblify-checkbox__control::before {
3014
+ background: var(--checkbox-active-surface);
3015
+ animation: checkbox-rise-direct-fill-in
3016
+ calc(var(--checkbox-rise-duration) * 5 / 8)
3017
+ cubic-bezier(0.18, 0.78, 0.24, 1) both;
3018
+ }
3019
+
3020
+ .seblify-checkbox__content {
3021
+ display: grid;
3022
+ gap: 2px;
3023
+ margin-top: var(--checkbox-content-offset);
3024
+ min-width: 0;
3025
+ }
3026
+
3027
+ .seblify-checkbox__label {
3028
+ font-weight: 700;
3029
+ line-height: 1.35;
3030
+ }
3031
+
3032
+ .seblify-checkbox__description {
3033
+ color: var(--seblify-color-text-muted, #516176);
3034
+ font-size: 0.875rem;
3035
+ line-height: 1.45;
3036
+ }
3037
+
3038
+ .seblify-checkbox.disabled {
3039
+ cursor: not-allowed;
3040
+ opacity: var(--seblify-opacity-disabled, 0.56);
3041
+ }
3042
+
3043
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='direct-to-derived']
3044
+ .seblify-checkbox__mark {
3045
+ animation: checkbox-fade-mark-out
3046
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3047
+ }
3048
+
3049
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='direct-to-derived']
3050
+ .seblify-checkbox__control::before {
3051
+ animation: checkbox-fade-fill-out
3052
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3053
+ }
3054
+
3055
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='empty-to-derived']
3056
+ .seblify-checkbox__derived-layer {
3057
+ animation: checkbox-fade-mark-in var(--checkbox-fade-duration) ease both;
3058
+ }
3059
+
3060
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='derived-to-empty']
3061
+ .seblify-checkbox__derived-layer {
3062
+ animation: checkbox-fade-mark-out
3063
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3064
+ }
3065
+
3066
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='empty-to-derived']
3067
+ .seblify-checkbox__mark,
3068
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='derived-to-empty']
3069
+ .seblify-checkbox__mark,
3070
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='empty-to-derived']
3071
+ .seblify-checkbox__control::before,
3072
+ .seblify-checkbox[data-animation='fade'][data-animating='true'][data-layer-transition='derived-to-empty']
3073
+ .seblify-checkbox__control::before {
3074
+ animation: none;
3075
+ opacity: 0;
3076
+ }
3077
+
3078
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-layer-transition='direct-to-derived']
3079
+ .seblify-checkbox__mark {
3080
+ animation: checkbox-bump-out calc(var(--checkbox-bump-duration) * 2 / 5)
3081
+ ease both;
3082
+ }
3083
+
3084
+ .seblify-checkbox[data-animation='bump'][data-animating='true'][data-layer-transition='direct-to-derived']
3085
+ .seblify-checkbox__control::before {
3086
+ animation: checkbox-bump-fill-out calc(var(--checkbox-bump-duration) / 2)
3087
+ ease calc(var(--checkbox-bump-duration) / 10) both;
3088
+ }
3089
+
3090
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-layer-transition='direct-to-derived'][data-state='checked']
3091
+ .seblify-checkbox__check,
3092
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-layer-transition='direct-to-derived'][data-state='indeterminate']
3093
+ .seblify-checkbox__indeterminate {
3094
+ animation: checkbox-pop-mark-out calc(var(--checkbox-pop-duration) * 2 / 5)
3095
+ ease-in both;
3096
+ }
3097
+
3098
+ .seblify-checkbox[data-animation='pop'][data-animating='true'][data-layer-transition='direct-to-derived']
3099
+ .seblify-checkbox__control::before {
3100
+ animation: checkbox-pop-fill-out calc(var(--checkbox-pop-duration) / 2) ease
3101
+ calc(var(--checkbox-pop-duration) / 10) both;
3102
+ }
3103
+
3104
+ .seblify-checkbox[data-animation='rise'][data-animating='true'][data-layer-transition='direct-to-derived']:is(
3105
+ [data-variant='solid'],
3106
+ [data-variant='soft'],
3107
+ [data-variant='tint'],
3108
+ [data-variant='blank']
3109
+ ):is(
3110
+ [data-state='checked'],
3111
+ [data-state='indeterminate'],
3112
+ [data-state='disabled-checked'],
3113
+ [data-state='disabled-indeterminate']
3114
+ )
3115
+ .seblify-checkbox__control::before {
3116
+ background: var(--checkbox-active-surface);
3117
+ }
3118
+
3119
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-layer-transition='direct-to-derived']
3120
+ .seblify-checkbox__mark {
3121
+ animation: checkbox-bounce-out var(--checkbox-bounce-exit-phase-duration)
3122
+ ease-in both;
3123
+ }
3124
+
3125
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-layer-transition='direct-to-derived']
3126
+ .seblify-checkbox__control::before {
3127
+ animation: checkbox-bounce-fill-out
3128
+ var(--checkbox-bounce-exit-phase-duration) ease-in both;
3129
+ }
3130
+
3131
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-layer-transition='direct-to-derived']
3132
+ .seblify-checkbox__derived-layer {
3133
+ animation: checkbox-bounce-border-grow
3134
+ var(--checkbox-bounce-exit-phase-duration) ease-out
3135
+ var(--checkbox-bounce-exit-phase-duration) both;
3136
+ transform-origin: center;
3137
+ }
3138
+
3139
+ .seblify-checkbox[data-animation='bounce'][data-animating='true'][data-layer-transition='derived-to-direct']
3140
+ .seblify-checkbox__derived-layer {
3141
+ animation: checkbox-bounce-border-collapse
3142
+ var(--checkbox-bounce-enter-collapse-duration) ease-in both;
3143
+ transform-origin: center;
3144
+ }
3145
+
3146
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-layer-transition='direct-to-derived']
3147
+ .seblify-checkbox__mark {
3148
+ animation: checkbox-draw-mark-out
3149
+ calc(var(--checkbox-draw-check-duration) * 3 / 5) linear both;
3150
+ transform: scale(1);
3151
+ }
3152
+
3153
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-layer-transition='direct-to-derived']
3154
+ .seblify-checkbox__check-path {
3155
+ animation: checkbox-draw-check-out
3156
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in both;
3157
+ }
3158
+
3159
+ .seblify-checkbox[data-animation='draw'][data-animating='true'][data-layer-transition='direct-to-derived']
3160
+ .seblify-checkbox__control::before {
3161
+ animation: checkbox-draw-fill-out
3162
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in
3163
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) both;
3164
+ }
3165
+
3166
+ .seblify-checkbox[data-visual-layer='derived']:not(
3167
+ [data-layer-transition='direct-to-derived']
3168
+ ):is(
3169
+ [data-state='checked'],
3170
+ [data-state='indeterminate'],
3171
+ [data-state='disabled-checked'],
3172
+ [data-state='disabled-indeterminate']
3173
+ )
3174
+ .seblify-checkbox__control::before {
3175
+ animation: none;
3176
+ opacity: 0;
3177
+ }
3178
+
3179
+ .seblify-checkbox .seblify-checkbox__control {
3180
+ overflow: hidden;
3181
+ border: 0 !important;
3182
+ background: transparent !important;
3183
+ color: var(--checkbox-active-mark);
3184
+ }
3185
+
3186
+ .seblify-checkbox[data-variant='overflow'] .seblify-checkbox__control {
3187
+ overflow: visible;
3188
+ }
3189
+
3190
+ .seblify-checkbox .seblify-checkbox__control::before,
3191
+ .seblify-checkbox .seblify-checkbox__control::after,
3192
+ .seblify-checkbox .seblify-checkbox__derived-layer,
3193
+ .seblify-checkbox .seblify-checkbox__mark {
3194
+ animation: none !important;
3195
+ opacity: 0 !important;
3196
+ }
3197
+
3198
+ .seblify-checkbox .seblify-checkbox__derived-layer,
3199
+ .seblify-checkbox .seblify-checkbox__mark {
3200
+ display: none !important;
3201
+ }
3202
+
3203
+ .seblify-checkbox__visual-stack {
3204
+ position: absolute;
3205
+ inset: 0;
3206
+ z-index: 1;
3207
+ border-radius: inherit;
3208
+ pointer-events: none;
3209
+ }
3210
+
3211
+ .seblify-checkbox__visual-layer {
3212
+ --checkbox-layer-border: var(--checkbox-active-border);
3213
+ --checkbox-layer-surface: var(--checkbox-active-surface);
3214
+ --checkbox-layer-mark: var(--checkbox-active-mark);
3215
+
3216
+ position: absolute;
3217
+ inset: 0;
3218
+ z-index: 1;
3219
+ display: inline-flex;
3220
+ align-items: center;
3221
+ justify-content: center;
3222
+ border: 1px solid transparent;
3223
+ border-radius: inherit;
3224
+ box-sizing: border-box;
3225
+ color: var(--checkbox-layer-mark);
3226
+ opacity: 0;
3227
+ overflow: hidden;
3228
+ pointer-events: none;
3229
+ transform-origin: center;
3230
+ }
3231
+
3232
+ .seblify-checkbox__visual-layer::before {
3233
+ position: absolute;
3234
+ inset: 0;
3235
+ z-index: 3;
3236
+ border: 1px solid var(--checkbox-layer-border);
3237
+ border-radius: inherit;
3238
+ box-sizing: border-box;
3239
+ content: '';
3240
+ pointer-events: none;
3241
+ transform-origin: center;
3242
+ }
3243
+
3244
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'] {
3245
+ --checkbox-layer-border: var(--checkbox-border);
3246
+ --checkbox-layer-surface: var(--checkbox-surface);
3247
+ --checkbox-layer-mark: transparent;
3248
+
3249
+ z-index: 0;
3250
+ }
3251
+
3252
+ .seblify-checkbox__visual-layer[data-checkbox-layer='indirect-indeterminate'] {
3253
+ z-index: 1;
3254
+ }
3255
+
3256
+ .seblify-checkbox__visual-layer[data-checkbox-layer='indirect-checked'] {
3257
+ z-index: 2;
3258
+ }
3259
+
3260
+ .seblify-checkbox__visual-layer[data-checkbox-layer='direct-indeterminate'] {
3261
+ z-index: 3;
3262
+ }
3263
+
3264
+ .seblify-checkbox__visual-layer[data-checkbox-layer='direct-checked'] {
3265
+ z-index: 4;
3266
+ }
3267
+
3268
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'] {
3269
+ --checkbox-layer-border: var(--checkbox-derived-control-border);
3270
+ --checkbox-layer-surface: var(--checkbox-derived-surface);
3271
+ --checkbox-layer-mark: var(--checkbox-derived-mark);
3272
+ }
3273
+
3274
+ .seblify-checkbox__visual-layer[data-layer-state='visible'],
3275
+ .seblify-checkbox__visual-layer[data-layer-state='enter'],
3276
+ .seblify-checkbox__visual-layer[data-layer-state='exit'] {
3277
+ opacity: 1;
3278
+ }
3279
+
3280
+ .seblify-checkbox__visual-layer[data-layer-state='visible'] {
3281
+ background: var(--checkbox-layer-surface);
3282
+ }
3283
+
3284
+ .seblify-checkbox[data-variant='solid']
3285
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'][data-layer-state='visible'] {
3286
+ background: transparent;
3287
+ }
3288
+
3289
+ .seblify-checkbox[data-variant='solid']
3290
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3291
+ overflow: visible;
3292
+ }
3293
+
3294
+ .seblify-checkbox[data-variant='solid']:is(
3295
+ [data-animation='rise'],
3296
+ [data-animation='draw']
3297
+ )
3298
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3299
+ overflow: hidden;
3300
+ }
3301
+
3302
+ .seblify-checkbox__visual-surface {
3303
+ position: absolute;
3304
+ inset: -1px;
3305
+ z-index: 1;
3306
+ border-radius: inherit;
3307
+ background: var(--checkbox-layer-surface);
3308
+ opacity: 1;
3309
+ transform-origin: center;
3310
+ }
3311
+
3312
+ .seblify-checkbox[data-variant='solid']
3313
+ .seblify-checkbox__visual-layer[data-layer-kind='direct']
3314
+ .seblify-checkbox__visual-surface {
3315
+ inset: 0;
3316
+ }
3317
+
3318
+ .seblify-checkbox__visual-mark {
3319
+ position: relative;
3320
+ z-index: 2;
3321
+ display: grid;
3322
+ width: calc(var(--checkbox-size) * 0.8333333);
3323
+ height: calc(var(--checkbox-size) * 0.8333333);
3324
+ place-items: center;
3325
+ opacity: 1;
3326
+ transform-origin: center;
3327
+ }
3328
+
3329
+ .seblify-checkbox__visual-check,
3330
+ .seblify-checkbox__visual-indeterminate {
3331
+ position: absolute;
3332
+ inset: 0;
3333
+ display: block;
3334
+ width: 100%;
3335
+ height: 100%;
3336
+ overflow: visible;
3337
+ }
3338
+
3339
+ .seblify-checkbox__visual-check-path,
3340
+ .seblify-checkbox__visual-check-cutout,
3341
+ .seblify-checkbox__visual-indeterminate-path {
3342
+ fill: none;
3343
+ stroke: currentColor;
3344
+ stroke-dasharray: 1;
3345
+ stroke-dashoffset: 0;
3346
+ stroke-linecap: butt;
3347
+ stroke-linejoin: miter;
3348
+ stroke-width: 3.2;
3349
+ transform-box: fill-box;
3350
+ transform-origin: center;
3351
+ }
3352
+
3353
+ .seblify-checkbox__visual-indeterminate-path:is(
3354
+ [data-intermediate-mark='dot'],
3355
+ [data-intermediate-mark='square']
3356
+ ) {
3357
+ fill: currentColor;
3358
+ stroke: none;
3359
+ stroke-dasharray: none;
3360
+ }
3361
+
3362
+ .seblify-checkbox__visual-check-cutout {
3363
+ display: none;
3364
+ stroke: var(--checkbox-layer-surface);
3365
+ stroke-width: 7.9;
3366
+ }
3367
+
3368
+ .seblify-checkbox[data-variant='solid']
3369
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3370
+ --checkbox-layer-border: transparent;
3371
+
3372
+ border-width: 0;
3373
+ }
3374
+
3375
+ .seblify-checkbox[data-variant='soft']
3376
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3377
+ --checkbox-layer-border: transparent;
3378
+ --checkbox-layer-surface: var(--checkbox-active-soft-surface);
3379
+ --checkbox-layer-mark: var(--checkbox-active-soft-mark);
3380
+ }
3381
+
3382
+ .seblify-checkbox[data-variant='tint']
3383
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3384
+ --checkbox-layer-border: transparent;
3385
+ --checkbox-layer-surface: var(--checkbox-active-soft-surface);
3386
+ --checkbox-layer-mark: var(--checkbox-active-border);
3387
+ }
3388
+
3389
+ .seblify-checkbox[data-variant='outline']
3390
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'],
3391
+ .seblify-checkbox[data-variant='overflow']
3392
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3393
+ --checkbox-layer-surface: var(--checkbox-surface);
3394
+ --checkbox-layer-mark: var(--checkbox-active-border);
3395
+ }
3396
+
3397
+ .seblify-checkbox[data-variant='outline']
3398
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'] {
3399
+ --checkbox-layer-surface: transparent;
3400
+ }
3401
+
3402
+ .seblify-checkbox[data-variant='overflow']
3403
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'] {
3404
+ --checkbox-layer-surface: var(--checkbox-surface);
3405
+ }
3406
+
3407
+ .seblify-checkbox[data-variant='plain']
3408
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty']) {
3409
+ --checkbox-layer-border: transparent;
3410
+ --checkbox-layer-surface: transparent;
3411
+
3412
+ overflow: visible;
3413
+ }
3414
+
3415
+ .seblify-checkbox[data-variant='plain']
3416
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3417
+ --checkbox-layer-mark: var(--checkbox-active-border);
3418
+ }
3419
+
3420
+ .seblify-checkbox[data-variant='plain']
3421
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty'])
3422
+ .seblify-checkbox__visual-mark {
3423
+ flex: 0 0 auto;
3424
+ width: var(--checkbox-size);
3425
+ height: var(--checkbox-size);
3426
+ }
3427
+
3428
+ .seblify-checkbox[data-variant='blank']
3429
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3430
+ --checkbox-layer-border: transparent;
3431
+ --checkbox-layer-mark-surface: var(--checkbox-active-surface);
3432
+ }
3433
+
3434
+ .seblify-checkbox[data-variant='blank']
3435
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'] {
3436
+ --checkbox-layer-border: transparent;
3437
+ --checkbox-layer-mark-surface: var(--checkbox-derived-mark);
3438
+ }
3439
+
3440
+ .seblify-checkbox[data-variant='blank']
3441
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'][data-selection='indeterminate'] {
3442
+ --checkbox-layer-border: var(--checkbox-active-border);
3443
+ }
3444
+
3445
+ .seblify-checkbox[data-variant='blank']
3446
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'][data-selection='indeterminate'] {
3447
+ --checkbox-layer-border: var(--checkbox-derived-border);
3448
+ }
3449
+
3450
+ .seblify-checkbox[data-variant='blank']
3451
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty']) {
3452
+ --checkbox-layer-surface: transparent;
3453
+
3454
+ background: transparent;
3455
+ }
3456
+
3457
+ .seblify-checkbox[data-variant='inset']
3458
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'] {
3459
+ --checkbox-layer-surface: var(--checkbox-surface);
3460
+ --checkbox-layer-mark-surface: var(--checkbox-active-surface);
3461
+ }
3462
+
3463
+ .seblify-checkbox[data-variant='inset']
3464
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'] {
3465
+ --checkbox-layer-surface: var(--checkbox-surface);
3466
+ --checkbox-layer-mark-surface: var(--checkbox-derived-mark);
3467
+ }
3468
+
3469
+ .seblify-checkbox:is([data-variant='blank'], [data-variant='inset'])
3470
+ .seblify-checkbox__visual-layer[data-layer-kind='direct'][data-selection='indeterminate'] {
3471
+ --checkbox-layer-mark: var(--checkbox-layer-mark-surface);
3472
+ }
3473
+
3474
+ .seblify-checkbox[data-variant='blank']
3475
+ .seblify-checkbox__visual-layer[data-selection='checked']
3476
+ .seblify-checkbox__visual-surface {
3477
+ background: transparent;
3478
+ }
3479
+
3480
+ .seblify-checkbox[data-variant='blank']
3481
+ .seblify-checkbox__visual-layer[data-selection='checked']
3482
+ .seblify-checkbox__visual-mark {
3483
+ width: var(--checkbox-size);
3484
+ height: var(--checkbox-size);
3485
+ border-radius: inherit;
3486
+ background: var(--checkbox-layer-mark-surface);
3487
+ }
3488
+
3489
+ .seblify-checkbox[data-variant='inset']
3490
+ .seblify-checkbox__visual-layer[data-selection='checked']
3491
+ .seblify-checkbox__visual-mark {
3492
+ width: calc(var(--checkbox-size) * 0.5555556);
3493
+ height: calc(var(--checkbox-size) * 0.5555556);
3494
+ border-radius: max(0px, calc(var(--checkbox-radius) - 0.125rem));
3495
+ background: var(--checkbox-layer-mark-surface);
3496
+ }
3497
+
3498
+ .seblify-checkbox[data-variant='blank']
3499
+ .seblify-checkbox__visual-layer[data-selection='checked']
3500
+ .seblify-checkbox__visual-check,
3501
+ .seblify-checkbox[data-variant='inset']
3502
+ .seblify-checkbox__visual-layer[data-selection='checked']
3503
+ .seblify-checkbox__visual-check {
3504
+ opacity: 0;
3505
+ }
3506
+
3507
+ .seblify-checkbox[data-variant='overflow']
3508
+ .seblify-checkbox__visual-layer[data-selection='checked']
3509
+ .seblify-checkbox__visual-mark {
3510
+ flex: 0 0 auto;
3511
+ z-index: 4;
3512
+ width: var(--checkbox-size);
3513
+ height: var(--checkbox-size);
3514
+ }
3515
+
3516
+ .seblify-checkbox[data-variant='overflow']
3517
+ .seblify-checkbox__visual-layer[data-selection='checked'] {
3518
+ overflow: visible;
3519
+ }
3520
+
3521
+ .seblify-checkbox[data-variant='overflow']
3522
+ .seblify-checkbox__visual-check-cutout {
3523
+ display: block;
3524
+ }
3525
+
3526
+ .seblify-checkbox[data-animation='scale']
3527
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before,
3528
+ .seblify-checkbox[data-animation='bump']
3529
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before,
3530
+ .seblify-checkbox[data-animation='pop']
3531
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before,
3532
+ .seblify-checkbox[data-animation='draw']
3533
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before,
3534
+ .seblify-checkbox[data-animation='rise']
3535
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before,
3536
+ .seblify-checkbox[data-animation='bounce']
3537
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before {
3538
+ animation: checkbox-layer-border-in var(--checkbox-default-duration) ease
3539
+ both;
3540
+ }
3541
+
3542
+ .seblify-checkbox[data-animation='scale']
3543
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before,
3544
+ .seblify-checkbox[data-animation='bump']
3545
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before,
3546
+ .seblify-checkbox[data-animation='pop']
3547
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before,
3548
+ .seblify-checkbox[data-animation='draw']
3549
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before,
3550
+ .seblify-checkbox[data-animation='rise']
3551
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before,
3552
+ .seblify-checkbox[data-animation='bounce']
3553
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before {
3554
+ animation: checkbox-layer-border-out var(--checkbox-default-duration) ease
3555
+ both;
3556
+ }
3557
+
3558
+ .seblify-checkbox[data-animation='fade']
3559
+ .seblify-checkbox__visual-layer[data-layer-state='enter']::before {
3560
+ animation: checkbox-layer-border-in var(--checkbox-fade-duration) ease both;
3561
+ }
3562
+
3563
+ .seblify-checkbox[data-animation='fade']
3564
+ .seblify-checkbox__visual-layer[data-layer-state='exit']::before {
3565
+ animation: checkbox-layer-border-out var(--checkbox-fade-duration) ease both;
3566
+ }
3567
+
3568
+ .seblify-checkbox[data-animation='fade'][data-animating='true']:not(
3569
+ [data-variant='blank']
3570
+ ):is(
3571
+ [data-transition-from-layer='direct-checked'][data-transition-to-layer='direct-indeterminate'],
3572
+ [data-transition-from-layer='direct-indeterminate'][data-transition-to-layer='direct-checked'],
3573
+ [data-transition-from-layer='indirect-checked'][data-transition-to-layer='indirect-indeterminate'],
3574
+ [data-transition-from-layer='indirect-indeterminate'][data-transition-to-layer='indirect-checked']
3575
+ )
3576
+ .seblify-checkbox__visual-layer:is(
3577
+ [data-layer-state='enter'],
3578
+ [data-layer-state='exit']
3579
+ )::before {
3580
+ animation: none;
3581
+ }
3582
+
3583
+ .seblify-checkbox[data-animation='fade']
3584
+ .seblify-checkbox__visual-layer:not(
3585
+ [data-checkbox-layer='empty']
3586
+ )[data-layer-state='enter']
3587
+ .seblify-checkbox__visual-surface {
3588
+ animation: checkbox-fade-fill-in
3589
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3590
+ }
3591
+
3592
+ .seblify-checkbox[data-animation='fade']
3593
+ .seblify-checkbox__visual-layer:not(
3594
+ [data-checkbox-layer='empty']
3595
+ )[data-layer-state='enter']
3596
+ .seblify-checkbox__visual-mark {
3597
+ animation: checkbox-fade-mark-in var(--checkbox-fade-duration) ease both;
3598
+ }
3599
+
3600
+ .seblify-checkbox[data-animation='fade']
3601
+ .seblify-checkbox__visual-layer:not(
3602
+ [data-checkbox-layer='empty']
3603
+ )[data-layer-state='exit']
3604
+ .seblify-checkbox__visual-surface {
3605
+ animation: checkbox-fade-fill-out
3606
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3607
+ }
3608
+
3609
+ .seblify-checkbox[data-animation='fade']
3610
+ .seblify-checkbox__visual-layer:not(
3611
+ [data-checkbox-layer='empty']
3612
+ )[data-layer-state='exit']
3613
+ .seblify-checkbox__visual-mark {
3614
+ animation: checkbox-fade-mark-out
3615
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3616
+ }
3617
+
3618
+ .seblify-checkbox[data-animation='fade'][data-animating='true']:is(
3619
+ [data-transition-from-layer='direct-checked'][data-transition-to-layer='direct-indeterminate'],
3620
+ [data-transition-from-layer='direct-indeterminate'][data-transition-to-layer='direct-checked'],
3621
+ [data-transition-from-layer='indirect-checked'][data-transition-to-layer='indirect-indeterminate'],
3622
+ [data-transition-from-layer='indirect-indeterminate'][data-transition-to-layer='indirect-checked']
3623
+ )
3624
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3625
+ .seblify-checkbox__visual-mark {
3626
+ animation: checkbox-shape-swap-mark-out var(--checkbox-fade-duration) ease
3627
+ both;
3628
+ }
3629
+
3630
+ .seblify-checkbox[data-animation='fade'][data-animating='true']:is(
3631
+ [data-transition-from-layer='direct-checked'][data-transition-to-layer='direct-indeterminate'],
3632
+ [data-transition-from-layer='direct-indeterminate'][data-transition-to-layer='direct-checked'],
3633
+ [data-transition-from-layer='indirect-checked'][data-transition-to-layer='indirect-indeterminate'],
3634
+ [data-transition-from-layer='indirect-indeterminate'][data-transition-to-layer='indirect-checked']
3635
+ )
3636
+ .seblify-checkbox__visual-layer:is(
3637
+ [data-layer-state='enter'],
3638
+ [data-layer-state='visible']
3639
+ )
3640
+ .seblify-checkbox__visual-mark {
3641
+ animation: checkbox-shape-swap-mark-in var(--checkbox-fade-duration)
3642
+ cubic-bezier(0.2, 0.78, 0.24, 1) both;
3643
+ }
3644
+
3645
+ .seblify-checkbox[data-animation='fade'][data-animating='true']:is(
3646
+ [data-transition-from-layer='direct-indeterminate'][data-transition-to-layer='direct-checked'],
3647
+ [data-transition-from-layer='indirect-indeterminate'][data-transition-to-layer='indirect-checked']
3648
+ )
3649
+ .seblify-checkbox__visual-layer[data-layer-state='visible'][data-selection='indeterminate']
3650
+ .seblify-checkbox__visual-mark {
3651
+ animation: checkbox-shape-swap-mark-out var(--checkbox-fade-duration) ease
3652
+ both;
3653
+ }
3654
+
3655
+ .seblify-checkbox[data-animation='fade']
3656
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'][data-layer-state='enter'] {
3657
+ animation: checkbox-fade-mark-in
3658
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3659
+ }
3660
+
3661
+ .seblify-checkbox[data-animation='fade']
3662
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'][data-layer-state='exit'] {
3663
+ animation: checkbox-fade-mark-out
3664
+ calc(var(--checkbox-fade-duration) * 7 / 10) ease both;
3665
+ }
3666
+
3667
+ .seblify-checkbox[data-animation='scale']
3668
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3669
+ .seblify-checkbox__visual-surface {
3670
+ animation: checkbox-scale-fill-in
3671
+ calc(var(--checkbox-scale-duration) * 9 / 10)
3672
+ cubic-bezier(0.2, 0.78, 0.24, 1) both;
3673
+ }
3674
+
3675
+ .seblify-checkbox[data-animation='scale']
3676
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3677
+ .seblify-checkbox__visual-mark {
3678
+ animation: checkbox-scale-mark-in
3679
+ calc(var(--checkbox-scale-duration) * 7 / 10)
3680
+ cubic-bezier(0.2, 0.78, 0.24, 1)
3681
+ calc(var(--checkbox-scale-duration) * 3 / 10) both;
3682
+ }
3683
+
3684
+ .seblify-checkbox[data-animation='scale']
3685
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3686
+ .seblify-checkbox__visual-check {
3687
+ animation: checkbox-scale-check-in
3688
+ calc(var(--checkbox-scale-duration) * 7 / 10)
3689
+ cubic-bezier(0.2, 0.78, 0.24, 1)
3690
+ calc(var(--checkbox-scale-duration) * 3 / 10) both;
3691
+ }
3692
+
3693
+ .seblify-checkbox[data-animation='scale']
3694
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3695
+ .seblify-checkbox__visual-surface {
3696
+ animation: checkbox-scale-fill-out
3697
+ calc(var(--checkbox-scale-duration) * 9 / 10) ease
3698
+ calc(var(--checkbox-scale-duration) / 10) both;
3699
+ }
3700
+
3701
+ .seblify-checkbox[data-animation='scale']
3702
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3703
+ .seblify-checkbox__visual-mark {
3704
+ animation: checkbox-scale-mark-out
3705
+ calc(var(--checkbox-scale-duration) * 7 / 10) ease both;
3706
+ }
3707
+
3708
+ .seblify-checkbox[data-animation='scale']
3709
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3710
+ .seblify-checkbox__visual-check {
3711
+ animation: checkbox-scale-check-out
3712
+ calc(var(--checkbox-scale-duration) * 7 / 10) ease both;
3713
+ }
3714
+
3715
+ .seblify-checkbox[data-animation='scale']:is(
3716
+ [data-variant='blank'],
3717
+ [data-variant='inset']
3718
+ )
3719
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3720
+ .seblify-checkbox__visual-surface,
3721
+ .seblify-checkbox[data-animation='scale']:is(
3722
+ [data-variant='blank'],
3723
+ [data-variant='inset']
3724
+ )
3725
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3726
+ .seblify-checkbox__visual-surface {
3727
+ animation: none;
3728
+ }
3729
+
3730
+ .seblify-checkbox[data-animation='scale']:is(
3731
+ [data-variant='blank'],
3732
+ [data-variant='inset']
3733
+ )
3734
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3735
+ .seblify-checkbox__visual-mark {
3736
+ animation: checkbox-scale-check-in
3737
+ calc(var(--checkbox-scale-duration) * 7 / 10)
3738
+ cubic-bezier(0.2, 0.78, 0.24, 1)
3739
+ calc(var(--checkbox-scale-duration) * 3 / 10) both;
3740
+ }
3741
+
3742
+ .seblify-checkbox[data-animation='scale']:is(
3743
+ [data-variant='blank'],
3744
+ [data-variant='inset']
3745
+ )
3746
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3747
+ .seblify-checkbox__visual-mark {
3748
+ animation: checkbox-scale-check-out
3749
+ calc(var(--checkbox-scale-duration) * 7 / 10) ease both;
3750
+ }
3751
+
3752
+ .seblify-checkbox[data-animation='scale'][data-variant='blank']
3753
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'][data-layer-state='exit']::before,
3754
+ .seblify-checkbox[data-animation='scale'][data-variant='inset']
3755
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'][data-layer-state='enter']::before {
3756
+ animation: none;
3757
+ opacity: 1;
3758
+ }
3759
+
3760
+ .seblify-checkbox[data-animation='scale'][data-variant='inset']
3761
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']::before {
3762
+ animation: checkbox-inset-scale-border-in var(--checkbox-scale-duration)
3763
+ ease both;
3764
+ }
3765
+
3766
+ .seblify-checkbox[data-animation='scale'][data-variant='inset']
3767
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']::before {
3768
+ animation: checkbox-inset-scale-border-out var(--checkbox-scale-duration)
3769
+ ease both;
3770
+ }
3771
+
3772
+ .seblify-checkbox:is([data-animation='bump'], [data-animation='bounce']),
3773
+ .seblify-checkbox[data-animation='pop'][data-variant='blank'] {
3774
+ --checkbox-motion-overshoot-space: calc(var(--checkbox-size) * 0.24);
3775
+ }
3776
+
3777
+ .seblify-checkbox:is([data-animation='bump'], [data-animation='bounce'])
3778
+ .seblify-checkbox__control,
3779
+ .seblify-checkbox[data-animation='pop'][data-variant='blank']
3780
+ .seblify-checkbox__control {
3781
+ overflow: visible;
3782
+ }
3783
+
3784
+ .seblify-checkbox:is([data-animation='bump'], [data-animation='bounce'])
3785
+ .seblify-checkbox__visual-stack,
3786
+ .seblify-checkbox[data-animation='pop'][data-variant='blank']
3787
+ .seblify-checkbox__visual-stack {
3788
+ inset: calc(var(--checkbox-motion-overshoot-space) * -1);
3789
+ overflow: hidden;
3790
+ }
3791
+
3792
+ .seblify-checkbox:is([data-animation='bump'], [data-animation='bounce'])
3793
+ .seblify-checkbox__visual-layer,
3794
+ .seblify-checkbox[data-animation='pop'][data-variant='blank']
3795
+ .seblify-checkbox__visual-layer {
3796
+ inset: var(--checkbox-motion-overshoot-space);
3797
+ }
3798
+
3799
+ .seblify-checkbox[data-animation='bump']
3800
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty']) {
3801
+ overflow: visible;
3802
+ }
3803
+
3804
+ .seblify-checkbox[data-animation='pop'][data-variant='blank']
3805
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty']) {
3806
+ overflow: visible;
3807
+ }
3808
+
3809
+ .seblify-checkbox[data-animation='bump']
3810
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3811
+ .seblify-checkbox__visual-surface {
3812
+ animation: checkbox-bump-fill-in var(--checkbox-bump-duration)
3813
+ cubic-bezier(0.2, 0.86, 0.2, 1) both;
3814
+ }
3815
+
3816
+ .seblify-checkbox[data-animation='bump']
3817
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3818
+ .seblify-checkbox__visual-mark {
3819
+ animation: checkbox-bump-in calc(var(--checkbox-bump-duration) * 7 / 10)
3820
+ ease calc(var(--checkbox-bump-duration) * 3 / 20) both;
3821
+ }
3822
+
3823
+ .seblify-checkbox[data-animation='bump']
3824
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3825
+ .seblify-checkbox__visual-surface {
3826
+ animation: checkbox-bump-fill-out calc(var(--checkbox-bump-duration) / 2)
3827
+ ease calc(var(--checkbox-bump-duration) / 10) both;
3828
+ }
3829
+
3830
+ .seblify-checkbox[data-animation='bump']
3831
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3832
+ .seblify-checkbox__visual-mark {
3833
+ animation: checkbox-bump-out calc(var(--checkbox-bump-duration) * 2 / 5)
3834
+ ease both;
3835
+ }
3836
+
3837
+ .seblify-checkbox[data-animation='bump']:is(
3838
+ [data-variant='blank'],
3839
+ [data-variant='plain']
3840
+ )
3841
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3842
+ .seblify-checkbox__visual-surface,
3843
+ .seblify-checkbox[data-animation='bump']:is(
3844
+ [data-variant='blank'],
3845
+ [data-variant='plain']
3846
+ )
3847
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3848
+ .seblify-checkbox__visual-surface {
3849
+ animation: none;
3850
+ }
3851
+
3852
+ .seblify-checkbox[data-animation='bump']:is(
3853
+ [data-variant='blank'],
3854
+ [data-variant='plain']
3855
+ )
3856
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3857
+ .seblify-checkbox__visual-mark {
3858
+ animation: checkbox-pop-mark-in calc(var(--checkbox-bump-duration) * 4 / 5)
3859
+ cubic-bezier(0.16, 0.82, 0.24, 1) calc(var(--checkbox-bump-duration) / 5)
3860
+ both;
3861
+ }
3862
+
3863
+ .seblify-checkbox[data-animation='bump']:is(
3864
+ [data-variant='blank'],
3865
+ [data-variant='plain']
3866
+ )
3867
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3868
+ .seblify-checkbox__visual-mark {
3869
+ animation: checkbox-pop-mark-out calc(var(--checkbox-bump-duration) * 2 / 5)
3870
+ ease-in both;
3871
+ }
3872
+
3873
+ .seblify-checkbox[data-animation='bump']:is(
3874
+ [data-variant='outline'],
3875
+ [data-variant='inset'],
3876
+ [data-variant='overflow']
3877
+ )
3878
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty'])
3879
+ .seblify-checkbox__visual-surface {
3880
+ animation: none;
3881
+ }
3882
+
3883
+ .seblify-checkbox[data-animation='bump']:is(
3884
+ [data-variant='outline'],
3885
+ [data-variant='inset'],
3886
+ [data-variant='overflow']
3887
+ )
3888
+ .seblify-checkbox__visual-layer:not(
3889
+ [data-checkbox-layer='empty']
3890
+ )[data-layer-state='enter']::before {
3891
+ animation: checkbox-bump-fill-in var(--checkbox-bump-duration)
3892
+ cubic-bezier(0.2, 0.86, 0.2, 1) both;
3893
+ }
3894
+
3895
+ .seblify-checkbox[data-animation='bump']:is(
3896
+ [data-variant='outline'],
3897
+ [data-variant='inset'],
3898
+ [data-variant='overflow']
3899
+ )
3900
+ .seblify-checkbox__visual-layer:not(
3901
+ [data-checkbox-layer='empty']
3902
+ )[data-layer-state='exit']::before {
3903
+ animation: checkbox-bump-fill-out calc(var(--checkbox-bump-duration) / 2)
3904
+ ease calc(var(--checkbox-bump-duration) / 10) both;
3905
+ }
3906
+
3907
+ .seblify-checkbox[data-animation='pop']
3908
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3909
+ .seblify-checkbox__visual-surface {
3910
+ animation: checkbox-pop-fill-in calc(var(--checkbox-pop-duration) * 3 / 5)
3911
+ ease-out both;
3912
+ }
3913
+
3914
+ .seblify-checkbox[data-animation='pop']
3915
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3916
+ .seblify-checkbox__visual-mark {
3917
+ animation: checkbox-pop-mark-in calc(var(--checkbox-pop-duration) * 4 / 5)
3918
+ cubic-bezier(0.16, 0.82, 0.24, 1) calc(var(--checkbox-pop-duration) / 5)
3919
+ both;
3920
+ }
3921
+
3922
+ .seblify-checkbox[data-animation='pop']
3923
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3924
+ .seblify-checkbox__visual-surface {
3925
+ animation: checkbox-pop-fill-out calc(var(--checkbox-pop-duration) / 2) ease
3926
+ calc(var(--checkbox-pop-duration) / 10) both;
3927
+ }
3928
+
3929
+ .seblify-checkbox[data-animation='pop']
3930
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3931
+ .seblify-checkbox__visual-mark {
3932
+ animation: checkbox-pop-mark-out calc(var(--checkbox-pop-duration) * 2 / 5)
3933
+ ease-in both;
3934
+ }
3935
+
3936
+ .seblify-checkbox[data-animation='rise']
3937
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3938
+ .seblify-checkbox__visual-surface {
3939
+ animation: checkbox-rise-direct-fill-in
3940
+ calc(var(--checkbox-rise-duration) * 5 / 8)
3941
+ cubic-bezier(0.18, 0.78, 0.24, 1) both;
3942
+ }
3943
+
3944
+ .seblify-checkbox[data-animation='rise']
3945
+ .seblify-checkbox__visual-layer[data-layer-state='enter']
3946
+ .seblify-checkbox__visual-mark {
3947
+ animation: checkbox-rise-mark-in calc(var(--checkbox-rise-duration) * 3 / 4)
3948
+ cubic-bezier(0.18, 0.78, 0.24, 1) calc(var(--checkbox-rise-duration) / 4)
3949
+ both;
3950
+ }
3951
+
3952
+ .seblify-checkbox[data-animation='rise']
3953
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3954
+ .seblify-checkbox__visual-surface {
3955
+ animation: checkbox-rise-fill-out var(--checkbox-rise-exit-phase-duration)
3956
+ ease-in var(--checkbox-rise-exit-phase-duration) both;
3957
+ }
3958
+
3959
+ .seblify-checkbox[data-animation='rise']
3960
+ .seblify-checkbox__visual-layer[data-layer-state='exit']
3961
+ .seblify-checkbox__visual-mark {
3962
+ animation: checkbox-rise-mark-out var(--checkbox-rise-exit-phase-duration)
3963
+ ease-in both;
3964
+ }
3965
+
3966
+ .seblify-checkbox[data-animation='rise']:is(
3967
+ [data-variant='blank'],
3968
+ [data-variant='inset']
3969
+ )
3970
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3971
+ .seblify-checkbox__visual-surface,
3972
+ .seblify-checkbox[data-animation='rise']:is(
3973
+ [data-variant='blank'],
3974
+ [data-variant='inset']
3975
+ )
3976
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3977
+ .seblify-checkbox__visual-surface {
3978
+ animation: none;
3979
+ }
3980
+
3981
+ .seblify-checkbox[data-animation='rise']:is(
3982
+ [data-variant='blank'],
3983
+ [data-variant='inset']
3984
+ )
3985
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
3986
+ .seblify-checkbox__visual-mark {
3987
+ animation: checkbox-rise-direct-fill-in
3988
+ calc(var(--checkbox-rise-duration) * 5 / 8)
3989
+ cubic-bezier(0.18, 0.78, 0.24, 1) both;
3990
+ }
3991
+
3992
+ .seblify-checkbox[data-animation='rise']:is(
3993
+ [data-variant='blank'],
3994
+ [data-variant='inset']
3995
+ )
3996
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
3997
+ .seblify-checkbox__visual-mark {
3998
+ animation: checkbox-rise-fill-out var(--checkbox-rise-exit-phase-duration)
3999
+ ease-in var(--checkbox-rise-exit-phase-duration) both;
4000
+ }
4001
+
4002
+ .seblify-checkbox[data-animation='bounce']
4003
+ .seblify-checkbox__visual-layer:not([data-checkbox-layer='empty']) {
4004
+ overflow: visible;
4005
+ }
4006
+
4007
+ .seblify-checkbox[data-animation='bounce']
4008
+ .seblify-checkbox__visual-layer:not(
4009
+ [data-checkbox-layer='empty']
4010
+ )[data-layer-state='enter'] {
4011
+ animation: none;
4012
+ }
4013
+
4014
+ .seblify-checkbox[data-animation='bounce']
4015
+ .seblify-checkbox__visual-layer:not(
4016
+ [data-checkbox-layer='empty']
4017
+ )[data-layer-state='enter']
4018
+ .seblify-checkbox__visual-surface {
4019
+ animation: checkbox-bounce-fill-in
4020
+ calc(
4021
+ var(--checkbox-bounce-duration) -
4022
+ var(--checkbox-bounce-enter-collapse-duration)
4023
+ )
4024
+ cubic-bezier(0.18, 0.88, 0.28, 1)
4025
+ var(--checkbox-bounce-enter-collapse-duration) both;
4026
+ }
4027
+
4028
+ .seblify-checkbox[data-animation='bounce']
4029
+ .seblify-checkbox__visual-layer:not(
4030
+ [data-checkbox-layer='empty']
4031
+ )[data-layer-state='enter']
4032
+ .seblify-checkbox__visual-mark {
4033
+ animation: checkbox-bounce-check-in
4034
+ calc(
4035
+ var(--checkbox-bounce-duration) -
4036
+ var(--checkbox-bounce-enter-collapse-duration)
4037
+ )
4038
+ cubic-bezier(0.18, 0.88, 0.28, 1)
4039
+ var(--checkbox-bounce-enter-collapse-duration) both;
4040
+ }
4041
+
4042
+ .seblify-checkbox[data-animation='bounce']
4043
+ .seblify-checkbox__visual-layer:not(
4044
+ [data-checkbox-layer='empty']
4045
+ )[data-layer-state='exit'] {
4046
+ animation: checkbox-bounce-fill-out
4047
+ var(--checkbox-bounce-exit-phase-duration) ease-in both;
4048
+ }
4049
+
4050
+ .seblify-checkbox[data-animation='bounce'][data-stack-transition='enter']
4051
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'][data-layer-state='exit'] {
4052
+ animation: checkbox-bounce-border-collapse
4053
+ var(--checkbox-bounce-enter-collapse-duration) ease-in both;
4054
+ }
4055
+
4056
+ .seblify-checkbox[data-animation='bounce']
4057
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'][data-layer-state='exit'] {
4058
+ animation: checkbox-bounce-border-collapse
4059
+ var(--checkbox-bounce-enter-collapse-duration) ease-in both;
4060
+ }
4061
+
4062
+ .seblify-checkbox[data-animation='bounce']
4063
+ .seblify-checkbox__visual-layer[data-checkbox-layer='empty'][data-layer-state='enter'] {
4064
+ animation: checkbox-bounce-border-grow
4065
+ var(--checkbox-bounce-exit-phase-duration) ease-out
4066
+ var(--checkbox-bounce-exit-phase-duration) both;
4067
+ }
4068
+
4069
+ .seblify-checkbox[data-animation='bounce'][data-stack-transition='exit']
4070
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'][data-layer-state='enter'] {
4071
+ animation: checkbox-bounce-border-grow
4072
+ var(--checkbox-bounce-exit-phase-duration) ease-out
4073
+ var(--checkbox-bounce-exit-phase-duration) both;
4074
+ }
4075
+
4076
+ .seblify-checkbox[data-animation='bounce'][data-stack-transition='exit']
4077
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'][data-layer-state='enter']
4078
+ .seblify-checkbox__visual-surface,
4079
+ .seblify-checkbox[data-animation='bounce'][data-stack-transition='exit']
4080
+ .seblify-checkbox__visual-layer[data-layer-kind='indirect'][data-layer-state='enter']
4081
+ .seblify-checkbox__visual-mark {
4082
+ animation: none;
4083
+ }
4084
+
4085
+ .seblify-checkbox[data-animation='draw']
4086
+ .seblify-checkbox__visual-layer:not(
4087
+ [data-checkbox-layer='empty']
4088
+ )[data-layer-state='enter']
4089
+ .seblify-checkbox__visual-surface {
4090
+ animation: checkbox-draw-fill
4091
+ calc(var(--checkbox-draw-check-duration) * 7 / 10) ease-out both;
4092
+ }
4093
+
4094
+ .seblify-checkbox[data-animation='draw']
4095
+ .seblify-checkbox__visual-layer:not(
4096
+ [data-checkbox-layer='empty']
4097
+ )[data-layer-state='enter']
4098
+ .seblify-checkbox__visual-check-path {
4099
+ animation: checkbox-draw-check
4100
+ calc(var(--checkbox-draw-check-duration) * 5 / 4) ease-out both;
4101
+ }
4102
+
4103
+ .seblify-checkbox[data-animation='draw']
4104
+ .seblify-checkbox__visual-layer:not(
4105
+ [data-checkbox-layer='empty']
4106
+ )[data-layer-state='enter']
4107
+ .seblify-checkbox__visual-indeterminate-path:is(
4108
+ [data-intermediate-mark='dash'],
4109
+ [data-intermediate-mark='tilde']
4110
+ ) {
4111
+ animation: checkbox-draw-indeterminate
4112
+ var(--checkbox-draw-indeterminate-duration) ease-out;
4113
+ transform-origin: right;
4114
+ }
4115
+
4116
+ .seblify-checkbox[data-animation='draw']
4117
+ .seblify-checkbox__visual-layer:not(
4118
+ [data-checkbox-layer='empty']
4119
+ )[data-layer-state='exit']
4120
+ .seblify-checkbox__visual-surface {
4121
+ animation: checkbox-draw-fill-out
4122
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in
4123
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) both;
4124
+ }
4125
+
4126
+ .seblify-checkbox[data-animation='draw']
4127
+ .seblify-checkbox__visual-layer:not(
4128
+ [data-checkbox-layer='empty']
4129
+ )[data-layer-state='exit']
4130
+ .seblify-checkbox__visual-check-path {
4131
+ animation: checkbox-draw-check-out
4132
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in both;
4133
+ }
4134
+
4135
+ .seblify-checkbox[data-animation='draw']
4136
+ .seblify-checkbox__visual-layer:not(
4137
+ [data-checkbox-layer='empty']
4138
+ )[data-layer-state='exit']
4139
+ .seblify-checkbox__visual-mark {
4140
+ animation: checkbox-draw-mark-out
4141
+ calc(var(--checkbox-draw-check-duration) * 3 / 5) linear both;
4142
+ }
4143
+
4144
+ .seblify-checkbox[data-animation='draw']:is(
4145
+ [data-variant='blank'],
4146
+ [data-variant='inset']
4147
+ )
4148
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
4149
+ .seblify-checkbox__visual-surface,
4150
+ .seblify-checkbox[data-animation='draw']:is(
4151
+ [data-variant='blank'],
4152
+ [data-variant='inset']
4153
+ )
4154
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
4155
+ .seblify-checkbox__visual-surface {
4156
+ animation: none;
4157
+ }
4158
+
4159
+ .seblify-checkbox[data-animation='draw']:is(
4160
+ [data-variant='blank'],
4161
+ [data-variant='inset']
4162
+ )
4163
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='enter']
4164
+ .seblify-checkbox__visual-mark {
4165
+ animation: checkbox-draw-fill
4166
+ calc(var(--checkbox-draw-check-duration) * 7 / 10) ease-out both;
4167
+ }
4168
+
4169
+ .seblify-checkbox[data-animation='draw']:is(
4170
+ [data-variant='blank'],
4171
+ [data-variant='inset']
4172
+ )
4173
+ .seblify-checkbox__visual-layer[data-selection='checked'][data-layer-state='exit']
4174
+ .seblify-checkbox__visual-mark {
4175
+ animation: checkbox-draw-fill-out
4176
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) ease-in
4177
+ calc(var(--checkbox-draw-check-duration) * 3 / 10) both;
4178
+ }
4179
+
4180
+ @keyframes checkbox-bump-in {
4181
+ 0% {
4182
+ opacity: 0;
4183
+ transform: scale(1);
4184
+ }
4185
+
4186
+ 100% {
4187
+ opacity: 1;
4188
+ transform: scale(1);
4189
+ }
4190
+ }
4191
+
4192
+ @keyframes checkbox-bump-fill-in {
4193
+ 0% {
4194
+ opacity: 0;
4195
+ transform: scale(1);
4196
+ }
4197
+
4198
+ 18% {
4199
+ opacity: 1;
4200
+ transform: scale(1);
4201
+ }
4202
+
4203
+ 52% {
4204
+ opacity: 1;
4205
+ transform: scale(1.16);
4206
+ }
4207
+
4208
+ 76% {
4209
+ opacity: 1;
4210
+ transform: scale(0.98);
4211
+ }
4212
+
4213
+ 100% {
4214
+ opacity: 1;
4215
+ transform: scale(1);
4216
+ }
4217
+ }
4218
+
4219
+ @keyframes checkbox-bump-out {
4220
+ 0% {
4221
+ opacity: 1;
4222
+ transform: scale(1);
4223
+ }
4224
+
4225
+ 100% {
4226
+ opacity: 0;
4227
+ transform: scale(1);
4228
+ }
4229
+ }
4230
+
4231
+ @keyframes checkbox-bump-fill-out {
4232
+ 0% {
4233
+ opacity: 1;
4234
+ transform: scale(1);
4235
+ }
4236
+
4237
+ 100% {
4238
+ opacity: 0;
4239
+ transform: scale(1);
4240
+ }
4241
+ }
4242
+
4243
+ @keyframes checkbox-pop-fill-in {
4244
+ 0% {
4245
+ opacity: 0;
4246
+ transform: scale(1);
4247
+ }
4248
+
4249
+ 100% {
4250
+ opacity: 1;
4251
+ transform: scale(1);
4252
+ }
4253
+ }
4254
+
4255
+ @keyframes checkbox-pop-mark-in {
4256
+ 0% {
4257
+ opacity: 0;
4258
+ transform: scale(0.35);
4259
+ }
4260
+
4261
+ 45% {
4262
+ opacity: 1;
4263
+ transform: scale(1.24);
4264
+ }
4265
+
4266
+ 72% {
4267
+ opacity: 1;
4268
+ transform: scale(0.94);
4269
+ }
4270
+
4271
+ 100% {
4272
+ opacity: 1;
4273
+ transform: scale(1);
4274
+ }
4275
+ }
4276
+
4277
+ @keyframes checkbox-pop-mark-out {
4278
+ 0% {
4279
+ opacity: 1;
4280
+ transform: scale(1);
4281
+ }
4282
+
4283
+ 100% {
4284
+ opacity: 0;
4285
+ transform: scale(0.62);
4286
+ }
4287
+ }
4288
+
4289
+ @keyframes checkbox-pop-fill-out {
4290
+ 0% {
4291
+ opacity: 1;
4292
+ transform: scale(1);
4293
+ }
4294
+
4295
+ 100% {
4296
+ opacity: 0;
4297
+ transform: scale(1);
4298
+ }
4299
+ }
4300
+
4301
+ @keyframes checkbox-scale-fill-in {
4302
+ 0% {
4303
+ opacity: 0;
4304
+ transform: scale(0);
4305
+ }
4306
+
4307
+ 100% {
4308
+ opacity: 1;
4309
+ transform: scale(1);
4310
+ }
4311
+ }
4312
+
4313
+ @keyframes checkbox-fade-fill-in {
4314
+ 0% {
4315
+ opacity: 0;
4316
+ transform: scale(1);
4317
+ }
4318
+
4319
+ 100% {
4320
+ opacity: 1;
4321
+ transform: scale(1);
4322
+ }
4323
+ }
4324
+
4325
+ @keyframes checkbox-fade-fill-out {
4326
+ 0% {
4327
+ opacity: 1;
4328
+ transform: scale(1);
4329
+ }
4330
+
4331
+ 100% {
4332
+ opacity: 0;
4333
+ transform: scale(1);
4334
+ }
4335
+ }
4336
+
4337
+ @keyframes checkbox-fade-mark-in {
4338
+ 0% {
4339
+ opacity: 0;
4340
+ transform: scale(1);
4341
+ }
4342
+
4343
+ 100% {
4344
+ opacity: 1;
4345
+ transform: scale(1);
4346
+ }
4347
+ }
4348
+
4349
+ @keyframes checkbox-fade-mark-out {
4350
+ 0% {
4351
+ opacity: 1;
4352
+ transform: scale(1);
4353
+ }
4354
+
4355
+ 100% {
4356
+ opacity: 0;
4357
+ transform: scale(1);
4358
+ }
4359
+ }
4360
+
4361
+ @keyframes checkbox-layer-border-in {
4362
+ 0% {
4363
+ opacity: 0;
4364
+ }
4365
+
4366
+ 100% {
4367
+ opacity: 1;
4368
+ }
4369
+ }
4370
+
4371
+ @keyframes checkbox-layer-border-out {
4372
+ 0% {
4373
+ opacity: 1;
4374
+ }
4375
+
4376
+ 100% {
4377
+ opacity: 0;
4378
+ }
4379
+ }
4380
+
4381
+ @keyframes checkbox-inset-scale-border-in {
4382
+ 0% {
4383
+ border-color: var(--checkbox-border);
4384
+ opacity: 1;
4385
+ }
4386
+
4387
+ 100% {
4388
+ border-color: var(--checkbox-layer-border);
4389
+ opacity: 1;
4390
+ }
4391
+ }
4392
+
4393
+ @keyframes checkbox-inset-scale-border-out {
4394
+ 0% {
4395
+ border-color: var(--checkbox-layer-border);
4396
+ opacity: 1;
4397
+ }
4398
+
4399
+ 100% {
4400
+ border-color: var(--checkbox-border);
4401
+ opacity: 1;
4402
+ }
4403
+ }
4404
+
4405
+ @keyframes checkbox-shape-swap-mark-out {
4406
+ 0% {
4407
+ opacity: 1;
4408
+ transform: scale(1);
4409
+ }
4410
+
4411
+ 36% {
4412
+ opacity: 0;
4413
+ transform: scale(0.82);
4414
+ }
4415
+
4416
+ 100% {
4417
+ opacity: 0;
4418
+ transform: scale(0.82);
4419
+ }
4420
+ }
4421
+
4422
+ @keyframes checkbox-shape-swap-mark-in {
4423
+ 0% {
4424
+ opacity: 0;
4425
+ transform: scale(0.82);
4426
+ }
4427
+
4428
+ 28% {
4429
+ opacity: 0;
4430
+ transform: scale(0.82);
4431
+ }
4432
+
4433
+ 100% {
4434
+ opacity: 1;
4435
+ transform: scale(1);
4436
+ }
4437
+ }
4438
+
4439
+ @keyframes checkbox-scale-fill-out {
4440
+ 0% {
4441
+ opacity: 1;
4442
+ transform: scale(1);
4443
+ }
4444
+
4445
+ 100% {
4446
+ opacity: 0;
4447
+ transform: scale(0);
4448
+ }
4449
+ }
4450
+
4451
+ @keyframes checkbox-scale-mark-in {
4452
+ 0% {
4453
+ opacity: 0;
4454
+ transform: scale(1);
4455
+ }
4456
+
4457
+ 100% {
4458
+ opacity: 1;
4459
+ transform: scale(1);
4460
+ }
4461
+ }
4462
+
4463
+ @keyframes checkbox-scale-mark-out {
4464
+ 0% {
4465
+ opacity: 1;
4466
+ transform: scale(1);
4467
+ }
4468
+
4469
+ 100% {
4470
+ opacity: 0;
4471
+ transform: scale(1);
4472
+ }
4473
+ }
4474
+
4475
+ @keyframes checkbox-scale-check-in {
4476
+ 0% {
4477
+ transform: scale(0);
4478
+ }
4479
+
4480
+ 100% {
4481
+ transform: scale(1);
4482
+ }
4483
+ }
4484
+
4485
+ @keyframes checkbox-scale-check-out {
4486
+ 0% {
4487
+ transform: scale(1);
4488
+ }
4489
+
4490
+ 100% {
4491
+ transform: scale(0);
4492
+ }
4493
+ }
4494
+
4495
+ @keyframes checkbox-rise-fill-in {
4496
+ 0% {
4497
+ opacity: 1;
4498
+ transform: translateY(0);
4499
+ }
4500
+
4501
+ 100% {
4502
+ opacity: 1;
4503
+ transform: translateY(-100%);
4504
+ }
4505
+ }
4506
+
4507
+ @keyframes checkbox-rise-direct-fill-in {
4508
+ 0% {
4509
+ opacity: 1;
4510
+ transform: translateY(100%);
4511
+ }
4512
+
4513
+ 100% {
4514
+ opacity: 1;
4515
+ transform: translateY(0);
4516
+ }
4517
+ }
4518
+
4519
+ @keyframes checkbox-rise-fill-out {
4520
+ 0% {
4521
+ opacity: 1;
4522
+ transform: translateY(0);
4523
+ }
4524
+
4525
+ 100% {
4526
+ opacity: 0.24;
4527
+ transform: translateY(100%);
4528
+ }
4529
+ }
4530
+
4531
+ @keyframes checkbox-rise-mark-in {
4532
+ 0% {
4533
+ opacity: 0;
4534
+ transform: translateY(65%);
4535
+ }
4536
+
4537
+ 100% {
4538
+ opacity: 1;
4539
+ transform: translateY(0);
4540
+ }
4541
+ }
4542
+
4543
+ @keyframes checkbox-rise-mark-out {
4544
+ 0% {
4545
+ opacity: 1;
4546
+ transform: translateY(0);
4547
+ }
4548
+
4549
+ 100% {
4550
+ opacity: 0;
4551
+ transform: translateY(65%);
4552
+ }
4553
+ }
4554
+
4555
+ @keyframes checkbox-bounce-in {
4556
+ 0% {
4557
+ opacity: 0;
4558
+ transform: scale(0);
4559
+ }
4560
+
4561
+ 62% {
4562
+ opacity: 1;
4563
+ transform: scale(1.28);
4564
+ }
4565
+
4566
+ 84% {
4567
+ transform: scale(0.94);
4568
+ }
4569
+
4570
+ 100% {
4571
+ opacity: 1;
4572
+ transform: scale(1);
4573
+ }
4574
+ }
4575
+
4576
+ @keyframes checkbox-bounce-check-in {
4577
+ 0% {
4578
+ opacity: 0;
4579
+ transform: scale(0);
4580
+ }
4581
+
4582
+ 62% {
4583
+ opacity: 1;
4584
+ transform: scale(1.28);
4585
+ }
4586
+
4587
+ 84% {
4588
+ transform: scale(0.94);
4589
+ }
4590
+
4591
+ 100% {
4592
+ opacity: 1;
4593
+ transform: scale(1);
4594
+ }
4595
+ }
4596
+
4597
+ @keyframes checkbox-bounce-out {
4598
+ 0% {
4599
+ opacity: 1;
4600
+ transform: scale(1);
4601
+ }
4602
+
4603
+ 100% {
4604
+ opacity: 0;
4605
+ transform: scale(0);
4606
+ }
4607
+ }
4608
+
4609
+ @keyframes checkbox-bounce-border-collapse {
4610
+ 0% {
4611
+ opacity: 1;
4612
+ transform: scale(1);
4613
+ }
4614
+
4615
+ 99% {
4616
+ opacity: 1;
4617
+ transform: scale(0);
4618
+ }
4619
+
4620
+ 100% {
4621
+ opacity: 0;
4622
+ transform: scale(0);
4623
+ }
4624
+ }
4625
+
4626
+ @keyframes checkbox-bounce-border-grow {
4627
+ 0% {
4628
+ opacity: 1;
4629
+ transform: scale(0);
4630
+ }
4631
+
4632
+ 100% {
4633
+ opacity: 1;
4634
+ transform: scale(1);
4635
+ }
4636
+ }
4637
+
4638
+ @keyframes checkbox-bounce-fill-in {
4639
+ 0% {
4640
+ opacity: 0;
4641
+ transform: scale(0);
4642
+ }
4643
+
4644
+ 58% {
4645
+ opacity: 1;
4646
+ transform: scale(1.34);
4647
+ }
4648
+
4649
+ 82% {
4650
+ opacity: 1;
4651
+ transform: scale(0.92);
4652
+ }
4653
+
4654
+ 100% {
4655
+ opacity: 1;
4656
+ transform: scale(1);
4657
+ }
4658
+ }
4659
+
4660
+ @keyframes checkbox-bounce-fill-out {
4661
+ 0% {
4662
+ opacity: 1;
4663
+ transform: scale(1);
4664
+ }
4665
+
4666
+ 100% {
4667
+ opacity: 0;
4668
+ transform: scale(0);
4669
+ }
4670
+ }
4671
+
4672
+ @keyframes checkbox-draw-check {
4673
+ 0%,
4674
+ 45% {
4675
+ stroke-dashoffset: 1;
4676
+ }
4677
+
4678
+ 100% {
4679
+ stroke-dashoffset: 0;
4680
+ }
4681
+ }
4682
+
4683
+ @keyframes checkbox-draw-check-out {
4684
+ 0% {
4685
+ stroke-dashoffset: 0;
4686
+ }
4687
+
4688
+ 100% {
4689
+ stroke-dashoffset: 1;
4690
+ }
4691
+ }
4692
+
4693
+ @keyframes checkbox-draw-mark-out {
4694
+ 0%,
4695
+ 99% {
4696
+ opacity: 1;
4697
+ }
4698
+
4699
+ 100% {
4700
+ opacity: 0;
4701
+ }
4702
+ }
4703
+
4704
+ @keyframes checkbox-draw-fill {
4705
+ 0% {
4706
+ clip-path: circle(0% at 0 0);
4707
+ opacity: 1;
4708
+ }
4709
+
4710
+ 100% {
4711
+ clip-path: circle(150% at 0 0);
4712
+ opacity: 1;
4713
+ }
4714
+ }
4715
+
4716
+ @keyframes checkbox-draw-fill-out {
4717
+ 0% {
4718
+ clip-path: circle(150% at 0 0);
4719
+ opacity: 1;
4720
+ }
4721
+
4722
+ 100% {
4723
+ clip-path: circle(0% at 0 0);
4724
+ opacity: 1;
4725
+ }
4726
+ }
4727
+
4728
+ @keyframes checkbox-draw-indeterminate {
4729
+ 0% {
4730
+ transform: scaleX(0);
4731
+ }
4732
+
4733
+ 100% {
4734
+ transform: scaleX(1);
4735
+ }
4736
+ }
4737
+
4738
+ @media (prefers-reduced-motion: reduce) {
4739
+ .seblify-checkbox__control,
4740
+ .seblify-checkbox__control::before,
4741
+ .seblify-checkbox__control::after,
4742
+ .seblify-checkbox__mark,
4743
+ .seblify-checkbox__check,
4744
+ .seblify-checkbox__check-path,
4745
+ .seblify-checkbox__indeterminate {
4746
+ animation: none !important;
4747
+ transition-duration: 0ms !important;
4748
+ }
432
4749
  }
433
4750
  </style>