@veluai/velu 0.2.13 → 0.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -80
- package/dist/cli.js +37 -37
- package/package.json +64 -64
- package/runtime/velu-ui/base.css +320 -320
- package/runtime/velu-ui/components/Accordion.jsx +64 -64
- package/runtime/velu-ui/components/ApiClient.jsx +207 -207
- package/runtime/velu-ui/components/ApiField.jsx +87 -87
- package/runtime/velu-ui/components/ApiPath.jsx +63 -63
- package/runtime/velu-ui/components/ApiReferencePage.jsx +384 -384
- package/runtime/velu-ui/components/ApiSamples.jsx +36 -36
- package/runtime/velu-ui/components/ApiSidebar.jsx +122 -122
- package/runtime/velu-ui/components/AskBar.jsx +71 -71
- package/runtime/velu-ui/components/Callout.jsx +114 -114
- package/runtime/velu-ui/components/Card.jsx +131 -131
- package/runtime/velu-ui/components/Chatbot.jsx +885 -885
- package/runtime/velu-ui/components/CodeBlock.jsx +375 -375
- package/runtime/velu-ui/components/Columns.jsx +56 -56
- package/runtime/velu-ui/components/ContextMenu.jsx +298 -273
- package/runtime/velu-ui/components/ErrorCard.jsx +138 -138
- package/runtime/velu-ui/components/Field.jsx +81 -81
- package/runtime/velu-ui/components/Image.jsx +163 -163
- package/runtime/velu-ui/components/Logo.jsx +31 -31
- package/runtime/velu-ui/components/MethodBadge.jsx +31 -31
- package/runtime/velu-ui/components/NavSelect.jsx +108 -108
- package/runtime/velu-ui/components/NotFound.jsx +63 -63
- package/runtime/velu-ui/components/PageFeedback.jsx +219 -219
- package/runtime/velu-ui/components/PageFooter.jsx +145 -145
- package/runtime/velu-ui/components/PageHeader.jsx +422 -422
- package/runtime/velu-ui/components/PageNav.jsx +77 -77
- package/runtime/velu-ui/components/PoweredBy.jsx +51 -51
- package/runtime/velu-ui/components/Prompt.jsx +115 -115
- package/runtime/velu-ui/components/Search.jsx +460 -460
- package/runtime/velu-ui/components/Sidebar.jsx +254 -254
- package/runtime/velu-ui/components/SocialLinks.jsx +90 -90
- package/runtime/velu-ui/components/Steps.jsx +65 -65
- package/runtime/velu-ui/components/ThemeToggle.jsx +48 -48
- package/runtime/velu-ui/components/Toc.jsx +537 -537
- package/runtime/velu-ui/components/TocBar.jsx +195 -195
- package/runtime/velu-ui/components/Tree.jsx +87 -87
- package/runtime/velu-ui/components/TryItBar.jsx +102 -102
- package/runtime/velu-ui/components/accordion.css +92 -92
- package/runtime/velu-ui/components/api-page.css +208 -208
- package/runtime/velu-ui/components/api.css +635 -635
- package/runtime/velu-ui/components/ask-bar.css +94 -94
- package/runtime/velu-ui/components/card.css +105 -105
- package/runtime/velu-ui/components/chatbot.css +622 -622
- package/runtime/velu-ui/components/code-block.css +263 -263
- package/runtime/velu-ui/components/context-menu.css +173 -173
- package/runtime/velu-ui/components/docs-layout.css +822 -822
- package/runtime/velu-ui/components/field.css +82 -82
- package/runtime/velu-ui/components/image.css +237 -237
- package/runtime/velu-ui/components/nav-select.css +157 -157
- package/runtime/velu-ui/components/not-found.css +94 -94
- package/runtime/velu-ui/components/page-feedback.css +241 -241
- package/runtime/velu-ui/components/page-footer.css +130 -130
- package/runtime/velu-ui/components/page-header.css +558 -558
- package/runtime/velu-ui/components/page-nav.css +50 -50
- package/runtime/velu-ui/components/powered-by.css +92 -92
- package/runtime/velu-ui/components/prompt.css +99 -99
- package/runtime/velu-ui/components/search.css +307 -307
- package/runtime/velu-ui/components/sidebar.css +205 -205
- package/runtime/velu-ui/components/steps.css +77 -77
- package/runtime/velu-ui/components/theme-toggle.css +102 -102
- package/runtime/velu-ui/components/toc-bar.css +234 -234
- package/runtime/velu-ui/components/tree.css +49 -49
- package/runtime/velu-ui/index.js +54 -54
- package/runtime/velu-ui/lib/api-send.js +92 -92
- package/runtime/velu-ui/lib/brand-icons.jsx +103 -103
- package/runtime/velu-ui/lib/component-schemas.js +100 -100
- package/runtime/velu-ui/lib/copyText.js +64 -64
- package/runtime/velu-ui/lib/docs-assistant.js +250 -250
- package/runtime/velu-ui/lib/lang-icons.jsx +147 -147
- package/runtime/velu-ui/lib/pagefind.js +113 -113
- package/runtime/velu-ui/lib/prism-langs.js +957 -957
- package/runtime/velu-ui/lib/prism-loader.js +74 -74
- package/runtime/velu-ui/lib/resolveIcon.jsx +29 -29
- package/runtime/velu-ui/lib/scrollIntoNearestView.js +66 -66
- package/runtime/velu-ui/mdx-components.jsx +105 -105
- package/runtime/velu-ui/primitives/Cluster.jsx +49 -49
- package/runtime/velu-ui/primitives/Stack.jsx +63 -63
- package/runtime/velu-ui/primitives/Switcher.jsx +57 -57
- package/runtime/velu-ui/primitives/stack.css +3 -3
- package/runtime/velu-ui/primitives/switcher.css +25 -25
- package/runtime/velu-ui/styles.css +46 -46
- package/runtime/velu-ui/tokens.css +4 -4
- package/schema/velu.schema.json +423 -423
- package/src/lib/extract-mdx-error.js +170 -170
- package/src/lib/issues.js +159 -159
- package/src/lib/known-components.js +34 -34
- package/src/navigation.js +443 -443
- package/src/runtime/App.jsx +1669 -1668
- package/src/runtime/ErrorBoundary.jsx +54 -54
- package/src/runtime/client-entry.jsx +22 -22
- package/src/runtime/server-entry.jsx +16 -16
- package/src/template.html +48 -48
- package/templates/starter/ai-tools/claude-code.mdx +26 -26
- package/templates/starter/ai-tools/cursor.mdx +17 -17
- package/templates/starter/api-reference/introduction.mdx +43 -43
- package/templates/starter/development.mdx +19 -19
- package/templates/starter/essentials/code.mdx +29 -29
- package/templates/starter/essentials/images.mdx +29 -29
- package/templates/starter/essentials/markdown.mdx +25 -25
- package/templates/starter/essentials/navigation.mdx +39 -39
- package/templates/starter/essentials/settings.mdx +30 -30
- package/templates/starter/favicon.svg +6 -6
- package/templates/starter/index.mdx +31 -31
- package/templates/starter/openapi.json +160 -160
- package/templates/starter/quickstart.mdx +31 -31
- package/templates/starter/velu.json +41 -41
|
@@ -1,208 +1,208 @@
|
|
|
1
|
-
/* Auto-generated OpenAPI reference page. Composes existing API components; this
|
|
2
|
-
only adds the page-level rhythm, the response tabs, and the playground's
|
|
3
|
-
live-response panel + body input. All tokens — light/dark via [data-theme]. */
|
|
4
|
-
|
|
5
|
-
.velu-api-page__title {
|
|
6
|
-
font-size: var(--f-h1);
|
|
7
|
-
font-weight: var(--weight-bold);
|
|
8
|
-
line-height: 1.1;
|
|
9
|
-
letter-spacing: -0.02em;
|
|
10
|
-
margin: 0 0 var(--s1);
|
|
11
|
-
}
|
|
12
|
-
.velu-api-page__lede {
|
|
13
|
-
color: var(--muted-color);
|
|
14
|
-
margin: 0 0 var(--s2);
|
|
15
|
-
}
|
|
16
|
-
.velu-api-page__tryit {
|
|
17
|
-
margin-block: var(--s2);
|
|
18
|
-
}
|
|
19
|
-
.velu-api-page__section {
|
|
20
|
-
margin-block-start: var(--s3);
|
|
21
|
-
}
|
|
22
|
-
.velu-api-page__section > h2 {
|
|
23
|
-
font-size: var(--f-h3);
|
|
24
|
-
font-weight: var(--weight-semibold);
|
|
25
|
-
margin: 0 0 var(--s1);
|
|
26
|
-
}
|
|
27
|
-
.velu-api-page__enum {
|
|
28
|
-
margin-block-start: var(--s-3);
|
|
29
|
-
color: var(--muted-color);
|
|
30
|
-
font-size: var(--f-h6);
|
|
31
|
-
}
|
|
32
|
-
.velu-api-page__enum code {
|
|
33
|
-
margin-inline-end: var(--s-4);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/* ── Response sections (doc body) ──────────────────────────────────────── */
|
|
37
|
-
/* One default-open accordion per status; the summary shows a status pill +
|
|
38
|
-
the content-type. */
|
|
39
|
-
.velu-api-resp__head {
|
|
40
|
-
display: inline-flex;
|
|
41
|
-
align-items: baseline;
|
|
42
|
-
gap: var(--s0);
|
|
43
|
-
}
|
|
44
|
-
/* Plain status code — no pill chrome, no per-status color, regular weight. */
|
|
45
|
-
.velu-api-resp__status {
|
|
46
|
-
font-family: var(--font-mono);
|
|
47
|
-
}
|
|
48
|
-
.velu-api-resp__ctype {
|
|
49
|
-
color: var(--muted-color);
|
|
50
|
-
font-family: var(--font-mono);
|
|
51
|
-
font-size: var(--f-h6);
|
|
52
|
-
}
|
|
53
|
-
.velu-api-resp__desc {
|
|
54
|
-
color: var(--muted-color);
|
|
55
|
-
margin: 0 0 var(--s1);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* ── Playground live-response panel (ApiClient aside) ──────────────────── */
|
|
59
|
-
/* A Body / Header tabbed card reusing the CodeGroup tab chrome
|
|
60
|
-
(.velu-code-block__*): Body shows a status-colored callout + the response
|
|
61
|
-
body; Header shows the response headers as a fixed-height scrollable table. */
|
|
62
|
-
.velu-api-resp-panel__content {
|
|
63
|
-
display: flex;
|
|
64
|
-
flex-direction: column;
|
|
65
|
-
gap: var(--s1);
|
|
66
|
-
padding: var(--s1);
|
|
67
|
-
background: var(--page-bg);
|
|
68
|
-
}
|
|
69
|
-
.velu-api-resp-panel__status {
|
|
70
|
-
/* The Callout owns its color; keep the weight regular. */
|
|
71
|
-
font-size: var(--f-h6);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/* Body + Header tabs — fixed height, vertically scrollable, so a long
|
|
75
|
-
response never makes the panel grow unbounded. */
|
|
76
|
-
.velu-api-resp-headers__scroll,
|
|
77
|
-
.velu-api-resp-body__scroll {
|
|
78
|
-
max-block-size: 15rem;
|
|
79
|
-
overflow-y: auto;
|
|
80
|
-
}
|
|
81
|
-
/* The CodeBlock owns its own border/radius; let it fill the scroll box. */
|
|
82
|
-
.velu-api-resp-body__scroll > .velu-code-block {
|
|
83
|
-
border: 0;
|
|
84
|
-
border-radius: 0;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/* Response headers table — flush rows with hairline dividers. */
|
|
88
|
-
.velu-api-resp-headers {
|
|
89
|
-
inline-size: 100%;
|
|
90
|
-
border-collapse: collapse;
|
|
91
|
-
font-size: var(--f-h6);
|
|
92
|
-
}
|
|
93
|
-
.velu-api-resp-headers tr + tr td {
|
|
94
|
-
border-block-start: var(--border-width) solid var(--border-color);
|
|
95
|
-
}
|
|
96
|
-
.velu-api-resp-headers td {
|
|
97
|
-
padding: var(--s-2) var(--s-1);
|
|
98
|
-
vertical-align: top;
|
|
99
|
-
word-break: break-word;
|
|
100
|
-
}
|
|
101
|
-
.velu-api-resp-headers__key {
|
|
102
|
-
color: var(--muted-color);
|
|
103
|
-
font-family: var(--font-mono);
|
|
104
|
-
white-space: nowrap;
|
|
105
|
-
padding-inline-end: var(--s1) !important;
|
|
106
|
-
}
|
|
107
|
-
.velu-api-resp-headers__val {
|
|
108
|
-
font-family: var(--font-mono);
|
|
109
|
-
inline-size: 100%;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/* Editable JSON body in the playground. */
|
|
113
|
-
.velu-api-body-input {
|
|
114
|
-
inline-size: 100%;
|
|
115
|
-
resize: vertical;
|
|
116
|
-
padding: var(--s0);
|
|
117
|
-
border: var(--border-width) solid var(--border-color);
|
|
118
|
-
border-radius: var(--radius-sm);
|
|
119
|
-
background: var(--page-bg);
|
|
120
|
-
color: var(--text-color);
|
|
121
|
-
font-family: var(--font-mono);
|
|
122
|
-
font-size: var(--f-h6);
|
|
123
|
-
line-height: 1.5;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* ── Right-rail samples ────────────────────────────────────────────────── */
|
|
127
|
-
/* A TOC needs only ~280px, but the request/response code samples were being
|
|
128
|
-
cropped in that width. On API pages widen the right rail — both the aside
|
|
129
|
-
width AND the centre column's right margin read this one var, so they stay
|
|
130
|
-
in sync. (At < 1024px the @container query hides the rail + zeroes the
|
|
131
|
-
margin, so this wider value never affects narrow layouts.) */
|
|
132
|
-
.velu-docs-layout[data-api='true'] {
|
|
133
|
-
--velu-aside-right-width: 28rem; /* 448px */
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.velu-api-samples {
|
|
137
|
-
display: flex;
|
|
138
|
-
flex-direction: column;
|
|
139
|
-
gap: var(--s2);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/* Breathing room inside each sample group — the code panels were reading
|
|
143
|
-
as cramped against the rail edge. */
|
|
144
|
-
.velu-api-samples > * {
|
|
145
|
-
margin: 0;
|
|
146
|
-
}
|
|
147
|
-
.velu-api-samples :is(pre, code) {
|
|
148
|
-
font-size: var(--f-h6);
|
|
149
|
-
line-height: 1.6;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/* ── Try-It playground modal ───────────────────────────────────────────── */
|
|
153
|
-
/* The playground renders above the page on a dimmed, blurred backdrop
|
|
154
|
-
rather than inline. */
|
|
155
|
-
.velu-api-modal {
|
|
156
|
-
position: fixed;
|
|
157
|
-
inset: 0;
|
|
158
|
-
z-index: 80;
|
|
159
|
-
display: flex;
|
|
160
|
-
align-items: flex-start;
|
|
161
|
-
justify-content: center;
|
|
162
|
-
padding: clamp(var(--s1), 6vh, var(--s5)) var(--s2);
|
|
163
|
-
overflow-y: auto;
|
|
164
|
-
background: color-mix(in srgb, var(--page-bg) 35%, rgba(0, 0, 0, 0.55));
|
|
165
|
-
backdrop-filter: blur(6px) saturate(1.1);
|
|
166
|
-
-webkit-backdrop-filter: blur(6px) saturate(1.1);
|
|
167
|
-
animation: velu-api-modal-in 140ms ease-out;
|
|
168
|
-
}
|
|
169
|
-
.velu-api-modal__panel {
|
|
170
|
-
inline-size: 100%;
|
|
171
|
-
max-inline-size: 64rem;
|
|
172
|
-
border-radius: var(--radius-md);
|
|
173
|
-
box-shadow:
|
|
174
|
-
0 24px 64px -16px rgba(0, 0, 0, 0.45),
|
|
175
|
-
0 8px 24px -12px rgba(0, 0, 0, 0.35);
|
|
176
|
-
animation: velu-api-modal-rise 160ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
177
|
-
}
|
|
178
|
-
@keyframes velu-api-modal-in {
|
|
179
|
-
from { opacity: 0; }
|
|
180
|
-
to { opacity: 1; }
|
|
181
|
-
}
|
|
182
|
-
@keyframes velu-api-modal-rise {
|
|
183
|
-
from { opacity: 0; transform: translateY(8px) scale(0.99); }
|
|
184
|
-
to { opacity: 1; transform: none; }
|
|
185
|
-
}
|
|
186
|
-
@media (prefers-reduced-motion: reduce) {
|
|
187
|
-
.velu-api-modal,
|
|
188
|
-
.velu-api-modal__panel {
|
|
189
|
-
animation: none;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/* Compact method pill in the sidebar (replaces the icon for API endpoints). */
|
|
194
|
-
.velu-sidebar__method {
|
|
195
|
-
flex: none;
|
|
196
|
-
font-family: var(--font-mono);
|
|
197
|
-
font-size: 0.6rem;
|
|
198
|
-
font-weight: var(--weight-bold);
|
|
199
|
-
letter-spacing: 0.03em;
|
|
200
|
-
padding: 0.18em 0.36em;
|
|
201
|
-
border-radius: var(--radius-xs, 4px);
|
|
202
|
-
text-transform: uppercase;
|
|
203
|
-
}
|
|
204
|
-
.velu-sidebar__method.velu-method-badge--get { color: var(--get-pill-color); background: color-mix(in srgb, var(--get-pill-color) 14%, transparent); }
|
|
205
|
-
.velu-sidebar__method.velu-method-badge--post { color: var(--post-pill-color); background: color-mix(in srgb, var(--post-pill-color) 14%, transparent); }
|
|
206
|
-
.velu-sidebar__method.velu-method-badge--put { color: var(--put-pill-color); background: color-mix(in srgb, var(--put-pill-color) 14%, transparent); }
|
|
207
|
-
.velu-sidebar__method.velu-method-badge--patch { color: var(--patch-pill-color); background: color-mix(in srgb, var(--patch-pill-color) 14%, transparent); }
|
|
208
|
-
.velu-sidebar__method.velu-method-badge--delete { color: var(--delete-pill-color); background: color-mix(in srgb, var(--delete-pill-color) 14%, transparent); }
|
|
1
|
+
/* Auto-generated OpenAPI reference page. Composes existing API components; this
|
|
2
|
+
only adds the page-level rhythm, the response tabs, and the playground's
|
|
3
|
+
live-response panel + body input. All tokens — light/dark via [data-theme]. */
|
|
4
|
+
|
|
5
|
+
.velu-api-page__title {
|
|
6
|
+
font-size: var(--f-h1);
|
|
7
|
+
font-weight: var(--weight-bold);
|
|
8
|
+
line-height: 1.1;
|
|
9
|
+
letter-spacing: -0.02em;
|
|
10
|
+
margin: 0 0 var(--s1);
|
|
11
|
+
}
|
|
12
|
+
.velu-api-page__lede {
|
|
13
|
+
color: var(--muted-color);
|
|
14
|
+
margin: 0 0 var(--s2);
|
|
15
|
+
}
|
|
16
|
+
.velu-api-page__tryit {
|
|
17
|
+
margin-block: var(--s2);
|
|
18
|
+
}
|
|
19
|
+
.velu-api-page__section {
|
|
20
|
+
margin-block-start: var(--s3);
|
|
21
|
+
}
|
|
22
|
+
.velu-api-page__section > h2 {
|
|
23
|
+
font-size: var(--f-h3);
|
|
24
|
+
font-weight: var(--weight-semibold);
|
|
25
|
+
margin: 0 0 var(--s1);
|
|
26
|
+
}
|
|
27
|
+
.velu-api-page__enum {
|
|
28
|
+
margin-block-start: var(--s-3);
|
|
29
|
+
color: var(--muted-color);
|
|
30
|
+
font-size: var(--f-h6);
|
|
31
|
+
}
|
|
32
|
+
.velu-api-page__enum code {
|
|
33
|
+
margin-inline-end: var(--s-4);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* ── Response sections (doc body) ──────────────────────────────────────── */
|
|
37
|
+
/* One default-open accordion per status; the summary shows a status pill +
|
|
38
|
+
the content-type. */
|
|
39
|
+
.velu-api-resp__head {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: baseline;
|
|
42
|
+
gap: var(--s0);
|
|
43
|
+
}
|
|
44
|
+
/* Plain status code — no pill chrome, no per-status color, regular weight. */
|
|
45
|
+
.velu-api-resp__status {
|
|
46
|
+
font-family: var(--font-mono);
|
|
47
|
+
}
|
|
48
|
+
.velu-api-resp__ctype {
|
|
49
|
+
color: var(--muted-color);
|
|
50
|
+
font-family: var(--font-mono);
|
|
51
|
+
font-size: var(--f-h6);
|
|
52
|
+
}
|
|
53
|
+
.velu-api-resp__desc {
|
|
54
|
+
color: var(--muted-color);
|
|
55
|
+
margin: 0 0 var(--s1);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* ── Playground live-response panel (ApiClient aside) ──────────────────── */
|
|
59
|
+
/* A Body / Header tabbed card reusing the CodeGroup tab chrome
|
|
60
|
+
(.velu-code-block__*): Body shows a status-colored callout + the response
|
|
61
|
+
body; Header shows the response headers as a fixed-height scrollable table. */
|
|
62
|
+
.velu-api-resp-panel__content {
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
gap: var(--s1);
|
|
66
|
+
padding: var(--s1);
|
|
67
|
+
background: var(--page-bg);
|
|
68
|
+
}
|
|
69
|
+
.velu-api-resp-panel__status {
|
|
70
|
+
/* The Callout owns its color; keep the weight regular. */
|
|
71
|
+
font-size: var(--f-h6);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Body + Header tabs — fixed height, vertically scrollable, so a long
|
|
75
|
+
response never makes the panel grow unbounded. */
|
|
76
|
+
.velu-api-resp-headers__scroll,
|
|
77
|
+
.velu-api-resp-body__scroll {
|
|
78
|
+
max-block-size: 15rem;
|
|
79
|
+
overflow-y: auto;
|
|
80
|
+
}
|
|
81
|
+
/* The CodeBlock owns its own border/radius; let it fill the scroll box. */
|
|
82
|
+
.velu-api-resp-body__scroll > .velu-code-block {
|
|
83
|
+
border: 0;
|
|
84
|
+
border-radius: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Response headers table — flush rows with hairline dividers. */
|
|
88
|
+
.velu-api-resp-headers {
|
|
89
|
+
inline-size: 100%;
|
|
90
|
+
border-collapse: collapse;
|
|
91
|
+
font-size: var(--f-h6);
|
|
92
|
+
}
|
|
93
|
+
.velu-api-resp-headers tr + tr td {
|
|
94
|
+
border-block-start: var(--border-width) solid var(--border-color);
|
|
95
|
+
}
|
|
96
|
+
.velu-api-resp-headers td {
|
|
97
|
+
padding: var(--s-2) var(--s-1);
|
|
98
|
+
vertical-align: top;
|
|
99
|
+
word-break: break-word;
|
|
100
|
+
}
|
|
101
|
+
.velu-api-resp-headers__key {
|
|
102
|
+
color: var(--muted-color);
|
|
103
|
+
font-family: var(--font-mono);
|
|
104
|
+
white-space: nowrap;
|
|
105
|
+
padding-inline-end: var(--s1) !important;
|
|
106
|
+
}
|
|
107
|
+
.velu-api-resp-headers__val {
|
|
108
|
+
font-family: var(--font-mono);
|
|
109
|
+
inline-size: 100%;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Editable JSON body in the playground. */
|
|
113
|
+
.velu-api-body-input {
|
|
114
|
+
inline-size: 100%;
|
|
115
|
+
resize: vertical;
|
|
116
|
+
padding: var(--s0);
|
|
117
|
+
border: var(--border-width) solid var(--border-color);
|
|
118
|
+
border-radius: var(--radius-sm);
|
|
119
|
+
background: var(--page-bg);
|
|
120
|
+
color: var(--text-color);
|
|
121
|
+
font-family: var(--font-mono);
|
|
122
|
+
font-size: var(--f-h6);
|
|
123
|
+
line-height: 1.5;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ── Right-rail samples ────────────────────────────────────────────────── */
|
|
127
|
+
/* A TOC needs only ~280px, but the request/response code samples were being
|
|
128
|
+
cropped in that width. On API pages widen the right rail — both the aside
|
|
129
|
+
width AND the centre column's right margin read this one var, so they stay
|
|
130
|
+
in sync. (At < 1024px the @container query hides the rail + zeroes the
|
|
131
|
+
margin, so this wider value never affects narrow layouts.) */
|
|
132
|
+
.velu-docs-layout[data-api='true'] {
|
|
133
|
+
--velu-aside-right-width: 28rem; /* 448px */
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.velu-api-samples {
|
|
137
|
+
display: flex;
|
|
138
|
+
flex-direction: column;
|
|
139
|
+
gap: var(--s2);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Breathing room inside each sample group — the code panels were reading
|
|
143
|
+
as cramped against the rail edge. */
|
|
144
|
+
.velu-api-samples > * {
|
|
145
|
+
margin: 0;
|
|
146
|
+
}
|
|
147
|
+
.velu-api-samples :is(pre, code) {
|
|
148
|
+
font-size: var(--f-h6);
|
|
149
|
+
line-height: 1.6;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* ── Try-It playground modal ───────────────────────────────────────────── */
|
|
153
|
+
/* The playground renders above the page on a dimmed, blurred backdrop
|
|
154
|
+
rather than inline. */
|
|
155
|
+
.velu-api-modal {
|
|
156
|
+
position: fixed;
|
|
157
|
+
inset: 0;
|
|
158
|
+
z-index: 80;
|
|
159
|
+
display: flex;
|
|
160
|
+
align-items: flex-start;
|
|
161
|
+
justify-content: center;
|
|
162
|
+
padding: clamp(var(--s1), 6vh, var(--s5)) var(--s2);
|
|
163
|
+
overflow-y: auto;
|
|
164
|
+
background: color-mix(in srgb, var(--page-bg) 35%, rgba(0, 0, 0, 0.55));
|
|
165
|
+
backdrop-filter: blur(6px) saturate(1.1);
|
|
166
|
+
-webkit-backdrop-filter: blur(6px) saturate(1.1);
|
|
167
|
+
animation: velu-api-modal-in 140ms ease-out;
|
|
168
|
+
}
|
|
169
|
+
.velu-api-modal__panel {
|
|
170
|
+
inline-size: 100%;
|
|
171
|
+
max-inline-size: 64rem;
|
|
172
|
+
border-radius: var(--radius-md);
|
|
173
|
+
box-shadow:
|
|
174
|
+
0 24px 64px -16px rgba(0, 0, 0, 0.45),
|
|
175
|
+
0 8px 24px -12px rgba(0, 0, 0, 0.35);
|
|
176
|
+
animation: velu-api-modal-rise 160ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
177
|
+
}
|
|
178
|
+
@keyframes velu-api-modal-in {
|
|
179
|
+
from { opacity: 0; }
|
|
180
|
+
to { opacity: 1; }
|
|
181
|
+
}
|
|
182
|
+
@keyframes velu-api-modal-rise {
|
|
183
|
+
from { opacity: 0; transform: translateY(8px) scale(0.99); }
|
|
184
|
+
to { opacity: 1; transform: none; }
|
|
185
|
+
}
|
|
186
|
+
@media (prefers-reduced-motion: reduce) {
|
|
187
|
+
.velu-api-modal,
|
|
188
|
+
.velu-api-modal__panel {
|
|
189
|
+
animation: none;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* Compact method pill in the sidebar (replaces the icon for API endpoints). */
|
|
194
|
+
.velu-sidebar__method {
|
|
195
|
+
flex: none;
|
|
196
|
+
font-family: var(--font-mono);
|
|
197
|
+
font-size: 0.6rem;
|
|
198
|
+
font-weight: var(--weight-bold);
|
|
199
|
+
letter-spacing: 0.03em;
|
|
200
|
+
padding: 0.18em 0.36em;
|
|
201
|
+
border-radius: var(--radius-xs, 4px);
|
|
202
|
+
text-transform: uppercase;
|
|
203
|
+
}
|
|
204
|
+
.velu-sidebar__method.velu-method-badge--get { color: var(--get-pill-color); background: color-mix(in srgb, var(--get-pill-color) 14%, transparent); }
|
|
205
|
+
.velu-sidebar__method.velu-method-badge--post { color: var(--post-pill-color); background: color-mix(in srgb, var(--post-pill-color) 14%, transparent); }
|
|
206
|
+
.velu-sidebar__method.velu-method-badge--put { color: var(--put-pill-color); background: color-mix(in srgb, var(--put-pill-color) 14%, transparent); }
|
|
207
|
+
.velu-sidebar__method.velu-method-badge--patch { color: var(--patch-pill-color); background: color-mix(in srgb, var(--patch-pill-color) 14%, transparent); }
|
|
208
|
+
.velu-sidebar__method.velu-method-badge--delete { color: var(--delete-pill-color); background: color-mix(in srgb, var(--delete-pill-color) 14%, transparent); }
|