@rojaostudio/ds-core 1.1.0-next.12 → 1.1.0-next.13

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.
@@ -992,8 +992,17 @@ var ROLES = [
992
992
  ["colors/state/neutral-strong", "d", "d"],
993
993
  ["text/on/primary-subtle", "d", "b"],
994
994
  ["surface/tint/subtle", "d", "b"],
995
- ["border/error", "d", "d"]
995
+ ["border/error", "d", "d"],
996
+ ["surface/attention/low", "p", "p"],
997
+ ["surface/attention/medium", "p", "p"],
998
+ ["surface/attention/high", "p", "p"]
996
999
  ];
1000
+ var amber = palettes.amber;
1001
+ var ATTENTION = {
1002
+ "surface/attention/low": amber[100],
1003
+ "surface/attention/medium": amber[200],
1004
+ "surface/attention/high": amber[400]
1005
+ };
997
1006
  var awayFrom = (bg) => contrastRatio(bg, BLACK) >= contrastRatio(bg, WHITE) ? "darker" : "lighter";
998
1007
  var TINT_DEFAULT = 200;
999
1008
  var lighterStep = (s) => s - 100 ;
@@ -1023,7 +1032,7 @@ function generateRdsTheme(def, opts = {}) {
1023
1032
  }
1024
1033
  } else heading = readableFrom(P.base, P.scale, lightBgs, "darker", BLACK);
1025
1034
  const invert = b.invert ? ramp(b.invert, own).base : WHITE;
