@autumnsgrove/groveengine 0.3.2 → 0.4.0

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 (270) hide show
  1. package/dist/auth/index.d.ts +2 -0
  2. package/dist/auth/index.js +5 -0
  3. package/dist/components/admin/GutterManager.svelte +4 -4
  4. package/dist/components/admin/MarkdownEditor.svelte +381 -1311
  5. package/dist/components/admin/MarkdownEditor.svelte.d.ts +2 -8
  6. package/dist/components/admin/composables/index.d.ts +7 -0
  7. package/dist/components/admin/composables/index.js +12 -0
  8. package/dist/components/admin/composables/useAmbientSounds.svelte.d.ts +53 -0
  9. package/dist/components/admin/composables/useAmbientSounds.svelte.js +192 -0
  10. package/dist/components/admin/composables/useCommandPalette.svelte.d.ts +17 -0
  11. package/dist/components/admin/composables/useCommandPalette.svelte.js +118 -0
  12. package/dist/components/admin/composables/useDraftManager.svelte.d.ts +17 -0
  13. package/dist/components/admin/composables/useDraftManager.svelte.js +154 -0
  14. package/dist/components/admin/composables/useEditorTheme.svelte.d.ts +195 -0
  15. package/dist/components/admin/composables/useEditorTheme.svelte.js +182 -0
  16. package/dist/components/admin/composables/useSlashCommands.svelte.d.ts +32 -0
  17. package/dist/components/admin/composables/useSlashCommands.svelte.js +166 -0
  18. package/dist/components/admin/composables/useSnippets.svelte.d.ts +5 -0
  19. package/dist/components/admin/composables/useSnippets.svelte.js +122 -0
  20. package/dist/components/admin/composables/useWritingSession.svelte.d.ts +13 -0
  21. package/dist/components/admin/composables/useWritingSession.svelte.js +100 -0
  22. package/dist/components/custom/ContentWithGutter.svelte +1 -1
  23. package/dist/components/custom/GutterItem.svelte +2 -2
  24. package/dist/config/ai-models.d.ts +25 -0
  25. package/dist/config/ai-models.js +50 -0
  26. package/dist/config/index.d.ts +1 -0
  27. package/dist/config/index.js +4 -0
  28. package/dist/index.d.ts +5 -5
  29. package/dist/index.js +6 -6
  30. package/dist/server/index.d.ts +1 -0
  31. package/dist/server/index.js +4 -0
  32. package/dist/ui/components/charts/ActivityOverview.svelte +293 -0
  33. package/dist/ui/components/charts/ActivityOverview.svelte.d.ts +12 -0
  34. package/dist/ui/components/charts/LOCBar.svelte +129 -0
  35. package/dist/ui/components/charts/LOCBar.svelte.d.ts +21 -0
  36. package/dist/ui/components/charts/RepoBreakdown.svelte +136 -0
  37. package/dist/ui/components/charts/RepoBreakdown.svelte.d.ts +16 -0
  38. package/dist/ui/components/charts/Sparkline.svelte +139 -0
  39. package/dist/ui/components/charts/Sparkline.svelte.d.ts +6 -0
  40. package/dist/ui/components/charts/index.d.ts +5 -0
  41. package/dist/ui/components/charts/index.js +11 -0
  42. package/dist/ui/components/content/PlanCard.svelte +91 -0
  43. package/dist/ui/components/content/PlanCard.svelte.d.ts +13 -0
  44. package/dist/ui/components/content/ProductCard.svelte +125 -0
  45. package/dist/ui/components/content/ProductCard.svelte.d.ts +14 -0
  46. package/dist/ui/components/content/SearchCard.svelte +60 -0
  47. package/dist/ui/components/content/SearchCard.svelte.d.ts +10 -0
  48. package/dist/ui/components/content/index.d.ts +4 -0
  49. package/dist/ui/components/content/index.js +10 -0
  50. package/dist/ui/components/forms/SearchInput.svelte +89 -0
  51. package/dist/ui/components/forms/SearchInput.svelte.d.ts +11 -0
  52. package/dist/ui/components/forms/index.d.ts +2 -0
  53. package/dist/ui/components/forms/index.js +8 -0
  54. package/dist/ui/components/gallery/index.d.ts +5 -0
  55. package/dist/ui/components/gallery/index.js +13 -0
  56. package/dist/ui/components/icons/IconLegend.svelte +83 -0
  57. package/dist/ui/components/icons/IconLegend.svelte.d.ts +11 -0
  58. package/dist/ui/components/icons/Icons.svelte +115 -0
  59. package/dist/ui/components/icons/Icons.svelte.d.ts +8 -0
  60. package/dist/ui/components/icons/index.d.ts +3 -0
  61. package/dist/ui/components/icons/index.js +9 -0
  62. package/dist/ui/components/indicators/CreditBalance.svelte +67 -0
  63. package/dist/ui/components/indicators/CreditBalance.svelte.d.ts +9 -0
  64. package/dist/ui/components/indicators/ScoreBar.svelte +63 -0
  65. package/dist/ui/components/indicators/ScoreBar.svelte.d.ts +9 -0
  66. package/dist/ui/components/indicators/StatusBadge.svelte +46 -0
  67. package/dist/ui/components/indicators/StatusBadge.svelte.d.ts +7 -0
  68. package/dist/ui/components/indicators/index.d.ts +4 -0
  69. package/dist/ui/components/indicators/index.js +10 -0
  70. package/dist/{components/ui → ui/components/primitives}/accordion/accordion-content.svelte +1 -1
  71. package/dist/{components/ui → ui/components/primitives}/accordion/accordion-item.svelte +1 -1
  72. package/dist/{components/ui → ui/components/primitives}/accordion/accordion-trigger.svelte +1 -1
  73. package/dist/ui/components/primitives/badge/badge.svelte +50 -0
  74. package/dist/ui/components/primitives/badge/badge.svelte.d.ts +60 -0
  75. package/dist/ui/components/primitives/badge/index.d.ts +2 -0
  76. package/dist/ui/components/primitives/badge/index.js +2 -0
  77. package/dist/ui/components/primitives/button/button.svelte +82 -0
  78. package/dist/ui/components/primitives/button/button.svelte.d.ts +132 -0
  79. package/dist/ui/components/primitives/button/index.d.ts +2 -0
  80. package/dist/ui/components/primitives/button/index.js +4 -0
  81. package/dist/ui/components/primitives/card/card-content.svelte +16 -0
  82. package/dist/ui/components/primitives/card/card-content.svelte.d.ts +5 -0
  83. package/dist/ui/components/primitives/card/card-description.svelte +16 -0
  84. package/dist/ui/components/primitives/card/card-description.svelte.d.ts +5 -0
  85. package/dist/ui/components/primitives/card/card-footer.svelte +16 -0
  86. package/dist/ui/components/primitives/card/card-footer.svelte.d.ts +5 -0
  87. package/dist/ui/components/primitives/card/card-header.svelte +16 -0
  88. package/dist/ui/components/primitives/card/card-header.svelte.d.ts +5 -0
  89. package/dist/ui/components/primitives/card/card-title.svelte +25 -0
  90. package/dist/ui/components/primitives/card/card-title.svelte.d.ts +8 -0
  91. package/dist/ui/components/primitives/card/card.svelte +20 -0
  92. package/dist/ui/components/primitives/card/card.svelte.d.ts +5 -0
  93. package/dist/ui/components/primitives/card/index.d.ts +7 -0
  94. package/dist/ui/components/primitives/card/index.js +9 -0
  95. package/dist/{components/ui → ui/components/primitives}/dialog/dialog-content.svelte +1 -1
  96. package/dist/{components/ui → ui/components/primitives}/dialog/dialog-description.svelte +1 -1
  97. package/dist/{components/ui → ui/components/primitives}/dialog/dialog-footer.svelte +1 -1
  98. package/dist/{components/ui → ui/components/primitives}/dialog/dialog-header.svelte +1 -1
  99. package/dist/{components/ui → ui/components/primitives}/dialog/dialog-overlay.svelte +1 -1
  100. package/dist/{components/ui → ui/components/primitives}/dialog/dialog-title.svelte +1 -1
  101. package/dist/ui/components/primitives/input/index.d.ts +2 -0
  102. package/dist/ui/components/primitives/input/index.js +4 -0
  103. package/dist/ui/components/primitives/input/input.svelte +46 -0
  104. package/dist/ui/components/primitives/input/input.svelte.d.ts +13 -0
  105. package/dist/{components/ui → ui/components/primitives}/select/select-content.svelte +1 -1
  106. package/dist/{components/ui → ui/components/primitives}/select/select-group-heading.svelte +1 -1
  107. package/dist/{components/ui → ui/components/primitives}/select/select-item.svelte +1 -1
  108. package/dist/{components/ui → ui/components/primitives}/select/select-scroll-down-button.svelte +1 -1
  109. package/dist/{components/ui → ui/components/primitives}/select/select-scroll-up-button.svelte +1 -1
  110. package/dist/{components/ui → ui/components/primitives}/select/select-separator.svelte +1 -1
  111. package/dist/{components/ui → ui/components/primitives}/select/select-trigger.svelte +1 -1
  112. package/dist/ui/components/primitives/separator/index.d.ts +2 -0
  113. package/dist/ui/components/primitives/separator/index.js +4 -0
  114. package/dist/ui/components/primitives/separator/separator.svelte +22 -0
  115. package/dist/ui/components/primitives/separator/separator.svelte.d.ts +4 -0
  116. package/dist/{components/ui → ui/components/primitives}/sheet/sheet-content.svelte +1 -1
  117. package/dist/{components/ui → ui/components/primitives}/sheet/sheet-description.svelte +1 -1
  118. package/dist/{components/ui → ui/components/primitives}/sheet/sheet-footer.svelte +1 -1
  119. package/dist/{components/ui → ui/components/primitives}/sheet/sheet-header.svelte +1 -1
  120. package/dist/{components/ui → ui/components/primitives}/sheet/sheet-overlay.svelte +1 -1
  121. package/dist/{components/ui → ui/components/primitives}/sheet/sheet-title.svelte +1 -1
  122. package/dist/ui/components/primitives/skeleton/index.d.ts +2 -0
  123. package/dist/ui/components/primitives/skeleton/index.js +4 -0
  124. package/dist/ui/components/primitives/skeleton/skeleton.svelte +17 -0
  125. package/dist/ui/components/primitives/skeleton/skeleton.svelte.d.ts +5 -0
  126. package/dist/{components/ui → ui/components/primitives}/table/table-body.svelte +1 -1
  127. package/dist/{components/ui → ui/components/primitives}/table/table-caption.svelte +1 -1
  128. package/dist/{components/ui → ui/components/primitives}/table/table-cell.svelte +1 -1
  129. package/dist/{components/ui → ui/components/primitives}/table/table-footer.svelte +1 -1
  130. package/dist/{components/ui → ui/components/primitives}/table/table-head.svelte +1 -1
  131. package/dist/{components/ui → ui/components/primitives}/table/table-header.svelte +1 -1
  132. package/dist/{components/ui → ui/components/primitives}/table/table-row.svelte +1 -1
  133. package/dist/{components/ui → ui/components/primitives}/table/table.svelte +1 -1
  134. package/dist/{components/ui → ui/components/primitives}/tabs/tabs-content.svelte +1 -1
  135. package/dist/{components/ui → ui/components/primitives}/tabs/tabs-list.svelte +1 -1
  136. package/dist/{components/ui → ui/components/primitives}/tabs/tabs-trigger.svelte +1 -1
  137. package/dist/ui/components/primitives/textarea/index.d.ts +2 -0
  138. package/dist/ui/components/primitives/textarea/index.js +4 -0
  139. package/dist/ui/components/primitives/textarea/textarea.svelte +24 -0
  140. package/dist/ui/components/primitives/textarea/textarea.svelte.d.ts +6 -0
  141. package/dist/ui/components/states/EmptyState.svelte +28 -0
  142. package/dist/ui/components/states/EmptyState.svelte.d.ts +10 -0
  143. package/dist/ui/components/states/Loading.svelte +62 -0
  144. package/dist/ui/components/states/Loading.svelte.d.ts +7 -0
  145. package/dist/ui/components/states/LoadingSkeleton.svelte +46 -0
  146. package/dist/ui/components/states/LoadingSkeleton.svelte.d.ts +8 -0
  147. package/dist/ui/components/states/ThemeToggle.svelte +138 -0
  148. package/dist/ui/components/states/ThemeToggle.svelte.d.ts +6 -0
  149. package/dist/ui/components/states/index.d.ts +5 -0
  150. package/dist/ui/components/states/index.js +11 -0
  151. package/dist/{components → ui/components}/ui/Accordion.svelte +1 -1
  152. package/dist/ui/components/ui/Badge.svelte +52 -0
  153. package/dist/ui/components/ui/Badge.svelte.d.ts +28 -0
  154. package/dist/ui/components/ui/Button.svelte +77 -0
  155. package/dist/ui/components/ui/Button.svelte.d.ts +34 -0
  156. package/dist/ui/components/ui/Card.svelte +102 -0
  157. package/dist/ui/components/ui/Card.svelte.d.ts +46 -0
  158. package/dist/ui/components/ui/CollapsibleSection.svelte +65 -0
  159. package/dist/ui/components/ui/CollapsibleSection.svelte.d.ts +10 -0
  160. package/dist/{components → ui/components}/ui/Dialog.svelte +1 -1
  161. package/dist/ui/components/ui/Input.svelte +81 -0
  162. package/dist/ui/components/ui/Input.svelte.d.ts +35 -0
  163. package/dist/{components → ui/components}/ui/Select.svelte +1 -1
  164. package/dist/{components → ui/components}/ui/Sheet.svelte +1 -1
  165. package/dist/ui/components/ui/Skeleton.svelte +31 -0
  166. package/dist/ui/components/ui/Skeleton.svelte.d.ts +26 -0
  167. package/dist/ui/components/ui/Spinner.svelte +45 -0
  168. package/dist/ui/components/ui/Spinner.svelte.d.ts +15 -0
  169. package/dist/{components → ui/components}/ui/Table.svelte +2 -2
  170. package/dist/{components → ui/components}/ui/Table.svelte.d.ts +1 -1
  171. package/dist/{components → ui/components}/ui/Tabs.svelte +2 -2
  172. package/dist/ui/components/ui/Textarea.svelte +81 -0
  173. package/dist/ui/components/ui/Textarea.svelte.d.ts +35 -0
  174. package/dist/{components → ui/components}/ui/Toast.svelte +1 -1
  175. package/dist/ui/components/ui/index.d.ts +18 -0
  176. package/dist/ui/components/ui/index.js +28 -0
  177. package/dist/{components → ui/components}/ui/toast.d.ts +1 -1
  178. package/dist/{components → ui/components}/ui/toast.js +2 -2
  179. package/dist/ui/index.d.ts +10 -0
  180. package/dist/ui/index.js +22 -0
  181. package/dist/ui/stores/theme.d.ts +12 -0
  182. package/dist/ui/stores/theme.js +52 -0
  183. package/dist/ui/styles/content.css +514 -0
  184. package/dist/ui/styles/grove.css +715 -0
  185. package/dist/ui/styles/tokens.css +429 -0
  186. package/dist/ui/tailwind.preset.d.ts +340 -0
  187. package/dist/ui/tailwind.preset.js +441 -0
  188. package/dist/ui/tokens/animation.d.ts +417 -0
  189. package/dist/ui/tokens/animation.js +139 -0
  190. package/dist/ui/tokens/colors.d.ts +183 -0
  191. package/dist/ui/tokens/colors.js +97 -0
  192. package/dist/ui/tokens/effects.d.ts +111 -0
  193. package/dist/ui/tokens/effects.js +61 -0
  194. package/dist/ui/tokens/index.d.ts +6 -0
  195. package/dist/ui/tokens/index.js +19 -0
  196. package/dist/ui/tokens/spacing.d.ts +89 -0
  197. package/dist/ui/tokens/spacing.js +49 -0
  198. package/dist/ui/tokens/typography.d.ts +85 -0
  199. package/dist/ui/tokens/typography.js +68 -0
  200. package/dist/ui/utils/cn.d.ts +13 -0
  201. package/dist/ui/utils/cn.js +24 -0
  202. package/dist/ui/utils/index.d.ts +2 -0
  203. package/dist/ui/utils/index.js +8 -0
  204. package/dist/utils/index.d.ts +11 -0
  205. package/dist/utils/index.js +14 -0
  206. package/dist/utils/markdown.d.ts +11 -0
  207. package/dist/utils/markdown.js +25 -0
  208. package/dist/utils/sanitize.js +2 -3
  209. package/package.json +73 -10
  210. package/dist/components/ui/index.d.ts +0 -14
  211. package/dist/components/ui/index.js +0 -18
  212. /package/dist/{components → ui/components}/gallery/ImageGallery.svelte +0 -0
  213. /package/dist/{components → ui/components}/gallery/ImageGallery.svelte.d.ts +0 -0
  214. /package/dist/{components → ui/components}/gallery/Lightbox.svelte +0 -0
  215. /package/dist/{components → ui/components}/gallery/Lightbox.svelte.d.ts +0 -0
  216. /package/dist/{components → ui/components}/gallery/LightboxCaption.svelte +0 -0
  217. /package/dist/{components → ui/components}/gallery/LightboxCaption.svelte.d.ts +0 -0
  218. /package/dist/{components → ui/components}/gallery/ZoomableImage.svelte +0 -0
  219. /package/dist/{components → ui/components}/gallery/ZoomableImage.svelte.d.ts +0 -0
  220. /package/dist/{components/ui → ui/components/primitives}/accordion/accordion-content.svelte.d.ts +0 -0
  221. /package/dist/{components/ui → ui/components/primitives}/accordion/accordion-item.svelte.d.ts +0 -0
  222. /package/dist/{components/ui → ui/components/primitives}/accordion/accordion-trigger.svelte.d.ts +0 -0
  223. /package/dist/{components/ui → ui/components/primitives}/accordion/index.d.ts +0 -0
  224. /package/dist/{components/ui → ui/components/primitives}/accordion/index.js +0 -0
  225. /package/dist/{components/ui → ui/components/primitives}/dialog/dialog-content.svelte.d.ts +0 -0
  226. /package/dist/{components/ui → ui/components/primitives}/dialog/dialog-description.svelte.d.ts +0 -0
  227. /package/dist/{components/ui → ui/components/primitives}/dialog/dialog-footer.svelte.d.ts +0 -0
  228. /package/dist/{components/ui → ui/components/primitives}/dialog/dialog-header.svelte.d.ts +0 -0
  229. /package/dist/{components/ui → ui/components/primitives}/dialog/dialog-overlay.svelte.d.ts +0 -0
  230. /package/dist/{components/ui → ui/components/primitives}/dialog/dialog-title.svelte.d.ts +0 -0
  231. /package/dist/{components/ui → ui/components/primitives}/dialog/index.d.ts +0 -0
  232. /package/dist/{components/ui → ui/components/primitives}/dialog/index.js +0 -0
  233. /package/dist/{components/ui → ui/components/primitives}/select/index.d.ts +0 -0
  234. /package/dist/{components/ui → ui/components/primitives}/select/index.js +0 -0
  235. /package/dist/{components/ui → ui/components/primitives}/select/select-content.svelte.d.ts +0 -0
  236. /package/dist/{components/ui → ui/components/primitives}/select/select-group-heading.svelte.d.ts +0 -0
  237. /package/dist/{components/ui → ui/components/primitives}/select/select-item.svelte.d.ts +0 -0
  238. /package/dist/{components/ui → ui/components/primitives}/select/select-scroll-down-button.svelte.d.ts +0 -0
  239. /package/dist/{components/ui → ui/components/primitives}/select/select-scroll-up-button.svelte.d.ts +0 -0
  240. /package/dist/{components/ui → ui/components/primitives}/select/select-separator.svelte.d.ts +0 -0
  241. /package/dist/{components/ui → ui/components/primitives}/select/select-trigger.svelte.d.ts +0 -0
  242. /package/dist/{components/ui → ui/components/primitives}/sheet/index.d.ts +0 -0
  243. /package/dist/{components/ui → ui/components/primitives}/sheet/index.js +0 -0
  244. /package/dist/{components/ui → ui/components/primitives}/sheet/sheet-content.svelte.d.ts +0 -0
  245. /package/dist/{components/ui → ui/components/primitives}/sheet/sheet-description.svelte.d.ts +0 -0
  246. /package/dist/{components/ui → ui/components/primitives}/sheet/sheet-footer.svelte.d.ts +0 -0
  247. /package/dist/{components/ui → ui/components/primitives}/sheet/sheet-header.svelte.d.ts +0 -0
  248. /package/dist/{components/ui → ui/components/primitives}/sheet/sheet-overlay.svelte.d.ts +0 -0
  249. /package/dist/{components/ui → ui/components/primitives}/sheet/sheet-title.svelte.d.ts +0 -0
  250. /package/dist/{components/ui → ui/components/primitives}/table/index.d.ts +0 -0
  251. /package/dist/{components/ui → ui/components/primitives}/table/index.js +0 -0
  252. /package/dist/{components/ui → ui/components/primitives}/table/table-body.svelte.d.ts +0 -0
  253. /package/dist/{components/ui → ui/components/primitives}/table/table-caption.svelte.d.ts +0 -0
  254. /package/dist/{components/ui → ui/components/primitives}/table/table-cell.svelte.d.ts +0 -0
  255. /package/dist/{components/ui → ui/components/primitives}/table/table-footer.svelte.d.ts +0 -0
  256. /package/dist/{components/ui → ui/components/primitives}/table/table-head.svelte.d.ts +0 -0
  257. /package/dist/{components/ui → ui/components/primitives}/table/table-header.svelte.d.ts +0 -0
  258. /package/dist/{components/ui → ui/components/primitives}/table/table-row.svelte.d.ts +0 -0
  259. /package/dist/{components/ui → ui/components/primitives}/table/table.svelte.d.ts +0 -0
  260. /package/dist/{components/ui → ui/components/primitives}/tabs/index.d.ts +0 -0
  261. /package/dist/{components/ui → ui/components/primitives}/tabs/index.js +0 -0
  262. /package/dist/{components/ui → ui/components/primitives}/tabs/tabs-content.svelte.d.ts +0 -0
  263. /package/dist/{components/ui → ui/components/primitives}/tabs/tabs-list.svelte.d.ts +0 -0
  264. /package/dist/{components/ui → ui/components/primitives}/tabs/tabs-trigger.svelte.d.ts +0 -0
  265. /package/dist/{components → ui/components}/ui/Accordion.svelte.d.ts +0 -0
  266. /package/dist/{components → ui/components}/ui/Dialog.svelte.d.ts +0 -0
  267. /package/dist/{components → ui/components}/ui/Select.svelte.d.ts +0 -0
  268. /package/dist/{components → ui/components}/ui/Sheet.svelte.d.ts +0 -0
  269. /package/dist/{components → ui/components}/ui/Tabs.svelte.d.ts +0 -0
  270. /package/dist/{components → ui/components}/ui/Toast.svelte.d.ts +0 -0
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Grove Design System - Typography Tokens
3
+ *
4
+ * Font families, sizes, weights, and line heights.
5
+ */
6
+ export declare const fontFamily: {
7
+ readonly serif: readonly ["Georgia", "Cambria", "Times New Roman", "Times", "serif"];
8
+ readonly sans: readonly ["system-ui", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "Noto Sans", "sans-serif"];
9
+ readonly mono: readonly ["ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace"];
10
+ };
11
+ export declare const fontSize: {
12
+ readonly 'display-lg': "3.5rem";
13
+ readonly display: "2.5rem";
14
+ readonly 'display-sm': "2rem";
15
+ readonly 'heading-lg': "1.5rem";
16
+ readonly heading: "1.25rem";
17
+ readonly 'heading-sm': "1.125rem";
18
+ readonly 'body-lg': "1.125rem";
19
+ readonly body: "1rem";
20
+ readonly 'body-sm': "0.875rem";
21
+ readonly caption: "0.75rem";
22
+ };
23
+ export declare const lineHeight: {
24
+ readonly display: "1.1";
25
+ readonly heading: "1.35";
26
+ readonly body: "1.75";
27
+ readonly tight: "1.25";
28
+ readonly normal: "1.5";
29
+ readonly relaxed: "1.65";
30
+ };
31
+ export declare const letterSpacing: {
32
+ readonly tight: "-0.02em";
33
+ readonly normal: "0";
34
+ readonly wide: "0.025em";
35
+ };
36
+ export declare const fontWeight: {
37
+ readonly normal: "400";
38
+ readonly medium: "500";
39
+ readonly semibold: "600";
40
+ readonly bold: "700";
41
+ };
42
+ export declare const typography: {
43
+ readonly fontFamily: {
44
+ readonly serif: readonly ["Georgia", "Cambria", "Times New Roman", "Times", "serif"];
45
+ readonly sans: readonly ["system-ui", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "Noto Sans", "sans-serif"];
46
+ readonly mono: readonly ["ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace"];
47
+ };
48
+ readonly fontSize: {
49
+ readonly 'display-lg': "3.5rem";
50
+ readonly display: "2.5rem";
51
+ readonly 'display-sm': "2rem";
52
+ readonly 'heading-lg': "1.5rem";
53
+ readonly heading: "1.25rem";
54
+ readonly 'heading-sm': "1.125rem";
55
+ readonly 'body-lg': "1.125rem";
56
+ readonly body: "1rem";
57
+ readonly 'body-sm': "0.875rem";
58
+ readonly caption: "0.75rem";
59
+ };
60
+ readonly lineHeight: {
61
+ readonly display: "1.1";
62
+ readonly heading: "1.35";
63
+ readonly body: "1.75";
64
+ readonly tight: "1.25";
65
+ readonly normal: "1.5";
66
+ readonly relaxed: "1.65";
67
+ };
68
+ readonly letterSpacing: {
69
+ readonly tight: "-0.02em";
70
+ readonly normal: "0";
71
+ readonly wide: "0.025em";
72
+ };
73
+ readonly fontWeight: {
74
+ readonly normal: "400";
75
+ readonly medium: "500";
76
+ readonly semibold: "600";
77
+ readonly bold: "700";
78
+ };
79
+ };
80
+ export type FontFamily = typeof fontFamily;
81
+ export type FontSize = typeof fontSize;
82
+ export type LineHeight = typeof lineHeight;
83
+ export type LetterSpacing = typeof letterSpacing;
84
+ export type FontWeight = typeof fontWeight;
85
+ export type Typography = typeof typography;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Grove Design System - Typography Tokens
3
+ *
4
+ * Font families, sizes, weights, and line heights.
5
+ */
6
+ export const fontFamily = {
7
+ serif: ['Georgia', 'Cambria', 'Times New Roman', 'Times', 'serif'],
8
+ sans: [
9
+ 'system-ui',
10
+ '-apple-system',
11
+ 'BlinkMacSystemFont',
12
+ 'Segoe UI',
13
+ 'Roboto',
14
+ 'Helvetica Neue',
15
+ 'Arial',
16
+ 'Noto Sans',
17
+ 'sans-serif',
18
+ ],
19
+ mono: [
20
+ 'ui-monospace',
21
+ 'SFMono-Regular',
22
+ 'SF Mono',
23
+ 'Menlo',
24
+ 'Monaco',
25
+ 'Consolas',
26
+ 'Liberation Mono',
27
+ 'Courier New',
28
+ 'monospace',
29
+ ],
30
+ };
31
+ export const fontSize = {
32
+ 'display-lg': '3.5rem', // 56px
33
+ 'display': '2.5rem', // 40px
34
+ 'display-sm': '2rem', // 32px
35
+ 'heading-lg': '1.5rem', // 24px
36
+ 'heading': '1.25rem', // 20px
37
+ 'heading-sm': '1.125rem', // 18px
38
+ 'body-lg': '1.125rem', // 18px
39
+ 'body': '1rem', // 16px
40
+ 'body-sm': '0.875rem', // 14px
41
+ 'caption': '0.75rem', // 12px
42
+ };
43
+ export const lineHeight = {
44
+ 'display': '1.1',
45
+ 'heading': '1.35',
46
+ 'body': '1.75',
47
+ 'tight': '1.25',
48
+ 'normal': '1.5',
49
+ 'relaxed': '1.65',
50
+ };
51
+ export const letterSpacing = {
52
+ 'tight': '-0.02em',
53
+ 'normal': '0',
54
+ 'wide': '0.025em',
55
+ };
56
+ export const fontWeight = {
57
+ 'normal': '400',
58
+ 'medium': '500',
59
+ 'semibold': '600',
60
+ 'bold': '700',
61
+ };
62
+ export const typography = {
63
+ fontFamily,
64
+ fontSize,
65
+ lineHeight,
66
+ letterSpacing,
67
+ fontWeight,
68
+ };
@@ -0,0 +1,13 @@
1
+ import { type ClassValue } from 'clsx';
2
+ /**
3
+ * Combines class names with Tailwind CSS conflict resolution.
4
+ *
5
+ * @param inputs - Class values to combine (strings, arrays, objects)
6
+ * @returns Merged class string with conflicts resolved
7
+ *
8
+ * @example
9
+ * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 wins)
10
+ * cn('text-red-500', isBlue && 'text-blue-500')
11
+ * cn({ 'bg-white': light, 'bg-black': dark })
12
+ */
13
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,24 @@
1
+ // GroveUI - Class Name Utility
2
+ //
3
+ // Combines clsx and tailwind-merge for conditional class names
4
+ // with automatic Tailwind conflict resolution.
5
+ //
6
+ // Usage:
7
+ // import { cn } from '@groveengine/ui/utils';
8
+ // <div class={cn('p-4 bg-white', isActive && 'bg-grove-100', className)} />
9
+ import { clsx } from 'clsx';
10
+ import { twMerge } from 'tailwind-merge';
11
+ /**
12
+ * Combines class names with Tailwind CSS conflict resolution.
13
+ *
14
+ * @param inputs - Class values to combine (strings, arrays, objects)
15
+ * @returns Merged class string with conflicts resolved
16
+ *
17
+ * @example
18
+ * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 wins)
19
+ * cn('text-red-500', isBlue && 'text-blue-500')
20
+ * cn({ 'bg-white': light, 'bg-black': dark })
21
+ */
22
+ export function cn(...inputs) {
23
+ return twMerge(clsx(inputs));
24
+ }
@@ -0,0 +1,2 @@
1
+ export { cn } from './cn.js';
2
+ export declare const UTILS_VERSION = "0.2.0";
@@ -0,0 +1,8 @@
1
+ // GroveUI - Utilities
2
+ //
3
+ // This module exports utility functions for the Grove Design System.
4
+ //
5
+ // Usage:
6
+ // import { cn } from '@groveengine/ui/utils';
7
+ export { cn } from './cn.js';
8
+ export const UTILS_VERSION = '0.2.0';
@@ -0,0 +1,11 @@
1
+ export * from "./api.js";
2
+ export * from "./cn.js";
3
+ export * from "./csrf.js";
4
+ export * from "./debounce.js";
5
+ export * from "./gallery.js";
6
+ export * from "./gutter.js";
7
+ export * from "./imageProcessor.js";
8
+ export * from "./json.js";
9
+ export * from "./markdown.js";
10
+ export * from "./sanitize.js";
11
+ export * from "./validation.js";
@@ -0,0 +1,14 @@
1
+ // Utils barrel export
2
+ // Re-exports all utility functions from the utils module
3
+
4
+ export * from './api.js';
5
+ export * from './cn.js';
6
+ export * from './csrf.js';
7
+ export * from './debounce.js';
8
+ export * from './gallery.js';
9
+ export * from './gutter.js';
10
+ export * from './imageProcessor.js';
11
+ export * from './json.js';
12
+ export * from './markdown.js';
13
+ export * from './sanitize.js';
14
+ export * from './validation.js';
@@ -152,3 +152,14 @@ export function getAboutPage(): Object | null;
152
152
  * @returns {Object|null} Contact page data or null
