ui-style-kit-css 1.2.1 → 2.0.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,28 @@
1
+ # Publishing Guide
2
+
3
+ ## Dry run
4
+
5
+ ```bash
6
+ npm run check
7
+ npm run pack:dry-run
8
+ ```
9
+
10
+ `npm run check` rebuilds dist CSS, runs stylelint, executes package, class API, shared theme-color, and vendor-prefix unit checks, validates core text/link contrast pairs and filled component `on-*` contrast pairs, and confirms package metadata. `npm run pack:dry-run` shows the exact files that would publish.
11
+
12
+ ## Publish
13
+
14
+ ```bash
15
+ npm publish
16
+ ```
17
+
18
+ For GitHub releases, create or dispatch a release for the matching package tag, such as `v2.0.1`. The release workflows verify that `package.json`, `package-lock.json`, `CHANGELOG.md`, and generated dist banners are aligned before publishing.
19
+
20
+ ## Versioning
21
+
22
+ ```bash
23
+ npm run release:patch
24
+ npm run release:minor
25
+ npm run release:major
26
+ ```
27
+
28
+ Use patch for fixes, minor for new themes/styles, and major for breaking public API changes. The 2.x release line is major because color-scheme authoring moved from per-UI `--<prefix>-*-rgb` blocks to shared `--usk-*-rgb` roles in `styles/theme-colors.css`.
@@ -0,0 +1,30 @@
1
+ # Choosing a UI Style
2
+
3
+ | UI style | Best for |
4
+ |---|---|
5
+ | Minimal SaaS | Dashboards, admin tools, SaaS apps, documentation, internal systems |
6
+ | Bento UI | Landing pages, portfolio sections, feature pages, product showcases |
7
+ | Maximalist / Playful | Creators, entertainment brands, events, bold client sites |
8
+ | Bauhaus / Swiss Modern | Agencies, artists, editorial pages, design-forward brands |
9
+ | Tactile / Skeuomorphic | Premium sites, distinctive client interfaces, control-panel metaphors |
10
+ | Neumorphism | Soft dashboards, experimental UI, visual demos |
11
+ | Retrofuturism | Futuristic product pages, portfolios, technology showcases |
12
+ | Brutalism | Bold landing pages, anti-template websites, creative brands |
13
+ | Cyberpunk | Security, gaming, encryption, developer demos, nightlife/tech branding |
14
+ | Y2K | Nostalgic, playful, music/fashion/event sites |
15
+ | Retro Glass | Futuristic premium apps, glass dashboards, hero sections |
16
+
17
+ All styles share the same 10 color schemes through `styles/theme-colors.css`, so changing `data-theme` affects the active color scheme independently from the selected UI treatment.
18
+
19
+ Use `data-mode="contrast"` for high-contrast variants and pair it with semantic HTML for best accessibility outcomes.
20
+
21
+ ## Visual regression baseline
22
+
23
+ The repository includes optional Playwright visual smoke checks:
24
+
25
+ ```bash
26
+ npm install
27
+ npm run test:visual
28
+ ```
29
+
30
+ Run visual tests before major releases or after large CSS refactors.
package/docs/TOKENS.md ADDED
@@ -0,0 +1,276 @@
1
+ # Token Contract
2
+
3
+ Each UI style uses its own prefix, but concrete color schemes are shared. The 2.0 token model is deliberately compact:
4
+
5
+ ```txt
6
+ shared scheme channels -> prefixed aliases -> UI rules
7
+ ```
8
+
9
+ `styles/theme-colors.css` defines the active scheme and mode once as `--usk-*` RGB channels. Each UI style maps those shared channels to its public prefix, then component rules consume prefixed functional variables. `styles/native-elements.css` owns native HTML fallback selectors and consumes `--usk-native-*` tokens that each preset maps back to its own public variables.
10
+
11
+ ## Prefixes
12
+
13
+ | UI style | Prefix |
14
+ |---|---:|
15
+ | Minimal SaaS | `saas` |
16
+ | Bento UI | `bento` |
17
+ | Maximalist / Playful | `max` |
18
+ | Bauhaus / Swiss Modern | `bau` |
19
+ | Skeuomorphic / Tactile | `tactile` |
20
+ | Neumorphism | `neo` |
21
+ | Retrofuturism | `retro` |
22
+ | Brutalism | `brutal` |
23
+ | Cyberpunk | `cyber` |
24
+ | Y2K | `y2k` |
25
+ | Retro Glass | `rg` |
26
+
27
+ ## Stable functional tokens
28
+
29
+ Replace `<prefix>` with the style prefix:
30
+
31
+ ```css
32
+ --<prefix>-bg
33
+ --<prefix>-fg
34
+ --<prefix>-surface
35
+ --<prefix>-surface-fg
36
+ --<prefix>-surface-strong
37
+ --<prefix>-surface-soft
38
+ --<prefix>-text
39
+ --<prefix>-text-muted
40
+ --<prefix>-muted
41
+ --<prefix>-border
42
+ --<prefix>-control-bg
43
+ --<prefix>-control-fg
44
+ --<prefix>-primary
45
+ --<prefix>-primary-hover
46
+ --<prefix>-secondary
47
+ --<prefix>-secondary-hover
48
+ --<prefix>-accent
49
+ --<prefix>-success
50
+ --<prefix>-warning
51
+ --<prefix>-danger
52
+ --<prefix>-link
53
+ --<prefix>-focus
54
+ --<prefix>-theme-bg
55
+ --<prefix>-theme-bg-size
56
+ --<prefix>-card-bg
57
+ --<prefix>-spinner-track
58
+ --<prefix>-spinner-stroke
59
+ --<prefix>-spinner-accent
60
+ ```
61
+
62
+ ## Filled-surface text aliases
63
+
64
+ Filled UI uses compact `on-*` aliases instead of a large foreground-token matrix:
65
+
66
+ ```css
67
+ --<prefix>-on-primary
68
+ --<prefix>-on-secondary
69
+ --<prefix>-on-accent
70
+ --<prefix>-on-success
71
+ --<prefix>-on-warning
72
+ --<prefix>-on-danger
73
+ ```
74
+
75
+ Backward-compatible aliases `--<prefix>-primary-text` and `--<prefix>-secondary-text` remain available and point to the same filled-surface text colors.
76
+
77
+ ## Shared RGB palette channels
78
+
79
+ Concrete theme/mode blocks now live in `styles/theme-colors.css` and expose shared RGB channels:
80
+
81
+ ```css
82
+ --usk-bg-rgb
83
+ --usk-surface-rgb
84
+ --usk-surface-strong-rgb
85
+ --usk-surface-soft-rgb
86
+ --usk-text-rgb
87
+ --usk-text-muted-rgb
88
+ --usk-border-rgb
89
+ --usk-primary-rgb
90
+ --usk-primary-hover-rgb
91
+ --usk-primary-text-rgb
92
+ --usk-secondary-rgb
93
+ --usk-secondary-hover-rgb
94
+ --usk-secondary-text-rgb
95
+ --usk-accent-rgb
96
+ --usk-accent-text-rgb
97
+ --usk-success-rgb
98
+ --usk-success-text-rgb
99
+ --usk-warning-rgb
100
+ --usk-warning-text-rgb
101
+ --usk-danger-rgb
102
+ --usk-danger-text-rgb
103
+ --usk-link-rgb
104
+ --usk-focus-rgb
105
+ ```
106
+
107
+ Each standalone style file imports the shared color and native layers, then aliases those roles back to the style prefix:
108
+
109
+ ```css
110
+ [data-ui="minimal-saas"][data-theme][data-mode] {
111
+ --saas-bg-rgb: var(--usk-bg-rgb);
112
+ --saas-primary-rgb: var(--usk-primary-rgb);
113
+ --saas-primary-text-rgb: var(--usk-primary-text-rgb);
114
+ }
115
+ ```
116
+
117
+ ## Native fallback tokens
118
+
119
+ Native HTML coverage is shared in `styles/native-elements.css` to avoid repeating the same semantic selector blocks in every preset. Preset files provide visual mappings for these stable native-layer tokens:
120
+
121
+ ```css
122
+ --usk-native-surface
123
+ --usk-native-surface-strong
124
+ --usk-native-surface-soft
125
+ --usk-native-card-bg
126
+ --usk-native-control-bg
127
+ --usk-native-text
128
+ --usk-native-text-muted
129
+ --usk-native-border
130
+ --usk-native-primary
131
+ --usk-native-primary-hover
132
+ --usk-native-on-primary
133
+ --usk-native-focus
134
+ --usk-native-success
135
+ --usk-native-warning
136
+ --usk-native-danger
137
+ --usk-native-link
138
+ --usk-native-font-body
139
+ --usk-native-font-heading
140
+ --usk-native-font-control
141
+ --usk-native-font-mono
142
+ --usk-native-radius-sm
143
+ --usk-native-radius
144
+ --usk-native-radius-lg
145
+ --usk-native-shadow
146
+ --usk-native-shadow-md
147
+ --usk-native-focus-ring
148
+ ```
149
+
150
+ Consumers usually override the prefixed public tokens, not these internal bridge tokens. Use `--usk-native-*` only when intentionally customizing native fallback styling across every UI preset.
151
+
152
+ Use prefixed RGB aliases for component-local alpha effects:
153
+
154
+ ```css
155
+ .my-component {
156
+ border-color: rgb(var(--saas-primary-rgb) / 0.35);
157
+ }
158
+ ```
159
+
160
+ Use shared `--usk-*` roles when defining or overriding a scheme:
161
+
162
+ ```css
163
+ :where([data-ui][data-theme="arctic-indigo"][data-mode="light"]) {
164
+ --usk-primary-rgb: 72 91 255;
165
+ --usk-primary-hover-rgb: 55 75 230;
166
+ --usk-primary-text-rgb: 255 255 255;
167
+ }
168
+ ```
169
+
170
+ ## Theme-composition tokens
171
+
172
+ The library derives larger visual defaults from the active theme:
173
+
174
+ ```css
175
+ --<prefix>-theme-bg /* page-level background layers */
176
+ --<prefix>-theme-bg-size /* matching background-size list */
177
+ --<prefix>-card-bg /* default card/panel background */
178
+ --<prefix>-control-bg /* default neutral button/toolbar/table-wrap background */
179
+ ```
180
+
181
+ These tokens make color themes visually distinct by changing page atmosphere, card tinting, and neutral control surfaces when `data-theme` or `data-mode` changes.
182
+
183
+ ## Spinner tokens
184
+
185
+ Loading indicators use theme variables by default:
186
+
187
+ ```css
188
+ --<prefix>-spinner-track
189
+ --<prefix>-spinner-stroke
190
+ --<prefix>-spinner-accent
191
+ ```
192
+
193
+ The class utilities are `<prefix>-spinner`, `<prefix>-loading-spinner`, `<prefix>-spinner-sm`, and `<prefix>-spinner-lg`. Native buttons and prefixed buttons also render an inline spinner when `aria-busy="true"` is present.
194
+
195
+ ## Interactive Surface bridge tokens
196
+
197
+ The opt-in bridge maps shared `--usk-*` roles directly to `--interactive-surface-*` tokens. It avoids per-UI token maps so the bridge follows the same shared scheme -> mode role -> component rule flow as the main bundle.
198
+
199
+ Use `.interactive-surface` with `data-surface-variant` for semantic intent and `data-surface-level` for visual depth:
200
+
201
+ ```html
202
+ <button class="interactive-surface" data-surface-variant="primary" data-surface-level="2">
203
+ Save changes
204
+ </button>
205
+ ```
206
+
207
+ Stable bridge attributes:
208
+
209
+ ```txt
210
+ data-surface-variant="primary|secondary|accent|subtle|warning|danger"
211
+ data-surface-level="1|2|3"
212
+ ```
213
+
214
+ The bridge defines visible state layer tokens for hover, active, and focus plus level tokens such as `--interactive-surface-level-1-bg`, `--interactive-surface-level-2-bg`, and `--interactive-surface-level-3-bg`.
215
+
216
+ ## Typography tokens
217
+
218
+ Each style exposes broad and granular font variables:
219
+
220
+ ```css
221
+ --<prefix>-font-sans
222
+ --<prefix>-font-display
223
+ --<prefix>-font-body
224
+ --<prefix>-font-heading
225
+ --<prefix>-font-control
226
+ --<prefix>-font-mono
227
+ ```
228
+
229
+ `--<prefix>-font-body`, `--<prefix>-font-heading`, and `--<prefix>-font-control` default back to `font-sans` or `font-display`, so existing overrides continue to work.
230
+
231
+ ## Palette utilities vs filled UI
232
+
233
+ Semantic text utility classes use direct palette colors:
234
+
235
+ ```css
236
+ .saas-text-primary { color: var(--saas-primary); }
237
+ .saas-text-warning { color: var(--saas-warning); }
238
+ ```
239
+
240
+ Filled UI uses the matching `on-*` alias:
241
+
242
+ ```css
243
+ .saas-button-primary {
244
+ background: var(--saas-primary);
245
+ color: var(--saas-on-primary);
246
+ }
247
+
248
+ .saas-badge-warning {
249
+ background: var(--saas-warning);
250
+ color: var(--saas-on-warning);
251
+ }
252
+ ```
253
+
254
+ ## Override example
255
+
256
+ ```css
257
+ /* Consumer CSS is unlayered, so it overrides the library's layered rules cleanly. */
258
+ [data-ui="minimal-saas"][data-theme="arctic-indigo"] {
259
+ --saas-radius-md: 1rem;
260
+ --saas-font-sans: Inter, system-ui, sans-serif;
261
+ --saas-font-display: Inter, system-ui, sans-serif;
262
+ }
263
+
264
+ :where([data-ui][data-theme="arctic-indigo"][data-mode="light"]) {
265
+ --usk-primary-rgb: 72 91 255;
266
+ --usk-primary-hover-rgb: 55 75 230;
267
+ --usk-primary-text-rgb: 255 255 255;
268
+ }
269
+ ```
270
+
271
+ ## 2.x compatibility notes
272
+
273
+ - Component-facing prefixed tokens remain available.
274
+ - Concrete color authoring moved to `--usk-*` shared roles.
275
+ - Bundled CSS inlines `theme-colors.css`; standalone style files import it.
276
+ - If a consumer build system ignores CSS `@import`, import `ui-style-kit-css/theme-colors.css` before the standalone style file.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ui-style-kit-css",
3
- "version": "1.2.1",
4
- "description": "A CSS-only UI style and color theme kit with 11 visual systems, 10 shared color schemes, light/dark/contrast modes, and accessibility-focused native HTML coverage. Designed for easy integration into any web project, it provides a comprehensive set of styles and themes to create visually stunning and accessible user interfaces without the need for JavaScript.",
3
+ "version": "2.0.1",
4
+ "description": "CSS theme and UI style preset library for accessible websites, dashboards, admin interfaces, and client-facing pages.",
5
5
  "style": "dist/ui-style-kit.css",
