RIOTS",
+ "image": "/src/content/showcase/_images/divriots.png",
+ "url": "https://divriots.com/",
+ "featured": 3
+}
diff --git a/src/content/showcase/firebase-blog.json b/src/content/showcase/firebase-blog.json
new file mode 100644
index 0000000..231d293
--- /dev/null
+++ b/src/content/showcase/firebase-blog.json
@@ -0,0 +1,6 @@
+{
+ "title": "The Firebase Blog",
+ "image": "/src/content/showcase/_images/firebase-blog.png",
+ "url": "https://firebase.blog/",
+ "featured": 5
+}
diff --git a/src/content/showcase/polinations.json b/src/content/showcase/polinations.json
new file mode 100644
index 0000000..2984b5b
--- /dev/null
+++ b/src/content/showcase/polinations.json
@@ -0,0 +1,6 @@
+{
+ "title": "PoliNations",
+ "image": "/src/content/showcase/_images/polinations.png",
+ "url": "https://polinations.com/",
+ "featured": 1
+}
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 0000000..acef35f
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/src/icons/frameworks/lit.svg b/src/icons/frameworks/lit.svg
new file mode 100644
index 0000000..c6d4664
--- /dev/null
+++ b/src/icons/frameworks/lit.svg
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/src/icons/frameworks/preact.svg b/src/icons/frameworks/preact.svg
new file mode 100644
index 0000000..2a7ff8a
--- /dev/null
+++ b/src/icons/frameworks/preact.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
diff --git a/src/icons/frameworks/react.svg b/src/icons/frameworks/react.svg
new file mode 100644
index 0000000..5be071b
--- /dev/null
+++ b/src/icons/frameworks/react.svg
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/src/icons/frameworks/solid.svg b/src/icons/frameworks/solid.svg
new file mode 100644
index 0000000..1b67aa5
--- /dev/null
+++ b/src/icons/frameworks/solid.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
diff --git a/src/icons/frameworks/svelte.svg b/src/icons/frameworks/svelte.svg
new file mode 100644
index 0000000..3f58eb1
--- /dev/null
+++ b/src/icons/frameworks/svelte.svg
@@ -0,0 +1,8 @@
+
+
+
diff --git a/src/icons/frameworks/vue.svg b/src/icons/frameworks/vue.svg
new file mode 100644
index 0000000..7992340
--- /dev/null
+++ b/src/icons/frameworks/vue.svg
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/src/icons/logomark.svg b/src/icons/logomark.svg
new file mode 100755
index 0000000..ef27b34
--- /dev/null
+++ b/src/icons/logomark.svg
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/src/icons/platforms/netlify.svg b/src/icons/platforms/netlify.svg
new file mode 100755
index 0000000..ab87ac4
--- /dev/null
+++ b/src/icons/platforms/netlify.svg
@@ -0,0 +1,6 @@
+
+
+
diff --git a/src/icons/platforms/render.svg b/src/icons/platforms/render.svg
new file mode 100755
index 0000000..8dab054
--- /dev/null
+++ b/src/icons/platforms/render.svg
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/icons/platforms/vercel.svg b/src/icons/platforms/vercel.svg
new file mode 100755
index 0000000..495956d
--- /dev/null
+++ b/src/icons/platforms/vercel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/icons/wordmark.svg b/src/icons/wordmark.svg
new file mode 100755
index 0000000..8be72d0
--- /dev/null
+++ b/src/icons/wordmark.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
new file mode 100644
index 0000000..c6162e3
--- /dev/null
+++ b/src/pages/index.astro
@@ -0,0 +1,74 @@
+---
+import "@fontsource-variable/inter";
+import Compatibility from "~/components/compatibility.astro";
+import Features from "~/components/features.astro";
+import Footer from "~/components/footer.astro";
+import Header from "~/components/header.astro";
+import Intro from "~/components/intro.astro";
+import Showcase from "~/components/showcase.astro";
+import Splash from "~/components/splash.astro";
+import "~/styles/index.css";
+
+const { generator, site } = Astro;
+const image = new URL("social.jpg", site);
+const description =
+ "Build fast websites, faster. Astro is a new kind of site builder for the modern web. Lightning-fast performance meets powerful developer experience.";
+---
+
+
+
+
+
+
+
+
+
+
Astro Landing Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/styles/global.css b/src/styles/global.css
new file mode 100644
index 0000000..41ed353
--- /dev/null
+++ b/src/styles/global.css
@@ -0,0 +1,12 @@
+/* TODO: consider creating
and components */
+a,
+.btn {
+ @apply transition-colors duration-200;
+ @apply hover:text-secondary;
+ @apply focus:outline-none focus:ring-2 focus:ring-secondary focus:ring-offset-2 focus:ring-offset-transparent;
+}
+
+.gradient-text {
+ @apply bg-clip-text text-transparent;
+ @apply bg-gradient-to-br from-indigo-500 via-fuchsia-500 to-pink-500;
+}
diff --git a/src/styles/index.css b/src/styles/index.css
new file mode 100644
index 0000000..dd04240
--- /dev/null
+++ b/src/styles/index.css
@@ -0,0 +1,2 @@
+@import "global.css";
+@import "theme.css";
diff --git a/src/styles/theme.css b/src/styles/theme.css
new file mode 100644
index 0000000..f7c1fef
--- /dev/null
+++ b/src/styles/theme.css
@@ -0,0 +1,19 @@
+[data-theme="light"] {
+ --color-primary: theme("colors.pink.500");
+ --color-secondary: theme("colors.indigo.500");
+ --color-text: theme("colors.gray.900");
+ --color-text-offset: theme("colors.gray.600");
+ --color-background: theme("colors.gray.50");
+ --color-background-offset: theme("colors.gray.100");
+ --color-border: theme("colors.gray.900" / 10%);
+}
+
+[data-theme="dark"] {
+ --color-primary: theme("colors.pink.400");
+ --color-secondary: theme("colors.indigo.400");
+ --color-text: theme("colors.gray.50");
+ --color-text-offset: theme("colors.gray.400");
+ --color-background: theme("colors.gray.900");
+ --color-background-offset: theme("colors.gray.800");
+ --color-border: theme("colors.gray.50" / 10%);
+}
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 0000000..9984c91
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,22 @@
+export interface CompatibilityItem {
+ icon: string;
+ title: string;
+ url: string;
+}
+
+export interface FeatureItem {
+ description: string;
+ icon: string;
+ title: string;
+}
+
+export interface FooterLink {
+ description: string;
+ icon: string;
+ url: string;
+}
+
+export interface NavItem {
+ title: string;
+ url: string;
+}
diff --git a/tailwind.config.cjs b/tailwind.config.cjs
new file mode 100644
index 0000000..c1fd6e1
--- /dev/null
+++ b/tailwind.config.cjs
@@ -0,0 +1,31 @@
+const defaultTheme = require("tailwindcss/defaultTheme");
+
+module.exports = {
+ content: ["./src/**/*.{astro,html,js,jsx,svelte,ts,tsx,vue}"],
+ theme: {
+ extend: {
+ fontFamily: {
+ sans: ["Inter Variable", ...defaultTheme.fontFamily.sans],
+ },
+ colors: {
+ primary: "var(--color-primary)",
+ secondary: "var(--color-secondary)",
+ },
+ textColor: {
+ default: "var(--color-text)",
+ offset: "var(--color-text-offset)",
+ },
+ backgroundColor: {
+ default: "var(--color-background)",
+ offset: "var(--color-background-offset)",
+ },
+ borderColor: {
+ default: "var(--color-border)",
+ },
+ },
+ },
+ corePlugins: {
+ fontSize: false,
+ },
+ plugins: [require("tailwindcss-fluid-type")],
+};
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..24c8682
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "astro/tsconfigs/strict",
+ "compilerOptions": {
+ // Alias `src` to `~`
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["src/*"]
+ }
+ }
+}