@samva/markup 0.6.0 → 0.8.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/AGENTS.md +94 -47
- package/README.md +1 -1
- package/dist/brand-DcoVkh_S.d.ts +88 -0
- package/dist/{catalog-60eaYC7b.d.ts → catalog-CKuOooB8.d.ts} +13 -15
- package/dist/{checks-DBweSIPN.js → checks-D73Xizbw.js} +414 -2
- package/dist/checks.js +1 -1
- package/dist/classes.d.ts +2 -3
- package/dist/compile-sms.d.ts +1 -1
- package/dist/compile-whatsapp.d.ts +1 -1
- package/dist/compiler.d.ts +62 -45
- package/dist/compiler.js +206 -863
- package/dist/components.d.ts +2 -2
- package/dist/{corpus-BjYMqOoY.d.ts → corpus-CPPfgAHN.d.ts} +14 -14
- package/dist/{css-COcFOT1y.d.ts → css-CS2jLID6.d.ts} +28 -2
- package/dist/email/assets.d.ts +40 -0
- package/dist/email/assets.js +63 -0
- package/dist/email/brand-footer.d.ts +34 -0
- package/dist/email/brand-footer.js +62 -0
- package/dist/email/brand.d.ts +2 -0
- package/dist/email/brand.js +148 -0
- package/dist/email/html.d.ts +2 -42
- package/dist/email/html.js +11 -0
- package/dist/email/render.d.ts +12 -5
- package/dist/email/render.js +2 -5
- package/dist/email/selection.d.ts +2 -91
- package/dist/email/stylesheets.d.ts +1 -1
- package/dist/email/stylesheets.js +3 -0
- package/dist/emit.js +2 -2
- package/dist/html-Bl9BAdqc.d.ts +42 -0
- package/dist/{ops-2aiiYO7m.js → ops-BvwqHl7V.js} +2 -2
- package/dist/ops.js +1 -1
- package/dist/{parser-CQcASEyy.d.ts → parser-t29cHLVL.d.ts} +2 -2
- package/dist/parser.d.ts +1 -1
- package/dist/parser.js +1 -2
- package/dist/registry-Dcp6QEK_.d.ts +73 -0
- package/dist/registry.d.ts +2 -42
- package/dist/{render-aaJBnsXK.js → render-vAv_4r9v.js} +174 -17
- package/dist/selection-CCArx9lU.d.ts +91 -0
- package/dist/{showcase-DGZAWn4Z.d.ts → showcase-egkusQBf.d.ts} +15 -56
- package/dist/{presets → starters}/category-mapping.d.ts +5 -5
- package/dist/{presets → starters}/category-mapping.js +5 -5
- package/dist/starters/corpus.d.ts +2 -0
- package/dist/{presets → starters}/corpus.js +15 -15
- package/dist/starters/library.d.ts +18 -0
- package/dist/starters/library.js +692 -0
- package/dist/{presets → starters}/public-gallery.d.ts +47 -47
- package/dist/{presets → starters}/public-gallery.js +92 -92
- package/dist/{presets → starters}/public-handoff.d.ts +14 -14
- package/dist/{presets → starters}/public-handoff.js +40 -40
- package/dist/{presets → starters}/public-preview-artifacts.d.ts +4 -4
- package/dist/{presets → starters}/public-preview-artifacts.js +15 -15
- package/dist/{presets → starters}/public-preview.d.ts +1 -1
- package/dist/{presets → starters}/public-preview.js +3 -3
- package/dist/starters/showcase.d.ts +2 -0
- package/dist/starters/showcase.js +335 -0
- package/dist/starters/sources.d.ts +45 -0
- package/dist/{presets → starters}/sources.js +1951 -272
- package/dist/starters/theme.d.ts +45 -0
- package/dist/starters/theme.js +77 -0
- package/dist/starters.d.ts +2 -0
- package/dist/{presets.js → starters.js} +4 -11
- package/dist/tailwind-BYq7Lo6u.js +727 -0
- package/dist/theme-css-hFqcPSar.js +587 -0
- package/dist/theme-css.d.ts +56 -15
- package/dist/theme-css.js +2 -509
- package/dist/tsx-source-instrumentation.d.ts +9 -0
- package/dist/tsx-source-instrumentation.js +20 -2
- package/dist/tsx-tracer.js +3 -3
- package/dist/unsubscribe-link-CoesnQDU.js +26 -0
- package/package.json +56 -44
- package/samva-brand.d.ts +14 -0
- package/dist/footer.d.ts +0 -66
- package/dist/footer.js +0 -93
- package/dist/presets/corpus.d.ts +0 -2
- package/dist/presets/showcase.d.ts +0 -2
- package/dist/presets/showcase.js +0 -627
- package/dist/presets/sources.d.ts +0 -38
- package/dist/presets.d.ts +0 -2
- package/dist/theme-6ApjjiBo.d.ts +0 -116
- package/dist/theme.d.ts +0 -2
- package/dist/theme.js +0 -118
- package/dist/tokens.d.ts +0 -6
- package/dist/tokens.js +0 -417
package/dist/theme-6ApjjiBo.d.ts
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
//#region src/theme.d.ts
|
|
2
|
-
interface TextToken {
|
|
3
|
-
readonly sizePx: number;
|
|
4
|
-
readonly lineHeightPx: number;
|
|
5
|
-
}
|
|
6
|
-
/** One hosted @font-face: the served woff2 src + its weight/style, and the
|
|
7
|
-
* css2 unicode-range (absent for a whole-file upload). */
|
|
8
|
-
interface FontFace {
|
|
9
|
-
readonly weight: number;
|
|
10
|
-
readonly style: "normal" | "italic";
|
|
11
|
-
readonly src: string;
|
|
12
|
-
readonly unicodeRange?: string | undefined;
|
|
13
|
-
}
|
|
14
|
-
/** The @font-face set for one font token: the family the rules declare (and that
|
|
15
|
-
* the token's inline stack leads with) plus its hosted faces. */
|
|
16
|
-
interface FontFaceSet {
|
|
17
|
-
readonly family: string;
|
|
18
|
-
readonly faces: ReadonlyArray<FontFace>;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Escape a value interpolated inside a single-quoted CSS string — a
|
|
22
|
-
* `font-family` name or a `url('…')` src. A raw `'` closes the quote early (for
|
|
23
|
-
* a src that also lets a crafted value escape the `url()`), and a raw `\` is read
|
|
24
|
-
* as a CSS escape sequence. `family` and `src` are only min-length-validated
|
|
25
|
-
* upstream, so escaping both keeps every emitted CSS string grammar-safe. Used
|
|
26
|
-
* both here (the inline `font-{name}` stack) and by the compiler's @font-face
|
|
27
|
-
* block, so an escapable family never lands unescaped in either place.
|
|
28
|
-
*
|
|
29
|
-
* The `@font-face` block lives inside a `<style>` element, and an HTML parser
|
|
30
|
-
* scans raw-text elements for the literal `</style>` end tag BEFORE any CSS
|
|
31
|
-
* parsing. So a crafted `family`/`src` containing `</style>` would close the
|
|
32
|
-
* style element and let the remainder render as HTML in the delivered email
|
|
33
|
-
* (a stored-XSS breakout). Rewriting `</` to `<\/` neutralises this: in a
|
|
34
|
-
* quoted CSS string `\/` is identical to `/`, but the HTML tokenizer no longer
|
|
35
|
-
* matches `<\/style>` as a raw-text end tag.
|
|
36
|
-
*/
|
|
37
|
-
declare const escapeCssString: (value: string) => string;
|
|
38
|
-
/** A persisted font token: the family the inline stack leads with, the fallback
|
|
39
|
-
* appended after it, and (for a self-hosted webfont) the hosted faces. The
|
|
40
|
-
* public compiler owns the single flatten transform for this shape. */
|
|
41
|
-
interface FontToken {
|
|
42
|
-
readonly family: string;
|
|
43
|
-
readonly fallback: string;
|
|
44
|
-
readonly faces?: ReadonlyArray<FontFace> | undefined;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Flatten persisted font tokens into the compiler's two font fields, so the
|
|
48
|
-
* server (apps/api) and the in-browser canvas (apps/web) produce byte-identical
|
|
49
|
-
* output from ONE transform rather than two hand-synced copies:
|
|
50
|
-
* - `fontFamilies` = the inline stack the `font-{name}` utility emits — the
|
|
51
|
-
* family quoted (multi-word-safe) then the fallback (which the picker
|
|
52
|
-
* guarantees ends in a generic, so no client is ever fontless).
|
|
53
|
-
* - `fontFaces` = the @font-face set for tokens that self-host a webfont.
|
|
54
|
-
* Tokens without `faces` (system stacks) contribute a family but no face set.
|
|
55
|
-
*/
|
|
56
|
-
declare const flattenFontTokens: (tokens: Readonly<Record<string, FontToken>>) => {
|
|
57
|
-
fontFamilies: Record<string, string>;
|
|
58
|
-
fontFaces: Record<string, FontFaceSet>;
|
|
59
|
-
};
|
|
60
|
-
interface TokenTable {
|
|
61
|
-
/** Flattened color names ("red-500", "white", "brand") → 6-digit lowercase hex. */
|
|
62
|
-
readonly colors: Readonly<Record<string, string>>;
|
|
63
|
-
/**
|
|
64
|
-
* Dark counterparts, colors namespace only (dark radius/fonts are not a
|
|
65
|
-
* thing). Only tokens with a dark pair appear; a color-family utility that
|
|
66
|
-
* resolves a paired token also emits the dark head rule automatically.
|
|
67
|
-
*/
|
|
68
|
-
readonly colorsDark: Readonly<Record<string, string>>;
|
|
69
|
-
/** px per spacing unit (`p-4` → 4 × spacingPx). */
|
|
70
|
-
readonly spacingPx: number;
|
|
71
|
-
/** text-{size} → font-size / line-height px pair. */
|
|
72
|
-
readonly text: Readonly<Record<string, TextToken>>;
|
|
73
|
-
/** leading-{name} → unitless line-height ratio. */
|
|
74
|
-
readonly leading: Readonly<Record<string, number>>;
|
|
75
|
-
/** tracking-{name} → letter-spacing em. */
|
|
76
|
-
readonly trackingEm: Readonly<Record<string, number>>;
|
|
77
|
-
/** rounded-{name} → border-radius px. */
|
|
78
|
-
readonly radiusPx: Readonly<Record<string, number>>;
|
|
79
|
-
/** font-{name} → font-weight number. */
|
|
80
|
-
readonly fontWeights: Readonly<Record<string, number>>;
|
|
81
|
-
/** font-{name} → the resolved inline font-family stack (family + fallback,
|
|
82
|
-
* guaranteed to end in a generic). */
|
|
83
|
-
readonly fontFamilies: Readonly<Record<string, string>>;
|
|
84
|
-
/** font-{name} → its @font-face set, for tokens that self-host a webfont.
|
|
85
|
-
* Tokens with no faces (system stacks) are absent. */
|
|
86
|
-
readonly fontFaces: Readonly<Record<string, FontFaceSet>>;
|
|
87
|
-
/** max-w-{name} → px. */
|
|
88
|
-
readonly containerPx: Readonly<Record<string, number>>;
|
|
89
|
-
}
|
|
90
|
-
interface TokenOverrides {
|
|
91
|
-
readonly colors?: Readonly<Record<string, string>> | undefined;
|
|
92
|
-
readonly colorsDark?: Readonly<Record<string, string>> | undefined;
|
|
93
|
-
readonly spacingPx?: number | undefined;
|
|
94
|
-
readonly text?: Readonly<Record<string, TextToken>> | undefined;
|
|
95
|
-
readonly leading?: Readonly<Record<string, number>> | undefined;
|
|
96
|
-
readonly trackingEm?: Readonly<Record<string, number>> | undefined;
|
|
97
|
-
readonly radiusPx?: Readonly<Record<string, number>> | undefined;
|
|
98
|
-
readonly fontWeights?: Readonly<Record<string, number>> | undefined;
|
|
99
|
-
readonly fontFamilies?: Readonly<Record<string, string>> | undefined;
|
|
100
|
-
readonly fontFaces?: Readonly<Record<string, FontFaceSet>> | undefined;
|
|
101
|
-
readonly containerPx?: Readonly<Record<string, number>> | undefined;
|
|
102
|
-
}
|
|
103
|
-
interface ThemeLayers {
|
|
104
|
-
readonly base: TokenTable;
|
|
105
|
-
/**
|
|
106
|
-
* Ordered token-override layers, least → most specific (organization →
|
|
107
|
-
* domain → template). Each is merged onto the running table in turn, so a
|
|
108
|
-
* later layer's token wins. The caller (the settings cascade in apps/api)
|
|
109
|
-
* owns assembling this list from the effective design.
|
|
110
|
-
*/
|
|
111
|
-
readonly overrides?: ReadonlyArray<TokenOverrides> | undefined;
|
|
112
|
-
}
|
|
113
|
-
declare const resolveTokenTable: (layers: ThemeLayers) => TokenTable;
|
|
114
|
-
//#endregion
|
|
115
|
-
export { ThemeLayers as a, escapeCssString as c, TextToken as i, flattenFontTokens as l, FontFaceSet as n, TokenOverrides as o, FontToken as r, TokenTable as s, FontFace as t, resolveTokenTable as u };
|
|
116
|
-
//# sourceMappingURL=theme-6ApjjiBo.d.ts.map
|
package/dist/theme.d.ts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { a as ThemeLayers, c as escapeCssString, i as TextToken, l as flattenFontTokens, n as FontFaceSet, o as TokenOverrides, r as FontToken, s as TokenTable, t as FontFace, u as resolveTokenTable } from "./theme-6ApjjiBo.js";
|
|
2
|
-
export { FontFace, FontFaceSet, FontToken, TextToken, ThemeLayers, TokenOverrides, TokenTable, escapeCssString, flattenFontTokens, resolveTokenTable };
|
package/dist/theme.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
//#region src/theme.ts
|
|
2
|
-
/**
|
|
3
|
-
* Escape a value interpolated inside a single-quoted CSS string — a
|
|
4
|
-
* `font-family` name or a `url('…')` src. A raw `'` closes the quote early (for
|
|
5
|
-
* a src that also lets a crafted value escape the `url()`), and a raw `\` is read
|
|
6
|
-
* as a CSS escape sequence. `family` and `src` are only min-length-validated
|
|
7
|
-
* upstream, so escaping both keeps every emitted CSS string grammar-safe. Used
|
|
8
|
-
* both here (the inline `font-{name}` stack) and by the compiler's @font-face
|
|
9
|
-
* block, so an escapable family never lands unescaped in either place.
|
|
10
|
-
*
|
|
11
|
-
* The `@font-face` block lives inside a `<style>` element, and an HTML parser
|
|
12
|
-
* scans raw-text elements for the literal `</style>` end tag BEFORE any CSS
|
|
13
|
-
* parsing. So a crafted `family`/`src` containing `</style>` would close the
|
|
14
|
-
* style element and let the remainder render as HTML in the delivered email
|
|
15
|
-
* (a stored-XSS breakout). Rewriting `</` to `<\/` neutralises this: in a
|
|
16
|
-
* quoted CSS string `\/` is identical to `/`, but the HTML tokenizer no longer
|
|
17
|
-
* matches `<\/style>` as a raw-text end tag.
|
|
18
|
-
*/
|
|
19
|
-
const escapeCssString = (value) => value.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/[\u0000-\u001f\u007f]/g, (character) => `\\${character.charCodeAt(0).toString(16)} `).replace(/<\//g, "<\\/");
|
|
20
|
-
const FONT_FAMILY_NAME = /^-?[a-zA-Z][a-zA-Z0-9 -]*$/;
|
|
21
|
-
const SINGLE_QUOTED_FONT_FAMILY = /^'[^'\\<\u0000-\u001f\u007f]*'$/;
|
|
22
|
-
const DOUBLE_QUOTED_FONT_FAMILY = /^"[^"\\<\u0000-\u001f\u007f]*"$/;
|
|
23
|
-
const splitFontStack = (value) => {
|
|
24
|
-
const families = [];
|
|
25
|
-
let start = 0;
|
|
26
|
-
let quote;
|
|
27
|
-
for (let index = 0; index < value.length; index++) {
|
|
28
|
-
const character = value[index];
|
|
29
|
-
if (quote !== void 0) {
|
|
30
|
-
if (character === quote) quote = void 0;
|
|
31
|
-
} else if (character === "'" || character === "\"") quote = character;
|
|
32
|
-
else if (character === ",") {
|
|
33
|
-
families.push(value.slice(start, index).trim());
|
|
34
|
-
start = index + 1;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
families.push(value.slice(start).trim());
|
|
38
|
-
return families;
|
|
39
|
-
};
|
|
40
|
-
const safeFontStack = (value) => {
|
|
41
|
-
return splitFontStack(value).every((family) => FONT_FAMILY_NAME.test(family) || SINGLE_QUOTED_FONT_FAMILY.test(family) || DOUBLE_QUOTED_FONT_FAMILY.test(family)) ? value : `'${escapeCssString(value)}'`;
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Flatten persisted font tokens into the compiler's two font fields, so the
|
|
45
|
-
* server (apps/api) and the in-browser canvas (apps/web) produce byte-identical
|
|
46
|
-
* output from ONE transform rather than two hand-synced copies:
|
|
47
|
-
* - `fontFamilies` = the inline stack the `font-{name}` utility emits — the
|
|
48
|
-
* family quoted (multi-word-safe) then the fallback (which the picker
|
|
49
|
-
* guarantees ends in a generic, so no client is ever fontless).
|
|
50
|
-
* - `fontFaces` = the @font-face set for tokens that self-host a webfont.
|
|
51
|
-
* Tokens without `faces` (system stacks) contribute a family but no face set.
|
|
52
|
-
*/
|
|
53
|
-
const flattenFontTokens = (tokens) => {
|
|
54
|
-
const fontFamilies = {};
|
|
55
|
-
const fontFaces = {};
|
|
56
|
-
for (const [name, token] of Object.entries(tokens)) {
|
|
57
|
-
fontFamilies[name] = `'${escapeCssString(token.family)}', ${safeFontStack(token.fallback)}`;
|
|
58
|
-
if (token.faces != null) fontFaces[name] = {
|
|
59
|
-
family: token.family,
|
|
60
|
-
faces: token.faces
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
fontFamilies,
|
|
65
|
-
fontFaces
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
const mergeLayer = (table, overrides) => {
|
|
69
|
-
if (overrides === void 0) return table;
|
|
70
|
-
return {
|
|
71
|
-
colors: {
|
|
72
|
-
...table.colors,
|
|
73
|
-
...overrides.colors
|
|
74
|
-
},
|
|
75
|
-
colorsDark: {
|
|
76
|
-
...table.colorsDark,
|
|
77
|
-
...overrides.colorsDark
|
|
78
|
-
},
|
|
79
|
-
spacingPx: overrides.spacingPx ?? table.spacingPx,
|
|
80
|
-
text: {
|
|
81
|
-
...table.text,
|
|
82
|
-
...overrides.text
|
|
83
|
-
},
|
|
84
|
-
leading: {
|
|
85
|
-
...table.leading,
|
|
86
|
-
...overrides.leading
|
|
87
|
-
},
|
|
88
|
-
trackingEm: {
|
|
89
|
-
...table.trackingEm,
|
|
90
|
-
...overrides.trackingEm
|
|
91
|
-
},
|
|
92
|
-
radiusPx: {
|
|
93
|
-
...table.radiusPx,
|
|
94
|
-
...overrides.radiusPx
|
|
95
|
-
},
|
|
96
|
-
fontWeights: {
|
|
97
|
-
...table.fontWeights,
|
|
98
|
-
...overrides.fontWeights
|
|
99
|
-
},
|
|
100
|
-
fontFamilies: {
|
|
101
|
-
...table.fontFamilies,
|
|
102
|
-
...overrides.fontFamilies
|
|
103
|
-
},
|
|
104
|
-
fontFaces: {
|
|
105
|
-
...table.fontFaces,
|
|
106
|
-
...overrides.fontFaces
|
|
107
|
-
},
|
|
108
|
-
containerPx: {
|
|
109
|
-
...table.containerPx,
|
|
110
|
-
...overrides.containerPx
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
const resolveTokenTable = (layers) => (layers.overrides ?? []).reduce(mergeLayer, layers.base);
|
|
115
|
-
//#endregion
|
|
116
|
-
export { escapeCssString, flattenFontTokens, resolveTokenTable };
|
|
117
|
-
|
|
118
|
-
//# sourceMappingURL=theme.js.map
|
package/dist/tokens.d.ts
DELETED
package/dist/tokens.js
DELETED
|
@@ -1,417 +0,0 @@
|
|
|
1
|
-
//#region src/tokens.ts
|
|
2
|
-
const baseTokens = {
|
|
3
|
-
colors: {
|
|
4
|
-
"red-50": "#fef2f2",
|
|
5
|
-
"red-100": "#ffe2e2",
|
|
6
|
-
"red-200": "#ffc9c9",
|
|
7
|
-
"red-300": "#ffa2a2",
|
|
8
|
-
"red-400": "#ff6467",
|
|
9
|
-
"red-500": "#fb2c36",
|
|
10
|
-
"red-600": "#e7000b",
|
|
11
|
-
"red-700": "#c10007",
|
|
12
|
-
"red-800": "#9f0712",
|
|
13
|
-
"red-900": "#82181a",
|
|
14
|
-
"red-950": "#460809",
|
|
15
|
-
"orange-50": "#fff7ed",
|
|
16
|
-
"orange-100": "#ffedd4",
|
|
17
|
-
"orange-200": "#ffd6a7",
|
|
18
|
-
"orange-300": "#ffb86a",
|
|
19
|
-
"orange-400": "#ff8904",
|
|
20
|
-
"orange-500": "#ff6900",
|
|
21
|
-
"orange-600": "#f54900",
|
|
22
|
-
"orange-700": "#ca3500",
|
|
23
|
-
"orange-800": "#9f2d00",
|
|
24
|
-
"orange-900": "#7e2a0c",
|
|
25
|
-
"orange-950": "#441306",
|
|
26
|
-
"amber-50": "#fffbeb",
|
|
27
|
-
"amber-100": "#fef3c6",
|
|
28
|
-
"amber-200": "#fee685",
|
|
29
|
-
"amber-300": "#ffd230",
|
|
30
|
-
"amber-400": "#ffb900",
|
|
31
|
-
"amber-500": "#fe9a00",
|
|
32
|
-
"amber-600": "#e17100",
|
|
33
|
-
"amber-700": "#bb4d00",
|
|
34
|
-
"amber-800": "#973c00",
|
|
35
|
-
"amber-900": "#7b3306",
|
|
36
|
-
"amber-950": "#461901",
|
|
37
|
-
"yellow-50": "#fefce8",
|
|
38
|
-
"yellow-100": "#fef9c2",
|
|
39
|
-
"yellow-200": "#fff085",
|
|
40
|
-
"yellow-300": "#ffdf20",
|
|
41
|
-
"yellow-400": "#fdc700",
|
|
42
|
-
"yellow-500": "#f0b100",
|
|
43
|
-
"yellow-600": "#d08700",
|
|
44
|
-
"yellow-700": "#a65f00",
|
|
45
|
-
"yellow-800": "#894b00",
|
|
46
|
-
"yellow-900": "#733e0a",
|
|
47
|
-
"yellow-950": "#432004",
|
|
48
|
-
"lime-50": "#f7fee7",
|
|
49
|
-
"lime-100": "#ecfcca",
|
|
50
|
-
"lime-200": "#d8f999",
|
|
51
|
-
"lime-300": "#bbf451",
|
|
52
|
-
"lime-400": "#9ae600",
|
|
53
|
-
"lime-500": "#7ccf00",
|
|
54
|
-
"lime-600": "#5ea500",
|
|
55
|
-
"lime-700": "#497d00",
|
|
56
|
-
"lime-800": "#3c6300",
|
|
57
|
-
"lime-900": "#35530e",
|
|
58
|
-
"lime-950": "#192e03",
|
|
59
|
-
"green-50": "#f0fdf4",
|
|
60
|
-
"green-100": "#dcfce7",
|
|
61
|
-
"green-200": "#b9f8cf",
|
|
62
|
-
"green-300": "#7bf1a8",
|
|
63
|
-
"green-400": "#05df72",
|
|
64
|
-
"green-500": "#00c950",
|
|
65
|
-
"green-600": "#00a63e",
|
|
66
|
-
"green-700": "#008236",
|
|
67
|
-
"green-800": "#016630",
|
|
68
|
-
"green-900": "#0d542b",
|
|
69
|
-
"green-950": "#032e15",
|
|
70
|
-
"emerald-50": "#ecfdf5",
|
|
71
|
-
"emerald-100": "#d0fae5",
|
|
72
|
-
"emerald-200": "#a4f4cf",
|
|
73
|
-
"emerald-300": "#5ee9b5",
|
|
74
|
-
"emerald-400": "#00d492",
|
|
75
|
-
"emerald-500": "#00bc7d",
|
|
76
|
-
"emerald-600": "#009966",
|
|
77
|
-
"emerald-700": "#007a55",
|
|
78
|
-
"emerald-800": "#006045",
|
|
79
|
-
"emerald-900": "#004f3b",
|
|
80
|
-
"emerald-950": "#002c22",
|
|
81
|
-
"teal-50": "#f0fdfa",
|
|
82
|
-
"teal-100": "#cbfbf1",
|
|
83
|
-
"teal-200": "#96f7e4",
|
|
84
|
-
"teal-300": "#46ecd5",
|
|
85
|
-
"teal-400": "#00d5be",
|
|
86
|
-
"teal-500": "#00bba7",
|
|
87
|
-
"teal-600": "#009689",
|
|
88
|
-
"teal-700": "#00786f",
|
|
89
|
-
"teal-800": "#005f5a",
|
|
90
|
-
"teal-900": "#0b4f4a",
|
|
91
|
-
"teal-950": "#022f2e",
|
|
92
|
-
"cyan-50": "#ecfeff",
|
|
93
|
-
"cyan-100": "#cefafe",
|
|
94
|
-
"cyan-200": "#a2f4fd",
|
|
95
|
-
"cyan-300": "#53eafd",
|
|
96
|
-
"cyan-400": "#00d3f2",
|
|
97
|
-
"cyan-500": "#00b8db",
|
|
98
|
-
"cyan-600": "#0092b8",
|
|
99
|
-
"cyan-700": "#007595",
|
|
100
|
-
"cyan-800": "#005f78",
|
|
101
|
-
"cyan-900": "#104e64",
|
|
102
|
-
"cyan-950": "#053345",
|
|
103
|
-
"sky-50": "#f0f9ff",
|
|
104
|
-
"sky-100": "#dff2fe",
|
|
105
|
-
"sky-200": "#b8e6fe",
|
|
106
|
-
"sky-300": "#74d4ff",
|
|
107
|
-
"sky-400": "#00bcff",
|
|
108
|
-
"sky-500": "#00a6f4",
|
|
109
|
-
"sky-600": "#0084d1",
|
|
110
|
-
"sky-700": "#0069a8",
|
|
111
|
-
"sky-800": "#00598a",
|
|
112
|
-
"sky-900": "#024a70",
|
|
113
|
-
"sky-950": "#052f4a",
|
|
114
|
-
"blue-50": "#eff6ff",
|
|
115
|
-
"blue-100": "#dbeafe",
|
|
116
|
-
"blue-200": "#bedbff",
|
|
117
|
-
"blue-300": "#8ec5ff",
|
|
118
|
-
"blue-400": "#51a2ff",
|
|
119
|
-
"blue-500": "#2b7fff",
|
|
120
|
-
"blue-600": "#155dfc",
|
|
121
|
-
"blue-700": "#1447e6",
|
|
122
|
-
"blue-800": "#193cb8",
|
|
123
|
-
"blue-900": "#1c398e",
|
|
124
|
-
"blue-950": "#162456",
|
|
125
|
-
"indigo-50": "#eef2ff",
|
|
126
|
-
"indigo-100": "#e0e7ff",
|
|
127
|
-
"indigo-200": "#c6d2ff",
|
|
128
|
-
"indigo-300": "#a3b3ff",
|
|
129
|
-
"indigo-400": "#7c86ff",
|
|
130
|
-
"indigo-500": "#615fff",
|
|
131
|
-
"indigo-600": "#4f39f6",
|
|
132
|
-
"indigo-700": "#432dd7",
|
|
133
|
-
"indigo-800": "#372aac",
|
|
134
|
-
"indigo-900": "#312c85",
|
|
135
|
-
"indigo-950": "#1e1a4d",
|
|
136
|
-
"violet-50": "#f5f3ff",
|
|
137
|
-
"violet-100": "#ede9fe",
|
|
138
|
-
"violet-200": "#ddd6ff",
|
|
139
|
-
"violet-300": "#c4b4ff",
|
|
140
|
-
"violet-400": "#a684ff",
|
|
141
|
-
"violet-500": "#8e51ff",
|
|
142
|
-
"violet-600": "#7f22fe",
|
|
143
|
-
"violet-700": "#7008e7",
|
|
144
|
-
"violet-800": "#5d0ec0",
|
|
145
|
-
"violet-900": "#4d179a",
|
|
146
|
-
"violet-950": "#2f0d68",
|
|
147
|
-
"purple-50": "#faf5ff",
|
|
148
|
-
"purple-100": "#f3e8ff",
|
|
149
|
-
"purple-200": "#e9d4ff",
|
|
150
|
-
"purple-300": "#dab2ff",
|
|
151
|
-
"purple-400": "#c27aff",
|
|
152
|
-
"purple-500": "#ad46ff",
|
|
153
|
-
"purple-600": "#9810fa",
|
|
154
|
-
"purple-700": "#8200db",
|
|
155
|
-
"purple-800": "#6e11b0",
|
|
156
|
-
"purple-900": "#59168b",
|
|
157
|
-
"purple-950": "#3c0366",
|
|
158
|
-
"fuchsia-50": "#fdf4ff",
|
|
159
|
-
"fuchsia-100": "#fae8ff",
|
|
160
|
-
"fuchsia-200": "#f6cfff",
|
|
161
|
-
"fuchsia-300": "#f4a8ff",
|
|
162
|
-
"fuchsia-400": "#ed6aff",
|
|
163
|
-
"fuchsia-500": "#e12afb",
|
|
164
|
-
"fuchsia-600": "#c800de",
|
|
165
|
-
"fuchsia-700": "#a800b7",
|
|
166
|
-
"fuchsia-800": "#8a0194",
|
|
167
|
-
"fuchsia-900": "#721378",
|
|
168
|
-
"fuchsia-950": "#4b004f",
|
|
169
|
-
"pink-50": "#fdf2f8",
|
|
170
|
-
"pink-100": "#fce7f3",
|
|
171
|
-
"pink-200": "#fccee8",
|
|
172
|
-
"pink-300": "#fda5d5",
|
|
173
|
-
"pink-400": "#fb64b6",
|
|
174
|
-
"pink-500": "#f6339a",
|
|
175
|
-
"pink-600": "#e60076",
|
|
176
|
-
"pink-700": "#c6005c",
|
|
177
|
-
"pink-800": "#a3004c",
|
|
178
|
-
"pink-900": "#861043",
|
|
179
|
-
"pink-950": "#510424",
|
|
180
|
-
"rose-50": "#fff1f2",
|
|
181
|
-
"rose-100": "#ffe4e6",
|
|
182
|
-
"rose-200": "#ffccd3",
|
|
183
|
-
"rose-300": "#ffa1ad",
|
|
184
|
-
"rose-400": "#ff637e",
|
|
185
|
-
"rose-500": "#ff2056",
|
|
186
|
-
"rose-600": "#ec003f",
|
|
187
|
-
"rose-700": "#c70036",
|
|
188
|
-
"rose-800": "#a50036",
|
|
189
|
-
"rose-900": "#8b0836",
|
|
190
|
-
"rose-950": "#4d0218",
|
|
191
|
-
"slate-50": "#f8fafc",
|
|
192
|
-
"slate-100": "#f1f5f9",
|
|
193
|
-
"slate-200": "#e2e8f0",
|
|
194
|
-
"slate-300": "#cad5e2",
|
|
195
|
-
"slate-400": "#90a1b9",
|
|
196
|
-
"slate-500": "#62748e",
|
|
197
|
-
"slate-600": "#45556c",
|
|
198
|
-
"slate-700": "#314158",
|
|
199
|
-
"slate-800": "#1d293d",
|
|
200
|
-
"slate-900": "#0f172b",
|
|
201
|
-
"slate-950": "#020618",
|
|
202
|
-
"gray-50": "#f9fafb",
|
|
203
|
-
"gray-100": "#f3f4f6",
|
|
204
|
-
"gray-200": "#e5e7eb",
|
|
205
|
-
"gray-300": "#d1d5dc",
|
|
206
|
-
"gray-400": "#99a1af",
|
|
207
|
-
"gray-500": "#6a7282",
|
|
208
|
-
"gray-600": "#4a5565",
|
|
209
|
-
"gray-700": "#364153",
|
|
210
|
-
"gray-800": "#1e2939",
|
|
211
|
-
"gray-900": "#101828",
|
|
212
|
-
"gray-950": "#030712",
|
|
213
|
-
"zinc-50": "#fafafa",
|
|
214
|
-
"zinc-100": "#f4f4f5",
|
|
215
|
-
"zinc-200": "#e4e4e7",
|
|
216
|
-
"zinc-300": "#d4d4d8",
|
|
217
|
-
"zinc-400": "#9f9fa9",
|
|
218
|
-
"zinc-500": "#71717b",
|
|
219
|
-
"zinc-600": "#52525c",
|
|
220
|
-
"zinc-700": "#3f3f46",
|
|
221
|
-
"zinc-800": "#27272a",
|
|
222
|
-
"zinc-900": "#18181b",
|
|
223
|
-
"zinc-950": "#09090b",
|
|
224
|
-
"neutral-50": "#fafafa",
|
|
225
|
-
"neutral-100": "#f5f5f5",
|
|
226
|
-
"neutral-200": "#e5e5e5",
|
|
227
|
-
"neutral-300": "#d4d4d4",
|
|
228
|
-
"neutral-400": "#a1a1a1",
|
|
229
|
-
"neutral-500": "#737373",
|
|
230
|
-
"neutral-600": "#525252",
|
|
231
|
-
"neutral-700": "#404040",
|
|
232
|
-
"neutral-800": "#262626",
|
|
233
|
-
"neutral-900": "#171717",
|
|
234
|
-
"neutral-950": "#0a0a0a",
|
|
235
|
-
"stone-50": "#fafaf9",
|
|
236
|
-
"stone-100": "#f5f5f4",
|
|
237
|
-
"stone-200": "#e7e5e4",
|
|
238
|
-
"stone-300": "#d6d3d1",
|
|
239
|
-
"stone-400": "#a6a09b",
|
|
240
|
-
"stone-500": "#79716b",
|
|
241
|
-
"stone-600": "#57534d",
|
|
242
|
-
"stone-700": "#44403b",
|
|
243
|
-
"stone-800": "#292524",
|
|
244
|
-
"stone-900": "#1c1917",
|
|
245
|
-
"stone-950": "#0c0a09",
|
|
246
|
-
"mauve-50": "#fafafa",
|
|
247
|
-
"mauve-100": "#f3f1f3",
|
|
248
|
-
"mauve-200": "#e7e4e7",
|
|
249
|
-
"mauve-300": "#d7d0d7",
|
|
250
|
-
"mauve-400": "#a89ea9",
|
|
251
|
-
"mauve-500": "#79697b",
|
|
252
|
-
"mauve-600": "#594c5b",
|
|
253
|
-
"mauve-700": "#463947",
|
|
254
|
-
"mauve-800": "#2a212c",
|
|
255
|
-
"mauve-900": "#1d161e",
|
|
256
|
-
"mauve-950": "#0c090c",
|
|
257
|
-
"olive-50": "#fbfbf9",
|
|
258
|
-
"olive-100": "#f4f4f0",
|
|
259
|
-
"olive-200": "#e8e8e3",
|
|
260
|
-
"olive-300": "#d8d8d0",
|
|
261
|
-
"olive-400": "#abab9c",
|
|
262
|
-
"olive-500": "#7c7c67",
|
|
263
|
-
"olive-600": "#5b5b4b",
|
|
264
|
-
"olive-700": "#474739",
|
|
265
|
-
"olive-800": "#2b2b22",
|
|
266
|
-
"olive-900": "#1d1d16",
|
|
267
|
-
"olive-950": "#0c0c09",
|
|
268
|
-
"mist-50": "#f9fbfb",
|
|
269
|
-
"mist-100": "#f1f3f3",
|
|
270
|
-
"mist-200": "#e3e7e8",
|
|
271
|
-
"mist-300": "#d0d6d8",
|
|
272
|
-
"mist-400": "#9ca8ab",
|
|
273
|
-
"mist-500": "#67787c",
|
|
274
|
-
"mist-600": "#4b585b",
|
|
275
|
-
"mist-700": "#394447",
|
|
276
|
-
"mist-800": "#22292b",
|
|
277
|
-
"mist-900": "#161b1d",
|
|
278
|
-
"mist-950": "#090b0c",
|
|
279
|
-
"taupe-50": "#fbfaf9",
|
|
280
|
-
"taupe-100": "#f3f1f1",
|
|
281
|
-
"taupe-200": "#e8e4e3",
|
|
282
|
-
"taupe-300": "#d8d2d0",
|
|
283
|
-
"taupe-400": "#aba09c",
|
|
284
|
-
"taupe-500": "#7c6d67",
|
|
285
|
-
"taupe-600": "#5b4f4b",
|
|
286
|
-
"taupe-700": "#473c39",
|
|
287
|
-
"taupe-800": "#2b2422",
|
|
288
|
-
"taupe-900": "#1d1816",
|
|
289
|
-
"taupe-950": "#0c0a09",
|
|
290
|
-
black: "#000000",
|
|
291
|
-
white: "#ffffff",
|
|
292
|
-
brand: "#171717",
|
|
293
|
-
"brand-foreground": "#fafafa"
|
|
294
|
-
},
|
|
295
|
-
colorsDark: {
|
|
296
|
-
brand: "#fafafa",
|
|
297
|
-
"brand-foreground": "#171717"
|
|
298
|
-
},
|
|
299
|
-
spacingPx: 4,
|
|
300
|
-
text: {
|
|
301
|
-
xs: {
|
|
302
|
-
sizePx: 12,
|
|
303
|
-
lineHeightPx: 16
|
|
304
|
-
},
|
|
305
|
-
sm: {
|
|
306
|
-
sizePx: 14,
|
|
307
|
-
lineHeightPx: 20
|
|
308
|
-
},
|
|
309
|
-
base: {
|
|
310
|
-
sizePx: 16,
|
|
311
|
-
lineHeightPx: 24
|
|
312
|
-
},
|
|
313
|
-
lg: {
|
|
314
|
-
sizePx: 18,
|
|
315
|
-
lineHeightPx: 28
|
|
316
|
-
},
|
|
317
|
-
xl: {
|
|
318
|
-
sizePx: 20,
|
|
319
|
-
lineHeightPx: 28
|
|
320
|
-
},
|
|
321
|
-
"2xl": {
|
|
322
|
-
sizePx: 24,
|
|
323
|
-
lineHeightPx: 32
|
|
324
|
-
},
|
|
325
|
-
"3xl": {
|
|
326
|
-
sizePx: 30,
|
|
327
|
-
lineHeightPx: 36
|
|
328
|
-
},
|
|
329
|
-
"4xl": {
|
|
330
|
-
sizePx: 36,
|
|
331
|
-
lineHeightPx: 40
|
|
332
|
-
},
|
|
333
|
-
"5xl": {
|
|
334
|
-
sizePx: 48,
|
|
335
|
-
lineHeightPx: 48
|
|
336
|
-
},
|
|
337
|
-
"6xl": {
|
|
338
|
-
sizePx: 60,
|
|
339
|
-
lineHeightPx: 60
|
|
340
|
-
},
|
|
341
|
-
"7xl": {
|
|
342
|
-
sizePx: 72,
|
|
343
|
-
lineHeightPx: 72
|
|
344
|
-
},
|
|
345
|
-
"8xl": {
|
|
346
|
-
sizePx: 96,
|
|
347
|
-
lineHeightPx: 96
|
|
348
|
-
},
|
|
349
|
-
"9xl": {
|
|
350
|
-
sizePx: 128,
|
|
351
|
-
lineHeightPx: 128
|
|
352
|
-
}
|
|
353
|
-
},
|
|
354
|
-
leading: {
|
|
355
|
-
tight: 1.25,
|
|
356
|
-
snug: 1.375,
|
|
357
|
-
normal: 1.5,
|
|
358
|
-
relaxed: 1.625,
|
|
359
|
-
loose: 2
|
|
360
|
-
},
|
|
361
|
-
trackingEm: {
|
|
362
|
-
tighter: -.05,
|
|
363
|
-
tight: -.025,
|
|
364
|
-
normal: 0,
|
|
365
|
-
wide: .025,
|
|
366
|
-
wider: .05,
|
|
367
|
-
widest: .1
|
|
368
|
-
},
|
|
369
|
-
radiusPx: {
|
|
370
|
-
brand: 8,
|
|
371
|
-
xs: 2,
|
|
372
|
-
sm: 4,
|
|
373
|
-
md: 6,
|
|
374
|
-
lg: 8,
|
|
375
|
-
xl: 12,
|
|
376
|
-
"2xl": 16,
|
|
377
|
-
"3xl": 24,
|
|
378
|
-
"4xl": 32
|
|
379
|
-
},
|
|
380
|
-
fontWeights: {
|
|
381
|
-
thin: 100,
|
|
382
|
-
extralight: 200,
|
|
383
|
-
light: 300,
|
|
384
|
-
normal: 400,
|
|
385
|
-
medium: 500,
|
|
386
|
-
semibold: 600,
|
|
387
|
-
bold: 700,
|
|
388
|
-
extrabold: 800,
|
|
389
|
-
black: 900
|
|
390
|
-
},
|
|
391
|
-
fontFamilies: {
|
|
392
|
-
body: "ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'",
|
|
393
|
-
sans: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
|
|
394
|
-
serif: "ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif",
|
|
395
|
-
mono: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace"
|
|
396
|
-
},
|
|
397
|
-
fontFaces: {},
|
|
398
|
-
containerPx: {
|
|
399
|
-
"3xs": 256,
|
|
400
|
-
"2xs": 288,
|
|
401
|
-
xs: 320,
|
|
402
|
-
sm: 384,
|
|
403
|
-
md: 448,
|
|
404
|
-
lg: 512,
|
|
405
|
-
xl: 576,
|
|
406
|
-
"2xl": 672,
|
|
407
|
-
"3xl": 768,
|
|
408
|
-
"4xl": 896,
|
|
409
|
-
"5xl": 1024,
|
|
410
|
-
"6xl": 1152,
|
|
411
|
-
"7xl": 1280
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
//#endregion
|
|
415
|
-
export { baseTokens };
|
|
416
|
-
|
|
417
|
-
//# sourceMappingURL=tokens.js.map
|