@handamade/psi-tokens 0.9.0 → 0.10.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/dist/base.css CHANGED
@@ -81,6 +81,7 @@
81
81
 
82
82
  --psi-container-max: 82rem;
83
83
  --psi-gutter: 2.5rem;
84
+ --psi-z-sticky: 1;
84
85
  --psi-z-nav: 100;
85
86
  --psi-z-overlay: 1000;
86
87
  --psi-z-tooltip: 1100;
@@ -89,5 +90,7 @@
89
90
  --psi-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
90
91
  --psi-font-serif: Georgia, "Times New Roman", Times, serif;
91
92
  --psi-font-display: var(--psi-font-sans);
93
+
94
+ --psi-font-variant-numeric: tabular-nums;
92
95
  }
93
96
  }
@@ -0,0 +1,21 @@
1
+ @layer psi.components {
2
+ :where(:root, [data-psi-theme]) {
3
+ --psi-table-bg: var(--psi-surface-bg);
4
+ --psi-table-border: var(--psi-surface-border);
5
+ --psi-table-radius: var(--psi-surface-radius);
6
+ --psi-table-fg: var(--psi-fg-primary);
7
+ --psi-table-header-fg: var(--psi-fg-secondary);
8
+ --psi-table-cell-border: var(--psi-border-faint);
9
+ --psi-table-row-bg: transparent;
10
+ --psi-table-row-bg-hover: var(--psi-fill-neutral3);
11
+ --psi-table-row-bg-selected: var(--psi-fill-tint-accent);
12
+ --psi-table-sort-indicator-fg: var(--psi-fg-accent);
13
+ --psi-table-focus-ring: var(--psi-border-focus);
14
+ --psi-table-32-row-height: var(--psi-control-32-height);
15
+ --psi-table-40-row-height: var(--psi-control-40-height);
16
+ --psi-table-48-row-height: var(--psi-control-48-height);
17
+ --psi-table-32-cell-padding-x: var(--psi-control-32-padding-inline);
18
+ --psi-table-40-cell-padding-x: var(--psi-control-40-padding-inline);
19
+ --psi-table-48-cell-padding-x: var(--psi-control-48-padding-inline);
20
+ }
21
+ }
@@ -257,6 +257,28 @@
257
257
  }
258
258
  }
259
259
 