153
153
  */
154
154
  export function getContactPage(): Object | null;
155
+ /**
156
+ * Get all recipes
157
+ * @returns {Array} Array of recipe objects
158
+ */
159
+ export function getAllRecipes(): any[];
160
+ /**
161
+ * Get a recipe by its slug
162
+ * @param {string} slug - The recipe slug
163
+ * @returns {Object|null} Recipe object or null
164
+ */
165
+ export function getRecipeBySlug(slug: string): Object | null;
@@ -813,3 +813,28 @@ export function getContactPage() {
813
813
  }
814
814
  return contentLoader.getContactPage();
815
815
  }
816
+
817
+ /**
818
+ * Get all recipes
819
+ * @returns {Array} Array of recipe objects
820
+ */
821
+ export function getAllRecipes() {
822
+ if (!contentLoader || !contentLoader.getAllRecipes) {
823
+ console.warn('getAllRecipes: No content loader registered. Call registerContentLoader() in your site.');
824
+ return [];
825
+ }
826
+ return contentLoader.getAllRecipes();
827
+ }
828
+
829
+ /**
830
+ * Get a recipe by its slug
831
+ * @param {string} slug - The recipe slug
832
+ * @returns {Object|null} Recipe object or null
833
+ */
834
+ export function getRecipeBySlug(slug) {
835
+ if (!contentLoader || !contentLoader.getRecipeBySlug) {
836
+ console.warn('getRecipeBySlug: No content loader registered. Call registerContentLoader() in your site.');
837
+ return null;
838
+ }
839
+ return contentLoader.getRecipeBySlug(slug);
840
+ }
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * Centralized sanitization utilities for XSS prevention
3
- * Uses dompurify for client-side sanitization
4
- * Note: For Cloudflare Workers, DOM APIs are available so we use client-side dompurify
3
+ * Uses isomorphic-dompurify for both server-side and client-side sanitization
5
4
  */
