From f6f484e67d1892c16686f8e2a66294e74ec4bf74 Mon Sep 17 00:00:00 2001 From: Surjith S M Date: Thu, 3 Nov 2022 21:47:36 +0530 Subject: [PATCH] hero section --- README.md | 91 ++++++++++++++++++++------- astro.config.mjs | 5 +- package.json | 2 + pnpm-lock.yaml | 47 ++++++++++++++ src/assets/hero.avif | Bin 0 -> 23913 bytes src/components/hero.astro | 30 +++++++++ src/components/navbar/dropdown.astro | 52 ++++++++------- src/components/navbar/navbar.astro | 76 +++++++++++++--------- src/components/ui/button.astro | 9 +++ src/components/ui/link.astro | 31 +++++++++ src/layouts/Layout.astro | 10 ++- src/pages/index.astro | 80 ++--------------------- tailwind.config.cjs | 17 +++-- 13 files changed, 294 insertions(+), 156 deletions(-) create mode 100644 src/assets/hero.avif create mode 100644 src/components/hero.astro create mode 100644 src/components/ui/button.astro create mode 100644 src/components/ui/link.astro diff --git a/README.md b/README.md index bea6349..b012a8b 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,94 @@ -# Welcome to [Astro](https://astro.build) +# Astroship Starter Template 🛸 -[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics) +Astroship is a starter template for startups, marketing websites & landing pages. Built with Astro, TailwindCSS & Alpine.js -> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! +[Image] -![basics](https://user-images.githubusercontent.com/4677417/186188965-73453154-fdec-4d6b-9c34-cb35c248ae5b.png) +## Installation +If you are reading this on github, you can click on the "Use this template" button above to create a new repository from astroship to your account. Then you can do a `git clone` to clone it to your local system. -## 🚀 Project Structure +Alternatively, you can clone the project directly from this repo to your local system. + +### 1. Clone the repo + +```bash +git clone https://github.com/surjithctly/astroship.git myProjectName +# or +git clone https://github.com/surjithctly/astroship.git . +``` + +The `.` will clone it to the current directory so make sure you are inside your project folder first. + +### 2. Install Dependencies + +```bash +npm install +# or +yarn install +# or (recommended) +pnpm install +``` + +### 3. Start development Server + +```bash +npm run dev +# or +yarn dev +# or (recommended) +pnpm dev +``` + +### Preview & Build + +```bash +npm run preview +npm run build +# or +yarn preview +yarn build +# or (recommended) +pnpm preview +pnpm build +``` + +We recommend using [pnpm](https://pnpm.io/) so save disk space on your computer. + +### Other Commands + +```bash +pnpm astro ... +pnpm astro add +pnpm astro --help +``` + +## Project Structure Inside of your Astro project, you'll see the following folders and files: ``` / ├── public/ -│ └── favicon.svg +│ └── ... ├── src/ │ ├── components/ -│ │ └── Card.astro +│ │ └── ... │ ├── layouts/ -│ │ └── Layout.astro +│ │ └── ... │ └── pages/ -│ └── index.astro +│ └── ... └── package.json ``` Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. -There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. - Any static assets, like images, can be placed in the `public/` directory. -## 🧞 Commands +## TailwindCSS & Alpine.js -All commands are run from the root of the project, from a terminal: - -| Command | Action | -| :--------------------- | :------------------------------------------------- | -| `npm install` | Installs dependencies | -| `npm run dev` | Starts local dev server at `localhost:3000` | -| `npm run build` | Build your production site to `./dist/` | -| `npm run preview` | Preview your build locally, before deploying | -| `npm run astro ...` | Run CLI commands like `astro add`, `astro preview` | -| `npm run astro --help` | Get help using the Astro CLI | +TailwindCSS & Alpine.js are already configured in this repo, so you can start using them without any installation. ## 👀 Want to learn more? -Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). +Feel free to check out [Astro Documentation](https://docs.astro.build) or jump into our [Discord Chat](https://web3templates.com/discord). diff --git a/astro.config.mjs b/astro.config.mjs index 3c1bbe1..eae6f38 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -6,7 +6,10 @@ import tailwind from "@astrojs/tailwind"; // https://astro.build/config import alpinejs from "@astrojs/alpinejs"; +// https://astro.build/config +import image from "@astrojs/image"; + // https://astro.build/config export default defineConfig({ - integrations: [tailwind(), alpinejs()] + integrations: [tailwind(), alpinejs(), image()] }); \ No newline at end of file diff --git a/package.json b/package.json index 3e6e8b7..79b5001 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,9 @@ }, "dependencies": { "@astrojs/alpinejs": "^0.1.2", + "@astrojs/image": "^0.11.0", "@astrojs/tailwind": "^2.1.1", + "@fontsource/inter": "^4.5.14", "@types/alpinejs": "^3.0.0", "alpinejs": "^3.0.0", "astro": "^1.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7bdead..0277d7e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,7 +2,9 @@ lockfileVersion: 5.4 specifiers: '@astrojs/alpinejs': ^0.1.2 + '@astrojs/image': ^0.11.0 '@astrojs/tailwind': ^2.1.1 + '@fontsource/inter': ^4.5.14 '@types/alpinejs': ^3.0.0 alpinejs: ^3.0.0 astro: ^1.6.0 @@ -10,7 +12,9 @@ specifiers: dependencies: '@astrojs/alpinejs': 0.1.2_epas4sveda2fzipjieohqzpxgq + '@astrojs/image': 0.11.0 '@astrojs/tailwind': 2.1.1_tailwindcss@3.2.1 + '@fontsource/inter': 4.5.14 '@types/alpinejs': 3.7.1 alpinejs: 3.10.5 astro: 1.6.2 @@ -18,6 +22,10 @@ dependencies: packages: + /@altano/tiny-async-pool/1.0.2: + resolution: {integrity: sha512-qQzaI0TBUPdpjZ3qo5b2ziQY9MSNpbziH2ZrE5lvtUZL+kn9GwVuVJwoOubaoNkeDB+rqEefnpu1k+oMpOCYiw==} + dev: false + /@ampproject/remapping/2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -44,6 +52,23 @@ packages: resolution: {integrity: sha512-D4qKnSQcOF32LgskeGnzq35N30yrITgrSaQrt/EIPU6ItcgcUr/K1BG07JCZdc+4mbfWF6RFQc7yPP9pS8Sg8w==} dev: false + /@astrojs/image/0.11.0: + resolution: {integrity: sha512-cWmqig0t4ndb+4v4YwuKJObpU9zWOVsNdEmvoEPPJUgtrrJzaxJYSRBe+pbvjP0xe+cQIk6fOKAq5lchK8VBzQ==} + peerDependencies: + sharp: '>=0.31.0' + peerDependenciesMeta: + sharp: + optional: true + dependencies: + '@altano/tiny-async-pool': 1.0.2 + http-cache-semantics: 4.1.0 + image-size: 1.0.2 + kleur: 4.1.5 + magic-string: 0.25.9 + mime: 3.0.0 + slash: 4.0.0 + dev: false + /@astrojs/language-server/0.26.2: resolution: {integrity: sha512-9nkfdd6CMXLDIJojnwbYu5XrYfOI+g63JlktOlpFCwFjFNpm1u0e/+pXXmj6Zs+PkSTo0kV1UM77dRKRS5OC1Q==} hasBin: true @@ -420,6 +445,10 @@ packages: dev: false optional: true + /@fontsource/inter/4.5.14: + resolution: {integrity: sha512-JDC9AocdPLuGsASkvWw9hS5gtHE7K9dOwL98XLrk5yjYqxy4uVnScG58NUvFMJDVJRl/7c8Wnap6PEs+7Zvj1Q==} + dev: false + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -1980,6 +2009,10 @@ packages: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} dev: false + /http-cache-semantics/4.1.0: + resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + dev: false + /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} @@ -1989,6 +2022,14 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false + /image-size/1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + queue: 6.0.2 + dev: false + /import-meta-resolve/2.1.0: resolution: {integrity: sha512-yG9pxkWJVTy4cmRsNWE3ztFdtFuYIV8G4N+cbCkO8b+qngkLyIUhxQFuZ0qJm67+0nUOxjMPT7nfksPKza1v2g==} dev: false @@ -3040,6 +3081,12 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false + /queue/6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: false + /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} diff --git a/src/assets/hero.avif b/src/assets/hero.avif new file mode 100644 index 0000000000000000000000000000000000000000..634d3fd86209570f65b5abbc1903f6580670cafb GIT binary patch literal 23913 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 +
+