260
+ @layer psi.components {
261
+ :where(:root, [data-psi-theme]) {
262
+ --psi-table-bg: var(--psi-surface-bg);
263
+ --psi-table-border: var(--psi-surface-border);
264
+ --psi-table-radius: var(--psi-surface-radius);
265
+ --psi-table-fg: var(--psi-fg-primary);
266
+ --psi-table-header-fg: var(--psi-fg-secondary);
267
+ --psi-table-cell-border: var(--psi-border-faint);
268
+ --psi-table-row-bg: transparent;
269
+ --psi-table-row-bg-hover: var(--psi-fill-neutral3);
270
+ --psi-table-row-bg-selected: var(--psi-fill-tint-accent);
271
+ --psi-table-sort-indicator-fg: var(--psi-fg-accent);
272
+ --psi-table-focus-ring: var(--psi-border-focus);
273
+ --psi-table-32-row-height: var(--psi-control-32-height);
274
+ --psi-table-40-row-height: var(--psi-control-40-height);
275
+ --psi-table-48-row-height: var(--psi-control-48-height);
276
+ --psi-table-32-cell-padding-x: var(--psi-control-32-padding-inline);
277
+ --psi-table-40-cell-padding-x: var(--psi-control-40-padding-inline);
278
+ --psi-table-48-cell-padding-x: var(--psi-control-48-padding-inline);
279
+ }
280
+ }
281
+
260
282
  @layer psi.components {
261
283
  :where(:root, [data-psi-theme]) {
262
284
  --psi-tag-neutral-bg: var(--psi-fill-neutral3);
@@ -118,6 +118,7 @@
118
118
  },
119
119
  "recipes": {
120
120
  "mediaTint": "Apply .psi-media-tint to media elements; the brand defines --psi-media-tint (D35). Hover/focus reveals true color over --psi-duration-450 --psi-ease-soft.",
121
+ "tabularNumerals": "Apply .psi-tabular to numeric content for fixed-width digits; --psi-font-variant-numeric is tabular-nums (D62). Table's numeric columns bind the token directly rather than via the utility class.",
121
122
  "sectionHeader": "SectionHeader ships as a recipe, not a component (v1.2 non-goal): baseline-aligned flex row — mono annotation (--psi-text-mono-14-20-regular, --psi-fg-accent) + h2 (.psi-display-32-32-extrabold) + optional trailing meta, border-bottom 1px var(--psi-border-faint), padding-bottom var(--psi-space-20)."
122
123
  },
123
124
  "tags": {
@@ -568,6 +568,7 @@
568
568
  "gutterNarrow": 24
569
569
  },
570
570
  "zIndex": {
571
+ "sticky": 1,
571
572
  "nav": 100,
572
573
  "overlay": 1000,
573
574
  "tooltip": 1100
@@ -568,6 +568,7 @@
568
568
  "gutterNarrow": 24
569
569
  },
570
570
  "zIndex": {
571
+ "sticky": 1,
571
572
  "nav": 100,
572
573
  "overlay": 1000,
573
574
  "tooltip": 1100
@@ -568,6 +568,7 @@
568
568
  "gutterNarrow": 24
569
569
  },
570
570
  "zIndex": {
571
+ "sticky": 1,
571
572
  "nav": 100,
572
573
  "overlay": 1000,
573
574
  "tooltip": 1100
@@ -568,6 +568,7 @@
568
568
  "gutterNarrow": 24
569
569
  },
570
570
  "zIndex": {
571
+ "sticky": 1,
571
572
  "nav": 100,
572
573
  "overlay": 1000,
573
574
  "tooltip": 1100
@@ -435,6 +435,33 @@
435
435
  "switch-thumb-bg": [
436
436
  "surface"
437
437
  ],
438
+ "table-bg": [
439
+ "surface"
440
+ ],
441
+ "table-border": [
442
+ "border"
443
+ ],
444
+ "table-fg": [
445
+ "text"
446
+ ],
447
+ "table-header-fg": [
448
+ "text"
449
+ ],
450
+ "table-cell-border": [
451
+ "border"
452
+ ],
453
+ "table-row-bg": [
454
+ "surface"
455
+ ],
456
+ "table-row-bg-hover": [
457
+ "surface"
458
+ ],
459
+ "table-row-bg-selected": [
460
+ "surface"
461
+ ],
462
+ "table-sort-indicator-fg": [
463
+ "text"
464
+ ],
438
465
  "tag-neutral-bg": [
439
466
  "surface"
440
467
  ],
@@ -143,6 +143,8 @@
143
143
  .psi-text-mono-15-24-regular { font: var(--psi-text-mono-15-24-regular); }
144
144
  .psi-text-mono-15-24-medium { font: var(--psi-text-mono-15-24-medium); }
145
145
 
146
+ .psi-tabular { font-variant-numeric: var(--psi-font-variant-numeric); }
147
+
146
148
  .psi-display-56-128-black { font: var(--psi-display-56-128-black); letter-spacing: -0.02em; text-transform: uppercase; }
147
149
  .psi-display-36-64-black { font: var(--psi-display-36-64-black); letter-spacing: -0.02em; text-transform: uppercase; }
148
150
  .psi-display-32-32-extrabold { font: var(--psi-display-32-32-extrabold); letter-spacing: -0.01em; text-transform: uppercase; }
package/llms.txt CHANGED
@@ -23,7 +23,7 @@ OKLCH formula-based design tokens. Code is the source of truth; all artifacts ge
23
23
 
24
24
  ## Layout (--psi-container-max, --psi-gutter, --psi-z-*)
25
25
  - .psi-container: max-width 1312px, gutter 40px stepping to 24px under the md breakpoint.
26
- - --psi-z-nav (100), --psi-z-overlay (1000), --psi-z-tooltip (1100).
26
+ - --psi-z-sticky (1), --psi-z-nav (100), --psi-z-overlay (1000), --psi-z-tooltip (1100). sticky is for elements that stack within their own local scroll container (e.g. a sticky table header), not above page chrome.
27
27
  - Breakpoints (sm 560 / md 960) are build-time constants (D31), not CSS vars: `import { breakpoints } from "@handamade/psi-tokens/types"` for any @media-driven JS/CSS-in-JS.
28
28
 
29
29
  ## Typography: display, serif, mono
@@ -37,6 +37,9 @@ OKLCH formula-based design tokens. Code is the source of truth; all artifacts ge
37
37
  ## Media tint (--psi-media-tint, .psi-media-tint)
38
38
  - --psi-media-tint is a brand-defined filter chain (D35); apply the .psi-media-tint utility class to media elements to get a tinted-at-rest, true-color-on-hover/focus treatment, transitioning over --psi-duration-450 / --psi-ease-soft.
39
39
 
40
+ ## Tabular numerals (--psi-font-variant-numeric, .psi-tabular)
41
+ - --psi-font-variant-numeric is tabular-nums (D62); apply the .psi-tabular utility class to numeric content for fixed-width digits that don't jitter between rows. Table's own numeric columns (TableCell/TableHeaderCell `numeric` prop) bind the token directly in CSS — reach for the utility class for numeric content outside Table.
42
+
40
43
  ## Dark-first brands
41
44
  - A brand theme can declare `base: "dark"` (see ember) so its formulas derive from the dark palette instead of light — use this for brands whose primary surface is a dark canvas rather than treating dark as an inverted afterthought.
42
45
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@handamade/psi-tokens",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {