Skip to content

Commit 9f4447d

Browse files
hubyrodclaude
andcommitted
Rename /config page to /slashwork for clarity
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 6242d15 commit 9f4447d

3 files changed

Lines changed: 70 additions & 70 deletions

File tree

app/components/nav-menu.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ export default function NavMenu() {
2929

3030
<nav className={`nav-drawer${open ? " nav-drawer--open" : ""}`}>
3131
<div className="nav-links">
32-
<Link href="/config" className="nav-link" onClick={() => setOpen(false)}>
32+
<Link href="/slashwork" className="nav-link" onClick={() => setOpen(false)}>
3333
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
3434
<path d="M6.5 1.5h3l.5 2.1 1.8.7 1.9-1.1 2.1 2.1-1.1 1.9.7 1.8 2.1.5v3l-2.1.5-.7 1.8 1.1 1.9-2.1 2.1-1.9-1.1-1.8.7-.5 2.1h-3l-.5-2.1-1.8-.7-1.9 1.1-2.1-2.1 1.1-1.9-.7-1.8L.5 9.5v-3l2.1-.5.7-1.8-1.1-1.9 2.1-2.1 1.9 1.1 1.8-.7z" />
3535
<circle cx="8" cy="8" r="2.5" />
3636
</svg>
37-
Config
37+
Slashwork
3838
</Link>
3939
<Link href="/scout" className="nav-link" onClick={() => setOpen(false)}>
4040
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { getAuthTokens, getGroups, getRoutes, getCalendarUsers } from "@/src/db";
2-
import "./config.css";
2+
import "./slashwork.css";
33

44
export const dynamic = "force-dynamic";
55

6-
export default async function ConfigPage() {
6+
export default async function SlashworkPage() {
77
const [authTokens, groups, routes, calendarUsers] = await Promise.all([
88
getAuthTokens(),
99
getGroups(),
@@ -12,23 +12,23 @@ export default async function ConfigPage() {
1212
]);
1313

1414
return (
15-
<div className="cfg-page">
16-
<main className="cfg-container">
17-
<div className="cfg-header">
18-
<h1 className="cfg-title">
19-
<span>skiphooks</span> / config
15+
<div className="sw-page">
16+
<main className="sw-container">
17+
<div className="sw-header">
18+
<h1 className="sw-title">
19+
<span>skiphooks</span> / slashwork
2020
</h1>
21-
<span className="cfg-subtitle">database state</span>
21+
<span className="sw-subtitle">database state</span>
2222
</div>
2323

24-
<div className="cfg-grid">
24+
<div className="sw-grid">
2525
{/* Auth Tokens */}
26-
<div className="cfg-section">
27-
<div className="cfg-section-header">
28-
<h2 className="cfg-section-title">Auth Tokens</h2>
29-
<span className="cfg-count">{authTokens.length}</span>
26+
<div className="sw-section">
27+
<div className="sw-section-header">
28+
<h2 className="sw-section-title">Auth Tokens</h2>
29+
<span className="sw-count">{authTokens.length}</span>
3030
</div>
31-
<table className="cfg-table">
31+
<table className="sw-table">
3232
<thead>
3333
<tr>
3434
<th>Name</th>
@@ -38,15 +38,15 @@ export default async function ConfigPage() {
3838
<tbody>
3939
{authTokens.length === 0 ? (
4040
<tr>
41-
<td colSpan={2} className="cfg-empty">
41+
<td colSpan={2} className="sw-empty">
4242
No auth tokens configured
4343
</td>
4444
</tr>
4545
) : (
4646
authTokens.map((t) => (
4747
<tr key={t.name}>
4848
<td>{t.name}</td>
49-
<td className="cfg-token">{t.tokenPreview}</td>
49+
<td className="sw-token">{t.tokenPreview}</td>
5050
</tr>
5151
))
5252
)}
@@ -55,12 +55,12 @@ export default async function ConfigPage() {
5555
</div>
5656

5757
{/* Groups */}
58-
<div className="cfg-section">
59-
<div className="cfg-section-header">
60-
<h2 className="cfg-section-title">Groups</h2>
61-
<span className="cfg-count">{groups.length}</span>
58+
<div className="sw-section">
59+
<div className="sw-section-header">
60+
<h2 className="sw-section-title">Groups</h2>
61+
<span className="sw-count">{groups.length}</span>
6262
</div>
63-
<table className="cfg-table">
63+
<table className="sw-table">
6464
<thead>
6565
<tr>
6666
<th>Name</th>
@@ -71,15 +71,15 @@ export default async function ConfigPage() {
7171
<tbody>
7272
{groups.length === 0 ? (
7373
<tr>
74-
<td colSpan={3} className="cfg-empty">
74+
<td colSpan={3} className="sw-empty">
7575
No groups configured
7676
</td>
7777
</tr>
7878
) : (
7979
groups.map((g) => (
8080
<tr key={g.name}>
8181
<td>{g.name}</td>
82-
<td className="cfg-mono">{g.slashworkId}</td>
82+
<td className="sw-mono">{g.slashworkId}</td>
8383
<td>{g.authToken}</td>
8484
</tr>
8585
))
@@ -89,12 +89,12 @@ export default async function ConfigPage() {
8989
</div>
9090

9191
{/* Routes */}
92-
<div className="cfg-section cfg-section--wide">
93-
<div className="cfg-section-header">
94-
<h2 className="cfg-section-title">Routes</h2>
95-
<span className="cfg-count">{routes.length}</span>
92+
<div className="sw-section sw-section--wide">
93+
<div className="sw-section-header">
94+
<h2 className="sw-section-title">Routes</h2>
95+
<span className="sw-count">{routes.length}</span>
9696
</div>
97-
<table className="cfg-table">
97+
<table className="sw-table">
9898
<thead>
9999
<tr>
100100
<th>Endpoint</th>
@@ -106,29 +106,29 @@ export default async function ConfigPage() {
106106
<tbody>
107107
{routes.length === 0 ? (
108108
<tr>
109-
<td colSpan={4} className="cfg-empty">
109+
<td colSpan={4} className="sw-empty">
110110
No routes configured
111111
</td>
112112
</tr>
113113
) : (
114114
routes.map((r) => (
115115
<tr key={r.name}>
116-
<td className="cfg-path">/github/{r.name}</td>
116+
<td className="sw-path">/github/{r.name}</td>
117117
<td>
118118
{r.groupName ? (
119-
<span className="cfg-badge cfg-badge--group">
119+
<span className="sw-badge sw-badge--group">
120120
group
121121
</span>
122122
) : (
123-
<span className="cfg-badge cfg-badge--stream">
123+
<span className="sw-badge sw-badge--stream">
124124
stream
125125
</span>
126126
)}
127127
</td>
128-
<td className="cfg-mono">{r.groupName ?? r.streamId}</td>
128+
<td className="sw-mono">{r.groupName ?? r.streamId}</td>
129129
<td>
130130
{r.groupName ? (
131-
<span className="cfg-muted">via group</span>
131+
<span className="sw-muted">via group</span>
132132
) : (
133133
r.authToken
134134
)}
@@ -142,12 +142,12 @@ export default async function ConfigPage() {
142142

143143
{/* Calendar Users */}
144144
{calendarUsers.length > 0 && (
145-
<div className="cfg-section cfg-section--wide">
146-
<div className="cfg-section-header">
147-
<h2 className="cfg-section-title">Calendar Users</h2>
148-
<span className="cfg-count">{calendarUsers.length}</span>
145+
<div className="sw-section sw-section--wide">
146+
<div className="sw-section-header">
147+
<h2 className="sw-section-title">Calendar Users</h2>
148+
<span className="sw-count">{calendarUsers.length}</span>
149149
</div>
150-
<table className="cfg-table">
150+
<table className="sw-table">
151151
<thead>
152152
<tr>
153153
<th>Name</th>
@@ -159,8 +159,8 @@ export default async function ConfigPage() {
159159
{calendarUsers.map((u) => (
160160
<tr key={u.name}>
161161
<td>{u.name}</td>
162-
<td className="cfg-mono">{u.calendarId}</td>
163-
<td className="cfg-mono">{u.targetId}</td>
162+
<td className="sw-mono">{u.calendarId}</td>
163+
<td className="sw-mono">{u.targetId}</td>
164164
</tr>
165165
))}
166166
</tbody>
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
.cfg-page {
1+
.sw-page {
22
background: var(--cfg-bg);
33
min-height: 100vh;
44
color: var(--cfg-text);
55
font-family: var(--cfg-sans);
66
-webkit-font-smoothing: antialiased;
77
}
88

9-
.cfg-container {
9+
.sw-container {
1010
max-width: 72rem;
1111
margin: 0 auto;
1212
padding: 2rem 1.5rem 4rem;
1313
}
1414

15-
.cfg-header {
15+
.sw-header {
1616
display: flex;
1717
align-items: baseline;
1818
gap: 0.75rem;
@@ -21,57 +21,57 @@
2121
border-bottom: 1px solid var(--cfg-border);
2222
}
2323

24-
.cfg-title {
24+
.sw-title {
2525
font-family: var(--cfg-mono);
2626
font-size: 0.8125rem;
2727
font-weight: 500;
2828
color: var(--cfg-text);
2929
letter-spacing: 0.04em;
3030
}
3131

32-
.cfg-title span {
32+
.sw-title span {
3333
color: var(--cfg-text-dim);
3434
}
3535

36-
.cfg-subtitle {
36+
.sw-subtitle {
3737
font-size: 0.75rem;
3838
color: var(--cfg-text-dim);
3939
font-family: var(--cfg-mono);
4040
}
4141

4242
/* Grid layout for sections */
43-
.cfg-grid {
43+
.sw-grid {
4444
display: grid;
4545
grid-template-columns: 1fr 1fr;
4646
gap: 1.25rem;
4747
}
4848

4949
@media (max-width: 768px) {
50-
.cfg-grid {
50+
.sw-grid {
5151
grid-template-columns: 1fr;
5252
}
5353
}
5454

55-
.cfg-section {
55+
.sw-section {
5656
background: var(--cfg-surface);
5757
border: 1px solid var(--cfg-border);
5858
border-radius: 6px;
5959
overflow: hidden;
6060
}
6161

62-
.cfg-section--wide {
62+
.sw-section--wide {
6363
grid-column: 1 / -1;
6464
}
6565

66-
.cfg-section-header {
66+
.sw-section-header {
6767
display: flex;
6868
align-items: center;
6969
justify-content: space-between;
7070
padding: 0.625rem 0.875rem;
7171
border-bottom: 1px solid var(--cfg-border);
7272
}
7373

74-
.cfg-section-title {
74+
.sw-section-title {
7575
font-family: var(--cfg-mono);
7676
font-size: 0.6875rem;
7777
font-weight: 500;
@@ -80,7 +80,7 @@
8080
color: var(--cfg-text-muted);
8181
}
8282

83-
.cfg-count {
83+
.sw-count {
8484
font-family: var(--cfg-mono);
8585
font-size: 0.625rem;
8686
color: var(--cfg-text-dim);
@@ -90,13 +90,13 @@
9090
}
9191

9292
/* Table styles */
93-
.cfg-table {
93+
.sw-table {
9494
width: 100%;
9595
border-collapse: collapse;
9696
font-size: 0.8125rem;
9797
}
9898

99-
.cfg-table thead th {
99+
.sw-table thead th {
100100
text-align: left;
101101
padding: 0.4375rem 0.875rem;
102102
font-family: var(--cfg-mono);
@@ -109,51 +109,51 @@
109109
border-bottom: 1px solid var(--cfg-border-subtle);
110110
}
111111

112-
.cfg-table tbody tr {
112+
.sw-table tbody tr {
113113
transition: background 0.1s ease;
114114
}
115115

116-
.cfg-table tbody tr:hover {
116+
.sw-table tbody tr:hover {
117117
background: var(--cfg-surface-hover);
118118
}
119119

120-
.cfg-table tbody td {
120+
.sw-table tbody td {
121121
padding: 0.5rem 0.875rem;
122122
border-bottom: 1px solid var(--cfg-border-subtle);
123123
color: var(--cfg-text);
124124
white-space: nowrap;
125125
}
126126

127-
.cfg-table tbody tr:last-child td {
127+
.sw-table tbody tr:last-child td {
128128
border-bottom: none;
129129
}
130130

131131
/* Mono text for IDs, tokens, paths */
132-
.cfg-mono {
132+
.sw-mono {
133133
font-family: var(--cfg-mono);
134134
font-size: 0.75rem;
135135
}
136136

137-
.cfg-token {
137+
.sw-token {
138138
font-family: var(--cfg-mono);
139139
font-size: 0.75rem;
140140
color: var(--cfg-text-muted);
141141
}
142142

143-
.cfg-path {
143+
.sw-path {
144144
font-family: var(--cfg-mono);
145145
font-size: 0.75rem;
146146
color: var(--cfg-accent);
147147
}
148148

149-
.cfg-muted {
149+
.sw-muted {
150150
color: var(--cfg-text-dim);
151151
font-style: italic;
152152
font-size: 0.75rem;
153153
}
154154

155155
/* Badges */
156-
.cfg-badge {
156+
.sw-badge {
157157
display: inline-block;
158158
font-family: var(--cfg-mono);
159159
font-size: 0.625rem;
@@ -164,18 +164,18 @@
164164
border-radius: 3px;
165165
}
166166

167-
.cfg-badge--group {
167+
.sw-badge--group {
168168
background: var(--cfg-accent-dim);
169169
color: var(--cfg-accent);
170170
}
171171

172-
.cfg-badge--stream {
172+
.sw-badge--stream {
173173
background: var(--cfg-amber-dim);
174174
color: var(--cfg-amber);
175175
}
176176

177177
/* Empty state */
178-
.cfg-empty {
178+
.sw-empty {
179179
padding: 1.5rem 0.875rem;
180180
text-align: center;
181181
color: var(--cfg-text-dim);

0 commit comments

Comments
 (0)