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