@coras-io/embed 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/components/filter-chip/filter-chip.styles.js +1 -1
- package/dist/components/transfer-modal/transfer-modal.styles.js +1 -1
- package/dist/containers/footer/footer.component.d.ts +2 -0
- package/dist/containers/footer/footer.component.js +8 -0
- package/dist/containers/footer/footer.styles.js +8 -0
- package/dist/containers/navbar/navbar.component.d.ts +1 -0
- package/dist/containers/navbar/navbar.component.js +3 -0
- package/dist/containers/navbar/navbar.styles.js +9 -1
- package/dist/locales/de-DE.js +1 -1
- package/dist/locales/en-IE.js +4 -4
- package/dist/locales/en-US.js +4 -4
- package/dist/locales/ms-MY.js +4 -4
- package/dist/sdk/mount.js +11 -14
- package/dist/sdk/theme.d.ts +2 -2
- package/dist/sdk/theme.js +9 -6
- package/dist/sdk/types.d.ts +4 -6
- package/dist/sdk/validation.js +2 -4
- package/dist/styles/tokens.d.ts +1 -1
- package/dist/styles/tokens.generated.d.ts +1 -1
- package/dist/styles/tokens.generated.js +1 -1
- package/dist/styles/tokens.metadata.d.ts +1 -1
- package/dist/styles/tokens.metadata.js +30 -12
- package/dist/views/details-page/details-page.component.js +5 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @coras-io/embed
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 233f091: Add `navbarBackgroundImage` and `footerBackgroundImage` so a brand can paint a linear or radial gradient over the navbar and footer, with an optional dark counterpart under `dark`; the solid background colours stay the fallback for the mobile menu, borders, contrast checks and email
|
|
8
|
+
- 233f091: Ship the `brand.json` contract: the file is grouped by surface (`navbar.background`), cites a published JSON Schema, and is read by every consumer in that shape or as flat keys. Rename `mainButton*` to `primaryButton*`, `bodyIcon` to `icon` and `buttonHoverLight` / `buttonHoverDark` to `buttonHoverOnLightFill` / `buttonHoverOnDarkFill`, with their CSS variables (`--coras-brand-primary-button*`, `--coras-brand-icon`, `--coras-color-primary-button*`). Logos are fields, shadows are validated by grammar, `publishBrand` fills in derived values, and `toDesignTokens` exports a brand as W3C Design Tokens
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- e8377e1: Show ampersands and angle brackets in translated text instead of raw HTML entities
|
|
13
|
+
- 030f19d: Show the details page error modal when an attraction request fails, instead of crashing while rendering an empty attraction
|
|
14
|
+
- Updated dependencies [233f091]
|
|
15
|
+
- Updated dependencies [233f091]
|
|
16
|
+
- @coras-io/brand-tokens@0.4.0
|
|
17
|
+
|
|
3
18
|
## 0.3.0
|
|
4
19
|
|
|
5
20
|
### Minor Changes
|
|
@@ -27,7 +27,7 @@ export default css `
|
|
|
27
27
|
);
|
|
28
28
|
--filter-chip-selected-background-color: var(--coras-color-primary);
|
|
29
29
|
--filter-chip-selected-hover-background-color: var(
|
|
30
|
-
--coras-color-
|
|
30
|
+
--coras-color-primary-button-hover
|
|
31
31
|
);
|
|
32
32
|
--filter-chip-selected-color: var(--coras-palette-white);
|
|
33
33
|
--filter-chip-disabled-color: var(--coras-color-text-disabled);
|
|
@@ -4,5 +4,7 @@ import "../../components/footer-menu/footer-menu-item/footer-menu-item.js";
|
|
|
4
4
|
export declare class CorasFooter extends LitElement {
|
|
5
5
|
static styles: CSSResultGroup;
|
|
6
6
|
private _pageDispatch;
|
|
7
|
+
private readonly colorScheme;
|
|
8
|
+
willUpdate(): void;
|
|
7
9
|
render(): import("lit").TemplateResult<1>;
|
|
8
10
|
}
|
|
@@ -10,9 +10,17 @@ import { consume } from "@lit/context";
|
|
|
10
10
|
import "../../components/footer-menu/footer-menu.js";
|
|
11
11
|
import "../../components/footer-menu/footer-menu-item/footer-menu-item.js";
|
|
12
12
|
import styles from "./footer.styles.js";
|
|
13
|
+
import { ColorSchemeController } from "../../core/color-scheme.js";
|
|
13
14
|
import { pageDispatchContext, } from "../../contexts/events.context.js";
|
|
14
15
|
let CorasFooter = class CorasFooter extends LitElement {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.colorScheme = new ColorSchemeController(this);
|
|
19
|
+
}
|
|
15
20
|
static { this.styles = styles; }
|
|
21
|
+
willUpdate() {
|
|
22
|
+
this.dataset.colorScheme = this.colorScheme.scheme;
|
|
23
|
+
}
|
|
16
24
|
render() {
|
|
17
25
|
return html `
|
|
18
26
|
<div class="container">
|
|
@@ -5,17 +5,25 @@ export default css `
|
|
|
5
5
|
|
|
6
6
|
:host {
|
|
7
7
|
--footer-background: var(--coras-footer-background-color);
|
|
8
|
+
--footer-background-image: var(--coras-footer-background-image);
|
|
9
|
+
--footer-background-image-dark: var(--coras-footer-background-image-dark);
|
|
8
10
|
--footer-text-color: var(--coras-footer-text-color);
|
|
9
11
|
--footer-border-top: var(--coras-footer-border-top);
|
|
10
12
|
--footer-padding-bottom: var(--coras-footer-padding-bottom);
|
|
11
13
|
|
|
12
14
|
background-color: var(--footer-background);
|
|
15
|
+
background-image: var(--footer-background-image);
|
|
13
16
|
border-top: var(--footer-border-top);
|
|
14
17
|
|
|
15
18
|
width: 100%;
|
|
16
19
|
pointer-events: none;
|
|
17
20
|
}
|
|
18
21
|
|
|
22
|
+
/* light-dark() takes colours only, so the dark gradient is picked by scheme. */
|
|
23
|
+
:host([data-color-scheme="dark"]) {
|
|
24
|
+
background-image: var(--footer-background-image-dark);
|
|
25
|
+
}
|
|
26
|
+
|
|
19
27
|
.container {
|
|
20
28
|
container-type: inline-size;
|
|
21
29
|
max-width: var(--coras-footer-max-width);
|
|
@@ -101,6 +101,7 @@ export declare class CorasNavBar extends CorasNavBar_base implements SearchMixin
|
|
|
101
101
|
private renderBrand;
|
|
102
102
|
private renderSearchOnlyHeader;
|
|
103
103
|
private renderFullHeader;
|
|
104
|
+
willUpdate(): void;
|
|
104
105
|
render(): import("lit").TemplateResult<1>;
|
|
105
106
|
}
|
|
106
107
|
export {};
|
|
@@ -5,6 +5,8 @@ export default css `
|
|
|
5
5
|
|
|
6
6
|
:host {
|
|
7
7
|
--navbar-background: var(--coras-navbar-background);
|
|
8
|
+
--navbar-background-image: var(--coras-navbar-background-image);
|
|
9
|
+
--navbar-background-image-dark: var(--coras-navbar-background-image-dark);
|
|
8
10
|
--navbar-text-color: var(--coras-navbar-text-color);
|
|
9
11
|
--navbar-border-bottom: var(--coras-navbar-border-bottom);
|
|
10
12
|
--navbar-shadow: var(--coras-navbar-shadow);
|
|
@@ -39,7 +41,13 @@ export default css `
|
|
|
39
41
|
display: block;
|
|
40
42
|
width: 100%;
|
|
41
43
|
|
|
42
|
-
background: var(--navbar-background);
|
|
44
|
+
background-color: var(--navbar-background);
|
|
45
|
+
background-image: var(--navbar-background-image);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* light-dark() takes colours only, so the dark gradient is picked by scheme. */
|
|
49
|
+
:host([data-color-scheme="dark"]) {
|
|
50
|
+
background-image: var(--navbar-background-image-dark);
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
coras-icon[icon="shopping-basket"],
|
package/dist/locales/de-DE.js
CHANGED
|
@@ -193,7 +193,7 @@ export const templates = {
|
|
|
193
193
|
'sb05eb16313ad5810': `Fehler!`,
|
|
194
194
|
'sb074169ce94feeb0': `Unzureichendes FIDA-Gleichgewicht`,
|
|
195
195
|
'sb182f52b56175d8c': `Keine Länder gefunden`,
|
|
196
|
-
'sb26e53053d747113': `Tickets &
|
|
196
|
+
'sb26e53053d747113': `Tickets & Touren`,
|
|
197
197
|
'sb3d4f79d9d8b71e5': `Einreichen`,
|
|
198
198
|
'sb3dbeaf294fd9bdd': `Bezahlter Betrag`,
|
|
199
199
|
'sb46123a97302f3ae': `Gesamt in FIDA`,
|
package/dist/locales/en-IE.js
CHANGED
|
@@ -27,7 +27,7 @@ export const templates = {
|
|
|
27
27
|
's06963fd6fbd255b6': `Next Month`,
|
|
28
28
|
's06e48df1da26857e': `Firstname + Surname`,
|
|
29
29
|
's072873fcb8392b95': `For illustrative purposes only`,
|
|
30
|
-
's07c32b16a0cc7f41': `I confirm I have read and accept FIDA's Terms &
|
|
30
|
+
's07c32b16a0cc7f41': `I confirm I have read and accept FIDA's Terms & Conditions`,
|
|
31
31
|
's0832cb53a9099084': `Browse events`,
|
|
32
32
|
's088e2b07b5393093': `ea`,
|
|
33
33
|
's0a88a6ae24e8ac10': `Please enter your email address`,
|
|
@@ -193,7 +193,7 @@ export const templates = {
|
|
|
193
193
|
'sb05eb16313ad5810': `Error!`,
|
|
194
194
|
'sb074169ce94feeb0': `Insufficient FIDA balance`,
|
|
195
195
|
'sb182f52b56175d8c': `No countries found`,
|
|
196
|
-
'sb26e53053d747113': `Tickets &
|
|
196
|
+
'sb26e53053d747113': `Tickets & Tours`,
|
|
197
197
|
'sb3d4f79d9d8b71e5': `Submit`,
|
|
198
198
|
'sb3dbeaf294fd9bdd': `Amount Paid`,
|
|
199
199
|
'sb46123a97302f3ae': `Total in FIDA`,
|
|
@@ -203,7 +203,7 @@ export const templates = {
|
|
|
203
203
|
'sb5fd6f925a5bd3ea': `ticket for`,
|
|
204
204
|
'sb61dfe1d5012cc35': `What is your question about`,
|
|
205
205
|
'sb75ee24776b3d425': `Ticket`,
|
|
206
|
-
'sb7600e1426fb67c7': `I confirm I have read and accept Coras's Terms &
|
|
206
|
+
'sb7600e1426fb67c7': `I confirm I have read and accept Coras's Terms & Conditions`,
|
|
207
207
|
'sb84d72388b33a3a4': `Your basket`,
|
|
208
208
|
'sb85774dc5d18ff0f': `Confirm`,
|
|
209
209
|
'sb9bd4f5a3810b77e': `Something went wrong`,
|
|
@@ -248,7 +248,7 @@ export const templates = {
|
|
|
248
248
|
'se046d97f0d9dd903': `Type name or select`,
|
|
249
249
|
'se256f991824c9ae0': `Flag icon`,
|
|
250
250
|
'se2b298fd65f45cc7': `Your card’s expiration date is incomplete.`,
|
|
251
|
-
'se374a10ee87f7f8c': `Terms &
|
|
251
|
+
'se374a10ee87f7f8c': `Terms & Conditions`,
|
|
252
252
|
'se3d2b191408a6254': `By confirming, the FIDA tokens will be transferred from your wallet to complete this payment.`,
|
|
253
253
|
'se46604e4550a957d': `Go to the home page`,
|
|
254
254
|
'se4bfd14e0c3355ac': `Total in`,
|
package/dist/locales/en-US.js
CHANGED
|
@@ -27,7 +27,7 @@ export const templates = {
|
|
|
27
27
|
's06963fd6fbd255b6': `Next Month`,
|
|
28
28
|
's06e48df1da26857e': `Firstname + Surname`,
|
|
29
29
|
's072873fcb8392b95': `For illustrative purposes only`,
|
|
30
|
-
's07c32b16a0cc7f41': `I confirm I have read and accept FIDA's Terms &
|
|
30
|
+
's07c32b16a0cc7f41': `I confirm I have read and accept FIDA's Terms & Conditions`,
|
|
31
31
|
's0832cb53a9099084': `Browse events`,
|
|
32
32
|
's088e2b07b5393093': `ea`,
|
|
33
33
|
's0a88a6ae24e8ac10': `Please enter your email address`,
|
|
@@ -193,7 +193,7 @@ export const templates = {
|
|
|
193
193
|
'sb05eb16313ad5810': `Error!`,
|
|
194
194
|
'sb074169ce94feeb0': `Insufficient FIDA balance`,
|
|
195
195
|
'sb182f52b56175d8c': `No countries found`,
|
|
196
|
-
'sb26e53053d747113': `Tickets &
|
|
196
|
+
'sb26e53053d747113': `Tickets & Tours`,
|
|
197
197
|
'sb3d4f79d9d8b71e5': `Submit`,
|
|
198
198
|
'sb3dbeaf294fd9bdd': `Amount Paid`,
|
|
199
199
|
'sb46123a97302f3ae': `Total in FIDA`,
|
|
@@ -203,7 +203,7 @@ export const templates = {
|
|
|
203
203
|
'sb5fd6f925a5bd3ea': `ticket for`,
|
|
204
204
|
'sb61dfe1d5012cc35': `What is your question about`,
|
|
205
205
|
'sb75ee24776b3d425': `Ticket`,
|
|
206
|
-
'sb7600e1426fb67c7': `I confirm I have read and accept Coras's Terms &
|
|
206
|
+
'sb7600e1426fb67c7': `I confirm I have read and accept Coras's Terms & Conditions`,
|
|
207
207
|
'sb84d72388b33a3a4': `Your basket`,
|
|
208
208
|
'sb85774dc5d18ff0f': `Confirm`,
|
|
209
209
|
'sb9bd4f5a3810b77e': `Something went wrong`,
|
|
@@ -248,7 +248,7 @@ export const templates = {
|
|
|
248
248
|
'se046d97f0d9dd903': `Type name or select`,
|
|
249
249
|
'se256f991824c9ae0': `Flag icon`,
|
|
250
250
|
'se2b298fd65f45cc7': `Your card’s expiration date is incomplete.`,
|
|
251
|
-
'se374a10ee87f7f8c': `Terms &
|
|
251
|
+
'se374a10ee87f7f8c': `Terms & Conditions`,
|
|
252
252
|
'se3d2b191408a6254': `By confirming, the FIDA tokens will be transferred from your wallet to complete this payment.`,
|
|
253
253
|
'se46604e4550a957d': `Go to the home page`,
|
|
254
254
|
'se4bfd14e0c3355ac': `Total in`,
|
package/dist/locales/ms-MY.js
CHANGED
|
@@ -27,7 +27,7 @@ export const templates = {
|
|
|
27
27
|
's06963fd6fbd255b6': `Bulan Depan`,
|
|
28
28
|
's06e48df1da26857e': `Nama pertama + Nama keluarga`,
|
|
29
29
|
's072873fcb8392b95': `Untuk tujuan ilustrasi sahaja`,
|
|
30
|
-
's07c32b16a0cc7f41': `Saya mengesahkan bahawa saya telah membaca dan menerima Terma &
|
|
30
|
+
's07c32b16a0cc7f41': `Saya mengesahkan bahawa saya telah membaca dan menerima Terma & Syarat FIDA`,
|
|
31
31
|
's0832cb53a9099084': `Layari acara`,
|
|
32
32
|
's088e2b07b5393093': `ea`,
|
|
33
33
|
's0a88a6ae24e8ac10': `Sila masukkan alamat e-mel anda`,
|
|
@@ -193,7 +193,7 @@ export const templates = {
|
|
|
193
193
|
'sb05eb16313ad5810': `Ralat!`,
|
|
194
194
|
'sb074169ce94feeb0': `Baki FIDA yang tidak mencukupi`,
|
|
195
195
|
'sb182f52b56175d8c': `Tiada negara ditemui`,
|
|
196
|
-
'sb26e53053d747113': `Tiket &
|
|
196
|
+
'sb26e53053d747113': `Tiket & Lawatan`,
|
|
197
197
|
'sb3d4f79d9d8b71e5': `Hantar`,
|
|
198
198
|
'sb3dbeaf294fd9bdd': `Jumlah Dibayar`,
|
|
199
199
|
'sb46123a97302f3ae': `Jumlah dalam FIDA`,
|
|
@@ -203,7 +203,7 @@ export const templates = {
|
|
|
203
203
|
'sb5fd6f925a5bd3ea': `tiket untuk`,
|
|
204
204
|
'sb61dfe1d5012cc35': `Apakah soalan anda`,
|
|
205
205
|
'sb75ee24776b3d425': `tiket`,
|
|
206
|
-
'sb7600e1426fb67c7': `Saya mengesahkan saya telah membaca dan menerima Terma &
|
|
206
|
+
'sb7600e1426fb67c7': `Saya mengesahkan saya telah membaca dan menerima Terma & Syarat Coras`,
|
|
207
207
|
'sb84d72388b33a3a4': `bakul awak`,
|
|
208
208
|
'sb85774dc5d18ff0f': `Sahkan`,
|
|
209
209
|
'sb9bd4f5a3810b77e': `Sesuatu telah berlaku`,
|
|
@@ -248,7 +248,7 @@ export const templates = {
|
|
|
248
248
|
'se046d97f0d9dd903': `Taip nama atau pilih`,
|
|
249
249
|
'se256f991824c9ae0': `Ikon bendera`,
|
|
250
250
|
'se2b298fd65f45cc7': `Tarikh tamat tempoh kad anda tidak lengkap.`,
|
|
251
|
-
'se374a10ee87f7f8c': `Terma &
|
|
251
|
+
'se374a10ee87f7f8c': `Terma & Syarat`,
|
|
252
252
|
'se3d2b191408a6254': `Dengan pengesahan, token FIDA akan dipindahkan dari dompet anda untuk menyelesaikan pembayaran ini.`,
|
|
253
253
|
'se46604e4550a957d': `Pergi ke halaman utama`,
|
|
254
254
|
'se4bfd14e0c3355ac': `Jumlah dalam`,
|
package/dist/sdk/mount.js
CHANGED
|
@@ -5,7 +5,7 @@ import { attachCallbackBridge, } from "./element-adapter.js";
|
|
|
5
5
|
import { createChrome } from "./chrome.js";
|
|
6
6
|
import { applyConfig, applyParams, captureConfigDefaults, captureParamDefaults, defaultPageRegistry, } from "./page-registry.js";
|
|
7
7
|
import { applyColorScheme, applyTheme, clearTheme } from "./theme.js";
|
|
8
|
-
import { safeUrl } from "@coras-io/brand-tokens";
|
|
8
|
+
import { safeUrl, migrateBrandConfig, } from "@coras-io/brand-tokens";
|
|
9
9
|
import { ensureTokensInjected } from "../styles/tokens.js";
|
|
10
10
|
import { redactValue, toPublicErrorDetail } from "./redaction.js";
|
|
11
11
|
import { assertValidPage, CorasValidationError, validateConfig, validateMountOptions, validatePageParams, } from "./validation.js";
|
|
@@ -66,6 +66,10 @@ export function createMountWith(registry) {
|
|
|
66
66
|
: (container.ownerDocument ?? document));
|
|
67
67
|
let currentPage = validated.page;
|
|
68
68
|
let currentConfig = validated.config;
|
|
69
|
+
const themeLogos = () => {
|
|
70
|
+
const t = migrateBrandConfig(currentConfig.theme ?? {});
|
|
71
|
+
return { logo: t.logo, logoDark: t.logoDark, navbarLogo: t.navbarLogo };
|
|
72
|
+
};
|
|
69
73
|
let currentParams = validated.params;
|
|
70
74
|
let currentChrome = options.chrome;
|
|
71
75
|
if (themeHasNoColours(currentConfig.theme))
|
|
@@ -139,9 +143,10 @@ export function createMountWith(registry) {
|
|
|
139
143
|
for (const element of chromeElements) {
|
|
140
144
|
if (element.tagName === "CORAS-NAVBAR") {
|
|
141
145
|
const nav = element;
|
|
142
|
-
|
|
143
|
-
nav.
|
|
144
|
-
nav.
|
|
146
|
+
const logos = themeLogos();
|
|
147
|
+
nav.logo = safeUrl(logos.logo);
|
|
148
|
+
nav.logoDark = safeUrl(logos.logoDark);
|
|
149
|
+
nav.navbarLogo = safeUrl(logos.navbarLogo);
|
|
145
150
|
}
|
|
146
151
|
}
|
|
147
152
|
}
|
|
@@ -163,11 +168,7 @@ export function createMountWith(registry) {
|
|
|
163
168
|
// Chrome is rebuilt per page rather than moved: the navbar/footer consume
|
|
164
169
|
// the page's context (locale, dispatch, current page…) and re-parenting a
|
|
165
170
|
// context consumer across providers leaves those bindings stale.
|
|
166
|
-
const chrome = await createChrome(currentChrome,
|
|
167
|
-
logo: currentConfig.theme?.logo,
|
|
168
|
-
logoDark: currentConfig.theme?.logoDark,
|
|
169
|
-
navbarLogo: currentConfig.theme?.navbarLogo,
|
|
170
|
-
});
|
|
171
|
+
const chrome = await createChrome(currentChrome, themeLogos());
|
|
171
172
|
if (destroyed || generationToken !== generation)
|
|
172
173
|
return;
|
|
173
174
|
for (const chromeElement of chrome) {
|
|
@@ -341,11 +342,7 @@ export function createMountWith(registry) {
|
|
|
341
342
|
if (chromeChanged) {
|
|
342
343
|
removeChrome();
|
|
343
344
|
const chromeToken = ++chromeGeneration;
|
|
344
|
-
void createChrome(currentChrome,
|
|
345
|
-
logo: currentConfig.theme?.logo,
|
|
346
|
-
logoDark: currentConfig.theme?.logoDark,
|
|
347
|
-
navbarLogo: currentConfig.theme?.navbarLogo,
|
|
348
|
-
})
|
|
345
|
+
void createChrome(currentChrome, themeLogos())
|
|
349
346
|
.then((chrome) => {
|
|
350
347
|
// A newer chrome update or a page render has superseded this one;
|
|
351
348
|
// discard the stale chrome instead of appending it.
|
package/dist/sdk/theme.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CorasColorScheme, CorasTheme } from "./types.js";
|
|
2
|
-
export declare const THEME_CSS_VARS: Record<"primary" | "secondary" | "pageBackground" | "text" | "textMuted" | "link" | "
|
|
2
|
+
export declare const THEME_CSS_VARS: Record<"primary" | "secondary" | "pageBackground" | "text" | "textMuted" | "link" | "icon" | "focusRing" | "scrim" | "cardBackground" | "cardBorder" | "fieldBackground" | "fieldBorder" | "menuBackground" | "menuBorder" | "divider" | "cardShadow" | "softShadow" | "primaryButton" | "primaryButtonText" | "primaryButtonHover" | "primaryButtonPressed" | "secondaryButton" | "secondaryButtonText" | "secondaryButtonHover" | "secondaryButtonPressed" | "textButton" | "primaryButtonBorder" | "secondaryButtonBorder" | "disabled" | "buttonShadow" | "buttonHoverOnLightFill" | "buttonHoverOnDarkFill" | "radius" | "buttonRadius" | "chipRadius" | "fieldRadius" | "searchRadius" | "font" | "headingFont" | "headingScale" | "logoHeight" | "navbarBackground" | "navbarBackgroundImage" | "navbarText" | "navbarIcon" | "navbarBorder" | "navbarShadow" | "footerBackground" | "footerBackgroundImage" | "footerText" | "footerLink" | "footerBorder" | "footerPaddingBottom" | "error" | "errorBackground" | "success" | "successBackground" | "warning" | "warningBackground" | "info" | "infoBackground" | "primaryTint" | "secondaryTint" | "neutral50" | "neutral100" | "neutral200" | "neutral300" | "neutral400" | "neutral500" | "neutral600" | "neutral700" | "neutral800" | "neutral900", string>;
|
|
3
3
|
export declare function applyColorScheme(element: HTMLElement, scheme: CorasColorScheme | undefined): void;
|
|
4
|
-
export declare function applyTheme(element: HTMLElement,
|
|
4
|
+
export declare function applyTheme(element: HTMLElement, input: CorasTheme | undefined): void;
|
|
5
5
|
export declare function clearTheme(element: HTMLElement): void;
|
package/dist/sdk/theme.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { BRAND_CSS_VARS, brandVarValue, fontFacesToCSS, } from "@coras-io/brand-tokens";
|
|
1
|
+
import { BRAND_CSS_VARS, BRAND_DARK_CSS_VARS, brandVarEntries, brandVarValue, fontFacesToCSS, migrateBrandConfig, } from "@coras-io/brand-tokens";
|
|
2
2
|
export const THEME_CSS_VARS = BRAND_CSS_VARS;
|
|
3
3
|
const THEME_KEYS = Object.keys(THEME_CSS_VARS);
|
|
4
4
|
export function applyColorScheme(element, scheme) {
|
|
5
5
|
element.style.colorScheme =
|
|
6
6
|
scheme === "dark" ? "dark" : scheme === "inherit" ? "inherit" : "light";
|
|
7
7
|
}
|
|
8
|
-
export function applyTheme(element,
|
|
9
|
-
if (!
|
|
8
|
+
export function applyTheme(element, input) {
|
|
9
|
+
if (!input)
|
|
10
10
|
return;
|
|
11
|
+
const theme = migrateBrandConfig(input);
|
|
11
12
|
const dark = (theme.dark ?? {});
|
|
12
13
|
for (const key of THEME_KEYS) {
|
|
13
14
|
if (theme[key] == null && dark[key] == null)
|
|
14
15
|
continue;
|
|
15
|
-
const value
|
|
16
|
-
|
|
17
|
-
element.style.setProperty(THEME_CSS_VARS[key], value);
|
|
16
|
+
for (const [name, value] of brandVarEntries(key, theme[key], dark[key]))
|
|
17
|
+
element.style.setProperty(name, value);
|
|
18
18
|
}
|
|
19
19
|
if (theme.pageBackground != null || dark.pageBackground != null) {
|
|
20
20
|
const pageBg = brandVarValue("pageBackground", theme.pageBackground, dark.pageBackground);
|
|
@@ -33,6 +33,9 @@ export function clearTheme(element) {
|
|
|
33
33
|
for (const key of THEME_KEYS) {
|
|
34
34
|
element.style.removeProperty(THEME_CSS_VARS[key]);
|
|
35
35
|
}
|
|
36
|
+
for (const name of Object.values(BRAND_DARK_CSS_VARS)) {
|
|
37
|
+
element.style.removeProperty(name);
|
|
38
|
+
}
|
|
36
39
|
element.style.removeProperty("--coras-page-background");
|
|
37
40
|
element
|
|
38
41
|
.querySelectorAll(":scope > [data-coras-fontfaces]")
|
package/dist/sdk/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BrandConfig } from "@coras-io/brand-tokens";
|
|
1
|
+
import type { BrandConfig, BrandJson } from "@coras-io/brand-tokens";
|
|
2
2
|
import type { SupportedCurrencies } from "../core/types/core/currency.js";
|
|
3
3
|
import type { SupportedLocales } from "../core/types/core/locale.js";
|
|
4
4
|
/**
|
|
@@ -57,12 +57,10 @@ export type CorasPageParamsByPage = {
|
|
|
57
57
|
/** Params for a specific page, or the union when the page is not narrowed. */
|
|
58
58
|
export type CorasPageParams<P extends CorasPageName = CorasPageName> = CorasPageParamsByPage[P];
|
|
59
59
|
/**
|
|
60
|
-
* The SDK `theme` option is the shared
|
|
61
|
-
*
|
|
62
|
-
* `fontFaces`. Defined once in `@coras-io/brand-tokens` and reused by the
|
|
63
|
-
* microsites, emails, and the Studio.
|
|
60
|
+
* The SDK `theme` option is the shared brand contract from `@coras-io/brand-tokens`:
|
|
61
|
+
* a `brand.json` as written (grouped by surface) or the engine's flat keys.
|
|
64
62
|
*/
|
|
65
|
-
export type CorasTheme = BrandConfig;
|
|
63
|
+
export type CorasTheme = BrandConfig | BrandJson;
|
|
66
64
|
/**
|
|
67
65
|
* Which colour scheme the mount renders. `theme` carries the light values and
|
|
68
66
|
* its `dark` block the dark overrides; this picks which side the `light-dark()`
|
package/dist/sdk/validation.js
CHANGED
|
@@ -183,10 +183,8 @@ function validateAssetsUrl(value) {
|
|
|
183
183
|
// them silently, which a strict host wants flagged, not swallowed).
|
|
184
184
|
const THEME_KEYS = [
|
|
185
185
|
...FIELDS.map((field) => field.key),
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"navbarLogo",
|
|
189
|
-
"footerLogo",
|
|
186
|
+
...FIELDS.map((field) => field.path.split(".")[0]),
|
|
187
|
+
"$schema",
|
|
190
188
|
"fontFaces",
|
|
191
189
|
"dark",
|
|
192
190
|
"schemaVersion",
|
package/dist/styles/tokens.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* light-DOM container is enough for every nested Web Component to read them.
|
|
9
9
|
* `mount()` adopts this sheet into the container's document exactly once.
|
|
10
10
|
*/
|
|
11
|
-
export declare const CORAS_TOKENS_TEXT = "/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */\n/* CSS-first four-tier token system (plan F-004, P-051..P-055). */\n\n@layer coras.palette, coras.brand, coras.semantic, coras.components;\n\n@property --coras-brand-primary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-page-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-body-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-focus-ring {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-card-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #fcfcff;\n}\n@property --coras-brand-field-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-menu-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-main-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-text-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-button-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-chip-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-navbar-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-navbar-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-border {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-footer-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #e6e6e6;\n}\n@property --coras-brand-footer-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-footer-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-error {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #c9224a;\n}\n@property --coras-brand-success {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #00ad8f;\n}\n@property --coras-brand-warning {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ed8f1c;\n}\n@property --coras-brand-info {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #670c93;\n}\n\n@layer coras.palette {\n :where([data-coras-root], .coras-theme) {\n --coras-palette-primary-50: #fcfcff;\n --coras-palette-primary-100: #fbfbff;\n --coras-palette-primary-200: #eef0ff;\n --coras-palette-primary-300: #dde1ff;\n --coras-palette-primary-400: #5468ff;\n --coras-palette-primary-500: #4657d4;\n --coras-palette-primary-700: #323e99;\n --coras-palette-secondary-50: #e8e8ec;\n --coras-palette-secondary-100: #d0d2da;\n --coras-palette-secondary-200: #b9bbc7;\n --coras-palette-secondary-300: #a2a4b4;\n --coras-palette-secondary-400: #1c2355;\n --coras-palette-secondary-500: #161c44;\n --coras-palette-secondary-700: #121636;\n --coras-palette-neutral-50: #f5f5f5;\n --coras-palette-neutral-100: #eeeeee;\n --coras-palette-neutral-200: #e6e6e6;\n --coras-palette-neutral-300: #dddddd;\n --coras-palette-neutral-400: #cccccc;\n --coras-palette-neutral-500: #aaaaaa;\n --coras-palette-neutral-600: #888888;\n --coras-palette-neutral-700: #666666;\n --coras-palette-neutral-800: #444444;\n --coras-palette-neutral-900: #292929;\n --coras-palette-error-50: #fae9ed;\n --coras-palette-error-500: #c9224a;\n --coras-palette-error-700: #a11b3b;\n --coras-palette-error-900: #79142c;\n --coras-palette-info-50: #f0e7f4;\n --coras-palette-info-500: #670c93;\n --coras-palette-info-700: #520a76;\n --coras-palette-info-900: #3e0758;\n --coras-palette-success-50: #e6f7f4;\n --coras-palette-success-500: #00ad8f;\n --coras-palette-success-700: #008a72;\n --coras-palette-success-900: #006856;\n --coras-palette-warning-50: #fdf4e8;\n --coras-palette-warning-500: #ed8f1c;\n --coras-palette-warning-700: #be7216;\n --coras-palette-warning-900: #8e5611;\n --coras-palette-pink-500: #ff2d55;\n --coras-palette-black: #000000;\n --coras-palette-white: #ffffff;\n }\n}\n\n@layer coras.brand {\n :where([data-coras-root], .coras-theme) {\n color-scheme: light;\n --coras-brand-primary: var(--coras-palette-primary-500);\n --coras-brand-secondary: var(--coras-palette-secondary-500);\n --coras-brand-page-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-text: light-dark(var(--coras-palette-secondary-500), #ffffff);\n --coras-brand-text-muted: light-dark(var(--coras-palette-neutral-600), #cccccc);\n --coras-brand-link: var(--coras-brand-text-button);\n --coras-brand-body-icon: var(--coras-brand-text);\n --coras-brand-focus-ring: var(--coras-brand-primary);\n --coras-brand-scrim: var(--coras-palette-black);\n --coras-brand-card-background: light-dark(var(--coras-palette-primary-50), #191c22);\n --coras-brand-card-border: light-dark(var(--coras-palette-neutral-200), #444444);\n --coras-brand-field-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-field-border: light-dark(var(--coras-palette-neutral-400), #aaaaaa);\n --coras-brand-menu-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-menu-border: var(--coras-brand-card-border);\n --coras-brand-divider: light-dark(var(--coras-palette-neutral-200), #292929);\n --coras-brand-card-shadow: 0px 24px 24px rgba(0, 0, 0, 0.04);\n --coras-brand-soft-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\n --coras-brand-main-button: var(--coras-brand-primary);\n --coras-brand-main-button-text: #ffffff;\n --coras-brand-main-button-hover: light-dark(#3f4ebf, #5968d8);\n --coras-brand-main-button-pressed: light-dark(#3947ae, #6775dc);\n --coras-brand-secondary-button: var(--coras-brand-secondary);\n --coras-brand-secondary-button-text: #ffffff;\n --coras-brand-secondary-button-hover: light-dark(#14193d, #2d3357);\n --coras-brand-secondary-button-pressed: light-dark(#121738, #404566);\n --coras-brand-text-button: light-dark(var(--coras-brand-primary), #6279f9);\n --coras-brand-main-button-border: transparent;\n --coras-brand-secondary-button-border: transparent;\n --coras-brand-disabled: light-dark(var(--coras-palette-neutral-500), #cccccc);\n --coras-brand-button-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n --coras-brand-button-hover-light: 20%;\n --coras-brand-button-hover-dark: 20%;\n --coras-brand-radius: 1.5rem;\n --coras-brand-button-radius: var(--coras-brand-radius);\n --coras-brand-chip-radius: var(--coras-brand-radius);\n --coras-brand-field-radius: 0.5rem;\n --coras-brand-search-radius: 100px;\n --coras-brand-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --coras-brand-heading-font: var(--coras-brand-font);\n --coras-brand-heading-scale: 1;\n --coras-brand-logo-height: 2rem;\n --coras-brand-navbar-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-navbar-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-navbar-icon: var(--coras-brand-navbar-text);\n --coras-brand-navbar-border: var(--coras-brand-navbar-background);\n --coras-brand-navbar-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04);\n --coras-brand-footer-background: light-dark(var(--coras-palette-neutral-200), #191c22);\n --coras-brand-footer-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-footer-link: var(--coras-brand-footer-text);\n --coras-brand-footer-border: var(--coras-brand-footer-background);\n --coras-brand-footer-padding-bottom: 2rem;\n --coras-brand-error: light-dark(var(--coras-palette-error-500), #f5748a);\n --coras-brand-error-background: light-dark(var(--coras-palette-error-50), #442e36);\n --coras-brand-success: light-dark(var(--coras-palette-success-500), #34d8b4);\n --coras-brand-success-background: light-dark(var(--coras-palette-success-50), #26403f);\n --coras-brand-warning: light-dark(var(--coras-palette-warning-500), #f4a93c);\n --coras-brand-warning-background: light-dark(var(--coras-palette-warning-50), #43382e);\n --coras-brand-info: light-dark(var(--coras-palette-info-500), #ba86e1);\n --coras-brand-info-background: light-dark(var(--coras-palette-info-50), #373045);\n --coras-brand-primary-tint: light-dark(var(--coras-palette-primary-50), #141823);\n --coras-brand-secondary-tint: light-dark(var(--coras-palette-secondary-50), #10131a);\n --coras-brand-neutral-50: var(--coras-palette-neutral-50);\n --coras-brand-neutral-100: var(--coras-palette-neutral-100);\n --coras-brand-neutral-200: var(--coras-palette-neutral-200);\n --coras-brand-neutral-300: var(--coras-palette-neutral-300);\n --coras-brand-neutral-400: var(--coras-palette-neutral-400);\n --coras-brand-neutral-500: var(--coras-palette-neutral-500);\n --coras-brand-neutral-600: var(--coras-palette-neutral-600);\n --coras-brand-neutral-700: var(--coras-palette-neutral-700);\n --coras-brand-neutral-800: var(--coras-palette-neutral-800);\n --coras-brand-neutral-900: var(--coras-palette-neutral-900);\n }\n}\n\n@layer coras.semantic {\n :where([data-coras-root], .coras-theme) {\n --coras-color-primary: var(--coras-brand-primary);\n --coras-color-primary-tint: var(--coras-brand-primary-tint);\n --coras-color-secondary: var(--coras-brand-secondary);\n --coras-color-secondary-tint: var(--coras-brand-secondary-tint);\n --coras-color-error: var(--coras-brand-error);\n --coras-color-error-background: var(--coras-brand-error-background);\n --coras-color-success: var(--coras-brand-success);\n --coras-color-success-background: var(--coras-brand-success-background);\n --coras-color-warning: var(--coras-brand-warning);\n --coras-color-warning-background: var(--coras-brand-warning-background);\n --coras-color-info: var(--coras-brand-info);\n --coras-color-info-background: var(--coras-brand-info-background);\n --coras-color-neutral-50: light-dark(var(--coras-brand-neutral-50), var(--coras-brand-neutral-900));\n --coras-color-neutral-100: light-dark(var(--coras-brand-neutral-100), var(--coras-brand-neutral-800));\n --coras-color-neutral-200: light-dark(var(--coras-brand-neutral-200), var(--coras-brand-neutral-700));\n --coras-color-neutral-300: light-dark(var(--coras-brand-neutral-300), var(--coras-brand-neutral-600));\n --coras-color-neutral-400: light-dark(var(--coras-brand-neutral-400), var(--coras-brand-neutral-500));\n --coras-color-neutral-500: light-dark(var(--coras-brand-neutral-500), var(--coras-brand-neutral-400));\n --coras-color-neutral-600: light-dark(var(--coras-brand-neutral-600), var(--coras-brand-neutral-300));\n --coras-color-neutral-700: light-dark(var(--coras-brand-neutral-700), var(--coras-brand-neutral-200));\n --coras-color-neutral-800: light-dark(var(--coras-brand-neutral-800), var(--coras-brand-neutral-100));\n --coras-color-neutral-900: light-dark(var(--coras-brand-neutral-900), var(--coras-brand-neutral-50));\n --coras-color-background: var(--coras-brand-page-background);\n --coras-color-card: var(--coras-brand-card-background);\n --coras-color-card-sunken: light-dark(var(--coras-brand-neutral-50), #0b0d10);\n --coras-color-card-hover: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-card-active: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-active));\n --coras-color-card-muted: light-dark(color-mix(in srgb, var(--coras-brand-neutral-200) 35%, var(--coras-palette-white)), color-mix(in srgb, var(--coras-palette-white) 5%, transparent));\n --coras-color-field: var(--coras-brand-field-background);\n --coras-color-field-hover: color-mix(in srgb, var(--coras-color-field), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-menu: var(--coras-brand-menu-background);\n --coras-color-menu-border: var(--coras-brand-menu-border);\n --coras-color-menu-hover: color-mix(in srgb, var(--coras-color-menu), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-text: var(--coras-brand-text);\n --coras-color-text-primary: var(--coras-brand-text);\n --coras-color-text-muted: var(--coras-brand-text-muted);\n --coras-color-text-disabled: var(--coras-brand-disabled);\n --coras-state-overlay: light-dark(#000, #fff);\n --coras-state-hover: 10%;\n --coras-state-active: 18%;\n --coras-color-main-button: var(--coras-brand-main-button);\n --coras-color-main-button-hover: var(--coras-brand-main-button-hover);\n --coras-color-main-button-pressed: var(--coras-brand-main-button-pressed);\n --coras-color-main-button-text: var(--coras-brand-main-button-text);\n --coras-color-main-button-border: var(--coras-brand-main-button-border);\n --coras-color-secondary-button: var(--coras-brand-secondary-button);\n --coras-color-secondary-button-border: var(--coras-brand-secondary-button-border);\n --coras-color-secondary-button-hover: var(--coras-brand-secondary-button-hover);\n --coras-color-secondary-button-pressed: var(--coras-brand-secondary-button-pressed);\n --coras-color-secondary-button-text: var(--coras-brand-secondary-button-text);\n --coras-color-text-button: var(--coras-brand-text-button);\n --coras-color-link: var(--coras-brand-link);\n --coras-color-icon: var(--coras-brand-body-icon);\n --coras-color-card-border: var(--coras-brand-card-border);\n --coras-color-divider: var(--coras-brand-divider);\n --coras-color-field-border: var(--coras-brand-field-border);\n --coras-color-footer-border: var(--coras-brand-footer-border);\n --coras-color-focus-ring: var(--coras-brand-focus-ring);\n --coras-color-scrim: var(--coras-brand-scrim);\n --coras-font-family-sans: var(--coras-brand-font);\n --coras-font-family-heading: var(--coras-brand-heading-font);\n --coras-font-size-xxs: 0.625rem;\n --coras-font-size-xs: 0.75rem;\n --coras-font-size-sm: 0.875rem;\n --coras-font-size-base: 1rem;\n --coras-font-size-lg: 1.125rem;\n --coras-font-size-xl: 1.25rem;\n --coras-font-size-2xl: 1.5rem;\n --coras-font-size-3xl: 2.25rem;\n --coras-font-size-4xl: 3rem;\n --coras-font-size-5xl: 3.5rem;\n --coras-font-size-title: calc(var(--coras-font-size-3xl) * var(--coras-brand-heading-scale));\n --coras-font-size-heading: calc(var(--coras-font-size-2xl) * var(--coras-brand-heading-scale));\n --coras-font-weight-light: 300;\n --coras-font-weight-normal: 400;\n --coras-font-weight-medium: 500;\n --coras-font-weight-semibold: 600;\n --coras-font-weight-bold: 700;\n --coras-radius-none: 0;\n --coras-radius-xs: calc(var(--coras-brand-radius) / 6);\n --coras-radius-sm: calc(var(--coras-brand-radius) / 3);\n --coras-radius-md: calc(var(--coras-brand-radius) * 2 / 3);\n --coras-radius-lg: var(--coras-brand-radius);\n --coras-radius-xl: calc(var(--coras-brand-radius) * 7 / 6);\n --coras-radius-2xl: calc(var(--coras-brand-radius) * 4 / 3);\n --coras-radius-full: 9999px;\n --coras-radius-control: 0.25rem;\n --coras-radius-field: var(--coras-brand-field-radius);\n --coras-radius-button: var(--coras-brand-button-radius);\n --coras-radius-chip: var(--coras-brand-chip-radius);\n --coras-radius-search: var(--coras-brand-search-radius);\n --coras-shadow-sm: var(--coras-brand-soft-shadow);\n --coras-shadow-md: var(--coras-brand-button-shadow);\n --coras-shadow-lg: var(--coras-brand-card-shadow);\n --coras-shadow-top: 1px -4px 8px 4px rgba(0, 0, 0, 0.03);\n --coras-shadow-strong: 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);\n --coras-page-max-width: 950px;\n --coras-container-max-width: 1368px;\n --coras-footer-max-width: 1073px;\n --coras-z-index-overlay: 1000;\n --coras-navbar-padding: 1rem;\n --coras-content-padding: 0 1rem;\n --coras-footer-padding: 4rem 2rem;\n }\n}\n\n@layer coras.components {\n :where([data-coras-root], .coras-theme) {\n --coras-base-text-color: var(--coras-color-text);\n --coras-navbar-background: var(--coras-brand-navbar-background);\n --coras-navbar-text-color: var(--coras-brand-navbar-text);\n --coras-navbar-border-bottom: 1px solid var(--coras-brand-navbar-border);\n --coras-navbar-shadow: var(--coras-brand-navbar-shadow);\n --coras-navbar-icon-color: var(--coras-brand-navbar-icon);\n --coras-navbar-logo-height: var(--coras-brand-logo-height);\n --coras-footer-background-color: var(--coras-brand-footer-background);\n --coras-footer-text-color: var(--coras-brand-footer-text);\n --coras-footer-link-color: var(--coras-brand-footer-link);\n --coras-footer-border-top: 1px solid var(--coras-color-footer-border);\n --coras-footer-padding-bottom: var(--coras-brand-footer-padding-bottom);\n --coras-button-primary-background: var(--coras-color-main-button);\n --coras-button-primary-text-color: var(--coras-color-main-button-text);\n --coras-button-primary-background-hover: var(--coras-color-main-button-hover);\n --coras-button-primary-background-active: var(--coras-color-main-button-pressed);\n --coras-button-primary-border-color: var(--coras-color-main-button-border);\n --coras-button-secondary-border-color: var(--coras-color-secondary-button-border);\n --coras-input-field-background-color: var(--coras-color-field);\n --coras-basket-accent-color: var(--coras-brand-secondary);\n }\n}\n\n@layer coras.components {\n :where([data-coras-root]) {\n container: coras-page / inline-size;\n max-width: 100%;\n background-color: var(--coras-page-background, transparent);\n color: var(--coras-base-text-color);\n }\n :where([data-coras-root]) > *:where(:not(style)) {\n display: block;\n fill: var(--coras-color-icon);\n }\n}\n";
|
|
11
|
+
export declare const CORAS_TOKENS_TEXT = "/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */\n/* CSS-first four-tier token system (plan F-004, P-051..P-055). */\n\n@layer coras.palette, coras.brand, coras.semantic, coras.components;\n\n@property --coras-brand-primary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-page-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-focus-ring {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-card-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #fcfcff;\n}\n@property --coras-brand-field-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-menu-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-primary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-text-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-button-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-chip-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-navbar-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-navbar-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-border {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-footer-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #e6e6e6;\n}\n@property --coras-brand-footer-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-footer-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-error {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #c9224a;\n}\n@property --coras-brand-success {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #00ad8f;\n}\n@property --coras-brand-warning {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ed8f1c;\n}\n@property --coras-brand-info {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #670c93;\n}\n\n@layer coras.palette {\n :where([data-coras-root], .coras-theme) {\n --coras-palette-primary-50: #fcfcff;\n --coras-palette-primary-100: #fbfbff;\n --coras-palette-primary-200: #eef0ff;\n --coras-palette-primary-300: #dde1ff;\n --coras-palette-primary-400: #5468ff;\n --coras-palette-primary-500: #4657d4;\n --coras-palette-primary-700: #323e99;\n --coras-palette-secondary-50: #e8e8ec;\n --coras-palette-secondary-100: #d0d2da;\n --coras-palette-secondary-200: #b9bbc7;\n --coras-palette-secondary-300: #a2a4b4;\n --coras-palette-secondary-400: #1c2355;\n --coras-palette-secondary-500: #161c44;\n --coras-palette-secondary-700: #121636;\n --coras-palette-neutral-50: #f5f5f5;\n --coras-palette-neutral-100: #eeeeee;\n --coras-palette-neutral-200: #e6e6e6;\n --coras-palette-neutral-300: #dddddd;\n --coras-palette-neutral-400: #cccccc;\n --coras-palette-neutral-500: #aaaaaa;\n --coras-palette-neutral-600: #888888;\n --coras-palette-neutral-700: #666666;\n --coras-palette-neutral-800: #444444;\n --coras-palette-neutral-900: #292929;\n --coras-palette-error-50: #fae9ed;\n --coras-palette-error-500: #c9224a;\n --coras-palette-error-700: #a11b3b;\n --coras-palette-error-900: #79142c;\n --coras-palette-info-50: #f0e7f4;\n --coras-palette-info-500: #670c93;\n --coras-palette-info-700: #520a76;\n --coras-palette-info-900: #3e0758;\n --coras-palette-success-50: #e6f7f4;\n --coras-palette-success-500: #00ad8f;\n --coras-palette-success-700: #008a72;\n --coras-palette-success-900: #006856;\n --coras-palette-warning-50: #fdf4e8;\n --coras-palette-warning-500: #ed8f1c;\n --coras-palette-warning-700: #be7216;\n --coras-palette-warning-900: #8e5611;\n --coras-palette-pink-500: #ff2d55;\n --coras-palette-black: #000000;\n --coras-palette-white: #ffffff;\n }\n}\n\n@layer coras.brand {\n :where([data-coras-root], .coras-theme) {\n color-scheme: light;\n --coras-brand-primary: var(--coras-palette-primary-500);\n --coras-brand-secondary: var(--coras-palette-secondary-500);\n --coras-brand-page-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-text: light-dark(var(--coras-palette-secondary-500), #ffffff);\n --coras-brand-text-muted: light-dark(var(--coras-palette-neutral-600), #cccccc);\n --coras-brand-link: var(--coras-brand-text-button);\n --coras-brand-icon: var(--coras-brand-text);\n --coras-brand-focus-ring: var(--coras-brand-primary);\n --coras-brand-scrim: var(--coras-palette-black);\n --coras-brand-card-background: light-dark(var(--coras-palette-primary-50), #191c22);\n --coras-brand-card-border: light-dark(var(--coras-palette-neutral-200), #444444);\n --coras-brand-field-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-field-border: light-dark(var(--coras-palette-neutral-400), #aaaaaa);\n --coras-brand-menu-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-menu-border: var(--coras-brand-card-border);\n --coras-brand-divider: light-dark(var(--coras-palette-neutral-200), #292929);\n --coras-brand-card-shadow: 0px 24px 24px rgba(0, 0, 0, 0.04);\n --coras-brand-soft-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\n --coras-brand-primary-button: var(--coras-brand-primary);\n --coras-brand-primary-button-text: #ffffff;\n --coras-brand-primary-button-hover: light-dark(#3f4ebf, #5968d8);\n --coras-brand-primary-button-pressed: light-dark(#3947ae, #6775dc);\n --coras-brand-secondary-button: var(--coras-brand-secondary);\n --coras-brand-secondary-button-text: #ffffff;\n --coras-brand-secondary-button-hover: light-dark(#14193d, #2d3357);\n --coras-brand-secondary-button-pressed: light-dark(#121738, #404566);\n --coras-brand-text-button: light-dark(var(--coras-brand-primary), #6279f9);\n --coras-brand-primary-button-border: transparent;\n --coras-brand-secondary-button-border: transparent;\n --coras-brand-disabled: light-dark(var(--coras-palette-neutral-500), #cccccc);\n --coras-brand-button-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n --coras-brand-button-hover-on-light-fill: 20%;\n --coras-brand-button-hover-on-dark-fill: 20%;\n --coras-brand-radius: 1.5rem;\n --coras-brand-button-radius: var(--coras-brand-radius);\n --coras-brand-chip-radius: var(--coras-brand-radius);\n --coras-brand-field-radius: 0.5rem;\n --coras-brand-search-radius: 100px;\n --coras-brand-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --coras-brand-heading-font: var(--coras-brand-font);\n --coras-brand-heading-scale: 1;\n --coras-brand-logo-height: 2rem;\n --coras-brand-navbar-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-navbar-background-image: none;\n --coras-brand-navbar-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-navbar-icon: var(--coras-brand-navbar-text);\n --coras-brand-navbar-border: var(--coras-brand-navbar-background);\n --coras-brand-navbar-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04);\n --coras-brand-footer-background: light-dark(var(--coras-palette-neutral-200), #191c22);\n --coras-brand-footer-background-image: none;\n --coras-brand-footer-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-footer-link: var(--coras-brand-footer-text);\n --coras-brand-footer-border: var(--coras-brand-footer-background);\n --coras-brand-footer-padding-bottom: 2rem;\n --coras-brand-error: light-dark(var(--coras-palette-error-500), #f5748a);\n --coras-brand-error-background: light-dark(var(--coras-palette-error-50), #442e36);\n --coras-brand-success: light-dark(var(--coras-palette-success-500), #34d8b4);\n --coras-brand-success-background: light-dark(var(--coras-palette-success-50), #26403f);\n --coras-brand-warning: light-dark(var(--coras-palette-warning-500), #f4a93c);\n --coras-brand-warning-background: light-dark(var(--coras-palette-warning-50), #43382e);\n --coras-brand-info: light-dark(var(--coras-palette-info-500), #ba86e1);\n --coras-brand-info-background: light-dark(var(--coras-palette-info-50), #373045);\n --coras-brand-primary-tint: light-dark(var(--coras-palette-primary-50), #141823);\n --coras-brand-secondary-tint: light-dark(var(--coras-palette-secondary-50), #10131a);\n --coras-brand-neutral-50: var(--coras-palette-neutral-50);\n --coras-brand-neutral-100: var(--coras-palette-neutral-100);\n --coras-brand-neutral-200: var(--coras-palette-neutral-200);\n --coras-brand-neutral-300: var(--coras-palette-neutral-300);\n --coras-brand-neutral-400: var(--coras-palette-neutral-400);\n --coras-brand-neutral-500: var(--coras-palette-neutral-500);\n --coras-brand-neutral-600: var(--coras-palette-neutral-600);\n --coras-brand-neutral-700: var(--coras-palette-neutral-700);\n --coras-brand-neutral-800: var(--coras-palette-neutral-800);\n --coras-brand-neutral-900: var(--coras-palette-neutral-900);\n }\n}\n\n@layer coras.semantic {\n :where([data-coras-root], .coras-theme) {\n --coras-color-primary: var(--coras-brand-primary);\n --coras-color-primary-tint: var(--coras-brand-primary-tint);\n --coras-color-secondary: var(--coras-brand-secondary);\n --coras-color-secondary-tint: var(--coras-brand-secondary-tint);\n --coras-color-error: var(--coras-brand-error);\n --coras-color-error-background: var(--coras-brand-error-background);\n --coras-color-success: var(--coras-brand-success);\n --coras-color-success-background: var(--coras-brand-success-background);\n --coras-color-warning: var(--coras-brand-warning);\n --coras-color-warning-background: var(--coras-brand-warning-background);\n --coras-color-info: var(--coras-brand-info);\n --coras-color-info-background: var(--coras-brand-info-background);\n --coras-color-neutral-50: light-dark(var(--coras-brand-neutral-50), var(--coras-brand-neutral-900));\n --coras-color-neutral-100: light-dark(var(--coras-brand-neutral-100), var(--coras-brand-neutral-800));\n --coras-color-neutral-200: light-dark(var(--coras-brand-neutral-200), var(--coras-brand-neutral-700));\n --coras-color-neutral-300: light-dark(var(--coras-brand-neutral-300), var(--coras-brand-neutral-600));\n --coras-color-neutral-400: light-dark(var(--coras-brand-neutral-400), var(--coras-brand-neutral-500));\n --coras-color-neutral-500: light-dark(var(--coras-brand-neutral-500), var(--coras-brand-neutral-400));\n --coras-color-neutral-600: light-dark(var(--coras-brand-neutral-600), var(--coras-brand-neutral-300));\n --coras-color-neutral-700: light-dark(var(--coras-brand-neutral-700), var(--coras-brand-neutral-200));\n --coras-color-neutral-800: light-dark(var(--coras-brand-neutral-800), var(--coras-brand-neutral-100));\n --coras-color-neutral-900: light-dark(var(--coras-brand-neutral-900), var(--coras-brand-neutral-50));\n --coras-color-background: var(--coras-brand-page-background);\n --coras-color-card: var(--coras-brand-card-background);\n --coras-color-card-sunken: light-dark(var(--coras-brand-neutral-50), #0b0d10);\n --coras-color-card-hover: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-card-active: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-active));\n --coras-color-card-muted: light-dark(color-mix(in srgb, var(--coras-brand-neutral-200) 35%, var(--coras-palette-white)), color-mix(in srgb, var(--coras-palette-white) 5%, transparent));\n --coras-color-field: var(--coras-brand-field-background);\n --coras-color-field-hover: color-mix(in srgb, var(--coras-color-field), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-menu: var(--coras-brand-menu-background);\n --coras-color-menu-border: var(--coras-brand-menu-border);\n --coras-color-menu-hover: color-mix(in srgb, var(--coras-color-menu), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-text: var(--coras-brand-text);\n --coras-color-text-primary: var(--coras-brand-text);\n --coras-color-text-muted: var(--coras-brand-text-muted);\n --coras-color-text-disabled: var(--coras-brand-disabled);\n --coras-state-overlay: light-dark(#000, #fff);\n --coras-state-hover: 10%;\n --coras-state-active: 18%;\n --coras-color-primary-button: var(--coras-brand-primary-button);\n --coras-color-primary-button-hover: var(--coras-brand-primary-button-hover);\n --coras-color-primary-button-pressed: var(--coras-brand-primary-button-pressed);\n --coras-color-primary-button-text: var(--coras-brand-primary-button-text);\n --coras-color-primary-button-border: var(--coras-brand-primary-button-border);\n --coras-color-secondary-button: var(--coras-brand-secondary-button);\n --coras-color-secondary-button-border: var(--coras-brand-secondary-button-border);\n --coras-color-secondary-button-hover: var(--coras-brand-secondary-button-hover);\n --coras-color-secondary-button-pressed: var(--coras-brand-secondary-button-pressed);\n --coras-color-secondary-button-text: var(--coras-brand-secondary-button-text);\n --coras-color-text-button: var(--coras-brand-text-button);\n --coras-color-link: var(--coras-brand-link);\n --coras-color-icon: var(--coras-brand-icon);\n --coras-color-card-border: var(--coras-brand-card-border);\n --coras-color-divider: var(--coras-brand-divider);\n --coras-color-field-border: var(--coras-brand-field-border);\n --coras-color-footer-border: var(--coras-brand-footer-border);\n --coras-color-focus-ring: var(--coras-brand-focus-ring);\n --coras-color-scrim: var(--coras-brand-scrim);\n --coras-font-family-sans: var(--coras-brand-font);\n --coras-font-family-heading: var(--coras-brand-heading-font);\n --coras-font-size-xxs: 0.625rem;\n --coras-font-size-xs: 0.75rem;\n --coras-font-size-sm: 0.875rem;\n --coras-font-size-base: 1rem;\n --coras-font-size-lg: 1.125rem;\n --coras-font-size-xl: 1.25rem;\n --coras-font-size-2xl: 1.5rem;\n --coras-font-size-3xl: 2.25rem;\n --coras-font-size-4xl: 3rem;\n --coras-font-size-5xl: 3.5rem;\n --coras-font-size-title: calc(var(--coras-font-size-3xl) * var(--coras-brand-heading-scale));\n --coras-font-size-heading: calc(var(--coras-font-size-2xl) * var(--coras-brand-heading-scale));\n --coras-font-weight-light: 300;\n --coras-font-weight-normal: 400;\n --coras-font-weight-medium: 500;\n --coras-font-weight-semibold: 600;\n --coras-font-weight-bold: 700;\n --coras-radius-none: 0;\n --coras-radius-xs: calc(var(--coras-brand-radius) / 6);\n --coras-radius-sm: calc(var(--coras-brand-radius) / 3);\n --coras-radius-md: calc(var(--coras-brand-radius) * 2 / 3);\n --coras-radius-lg: var(--coras-brand-radius);\n --coras-radius-xl: calc(var(--coras-brand-radius) * 7 / 6);\n --coras-radius-2xl: calc(var(--coras-brand-radius) * 4 / 3);\n --coras-radius-full: 9999px;\n --coras-radius-control: 0.25rem;\n --coras-radius-field: var(--coras-brand-field-radius);\n --coras-radius-button: var(--coras-brand-button-radius);\n --coras-radius-chip: var(--coras-brand-chip-radius);\n --coras-radius-search: var(--coras-brand-search-radius);\n --coras-shadow-sm: var(--coras-brand-soft-shadow);\n --coras-shadow-md: var(--coras-brand-button-shadow);\n --coras-shadow-lg: var(--coras-brand-card-shadow);\n --coras-shadow-top: 1px -4px 8px 4px rgba(0, 0, 0, 0.03);\n --coras-shadow-strong: 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);\n --coras-page-max-width: 950px;\n --coras-container-max-width: 1368px;\n --coras-footer-max-width: 1073px;\n --coras-z-index-overlay: 1000;\n --coras-navbar-padding: 1rem;\n --coras-content-padding: 0 1rem;\n --coras-footer-padding: 4rem 2rem;\n }\n}\n\n@layer coras.components {\n :where([data-coras-root], .coras-theme) {\n --coras-base-text-color: var(--coras-color-text);\n --coras-navbar-background: var(--coras-brand-navbar-background);\n --coras-navbar-background-image: var(--coras-brand-navbar-background-image);\n --coras-navbar-background-image-dark: var(--coras-brand-navbar-background-image-dark, var(--coras-brand-navbar-background-image));\n --coras-navbar-text-color: var(--coras-brand-navbar-text);\n --coras-navbar-border-bottom: 1px solid var(--coras-brand-navbar-border);\n --coras-navbar-shadow: var(--coras-brand-navbar-shadow);\n --coras-navbar-icon-color: var(--coras-brand-navbar-icon);\n --coras-navbar-logo-height: var(--coras-brand-logo-height);\n --coras-footer-background-color: var(--coras-brand-footer-background);\n --coras-footer-background-image: var(--coras-brand-footer-background-image);\n --coras-footer-background-image-dark: var(--coras-brand-footer-background-image-dark, var(--coras-brand-footer-background-image));\n --coras-footer-text-color: var(--coras-brand-footer-text);\n --coras-footer-link-color: var(--coras-brand-footer-link);\n --coras-footer-border-top: 1px solid var(--coras-color-footer-border);\n --coras-footer-padding-bottom: var(--coras-brand-footer-padding-bottom);\n --coras-button-primary-background: var(--coras-color-primary-button);\n --coras-button-primary-text-color: var(--coras-color-primary-button-text);\n --coras-button-primary-background-hover: var(--coras-color-primary-button-hover);\n --coras-button-primary-background-active: var(--coras-color-primary-button-pressed);\n --coras-button-primary-border-color: var(--coras-color-primary-button-border);\n --coras-button-secondary-border-color: var(--coras-color-secondary-button-border);\n --coras-input-field-background-color: var(--coras-color-field);\n --coras-basket-accent-color: var(--coras-brand-secondary);\n }\n}\n\n@layer coras.components {\n :where([data-coras-root]) {\n container: coras-page / inline-size;\n max-width: 100%;\n background-color: var(--coras-page-background, transparent);\n color: var(--coras-base-text-color);\n }\n :where([data-coras-root]) > *:where(:not(style)) {\n display: block;\n fill: var(--coras-color-icon);\n }\n}\n";
|
|
12
12
|
/**
|
|
13
13
|
* Ensure the token stylesheet is present in `root` (a `Document` or
|
|
14
14
|
* `ShadowRoot`). Idempotent: adopting the same root twice is a no-op, and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CORAS_TOKENS_CSS = "/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */\n/* CSS-first four-tier token system (plan F-004, P-051..P-055). */\n\n@layer coras.palette, coras.brand, coras.semantic, coras.components;\n\n@property --coras-brand-primary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-page-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-body-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-focus-ring {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-card-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #fcfcff;\n}\n@property --coras-brand-field-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-menu-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-main-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-text-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-button-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-chip-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-navbar-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-navbar-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-border {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-footer-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #e6e6e6;\n}\n@property --coras-brand-footer-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-footer-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-error {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #c9224a;\n}\n@property --coras-brand-success {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #00ad8f;\n}\n@property --coras-brand-warning {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ed8f1c;\n}\n@property --coras-brand-info {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #670c93;\n}\n\n@layer coras.palette {\n :where([data-coras-root], .coras-theme) {\n --coras-palette-primary-50: #fcfcff;\n --coras-palette-primary-100: #fbfbff;\n --coras-palette-primary-200: #eef0ff;\n --coras-palette-primary-300: #dde1ff;\n --coras-palette-primary-400: #5468ff;\n --coras-palette-primary-500: #4657d4;\n --coras-palette-primary-700: #323e99;\n --coras-palette-secondary-50: #e8e8ec;\n --coras-palette-secondary-100: #d0d2da;\n --coras-palette-secondary-200: #b9bbc7;\n --coras-palette-secondary-300: #a2a4b4;\n --coras-palette-secondary-400: #1c2355;\n --coras-palette-secondary-500: #161c44;\n --coras-palette-secondary-700: #121636;\n --coras-palette-neutral-50: #f5f5f5;\n --coras-palette-neutral-100: #eeeeee;\n --coras-palette-neutral-200: #e6e6e6;\n --coras-palette-neutral-300: #dddddd;\n --coras-palette-neutral-400: #cccccc;\n --coras-palette-neutral-500: #aaaaaa;\n --coras-palette-neutral-600: #888888;\n --coras-palette-neutral-700: #666666;\n --coras-palette-neutral-800: #444444;\n --coras-palette-neutral-900: #292929;\n --coras-palette-error-50: #fae9ed;\n --coras-palette-error-500: #c9224a;\n --coras-palette-error-700: #a11b3b;\n --coras-palette-error-900: #79142c;\n --coras-palette-info-50: #f0e7f4;\n --coras-palette-info-500: #670c93;\n --coras-palette-info-700: #520a76;\n --coras-palette-info-900: #3e0758;\n --coras-palette-success-50: #e6f7f4;\n --coras-palette-success-500: #00ad8f;\n --coras-palette-success-700: #008a72;\n --coras-palette-success-900: #006856;\n --coras-palette-warning-50: #fdf4e8;\n --coras-palette-warning-500: #ed8f1c;\n --coras-palette-warning-700: #be7216;\n --coras-palette-warning-900: #8e5611;\n --coras-palette-pink-500: #ff2d55;\n --coras-palette-black: #000000;\n --coras-palette-white: #ffffff;\n }\n}\n\n@layer coras.brand {\n :where([data-coras-root], .coras-theme) {\n color-scheme: light;\n --coras-brand-primary: var(--coras-palette-primary-500);\n --coras-brand-secondary: var(--coras-palette-secondary-500);\n --coras-brand-page-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-text: light-dark(var(--coras-palette-secondary-500), #ffffff);\n --coras-brand-text-muted: light-dark(var(--coras-palette-neutral-600), #cccccc);\n --coras-brand-link: var(--coras-brand-text-button);\n --coras-brand-body-icon: var(--coras-brand-text);\n --coras-brand-focus-ring: var(--coras-brand-primary);\n --coras-brand-scrim: var(--coras-palette-black);\n --coras-brand-card-background: light-dark(var(--coras-palette-primary-50), #191c22);\n --coras-brand-card-border: light-dark(var(--coras-palette-neutral-200), #444444);\n --coras-brand-field-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-field-border: light-dark(var(--coras-palette-neutral-400), #aaaaaa);\n --coras-brand-menu-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-menu-border: var(--coras-brand-card-border);\n --coras-brand-divider: light-dark(var(--coras-palette-neutral-200), #292929);\n --coras-brand-card-shadow: 0px 24px 24px rgba(0, 0, 0, 0.04);\n --coras-brand-soft-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\n --coras-brand-main-button: var(--coras-brand-primary);\n --coras-brand-main-button-text: #ffffff;\n --coras-brand-main-button-hover: light-dark(#3f4ebf, #5968d8);\n --coras-brand-main-button-pressed: light-dark(#3947ae, #6775dc);\n --coras-brand-secondary-button: var(--coras-brand-secondary);\n --coras-brand-secondary-button-text: #ffffff;\n --coras-brand-secondary-button-hover: light-dark(#14193d, #2d3357);\n --coras-brand-secondary-button-pressed: light-dark(#121738, #404566);\n --coras-brand-text-button: light-dark(var(--coras-brand-primary), #6279f9);\n --coras-brand-main-button-border: transparent;\n --coras-brand-secondary-button-border: transparent;\n --coras-brand-disabled: light-dark(var(--coras-palette-neutral-500), #cccccc);\n --coras-brand-button-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n --coras-brand-button-hover-light: 20%;\n --coras-brand-button-hover-dark: 20%;\n --coras-brand-radius: 1.5rem;\n --coras-brand-button-radius: var(--coras-brand-radius);\n --coras-brand-chip-radius: var(--coras-brand-radius);\n --coras-brand-field-radius: 0.5rem;\n --coras-brand-search-radius: 100px;\n --coras-brand-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --coras-brand-heading-font: var(--coras-brand-font);\n --coras-brand-heading-scale: 1;\n --coras-brand-logo-height: 2rem;\n --coras-brand-navbar-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-navbar-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-navbar-icon: var(--coras-brand-navbar-text);\n --coras-brand-navbar-border: var(--coras-brand-navbar-background);\n --coras-brand-navbar-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04);\n --coras-brand-footer-background: light-dark(var(--coras-palette-neutral-200), #191c22);\n --coras-brand-footer-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-footer-link: var(--coras-brand-footer-text);\n --coras-brand-footer-border: var(--coras-brand-footer-background);\n --coras-brand-footer-padding-bottom: 2rem;\n --coras-brand-error: light-dark(var(--coras-palette-error-500), #f5748a);\n --coras-brand-error-background: light-dark(var(--coras-palette-error-50), #442e36);\n --coras-brand-success: light-dark(var(--coras-palette-success-500), #34d8b4);\n --coras-brand-success-background: light-dark(var(--coras-palette-success-50), #26403f);\n --coras-brand-warning: light-dark(var(--coras-palette-warning-500), #f4a93c);\n --coras-brand-warning-background: light-dark(var(--coras-palette-warning-50), #43382e);\n --coras-brand-info: light-dark(var(--coras-palette-info-500), #ba86e1);\n --coras-brand-info-background: light-dark(var(--coras-palette-info-50), #373045);\n --coras-brand-primary-tint: light-dark(var(--coras-palette-primary-50), #141823);\n --coras-brand-secondary-tint: light-dark(var(--coras-palette-secondary-50), #10131a);\n --coras-brand-neutral-50: var(--coras-palette-neutral-50);\n --coras-brand-neutral-100: var(--coras-palette-neutral-100);\n --coras-brand-neutral-200: var(--coras-palette-neutral-200);\n --coras-brand-neutral-300: var(--coras-palette-neutral-300);\n --coras-brand-neutral-400: var(--coras-palette-neutral-400);\n --coras-brand-neutral-500: var(--coras-palette-neutral-500);\n --coras-brand-neutral-600: var(--coras-palette-neutral-600);\n --coras-brand-neutral-700: var(--coras-palette-neutral-700);\n --coras-brand-neutral-800: var(--coras-palette-neutral-800);\n --coras-brand-neutral-900: var(--coras-palette-neutral-900);\n }\n}\n\n@layer coras.semantic {\n :where([data-coras-root], .coras-theme) {\n --coras-color-primary: var(--coras-brand-primary);\n --coras-color-primary-tint: var(--coras-brand-primary-tint);\n --coras-color-secondary: var(--coras-brand-secondary);\n --coras-color-secondary-tint: var(--coras-brand-secondary-tint);\n --coras-color-error: var(--coras-brand-error);\n --coras-color-error-background: var(--coras-brand-error-background);\n --coras-color-success: var(--coras-brand-success);\n --coras-color-success-background: var(--coras-brand-success-background);\n --coras-color-warning: var(--coras-brand-warning);\n --coras-color-warning-background: var(--coras-brand-warning-background);\n --coras-color-info: var(--coras-brand-info);\n --coras-color-info-background: var(--coras-brand-info-background);\n --coras-color-neutral-50: light-dark(var(--coras-brand-neutral-50), var(--coras-brand-neutral-900));\n --coras-color-neutral-100: light-dark(var(--coras-brand-neutral-100), var(--coras-brand-neutral-800));\n --coras-color-neutral-200: light-dark(var(--coras-brand-neutral-200), var(--coras-brand-neutral-700));\n --coras-color-neutral-300: light-dark(var(--coras-brand-neutral-300), var(--coras-brand-neutral-600));\n --coras-color-neutral-400: light-dark(var(--coras-brand-neutral-400), var(--coras-brand-neutral-500));\n --coras-color-neutral-500: light-dark(var(--coras-brand-neutral-500), var(--coras-brand-neutral-400));\n --coras-color-neutral-600: light-dark(var(--coras-brand-neutral-600), var(--coras-brand-neutral-300));\n --coras-color-neutral-700: light-dark(var(--coras-brand-neutral-700), var(--coras-brand-neutral-200));\n --coras-color-neutral-800: light-dark(var(--coras-brand-neutral-800), var(--coras-brand-neutral-100));\n --coras-color-neutral-900: light-dark(var(--coras-brand-neutral-900), var(--coras-brand-neutral-50));\n --coras-color-background: var(--coras-brand-page-background);\n --coras-color-card: var(--coras-brand-card-background);\n --coras-color-card-sunken: light-dark(var(--coras-brand-neutral-50), #0b0d10);\n --coras-color-card-hover: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-card-active: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-active));\n --coras-color-card-muted: light-dark(color-mix(in srgb, var(--coras-brand-neutral-200) 35%, var(--coras-palette-white)), color-mix(in srgb, var(--coras-palette-white) 5%, transparent));\n --coras-color-field: var(--coras-brand-field-background);\n --coras-color-field-hover: color-mix(in srgb, var(--coras-color-field), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-menu: var(--coras-brand-menu-background);\n --coras-color-menu-border: var(--coras-brand-menu-border);\n --coras-color-menu-hover: color-mix(in srgb, var(--coras-color-menu), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-text: var(--coras-brand-text);\n --coras-color-text-primary: var(--coras-brand-text);\n --coras-color-text-muted: var(--coras-brand-text-muted);\n --coras-color-text-disabled: var(--coras-brand-disabled);\n --coras-state-overlay: light-dark(#000, #fff);\n --coras-state-hover: 10%;\n --coras-state-active: 18%;\n --coras-color-main-button: var(--coras-brand-main-button);\n --coras-color-main-button-hover: var(--coras-brand-main-button-hover);\n --coras-color-main-button-pressed: var(--coras-brand-main-button-pressed);\n --coras-color-main-button-text: var(--coras-brand-main-button-text);\n --coras-color-main-button-border: var(--coras-brand-main-button-border);\n --coras-color-secondary-button: var(--coras-brand-secondary-button);\n --coras-color-secondary-button-border: var(--coras-brand-secondary-button-border);\n --coras-color-secondary-button-hover: var(--coras-brand-secondary-button-hover);\n --coras-color-secondary-button-pressed: var(--coras-brand-secondary-button-pressed);\n --coras-color-secondary-button-text: var(--coras-brand-secondary-button-text);\n --coras-color-text-button: var(--coras-brand-text-button);\n --coras-color-link: var(--coras-brand-link);\n --coras-color-icon: var(--coras-brand-body-icon);\n --coras-color-card-border: var(--coras-brand-card-border);\n --coras-color-divider: var(--coras-brand-divider);\n --coras-color-field-border: var(--coras-brand-field-border);\n --coras-color-footer-border: var(--coras-brand-footer-border);\n --coras-color-focus-ring: var(--coras-brand-focus-ring);\n --coras-color-scrim: var(--coras-brand-scrim);\n --coras-font-family-sans: var(--coras-brand-font);\n --coras-font-family-heading: var(--coras-brand-heading-font);\n --coras-font-size-xxs: 0.625rem;\n --coras-font-size-xs: 0.75rem;\n --coras-font-size-sm: 0.875rem;\n --coras-font-size-base: 1rem;\n --coras-font-size-lg: 1.125rem;\n --coras-font-size-xl: 1.25rem;\n --coras-font-size-2xl: 1.5rem;\n --coras-font-size-3xl: 2.25rem;\n --coras-font-size-4xl: 3rem;\n --coras-font-size-5xl: 3.5rem;\n --coras-font-size-title: calc(var(--coras-font-size-3xl) * var(--coras-brand-heading-scale));\n --coras-font-size-heading: calc(var(--coras-font-size-2xl) * var(--coras-brand-heading-scale));\n --coras-font-weight-light: 300;\n --coras-font-weight-normal: 400;\n --coras-font-weight-medium: 500;\n --coras-font-weight-semibold: 600;\n --coras-font-weight-bold: 700;\n --coras-radius-none: 0;\n --coras-radius-xs: calc(var(--coras-brand-radius) / 6);\n --coras-radius-sm: calc(var(--coras-brand-radius) / 3);\n --coras-radius-md: calc(var(--coras-brand-radius) * 2 / 3);\n --coras-radius-lg: var(--coras-brand-radius);\n --coras-radius-xl: calc(var(--coras-brand-radius) * 7 / 6);\n --coras-radius-2xl: calc(var(--coras-brand-radius) * 4 / 3);\n --coras-radius-full: 9999px;\n --coras-radius-control: 0.25rem;\n --coras-radius-field: var(--coras-brand-field-radius);\n --coras-radius-button: var(--coras-brand-button-radius);\n --coras-radius-chip: var(--coras-brand-chip-radius);\n --coras-radius-search: var(--coras-brand-search-radius);\n --coras-shadow-sm: var(--coras-brand-soft-shadow);\n --coras-shadow-md: var(--coras-brand-button-shadow);\n --coras-shadow-lg: var(--coras-brand-card-shadow);\n --coras-shadow-top: 1px -4px 8px 4px rgba(0, 0, 0, 0.03);\n --coras-shadow-strong: 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);\n --coras-page-max-width: 950px;\n --coras-container-max-width: 1368px;\n --coras-footer-max-width: 1073px;\n --coras-z-index-overlay: 1000;\n --coras-navbar-padding: 1rem;\n --coras-content-padding: 0 1rem;\n --coras-footer-padding: 4rem 2rem;\n }\n}\n\n@layer coras.components {\n :where([data-coras-root], .coras-theme) {\n --coras-base-text-color: var(--coras-color-text);\n --coras-navbar-background: var(--coras-brand-navbar-background);\n --coras-navbar-text-color: var(--coras-brand-navbar-text);\n --coras-navbar-border-bottom: 1px solid var(--coras-brand-navbar-border);\n --coras-navbar-shadow: var(--coras-brand-navbar-shadow);\n --coras-navbar-icon-color: var(--coras-brand-navbar-icon);\n --coras-navbar-logo-height: var(--coras-brand-logo-height);\n --coras-footer-background-color: var(--coras-brand-footer-background);\n --coras-footer-text-color: var(--coras-brand-footer-text);\n --coras-footer-link-color: var(--coras-brand-footer-link);\n --coras-footer-border-top: 1px solid var(--coras-color-footer-border);\n --coras-footer-padding-bottom: var(--coras-brand-footer-padding-bottom);\n --coras-button-primary-background: var(--coras-color-main-button);\n --coras-button-primary-text-color: var(--coras-color-main-button-text);\n --coras-button-primary-background-hover: var(--coras-color-main-button-hover);\n --coras-button-primary-background-active: var(--coras-color-main-button-pressed);\n --coras-button-primary-border-color: var(--coras-color-main-button-border);\n --coras-button-secondary-border-color: var(--coras-color-secondary-button-border);\n --coras-input-field-background-color: var(--coras-color-field);\n --coras-basket-accent-color: var(--coras-brand-secondary);\n }\n}\n\n@layer coras.components {\n :where([data-coras-root]) {\n container: coras-page / inline-size;\n max-width: 100%;\n background-color: var(--coras-page-background, transparent);\n color: var(--coras-base-text-color);\n }\n :where([data-coras-root]) > *:where(:not(style)) {\n display: block;\n fill: var(--coras-color-icon);\n }\n}\n";
|
|
1
|
+
export declare const CORAS_TOKENS_CSS = "/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */\n/* CSS-first four-tier token system (plan F-004, P-051..P-055). */\n\n@layer coras.palette, coras.brand, coras.semantic, coras.components;\n\n@property --coras-brand-primary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-page-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-focus-ring {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-card-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #fcfcff;\n}\n@property --coras-brand-field-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-menu-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-primary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-text-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-button-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-chip-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-navbar-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-navbar-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-border {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-footer-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #e6e6e6;\n}\n@property --coras-brand-footer-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-footer-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-error {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #c9224a;\n}\n@property --coras-brand-success {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #00ad8f;\n}\n@property --coras-brand-warning {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ed8f1c;\n}\n@property --coras-brand-info {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #670c93;\n}\n\n@layer coras.palette {\n :where([data-coras-root], .coras-theme) {\n --coras-palette-primary-50: #fcfcff;\n --coras-palette-primary-100: #fbfbff;\n --coras-palette-primary-200: #eef0ff;\n --coras-palette-primary-300: #dde1ff;\n --coras-palette-primary-400: #5468ff;\n --coras-palette-primary-500: #4657d4;\n --coras-palette-primary-700: #323e99;\n --coras-palette-secondary-50: #e8e8ec;\n --coras-palette-secondary-100: #d0d2da;\n --coras-palette-secondary-200: #b9bbc7;\n --coras-palette-secondary-300: #a2a4b4;\n --coras-palette-secondary-400: #1c2355;\n --coras-palette-secondary-500: #161c44;\n --coras-palette-secondary-700: #121636;\n --coras-palette-neutral-50: #f5f5f5;\n --coras-palette-neutral-100: #eeeeee;\n --coras-palette-neutral-200: #e6e6e6;\n --coras-palette-neutral-300: #dddddd;\n --coras-palette-neutral-400: #cccccc;\n --coras-palette-neutral-500: #aaaaaa;\n --coras-palette-neutral-600: #888888;\n --coras-palette-neutral-700: #666666;\n --coras-palette-neutral-800: #444444;\n --coras-palette-neutral-900: #292929;\n --coras-palette-error-50: #fae9ed;\n --coras-palette-error-500: #c9224a;\n --coras-palette-error-700: #a11b3b;\n --coras-palette-error-900: #79142c;\n --coras-palette-info-50: #f0e7f4;\n --coras-palette-info-500: #670c93;\n --coras-palette-info-700: #520a76;\n --coras-palette-info-900: #3e0758;\n --coras-palette-success-50: #e6f7f4;\n --coras-palette-success-500: #00ad8f;\n --coras-palette-success-700: #008a72;\n --coras-palette-success-900: #006856;\n --coras-palette-warning-50: #fdf4e8;\n --coras-palette-warning-500: #ed8f1c;\n --coras-palette-warning-700: #be7216;\n --coras-palette-warning-900: #8e5611;\n --coras-palette-pink-500: #ff2d55;\n --coras-palette-black: #000000;\n --coras-palette-white: #ffffff;\n }\n}\n\n@layer coras.brand {\n :where([data-coras-root], .coras-theme) {\n color-scheme: light;\n --coras-brand-primary: var(--coras-palette-primary-500);\n --coras-brand-secondary: var(--coras-palette-secondary-500);\n --coras-brand-page-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-text: light-dark(var(--coras-palette-secondary-500), #ffffff);\n --coras-brand-text-muted: light-dark(var(--coras-palette-neutral-600), #cccccc);\n --coras-brand-link: var(--coras-brand-text-button);\n --coras-brand-icon: var(--coras-brand-text);\n --coras-brand-focus-ring: var(--coras-brand-primary);\n --coras-brand-scrim: var(--coras-palette-black);\n --coras-brand-card-background: light-dark(var(--coras-palette-primary-50), #191c22);\n --coras-brand-card-border: light-dark(var(--coras-palette-neutral-200), #444444);\n --coras-brand-field-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-field-border: light-dark(var(--coras-palette-neutral-400), #aaaaaa);\n --coras-brand-menu-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-menu-border: var(--coras-brand-card-border);\n --coras-brand-divider: light-dark(var(--coras-palette-neutral-200), #292929);\n --coras-brand-card-shadow: 0px 24px 24px rgba(0, 0, 0, 0.04);\n --coras-brand-soft-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\n --coras-brand-primary-button: var(--coras-brand-primary);\n --coras-brand-primary-button-text: #ffffff;\n --coras-brand-primary-button-hover: light-dark(#3f4ebf, #5968d8);\n --coras-brand-primary-button-pressed: light-dark(#3947ae, #6775dc);\n --coras-brand-secondary-button: var(--coras-brand-secondary);\n --coras-brand-secondary-button-text: #ffffff;\n --coras-brand-secondary-button-hover: light-dark(#14193d, #2d3357);\n --coras-brand-secondary-button-pressed: light-dark(#121738, #404566);\n --coras-brand-text-button: light-dark(var(--coras-brand-primary), #6279f9);\n --coras-brand-primary-button-border: transparent;\n --coras-brand-secondary-button-border: transparent;\n --coras-brand-disabled: light-dark(var(--coras-palette-neutral-500), #cccccc);\n --coras-brand-button-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n --coras-brand-button-hover-on-light-fill: 20%;\n --coras-brand-button-hover-on-dark-fill: 20%;\n --coras-brand-radius: 1.5rem;\n --coras-brand-button-radius: var(--coras-brand-radius);\n --coras-brand-chip-radius: var(--coras-brand-radius);\n --coras-brand-field-radius: 0.5rem;\n --coras-brand-search-radius: 100px;\n --coras-brand-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --coras-brand-heading-font: var(--coras-brand-font);\n --coras-brand-heading-scale: 1;\n --coras-brand-logo-height: 2rem;\n --coras-brand-navbar-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-navbar-background-image: none;\n --coras-brand-navbar-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-navbar-icon: var(--coras-brand-navbar-text);\n --coras-brand-navbar-border: var(--coras-brand-navbar-background);\n --coras-brand-navbar-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04);\n --coras-brand-footer-background: light-dark(var(--coras-palette-neutral-200), #191c22);\n --coras-brand-footer-background-image: none;\n --coras-brand-footer-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-footer-link: var(--coras-brand-footer-text);\n --coras-brand-footer-border: var(--coras-brand-footer-background);\n --coras-brand-footer-padding-bottom: 2rem;\n --coras-brand-error: light-dark(var(--coras-palette-error-500), #f5748a);\n --coras-brand-error-background: light-dark(var(--coras-palette-error-50), #442e36);\n --coras-brand-success: light-dark(var(--coras-palette-success-500), #34d8b4);\n --coras-brand-success-background: light-dark(var(--coras-palette-success-50), #26403f);\n --coras-brand-warning: light-dark(var(--coras-palette-warning-500), #f4a93c);\n --coras-brand-warning-background: light-dark(var(--coras-palette-warning-50), #43382e);\n --coras-brand-info: light-dark(var(--coras-palette-info-500), #ba86e1);\n --coras-brand-info-background: light-dark(var(--coras-palette-info-50), #373045);\n --coras-brand-primary-tint: light-dark(var(--coras-palette-primary-50), #141823);\n --coras-brand-secondary-tint: light-dark(var(--coras-palette-secondary-50), #10131a);\n --coras-brand-neutral-50: var(--coras-palette-neutral-50);\n --coras-brand-neutral-100: var(--coras-palette-neutral-100);\n --coras-brand-neutral-200: var(--coras-palette-neutral-200);\n --coras-brand-neutral-300: var(--coras-palette-neutral-300);\n --coras-brand-neutral-400: var(--coras-palette-neutral-400);\n --coras-brand-neutral-500: var(--coras-palette-neutral-500);\n --coras-brand-neutral-600: var(--coras-palette-neutral-600);\n --coras-brand-neutral-700: var(--coras-palette-neutral-700);\n --coras-brand-neutral-800: var(--coras-palette-neutral-800);\n --coras-brand-neutral-900: var(--coras-palette-neutral-900);\n }\n}\n\n@layer coras.semantic {\n :where([data-coras-root], .coras-theme) {\n --coras-color-primary: var(--coras-brand-primary);\n --coras-color-primary-tint: var(--coras-brand-primary-tint);\n --coras-color-secondary: var(--coras-brand-secondary);\n --coras-color-secondary-tint: var(--coras-brand-secondary-tint);\n --coras-color-error: var(--coras-brand-error);\n --coras-color-error-background: var(--coras-brand-error-background);\n --coras-color-success: var(--coras-brand-success);\n --coras-color-success-background: var(--coras-brand-success-background);\n --coras-color-warning: var(--coras-brand-warning);\n --coras-color-warning-background: var(--coras-brand-warning-background);\n --coras-color-info: var(--coras-brand-info);\n --coras-color-info-background: var(--coras-brand-info-background);\n --coras-color-neutral-50: light-dark(var(--coras-brand-neutral-50), var(--coras-brand-neutral-900));\n --coras-color-neutral-100: light-dark(var(--coras-brand-neutral-100), var(--coras-brand-neutral-800));\n --coras-color-neutral-200: light-dark(var(--coras-brand-neutral-200), var(--coras-brand-neutral-700));\n --coras-color-neutral-300: light-dark(var(--coras-brand-neutral-300), var(--coras-brand-neutral-600));\n --coras-color-neutral-400: light-dark(var(--coras-brand-neutral-400), var(--coras-brand-neutral-500));\n --coras-color-neutral-500: light-dark(var(--coras-brand-neutral-500), var(--coras-brand-neutral-400));\n --coras-color-neutral-600: light-dark(var(--coras-brand-neutral-600), var(--coras-brand-neutral-300));\n --coras-color-neutral-700: light-dark(var(--coras-brand-neutral-700), var(--coras-brand-neutral-200));\n --coras-color-neutral-800: light-dark(var(--coras-brand-neutral-800), var(--coras-brand-neutral-100));\n --coras-color-neutral-900: light-dark(var(--coras-brand-neutral-900), var(--coras-brand-neutral-50));\n --coras-color-background: var(--coras-brand-page-background);\n --coras-color-card: var(--coras-brand-card-background);\n --coras-color-card-sunken: light-dark(var(--coras-brand-neutral-50), #0b0d10);\n --coras-color-card-hover: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-card-active: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-active));\n --coras-color-card-muted: light-dark(color-mix(in srgb, var(--coras-brand-neutral-200) 35%, var(--coras-palette-white)), color-mix(in srgb, var(--coras-palette-white) 5%, transparent));\n --coras-color-field: var(--coras-brand-field-background);\n --coras-color-field-hover: color-mix(in srgb, var(--coras-color-field), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-menu: var(--coras-brand-menu-background);\n --coras-color-menu-border: var(--coras-brand-menu-border);\n --coras-color-menu-hover: color-mix(in srgb, var(--coras-color-menu), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-text: var(--coras-brand-text);\n --coras-color-text-primary: var(--coras-brand-text);\n --coras-color-text-muted: var(--coras-brand-text-muted);\n --coras-color-text-disabled: var(--coras-brand-disabled);\n --coras-state-overlay: light-dark(#000, #fff);\n --coras-state-hover: 10%;\n --coras-state-active: 18%;\n --coras-color-primary-button: var(--coras-brand-primary-button);\n --coras-color-primary-button-hover: var(--coras-brand-primary-button-hover);\n --coras-color-primary-button-pressed: var(--coras-brand-primary-button-pressed);\n --coras-color-primary-button-text: var(--coras-brand-primary-button-text);\n --coras-color-primary-button-border: var(--coras-brand-primary-button-border);\n --coras-color-secondary-button: var(--coras-brand-secondary-button);\n --coras-color-secondary-button-border: var(--coras-brand-secondary-button-border);\n --coras-color-secondary-button-hover: var(--coras-brand-secondary-button-hover);\n --coras-color-secondary-button-pressed: var(--coras-brand-secondary-button-pressed);\n --coras-color-secondary-button-text: var(--coras-brand-secondary-button-text);\n --coras-color-text-button: var(--coras-brand-text-button);\n --coras-color-link: var(--coras-brand-link);\n --coras-color-icon: var(--coras-brand-icon);\n --coras-color-card-border: var(--coras-brand-card-border);\n --coras-color-divider: var(--coras-brand-divider);\n --coras-color-field-border: var(--coras-brand-field-border);\n --coras-color-footer-border: var(--coras-brand-footer-border);\n --coras-color-focus-ring: var(--coras-brand-focus-ring);\n --coras-color-scrim: var(--coras-brand-scrim);\n --coras-font-family-sans: var(--coras-brand-font);\n --coras-font-family-heading: var(--coras-brand-heading-font);\n --coras-font-size-xxs: 0.625rem;\n --coras-font-size-xs: 0.75rem;\n --coras-font-size-sm: 0.875rem;\n --coras-font-size-base: 1rem;\n --coras-font-size-lg: 1.125rem;\n --coras-font-size-xl: 1.25rem;\n --coras-font-size-2xl: 1.5rem;\n --coras-font-size-3xl: 2.25rem;\n --coras-font-size-4xl: 3rem;\n --coras-font-size-5xl: 3.5rem;\n --coras-font-size-title: calc(var(--coras-font-size-3xl) * var(--coras-brand-heading-scale));\n --coras-font-size-heading: calc(var(--coras-font-size-2xl) * var(--coras-brand-heading-scale));\n --coras-font-weight-light: 300;\n --coras-font-weight-normal: 400;\n --coras-font-weight-medium: 500;\n --coras-font-weight-semibold: 600;\n --coras-font-weight-bold: 700;\n --coras-radius-none: 0;\n --coras-radius-xs: calc(var(--coras-brand-radius) / 6);\n --coras-radius-sm: calc(var(--coras-brand-radius) / 3);\n --coras-radius-md: calc(var(--coras-brand-radius) * 2 / 3);\n --coras-radius-lg: var(--coras-brand-radius);\n --coras-radius-xl: calc(var(--coras-brand-radius) * 7 / 6);\n --coras-radius-2xl: calc(var(--coras-brand-radius) * 4 / 3);\n --coras-radius-full: 9999px;\n --coras-radius-control: 0.25rem;\n --coras-radius-field: var(--coras-brand-field-radius);\n --coras-radius-button: var(--coras-brand-button-radius);\n --coras-radius-chip: var(--coras-brand-chip-radius);\n --coras-radius-search: var(--coras-brand-search-radius);\n --coras-shadow-sm: var(--coras-brand-soft-shadow);\n --coras-shadow-md: var(--coras-brand-button-shadow);\n --coras-shadow-lg: var(--coras-brand-card-shadow);\n --coras-shadow-top: 1px -4px 8px 4px rgba(0, 0, 0, 0.03);\n --coras-shadow-strong: 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);\n --coras-page-max-width: 950px;\n --coras-container-max-width: 1368px;\n --coras-footer-max-width: 1073px;\n --coras-z-index-overlay: 1000;\n --coras-navbar-padding: 1rem;\n --coras-content-padding: 0 1rem;\n --coras-footer-padding: 4rem 2rem;\n }\n}\n\n@layer coras.components {\n :where([data-coras-root], .coras-theme) {\n --coras-base-text-color: var(--coras-color-text);\n --coras-navbar-background: var(--coras-brand-navbar-background);\n --coras-navbar-background-image: var(--coras-brand-navbar-background-image);\n --coras-navbar-background-image-dark: var(--coras-brand-navbar-background-image-dark, var(--coras-brand-navbar-background-image));\n --coras-navbar-text-color: var(--coras-brand-navbar-text);\n --coras-navbar-border-bottom: 1px solid var(--coras-brand-navbar-border);\n --coras-navbar-shadow: var(--coras-brand-navbar-shadow);\n --coras-navbar-icon-color: var(--coras-brand-navbar-icon);\n --coras-navbar-logo-height: var(--coras-brand-logo-height);\n --coras-footer-background-color: var(--coras-brand-footer-background);\n --coras-footer-background-image: var(--coras-brand-footer-background-image);\n --coras-footer-background-image-dark: var(--coras-brand-footer-background-image-dark, var(--coras-brand-footer-background-image));\n --coras-footer-text-color: var(--coras-brand-footer-text);\n --coras-footer-link-color: var(--coras-brand-footer-link);\n --coras-footer-border-top: 1px solid var(--coras-color-footer-border);\n --coras-footer-padding-bottom: var(--coras-brand-footer-padding-bottom);\n --coras-button-primary-background: var(--coras-color-primary-button);\n --coras-button-primary-text-color: var(--coras-color-primary-button-text);\n --coras-button-primary-background-hover: var(--coras-color-primary-button-hover);\n --coras-button-primary-background-active: var(--coras-color-primary-button-pressed);\n --coras-button-primary-border-color: var(--coras-color-primary-button-border);\n --coras-button-secondary-border-color: var(--coras-color-secondary-button-border);\n --coras-input-field-background-color: var(--coras-color-field);\n --coras-basket-accent-color: var(--coras-brand-secondary);\n }\n}\n\n@layer coras.components {\n :where([data-coras-root]) {\n container: coras-page / inline-size;\n max-width: 100%;\n background-color: var(--coras-page-background, transparent);\n color: var(--coras-base-text-color);\n }\n :where([data-coras-root]) > *:where(:not(style)) {\n display: block;\n fill: var(--coras-color-icon);\n }\n}\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
// CSS-first token system as a string for runtime adoption (see tokens.ts).
|
|
4
|
-
export const CORAS_TOKENS_CSS = "/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */\n/* CSS-first four-tier token system (plan F-004, P-051..P-055). */\n\n@layer coras.palette, coras.brand, coras.semantic, coras.components;\n\n@property --coras-brand-primary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-page-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-body-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-focus-ring {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-card-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #fcfcff;\n}\n@property --coras-brand-field-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-menu-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-main-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-text-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-button-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-chip-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-navbar-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-navbar-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-border {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-footer-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #e6e6e6;\n}\n@property --coras-brand-footer-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-footer-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-error {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #c9224a;\n}\n@property --coras-brand-success {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #00ad8f;\n}\n@property --coras-brand-warning {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ed8f1c;\n}\n@property --coras-brand-info {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #670c93;\n}\n\n@layer coras.palette {\n :where([data-coras-root], .coras-theme) {\n --coras-palette-primary-50: #fcfcff;\n --coras-palette-primary-100: #fbfbff;\n --coras-palette-primary-200: #eef0ff;\n --coras-palette-primary-300: #dde1ff;\n --coras-palette-primary-400: #5468ff;\n --coras-palette-primary-500: #4657d4;\n --coras-palette-primary-700: #323e99;\n --coras-palette-secondary-50: #e8e8ec;\n --coras-palette-secondary-100: #d0d2da;\n --coras-palette-secondary-200: #b9bbc7;\n --coras-palette-secondary-300: #a2a4b4;\n --coras-palette-secondary-400: #1c2355;\n --coras-palette-secondary-500: #161c44;\n --coras-palette-secondary-700: #121636;\n --coras-palette-neutral-50: #f5f5f5;\n --coras-palette-neutral-100: #eeeeee;\n --coras-palette-neutral-200: #e6e6e6;\n --coras-palette-neutral-300: #dddddd;\n --coras-palette-neutral-400: #cccccc;\n --coras-palette-neutral-500: #aaaaaa;\n --coras-palette-neutral-600: #888888;\n --coras-palette-neutral-700: #666666;\n --coras-palette-neutral-800: #444444;\n --coras-palette-neutral-900: #292929;\n --coras-palette-error-50: #fae9ed;\n --coras-palette-error-500: #c9224a;\n --coras-palette-error-700: #a11b3b;\n --coras-palette-error-900: #79142c;\n --coras-palette-info-50: #f0e7f4;\n --coras-palette-info-500: #670c93;\n --coras-palette-info-700: #520a76;\n --coras-palette-info-900: #3e0758;\n --coras-palette-success-50: #e6f7f4;\n --coras-palette-success-500: #00ad8f;\n --coras-palette-success-700: #008a72;\n --coras-palette-success-900: #006856;\n --coras-palette-warning-50: #fdf4e8;\n --coras-palette-warning-500: #ed8f1c;\n --coras-palette-warning-700: #be7216;\n --coras-palette-warning-900: #8e5611;\n --coras-palette-pink-500: #ff2d55;\n --coras-palette-black: #000000;\n --coras-palette-white: #ffffff;\n }\n}\n\n@layer coras.brand {\n :where([data-coras-root], .coras-theme) {\n color-scheme: light;\n --coras-brand-primary: var(--coras-palette-primary-500);\n --coras-brand-secondary: var(--coras-palette-secondary-500);\n --coras-brand-page-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-text: light-dark(var(--coras-palette-secondary-500), #ffffff);\n --coras-brand-text-muted: light-dark(var(--coras-palette-neutral-600), #cccccc);\n --coras-brand-link: var(--coras-brand-text-button);\n --coras-brand-body-icon: var(--coras-brand-text);\n --coras-brand-focus-ring: var(--coras-brand-primary);\n --coras-brand-scrim: var(--coras-palette-black);\n --coras-brand-card-background: light-dark(var(--coras-palette-primary-50), #191c22);\n --coras-brand-card-border: light-dark(var(--coras-palette-neutral-200), #444444);\n --coras-brand-field-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-field-border: light-dark(var(--coras-palette-neutral-400), #aaaaaa);\n --coras-brand-menu-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-menu-border: var(--coras-brand-card-border);\n --coras-brand-divider: light-dark(var(--coras-palette-neutral-200), #292929);\n --coras-brand-card-shadow: 0px 24px 24px rgba(0, 0, 0, 0.04);\n --coras-brand-soft-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\n --coras-brand-main-button: var(--coras-brand-primary);\n --coras-brand-main-button-text: #ffffff;\n --coras-brand-main-button-hover: light-dark(#3f4ebf, #5968d8);\n --coras-brand-main-button-pressed: light-dark(#3947ae, #6775dc);\n --coras-brand-secondary-button: var(--coras-brand-secondary);\n --coras-brand-secondary-button-text: #ffffff;\n --coras-brand-secondary-button-hover: light-dark(#14193d, #2d3357);\n --coras-brand-secondary-button-pressed: light-dark(#121738, #404566);\n --coras-brand-text-button: light-dark(var(--coras-brand-primary), #6279f9);\n --coras-brand-main-button-border: transparent;\n --coras-brand-secondary-button-border: transparent;\n --coras-brand-disabled: light-dark(var(--coras-palette-neutral-500), #cccccc);\n --coras-brand-button-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n --coras-brand-button-hover-light: 20%;\n --coras-brand-button-hover-dark: 20%;\n --coras-brand-radius: 1.5rem;\n --coras-brand-button-radius: var(--coras-brand-radius);\n --coras-brand-chip-radius: var(--coras-brand-radius);\n --coras-brand-field-radius: 0.5rem;\n --coras-brand-search-radius: 100px;\n --coras-brand-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --coras-brand-heading-font: var(--coras-brand-font);\n --coras-brand-heading-scale: 1;\n --coras-brand-logo-height: 2rem;\n --coras-brand-navbar-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-navbar-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-navbar-icon: var(--coras-brand-navbar-text);\n --coras-brand-navbar-border: var(--coras-brand-navbar-background);\n --coras-brand-navbar-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04);\n --coras-brand-footer-background: light-dark(var(--coras-palette-neutral-200), #191c22);\n --coras-brand-footer-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-footer-link: var(--coras-brand-footer-text);\n --coras-brand-footer-border: var(--coras-brand-footer-background);\n --coras-brand-footer-padding-bottom: 2rem;\n --coras-brand-error: light-dark(var(--coras-palette-error-500), #f5748a);\n --coras-brand-error-background: light-dark(var(--coras-palette-error-50), #442e36);\n --coras-brand-success: light-dark(var(--coras-palette-success-500), #34d8b4);\n --coras-brand-success-background: light-dark(var(--coras-palette-success-50), #26403f);\n --coras-brand-warning: light-dark(var(--coras-palette-warning-500), #f4a93c);\n --coras-brand-warning-background: light-dark(var(--coras-palette-warning-50), #43382e);\n --coras-brand-info: light-dark(var(--coras-palette-info-500), #ba86e1);\n --coras-brand-info-background: light-dark(var(--coras-palette-info-50), #373045);\n --coras-brand-primary-tint: light-dark(var(--coras-palette-primary-50), #141823);\n --coras-brand-secondary-tint: light-dark(var(--coras-palette-secondary-50), #10131a);\n --coras-brand-neutral-50: var(--coras-palette-neutral-50);\n --coras-brand-neutral-100: var(--coras-palette-neutral-100);\n --coras-brand-neutral-200: var(--coras-palette-neutral-200);\n --coras-brand-neutral-300: var(--coras-palette-neutral-300);\n --coras-brand-neutral-400: var(--coras-palette-neutral-400);\n --coras-brand-neutral-500: var(--coras-palette-neutral-500);\n --coras-brand-neutral-600: var(--coras-palette-neutral-600);\n --coras-brand-neutral-700: var(--coras-palette-neutral-700);\n --coras-brand-neutral-800: var(--coras-palette-neutral-800);\n --coras-brand-neutral-900: var(--coras-palette-neutral-900);\n }\n}\n\n@layer coras.semantic {\n :where([data-coras-root], .coras-theme) {\n --coras-color-primary: var(--coras-brand-primary);\n --coras-color-primary-tint: var(--coras-brand-primary-tint);\n --coras-color-secondary: var(--coras-brand-secondary);\n --coras-color-secondary-tint: var(--coras-brand-secondary-tint);\n --coras-color-error: var(--coras-brand-error);\n --coras-color-error-background: var(--coras-brand-error-background);\n --coras-color-success: var(--coras-brand-success);\n --coras-color-success-background: var(--coras-brand-success-background);\n --coras-color-warning: var(--coras-brand-warning);\n --coras-color-warning-background: var(--coras-brand-warning-background);\n --coras-color-info: var(--coras-brand-info);\n --coras-color-info-background: var(--coras-brand-info-background);\n --coras-color-neutral-50: light-dark(var(--coras-brand-neutral-50), var(--coras-brand-neutral-900));\n --coras-color-neutral-100: light-dark(var(--coras-brand-neutral-100), var(--coras-brand-neutral-800));\n --coras-color-neutral-200: light-dark(var(--coras-brand-neutral-200), var(--coras-brand-neutral-700));\n --coras-color-neutral-300: light-dark(var(--coras-brand-neutral-300), var(--coras-brand-neutral-600));\n --coras-color-neutral-400: light-dark(var(--coras-brand-neutral-400), var(--coras-brand-neutral-500));\n --coras-color-neutral-500: light-dark(var(--coras-brand-neutral-500), var(--coras-brand-neutral-400));\n --coras-color-neutral-600: light-dark(var(--coras-brand-neutral-600), var(--coras-brand-neutral-300));\n --coras-color-neutral-700: light-dark(var(--coras-brand-neutral-700), var(--coras-brand-neutral-200));\n --coras-color-neutral-800: light-dark(var(--coras-brand-neutral-800), var(--coras-brand-neutral-100));\n --coras-color-neutral-900: light-dark(var(--coras-brand-neutral-900), var(--coras-brand-neutral-50));\n --coras-color-background: var(--coras-brand-page-background);\n --coras-color-card: var(--coras-brand-card-background);\n --coras-color-card-sunken: light-dark(var(--coras-brand-neutral-50), #0b0d10);\n --coras-color-card-hover: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-card-active: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-active));\n --coras-color-card-muted: light-dark(color-mix(in srgb, var(--coras-brand-neutral-200) 35%, var(--coras-palette-white)), color-mix(in srgb, var(--coras-palette-white) 5%, transparent));\n --coras-color-field: var(--coras-brand-field-background);\n --coras-color-field-hover: color-mix(in srgb, var(--coras-color-field), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-menu: var(--coras-brand-menu-background);\n --coras-color-menu-border: var(--coras-brand-menu-border);\n --coras-color-menu-hover: color-mix(in srgb, var(--coras-color-menu), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-text: var(--coras-brand-text);\n --coras-color-text-primary: var(--coras-brand-text);\n --coras-color-text-muted: var(--coras-brand-text-muted);\n --coras-color-text-disabled: var(--coras-brand-disabled);\n --coras-state-overlay: light-dark(#000, #fff);\n --coras-state-hover: 10%;\n --coras-state-active: 18%;\n --coras-color-main-button: var(--coras-brand-main-button);\n --coras-color-main-button-hover: var(--coras-brand-main-button-hover);\n --coras-color-main-button-pressed: var(--coras-brand-main-button-pressed);\n --coras-color-main-button-text: var(--coras-brand-main-button-text);\n --coras-color-main-button-border: var(--coras-brand-main-button-border);\n --coras-color-secondary-button: var(--coras-brand-secondary-button);\n --coras-color-secondary-button-border: var(--coras-brand-secondary-button-border);\n --coras-color-secondary-button-hover: var(--coras-brand-secondary-button-hover);\n --coras-color-secondary-button-pressed: var(--coras-brand-secondary-button-pressed);\n --coras-color-secondary-button-text: var(--coras-brand-secondary-button-text);\n --coras-color-text-button: var(--coras-brand-text-button);\n --coras-color-link: var(--coras-brand-link);\n --coras-color-icon: var(--coras-brand-body-icon);\n --coras-color-card-border: var(--coras-brand-card-border);\n --coras-color-divider: var(--coras-brand-divider);\n --coras-color-field-border: var(--coras-brand-field-border);\n --coras-color-footer-border: var(--coras-brand-footer-border);\n --coras-color-focus-ring: var(--coras-brand-focus-ring);\n --coras-color-scrim: var(--coras-brand-scrim);\n --coras-font-family-sans: var(--coras-brand-font);\n --coras-font-family-heading: var(--coras-brand-heading-font);\n --coras-font-size-xxs: 0.625rem;\n --coras-font-size-xs: 0.75rem;\n --coras-font-size-sm: 0.875rem;\n --coras-font-size-base: 1rem;\n --coras-font-size-lg: 1.125rem;\n --coras-font-size-xl: 1.25rem;\n --coras-font-size-2xl: 1.5rem;\n --coras-font-size-3xl: 2.25rem;\n --coras-font-size-4xl: 3rem;\n --coras-font-size-5xl: 3.5rem;\n --coras-font-size-title: calc(var(--coras-font-size-3xl) * var(--coras-brand-heading-scale));\n --coras-font-size-heading: calc(var(--coras-font-size-2xl) * var(--coras-brand-heading-scale));\n --coras-font-weight-light: 300;\n --coras-font-weight-normal: 400;\n --coras-font-weight-medium: 500;\n --coras-font-weight-semibold: 600;\n --coras-font-weight-bold: 700;\n --coras-radius-none: 0;\n --coras-radius-xs: calc(var(--coras-brand-radius) / 6);\n --coras-radius-sm: calc(var(--coras-brand-radius) / 3);\n --coras-radius-md: calc(var(--coras-brand-radius) * 2 / 3);\n --coras-radius-lg: var(--coras-brand-radius);\n --coras-radius-xl: calc(var(--coras-brand-radius) * 7 / 6);\n --coras-radius-2xl: calc(var(--coras-brand-radius) * 4 / 3);\n --coras-radius-full: 9999px;\n --coras-radius-control: 0.25rem;\n --coras-radius-field: var(--coras-brand-field-radius);\n --coras-radius-button: var(--coras-brand-button-radius);\n --coras-radius-chip: var(--coras-brand-chip-radius);\n --coras-radius-search: var(--coras-brand-search-radius);\n --coras-shadow-sm: var(--coras-brand-soft-shadow);\n --coras-shadow-md: var(--coras-brand-button-shadow);\n --coras-shadow-lg: var(--coras-brand-card-shadow);\n --coras-shadow-top: 1px -4px 8px 4px rgba(0, 0, 0, 0.03);\n --coras-shadow-strong: 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);\n --coras-page-max-width: 950px;\n --coras-container-max-width: 1368px;\n --coras-footer-max-width: 1073px;\n --coras-z-index-overlay: 1000;\n --coras-navbar-padding: 1rem;\n --coras-content-padding: 0 1rem;\n --coras-footer-padding: 4rem 2rem;\n }\n}\n\n@layer coras.components {\n :where([data-coras-root], .coras-theme) {\n --coras-base-text-color: var(--coras-color-text);\n --coras-navbar-background: var(--coras-brand-navbar-background);\n --coras-navbar-text-color: var(--coras-brand-navbar-text);\n --coras-navbar-border-bottom: 1px solid var(--coras-brand-navbar-border);\n --coras-navbar-shadow: var(--coras-brand-navbar-shadow);\n --coras-navbar-icon-color: var(--coras-brand-navbar-icon);\n --coras-navbar-logo-height: var(--coras-brand-logo-height);\n --coras-footer-background-color: var(--coras-brand-footer-background);\n --coras-footer-text-color: var(--coras-brand-footer-text);\n --coras-footer-link-color: var(--coras-brand-footer-link);\n --coras-footer-border-top: 1px solid var(--coras-color-footer-border);\n --coras-footer-padding-bottom: var(--coras-brand-footer-padding-bottom);\n --coras-button-primary-background: var(--coras-color-main-button);\n --coras-button-primary-text-color: var(--coras-color-main-button-text);\n --coras-button-primary-background-hover: var(--coras-color-main-button-hover);\n --coras-button-primary-background-active: var(--coras-color-main-button-pressed);\n --coras-button-primary-border-color: var(--coras-color-main-button-border);\n --coras-button-secondary-border-color: var(--coras-color-secondary-button-border);\n --coras-input-field-background-color: var(--coras-color-field);\n --coras-basket-accent-color: var(--coras-brand-secondary);\n }\n}\n\n@layer coras.components {\n :where([data-coras-root]) {\n container: coras-page / inline-size;\n max-width: 100%;\n background-color: var(--coras-page-background, transparent);\n color: var(--coras-base-text-color);\n }\n :where([data-coras-root]) > *:where(:not(style)) {\n display: block;\n fill: var(--coras-color-icon);\n }\n}\n";
|
|
4
|
+
export const CORAS_TOKENS_CSS = "/* GENERATED by scripts/generate-tokens.mjs - do not edit by hand. */\n/* CSS-first four-tier token system (plan F-004, P-051..P-055). */\n\n@layer coras.palette, coras.brand, coras.semantic, coras.components;\n\n@property --coras-brand-primary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-page-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-focus-ring {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-card-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #fcfcff;\n}\n@property --coras-brand-field-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-menu-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-primary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-secondary-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #161c44;\n}\n@property --coras-brand-text-button {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #4657d4;\n}\n@property --coras-brand-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-button-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-chip-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 24px;\n}\n@property --coras-brand-navbar-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-navbar-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-icon {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-navbar-border {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ffffff;\n}\n@property --coras-brand-footer-background {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #e6e6e6;\n}\n@property --coras-brand-footer-text {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-footer-link {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #000000;\n}\n@property --coras-brand-error {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #c9224a;\n}\n@property --coras-brand-success {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #00ad8f;\n}\n@property --coras-brand-warning {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #ed8f1c;\n}\n@property --coras-brand-info {\n syntax: \"<color>\";\n inherits: true;\n initial-value: #670c93;\n}\n\n@layer coras.palette {\n :where([data-coras-root], .coras-theme) {\n --coras-palette-primary-50: #fcfcff;\n --coras-palette-primary-100: #fbfbff;\n --coras-palette-primary-200: #eef0ff;\n --coras-palette-primary-300: #dde1ff;\n --coras-palette-primary-400: #5468ff;\n --coras-palette-primary-500: #4657d4;\n --coras-palette-primary-700: #323e99;\n --coras-palette-secondary-50: #e8e8ec;\n --coras-palette-secondary-100: #d0d2da;\n --coras-palette-secondary-200: #b9bbc7;\n --coras-palette-secondary-300: #a2a4b4;\n --coras-palette-secondary-400: #1c2355;\n --coras-palette-secondary-500: #161c44;\n --coras-palette-secondary-700: #121636;\n --coras-palette-neutral-50: #f5f5f5;\n --coras-palette-neutral-100: #eeeeee;\n --coras-palette-neutral-200: #e6e6e6;\n --coras-palette-neutral-300: #dddddd;\n --coras-palette-neutral-400: #cccccc;\n --coras-palette-neutral-500: #aaaaaa;\n --coras-palette-neutral-600: #888888;\n --coras-palette-neutral-700: #666666;\n --coras-palette-neutral-800: #444444;\n --coras-palette-neutral-900: #292929;\n --coras-palette-error-50: #fae9ed;\n --coras-palette-error-500: #c9224a;\n --coras-palette-error-700: #a11b3b;\n --coras-palette-error-900: #79142c;\n --coras-palette-info-50: #f0e7f4;\n --coras-palette-info-500: #670c93;\n --coras-palette-info-700: #520a76;\n --coras-palette-info-900: #3e0758;\n --coras-palette-success-50: #e6f7f4;\n --coras-palette-success-500: #00ad8f;\n --coras-palette-success-700: #008a72;\n --coras-palette-success-900: #006856;\n --coras-palette-warning-50: #fdf4e8;\n --coras-palette-warning-500: #ed8f1c;\n --coras-palette-warning-700: #be7216;\n --coras-palette-warning-900: #8e5611;\n --coras-palette-pink-500: #ff2d55;\n --coras-palette-black: #000000;\n --coras-palette-white: #ffffff;\n }\n}\n\n@layer coras.brand {\n :where([data-coras-root], .coras-theme) {\n color-scheme: light;\n --coras-brand-primary: var(--coras-palette-primary-500);\n --coras-brand-secondary: var(--coras-palette-secondary-500);\n --coras-brand-page-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-text: light-dark(var(--coras-palette-secondary-500), #ffffff);\n --coras-brand-text-muted: light-dark(var(--coras-palette-neutral-600), #cccccc);\n --coras-brand-link: var(--coras-brand-text-button);\n --coras-brand-icon: var(--coras-brand-text);\n --coras-brand-focus-ring: var(--coras-brand-primary);\n --coras-brand-scrim: var(--coras-palette-black);\n --coras-brand-card-background: light-dark(var(--coras-palette-primary-50), #191c22);\n --coras-brand-card-border: light-dark(var(--coras-palette-neutral-200), #444444);\n --coras-brand-field-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-field-border: light-dark(var(--coras-palette-neutral-400), #aaaaaa);\n --coras-brand-menu-background: light-dark(var(--coras-brand-page-background), #101216);\n --coras-brand-menu-border: var(--coras-brand-card-border);\n --coras-brand-divider: light-dark(var(--coras-palette-neutral-200), #292929);\n --coras-brand-card-shadow: 0px 24px 24px rgba(0, 0, 0, 0.04);\n --coras-brand-soft-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\n --coras-brand-primary-button: var(--coras-brand-primary);\n --coras-brand-primary-button-text: #ffffff;\n --coras-brand-primary-button-hover: light-dark(#3f4ebf, #5968d8);\n --coras-brand-primary-button-pressed: light-dark(#3947ae, #6775dc);\n --coras-brand-secondary-button: var(--coras-brand-secondary);\n --coras-brand-secondary-button-text: #ffffff;\n --coras-brand-secondary-button-hover: light-dark(#14193d, #2d3357);\n --coras-brand-secondary-button-pressed: light-dark(#121738, #404566);\n --coras-brand-text-button: light-dark(var(--coras-brand-primary), #6279f9);\n --coras-brand-primary-button-border: transparent;\n --coras-brand-secondary-button-border: transparent;\n --coras-brand-disabled: light-dark(var(--coras-palette-neutral-500), #cccccc);\n --coras-brand-button-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n --coras-brand-button-hover-on-light-fill: 20%;\n --coras-brand-button-hover-on-dark-fill: 20%;\n --coras-brand-radius: 1.5rem;\n --coras-brand-button-radius: var(--coras-brand-radius);\n --coras-brand-chip-radius: var(--coras-brand-radius);\n --coras-brand-field-radius: 0.5rem;\n --coras-brand-search-radius: 100px;\n --coras-brand-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --coras-brand-heading-font: var(--coras-brand-font);\n --coras-brand-heading-scale: 1;\n --coras-brand-logo-height: 2rem;\n --coras-brand-navbar-background: light-dark(var(--coras-palette-white), #101216);\n --coras-brand-navbar-background-image: none;\n --coras-brand-navbar-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-navbar-icon: var(--coras-brand-navbar-text);\n --coras-brand-navbar-border: var(--coras-brand-navbar-background);\n --coras-brand-navbar-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04);\n --coras-brand-footer-background: light-dark(var(--coras-palette-neutral-200), #191c22);\n --coras-brand-footer-background-image: none;\n --coras-brand-footer-text: light-dark(var(--coras-palette-black), #ffffff);\n --coras-brand-footer-link: var(--coras-brand-footer-text);\n --coras-brand-footer-border: var(--coras-brand-footer-background);\n --coras-brand-footer-padding-bottom: 2rem;\n --coras-brand-error: light-dark(var(--coras-palette-error-500), #f5748a);\n --coras-brand-error-background: light-dark(var(--coras-palette-error-50), #442e36);\n --coras-brand-success: light-dark(var(--coras-palette-success-500), #34d8b4);\n --coras-brand-success-background: light-dark(var(--coras-palette-success-50), #26403f);\n --coras-brand-warning: light-dark(var(--coras-palette-warning-500), #f4a93c);\n --coras-brand-warning-background: light-dark(var(--coras-palette-warning-50), #43382e);\n --coras-brand-info: light-dark(var(--coras-palette-info-500), #ba86e1);\n --coras-brand-info-background: light-dark(var(--coras-palette-info-50), #373045);\n --coras-brand-primary-tint: light-dark(var(--coras-palette-primary-50), #141823);\n --coras-brand-secondary-tint: light-dark(var(--coras-palette-secondary-50), #10131a);\n --coras-brand-neutral-50: var(--coras-palette-neutral-50);\n --coras-brand-neutral-100: var(--coras-palette-neutral-100);\n --coras-brand-neutral-200: var(--coras-palette-neutral-200);\n --coras-brand-neutral-300: var(--coras-palette-neutral-300);\n --coras-brand-neutral-400: var(--coras-palette-neutral-400);\n --coras-brand-neutral-500: var(--coras-palette-neutral-500);\n --coras-brand-neutral-600: var(--coras-palette-neutral-600);\n --coras-brand-neutral-700: var(--coras-palette-neutral-700);\n --coras-brand-neutral-800: var(--coras-palette-neutral-800);\n --coras-brand-neutral-900: var(--coras-palette-neutral-900);\n }\n}\n\n@layer coras.semantic {\n :where([data-coras-root], .coras-theme) {\n --coras-color-primary: var(--coras-brand-primary);\n --coras-color-primary-tint: var(--coras-brand-primary-tint);\n --coras-color-secondary: var(--coras-brand-secondary);\n --coras-color-secondary-tint: var(--coras-brand-secondary-tint);\n --coras-color-error: var(--coras-brand-error);\n --coras-color-error-background: var(--coras-brand-error-background);\n --coras-color-success: var(--coras-brand-success);\n --coras-color-success-background: var(--coras-brand-success-background);\n --coras-color-warning: var(--coras-brand-warning);\n --coras-color-warning-background: var(--coras-brand-warning-background);\n --coras-color-info: var(--coras-brand-info);\n --coras-color-info-background: var(--coras-brand-info-background);\n --coras-color-neutral-50: light-dark(var(--coras-brand-neutral-50), var(--coras-brand-neutral-900));\n --coras-color-neutral-100: light-dark(var(--coras-brand-neutral-100), var(--coras-brand-neutral-800));\n --coras-color-neutral-200: light-dark(var(--coras-brand-neutral-200), var(--coras-brand-neutral-700));\n --coras-color-neutral-300: light-dark(var(--coras-brand-neutral-300), var(--coras-brand-neutral-600));\n --coras-color-neutral-400: light-dark(var(--coras-brand-neutral-400), var(--coras-brand-neutral-500));\n --coras-color-neutral-500: light-dark(var(--coras-brand-neutral-500), var(--coras-brand-neutral-400));\n --coras-color-neutral-600: light-dark(var(--coras-brand-neutral-600), var(--coras-brand-neutral-300));\n --coras-color-neutral-700: light-dark(var(--coras-brand-neutral-700), var(--coras-brand-neutral-200));\n --coras-color-neutral-800: light-dark(var(--coras-brand-neutral-800), var(--coras-brand-neutral-100));\n --coras-color-neutral-900: light-dark(var(--coras-brand-neutral-900), var(--coras-brand-neutral-50));\n --coras-color-background: var(--coras-brand-page-background);\n --coras-color-card: var(--coras-brand-card-background);\n --coras-color-card-sunken: light-dark(var(--coras-brand-neutral-50), #0b0d10);\n --coras-color-card-hover: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-card-active: color-mix(in srgb, var(--coras-color-card), var(--coras-state-overlay) var(--coras-state-active));\n --coras-color-card-muted: light-dark(color-mix(in srgb, var(--coras-brand-neutral-200) 35%, var(--coras-palette-white)), color-mix(in srgb, var(--coras-palette-white) 5%, transparent));\n --coras-color-field: var(--coras-brand-field-background);\n --coras-color-field-hover: color-mix(in srgb, var(--coras-color-field), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-menu: var(--coras-brand-menu-background);\n --coras-color-menu-border: var(--coras-brand-menu-border);\n --coras-color-menu-hover: color-mix(in srgb, var(--coras-color-menu), var(--coras-state-overlay) var(--coras-state-hover));\n --coras-color-text: var(--coras-brand-text);\n --coras-color-text-primary: var(--coras-brand-text);\n --coras-color-text-muted: var(--coras-brand-text-muted);\n --coras-color-text-disabled: var(--coras-brand-disabled);\n --coras-state-overlay: light-dark(#000, #fff);\n --coras-state-hover: 10%;\n --coras-state-active: 18%;\n --coras-color-primary-button: var(--coras-brand-primary-button);\n --coras-color-primary-button-hover: var(--coras-brand-primary-button-hover);\n --coras-color-primary-button-pressed: var(--coras-brand-primary-button-pressed);\n --coras-color-primary-button-text: var(--coras-brand-primary-button-text);\n --coras-color-primary-button-border: var(--coras-brand-primary-button-border);\n --coras-color-secondary-button: var(--coras-brand-secondary-button);\n --coras-color-secondary-button-border: var(--coras-brand-secondary-button-border);\n --coras-color-secondary-button-hover: var(--coras-brand-secondary-button-hover);\n --coras-color-secondary-button-pressed: var(--coras-brand-secondary-button-pressed);\n --coras-color-secondary-button-text: var(--coras-brand-secondary-button-text);\n --coras-color-text-button: var(--coras-brand-text-button);\n --coras-color-link: var(--coras-brand-link);\n --coras-color-icon: var(--coras-brand-icon);\n --coras-color-card-border: var(--coras-brand-card-border);\n --coras-color-divider: var(--coras-brand-divider);\n --coras-color-field-border: var(--coras-brand-field-border);\n --coras-color-footer-border: var(--coras-brand-footer-border);\n --coras-color-focus-ring: var(--coras-brand-focus-ring);\n --coras-color-scrim: var(--coras-brand-scrim);\n --coras-font-family-sans: var(--coras-brand-font);\n --coras-font-family-heading: var(--coras-brand-heading-font);\n --coras-font-size-xxs: 0.625rem;\n --coras-font-size-xs: 0.75rem;\n --coras-font-size-sm: 0.875rem;\n --coras-font-size-base: 1rem;\n --coras-font-size-lg: 1.125rem;\n --coras-font-size-xl: 1.25rem;\n --coras-font-size-2xl: 1.5rem;\n --coras-font-size-3xl: 2.25rem;\n --coras-font-size-4xl: 3rem;\n --coras-font-size-5xl: 3.5rem;\n --coras-font-size-title: calc(var(--coras-font-size-3xl) * var(--coras-brand-heading-scale));\n --coras-font-size-heading: calc(var(--coras-font-size-2xl) * var(--coras-brand-heading-scale));\n --coras-font-weight-light: 300;\n --coras-font-weight-normal: 400;\n --coras-font-weight-medium: 500;\n --coras-font-weight-semibold: 600;\n --coras-font-weight-bold: 700;\n --coras-radius-none: 0;\n --coras-radius-xs: calc(var(--coras-brand-radius) / 6);\n --coras-radius-sm: calc(var(--coras-brand-radius) / 3);\n --coras-radius-md: calc(var(--coras-brand-radius) * 2 / 3);\n --coras-radius-lg: var(--coras-brand-radius);\n --coras-radius-xl: calc(var(--coras-brand-radius) * 7 / 6);\n --coras-radius-2xl: calc(var(--coras-brand-radius) * 4 / 3);\n --coras-radius-full: 9999px;\n --coras-radius-control: 0.25rem;\n --coras-radius-field: var(--coras-brand-field-radius);\n --coras-radius-button: var(--coras-brand-button-radius);\n --coras-radius-chip: var(--coras-brand-chip-radius);\n --coras-radius-search: var(--coras-brand-search-radius);\n --coras-shadow-sm: var(--coras-brand-soft-shadow);\n --coras-shadow-md: var(--coras-brand-button-shadow);\n --coras-shadow-lg: var(--coras-brand-card-shadow);\n --coras-shadow-top: 1px -4px 8px 4px rgba(0, 0, 0, 0.03);\n --coras-shadow-strong: 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);\n --coras-page-max-width: 950px;\n --coras-container-max-width: 1368px;\n --coras-footer-max-width: 1073px;\n --coras-z-index-overlay: 1000;\n --coras-navbar-padding: 1rem;\n --coras-content-padding: 0 1rem;\n --coras-footer-padding: 4rem 2rem;\n }\n}\n\n@layer coras.components {\n :where([data-coras-root], .coras-theme) {\n --coras-base-text-color: var(--coras-color-text);\n --coras-navbar-background: var(--coras-brand-navbar-background);\n --coras-navbar-background-image: var(--coras-brand-navbar-background-image);\n --coras-navbar-background-image-dark: var(--coras-brand-navbar-background-image-dark, var(--coras-brand-navbar-background-image));\n --coras-navbar-text-color: var(--coras-brand-navbar-text);\n --coras-navbar-border-bottom: 1px solid var(--coras-brand-navbar-border);\n --coras-navbar-shadow: var(--coras-brand-navbar-shadow);\n --coras-navbar-icon-color: var(--coras-brand-navbar-icon);\n --coras-navbar-logo-height: var(--coras-brand-logo-height);\n --coras-footer-background-color: var(--coras-brand-footer-background);\n --coras-footer-background-image: var(--coras-brand-footer-background-image);\n --coras-footer-background-image-dark: var(--coras-brand-footer-background-image-dark, var(--coras-brand-footer-background-image));\n --coras-footer-text-color: var(--coras-brand-footer-text);\n --coras-footer-link-color: var(--coras-brand-footer-link);\n --coras-footer-border-top: 1px solid var(--coras-color-footer-border);\n --coras-footer-padding-bottom: var(--coras-brand-footer-padding-bottom);\n --coras-button-primary-background: var(--coras-color-primary-button);\n --coras-button-primary-text-color: var(--coras-color-primary-button-text);\n --coras-button-primary-background-hover: var(--coras-color-primary-button-hover);\n --coras-button-primary-background-active: var(--coras-color-primary-button-pressed);\n --coras-button-primary-border-color: var(--coras-color-primary-button-border);\n --coras-button-secondary-border-color: var(--coras-color-secondary-button-border);\n --coras-input-field-background-color: var(--coras-color-field);\n --coras-basket-accent-color: var(--coras-brand-secondary);\n }\n}\n\n@layer coras.components {\n :where([data-coras-root]) {\n container: coras-page / inline-size;\n max-width: 100%;\n background-color: var(--coras-page-background, transparent);\n color: var(--coras-base-text-color);\n }\n :where([data-coras-root]) > *:where(:not(style)) {\n display: block;\n fill: var(--coras-color-icon);\n }\n}\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type TokenControlType = "color" | "length" | "font" | "shadow" | "scale";
|
|
1
|
+
export type TokenControlType = "color" | "length" | "font" | "shadow" | "scale" | "gradient";
|
|
2
2
|
export type TokenControl = {
|
|
3
3
|
/** Matches the corresponding `CorasTheme` key. */
|
|
4
4
|
key: string;
|
|
@@ -55,8 +55,8 @@ export const TOKEN_CONTROLS = [
|
|
|
55
55
|
"description": "This follows the Text Button Colour, which itself defaults to the Primary Brand Colour. Adjust here if desired."
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
|
-
"key": "
|
|
59
|
-
"cssVar": "--coras-brand-
|
|
58
|
+
"key": "icon",
|
|
59
|
+
"cssVar": "--coras-brand-icon",
|
|
60
60
|
"type": "color",
|
|
61
61
|
"group": "Key colours",
|
|
62
62
|
"label": "Icon Colour (In Page)",
|
|
@@ -145,8 +145,8 @@ export const TOKEN_CONTROLS = [
|
|
|
145
145
|
"description": "The subtle shadow on smaller raised elements"
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
|
-
"key": "
|
|
149
|
-
"cssVar": "--coras-brand-
|
|
148
|
+
"key": "primaryButton",
|
|
149
|
+
"cssVar": "--coras-brand-primary-button",
|
|
150
150
|
"type": "color",
|
|
151
151
|
"group": "Buttons",
|
|
152
152
|
"label": "Primary Button Fill Colour",
|
|
@@ -154,8 +154,8 @@ export const TOKEN_CONTROLS = [
|
|
|
154
154
|
"description": "This defaults to the Primary Brand Colour but can be adjusted here if required"
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
|
-
"key": "
|
|
158
|
-
"cssVar": "--coras-brand-
|
|
157
|
+
"key": "primaryButtonText",
|
|
158
|
+
"cssVar": "--coras-brand-primary-button-text",
|
|
159
159
|
"type": "color",
|
|
160
160
|
"group": "Buttons",
|
|
161
161
|
"label": "Primary Button Text Colour",
|
|
@@ -190,8 +190,8 @@ export const TOKEN_CONTROLS = [
|
|
|
190
190
|
"description": "This defaults to the Primary Brand Colour. It can be adjusted here if required."
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
|
-
"key": "
|
|
194
|
-
"cssVar": "--coras-brand-
|
|
193
|
+
"key": "primaryButtonBorder",
|
|
194
|
+
"cssVar": "--coras-brand-primary-button-border",
|
|
195
195
|
"type": "color",
|
|
196
196
|
"group": "Buttons",
|
|
197
197
|
"label": "Primary Button Border",
|
|
@@ -226,8 +226,8 @@ export const TOKEN_CONTROLS = [
|
|
|
226
226
|
"description": "Default values applied. Set values to 0 if not required"
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
|
-
"key": "
|
|
230
|
-
"cssVar": "--coras-brand-button-hover-light",
|
|
229
|
+
"key": "buttonHoverOnLightFill",
|
|
230
|
+
"cssVar": "--coras-brand-button-hover-on-light-fill",
|
|
231
231
|
"type": "length",
|
|
232
232
|
"group": "Buttons",
|
|
233
233
|
"label": "On Hover - Light / Bright Fill Button",
|
|
@@ -235,8 +235,8 @@ export const TOKEN_CONTROLS = [
|
|
|
235
235
|
"description": "Strength of the black overlay applied on hover when the button fill is light. Default values applied. Adjust if desired."
|
|
236
236
|
},
|
|
237
237
|
{
|
|
238
|
-
"key": "
|
|
239
|
-
"cssVar": "--coras-brand-button-hover-dark",
|
|
238
|
+
"key": "buttonHoverOnDarkFill",
|
|
239
|
+
"cssVar": "--coras-brand-button-hover-on-dark-fill",
|
|
240
240
|
"type": "length",
|
|
241
241
|
"group": "Buttons",
|
|
242
242
|
"label": "On Hover - Dark Fill Button",
|
|
@@ -333,6 +333,15 @@ export const TOKEN_CONTROLS = [
|
|
|
333
333
|
"default": "#ffffff",
|
|
334
334
|
"description": "Navbar background (independent of the page background)"
|
|
335
335
|
},
|
|
336
|
+
{
|
|
337
|
+
"key": "navbarBackgroundImage",
|
|
338
|
+
"cssVar": "--coras-brand-navbar-background-image",
|
|
339
|
+
"type": "gradient",
|
|
340
|
+
"group": "Navigation bar",
|
|
341
|
+
"label": "Background Gradient",
|
|
342
|
+
"default": "none",
|
|
343
|
+
"description": "Optional gradient painted over the Background Colour on the web. The mobile menu, the border and emails keep the solid colour"
|
|
344
|
+
},
|
|
336
345
|
{
|
|
337
346
|
"key": "navbarText",
|
|
338
347
|
"cssVar": "--coras-brand-navbar-text",
|
|
@@ -378,6 +387,15 @@ export const TOKEN_CONTROLS = [
|
|
|
378
387
|
"default": "#e6e6e6",
|
|
379
388
|
"description": "Footer background, on the web and in emails"
|
|
380
389
|
},
|
|
390
|
+
{
|
|
391
|
+
"key": "footerBackgroundImage",
|
|
392
|
+
"cssVar": "--coras-brand-footer-background-image",
|
|
393
|
+
"type": "gradient",
|
|
394
|
+
"group": "Footer",
|
|
395
|
+
"label": "Background Gradient",
|
|
396
|
+
"default": "none",
|
|
397
|
+
"description": "Optional gradient painted over the Background Colour on the web. The border and emails keep the solid colour"
|
|
398
|
+
},
|
|
381
399
|
{
|
|
382
400
|
"key": "footerText",
|
|
383
401
|
"cssVar": "--coras-brand-footer-text",
|
|
@@ -145,8 +145,12 @@ let CorasDetailsPage = class CorasDetailsPage extends ErrorModalMixin(PointsMixi
|
|
|
145
145
|
size: 0,
|
|
146
146
|
},
|
|
147
147
|
}));
|
|
148
|
+
// A failed or empty response has no attraction to render. Returning an
|
|
149
|
+
// empty object here would complete the task, so every render branch below
|
|
150
|
+
// would dereference `attraction` on it and throw. Fail the task instead so
|
|
151
|
+
// the error modal is shown.
|
|
148
152
|
if (!result.data) {
|
|
149
|
-
|
|
153
|
+
throw new Error("Attraction data not available");
|
|
150
154
|
}
|
|
151
155
|
this.verifyDate(result.data.first_instance_date, result.data.last_instance_date, result.data.attraction.timezone);
|
|
152
156
|
this.isSingleDayAvailability = isSingleDayAvailability(result.data.attraction.sale_periods ?? null);
|
package/package.json
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=22"
|
|
22
22
|
},
|
|
23
|
-
"version": "0.
|
|
23
|
+
"version": "0.4.0",
|
|
24
24
|
"private": false,
|
|
25
25
|
"homepage": "https://embed.coras.io",
|
|
26
26
|
"bugs": {
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"typescript-eslint": "8.67.0",
|
|
105
105
|
"vite": "8.2.2",
|
|
106
106
|
"vitest": "4.1.11",
|
|
107
|
-
"@coras-io/static": "0.0.
|
|
107
|
+
"@coras-io/static": "0.0.4"
|
|
108
108
|
},
|
|
109
109
|
"dependencies": {
|
|
110
110
|
"@coinbase/cdp-core": "0.0.122",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"lit": "^3.3.3",
|
|
123
123
|
"openapi-fetch": "0.17.0",
|
|
124
124
|
"viem": "2.55.19",
|
|
125
|
-
"@coras-io/brand-tokens": "^0.
|
|
125
|
+
"@coras-io/brand-tokens": "^0.4.0"
|
|
126
126
|
},
|
|
127
127
|
"scripts": {
|
|
128
128
|
"lint": "eslint \"src/**/*.ts*\"",
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"check:styles": "node scripts/check-styles.mjs",
|
|
144
144
|
"measure:bundle": "node scripts/measure-bundle.mjs",
|
|
145
145
|
"localize:extract": "lit-localize extract",
|
|
146
|
-
"localize:build": "lit-localize build",
|
|
146
|
+
"localize:build": "lit-localize build && node scripts/decode-locale-entities.mjs",
|
|
147
147
|
"storybook": "storybook dev --no-open -p 8082",
|
|
148
148
|
"storybook:build": "storybook build --output-dir dist-storybook",
|
|
149
149
|
"storybook:test": "vitest run --config vitest.storybook.config.ts",
|