Skip to content

Commit 4066568

Browse files
committed
Merge branch 'main' of github.com:nulfrost/npmx.dev into refactor/modal-a11y
2 parents 3bdff82 + 123f321 commit 4066568

6 files changed

Lines changed: 334 additions & 332 deletions

File tree

app/app.vue

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,29 @@ if (import.meta.client) {
102102
</div>
103103
</template>
104104

105+
<style scoped>
106+
/* Skip link */
107+
.skip-link {
108+
position: fixed;
109+
top: -100%;
110+
inset-inline-start: 0;
111+
padding: 0.5rem 1rem;
112+
background: var(--fg);
113+
color: var(--bg);
114+
font-size: 0.875rem;
115+
z-index: 100;
116+
transition: top 0.2s ease;
117+
}
118+
119+
.skip-link:hover {
120+
color: var(--bg);
121+
text-decoration: underline;
122+
}
123+
.skip-link:focus {
124+
top: 0;
125+
}
126+
</style>
127+
105128
<style>
106129
/* Keyboard shortcut highlight on "?" key press */
107130
kbd {

app/assets/main.css

Lines changed: 0 additions & 321 deletions
Original file line numberDiff line numberDiff line change
@@ -173,27 +173,6 @@ button {
173173
background: #404040;
174174
}
175175

176-
/* Skip link */
177-
.skip-link {
178-
position: fixed;
179-
top: -100%;
180-
inset-inline-start: 0;
181-
padding: 0.5rem 1rem;
182-
background: var(--fg);
183-
color: var(--bg);
184-
font-size: 0.875rem;
185-
z-index: 100;
186-
transition: top 0.2s ease;
187-
}
188-
189-
.skip-link:hover {
190-
color: var(--bg);
191-
text-decoration: underline;
192-
}
193-
.skip-link:focus {
194-
top: 0;
195-
}
196-
197176
/* Shiki theme colors */
198177
html.light .shiki,
199178
html.light .shiki span {
@@ -204,306 +183,6 @@ html.light .shiki span {
204183
text-decoration: var(--shiki-light-text-decoration) !important;
205184
}
206185

207-
/* README prose styling */
208-
.readme-content {
209-
color: var(--fg-muted);
210-
line-height: 1.75;
211-
/* Prevent horizontal overflow on mobile */
212-
overflow-wrap: break-word;
213-
word-wrap: break-word;
214-
word-break: break-word;
215-
/* Contain all children */
216-
overflow: hidden;
217-
min-width: 0;
218-
}
219-
220-
/* README headings - styled by visual level (data-level), not semantic level */
221-
.readme-content h3,
222-
.readme-content h4,
223-
.readme-content h5,
224-
.readme-content h6 {
225-
color: var(--fg);
226-
@apply font-mono;
227-
font-weight: 500;
228-
margin-top: 2rem;
229-
margin-bottom: 1rem;
230-
line-height: 1.3;
231-
232-
a {
233-
text-decoration: none;
234-
}
235-
}
236-
237-
/* Visual styling based on original README heading level */
238-
.readme-content [data-level='1'] {
239-
font-size: 1.5rem;
240-
}
241-
.readme-content [data-level='2'] {
242-
font-size: 1.25rem;
243-
padding-bottom: 0.5rem;
244-
border-bottom: 1px solid var(--border);
245-
}
246-
.readme-content [data-level='3'] {
247-
font-size: 1.125rem;
248-
}
249-
.readme-content [data-level='4'] {
250-
font-size: 1rem;
251-
}
252-
.readme-content [data-level='5'] {
253-
font-size: 0.925rem;
254-
}
255-
.readme-content [data-level='6'] {
256-
font-size: 0.875rem;
257-
}
258-
259-
.readme-content p {
260-
margin-bottom: 1rem;
261-
}
262-
263-
.readme-content a {
264-
color: var(--fg);
265-
text-decoration: underline;
266-
text-underline-offset: 4px;
267-
text-decoration-color: var(--fg-subtle);
268-
transition: text-decoration-color 0.2s ease;
269-
}
270-
271-
.readme-content a:hover {
272-
text-decoration-color: var(--accent);
273-
}
274-
275-
.readme-content code {
276-
@apply font-mono;
277-
font-size: 0.875em;
278-
background: var(--bg-muted);
279-
padding: 0.2em 0.4em;
280-
border-radius: 4px;
281-
border: 1px solid var(--border);
282-
}
283-
284-
/* Code blocks - including Shiki output */
285-
.readme-content pre,
286-
.readme-content .shiki {
287-
border: 1px solid var(--border);
288-
border-radius: 8px;
289-
padding: 1rem;
290-
overflow-x: auto;
291-
margin: 1.5rem 0;
292-
/* Fix horizontal overflow */
293-
max-width: 100%;
294-
box-sizing: border-box;
295-
}
296-
297-
.readme-content pre code,
298-
.readme-content .shiki code {
299-
background: transparent !important;
300-
border: none;
301-
padding: 0;
302-
@apply font-mono;
303-
font-size: 0.875rem;
304-
color: var(--fg);
305-
/* Prevent code from forcing width */
306-
white-space: pre;
307-
word-break: normal;
308-
overflow-wrap: normal;
309-
/* Makes unicode and ascii art work properly */
310-
line-height: 1.25;
311-
display: inline-block;
312-
}
313-
314-
.readme-content ul,
315-
.readme-content ol {
316-
margin: 1rem 0;
317-
padding-inline-start: 1.5rem;
318-
}
319-
320-
.readme-content ul {
321-
list-style-type: disc;
322-
}
323-
324-
.readme-content ol {
325-
list-style-type: decimal;
326-
}
327-
328-
.readme-content li {
329-
margin-bottom: 0.5rem;
330-
display: list-item;
331-
}
332-
333-
.readme-content li::marker {
334-
color: var(--border-hover);
335-
}
336-
337-
.readme-content blockquote {
338-
border-inline-start: 2px solid var(--border);
339-
padding-inline-start: 1rem;
340-
margin: 1.5rem 0;
341-
color: var(--fg-subtle);
342-
font-style: italic;
343-
}
344-
345-
/* GitHub-style callouts/alerts */
346-
.readme-content blockquote[data-callout] {
347-
border-inline-start-width: 3px;
348-
padding: 1rem;
349-
padding-inline-start: 1.25rem;
350-
background: var(--bg-subtle);
351-
font-style: normal;
352-
color: var(--fg-subtle);
353-
position: relative;
354-
}
355-
356-
.readme-content blockquote[data-callout]::before {
357-
display: block;
358-
@apply font-mono;
359-
font-size: 0.75rem;
360-
font-weight: 500;
361-
text-transform: uppercase;
362-
letter-spacing: 0.05em;
363-
margin-bottom: 0.5rem;
364-
padding-inline-start: 1.5rem;
365-
}
366-
367-
.readme-content blockquote[data-callout]::after {
368-
content: '';
369-
width: 1.25rem;
370-
height: 1.25rem;
371-
position: absolute;
372-
top: 1rem;
373-
}
374-
375-
.readme-content blockquote[data-callout] > p:first-child {
376-
margin-top: 0;
377-
}
378-
379-
.readme-content blockquote[data-callout] > p:last-child {
380-
margin-bottom: 0;
381-
}
382-
383-
/* Note - blue */
384-
.readme-content blockquote[data-callout='note'] {
385-
border-inline-start-color: var(--syntax-str);
386-
background: rgba(59, 130, 246, 0.05);
387-
}
388-
.readme-content blockquote[data-callout='note']::before {
389-
content: 'Note';
390-
color: #3b82f6;
391-
}
392-
.readme-content blockquote[data-callout='note']::after {
393-
background-color: #3b82f6;
394-
-webkit-mask: icon('i-lucide-info') no-repeat;
395-
mask: icon('i-lucide-info') no-repeat;
396-
}
397-
398-
/* Tip - green */
399-
.readme-content blockquote[data-callout='tip'] {
400-
border-inline-start-color: #22c55e;
401-
background: rgba(34, 197, 94, 0.05);
402-
}
403-
.readme-content blockquote[data-callout='tip']::before {
404-
content: 'Tip';
405-
color: #22c55e;
406-
}
407-
.readme-content blockquote[data-callout='tip']::after {
408-
background-color: #22c55e;
409-
-webkit-mask: icon('i-lucide-lightbulb') no-repeat;
410-
mask: icon('i-lucide-lightbulb') no-repeat;
411-
}
412-
413-
/* Important - purple */
414-
.readme-content blockquote[data-callout='important'] {
415-
border-inline-start-color: var(--syntax-fn);
416-
background: rgba(168, 85, 247, 0.05);
417-
}
418-
.readme-content blockquote[data-callout='important']::before {
419-
content: 'Important';
420-
color: var(--syntax-fn);
421-
}
422-
.readme-content blockquote[data-callout='important']::after {
423-
background-color: var(--syntax-fn);
424-
-webkit-mask: icon('i-lucide-pin') no-repeat;
425-
mask: icon('i-lucide-pin') no-repeat;
426-
}
427-
428-
/* Warning - yellow/orange */
429-
.readme-content blockquote[data-callout='warning'] {
430-
border-inline-start-color: #eab308;
431-
background: rgba(234, 179, 8, 0.05);
432-
}
433-
.readme-content blockquote[data-callout='warning']::before {
434-
content: 'Warning';
435-
color: #eab308;
436-
}
437-
.readme-content blockquote[data-callout='warning']::after {
438-
background-color: #eab308;
439-
-webkit-mask: icon('i-lucide-triangle-alert') no-repeat;
440-
mask: icon('i-lucide-triangle-alert') no-repeat;
441-
}
442-
443-
/* Caution - red */
444-
.readme-content blockquote[data-callout='caution'] {
445-
border-inline-start-color: #ef4444;
446-
background: rgba(239, 68, 68, 0.05);
447-
}
448-
.readme-content blockquote[data-callout='caution']::before {
449-
content: 'Caution';
450-
color: #ef4444;
451-
}
452-
.readme-content blockquote[data-callout='caution']::after {
453-
background-color: #ef4444;
454-
-webkit-mask: icon('i-lucide-circle-alert') no-repeat;
455-
mask: icon('i-lucide-circle-alert') no-repeat;
456-
}
457-
458-
/* Table wrapper for horizontal scroll on mobile */
459-
.readme-content table {
460-
display: block;
461-
width: 100%;
462-
overflow-x: auto;
463-
border-collapse: collapse;
464-
margin: 1.5rem 0;
465-
font-size: 0.875rem;
466-
word-break: keep-all;
467-
}
468-
469-
.readme-content th,
470-
.readme-content td {
471-
border: 1px solid var(--border);
472-
padding: 0.75rem 1rem;
473-
text-align: start;
474-
}
475-
476-
.readme-content th {
477-
background: var(--bg-subtle);
478-
color: var(--fg);
479-
font-weight: 500;
480-
}
481-
482-
.readme-content tr:hover {
483-
background: var(--bg-subtle);
484-
}
485-
486-
.readme-content img {
487-
max-width: 100%;
488-
height: auto;
489-
border-radius: 8px;
490-
margin: 1rem 0;
491-
}
492-
493-
.readme-content hr {
494-
border: none;
495-
border-top: 1px solid var(--border);
496-
margin: 2rem 0;
497-
}
498-
499-
/* Badge images inline */
500-
.readme-content p > a > img,
501-
.readme-content p > img {
502-
display: inline-block;
503-
margin: 0 0.25rem 0.25rem 0;
504-
border-radius: 4px;
505-
}
506-
507186
/* Inline code in package descriptions */
508187
p > span > code,
509188
.line-clamp-2 code {

0 commit comments

Comments
 (0)