@hattisar/design-tokens 0.3.28 → 0.3.29

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/tokens.css +73 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hattisar/design-tokens",
3
- "version": "0.3.28",
3
+ "version": "0.3.29",
4
4
  "description": "Shared design tokens (colors, type, radius, spacing, motion) and base primitives (reset, buttons, inputs, cards, modals, auth shell) for every Hattisar frontend.",
5
5
  "main": "tokens.css",
6
6
  "files": [
package/tokens.css CHANGED
@@ -1811,3 +1811,76 @@ a.card:hover {
1811
1811
  justify-content: flex-end;
1812
1812
  gap: 10px;
1813
1813
  }
1814
+
1815
+ /**
1816
+ * Semantic tier (--ui-*): what surfaces, controls and states are called, built only from the
1817
+ * primitives above, so light and dark follow with no second copy of any value. Inventory and the
1818
+ * Storefront both read these; an app sets a few of them (its accent, its density) rather than
1819
+ * redefining the rest. Added alongside the existing tokens and changes none of them.
1820
+ *
1821
+ * Surfaces separate by tone, not by line: the page is the base, what is raised above it (cards,
1822
+ * panels, popovers) is a soft tint of the text color, and a tray inside one a step further.
1823
+ */
1824
+ :root {
1825
+ /* The one accent: primary actions, active marks, counts, focus. An app or a seller can swap these three. */
1826
+ --ui-accent: #0f766e;
1827
+ --ui-accent-hover: #0b5f58;
1828
+ --ui-accent-ink: #fff;
1829
+ --ui-accent-soft: color-mix(in srgb, var(--ui-accent) var(--ui-wash), transparent);
1830
+ --ui-surface: var(--color-background-page);
1831
+ --ui-card: color-mix(in srgb, var(--color-text-primary) var(--ui-tint-card), var(--ui-surface));
1832
+ --ui-tray: color-mix(in srgb, var(--color-text-primary) var(--ui-tint-tray), var(--ui-card));
1833
+ /* The column header band: a step off the surface a table sits on. */
1834
+ --ui-band: color-mix(in srgb, var(--color-text-primary) var(--ui-tint-band), var(--ui-surface));
1835
+ /* Form fields are a filled shape: the share of the text color mixed into the card, at rest and under the pointer. */
1836
+ --ui-field-bg: color-mix(in srgb, var(--color-text-primary) var(--ui-tint-field), var(--ui-card));
1837
+ --ui-field-bg-hover: color-mix(in srgb, var(--color-text-primary) var(--ui-tint-field-hover), var(--ui-card));
1838
+ --ui-row-alt: color-mix(in srgb, var(--color-text-primary) 3%, transparent);
1839
+ /* Every other row of a table, laid over its surface: what tells one row from the next now that no rule does. */
1840
+ --ui-row-zebra: color-mix(in srgb, var(--color-text-primary) 4%, transparent);
1841
+ /* A rule between rows: present enough to follow a line across, quiet enough not to read as a grid. */
1842
+ --ui-divider: color-mix(in srgb, var(--color-text-primary) 8%, transparent);
1843
+ /* The one hairline that stays when borders do not: a thin line blended into the surface, where two panels of the same tone meet. */
1844
+ --ui-edge: color-mix(in srgb, var(--color-text-primary) 8%, transparent);
1845
+ /* Marks that are drawn, not outlines: scrollbar thumbs, the off state of a switch, chart gridlines. They stay visible when borders do not. */
1846
+ --ui-mark: color-mix(in srgb, var(--color-text-primary) 22%, transparent);
1847
+ --ui-grid: color-mix(in srgb, var(--color-text-primary) 10%, transparent);
1848
+ --ui-tint-card: 4%;
1849
+ --ui-tint-tray: 6%;
1850
+ --ui-tint-band: 7%;
1851
+ --ui-tint-field: 7%;
1852
+ --ui-tint-field-hover: 10%;
1853
+ --ui-tint-skeleton: 9%;
1854
+ --ui-wash: 14%;
1855
+ /* Control and row sizes. */
1856
+ --ui-ctl: 32px;
1857
+ --ui-ctl-sm: 28px;
1858
+ --ui-hit: 40px;
1859
+ --ui-row-h: 48px;
1860
+ --ui-icon: 20px;
1861
+ --ui-icon-sm: 16px;
1862
+ --ui-tight: 2px;
1863
+ --ui-lh: 20px;
1864
+ --ui-title-lh: 24px;
1865
+ --ui-tracking: -0.01em;
1866
+ --ui-count-pad: 1px 6px;
1867
+ --ui-focus: 2px;
1868
+ --ui-hairline: 1px;
1869
+ --ui-transition: 0.12s ease;
1870
+ --ui-disabled: 0.5;
1871
+ --ui-scrim: color-mix(in srgb, #000 45%, transparent);
1872
+ --ui-scrim-ink: #fff;
1873
+ --ui-shadow-pop: 0 8px 24px color-mix(in srgb, #000 16%, transparent), 0 0 0 1px color-mix(in srgb, #000 5%, transparent);
1874
+ }
1875
+
1876
+ :root[data-theme="dark"] {
1877
+ --ui-accent: #2dd4bf;
1878
+ --ui-accent-hover: #5eead4;
1879
+ --ui-accent-ink: #04201d;
1880
+ --ui-surface: var(--color-background-global);
1881
+ --ui-tint-card: 5%;
1882
+ --ui-card: color-mix(in srgb, var(--color-text-primary) var(--ui-tint-card), var(--color-background-page));
1883
+ --ui-tint-band: 10%;
1884
+ --ui-tint-field: 11%;
1885
+ --ui-tint-field-hover: 15%;
1886
+ }