Lilyrekin hasten
Aukeratu framework bat, klonatu monorepoa eta ireki bere liburutegi buru gabea edo adibide-aplikazioa, eta hasi zure orriak osatzen. Bide gidatua nahi? Hasi tutorialekin.
Instalatu
Lily Git monorepo batean bizi da, framework bakoitzaren liburutegi buru gabearen, laguntzaile-paketeen eta adibide-aplikazioaren direktorio batekin. Probatzeko modurik azkarrena monorepoa klonatu eta zure stack-erako liburutegi buru gabea irekitzea da:
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-react-headless
pnpm install
Patroi bera balio du beste framework-etarako:
@lilydesignsystem/html-headless— instalaziorik ez; kopiatu.htmlfitxategiak@lilydesignsystem/svelte-headless—pnpm install@lilydesignsystem/react-headless—pnpm install@lilydesignsystem/vue-headless—pnpm install@lilydesignsystem/angular-headless—pnpm install@lilydesignsystem/nunjucks-headless—pnpm installlily-design-system-blazor-headless—dotnet build
Liburutegi buru gabeak klonatzeko edo vendoring egiteko diseinatuta daude — tratatu iturburua egia-iturri gisa eta kopiatu behar duzuna. lehentasun-laguntzaileak gainera pakete instalagarri gisa datoz, eraikitze eta argitaratze kanalizazioarekin (npm JS framework-entzat, NuGet Blazor-entzat).
Erabili osagai buru gabe bat
Osagai buru gabeek HTML semantikoa, ARIA eta propak ematen dituzte — baina CSSrik ez. Hona Button bat framework bakoitzean:
HTML
<button class="button" type="button" aria-label="Save">
Save
</button>
Svelte
<script>
import Button from "lily-design-system-svelte-headless/components/Button/Button.svelte";
</script>
<Button onclick={save}>Save</Button>
React
import Button from "lily-design-system-react-headless/components/Button";
<Button onClick={save}>Save</Button>
Vue
<script setup>
import Button from "lily-design-system-vue-headless/components/Button.vue";
</script>
<Button @click="save">Save</Button>
Angular
import { Button } from "@lilydesignsystem/angular-headless";
@Component({
imports: [Button],
template: `<lily-button (click)="save()">Save</lily-button>`,
})
Blazor
<Button OnClick="Save">Save</Button>
Nunjucks
{% from "components/button/macro.njk" import button %}
{{ button({ text: "Save", type: "button" }) }}
Erabili adibide estilatu bat
Adibide-aplikazioek CSSa, ibilbideak eta demo-orri osoak dituzte. Esperimentatzeko modurik azkarrena SvelteKit, Next, Nuxt, Analog edo Eleventy adibide-aplikazioa abiaraztea eta demoa hemen ikustea da: /components.
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-svelte-sveltekit-examples
pnpm install
pnpm run dev
Ondoren ireki http://localhost:5173 eta arakatu /components.
Estiloa eta diseinu-tokenak
Osagai bakoitza klase kebab-case bakar batekin errendatzen da bere erro-elementuan. Adibidez, <Button> errendatzen du <button class="button">. Estilatu nahi duzun moduan:
.button {
background: var(--my-primary);
color: #fff;
padding: 0.75rem 1.5rem;
border-radius: 0.5rem;
}
.button:hover { background: var(--my-primary-hover); }
Lilyren kolore-paleta lehenetsia (adibide-aplikazioetan erabilia) hau da:
- Nagusia:
#2563eb - Arriskua:
#dc2626 - Abisua:
#f59e0b - Arrakasta:
#16a34a - Orriaren atzeko planoa:
#f9fafb - Txartelaren atzeko planoa:
#ffffff
Hauek iradokizunak dira, ez eskakizunak. Ordezkatu zure marka-paletarekin eta Lily pozik datorkizu.
Prest dauden gaiak
CSSa hutsetik idatzi nahi ez? Lilyk 57 erreferentzia-gai independente ditu themes/ direktorioan. Bakoitza Lily klase-gakoak helburu dituen estilo-orri bakarra da — lotu eta estilatuta zaude:
<link rel="stylesheet" href="/assets/themes/united-kingdom-government-digital-service.css" />
Multzoak hauek biltzen ditu:
- Sektore publikoa — NHS England, NHS Scotland eta NHS Wales (pazienteentzako eta profesionalentzako aldaerak bakoitza), GOV.UK GDS eta U.S. Web Design System.
- Saltzaileek inspiratua — Adobe Spectrum, Mozilla Protocol.
- Xede orokorra — light, dark, nord, dracula, wireframe eta hogeita hamar bat gehiago.
Gai-hautatzaileek erabiltzen dute :where(...), beraz zure CSSak beti irabazten du espezifikotasunean. Parekatu behean dagoen laguntzailearekin theme-picker exekuzio-garaiko aldaketarako, edo jarraitu
gaien tutoriala.
Lehentasun-laguntzaileak
Framework bakoitzak zortzi hautatzaile txiki ditu, bakoitza bere
lily-design-system-{framework}-{package} paketean (eta picker-bar haiek biltzen dituena). Bakoitza popup bat irekitzen duen ikono-botoi buru gabea da — zerrenda-koadroa, esteken zerrenda, bilaketa-formularioa edo (date-time-picker-erako) data-hautatzaile elkarrizketa — ez natiboa
<select>; SSR-rako segurua da; eta ez dakar CSSrik:
-
theme-picker — gai-estilo-orriak exekuzio-garaian kargatzen ditu kudeatutako
<link>bat aldatuz, ezartzen dudata-themedokumentuan, eta aukeran hemen gordetzen du:localStorage. -
locale-picker — ezartzen ditu
langetadir(RTL detekzio automatikoarekin) zure i18n liburutegiak jarrai dezan; ez du itzulpenik egiten. -
text-size-picker — ezartzen ditu
data-text-sizedokumentuan; zure CSSak balio bakoitza letra-tamaina batera mapatzen du. -
motion-picker — ezartzen ditu
data-motiondokumentuan, bisitariaren mugimendu-murrizketaren ezarpenetik abiatuta; zure CSSak eta script-ek erabakitzen dute zer kentzen den. - search-picker — bilaketa-eremu bat irekitzen duen ikono-botoia; bidaltzeak bilaketa-orri batera nabigatzen du. Ekintza baten jabe da, ez lehentasun baten.
- link-picker — zure aplikazioak definitzen dituen orri-esteken menu bat irekitzen duen etxe-ikonoa (Hasiera, Gutaz, Kontaktua, Pribatutasun-politika, …). Ekintza baten jabe da, ez lehentasun baten.
- share-picker — partekatze-orri natiboa edo erabiltzaileak emandako helmuga-zerrenda irekitzen du, gehi URLa kopiatzea. Ekintza baten jabe da, ez lehentasun baten: ez du ezer aplikatzen, ez du ezer gordetzen.
-
date-time-picker — testu-eremu bat gehi APG data-hautatzaile elkarrizketa bat data, ordu edo biarentzat. Formulario-balio baten jabe da, ez lehentasun baten: ISO katea joan-etorrian doa hona:
<input type="date">.
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-svelte-theme-picker
Svelte katalogoa erreferentzia kanonikoa da; React, Vue, Angular, HTML, Nunjucks, Web Components eta Blazor portuak kontratuz kontratu datoz bat. Ikusi laguntzaileen tutoriala.
Irisgarritasuna
Osagaiek helburu dute WCAG 2.2 AAA. Patroi hauek jarraitzen dituzte:
- HTML elementu semantikoak generikoen aldean
<div>s. <label for="id">etiketak sarrerekin lotzen dituena.aria-labelledby/aria-describedbyerreferentzia gurutzatuetarako.aria-invalid+aria-errormessageerrore-egoeretarako.role="alert"etaaria-liveeduki dinamikorako.aria-pressed,aria-expanded,aria-currentegoerarako.- Roving
tabindexsareetarako.
Foku-adierazleak nahita erabiltzaileak ematen ditu — Lilyk ez du inoiz zure diseinuarekin talka egingo duen foku-eraztun lehenetsirik margotzen. Adibide-aplikazioek axe-core oinarri-lerro garbia mantentzen dute ibilbide guztietan.
Nazioartekotzea
Etiketa, leku-marka, errore-mezu eta botoi-testu guztiak propa dira. Ez dago kate gogor kodetuik. Sartu zure aukerako itzulpen-framework-a — Paraglide, i18next, vue-i18n, react-intl, .resx fitxategiak, edozer.
Datak, zenbakiak eta monetak direla eta, osagaiek aldez aurretik formateatutako kateak onartzen dituzte: zuk formateatzen duzu honekin: Intl.DateTimeFormat /
Intl.NumberFormat / zure liburutegi hobetsiarekin eta emaitza pasatzen duzu.
Laguntzaileak locale-picker aukeratutako locale-a zure i18n liburutegiari adierazten dio ezarriz lang eta dir dokumentuaren erroan.
Probak
Framework-azpiproiektu bakoitzak bere probak ditu bere stack idiomatikoarekin:
- HTML: WebDriverIO benetako nabigatzaileak exekutatzen.
- Svelte: Vitest +
@testing-library/svelte. - React: Vitest +
@testing-library/react. - Vue: Vitest +
@testing-library/vue. - Angular: Vitest + TestBed (Analog Vite pluginaren bidez).
- Nunjucks: Vitest errendatze-laguntzaile batekin.
- Blazor: bUnit.
Probek erabiltzen dute Vitest-en matcher integratuak soilik — inoiz ez
jest-dom matcherrak. Honek test multzoak eramangarri mantentzen ditu. Adibide-aplikazioek Playwright amaieratik amaierarako multzoak, axe-core irisgarritasun oinarri-lerroak eta ikuspegi-miaketa erantsi dituzte.
IA agenteak
Gune honek argitaratzen ditu llms.txt eta llms.json bere erroan — bere orrialderik garrantzitsuenen mapa zainduta, honi jarraitzen dion edozein tresnarentzat: llms.txt konbentzioa.
Monorepo kanonikoak gainera bi bidaltzen ditu
Claude Skills:
lily-design-system-skill, sistemarekin eraikitzen duen edonorentzat Lilyren kontzeptuak, terminologia eta konposizio-patroiak estaltzen dituen trebetasun orokor bat, eta lily-design-system-maintainer-skill, monorepoan lan egiten duen edonorentzat beharrezko fitxategi-diseinua eta tresnak estaltzen dituen trebetasun tekniko bat. Biak hemen daude, erroan:
monorepo kanonikoa.
Arazoen konponbidea
Osagai bat errendatzen da baina estilorik gabe ageri da
Hori da buru gabekoa nahi bezala funtzionatzen — osagaiarekin ez da CSSrik datorren. Idatzi CSSa osagaiaren kebab-case klasearen kontra (ageri da katalogo-orribakoitzean) edo lotu prest dauden 57 gaietako bat.
Nire CSSak ez dirudi gai baten gainean aplikatzen denik
Aplikatu beharko luke — gai-hautatzaileak hemen biltzen dira :where(...), espezifikotasun nulua duena. Arau batek oraindik galtzen badu, egiaztatu zure estilo-orria gaiarenaren ondoren kargatzen dela <link> eta hautatzaileak benetan bat datorrela osagaiaren klase-gakoarekin.
pnpm install huts egiten du peer edo bertsio errorearekin
Erabili pnpm egungo bat (v10+) eta Node 22+. Azpiproiektu bakoitzak bere framework bertsioak finkatzen ditu bere package.json-n; zure tresna-kate globala zaharragoa bada, pnpm env use --global lts da konponbiderik azkarrena.
Pantaila-irakurgailuak kontrol baten izen okerra iragartzen du
Egiaztatu osagaiaren beharrezko label propa — testu ikusgairik ez duten osagaiek bat behar dute, eta rest-props bidez pasatutako erabiltzaileak emandako
aria-label / aria-labelledby nahita irabazten du barneko kableatuaren aurretik. Katalogo-orri bakoitzak osagaiaren ARIA kontratua dokumentatzen du.
Theme-picker laguntzaileak ez ditu estilo-orriak aldatzen
Berretsi themesUrl nabigatzaileak eskura dezakeen direktorio bat seinalatzen duela (zerbitzatu themes/ fitxategiak baliabide estatiko gisa) eta zure themes propako gai-slug-ak fitxategi-izenekin bat datozela. Laguntzaileak aldatzen du href kudeatutako
<link data-lily-theme-picker> baten — ikuskatu devtools-en eskatzen ari den URLa ikusteko.
Beste zerbait hautsita dago
Ireki issue bat erreprodukzio minimo batekin hemen: github.com/LilyDesignSystem/lily-design-system — edo ikusi komunitatea eta laguntza.
Ekarpenak
Lily gaztea da eta lankidetza ongi hartzen du. Une honetako ekarpen erabilgarrienak hauek dira:
- Osagai berriak (bereziki diseinu-sistema finkatuetako patroiak).
- Gai berriak — bakoitza estilo-orri autonomo bakarra da, lehen PR ongi mugatua.
- Adibideen estilo hobea — erakutsi zer den posible.
- Adibide-aplikazioen kateen itzulpenak.
- Akats-txostenak erreprodukzio minimo batekin.
- Irisgarritasun-auditoretzak pantaila-irakurgailuekin eta teknologia lagungarriekin.
Ireki issue-ak eta PR-ak hemen: github.com/LilyDesignSystem/lily-design-system.
Komunitatea eta laguntza
- Galderak eta akats-txostenak — ireki issue bat hemen: github.com/LilyDesignSystem/lily-design-system.
- Posta elektronikoa — arduradunak irakurtzen du joel@joelparkerhenderson.com eta lankidetza, orientazioa eta iritziak ongi hartzen ditu.
- Ispiluak — Lily hona ere bultzatzen da: Codeberg eta GitLab, nahiago duzun forgetik parte hartu ahal izateko.
- Jokabidea — proiektuak jokabide-kode estandar bat jarraitzen du; izan atsegina, suposatu fede ona.
Ohiko galderak
Zergatik buru gabea estilatuaren ordez?
Aldez aurretik estilatutako osagaiak erosoak dira — zure markarekin bat egiten ez duten arte. Osagai buru gabeek lan apur bat gehiago eskatzen dute hasieran baina diseinu bisualaren gaineko kontrol osoa ematen dizute. Adibide-aplikazioek eta 57 gaiek estilatzeko moduak erakusten dituzte; haiek hartu ditzakezu edo erabat ordezkatu. Argudio luzeagoa hemen dago: Zergatik Lily.
Zergatik hainbeste osagai?
Lilyk aplikazio gehienek behar dituzten patroiak estali nahi ditu hutsetik eraikitzera behartu gabe — nortasun-identifikatzaile nazionalen sarrerak eta edizio-scrollytelling bezalako eduki sakonak barne. Katalogoak hamabi diseinu-sistema finkatutik hartzen du, gehi lan originala — ikusi Honi buruz.
Lily Tailwind-ekin erabil dezaket?
Bai. Osagai bakoitzak kebab-case erro-klase bakarra erakusten du, gehi className / classerabiltzaileak emandakoa. Jarri Tailwind utilitateak gainean nahi duzun moduan.
Lily CSS framework semantikoekin erabil dezaket, DaisyUI bezala?
Bai. Erro-elementuko kebab-case klase-izenek CSS gako semantiko gisa funtzionatzen dute. Parekatu Lily framework semantiko batekin eta aldez aurretik estilatutako osagaiak lortuko dituzu, ARIA eta i18n errespetatzen dituztenak.
Badago npm paketerik?
Laguntzaileak lehentasun-laguntzaileak paketeak dira, npm/NuGet argitaratze-kanalizazioarekin. Osagai-liburutegi buru gabeak klonatzeko edo vendoring egiteko diseinatuta daude — iturburua da entregagaia, argitaratzen duzuna irakurri, moztu eta zurea egin ahal izateko. Liburutegi buru gabeen erregistro-argitalpena bide-orrian dago oraindik.
Zergatik lizentzia anitz?
Proiektu desberdinek lizentzia-behar desberdinak dituzte. BSD eta MIT permisiboak dira, Apache-2.0-k patente-emakida du, eta GPL aukerek copyleft-a onartzen dute. Aukeratu zure egoerari egokitzen zaiona.
Nola jakinarazi akats bat edo eskatu ezaugarri bat?
Ireki issue bat GitHub biltegian, edo idatzi hona: joel@joelparkerhenderson.com.