Skip to content

Commit 2d39324

Browse files
Kyle McLarenclaude
andcommitted
Style sidebar method badges: icon-only, auto-expand, unbold labels
- Change sidebar badges to use icon characters (↙, β†—, βœ•, ⚑) matching MethodHeader - Auto-expand nested groups (collapsed: false) - Unbold sidebar group labels - Add CSS for method badge colors matching main content πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 6bc1580 commit 2d39324

File tree

3 files changed

+183
-39
lines changed

3 files changed

+183
-39
lines changed

β€Žscripts/generate-api-docs.tsβ€Ž

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,17 +1197,18 @@ interface SidebarGroup {
11971197
type SidebarItem = SidebarLink | SidebarGroup;
11981198

11991199
function getMethodBadge(method: string): SidebarBadge {
1200-
const variants: Record<string, SidebarBadge['variant']> = {
1201-
GET: 'note',
1202-
POST: 'success',
1203-
PUT: 'caution',
1204-
PATCH: 'caution',
1205-
DELETE: 'danger',
1206-
WSS: 'tip',
1200+
// Icon characters matching MethodHeader component
1201+
const icons: Record<string, string> = {
1202+
GET: '↙',
1203+
POST: 'β†—',
1204+
PUT: 'β†—',
1205+
PATCH: 'β†—',
1206+
DELETE: 'βœ•',
1207+
WSS: '⚑',
12071208
};
12081209
return {
1209-
text: method,
1210-
variant: variants[method.toUpperCase()] || 'default',
1210+
text: icons[method.toUpperCase()] || method,
1211+
variant: 'default',
12111212
class: `sidebar-method-${method.toLowerCase()}`,
12121213
};
12131214
}
@@ -1239,7 +1240,7 @@ function generateSidebarItems(
12391240
}));
12401241
items.push({
12411242
label: page.title,
1242-
collapsed: true,
1243+
collapsed: false,
12431244
items: endpointItems,
12441245
});
12451246
} else {
@@ -1261,7 +1262,7 @@ function generateSidebarItems(
12611262
}));
12621263
items.push({
12631264
label: getCategoryTitle(category),
1264-
collapsed: true,
1265+
collapsed: false,
12651266
items: endpointItems,
12661267
});
12671268
} else {

β€Žsrc/lib/sidebar.tsβ€Ž

Lines changed: 116 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -118,147 +118,235 @@ export const sidebarConfig: SidebarGroup[] = [
118118
{ label: 'Overview', slug: `api/${apiVersion}` },
119119
{
120120
label: 'Sprites',
121-
collapsed: true,
121+
collapsed: false,
122122
items: [
123123
{
124124
label: 'Create Sprite',
125125
link: `/api/${apiVersion}/sprites#create-sprite`,
126-
badge: { text: 'POST', variant: 'success' as const },
126+
badge: {
127+
text: 'β†—',
128+
variant: 'default' as const,
129+
class: 'sidebar-method-post',
130+
},
127131
},
128132
{
129133
label: 'List Sprites',
130134
link: `/api/${apiVersion}/sprites#list-sprites`,
131-
badge: { text: 'GET', variant: 'note' as const },
135+
badge: {
136+
text: '↙',
137+
variant: 'default' as const,
138+
class: 'sidebar-method-get',
139+
},
132140
},
133141
{
134142
label: 'Get Sprite',
135143
link: `/api/${apiVersion}/sprites#get-sprite`,
136-
badge: { text: 'GET', variant: 'note' as const },
144+
badge: {
145+
text: '↙',
146+
variant: 'default' as const,
147+
class: 'sidebar-method-get',
148+
},
137149
},
138150
{
139151
label: 'Update Sprite',
140152
link: `/api/${apiVersion}/sprites#update-sprite`,
141-
badge: { text: 'PUT', variant: 'caution' as const },
153+
badge: {
154+
text: 'β†—',
155+
variant: 'default' as const,
156+
class: 'sidebar-method-put',
157+
},
142158
},
143159
{
144160
label: 'Delete Sprite',
145161
link: `/api/${apiVersion}/sprites#delete-sprite`,
146-
badge: { text: 'DELETE', variant: 'danger' as const },
162+
badge: {
163+
text: 'βœ•',
164+
variant: 'default' as const,
165+
class: 'sidebar-method-delete',
166+
},
147167
},
148168
],
149169
},
150170
{
151171
label: 'Checkpoints',
152-
collapsed: true,
172+
collapsed: false,
153173
items: [
154174
{
155175
label: 'Create Checkpoint',
156176
link: `/api/${apiVersion}/checkpoints#create-checkpoint`,
157-
badge: { text: 'POST', variant: 'success' as const },
177+
badge: {
178+
text: 'β†—',
179+
variant: 'default' as const,
180+
class: 'sidebar-method-post',
181+
},
158182
},
159183
{
160184
label: 'List Checkpoints',
161185
link: `/api/${apiVersion}/checkpoints#list-checkpoints`,
162-
badge: { text: 'GET', variant: 'note' as const },
186+
badge: {
187+
text: '↙',
188+
variant: 'default' as const,
189+
class: 'sidebar-method-get',
190+
},
163191
},
164192
{
165193
label: 'Get Checkpoint',
166194
link: `/api/${apiVersion}/checkpoints#get-checkpoint`,
167-
badge: { text: 'GET', variant: 'note' as const },
195+
badge: {
196+
text: '↙',
197+
variant: 'default' as const,
198+
class: 'sidebar-method-get',
199+
},
168200
},
169201
{
170202
label: 'Restore Checkpoint',
171203
link: `/api/${apiVersion}/checkpoints#restore-checkpoint`,
172-
badge: { text: 'POST', variant: 'success' as const },
204+
badge: {
205+
text: 'β†—',
206+
variant: 'default' as const,
207+
class: 'sidebar-method-post',
208+
},
173209
},
174210
],
175211
},
176212
{
177213
label: 'Exec',
178-
collapsed: true,
214+
collapsed: false,
179215
items: [
180216
{
181217
label: 'Execute Command',
182218
link: `/api/${apiVersion}/exec#execute-command`,
183-
badge: { text: 'WSS', variant: 'tip' as const },
219+
badge: {
220+
text: '⚑',
221+
variant: 'default' as const,
222+
class: 'sidebar-method-wss',
223+
},
184224
},
185225
{
186226
label: 'List Exec Sessions',
187227
link: `/api/${apiVersion}/exec#list-exec-sessions`,
188-
badge: { text: 'GET', variant: 'note' as const },
228+
badge: {
229+
text: '↙',
230+
variant: 'default' as const,
231+
class: 'sidebar-method-get',
232+
},
189233
},
190234
{
191235
label: 'Attach to Exec Session',
192236
link: `/api/${apiVersion}/exec#attach-to-exec-session`,
193-
badge: { text: 'WSS', variant: 'tip' as const },
237+
badge: {
238+
text: '⚑',
239+
variant: 'default' as const,
240+
class: 'sidebar-method-wss',
241+
},
194242
},
195243
{
196244
label: 'Kill Exec Session',
197245
link: `/api/${apiVersion}/exec#kill-exec-session`,
198-
badge: { text: 'POST', variant: 'success' as const },
246+
badge: {
247+
text: 'β†—',
248+
variant: 'default' as const,
249+
class: 'sidebar-method-post',
250+
},
199251
},
200252
],
201253
},
202254
{
203255
label: 'Policy',
204-
collapsed: true,
256+
collapsed: false,
205257
items: [
206258
{
207259
label: 'Get Network Policy',
208260
link: `/api/${apiVersion}/policy#get-network-policy`,
209-
badge: { text: 'GET', variant: 'note' as const },
261+
badge: {
262+
text: '↙',
263+
variant: 'default' as const,
264+
class: 'sidebar-method-get',
265+
},
210266
},
211267
{
212268
label: 'Set Network Policy',
213269
link: `/api/${apiVersion}/policy#set-network-policy`,
214-
badge: { text: 'POST', variant: 'success' as const },
270+
badge: {
271+
text: 'β†—',
272+
variant: 'default' as const,
273+
class: 'sidebar-method-post',
274+
},
215275
},
216276
],
217277
},
218278
{
219279
label: 'HTTP Proxy',
220-
collapsed: true,
280+
collapsed: false,
221281
items: [
222282
{
223283
label: 'TCP Proxy',
224284
link: `/api/${apiVersion}/proxy#tcp-proxy`,
225-
badge: { text: 'WSS', variant: 'tip' as const },
285+
badge: {
286+
text: '⚑',
287+
variant: 'default' as const,
288+
class: 'sidebar-method-wss',
289+
},
226290
},
227291
],
228292
},
229293
{
230294
label: 'Services',
231-
collapsed: true,
295+
collapsed: false,
232296
items: [
233297
{
234298
label: 'List Services',
235299
link: `/api/${apiVersion}/services#list-services`,
236-
badge: { text: 'GET', variant: 'note' as const },
300+
badge: {
301+
text: '↙',
302+
variant: 'default' as const,
303+
class: 'sidebar-method-get',
304+
},
237305
},
238306
{
239307
label: 'Get Service',
240308
link: `/api/${apiVersion}/services#get-service`,
241-
badge: { text: 'GET', variant: 'note' as const },
309+
badge: {
310+
text: '↙',
311+
variant: 'default' as const,
312+
class: 'sidebar-method-get',
313+
},
242314
},
243315
{
244316
label: 'Create Service',
245317
link: `/api/${apiVersion}/services#create-service`,
246-
badge: { text: 'PUT', variant: 'caution' as const },
318+
badge: {
319+
text: 'β†—',
320+
variant: 'default' as const,
321+
class: 'sidebar-method-put',
322+
},
247323
},
248324
{
249325
label: 'Start Service',
250326
link: `/api/${apiVersion}/services#start-service`,
251-
badge: { text: 'POST', variant: 'success' as const },
327+
badge: {
328+
text: 'β†—',
329+
variant: 'default' as const,
330+
class: 'sidebar-method-post',
331+
},
252332
},
253333
{
254334
label: 'Stop Service',
255335
link: `/api/${apiVersion}/services#stop-service`,
256-
badge: { text: 'POST', variant: 'success' as const },
336+
badge: {
337+
text: 'β†—',
338+
variant: 'default' as const,
339+
class: 'sidebar-method-post',
340+
},
257341
},
258342
{
259343
label: 'Get Service Logs',
260344
link: `/api/${apiVersion}/services#get-service-logs`,
261-
badge: { text: 'GET', variant: 'note' as const },
345+
badge: {
346+
text: '↙',
347+
variant: 'default' as const,
348+
class: 'sidebar-method-get',
349+
},
262350
},
263351
],
264352
},

β€Žsrc/styles/custom.cssβ€Ž

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,3 +1689,58 @@ h2.method-title {
16891689
width: 32px;
16901690
height: 16px;
16911691
}
1692+
1693+
/* ============================================================================
1694+
Sidebar Method Badges - Icon-only badges matching main content
1695+
============================================================================ */
1696+
1697+
/* Unbold sidebar group labels (nested groups like Sprites, Checkpoints, etc.) */
1698+
.sidebar-content details > summary > div > span {
1699+
font-weight: 400 !important;
1700+
}
1701+
1702+
/* Base badge styling for sidebar method icons */
1703+
.sidebar-content .sl-badge.default {
1704+
font-family: var(--sl-font-system-mono);
1705+
font-size: 0.75rem;
1706+
font-weight: 500;
1707+
padding: 0.125rem 0.25rem;
1708+
margin-left: 0.375rem;
1709+
border-radius: 0.25rem;
1710+
line-height: 1;
1711+
}
1712+
1713+
/* GET - Green (↙ arrow down-left) */
1714+
.sidebar-content .sl-badge.sidebar-method-get {
1715+
color: var(--http-get);
1716+
background: var(--http-get-faint);
1717+
border: 1px solid oklch(0.723 0.219 142.7 / 0.3);
1718+
}
1719+
1720+
/* POST - Blue (β†— arrow up-right) */
1721+
.sidebar-content .sl-badge.sidebar-method-post {
1722+
color: var(--http-post);
1723+
background: var(--http-post-faint);
1724+
border: 1px solid oklch(0.623 0.214 259 / 0.3);
1725+
}
1726+
1727+
/* PUT - Orange (β†— arrow up-right, same as POST) */
1728+
.sidebar-content .sl-badge.sidebar-method-put {
1729+
color: var(--http-put);
1730+
background: var(--http-put-faint);
1731+
border: 1px solid oklch(0.705 0.213 47.6 / 0.3);
1732+
}
1733+
1734+
/* DELETE - Red (βœ•) */
1735+
.sidebar-content .sl-badge.sidebar-method-delete {
1736+
color: var(--http-delete);
1737+
background: var(--http-delete-faint);
1738+
border: 1px solid oklch(0.577 0.245 27.3 / 0.3);
1739+
}
1740+
1741+
/* WSS - Purple (⚑) */
1742+
.sidebar-content .sl-badge.sidebar-method-wss {
1743+
color: var(--http-ws);
1744+
background: var(--http-ws-faint);
1745+
border: 1px solid oklch(0.558 0.288 302.3 / 0.3);
1746+
}

0 commit comments

Comments
Β (0)