feat: v0.3.0 — Phase 3/4 façades + AppLayout on AppShell

- Curated re-exports from @limitless/ui through /forms, /data,
  /feedback, /navigation, /utils sub-paths so apps stop importing
  from the lower layer.
- /forms also re-exports the full @limitless/ui validation surface
  (hooks, format/security/address validators, types).
- AppLayout is now a thin wrapper over @limitless/ui's <AppShell> —
  same ShellConfig DTO, no duplicated chrome code.
- shell/types + shell/index re-export from @limitless/ui to keep one
  canonical type and one shared context.
- auth middleware: loose NextRequestLike typing to avoid two-copies-
  of-next conflict with the consumer's next.
- postbuild: rewrite ../images/ to ./images/ in copied CSS so refs
  resolve in dist/styles/.

Widget family in /data is the intersection of limitless's two
Widget files (Widget.d.ts vs Widget/index.d.ts collision in dist);
upstream fix needed before exposing IconWidget/UserWidget/etc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude
2026-05-11 08:26:30 +02:00
parent 1f2141118d
commit d430680df5
13 changed files with 460 additions and 580 deletions

View File

@@ -1,27 +1,66 @@
{
"name": "@gsc/web-kit",
"version": "0.2.0",
"description": "GSC web app skeleton layout, auth, data, forms, feedback, navigation. Built on @limitless/ui. Drop into a Next.js app and just write pages.",
"version": "0.3.0",
"description": "GSC web app skeleton \u2014 layout, auth, data, forms, feedback, navigation. Built on @limitless/ui. Drop into a Next.js app and just write pages.",
"license": "MIT",
"type": "module",
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" },
"./css": "./dist/styles/index.css",
"./layout": { "import": "./dist/layout/index.js", "types": "./dist/layout/index.d.ts" },
"./auth": { "import": "./dist/auth/index.js", "types": "./dist/auth/index.d.ts" },
"./auth/server":{ "import": "./dist/auth/server.js", "types": "./dist/auth/server.d.ts" },
"./auth/middleware": { "import": "./dist/auth/middleware.js", "types": "./dist/auth/middleware.d.ts" },
"./shell": { "import": "./dist/shell/index.js", "types": "./dist/shell/index.d.ts" },
"./shell/server":{ "import": "./dist/shell/server.js", "types": "./dist/shell/server.d.ts" },
"./data": { "import": "./dist/data/index.js", "types": "./dist/data/index.d.ts" },
"./forms": { "import": "./dist/forms/index.js", "types": "./dist/forms/index.d.ts" },
"./feedback": { "import": "./dist/feedback/index.js", "types": "./dist/feedback/index.d.ts" },
"./navigation": { "import": "./dist/navigation/index.js", "types": "./dist/navigation/index.d.ts" },
"./api": { "import": "./dist/api/index.js", "types": "./dist/api/index.d.ts" },
"./utils": { "import": "./dist/utils/index.js", "types": "./dist/utils/index.d.ts" }
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./css": "./dist/styles/index.css",
"./layout": {
"types": "./dist/layout/index.d.ts",
"import": "./dist/layout/index.js"
},
"./auth": {
"types": "./dist/auth/index.d.ts",
"import": "./dist/auth/index.js"
},
"./auth/server": {
"types": "./dist/auth/server.d.ts",
"import": "./dist/auth/server.js"
},
"./auth/middleware": {
"types": "./dist/auth/middleware.d.ts",
"import": "./dist/auth/middleware.js"
},
"./shell": {
"types": "./dist/shell/index.d.ts",
"import": "./dist/shell/index.js"
},
"./shell/server": {
"types": "./dist/shell/server.d.ts",
"import": "./dist/shell/server.js"
},
"./data": {
"types": "./dist/data/index.d.ts",
"import": "./dist/data/index.js"
},
"./forms": {
"types": "./dist/forms/index.d.ts",
"import": "./dist/forms/index.js"
},
"./feedback": {
"types": "./dist/feedback/index.d.ts",
"import": "./dist/feedback/index.js"
},
"./navigation": {
"types": "./dist/navigation/index.d.ts",
"import": "./dist/navigation/index.js"
},
"./api": {
"types": "./dist/api/index.d.ts",
"import": "./dist/api/index.js"
},
"./utils": {
"types": "./dist/utils/index.d.ts",
"import": "./dist/utils/index.js"
}
},
"sideEffects": [
"**/*.css"
@@ -43,10 +82,14 @@
"react": "^18.2.0 || ^19.0.0",
"react-dom": "^18.2.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"bootstrap": { "optional": true }
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"next": "16.1.1",
"typescript": "^5.4.0"
}
}
}