Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
44 changes: 44 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# AGENTS

## Mission
Questlists Svelte is a slim Svelte playground used to build and verify the Twintrinsic Tailwind CSS library. Changes here should keep the Svelte demo lightweight while showcasing Tailwind-powered UI patterns that mirror the upstream design system.

## Core Responsibilities
1. **Component + UI development** – Implement and refine demo components/pages that exercise Twintrinsic utilities. Keep examples minimal yet visually polished.
2. **Styling validation** – Ensure Tailwind classes (including plugins like typography, forms, aspect-ratio, and container queries) behave as expected across breakpoints.
3. **Tooling upkeep** – Maintain the Vite/SvelteKit app, Storybook docs, Tailwind config, and testing harnesses so the library remains easy to review.
4. **Regression safety** – Expand Vitest unit coverage and Playwright e2e smoke tests whenever new UI behavior is introduced.

## Toolbelt & Scripts
Use `pnpm` (preferred) or `npm` to run the scripts below:

| Script | Purpose |
| --- | --- |
| `pnpm dev` | Run the Vite-powered SvelteKit dev server for local iteration. |
| `pnpm build` / `pnpm preview` | Produce and inspect the optimized bundle before publishing. |
| `pnpm lint` | Prettier check + ESLint pass; required before opening PRs. |
| `pnpm check` | `svelte-check` type/diagnostic sweep synced with the repo tsconfig. |
| `pnpm storybook` / `pnpm build-storybook` | Develop or statically build Storybook docs that accompany component work. |
| `pnpm test:unit` | Execute Vitest suites. |
| `pnpm test:e2e` | Run Playwright tests; keep a fast, meaningful baseline. |
| `pnpm test` | Combined e2e + unit pipeline run. |

## Collaboration Guidelines
- **Small, reviewable PRs**: Favor narrowly scoped changes with clear before/after context.
- **Story parity**: Every new UI capability should have a Storybook story (or update) plus minimal documentation to teach reviewers how it’s meant to work.
- **Testing discipline**: Add or update Vitest/Playwright coverage for new logic; note any intentionally skipped scenarios with TODOs.
- **Localization & assets**: Place shared assets in `src/assets`; wire translations via `@inlang/paraglide-sveltekit` when applicable.
- **Design consistency**: Match the Twintrinsic visual language—tailored color palettes, purposeful typography, and deliberate spacing.

## Suggested Agent Workflow
1. **Sync + install** – `pnpm install`, ensure `pnpm check` passes.
2. **Plan** – Outline the UI/feature delta; confirm whether stories/tests need updates.
3. **Implement** – Develop in `src/…`, mirroring Tailwind utility usage.
4. **Validate** – Run `pnpm lint`, `pnpm test`, and preview Storybook plus the Svelte app.
5. **Document** – Update READMEs, stories, or inline comments when behavior changes.
6. **Review readiness** – Prepare screenshots/clips if visual changes are non-trivial.

## Communication
- Prefer GitHub issues or PR discussions for design questions.
- Use Storybook links or Chromatic deployments when requesting feedback on component behavior.
- Flag blockers early; include reproduction steps and command output when reporting failures.
39 changes: 39 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": true,
"indentStyle": "tab"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"css": {
"parser": {
"tailwindDirectives": true
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
4 changes: 4 additions & 0 deletions messages/es.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"$schema": "https://inlang.com/schema/inlang-message-format",
"hello_world": "Hola, {name}"
}
File renamed without changes.
66 changes: 33 additions & 33 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,43 +17,43 @@
"build-storybook": "storybook build"
},
"devDependencies": {
"@chromatic-com/storybook": "^3.2.2",
"@playwright/test": "^1.45.3",
"@storybook/addon-essentials": "^8.4.4",
"@storybook/addon-interactions": "^8.4.4",
"@storybook/addon-svelte-csf": "^5.0.0-next.11",
"@storybook/blocks": "^8.4.4",
"@storybook/svelte": "^8.4.4",
"@storybook/sveltekit": "^8.4.4",
"@storybook/test": "^8.4.4",
"@sveltejs/adapter-auto": "^3.0.0",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^4.0.0",
"@types/eslint": "^9.6.0",
"autoprefixer": "^10.4.20",
"eslint": "^9.7.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.36.0",
"globals": "^15.0.0",
"prettier": "^3.3.2",
"prettier-plugin-svelte": "^3.2.6",
"prettier-plugin-tailwindcss": "^0.6.5",
"storybook": "^8.4.4",
"svelte": "^5.0.0",
"svelte-check": "^4.0.0",
"tailwindcss": "^3.4.9",
"typescript": "^5.0.0",
"typescript-eslint": "^8.0.0",
"vite": "^5.0.3",
"vitest": "^2.0.4"
"@biomejs/biome": "2.3.8",
"@chromatic-com/storybook": "^4.1.3",
"@playwright/test": "^1.57.0",
"@storybook/addon-svelte-csf": "^5.0.10",
"@storybook/svelte": "^10.1.4",
"@storybook/sveltekit": "^10.1.4",
"@sveltejs/adapter-auto": "^7.0.0",
"@sveltejs/adapter-vercel": "^6.2.0",
"@sveltejs/kit": "^2.49.1",
"@sveltejs/vite-plugin-svelte": "^6.2.1",
"@tailwindcss/vite": "^4.1.17",
"@types/eslint": "^9.6.1",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-svelte": "^3.13.1",
"globals": "^16.5.0",
"prettier": "^3.7.4",
"prettier-plugin-svelte": "^3.4.0",
"prettier-plugin-tailwindcss": "^0.7.2",
"rollup-plugin-visualizer": "^6.0.5",
"storybook": "^10.1.4",
"svelte": "^5.45.5",
"svelte-check": "^4.3.4",
"tailwindcss": "^4.1.17",
"typescript": "^5.9.3",
"typescript-eslint": "^8.48.1",
"vite": "^7.2.6",
"vitest": "^4.0.15"
},
"dependencies": {
"@inlang/paraglide-sveltekit": "^0.11.1",
"@inlang/paraglide-js": "^2.6.0",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/forms": "^0.5.9",
"@tailwindcss/typography": "^0.5.15",
"@types/md5": "^2.3.5",
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.19",
"@types/md5": "^2.3.6",
"md5": "^2.3.0"
}
}
Loading