@sb1/indeks-tokens 0.7.0 → 0.8.1

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.
@@ -0,0 +1,27 @@
1
+ import type { Theme } from '../../themes';
2
+ import type { BuiltTheme, BuiltThemeColors, OriginColor, ThemeColors, ThemeColorScale } from '../../themes/types';
3
+ export declare const DEFAULT_CHROMA: {
4
+ 0: number;
5
+ 50: number;
6
+ 100: number;
7
+ 150: number;
8
+ 200: number;
9
+ 250: number;
10
+ 300: number;
11
+ 350: number;
12
+ 400: number;
13
+ 450: number;
14
+ 500: number;
15
+ 550: number;
16
+ 600: number;
17
+ 650: number;
18
+ 700: number;
19
+ 750: number;
20
+ 800: number;
21
+ 850: number;
22
+ 900: number;
23
+ 950: number;
24
+ };
25
+ export declare function buildTheme(theme: Theme): BuiltTheme;
26
+ export declare function buildColorScales(colors: ThemeColors): BuiltThemeColors;
27
+ export declare function buildColorScale(originColor: OriginColor): ThemeColorScale;
@@ -0,0 +1,55 @@
1
+ import type { OriginColor, OriginScaleNames } from '../../themes/types';
2
+ export type { OriginColor, OriginScaleNames } from '../../themes/types';
3
+ /**
4
+ * Runtime-API for å generere fargeskalaer «on-the-fly» — i en Node-backend eller
5
+ * rett i nettleseren.
6
+ *
7
+ * Bakgrunn: de semantiske fargetokenene (`--ix-color-*`) peker på primitivene via
8
+ * `var(--ii-primitive-*)`. For å rethem-e i runtime trenger man derfor bare å regenerere
9
+ * primitiv-skalaen for én eller flere basisfarger og sette `--ii-primitive-<navn>-<steg>`
10
+ * på et scope — alle semantiske tokens re-resolver seg selv via `var()`-kaskaden.
11
+ *
12
+ * Dette er den ene tillatte runtime-bruken av de ellers interne `--ii-`-variablene.
13
+ * Navnekonvensjonen og `gray-0 = #FFFFFF`-unntaket eies her, så konsumenten slipper
14
+ * å hardkode dem.
15
+ */
16
+ /** En map fra CSS-variabelnavn (`--ii-primitive-<navn>-<steg>`) til hex-verdi. */
17
+ export type ColorScaleVariables = Record<string, OriginColor>;
18
+ /**
19
+ * Bygg en 20-trinns fargeskala fra én basisfarge og returner den som en ferdig
20
+ * CSS-variabel-map, keyet på det interne primitiv-navnet.
21
+ *
22
+ * @example
23
+ * buildColorScaleVariables('brand', '#0078D8')
24
+ * // → { '--ii-primitive-brand-0': '#...', ..., '--ii-primitive-brand-950': '#...' }
25
+ */
26
+ export declare function buildColorScaleVariables(name: OriginScaleNames, color: OriginColor): ColorScaleVariables;
27
+ /** Minimal DOM-uavhengig type: alt vi trenger er `style.setProperty`. */
28
+ type StyleTarget = {
29
+ style: {
30
+ setProperty(property: string, value: string): void;
31
+ };
32
+ };
33
+ /**
34
+ * Sett en fargevariabel-map som inline-styling på et element (nettleser).
35
+ *
36
+ * @example
37
+ * const vars = buildColorScaleVariables('brand', '#0078D8');
38
+ * applyColorScaleVariables(document.documentElement, vars);
39
+ */
40
+ export declare function applyColorScaleVariables(element: StyleTarget, variables: ColorScaleVariables): void;
41
+ export type ColorScaleVariablesToCssOptions = {
42
+ /** Selektor deklarasjonene pakkes i. Standard `:root`. */
43
+ selector?: string;
44
+ };
45
+ /**
46
+ * Serialisér en fargevariabel-map til en CSS-streng, klar til å injiseres i
47
+ * f.eks. et `<style>`-element eller serveres fra en Node-backend.
48
+ *
49
+ * @example
50
+ * const vars = buildColorScaleVariables('brand', '#0078D8');
51
+ * colorScaleVariablesToCss(vars);
52
+ * // → ':root {\n --ii-primitive-brand-0: #...;\n ...\n}'
53
+ * colorScaleVariablesToCss(vars, { selector: '.min-merkevare' });
54
+ */
55
+ export declare function colorScaleVariablesToCss(variables: ColorScaleVariables, options?: ColorScaleVariablesToCssOptions): string;
@@ -0,0 +1,2 @@
1
+ export type { Theme } from './types';
2
+ export declare const themes: import("./types").Theme[];
@@ -0,0 +1,2 @@
1
+ import type { Theme } from './types';
2
+ export declare const sb1: Theme;
@@ -0,0 +1,44 @@
1
+ export type OriginColor = `#${string}` | `rgb(${string})` | `rgba(${string})` | `hsl(${string})` | `hsla(${string})`;
2
+ export type OriginScaleNames = 'brand' | 'neutral' | 'success' | 'danger' | 'warning' | 'info' | 'gray';
3
+ export type ThemeableProperties = {
4
+ 'font-family'?: {
5
+ normal?: string;
6
+ heading?: string;
7
+ icons?: string;
8
+ };
9
+ 'font-weight'?: {
10
+ regular?: number;
11
+ medium?: number;
12
+ button?: number;
13
+ };
14
+ border?: {
15
+ radius?: {
16
+ button?: string;
17
+ checkbox?: string;
18
+ input?: string;
19
+ xs?: string;
20
+ sm?: string;
21
+ md?: string;
22
+ lg?: string;
23
+ xl?: string;
24
+ };
25
+ };
26
+ };
27
+ export type ThemeColors = Record<OriginScaleNames, OriginColor>;
28
+ export type ThemeColorScale = Record<(typeof DEFAULT_STEPS)[number], OriginColor>;
29
+ export type BuiltThemeColors = Record<OriginScaleNames, ThemeColorScale>;
30
+ export type Theme = {
31
+ name: string;
32
+ figmaName?: string;
33
+ identityColor: OriginColor;
34
+ colors: ThemeColors;
35
+ themeable?: ThemeableProperties;
36
+ };
37
+ export type BuiltTheme = {
38
+ name: string;
39
+ figmaName?: string;
40
+ identityColor: OriginColor;
41
+ colors: BuiltThemeColors;
42
+ themeable: ThemeableProperties;
43
+ };
44
+ export declare const DEFAULT_STEPS: readonly [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sb1/indeks-tokens",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Design tokens for Indeks design system",
5
5
  "type": "module",
6
6
  "homepage": "https://design.sparebank1.no",
@@ -22,7 +22,14 @@
22
22
  ],
