@autumnsgrove/groveengine 0.7.0 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/components/OnboardingChecklist.svelte +2 -2
  2. package/dist/components/WispButton.svelte +83 -0
  3. package/dist/components/WispButton.svelte.d.ts +49 -0
  4. package/dist/components/WispPanel.svelte +1093 -0
  5. package/dist/components/WispPanel.svelte.d.ts +49 -0
  6. package/dist/components/custom/TableOfContents.svelte +12 -1
  7. package/dist/components/quota/UpgradePrompt.svelte +1 -0
  8. package/dist/config/wisp.d.ts +145 -0
  9. package/dist/config/wisp.js +175 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.js +3 -0
  12. package/dist/server/inference-client.d.ts +139 -0
  13. package/dist/server/inference-client.js +294 -0
  14. package/dist/ui/components/content/RoadmapPreview.svelte +91 -0
  15. package/dist/ui/components/content/RoadmapPreview.svelte.d.ts +36 -0
  16. package/dist/ui/components/content/index.d.ts +1 -0
  17. package/dist/ui/components/content/index.js +1 -0
  18. package/dist/ui/components/nature/Logo.svelte +260 -0
  19. package/dist/ui/components/nature/Logo.svelte.d.ts +14 -0
  20. package/dist/ui/components/nature/botanical/Acorn.svelte +48 -0
  21. package/dist/ui/components/nature/botanical/Acorn.svelte.d.ts +8 -0
  22. package/dist/ui/components/nature/botanical/Berry.svelte +67 -0
  23. package/dist/ui/components/nature/botanical/Berry.svelte.d.ts +8 -0
  24. package/dist/ui/components/nature/botanical/DandelionPuff.svelte +98 -0
  25. package/dist/ui/components/nature/botanical/DandelionPuff.svelte.d.ts +8 -0
  26. package/dist/ui/components/nature/botanical/FallingLeavesLayer.svelte +170 -0
  27. package/dist/ui/components/nature/botanical/FallingLeavesLayer.svelte.d.ts +35 -0
  28. package/dist/ui/components/nature/botanical/FallingPetalsLayer.svelte +174 -0
  29. package/dist/ui/components/nature/botanical/FallingPetalsLayer.svelte.d.ts +25 -0
  30. package/dist/ui/components/nature/botanical/Leaf.svelte +77 -0
  31. package/dist/ui/components/nature/botanical/Leaf.svelte.d.ts +10 -0
  32. package/dist/ui/components/nature/botanical/LeafFalling.svelte +186 -0
  33. package/dist/ui/components/nature/botanical/LeafFalling.svelte.d.ts +22 -0
  34. package/dist/ui/components/nature/botanical/PetalFalling.svelte +266 -0
  35. package/dist/ui/components/nature/botanical/PetalFalling.svelte.d.ts +25 -0
  36. package/dist/ui/components/nature/botanical/PineCone.svelte +61 -0
  37. package/dist/ui/components/nature/botanical/PineCone.svelte.d.ts +7 -0
  38. package/dist/ui/components/nature/botanical/Vine.svelte +102 -0
  39. package/dist/ui/components/nature/botanical/Vine.svelte.d.ts +11 -0
  40. package/dist/ui/components/nature/botanical/index.d.ts +10 -0
  41. package/dist/ui/components/nature/botanical/index.js +11 -0
  42. package/dist/ui/components/nature/creatures/Bee.svelte +78 -0
  43. package/dist/ui/components/nature/creatures/Bee.svelte.d.ts +9 -0
  44. package/dist/ui/components/nature/creatures/Bird.svelte +94 -0
  45. package/dist/ui/components/nature/creatures/Bird.svelte.d.ts +11 -0
  46. package/dist/ui/components/nature/creatures/BirdFlying.svelte +83 -0
  47. package/dist/ui/components/nature/creatures/BirdFlying.svelte.d.ts +9 -0
  48. package/dist/ui/components/nature/creatures/Bluebird.svelte +95 -0
  49. package/dist/ui/components/nature/creatures/Bluebird.svelte.d.ts +12 -0
  50. package/dist/ui/components/nature/creatures/Butterfly.svelte +87 -0
  51. package/dist/ui/components/nature/creatures/Butterfly.svelte.d.ts +9 -0
  52. package/dist/ui/components/nature/creatures/Cardinal.svelte +95 -0
  53. package/dist/ui/components/nature/creatures/Cardinal.svelte.d.ts +12 -0
  54. package/dist/ui/components/nature/creatures/Chickadee.svelte +97 -0
  55. package/dist/ui/components/nature/creatures/Chickadee.svelte.d.ts +12 -0
  56. package/dist/ui/components/nature/creatures/Deer.svelte +95 -0
  57. package/dist/ui/components/nature/creatures/Deer.svelte.d.ts +9 -0
  58. package/dist/ui/components/nature/creatures/Firefly.svelte +111 -0
  59. package/dist/ui/components/nature/creatures/Firefly.svelte.d.ts +10 -0
  60. package/dist/ui/components/nature/creatures/Owl.svelte +91 -0
  61. package/dist/ui/components/nature/creatures/Owl.svelte.d.ts +9 -0
  62. package/dist/ui/components/nature/creatures/Rabbit.svelte +90 -0
  63. package/dist/ui/components/nature/creatures/Rabbit.svelte.d.ts +9 -0
  64. package/dist/ui/components/nature/creatures/Robin.svelte +98 -0
  65. package/dist/ui/components/nature/creatures/Robin.svelte.d.ts +12 -0
  66. package/dist/ui/components/nature/creatures/Squirrel.svelte +97 -0
  67. package/dist/ui/components/nature/creatures/Squirrel.svelte.d.ts +9 -0
  68. package/dist/ui/components/nature/creatures/index.d.ts +13 -0
  69. package/dist/ui/components/nature/creatures/index.js +14 -0
  70. package/dist/ui/components/nature/ground/Bush.svelte +57 -0
  71. package/dist/ui/components/nature/ground/Bush.svelte.d.ts +10 -0
  72. package/dist/ui/components/nature/ground/Crocus.svelte +83 -0
  73. package/dist/ui/components/nature/ground/Crocus.svelte.d.ts +12 -0
  74. package/dist/ui/components/nature/ground/Daffodil.svelte +75 -0
  75. package/dist/ui/components/nature/ground/Daffodil.svelte.d.ts +11 -0
  76. package/dist/ui/components/nature/ground/Fern.svelte +72 -0
  77. package/dist/ui/components/nature/ground/Fern.svelte.d.ts +10 -0
  78. package/dist/ui/components/nature/ground/FlowerWild.svelte +60 -0
  79. package/dist/ui/components/nature/ground/FlowerWild.svelte.d.ts +10 -0
  80. package/dist/ui/components/nature/ground/GrassTuft.svelte +49 -0
  81. package/dist/ui/components/nature/ground/GrassTuft.svelte.d.ts +10 -0
  82. package/dist/ui/components/nature/ground/Log.svelte +42 -0
  83. package/dist/ui/components/nature/ground/Log.svelte.d.ts +7 -0
  84. package/dist/ui/components/nature/ground/Mushroom.svelte +48 -0
  85. package/dist/ui/components/nature/ground/Mushroom.svelte.d.ts +9 -0
  86. package/dist/ui/components/nature/ground/MushroomCluster.svelte +41 -0
  87. package/dist/ui/components/nature/ground/MushroomCluster.svelte.d.ts +8 -0
  88. package/dist/ui/components/nature/ground/Rock.svelte +59 -0
  89. package/dist/ui/components/nature/ground/Rock.svelte.d.ts +8 -0
  90. package/dist/ui/components/nature/ground/Stump.svelte +44 -0
  91. package/dist/ui/components/nature/ground/Stump.svelte.d.ts +8 -0
  92. package/dist/ui/components/nature/ground/Tulip.svelte +79 -0
  93. package/dist/ui/components/nature/ground/Tulip.svelte.d.ts +11 -0
  94. package/dist/ui/components/nature/ground/index.d.ts +12 -0
  95. package/dist/ui/components/nature/ground/index.js +13 -0
  96. package/dist/ui/components/nature/index.d.ts +28 -0
  97. package/dist/ui/components/nature/index.js +38 -0
  98. package/dist/ui/components/nature/palette.d.ts +602 -0
  99. package/dist/ui/components/nature/palette.js +472 -0
  100. package/dist/ui/components/nature/sky/Cloud.svelte +122 -0
  101. package/dist/ui/components/nature/sky/Cloud.svelte.d.ts +11 -0
  102. package/dist/ui/components/nature/sky/CloudWispy.svelte +79 -0
  103. package/dist/ui/components/nature/sky/CloudWispy.svelte.d.ts +9 -0
  104. package/dist/ui/components/nature/sky/Moon.svelte +60 -0
  105. package/dist/ui/components/nature/sky/Moon.svelte.d.ts +9 -0
  106. package/dist/ui/components/nature/sky/Rainbow.svelte +101 -0
  107. package/dist/ui/components/nature/sky/Rainbow.svelte.d.ts +8 -0
  108. package/dist/ui/components/nature/sky/Star.svelte +84 -0
  109. package/dist/ui/components/nature/sky/Star.svelte.d.ts +10 -0
  110. package/dist/ui/components/nature/sky/StarCluster.svelte +85 -0
  111. package/dist/ui/components/nature/sky/StarCluster.svelte.d.ts +9 -0
  112. package/dist/ui/components/nature/sky/StarShooting.svelte +90 -0
  113. package/dist/ui/components/nature/sky/StarShooting.svelte.d.ts +9 -0
  114. package/dist/ui/components/nature/sky/Sun.svelte +70 -0
  115. package/dist/ui/components/nature/sky/Sun.svelte.d.ts +9 -0
  116. package/dist/ui/components/nature/sky/index.d.ts +8 -0
  117. package/dist/ui/components/nature/sky/index.js +9 -0
  118. package/dist/ui/components/nature/structural/Birdhouse.svelte +53 -0
  119. package/dist/ui/components/nature/structural/Birdhouse.svelte.d.ts +8 -0
  120. package/dist/ui/components/nature/structural/Bridge.svelte +65 -0
  121. package/dist/ui/components/nature/structural/Bridge.svelte.d.ts +7 -0
  122. package/dist/ui/components/nature/structural/FencePost.svelte +54 -0
  123. package/dist/ui/components/nature/structural/FencePost.svelte.d.ts +8 -0
  124. package/dist/ui/components/nature/structural/GardenGate.svelte +70 -0
  125. package/dist/ui/components/nature/structural/GardenGate.svelte.d.ts +8 -0
  126. package/dist/ui/components/nature/structural/Lantern.svelte +113 -0
  127. package/dist/ui/components/nature/structural/Lantern.svelte.d.ts +10 -0
  128. package/dist/ui/components/nature/structural/Lattice.svelte +89 -0
  129. package/dist/ui/components/nature/structural/Lattice.svelte.d.ts +8 -0
  130. package/dist/ui/components/nature/structural/LatticeWithVine.svelte +89 -0
  131. package/dist/ui/components/nature/structural/LatticeWithVine.svelte.d.ts +11 -0
  132. package/dist/ui/components/nature/structural/StonePath.svelte +48 -0
  133. package/dist/ui/components/nature/structural/StonePath.svelte.d.ts +7 -0
  134. package/dist/ui/components/nature/structural/index.d.ts +8 -0
  135. package/dist/ui/components/nature/structural/index.js +9 -0
  136. package/dist/ui/components/nature/trees/TreeAspen.svelte +163 -0
  137. package/dist/ui/components/nature/trees/TreeAspen.svelte.d.ts +11 -0
  138. package/dist/ui/components/nature/trees/TreeBirch.svelte +186 -0
  139. package/dist/ui/components/nature/trees/TreeBirch.svelte.d.ts +11 -0
  140. package/dist/ui/components/nature/trees/TreeCherry.svelte +108 -0
  141. package/dist/ui/components/nature/trees/TreeCherry.svelte.d.ts +11 -0
  142. package/dist/ui/components/nature/trees/TreePine.svelte +79 -0
  143. package/dist/ui/components/nature/trees/TreePine.svelte.d.ts +11 -0
  144. package/dist/ui/components/nature/trees/index.d.ts +4 -0
  145. package/dist/ui/components/nature/trees/index.js +5 -0
  146. package/dist/ui/components/nature/water/LilyPad.svelte +99 -0
  147. package/dist/ui/components/nature/water/LilyPad.svelte.d.ts +10 -0
  148. package/dist/ui/components/nature/water/Pond.svelte +104 -0
  149. package/dist/ui/components/nature/water/Pond.svelte.d.ts +8 -0
  150. package/dist/ui/components/nature/water/Reeds.svelte +85 -0
  151. package/dist/ui/components/nature/water/Reeds.svelte.d.ts +11 -0
  152. package/dist/ui/components/nature/water/Stream.svelte +98 -0
  153. package/dist/ui/components/nature/water/Stream.svelte.d.ts +8 -0
  154. package/dist/ui/components/nature/water/index.d.ts +4 -0
  155. package/dist/ui/components/nature/water/index.js +5 -0
  156. package/dist/ui/components/nature/weather/SnowfallLayer.svelte +175 -0
  157. package/dist/ui/components/nature/weather/SnowfallLayer.svelte.d.ts +25 -0
  158. package/dist/ui/components/nature/weather/Snowflake.svelte +99 -0
  159. package/dist/ui/components/nature/weather/Snowflake.svelte.d.ts +11 -0
  160. package/dist/ui/components/nature/weather/SnowflakeFalling.svelte +162 -0
  161. package/dist/ui/components/nature/weather/SnowflakeFalling.svelte.d.ts +23 -0
  162. package/dist/ui/components/nature/weather/index.d.ts +3 -0
  163. package/dist/ui/components/nature/weather/index.js +4 -0
  164. package/dist/ui/components/primitives/textarea/textarea.svelte +1 -1
  165. package/dist/ui/components/typography/Alagard.svelte +17 -0
  166. package/dist/ui/components/typography/Alagard.svelte.d.ts +10 -0
  167. package/dist/ui/components/typography/Atkinson.svelte +17 -0
  168. package/dist/ui/components/typography/Atkinson.svelte.d.ts +10 -0
  169. package/dist/ui/components/typography/BodoniModa.svelte +17 -0
  170. package/dist/ui/components/typography/BodoniModa.svelte.d.ts +10 -0
  171. package/dist/ui/components/typography/Calistoga.svelte +17 -0
  172. package/dist/ui/components/typography/Calistoga.svelte.d.ts +10 -0
  173. package/dist/ui/components/typography/Caveat.svelte +17 -0
  174. package/dist/ui/components/typography/Caveat.svelte.d.ts +10 -0
  175. package/dist/ui/components/typography/Cormorant.svelte +17 -0
  176. package/dist/ui/components/typography/Cormorant.svelte.d.ts +10 -0
  177. package/dist/ui/components/typography/Cozette.svelte +17 -0
  178. package/dist/ui/components/typography/Cozette.svelte.d.ts +10 -0
  179. package/dist/ui/components/typography/EBGaramond.svelte +17 -0
  180. package/dist/ui/components/typography/EBGaramond.svelte.d.ts +10 -0
  181. package/dist/ui/components/typography/FontProvider.svelte +98 -0
  182. package/dist/ui/components/typography/FontProvider.svelte.d.ts +17 -0
  183. package/dist/ui/components/typography/Fraunces.svelte +17 -0
  184. package/dist/ui/components/typography/Fraunces.svelte.d.ts +10 -0
  185. package/dist/ui/components/typography/IBMPlexMono.svelte +17 -0
  186. package/dist/ui/components/typography/IBMPlexMono.svelte.d.ts +10 -0
  187. package/dist/ui/components/typography/InstrumentSans.svelte +17 -0
  188. package/dist/ui/components/typography/InstrumentSans.svelte.d.ts +10 -0
  189. package/dist/ui/components/typography/Lexend.svelte +17 -0
  190. package/dist/ui/components/typography/Lexend.svelte.d.ts +10 -0
  191. package/dist/ui/components/typography/Lora.svelte +17 -0
  192. package/dist/ui/components/typography/Lora.svelte.d.ts +10 -0
  193. package/dist/ui/components/typography/Luciole.svelte +17 -0
  194. package/dist/ui/components/typography/Luciole.svelte.d.ts +10 -0
  195. package/dist/ui/components/typography/Manrope.svelte +17 -0
  196. package/dist/ui/components/typography/Manrope.svelte.d.ts +10 -0
  197. package/dist/ui/components/typography/Merriweather.svelte +17 -0
  198. package/dist/ui/components/typography/Merriweather.svelte.d.ts +10 -0
  199. package/dist/ui/components/typography/Nunito.svelte +17 -0
  200. package/dist/ui/components/typography/Nunito.svelte.d.ts +10 -0
  201. package/dist/ui/components/typography/OpenDyslexic.svelte +17 -0
  202. package/dist/ui/components/typography/OpenDyslexic.svelte.d.ts +10 -0
  203. package/dist/ui/components/typography/PlusJakartaSans.svelte +17 -0
  204. package/dist/ui/components/typography/PlusJakartaSans.svelte.d.ts +10 -0
  205. package/dist/ui/components/typography/Quicksand.svelte +17 -0
  206. package/dist/ui/components/typography/Quicksand.svelte.d.ts +10 -0
  207. package/dist/ui/components/typography/README.md +153 -0
  208. package/dist/ui/components/typography/index.d.ts +23 -0
  209. package/dist/ui/components/typography/index.js +42 -0
  210. package/dist/ui/components/ui/GlassCarousel.svelte +446 -0
  211. package/dist/ui/components/ui/GlassCarousel.svelte.d.ts +57 -0
  212. package/dist/ui/components/ui/GlassConfirmDialog.svelte +2 -1
  213. package/dist/ui/components/ui/GlassLogo.svelte +423 -0
  214. package/dist/ui/components/ui/GlassLogo.svelte.d.ts +23 -0
  215. package/dist/ui/components/ui/GlassNavbar.svelte +120 -0
  216. package/dist/ui/components/ui/GlassNavbar.svelte.d.ts +42 -0
  217. package/dist/ui/components/ui/GlassOverlay.svelte +1 -1
  218. package/dist/ui/components/ui/Logo.svelte +47 -52
  219. package/dist/ui/components/ui/Logo.svelte.d.ts +4 -3
  220. package/dist/ui/components/ui/index.d.ts +3 -0
  221. package/dist/ui/components/ui/index.js +3 -0
  222. package/dist/ui/index.d.ts +1 -0
  223. package/dist/ui/index.js +2 -0
  224. package/dist/ui/styles/grove.css +15 -1
  225. package/dist/ui/vineyard/index.d.ts +9 -0
  226. package/dist/ui/vineyard/index.js +8 -0
  227. package/dist/utils/csrf.js +5 -2
  228. package/dist/utils/readability.d.ts +89 -0
  229. package/dist/utils/readability.js +204 -0
  230. package/package.json +27 -1
