@loworbitstudio/visor-theme-engine 0.24.0 → 0.25.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.
@@ -25,7 +25,7 @@ import {
25
25
  resolveThemeBrand,
26
26
  resolveThemeFonts,
27
27
  sectionComment
28
- } from "../chunk-D5XSLWXP.js";
28
+ } from "../chunk-C2DUPZVY.js";
29
29
 
30
30
  // src/adapters/brand-passthrough.ts
31
31
  var SENTINEL_COLOR = "#ff00ff";
@@ -1272,6 +1272,7 @@ var TEXT = "components/ui/text/text.module.css";
1272
1272
  var INLINE_EDIT = "components/ui/inline-edit/inline-edit.module.css";
1273
1273
  var SAVE_STATUS = "components/ui/save-status/save-status.module.css";
1274
1274
  var TOOLTIP = "components/ui/tooltip/tooltip.module.css";
1275
+ var ACTION_ROW = "components/ui/action-row/action-row.module.css";
1275
1276
  function at(file, fallback) {
1276
1277
  return [{ file, fallback }];
1277
1278
  }
@@ -1536,6 +1537,7 @@ var emptyStateFamily = {
1536
1537
  { key: "heading-color", property: "color", description: "Heading colour.", consumers: at(EMPTY_STATE, "var(--text-primary, #111827)") },
1537
1538
  { key: "description-font-size", property: "font-size", description: "Description type size.", consumers: at(EMPTY_STATE, "var(--font-size-sm, 0.875rem)") },
1538
1539
  { key: "description-color", property: "color", description: "Description colour.", consumers: at(EMPTY_STATE, "var(--text-secondary, #6b7280)") },
1540
+ { key: "error-color", property: "color", description: 'Icon, chip glyph and heading colour for `intent="error"`.', consumers: at(EMPTY_STATE, "var(--destructive, #dc2626)") },
1539
1541
  { key: "actions-gap", property: "gap", description: "Gap between placard actions.", consumers: at(EMPTY_STATE, "var(--spacing-2, 0.5rem)") }
1540
1542
  ]
1541
1543
  };
