Astro
Build static sites with Ravenbright CSS & Astro. Check out the full demo on Ravenbright CSS Github repo.
View demoMake sure that you already have installed Node.js & npm CLI. read about this on npm official docs
Install Astro​
Step 1: create Astro project​
Create your folder & run this command bellow to follow the Astro built-in installation process on your CLI
npm create astro@latest
Step 2: run the Astro project​
After it's finished, access the project folder & type npm run dev
to start the server
cd project
npm run dev
Step 3: understand Astro files & directory structure​
src/*
- The folder which contains components, CSS, layout & Astro pagespublic/*
- The folder which contains static & unprocessed assets (images, favicon, etc)astro.config.mjs
- Astro config filetsconfig.json
- TypeScript config file
├── src/
│ ├── components/
│ │ └── Header.astro
│ ├── layouts/
│ │ └── Layout.astro
│ └── pages/
│ │ └── index.astro
│ └── styles/
│ └── global.css
├── public/
│ ├── robots.txt
├── astro.config.mjs
├── package.json
└── tsconfig.json
Global CSS​
Step 1: download or install Ravenbright​
Quickly download Ravenbright source code & copy the CSS into your project folder.
Download source codeor run this command below:
npm install ravenbrightcss --save
Step 2: create the CSS folder​
Create a new src/styles
directory and put Ravenbright CSS file into your project directory.
Step 3: import Ravenbright CSS​
Open Layout.astro
file which located src/layouts/
. Then, import Ravenbright CSS variables
file with the following content:
---
import '../styles/dist/ravenbright.min.css';
---
<html>
<!-- Your page here -->
</html>
Step 4: start using Ravenbright utility classes, components or CSS variables​
Open index.js located in src/pages/
. Then write the following content:
---
import Layout from "../layouts/Layout.astro";
---
<Layout>
<main>
<section class="xs-p-y-16 md-p-y-28 bg-gray-50 dark-bg-gray-900">
<div class="container container-xl">
<div class="split-screen items-center">
<div class="flex flex-column xs-m-b-8 md-m-b-0 md-m-r-8 md-width-50">
<h2 class="m-b-6 font-semibold">
Focus on the business & the users
</h2>
<!--advantages-->
<div class="flex flex-column m-b-8">
<div class="flex items-center m-b-4">
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="ai ai-Check m-r-3 color-blue-600 dark-color-blue-300"
>
<title>Agency case study blog item icon</title>
<path d="M4 12l6 6L20 6"></path>
</svg>
<p>
Start from user research to bring the best product experience
</p>
</div>
<div class="flex items-center m-b-4">
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="ai ai-Check m-r-3 color-blue-600 dark-color-blue-300"
>
<path d="M4 12l6 6L20 6"></path>
</svg>
<p>
Continuously work together with CLIents to deliver satisfying
results
</p>
</div>
<div class="flex items-center">
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="22"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="ai ai-Check m-r-3 color-blue-600 dark-color-blue-300"
>
<title>Agency case study blog item icon</title>
<path d="M4 12l6 6L20 6"></path>
</svg>
<p>
Group of skilled designers & developers without bureaucratic
hurdles
</p>
</div>
</div>
<a
href="#0"
class="btn dark-bg-blue-500 btn-lg shadow-lg"
role="button"
aria-label="Download Astro template"
>
Download Astro template
</a>
</div>
<img
class="border-radius-md m-b-6 md-width-50 height-100"
src="https://images.unsplash.com/photo-1543269865-cbf427effbad?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxjb2xsZWN0aW9uLXBhZ2V8N3xONWRTdW9qMU9GTXx8ZW58MHx8fHw%3D&auto=format&fit=crop&w=560&q=60"
loading="lazy"
width="560"
alt="Business & work -
Unsplash image by @brookecagle -
https://unsplash.com/photos/-uHVRvDr7pg"
/>
</div>
</div>
</section>
</main>
</Layout>
🎉 It's a wrap! You can check the new section built with Ravenbright in http:localhost://3000
👈 to see the updates.
Component-based CSS​
In this tutorial, we want to create a button component using Ravenbright CSS library in Astro.
Step 1: create button component​
Create a new button.astro
component in src/components/
.
---
export interface Props {
href: string;
text: string;
}
const { href, text } = Astro.props;
---
<a class="btn w-fit" role="button" href="{href}"> {text} </a>
Step 2: write the CSS inside the component​
Write the CSS inside <style>
tag in button.astro
. Put Ravenbright CSS variables, components, or utility classes inside <style>
tag
<style>
.btn {
--rbrh-green-700: #007c32;
--rbrh-spacing-4: 0.75rem;
--rbrh-spacing-5: 1rem;
--rbrh-radius-md: 0.75rem;
--rbrh-radius-sm: 0.5rem;
--rbrh-radius-xs: 0.25rem;
--rbrh-shadow-xs: 0 0.125rem 0.625rem -0.375rem rgba(0, 0, 0, 0.1), 0px
0.25rem 0.75rem -0.125rem rgba(0, 0, 0, 0.1);
background: var(--rbrh-green-700);
color: white;
border-radius: var(--rbrh-radius-sm);
box-shadow: var(--rbrh-shadow-xs);
padding: var(--rbrh-spacing-4) var(--rbrh-spacing-5);
text-decoration: none;
margin: var(--rbrh-spacing-4) 0;
}
.w-fit {
width: fit-content;
}
.w-100 {
width: 100%;
}
</style>
Step 3: import button into index.js
​
Open index.js
which located in src/pages/
then import the button component & it's done 🥳.
---
import Button from '../components/Button.astro';
---
<Layout title="Welcome to Astro.">
<main>
<Button href="https://Ravenbrightcss.com" text="Get started with Ravenbright CSS" />
</main>
</Layout>
Check the new button built with Ravenbright CSS in http:localhost://3000
👈 to see the updates.