seblify 0.2.1 → 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 (141) hide show
  1. package/README.md +145 -49
  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 +4704 -25
  25. package/dist/components/action/input/select/checkbox/Checkbox.svelte.d.ts +28 -0
  26. package/dist/components/action/input/select/checkbox/checkbox-relations.svelte.d.ts +46 -0
  27. package/dist/components/action/input/select/checkbox/checkbox-relations.svelte.js +202 -0
  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 +1004 -99
  57. package/dist/components/action/input/select/switch/Switch.svelte.d.ts +8 -3
  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 +670 -58
  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/duration/Duration.svelte +64 -0
  69. package/dist/components/display/data-display/metric/duration/Duration.svelte.d.ts +16 -0
  70. package/dist/components/display/data-display/metric/relative-time/RelativeTime.svelte +121 -0
  71. package/dist/components/display/data-display/metric/relative-time/RelativeTime.svelte.d.ts +21 -0
  72. package/dist/components/display/data-display/metric/timestamp-card/TimestampCard.svelte +121 -0
  73. package/dist/components/display/data-display/metric/timestamp-card/TimestampCard.svelte.d.ts +25 -0
  74. package/dist/components/display/data-display/visual/timeline/TimelineItem.svelte +660 -51
  75. package/dist/components/display/data-display/visual/timeline/context.d.ts +1 -1
  76. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte +657 -48
  77. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte.d.ts +1 -1
  78. package/dist/components/display/feedback/loading/spinner/Spinner.svelte +657 -48
  79. package/dist/components/display/feedback/loading/spinner/Spinner.svelte.d.ts +1 -1
  80. package/dist/components/display/motion/collapse/Collapse.svelte +115 -0
  81. package/dist/components/display/motion/collapse/Collapse.svelte.d.ts +17 -0
  82. package/dist/components/display/typography/accordion/Accordion.svelte +347 -0
  83. package/dist/components/display/typography/accordion/Accordion.svelte.d.ts +13 -0
  84. package/dist/components/display/typography/accordion/AccordionGroup.svelte +132 -0
  85. package/dist/components/display/typography/accordion/AccordionGroup.svelte.d.ts +11 -0
  86. package/dist/components/display/typography/accordion/context.d.ts +8 -0
  87. package/dist/components/display/typography/accordion/context.js +8 -0
  88. package/dist/components/display/typography/code-snippet/CodeSnippet.svelte +3 -3
  89. package/dist/components/display/typography/eyebrow/Eyebrow.svelte +2 -2
  90. package/dist/components/display/typography/highlight/Highlight.svelte +719 -59
  91. package/dist/components/display/typography/highlight/Highlight.svelte.d.ts +1 -1
  92. package/dist/components/framework/layout/container/app-shell/AppShell.svelte +16 -2
  93. package/dist/components/framework/navigation/context/breadcrumb/Breadcrumb.svelte +1 -1
  94. package/dist/components/framework/navigation/sidebar/sidebar/Sidebar.svelte +35 -10
  95. package/dist/components/framework/navigation/sidebar/sidenav/Sidenav.svelte +5 -5
  96. package/dist/components/framework/overlay/tooltip/Tooltip.svelte +1011 -0
  97. package/dist/components/framework/overlay/tooltip/Tooltip.svelte.d.ts +31 -0
  98. package/dist/components/framework/surface/paper/Paper.svelte +730 -87
  99. package/dist/components/framework/surface/paper/Paper.svelte.d.ts +1 -1
  100. package/dist/components/utility/format/date-time/formatDateTime.d.ts +23 -0
  101. package/dist/components/utility/format/date-time/formatDateTime.js +33 -0
  102. package/dist/components/utility/format/duration/formatDuration.d.ts +15 -0
  103. package/dist/components/utility/format/duration/formatDuration.js +218 -0
  104. package/dist/components/utility/format/relative-time/formatRelativeTime.d.ts +42 -0
  105. package/dist/components/utility/format/relative-time/formatRelativeTime.js +530 -0
  106. package/dist/design-system/inheritance/tokens.js +6 -0
  107. package/dist/design-system/reserved-props/allowed-options.d.ts +9 -4
  108. package/dist/design-system/theme/tokens.d.ts +72 -2
  109. package/dist/design-system/theme/tokens.js +173 -134
  110. package/dist/icons/generated/check-thick.svelte +16 -0
  111. package/dist/icons/generated/check-thick.svelte.d.ts +7 -0
  112. package/dist/icons/generated/check.svelte +16 -0
  113. package/dist/icons/generated/check.svelte.d.ts +7 -0
  114. package/dist/icons/generated/close-thick.svelte +16 -0
  115. package/dist/icons/generated/close-thick.svelte.d.ts +7 -0
  116. package/dist/icons/generated/close.svelte +16 -0
  117. package/dist/icons/generated/close.svelte.d.ts +7 -0
  118. package/dist/icons/generated/index.d.ts +4 -0
  119. package/dist/icons/generated/index.js +4 -0
  120. package/dist/icons/generated/manifest.js +28 -0
  121. package/dist/index.d.ts +22 -2
  122. package/dist/index.js +22 -2
  123. package/dist/styles/tone-context.css +656 -46
  124. package/dist/theme.css +1 -161
  125. package/dist/themes/canopy.css +373 -0
  126. package/dist/themes/cobalt.css +373 -0
  127. package/dist/themes/iris.css +373 -0
  128. package/dist/themes/lumen.css +373 -0
  129. package/dist/themes/mono.css +373 -0
  130. package/dist/themes/moss.css +373 -0
  131. package/dist/themes/noir.css +373 -0
  132. package/dist/themes/plain.css +373 -0
  133. package/dist/themes/pulse.css +373 -0
  134. package/dist/themes/signal.css +373 -0
  135. package/dist/themes/slate.css +373 -0
  136. package/dist/themes/solar.css +373 -0
  137. package/dist/themes/sorbet.css +373 -0
  138. package/dist/themes/studio.css +369 -0
  139. package/dist/themes/vesper.css +373 -0
  140. package/package.json +32 -4
  141. package/dist/components/action/input/select/theme-switch/ThemeSwitch.svelte.d.ts +0 -10