+ Marketing website done with Astro +

+

+ Astroship is a starter template for startups, marketing websites & landing + pages. Built with Astro.build, TailwindCSS & Alpine.js. You can quickly + create any website with this starter. +

+
+ Get Started + View Repo +
+
+
+ +
+ diff --git a/src/components/navbar/dropdown.astro b/src/components/navbar/dropdown.astro index a90ee86..0a75a3e 100644 --- a/src/components/navbar/dropdown.astro +++ b/src/components/navbar/dropdown.astro @@ -1,32 +1,42 @@ --- -const { title, children } = Astro.props; +const { title, lastItem, children } = Astro.props; --- -
-
-
- {children.map((item) =>
{item.title}
)} + class:list={[ + "lg:absolute w-full lg:w-48", + lastItem ? "lg:right-0 origin-top-right" : "lg:left-0 origin-top-left", + ]}> +
+ { + children.map((item) => ( + + {item.title} + + )) + }
-
+ diff --git a/src/components/navbar/navbar.astro b/src/components/navbar/navbar.astro index dd51c33..182c131 100644 --- a/src/components/navbar/navbar.astro +++ b/src/components/navbar/navbar.astro @@ -1,5 +1,6 @@ --- import Container from "@components/container.astro"; +import Link from "@components/ui/link.astro"; import Dropdown from "./dropdown.astro"; const menuitems = [ @@ -25,41 +26,23 @@ const menuitems = [ path: "/blog", }, { - title: "Resources", - path: "#", - children: [ - { title: "Action", path: "#" }, - { title: "Another action", path: "#" }, - { title: "Dropdown Submenu", path: "#" }, - ], + title: "Contact", + path: "/contact", }, ]; ---
-
Astroship
- -
+
+ Astroship +
-
login +
+
+ +
+
diff --git a/src/components/ui/button.astro b/src/components/ui/button.astro new file mode 100644 index 0000000..07c0252 --- /dev/null +++ b/src/components/ui/button.astro @@ -0,0 +1,9 @@ +--- +const { ...rest } = Astro.props; +--- + + diff --git a/src/components/ui/link.astro b/src/components/ui/link.astro new file mode 100644 index 0000000..dedc99d --- /dev/null +++ b/src/components/ui/link.astro @@ -0,0 +1,31 @@ +--- +const { + href, + size = "lg", + style = "primary", + class: className, + ...rest +} = Astro.props; + +const sizes = { + lg: "px-5 py-2.5", +}; + +const styles = { + outline: "border-2 border-black hover:bg-black text-black hover:text-white", + primary: + "bg-black text-white hover:bg-slate-900 border-2 border-transparent", +}; +--- + + + diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 604e89c..2416e34 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,6 +1,8 @@ --- import Navbar from "@components/navbar/navbar.astro"; +import "@fontsource/inter/variable.css"; + export interface Props { title: string; } @@ -21,11 +23,15 @@ const { title } = Astro.props; diff --git a/src/pages/index.astro b/src/pages/index.astro index 719b2a2..ba18eab 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,82 +1,12 @@ --- import Card from "@components/Card.astro"; +import Container from "@components/container.astro"; +import Hero from "@components/hero.astro"; import Layout from "@layouts/Layout.astro"; --- -
-

Welcome to Astro

-

- To get started, open the directory src/pages in your project.
- Code Challenge: Tweak the "Welcome to Astro" message above. -

- -
+ + +
- - diff --git a/tailwind.config.cjs b/tailwind.config.cjs index f5368a7..da168f7 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -1,8 +1,13 @@ /** @type {import('tailwindcss').Config} */ +const defaultTheme = require("tailwindcss/defaultTheme"); module.exports = { - content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], - theme: { - extend: {}, - }, - plugins: [], -} + content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], + theme: { + extend: { + fontFamily: { + sans: ["Inter", ...defaultTheme.fontFamily.sans], + }, + }, + }, + plugins: [], +};