Styles Update
This commit is contained in:
parent
acba5c819b
commit
5e27849fa3
|
|
@ -1,3 +1,5 @@
|
|||
@import url('https://styles.rokojori.com/get-font?family=barlow&weights=100,400,700,900');
|
||||
|
||||
project-list-default {
|
||||
display: block;
|
||||
min-height: 100vh;
|
||||
|
|
@ -186,6 +188,7 @@ project-list-default {
|
|||
.pld-cp-input {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
font-family: Barlow;
|
||||
}
|
||||
|
||||
.pld-cp-actions {
|
||||
|
|
@ -193,6 +196,7 @@ project-list-default {
|
|||
gap: 0.5rem;
|
||||
justify-content: flex-end;
|
||||
margin-top: 1rem;
|
||||
font-family: Barlow;
|
||||
}
|
||||
|
||||
/* ── Overlay buttons on badge ────────────── */
|
||||
|
|
@ -401,7 +405,7 @@ project-list-default {
|
|||
border-radius: 5px;
|
||||
color: #fff;
|
||||
font-size: 0.85rem;
|
||||
font-family: inherit;
|
||||
font-family: Barlow;
|
||||
}
|
||||
|
||||
.pld-mp-select {
|
||||
|
|
@ -422,6 +426,8 @@ project-list-default {
|
|||
cursor: pointer;
|
||||
font-size: 0.85rem;
|
||||
transition: background 0.14s, color 0.14s;
|
||||
font-family: Barlow;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.pld-mp-btn:hover {
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Dashboard — Roject</title>
|
||||
<link rel="stylesheet" href="/components/app-nav/app-nav.css">
|
||||
</head>
|
||||
<body>
|
||||
<app-nav></app-nav>
|
||||
<main>
|
||||
<h1>Dashboard</h1>
|
||||
<nav class="dashboard-links">
|
||||
<a href="/groups.html">Manage Groups</a>
|
||||
<a href="/projects.html">Manage Projects</a>
|
||||
</nav>
|
||||
</main>
|
||||
<script type="module" src="/components/app-nav/app-nav.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Groups — Roject</title>
|
||||
<link rel="stylesheet" href="/components/app-nav/app-nav.css">
|
||||
<link rel="stylesheet" href="/components/group-editor/group-editor.css">
|
||||
</head>
|
||||
<body>
|
||||
<app-nav></app-nav>
|
||||
<group-editor></group-editor>
|
||||
<script type="module" src="/components/app-nav/app-nav.js"></script>
|
||||
<script type="module" src="/components/group-editor/group-editor.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -4,9 +4,6 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Roject</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Barlow:ital,wght@1,900;1,700&display=swap">
|
||||
<link rel="stylesheet" href="/components/confirm-dialog/confirm-dialog.css">
|
||||
<link rel="stylesheet" href="/components/project-home/project-home.css">
|
||||
<link rel="stylesheet" href="/components/project-list-default/project-list-default.css">
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Projects — Roject</title>
|
||||
<link rel="stylesheet" href="/components/app-nav/app-nav.css">
|
||||
<link rel="stylesheet" href="/components/project-editor/project-editor.css">
|
||||
<link rel="stylesheet" href="/components/confirm-dialog/confirm-dialog.css">
|
||||
</head>
|
||||
<body>
|
||||
<app-nav></app-nav>
|
||||
<project-editor></project-editor>
|
||||
<script type="module" src="/components/app-nav/app-nav.js"></script>
|
||||
<script type="module" src="/components/project-editor/project-editor.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -23,28 +23,27 @@
|
|||
<div class="lane-header">MVP</div>
|
||||
|
||||
<task-item class="blue hide-content">
|
||||
<task-title>Add rokojori-auth lookup-email endpoint</task-title>
|
||||
<task-title>styles.rokojori.com</task-title>
|
||||
<task-content>
|
||||
Project members are currently stored by email (Option B interim). To migrate to
|
||||
user-ID-based membership the two services need a server-to-server lookup call.
|
||||
New asset and font hosting service at styles.rokojori.com. Hosts Google Fonts
|
||||
(downloaded and self-served), CSS presets, components, and images for use
|
||||
across all rokojori websites.
|
||||
|
||||
In rokojori-auth:
|
||||
— Add POST /api/auth/lookup-email route
|
||||
— Body: { email: string }
|
||||
— Auth: Authorization: Bearer <SERVICE_SECRET> header (shared env var, not a user JWT)
|
||||
— Returns { id, email } on success, 404 if no account exists for that email
|
||||
— Add SERVICE_SECRET to rokojori-auth .env and its deployment config
|
||||
Auth via shared JWT cookie from rokojori-auth. Access gated by requireAccess
|
||||
middleware (already designed and documented in rokojori-auth workspace).
|
||||
PATCH /api/admin/users/:id/products is live in rokojori-auth — assign the
|
||||
"styles" product to grant access.
|
||||
|
||||
In Roject:
|
||||
— Add ROJECT_SERVICE_SECRET to .env (must match rokojori-auth)
|
||||
— In POST /api/projects/:id/members: call account.rokojori.com/api/auth/lookup-email,
|
||||
receive the user ID, store member_id as the user ID instead of the email
|
||||
— In source/server/projectAccess.ts change the one line in memberMatchesUser()
|
||||
from member.member_id === user.email
|
||||
to member.member_id === user.userId
|
||||
— Write a one-off migration script to rewrite existing project_members records:
|
||||
for each member row, call lookup-email with the stored email, replace member_id
|
||||
with the returned user ID
|
||||
Pages:
|
||||
— / — logged-out or no-permission users see "STYLES" + login button linking
|
||||
to account.rokojori.com/login?redirect=https://styles.rokojori.com;
|
||||
logged-in users with access see list of available sections
|
||||
— /list-fonts — preview-sentence input at top, then all font families rendered
|
||||
with that sentence
|
||||
— /add-fonts — preview-sentence input + font-family name input; downloads from
|
||||
Google Fonts and generates a stylesheet
|
||||
|
||||
Access rules: role:admin, role:user + product:styles, role:user + product:premium
|
||||
</task-content>
|
||||
</task-item>
|
||||
|
||||
|
|
|
|||
|
|
@ -66,6 +66,23 @@
|
|||
</task-content>
|
||||
</task-item>
|
||||
|
||||
<task-item class="blue hide-content">
|
||||
<task-title>Roject: wire lookup-email for member storage migration</task-title>
|
||||
<task-content>
|
||||
The rokojori-auth side (POST /api/auth/lookup-email) is live.
|
||||
Remaining Roject-side work:
|
||||
|
||||
— Add SERVICE_SECRET to Roject .env (must match rokojori-auth SERVICE_SECRET)
|
||||
— In POST /api/projects/:id/members: call account.rokojori.com/api/auth/lookup-email,
|
||||
receive the user ID, store member_id as the user ID instead of the email
|
||||
— In source/server/projectAccess.ts change memberMatchesUser()
|
||||
from member.member_id === user.email
|
||||
to member.member_id === user.userId
|
||||
— Write a one-off migration script: for each member row, call lookup-email
|
||||
with the stored email and replace member_id with the returned user ID
|
||||
</task-content>
|
||||
</task-item>
|
||||
|
||||
<task-item class="blue hide-content">
|
||||
<task-title>Switch Gitea webhook to dev branch</task-title>
|
||||
<task-content>
|
||||
|
|
|
|||
Loading…
Reference in New Issue