@echothink-ui/style 0.2.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 +5 -0
- package/dist/index.cjs +216 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +1015 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
- package/src/base-roles.css +175 -0
- package/src/carbon-bridge.css +109 -0
- package/src/density.css +32 -0
- package/src/index.tsx +207 -0
- package/src/palettes.css +51 -0
- package/src/presets.css +617 -0
- package/src/primitives.css +82 -0
- package/src/styles.css +22 -0
- package/src/type-scale.css +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# @echothink-ui/style
|
|
2
|
+
|
|
3
|
+
Curated visual style presets for EchoThink UI.
|
|
4
|
+
|
|
5
|
+
Use `StyleScope` or the exported preset class helpers to apply one complete style preset to a subtree. Components consume the resulting CSS variables and do not need to know which preset produced them.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.tsx
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
StyleScope: () => StyleScope,
|
|
34
|
+
composeEthStylePresetClassName: () => composeEthStylePresetClassName,
|
|
35
|
+
defaultPalette: () => defaultPalette,
|
|
36
|
+
defaultStylePreset: () => defaultStylePreset,
|
|
37
|
+
ethDensityModes: () => ethDensityModes,
|
|
38
|
+
ethPalettes: () => ethPalettes,
|
|
39
|
+
ethStylePresetCarbonThemes: () => ethStylePresetCarbonThemes,
|
|
40
|
+
ethStylePresetDescriptions: () => ethStylePresetDescriptions,
|
|
41
|
+
ethStylePresetLabels: () => ethStylePresetLabels,
|
|
42
|
+
ethStylePresetModes: () => ethStylePresetModes,
|
|
43
|
+
ethStylePresets: () => ethStylePresets,
|
|
44
|
+
ethTypeScales: () => ethTypeScales,
|
|
45
|
+
getEthPaletteClassName: () => getEthPaletteClassName,
|
|
46
|
+
getEthStyleCarbonTheme: () => getEthStyleCarbonTheme,
|
|
47
|
+
getEthStyleMode: () => getEthStyleMode,
|
|
48
|
+
getEthStylePresetClassName: () => getEthStylePresetClassName,
|
|
49
|
+
getEthStylePresetDataAttribute: () => getEthStylePresetDataAttribute,
|
|
50
|
+
isEthPalette: () => isEthPalette,
|
|
51
|
+
isEthStylePreset: () => isEthStylePreset
|
|
52
|
+
});
|
|
53
|
+
module.exports = __toCommonJS(index_exports);
|
|
54
|
+
var React = __toESM(require("react"), 1);
|
|
55
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
56
|
+
var ethStylePresets = [
|
|
57
|
+
"carbon-like",
|
|
58
|
+
"soft-card",
|
|
59
|
+
"glass",
|
|
60
|
+
"bright",
|
|
61
|
+
"studio-dark"
|
|
62
|
+
];
|
|
63
|
+
var defaultStylePreset = "carbon-like";
|
|
64
|
+
var ethStylePresetLabels = {
|
|
65
|
+
"carbon-like": "Carbon-like",
|
|
66
|
+
"soft-card": "Soft card",
|
|
67
|
+
glass: "Liquid glass",
|
|
68
|
+
bright: "Bright",
|
|
69
|
+
"studio-dark": "Studio dark"
|
|
70
|
+
};
|
|
71
|
+
var ethStylePresetDescriptions = {
|
|
72
|
+
"carbon-like": "Square, flat Carbon-inspired surfaces.",
|
|
73
|
+
"soft-card": "Soft radius with quiet card elevation.",
|
|
74
|
+
glass: "Layered translucent surfaces with strong blur, highlights, and depth.",
|
|
75
|
+
bright: "High-key SaaS surfaces with crisp contrast.",
|
|
76
|
+
"studio-dark": "Dark workbench surfaces for dense tools."
|
|
77
|
+
};
|
|
78
|
+
var ethStylePresetModes = {
|
|
79
|
+
"carbon-like": "light",
|
|
80
|
+
"soft-card": "light",
|
|
81
|
+
glass: "light",
|
|
82
|
+
bright: "light",
|
|
83
|
+
"studio-dark": "dark"
|
|
84
|
+
};
|
|
85
|
+
var ethStylePresetCarbonThemes = {
|
|
86
|
+
"carbon-like": "white",
|
|
87
|
+
"soft-card": "white",
|
|
88
|
+
glass: "white",
|
|
89
|
+
bright: "white",
|
|
90
|
+
"studio-dark": "g100"
|
|
91
|
+
};
|
|
92
|
+
var ethPalettes = ["default"];
|
|
93
|
+
var defaultPalette = "default";
|
|
94
|
+
var presetSet = new Set(ethStylePresets);
|
|
95
|
+
var paletteSet = new Set(ethPalettes);
|
|
96
|
+
function joinClassNames(...values) {
|
|
97
|
+
return values.filter(Boolean).join(" ");
|
|
98
|
+
}
|
|
99
|
+
function isEthStylePreset(value) {
|
|
100
|
+
return presetSet.has(value);
|
|
101
|
+
}
|
|
102
|
+
function isEthPalette(value) {
|
|
103
|
+
return paletteSet.has(value);
|
|
104
|
+
}
|
|
105
|
+
function getEthStylePresetClassName(preset = defaultStylePreset) {
|
|
106
|
+
return `eth-style-${preset}`;
|
|
107
|
+
}
|
|
108
|
+
function getEthPaletteClassName(palette = defaultPalette) {
|
|
109
|
+
return `eth-palette-${palette}`;
|
|
110
|
+
}
|
|
111
|
+
function getEthStylePresetDataAttribute(preset = defaultStylePreset) {
|
|
112
|
+
return preset;
|
|
113
|
+
}
|
|
114
|
+
function getEthStyleMode(preset = defaultStylePreset) {
|
|
115
|
+
return ethStylePresetModes[preset];
|
|
116
|
+
}
|
|
117
|
+
function getEthStyleCarbonTheme(preset = defaultStylePreset) {
|
|
118
|
+
return ethStylePresetCarbonThemes[preset];
|
|
119
|
+
}
|
|
120
|
+
function composeEthStylePresetClassName(preset = defaultStylePreset, className) {
|
|
121
|
+
return joinClassNames(getEthStylePresetClassName(preset), className);
|
|
122
|
+
}
|
|
123
|
+
var ethDensityModes = ["compact", "standard", "comfortable"];
|
|
124
|
+
var ethTypeScales = ["compact", "standard", "large"];
|
|
125
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React.useLayoutEffect : React.useEffect;
|
|
126
|
+
function applyGlobalTheme(preset, palette, density, typeScale) {
|
|
127
|
+
if (typeof document === "undefined") return void 0;
|
|
128
|
+
const root = document.documentElement;
|
|
129
|
+
const presetClass = getEthStylePresetClassName(preset);
|
|
130
|
+
const paletteClass = getEthPaletteClassName(palette);
|
|
131
|
+
const desiredAttrs = {
|
|
132
|
+
"data-eth-palette": palette,
|
|
133
|
+
"data-eth-style-preset": getEthStylePresetDataAttribute(preset),
|
|
134
|
+
"data-eth-mode": getEthStyleMode(preset),
|
|
135
|
+
"data-carbon-theme": getEthStyleCarbonTheme(preset),
|
|
136
|
+
"data-eth-density": density === "standard" ? null : density,
|
|
137
|
+
"data-eth-type": typeScale === "standard" ? null : typeScale
|
|
138
|
+
};
|
|
139
|
+
const removedClasses = Array.from(root.classList).filter(
|
|
140
|
+
(c) => c.startsWith("eth-style-") || c.startsWith("eth-palette-")
|
|
141
|
+
);
|
|
142
|
+
const prevAttrs = {};
|
|
143
|
+
Object.keys(desiredAttrs).forEach((key) => {
|
|
144
|
+
prevAttrs[key] = root.getAttribute(key);
|
|
145
|
+
});
|
|
146
|
+
removedClasses.forEach((c) => root.classList.remove(c));
|
|
147
|
+
root.classList.add(paletteClass, presetClass);
|
|
148
|
+
Object.entries(desiredAttrs).forEach(([key, value]) => {
|
|
149
|
+
if (value === null) root.removeAttribute(key);
|
|
150
|
+
else root.setAttribute(key, value);
|
|
151
|
+
});
|
|
152
|
+
return () => {
|
|
153
|
+
root.classList.remove(paletteClass, presetClass);
|
|
154
|
+
removedClasses.forEach((c) => root.classList.add(c));
|
|
155
|
+
Object.entries(prevAttrs).forEach(([key, value]) => {
|
|
156
|
+
if (value === null) root.removeAttribute(key);
|
|
157
|
+
else root.setAttribute(key, value);
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function StyleScope({
|
|
162
|
+
preset = defaultStylePreset,
|
|
163
|
+
palette = defaultPalette,
|
|
164
|
+
density = "standard",
|
|
165
|
+
typeScale = "standard",
|
|
166
|
+
global = true,
|
|
167
|
+
className,
|
|
168
|
+
children,
|
|
169
|
+
...props
|
|
170
|
+
}) {
|
|
171
|
+
useIsomorphicLayoutEffect(() => {
|
|
172
|
+
if (!global) return void 0;
|
|
173
|
+
return applyGlobalTheme(preset, palette, density, typeScale);
|
|
174
|
+
}, [global, preset, palette, density, typeScale]);
|
|
175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
176
|
+
"div",
|
|
177
|
+
{
|
|
178
|
+
...props,
|
|
179
|
+
className: joinClassNames(
|
|
180
|
+
getEthPaletteClassName(palette),
|
|
181
|
+
getEthStylePresetClassName(preset),
|
|
182
|
+
className
|
|
183
|
+
),
|
|
184
|
+
"data-eth-palette": palette,
|
|
185
|
+
"data-eth-style-preset": getEthStylePresetDataAttribute(preset),
|
|
186
|
+
"data-eth-mode": getEthStyleMode(preset),
|
|
187
|
+
"data-carbon-theme": getEthStyleCarbonTheme(preset),
|
|
188
|
+
"data-eth-density": density === "standard" ? void 0 : density,
|
|
189
|
+
"data-eth-type": typeScale === "standard" ? void 0 : typeScale,
|
|
190
|
+
children
|
|
191
|
+
}
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
195
|
+
0 && (module.exports = {
|
|
196
|
+
StyleScope,
|
|
197
|
+
composeEthStylePresetClassName,
|
|
198
|
+
defaultPalette,
|
|
199
|
+
defaultStylePreset,
|
|
200
|
+
ethDensityModes,
|
|
201
|
+
ethPalettes,
|
|
202
|
+
ethStylePresetCarbonThemes,
|
|
203
|
+
ethStylePresetDescriptions,
|
|
204
|
+
ethStylePresetLabels,
|
|
205
|
+
ethStylePresetModes,
|
|
206
|
+
ethStylePresets,
|
|
207
|
+
ethTypeScales,
|
|
208
|
+
getEthPaletteClassName,
|
|
209
|
+
getEthStyleCarbonTheme,
|
|
210
|
+
getEthStyleMode,
|
|
211
|
+
getEthStylePresetClassName,
|
|
212
|
+
getEthStylePresetDataAttribute,
|
|
213
|
+
isEthPalette,
|
|
214
|
+
isEthStylePreset
|
|
215
|
+
});
|
|
216
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport \"./styles.css\";\n\nexport const ethStylePresets = [\n \"carbon-like\",\n \"soft-card\",\n \"glass\",\n \"bright\",\n \"studio-dark\"\n] as const;\n\nexport type EthStylePreset = (typeof ethStylePresets)[number];\n\nexport const defaultStylePreset: EthStylePreset = \"carbon-like\";\n\nexport const ethStylePresetLabels: Record<EthStylePreset, string> = {\n \"carbon-like\": \"Carbon-like\",\n \"soft-card\": \"Soft card\",\n glass: \"Liquid glass\",\n bright: \"Bright\",\n \"studio-dark\": \"Studio dark\"\n};\n\nexport const ethStylePresetDescriptions: Record<EthStylePreset, string> = {\n \"carbon-like\": \"Square, flat Carbon-inspired surfaces.\",\n \"soft-card\": \"Soft radius with quiet card elevation.\",\n glass: \"Layered translucent surfaces with strong blur, highlights, and depth.\",\n bright: \"High-key SaaS surfaces with crisp contrast.\",\n \"studio-dark\": \"Dark workbench surfaces for dense tools.\"\n};\n\n/** Light/dark mode per preset. Drives the Carbon theme bundle + data-eth-mode. */\nexport const ethStylePresetModes: Record<EthStylePreset, \"light\" | \"dark\"> = {\n \"carbon-like\": \"light\",\n \"soft-card\": \"light\",\n glass: \"light\",\n bright: \"light\",\n \"studio-dark\": \"dark\"\n};\n\n/**\n * Carbon theme bundle per preset (Part A \"theme-bundle base\"). Light presets\n * base on the white bundle; studio-dark bases on g100 so every Carbon token\n * the bridge does not re-point still resolves to a correct dark value.\n */\nexport const ethStylePresetCarbonThemes: Record<EthStylePreset, string> = {\n \"carbon-like\": \"white\",\n \"soft-card\": \"white\",\n glass: \"white\",\n bright: \"white\",\n \"studio-dark\": \"g100\"\n};\n\nexport const ethPalettes = [\"default\"] as const;\nexport type EthPalette = (typeof ethPalettes)[number];\nexport const defaultPalette: EthPalette = \"default\";\n\nconst presetSet = new Set<string>(ethStylePresets);\nconst paletteSet = new Set<string>(ethPalettes);\n\nfunction joinClassNames(...values: Array<string | undefined | false>) {\n return values.filter(Boolean).join(\" \");\n}\n\nexport function isEthStylePreset(value: string): value is EthStylePreset {\n return presetSet.has(value);\n}\n\nexport function isEthPalette(value: string): value is EthPalette {\n return paletteSet.has(value);\n}\n\nexport function getEthStylePresetClassName(preset: EthStylePreset = defaultStylePreset) {\n return `eth-style-${preset}`;\n}\n\nexport function getEthPaletteClassName(palette: EthPalette = defaultPalette) {\n return `eth-palette-${palette}`;\n}\n\nexport function getEthStylePresetDataAttribute(preset: EthStylePreset = defaultStylePreset) {\n return preset;\n}\n\nexport function getEthStyleMode(preset: EthStylePreset = defaultStylePreset) {\n return ethStylePresetModes[preset];\n}\n\nexport function getEthStyleCarbonTheme(preset: EthStylePreset = defaultStylePreset) {\n return ethStylePresetCarbonThemes[preset];\n}\n\nexport function composeEthStylePresetClassName(\n preset: EthStylePreset = defaultStylePreset,\n className?: string\n) {\n return joinClassNames(getEthStylePresetClassName(preset), className);\n}\n\nexport const ethDensityModes = [\"compact\", \"standard\", \"comfortable\"] as const;\nexport type EthDensityMode = (typeof ethDensityModes)[number];\n\nexport const ethTypeScales = [\"compact\", \"standard\", \"large\"] as const;\nexport type EthTypeScale = (typeof ethTypeScales)[number];\n\nexport interface StyleScopeProps extends React.HTMLAttributes<HTMLDivElement> {\n preset?: EthStylePreset;\n /** Palette of raw color assets the preset maps from. */\n palette?: EthPalette;\n /** Orthogonal spacing axis. \"standard\" emits no attribute (token defaults). */\n density?: EthDensityMode;\n /** Orthogonal typography scale axis. \"standard\" emits no attribute. */\n typeScale?: EthTypeScale;\n /**\n * Also mirror the preset/palette/Carbon-theme onto the document root so\n * PORTALED Carbon content (modals, dropdown menus, tooltips, toasts mounted\n * at document.body, outside this wrapper) inherits the theme instead of\n * falling back to default Carbon. Defaults to true.\n */\n global?: boolean;\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nfunction applyGlobalTheme(\n preset: EthStylePreset,\n palette: EthPalette,\n density: EthDensityMode,\n typeScale: EthTypeScale\n) {\n if (typeof document === \"undefined\") return undefined;\n const root = document.documentElement;\n\n const presetClass = getEthStylePresetClassName(preset);\n const paletteClass = getEthPaletteClassName(palette);\n\n // Desired attributes; a null value means \"remove the attribute\".\n const desiredAttrs: Record<string, string | null> = {\n \"data-eth-palette\": palette,\n \"data-eth-style-preset\": getEthStylePresetDataAttribute(preset),\n \"data-eth-mode\": getEthStyleMode(preset),\n \"data-carbon-theme\": getEthStyleCarbonTheme(preset),\n \"data-eth-density\": density === \"standard\" ? null : density,\n \"data-eth-type\": typeScale === \"standard\" ? null : typeScale\n };\n\n // Snapshot prior preset/palette classes and the attributes we touch.\n const removedClasses = Array.from(root.classList).filter(\n (c) => c.startsWith(\"eth-style-\") || c.startsWith(\"eth-palette-\")\n );\n const prevAttrs: Record<string, string | null> = {};\n Object.keys(desiredAttrs).forEach((key) => {\n prevAttrs[key] = root.getAttribute(key);\n });\n\n removedClasses.forEach((c) => root.classList.remove(c));\n root.classList.add(paletteClass, presetClass);\n Object.entries(desiredAttrs).forEach(([key, value]) => {\n if (value === null) root.removeAttribute(key);\n else root.setAttribute(key, value);\n });\n\n return () => {\n root.classList.remove(paletteClass, presetClass);\n removedClasses.forEach((c) => root.classList.add(c));\n Object.entries(prevAttrs).forEach(([key, value]) => {\n if (value === null) root.removeAttribute(key);\n else root.setAttribute(key, value);\n });\n };\n}\n\nexport function StyleScope({\n preset = defaultStylePreset,\n palette = defaultPalette,\n density = \"standard\",\n typeScale = \"standard\",\n global = true,\n className,\n children,\n ...props\n}: StyleScopeProps) {\n useIsomorphicLayoutEffect(() => {\n if (!global) return undefined;\n return applyGlobalTheme(preset, palette, density, typeScale);\n }, [global, preset, palette, density, typeScale]);\n\n return (\n <div\n {...props}\n className={joinClassNames(\n getEthPaletteClassName(palette),\n getEthStylePresetClassName(preset),\n className\n )}\n data-eth-palette={palette}\n data-eth-style-preset={getEthStylePresetDataAttribute(preset)}\n data-eth-mode={getEthStyleMode(preset)}\n data-carbon-theme={getEthStyleCarbonTheme(preset)}\n data-eth-density={density === \"standard\" ? undefined : density}\n data-eth-type={typeScale === \"standard\" ? undefined : typeScale}\n >\n {children}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|