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