@@ -0,0 +1,1109 @@
1
+ <script lang="ts">
2
+ import type { CustomCssSize, SeblifyProps } from 'seblify';
3
+ import type { Snippet } from 'svelte';
4
+ import { onMount } from 'svelte';
5
+ import { getToggleButtonGroupContext } from '../toggle-button-group/context';
6
+
7
+ type ToggleButtonRadius =
8
+ | 'none'
9
+ | 'sm'
10
+ | 'md'
11
+ | 'lg'
12
+ | 'full'
13
+ | CustomCssSize;
14
+ type ToggleButtonSize = 'sm' | 'md' | 'lg' | 'xl' | CustomCssSize;
15
+ type ToggleButtonTone =
16
+ | 'neutral'
17
+ | 'strong'
18
+ | 'primary'
19
+ | 'secondary'
20
+ | 'success'
21
+ | 'danger'
22
+ | 'warning'
23
+ | 'info';
24
+ type ToggleButtonType = 'button' | 'submit' | 'reset';
25
+ type ToggleButtonVariant = 'solid' | 'soft' | 'tint' | 'outline' | 'plain';
26
+
27
+ type Props = SeblifyProps<{
28
+ [key: string]: unknown;
29
+ ariaLabel?: string;
30
+ children?: Snippet;
31
+ class?: string;
32
+ disabled?: boolean;
33
+ end?: Snippet;
34
+ fullWidth?: boolean;
35
+ iconOnly?: boolean;
36
+ label?: string;
37
+ onclick?: (event: MouseEvent) => void;
38
+ pressed?: boolean;
39
+ radius?: ToggleButtonRadius;
40
+ size?: ToggleButtonSize;
41
+ start?: Snippet;
42
+ tone?: ToggleButtonTone;
43
+ type?: ToggleButtonType;
44
+ value?: string;
45
+ variant?: ToggleButtonVariant;
46
+ }>;
47
+
48
+ const TOGGLE_BUTTON_SIZE_MAP: Record<
49
+ Exclude<ToggleButtonSize, CustomCssSize>,
50
+ { gap: string; height: string; icon: string; padding: string }
51
+ > = {
52
+ sm: {
53
+ gap: '0.375rem',
54
+ height: '2rem',
55
+ icon: '1rem',
56
+ padding: '0.75rem',
57
+ },
58
+ md: {
59
+ gap: '0.5rem',
60
+ height: '2.25rem',
61
+ icon: '1.125rem',
62
+ padding: '0.875rem',
63
+ },
64
+ lg: {
65
+ gap: '0.625rem',
66
+ height: '2.75rem',
67
+ icon: '1.25rem',
68
+ padding: '1rem',
69
+ },
70
+ xl: {
71
+ gap: '0.75rem',
72
+ height: '3.25rem',
73
+ icon: '1.375rem',
74
+ padding: '1.125rem',
75
+ },
76
+ };
77
+ const TOGGLE_BUTTON_RADIUS_MAP: Record<
78
+ Exclude<ToggleButtonRadius, CustomCssSize>,
79
+ string
80
+ > = {
81
+ none: '0',
82
+ sm: '0.25rem',
83
+ md: '0.375rem',
84
+ lg: '0.5rem',
85
+ full: '999px',
86
+ };
87
+
88
+ let {
89
+ ariaLabel,
90
+ children,
91
+ class: className,
92
+ disabled = false,
93
+ end,
94
+ fullWidth = false,
95
+ iconOnly = false,
96
+ label,
97
+ onclick,
98
+ pressed = $bindable(false),
99
+ radius = 'md',
100
+ size = 'md',
101
+ start,
102
+ tone = 'primary',
103
+ type = 'button',
104
+ value,
105
+ variant = 'soft',
106
+ ...restProps
107
+ }: Props = $props();
108
+
109
+ const group = getToggleButtonGroupContext();
110
+ let isRegisteredWithGroup = $state(false);
111
+
112
+ function cssSize(value: CustomCssSize): string {
113
+ return typeof value === 'number' ? `${value}px` : value;
114
+ }
115
+
116
+ function resolveSizeConfig(value: ToggleButtonSize) {
117
+ if (typeof value === 'number') {
118
+ const resolvedSize = cssSize(value);
119
+
120
+ return {
121
+ gap: '0.5rem',
122
+ height: resolvedSize,
123
+ icon: `max(1rem, calc(${resolvedSize} * 0.46))`,
124
+ padding: `max(0.75rem, calc(${resolvedSize} * 0.42))`,
125
+ };
126
+ }
127
+
128
+ const namedConfig =
129
+ TOGGLE_BUTTON_SIZE_MAP[value as keyof typeof TOGGLE_BUTTON_SIZE_MAP];
130
+
131
+ if (namedConfig) {
132
+ return namedConfig;
133
+ }
134
+
135
+ return {
136
+ gap: '0.5rem',
137
+ height: value,
138
+ icon: `max(1rem, calc(${value} * 0.46))`,
139
+ padding: `max(0.75rem, calc(${value} * 0.42))`,
140
+ };
141
+ }
142
+
143
+ function resolveRadiusValue(value: ToggleButtonRadius): string {
144
+ if (typeof value === 'number') {
145
+ return cssSize(value);
146
+ }
147
+
148
+ return (
149
+ TOGGLE_BUTTON_RADIUS_MAP[
150
+ value as keyof typeof TOGGLE_BUTTON_RADIUS_MAP
151
+ ] ?? value
152
+ );
153
+ }
154
+
155
+ function handleClick(event: MouseEvent) {
156
+ onclick?.(event);
157
+
158
+ if (event.defaultPrevented) {
159
+ return;
160
+ }
161
+
162
+ if (group && value) {
163
+ group.toggle(value);
164
+ pressed = group.isPressed(value);
165
+ return;
166
+ }
167
+
168
+ pressed = !pressed;
169
+ }
170
+
171
+ const sizeConfig = $derived(resolveSizeConfig(size));
172
+ const radiusValue = $derived(resolveRadiusValue(radius));
173
+ const accessibleLabel = $derived(ariaLabel ?? (iconOnly ? label : undefined));
174
+
175
+ onMount(() => {
176
+ if (!group || !value) {
177
+ return;
178
+ }
179
+
180
+ group.register(value, pressed);
181
+ pressed = group.isPressed(value);
182
+ isRegisteredWithGroup = true;
183
+
184
+ return () => {
185
+ isRegisteredWithGroup = false;
186
+ group.unregister(value);
187
+ };
188
+ });
189
+
190
+ $effect(() => {
191
+ if (!group || !value || !isRegisteredWithGroup) {
192
+ return;
193
+ }
194
+
195
+ const groupPressed = group.isPressed(value);
196
+
197
+ if (pressed !== groupPressed) {
198
+ pressed = groupPressed;
199
+ }
200
+ });
201
+ </script>
202
+
203
+ <button
204
+ {...restProps}
205
+ aria-label={accessibleLabel}
206
+ aria-pressed={pressed}
207
+ class={`toggle-button seblify-tone-context${className ? ` ${className}` : ''}`}
208
+ class:full-width={fullWidth}
209
+ class:icon-only={iconOnly}
210
+ data-pressed={pressed}
211
+ data-seblify-tone={tone}
212
+ data-variant={variant}
213
+ {disabled}
214
+ onclick={handleClick}
215
+ style:--toggle-button-gap={sizeConfig.gap}
216
+ style:--toggle-button-height={sizeConfig.height}
217
+ style:--toggle-button-icon-size={sizeConfig.icon}
218
+ style:--toggle-button-padding-inline={sizeConfig.padding}
219
+ style:--toggle-button-radius={radiusValue}
220
+ {type}
221
+ >
222
+ <span class="toggle-button__inner seblify-tone-publisher">
223
+ {#if start}
224
+ <span class="toggle-button__media" aria-hidden="true">
225
+ {@render start()}
226
+ </span>
227
+ {/if}
228
+
229
+ {#if children}
230
+ <span class="toggle-button__content">
231
+ {@render children()}
232
+ </span>
233
+ {:else if !iconOnly}
234
+ <span class="toggle-button__content">
235
+ {label}
236
+ </span>
237
+ {/if}
238
+
239
+ {#if end}
240
+ <span class="toggle-button__media" aria-hidden="true">
241
+ {@render end()}
242
+ </span>
243
+ {/if}
244
+ </span>
245
+ </button>
246
+
247
+ <style>:where(.seblify-tone-context) {
248
+ --seblify-tone-fill: var(--seblify-color-neutral-fill, #6f5f55);
249
+ --seblify-tone-fill-hover: var(--seblify-color-neutral-fill-hover, #5b4d45);
250
+ --seblify-tone-fill-text: var(--seblify-color-neutral-fill-text, #fff4e7);
251
+ --seblify-tone-surface: var(--seblify-color-neutral-surface, #f2ebe4);
252
+ --seblify-tone-surface-hover: var(
253
+ --seblify-color-neutral-surface-hover,
254
+ #ebe1d8
255
+ );
256
+ --seblify-tone-text: var(--seblify-color-neutral-text, #6f5f55);
257
+ --seblify-tone-border: var(--seblify-color-neutral-border, #ded0c4);
258
+ --seblify-tone-derived-surface: var(
259
+ --seblify-color-neutral-derived-surface,
260
+ var(--seblify-color-surface-muted, #f2ebe4)
261
+ );
262
+ --seblify-tone-derived-border: var(
263
+ --seblify-color-neutral-derived-border,
264
+ color-mix(
265
+ in srgb,
266
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
267
+ var(--seblify-color-border-strong, #c5afa0) 78%
268
+ )
269
+ );
270
+ --seblify-tone-derived-text: var(
271
+ --seblify-color-neutral-derived-text,
272
+ var(--seblify-color-text-subtle, #8b7a70)
273
+ );
274
+ --seblify-tone-on-inverse-surface: var(
275
+ --seblify-color-neutral-on-inverse-surface,
276
+ color-mix(
277
+ in srgb,
278
+ var(--seblify-color-text-inverse, #fff4e7) 10%,
279
+ var(--seblify-color-surface-inverse, #15110f) 90%
280
+ )
281
+ );
282
+ --seblify-tone-on-inverse-surface-hover: var(
283
+ --seblify-color-neutral-on-inverse-surface-hover,
284
+ color-mix(
285
+ in srgb,
286
+ var(--seblify-color-text-inverse, #fff4e7) 16%,
287
+ var(--seblify-color-surface-inverse, #15110f) 84%
288
+ )
289
+ );
290
+ --seblify-tone-on-inverse-text: var(
291
+ --seblify-color-neutral-on-inverse-text,
292
+ var(--seblify-color-text-inverse, #fff4e7)
293
+ );
294
+ --seblify-tone-on-inverse-border: var(
295
+ --seblify-color-neutral-on-inverse-border,
296
+ var(--seblify-color-border-inverse, #4a3b32)
297
+ );
298
+ --seblify-tone-control-fill: var(--seblify-tone-fill);
299
+ --seblify-tone-control-fill-hover: var(--seblify-tone-fill-hover);
300
+ --seblify-tone-control-fill-text: var(--seblify-tone-fill-text);
301
+ --seblify-tone-control-surface: var(--seblify-tone-surface);
302
+ --seblify-tone-control-surface-hover: var(--seblify-tone-surface-hover);
303
+ --seblify-tone-control-default-text: var(--seblify-color-text, #211916);
304
+ --seblify-tone-control-text: var(--seblify-tone-text);
305
+ --seblify-tone-control-border: var(--seblify-tone-border);
306
+ --seblify-tone-control-derived-surface: var(--seblify-tone-derived-surface);
307
+ --seblify-tone-control-derived-border: var(--seblify-tone-derived-border);
308
+ --seblify-tone-control-derived-text: var(--seblify-tone-derived-text);
309
+ }
310
+
311
+ :where(.seblify-tone-context[data-seblify-tone='inherit']) {
312
+ --seblify-tone-fill: var(
313
+ --seblify-current-tone-fill,
314
+ var(--seblify-color-neutral-fill, #6f5f55)
315
+ );
316
+ --seblify-tone-fill-hover: var(
317
+ --seblify-current-tone-fill-hover,
318
+ var(--seblify-color-neutral-fill-hover, #5b4d45)
319
+ );
320
+ --seblify-tone-fill-text: var(
321
+ --seblify-current-tone-fill-text,
322
+ var(--seblify-color-neutral-fill-text, #fff4e7)
323
+ );
324
+ --seblify-tone-surface: var(
325
+ --seblify-current-tone-surface,
326
+ var(--seblify-color-neutral-surface, #f2ebe4)
327
+ );
328
+ --seblify-tone-surface-hover: var(
329
+ --seblify-current-tone-surface-hover,
330
+ var(--seblify-color-neutral-surface-hover, #ebe1d8)
331
+ );
332
+ --seblify-tone-text: var(
333
+ --seblify-current-tone-text,
334
+ var(--seblify-color-neutral-text, #6f5f55)
335
+ );
336
+ --seblify-tone-border: var(
337
+ --seblify-current-tone-border,
338
+ var(--seblify-color-neutral-border, #ded0c4)
339
+ );
340
+ --seblify-tone-derived-surface: var(
341
+ --seblify-current-tone-derived-surface,
342
+ var(
343
+ --seblify-color-neutral-derived-surface,
344
+ var(--seblify-color-surface-muted, #f2ebe4)
345
+ )
346
+ );
347
+ --seblify-tone-derived-border: var(
348
+ --seblify-current-tone-derived-border,
349
+ var(
350
+ --seblify-color-neutral-derived-border,
351
+ color-mix(
352
+ in srgb,
353
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
354
+ var(--seblify-color-border-strong, #c5afa0) 78%
355
+ )
356
+ )
357
+ );
358
+ --seblify-tone-derived-text: var(
359
+ --seblify-current-tone-derived-text,
360
+ var(
361
+ --seblify-color-neutral-derived-text,
362
+ var(--seblify-color-text-subtle, #8b7a70)
363
+ )
364
+ );
365
+ --seblify-tone-on-inverse-surface: var(
366
+ --seblify-current-tone-on-inverse-surface,
367
+ var(
368
+ --seblify-color-neutral-on-inverse-surface,
369
+ color-mix(
370
+ in srgb,
371
+ var(--seblify-color-text-inverse, #fff4e7) 10%,
372
+ var(--seblify-color-surface-inverse, #15110f) 90%
373
+ )
374
+ )
375
+ );
376
+ --seblify-tone-on-inverse-surface-hover: var(
377
+ --seblify-current-tone-on-inverse-surface-hover,
378
+ var(
379
+ --seblify-color-neutral-on-inverse-surface-hover,
380
+ color-mix(
381
+ in srgb,
382
+ var(--seblify-color-text-inverse, #fff4e7) 16%,
383
+ var(--seblify-color-surface-inverse, #15110f) 84%
384
+ )
385
+ )
386
+ );
387
+ --seblify-tone-on-inverse-text: var(
388
+ --seblify-current-tone-on-inverse-text,
389
+ var(
390
+ --seblify-color-neutral-on-inverse-text,
391
+ var(--seblify-color-text-inverse, #fff4e7)
392
+ )
393
+ );
394
+ --seblify-tone-on-inverse-border: var(
395
+ --seblify-current-tone-on-inverse-border,
396
+ var(
397
+ --seblify-color-neutral-on-inverse-border,
398
+ var(--seblify-color-border-inverse, #4a3b32)
399
+ )
400
+ );
401
+ }
402
+
403
+ :where(.seblify-tone-context[data-seblify-tone='neutral']) {
404
+ --seblify-tone-fill: var(--seblify-color-neutral-fill, #6f5f55);
405
+ --seblify-tone-fill-hover: var(--seblify-color-neutral-fill-hover, #5b4d45);
406
+ --seblify-tone-fill-text: var(--seblify-color-neutral-fill-text, #fff4e7);
407
+ --seblify-tone-surface: var(--seblify-color-neutral-surface, #f2ebe4);
408
+ --seblify-tone-surface-hover: var(
409
+ --seblify-color-neutral-surface-hover,
410
+ #ebe1d8
411
+ );
412
+ --seblify-tone-text: var(--seblify-color-neutral-text, #6f5f55);
413
+ --seblify-tone-border: var(--seblify-color-neutral-border, #ded0c4);
414
+ --seblify-tone-derived-surface: var(
415
+ --seblify-color-neutral-derived-surface,
416
+ var(--seblify-color-surface-muted, #f2ebe4)
417
+ );
418
+ --seblify-tone-derived-border: var(
419
+ --seblify-color-neutral-derived-border,
420
+ color-mix(
421
+ in srgb,
422
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
423
+ var(--seblify-color-border-strong, #c5afa0) 78%
424
+ )
425
+ );
426
+ --seblify-tone-derived-text: var(
427
+ --seblify-color-neutral-derived-text,
428
+ var(--seblify-color-text-subtle, #8b7a70)
429
+ );
430
+ --seblify-tone-on-inverse-surface: var(
431
+ --seblify-color-neutral-on-inverse-surface,
432
+ color-mix(
433
+ in srgb,
434
+ var(--seblify-color-text-inverse, #fff4e7) 10%,
435
+ var(--seblify-color-surface-inverse, #15110f) 90%
436
+ )
437
+ );
438
+ --seblify-tone-on-inverse-surface-hover: var(
439
+ --seblify-color-neutral-on-inverse-surface-hover,
440
+ color-mix(
441
+ in srgb,
442
+ var(--seblify-color-text-inverse, #fff4e7) 16%,
443
+ var(--seblify-color-surface-inverse, #15110f) 84%
444
+ )
445
+ );
446
+ --seblify-tone-on-inverse-text: var(
447
+ --seblify-color-neutral-on-inverse-text,
448
+ var(--seblify-color-text-inverse, #fff4e7)
449
+ );
450
+ --seblify-tone-on-inverse-border: var(
451
+ --seblify-color-neutral-on-inverse-border,
452
+ var(--seblify-color-border-inverse, #4a3b32)
453
+ );
454
+ }
455
+
456
+ :where(.seblify-tone-context[data-seblify-tone='strong']) {
457
+ --seblify-tone-fill: var(--seblify-color-strong-fill, #211916);
458
+ --seblify-tone-fill-hover: var(--seblify-color-strong-fill-hover, #080706);
459
+ --seblify-tone-fill-text: var(--seblify-color-strong-fill-text, #fff4e7);
460
+ --seblify-tone-surface: var(--seblify-color-strong-surface, #ffffff);
461
+ --seblify-tone-surface-hover: var(
462
+ --seblify-color-strong-surface-hover,
463
+ #f2ebe4
464
+ );
465
+ --seblify-tone-text: var(--seblify-color-strong-text, #211916);
466
+ --seblify-tone-border: var(--seblify-color-strong-border, #c5afa0);
467
+ --seblify-tone-derived-surface: var(
468
+ --seblify-color-strong-derived-surface,
469
+ color-mix(
470
+ in srgb,
471
+ var(--seblify-tone-fill) 10%,
472
+ var(--seblify-color-surface, #fffdf9) 90%
473
+ )
474
+ );
475
+ --seblify-tone-derived-border: var(
476
+ --seblify-color-strong-derived-border,
477
+ color-mix(
478
+ in srgb,
479
+ var(--seblify-tone-fill) 26%,
480
+ var(--seblify-color-border-strong, #c5afa0) 74%
481
+ )
482
+ );
483
+ --seblify-tone-derived-text: var(
484
+ --seblify-color-strong-derived-text,
485
+ color-mix(
486
+ in srgb,
487
+ var(--seblify-tone-fill) 66%,
488
+ var(--seblify-color-text-muted, #6f5f55) 34%
489
+ )
490
+ );
491
+ --seblify-tone-on-inverse-surface: var(
492
+ --seblify-color-strong-on-inverse-surface,
493
+ color-mix(
494
+ in srgb,
495
+ var(--seblify-color-text-inverse, #fff4e7) 14%,
496
+ var(--seblify-color-surface-inverse, #15110f) 86%
497
+ )
498
+ );
499
+ --seblify-tone-on-inverse-surface-hover: var(
500
+ --seblify-color-strong-on-inverse-surface-hover,
501
+ color-mix(
502
+ in srgb,
503
+ var(--seblify-color-text-inverse, #fff4e7) 22%,
504
+ var(--seblify-color-surface-inverse, #15110f) 78%
505
+ )
506
+ );
507
+ --seblify-tone-on-inverse-text: var(
508
+ --seblify-color-strong-on-inverse-text,
509
+ var(--seblify-color-text-inverse, #fff4e7)
510
+ );
511
+ --seblify-tone-on-inverse-border: var(
512
+ --seblify-color-strong-on-inverse-border,
513
+ color-mix(
514
+ in srgb,
515
+ var(--seblify-color-text-inverse, #fff4e7) 42%,
516
+ var(--seblify-color-border-inverse, #4a3b32) 58%
517
+ )
518
+ );
519
+ }
520
+
521
+ :where(.seblify-tone-context[data-seblify-tone='primary']) {
522
+ --seblify-tone-fill: var(--seblify-color-primary-fill, #b43f5a);
523
+ --seblify-tone-fill-hover: var(--seblify-color-primary-fill-hover, #9f334d);
524
+ --seblify-tone-fill-text: var(--seblify-color-primary-fill-text, #fff4e7);
525
+ --seblify-tone-surface: var(--seblify-color-primary-surface, #fae8ed);
526
+ --seblify-tone-surface-hover: var(
527
+ --seblify-color-primary-surface-hover,
528
+ #f5d5dd
529
+ );
530
+ --seblify-tone-text: var(--seblify-color-primary-text, #8f2b43);
531
+ --seblify-tone-border: var(--seblify-color-primary-border, #e6a6b5);
532
+ --seblify-tone-derived-surface: var(
533
+ --seblify-color-primary-derived-surface,
534
+ var(
535
+ --seblify-color-neutral-derived-surface,
536
+ var(--seblify-color-surface-muted, #f2ebe4)
537
+ )
538
+ );
539
+ --seblify-tone-derived-border: var(
540
+ --seblify-color-primary-derived-border,
541
+ var(
542
+ --seblify-color-neutral-derived-border,
543
+ color-mix(
544
+ in srgb,
545
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
546
+ var(--seblify-color-border-strong, #c5afa0) 78%
547
+ )
548
+ )
549
+ );
550
+ --seblify-tone-derived-text: var(
551
+ --seblify-color-primary-derived-text,
552
+ var(
553
+ --seblify-color-neutral-derived-text,
554
+ var(--seblify-color-text-subtle, #8b7a70)
555
+ )
556
+ );
557
+ --seblify-tone-on-inverse-surface: var(
558
+ --seblify-color-primary-on-inverse-surface,
559
+ color-mix(
560
+ in srgb,
561
+ var(--seblify-color-primary-fill, #b43f5a) 22%,
562
+ var(--seblify-color-surface-inverse, #15110f) 78%
563
+ )
564
+ );
565
+ --seblify-tone-on-inverse-surface-hover: var(
566
+ --seblify-color-primary-on-inverse-surface-hover,
567
+ color-mix(
568
+ in srgb,
569
+ var(--seblify-color-primary-fill, #b43f5a) 32%,
570
+ var(--seblify-color-surface-inverse, #15110f) 68%
571
+ )
572
+ );
573
+ --seblify-tone-on-inverse-text: var(
574
+ --seblify-color-primary-on-inverse-text,
575
+ var(--seblify-color-primary-fill, #b43f5a)
576
+ );
577
+ --seblify-tone-on-inverse-border: var(
578
+ --seblify-color-primary-on-inverse-border,
579
+ var(--seblify-color-primary-border, #e6a6b5)
580
+ );
581
+ }
582
+
583
+ :where(.seblify-tone-context[data-seblify-tone='secondary']) {
584
+ --seblify-tone-fill: var(--seblify-color-secondary-fill, #6f3a55);
585
+ --seblify-tone-fill-hover: var(--seblify-color-secondary-fill-hover, #5e2f47);
586
+ --seblify-tone-fill-text: var(--seblify-color-secondary-fill-text, #fff4e7);
587
+ --seblify-tone-surface: var(--seblify-color-secondary-surface, #f4e5ee);
588
+ --seblify-tone-surface-hover: var(
589
+ --seblify-color-secondary-surface-hover,
590
+ #ecd3e0
591
+ );
592
+ --seblify-tone-text: var(--seblify-color-secondary-text, #6f3a55);
593
+ --seblify-tone-border: var(--seblify-color-secondary-border, #d7a6bf);
594
+ --seblify-tone-derived-surface: var(
595
+ --seblify-color-secondary-derived-surface,
596
+ var(
597
+ --seblify-color-neutral-derived-surface,
598
+ var(--seblify-color-surface-muted, #f2ebe4)
599
+ )
600
+ );
601
+ --seblify-tone-derived-border: var(
602
+ --seblify-color-secondary-derived-border,
603
+ var(
604
+ --seblify-color-neutral-derived-border,
605
+ color-mix(
606
+ in srgb,
607
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
608
+ var(--seblify-color-border-strong, #c5afa0) 78%
609
+ )
610
+ )
611
+ );
612
+ --seblify-tone-derived-text: var(
613
+ --seblify-color-secondary-derived-text,
614
+ var(
615
+ --seblify-color-neutral-derived-text,
616
+ var(--seblify-color-text-subtle, #8b7a70)
617
+ )
618
+ );
619
+ --seblify-tone-on-inverse-surface: var(
620
+ --seblify-color-secondary-on-inverse-surface,
621
+ color-mix(
622
+ in srgb,
623
+ var(--seblify-color-secondary-fill, #6f3a55) 22%,
624
+ var(--seblify-color-surface-inverse, #15110f) 78%
625
+ )
626
+ );
627
+ --seblify-tone-on-inverse-surface-hover: var(
628
+ --seblify-color-secondary-on-inverse-surface-hover,
629
+ color-mix(
630
+ in srgb,
631
+ var(--seblify-color-secondary-fill, #6f3a55) 32%,
632
+ var(--seblify-color-surface-inverse, #15110f) 68%
633
+ )
634
+ );
635
+ --seblify-tone-on-inverse-text: var(
636
+ --seblify-color-secondary-on-inverse-text,
637
+ var(--seblify-color-secondary-fill, #6f3a55)
638
+ );
639
+ --seblify-tone-on-inverse-border: var(
640
+ --seblify-color-secondary-on-inverse-border,
641
+ var(--seblify-color-secondary-border, #d7a6bf)
642
+ );
643
+ }
644
+
645
+ :where(.seblify-tone-context[data-seblify-tone='success']) {
646
+ --seblify-tone-fill: var(--seblify-color-success-fill, #777447);
647
+ --seblify-tone-fill-hover: var(--seblify-color-success-fill-hover, #66633c);
648
+ --seblify-tone-fill-text: var(--seblify-color-success-fill-text, #fff4e7);
649
+ --seblify-tone-surface: var(--seblify-color-success-surface, #eeeddf);
650
+ --seblify-tone-surface-hover: var(
651
+ --seblify-color-success-surface-hover,
652
+ #e1dfc4
653
+ );
654
+ --seblify-tone-text: var(--seblify-color-success-text, #5d5b34);
655
+ --seblify-tone-border: var(--seblify-color-success-border, #cbc790);
656
+ --seblify-tone-derived-surface: var(
657
+ --seblify-color-success-derived-surface,
658
+ var(
659
+ --seblify-color-neutral-derived-surface,
660
+ var(--seblify-color-surface-muted, #f2ebe4)
661
+ )
662
+ );
663
+ --seblify-tone-derived-border: var(
664
+ --seblify-color-success-derived-border,
665
+ var(
666
+ --seblify-color-neutral-derived-border,
667
+ color-mix(
668
+ in srgb,
669
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
670
+ var(--seblify-color-border-strong, #c5afa0) 78%
671
+ )
672
+ )
673
+ );
674
+ --seblify-tone-derived-text: var(
675
+ --seblify-color-success-derived-text,
676
+ var(
677
+ --seblify-color-neutral-derived-text,
678
+ var(--seblify-color-text-subtle, #8b7a70)
679
+ )
680
+ );
681
+ --seblify-tone-on-inverse-surface: var(
682
+ --seblify-color-success-on-inverse-surface,
683
+ color-mix(
684
+ in srgb,
685
+ var(--seblify-color-success-fill, #777447) 22%,
686
+ var(--seblify-color-surface-inverse, #15110f) 78%
687
+ )
688
+ );
689
+ --seblify-tone-on-inverse-surface-hover: var(
690
+ --seblify-color-success-on-inverse-surface-hover,
691
+ color-mix(
692
+ in srgb,
693
+ var(--seblify-color-success-fill, #777447) 32%,
694
+ var(--seblify-color-surface-inverse, #15110f) 68%
695
+ )
696
+ );
697
+ --seblify-tone-on-inverse-text: var(
698
+ --seblify-color-success-on-inverse-text,
699
+ var(--seblify-color-success-fill, #777447)
700
+ );
701
+ --seblify-tone-on-inverse-border: var(
702
+ --seblify-color-success-on-inverse-border,
703
+ var(--seblify-color-success-border, #cbc790)
704
+ );
705
+ }
706
+
707
+ :where(.seblify-tone-context[data-seblify-tone='danger']) {
708
+ --seblify-tone-fill: var(--seblify-color-danger-fill, #b83d45);
709
+ --seblify-tone-fill-hover: var(--seblify-color-danger-fill-hover, #9f3239);
710
+ --seblify-tone-fill-text: var(--seblify-color-danger-fill-text, #fff4e7);
711
+ --seblify-tone-surface: var(--seblify-color-danger-surface, #fae7e8);
712
+ --seblify-tone-surface-hover: var(
713
+ --seblify-color-danger-surface-hover,
714
+ #f3d2d4
715
+ );
716
+ --seblify-tone-text: var(--seblify-color-danger-text, #923038);
717
+ --seblify-tone-border: var(--seblify-color-danger-border, #e2a2a7);
718
+ --seblify-tone-derived-surface: var(
719
+ --seblify-color-danger-derived-surface,
720
+ var(
721
+ --seblify-color-neutral-derived-surface,
722
+ var(--seblify-color-surface-muted, #f2ebe4)
723
+ )
724
+ );
725
+ --seblify-tone-derived-border: var(
726
+ --seblify-color-danger-derived-border,
727
+ var(
728
+ --seblify-color-neutral-derived-border,
729
+ color-mix(
730
+ in srgb,
731
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
732
+ var(--seblify-color-border-strong, #c5afa0) 78%
733
+ )
734
+ )
735
+ );
736
+ --seblify-tone-derived-text: var(
737
+ --seblify-color-danger-derived-text,
738
+ var(
739
+ --seblify-color-neutral-derived-text,
740
+ var(--seblify-color-text-subtle, #8b7a70)
741
+ )
742
+ );
743
+ --seblify-tone-on-inverse-surface: var(
744
+ --seblify-color-danger-on-inverse-surface,
745
+ color-mix(
746
+ in srgb,
747
+ var(--seblify-color-danger-fill, #b83d45) 22%,
748
+ var(--seblify-color-surface-inverse, #15110f) 78%
749
+ )
750
+ );
751
+ --seblify-tone-on-inverse-surface-hover: var(
752
+ --seblify-color-danger-on-inverse-surface-hover,
753
+ color-mix(
754
+ in srgb,
755
+ var(--seblify-color-danger-fill, #b83d45) 32%,
756
+ var(--seblify-color-surface-inverse, #15110f) 68%
757
+ )
758
+ );
759
+ --seblify-tone-on-inverse-text: var(
760
+ --seblify-color-danger-on-inverse-text,
761
+ var(--seblify-color-danger-fill, #b83d45)
762
+ );
763
+ --seblify-tone-on-inverse-border: var(
764
+ --seblify-color-danger-on-inverse-border,
765
+ var(--seblify-color-danger-border, #e2a2a7)
766
+ );
767
+ }
768
+
769
+ :where(.seblify-tone-context[data-seblify-tone='warning']) {
770
+ --seblify-tone-fill: var(--seblify-color-warning-fill, #9a6d24);
771
+ --seblify-tone-fill-hover: var(--seblify-color-warning-fill-hover, #805918);
772
+ --seblify-tone-fill-text: var(--seblify-color-warning-fill-text, #fff4e7);
773
+ --seblify-tone-surface: var(--seblify-color-warning-surface, #f8edd8);
774
+ --seblify-tone-surface-hover: var(
775
+ --seblify-color-warning-surface-hover,
776
+ #efddbd
777
+ );
778
+ --seblify-tone-text: var(--seblify-color-warning-text, #7a5418);
779
+ --seblify-tone-border: var(--seblify-color-warning-border, #d8b46c);
780
+ --seblify-tone-derived-surface: var(
781
+ --seblify-color-warning-derived-surface,
782
+ var(
783
+ --seblify-color-neutral-derived-surface,
784
+ var(--seblify-color-surface-muted, #f2ebe4)
785
+ )
786
+ );
787
+ --seblify-tone-derived-border: var(
788
+ --seblify-color-warning-derived-border,
789
+ var(
790
+ --seblify-color-neutral-derived-border,
791
+ color-mix(
792
+ in srgb,
793
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
794
+ var(--seblify-color-border-strong, #c5afa0) 78%
795
+ )
796
+ )
797
+ );
798
+ --seblify-tone-derived-text: var(
799
+ --seblify-color-warning-derived-text,
800
+ var(
801
+ --seblify-color-neutral-derived-text,
802
+ var(--seblify-color-text-subtle, #8b7a70)
803
+ )
804
+ );
805
+ --seblify-tone-on-inverse-surface: var(
806
+ --seblify-color-warning-on-inverse-surface,
807
+ color-mix(
808
+ in srgb,
809
+ var(--seblify-color-warning-fill, #9a6d24) 22%,
810
+ var(--seblify-color-surface-inverse, #15110f) 78%
811
+ )
812
+ );
813
+ --seblify-tone-on-inverse-surface-hover: var(
814
+ --seblify-color-warning-on-inverse-surface-hover,
815
+ color-mix(
816
+ in srgb,
817
+ var(--seblify-color-warning-fill, #9a6d24) 32%,
818
+ var(--seblify-color-surface-inverse, #15110f) 68%
819
+ )
820
+ );
821
+ --seblify-tone-on-inverse-text: var(
822
+ --seblify-color-warning-on-inverse-text,
823
+ var(--seblify-color-warning-fill, #9a6d24)
824
+ );
825
+ --seblify-tone-on-inverse-border: var(
826
+ --seblify-color-warning-on-inverse-border,
827
+ var(--seblify-color-warning-border, #d8b46c)
828
+ );
829
+ }
830
+
831
+ :where(.seblify-tone-context[data-seblify-tone='info']) {
832
+ --seblify-tone-fill: var(--seblify-color-info-fill, #a5664a);
833
+ --seblify-tone-fill-hover: var(--seblify-color-info-fill-hover, #8f543b);
834
+ --seblify-tone-fill-text: var(--seblify-color-info-fill-text, #fff4e7);
835
+ --seblify-tone-surface: var(--seblify-color-info-surface, #f6e6de);
836
+ --seblify-tone-surface-hover: var(
837
+ --seblify-color-info-surface-hover,
838
+ #edd3c6
839
+ );
840
+ --seblify-tone-text: var(--seblify-color-info-text, #844932);
841
+ --seblify-tone-border: var(--seblify-color-info-border, #d49d85);
842
+ --seblify-tone-derived-surface: var(
843
+ --seblify-color-info-derived-surface,
844
+ var(
845
+ --seblify-color-neutral-derived-surface,
846
+ var(--seblify-color-surface-muted, #f2ebe4)
847
+ )
848
+ );
849
+ --seblify-tone-derived-border: var(
850
+ --seblify-color-info-derived-border,
851
+ var(
852
+ --seblify-color-neutral-derived-border,
853
+ color-mix(
854
+ in srgb,
855
+ var(--seblify-color-neutral-fill, #6f5f55) 22%,
856
+ var(--seblify-color-border-strong, #c5afa0) 78%
857
+ )
858
+ )
859
+ );
860
+ --seblify-tone-derived-text: var(
861
+ --seblify-color-info-derived-text,
862
+ var(
863
+ --seblify-color-neutral-derived-text,
864
+ var(--seblify-color-text-subtle, #8b7a70)
865
+ )
866
+ );
867
+ --seblify-tone-on-inverse-surface: var(
868
+ --seblify-color-info-on-inverse-surface,
869
+ color-mix(
870
+ in srgb,
871
+ var(--seblify-color-info-fill, #a5664a) 22%,
872
+ var(--seblify-color-surface-inverse, #15110f) 78%
873
+ )
874
+ );
875
+ --seblify-tone-on-inverse-surface-hover: var(
876
+ --seblify-color-info-on-inverse-surface-hover,
877
+ color-mix(
878
+ in srgb,
879
+ var(--seblify-color-info-fill, #a5664a) 32%,
880
+ var(--seblify-color-surface-inverse, #15110f) 68%
881
+ )
882
+ );
883
+ --seblify-tone-on-inverse-text: var(
884
+ --seblify-color-info-on-inverse-text,
885
+ var(--seblify-color-info-fill, #a5664a)
886
+ );
887
+ --seblify-tone-on-inverse-border: var(
888
+ --seblify-color-info-on-inverse-border,
889
+ var(--seblify-color-info-border, #d49d85)
890
+ );
891
+ }
892
+
893
+ :where(.seblify-tone-context[data-seblify-surface='inverse']) {
894
+ --seblify-tone-control-surface: var(--seblify-tone-on-inverse-surface);
895
+ --seblify-tone-control-surface-hover: var(
896
+ --seblify-tone-on-inverse-surface-hover
897
+ );
898
+ --seblify-tone-control-default-text: var(
899
+ --seblify-color-text-inverse,
900
+ #fff4e7
901
+ );
902
+ --seblify-tone-control-text: var(--seblify-tone-on-inverse-text);
903
+ --seblify-tone-control-border: var(--seblify-tone-on-inverse-border);
904
+ --seblify-tone-control-derived-surface: color-mix(
905
+ in srgb,
906
+ var(--seblify-tone-on-inverse-surface) 70%,
907
+ var(--seblify-color-surface-inverse, #15110f) 30%
908
+ );
909
+ --seblify-tone-control-derived-border: color-mix(
910
+ in srgb,
911
+ var(--seblify-tone-on-inverse-border) 72%,
912
+ var(--seblify-color-border-inverse, #4a3b32) 28%
913
+ );
914
+ --seblify-tone-control-derived-text: var(--seblify-tone-on-inverse-text);
915
+ }
916
+
917
+ :where(
918
+ .seblify-tone-context[data-seblify-surface='inverse'][data-seblify-tone='strong']
919
+ ) {
920
+ --seblify-tone-control-fill: var(--seblify-color-text-inverse, #fff4e7);
921
+ --seblify-tone-control-fill-hover: color-mix(
922
+ in srgb,
923
+ var(--seblify-color-text-inverse, #fff4e7) 88%,
924
+ var(--seblify-color-surface-inverse, #15110f) 12%
925
+ );
926
+ --seblify-tone-control-fill-text: var(--seblify-color-text, #211916);
927
+ }
928
+
929
+ :where(.seblify-tone-publisher) {
930
+ --seblify-current-tone-fill: var(--seblify-tone-fill);
931
+ --seblify-current-tone-fill-hover: var(--seblify-tone-fill-hover);
932
+ --seblify-current-tone-fill-text: var(--seblify-tone-fill-text);
933
+ --seblify-current-tone-surface: var(--seblify-tone-surface);
934
+ --seblify-current-tone-surface-hover: var(--seblify-tone-surface-hover);
935
+ --seblify-current-tone-text: var(--seblify-tone-text);
936
+ --seblify-current-tone-border: var(--seblify-tone-border);
937
+ --seblify-current-tone-derived-surface: var(--seblify-tone-derived-surface);
938
+ --seblify-current-tone-derived-border: var(--seblify-tone-derived-border);
939
+ --seblify-current-tone-derived-text: var(--seblify-tone-derived-text);
940
+ --seblify-current-tone-on-inverse-surface: var(
941
+ --seblify-tone-on-inverse-surface
942
+ );
943
+ --seblify-current-tone-on-inverse-surface-hover: var(
944
+ --seblify-tone-on-inverse-surface-hover
945
+ );
946
+ --seblify-current-tone-on-inverse-text: var(--seblify-tone-on-inverse-text);
947
+ --seblify-current-tone-on-inverse-border: var(
948
+ --seblify-tone-on-inverse-border
949
+ );
950
+ }
951
+
952
+ .toggle-button {
953
+ --toggle-button-fill: var(--seblify-tone-fill);
954
+ --toggle-button-fill-hover: var(--seblify-tone-fill-hover);
955
+ --toggle-button-fill-text: var(--seblify-tone-fill-text);
956
+ --toggle-button-surface: var(--seblify-tone-surface);
957
+ --toggle-button-surface-hover: var(--seblify-tone-surface-hover);
958
+ --toggle-button-default-surface: var(
959
+ --seblify-color-surface-muted,
960
+ #f2ebe4
961
+ );
962
+ --toggle-button-default-surface-hover: var(
963
+ --seblify-color-surface-hover,
964
+ #ebe1d8
965
+ );
966
+ --toggle-button-default-text: var(--seblify-color-text, #211916);
967
+ --toggle-button-text: var(--seblify-tone-text);
968
+ --toggle-button-border: var(--seblify-tone-border);
969
+ --toggle-button-default-border: var(--seblify-color-border-strong, #c5afa0);
970
+
971
+ display: inline-flex;
972
+ width: fit-content;
973
+ max-width: 100%;
974
+ min-height: var(--toggle-button-height);
975
+ align-items: center;
976
+ justify-content: center;
977
+ border: 1px solid transparent;
978
+ border-radius: var(--toggle-button-radius);
979
+ padding-block: 0;
980
+ padding-inline: var(--toggle-button-padding-inline);
981
+ background: transparent;
982
+ box-sizing: border-box;
983
+ color: var(--toggle-button-default-text);
984
+ cursor: pointer;
985
+ font: inherit;
986
+ font-size: 0.875rem;
987
+ font-weight: 800;
988
+ line-height: 1.2;
989
+ text-align: center;
990
+ text-decoration: none;
991
+ vertical-align: middle;
992
+ transition:
993
+ background-color 140ms ease,
994
+ border-color 140ms ease,
995
+ color 140ms ease,
996
+ box-shadow 140ms ease,
997
+ transform 120ms ease;
998
+ }
999
+
1000
+ .full-width {
1001
+ width: 100%;
1002
+ }
1003
+
1004
+ .icon-only {
1005
+ width: var(--toggle-button-height);
1006
+ padding-inline: 0;
1007
+ }
1008
+
1009
+ .toggle-button__inner {
1010
+ --seblify-current-size: var(--toggle-button-icon-size);
1011
+
1012
+ display: inline-flex;
1013
+ min-width: 0;
1014
+ align-items: center;
1015
+ justify-content: center;
1016
+ gap: var(--toggle-button-gap);
1017
+ }
1018
+
1019
+ .toggle-button__content {
1020
+ min-width: 0;
1021
+ overflow: hidden;
1022
+ text-overflow: ellipsis;
1023
+ white-space: nowrap;
1024
+ }
1025
+
1026
+ .toggle-button__media {
1027
+ display: inline-flex;
1028
+ width: var(--toggle-button-icon-size);
1029
+ height: var(--toggle-button-icon-size);
1030
+ flex: 0 0 auto;
1031
+ align-items: center;
1032
+ justify-content: center;
1033
+ line-height: 0;
1034
+ }
1035
+
1036
+ .toggle-button[data-variant='solid'] {
1037
+ background: var(--toggle-button-default-surface);
1038
+ color: var(--toggle-button-default-text);
1039
+ }
1040
+
1041
+ .toggle-button[data-variant='solid'][data-pressed='true'] {
1042
+ border-color: var(--toggle-button-fill);
1043
+ background: var(--toggle-button-fill);
1044
+ color: var(--toggle-button-fill-text);
1045
+ box-shadow: var(--seblify-shadow-control, 0 1px 3px rgb(16 24 40 / 24%));
1046
+ }
1047
+
1048
+ .toggle-button[data-variant='soft'] {
1049
+ background: var(--toggle-button-default-surface);
1050
+ color: var(--toggle-button-default-text);
1051
+ }
1052
+
1053
+ .toggle-button[data-variant='soft'][data-pressed='true'],
1054
+ .toggle-button[data-variant='tint'][data-pressed='true'] {
1055
+ background: var(--toggle-button-surface);
1056
+ color: var(--toggle-button-text);
1057
+ }
1058
+
1059
+ .toggle-button[data-variant='outline'] {
1060
+ border-color: var(--toggle-button-default-border);
1061
+ color: var(--toggle-button-default-text);
1062
+ }
1063
+
1064
+ .toggle-button[data-variant='outline'][data-pressed='true'] {
1065
+ border-color: var(--toggle-button-border);
1066
+ background: var(--toggle-button-surface);
1067
+ color: var(--toggle-button-text);
1068
+ }
1069
+
1070
+ .toggle-button[data-variant='plain'][data-pressed='true'] {
1071
+ background: var(--toggle-button-surface);
1072
+ color: var(--toggle-button-text);
1073
+ }
1074
+
1075
+ .toggle-button:not(:disabled):hover {
1076
+ background: var(--toggle-button-default-surface-hover);
1077
+ }
1078
+
1079
+ .toggle-button[data-pressed='true']:not(:disabled):hover {
1080
+ background: var(--toggle-button-surface-hover);
1081
+ }
1082
+
1083
+ .toggle-button[data-variant='solid'][data-pressed='true']:not(
1084
+ :disabled
1085
+ ):hover {
1086
+ border-color: var(--toggle-button-fill-hover);
1087
+ background: var(--toggle-button-fill-hover);
1088
+ }
1089
+
1090
+ .toggle-button:not(:disabled):active {
1091
+ transform: translateY(1px);
1092
+ }
1093
+
1094
+ .toggle-button:focus-visible {
1095
+ outline: 3px solid var(--seblify-color-focus-ring, #b43f5a);
1096
+ outline-offset: 2px;
1097
+ }
1098
+
1099
+ .toggle-button:disabled {
1100
+ cursor: not-allowed;
1101
+ opacity: var(--seblify-opacity-disabled, 0.56);
1102
+ }
1103
+
1104
+ @media (prefers-reduced-motion: reduce) {
1105
+ .toggle-button {
1106
+ transition-duration: 0ms;
1107
+ }
1108
+ }
1109
+ </style>