Coder Social home page Coder Social logo

halcyon 🌅

npm docs Discord

A Material You plugin and component library for Vite / Vue 3.

Warning This is extremely early in development.

Installation and usage

Add the package to your project:

pnpm add halcyon-vue

Load the plugin in your Vite setup:

import { defineConfig } from 'vite'
import { Halcyon } from 'halcyon-vue/plugin'
import theme from './theme.json'
// ...
export default defineConfig({
    plugins: [
        // ...
        Halcyon({ theme })
    ]
})

Import the stylesheets:

// main.ts
import 'halcyon:reset.css' // optional if you're already using a css reset
import 'halcyon:theme.css' // sets up the theme variables
import 'halcyon:base.css'  // includes global styles (e.g. body)
import 'halcyon-vue/style' // includes component styles

Now you can use the components however you should wish:

<script setup>
import { HButton } from 'halcyon-vue'

const alert = (msg) => window.alert(msg) // vue why
</script>
<template>
    <div>
        <HButton
            kind="filled"
            content="Press me!"
            @click="alert('yippee')"
        />
    </div>
</template>

You can browse our documentation online!

Generating a Theme

You should use the Material Theme Builder to generate a theme. From there, download the JSON - you can then use the theme in Halcyon by passing it into the plugin.

Overriding the theme

The theme variables are just CSS variables, so you can replace them in your own CSS:

.this-part-is-very-red {
    --halcyon-primary: #ff0000;
}

Fonts

It's not required, but you should import a couple fonts for the most accurate experience. In particular, Roboto Flex (or Roboto if your target doesn't support variable fonts) and Noto Sans (as a fallback font) are used. Here's a snippet you can put into your index.html to import Roboto Flex and Noto Sans:

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&family=Roboto+Flex:wght@400;500;700&display=swap" rel="stylesheet">

(This snippet probably imports more than you'll need, so consider selecting the fonts on Google Fonts yourself.)

Icons

You should use unplugin-icons for Material Design icons. It's what the docs use, and it's the only thing tested with.

License

MIT

halcyon-vue's Projects

halcyon-vue icon halcyon-vue

Material You plugin and component library for Vite and Vue 3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.