baseline-foundry 0.1.3 → 0.1.5

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 (84) hide show
  1. package/README.md +577 -553
  2. package/config/experiments/ibm-plex-engine-smoke.json +115 -115
  3. package/config/experiments/ubuntu-engine-smoke.json +115 -115
  4. package/config/foundation-theme.json +110 -110
  5. package/config/tiers/app.json +116 -116
  6. package/config/tiers/documentation.json +116 -116
  7. package/config/tiers/editorial.json +116 -116
  8. package/config/tiers/os.json +116 -116
  9. package/dist/baseline-grid-overlay.js +43 -43
  10. package/dist/build.js +4 -4
  11. package/dist/code-snippet.js +1 -1
  12. package/dist/css-app-tier.js +78 -73
  13. package/dist/css-components/article-pagination.js +141 -140
  14. package/dist/css-components/button-actions.js +181 -161
  15. package/dist/css-components/cards-options.js +176 -176
  16. package/dist/css-components/chip-badge-status.d.ts +0 -3
  17. package/dist/css-components/chip-badge-status.js +174 -159
  18. package/dist/css-components/content-card.d.ts +7 -7
  19. package/dist/css-components/content-card.js +498 -497
  20. package/dist/css-components/control-row.d.ts +1 -1
  21. package/dist/css-components/control-row.js +15 -15
  22. package/dist/css-components/cta-figure-aspect.js +120 -120
  23. package/dist/css-components/document-navigation.js +427 -390
  24. package/dist/css-components/editorial-content.js +42 -42
  25. package/dist/css-components/icon.js +72 -72
  26. package/dist/css-components/interactive-feedback.js +239 -217
  27. package/dist/css-components/interactive-tables.js +160 -155
  28. package/dist/css-components/legacy-navigation.d.ts +8 -0
  29. package/dist/css-components/legacy-navigation.js +816 -0
  30. package/dist/css-components/linked-logo-site-layout.d.ts +3 -3
  31. package/dist/css-components/linked-logo-site-layout.js +177 -180
  32. package/dist/css-components/list-tree.js +96 -94
  33. package/dist/css-components/list.js +9 -7
  34. package/dist/css-components/logo-media.d.ts +6 -6
  35. package/dist/css-components/logo-media.js +218 -207
  36. package/dist/css-components/navigation-layout.js +144 -144
  37. package/dist/css-components/panel.js +148 -144
  38. package/dist/css-components/search-box-and-filter.d.ts +0 -1
  39. package/dist/css-components/search-box-and-filter.js +263 -264
  40. package/dist/css-components/sites-editorial-ports.d.ts +3 -4
  41. package/dist/css-components/sites-editorial-ports.js +279 -247
  42. package/dist/css-components/sites-foundation.js +142 -146
  43. package/dist/css-components/sites-rich-lists.d.ts +5 -5
  44. package/dist/css-components/sites-rich-lists.js +339 -349
  45. package/dist/css-components/static-content-ports.d.ts +3 -3
  46. package/dist/css-components/static-content-ports.js +200 -186
  47. package/dist/css-components/tab-section.d.ts +3 -3
  48. package/dist/css-components/tab-section.js +93 -85
  49. package/dist/css-components/table.js +76 -75
  50. package/dist/css-components/tabs-choice-breadcrumbs.js +307 -303
  51. package/dist/css-components/tiered-list-equal-height-row.js +271 -271
  52. package/dist/css-components.js +1881 -2554
  53. package/dist/css-grid.d.ts +1 -1
  54. package/dist/css-grid.js +183 -173
  55. package/dist/css.js +317 -241
  56. package/dist/experiments/ibm-plex-engine-smoke/styles.css +894 -538
  57. package/dist/experiments/ibm-plex-engine-smoke/surfaces.json +2 -2
  58. package/dist/experiments/ibm-plex-engine-smoke/tokens.json +1 -1
  59. package/dist/in-page-navigation.js +1 -1
  60. package/dist/presets/app-tier/styles.css +928 -568
  61. package/dist/presets/app-tier/surfaces.json +17 -17
  62. package/dist/presets/app-tier/tokens.json +7 -7
  63. package/dist/presets/prose/styles.css +919 -562
  64. package/dist/presets/prose/surfaces.json +17 -17
  65. package/dist/presets/prose/tokens.json +1 -1
  66. package/dist/resizable-aside.js +12 -4
  67. package/dist/styles.css +919 -562
  68. package/dist/surfaces.json +17 -17
  69. package/dist/tiers/app/styles.css +928 -568
  70. package/dist/tiers/app/surfaces.json +17 -17
  71. package/dist/tiers/app/tokens.json +7 -7
  72. package/dist/tiers/documentation/styles.css +920 -563
  73. package/dist/tiers/documentation/surfaces.json +17 -17
  74. package/dist/tiers/documentation/tokens.json +2 -2
  75. package/dist/tiers/editorial/styles.css +919 -562
  76. package/dist/tiers/editorial/surfaces.json +17 -17
  77. package/dist/tiers/editorial/tokens.json +1 -1
  78. package/dist/tiers/os/styles.css +925 -568
  79. package/dist/tiers/os/surfaces.json +17 -17
  80. package/dist/tiers/os/tokens.json +7 -7
  81. package/dist/tokens.json +1 -1
  82. package/dist/types.d.ts +1 -1
  83. package/docs/publishing.md +31 -14
  84. package/package.json +119 -108
