srcdev-nuxt-components 9.1.52 → 9.1.53
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/.claude/settings.json
CHANGED
|
@@ -8,7 +8,29 @@
|
|
|
8
8
|
"Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:3000/)",
|
|
9
9
|
"Bash(kill %1)",
|
|
10
10
|
"Bash(xargs kill -9)",
|
|
11
|
-
"Edit(/.claude/skills/components/**)"
|
|
11
|
+
"Edit(/.claude/skills/components/**)",
|
|
12
|
+
"Bash(command -v nvm)",
|
|
13
|
+
"Bash(command -v fnm)",
|
|
14
|
+
"Bash(command -v volta)",
|
|
15
|
+
"Bash(npm --version)",
|
|
16
|
+
"Bash(python3 -c ' *)",
|
|
17
|
+
"Bash(node -e ' *)",
|
|
18
|
+
"Bash(/usr/local/bin/node -e \"...\")",
|
|
19
|
+
"Bash(which node *)",
|
|
20
|
+
"Read(//usr/local/bin/**)",
|
|
21
|
+
"Read(//Users/simoncornforth/.nvm/versions/**)",
|
|
22
|
+
"Read(//opt/homebrew/**)",
|
|
23
|
+
"Read(//usr/**)",
|
|
24
|
+
"Bash(/usr/local/Cellar/node@24/24.16.0/bin/node -e ' *)",
|
|
25
|
+
"Bash(/usr/local/Cellar/node@24/24.16.0/bin/node --version)",
|
|
26
|
+
"Bash(/usr/local/Cellar/node@24/24.16.0/bin/npm --version)",
|
|
27
|
+
"Bash(git -C /Users/simoncornforth/websites/instepreflexology log --oneline -3)",
|
|
28
|
+
"Bash(git -C /Users/simoncornforth/websites/instepreflexology add package-lock.json .nvmrc)",
|
|
29
|
+
"Bash(git -C /Users/simoncornforth/websites/instepreflexology commit -m ' *)",
|
|
30
|
+
"Bash(git -C /Users/simoncornforth/websites/instepreflexology push)"
|
|
31
|
+
],
|
|
32
|
+
"additionalDirectories": [
|
|
33
|
+
"/Users/simoncornforth/websites/instepreflexology"
|
|
12
34
|
]
|
|
13
35
|
}
|
|
14
36
|
}
|
package/.claude/skills/index.md
CHANGED
|
@@ -41,6 +41,7 @@ Each skill is a single markdown file named `<area>-<task>.md`.
|
|
|
41
41
|
├── component-inline-action-button.md — InputButtonCore variant="inline" pattern for buttons embedded in custom input wrappers
|
|
42
42
|
├── vue-video-autoplay.md — autoplay on client-side navigation: use <source> child (not :src on <video>), :key, and explicit v.load()
|
|
43
43
|
├── icon-sets.md — icon set packages required by layer components, FOUC prevention, component→package map
|
|
44
|
+
├── vercel-node-version.md — .nvmrc pinned to Node 24 is required; without it Vercel uses npm 10 which crashes on versionless optional stubs
|
|
44
45
|
├── robots-env-aware.md — @nuxtjs/robots: allow crawling on prod domain only, block on preview/staging via env var
|
|
45
46
|
├── new-app-scaffold.md — scaffold a new Nuxt consumer app extending this layer (package.json, nuxt.config, app structure, CLAUDE.md)
|
|
46
47
|
├── qa-panel.md — collapsible dev-only panel for toggling component props live on a page (demo pages and consuming apps)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Vercel Node Version — .nvmrc Required
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Every project deploying to Vercel must have a `.nvmrc` file pinned to Node 24. Without it, Vercel defaults to Node 22 (npm 10), which crashes with `npm error Invalid Version:` on platform-specific optional packages that npm 11 (Node 24) handles gracefully.
|
|
6
|
+
|
|
7
|
+
## The problem
|
|
8
|
+
|
|
9
|
+
When `npm install` runs on macOS with Node 24, it writes stub entries into `package-lock.json` for platform-specific optional packages that don't apply to the current OS. For example:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
"node_modules/oxc-transform/node_modules/@oxc-transform/binding-linux-arm-gnueabihf": {
|
|
13
|
+
"optional": true
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
This stub has no `version` field. npm 11 (Node 24) skips it silently. npm 10 (Node 22) calls `semver.valid()` on the empty version string and throws:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
npm error Invalid Version:
|
|
21
|
+
npm error A complete log of this run can be found in: ...
|
|
22
|
+
Error: Command "npm install" exited with 1
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The build fails even though the package is optional and not needed on Vercel's Linux x86_64 runtime.
|
|
26
|
+
|
|
27
|
+
## Fix
|
|
28
|
+
|
|
29
|
+
### 1. Add `.nvmrc` to the project root
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
24
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Vercel reads `.nvmrc` and provisions Node 24 (npm 11), which handles the versionless stubs without error.
|
|
36
|
+
|
|
37
|
+
### 2. Verify the file exists before every deployment
|
|
38
|
+
|
|
39
|
+
If `.nvmrc` is ever accidentally deleted, recreate it immediately. This applies to:
|
|
40
|
+
- `nuxt-components` (the layer)
|
|
41
|
+
- Every consumer app (`instepreflexology`, `luxury-locs-by-natasha-nuxt3`, etc.)
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- The specific stub that first surfaced this was `@oxc-transform/binding-linux-arm-gnueabihf` — a Linux ARM native binary written as a versionless placeholder on macOS.
|
|
46
|
+
- The build works locally on Node 24 regardless, so the failure is silent until Vercel runs.
|
|
47
|
+
- Vercel also respects the `engines.node` field in `package.json`, but `.nvmrc` is simpler and doesn't require a valid semver range.
|
|
48
|
+
- Do **not** attempt to fix by deleting stubs from `package-lock.json` alone — they reappear on the next `npm install`. The `.nvmrc` file is the durable fix.
|
|
@@ -48,7 +48,11 @@ const { headingId, ariaLabelledby } = useAriaLabelledById(props.tag);
|
|
|
48
48
|
|
|
49
49
|
--full: minmax(var(--_minimum-content-padding), 1fr);
|
|
50
50
|
--popout: minmax(0, calc((var(--_popout-max-width) - var(--_content-max-width)) * 0.5));
|
|
51
|
-
--content:
|
|
51
|
+
--content: clamp(
|
|
52
|
+
0px,
|
|
53
|
+
calc((100% - var(--_minimum-content-padding) * 2 - var(--_inset-content-max-width)) * 0.5),
|
|
54
|
+
calc((var(--_content-max-width) - var(--_inset-content-max-width)) * 0.5)
|
|
55
|
+
);
|
|
52
56
|
--inset-content: min(var(--_inset-content-max-width), 100% - var(--_minimum-content-padding) * 2);
|
|
53
57
|
|
|
54
58
|
display: grid;
|
package/package.json
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "srcdev-nuxt-components",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "9.1.
|
|
4
|
+
"version": "9.1.53",
|
|
5
5
|
"main": "nuxt.config.ts",
|
|
6
6
|
"types": "types.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"engines": {
|
|
9
|
-
"node": ">=20.19.0 <23",
|
|
10
|
-
"npm": ">=10.0.0"
|
|
11
|
-
},
|
|
12
8
|
"scripts": {
|
|
13
9
|
"clean": "rm -rf .nuxt && rm -rf .output",
|
|
14
10
|
"cleanall": "rm -rf node_modules && rm -rf .nuxt && rm -rf .output && rm package-lock.json",
|
|
15
11
|
"reinstall": "rm -rf node_modules && npm install",
|
|
16
12
|
"cleaninstall": "npm run clean && npm run reinstall",
|
|
17
|
-
"dev": "SRCDEV_STANDALONE=true
|
|
13
|
+
"dev": "SRCDEV_STANDALONE=true nuxt dev",
|
|
18
14
|
"build": "SRCDEV_STANDALONE=true nuxt build",
|
|
19
15
|
"generate": "SRCDEV_STANDALONE=true nuxt generate",
|
|
20
16
|
"preview": "SRCDEV_STANDALONE=true nuxt preview",
|