Git Product home page Git Product logo

ato-ui's Introduction

Ato UI

Ato UI

npm-version license discord

The elemental UI component library for Svelte, built with UnoCSS and Melt UI.

πŸš€ Getting Started

Check out the documentation for a detailed installation guide and project setup.

pnpm add -D ato-ui

✨ Features

  • πŸ¦„ Headless + Styled components
  • 🎨 Themeable with an easy to use designers page
  • 🎯 Written in TypeScript
  • πŸ‘ Strict adherence to WAI-ARIA guidelines (built on top of accessible headless libraries)
  • ✈️ Convenient CSS shortcuts & tokens
  • πŸ˜ƒ Pure CSS icons of all your favourite icon sets thanks to iconify and UnoCSS

πŸ‘‹ Community

Want to discuss something with us? Come join us on Discord, we would love to see you there.

Ato UI Discord community

βš’οΈ Contributions

Developers interested in contributing should read the Code of Conduct and the Contribution Guide. PRs are welcomed. Find an open issue you can work on and come discuss it with us on discord.

🌸 Credits

The following amazing projects made this library possible and / or inspired features:

License

MIT License Β© 2023-PRESENT Benedikt Mielke

ato-ui's People

Contributors

bennymi avatar delight avatar github-actions[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ato-ui's Issues

Shortcuts to implement

Add Contribution Guide

Things to mention

  • branch naming convention
  • discussing contributions on discord
  • use pnpm not npm

βš’οΈ Set up New Issue template

Sections

  • Environment / Browser
  • Description
  • Reproduction
  • Type (bug / enhancement / documentation / ...)

Feature Request

  • description
  • examples
  • type (action, enhancement, component, etc.)

Bug

  • description
  • reproduction steps
  • annoyance level

Resources

✨ Headless components

Idea:

  • Have a headless and styled option for each component
  • put functionality of components into actions
  • provide a Svelte component that is already styled
  • additionally provide templates for how to create the component using the actions
  • in the documentation have different templates already created (professional, playful, etc)

Actions

Avatar component

πŸ“– Documentation

TODOs

Getting Started

  • installation
  • setup: presets, tailwind reset, import uno.css file (serves as a file that the css will be loaded into), etc.
  • template
  • transferring from Tailwind
  • VSCode set up (install UnoCSS extension, disable other extensions, etc)

Shortcut Search

  • search bar
  • filter buttons (button, gradient, spinners, background, light / dark, etc.)
  • explanation window

Buttons

  • regular (one color)
  • gradients (2 & 3) (mention opacity values and optional shades and so on)
  • glass
  • group (regular & outline)

Spinners

  • mention how they can be customized

Inspiration

Code Blocks

Resources

`bg-primary-500/40` does not work (with opacity values)

There's a bug that we can't change the opacity of theme colors. Possible solution might be #16 since this then should definitely use the Tailwind and Windi shortcuts once we simply extend that theme, but I was also thinking that the current configuration should already do that.

Used in btn-glass for example

Spinners!

🌈 Themer Component / Designer Page

Have a themer component that people can implement on their website. They can bind to a string variable with all the css variables. The string could for example be stored in a database for each user or tenant, so that each tenant has their own look and feel.

TODOs

  • select theme colors (primary, secondary, tertiary, success, error, warning, surface, neutral)
  • select text colors on theme colors
  • show all shades for each theme color
  • show components as examples
  • copy button
  • be able to open the designer on any page (maybe through a modal?)
  • be able to change base and container roundedness
  • button sizes:
    • radius
    • font size
    • padding in x and y
    • border size?
  • be able to change fonts
  • same color picker tool across all browsers (check which libraries there are for this... needs to be accessible)
  • mobile friendly
  • be able to store and delete themes into local storage
  • save user's preferences of theme and dark/light in local storage
  • randomize colour feature
    • a lock button for colours that the user likes
  • have a list of best background colours for each shade (if used on text), along with the contrast ratio
  • shuffle button in navbar dropdown?
  • maybe make button tokens with descriptive names for theme generator since some of these button names are super long and difficult to remember
    • something like btn-main, btn-accent, btn-submit btn-unique btn-cancel (maybe we need like 5-8?)
    • surface-content/main, surface-nav, surface-card, surface-overlay, ...
    • provide the code for it that can be copied into the unocss.config.ts shortcuts

Create designer page:

Readability / Contrast

Resources

✨Button groups

Add examples:

  • only icons
  • active states (button becomes a bit lighter when clicked and stays that way until a different button is clicked)

✨Search Component

πŸ“– Documentation Structure

  • Relates to #35.
  • Relates to #74
  • Relates to #76

TODOs

Examples

Hamburger menu animations

Resources

Setup config files (eslint, tsconfig, vscode) for common project styling among contributors

I want to get rid of prettier and simply have everything defined in ESLint.

TODOs

  • Setup eslint for Svelte plugin mentioned in Resources
  • set up airbnb eslint style guide
  • changes should be made when file is saved (for contributors as well, so if a VSCode extension is needed it should be mentioned in the contributors guide)
  • also set up tsconfig (check this video https://www.youtube.com/watch?v=cCO0OkDUGCs)
  • setup .vscode folder with recommendation for extensions that should be installed
    • UnoCSS
    • Tailwind CSS
    • WindiCSS
  • set up lint-staged

Resources:

🌈 Add a neutral colour

A 4th color... could be named accent or neutral. People can use it if they want to have more than 3 available colors.

Another idea, have the 3 main color, but allow users to add extra colors with the click of a button. They could then be passed to the preset as an option.

Edit: Add an info color. 3 main colors plus info, success, warning, error should be enough.

Landing page

TODOs

Sections

Particles should transition smoothly from one to the other when theme is changed and change colors accordingly.

Inspiration

Color Themes:

Resources:

✨ Tokens

Inverse tokens use different color for light and dark mode. You can create some dynamic shortcuts for these. For example:

'text-inverse-primary(-<num>)-secondary(-<num>)': 'text-primary-500 dark:text-secondary-500'

TODOs

  • inverse tokens
  • theme classes that set both the background and the text color
  • text on color should be used in most cases to make sure accessibility is always the best it can be automatically
  • update gradient background tokens to start with bg-gradient-... (consistent naming across all tokens)
  • think about what should be supported for each token. Do some tokens need opacity for example? It makes it a bit complicated to set the text colors.

Button component

http://localhost:5173/documentation/buttons

Create CSS shortcuts for it:

  • gradient
  • ghost / glass
  • dashed & dotted
  • filled
  • disabled
  • gradient ring (https://play.tailwindcss.com/9LSkQgkY7p)
  • icon buttons
  • create descriptions
  • button groups (https://stackoverflow.com/questions/67119992/how-to-access-all-the-direct-children-of-a-div-in-tailwindcss)
  • add opacity to buttons (btn-r-primary-500/50-secondary-800/50)
    • Use non-capturing groups with ?: like so: ^btn-(primary|secondary)(?:-(100|200|300)(?:\/([1-9][0-9]?|0|100))?)?$
    • or this one is better: btn-(primary|secondary)(?:-(100|200|300))?(?:\/(0|100|[1-9][0-9]?))? because it also allows emitting the shade value, so we can write this as well: btn-primary/25 and shade 500 will be the default
  • For the gradient boarders add an option to specify the opacity of the center color. Also update the square shape shift spinner to also have an option for this opacity value so it gives more control over how the spinner looks

Examples

Button Groups

Extract preset into lib folder

Will be part of the library that others can use. Provides extension of colors for primary, secondary, success, etc... And the tokens that provide easy switching between light and dark mode, rounded corners, fonts, etc.

🌟 Toasts

Features:

  • set different positions (top-left | top-center | top-right | bottom-left | bottom-center | bottom-right)
  • close button
  • different stylings
  • have a way to build custom toasts that add to the same store (different stores for different positions?)

Resources

Examples:

🌟 Cards component

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.