@@ -198,30 +198,30 @@
198
198
  }
199
199
  },
200
200
  "layout": {
201
- "contentMaxWidth": "67.5rem",
201
+ "contentMaxWidth": "60rem",
202
202
  "contentPaddingInline": "0.75rem",
203
203
  "measure": "30rem",
204
204
  "sectionSpace": "3rem",
205
205
  "sectionSpaceShallow": "1.5rem",
206
206
  "sectionSpaceDeep": "6rem",
207
- "stripSpace": "3rem",
207
+ "stripSpace": "2rem",
208
208
  "gridGapInline": "1rem",
209
209
  "gridGapBlock": "1rem",
210
210
  "pageMargin": "1rem"
211
211
  },
212
212
  "components": {
213
- "borderWidth": "1px",
213
+ "borderWidth": "0.0625rem",
214
214
  "barThickness": "0.1875rem",
215
215
  "radius": "0rem",
216
216
  "controlBlockPadding": "0.375rem",
217
217
  "controlCompactBlockPadding": "0.25rem",
218
- "controlInlinePadding": "0.5rem",
219
- "controlInlinePaddingAction": "0.5rem",
218
+ "controlInlinePadding": "1rem",
219
+ "controlInlinePaddingAction": "1rem",
220
220
  "controlInlinePaddingField": "0.25rem",
221
221
  "controlVisualSize": "0.75rem",
222
222
  "fieldGap": "0.25rem",
223
- "panelPaddingInline": "1rem",
224
- "panelPaddingBlock": "1rem",
223
+ "panelPaddingInline": "0.5rem",
224
+ "panelPaddingBlock": "0.5rem",
225
225
  "accordionIndent": "0.75rem"
226
226
  }
227
227
  },
@@ -515,7 +515,7 @@
515
515
  "pageMargin": "1rem"
516
516
  },
517
517
  "components": {
518
- "borderWidth": "1px",
518
+ "borderWidth": "0.0625rem",
519
519
  "barThickness": "0.1875rem",
520
520
  "radius": "0rem",
521
521
  "controlBlockPadding": "0.5rem",
@@ -808,7 +808,7 @@
808
808
  }
809
809
  },
810
810
  "layout": {
811
- "contentMaxWidth": "96rem",
811
+ "contentMaxWidth": "80rem",
812
812
  "contentPaddingInline": "1.5rem",
813
813
  "measure": "38rem",
814
814
  "sectionSpace": "3rem",
@@ -820,7 +820,7 @@
820
820
  "pageMargin": "1.5rem"
821
821
  },
