5 KiB
5 KiB
Getting Started with Blueprint
Installation
- Clone the repository:
git clone https://github.com/yourusername/blueprint.git
cd blueprint
- Install dependencies:
npm install
- Create your first Blueprint file:
mkdir src
touch src/index.bp
Basic Usage
Blueprint uses a declarative syntax to define UI components. Each file with a .bp
extension will be compiled into HTML and CSS.
Basic Structure
A Blueprint file consists of elements, which can have properties and children. Properties can be flags or key-value pairs:
element(flag1, key:value) {
child-element {
// Content
}
}
Property Types
Blueprint supports several types of properties:
-
Flag Properties
button(bold, centered) { "Text" }
-
Key-Value Properties
input(type:email, placeholder:"Enter email")
-
Numeric Properties
section(width:80, padding:20)
-
Color Properties
text(color:#ff0000) { "Red text" }
Page Configuration
Every Blueprint page can have metadata defined using the page
element:
page {
title { "My Page Title" }
description { "Page description for SEO" }
keywords { "keyword1, keyword2, keyword3" }
author { "Author Name" }
meta-viewport { "width=device-width, initial-scale=1" }
}
Available page metadata:
title
: Page title (appears in browser tab)description
: Meta description for SEOkeywords
: Meta keywords for SEOauthor
: Page authormeta-*
: Custom meta tags (e.g., meta-viewport, meta-robots)
Basic Layout
A typical page structure:
page {
title { "My First Page" }
description { "A simple Blueprint page" }
meta-viewport { "width=device-width, initial-scale=1" }
}
navbar {
horizontal(spaced) {
text(bold) { "My App" }
links {
link(href:/) { "Home" }
link(href:/about) { "About" }
link(href:/contact) { "Contact" }
}
}
}
section(wide, centered) {
vertical(gap:2) {
title(huge) { "Welcome to Blueprint" }
text(subtle) { "Start building beautiful UIs with Blueprint" }
horizontal(centered, gap:2) {
button { "Get Started" }
button-light { "Learn More" }
}
}
}
section(wide) {
grid(columns:3) {
card {
title { "Feature 1" }
text { "Description of feature 1" }
button-secondary { "Learn More" }
}
card {
title { "Feature 2" }
text { "Description of feature 2" }
button-secondary { "Learn More" }
}
card {
title { "Feature 3" }
text { "Description of feature 3" }
button-secondary { "Learn More" }
}
}
}
Project Structure
A typical Blueprint project has the following structure:
my-blueprint-project/
├── src/ # Source Blueprint files
│ ├── index.bp # Main page
│ ├── about.bp # About page
│ └── contact.bp # Contact page
├── public/ # Static assets
│ ├── images/ # Image files
│ ├── fonts/ # Font files
│ └── favicon.ico # Favicon
├── dist/ # Generated files (auto-generated)
│ ├── index.html # Compiled HTML
│ ├── index.css # Generated CSS
│ └── ...
└── package.json # Project configuration
Error Handling
Blueprint provides helpful error messages when something goes wrong:
BlueprintError at line 5, column 10:
Unknown element type: invalid-element
Common errors include:
- Missing closing braces
- Unknown element types
- Invalid property values
- Unterminated strings
- Missing required properties
- Invalid color values
- Invalid numeric values
Best Practices
-
Organization
- Group related elements logically
- Use consistent spacing and indentation
- Keep files focused on a single purpose
- Split large files into components
-
Naming
- Use descriptive names for links and sections
- Follow a consistent naming convention
- Use semantic element names
-
Layout
- Use semantic elements (
section
,navbar
, etc.) - Leverage the grid system for responsive layouts
- Use appropriate spacing with
gap
property - Use
width
andpadding
for fine-tuned control
- Use semantic elements (
-
Styling
- Use predefined style properties when possible
- Group related styles together
- Keep styling consistent across pages
- Use custom properties sparingly
-
Performance
- Keep files small and focused
- Use appropriate image formats and sizes
- Minimize custom styles
- Leverage built-in responsive features
Next Steps
- Explore available components
- Learn about styling
- Check out examples
- Read about advanced features in the component documentation