6
5
 
7
- import DOMPurify from 'dompurify';
6
+ import DOMPurify from 'isomorphic-dompurify';
8
7
 
9
8
  /**
10
9
  * Sanitize HTML content to prevent XSS attacks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autumnsgrove/groveengine",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Multi-tenant blog engine for Grove Platform. Features gutter annotations, markdown editing, magic code auth, and Cloudflare Workers deployment.",
5
5
  "author": "AutumnsGrove",
6
6
  "license": "MIT",
@@ -33,26 +33,89 @@
33
33
  "types": "./dist/components/admin/*.svelte.d.ts",
34
34
  "svelte": "./dist/components/admin/*.svelte"
35
35
  },
36
- "./components/gallery/*": {
37
- "types": "./dist/components/gallery/*.svelte.d.ts",
38
- "svelte": "./dist/components/gallery/*.svelte"
36
+ "./ui": {
37
+ "types": "./dist/ui/index.d.ts",
38
+ "svelte": "./dist/ui/index.js",
39
+ "default": "./dist/ui/index.js"
39
40
  },
40
- "./components/ui": {
41
- "types": "./dist/components/ui/index.d.ts",
42
- "svelte": "./dist/components/ui/index.js"
41
+ "./ui/gallery": {
42
+ "types": "./dist/ui/components/gallery/index.d.ts",
43
+ "svelte": "./dist/ui/components/gallery/index.js",
44
+ "default": "./dist/ui/components/gallery/index.js"
45
+ },
46
+ "./ui/charts": {
47
+ "types": "./dist/ui/components/charts/index.d.ts",
48
+ "svelte": "./dist/ui/components/charts/index.js",
49
+ "default": "./dist/ui/components/charts/index.js"
50
+ },
51
+ "./ui/content": {
52
+ "types": "./dist/ui/components/content/index.d.ts",
53
+ "svelte": "./dist/ui/components/content/index.js",
54
+ "default": "./dist/ui/components/content/index.js"
55
+ },
56
+ "./ui/forms": {
57
+ "types": "./dist/ui/components/forms/index.d.ts",
58
+ "svelte": "./dist/ui/components/forms/index.js",
59
+ "default": "./dist/ui/components/forms/index.js"
60
+ },
61
+ "./ui/indicators": {
62
+ "types": "./dist/ui/components/indicators/index.d.ts",
63
+ "svelte": "./dist/ui/components/indicators/index.js",
64
+ "default": "./dist/ui/components/indicators/index.js"
65
+ },
66
+ "./ui/icons": {
67
+ "types": "./dist/ui/components/icons/index.d.ts",
68
+ "svelte": "./dist/ui/components/icons/index.js",
69
+ "default": "./dist/ui/components/icons/index.js"
70
+ },
71
+ "./ui/states": {
72
+ "types": "./dist/ui/components/states/index.d.ts",
73
+ "svelte": "./dist/ui/components/states/index.js",
74
+ "default": "./dist/ui/components/states/index.js"
75
+ },
76
+ "./ui/tokens": {
77
+ "types": "./dist/ui/tokens/index.d.ts",
78
+ "default": "./dist/ui/tokens/index.js"
79
+ },
80
+ "./ui/utils": {
81
+ "types": "./dist/ui/utils/index.d.ts",
82
+ "default": "./dist/ui/utils/index.js"
83
+ },
84
+ "./ui/styles": "./dist/ui/styles/grove.css",
85
+ "./ui/styles/*": "./dist/ui/styles/*",
86
+ "./ui/tailwind": "./dist/ui/tailwind.preset.js",
87
+ "./utils": {
88
+ "types": "./dist/utils/index.d.ts",
89
+ "default": "./dist/utils/index.js"
43
90
  },
44
91
  "./utils/*": {
45
92
  "types": "./dist/utils/*.d.ts",
46
93
  "default": "./dist/utils/*.js"
47
94
  },
95
+ "./auth": {
96
+ "types": "./dist/auth/index.d.ts",
97
+ "default": "./dist/auth/index.js"
98
+ },
48
99
  "./auth/*": {
49
100
  "types": "./dist/auth/*.d.ts",
50
101
  "default": "./dist/auth/*.js"
51
102
  },
103
+ "./server": {
104
+ "types": "./dist/server/index.d.ts",
105
+ "default": "./dist/server/index.js"
106
+ },
52
107
  "./server/*": {
53
108
  "types": "./dist/server/*.d.ts",
54
109
  "default": "./dist/server/*.js"
55
110
  },
111
+ "./config": {
112
+ "types": "./dist/config/index.d.ts",
113
+ "default": "./dist/config/index.js"
114
+ },
115
+ "./config/*": {
116
+ "types": "./dist/config/*.d.ts",
117
+ "default": "./dist/config/*.js"
118
+ },
56
119
  "./payments": {
57
120
  "types": "./dist/payments/index.d.ts",
58
121
  "default": "./dist/payments/index.js"
@@ -107,21 +170,21 @@
107
170
  "postcss": "^8.5.6",
108
171
  "svelte": "^5.1.9",
109
172
  "svelte-check": "^4.0.0",
110
- "tailwind-variants": "^0.2.1",
173
+ "tailwind-variants": "^0.3.0",
111
174
  "tailwindcss": "^3.4.18",
112
175
  "typescript": "^5.6.0",
113
176
  "vite": "^5.4.10",
114
177
  "vitest": "^4.0.14"
115
178
  },
116
179
  "dependencies": {
117
- "@groveengine/ui": "workspace:*",
118
180
  "@types/dompurify": "^3.0.5",
119
181
  "chart.js": "^4.5.1",
120
182
  "clsx": "^2.1.1",
121
- "dompurify": "^3.3.0",
183
+ "isomorphic-dompurify": "^2.33.0",
122
184
  "gray-matter": "^4.0.3",
123
185
  "lucide-svelte": "^0.554.0",
124
186
  "marked": "^17.0.1",
187
+ "sonner": "^2.0.7",
125
188
  "svelte-sonner": "^1.0.7",
126
189
  "tailwind-merge": "^3.4.0"
127
190
  }
@@ -1,14 +0,0 @@
1
- export { default as Dialog } from "./Dialog.svelte";
2
- export { default as Select } from "./Select.svelte";
3
- export { default as Tabs } from "./Tabs.svelte";
4
- export { default as Accordion } from "./Accordion.svelte";
5
- export { default as Sheet } from "./Sheet.svelte";
6
- export { default as Toast } from "./Toast.svelte";
7
- export { default as Table } from "./Table.svelte";
8
- export { toast } from "./toast";
9
- export { Root as DialogRoot, Trigger as DialogTrigger, Close as DialogClose, Portal as DialogPortal } from "./dialog";
10
- export { Root as SheetRoot, Trigger as SheetTrigger, Close as SheetClose, Portal as SheetPortal, Content as SheetContent, Header as SheetHeader, Footer as SheetFooter, Title as SheetTitle, Description as SheetDescription } from "./sheet";
11
- export { Root as TableRoot, Body as TableBody, Caption as TableCaption, Cell as TableCell, Footer as TableFooter, Head as TableHead, Header as TableHeader, Row as TableRow } from "./table";
12
- export { Root as AccordionRoot } from "./accordion";
13
- export { Root as SelectRoot, Trigger as SelectTrigger, Content as SelectContent, Item as SelectItem, Group as SelectGroup, GroupHeading as SelectLabel, Separator as SelectSeparator, ScrollUpButton as SelectScrollUpButton, ScrollDownButton as SelectScrollDownButton } from "./select";
14
- export { Root as TabsRoot, List as TabsList, Trigger as TabsTrigger, Content as TabsContent } from "./tabs";
@@ -1,18 +0,0 @@
1
- // Admin-specific UI component wrappers
2
- // Generic UI components (Button, Card, Badge, Input, Textarea, Skeleton) are now in @groveengine/ui
3
- export { default as Dialog } from "./Dialog.svelte";
4
- export { default as Select } from "./Select.svelte";
5
- export { default as Tabs } from "./Tabs.svelte";
6
- export { default as Accordion } from "./Accordion.svelte";
7
- export { default as Sheet } from "./Sheet.svelte";
8
- export { default as Toast } from "./Toast.svelte";
9
- export { default as Table } from "./Table.svelte";
10
- // Toast utilities
11
- export { toast } from "./toast";
12
- // Re-export shadcn components for advanced usage
13
- export { Root as DialogRoot, Trigger as DialogTrigger, Close as DialogClose, Portal as DialogPortal } from "./dialog";
14
- export { Root as SheetRoot, Trigger as SheetTrigger, Close as SheetClose, Portal as SheetPortal, Content as SheetContent, Header as SheetHeader, Footer as SheetFooter, Title as SheetTitle, Description as SheetDescription } from "./sheet";
15
- export { Root as TableRoot, Body as TableBody, Caption as TableCaption, Cell as TableCell, Footer as TableFooter, Head as TableHead, Header as TableHeader, Row as TableRow } from "./table";
16
- export { Root as AccordionRoot } from "./accordion";
17
- export { Root as SelectRoot, Trigger as SelectTrigger, Content as SelectContent, Item as SelectItem, Group as SelectGroup, GroupHeading as SelectLabel, Separator as SelectSeparator, ScrollUpButton as SelectScrollUpButton, ScrollDownButton as SelectScrollDownButton } from "./select";
18
- export { Root as TabsRoot, List as TabsList, Trigger as TabsTrigger, Content as TabsContent } from "./tabs";