23
23
  "main": "dist/index.css",
24
24
  "exports": {
25
- ".": "./dist/index.css"
25
+ ".": "./dist/index.css",
26
+ "./generate": {
27
+ "types": "./dist/scripts/build-colors/generate.d.ts",
28
+ "import": "./dist/generate.js"
29
+ }
30
+ },
31
+ "bin": {
32
+ "indeks-tokens": "./dist/cli.js"
26
33
  },
27
34
  "files": [
28
35
  "dist",
@@ -44,19 +51,24 @@
44
51
  "colorjs.io": "^0.7.0",
45
52
  "cssnano": "^8.0.2",
46
53
  "dotenv": "^17.4.2",
54
+ "esbuild": "0.28.1",
47
55
  "postcss": "^8.5.20",
48
56
  "postcss-cli": "^11.0.1",
49
57
  "postcss-import": "^16.1.1",
50
58
  "postcss-preset-env": "^11.3.2",
51
59
  "tsx": "^4.23.1",
60
+ "typescript": "~6.0.3",
52
61
  "vitest": "^4.1.10"
53
62
  },
54
63
  "scripts": {
55
64
  "dev": "echo not implemented",
56
- "build": "rm -rf ./dist ./.build && pnpm run build:tokens:css && pnpm run build:colors:web && pnpm run build:colors:figma && pnpm run build:bundle",
65
+ "build": "rm -rf ./dist ./.build && pnpm run build:tokens:css && pnpm run build:colors:web && pnpm run build:colors:figma && pnpm run build:bundle && pnpm run build:cli && pnpm run build:generate && pnpm run build:types",
66
+ "build:cli": "esbuild scripts/build-colors/cli.ts --bundle --platform=node --format=esm --outfile=dist/cli.js --banner:js='#!/usr/bin/env node' --define:__PKG_VERSION__=\"\\\"$npm_package_version\\\"\"",
67
+ "build:generate": "esbuild scripts/build-colors/generate.ts --bundle --platform=neutral --format=esm --outfile=dist/generate.js",
68
+ "build:types": "tsc -p tsconfig.generate.json",
57
69
  "build:spacing": "node ./scripts/build-spacing-tokens.cjs",
58
70
  "sync-tokens": "tsx scripts/figma-api/sync_figma_to_tokens.ts",
59
- "test": "vitest buildThemeColors.test.ts",
71
+ "test": "vitest run buildThemeColors.test.ts cli.integration.test.ts generate.test.ts",
60
72
  "build:colors:web": "tsx ./scripts/build-colors/index platform=web path=./.build/css",
61
73
  "build:colors:figma": "tsx ./scripts/build-colors/index platform=figma path=./tokens/colors/from-code",
62
74
  "build:colors:ios": "tsx ./scripts/build-colors/index platform=ios path=./dist/ios",