6
6
  "main": "dist/ui-style-kit.css",
7
7
  "unpkg": "dist/ui-style-kit.min.css",
@@ -9,80 +9,118 @@
9
9
  "files": [
10
10
  "dist",
11
11
  "styles",
12
- "index.html",
12
+ "demo",
13
+ "docs",
13
14
  "README.md",
14
15
  "LICENSE",
15
16
  "CHANGELOG.md",
16
- "CODE_OF_CONDUCT.md"
17
+ "STYLE-MAP.md",
18
+ "CONTRIBUTING.md",
19
+ "SECURITY.md"
17
20
  ],
18
21
  "keywords": [
19
22
  "css",
20
23
  "ui",
21
24
  "themes",
25
+ "theme-system",
22
26
  "style-kit",
23
27
  "design-system",
28
+ "css-library",
24
29
  "accessibility",
25
30
  "color-themes",
31
+ "dark-mode",
32
+ "light-mode",
33
+ "high-contrast",
34
+ "dashboard",
35
+ "admin-panel",
36
+ "web-design",
37
+ "responsive-design",
38
+ "css-variables",
39
+ "custom-properties",
26
40
  "bento",
27
- "saas",
41
+ "minimal-saas",
28
42
  "glassmorphism",
43
+ "skeuomorphism",
29
44
  "neumorphism",
30
45
  "cyberpunk",
31
46
  "y2k",
32
47
  "brutalism",
33
- "retrofuturism"
48
+ "retrofuturism",
49
+ "bauhaus"
34
50
  ],
