From 3ddbae83995ad3d1a366f0391b1e0de825759920 Mon Sep 17 00:00:00 2001 From: alexy-os Date: Mon, 25 Nov 2024 21:50:11 +0300 Subject: [PATCH] BuildY + --- README.md | 6 + buildy.config.js | 51 + index.html | 26 + package.json | 2 +- public/buildy/LICENSE | 21 + public/buildy/README.md | 139 +++ public/buildy/components/shadcn-uikit.json | 117 +++ .../buildy/components/shadcn-vue-example.js | 144 +++ .../components/tw.buildy.shadcn.config.json | 96 ++ public/buildy/css/quill.min.css | 1 + public/buildy/css/style.css | 42 + public/buildy/editor.html | 212 ++++ public/buildy/img/favicon.ico | Bin 0 -> 10462 bytes public/buildy/img/tbuildy.png | Bin 0 -> 553 bytes public/buildy/img/tbuildy.svg | 1 + public/buildy/index.html | 240 +++++ public/buildy/js/classes.js | 360 +++++++ public/buildy/js/default.js | 118 +++ public/buildy/js/editor.js | 1 + public/buildy/js/lib/lucide.min.js | 12 + public/buildy/js/lib/parser-html.js | 36 + public/buildy/js/lib/quill.js | 3 + public/buildy/js/lib/sortable.js | 2 + public/buildy/js/lib/standalone.js | 116 +++ public/buildy/js/lib/tailwind.js | 62 ++ public/buildy/js/script.js | 951 ++++++++++++++++++ section-collector.js | 360 +++++++ .../sections/navbar/MainNavigation.vue | 29 +- src/router/index.ts | 16 + 29 files changed, 3152 insertions(+), 12 deletions(-) create mode 100644 buildy.config.js create mode 100644 public/buildy/LICENSE create mode 100644 public/buildy/README.md create mode 100644 public/buildy/components/shadcn-uikit.json create mode 100644 public/buildy/components/shadcn-vue-example.js create mode 100644 public/buildy/components/tw.buildy.shadcn.config.json create mode 100644 public/buildy/css/quill.min.css create mode 100644 public/buildy/css/style.css create mode 100644 public/buildy/editor.html create mode 100644 public/buildy/img/favicon.ico create mode 100644 public/buildy/img/tbuildy.png create mode 100644 public/buildy/img/tbuildy.svg create mode 100644 public/buildy/index.html create mode 100644 public/buildy/js/classes.js create mode 100644 public/buildy/js/default.js create mode 100644 public/buildy/js/editor.js create mode 100644 public/buildy/js/lib/lucide.min.js create mode 100644 public/buildy/js/lib/parser-html.js create mode 100644 public/buildy/js/lib/quill.js create mode 100644 public/buildy/js/lib/sortable.js create mode 100644 public/buildy/js/lib/standalone.js create mode 100644 public/buildy/js/lib/tailwind.js create mode 100644 public/buildy/js/script.js create mode 100644 section-collector.js diff --git a/README.md b/README.md index fc940f0..e9e3910 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ A modern approach to building websites using Vue 3 + Shadcn UI in a BunJS environment. This starter kit provides a robust foundation for creating landing pages, multi-page applications, and reusable UI components with a utility-first CSS approach. +## πŸ“¦ NEW! Section Collector + +This version adds an experimental feature to add sections to the builder. +Click on the drop down menu in the top right corner. Click `Get UI Blocks` and add the blocks you like to the site-wide collection. Then click `Go to BuildY` to go into the builder and see the blocks ready to build pages. +If you want to continue browsing the site without the collector functionality, just click: `Default State`. + ## Page speed Google Lighthouse score 100% [Google Lighthouse score](https://pagespeed.web.dev/analysis/https-vue-uikit-shadcn-vercel-app/6a6ivry2d8?form_factor=desktop) diff --git a/buildy.config.js b/buildy.config.js new file mode 100644 index 0000000..061841b --- /dev/null +++ b/buildy.config.js @@ -0,0 +1,51 @@ +// Configuration +const CONFIG = { + // ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ настройки + storageKey: 'currentState', + + // Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ настройки + styles: { + section: { + highlight: 'bg-primary/20', // ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΊΠ° ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ + activeOpacity: '1', + inactiveOpacity: '0.5' + }, + menu: { + position: { top: '10px', right: '10px' }, + wrapper: ` + absolute z-50 p-2 rounded-lg shadow-lg + bg-background border border-border + dark:bg-slate-800 dark:border-slate-700 + flex gap-2 + `, + buttons: { + base: ` + inline-flex items-center justify-center + whitespace-nowrap rounded-md text-sm font-medium + ring-offset-background transition-colors + focus-visible:outline-none focus-visible:ring-2 + focus-visible:ring-ring focus-visible:ring-offset-2 + disabled:pointer-events-none disabled:opacity-50 + h-9 px-4 + `, + html: ` + bg-primary text-primary-foreground + hover:bg-primary/90 + `, + save: ` + border border-input bg-background + hover:bg-accent hover:text-accent-foreground + ` + } + } + }, + formatting: { + indentSize: 2, + maxLineLength: 1000, + preserveClassFormatting: true, + removeComments: false, + removeEmptyLines: false + } +}; + +export { CONFIG }; diff --git a/index.html b/index.html index 433cb09..6018950 100644 --- a/index.html +++ b/index.html @@ -24,6 +24,32 @@
+ diff --git a/package.json b/package.json index 38278bf..c084a2d 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "author": "Alexy-OS", "repository": "https://github.com/alexy-os/vue-shadcn-starter", "license": "MIT", - "version": "0.3.2", + "version": "0.3.3", "private": true, "scripts": { "dev": "vite", diff --git a/public/buildy/LICENSE b/public/buildy/LICENSE new file mode 100644 index 0000000..eb44a55 --- /dev/null +++ b/public/buildy/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 HinddY Open Source + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/public/buildy/README.md b/public/buildy/README.md new file mode 100644 index 0000000..e2a75c5 --- /dev/null +++ b/public/buildy/README.md @@ -0,0 +1,139 @@ +![buildy-min](https://github.com/user-attachments/assets/a51c6318-5cdc-4cd0-8b44-bff692d0782a) + +# TailwindCSS Layout Builder + +## Table of Contents +1. [Introduction](#introduction) +2. [Features](#features) +3. [Who Is This For?](#who-is-this-for) +4. [Getting Started](#getting-started) +5. [Usage Guide](#usage-guide) +6. [Latest Release Highlights](#latest-release-highlights) +7. [Roadmap](#roadmap) +8. [Join Our Community](#join-our-community) + +## Introduction + +Welcome to TailwindCSS Layout Builder, a powerful web-based tool designed to revolutionise your web development workflow. As part of the HinddY ecosystem, this builder empowers indie hackers, entrepreneurs, and web developers to create stunning, responsive layouts with unprecedented ease and speed. + +## Features + +- **Intuitive Drag-and-Drop Interface**: Effortlessly arrange and customise layout blocks. +- **Dark Mode Toggle**: Switch between light and dark themes for comfortable viewing. +- **Project Import/Export**: Save and load your projects using JSON files. +- **Clean HTML Export**: Generate deployment-ready HTML with a single click. +- **Customisable Tailwind Configuration**: Fine-tune your designs with custom Tailwind CSS settings. +- **In-line Block Editing**: Modify content directly within the layout. +- **Collapsible Sidebar**: Optimise your workspace for focused design work. +- **Mobile-Optimised Version**: Create and export designs on-the-go. +- **Intelligent Editor**: Enjoy element highlighting and automatic formatting removal. +- **Keyboard Shortcuts**: Boost productivity across Mac, Linux, and Windows platforms. +- **Unified Project Structure**: Manage all page properties in a single 'skeleton' array. +- **Reset Functionality**: Quickly revert to default settings for rapid experimentation. + +## Who Is This For? + +- **Indie Hackers**: Launch MVPs faster than ever before. +- **Startup Founders**: Test ideas without significant development investments. +- **Web Designers**: Create stunning layouts with minimal effort. +- **Entrepreneurs**: Bring your ideas to life, even without deep technical knowledge. + +## Getting Started + +1. Visit our website at [HinddY.com](https://www.hinddy.com). +2. Navigate to the TailwindCSS Layout Builder tool. +3. Start a new project or import an existing one. +4. Begin dragging and dropping blocks to create your layout. + +## Usage Guide + +1. **Initialising the Layout Builder**: + - On first load, default blocks and configurations are used. + - The builder initialises the block list, sidebar, and loads any saved state from localStorage. + +2. **Drag-and-Drop Blocks**: + - Drag blocks from the block list to the preview area. + - Reorder blocks within the preview area using drag-and-drop. + +3. **Editing Blocks**: + - Click the edit button on a block to open the content editing modal. + - Save changes to update the block content in the layout. + +4. **Using Dark Mode**: + - Toggle dark mode using the dedicated button. + - Your preference is saved in localStorage. + +5. **Project Import/Export**: + - Import a project by selecting a JSON file. + - Export your current project to a JSON file for safekeeping or sharing. + +6. **HTML Export**: + - Export your current layout as a clean HTML file, ready for deployment. + +7. **Custom Tailwind Configuration**: + - Edit the Tailwind CSS configuration using the provided textarea. + - Apply the configuration to update your layout's styling. + +## Latest Release Highlights + +Our latest release brings significant enhancements to streamline your workflow: + +- Fully optimised mobile version with direct HTML export. +- Revamped user interface for improved usability. +- Intelligent editor with element highlighting and automatic formatting removal. +- New keyboard shortcuts for increased productivity. +- Unified 'skeleton' array for streamlined project structure. +- Quick reset functionality for rapid prototyping. +- Comprehensive project import, including custom page skeletons and block sets. + +## Roadmap + +[BuildY real time](https://github.com/orgs/hinddy/projects/1) + +We're committed to continuous improvement. Here's what you can look forward to: + +- AI integration for automatic layout generation +- API for expanded functionality +- Showcase of ready-made design systems for instant application + +## Join Our Community + +HinddY isn't just a toolset; it's a thriving community of innovators and creators. We believe in the power of independent development and strive to provide you with everything you need for success. + +Join us in revolutionising web development. Your next big idea is just a drag and drop away! + +--- + +"From concept to launch, faster than ever. TailwindCSS Layout Builder: Where indie dreams become digital realities." + +[Try It Now](https://buildy-five.vercel.app/) | [Learn More](https://www.hinddy.com/) + +#BuildY #IndieHacking #WebDevelopment #TailwindCSS + +## Current Shadcn Vue Configuration + +We have temporarily hardcoded styles and configuration to work with Shadcn Vue UI Kit components ([@vue-shadcn-starter](https://github.com/alexy-os/vue-shadcn-starter)). + +### Component Location +- UI Kit components are located in: `components/shadcn-uikit.json` +- Component path is defined in `flow.html`: + +## Let's go! + +- Step 1: Go to [FlowKit](https://buildy-five.vercel.app/flow.html) and save components you like to local storage; +- Step 2: Go to [Builder](https://buildy-five.vercel.app/) and use saved components to build your UI; +- Step 3: Export your project as HTML file and use it as you want. + +```js +const componentsUrl = savedProject?.publicUrl || './components/shadcn-uikit.json'; +``` + +### Adding Components to Builder + +1. Open `/flow.html` page +2. Browse available components +3. Click "Save to Local Storage" button for desired components +4. Components will be saved to browser's local storage +5. Saved components will become available in the builder + +> **Note**: This is a temporary solution for quick start with Shadcn Vue components. Future versions will implement a more flexible system supporting various UI libraries. diff --git a/public/buildy/components/shadcn-uikit.json b/public/buildy/components/shadcn-uikit.json new file mode 100644 index 0000000..d88660e --- /dev/null +++ b/public/buildy/components/shadcn-uikit.json @@ -0,0 +1,117 @@ +{ + "vite_shadcn_vue_index": { + "title": "Vite Shadcn Vue Index", + "excerpt": " Build your next Landing Page with Shadcn Vue ", + "content": "

Build your next
Landing Page
with Shadcn Vue

Beautiful and accessible components that you can copy and paste into your apps.

" + }, + "vite_shadcn_vue_index (6)": { + "title": "Vite Shadcn Vue Index (6)", + "excerpt": "Building Modern Web Applications", + "content": "
\"Building\"Building
Development
2024-03-15

Building Modern Web Applications

Learn how to create scalable and maintainable web applications using the latest technologies.

Read more
\"The\"The
Technology
2024-03-14

The Future of AI

Exploring the latest advancements in artificial intelligence and machine learning.

Read more
\"Design\"Design
Design
2024-03-13

Design Systems Evolution

How design systems are changing the way we build and maintain user interfaces.

Read more
" + }, + "vite_shadcn_vue_index (6)_2": { + "title": "Vite Shadcn Vue Index (6)", + "excerpt": "Building Modern Web Applications", + "content": "
\"Building\"Building
Development
2024-03-15

Building Modern Web Applications

Learn how to create scalable and maintainable web applications using the latest technologies.

Read more
\"The\"The
Technology
2024-03-14

The Future of AI

Exploring the latest advancements in artificial intelligence and machine learning.

Read more
" + }, + "vite_shadcn_vue_index (6)_3": { + "title": "Vite Shadcn Vue Index (6)", + "excerpt": "Building Modern Web Applications", + "content": "
\"Building\"Building
Development
2024-03-15

Building Modern Web Applications

Learn how to create scalable and maintainable web applications using the latest technologies.

Read more
\"The\"The
Technology
2024-03-14

The Future of AI

Exploring the latest advancements in artificial intelligence and machine learning.

Read more
\"Design\"Design
Design
2024-03-13

Design Systems Evolution

How design systems are changing the way we build and maintain user interfaces.

Read more
" + }, + "vite_shadcn_vue_index (5)": { + "title": "Vite Shadcn Vue Index (5)", + "excerpt": "Powerful Analytics", + "content": "
Dashboard

Powerful Analytics

Get real-time insights into your business performance with our advanced analytics dashboard.

84%

Conversion Rate: this is a test

12.5k

Active Users: this is a test

\"Enterprise\"
" + }, + "vite_shadcn_vue_index (5)_2": { + "title": "Vite Shadcn Vue Index (5)", + "excerpt": "Basic Plan", + "content": "

Basic Plan

  • 5 Projects
  • Basic Analytics

Pro Plan

  • Unlimited Projects
  • Advanced Analytics

Choose Your Plan

Select the perfect plan for your needs. Upgrade or downgrade at any time.

No credit card required

" + }, + "vite_shadcn_vue_index (5)_3": { + "title": "Vite Shadcn Vue Index (5)", + "excerpt": "Short Description", + "content": "
Success Story
\"This platform has transformed how we handle our analytics. The insights we've gained are invaluable.\"
Jane Cooper
CEO at TechCorp
250%

ROI Increase

10x

Faster Analysis

24/7

Support

\"Product
" + }, + "vite_shadcn_vue_index (4)": { + "title": "Vite Shadcn Vue Index (4)", + "excerpt": "Transform Your Workflow", + "content": "
New Feature

Transform Your Workflow

Streamline your development process with our integrated tools and components.

\"This tool has completely changed how we work\"
\"Workflow\"
" + }, + "vite_shadcn_vue_index (4)_2": { + "title": "Vite Shadcn Vue Index (4)", + "excerpt": "Data-Driven Insights", + "content": "
\"Analytics\"

Data-Driven Insights

  • Real-time analytics
  • Custom reports
  • Team collaboration
" + }, + "vite_shadcn_vue_index (4)_3": { + "title": "Vite Shadcn Vue Index (4)", + "excerpt": "Enterprise Solutions", + "content": "
Premium

Enterprise Solutions

Scale your business with our enterprise-grade features and dedicated support.

24/7 Support

Always here to help

Custom Setup

Tailored to your needs

\"Enterprise\"
" + }, + "vite_shadcn_vue_index (3)": { + "title": "Vite Shadcn Vue Index (3)", + "excerpt": "50% Off for Early Birds", + "content": "
Limited Time Offer

50% Off for Early Birds

Join now and get exclusive access to premium features at half the price.

" + }, + "vite_shadcn_vue_index (3)_2": { + "title": "Vite Shadcn Vue Index (3)", + "excerpt": "Transform your workflow", + "content": "

Transform your workflow

Streamline your development process with our integrated tools and components.

\"Placeholder\"
" + }, + "vite_shadcn_vue_index (3)_3": { + "title": "Vite Shadcn Vue Index (3)", + "excerpt": "Transform your workflow", + "content": "
\"Placeholder\"

Transform your workflow

Streamline your development process with our integrated tools and components.

" + }, + "vite_shadcn_vue_index (3)_4": { + "title": "Vite Shadcn Vue Index (3)", + "excerpt": "Designed for Modern Teams", + "content": "

Designed for Modern Teams

Built with the latest technology stack to ensure maximum performance and scalability.

\"Abstract\"
" + }, + "vite_shadcn_vue_index (2)": { + "title": "Vite Shadcn Vue Index (2)", + "excerpt": "Transform Your Business with AI-Powered Solutions", + "content": "
New Release

Transform Your Business with AI-Powered Solutions

Leverage the power of artificial intelligence to streamline operations and boost productivity.

" + }, + "vite_shadcn_vue_index (2)_2": { + "title": "Vite Shadcn Vue Index (2)", + "excerpt": "50% Off for Early Birds", + "content": "
Limited Time Offer

50% Off for Early Birds

Join now and get exclusive access to premium features at half the price.

" + }, + "vite_shadcn_vue_index (2)_3": { + "title": "Vite Shadcn Vue Index (2)", + "excerpt": "Build the Future Today", + "content": "
\"Background\"

Build the Future Today

Join thousands of innovative companies already using our platform to grow their business.

" + }, + "vite_shadcn_vue_index (2)_4": { + "title": "Vite Shadcn Vue Index (2)", + "excerpt": "50% Off for Early Birds", + "content": "
Limited Time Offer

50% Off for Early Birds

Join now and get exclusive access to premium features at half the price.

" + }, + "vite_shadcn_vue_index (1)": { + "title": "Vite Shadcn Vue Index (1)", + "excerpt": "A better way to build your SaaS", + "content": "
New Features

A better way to build your SaaS

Create a landing page that converts visitors into customers with our easy-to-use builder.

" + }, + "vite_shadcn_vue_index (1)_2": { + "title": "Vite Shadcn Vue Index (1)", + "excerpt": "Transform your workflow", + "content": "

Transform your workflow

Streamline your development process with our integrated tools and components.

\"Placeholder\"
" + }, + "vite_shadcn_vue_index (1)_3": { + "title": "Vite Shadcn Vue Index (1)", + "excerpt": " Simple. Fast. Secure. ", + "content": "

Simple. Fast. Secure.

Everything you need to launch your next project.

" + }, + "vite_shadcn_vue_index (1)_4": { + "title": "Vite Shadcn Vue Index (1)", + "excerpt": "Transform your workflow", + "content": "
\"Placeholder\"

Transform your workflow

Streamline your development process with our integrated tools and components.

" + }, + "vite_shadcn_vue_index (1)_5": { + "title": "Vite Shadcn Vue Index (1)", + "excerpt": "Build the future", + "content": "
\"Placeholder\"

Build the future

Join thousands of developers building the next generation of web applications.

" + } + } \ No newline at end of file diff --git a/public/buildy/components/shadcn-vue-example.js b/public/buildy/components/shadcn-vue-example.js new file mode 100644 index 0000000..4ff1c85 --- /dev/null +++ b/public/buildy/components/shadcn-vue-example.js @@ -0,0 +1,144 @@ + +const tailwindConfig = { + darkMode: "class", + content: [], + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px" + } + }, + borderRadius: { + DEFAULT: "var(--radius)", + none: "0", + sm: "calc(var(--radius) - 4px)", + md: "calc(var(--radius) - 2px)", + lg: "var(--radius)", + xl: "calc(var(--radius) + 4px)", + "2xl": "calc(var(--radius) + 8px)", + full: "9999px", + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))" + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))" + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))" + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))" + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))" + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))" + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))" + } + }, + borderRadius: { + xl: "calc(var(--radius) + 4px)", + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)" + }, + keyframes: { + "accordion-down": { + from: { height: 0 }, + to: { height: "var(--radix-accordion-content-height)" } + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: 0 } + }, + "collapsible-down": { + from: { height: 0 }, + to: { height: "var(--radix-collapsible-content-height)" } + }, + "collapsible-up": { + from: { height: "var(--radix-collapsible-content-height)" }, + to: { height: 0 } + } + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + "collapsible-down": "collapsible-down 0.2s ease-in-out", + "collapsible-up": "collapsible-up 0.2s ease-in-out" + } + } + } +}; + +return ` + + +`; \ No newline at end of file diff --git a/public/buildy/components/tw.buildy.shadcn.config.json b/public/buildy/components/tw.buildy.shadcn.config.json new file mode 100644 index 0000000..4fd5ca3 --- /dev/null +++ b/public/buildy/components/tw.buildy.shadcn.config.json @@ -0,0 +1,96 @@ +{ + "darkMode": "class", + "content": [], + "theme": { + "container": { + "center": true, + "padding": "2rem", + "screens": { + "2xl": "1400px" + } + }, + "extend": { + "colors": { + "border": "hsl(var(--border))", + "input": "hsl(var(--input))", + "ring": "hsl(var(--ring))", + "background": "hsl(var(--background))", + "foreground": "hsl(var(--foreground))", + "primary": { + "DEFAULT": "hsl(var(--primary))", + "foreground": "hsl(var(--primary-foreground))" + }, + "secondary": { + "DEFAULT": "hsl(var(--secondary))", + "foreground": "hsl(var(--secondary-foreground))" + }, + "destructive": { + "DEFAULT": "hsl(var(--destructive))", + "foreground": "hsl(var(--destructive-foreground))" + }, + "muted": { + "DEFAULT": "hsl(var(--muted))", + "foreground": "hsl(var(--muted-foreground))" + }, + "accent": { + "DEFAULT": "hsl(var(--accent))", + "foreground": "hsl(var(--accent-foreground))" + }, + "popover": { + "DEFAULT": "hsl(var(--popover))", + "foreground": "hsl(var(--popover-foreground))" + }, + "card": { + "DEFAULT": "hsl(var(--card))", + "foreground": "hsl(var(--card-foreground))" + } + }, + "borderRadius": { + "xl": "calc(var(--radius) + 4px)", + "lg": "var(--radius)", + "md": "calc(var(--radius) - 2px)", + "sm": "calc(var(--radius) - 4px)" + }, + "keyframes": { + "accordion-down": { + "from": { + "height": 0 + }, + "to": { + "height": "var(--radix-accordion-content-height)" + } + }, + "accordion-up": { + "from": { + "height": "var(--radix-accordion-content-height)" + }, + "to": { + "height": 0 + } + }, + "collapsible-down": { + "from": { + "height": 0 + }, + "to": { + "height": "var(--radix-collapsible-content-height)" + } + }, + "collapsible-up": { + "from": { + "height": "var(--radix-collapsible-content-height)" + }, + "to": { + "height": 0 + } + } + }, + "animation": { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + "collapsible-down": "collapsible-down 0.2s ease-in-out", + "collapsible-up": "collapsible-up 0.2s ease-in-out" + } + } + } +} \ No newline at end of file diff --git a/public/buildy/css/quill.min.css b/public/buildy/css/quill.min.css new file mode 100644 index 0000000..57850cd --- /dev/null +++ b/public/buildy/css/quill.min.css @@ -0,0 +1 @@ +.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li::before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li::before{content:'\2022'}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li::before,.ql-editor ul[data-checked=false]>li::before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li::before{content:'\2611'}.ql-editor ul[data-checked=false]>li::before{content:'\2610'}.ql-editor li::before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl)::before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl::before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) '. '}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) '. '}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) '. '}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) '. '}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) '. '}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) '. '}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) '. '}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) '. '}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) '. '}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) '. '}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank::before{color:rgb(0 0 0 / .6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:'';display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow{box-sizing:border-box}.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:'';display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label::before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid #fff0;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label::before,.ql-snow .ql-picker.ql-header .ql-picker-item::before{content:'Normal'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before{content:'Heading 1'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{content:'Heading 2'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{content:'Heading 3'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before{content:'Heading 4'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before{content:'Heading 5'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before{content:'Heading 6'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label::before,.ql-snow .ql-picker.ql-font .ql-picker-item::before{content:'Sans Serif'}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{content:'Serif'}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{content:'Monospace'}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label::before,.ql-snow .ql-picker.ql-size .ql-picker-item::before{content:'Normal'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{content:'Small'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{content:'Large'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{content:'Huge'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:'Helvetica Neue','Helvetica','Arial',sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid #fff0}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid #fff0;box-shadow:rgb(0 0 0 / .2) 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label{border-color:#ccc}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip::before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action::after{border-right:1px solid #ccc;content:'Edit';margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove::before{content:'Remove';margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action::after{border-right:0;content:'Save';padding-right:0}.ql-snow .ql-tooltip[data-mode=link]::before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]::before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]::before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc} \ No newline at end of file diff --git a/public/buildy/css/style.css b/public/buildy/css/style.css new file mode 100644 index 0000000..e1d9e78 --- /dev/null +++ b/public/buildy/css/style.css @@ -0,0 +1,42 @@ +.sortable-ghost { + opacity: 0.5; + background: #c8ebfb; +} + +.tailwind-navigation-svg { + width: 20px; + height: 20px; +} + +*, +html * { + scrollbar-width: thin; + scrollbar-color: #0ea5e8 #bacbce; +} + +*::-webkit-scrollbar, +html *::-webkit-scrollbar { + height: 12px; + width: 12px; +} + +*::-webkit-scrollbar-track, +html *::-webkit-scrollbar-track { + background: #bacbce; +} + +*::-webkit-scrollbar-thumb, +html *::-webkit-scrollbar-thumb { + background-color: #0ea5e8; + border-radius: 5px; + border: 3px solid #bacbce; +} + +@media (max-width: 768px) { + #sidebar { + margin-left: -253px; + } + #preview { + margin-left: 0; + } + } \ No newline at end of file diff --git a/public/buildy/editor.html b/public/buildy/editor.html new file mode 100644 index 0000000..dff05c3 --- /dev/null +++ b/public/buildy/editor.html @@ -0,0 +1,212 @@ + + + + + + + Current Page Editor + + + + + + + + + + +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/public/buildy/img/favicon.ico b/public/buildy/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4480728f2e487050b770cad9d1260d875125d9db GIT binary patch literal 10462 zcmeHNF=!M)6#X%x1jJa`X~ZB3L5s+-vqvC8I&0IZSZEmwZ3I(93k&;*X~a$pnErM* zx*&*!SSuD@VK}d>@4B? z1id{&bd-od2u*YynYZ(F8lHe63<{}e@XuiJdx+z&Sl7SP#oAND zSRNG|*w4QXVmo8zmCty*cFe2@m z^$J@uU3XDGoX@K&9QM2`T4{J?-TpDk{%G9~dCnEg!$s?;Kz6I{#iu!|} z2ciE9RV)put?NBpQ5=!yE(}Ru{hr+A9uB&FQt5}Y z3LN~(+fJtYgWvrE$5sax&w1QNkd;i253VJ@laH|`0Ly9;IG0rKc)Xv<>lN3}CTjs} z0c!zk0c(N($pUFBg)}JLp{W%b52;C$_yb-@wO{mbt6tr$w`tbDI?pAC)RWSDNC(mH oH$FN4oM!Ud{dUI{l`{wL14osC0*98~$)4Aiv;G_f$1y1V30$woTmS$7 literal 0 HcmV?d00001 diff --git a/public/buildy/img/tbuildy.png b/public/buildy/img/tbuildy.png new file mode 100644 index 0000000000000000000000000000000000000000..2dbe844c06c4530ff6676876e1ce35550a02556a GIT binary patch literal 553 zcmV+^0@nSBP)Px$<4Ht8RA@u(Susn)KotHi6hRY3L8YVrLBw`ap{e5Lqz?W89R>9t2=2N%xYWh9 z(h3C!iMaVEw5SwpQyog5L==;w>N7{u1TW+9?%n&o@7?9gMIhymNO}Fx0Q#+