822
822
  "components": {
823
- "borderWidth": "1px",
823
+ "borderWidth": "0.0625rem",
824
824
  "barThickness": "0.1875rem",
825
825
  "radius": "0rem",
826
826
  "controlBlockPadding": "0.5rem",
@@ -1113,30 +1113,30 @@
1113
1113
  }
1114
1114
  },
1115
1115
  "layout": {
1116
- "contentMaxWidth": "90rem",
1116
+ "contentMaxWidth": "60rem",
1117
1117
  "contentPaddingInline": "1rem",
1118
1118
  "measure": "40rem",
1119
1119
  "sectionSpace": "1rem",
1120
1120
  "sectionSpaceShallow": "0.5rem",
1121
1121
  "sectionSpaceDeep": "2rem",
1122
- "stripSpace": "4rem",
1122
+ "stripSpace": "3rem",
1123
1123
  "gridGapInline": "1.5rem",
1124
1124
  "gridGapBlock": "1.5rem",
1125
1125
  "pageMargin": "2rem"
1126
1126
  },
1127
1127
  "components": {
1128
- "borderWidth": "1px",
1128
+ "borderWidth": "0.0625rem",
1129
1129
  "barThickness": "0.1875rem",
1130
1130
  "radius": "0.125rem",
1131
1131
  "controlBlockPadding": "0.5rem",
1132
1132
  "controlCompactBlockPadding": "0.375rem",
1133
- "controlInlinePadding": "0.5rem",
1134
- "controlInlinePaddingAction": "0.5rem",
1133
+ "controlInlinePadding": "1rem",
1134
+ "controlInlinePaddingAction": "1rem",
1135
1135
  "controlInlinePaddingField": "0.25rem",
1136
1136
  "controlVisualSize": "1rem",
1137
1137
  "fieldGap": "0.5rem",
1138
- "panelPaddingInline": "1.5rem",
1139
- "panelPaddingBlock": "1.5rem",
1138
+ "panelPaddingInline": "0.75rem",
1139
+ "panelPaddingBlock": "0.75rem",
1140
1140
  "accordionIndent": "1.5rem"
1141
1141
  }
1142
1142
  },
@@ -192,30 +192,30 @@
192
192
  }
193
193
  },
194
194
  "layout": {
195
- "contentMaxWidth": "67.5rem",
195
+ "contentMaxWidth": "60rem",
196
196
  "contentPaddingInline": "0.75rem",
197
197
  "measure": "30rem",
198
198
  "sectionSpace": "3rem",
199
199
  "sectionSpaceShallow": "1.5rem",
200
200
  "sectionSpaceDeep": "6rem",
201
- "stripSpace": "3rem",
201
+ "stripSpace": "2rem",
202
202
  "gridGapInline": "1rem",
203
203
  "gridGapBlock": "1rem",
204
204
  "pageMargin": "1rem"
205
205
  },
206
206
  "components": {
207
- "borderWidth": "1px",
207
+ "borderWidth": "0.0625rem",
208
208
  "barThickness": "0.1875rem",
209
209
  "radius": "0rem",
210
210
  "controlBlockPadding": "0.375rem",
211
211
  "controlCompactBlockPadding": "0.25rem",
212
- "controlInlinePadding": "0.5rem",
213
- "controlInlinePaddingAction": "0.5rem",
212
+ "controlInlinePadding": "1rem",
213
+ "controlInlinePaddingAction": "1rem",
214
214
  "controlInlinePaddingField": "0.25rem",
215
215
  "controlVisualSize": "0.75rem",
216
216
  "fieldGap": "0.25rem",
217
- "panelPaddingInline": "1rem",
218
- "panelPaddingBlock": "1rem",
217
+ "panelPaddingInline": "0.5rem",
218
+ "panelPaddingBlock": "0.5rem",
219
219
  "accordionIndent": "0.75rem"
220
220
  }
221
221
  }
package/dist/tokens.json CHANGED
@@ -204,7 +204,7 @@
204
204
  "pageMargin": "1rem"
205
205
  },