35
- "scripts": {
36
- "build": "node scripts/build-css.js",
37
- "lint": "npm run lint:css",
38
- "lint:css": "stylelint \"styles/**/*.css\"",
39
- "lint:css:fix": "stylelint \"styles/**/*.css\" --fix",
40
- "prepublishOnly": "npm run lint && npm run build && npm run test:unit",
41
- "test": "npm run test:unit",
42
- "test:ci": "npm run lint && npm run build && npm run test:unit && npm run test:e2e",
43
- "test:e2e": "node scripts/playwright-cli.js test",
44
- "test:e2e:headed": "node scripts/playwright-cli.js test --headed",
45
- "test:e2e:install": "node scripts/playwright-cli.js install chromium",
46
- "test:e2e:install:ci": "node scripts/playwright-cli.js install --with-deps chromium",
47
- "test:e2e:ui": "node scripts/playwright-cli.js test --ui",
48
- "test:unit": "node --test tests/package-integrity.test.js",
49
- "verify": "npm run lint && npm run build && npm run test:unit && npm run test:e2e"
50
- },
51
51
  "license": "MIT",
52
- "engines": {
53
- "node": ">=18.18.0"
54
- },
55
52
  "sideEffects": [
56
53
  "*.css"
57
54
  ],
58
55
  "exports": {
59
56
  ".": "./dist/ui-style-kit.css",
60
57
  "./css": "./dist/ui-style-kit.css",
58
+ "./css.css": "./dist/ui-style-kit.css",
61
59
  "./min": "./dist/ui-style-kit.min.css",
60
+ "./min.css": "./dist/ui-style-kit.min.css",
61
+ "./dist/ui-style-kit.css": "./dist/ui-style-kit.css",
62
+ "./dist/ui-style-kit.min.css": "./dist/ui-style-kit.min.css",
63
+ "./package.json": "./package.json",
64
+ "./styles/theme-colors": "./styles/theme-colors.css",
65
+ "./styles/theme-colors.css": "./styles/theme-colors.css",
66
+ "./theme-colors": "./styles/theme-colors.css",
67
+ "./theme-colors.css": "./styles/theme-colors.css",
68
+ "./styles/native-elements": "./styles/native-elements.css",
69
+ "./styles/native-elements.css": "./styles/native-elements.css",
70
+ "./native-elements": "./styles/native-elements.css",
71
+ "./native-elements.css": "./styles/native-elements.css",
62
72
  "./styles/minimal-saas": "./styles/minimal-saas.css",
73
+ "./styles/minimal-saas.css": "./styles/minimal-saas.css",
63
74
  "./minimal-saas": "./styles/minimal-saas.css",
75
+ "./minimal-saas.css": "./styles/minimal-saas.css",
64
76
  "./styles/bento": "./styles/bento.css",
77
+ "./styles/bento.css": "./styles/bento.css",
65
78
  "./bento": "./styles/bento.css",
79
+ "./bento.css": "./styles/bento.css",
66
80
  "./styles/maximalist": "./styles/maximalist.css",
81
+ "./styles/maximalist.css": "./styles/maximalist.css",
67
82
  "./maximalist": "./styles/maximalist.css",
83
+ "./maximalist.css": "./styles/maximalist.css",
68
84
  "./styles/bauhaus": "./styles/bauhaus.css",
85
+ "./styles/bauhaus.css": "./styles/bauhaus.css",
69
86
  "./bauhaus": "./styles/bauhaus.css",
87
+ "./bauhaus.css": "./styles/bauhaus.css",
70
88
  "./styles/tactile": "./styles/tactile.css",
89
+ "./styles/tactile.css": "./styles/tactile.css",
71
90
  "./tactile": "./styles/tactile.css",
91
+ "./tactile.css": "./styles/tactile.css",
72
92
  "./styles/neumorphism": "./styles/neumorphism.css",
93
+ "./styles/neumorphism.css": "./styles/neumorphism.css",
73
94
  "./neumorphism": "./styles/neumorphism.css",
95
+ "./neumorphism.css": "./styles/neumorphism.css",
74
96
  "./styles/retrofuturism": "./styles/retrofuturism.css",
97
+ "./styles/retrofuturism.css": "./styles/retrofuturism.css",
75
98
  "./retrofuturism": "./styles/retrofuturism.css",
99
+ "./retrofuturism.css": "./styles/retrofuturism.css",
76
100
  "./styles/brutalism": "./styles/brutalism.css",
101
+ "./styles/brutalism.css": "./styles/brutalism.css",
77
102
  "./brutalism": "./styles/brutalism.css",
103
+ "./brutalism.css": "./styles/brutalism.css",
78
104
  "./styles/cyberpunk": "./styles/cyberpunk.css",
105
+ "./styles/cyberpunk.css": "./styles/cyberpunk.css",
79
106
  "./cyberpunk": "./styles/cyberpunk.css",
107
+ "./cyberpunk.css": "./styles/cyberpunk.css",
80
108
  "./styles/y2k": "./styles/y2k.css",
109
+ "./styles/y2k.css": "./styles/y2k.css",
81
110
  "./y2k": "./styles/y2k.css",
111
+ "./y2k.css": "./styles/y2k.css",
82
112
  "./styles/retro-glass": "./styles/retro-glass.css",
113
+ "./styles/retro-glass.css": "./styles/retro-glass.css",
83
114
  "./retro-glass": "./styles/retro-glass.css",
115
+ "./retro-glass.css": "./styles/retro-glass.css",
84
116
  "./styles/interactive-surface-bridge": "./styles/interactive-surface-bridge.css",
85
- "./interactive-surface-bridge": "./styles/interactive-surface-bridge.css"
117
+ "./styles/interactive-surface-bridge.css": "./styles/interactive-surface-bridge.css",
118
+ "./interactive-surface-bridge": "./styles/interactive-surface-bridge.css",
119
+ "./interactive-surface-bridge.css": "./styles/interactive-surface-bridge.css",
120
+ "./with-bridge": "./dist/ui-style-kit.with-bridge.css",
121
+ "./with-bridge.css": "./dist/ui-style-kit.with-bridge.css",
122
+ "./dist/ui-style-kit.with-bridge.css": "./dist/ui-style-kit.with-bridge.css",
123
+ "./dist/ui-style-kit.with-bridge.min.css": "./dist/ui-style-kit.with-bridge.min.css"
86
124
  },