@@ -1899,9 +1901,11 @@ var switchFamily = {
1899
1901
  var saveStatusFamily = {
1900
1902
  family: "save-status",
1901
1903
  prefix: "save-status",
1902
- description: "SaveStatus readout \u2014 the fixed-width slot and its type, so the readout never reflows its row.",
1904
+ description: "SaveStatus readout \u2014 the fixed-width slot, its type, the Syncing ink and the Unsaved dot, so the readout never reflows its row.",
1903
1905
  tokens: [
1904
- { key: "width", property: "width", description: "Slot width. Fixed, so the row never reflows between states.", consumers: at(SAVE_STATUS, "7.5rem") },
1906
+ { key: "width", property: "width", description: "Slot width. Unbound, the slot is as wide as the longest label in the current font plus the retry mark, the same in every state. Bind it to pin a width; a longer label then truncates inside it.", consumers: at(SAVE_STATUS, "auto") },
1907
+ { key: "syncing-color", property: "color", description: "Ink of the Syncing state (a first sync from an outside source). Unbound it reads `--text-secondary`.", consumers: at(SAVE_STATUS, "var(--text-secondary, #6b7280)") },
1908
+ { key: "dot-size", property: "width", description: 'Diameter of the dot that draws Unsaved when `unsavedAs="dot"`. The slot width does not change.', consumers: at(SAVE_STATUS, "var(--spacing-2, 0.5rem)") },
1905
1909
  { key: "font-family", property: "font-family", description: "Readout family (e.g. the theme's mono).", consumers: at(SAVE_STATUS, "revert-layer") },
1906
1910
  { key: "text-transform", property: "text-transform", description: "Readout casing.", consumers: at(SAVE_STATUS, "revert-layer") },
1907
1911
  { key: "letter-spacing", property: "letter-spacing", description: "Readout tracking.", consumers: at(SAVE_STATUS, "revert-layer") }
@@ -1916,6 +1920,27 @@ var tooltipFamily = {
1916
1920
  { key: "text", property: "color", description: "Tooltip label colour.", consumers: at(TOOLTIP, "var(--text-inverse, #ffffff)") }
1917
1921
  ]
1918
1922
  };
1923
+ var actionRowFamily = {
1924
+ family: "action-row",
1925
+ prefix: "action-row",
1926
+ description: "ActionRow state fills, edge and geometry: rest, hover, open, selected and disabled each read their own token.",
1927
+ tokens: [
1928
+ { key: "min-height", property: "min-height", description: "Row floor height; the whole row is the target.", consumers: at(ACTION_ROW, "2.75rem") },
1929
+ { key: "padding", property: "padding", description: "Row inset, kept inside the hover and selected fills.", consumers: at(ACTION_ROW, "var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem)") },
1930
+ { key: "gap", property: "gap", description: "Gap between the leading slot, the title block and the trailing slot.", consumers: at(ACTION_ROW, "var(--spacing-3, 0.75rem)") },
1931
+ { key: "radius", property: "border-radius", description: "Row corner rounding (the hover and selected fill).", consumers: at(ACTION_ROW, "var(--radius-md, 0.375rem)") },
1932
+ { key: "hover-bg", property: "background-color", description: "Hover fill.", consumers: at(ACTION_ROW, "var(--surface-interactive-hover, #f3f4f6)") },
1933
+ { key: "open-bg", property: "background-color", description: "Fill of a row that has opened a picker or popover (`aria-expanded`).", consumers: at(ACTION_ROW, "var(--surface-interactive-hover, #f3f4f6)") },
1934
+ { key: "selected-bg", property: "background-color", description: "Selected fill. A lifted fill, never white.", consumers: at(ACTION_ROW, "var(--surface-interactive-active, #e5e7eb)") },
1935
+ { key: "selected-edge-color", property: "outline-color", description: "Selected row's inset edge colour. Its width is `--control-state-edge-width`, so `edges: off` keeps it.", consumers: at(ACTION_ROW, "var(--text-secondary, #6b7280)") },
1936
+ { key: "disabled-opacity", property: "opacity", description: "Disabled row opacity.", consumers: at(ACTION_ROW, "var(--opacity-50, 0.5)") },
1937
+ { key: "title-weight", property: "font-weight", description: "Title weight.", consumers: at(ACTION_ROW, "var(--font-weight-medium, 500)") },
1938
+ { key: "line-color", property: "color", description: "Second-line colour.", consumers: at(ACTION_ROW, "var(--text-secondary, #6b7280)") },
1939
+ { key: "leading-color", property: "color", description: "Leading icon colour.", consumers: at(ACTION_ROW, "var(--text-secondary, #6b7280)") },
1940
+ { key: "leading-size", property: "font-size", description: "Leading icon size.", consumers: at(ACTION_ROW, "1.25rem") },
1941
+ { key: "trailing-color", property: "color", description: "Trailing value or caret colour.", consumers: at(ACTION_ROW, "var(--text-secondary, #6b7280)") }
1942
+ ]
1943
+ };
1919
1944
  var HAIRLINE_PX = [
1920
1945
  "components/ui/bulk-action-bar/bulk-action-bar.module.css",
1921
1946
  "components/ui/dialog/dialog.module.css",
@@ -1925,6 +1950,7 @@ var HAIRLINE_PX = [
1925
1950
  TABS
1926
1951
  ];
1927
1952
  var HAIRLINE_THIN = [
1953
+ ACTION_ROW,
1928
1954
  "blocks/dialog-form/dialog-form.module.css",
1929
1955
  "components/ui/coherence-check/coherence-check.module.css",
1930
1956
  "components/ui/doc-frame/doc-frame.module.css",
@@ -1990,6 +2016,7 @@ var COMPONENT_TOKEN_FAMILIES = [
1990
2016
  switchFamily,
1991
2017
  saveStatusFamily,
1992
2018
  tooltipFamily,
2019
+ actionRowFamily,
1993
2020
  adminUiFamily
1994
2021
  ];
1995
2022
  var COMPONENT_TOKEN_FAMILY_BY_NAME = new Map(
package/dist/index.d.ts CHANGED
@@ -1097,7 +1097,7 @@ var properties = {
1097
1097
  },
1098
1098
  "empty-state": {
1099
1099
  type: "object",
1100
- description: "Empty-state placard — surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, actions-gap.",
1100
+ description: "Empty-state placard — surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, error-color, actions-gap.",
1101
1101
  additionalProperties: {
1102
1102
  $ref: "#/$defs/componentTokenBinding"
1103
1103
  }
@@ -1195,7 +1195,7 @@ var properties = {
1195
1195
  },
1196
1196
  "save-status": {
1197
1197
  type: "object",
1198
- description: "SaveStatus readout — the fixed-width slot and its type, so the readout never reflows its row. Keys: width, font-family, text-transform, letter-spacing.",
1198
+ description: "SaveStatus readout — the fixed-width slot, its type, the Syncing ink and the Unsaved dot, so the readout never reflows its row. Keys: width, syncing-color, dot-size, font-family, text-transform, letter-spacing.",
1199
1199
  additionalProperties: {
1200
1200
  $ref: "#/$defs/componentTokenBinding"
1201
1201
  }
@@ -1207,6 +1207,13 @@ var properties = {
1207
1207
  $ref: "#/$defs/componentTokenBinding"
1208
1208
  }
1209
1209
  },
1210
+ "action-row": {
1211
+ type: "object",
1212
+ description: "ActionRow state fills, edge and geometry: rest, hover, open, selected and disabled each read their own token. Keys: min-height, padding, gap, radius, hover-bg, open-bg, selected-bg, selected-edge-color, disabled-opacity, title-weight, line-color, leading-color, leading-size, trailing-color.",
1213
+ additionalProperties: {
1214
+ $ref: "#/$defs/componentTokenBinding"
1215
+ }
1216
+ },
1210
1217
  "admin-ui": {
1211
1218
  type: "object",
1212
1219
  description: "Structural roles the admin-ui pattern owns. `marquee-family` is the display face for KPI hero figures and marquee page titles — the role the admin-ui portability audit named as the one piece of ENTR brand coupling a new theme must rebind. Keys: marquee-family.",
package/dist/index.js CHANGED
@@ -63,7 +63,7 @@ import {
63
63
  rgbToOklch,
64
64
  serializeColor,
65
65
  validateComponentBindings
66
- } from "./chunk-D5XSLWXP.js";
66
+ } from "./chunk-C2DUPZVY.js";
67
67
 
68
68
  // src/fonts/validate-coverage.ts
69
69
  var FONT_VAR_RE = /--font-(heading|display|body|sans|mono)\s*:\s*([^;]+);/g;
@@ -1133,7 +1133,7 @@ var visor_theme_schema_default = {
1133
1133
  },
1134
1134
  "empty-state": {
1135
1135
  type: "object",
1136
- description: "Empty-state placard \u2014 surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, actions-gap.",
1136
+ description: "Empty-state placard \u2014 surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, error-color, actions-gap.",
1137
1137
  additionalProperties: {
1138
1138
  $ref: "#/$defs/componentTokenBinding"
1139
1139
  }
@@ -1231,7 +1231,7 @@ var visor_theme_schema_default = {
1231
1231
  },
1232
1232
  "save-status": {
1233
1233
  type: "object",
1234
- description: "SaveStatus readout \u2014 the fixed-width slot and its type, so the readout never reflows its row. Keys: width, font-family, text-transform, letter-spacing.",
1234
+ description: "SaveStatus readout \u2014 the fixed-width slot, its type, the Syncing ink and the Unsaved dot, so the readout never reflows its row. Keys: width, syncing-color, dot-size, font-family, text-transform, letter-spacing.",
1235
1235
  additionalProperties: {
1236
1236
  $ref: "#/$defs/componentTokenBinding"
1237
1237
  }
@@ -1243,6 +1243,13 @@ var visor_theme_schema_default = {
1243
1243
  $ref: "#/$defs/componentTokenBinding"
1244
1244
  }
1245
1245
  },
1246
+ "action-row": {
1247
+ type: "object",
1248
+ description: "ActionRow state fills, edge and geometry: rest, hover, open, selected and disabled each read their own token. Keys: min-height, padding, gap, radius, hover-bg, open-bg, selected-bg, selected-edge-color, disabled-opacity, title-weight, line-color, leading-color, leading-size, trailing-color.",
1249
+ additionalProperties: {
1250
+ $ref: "#/$defs/componentTokenBinding"
1251
+ }
1252
+ },
1246
1253
  "admin-ui": {
1247
1254
  type: "object",
1248
1255
  description: "Structural roles the admin-ui pattern owns. `marquee-family` is the display face for KPI hero figures and marquee page titles \u2014 the role the admin-ui portability audit named as the one piece of ENTR brand coupling a new theme must rebind. Keys: marquee-family.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loworbitstudio/visor-theme-engine",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "Theme engine for the Visor design system — shade generation, token mapping, font resolution, and import/export for .visor.yaml themes.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -517,7 +517,7 @@
517
517
  },
518
518
  "empty-state": {
519
519
  "type": "object",
520
- "description": "Empty-state placard — surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, actions-gap.",
520
+ "description": "Empty-state placard — surface, icon chip and copy scale. Keys: radius, text-color, gap, padding, bg, border, icon-size, icon-radius, icon-bg, icon-color, heading-font-family, heading-font-size, heading-font-weight, heading-color, description-font-size, description-color, error-color, actions-gap.",
521
521
  "additionalProperties": {
522
522
  "$ref": "#/$defs/componentTokenBinding"
523
523
  }
@@ -615,7 +615,7 @@
615
615
  },
616
616
  "save-status": {
617
617
  "type": "object",
618
- "description": "SaveStatus readout — the fixed-width slot and its type, so the readout never reflows its row. Keys: width, font-family, text-transform, letter-spacing.",
618
+ "description": "SaveStatus readout — the fixed-width slot, its type, the Syncing ink and the Unsaved dot, so the readout never reflows its row. Keys: width, syncing-color, dot-size, font-family, text-transform, letter-spacing.",
619
619
  "additionalProperties": {
620
620
  "$ref": "#/$defs/componentTokenBinding"
621
621
  }
@@ -627,6 +627,13 @@
627
627
  "$ref": "#/$defs/componentTokenBinding"
628
628
  }
629
629
  },
630
+ "action-row": {
631
+ "type": "object",
632
+ "description": "ActionRow state fills, edge and geometry: rest, hover, open, selected and disabled each read their own token. Keys: min-height, padding, gap, radius, hover-bg, open-bg, selected-bg, selected-edge-color, disabled-opacity, title-weight, line-color, leading-color, leading-size, trailing-color.",
633
+ "additionalProperties": {
634
+ "$ref": "#/$defs/componentTokenBinding"
635
+ }
636
+ },
630
637
  "admin-ui": {
631
638
  "type": "object",
632
639
  "description": "Structural roles the admin-ui pattern owns. `marquee-family` is the display face for KPI hero figures and marquee page titles — the role the admin-ui portability audit named as the one piece of ENTR brand coupling a new theme must rebind. Keys: marquee-family.",