థీమ్‌లు

Lily కాంపోనెంట్లకు స్థిరమైన క్లాస్ హుక్‌లు ఉన్నాయి మరియు సున్నా CSS — కాబట్టి థీమ్ అంటే కేవలం ఒక స్టైల్‌షీట్. ఈ ట్యుటోరియల్ "ఒక ఫైల్ లింక్ చేయండి" నుండి "వినియోగదారుని రన్‌టైమ్‌లో థీమ్ మార్చనివ్వండి, నిలుపుకుని" వరకు సాగుతుంది.

మీరు ఏమి నిర్మిస్తారు

వినియోగదారు మొత్తం రూపాన్ని మార్చగల యాప్ — ఒక లింక్ చేసిన స్టైల్‌షీట్‌తో మొదలై, నిలిచి ఉండే రన్‌టైమ్ థీమ్ మార్పిడితో ముగుస్తుంది — సుమారు 15 నిమిషాల్లో.

ప్రారంభించే ముందు

ముందుగా పూర్తి చేయండి ఫ్రేమ్‌వర్క్ ట్యుటోరియల్ ముందుగా మీ స్టాక్ కోసం, తద్వారా థీమ్ ఇవ్వడానికి మీ వద్ద ఒక చిన్న Lily ఫారమ్ ఉంటుంది. ఇక్కడ అంతా ఏడు ఫ్రేమ్‌వర్క్‌లలోనూ పనిచేస్తుంది; కోడ్ నమూనాలు Svelte మరియు సాదా HTML చూపిస్తాయి.

దశ 1 — సిద్ధమైన థీమ్‌ను లింక్ చేయండి

themes/ డైరెక్టరీలో 45 స్వతంత్ర స్టైల్‌షీట్‌లు ఉన్నాయి. వాటిని మీ యాప్ స్థిర ఆస్తుల్లోకి కాపీ చేసి ఒకదాన్ని లింక్ చేయండి:

<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />

సెట్‌లోని ముఖ్యాంశాలు:

  • ప్రజా రంగం — NHS England / Scotland / Wales, ప్రతి ఒక్కటి రోగి-కేంద్రీకృత మరియు వైద్యుల-కేంద్రీకృత రూపాల్లో; GOV.UK (united-kingdom-government-digital-service); USWDS (united-states-web-design-system).
  • విక్రేతల నుండి ప్రేరణ పొందినవి — adobe-spectrum, mozilla-protocol.
  • సాధారణ ప్రయోజనం — light, dark, nord, dracula, wireframe, corporate, synthwave, మరియు ఇంకా చాలా.

మీ పనిని తనిఖీ చేయండి: పేజీని రీలోడ్ చేయండి. ఫ్రేమ్‌వర్క్ ట్యుటోరియల్‌లో మీరు నిర్మించిన అదే మార్కప్ ఇప్పుడు పూర్తిగా శైలీకరించబడింది — బటన్లు, ఇన్‌పుట్‌లు, లేబుళ్లు, ఫోకస్ రింగ్‌లు. HTML యొక్క ఒక వరుస ఆ పని చేసింది — ప్రతి కాంపోనెంట్ ఎలా ఉందో అలాగే ఉంది.

దశ 2 — దేన్నైనా ఓవర్‌రైడ్ చేయండి

థీమ్ సెలెక్టర్లు దీనిలో చుట్టబడ్డాయి :where(...)దీనికి విశిష్టత సున్నా — కాబట్టి మీరు రాసే ఏ నియమమైనా గెలుస్తుంది, సరళంగా:

/* After the theme link: your brand button, everything else themed */
.button {
  background: #7c3aed;
  border-radius: 9999px;
}

దశ 3 — theme-picker తో రన్‌టైమ్ మార్పు

theme-picker సహాయకం ఒక హెడ్‌లెస్ ఐకాన్-బటన్ + లిస్ట్‌బాక్స్, థీమ్ జీవనచక్రం మొత్తాన్ని నిర్వహిస్తుంది: ఒక నిర్వహించే <link> ను మార్చడం ద్వారా ఎంచుకున్న స్టైల్‌షీట్‌ను లోడ్ చేస్తుంది (క్రియాశీల థీమ్ మాత్రమే తెప్పించబడుతుంది), పత్రంపై data-theme="{slug}" సెట్ చేస్తుంది, మరియు ఐచ్ఛికంగా ఇక్కడ నిలుపుతుంది localStorage. ఇక్కడ Svelte చూపబడింది; React, Vue, Angular, HTML, Nunjucks మరియు Blazor పోర్ట్‌లు ఒప్పందం-ఒప్పందంగా సరిపోతాయి:

<script>
  import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>

<ThemePicker
  label="Theme"
  themesUrl="/assets/themes/"
  themes={["light", "dark", "nord", "wireframe"]}
  storageKey="my-app-theme"
/>

అదే మొత్తం ఏకీకరణ. కీబోర్డ్ ప్రవర్తన WAI-ARIA APG లిస్ట్‌బాక్స్ నమూనాను అనుసరిస్తుంది; నియంత్రణ స్వయంగా హెడ్‌లెస్ (క్లాస్ హుక్ .theme-picker), కాబట్టి ఏ థీమ్ క్రియాశీలంగా ఉంటే దాన్ని తీసుకుంటుంది.

2026-08-29న ధృవీకరించబడింది: సరిగ్గా ఈ స్నిప్పెట్ ప్రచురించిన 0.1.1 ప్యాకేజీకి వ్యతిరేకంగా కంపైల్ చేయబడింది, దీని ద్వారా svelte/server.

దశ 4 — మీ స్వంత CSS లో థీమ్‌కు స్పందించండి

సహాయకం పత్రం మూలంపై data-theme సెట్ చేస్తుంది కాబట్టి, మీ స్వంత శైలులు దానిపై శాఖలు చేయవచ్చు:

[data-theme="dark"] .site-logo { filter: invert(1); }

సర్వర్ రెండరింగ్ కోసం గమనికలు

సహాయకం అన్ని DOM రాతలను ఫ్రేమ్‌వర్క్ mount/effect జీవనచక్రం లోపలే చేస్తుంది, కాబట్టి నిర్మాణపరంగా SSR-సురక్షితం. మొదటి పెయింట్‌లో మెరుపు నివారించడానికి, సర్వర్‌లో ప్రారంభ థీమ్ యొక్క <link> మరియు data-theme ను రెండర్ చేయండి (ఉదాహరణకు కుకీ నుండి) — Svelte సహాయక రిపో నడపగల SvelteKit కుకీ ఉదాహరణను అందిస్తుంది, ఇతర కేటలాగ్‌లు తమ స్టాక్‌ల కోసం అదే నమూనాను నమోదు చేస్తాయి.

తదుపరి దశలు

  • ప్రాధాన్యత సహాయకాలు — భాష, టెక్స్ట్ పరిమాణం, షేరింగ్ మరియు తేదీ/సమయ ఎంట్రీకి అదే నమూనా.
  • ఒక థీమ్‌ను అందించండి — ప్రతిదీ క్లాస్ హుక్‌లను లక్ష్యంగా చేసుకునే ఒక స్వతంత్ర స్టైల్‌షీట్; చూడండి సహకారం.

దారిలో ప్రశ్నలా? సహాయ పేజీ సమాధానాలతో నిండి ఉంది — మరియు ఏదైనా దశను మరింత స్పష్టంగా చేయవచ్చంటే, మాకు చెప్పండి మరియు మేము సంతోషంగా ట్యుటోరియల్‌ను మెరుగుపరుస్తాము.