Initial monorepo setup
This commit is contained in:
commit
405ce15933
19
.eslintrc.cjs
Normal file
19
.eslintrc.cjs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/** @type {import('eslint').Linter.Config} */
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2020,
|
||||||
|
sourceType: "module",
|
||||||
|
},
|
||||||
|
plugins: ["solid"],
|
||||||
|
extends: ["plugin:solid/typescript"],
|
||||||
|
rules: {
|
||||||
|
// Only Solid-specific rules — everything else handled by Biome
|
||||||
|
"solid/reactivity": "error",
|
||||||
|
"solid/no-destructure": "error",
|
||||||
|
"solid/prefer-for": "warn",
|
||||||
|
"solid/no-react-deps": "error",
|
||||||
|
"solid/no-react-specific-props": "error",
|
||||||
|
},
|
||||||
|
};
|
||||||
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.tsdown/
|
||||||
|
coverage/
|
||||||
|
*.tsbuildinfo
|
||||||
|
.superpowers/
|
||||||
33
biome.json
Normal file
33
biome.json
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://biomejs.dev/schemas/1.9.0/schema.json",
|
||||||
|
"organizeImports": { "enabled": true },
|
||||||
|
"linter": {
|
||||||
|
"enabled": true,
|
||||||
|
"rules": {
|
||||||
|
"recommended": true,
|
||||||
|
"suspicious": {
|
||||||
|
"noExplicitAny": "error"
|
||||||
|
},
|
||||||
|
"style": {
|
||||||
|
"useConst": "error",
|
||||||
|
"useTemplate": "error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"formatter": {
|
||||||
|
"enabled": true,
|
||||||
|
"indentStyle": "space",
|
||||||
|
"indentWidth": 2,
|
||||||
|
"lineWidth": 100
|
||||||
|
},
|
||||||
|
"javascript": {
|
||||||
|
"formatter": {
|
||||||
|
"quoteStyle": "double",
|
||||||
|
"semicolons": "always",
|
||||||
|
"trailingCommas": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"files": {
|
||||||
|
"ignore": ["node_modules", "dist", ".tsdown", "coverage"]
|
||||||
|
}
|
||||||
|
}
|
||||||
18
package.json
Normal file
18
package.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "pettyui-monorepo",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"build": "pnpm -r build",
|
||||||
|
"test": "pnpm -r test",
|
||||||
|
"lint": "biome check . && eslint packages --ext .ts,.tsx",
|
||||||
|
"format": "biome format --write .",
|
||||||
|
"typecheck": "pnpm -r typecheck"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@biomejs/biome": "^1.9.0",
|
||||||
|
"eslint": "^9.0.0",
|
||||||
|
"eslint-plugin-solid": "^0.14.0",
|
||||||
|
"typescript": "^6.0.2",
|
||||||
|
"zod": "^4.3.6"
|
||||||
|
}
|
||||||
|
}
|
||||||
71
packages/core/package.json
Normal file
71
packages/core/package.json
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"name": "pettyui",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "AI-native headless UI component library for SolidJS",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"solid": "./src/index.ts",
|
||||||
|
"import": "./dist/index.js",
|
||||||
|
"require": "./dist/index.cjs"
|
||||||
|
},
|
||||||
|
"./dialog": {
|
||||||
|
"solid": "./src/components/dialog/index.ts",
|
||||||
|
"import": "./dist/dialog/index.js",
|
||||||
|
"require": "./dist/dialog/index.cjs"
|
||||||
|
},
|
||||||
|
"./presence": {
|
||||||
|
"solid": "./src/utilities/presence/index.ts",
|
||||||
|
"import": "./dist/utilities/presence/index.js",
|
||||||
|
"require": "./dist/utilities/presence/index.cjs"
|
||||||
|
},
|
||||||
|
"./focus-trap": {
|
||||||
|
"solid": "./src/utilities/focus-trap/index.ts",
|
||||||
|
"import": "./dist/utilities/focus-trap/index.js",
|
||||||
|
"require": "./dist/utilities/focus-trap/index.cjs"
|
||||||
|
},
|
||||||
|
"./scroll-lock": {
|
||||||
|
"solid": "./src/utilities/scroll-lock/index.ts",
|
||||||
|
"import": "./dist/utilities/scroll-lock/index.js",
|
||||||
|
"require": "./dist/utilities/scroll-lock/index.cjs"
|
||||||
|
},
|
||||||
|
"./dismiss": {
|
||||||
|
"solid": "./src/utilities/dismiss/index.ts",
|
||||||
|
"import": "./dist/utilities/dismiss/index.js",
|
||||||
|
"require": "./dist/utilities/dismiss/index.cjs"
|
||||||
|
},
|
||||||
|
"./portal": {
|
||||||
|
"solid": "./src/utilities/portal/index.ts",
|
||||||
|
"import": "./dist/utilities/portal/index.js",
|
||||||
|
"require": "./dist/utilities/portal/index.cjs"
|
||||||
|
},
|
||||||
|
"./visually-hidden": {
|
||||||
|
"solid": "./src/utilities/visually-hidden/index.ts",
|
||||||
|
"import": "./dist/utilities/visually-hidden/index.js",
|
||||||
|
"require": "./dist/utilities/visually-hidden/index.cjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsdown",
|
||||||
|
"test": "vitest run",
|
||||||
|
"test:watch": "vitest",
|
||||||
|
"typecheck": "tsc --noEmit"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"solid-js": "^1.9.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@floating-ui/dom": "^1.7.6"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@solidjs/testing-library": "^0.8.10",
|
||||||
|
"@testing-library/jest-dom": "^6.0.0",
|
||||||
|
"@testing-library/user-event": "^14.0.0",
|
||||||
|
"jsdom": "^26.0.0",
|
||||||
|
"solid-js": "^1.9.12",
|
||||||
|
"tsdown": "^0.21.7",
|
||||||
|
"vite": "^8.0.3",
|
||||||
|
"vite-plugin-solid": "^2.11.11",
|
||||||
|
"vitest": "^4.1.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
1
packages/core/tests/setup.ts
Normal file
1
packages/core/tests/setup.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
import "@testing-library/jest-dom";
|
||||||
11
packages/core/tsconfig.json
Normal file
11
packages/core/tsconfig.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": "src",
|
||||||
|
"outDir": "dist",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {}
|
||||||
|
},
|
||||||
|
"include": ["src"],
|
||||||
|
"exclude": ["node_modules", "dist", "tests"]
|
||||||
|
}
|
||||||
19
packages/core/tsdown.config.ts
Normal file
19
packages/core/tsdown.config.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { defineConfig } from "tsdown";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
entry: {
|
||||||
|
index: "src/index.ts",
|
||||||
|
"dialog/index": "src/components/dialog/index.ts",
|
||||||
|
"presence/index": "src/utilities/presence/index.ts",
|
||||||
|
"focus-trap/index": "src/utilities/focus-trap/index.ts",
|
||||||
|
"scroll-lock/index": "src/utilities/scroll-lock/index.ts",
|
||||||
|
"dismiss/index": "src/utilities/dismiss/index.ts",
|
||||||
|
"portal/index": "src/utilities/portal/index.ts",
|
||||||
|
"visually-hidden/index": "src/utilities/visually-hidden/index.ts",
|
||||||
|
},
|
||||||
|
format: ["esm", "cjs"],
|
||||||
|
dts: true,
|
||||||
|
clean: true,
|
||||||
|
sourcemap: true,
|
||||||
|
external: ["solid-js", "solid-js/web", "solid-js/store"],
|
||||||
|
});
|
||||||
12
packages/core/vite.config.ts
Normal file
12
packages/core/vite.config.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { defineConfig } from "vite";
|
||||||
|
import solid from "vite-plugin-solid";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [solid()],
|
||||||
|
test: {
|
||||||
|
environment: "jsdom",
|
||||||
|
globals: true,
|
||||||
|
setupFiles: ["./tests/setup.ts"],
|
||||||
|
transformMode: { web: [/\.[jt]sx?$/] },
|
||||||
|
},
|
||||||
|
});
|
||||||
2
pnpm-workspace.yaml
Normal file
2
pnpm-workspace.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
packages:
|
||||||
|
- "packages/*"
|
||||||
18
tsconfig.base.json
Normal file
18
tsconfig.base.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2020",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"jsx": "preserve",
|
||||||
|
"jsxImportSource": "solid-js",
|
||||||
|
"strict": true,
|
||||||
|
"exactOptionalPropertyTypes": true,
|
||||||
|
"noUncheckedIndexedAccess": true,
|
||||||
|
"verbatimModuleSyntax": true,
|
||||||
|
"declaration": true,
|
||||||
|
"declarationMap": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"esModuleInterop": false,
|
||||||
|
"skipLibCheck": true
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user