mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-21 21:09:49 +08:00
## Summary Redesigns the hosted components app (`apps/hosted-components`) with a new Tailwind-based UI: rebuilt auth pages (sign-in, sign-up, magic link, forgot/reset password, MFA, email verification, team invitation, CLI auth confirm) and a full hosted Account Settings suite (profile, emails & auth, notifications, active sessions, API keys, payments, teams), with dark mode support. Also fixes found along the way: form error clearing in forgot-password/password-reset, `runAsynchronouslyWithAlert` for the notifications switch, a `CopyButton` DOM prop leak, a bogus mobile-session icon check, and imports the app stylesheet in the root route so the app's Tailwind styles actually apply. ## Before / after screenshots Captured on the local dev setup (`internal` project). Onboarding is not shown since it redirects without standalone UI in this setup. <details> <summary><b>Sign in</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Sign up</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Forgot password</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Password reset</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Email verification</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>MFA</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Error</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Team invitation</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>CLI auth confirm</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Account settings — Profile</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Account settings — Notifications</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Account settings — Active sessions</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Account settings — API keys</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Account settings — Payments</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> <details> <summary><b>Account settings — Emails & auth</b></summary> | | Before | After | |---|---|---| | Light |  |  | | Dark |  |  | </details> Link to Devin session: https://app.devin.ai/sessions/1d2380aa55694f2fb12ed96e200a32ad Requested by: @Developing-Gamer --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: armaan <armaan@stack-auth.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
72 lines
2.3 KiB
JSON
72 lines
2.3 KiB
JSON
{
|
|
"name": "@hexclave/hosted-components",
|
|
"private": true,
|
|
"version": "1.0.15",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite dev --port ${NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX:-81}09",
|
|
"build": "vite build",
|
|
"start": "node .output/server/index.mjs",
|
|
"lint": "eslint --ext .ts,.tsx .",
|
|
"typecheck": "tsc --noEmit",
|
|
"clean": "rimraf .output && rimraf node_modules"
|
|
},
|
|
"dependencies": {
|
|
"@hexclave/react": "workspace:*",
|
|
"@hexclave/shared": "workspace:*",
|
|
"@hookform/resolvers": "^3.3.4",
|
|
"@oslojs/otp": "^1.1.0",
|
|
"@phosphor-icons/react": "^2.1.10",
|
|
"@radix-ui/react-accordion": "^1.2.1",
|
|
"@radix-ui/react-avatar": "^1.1.1",
|
|
"@radix-ui/react-checkbox": "^1.1.2",
|
|
"@radix-ui/react-dialog": "^1.1.2",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
|
"@radix-ui/react-popover": "^1.1.2",
|
|
"@radix-ui/react-select": "^2.1.2",
|
|
"@radix-ui/react-separator": "^1.1.0",
|
|
"@radix-ui/react-slot": "^1.1.0",
|
|
"@radix-ui/react-switch": "^1.1.1",
|
|
"@radix-ui/react-tooltip": "^1.1.3",
|
|
"@stripe/react-stripe-js": "^3.8.1",
|
|
"@stripe/stripe-js": "^7.7.0",
|
|
"@tanstack/react-table": "^8.21.3",
|
|
"browser-image-compression": "^2.0.2",
|
|
"class-variance-authority": "^0.7.0",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.0.4",
|
|
"export-to-csv": "^1.4.0",
|
|
"lucide-react": "^0.468.0",
|
|
"qrcode": "^1.5.4",
|
|
"react-easy-crop": "^5.5.6",
|
|
"react-hook-form": "^7.53.1",
|
|
"tailwind-merge": "^2.5.4",
|
|
"yup": "^1.7.1",
|
|
"@tanstack/react-router": "^1.121.3",
|
|
"@tanstack/react-start": "^1.121.3",
|
|
"@tanstack/react-start-client": "^1.121.3",
|
|
"@tanstack/react-start-server": "^1.121.3",
|
|
"@tanstack/start-client-core": "^1.121.3",
|
|
"@tanstack/start-plugin-core": "^1.121.3",
|
|
"@tanstack/start-server-core": "^1.121.3",
|
|
"nitro": "^3.0.0",
|
|
"react": "19.2.1",
|
|
"react-dom": "19.2.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/qrcode": "^1.5.5",
|
|
"@types/node": "^22.13.0",
|
|
"autoprefixer": "^10.4.20",
|
|
"postcss": "^8.4.47",
|
|
"tailwindcss": "^3.4.14",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"@types/react": "19.2.1",
|
|
"@types/react-dom": "19.2.1",
|
|
"@vitejs/plugin-react": "^5.0.0",
|
|
"typescript": "5.9.3",
|
|
"vite": "^7.0.0",
|
|
"vite-tsconfig-paths": "^4.3.2"
|
|
},
|
|
"packageManager": "pnpm@11.5.0"
|
|
}
|