1026
- const l = {
1035
+ const l = __spreadValues({
1027
1036
  "colors/primary/light": P.scale[500],
1028
1037
  "colors/primary/default": P.base,
1029
1038
  "colors/primary/dark": P.scale[900],
@@ -1110,7 +1119,7 @@ function generateRdsTheme(def, opts = {}) {
1110
1119
  "logo/inverse": WHITE,
1111
1120
  "logo/inverse-signature": WHITE,
1112
1121
  "social/ink": BLACK
1113
- };
1122
+ }, ATTENTION);
1114
1123
  const single = !b.secondary;
1115
1124
  const K = single ? N : P.scale;
1116
1125
  if (single) {
@@ -1340,7 +1349,7 @@ function generateRdsTheme(def, opts = {}) {
1340
1349
  plateOwn["chart/series/1"] = readableFrom(d["chart/series/1"], P.scale, plateBgs, awayFrom(plate), ink, NON_TEXT);
1341
1350
  plateOwn["colors/state/neutral-strong"] = readableFrom(d["colors/state/neutral-strong"], N, plateBgs, awayFrom(plate), ink, NON_TEXT);
1342
1351
  for (const logo of ["logo/primary", "logo/signature", "logo/accent", "logo/mono", "social/ink"]) plateOwn[logo] = ink;
1343
- const fixed = { "colors/state/error-strong": red[700] };
1352
+ const fixed = __spreadValues({ "colors/state/error-strong": red[700] }, ATTENTION);
1344
1353
  const out = { light: {}, dark: {}, brand: {} };
1345
1354
  const pick = (src, role) => {
1346
1355
  var _a2;
@@ -1472,7 +1481,11 @@ var RDS_CONTRAST_PAIRS = [
1472
1481
  ["text/success", "surface/card"],
1473
1482
  ["text/info", "surface/info"],
1474
1483
  ["text/warning", "surface/warning"],
1475
- ["text/neutral", "surface/neutral"]
1484
+ ["text/neutral", "surface/neutral"],
1485
+ // The attention Banner: text/on/warning on its three levels.
1486
+ ["text/on/warning", "surface/attention/low"],
1487
+ ["text/on/warning", "surface/attention/medium"],
1488
+ ["text/on/warning", "surface/attention/high"]
1476
1489
  ];
1477
1490
  var RDS_NON_TEXT_PAIRS = [
1478
1491
  ["border/strong", "surface/card"],
@@ -1540,6 +1553,11 @@ function rdsThemeFromTable(table, opts = {}) {
1540
1553
  ref2 = roles[added];
1541
1554
  derived.add(role);
1542
1555
  }
1556
+ if (ref2 === void 0 && ATTENTION[role] !== void 0) {
1557
+ out[mode][roleVar(role)] = ATTENTION[role];
1558
+ derived.add(role);
1559
+ continue;
1560
+ }
1543
1561
  if (ref2 === void 0) problems.push(`${mode}: role "${role}" is missing`);
1544
1562
  else if (isColourRef(ref2)) {
1545
1563
  const value = table.primitives[ref2];
@@ -1567,7 +1585,9 @@ function rdsThemeFromTable(table, opts = {}) {
1567
1585
  const warn = (_c = opts.warn) != null ? _c : defaultWarn;
1568
1586
  if (derived.size)
1569
1587
  warn(
1570
- `${where}: the table was exported before ${[...derived].map((r) => `"${r}"`).join(", ")} existed in the [RDS] theme. Taken from the tokens Figma aliases it to (` + [...derived].map((r) => Object.entries(ADDED_ROLES[r]).map(([m, src]) => `${m}: ${src}`).join(", ")).join("; ") + `). Export the table again with figma/export-brand.js.`
1588
+ `${where}: the table was exported before ${[...derived].map((r) => `"${r}"`).join(", ")} existed in the [RDS] theme. Taken from the tokens Figma aliases it to (` + [...derived].map(
1589
+ (r) => ADDED_ROLES[r] ? Object.entries(ADDED_ROLES[r]).map(([m, src]) => `${m}: ${src}`).join(", ") : `${r}: ${ATTENTION[r]} in every mode`
1590
+ ).join("; ") + `). Export the table again with figma/export-brand.js.`
1571
1591
  );
1572
1592
  const fails = rdsContrastReport(out);
1573
1593
  if (fails.length)
package/dist/generate.js CHANGED
@@ -1,3 +1,3 @@
1
- export { RDS_CONTRAST_PAIRS, RDS_NON_TEXT_PAIRS, ROLES as RDS_ROLES, RDS_SCOPE_SELECTORS, RDS_TOKEN_SCOPE, RdsValidationError, SCALE_STEPS, brandTones, buildScale, contrastRatio, emitClaudeMd, emitCss, emitRdsCss, generateRdsTheme, generateTheme, hexToHsl, hslToHex, isHex, isNeutralBrand, isSafeColor, isSafeFont, isSafeVarName, onColor, rdsContrast, rdsContrastReport, rdsThemeFromTable, refToHex, relativeLuminance, resolveTheme, roleVar } from './chunk-NVYJME6V.js';
1
+ export { RDS_CONTRAST_PAIRS, RDS_NON_TEXT_PAIRS, ROLES as RDS_ROLES, RDS_SCOPE_SELECTORS, RDS_TOKEN_SCOPE, RdsValidationError, SCALE_STEPS, brandTones, buildScale, contrastRatio, emitClaudeMd, emitCss, emitRdsCss, generateRdsTheme, generateTheme, hexToHsl, hslToHex, isHex, isNeutralBrand, isSafeColor, isSafeFont, isSafeVarName, onColor, rdsContrast, rdsContrastReport, rdsThemeFromTable, refToHex, relativeLuminance, resolveTheme, roleVar } from './chunk-DVJ4TGPZ.js';
2
2
  import './chunk-FRWRLCYM.js';
3
3
  import './chunk-ORMEWXMH.js';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { recipes } from './chunk-PV6GFEAM.js';
2
- export { RDS_CONTRAST_PAIRS, RDS_NON_TEXT_PAIRS, ROLES as RDS_ROLES, RDS_SCOPE_SELECTORS, RDS_TOKEN_SCOPE, RdsValidationError, SCALE_STEPS, brandTones, buildScale, contrastRatio, emitClaudeMd, emitCss, emitRdsCss, generateRdsTheme, generateTheme, hexToHsl, hslToHex, isHex, isNeutralBrand, isSafeColor, isSafeFont, isSafeVarName, onColor, rdsContrast, rdsContrastReport, rdsThemeFromTable, refToHex, relativeLuminance, resolveTheme, roleVar } from './chunk-NVYJME6V.js';
2
+ export { RDS_CONTRAST_PAIRS, RDS_NON_TEXT_PAIRS, ROLES as RDS_ROLES, RDS_SCOPE_SELECTORS, RDS_TOKEN_SCOPE, RdsValidationError, SCALE_STEPS, brandTones, buildScale, contrastRatio, emitClaudeMd, emitCss, emitRdsCss, generateRdsTheme, generateTheme, hexToHsl, hslToHex, isHex, isNeutralBrand, isSafeColor, isSafeFont, isSafeVarName, onColor, rdsContrast, rdsContrastReport, rdsThemeFromTable, refToHex, relativeLuminance, resolveTheme, roleVar } from './chunk-DVJ4TGPZ.js';
3
3
  export { primitives, tokens } from './chunk-FRWRLCYM.js';
4
4
  import './chunk-ORMEWXMH.js';
package/dist/themes.js CHANGED
@@ -1,4 +1,4 @@
1
- import { generateTheme } from './chunk-NVYJME6V.js';
1
+ import { generateTheme } from './chunk-DVJ4TGPZ.js';
2
2
  import './chunk-FRWRLCYM.js';
3
3
  import { __spreadValues, __objRest } from './chunk-ORMEWXMH.js';
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rojaostudio/ds-core",
3
- "version": "1.1.0-next.12",
3
+ "version": "1.1.0-next.13",
4
4
  "description": "O motor do Rojão DS — tokens, derivação de tema e emissores. Sem React, sem Tailwind, sem CSS.",
5
5
  "license": "MIT",
6
6
  "author": "Rojão Studio (https://rojao.studio)",