@@ -0,0 +1,472 @@
1
+ /**
2
+ * Shared Nature Palette
3
+ *
4
+ * A unified color system for all forest/nature components.
5
+ * All components should import from here to maintain visual cohesion.
6
+ *
7
+ * Design Philosophy:
8
+ * - Colors are drawn from real forest environments (Pacific Northwest inspiration)
9
+ * - Organized by depth: darker = further away, lighter = closer (atmospheric perspective)
10
+ * - Seasonal variants allow trees to change with autumn toggle
11
+ * - Accents are intentionally limited to 1-2 unique colors per component type
12
+ */
13
+ // =============================================================================
14
+ // CORE PALETTES
15
+ // =============================================================================
16
+ /**
17
+ * Green foliage colors - from dark forest depths to pale spring leaves
18
+ * Organized dark-to-light for depth layering in forest scenes.
19
+ * darkForest/deepGreen: background trees (atmospheric distance)
20
+ * grove/meadow: mid-ground trees (Grove brand green at grove)
21
+ * spring/mint/pale: foreground foliage, new growth
22
+ */
23
+ export const greens = {
24
+ darkForest: '#0d4a1c',
25
+ deepGreen: '#166534',
26
+ grove: '#16a34a', // Grove brand primary green
27
+ meadow: '#22c55e',
28
+ spring: '#4ade80',
29
+ mint: '#86efac',
30
+ pale: '#bbf7d0'
31
+ };
32
+ /**
33
+ * Bark and wood tones
34
+ * Used for tree trunks, branches, fences, and structural elements.
35
+ * Warmer browns complement the green foliage.
36
+ */
37
+ export const bark = {
38
+ darkBark: '#3d2817', // Oak, older trees
39
+ bark: '#5d4037', // Standard trunk color
40
+ warmBark: '#6B4423', // Pine, cedar tones
41
+ lightBark: '#8b6914' // Young trees, sun-exposed wood
42
+ };
43
+ /**
44
+ * Earth and soil tones
45
+ * Ground elements, rocks, paths. Neutral grays for stone
46
+ * to contrast with warm browns of wood.
47
+ */
48
+ export const earth = {
49
+ soil: '#3e2723', // Rich forest floor
50
+ mud: '#5d4037', // Wet earth (same as bark.bark - natural connection)
51
+ clay: '#8d6e63', // Exposed clay
52
+ sand: '#d7ccc8', // Paths, dry ground
53
+ stone: '#78716c', // Neutral gray rocks
54
+ pebble: '#a8a29e', // Lighter stones
55
+ slate: '#57534e' // Dark stone accents
56
+ };
57
+ /**
58
+ * Cream and natural off-whites
59
+ * Special bark colors (aspen, birch) and neutral backgrounds.
60
+ * Birch has pure white bark with slight warmth.
61
+ * Aspen bark is cream/pale green undertone.
62
+ */
63
+ export const natural = {
64
+ cream: '#fef9ef', // Warm white, backgrounds
65
+ aspenBark: '#e8e4d9', // Aspen tree distinctive pale bark
66
+ bone: '#e8e4dc', // Weathered wood, antlers
67
+ mushroom: '#d4c8be', // Mushroom stems, pale fungi
68
+ birchWhite: '#f5f5f0' // Birch tree distinctive white bark
69
+ };
70
+ // =============================================================================
71
+ // SEASONAL PALETTES - SPRING
72
+ // =============================================================================
73
+ /**
74
+ * Spring foliage - fresh yellow-green growth
75
+ * The distinctive bright yellow-green of new spring leaves.
76
+ * Organized dark-to-light for depth layering.
77
+ */
78
+ export const springFoliage = {
79
+ sprout: '#65a30d', // Dark spring green - distant new growth
80
+ newLeaf: '#84cc16', // Classic spring lime - mid-ground
81
+ freshGreen: '#a3e635', // Bright yellow-green - foreground
82
+ budding: '#bef264', // Pale new leaf
83
+ tender: '#d9f99d' // Very pale spring green
84
+ };
85
+ /**
86
+ * Spring sky colors
87
+ * Clear, bright spring atmosphere.
88
+ */
89
+ export const springSky = {
90
+ clear: '#7dd3fc', // Clear spring morning sky
91
+ soft: '#bae6fd' // Pale spring sky
92
+ };
93
+ /**
94
+ * Wildflowers - spring and general meadow flowers
95
+ * Unified wildflower palette for all seasons.
96
+ * Used for spring wildflowers and general meadow accents.
97
+ */
98
+ export const wildflowers = {
99
+ // Yellows
100
+ buttercup: '#facc15', // Bright yellow - buttercups, dandelions
101
+ daffodil: '#fde047', // Pale yellow - daffodils
102
+ // Purples and violets
103
+ crocus: '#a78bfa', // Early spring crocus
104
+ violet: '#8b5cf6', // Wild violets
105
+ purple: '#a855f7', // Lupine, thistle
106
+ lavender: '#c4b5fd', // Distant flower masses, lilacs
107
+ // Pinks and reds
108
+ tulipPink: '#f9a8d4', // Soft tulip pink
109
+ tulipRed: '#fb7185', // Bright tulip red
110
+ // Neutrals
111
+ white: '#fefefe' // Daisies, trillium
112
+ };
113
+ /**
114
+ * Cherry blossoms - standard summer/default
115
+ * Used for cherry trees during summer.
116
+ * Pink blooms from dense to pale.
117
+ */
118
+ export const cherryBlossoms = {
119
+ deep: '#db2777', // Dense bloom centers
120
+ standard: '#ec4899', // Standard blossom
121
+ light: '#f472b6', // Light petals
122
+ pale: '#f9a8d4', // Pale blossoms
123
+ falling: '#fbcfe8' // Falling petals, distant blooms
124
+ };
125
+ /**
126
+ * Cherry blossoms peak bloom - vibrant spring version
127
+ * Extra saturated for spring when cherry blossoms are at their most beautiful.
128
+ * One shade brighter than standard cherryBlossoms.
129
+ */
130
+ export const cherryBlossomsPeak = {
131
+ deep: '#ec4899', // Vibrant deep pink
132
+ standard: '#f472b6', // Bright cherry blossom
133
+ light: '#f9a8d4', // Soft rose petals
134
+ pale: '#fbcfe8', // Pale blush
135
+ falling: '#fce7f3' // Very pale falling petals
136
+ };
137
+ // =============================================================================
138
+ // SEASONAL PALETTES - AUTUMN
139
+ // =============================================================================
140
+ /**
141
+ * Autumn/Fall foliage colors
142
+ * Replaces greens for deciduous trees during autumn season.
143
+ * Organized warm-to-bright for depth layering (dark rust = far, bright gold = near).
144
+ * Aspen and birch use gold/honey for their signature golden fall color.
145
+ */
146
+ export const autumn = {
147
+ rust: '#9a3412', // Deep background foliage
148
+ ember: '#c2410c', // Oak-like autumn
149
+ pumpkin: '#ea580c', // Maple mid-tones
150
+ amber: '#d97706', // Classic fall amber
151
+ gold: '#eab308', // Aspen/birch golden yellow
152
+ honey: '#facc15', // Bright foreground leaves
153
+ straw: '#fde047' // Pale dying leaves
154
+ };
155
+ /**
156
+ * Autumn reds for cherry/maple foliage
157
+ * Cherry trees don't just lose pink - they turn red/crimson in fall.
158
+ * Also used for Japanese maple trees and other red autumn foliage.
159
+ */
160
+ export const autumnReds = {
161
+ crimson: '#be123c', // Deep maple red
162
+ scarlet: '#e11d48', // Bright cherry leaves
163
+ rose: '#f43f5e', // Light autumn cherry
164
+ coral: '#fb7185' // Pale autumn accent
165
+ };
166
+ // =============================================================================
167
+ // SEASONAL PALETTES - WINTER
168
+ // =============================================================================
169
+ /**
170
+ * Winter colors - frost, snow, and ice
171
+ * Used for winter mode: snow-dusted evergreens, frozen landscape.
172
+ * Deciduous trees go bare, showing only branches.
173
+ */
174
+ export const winter = {
175
+ // Snow and ice
176
+ snow: '#f8fafc', // Pure fresh snow
177
+ frost: '#e2e8f0', // Frosted surfaces
178
+ ice: '#cbd5e1', // Ice blue-gray
179
+ glacier: '#94a3b8', // Deep ice shadows
180
+ // Frosted evergreen greens (muted, cool tones)
181
+ frostedPine: '#2d4a3e', // Snow-dusted dark pine
182
+ winterGreen: '#3d5a4a', // Muted forest green
183
+ coldSpruce: '#4a6355', // Cool spruce color
184
+ // Winter sky
185
+ winterSky: '#e0f2fe', // Pale winter sky
186
+ twilight: '#bfdbfe', // Evening winter sky
187
+ overcast: '#cbd5e1', // Gray overcast
188
+ // Bare branch colors
189
+ bareBranch: '#78716c', // Gray-brown bare wood
190
+ frostedBark: '#a8a29e', // Frost-touched bark
191
+ coldWood: '#57534e', // Dark winter wood
192
+ // Winter hills (snowy ground, back to front)
193
+ hillDeep: '#475569', // Far hills - cool slate
194
+ hillMid: '#7c8ca3', // Mid hills - gray-blue
195
+ hillNear: '#c7d2e0', // Near hills - pale snow
196
+ hillFront: '#f1f5f9' // Front hills - fresh snow
197
+ };
198
+ // =============================================================================
199
+ // COMPONENT-SPECIFIC ACCENTS
200
+ // =============================================================================
201
+ /**
202
+ * Accent colors for specific components
203
+ * Each category gets unique colors that don't fit the main palettes.
204
+ * These add visual interest without breaking the natural cohesion.
205
+ */
206
+ export const accents = {
207
+ /** Mushroom caps and details - fairy tale forest pops of color */
208
+ mushroom: {
209
+ redCap: '#dc2626', // Amanita-style red (toxic but iconic)
210
+ orangeCap: '#ea580c', // Chanterelle-inspired
211
+ brownCap: '#78350f', // Porcini/common mushroom
212
+ spots: '#fefefe', // White spots on caps
213
+ gill: '#fde8e8' // Pale pink gills underneath
214
+ },
215
+ /**
216
+ * @deprecated Use the top-level `wildflowers` export instead. Will be removed in v1.0.
217
+ *
218
+ * Historical context: Flower colors were originally split between two places:
219
+ * - `spring` palette had wildflower accents (crocus, lilac, tulips, buttercup, daffodil)
220
+ * - `accents.flower` had generic flower colors (purple, violet, yellow, white, lavender)
221
+ *
222
+ * This caused confusion and duplicate values. Now unified in the top-level `wildflowers`
223
+ * palette which contains all meadow flower colors in one place.
224
+ */
225
+ flower: {
226
+ purple: wildflowers.purple,
227
+ violet: wildflowers.violet,
228
+ yellow: wildflowers.buttercup,
229
+ white: wildflowers.white,
230
+ lavender: wildflowers.lavender
231
+ },
232
+ /** Firefly bioluminescence - warm yellow-green glow */
233
+ firefly: {
234
+ glow: '#fef08a', // Primary glow (pale yellow)
235
+ warmGlow: '#fde047', // Brighter intensity
236
+ body: '#365314' // Dark green body
237
+ },
238
+ /** Berry colors - rich and saturated */
239
+ berry: {
240
+ ripe: '#7c2d12', // Blackberry/dark berry
241
+ elderberry: '#581c87', // Deep purple elderberry
242
+ red: '#b91c1c' // Holly berries, winterberry
243
+ },
244
+ /** Water and pond colors - cool blue spectrum */
245
+ water: {
246
+ surface: '#7dd3fc', // Reflecting sky
247
+ deep: '#0284c7', // Deeper water
248
+ shallow: '#bae6fd', // Shallow edges
249
+ lily: '#bbf7d0' // Lily pad green (ties to greens)
250
+ },
251
+ /** Sky elements - time of day variations */
252
+ sky: {
253
+ dayLight: '#e0f2fe', // Pale daytime sky
254
+ dayMid: '#7dd3fc', // Blue sky
255
+ sunset: '#fed7aa', // Golden hour
256
+ night: '#1e293b', // Night sky
257
+ star: '#fefce8' // Star/twinkle color
258
+ },
259
+ /** Bird colors - winter, spring, and year-round species */
260
+ bird: {
261
+ // Cardinal (winter)
262
+ cardinalRed: '#dc2626', // Northern Cardinal vivid red
263
+ cardinalMask: '#1a1a1a', // Cardinal black mask
264
+ cardinalBeak: '#f97316', // Orange-red cone beak
265
+ // Chickadee (year-round)
266
+ chickadeeCap: '#1a1a1a', // Black-capped Chickadee cap/bib
267
+ chickadeeCheek: '#fafafa', // White cheek patch
268
+ chickadeeBody: '#6b7280', // Gray back feathers
269
+ chickadeeBelly: '#fef3c7', // Buff/cream underside
270
+ // Robin (spring herald!)
271
+ robinBody: '#4a4a4a', // American Robin dark gray-brown
272
+ robinWing: '#3a3a3a', // Slightly darker wing
273
+ robinWingDark: '#2a2a2a', // Wing shadow detail
274
+ robinBreast: '#c2410c', // American Robin orange-red breast
275
+ robinBreastLight: '#dc5015', // Breast highlight
276
+ robinBeak: '#f59e0b', // Yellow-orange beak
277
+ // Bluebird (spring/summer)
278
+ bluebirdBody: '#3b82f6', // Eastern Bluebird vivid blue
279
+ bluebirdWing: '#2563eb', // Slightly darker blue wings
280
+ bluebirdBreast: '#ea580c' // Rusty orange breast
281
+ }
282
+ };
283
+ // =============================================================================
284
+ // MIDNIGHT BLOOM PALETTE
285
+ // =============================================================================
286
+ /**
287
+ * Midnight Bloom - the far vision
288
+ * A late-night tea café palette: deep plums, warm amber, soft golds.
289
+ * Used for the Midnight Bloom section of the roadmap and future theming.
290
+ */
291
+ export const midnightBloom = {
292
+ deepPlum: '#581c87', // Night sky depth
293
+ purple: '#7c3aed', // Soft purple glow
294
+ violet: '#8b5cf6', // Lighter accent
295
+ amber: '#f59e0b', // Lantern warmth
296
+ warmCream: '#fef3c7', // Tea steam, page glow
297
+ softGold: '#fcd34d' // Fairy lights
298
+ };
299
+ /**
300
+ * Get appropriate foliage colors based on season
301
+ * Used by deciduous trees to switch from greens to seasonal palette.
302
+ * Spring uses bright yellow-greens of new growth.
303
+ * Autumn uses warm oranges and golds.
304
+ * In winter, returns frosted evergreen colors (for pines that keep needles).
305
+ * @example getSeasonalGreens('spring') // returns spring foliage mapped to greens structure
306
+ * @example getSeasonalGreens('autumn') // returns autumn palette
307
+ */
308
+ export function getSeasonalGreens(season = 'summer') {
309
+ if (season === 'spring') {
310
+ // Fresh yellow-green spring foliage - mapped to match greens structure
311
+ return {
312
+ darkForest: springFoliage.sprout,
313
+ deepGreen: springFoliage.sprout,
314
+ grove: springFoliage.newLeaf,
315
+ meadow: springFoliage.freshGreen,
316
+ spring: springFoliage.budding,
317
+ mint: springFoliage.budding,
318
+ pale: springFoliage.tender
319
+ };
320
+ }
321
+ if (season === 'autumn') {
322
+ return autumn;
323
+ }
324
+ if (season === 'winter') {
325
+ // Frosted evergreen colors for pines/conifers
326
+ return {
327
+ darkForest: winter.frostedPine,
328
+ deepGreen: winter.frostedPine,
329
+ grove: winter.winterGreen,
330
+ meadow: winter.winterGreen,
331
+ spring: winter.coldSpruce,
332
+ mint: winter.coldSpruce,
333
+ pale: winter.coldSpruce
334
+ };
335
+ }
336
+ return greens;
337
+ }
338
+ /**
339
+ * Get cherry tree colors based on season
340
+ * Spring: Extra vibrant pink blossoms (peak bloom!)
341
+ * Summer: Standard pink blossoms
342
+ * Autumn: Turn red/crimson like real cherry leaves
343
+ * Winter: Bare (no blossoms)
344
+ * @example getCherryColors('spring') // returns cherryBlossomsPeak (vibrant)
345
+ * @example getCherryColors('autumn') // returns autumnReds palette
346
+ */
347
+ export function getCherryColors(season = 'spring') {
348
+ if (season === 'spring') {
349
+ // Peak bloom - extra vibrant pinks!
350
+ return cherryBlossomsPeak;
351
+ }
352
+ if (season === 'autumn') {
353
+ return autumnReds;
354
+ }
355
+ if (season === 'winter') {
356
+ // Return null to indicate bare tree (no foliage to render)
357
+ return null;
358
+ }
359
+ return cherryBlossoms;
360
+ }
361
+ /**
362
+ * Check if a tree should be bare (no foliage) based on season
363
+ * Deciduous trees lose leaves in winter.
364
+ */
365
+ export function isTreeBare(treeType, season) {
366
+ if (season !== 'winter')
367
+ return false;
368
+ // Evergreen types keep their needles
369
+ const evergreens = ['pine', 'spruce', 'fir', 'cedar'];
370
+ return !evergreens.includes(treeType.toLowerCase());
371
+ }
372
+ /**
373
+ * Pick a random color from a palette object
374
+ * Useful for adding natural variation to forests.
375
+ * @example pickRandom(greens) // returns random green like '#16a34a'
376
+ */
377
+ export function pickRandom(palette) {
378
+ const values = Object.values(palette);
379
+ return values[Math.floor(Math.random() * values.length)];
380
+ }
381
+ /**
382
+ * Pick a random color from a subset of palette keys
383
+ * More controlled randomization when you want specific options.
384
+ * @example pickFrom(greens, ['grove', 'meadow']) // only picks from those two
385
+ */
386
+ export function pickFrom(palette, keys) {
387
+ const key = keys[Math.floor(Math.random() * keys.length)];
388
+ return palette[key];
389
+ }
390
+ // =============================================================================
391
+ // BACKWARD COMPATIBILITY ALIASES
392
+ // =============================================================================
393
+ /**
394
+ * @deprecated Use `cherryBlossoms` instead. Will be removed in v1.0.
395
+ * Alias for backward compatibility with components using 'pinks'.
396
+ */
397
+ export const pinks = {
398
+ deepPink: cherryBlossoms.deep,
399
+ pink: cherryBlossoms.standard,
400
+ rose: cherryBlossoms.light,
401
+ blush: cherryBlossoms.pale,
402
+ palePink: cherryBlossoms.falling
403
+ };
404
+ /**
405
+ * @deprecated Use `cherryBlossomsPeak` instead. Will be removed in v1.0.
406
+ * Alias for backward compatibility with components using 'springBlossoms'.
407
+ */
408
+ export const springBlossoms = {
409
+ deepPink: cherryBlossomsPeak.deep,
410
+ pink: cherryBlossomsPeak.standard,
411
+ rose: cherryBlossomsPeak.light,
412
+ blush: cherryBlossomsPeak.pale,
413
+ palePink: cherryBlossomsPeak.falling
414
+ };
415
+ /**
416
+ * @deprecated Use `springFoliage`, `wildflowers`, `springSky` instead. Will be removed in v1.0.
417
+ * Combined spring palette for backward compatibility.
418
+ * New code should import the specific palettes directly.
419
+ */
420
+ export const spring = {
421
+ // Fresh growth greens (from springFoliage)
422
+ sprout: springFoliage.sprout,
423
+ newLeaf: springFoliage.newLeaf,
424
+ freshGreen: springFoliage.freshGreen,
425
+ budding: springFoliage.budding,
426
+ tender: springFoliage.tender,
427
+ // Sky and atmosphere (from springSky)
428
+ clearSky: springSky.clear,
429
+ softSky: springSky.soft,
430
+ // Wildflower accents (from wildflowers)
431
+ buttercup: wildflowers.buttercup,
432
+ daffodil: wildflowers.daffodil,
433
+ crocus: wildflowers.crocus,
434
+ lilac: wildflowers.lavender,
435
+ tulipPink: wildflowers.tulipPink,
436
+ tulipRed: wildflowers.tulipRed,
437
+ // Hills and ground (references to greens for depth layering)
438
+ hillDeep: greens.deepGreen,
439
+ hillMid: greens.meadow,
440
+ hillNear: greens.mint,
441
+ hillFront: greens.pale
442
+ };
443
+ // =============================================================================
444
+ // FULL PALETTE EXPORT
445
+ // =============================================================================
446
+ export const naturePalette = {
447
+ // Core
448
+ greens,
449
+ bark,
450
+ earth,
451
+ natural,
452
+ // Spring
453
+ springFoliage,
454
+ springSky,
455
+ wildflowers,
456
+ cherryBlossoms,
457
+ cherryBlossomsPeak,
458
+ // Autumn
459
+ autumn,
460
+ autumnReds,
461
+ // Winter
462
+ winter,
463
+ // Accents
464
+ accents,
465
+ // Special
466
+ midnightBloom,
467
+ // Deprecated aliases (for backward compat)
468
+ spring,
469
+ pinks,
470
+ springBlossoms
471
+ };
472
+ export default naturePalette;
@@ -0,0 +1,122 @@
1
+ <!--
2
+ Grove — A place to Be
3
+ Copyright (c) 2025 Autumn Brown
4
+ Licensed under AGPL-3.0
5
+ -->
6
+ <script lang="ts">
7
+ interface Props {
8
+ class?: string;
9
+ color?: string;
10
+ animate?: boolean;
11
+ speed?: 'slow' | 'normal' | 'fast';
12
+ variant?: 'fluffy' | 'wispy' | 'puffy' | 'scattered';
13
+ direction?: 'left' | 'right';
14
+ }
15
+
16
+ let {
17
+ class: className = 'w-16 h-8',
18
+ color = 'white',
19
+ animate = true,
20
+ speed = 'normal',
21
+ variant = 'fluffy',
22
+ direction = 'right'
23
+ }: Props = $props();
24
+
25
+ const duration = $derived(
26
+ {
27
+ slow: '120s',
28
+ normal: '80s',
29
+ fast: '50s'
30
+ }[speed]
31
+ );
32
+
33
+ const animClass = $derived(animate ? `drift-${direction}` : '');
34
+ </script>
35
+
36
+ {#if variant === 'fluffy'}
37
+ <!-- Classic fluffy cumulus cloud -->
38
+ <svg
39
+ class="{className} {animClass}"
40
+ xmlns="http://www.w3.org/2000/svg"
41
+ viewBox="0 0 100 50"
42
+ style="--drift-duration: {duration}"
43
+ >
44
+ <g opacity="0.9">
45
+ <ellipse fill={color} cx="50" cy="35" rx="35" ry="15" />
46
+ <ellipse fill={color} cx="30" cy="30" rx="22" ry="18" />
47
+ <ellipse fill={color} cx="70" cy="30" rx="22" ry="18" />
48
+ <ellipse fill={color} cx="50" cy="22" rx="25" ry="16" />
49
+ <ellipse fill={color} cx="35" cy="18" rx="18" ry="14" />
50
+ <ellipse fill={color} cx="65" cy="18" rx="18" ry="14" />
51
+ </g>
52
+ </svg>
53
+ {:else if variant === 'wispy'}
54
+ <!-- Thin wispy cirrus cloud -->
55
+ <svg
56
+ class="{className} {animClass}"
57
+ xmlns="http://www.w3.org/2000/svg"
58
+ viewBox="0 0 120 40"
59
+ style="--drift-duration: {duration}"
60
+ >
61
+ <g opacity="0.7">
62
+ <ellipse fill={color} cx="30" cy="20" rx="25" ry="8" />
63
+ <ellipse fill={color} cx="60" cy="22" rx="30" ry="10" />
64
+ <ellipse fill={color} cx="90" cy="18" rx="22" ry="7" />
65
+ <ellipse fill={color} cx="45" cy="15" rx="18" ry="6" />
66
+ <ellipse fill={color} cx="75" cy="25" rx="20" ry="8" />
67
+ </g>
68
+ </svg>
69
+ {:else if variant === 'puffy'}
70
+ <!-- Rounded puffy cloud -->
71
+ <svg
72
+ class="{className} {animClass}"
73
+ xmlns="http://www.w3.org/2000/svg"
74
+ viewBox="0 0 110 55"
75
+ style="--drift-duration: {duration}"
76
+ >
77
+ <g opacity="0.85">
78
+ <circle fill={color} cx="25" cy="35" r="20" />
79
+ <circle fill={color} cx="45" cy="28" r="24" />
80
+ <circle fill={color} cx="55" cy="35" r="22" />
81
+ <circle fill={color} cx="75" cy="30" r="20" />
82
+ <circle fill={color} cx="90" cy="38" r="18" />
83
+ <ellipse fill={color} cx="55" cy="40" rx="40" ry="15" />
84
+ </g>
85
+ </svg>
86
+ {:else if variant === 'scattered'}
87
+ <!-- Scattered small cloudlets -->
88
+ <svg
89
+ class="{className} {animClass}"
90
+ xmlns="http://www.w3.org/2000/svg"
91
+ viewBox="0 0 100 45"
92
+ style="--drift-duration: {duration}"
93
+ >
94
+ <g opacity="0.75">
95
+ <ellipse fill={color} cx="20" cy="25" rx="18" ry="12" />
96
+ <ellipse fill={color} cx="30" cy="18" rx="12" ry="10" />
97
+ <ellipse fill={color} cx="55" cy="30" rx="20" ry="14" />
98
+ <ellipse fill={color} cx="65" cy="22" rx="14" ry="11" />
99
+ <ellipse fill={color} cx="80" cy="28" rx="16" ry="13" />
100
+ </g>
101
+ </svg>
102
+ {/if}
103
+
104
+ <style>
105
+ @keyframes drift-right {
106
+ 0% { transform: translateX(-10vw); }
107
+ 100% { transform: translateX(110vw); }
108
+ }
109
+
110
+ @keyframes drift-left {
111
+ 0% { transform: translateX(110vw); }
112
+ 100% { transform: translateX(-10vw); }
113
+ }
114
+
115
+ .drift-right {
116
+ animation: drift-right var(--drift-duration, 80s) linear infinite;
117
+ }
118
+
119
+ .drift-left {
120
+ animation: drift-left var(--drift-duration, 80s) linear infinite;
121
+ }
122
+ </style>
@@ -0,0 +1,11 @@
1
+ interface Props {
2
+ class?: string;
3
+ color?: string;
4
+ animate?: boolean;
5
+ speed?: 'slow' | 'normal' | 'fast';
6
+ variant?: 'fluffy' | 'wispy' | 'puffy' | 'scattered';
7
+ direction?: 'left' | 'right';
8
+ }
9
+ declare const Cloud: import("svelte").Component<Props, {}, "">;
10
+ type Cloud = ReturnType<typeof Cloud>;
11
+ export default Cloud;
@@ -0,0 +1,79 @@
1
+ <!--
2
+ Grove — A place to Be
3
+ Copyright (c) 2025 Autumn Brown
4
+ Licensed under AGPL-3.0
5
+ -->
6
+ <script lang="ts">
7
+ interface Props {
8
+ class?: string;
9
+ color?: string;
10
+ animate?: boolean;
11
+ speed?: 'slow' | 'normal' | 'fast';
12
+ }
13
+
14
+ let {
15
+ class: className = 'w-20 h-6',
16
+ color = 'white',
17
+ animate = true,
18
+ speed = 'slow'
19
+ }: Props = $props();
20
+
21
+ const duration = $derived(
22
+ {
23
+ slow: '80s',
24
+ normal: '50s',
25
+ fast: '30s'
26
+ }[speed]
27
+ );
28
+ </script>
29
+
30
+ <!-- Thin wispy cirrus cloud -->
31
+ <svg
32
+ class="{className} {animate ? 'drift' : ''}"
33
+ xmlns="http://www.w3.org/2000/svg"
34
+ viewBox="0 0 120 30"
35
+ style="--drift-duration: {duration}"
36
+ >
37
+ <!-- Main wispy cloud body - soft feathery shapes -->
38
+ <g opacity="0.5">
39
+ <!-- Central wisp strand with soft cloud-like bulges -->
40
+ <ellipse fill={color} cx="60" cy="15" rx="50" ry="4" opacity="0.4" />
41
+
42
+ <!-- Feathery tendrils extending from main body -->
43
+ <ellipse fill={color} cx="25" cy="13" rx="18" ry="5" opacity="0.5" />
44
+ <ellipse fill={color} cx="50" cy="11" rx="15" ry="4" opacity="0.45" />
45
+ <ellipse fill={color} cx="75" cy="14" rx="20" ry="5" opacity="0.5" />
46
+ <ellipse fill={color} cx="100" cy="12" rx="15" ry="4" opacity="0.4" />
47
+
48
+ <!-- Upper wisps -->
49
+ <ellipse fill={color} cx="35" cy="8" rx="12" ry="3" opacity="0.35" />
50
+ <ellipse fill={color} cx="65" cy="7" rx="10" ry="3" opacity="0.3" />
51
+ <ellipse fill={color} cx="90" cy="9" rx="14" ry="3" opacity="0.35" />
52
+
53
+ <!-- Lower tendrils for depth -->
54
+ <ellipse fill={color} cx="40" cy="18" rx="10" ry="2.5" opacity="0.3" />
55
+ <ellipse fill={color} cx="70" cy="19" rx="12" ry="3" opacity="0.35" />
56
+ <ellipse fill={color} cx="95" cy="17" rx="8" ry="2" opacity="0.25" />
57
+
58
+ <!-- Fine wispy edges -->
59
+ <ellipse fill={color} cx="15" cy="14" rx="8" ry="2" opacity="0.25" />
60
+ <ellipse fill={color} cx="110" cy="13" rx="8" ry="2" opacity="0.25" />
61
+ </g>
62
+
63
+ <!-- Secondary wisp layer for more depth -->
64
+ <g opacity="0.35">
65
+ <ellipse fill={color} cx="45" cy="20" rx="25" ry="3" opacity="0.4" />
66
+ <ellipse fill={color} cx="80" cy="6" rx="20" ry="2.5" opacity="0.35" />
67
+ </g>
68
+ </svg>
69
+
70
+ <style>
71
+ @keyframes drift {
72
+ 0% { transform: translateX(0); }
73
+ 100% { transform: translateX(20px); }
74
+ }
75
+
76
+ .drift {
77
+ animation: drift var(--drift-duration, 80s) ease-in-out infinite alternate;
78
+ }
79
+ </style>