102 lines
No EOL
2.9 KiB
HTML
102 lines
No EOL
2.9 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Porter</title><style>:root {
|
|
--background: #ffffff;
|
|
--foreground: #09090b;
|
|
--card: #ffffff;
|
|
--card-foreground: #09090b;
|
|
--border: #e4e4e7;
|
|
--primary: #18181b;
|
|
--primary-foreground: #fafafa;
|
|
--muted-foreground: #71717a;
|
|
}
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
body {
|
|
margin: 0;
|
|
background: var(--background);
|
|
color: var(--foreground);
|
|
font-family: ui-sans-serif, system-ui, sans-serif;
|
|
}
|
|
.porter {
|
|
display: grid;
|
|
gap: 1.5rem;
|
|
width: min(100% - 2rem, 64rem);
|
|
margin: 0 auto;
|
|
padding: clamp(2rem, 9vw, 7rem) 0;
|
|
}
|
|
.porter__intro, .porter__item {
|
|
padding: clamp(1.25rem, 4vw, 3rem);
|
|
}
|
|
.porter__intro h1 {
|
|
max-width: 44rem;
|
|
margin: 0;
|
|
font-size: clamp(2.75rem, 7vw, 5.75rem);
|
|
line-height: .95;
|
|
letter-spacing: -.07em;
|
|
}
|
|
.porter__intro p, .porter__item p {
|
|
max-width: 39rem;
|
|
color: var(--muted-foreground);
|
|
line-height: 1.65;
|
|
}
|
|
.porter__grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 1rem;
|
|
}
|
|
.porter__item {
|
|
min-height: 15rem;
|
|
display: grid;
|
|
align-content: space-between;
|
|
gap: 2rem;
|
|
}
|
|
.porter__item h2 {
|
|
margin: 0;
|
|
font-size: 1.35rem;
|
|
}
|
|
.rounded-xl {
|
|
border-radius: .75rem;
|
|
}
|
|
.border {
|
|
border: 1px solid var(--border);
|
|
}
|
|
.bg-card {
|
|
background: var(--card);
|
|
}
|
|
.text-card-foreground {
|
|
color: var(--card-foreground);
|
|
}
|
|
.shadow {
|
|
box-shadow: 0 1px 3px rgb(0 0 0 / .1), 0 1px 2px rgb(0 0 0 / .06);
|
|
}
|
|
.muddle-react {
|
|
display: inline-flex;
|
|
width: fit-content;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 0;
|
|
border-radius: .375rem;
|
|
background: var(--primary);
|
|
color: var(--primary-foreground);
|
|
padding: .55rem .9rem;
|
|
font: inherit;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
}
|
|
.muddle-react:hover {
|
|
opacity: .9;
|
|
}
|
|
@media (max-width: 48rem) {
|
|
.porter__grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}</style><style>@media (min-width: 0) {
|
|
}
|
|
@media (max-width: 80rem) {
|
|
}
|
|
@media (max-width: 64rem) {
|
|
}
|
|
@media (max-width: 48rem) {
|
|
}
|
|
@media (max-width: 40rem) {
|
|
}</style></head><body><main class="porter"><div class="rounded-xl border bg-card text-card-foreground shadow"><section class="porter__intro"><h1>ShadCN, ported to Muddle.</h1><p>This page is assembled from the Button and Card components fetched through the configured ShadCN registry integration.</p><button class="muddle-react">Port a component</button></section></div><section class="porter__grid"><div class="rounded-xl border bg-card text-card-foreground shadow"><article class="porter__item"><h2>Button</h2><p>This is the generated Muddle port, not a hand-built replacement.</p><button class="muddle-react">Inspect port</button></article></div><div class="rounded-xl border bg-card text-card-foreground shadow"><article class="porter__item"><h2>Card</h2><p>This is the generated Muddle port, not a hand-built replacement.</p><button class="muddle-react">Inspect port</button></article></div></section></main></body></html> |