@synapsly/tokens 0.1.0 → 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 +94 -0
- package/README.zh-CN.md +94 -0
- package/dist/css-vars.css +495 -0
- package/dist/cssVars-edTn7tOU.d.cts +1494 -0
- package/dist/cssVars-edTn7tOU.d.ts +1494 -0
- package/dist/cssVars.cjs +963 -0
- package/dist/cssVars.cjs.map +1 -0
- package/dist/cssVars.d.cts +1 -0
- package/dist/cssVars.d.ts +1 -0
- package/dist/cssVars.js +951 -0
- package/dist/cssVars.js.map +1 -0
- package/dist/index.cjs +150 -47
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -676
- package/dist/index.d.ts +6 -676
- package/dist/index.js +141 -48
- package/dist/index.js.map +1 -1
- package/package.json +10 -2
package/dist/index.js
CHANGED
|
@@ -682,7 +682,60 @@ function getThemeSelector(name) {
|
|
|
682
682
|
return `[${themeAttribute}="${name}"]`;
|
|
683
683
|
}
|
|
684
684
|
|
|
685
|
-
// src/
|
|
685
|
+
// src/createThemeTokens.ts
|
|
686
|
+
function createThemeTokens(base, overrides = {}) {
|
|
687
|
+
return mergeTokens(base, overrides);
|
|
688
|
+
}
|
|
689
|
+
function mergeTokens(base, overrides) {
|
|
690
|
+
if (!isRecord(base) || !isRecord(overrides)) {
|
|
691
|
+
return overrides ?? base;
|
|
692
|
+
}
|
|
693
|
+
const merged = { ...base };
|
|
694
|
+
for (const key of Reflect.ownKeys(overrides)) {
|
|
695
|
+
merged[key] = mergeTokens(base[key], overrides[key]);
|
|
696
|
+
}
|
|
697
|
+
return merged;
|
|
698
|
+
}
|
|
699
|
+
function isRecord(value) {
|
|
700
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
// src/resolveTokenReferences.ts
|
|
704
|
+
function resolveTokenReferences(value, source) {
|
|
705
|
+
if (typeof value === "string") {
|
|
706
|
+
const match = value.match(/^\{(.+)\}$/);
|
|
707
|
+
if (!match) {
|
|
708
|
+
return value;
|
|
709
|
+
}
|
|
710
|
+
const referencePath = match[1];
|
|
711
|
+
if (!referencePath) {
|
|
712
|
+
return value;
|
|
713
|
+
}
|
|
714
|
+
return getPath(source, referencePath);
|
|
715
|
+
}
|
|
716
|
+
if (Array.isArray(value)) {
|
|
717
|
+
return value.map((item) => resolveTokenReferences(item, source));
|
|
718
|
+
}
|
|
719
|
+
if (typeof value === "object" && value !== null) {
|
|
720
|
+
return Object.fromEntries(
|
|
721
|
+
Object.entries(value).map(([key, childValue]) => [
|
|
722
|
+
key,
|
|
723
|
+
resolveTokenReferences(childValue, source)
|
|
724
|
+
])
|
|
725
|
+
);
|
|
726
|
+
}
|
|
727
|
+
return value;
|
|
728
|
+
}
|
|
729
|
+
function getPath(source, path) {
|
|
730
|
+
return path.split(".").reduce((current, segment) => {
|
|
731
|
+
if (typeof current !== "object" || current === null || !(segment in current)) {
|
|
732
|
+
throw new Error(`Unable to resolve token reference: {${path}}`);
|
|
733
|
+
}
|
|
734
|
+
return current[segment];
|
|
735
|
+
}, source);
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
// src/semanticTokenReferences.ts
|
|
686
739
|
var defaultLightSemanticTokenReferences = {
|
|
687
740
|
color: {
|
|
688
741
|
bg: {
|
|
@@ -1214,6 +1267,8 @@ var defaultDarkSemanticTokenReferences = {
|
|
|
1214
1267
|
}
|
|
1215
1268
|
}
|
|
1216
1269
|
};
|
|
1270
|
+
|
|
1271
|
+
// src/semanticTokens.ts
|
|
1217
1272
|
var defaultLightSemanticTokens = resolveTokenReferences(
|
|
1218
1273
|
defaultLightSemanticTokenReferences,
|
|
1219
1274
|
{ primitive: primitiveVars }
|
|
@@ -1261,39 +1316,6 @@ var defaultTokenReferences = {
|
|
|
1261
1316
|
primitive: primitiveTokens,
|
|
1262
1317
|
semantic: defaultSemanticTokenReferences
|
|
1263
1318
|
};
|
|
1264
|
-
function resolveTokenReferences(value, source) {
|
|
1265
|
-
if (typeof value === "string") {
|
|
1266
|
-
const match = value.match(/^\{(.+)\}$/);
|
|
1267
|
-
if (!match) {
|
|
1268
|
-
return value;
|
|
1269
|
-
}
|
|
1270
|
-
const referencePath = match[1];
|
|
1271
|
-
if (!referencePath) {
|
|
1272
|
-
return value;
|
|
1273
|
-
}
|
|
1274
|
-
return getPath(source, referencePath);
|
|
1275
|
-
}
|
|
1276
|
-
if (Array.isArray(value)) {
|
|
1277
|
-
return value.map((item) => resolveTokenReferences(item, source));
|
|
1278
|
-
}
|
|
1279
|
-
if (typeof value === "object" && value !== null) {
|
|
1280
|
-
return Object.fromEntries(
|
|
1281
|
-
Object.entries(value).map(([key, childValue]) => [
|
|
1282
|
-
key,
|
|
1283
|
-
resolveTokenReferences(childValue, source)
|
|
1284
|
-
])
|
|
1285
|
-
);
|
|
1286
|
-
}
|
|
1287
|
-
return value;
|
|
1288
|
-
}
|
|
1289
|
-
function getPath(source, path) {
|
|
1290
|
-
return path.split(".").reduce((current, segment) => {
|
|
1291
|
-
if (typeof current !== "object" || current === null || !(segment in current)) {
|
|
1292
|
-
throw new Error(`Unable to resolve token reference: {${path}}`);
|
|
1293
|
-
}
|
|
1294
|
-
return current[segment];
|
|
1295
|
-
}, source);
|
|
1296
|
-
}
|
|
1297
1319
|
|
|
1298
1320
|
// src/createTheme.ts
|
|
1299
1321
|
function createTheme(options) {
|
|
@@ -1312,25 +1334,96 @@ function createTheme(options) {
|
|
|
1312
1334
|
selector
|
|
1313
1335
|
};
|
|
1314
1336
|
}
|
|
1315
|
-
|
|
1316
|
-
|
|
1337
|
+
var createVanillaThemeForSemantic = createTheme$1;
|
|
1338
|
+
var createGlobalThemeForSemantic = createGlobalTheme;
|
|
1339
|
+
var themeContractForTheme = themeContract;
|
|
1340
|
+
|
|
1341
|
+
// src/cssVars.ts
|
|
1342
|
+
var cssVarPrefix = "synapsly";
|
|
1343
|
+
var defaultResolvedLightCssTokens = resolveTokenReferences(
|
|
1344
|
+
defaultLightSemanticTokenReferences,
|
|
1345
|
+
{
|
|
1346
|
+
primitive: primitiveTokens
|
|
1347
|
+
}
|
|
1348
|
+
);
|
|
1349
|
+
var defaultResolvedDarkCssTokens = resolveTokenReferences(
|
|
1350
|
+
defaultDarkSemanticTokenReferences,
|
|
1351
|
+
{
|
|
1352
|
+
primitive: primitiveTokens
|
|
1353
|
+
}
|
|
1354
|
+
);
|
|
1355
|
+
var defaultResolvedCssTokens = defaultResolvedLightCssTokens;
|
|
1356
|
+
var cssVars = createCssVarReferences(defaultResolvedLightCssTokens);
|
|
1357
|
+
function createCssThemeTokens(base, overrides = {}) {
|
|
1358
|
+
return createThemeTokens(base, overrides);
|
|
1317
1359
|
}
|
|
1318
|
-
function
|
|
1319
|
-
|
|
1320
|
-
|
|
1360
|
+
function createCssTheme(options) {
|
|
1361
|
+
const tokens = createCssThemeTokens(
|
|
1362
|
+
options.tokens ?? defaultResolvedLightCssTokens,
|
|
1363
|
+
options.overrides ?? {}
|
|
1364
|
+
);
|
|
1365
|
+
const selector = options.selector ?? getThemeSelector(options.name);
|
|
1366
|
+
return {
|
|
1367
|
+
attributes: {
|
|
1368
|
+
[themeAttribute]: options.name
|
|
1369
|
+
},
|
|
1370
|
+
cssText: createCssThemeRule(selector, tokens),
|
|
1371
|
+
name: options.name,
|
|
1372
|
+
selector
|
|
1373
|
+
};
|
|
1374
|
+
}
|
|
1375
|
+
function createCssThemeRule(selector, tokens) {
|
|
1376
|
+
const declarations = flattenTokenEntries(tokens).map(([path, value]) => ` ${getCssVarName(path)}: ${value};`).join("\n");
|
|
1377
|
+
return `${selector} {
|
|
1378
|
+
${declarations}
|
|
1379
|
+
}`;
|
|
1380
|
+
}
|
|
1381
|
+
function createDefaultCssThemes() {
|
|
1382
|
+
return [
|
|
1383
|
+
createCssThemeRule(
|
|
1384
|
+
`:root, ${getThemeSelector(themeNames.light)}`,
|
|
1385
|
+
defaultResolvedLightCssTokens
|
|
1386
|
+
),
|
|
1387
|
+
createCssThemeRule(getThemeSelector(themeNames.dark), defaultResolvedDarkCssTokens)
|
|
1388
|
+
].join("\n\n");
|
|
1389
|
+
}
|
|
1390
|
+
function getCssVarName(path) {
|
|
1391
|
+
return `--${[cssVarPrefix, ...path.map(toKebabCase)].join("-")}`;
|
|
1392
|
+
}
|
|
1393
|
+
function createCssVarReferences(tokens) {
|
|
1394
|
+
return mapTokenLeaves(tokens, (path) => `var(${getCssVarName(path)})`);
|
|
1395
|
+
}
|
|
1396
|
+
function mapTokenLeaves(value, mapper, path = []) {
|
|
1397
|
+
if (typeof value === "string") {
|
|
1398
|
+
return mapper(path);
|
|
1321
1399
|
}
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1400
|
+
if (isRecord2(value)) {
|
|
1401
|
+
return Object.fromEntries(
|
|
1402
|
+
Object.entries(value).map(([key, childValue]) => [
|
|
1403
|
+
key,
|
|
1404
|
+
mapTokenLeaves(childValue, mapper, [...path, key])
|
|
1405
|
+
])
|
|
1406
|
+
);
|
|
1325
1407
|
}
|
|
1326
|
-
return
|
|
1408
|
+
return value;
|
|
1327
1409
|
}
|
|
1328
|
-
function
|
|
1410
|
+
function flattenTokenEntries(value, path = []) {
|
|
1411
|
+
if (typeof value === "string") {
|
|
1412
|
+
return [[path, value]];
|
|
1413
|
+
}
|
|
1414
|
+
if (isRecord2(value)) {
|
|
1415
|
+
return Object.entries(value).flatMap(
|
|
1416
|
+
([key, childValue]) => flattenTokenEntries(childValue, [...path, key])
|
|
1417
|
+
);
|
|
1418
|
+
}
|
|
1419
|
+
return [];
|
|
1420
|
+
}
|
|
1421
|
+
function toKebabCase(value) {
|
|
1422
|
+
return value.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[^a-zA-Z0-9-]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
|
|
1423
|
+
}
|
|
1424
|
+
function isRecord2(value) {
|
|
1329
1425
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1330
1426
|
}
|
|
1331
|
-
var createVanillaThemeForSemantic = createTheme$1;
|
|
1332
|
-
var createGlobalThemeForSemantic = createGlobalTheme;
|
|
1333
|
-
var themeContractForTheme = themeContract;
|
|
1334
1427
|
|
|
1335
1428
|
// src/defaultTheme.css.ts
|
|
1336
1429
|
var defaultDarkTheme = { attributes: { "data-theme": "dark" }, className: "defaultTheme__eb1mul1", name: "dark", selector: '[data-theme="dark"]' };
|
|
@@ -1339,6 +1432,6 @@ var defaultLightTheme = { attributes: { "data-theme": "light" }, className: "def
|
|
|
1339
1432
|
var defaultLightThemeClass = "defaultTheme__eb1mul0";
|
|
1340
1433
|
var defaultThemeClass = "defaultTheme__eb1mul0";
|
|
1341
1434
|
|
|
1342
|
-
export { createTheme, createThemeTokens, defaultDarkSemanticTokenReferences, defaultDarkSemanticTokens, defaultDarkTheme, defaultDarkThemeClass, defaultDarkTokenReferences, defaultDarkTokens, defaultLightSemanticTokenReferences, defaultLightSemanticTokens, defaultLightTheme, defaultLightThemeClass, defaultLightTokenReferences, defaultLightTokens, defaultResolvedDarkSemanticTokens, defaultResolvedLightSemanticTokens, defaultResolvedSemanticTokens, defaultSemanticTokenReferences, defaultSemanticTokens, defaultThemeClass, defaultTokenReferences, defaultTokens, getThemeSelector, primitiveTokens, primitiveVars, semanticContract, semanticVars, themeAttribute, themeNames, vars };
|
|
1435
|
+
export { createCssTheme, createCssThemeRule, createCssThemeTokens, createDefaultCssThemes, createTheme, createThemeTokens, cssVarPrefix, cssVars, defaultDarkSemanticTokenReferences, defaultDarkSemanticTokens, defaultDarkTheme, defaultDarkThemeClass, defaultDarkTokenReferences, defaultDarkTokens, defaultLightSemanticTokenReferences, defaultLightSemanticTokens, defaultLightTheme, defaultLightThemeClass, defaultLightTokenReferences, defaultLightTokens, defaultResolvedCssTokens, defaultResolvedDarkCssTokens, defaultResolvedDarkSemanticTokens, defaultResolvedLightCssTokens, defaultResolvedLightSemanticTokens, defaultResolvedSemanticTokens, defaultSemanticTokenReferences, defaultSemanticTokens, defaultThemeClass, defaultTokenReferences, defaultTokens, getCssVarName, getThemeSelector, primitiveTokens, primitiveVars, semanticContract, semanticVars, themeAttribute, themeNames, vars };
|
|
1343
1436
|
//# sourceMappingURL=index.js.map
|
|
1344
1437
|
//# sourceMappingURL=index.js.map
|