Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions app/pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@ const templates = [
href: "/templates",
available: true,
},
{
title: "Starter",
description: "A minimal Nuxt starter to begin quickly with shadcn-vue.",
icon: Sparkles,
href: "/templates",
available: true,
},
{
title: "Dashboard",
description: "A flexible dashboard starter for building data-heavy Nuxt interfaces. Coming soon.",
icon: Blocks,
available: false,
},
{
title: "Starter",
description: "A minimal Nuxt starter to begin quickly with shadcn-vue. Coming soon.",
icon: Sparkles,
available: false,
},
];
</script>

Expand Down
27 changes: 16 additions & 11 deletions app/pages/templates.vue
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,27 @@ const templates: Template[] = [
status: "available",
image: { light: "/templates/chat-light.png", dark: "/templates/chat-dark.png" },
},
{
name: "Dashboard",
description: "A flexible dashboard starter for building data-heavy Nuxt interfaces.",
features: ["Charts and date-picker support", "Multi-column layout", "Light and dark mode"],
status: "coming-soon",
},
{
name: "Starter",
description: "A minimal Nuxt starter to begin quickly with shadcn-vue.",
features: ["Nuxt setup included", "ESLint setup included", "shadcn-vue setup included"],
status: "coming-soon",
preview: "https://starter-template.stackhacker.io",
github: "https://github.com/stackhacker-ui/starter",
status: "available",
image: { light: "/templates/starter-light.png", dark: "/templates/starter-dark.png" },
},
{
name: "Landing",
description: "A lightweight landing page starter powered by Nuxt Content.",
features: ["Features, pricing, and FAQ sections", "Nuxt Content support", "Responsive layout"],
status: "coming-soon",
},
{
name: "Dashboard",
description: "A flexible dashboard starter for building data-heavy Nuxt interfaces.",
features: ["Charts and date-picker support", "Multi-column layout", "Light and dark mode"],
status: "coming-soon",
},
];
</script>

Expand All @@ -75,11 +78,11 @@ const templates: Template[] = [
<div
v-for="template in templates"
:key="template.name"
class="border-border bg-card text-card-foreground group overflow-hidden rounded-lg border transition-colors"
class="border-border bg-card text-card-foreground group flex h-full flex-col overflow-hidden rounded-lg border transition-colors"
:class="template.status === 'available' ? 'hover:border-foreground/20' : 'opacity-60'"
>
<!-- Image -->
<div class="border-border bg-muted relative aspect-[3/2] overflow-hidden border-b">
<div class="border-border bg-muted relative aspect-3/2 overflow-hidden border-b">
<template v-if="template.image">
<img
:src="template.image.light"
Expand All @@ -106,7 +109,7 @@ const templates: Template[] = [
</div>

<!-- Content -->
<div class="p-6">
<div class="flex flex-1 flex-col p-6">
<div class="mb-2 flex items-center gap-2">
<h3 class="text-foreground text-lg font-semibold">
{{ template.name }}
Expand All @@ -133,9 +136,10 @@ const templates: Template[] = [
</ul>
<div
v-if="template.status === 'available'"
class="flex items-center gap-3"
class="mt-auto flex items-center gap-3"
>
<Button
v-if="template.preview"
as-child
size="sm"
>
Expand All @@ -149,6 +153,7 @@ const templates: Template[] = [
</a>
</Button>
<Button
v-if="template.github"
as-child
variant="outline"
size="sm"
Expand Down
Binary file added public/templates/starter-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/templates/starter-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading