@vinhhypc/config-theme 0.1.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/README.md +57 -0
- package/dist/components/themed/Accordion.d.ts +23 -0
- package/dist/components/themed/Accordion.js +37 -0
- package/dist/components/themed/Accordion.js.map +1 -0
- package/dist/components/themed/Alert.d.ts +13 -0
- package/dist/components/themed/Alert.js +17 -0
- package/dist/components/themed/Alert.js.map +1 -0
- package/dist/components/themed/Avatar.d.ts +19 -0
- package/dist/components/themed/Avatar.js +30 -0
- package/dist/components/themed/Avatar.js.map +1 -0
- package/dist/components/themed/Badge.d.ts +11 -0
- package/dist/components/themed/Badge.js +17 -0
- package/dist/components/themed/Badge.js.map +1 -0
- package/dist/components/themed/Button.d.ts +14 -0
- package/dist/components/themed/Button.js +20 -0
- package/dist/components/themed/Button.js.map +1 -0
- package/dist/components/themed/Calendar.d.ts +18 -0
- package/dist/components/themed/Calendar.js +59 -0
- package/dist/components/themed/Calendar.js.map +1 -0
- package/dist/components/themed/Card.d.ts +17 -0
- package/dist/components/themed/Card.js +14 -0
- package/dist/components/themed/Card.js.map +1 -0
- package/dist/components/themed/Checkbox.d.ts +16 -0
- package/dist/components/themed/Checkbox.js +15 -0
- package/dist/components/themed/Checkbox.js.map +1 -0
- package/dist/components/themed/DropdownMenu.d.ts +20 -0
- package/dist/components/themed/DropdownMenu.js +39 -0
- package/dist/components/themed/DropdownMenu.js.map +1 -0
- package/dist/components/themed/Input.d.ts +18 -0
- package/dist/components/themed/Input.js +25 -0
- package/dist/components/themed/Input.js.map +1 -0
- package/dist/components/themed/Pagination.d.ts +17 -0
- package/dist/components/themed/Pagination.js +33 -0
- package/dist/components/themed/Pagination.js.map +1 -0
- package/dist/components/themed/Select.d.ts +16 -0
- package/dist/components/themed/Select.js +20 -0
- package/dist/components/themed/Select.js.map +1 -0
- package/dist/components/themed/Sheet.d.ts +19 -0
- package/dist/components/themed/Sheet.js +28 -0
- package/dist/components/themed/Sheet.js.map +1 -0
- package/dist/components/themed/Sidebar.d.ts +21 -0
- package/dist/components/themed/Sidebar.js +11 -0
- package/dist/components/themed/Sidebar.js.map +1 -0
- package/dist/components/themed/Table.d.ts +21 -0
- package/dist/components/themed/Table.js +10 -0
- package/dist/components/themed/Table.js.map +1 -0
- package/dist/components/themed/ThemeProvider.d.ts +41 -0
- package/dist/components/themed/ThemeProvider.js +53 -0
- package/dist/components/themed/ThemeProvider.js.map +1 -0
- package/dist/components/themed/Toast.d.ts +19 -0
- package/dist/components/themed/Toast.js +13 -0
- package/dist/components/themed/Toast.js.map +1 -0
- package/dist/components/themed/Tooltip.d.ts +15 -0
- package/dist/components/themed/Tooltip.js +11 -0
- package/dist/components/themed/Tooltip.js.map +1 -0
- package/dist/components/themed/index.d.ts +33 -0
- package/dist/components/themed/index.js +35 -0
- package/dist/components/themed/index.js.map +1 -0
- package/dist/components/themed/styles.d.ts +29 -0
- package/dist/components/themed/styles.js +270 -0
- package/dist/components/themed/styles.js.map +1 -0
- package/dist/components/themed/themeCss.d.ts +35 -0
- package/dist/components/themed/themeCss.js +76 -0
- package/dist/components/themed/themeCss.js.map +1 -0
- package/dist/lib/config/defaults.d.ts +5 -0
- package/dist/lib/config/defaults.js +86 -0
- package/dist/lib/config/defaults.js.map +1 -0
- package/dist/lib/config/presets.d.ts +13 -0
- package/dist/lib/config/presets.js +104 -0
- package/dist/lib/config/presets.js.map +1 -0
- package/dist/lib/config/types.d.ts +146 -0
- package/dist/lib/config/types.js +46 -0
- package/dist/lib/config/types.js.map +1 -0
- package/dist/lib/tokens/adapters.d.ts +15 -0
- package/dist/lib/tokens/adapters.js +102 -0
- package/dist/lib/tokens/adapters.js.map +1 -0
- package/dist/lib/tokens/color.d.ts +23 -0
- package/dist/lib/tokens/color.js +132 -0
- package/dist/lib/tokens/color.js.map +1 -0
- package/dist/lib/tokens/elevation.d.ts +6 -0
- package/dist/lib/tokens/elevation.js +40 -0
- package/dist/lib/tokens/elevation.js.map +1 -0
- package/dist/lib/tokens/index.d.ts +43 -0
- package/dist/lib/tokens/index.js +88 -0
- package/dist/lib/tokens/index.js.map +1 -0
- package/dist/lib/tokens/interactions.d.ts +12 -0
- package/dist/lib/tokens/interactions.js +72 -0
- package/dist/lib/tokens/interactions.js.map +1 -0
- package/dist/lib/tokens/opacity.d.ts +14 -0
- package/dist/lib/tokens/opacity.js +34 -0
- package/dist/lib/tokens/opacity.js.map +1 -0
- package/dist/lib/tokens/spacing.d.ts +17 -0
- package/dist/lib/tokens/spacing.js +32 -0
- package/dist/lib/tokens/spacing.js.map +1 -0
- package/dist/lib/tokens/typography.d.ts +16 -0
- package/dist/lib/tokens/typography.js +23 -0
- package/dist/lib/tokens/typography.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { COLOR_ROLES, COLOR_SCALE_STEPS, } from "../../lib/config/types.js";
|
|
2
|
+
import { generateColorScale } from "./color.js";
|
|
3
|
+
import { generateTypeScale } from "./typography.js";
|
|
4
|
+
import { generateSpacing, generateRadius } from "./spacing.js";
|
|
5
|
+
import { generateElevation } from "./elevation.js";
|
|
6
|
+
import { generateOpacity } from "./opacity.js";
|
|
7
|
+
export * from "./color.js";
|
|
8
|
+
export * from "./typography.js";
|
|
9
|
+
export * from "./spacing.js";
|
|
10
|
+
export * from "./elevation.js";
|
|
11
|
+
export * from "./interactions.js";
|
|
12
|
+
export * from "./opacity.js";
|
|
13
|
+
export * from "./adapters.js";
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a DesignConfig into the full set of concrete token values.
|
|
16
|
+
* Pure function — the single source of truth for both markdown export and preview.
|
|
17
|
+
*/
|
|
18
|
+
export function resolveTokens(config) {
|
|
19
|
+
const colorScales = {};
|
|
20
|
+
const colors = [];
|
|
21
|
+
for (const role of COLOR_ROLES) {
|
|
22
|
+
const baseHex = config.theme.colors[role];
|
|
23
|
+
const scale = generateColorScale(baseHex);
|
|
24
|
+
colorScales[role] = scale;
|
|
25
|
+
// base alias points at the 500 step value
|
|
26
|
+
colors.push({ role, step: null, token: role, hex: baseHex });
|
|
27
|
+
for (const step of COLOR_SCALE_STEPS) {
|
|
28
|
+
colors.push({ role, step, token: `${role}-${step}`, hex: scale[step] });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
colors,
|
|
33
|
+
colorScales,
|
|
34
|
+
type: generateTypeScale(config.typography),
|
|
35
|
+
spacing: generateSpacing(config.spacing),
|
|
36
|
+
radius: generateRadius(config.radius),
|
|
37
|
+
elevation: generateElevation(config.elevation),
|
|
38
|
+
opacity: generateOpacity(config),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Build the CSS custom properties for `:root`. */
|
|
42
|
+
export function buildCssVars(config) {
|
|
43
|
+
const tokens = resolveTokens(config);
|
|
44
|
+
const vars = [];
|
|
45
|
+
for (const c of tokens.colors) {
|
|
46
|
+
const suffix = c.step === null ? c.role : `${c.role}-${c.step}`;
|
|
47
|
+
vars.push({ name: `--color-${suffix}`, value: c.hex });
|
|
48
|
+
}
|
|
49
|
+
for (const s of tokens.spacing) {
|
|
50
|
+
vars.push({ name: `--${s.token}`, value: `${s.px}px` });
|
|
51
|
+
}
|
|
52
|
+
for (const r of tokens.radius) {
|
|
53
|
+
vars.push({ name: `--${r.token}`, value: r.px === "9999px" ? "9999px" : `${r.px}px` });
|
|
54
|
+
}
|
|
55
|
+
for (const e of tokens.elevation) {
|
|
56
|
+
vars.push({ name: `--${e.token}`, value: e.value });
|
|
57
|
+
}
|
|
58
|
+
for (const o of tokens.opacity) {
|
|
59
|
+
vars.push({ name: `--${o.token}`, value: o.value });
|
|
60
|
+
}
|
|
61
|
+
vars.push({ name: "--font-base", value: config.typography.fontFamilyBase });
|
|
62
|
+
vars.push({ name: "--font-heading", value: config.typography.fontFamilyHeading });
|
|
63
|
+
vars.push({ name: "--font-mono", value: config.typography.fontFamilyMono });
|
|
64
|
+
vars.push({ name: "--text-base", value: `${config.typography.baseSize}px` });
|
|
65
|
+
vars.push({ name: "--line-height", value: String(config.typography.lineHeight) });
|
|
66
|
+
vars.push({ name: "--border-width", value: `${config.borders.width}px` });
|
|
67
|
+
vars.push({ name: "--border-style", value: config.borders.style });
|
|
68
|
+
vars.push({
|
|
69
|
+
name: "--duration",
|
|
70
|
+
value: config.animation.enabled ? `${config.animation.durationMs}ms` : "0ms",
|
|
71
|
+
});
|
|
72
|
+
vars.push({ name: "--easing", value: config.animation.easing });
|
|
73
|
+
return vars;
|
|
74
|
+
}
|
|
75
|
+
/** Serialise CSS vars into a `:root { ... }` block string. */
|
|
76
|
+
export function cssVarsToBlock(config, selector = ":root") {
|
|
77
|
+
const vars = buildCssVars(config);
|
|
78
|
+
const lines = vars.map((v) => ` ${v.name}: ${v.value};`).join("\n");
|
|
79
|
+
return `${selector} {\n${lines}\n}`;
|
|
80
|
+
}
|
|
81
|
+
/** A flat record form, convenient for React inline `style` on the preview root. */
|
|
82
|
+
export function cssVarsToStyleObject(config) {
|
|
83
|
+
const obj = {};
|
|
84
|
+
for (const v of buildCssVars(config))
|
|
85
|
+
obj[v.name] = v.value;
|
|
86
|
+
return obj;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/tokens/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DesignConfig, HoverEffect } from "../../lib/config/types.js";
|
|
2
|
+
/** Human-readable summary of a hover effect (used in markdown + UI hints). */
|
|
3
|
+
export declare const HOVER_LABELS: Record<HoverEffect, string>;
|
|
4
|
+
export declare const HOVER_LABELS_EN: Record<HoverEffect, string>;
|
|
5
|
+
/** CSS declarations applied on `:hover` for a button-like surface. */
|
|
6
|
+
export declare function buttonHoverCss(effect: HoverEffect, baseColorVar?: string): string;
|
|
7
|
+
/** CSS declarations applied on `:hover` for a card/surface. */
|
|
8
|
+
export declare function cardHoverCss(effect: HoverEffect): string;
|
|
9
|
+
export declare function activeCss(pressFeedback: boolean): string;
|
|
10
|
+
export declare function focusRingCss(focusRing: boolean): string;
|
|
11
|
+
/** Tailwind-class equivalents for the chosen hover effect (for component-patterns.md). */
|
|
12
|
+
export declare function hoverTailwindClasses(config: DesignConfig): string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Human-readable summary of a hover effect (used in markdown + UI hints). */
|
|
2
|
+
export const HOVER_LABELS = {
|
|
3
|
+
none: "Không đổi",
|
|
4
|
+
darken: "Đậm màu hơn (nền/màu sẫm đi 1 bậc)",
|
|
5
|
+
lift: "Nâng lên (dịch lên + tăng đổ bóng)",
|
|
6
|
+
scale: "Phóng to nhẹ (scale up)",
|
|
7
|
+
glow: "Phát sáng (viền sáng theo màu primary)",
|
|
8
|
+
};
|
|
9
|
+
export const HOVER_LABELS_EN = {
|
|
10
|
+
none: "No change",
|
|
11
|
+
darken: "Darken by one step",
|
|
12
|
+
lift: "Lift (translateY up + larger shadow)",
|
|
13
|
+
scale: "Slight scale-up",
|
|
14
|
+
glow: "Glow ring in the primary color",
|
|
15
|
+
};
|
|
16
|
+
/** CSS declarations applied on `:hover` for a button-like surface. */
|
|
17
|
+
export function buttonHoverCss(effect, baseColorVar = "--color-primary") {
|
|
18
|
+
switch (effect) {
|
|
19
|
+
case "darken":
|
|
20
|
+
return `background: var(${baseColorVar}-700);`;
|
|
21
|
+
case "lift":
|
|
22
|
+
return "transform: translateY(-2px); box-shadow: var(--shadow-2);";
|
|
23
|
+
case "scale":
|
|
24
|
+
return "transform: scale(1.03);";
|
|
25
|
+
case "glow":
|
|
26
|
+
return `box-shadow: 0 0 0 3px color-mix(in srgb, var(${baseColorVar}-500) 40%, transparent);`;
|
|
27
|
+
case "none":
|
|
28
|
+
default:
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** CSS declarations applied on `:hover` for a card/surface. */
|
|
33
|
+
export function cardHoverCss(effect) {
|
|
34
|
+
switch (effect) {
|
|
35
|
+
case "darken":
|
|
36
|
+
return "filter: brightness(0.98);";
|
|
37
|
+
case "lift":
|
|
38
|
+
return "transform: translateY(-3px); box-shadow: var(--shadow-3);";
|
|
39
|
+
case "scale":
|
|
40
|
+
return "transform: scale(1.01);";
|
|
41
|
+
case "glow":
|
|
42
|
+
return "box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary-500) 30%, transparent);";
|
|
43
|
+
case "none":
|
|
44
|
+
default:
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function activeCss(pressFeedback) {
|
|
49
|
+
return pressFeedback ? "transform: scale(0.97);" : "";
|
|
50
|
+
}
|
|
51
|
+
export function focusRingCss(focusRing) {
|
|
52
|
+
return focusRing
|
|
53
|
+
? "outline: 2px solid var(--color-primary-500); outline-offset: 2px;"
|
|
54
|
+
: "outline: none;";
|
|
55
|
+
}
|
|
56
|
+
/** Tailwind-class equivalents for the chosen hover effect (for component-patterns.md). */
|
|
57
|
+
export function hoverTailwindClasses(config) {
|
|
58
|
+
const e = config.interactions.hover;
|
|
59
|
+
const map = {
|
|
60
|
+
none: "",
|
|
61
|
+
darken: "hover:bg-[var(--color-primary-700)]",
|
|
62
|
+
lift: "hover:-translate-y-0.5 hover:shadow-[var(--shadow-2)]",
|
|
63
|
+
scale: "hover:scale-[1.03]",
|
|
64
|
+
glow: "hover:shadow-[0_0_0_3px_color-mix(in_srgb,var(--color-primary-500)_40%,transparent)]",
|
|
65
|
+
};
|
|
66
|
+
const press = config.interactions.pressFeedback ? "active:scale-[0.97]" : "";
|
|
67
|
+
const focus = config.interactions.focusRing
|
|
68
|
+
? "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-primary-500)]"
|
|
69
|
+
: "focus-visible:outline-none";
|
|
70
|
+
return [map[e], press, focus, "transition-all duration-[var(--duration)]"].filter(Boolean).join(" ");
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../../../../lib/tokens/interactions.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAgC;IACvD,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,oCAAoC;IAC5C,IAAI,EAAE,oCAAoC;IAC1C,KAAK,EAAE,yBAAyB;IAChC,IAAI,EAAE,wCAAwC;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,sCAAsC;IAC5C,KAAK,EAAE,iBAAiB;IACxB,IAAI,EAAE,gCAAgC;CACvC,CAAC;AAEF,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,YAAY,GAAG,iBAAiB;IAClF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,mBAAmB,YAAY,QAAQ,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,2DAA2D,CAAC;QACrE,KAAK,OAAO;YACV,OAAO,yBAAyB,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,gDAAgD,YAAY,0BAA0B,CAAC;QAChG,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,2BAA2B,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,2DAA2D,CAAC;QACrE,KAAK,OAAO;YACV,OAAO,yBAAyB,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,sFAAsF,CAAC;QAChG,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,aAAsB;IAC9C,OAAO,aAAa,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAkB;IAC7C,OAAO,SAAS;QACd,CAAC,CAAC,mEAAmE;QACrE,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;IACpC,MAAM,GAAG,GAAgC;QACvC,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,qCAAqC;QAC7C,IAAI,EAAE,uDAAuD;QAC7D,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,sFAAsF;KAC7F,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS;QACzC,CAAC,CAAC,+HAA+H;QACjI,CAAC,CAAC,4BAA4B,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DesignConfig } from "../../lib/config/types.js";
|
|
2
|
+
export interface OpacityToken {
|
|
3
|
+
token: string;
|
|
4
|
+
value: string;
|
|
5
|
+
role: string;
|
|
6
|
+
alpha: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Derive opacity/overlay tokens purely from the configured colors.
|
|
10
|
+
* No extra config needed — these are computed alongside the colour scales.
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateOpacity(config: DesignConfig): OpacityToken[];
|
|
13
|
+
/** The recommended modal/scrim overlay token name. */
|
|
14
|
+
export declare const SCRIM_TOKEN = "opacity-black-7";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { hexToRgb } from "./color.js";
|
|
2
|
+
/**
|
|
3
|
+
* Alpha ramp for the primary opacity scale (overlays, emphasis layers, scrims).
|
|
4
|
+
* Mirrors a perceptually spaced set so low steps are subtle tints and high
|
|
5
|
+
* steps are near-solid.
|
|
6
|
+
*/
|
|
7
|
+
const PRIMARY_ALPHAS = [0.03, 0.08, 0.13, 0.18, 0.24, 0.35, 0.44, 0.52, 0.68, 0.8, 0.92];
|
|
8
|
+
/** Single mid-strength alpha used for semantic + black/white overlay tokens. */
|
|
9
|
+
const MID_ALPHA = 0.35;
|
|
10
|
+
function rgba(hex, alpha) {
|
|
11
|
+
const c = hexToRgb(hex) ?? { r: 0, g: 0, b: 0 };
|
|
12
|
+
return `rgba(${c.r}, ${c.g}, ${c.b}, ${alpha})`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Derive opacity/overlay tokens purely from the configured colors.
|
|
16
|
+
* No extra config needed — these are computed alongside the colour scales.
|
|
17
|
+
*/
|
|
18
|
+
export function generateOpacity(config) {
|
|
19
|
+
const out = [];
|
|
20
|
+
PRIMARY_ALPHAS.forEach((alpha, i) => {
|
|
21
|
+
out.push({ token: `opacity-primary-${i}`, value: rgba(config.theme.colors.primary, alpha), role: "primary", alpha });
|
|
22
|
+
});
|
|
23
|
+
["secondary", "accent", "success", "warning", "error", "info"].forEach((role) => {
|
|
24
|
+
out.push({ token: `opacity-${role}-5`, value: rgba(config.theme.colors[role], MID_ALPHA), role, alpha: MID_ALPHA });
|
|
25
|
+
});
|
|
26
|
+
// Black / white overlays for scrims and inverse surfaces.
|
|
27
|
+
out.push({ token: "opacity-black-5", value: "rgba(0, 0, 0, 0.35)", role: "black", alpha: 0.35 });
|
|
28
|
+
out.push({ token: "opacity-black-7", value: "rgba(0, 0, 0, 0.52)", role: "black", alpha: 0.52 });
|
|
29
|
+
out.push({ token: "opacity-white-5", value: "rgba(255, 255, 255, 0.35)", role: "white", alpha: 0.35 });
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
/** The recommended modal/scrim overlay token name. */
|
|
33
|
+
export const SCRIM_TOKEN = "opacity-black-7";
|
|
34
|
+
//# sourceMappingURL=opacity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opacity.js","sourceRoot":"","sources":["../../../../../lib/tokens/opacity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASnC;;;;GAIG;AACH,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAEzF,gFAAgF;AAChF,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,SAAS,IAAI,CAAC,GAAW,EAAE,KAAa;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,GAAG,GAAmB,EAAE,CAAC;IAE/B,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IAEF,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjG,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjG,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvG,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DesignConfig } from "../../lib/config/types.js";
|
|
2
|
+
export interface SpacingToken {
|
|
3
|
+
token: string;
|
|
4
|
+
step: number;
|
|
5
|
+
px: number;
|
|
6
|
+
}
|
|
7
|
+
/** Map the spacing scale into `space-N` tokens. */
|
|
8
|
+
export declare function generateSpacing(spacing: DesignConfig["spacing"]): SpacingToken[];
|
|
9
|
+
export interface RadiusToken {
|
|
10
|
+
token: string;
|
|
11
|
+
px: number | "9999px";
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Radius tokens derived from base radius and style.
|
|
15
|
+
* "pill" forces a large radius for the `radius-pill` token.
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateRadius(radius: DesignConfig["radius"]): RadiusToken[];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Map the spacing scale into `space-N` tokens. */
|
|
2
|
+
export function generateSpacing(spacing) {
|
|
3
|
+
return spacing.scale.map((step) => ({
|
|
4
|
+
token: `space-${step}`,
|
|
5
|
+
step,
|
|
6
|
+
px: Math.round(spacing.baseUnit * step * 100) / 100,
|
|
7
|
+
}));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Radius tokens derived from base radius and style.
|
|
11
|
+
* "pill" forces a large radius for the `radius-pill` token.
|
|
12
|
+
*/
|
|
13
|
+
export function generateRadius(radius) {
|
|
14
|
+
if (radius.style === "sharp") {
|
|
15
|
+
return [
|
|
16
|
+
{ token: "radius-none", px: 0 },
|
|
17
|
+
{ token: "radius-sm", px: 0 },
|
|
18
|
+
{ token: "radius-md", px: 0 },
|
|
19
|
+
{ token: "radius-lg", px: 0 },
|
|
20
|
+
{ token: "radius-pill", px: "9999px" },
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
const base = radius.base;
|
|
24
|
+
return [
|
|
25
|
+
{ token: "radius-none", px: 0 },
|
|
26
|
+
{ token: "radius-sm", px: Math.round(base * 0.5 * 100) / 100 },
|
|
27
|
+
{ token: "radius-md", px: base },
|
|
28
|
+
{ token: "radius-lg", px: Math.round(base * 1.5 * 100) / 100 },
|
|
29
|
+
{ token: "radius-pill", px: radius.style === "pill" ? "9999px" : Math.round(base * 2 * 100) / 100 },
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=spacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing.js","sourceRoot":"","sources":["../../../../../lib/tokens/spacing.ts"],"names":[],"mappings":"AAQA,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,OAAgC;IAC9D,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,SAAS,IAAI,EAAE;QACtB,IAAI;QACJ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;KACpD,CAAC,CAAC,CAAC;AACN,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAA8B;IAC3D,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO;YACL,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/B,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE;YAC7B,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE;YAC7B,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE;YAC7B,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE;SACvC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,OAAO;QACL,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE;QAC/B,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;QAC9D,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE;QAChC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;QAC9D,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;KACpG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DesignConfig } from "../../lib/config/types.js";
|
|
2
|
+
export interface TypeStep {
|
|
3
|
+
/** Token name, e.g. "text-lg" / "text-base". */
|
|
4
|
+
token: string;
|
|
5
|
+
/** Human label, e.g. "H1", "Body". */
|
|
6
|
+
role: string;
|
|
7
|
+
/** Computed size in px (rounded to 0.1). */
|
|
8
|
+
px: number;
|
|
9
|
+
/** Computed size in rem relative to baseSize. */
|
|
10
|
+
rem: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build a modular type scale from baseSize × scaleRatio^n.
|
|
14
|
+
* Negative steps (sm/xs) are baseSize ÷ ratio.
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateTypeScale(typography: DesignConfig["typography"]): TypeStep[];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a modular type scale from baseSize × scaleRatio^n.
|
|
3
|
+
* Negative steps (sm/xs) are baseSize ÷ ratio.
|
|
4
|
+
*/
|
|
5
|
+
export function generateTypeScale(typography) {
|
|
6
|
+
const { baseSize, scaleRatio } = typography;
|
|
7
|
+
const steps = [
|
|
8
|
+
{ token: "text-xs", role: "Caption / fine print", exp: -2 },
|
|
9
|
+
{ token: "text-sm", role: "Small / secondary", exp: -1 },
|
|
10
|
+
{ token: "text-base", role: "Body", exp: 0 },
|
|
11
|
+
{ token: "text-lg", role: "Lead paragraph", exp: 1 },
|
|
12
|
+
{ token: "text-xl", role: "H4", exp: 2 },
|
|
13
|
+
{ token: "text-2xl", role: "H3", exp: 3 },
|
|
14
|
+
{ token: "text-3xl", role: "H2", exp: 4 },
|
|
15
|
+
{ token: "text-4xl", role: "H1", exp: 5 },
|
|
16
|
+
];
|
|
17
|
+
return steps.map(({ token, role, exp }) => {
|
|
18
|
+
const px = Math.round(baseSize * Math.pow(scaleRatio, exp) * 10) / 10;
|
|
19
|
+
const rem = Math.round((px / baseSize) * 1000) / 1000;
|
|
20
|
+
return { token, role, px, rem };
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=typography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.js","sourceRoot":"","sources":["../../../../../lib/tokens/typography.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAsC;IACtE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;IAC5C,MAAM,KAAK,GAAmD;QAC5D,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;QAC3D,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;QACxD,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;QAC5C,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE;QACpD,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;QACxC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;QACzC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;QACzC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;KAC1C,CAAC;IAEF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vinhhypc/config-theme",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Token-driven React components themed at runtime by a ThemeProvider.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"react",
|
|
10
|
+
"components",
|
|
11
|
+
"design-system",
|
|
12
|
+
"design-tokens",
|
|
13
|
+
"theme",
|
|
14
|
+
"ui"
|
|
15
|
+
],
|
|
16
|
+
"homepage": "https://storybook-config-theme.vercel.app",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/vinhhypc/theme_config_v2.git",
|
|
20
|
+
"directory": "packages/theme-ui"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"main": "./dist/components/themed/index.js",
|
|
27
|
+
"module": "./dist/components/themed/index.js",
|
|
28
|
+
"types": "./dist/components/themed/index.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./dist/components/themed/index.d.ts",
|
|
32
|
+
"import": "./dist/components/themed/index.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"react": ">=18",
|
|
40
|
+
"react-dom": ">=18"
|
|
41
|
+
}
|
|
42
|
+
}
|