206
206
  "components": {
207
- "borderWidth": "1px",
207
+ "borderWidth": "0.0625rem",
208
208
  "barThickness": "0.1875rem",
209
209
  "radius": "0rem",
210
210
  "controlBlockPadding": "0.5rem",
package/dist/types.d.ts CHANGED
@@ -34,7 +34,7 @@ export interface ThemeLayoutConfig {
34
34
  pageMarginBaselineUnits: number;
35
35
  }
36
36
  export interface ThemeComponentsConfig {
37
- borderWidthPx: number;
37
+ borderWidthRem: number;
38
38
  radiusRem: number;
39
39
  controlBlockPaddingRem: number;
40
40
  controlCompactBlockPaddingRem?: number;
@@ -21,7 +21,7 @@ npm install baseline-foundry
21
21
  The attached GitHub release tarball is the fallback:
22
22
 
23
23
  ```bash
24
- npm install https://github.com/lyubomir-popov/baseline-foundry/releases/download/v0.1.3/baseline-foundry-0.1.3.tgz
24
+ npm install https://github.com/lyubomir-popov/baseline-foundry/releases/download/v0.1.5/baseline-foundry-0.1.5.tgz
25
25
  ```
26
26
 
27
27
  Do not install the Git tag or GitHub source archive. `dist/` is generated and
@@ -30,22 +30,39 @@ CSS, JSON, JavaScript, and type declarations.
30
30
 
31
31
  ## Release checklist
32
32
 
33
- The initial `0.1.3` publication is bootstrapped interactively because npm can
33
+ The initial `0.1.3` publication was bootstrapped interactively because npm can
34
34
  only attach a trusted publisher after a package exists. Routine releases use
35
- the OIDC workflow below.
35
+ the OIDC workflow below. `npm publish` invokes the package's `prepublishOnly`
36
+ release gate, so the workflow does not duplicate that command. The workflow
37
+ pins the supported npm CLI, and no npm write token or recovery code is used.
36
38
 
37
39
  1. Bump BF to the next unused version and regenerate `package-lock.json`.
38
- 2. Run `npm run release:check` and `npm pack --dry-run`; confirm the tarball
39
- contains `dist/`, `config/`, `docs/publishing.md`, `README.md`, `LICENSE`,
40
- and no source or local temporary files.
41
- 3. Commit and push the exact release candidate.
42
- 4. Publish from `.github/workflows/publish.yml`; npm trusted publishing uses a
43
- short-lived GitHub Actions OIDC credential, so no npm token is stored.
44
- 5. Verify `npm view baseline-foundry version`, then install the exact published
45
- version into an empty directory and smoke-test the root, `build`, CSS, token,
46
- surface, and four tier export paths.
47
- 6. Tag the same commit and publish the GitHub release with the npm tarball
48
- attached as a fallback artifact.
40
+ 2. Run `npm run release:preflight:test`, `npm run release:check`, and
41
+ `npm run release:verify -- --pack-current`. The negative fixtures prove used
42
+ versions and ref mismatches fail before publication; the local tarball check
43
+ exercises all runtime and asset entry points in an empty consumer.
44
+ 3. Commit and push the exact release candidate to `main`.
45
+ 4. Dispatch `.github/workflows/publish.yml` with
46
+ `resume_after_publish=false`. The workflow bootstraps the pinned demo font
47
+ and builds the gitignored package outputs before its preflight, which
48
+ requires clean `main`, exact
49
+ `origin/main`, matching lockfile metadata, an unused npm version and tag, and
50
+ the allowlisted package contents.
51
+ 5. `npm publish` obtains a short-lived OIDC credential and owns the sole
52
+ `prepublishOnly` release gate. The workflow then installs the exact registry
53
+ version into an empty directory, checks every public entry point, creates
54
+ SHA-1/SHA-256 records, tags the source commit, and attaches the npm tarball
55
+ and checksums to the matching GitHub release.
56
+ 6. If npm publication succeeded but a later verification or GitHub release step
57
+ failed, rerun the same workflow with `resume_after_publish=true`. Resume mode
58
+ requires the registry version to exist, skips `npm publish`, verifies any
59
+ existing tag targets the same commit, and creates or replaces release assets.
60
+
61
+ The GitHub repository is private. npm trusted publishing still removes the need
62
+ for a long-lived write token, but npm currently does not publish public
63
+ provenance attestations for packages whose source repository is private. The
64
+ tag, checksums, attached npm tarball and clean registry verification are BF's
65
+ durable release evidence; documentation must not claim public provenance.
49
66
 
50
67
  ## Compatibility
51
68
 
package/package.json CHANGED
@@ -1,108 +1,119 @@
1
- {
2
- "name": "baseline-foundry",
3
- "version": "0.1.3",
4
- "description": "Lean baseline-aligned design system focused on typography, editorial flow, spacing, and grid primitives.",
5
- "author": "Lyubomir Popov",
6
- "type": "module",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/lyubomir-popov/baseline-foundry.git"
10
- },
11
- "publishConfig": {
12
- "access": "public"
13
- },
14
- "files": [
15
- "dist",
16
- "config",
17
- "docs/publishing.md",
18
- "README.md",
19
- "LICENSE"
20
- ],
21
- "exports": {
22
- ".": {
23
- "types": "./dist/index.d.ts",
24
- "import": "./dist/index.js"
25
- },
26
- "./build": {
27
- "types": "./dist/build.d.ts",
28
- "import": "./dist/build.js"
29
- },
30
- "./presets": {
31
- "types": "./dist/presets.d.ts",
32
- "import": "./dist/presets.js"
33
- },
34
- "./types": {
35
- "types": "./dist/types.d.ts",
36
- "import": "./dist/types.js"
37
- },
38
- "./styles.css": "./dist/styles.css",
39
- "./tokens.json": "./dist/tokens.json",
40
- "./surfaces.json": "./dist/surfaces.json",
41
- "./tiers/editorial.css": "./dist/tiers/editorial/styles.css",
42
- "./tiers/documentation.css": "./dist/tiers/documentation/styles.css",
43
- "./tiers/app.css": "./dist/tiers/app/styles.css",
44
- "./tiers/os.css": "./dist/tiers/os/styles.css",
45
- "./tiers/editorial.tokens.json": "./dist/tiers/editorial/tokens.json",
46
- "./tiers/documentation.tokens.json": "./dist/tiers/documentation/tokens.json",
47
- "./tiers/app.tokens.json": "./dist/tiers/app/tokens.json",
48
- "./tiers/os.tokens.json": "./dist/tiers/os/tokens.json",
49
- "./tiers/editorial.surfaces.json": "./dist/tiers/editorial/surfaces.json",
50
- "./tiers/documentation.surfaces.json": "./dist/tiers/documentation/surfaces.json",
51
- "./tiers/app.surfaces.json": "./dist/tiers/app/surfaces.json",
52
- "./tiers/os.surfaces.json": "./dist/tiers/os/surfaces.json",
53
- "./presets/prose.css": "./dist/presets/prose/styles.css",
54
- "./presets/app-tier.css": "./dist/presets/app-tier/styles.css",
55
- "./presets/prose.tokens.json": "./dist/presets/prose/tokens.json",
56
- "./presets/app-tier.tokens.json": "./dist/presets/app-tier/tokens.json",
57
- "./presets/prose.surfaces.json": "./dist/presets/prose/surfaces.json",
58
- "./presets/app-tier.surfaces.json": "./dist/presets/app-tier/surfaces.json"
59
- },
60
- "scripts": {
61
- "clean": "tsx scripts/clean.ts",
62
- "setup:demo-font": "tsx scripts/setup-demo-font.ts",
63
- "build:theme": "tsx scripts/build-theme.ts",
64
- "build:lib": "tsc -p tsconfig.json",
65
- "build": "npm run build:theme && npm run build:lib",
66
- "demo:serve": "vite",
67
- "demo": "npm run build && npm run demo:serve",
68
- "test:build": "tsx scripts/validate-build.ts",
69
- "test:behavior": "tsx scripts/verify-component-behavior.ts",
70
- "test:components": "tsx scripts/verify-component-baselines.ts",
71
- "test": "npm run build && npm run test:build && npm run test:components && npm run test:behavior",
72
- "check:types": "tsc -p tsconfig.json --noEmit",
73
- "audit": "npm audit && npm audit --omit=dev",
74
- "release:check": "npm run setup:demo-font && npm run check:types && npm test && npm run qa:components && npm run audit",
75
- "prepublishOnly": "npm run release:check",
76
- "playwright:install": "playwright install chromium",
77
- "compare:controls": "npm run build && tsx scripts/compare-controls.ts",
78
- "compare:inline-surfaces": "npm run build && tsx scripts/compare-inline-surfaces.ts",
79
- "verify:behavior": "npm run build && tsx scripts/verify-component-behavior.ts",
80
- "verify:components": "npm run build && tsx scripts/verify-component-baselines.ts",
81
- "screenshots:components": "npm run build && tsx scripts/capture-component-screenshots.ts",
82
- "qa:components": "npm run build && tsx scripts/capture-component-screenshots.ts && tsx scripts/verify-component-baselines.ts",
83
- "build:app": "tsx examples/app-tier/build.ts",
84
- "demo:app": "npm run build:app && vite --host 127.0.0.1 --port 4175 --strictPort --open /examples/app-tier/",
85
- "build:app-tier": "tsx examples/app-tier/build.ts",
86
- "demo:app-tier": "npm run demo:app"
87
- },
88
- "keywords": [
89
- "baseline-grid",
90
- "vertical-rhythm",
91
- "typography",
92
- "editorial",
93
- "grid"
94
- ],
95
- "license": "MIT",
96
- "dependencies": {
97
- "@lyubomir-popov/baseline-nudge-generator": "^1.5.1"
98
- },
99
- "devDependencies": {
100
- "@fontsource-variable/ibm-plex-sans": "^5.3.0",
101
- "@types/node": "^24.13.3",
102
- "playwright": "^1.62.1",
103
- "postcss": "^8.5.26",
104
- "tsx": "^4.23.12",
105
- "typescript": "^5.8.2",
106
- "vite": "^7.3.6"
107
- }
108
- }
1
+ {
2
+ "name": "baseline-foundry",
3
+ "version": "0.1.5",
4
+ "description": "Lean baseline-aligned design system focused on typography, editorial flow, spacing, and grid primitives.",
5
+ "author": "Lyubomir Popov",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=22.14.0",
9
+ "npm": ">=11.19.0"
10
+ },
11
+ "packageManager": "npm@11.19.0",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/lyubomir-popov/baseline-foundry.git"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "config",
22
+ "docs/publishing.md",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js"
30
+ },
31
+ "./build": {
32
+ "types": "./dist/build.d.ts",
33
+ "import": "./dist/build.js"
34
+ },
35
+ "./presets": {
36
+ "types": "./dist/presets.d.ts",
37
+ "import": "./dist/presets.js"
38
+ },
39
+ "./types": {
40
+ "types": "./dist/types.d.ts",
41
+ "import": "./dist/types.js"
42
+ },
43
+ "./styles.css": "./dist/styles.css",
44
+ "./tokens.json": "./dist/tokens.json",
45
+ "./surfaces.json": "./dist/surfaces.json",
46
+ "./tiers/editorial.css": "./dist/tiers/editorial/styles.css",
47
+ "./tiers/documentation.css": "./dist/tiers/documentation/styles.css",
48
+ "./tiers/app.css": "./dist/tiers/app/styles.css",
49
+ "./tiers/os.css": "./dist/tiers/os/styles.css",
50
+ "./tiers/editorial.tokens.json": "./dist/tiers/editorial/tokens.json",
51
+ "./tiers/documentation.tokens.json": "./dist/tiers/documentation/tokens.json",
52
+ "./tiers/app.tokens.json": "./dist/tiers/app/tokens.json",
53
+ "./tiers/os.tokens.json": "./dist/tiers/os/tokens.json",
54
+ "./tiers/editorial.surfaces.json": "./dist/tiers/editorial/surfaces.json",
55
+ "./tiers/documentation.surfaces.json": "./dist/tiers/documentation/surfaces.json",
56
+ "./tiers/app.surfaces.json": "./dist/tiers/app/surfaces.json",
57
+ "./tiers/os.surfaces.json": "./dist/tiers/os/surfaces.json",
58
+ "./presets/prose.css": "./dist/presets/prose/styles.css",
59
+ "./presets/app-tier.css": "./dist/presets/app-tier/styles.css",
60
+ "./presets/prose.tokens.json": "./dist/presets/prose/tokens.json",
61
+ "./presets/app-tier.tokens.json": "./dist/presets/app-tier/tokens.json",
62
+ "./presets/prose.surfaces.json": "./dist/presets/prose/surfaces.json",
63
+ "./presets/app-tier.surfaces.json": "./dist/presets/app-tier/surfaces.json"
64
+ },
65
+ "scripts": {
66
+ "clean": "tsx scripts/clean.ts",
67
+ "setup:demo-font": "tsx scripts/setup-demo-font.ts",
68
+ "build:theme": "tsx scripts/build-theme.ts",
69
+ "build:lib": "tsc -p tsconfig.json",
70
+ "build": "npm run build:theme && npm run build:lib",
71
+ "demo:serve": "vite",
72
+ "demo": "npm run build && npm run demo:serve",
73
+ "test:build": "tsx scripts/validate-build.ts",
74
+ "test:behavior": "tsx scripts/verify-component-behavior.ts",
75
+ "test:components": "tsx scripts/verify-component-baselines.ts",
76
+ "test": "npm run build && npm run test:build && npm run test:components && npm run test:behavior",
77
+ "check:types": "tsc -p tsconfig.json --noEmit",
78
+ "audit": "npm audit && npm audit --omit=dev",
79
+ "release:check": "npm run setup:demo-font && npm run check:types && npm test && npm run qa:components && npm run audit",
80
+ "release:preflight": "tsx scripts/release-preflight.ts",
81
+ "release:preflight:test": "tsx scripts/release-preflight.ts --self-test",
82
+ "release:verify": "tsx scripts/verify-registry-package.ts",
83
+ "prepublishOnly": "npm run release:check",
84
+ "playwright:install": "playwright install chromium",
85
+ "compare:controls": "npm run build && tsx scripts/compare-controls.ts",
86
+ "compare:inline-surfaces": "npm run build && tsx scripts/compare-inline-surfaces.ts",
87
+ "verify:behavior": "npm run build && tsx scripts/verify-component-behavior.ts",
88
+ "verify:components": "npm run build && tsx scripts/verify-component-baselines.ts",
89
+ "screenshots:components": "npm run build && tsx scripts/capture-component-screenshots.ts",
90
+ "qa:components": "npm run build && tsx scripts/capture-component-screenshots.ts && tsx scripts/verify-component-baselines.ts",
91
+ "build:app": "tsx examples/app-tier/build.ts",
92
+ "demo:app": "npm run build:app && vite --host 127.0.0.1 --port 4175 --strictPort --open /examples/app-tier/",
93
+ "build:app-tier": "tsx examples/app-tier/build.ts",
94
+ "demo:app-tier": "npm run demo:app"
95
+ },
96
+ "keywords": [
97
+ "baseline-grid",
98
+ "vertical-rhythm",
99
+ "typography",
100
+ "editorial",
101
+ "grid"
102
+ ],
103
+ "license": "MIT",
104
+ "dependencies": {
105
+ "@lyubomir-popov/baseline-nudge-generator": "^1.5.1"
106
+ },
107
+ "devDependencies": {
108
+ "@fontsource-variable/ibm-plex-sans": "^5.3.0",
109
+ "@types/node": "^24.13.3",
110
+ "playwright": "^1.62.1",
111
+ "postcss": "^8.5.26",
112
+ "tsx": "^4.23.13",
113
+ "typescript": "^7.0.2",
114
+ "vite": "^8.2.2"
115
+ },
116
+ "allowScripts": {
117
+ "esbuild": false
118
+ }
119
+ }