Czym jest Lily?
Darmowy system projektowy o otwartym kodzie, w którym dostępność jest na pierwszym miejscu: spotyka cię tam, gdzie piszesz kod, i schodzi z drogi, gdy go nie potrzebujesz.
W skrócie
Lily to katalog komponentów webowych, z których każdy jest zaimplementowany w ośmiu wariantach bezgłowych (HTML, Svelte, React, Vue, Angular, Blazor, Nunjucks i Web Components), a także zestaw gotowych aplikacji przykładowych pokazujących, jak je stylizować.
Wersje bezgłowe nie zawierają żadnego CSS. Dają ci semantyczny HTML, role i stany ARIA, obsługę klawiatury oraz właściwości przyjazne internacjonalizacji. Projekt wizualny przynosisz ty.
Zasady projektowe
Dostępny
Każdy komponent wychodzi od semantycznego HTML. ARIA dokładamy tylko tam, gdzie sam HTML nie potrafi wyrazić wzorca. Komponenty celują w poziom WCAG 2.2 AAA — kolory, odstępy, fokus i nawigacja klawiaturą są brane pod uwagę.
Składalny
Lily preferuje małe komponenty o jednym przeznaczeniu, które do siebie pasują. Wzorce złożone powtarzają się raz po raz:
Nav → List → ListItem— do okruszków nawigacyjnych, spisów treści, menu akordeonowych, menu drzewiastych i paginacjiForm → Field → Input— do każdego układu formularza z etykietami, podpowiedziami i błędamiTable → Head/Body/Foot → Row → Data— do tabel, kalendarzy, wykresów Gantta i tablic kanbanBar → BarButton— do pasków narzędzi, pasków kart, pasków zadań, pasków akcji i pasków menuPicker → PickerButton— do selektorów kolorów, selektorów ocen, selektorów motywów
Gotowy do internacjonalizacji
Ani jeden ciąg widoczny dla użytkownika nie jest wpisany na sztywno. Etykiety, symbole zastępcze, komunikaty o błędach, teksty przycisków — wszystko to parametry. Podłącz własny system tłumaczeń, a Lily mówi w każdym języku, w którym ty mówisz.
Bezgłowy
Komponenty bezgłowe mają zero CSS, żadnych bloków
<style> , żadnych tokenów projektowych, których nie wybrałeś. Udostępniają jedną nazwę klasy w kebab-case na każdym elemencie głównym, więc możesz je wybierać jak chcesz — semantyczny CSS, Tailwind, CSS-in-JS, twoja decyzja.
Kompletne przykłady
Aplikacje przykładowe pokazują, jak stylizować komponenty do rzeczywistego użytku — jakie tokeny projektowe ustawić, jakie warianty dodać, jak składać strony. To pełne aplikacje SvelteKit, Next.js, Nuxt, Blazor i Eleventy, a nie tylko piaskownice.
Źródła inspiracji
Lily czerpie wzorce i język z celowo szerokiego zbioru systemów projektowych:
- NHS UK Design System
- GOV.UK Design System
- U.S. Web Design System (USWDS)
- ONSdigital design system
- Design System AU (Australian Government)
- Mozilla Protocol
- Adobe Spectrum
- Ant Design
- Wonderflow Wanda
- DaisyUI
- shadcn/ui
- Reuters graphics components
Licencja
Lily jest wielolicencyjny: BSD, MIT, Apache-2.0, GPL-2.0 lub GPL-3.0. Wybierz licencję pasującą do twojego projektu. Jeśli żadna nie pasuje, skontaktuj się z nami.
Kontakt
Kierownik projektu: Joel Parker Henderson — joel@joelparkerhenderson.com.
Znalazłeś błąd, masz pomysł, chcesz wnieść komponent? Otwórz zgłoszenie lub pull request na GitHub.
Status: Lily to zupełnie nowa praca i witamy współpracę, wskazówki oraz opinie. Rzeczy będą się zmieniać i rozwijać.