87
125
  "repository": {
88
126
  "type": "git",
@@ -92,110 +130,34 @@
92
130
  "url": "https://github.com/Foscat/ui-style-kit-css/issues"
93
131
  },
94
132
  "homepage": "https://github.com/Foscat/ui-style-kit-css#readme",
133
+ "engines": {
134
+ "node": ">=20"
135
+ },
136
+ "type": "module",
95
137
  "devDependencies": {
96
- "@playwright/test": "^1.54.0",
97
- "lightningcss": "^1.30.2",
138
+ "@playwright/test": "^1.60.0",
98
139
  "stylelint": "^17.12.0"
99
140
  },
100
- "dependencies": {
101
- "ajv": "~8.20.0",
102
- "ansi-regex": "~5.0.1",
103
- "ansi-styles": "~4.3.0",
104
- "argparse": "~2.0.1",
105
- "array-union": "~2.1.0",
106
- "astral-regex": "~2.0.0",
107
- "balanced-match": "~2.0.0",
108
- "braces": "~3.0.3",
109
- "cacheable": "~2.3.5",
110
- "callsites": "~3.1.0",
111
- "color-convert": "~2.0.1",
112
- "color-name": "~1.1.4",
113
- "colord": "~2.9.3",
114
- "cosmiconfig": "~9.0.1",
115
- "css-functions-list": "~3.3.3",
116
- "css-tree": "~3.2.1",
117
- "cssesc": "~3.0.0",
118
- "debug": "~4.4.3",
119
- "dir-glob": "~3.0.1",
120
- "emoji-regex": "~8.0.0",
121
- "env-paths": "~2.2.1",
122
- "error-ex": "~1.3.4",
123
- "fast-deep-equal": "~3.1.3",
124
- "fast-glob": "~3.3.3",
125
- "fast-uri": "~3.1.2",
126
- "fastest-levenshtein": "~1.0.16",
127
- "fastq": "~1.20.1",
128
- "file-entry-cache": "~11.1.3",
129
- "fill-range": "~7.1.1",
130
- "flat-cache": "~6.1.22",
131
- "flatted": "~3.4.2",
132
- "glob-parent": "~5.1.2",
133
- "global-modules": "~2.0.0",
134
- "global-prefix": "~3.0.0",
135
- "globby": "~11.1.0",
136
- "globjoin": "~0.1.4",
137
- "has-flag": "~4.0.0",
138
- "hashery": "~1.5.1",
139
- "hookified": "~1.15.1",
140
- "html-tags": "~3.3.1",
141
- "ignore": "~7.0.5",
142
- "import-fresh": "~3.3.1",
143
- "imurmurhash": "~0.1.4",
144
- "ini": "~1.3.8",
145
- "is-arrayish": "~0.2.1",
146
- "is-extglob": "~2.1.1",
147
- "is-fullwidth-code-point": "~3.0.0",
148
- "is-glob": "~4.0.3",
149
- "is-number": "~7.0.0",
150
- "is-plain-object": "~5.0.0",
151
- "isexe": "~2.0.0",
152
- "js-tokens": "~4.0.0",
153
- "js-yaml": "~4.1.1",
154
- "json-parse-even-better-errors": "~2.3.1",
155
- "json-schema-traverse": "~1.0.0",
156
- "keyv": "~5.6.0",
157
- "kind-of": "~6.0.3",
158
- "known-css-properties": "~0.37.0",
159
- "lines-and-columns": "~1.2.4",
160
- "lodash.truncate": "~4.4.2",
161
- "mathml-tag-names": "~2.1.3",
162
- "mdn-data": "~2.27.1",
163
- "meow": "~13.2.0",
164
- "merge2": "~1.4.1",
165
- "micromatch": "~4.0.8",
166
- "ms": "~2.1.3",
167
- "nanoid": "~3.3.12",
168
- "normalize-path": "~3.0.0",
169
- "parent-module": "~1.0.1",
170
- "parse-json": "~5.2.0",
171
- "path-type": "~4.0.0",
172
- "picocolors": "~1.1.1",
173
- "picomatch": "~2.3.2",
174
- "postcss": "~8.5.15",
175
- "postcss-resolve-nested-selector": "~0.1.6",
176
- "postcss-safe-parser": "~7.0.1",
177
- "postcss-selector-parser": "~7.1.1",
178
- "postcss-value-parser": "~4.2.0",
179
- "qified": "~0.10.1",
180
- "queue-microtask": "~1.2.3",
181
- "require-from-string": "~2.0.2",
182
- "resolve-from": "~5.0.0",
183
- "reusify": "~1.1.0",
184
- "run-parallel": "~1.2.0",
185
- "signal-exit": "~4.1.0",
186
- "slash": "~3.0.0",
187
- "slice-ansi": "~4.0.0",
188
- "source-map-js": "~1.2.1",
189
- "string-width": "~4.2.3",
190
- "strip-ansi": "~6.0.1",
191
- "supports-color": "~7.2.0",
192
- "supports-hyperlinks": "~3.2.0",
193
- "svg-tags": "~1.0.0",
194
- "table": "~6.9.0",
195
- "to-regex-range": "~5.0.1",
196
- "util-deprecate": "~1.0.2",
197
- "which": "~1.3.1",
198
- "write-file-atomic": "~5.0.1"
141
+ "scripts": {
142
+ "build": "node scripts/build.mjs",
143
+ "lint": "stylelint \"styles/**/*.css\"",
144
+ "check:contrast": "node scripts/check-contrast.mjs",
145
+ "check:package": "node scripts/check-package.mjs",
146
+ "test": "npm run test:unit",
147
+ "test:unit": "node --test tests/*.test.js",
148
+ "test:e2e": "playwright test --config playwright.config.js",
149
+ "test:e2e:install:ci": "playwright install --with-deps chromium",
150
+ "check": "npm run build && npm run lint && npm run test:unit && npm run check:contrast && npm run check:package",
151
+ "pack:dry-run": "npm pack --dry-run",
152
+ "prepack": "npm run check",
153
+ "prepublishOnly": "npm run check",
154
+ "release:patch": "npm version patch && npm publish",
155
+ "release:minor": "npm version minor && npm publish",
156
+ "release:major": "npm version major && npm publish",
157
+ "test:visual": "playwright test --config playwright.config.mjs tests/demo-visual.spec.mjs"
199
158
  },
200
- "author": "Foscat"
159
+ "author": "Kyle Foster",
160
+ "publishConfig": {
161
+ "access": "public"
162
+ }
201
163
  }