Skip to main content

grove-ui-design

Create warm, nature-themed UI for Grove with glassmorphism, seasonal decorations, randomized forests, and accessible design patterns. Use when building pages, enhancing UI, or adding decorative elements.

Jump to install

Source facts

Repository
AutumnsGrove/GroveScout
Last source activity
January 22, 2026 at 22:47
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
grove-ui-design
description
Create warm, nature-themed UI for Grove with glassmorphism, seasonal decorations, randomized forests, and accessible design patterns. Use when building pages, enhancing UI, or adding decorative elements.
# Grove UI Design Skill ## When to Activate Activate this skill when: - Creating or enhancing pages for Grove sites - Adding decorative nature elements (trees, clouds, weather effects) - Implementing glassmorphism effects for readability - Working with the seasonal theme system - Building navigation patterns (navbar, mobile overflow menus) - Creating "story" pages that guide users through content - Ensuring mobile-friendly, accessible UI - Choosing icons or visual elements ## The Grove Aesthetic Grove is a **place**. It's nature-themed, warm, and invitingโ€”like a midnight tea shop with good documentation. ### Core Principles ``` Warm, introspective, queer, unapologetically building something meaningful. Write with the warmth of a midnight tea shop and the clarity of good documentation. ``` **Every design choice should feel:** - **Welcoming** โ€” like entering a cozy space - **Organic** โ€” natural, not rigid or corporate - **Readable** โ€” content-first, decorations enhance, never obstruct - **Alive** โ€” subtle animations, seasonal changes, randomization ### User Identity Language Grove uses specific terms for community members in all UI: | Term | Who | Use For | |------|-----|---------| | **Wanderer** | Everyone | Greetings, welcome messages, all users | | **Rooted** | Subscribers | Subscription confirmations, thank-yous | | **Pathfinder** | Trusted guides | Community leaders (appointed) | | **Wayfinder** | Autumn | The grove keeper (singular) | **In UI text:** - "Welcome, Wanderer." (not "Welcome, user") - "Welcome back, Wanderer." (dashboard greeting) - "You've taken root." (subscription confirmation) - "Thanks for staying rooted." (payment received) See `docs/grove-user-identity.md` for full documentation. --- ## Glassmorphism Pattern Glass effects create readability while revealing hints of background decoration. ### The Layering Formula ``` Background (gradients, vines, nature) โ†“ Decorative Elements (trees, clouds, particles) โ†“ Glass Surface (translucent + blur) โ†“ Content (text, cards, UI) ``` ### Glass Components ```svelte import { Glass, GlassCard, GlassButton, GlassOverlay } from '@groveengine/ui/ui'; <!-- Container with glass effect --> <Glass variant="tint" class="p-6 rounded-xl"> <p>Readable text over busy backgrounds</p> </Glass> <!-- Card with glass styling --> <GlassCard title="Settings" variant="default" hoverable> Content here </GlassCard> <!-- Glass button --> <GlassButton variant="accent">Subscribe</GlassButton> ``` ### Glass Variants | Variant | Use Case | Light Mode | Dark Mode | |---------|----------|------------|-----------| | `surface` | Headers, navbars | 95% white | 95% slate | | `tint` | Text over backgrounds | 60% white | 50% slate | | `card` | Content cards | 80% white | 70% slate | | `accent` | Callouts, highlights | 30% accent | 20% accent | | `overlay` | Modal backdrops | 50% black | 60% black | | `muted` | Subtle backgrounds | 40% white | 30% slate | ### CSS Utility Classes ```html <!-- Apply directly to any element --> <div class="glass rounded-xl p-4">Basic glass</div> <div class="glass-tint p-6">Text container</div> <div class="glass-accent p-4">Highlighted section</div> <nav class="glass-surface sticky top-0">Navbar</nav> ``` ### Key Pattern: Sticky Navigation ```svelte <nav class="sticky top-[73px] z-30 bg-white/80 dark:bg-slate-900/80 backdrop-blur-sm border-b border-divider"> <!-- Navigation content --> </nav> ``` --- ## Seasonal Theme System Grove uses four seasons, each with distinct colors, weather effects, and moods. ### Season Detection ```svelte import { season } from '$lib/stores/season'; const isSpring = $derived($season === 'spring'); const isAutumn = $derived($season === 'autumn'); const isWinter = $derived($season === 'winter'); // Summer is the default (no flag needed) ``` ### Color Palette System Import from: `@autumnsgrove/groveengine/ui/nature` or `$lib/components/nature/palette` #### Core Palettes (Year-Round) ```typescript import { greens, bark, earth, natural } from '@autumnsgrove/groveengine/ui/nature'; // Greens - organized dark-to-light for atmospheric depth greens.darkForest // #0d4a1c - Background trees greens.deepGreen // #166534 - Mid-distance greens.grove // #16a34a - Grove brand primary greens.meadow // #22c55e - Standard foliage greens.spring // #4ade80 - Bright accent greens.mint // #86efac - Light accent greens.pale // #bbf7d0 - Foreground highlights // Bark - warm wood tones bark.darkBark // #3d2817 - Oak, older trees bark.bark // #5d4037 - Standard trunk bark.warmBark // #6B4423 - Pine, cedar bark.lightBark // #8b6914 - Young trees // Earth - ground elements earth.soil, earth.mud, earth.clay, earth.sand, earth.stone, earth.pebble, earth.slate // Natural - cream and off-whites natural.cream, natural.aspenBark, natural.bone, natural.mushroom, natural.birchWhite ``` #### Spring Palettes ```typescript import { springFoliage, springSky, wildflowers, cherryBlossoms, cherryBlossomsPeak } from '@autumnsgrove/groveengine/ui/nature'; // Spring Foliage - yellow-green new growth springFoliage.sprout // #65a30d - Distant new growth springFoliage.newLeaf // #84cc16 - Classic spring lime springFoliage.freshGreen // #a3e635 - Bright foreground springFoliage.budding // #bef264 - Pale new leaf springFoliage.tender // #d9f99d - Very pale // Spring Sky springSky.clear // #7dd3fc - Clear morning springSky.soft // #bae6fd - Pale sky // Wildflowers - unified meadow flower colors wildflowers.buttercup // #facc15 - Yellow wildflowers.daffodil // #fde047 - Pale yellow wildflowers.crocus // #a78bfa - Purple crocus wildflowers.violet // #8b5cf6 - Wild violets wildflowers.purple // #a855f7 - Lupine, thistle wildflowers.lavender // #c4b5fd - Distant masses wildflowers.tulipPink // #f9a8d4 - Pink tulips wildflowers.tulipRed // #fb7185 - Red tulips wildflowers.white // #fefefe - Daisies, trillium // Cherry Blossoms - summer standard cherryBlossoms.deep // #db2777 - Dense centers cherryBlossoms.standard // #ec4899 - Standard blossom cherryBlossoms.light // #f472b6 - Light petals cherryBlossoms.pale // #f9a8d4 - Pale blossoms cherryBlossoms.falling // #fbcfe8 - Falling petals // Cherry Blossoms Peak - vibrant spring (one shade brighter!) cherryBlossomsPeak.deep // #ec4899 cherryBlossomsPeak.standard // #f472b6 cherryBlossomsPeak.light // #f9a8d4 cherryBlossomsPeak.pale // #fbcfe8 cherryBlossomsPeak.falling // #fce7f3 ``` #### Unified Flowers Palette (NEW!) The `flowers` namespace consolidates all flower colors into one organized structure: ```typescript import { flowers } from '@autumnsgrove/groveengine/ui/nature'; // Meadow wildflowers (yellows, purples, pinks, whites) flowers.wildflower.buttercup // #facc15 - Yellow flowers.wildflower.daffodil // #fde047 - Pale yellow flowers.wildflower.crocus // #a78bfa - Purple crocus flowers.wildflower.violet // #8b5cf6 - Wild violets flowers.wildflower.purple // #a855f7 - Lupine, thistle flowers.wildflower.lavender // #c4b5fd - Distant masses flowers.wildflower.tulipPink // #f9a8d4 - Pink tulips flowers.wildflower.tulipRed // #fb7185 - Red tulips flowers.wildflower.white // #fefefe - Daisies, trillium // Cherry blossoms - standard summer flowers.cherry.deep // #db2777 flowers.cherry.standard // #ec4899 flowers.cherry.light // #f472b6 flowers.cherry.pale // #f9a8d4 flowers.cherry.falling // #fbcfe8 // Cherry blossoms at peak bloom - vibrant spring flowers.cherryPeak.deep // #ec4899 flowers.cherryPeak.standard // #f472b6 flowers.cherryPeak.light // #f9a8d4 flowers.cherryPeak.pale // #fbcfe8 flowers.cherryPeak.falling // #fce7f3 ``` **Use `flowers.wildflower` instead of `accents.flower`** โ€” the accents version is deprecated. #### Autumn & Winter Palettes ```typescript import { autumn, autumnReds, winter } from '@autumnsgrove/groveengine/ui/nature'; // Autumn - warm fall foliage (dark-to-light for depth) autumn.rust // #9a3412 - Deep background autumn.ember // #c2410c - Oak-like autumn.pumpkin // #ea580c - Maple mid-tones autumn.amber // #d97706 - Classic fall autumn.gold // #eab308 - Aspen/birch autumn.honey // #facc15 - Bright foreground autumn.straw // #fde047 - Pale dying leaves // Autumn Reds - cherry/maple fall foliage autumnReds.crimson // #be123c - Deep maple autumnReds.scarlet // #e11d48 - Bright cherry autumnReds.rose // #f43f5e - Light autumn autumnReds.coral // #fb7185 - Pale accent // Winter - frost, snow, ice + frosted evergreens winter.snow, winter.frost, winter.ice, winter.glacier winter.frostedPine, winter.winterGreen, winter.coldSpruce winter.winterSky, winter.twilight, winter.overcast winter.bareBranch, winter.frostedBark, winter.coldWood winter.hillDeep, winter.hillMid, winter.hillNear, winter.hillFront ``` #### Accent Palettes ```typescript import { accents, wildflowers } from '@autumnsgrove/groveengine/ui/nature'; // Mushrooms - fairy tale pops of color accents.mushroom.redCap, accents.mushroom.orangeCap, accents.mushroom.brownCap accents.mushroom.spots, accents.mushroom.gill // Firefly - bioluminescence accents.firefly.glow, accents.firefly.warmGlow, accents.firefly.body // Berry - rich saturated accents.berry.ripe, accents.berry.elderberry, accents.berry.red // Water - cool blue spectrum accents.water.surface, accents.water.deep, accents.water.shallow, accents.water.lily // Sky - time of day accents.sky.dayLight, accents.sky.dayMid, accents.sky.sunset, accents.sky.night, accents.sky.star // Birds - species-specific colors accents.bird.cardinalRed, accents.bird.cardinalMask, accents.bird.cardinalBeak accents.bird.chickadeeCap, accents.bird.chickadeeBody, accents.bird.chickadeeBelly accents.bird.robinBody, accents.bird.robinBreast, accents.bird.robinBeak accents.bird.bluebirdBody, accents.bird.bluebirdWing, accents.bird.bluebirdBreast // NOTE: accents.flower is deprecated - use flowers.wildflower instead ``` #### Seasonal Helper Functions ```typescript import { getSeasonalGreens, getCherryColors, isTreeBare, pickRandom, pickFrom } from '@autumnsgrove/groveengine/ui/nature'; // Get foliage colors mapped to season const foliage = getSeasonalGreens(season); // spring โ†’ springFoliage colors // summer โ†’ greens // autumn โ†’ autumn palette // winter โ†’ frosted evergreen colors // Get cherry tree colors by season const cherryColors = getCherryColors(season); // spring โ†’ cherryBlossomsPeak (vibrant!) // summer โ†’ cherryBlossoms (standard) // autumn โ†’ autumnReds // winter โ†’ null (bare tree) // Check if deciduous tree is bare if (isTreeBare('cherry', 'winter')) { /* no foliage */ } // Random color selection for natural variation const randomGreen = pickRandom(greens); const specificGreen = pickFrom(greens, ['grove', 'meadow']); ``` #### Deprecated Aliases (Still Work) ```typescript // These work but will be removed in v1.0: import { spring, pinks, springBlossoms } from '@autumnsgrove/groveengine/ui/nature'; // spring โ†’ use springFoliage, wildflowers, springSky instead // pinks โ†’ use cherryBlossoms instead // springBlossoms โ†’ use cherryBlossomsPeak instead // accents.flower โ†’ use flowers.wildflower instead ``` #### Season Mood Summary | Season | Primary Colors | Mood | |--------|---------------|------| | **Spring** | `springFoliage`, `cherryBlossomsPeak`, `wildflowers` | Renewal, hope | | **Summer** | `greens`, `cherryBlossoms` | Growth, warmth | | **Autumn** | `autumn`, `autumnReds` | Harvest, reflection | | **Winter** | `winter` (frost, snow, frosted pines) | Rest, stillness | ### Seasonal Weather Effects ```svelte <!-- Winter: Snowfall --> {#if isWinter} <SnowfallLayer count={40} zIndex={5} opacity={{ min: 0.4, max: 0.8 }} spawnDelay={8} /> {/if} <!-- Spring: Cherry blossom petals --> {#if isSpring} <FallingPetalsLayer count={80} zIndex={100} opacity={{ min: 0.5, max: 0.9 }} /> {/if} <!-- Autumn: Falling leaves (tied to trees) --> {#if isAutumn} <FallingLeavesLayer trees={forestTrees} season={$season} minLeavesPerTree={2} maxLeavesPerTree={4} /> {/if} ``` ### Seasonal Background Gradients
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub