feat: reskin admin pages to zine design system
Migrate the entire admin section from the dark guild-* Tailwind theme to the zine design system (dashed borders, CSS custom properties, Brygada 1918 + Commit Mono, cream/dark mode palette). - Replace admin top-nav layout with sidebar matching default layout - Reskin dashboard, members, events, series management pages - Reskin events/create and series/create form pages - Add dev-only test login endpoint (GET /api/dev/test-login) - Redirect duplicate admin/dashboard.vue to /admin - Update CLAUDE.md design system docs
This commit is contained in:
parent
f16f9ada64
commit
fcd6f4cdf4
23 changed files with 3845 additions and 3827 deletions
|
|
@ -56,7 +56,7 @@ export default defineEventHandler(async (event) => {
|
|||
.replace(/\n/g, '<br>')
|
||||
.replace(/\{loginLink\}/g, loginButton)
|
||||
|
||||
const { error: sendError } = await resend.emails.send({
|
||||
const { error: emailError } = await resend.emails.send({
|
||||
from: 'Ghost Guild <welcome@babyghosts.org>',
|
||||
to: [member.email],
|
||||
subject: 'You\'re invited to Ghost Guild',
|
||||
|
|
@ -64,8 +64,8 @@ export default defineEventHandler(async (event) => {
|
|||
html: emailHtml
|
||||
})
|
||||
|
||||
if (sendError) {
|
||||
results.push({ memberId: member._id, email: member.email, success: false, error: sendError.message })
|
||||
if (emailError) {
|
||||
results.push({ memberId: member._id, email: member.email, success: false, error: emailError.message })
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
|
|||
42
server/api/dev/test-login.get.js
Normal file
42
server/api/dev/test-login.get.js
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import jwt from 'jsonwebtoken'
|
||||
import Member from '../../models/member.js'
|
||||
import { connectDB } from '../../utils/mongoose.js'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
// Only allow in development
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
throw createError({ statusCode: 404, statusMessage: 'Not found' })
|
||||
}
|
||||
|
||||
await connectDB()
|
||||
|
||||
// Find or create a test admin user
|
||||
let member = await Member.findOne({ email: 'test-admin@ghostguild.dev' })
|
||||
|
||||
if (!member) {
|
||||
member = await Member.create({
|
||||
email: 'test-admin@ghostguild.dev',
|
||||
name: 'Test Admin',
|
||||
circle: 'founder',
|
||||
contributionTier: '0',
|
||||
role: 'admin',
|
||||
status: 'active',
|
||||
})
|
||||
}
|
||||
|
||||
const config = useRuntimeConfig(event)
|
||||
const token = jwt.sign(
|
||||
{ memberId: member._id, email: member.email },
|
||||
config.jwtSecret,
|
||||
{ expiresIn: '7d' }
|
||||
)
|
||||
|
||||
setCookie(event, 'auth-token', token, {
|
||||
httpOnly: true,
|
||||
secure: false,
|
||||
sameSite: 'lax',
|
||||
maxAge: 60 * 60 * 24 * 7,
|
||||
})
|
||||
|
||||
await sendRedirect(event, '/admin', 302)
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue