Add the pricing example
This commit is contained in:
parent
7ca7f79f22
commit
44bac43b1c
|
@ -1,21 +1,29 @@
|
|||
---
|
||||
interface Props {
|
||||
inverted: boolean;
|
||||
shape: "square" | "rounded";
|
||||
size?: "large";
|
||||
text: string;
|
||||
type: "primary" | "secondary";
|
||||
}
|
||||
|
||||
const { shape, text, type } = Astro.props as Props;
|
||||
const { inverted, shape, size, text, type } = Astro.props as Props;
|
||||
---
|
||||
|
||||
<a
|
||||
class:list={[
|
||||
"text-lg py-2 px-5 transition-colors ease-in-out duration-200",
|
||||
"block border transition-colors ease-in-out duration-200",
|
||||
{
|
||||
"bg-blue-500 text-white hocus:bg-blue-600": type == "primary",
|
||||
"bg-gray-500 text-white hocus:bg-gray-600": type == "secondary",
|
||||
"bg-blue-500 border-blue-500 text-white hocus:bg-blue-600 hocus:text-white":
|
||||
type == "primary" && !inverted,
|
||||
"bg-white border-blue-500 text-blue-600 hocus:bg-blue-600 hocus:text-white":
|
||||
type == "primary" && inverted,
|
||||
"bg-gray-500 text-white hocus:bg-gray-600 hocus:text-white":
|
||||
type == "secondary",
|
||||
"rounded-md": shape == "rounded",
|
||||
"rounded-none": shape == "square",
|
||||
"py-3 px-5 text-xl": size == "large",
|
||||
"py-2 px-5 text-lg": size !== "large",
|
||||
},
|
||||
]}
|
||||
href="#0"
|
||||
|
|
|
@ -10,7 +10,7 @@ export const name = 'Album';
|
|||
---
|
||||
|
||||
<BaseLayout title={name}>
|
||||
<Navbar title="Album" />
|
||||
<Navbar title={name} />
|
||||
|
||||
<Jumbotron title="Album example">
|
||||
<p class="text-base leading-relaxed text-gray-500 sm:text-lg">
|
||||
|
|
|
@ -4,7 +4,8 @@ import BaseLayout from "../layouts/BaseLayout.astro";
|
|||
const title = "Bootstrap examples with Tailwind CSS"
|
||||
|
||||
const examples = [
|
||||
{ title: "Album", url: "/album" }
|
||||
{ title: "Album", url: "/album" },
|
||||
{ title: "Pricing", url: "/pricing" },
|
||||
]
|
||||
---
|
||||
|
||||
|
|
114
src/pages/pricing.astro
Normal file
114
src/pages/pricing.astro
Normal file
|
@ -0,0 +1,114 @@
|
|||
---
|
||||
import BaseLayout from "../layouts/BaseLayout.astro";
|
||||
import Button from "../components/Button.astro";
|
||||
|
||||
interface Price {
|
||||
button: {
|
||||
text: string;
|
||||
};
|
||||
features: string[];
|
||||
name: string;
|
||||
price: number;
|
||||
}
|
||||
|
||||
export const name = "Pricing";
|
||||
export const prices: Price[] = [
|
||||
{
|
||||
name: "Full",
|
||||
price: 0,
|
||||
features: [
|
||||
"10 users included",
|
||||
"2 GB of storage",
|
||||
"Email support",
|
||||
"Help center access",
|
||||
],
|
||||
button: {
|
||||
text: "Sign up for free",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Pro",
|
||||
price: 15,
|
||||
features: [
|
||||
"20 users included",
|
||||
"10 GB of storage",
|
||||
"Priority email support",
|
||||
"Help center access",
|
||||
],
|
||||
button: {
|
||||
text: "Get started",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Enterprise",
|
||||
price: 29,
|
||||
features: [
|
||||
"30 users included",
|
||||
"15 GB of storage",
|
||||
"Phone and email support",
|
||||
"Help center access",
|
||||
],
|
||||
button: {
|
||||
text: "Contact us",
|
||||
},
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<BaseLayout title={name}>
|
||||
<!-- <Navbar title={name} /> -->
|
||||
|
||||
<section class="mt-16">
|
||||
<div class="max-w-2xl mx-auto px-4 text-center">
|
||||
<h1 class="text-5xl">{name}</h1>
|
||||
<p class="mt-4 text-xl leading-relaxed">
|
||||
Quickly build an effective pricing table for your potential customers
|
||||
with this Bootstrap example. It's built with default Bootstrap
|
||||
components and utilities with little customization.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section
|
||||
class="max-w-5xl px-6 mt-8 mx-auto grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3"
|
||||
>
|
||||
{
|
||||
prices.map((price, i) => (
|
||||
<div class="max-w-sm w-full mx-auto border border-gray-300 overflow-hidden rounded-md shadow-md shadow-gray-200 text-center md:max-w-full">
|
||||
<h2 class="px-4 py-3 text-2xl border-b border-gray-300 bg-gray-100">
|
||||
{price.name}
|
||||
</h2>
|
||||
|
||||
<div class="p-6">
|
||||
<p>
|
||||
<span class="text-4xl">${price.price}</span>
|
||||
<span class="ml-1 text-3xl text-gray-600">
|
||||
/ mo<span class="sr-only">nth</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<div class="mt-5">
|
||||
<h3 class="sr-only">Features</h3>
|
||||
|
||||
<ul class="space-y-1">
|
||||
{price.features.map((feature) => (
|
||||
<li>{feature}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="mt-7">
|
||||
<Button
|
||||
inverted={i === 0}
|
||||
shape="rounded"
|
||||
size="large"
|
||||
text={price.button.text}
|
||||
type="primary"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
</section>
|
||||
</BaseLayout>
|
Loading…
Reference in a new issue