singularity-components 0.1.151 → 0.1.193

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 (244) hide show
  1. package/README.md +29 -12
  2. package/dist/components/blocks/cards/blogpost-card.d.ts +9 -4
  3. package/dist/components/blocks/cards/blogpost-card.js +37 -23
  4. package/dist/components/blocks/cards/blogpost-card.js.map +1 -1
  5. package/dist/components/blocks/cards/card.js +1 -1
  6. package/dist/components/blocks/cards/card.js.map +1 -1
  7. package/dist/components/blocks/empty-state/EmptyState.d.ts +15 -0
  8. package/dist/components/blocks/empty-state/EmptyState.js +36 -0
  9. package/dist/components/blocks/empty-state/EmptyState.js.map +1 -0
  10. package/dist/components/blocks/index.d.ts +2 -0
  11. package/dist/components/blocks/index.js +4 -2
  12. package/dist/components/blocks/index.js.map +1 -1
  13. package/dist/components/blocks/post-list/post-filters.d.ts +19 -0
  14. package/dist/components/blocks/post-list/post-filters.js +99 -0
  15. package/dist/components/blocks/post-list/post-filters.js.map +1 -0
  16. package/dist/components/blocks/post-list/post-list-with-filters.d.ts +19 -0
  17. package/dist/components/blocks/post-list/post-list-with-filters.js +439 -0
  18. package/dist/components/blocks/post-list/post-list-with-filters.js.map +1 -0
  19. package/dist/components/index.d.ts +42 -12
  20. package/dist/components/index.js +5 -6
  21. package/dist/components/index.js.map +1 -1
  22. package/dist/components/pages/admin/admin-page.d.ts +8 -0
  23. package/dist/components/pages/admin/admin-page.js +299 -0
  24. package/dist/components/pages/admin/admin-page.js.map +1 -0
  25. package/dist/components/pages/blogpost/blogpost.js +440 -0
  26. package/dist/components/pages/blogpost/blogpost.js.map +1 -0
  27. package/dist/components/pages/category/category-page.d.ts +8 -0
  28. package/dist/components/pages/category/category-page.js +69 -0
  29. package/dist/components/pages/category/category-page.js.map +1 -0
  30. package/dist/components/pages/chat/chat-page.d.ts +5 -0
  31. package/dist/components/pages/chat/chat-page.js +209 -0
  32. package/dist/components/pages/chat/chat-page.js.map +1 -0
  33. package/dist/components/pages/index.d.ts +11 -0
  34. package/dist/components/pages/index.js +11 -0
  35. package/dist/components/pages/index.js.map +1 -0
  36. package/dist/components/pages/login/login-page.d.ts +19 -0
  37. package/dist/components/pages/login/login-page.js +108 -0
  38. package/dist/components/pages/login/login-page.js.map +1 -0
  39. package/dist/components/pages/maintenance/maintenance-page.d.ts +5 -0
  40. package/dist/components/pages/maintenance/maintenance-page.js +50 -0
  41. package/dist/components/pages/maintenance/maintenance-page.js.map +1 -0
  42. package/dist/components/pages/not-found/not-found.d.ts +10 -0
  43. package/dist/components/pages/not-found/not-found.js +64 -0
  44. package/dist/components/pages/not-found/not-found.js.map +1 -0
  45. package/dist/components/pages/privacy/privacy-page.d.ts +15 -0
  46. package/dist/components/pages/privacy/privacy-page.js +98 -0
  47. package/dist/components/pages/privacy/privacy-page.js.map +1 -0
  48. package/dist/components/pages/search/search-page.d.ts +5 -0
  49. package/dist/components/pages/search/search-page.js +18 -0
  50. package/dist/components/pages/search/search-page.js.map +1 -0
  51. package/dist/components/pages/startpage/startpage.js +50 -0
  52. package/dist/components/pages/startpage/startpage.js.map +1 -0
  53. package/dist/components/pages/terms/terms-page.d.ts +15 -0
  54. package/dist/components/pages/terms/terms-page.js +98 -0
  55. package/dist/components/pages/terms/terms-page.js.map +1 -0
  56. package/dist/components/primitives/accordion/accordion.js +1 -1
  57. package/dist/components/primitives/accordion/accordion.js.map +1 -1
  58. package/dist/components/primitives/alert/alert.js +1 -1
  59. package/dist/components/primitives/alert/alert.js.map +1 -1
  60. package/dist/components/primitives/avatar/avatar.d.ts +14 -0
  61. package/dist/components/primitives/avatar/avatar.js +103 -0
  62. package/dist/components/primitives/avatar/avatar.js.map +1 -0
  63. package/dist/components/primitives/badge/badge.d.ts +1 -1
  64. package/dist/components/primitives/badge/badge.js +5 -5
  65. package/dist/components/primitives/badge/badge.js.map +1 -1
  66. package/dist/components/primitives/badge/badges.js +1 -1
  67. package/dist/components/primitives/badge/badges.js.map +1 -1
  68. package/dist/components/primitives/{button → buttons}/button.d.ts +8 -7
  69. package/dist/components/primitives/{button → buttons}/button.js +19 -14
  70. package/dist/components/primitives/buttons/button.js.map +1 -0
  71. package/dist/components/primitives/buttons/icon-button.d.ts +33 -0
  72. package/dist/components/primitives/buttons/icon-button.js +61 -0
  73. package/dist/components/primitives/buttons/icon-button.js.map +1 -0
  74. package/dist/components/primitives/{link → buttons}/link-button.d.ts +7 -4
  75. package/dist/components/primitives/buttons/link-button.js +35 -0
  76. package/dist/components/primitives/buttons/link-button.js.map +1 -0
  77. package/dist/components/primitives/collapsible/collapsible.d.ts +9 -0
  78. package/dist/components/primitives/collapsible/collapsible.js +53 -0
  79. package/dist/components/primitives/collapsible/collapsible.js.map +1 -0
  80. package/dist/components/primitives/dropdown-menu/dropdown-menu.d.ts +30 -0
  81. package/dist/components/primitives/dropdown-menu/dropdown-menu.js +164 -0
  82. package/dist/components/primitives/dropdown-menu/dropdown-menu.js.map +1 -0
  83. package/dist/components/primitives/forms/checkbox.d.ts +6 -0
  84. package/dist/components/primitives/forms/checkbox.js +30 -0
  85. package/dist/components/primitives/forms/checkbox.js.map +1 -0
  86. package/dist/components/primitives/forms/field.d.ts +29 -0
  87. package/dist/components/primitives/forms/field.js +218 -0
  88. package/dist/components/primitives/forms/field.js.map +1 -0
  89. package/dist/components/primitives/forms/input.d.ts +6 -0
  90. package/dist/components/primitives/forms/input.js +22 -0
  91. package/dist/components/primitives/forms/input.js.map +1 -0
  92. package/dist/components/primitives/forms/select.d.ts +22 -0
  93. package/dist/components/primitives/forms/select.js +169 -0
  94. package/dist/components/primitives/forms/select.js.map +1 -0
  95. package/dist/components/primitives/forms/textarea.d.ts +6 -0
  96. package/dist/components/primitives/forms/textarea.js +20 -0
  97. package/dist/components/primitives/forms/textarea.js.map +1 -0
  98. package/dist/components/primitives/icon/icon.d.ts +9 -2
  99. package/dist/components/primitives/icon/icon.js +10 -3
  100. package/dist/components/primitives/icon/icon.js.map +1 -1
  101. package/dist/components/primitives/index.d.ts +23 -7
  102. package/dist/components/primitives/index.js +31 -20
  103. package/dist/components/primitives/index.js.map +1 -1
  104. package/dist/components/primitives/label/label.d.ts +6 -0
  105. package/dist/components/primitives/label/label.js +22 -0
  106. package/dist/components/primitives/label/label.js.map +1 -0
  107. package/dist/components/primitives/layout/layout.d.ts +6 -3
  108. package/dist/components/primitives/layout/layout.js +28 -11
  109. package/dist/components/primitives/layout/layout.js.map +1 -1
  110. package/dist/components/primitives/link/link.d.ts +11 -5
  111. package/dist/components/primitives/link/link.js +38 -11
  112. package/dist/components/primitives/link/link.js.map +1 -1
  113. package/dist/components/primitives/separator/separator.js +1 -1
  114. package/dist/components/primitives/separator/separator.js.map +1 -1
  115. package/dist/components/primitives/sheet/sheet.d.ts +29 -0
  116. package/dist/components/primitives/sheet/sheet.js +117 -0
  117. package/dist/components/primitives/sheet/sheet.js.map +1 -0
  118. package/dist/components/primitives/skeleton/skeleton.js +1 -1
  119. package/dist/components/primitives/skeleton/skeleton.js.map +1 -1
  120. package/dist/components/primitives/sonner/sonner.d.ts +7 -0
  121. package/dist/components/primitives/sonner/sonner.js +42 -0
  122. package/dist/components/primitives/sonner/sonner.js.map +1 -0
  123. package/dist/components/primitives/sonner/use-toast.d.ts +24 -0
  124. package/dist/components/primitives/sonner/use-toast.js +21 -0
  125. package/dist/components/primitives/sonner/use-toast.js.map +1 -0
  126. package/dist/components/primitives/spinner/spinner.js +1 -1
  127. package/dist/components/primitives/spinner/spinner.js.map +1 -1
  128. package/dist/components/primitives/stack/stack.d.ts +3 -0
  129. package/dist/components/primitives/stack/stack.js +34 -4
  130. package/dist/components/primitives/stack/stack.js.map +1 -1
  131. package/dist/components/primitives/text/{text-heading.d.ts → heading.d.ts} +5 -5
  132. package/dist/components/primitives/text/{text-heading.js → heading.js} +11 -11
  133. package/dist/components/primitives/text/heading.js.map +1 -0
  134. package/dist/components/primitives/text/internal/text-element.d.ts +7 -3
  135. package/dist/components/primitives/text/internal/text-element.js +4 -2
  136. package/dist/components/primitives/text/internal/text-element.js.map +1 -1
  137. package/dist/components/primitives/text/text-code.d.ts +26 -0
  138. package/dist/components/primitives/text/text-code.js +44 -0
  139. package/dist/components/primitives/text/text-code.js.map +1 -0
  140. package/dist/components/primitives/text/text-div.js +2 -2
  141. package/dist/components/primitives/text/text-div.js.map +1 -1
  142. package/dist/components/primitives/text/text-span.js +2 -2
  143. package/dist/components/primitives/text/text-span.js.map +1 -1
  144. package/dist/components/primitives/text/text-time.js +2 -2
  145. package/dist/components/primitives/text/text-time.js.map +1 -1
  146. package/dist/components/primitives/text/{text-paragraph.d.ts → text.d.ts} +4 -4
  147. package/dist/components/primitives/text/{text-paragraph.js → text.js} +11 -11
  148. package/dist/components/primitives/text/text.js.map +1 -0
  149. package/dist/components/primitives/{ui-image.d.ts → ui-image/ui-image.d.ts} +1 -1
  150. package/dist/components/primitives/{ui-image.js → ui-image/ui-image.js} +3 -3
  151. package/dist/components/primitives/ui-image/ui-image.js.map +1 -0
  152. package/dist/components/primitives/ui-link/ui-link.d.ts +8 -0
  153. package/dist/components/primitives/ui-link/ui-link.js +19 -0
  154. package/dist/components/primitives/ui-link/ui-link.js.map +1 -0
  155. package/dist/components/providers/LinkContext.d.ts +1 -1
  156. package/dist/components/providers/LinkContext.js +1 -1
  157. package/dist/components/providers/LinkContext.js.map +1 -1
  158. package/dist/components/providers/SingularityContext.d.ts +4 -1
  159. package/dist/components/providers/SingularityContext.js +7 -3
  160. package/dist/components/providers/SingularityContext.js.map +1 -1
  161. package/dist/components/providers/auth-provider.d.ts +15 -0
  162. package/dist/components/providers/auth-provider.js +30 -0
  163. package/dist/components/providers/auth-provider.js.map +1 -0
  164. package/dist/components/providers/index.d.ts +3 -0
  165. package/dist/components/providers/index.js +5 -3
  166. package/dist/components/providers/index.js.map +1 -1
  167. package/dist/components/providers/theme-provider.d.ts +27 -0
  168. package/dist/components/providers/theme-provider.js +75 -0
  169. package/dist/components/providers/theme-provider.js.map +1 -0
  170. package/dist/components/templates/container/container.d.ts +20 -0
  171. package/dist/components/templates/container/container.js +58 -0
  172. package/dist/components/templates/container/container.js.map +1 -0
  173. package/dist/components/templates/footer/footer.d.ts +5 -0
  174. package/dist/components/templates/footer/footer.js +12 -0
  175. package/dist/components/templates/footer/footer.js.map +1 -0
  176. package/dist/components/templates/form/form.d.ts +5 -0
  177. package/dist/components/templates/form/form.js +141 -0
  178. package/dist/components/templates/form/form.js.map +1 -0
  179. package/dist/components/templates/hero/hero.d.ts +18 -0
  180. package/dist/components/{sections → templates}/hero/hero.js +52 -22
  181. package/dist/components/templates/hero/hero.js.map +1 -0
  182. package/dist/components/templates/index.d.ts +4 -2
  183. package/dist/components/templates/index.js +4 -2
  184. package/dist/components/templates/index.js.map +1 -1
  185. package/dist/components/templates/navigation/header.d.ts +19 -0
  186. package/dist/components/templates/navigation/header.js +222 -0
  187. package/dist/components/templates/navigation/header.js.map +1 -0
  188. package/dist/components/templates/navigation/index.d.ts +3 -0
  189. package/dist/components/templates/navigation/index.js +2 -0
  190. package/dist/components/templates/navigation/index.js.map +1 -0
  191. package/dist/css/variables.css +2 -2
  192. package/dist/css/variables.css.map +1 -1
  193. package/dist/data/authors.d.ts +12 -0
  194. package/dist/data/authors.js +33 -0
  195. package/dist/data/authors.js.map +1 -0
  196. package/dist/data/posts.d.ts +5 -3
  197. package/dist/data/posts.js +66 -47
  198. package/dist/data/posts.js.map +1 -1
  199. package/dist/index.d.ts +42 -12
  200. package/dist/index.js +1 -1
  201. package/dist/index.js.map +1 -1
  202. package/dist/lib/helpers/index.js +1 -1
  203. package/dist/lib/helpers/index.js.map +1 -1
  204. package/dist/lib/index.js +2 -2
  205. package/dist/lib/index.js.map +1 -1
  206. package/dist/lib/types.d.ts +4 -8
  207. package/dist/main.css +1528 -85
  208. package/dist/main.css.map +1 -1
  209. package/dist/{utils.js → utils/index.js} +1 -1
  210. package/dist/utils/index.js.map +1 -0
  211. package/dist/utils/index.test.js +37 -0
  212. package/dist/utils/index.test.js.map +1 -0
  213. package/package.json +69 -44
  214. package/dist/components/primitives/button/button.js.map +0 -1
  215. package/dist/components/primitives/link/link-button.js +0 -21
  216. package/dist/components/primitives/link/link-button.js.map +0 -1
  217. package/dist/components/primitives/text/text-heading.js.map +0 -1
  218. package/dist/components/primitives/text/text-paragraph.js.map +0 -1
  219. package/dist/components/primitives/ui-image.js.map +0 -1
  220. package/dist/components/primitives/ui-link.d.ts +0 -8
  221. package/dist/components/primitives/ui-link.js +0 -16
  222. package/dist/components/primitives/ui-link.js.map +0 -1
  223. package/dist/components/sections/body/body.d.ts +0 -19
  224. package/dist/components/sections/body/body.js +0 -49
  225. package/dist/components/sections/body/body.js.map +0 -1
  226. package/dist/components/sections/footer/footer.d.ts +0 -12
  227. package/dist/components/sections/footer/footer.js +0 -59
  228. package/dist/components/sections/footer/footer.js.map +0 -1
  229. package/dist/components/sections/hero/hero.d.ts +0 -6
  230. package/dist/components/sections/hero/hero.js.map +0 -1
  231. package/dist/components/sections/index.d.ts +0 -3
  232. package/dist/components/sections/index.js +0 -4
  233. package/dist/components/sections/index.js.map +0 -1
  234. package/dist/components/templates/blogpost/blogpost.js +0 -173
  235. package/dist/components/templates/blogpost/blogpost.js.map +0 -1
  236. package/dist/components/templates/startpage/startpage.js +0 -48
  237. package/dist/components/templates/startpage/startpage.js.map +0 -1
  238. package/dist/components/units/index.js +0 -1
  239. package/dist/components/units/index.js.map +0 -1
  240. package/dist/utils.js.map +0 -1
  241. /package/dist/components/{templates → pages}/blogpost/blogpost.d.ts +0 -0
  242. /package/dist/components/{templates → pages}/startpage/startpage.d.ts +0 -0
  243. /package/dist/{utils.d.ts → utils/index.d.ts} +0 -0
  244. /package/dist/{components/units/index.d.ts → utils/index.test.d.ts} +0 -0
@@ -1,9 +1,9 @@
1
1
  const posts = [
2
2
  {
3
- slug: "the-art-of-slow-living",
3
+ id: 1,
4
4
  title: "The Art of Slow Living",
5
5
  excerpt: "In a world that never stops moving, there's a quiet revolution happening \u2014 one that asks us to pause, breathe, and savor.",
6
- body: `In a world that never stops moving, there's a quiet revolution happening \u2014 one that asks us to pause, breathe, and savor the moments that make up our days.
6
+ content: `In a world that never stops moving, there's a quiet revolution happening \u2014 one that asks us to pause, breathe, and savor the moments that make up our days.
7
7
 
8
8
  Slow living isn't about doing everything at a snail's pace. It's about being intentional with your time, choosing quality over quantity, and finding joy in the everyday. Whether it's brewing a cup of tea with care, taking a longer route through the park, or simply sitting with your thoughts \u2014 these small acts of presence add up.
9
9
 
@@ -19,16 +19,17 @@ Research consistently shows that chronic busyness leads to burnout, anxiety, and
19
19
  4. **Spend time in nature.** Even 15 minutes outdoors can reset your nervous system.
20
20
 
21
21
  The beauty of slow living is that it doesn't require a complete lifestyle overhaul. It begins with a single choice to be present.`,
22
- image: "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&h=500&fit=crop",
22
+ primaryImage: "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&h=500&fit=crop",
23
+ originalImage: "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&h=500&fit=crop",
23
24
  date: "2026-02-01",
24
25
  author: "Elena Marsh",
25
- featured: true
26
+ categories: ["Mindfulness"]
26
27
  },
27
28
  {
28
- slug: "designing-with-intention",
29
+ id: 2,
29
30
  title: "Designing with Intention",
30
31
  excerpt: "Good design isn't decoration \u2014 it's communication. Every color, typeface, and pixel should earn its place.",
31
- body: `Good design isn't decoration \u2014 it's communication. Every color, typeface, and pixel should earn its place on the page.
32
+ content: `Good design isn't decoration \u2014 it's communication. Every color, typeface, and pixel should earn its place on the page.
32
33
 
33
34
  When we design with intention, we start by asking questions: Who is this for? What should they feel? What action should they take? The answers shape every decision, from the warmth of a color palette to the weight of a heading.
34
35
 
@@ -45,15 +46,17 @@ The beauty of slow living is that it doesn't require a complete lifestyle overha
45
46
  Your typeface choices are the voice of your brand. A serif display font like Playfair Display brings elegance and editorial authority. Paired with a clean sans-serif for body text, it creates a hierarchy that guides the reader effortlessly.
46
47
 
47
48
  Design with intention means every element serves the whole.`,
48
- image: "https://images.unsplash.com/photo-1558618666-fcd25c85f82e?w=800&h=500&fit=crop",
49
+ primaryImage: "https://images.unsplash.com/photo-1558618666-fcd25c85f82e?w=800&h=500&fit=crop",
50
+ originalImage: "https://images.unsplash.com/photo-1558618666-fcd25c85f82e?w=800&h=500&fit=crop",
49
51
  date: "2026-01-28",
50
- author: "James Kato"
52
+ author: "Elena Marsh",
53
+ categories: ["Design"]
51
54
  },
52
55
  {
53
- slug: "morning-rituals-around-the-world",
56
+ id: 3,
54
57
  title: "Morning Rituals Around the World",
55
58
  excerpt: "From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.",
56
- body: `From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.
59
+ content: `From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.
57
60
 
58
61
  ## Japan: The Way of Tea
59
62
 
@@ -69,19 +72,20 @@ In many Indian households, the morning begins with yoga or meditation, followed
69
72
 
70
73
  ## Italy: The Standing Espresso
71
74
 
72
- Italians take their morning espresso standing at the bar \u2014 a quick, intense ritual that's social and efficient. It's a moment of shared energy before the day begins.
75
+ It Indians take their morning espresso standing at the bar \u2014 a quick, intense ritual that's social and efficient. It's a moment of shared energy before the day begins.
73
76
 
74
77
  These rituals remind us that how we begin our day shapes everything that follows.`,
75
- image: "https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=800&h=500&fit=crop",
78
+ primaryImage: "https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=800&h=500&fit=crop",
79
+ originalImage: "https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=800&h=500&fit=crop",
76
80
  date: "2026-01-20",
77
- author: "Sofia Andersson",
78
- featured: true
81
+ author: "Elena Marsh",
82
+ categories: ["Culture"]
79
83
  },
80
84
  {
81
- slug: "the-beauty-of-imperfection",
85
+ id: 4,
82
86
  title: "The Beauty of Imperfection",
83
87
  excerpt: "Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.",
84
- body: `Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.
88
+ content: `Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.
85
89
 
86
90
  In a culture obsessed with perfection \u2014 flawless skin, pixel-perfect designs, curated feeds \u2014 wabi-sabi offers a radical alternative. This Japanese aesthetic philosophy finds beauty in impermanence, incompleteness, and imperfection.
87
91
 
@@ -96,15 +100,17 @@ Wabi refers to a rustic simplicity, a quiet contentment. Sabi refers to the beau
96
100
  - **In yourself:** Embrace your quirks \u2014 they're what make you interesting.
97
101
 
98
102
  The cracked pot, the faded photograph, the well-worn book \u2014 these carry stories that perfection never could.`,
99
- image: "https://images.unsplash.com/photo-1493106819501-66d381c466f3?w=800&h=500&fit=crop",
103
+ primaryImage: "https://images.unsplash.com/photo-1493106819501-66d381c466f3?w=800&h=500&fit=crop",
104
+ originalImage: "https://images.unsplash.com/photo-1493106819501-66d381c466f3?w=800&h=500&fit=crop",
100
105
  date: "2026-01-15",
101
- author: "Elena Marsh"
106
+ author: "Elena Marsh",
107
+ categories: ["Philosophy"]
102
108
  },
103
109
  {
104
- slug: "building-a-reading-habit",
110
+ id: 5,
105
111
  title: "Building a Reading Habit",
106
112
  excerpt: "Reading more doesn't require willpower \u2014 it requires environment design and a bit of curiosity.",
107
- body: `Reading more doesn't require willpower \u2014 it requires environment design and a bit of curiosity.
113
+ content: `Reading more doesn't require willpower \u2014 it requires environment design and a bit of curiosity.
108
114
 
109
115
  Most people who say they want to read more are really saying they want to scroll less. The solution isn't discipline \u2014 it's making reading the easier choice.
110
116
 
@@ -123,15 +129,17 @@ Don't commit to a chapter. Commit to two pages. Most nights, you'll keep going.
123
129
  Abandon books that bore you. Life is too short for obligatory reading. Follow what fascinates you, even if it's "not serious enough."
124
130
 
125
131
  The goal isn't to read more books. It's to enjoy reading again.`,
126
- image: "https://images.unsplash.com/photo-1512820790803-83ca734da794?w=800&h=500&fit=crop",
132
+ primaryImage: "https://images.unsplash.com/photo-1512820790803-83ca734da794?w=800&h=500&fit=crop",
133
+ originalImage: "https://images.unsplash.com/photo-1512820790803-83ca734da794?w=800&h=500&fit=crop",
127
134
  date: "2026-01-10",
128
- author: "James Kato"
135
+ author: "Elena Marsh",
136
+ categories: ["Habits"]
129
137
  },
130
138
  {
131
- slug: "color-in-everyday-life",
139
+ id: 6,
132
140
  title: "Color in Everyday Life",
133
141
  excerpt: "We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.",
134
- body: `We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.
142
+ content: `We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.
135
143
 
136
144
  Think about the last time a sunset stopped you in your tracks, or a room felt inexplicably cozy. Chances are, color was doing the heavy lifting.
137
145
 
@@ -148,16 +156,17 @@ A well-chosen color palette does more than look good. It creates hierarchy, draw
148
156
  ## Your Daily Palette
149
157
 
150
158
  Notice the colors around you today. The golden light of morning. The deep green of a houseplant. The warm brown of your coffee. These aren't accidents \u2014 they're the palette of your life.`,
151
- image: "https://images.unsplash.com/photo-1525909002-1b05e0c869d8?w=800&h=500&fit=crop",
159
+ primaryImage: "https://images.unsplash.com/photo-1525909002-1b05e0c869d8?w=800&h=500&fit=crop",
160
+ originalImage: "https://images.unsplash.com/photo-1525909002-1b05e0c869d8?w=800&h=500&fit=crop",
152
161
  date: "2026-01-05",
153
- author: "Sofia Andersson",
154
- featured: true
162
+ author: "Elena Marsh",
163
+ categories: ["Design"]
155
164
  },
156
165
  {
157
- slug: "the-power-of-walking",
166
+ id: 7,
158
167
  title: "The Power of Walking",
159
168
  excerpt: "A daily walk is the most underrated tool for creativity, clarity, and calm.",
160
- body: `Walking is humanity's oldest form of movement \u2014 and still one of its most powerful. Great thinkers from Aristotle to Steve Jobs were known for their walking meetings and strolls.
169
+ content: `Walking is humanity's oldest form of movement \u2014 and still one of its most powerful. Great thinkers from Aristotle to Steve Jobs were known for their walking meetings and strolls.
161
170
 
162
171
  ## Why Walking Works
163
172
 
@@ -166,15 +175,17 @@ Walking increases blood flow to the brain, boosts creative thinking by up to 60%
166
175
  ## Making It a Practice
167
176
 
168
177
  You don't need a trail or a destination. A 20-minute loop around your neighborhood is enough. Leave your phone behind \u2014 or at least keep it in your pocket.`,
169
- image: "https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800&h=500&fit=crop",
178
+ primaryImage: "https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800&h=500&fit=crop",
179
+ originalImage: "https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800&h=500&fit=crop",
170
180
  date: "2026-01-02",
171
- author: "Elena Marsh"
181
+ author: "Elena Marsh",
182
+ categories: ["Health"]
172
183
  },
173
184
  {
174
- slug: "minimalism-beyond-aesthetics",
185
+ id: 8,
175
186
  title: "Minimalism Beyond Aesthetics",
176
187
  excerpt: "True minimalism isn't about owning less \u2014 it's about making room for what matters.",
177
- body: `Minimalism has been reduced to white walls and empty shelves. But the philosophy runs much deeper than aesthetics.
188
+ content: `Minimalism has been reduced to white walls and empty shelves. But the philosophy runs much deeper than aesthetics.
178
189
 
179
190
  ## The Core Idea
180
191
 
@@ -183,15 +194,17 @@ Minimalism asks one question: does this add value to my life? Apply it to your s
183
194
  ## Digital Minimalism
184
195
 
185
196
  Our phones hold more clutter than our homes. Audit your apps, notifications, and subscriptions. Keep only what serves you.`,
186
- image: "https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?w=800&h=500&fit=crop",
197
+ primaryImage: "https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?w=800&h=500&fit=crop",
198
+ originalImage: "https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?w=800&h=500&fit=crop",
187
199
  date: "2025-12-28",
188
- author: "James Kato"
200
+ author: "Elena Marsh",
201
+ categories: ["Lifestyle"]
189
202
  },
190
203
  {
191
- slug: "the-lost-art-of-letter-writing",
204
+ id: 9,
192
205
  title: "The Lost Art of Letter Writing",
193
206
  excerpt: "In an age of instant messaging, a handwritten letter carries a weight that no text can match.",
194
- body: `There's something irreplaceable about receiving a handwritten letter. The texture of the paper, the imperfections of the handwriting, the knowledge that someone sat down and gave you their time.
207
+ content: `There's something irreplaceable about receiving a handwritten letter. The texture of the paper, the imperfections of the handwriting, the knowledge that someone sat down and gave you their time.
195
208
 
196
209
  ## Why Write Letters
197
210
 
@@ -200,15 +213,17 @@ Letters slow us down. They force us to organize our thoughts, choose our words c
200
213
  ## Getting Started
201
214
 
202
215
  Buy a simple set of stationery. Write to someone you care about. It doesn't need to be long \u2014 even a few heartfelt lines will mean the world.`,
203
- image: "https://images.unsplash.com/photo-1517971071642-34a2d3ecc9cd?w=800&h=500&fit=crop",
216
+ primaryImage: "https://images.unsplash.com/photo-1517971071642-34a2d3ecc9cd?w=800&h=500&fit=crop",
217
+ originalImage: "https://images.unsplash.com/photo-1517971071642-34a2d3ecc9cd?w=800&h=500&fit=crop",
204
218
  date: "2025-12-20",
205
- author: "Sofia Andersson"
219
+ author: "Elena Marsh",
220
+ categories: ["Connection"]
206
221
  },
207
222
  {
208
- slug: "cooking-as-meditation",
223
+ id: 10,
209
224
  title: "Cooking as Meditation",
210
225
  excerpt: "The kitchen can be your sanctuary \u2014 if you let the process matter more than the result.",
211
- body: `We often think of cooking as a chore \u2014 something to get through before we can eat. But approached differently, it becomes a meditative practice.
226
+ content: `We often think of cooking as a chore \u2014 something to get through before we can eat. But approached differently, it becomes a meditative practice.
212
227
 
213
228
  ## The Mindful Kitchen
214
229
 
@@ -217,15 +232,17 @@ Focus on the sounds: the sizzle of oil, the chop of a knife, the bubble of a sim
217
232
  ## Simple Rituals
218
233
 
219
234
  Start with a recipe you love. Prep all your ingredients before you begin. Put on music. Pour yourself a drink. Let the process be the point.`,
220
- image: "https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=500&fit=crop",
235
+ primaryImage: "https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=500&fit=crop",
236
+ originalImage: "https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=500&fit=crop",
221
237
  date: "2025-12-15",
222
- author: "Elena Marsh"
238
+ author: "Elena Marsh",
239
+ categories: ["Mindfulness"]
223
240
  },
224
241
  {
225
- slug: "digital-detox-weekend",
242
+ id: 11,
226
243
  title: "The Digital Detox Weekend",
227
244
  excerpt: "48 hours without screens sounds terrifying \u2014 until you try it and realize how much you've been missing.",
228
- body: `A digital detox weekend isn't about hating technology. It's about remembering what life feels like without constant input.
245
+ content: `A digital detox weekend isn't about hating technology. It's about remembering what life feels like without constant input.
229
246
 
230
247
  ## The Rules
231
248
 
@@ -234,9 +251,11 @@ No phone, no laptop, no tablet for 48 hours. Use a paper map, a physical book, a
234
251
  ## What You'll Discover
235
252
 
236
253
  Boredom arrives first \u2014 then creativity. You'll notice birdsong, have longer conversations, and sleep better than you have in months.`,
237
- image: "https://images.unsplash.com/photo-1528297506728-9533d2ac3fa4?w=800&h=500&fit=crop",
254
+ primaryImage: "https://images.unsplash.com/photo-1528297506728-9533d2ac3fa4?w=800&h=500&fit=crop",
255
+ originalImage: "https://images.unsplash.com/photo-1528297506728-9533d2ac3fa4?w=800&h=500&fit=crop",
238
256
  date: "2025-12-10",
239
- author: "James Kato"
257
+ author: "Elena Marsh",
258
+ categories: ["Well-being"]
240
259
  }
241
260
  ];
242
261
  const mockComments = [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/posts.ts"],"sourcesContent":["export interface BlogPost {\r\n slug: string;\r\n title: string;\r\n excerpt: string;\r\n body: string;\r\n image: string;\r\n date: string;\r\n author: string;\r\n featured?: boolean;\r\n}\r\n\r\nexport interface Comment {\r\n id: string;\r\n author: string;\r\n text: string;\r\n date: string;\r\n}\r\n\r\nexport const posts: BlogPost[] = [\r\n {\r\n slug: \"the-art-of-slow-living\",\r\n title: \"The Art of Slow Living\",\r\n excerpt:\r\n \"In a world that never stops moving, there's a quiet revolution happening — one that asks us to pause, breathe, and savor.\",\r\n body: `In a world that never stops moving, there's a quiet revolution happening — one that asks us to pause, breathe, and savor the moments that make up our days.\r\n\r\nSlow living isn't about doing everything at a snail's pace. It's about being intentional with your time, choosing quality over quantity, and finding joy in the everyday. Whether it's brewing a cup of tea with care, taking a longer route through the park, or simply sitting with your thoughts — these small acts of presence add up.\r\n\r\n## Why Slow Down?\r\n\r\nResearch consistently shows that chronic busyness leads to burnout, anxiety, and a diminished sense of well-being. When we rush through life, we miss the textures, flavors, and connections that give it meaning.\r\n\r\n## Practical Steps\r\n\r\n1. **Start your morning without screens.** Give yourself 30 minutes before checking notifications.\r\n2. **Cook one meal from scratch each week.** The process itself becomes meditative.\r\n3. **Single-task.** Give your full attention to one thing at a time.\r\n4. **Spend time in nature.** Even 15 minutes outdoors can reset your nervous system.\r\n\r\nThe beauty of slow living is that it doesn't require a complete lifestyle overhaul. It begins with a single choice to be present.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&h=500&fit=crop\",\r\n date: \"2026-02-01\",\r\n author: \"Elena Marsh\",\r\n featured: true,\r\n },\r\n {\r\n slug: \"designing-with-intention\",\r\n title: \"Designing with Intention\",\r\n excerpt:\r\n \"Good design isn't decoration — it's communication. Every color, typeface, and pixel should earn its place.\",\r\n body: `Good design isn't decoration — it's communication. Every color, typeface, and pixel should earn its place on the page.\r\n\r\n When we design with intention, we start by asking questions: Who is this for? What should they feel? What action should they take? The answers shape every decision, from the warmth of a color palette to the weight of a heading.\r\n\r\n ## The Role of Constraints\r\n\r\n Constraints are a designer's best friend. A limited palette forces creativity. A strict grid creates rhythm. When everything is possible, nothing stands out.\r\n\r\n ## Color as Emotion\r\n\r\n Colors carry meaning. Warm terracottas evoke trust and earthiness. Golds suggest warmth and optimism. The combination tells a story before a single word is read.\r\n\r\n ## Typography as Voice\r\n\r\n Your typeface choices are the voice of your brand. A serif display font like Playfair Display brings elegance and editorial authority. Paired with a clean sans-serif for body text, it creates a hierarchy that guides the reader effortlessly.\r\n\r\n Design with intention means every element serves the whole.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1558618666-fcd25c85f82e?w=800&h=500&fit=crop\",\r\n date: \"2026-01-28\",\r\n author: \"James Kato\",\r\n },\r\n {\r\n slug: \"morning-rituals-around-the-world\",\r\n title: \"Morning Rituals Around the World\",\r\n excerpt:\r\n \"From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.\",\r\n body: `From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.\r\n\r\n## Japan: The Way of Tea\r\n\r\nIn Japan, the morning tea ceremony is a practice of mindfulness. Each movement is deliberate, each moment savored. It's not about the tea — it's about presence.\r\n\r\n## Scandinavia: Fika\r\n\r\nThe Swedish tradition of fika — a coffee break with pastries — is less about caffeine and more about connection. It's a built-in pause in the day to share conversation with friends or colleagues.\r\n\r\n## India: Yoga and Chai\r\n\r\nIn many Indian households, the morning begins with yoga or meditation, followed by a cup of spiced chai. The combination of movement and warmth prepares both body and mind for the day ahead.\r\n\r\n## Italy: The Standing Espresso\r\n\r\nItalians take their morning espresso standing at the bar — a quick, intense ritual that's social and efficient. It's a moment of shared energy before the day begins.\r\n\r\nThese rituals remind us that how we begin our day shapes everything that follows.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=800&h=500&fit=crop\",\r\n date: \"2026-01-20\",\r\n author: \"Sofia Andersson\",\r\n featured: true,\r\n },\r\n {\r\n slug: \"the-beauty-of-imperfection\",\r\n title: \"The Beauty of Imperfection\",\r\n excerpt:\r\n \"Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.\",\r\n body: `Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.\r\n\r\nIn a culture obsessed with perfection — flawless skin, pixel-perfect designs, curated feeds — wabi-sabi offers a radical alternative. This Japanese aesthetic philosophy finds beauty in impermanence, incompleteness, and imperfection.\r\n\r\n## What is Wabi-Sabi?\r\n\r\nWabi refers to a rustic simplicity, a quiet contentment. Sabi refers to the beauty that comes with age and wear. Together, they describe an aesthetic that values the authentic over the polished.\r\n\r\n## Applying Wabi-Sabi\r\n\r\n- **In your home:** Choose handmade ceramics over mass-produced perfection.\r\n- **In your work:** Ship the good-enough version rather than waiting for perfect.\r\n- **In yourself:** Embrace your quirks — they're what make you interesting.\r\n\r\nThe cracked pot, the faded photograph, the well-worn book — these carry stories that perfection never could.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1493106819501-66d381c466f3?w=800&h=500&fit=crop\",\r\n date: \"2026-01-15\",\r\n author: \"Elena Marsh\",\r\n },\r\n {\r\n slug: \"building-a-reading-habit\",\r\n title: \"Building a Reading Habit\",\r\n excerpt:\r\n \"Reading more doesn't require willpower — it requires environment design and a bit of curiosity.\",\r\n body: `Reading more doesn't require willpower — it requires environment design and a bit of curiosity.\r\n\r\nMost people who say they want to read more are really saying they want to scroll less. The solution isn't discipline — it's making reading the easier choice.\r\n\r\n## Environment Design\r\n\r\n1. **Keep a book visible.** On your nightstand, your desk, your bag.\r\n2. **Remove friction.** If you read on a Kindle, keep it charged and accessible.\r\n3. **Create a reading nook.** A comfortable chair with good light signals \"this is where I read.\"\r\n\r\n## The Two-Page Rule\r\n\r\nDon't commit to a chapter. Commit to two pages. Most nights, you'll keep going. On the nights you don't, you've still read two pages more than zero.\r\n\r\n## Follow Your Curiosity\r\n\r\nAbandon books that bore you. Life is too short for obligatory reading. Follow what fascinates you, even if it's \"not serious enough.\"\r\n\r\nThe goal isn't to read more books. It's to enjoy reading again.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1512820790803-83ca734da794?w=800&h=500&fit=crop\",\r\n date: \"2026-01-10\",\r\n author: \"James Kato\",\r\n },\r\n {\r\n slug: \"color-in-everyday-life\",\r\n title: \"Color in Everyday Life\",\r\n excerpt:\r\n \"We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.\",\r\n body: `We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.\r\n\r\nThink about the last time a sunset stopped you in your tracks, or a room felt inexplicably cozy. Chances are, color was doing the heavy lifting.\r\n\r\n## The Psychology of Color\r\n\r\n- **Warm colors** (reds, oranges, yellows) increase energy and appetite. Restaurants use them for a reason.\r\n- **Cool colors** (blues, greens) promote calm and focus. Think hospitals and meditation apps.\r\n- **Neutrals** create breathing room. They let other elements — and people — take center stage.\r\n\r\n## Color in Design\r\n\r\nA well-chosen color palette does more than look good. It creates hierarchy, draws attention, and establishes mood — all before a user reads a single word.\r\n\r\n## Your Daily Palette\r\n\r\nNotice the colors around you today. The golden light of morning. The deep green of a houseplant. The warm brown of your coffee. These aren't accidents — they're the palette of your life.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1525909002-1b05e0c869d8?w=800&h=500&fit=crop\",\r\n date: \"2026-01-05\",\r\n author: \"Sofia Andersson\",\r\n featured: true,\r\n },\r\n {\r\n slug: \"the-power-of-walking\",\r\n title: \"The Power of Walking\",\r\n excerpt:\r\n \"A daily walk is the most underrated tool for creativity, clarity, and calm.\",\r\n body: `Walking is humanity's oldest form of movement — and still one of its most powerful. Great thinkers from Aristotle to Steve Jobs were known for their walking meetings and strolls.\r\n\r\n## Why Walking Works\r\n\r\nWalking increases blood flow to the brain, boosts creative thinking by up to 60%, and reduces cortisol levels. It's exercise, meditation, and brainstorming rolled into one.\r\n\r\n## Making It a Practice\r\n\r\nYou don't need a trail or a destination. A 20-minute loop around your neighborhood is enough. Leave your phone behind — or at least keep it in your pocket.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800&h=500&fit=crop\",\r\n date: \"2026-01-02\",\r\n author: \"Elena Marsh\",\r\n },\r\n {\r\n slug: \"minimalism-beyond-aesthetics\",\r\n title: \"Minimalism Beyond Aesthetics\",\r\n excerpt:\r\n \"True minimalism isn't about owning less — it's about making room for what matters.\",\r\n body: `Minimalism has been reduced to white walls and empty shelves. But the philosophy runs much deeper than aesthetics.\r\n\r\n## The Core Idea\r\n\r\nMinimalism asks one question: does this add value to my life? Apply it to your schedule, your relationships, your commitments — not just your closet.\r\n\r\n## Digital Minimalism\r\n\r\nOur phones hold more clutter than our homes. Audit your apps, notifications, and subscriptions. Keep only what serves you.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?w=800&h=500&fit=crop\",\r\n date: \"2025-12-28\",\r\n author: \"James Kato\",\r\n },\r\n {\r\n slug: \"the-lost-art-of-letter-writing\",\r\n title: \"The Lost Art of Letter Writing\",\r\n excerpt:\r\n \"In an age of instant messaging, a handwritten letter carries a weight that no text can match.\",\r\n body: `There's something irreplaceable about receiving a handwritten letter. The texture of the paper, the imperfections of the handwriting, the knowledge that someone sat down and gave you their time.\r\n\r\n## Why Write Letters\r\n\r\nLetters slow us down. They force us to organize our thoughts, choose our words carefully, and express ourselves with intention.\r\n\r\n## Getting Started\r\n\r\nBuy a simple set of stationery. Write to someone you care about. It doesn't need to be long — even a few heartfelt lines will mean the world.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1517971071642-34a2d3ecc9cd?w=800&h=500&fit=crop\",\r\n date: \"2025-12-20\",\r\n author: \"Sofia Andersson\",\r\n },\r\n {\r\n slug: \"cooking-as-meditation\",\r\n title: \"Cooking as Meditation\",\r\n excerpt:\r\n \"The kitchen can be your sanctuary — if you let the process matter more than the result.\",\r\n body: `We often think of cooking as a chore — something to get through before we can eat. But approached differently, it becomes a meditative practice.\r\n\r\n## The Mindful Kitchen\r\n\r\nFocus on the sounds: the sizzle of oil, the chop of a knife, the bubble of a simmer. Engage your senses fully and the kitchen becomes a place of calm.\r\n\r\n## Simple Rituals\r\n\r\nStart with a recipe you love. Prep all your ingredients before you begin. Put on music. Pour yourself a drink. Let the process be the point.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=500&fit=crop\",\r\n date: \"2025-12-15\",\r\n author: \"Elena Marsh\",\r\n },\r\n {\r\n slug: \"digital-detox-weekend\",\r\n title: \"The Digital Detox Weekend\",\r\n excerpt:\r\n \"48 hours without screens sounds terrifying — until you try it and realize how much you've been missing.\",\r\n body: `A digital detox weekend isn't about hating technology. It's about remembering what life feels like without constant input.\r\n\r\n## The Rules\r\n\r\nNo phone, no laptop, no tablet for 48 hours. Use a paper map, a physical book, an alarm clock. Tell people in advance so they don't worry.\r\n\r\n## What You'll Discover\r\n\r\nBoredom arrives first — then creativity. You'll notice birdsong, have longer conversations, and sleep better than you have in months.`,\r\n image:\r\n \"https://images.unsplash.com/photo-1528297506728-9533d2ac3fa4?w=800&h=500&fit=crop\",\r\n date: \"2025-12-10\",\r\n author: \"James Kato\",\r\n },\r\n];\r\n\r\nexport const mockComments: Comment[] = [\r\n {\r\n id: \"1\",\r\n author: \"Reader One\",\r\n text: \"This really resonated with me. Thank you for sharing.\",\r\n date: \"2026-02-02\",\r\n },\r\n {\r\n id: \"2\",\r\n author: \"Curious Mind\",\r\n text: \"I've been trying to slow down lately — this gave me some great ideas.\",\r\n date: \"2026-02-03\",\r\n },\r\n {\r\n id: \"3\",\r\n author: \"Design Fan\",\r\n text: \"Beautiful writing and perspective. More of this please!\",\r\n date: \"2026-02-05\",\r\n },\r\n];\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/data/posts.ts"],"sourcesContent":["export interface BlogPost {\r\n id: number;\r\n title: string;\r\n excerpt: string;\r\n content: string;\r\n primaryImage: string;\r\n originalImage: string;\r\n date: string;\r\n author: string;\r\n featured?: boolean;\r\n categories: string[];\r\n}\r\n\r\nexport interface Comment {\r\n id: string;\r\n author: string;\r\n text: string;\r\n date: string;\r\n}\r\n\r\nexport const posts: BlogPost[] = [\r\n {\r\n id: 1,\r\n title: \"The Art of Slow Living\",\r\n excerpt:\r\n \"In a world that never stops moving, there's a quiet revolution happening — one that asks us to pause, breathe, and savor.\",\r\n content: `In a world that never stops moving, there's a quiet revolution happening — one that asks us to pause, breathe, and savor the moments that make up our days.\r\n\r\nSlow living isn't about doing everything at a snail's pace. It's about being intentional with your time, choosing quality over quantity, and finding joy in the everyday. Whether it's brewing a cup of tea with care, taking a longer route through the park, or simply sitting with your thoughts — these small acts of presence add up.\r\n\r\n## Why Slow Down?\r\n\r\nResearch consistently shows that chronic busyness leads to burnout, anxiety, and a diminished sense of well-being. When we rush through life, we miss the textures, flavors, and connections that give it meaning.\r\n\r\n## Practical Steps\r\n\r\n1. **Start your morning without screens.** Give yourself 30 minutes before checking notifications.\r\n2. **Cook one meal from scratch each week.** The process itself becomes meditative.\r\n3. **Single-task.** Give your full attention to one thing at a time.\r\n4. **Spend time in nature.** Even 15 minutes outdoors can reset your nervous system.\r\n\r\nThe beauty of slow living is that it doesn't require a complete lifestyle overhaul. It begins with a single choice to be present.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800&h=500&fit=crop\",\r\n date: \"2026-02-01\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Mindfulness\"],\r\n },\r\n {\r\n id: 2,\r\n title: \"Designing with Intention\",\r\n excerpt:\r\n \"Good design isn't decoration — it's communication. Every color, typeface, and pixel should earn its place.\",\r\n content: `Good design isn't decoration — it's communication. Every color, typeface, and pixel should earn its place on the page.\r\n\r\n When we design with intention, we start by asking questions: Who is this for? What should they feel? What action should they take? The answers shape every decision, from the warmth of a color palette to the weight of a heading.\r\n\r\n ## The Role of Constraints\r\n\r\n Constraints are a designer's best friend. A limited palette forces creativity. A strict grid creates rhythm. When everything is possible, nothing stands out.\r\n\r\n ## Color as Emotion\r\n\r\n Colors carry meaning. Warm terracottas evoke trust and earthiness. Golds suggest warmth and optimism. The combination tells a story before a single word is read.\r\n\r\n ## Typography as Voice\r\n\r\n Your typeface choices are the voice of your brand. A serif display font like Playfair Display brings elegance and editorial authority. Paired with a clean sans-serif for body text, it creates a hierarchy that guides the reader effortlessly.\r\n\r\n Design with intention means every element serves the whole.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1558618666-fcd25c85f82e?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1558618666-fcd25c85f82e?w=800&h=500&fit=crop\",\r\n date: \"2026-01-28\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Design\"],\r\n },\r\n {\r\n id: 3,\r\n title: \"Morning Rituals Around the World\",\r\n excerpt:\r\n \"From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.\",\r\n content: `From Japanese tea ceremonies to Scandinavian fika, how different cultures start their day reveals what they value most.\r\n\r\n## Japan: The Way of Tea\r\n\r\nIn Japan, the morning tea ceremony is a practice of mindfulness. Each movement is deliberate, each moment savored. It's not about the tea — it's about presence.\r\n\r\n## Scandinavia: Fika\r\n\r\nThe Swedish tradition of fika — a coffee break with pastries — is less about caffeine and more about connection. It's a built-in pause in the day to share conversation with friends or colleagues.\r\n\r\n## India: Yoga and Chai\r\n\r\nIn many Indian households, the morning begins with yoga or meditation, followed by a cup of spiced chai. The combination of movement and warmth prepares both body and mind for the day ahead.\r\n\r\n## Italy: The Standing Espresso\r\n\r\nIt Indians take their morning espresso standing at the bar — a quick, intense ritual that's social and efficient. It's a moment of shared energy before the day begins.\r\n\r\nThese rituals remind us that how we begin our day shapes everything that follows.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=800&h=500&fit=crop\",\r\n date: \"2026-01-20\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Culture\"],\r\n },\r\n {\r\n id: 4,\r\n title: \"The Beauty of Imperfection\",\r\n excerpt:\r\n \"Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.\",\r\n content: `Wabi-sabi teaches us to find beauty in the worn, the weathered, and the wonderfully imperfect.\r\n\r\nIn a culture obsessed with perfection — flawless skin, pixel-perfect designs, curated feeds — wabi-sabi offers a radical alternative. This Japanese aesthetic philosophy finds beauty in impermanence, incompleteness, and imperfection.\r\n\r\n## What is Wabi-Sabi?\r\n\r\nWabi refers to a rustic simplicity, a quiet contentment. Sabi refers to the beauty that comes with age and wear. Together, they describe an aesthetic that values the authentic over the polished.\r\n\r\n## Applying Wabi-Sabi\r\n\r\n- **In your home:** Choose handmade ceramics over mass-produced perfection.\r\n- **In your work:** Ship the good-enough version rather than waiting for perfect.\r\n- **In yourself:** Embrace your quirks — they're what make you interesting.\r\n\r\nThe cracked pot, the faded photograph, the well-worn book — these carry stories that perfection never could.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1493106819501-66d381c466f3?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1493106819501-66d381c466f3?w=800&h=500&fit=crop\",\r\n date: \"2026-01-15\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Philosophy\"],\r\n },\r\n {\r\n id: 5,\r\n title: \"Building a Reading Habit\",\r\n excerpt:\r\n \"Reading more doesn't require willpower — it requires environment design and a bit of curiosity.\",\r\n content: `Reading more doesn't require willpower — it requires environment design and a bit of curiosity.\r\n\r\nMost people who say they want to read more are really saying they want to scroll less. The solution isn't discipline — it's making reading the easier choice.\r\n\r\n## Environment Design\r\n\r\n1. **Keep a book visible.** On your nightstand, your desk, your bag.\r\n2. **Remove friction.** If you read on a Kindle, keep it charged and accessible.\r\n3. **Create a reading nook.** A comfortable chair with good light signals \"this is where I read.\"\r\n\r\n## The Two-Page Rule\r\n\r\nDon't commit to a chapter. Commit to two pages. Most nights, you'll keep going. On the nights you don't, you've still read two pages more than zero.\r\n\r\n## Follow Your Curiosity\r\n\r\nAbandon books that bore you. Life is too short for obligatory reading. Follow what fascinates you, even if it's \"not serious enough.\"\r\n\r\nThe goal isn't to read more books. It's to enjoy reading again.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1512820790803-83ca734da794?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1512820790803-83ca734da794?w=800&h=500&fit=crop\",\r\n date: \"2026-01-10\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Habits\"],\r\n },\r\n {\r\n id: 6,\r\n title: \"Color in Everyday Life\",\r\n excerpt:\r\n \"We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.\",\r\n content: `We rarely notice it, but color shapes our moods, decisions, and memories more than we realize.\r\n\r\nThink about the last time a sunset stopped you in your tracks, or a room felt inexplicably cozy. Chances are, color was doing the heavy lifting.\r\n\r\n## The Psychology of Color\r\n\r\n- **Warm colors** (reds, oranges, yellows) increase energy and appetite. Restaurants use them for a reason.\r\n- **Cool colors** (blues, greens) promote calm and focus. Think hospitals and meditation apps.\r\n- **Neutrals** create breathing room. They let other elements — and people — take center stage.\r\n\r\n## Color in Design\r\n\r\nA well-chosen color palette does more than look good. It creates hierarchy, draws attention, and establishes mood — all before a user reads a single word.\r\n\r\n## Your Daily Palette\r\n\r\nNotice the colors around you today. The golden light of morning. The deep green of a houseplant. The warm brown of your coffee. These aren't accidents — they're the palette of your life.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1525909002-1b05e0c869d8?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1525909002-1b05e0c869d8?w=800&h=500&fit=crop\",\r\n date: \"2026-01-05\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Design\"],\r\n },\r\n {\r\n id: 7,\r\n title: \"The Power of Walking\",\r\n excerpt:\r\n \"A daily walk is the most underrated tool for creativity, clarity, and calm.\",\r\n content: `Walking is humanity's oldest form of movement — and still one of its most powerful. Great thinkers from Aristotle to Steve Jobs were known for their walking meetings and strolls.\r\n\r\n## Why Walking Works\r\n\r\nWalking increases blood flow to the brain, boosts creative thinking by up to 60%, and reduces cortisol levels. It's exercise, meditation, and brainstorming rolled into one.\r\n\r\n## Making It a Practice\r\n\r\nYou don't need a trail or a destination. A 20-minute loop around your neighborhood is enough. Leave your phone behind — or at least keep it in your pocket.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1476480862126-209bfaa8edc8?w=800&h=500&fit=crop\",\r\n date: \"2026-01-02\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Health\"],\r\n },\r\n {\r\n id: 8,\r\n title: \"Minimalism Beyond Aesthetics\",\r\n excerpt:\r\n \"True minimalism isn't about owning less — it's about making room for what matters.\",\r\n content: `Minimalism has been reduced to white walls and empty shelves. But the philosophy runs much deeper than aesthetics.\r\n\r\n## The Core Idea\r\n\r\nMinimalism asks one question: does this add value to my life? Apply it to your schedule, your relationships, your commitments — not just your closet.\r\n\r\n## Digital Minimalism\r\n\r\nOur phones hold more clutter than our homes. Audit your apps, notifications, and subscriptions. Keep only what serves you.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?w=800&h=500&fit=crop\",\r\n date: \"2025-12-28\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Lifestyle\"],\r\n },\r\n {\r\n id: 9,\r\n title: \"The Lost Art of Letter Writing\",\r\n excerpt:\r\n \"In an age of instant messaging, a handwritten letter carries a weight that no text can match.\",\r\n content: `There's something irreplaceable about receiving a handwritten letter. The texture of the paper, the imperfections of the handwriting, the knowledge that someone sat down and gave you their time.\r\n\r\n## Why Write Letters\r\n\r\nLetters slow us down. They force us to organize our thoughts, choose our words carefully, and express ourselves with intention.\r\n\r\n## Getting Started\r\n\r\nBuy a simple set of stationery. Write to someone you care about. It doesn't need to be long — even a few heartfelt lines will mean the world.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1517971071642-34a2d3ecc9cd?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1517971071642-34a2d3ecc9cd?w=800&h=500&fit=crop\",\r\n date: \"2025-12-20\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Connection\"],\r\n },\r\n {\r\n id: 10,\r\n title: \"Cooking as Meditation\",\r\n excerpt:\r\n \"The kitchen can be your sanctuary — if you let the process matter more than the result.\",\r\n content: `We often think of cooking as a chore — something to get through before we can eat. But approached differently, it becomes a meditative practice.\r\n\r\n## The Mindful Kitchen\r\n\r\nFocus on the sounds: the sizzle of oil, the chop of a knife, the bubble of a simmer. Engage your senses fully and the kitchen becomes a place of calm.\r\n\r\n## Simple Rituals\r\n\r\nStart with a recipe you love. Prep all your ingredients before you begin. Put on music. Pour yourself a drink. Let the process be the point.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=500&fit=crop\",\r\n date: \"2025-12-15\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Mindfulness\"],\r\n },\r\n {\r\n id: 11,\r\n title: \"The Digital Detox Weekend\",\r\n excerpt:\r\n \"48 hours without screens sounds terrifying — until you try it and realize how much you've been missing.\",\r\n content: `A digital detox weekend isn't about hating technology. It's about remembering what life feels like without constant input.\r\n\r\n## The Rules\r\n\r\nNo phone, no laptop, no tablet for 48 hours. Use a paper map, a physical book, an alarm clock. Tell people in advance so they don't worry.\r\n\r\n## What You'll Discover\r\n\r\nBoredom arrives first — then creativity. You'll notice birdsong, have longer conversations, and sleep better than you have in months.`,\r\n primaryImage:\r\n \"https://images.unsplash.com/photo-1528297506728-9533d2ac3fa4?w=800&h=500&fit=crop\",\r\n originalImage:\r\n \"https://images.unsplash.com/photo-1528297506728-9533d2ac3fa4?w=800&h=500&fit=crop\",\r\n date: \"2025-12-10\",\r\n author: \"Elena Marsh\",\r\n categories: [\"Well-being\"],\r\n },\r\n];\r\n\r\nexport const mockComments: Comment[] = [\r\n {\r\n id: \"1\",\r\n author: \"Reader One\",\r\n text: \"This really resonated with me. Thank you for sharing.\",\r\n date: \"2026-02-02\",\r\n },\r\n {\r\n id: \"2\",\r\n author: \"Curious Mind\",\r\n text: \"I've been trying to slow down lately — this gave me some great ideas.\",\r\n date: \"2026-02-03\",\r\n },\r\n {\r\n id: \"3\",\r\n author: \"Design Fan\",\r\n text: \"Beautiful writing and perspective. More of this please!\",\r\n date: \"2026-02-05\",\r\n },\r\n];\r\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,38 +1,68 @@
1
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './components/blocks/cards/card.js';
2
+ export { PostListWithFilters } from './components/blocks/post-list/post-list-with-filters.js';
3
+ export { AdminPage, AdminPageProps } from './components/pages/admin/admin-page.js';
4
+ export { BlogPost } from './components/pages/blogpost/blogpost.js';
5
+ export { CategoryPage } from './components/pages/category/category-page.js';
6
+ export { LoginPage } from './components/pages/login/login-page.js';
7
+ export { MaintenancePage } from './components/pages/maintenance/maintenance-page.js';
8
+ export { NotFound } from './components/pages/not-found/not-found.js';
9
+ export { PrivacyPage } from './components/pages/privacy/privacy-page.js';
10
+ export { SearchPage } from './components/pages/search/search-page.js';
11
+ export { StartPage } from './components/pages/startpage/startpage.js';
12
+ export { TermsPage } from './components/pages/terms/terms-page.js';
1
13
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './components/primitives/accordion/accordion.js';
2
14
  export { Alert, AlertAction, AlertDescription, AlertTitle, alertVariants } from './components/primitives/alert/alert.js';
3
15
  export { Badge, badgeVariants, badgeVariantsProps } from './components/primitives/badge/badge.js';
4
16
  export { Badges, BadgesProps } from './components/primitives/badge/badges.js';
5
- export { Button, buttonVariants, buttonVariantsProps } from './components/primitives/button/button.js';
17
+ export { Button, buttonVariants, buttonVariantsProps } from './components/primitives/buttons/button.js';
18
+ export { IconButton, buttonIconVariants, iconButtonVariantsProps } from './components/primitives/buttons/icon-button.js';
19
+ export { LinkButton } from './components/primitives/buttons/link-button.js';
20
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './components/primitives/collapsible/collapsible.js';
21
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './components/primitives/dropdown-menu/dropdown-menu.js';
22
+ export { Checkbox } from './components/primitives/forms/checkbox.js';
23
+ export { Input } from './components/primitives/forms/input.js';
24
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from './components/primitives/forms/select.js';
25
+ export { Textarea } from './components/primitives/forms/textarea.js';
6
26
  export { Icon, iconVariants, iconVariantsProps } from './components/primitives/icon/icon.js';
27
+ export { Label } from './components/primitives/label/label.js';
7
28
  export { Layout, LayoutProps, layoutVariants, layoutVariantsProps } from './components/primitives/layout/layout.js';
8
29
  export { Link, linkVariants } from './components/primitives/link/link.js';
9
- export { LinkButton } from './components/primitives/link/link-button.js';
10
30
  export { Separator } from './components/primitives/separator/separator.js';
31
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from './components/primitives/sheet/sheet.js';
11
32
  export { Skeleton } from './components/primitives/skeleton/skeleton.js';
33
+ export { Toaster } from './components/primitives/sonner/sonner.js';
12
34
  export { Spinner } from './components/primitives/spinner/spinner.js';
13
35
  export { Stack, StackProps, stackVariants } from './components/primitives/stack/stack.js';
36
+ export { Heading, HeadingProps, headingVariants, headingVariantsProps } from './components/primitives/text/heading.js';
37
+ export { TextCode, TextCodeProps, textCodeVariants, textCodeVariantsProps } from './components/primitives/text/text-code.js';
14
38
  export { TextDiv } from './components/primitives/text/text-div.js';
15
- export { TextHeading, TextHeadingProps, textHeadingVariants, textHeadingVariantsProps } from './components/primitives/text/text-heading.js';
16
- export { TextParagraph, textParagraphVariants, textParagraphVariantsProps } from './components/primitives/text/text-paragraph.js';
17
39
  export { TextSpan } from './components/primitives/text/text-span.js';
18
40
  export { TextTime } from './components/primitives/text/text-time.js';
19
- export { UiImage } from './components/primitives/ui-image.js';
20
- export { UiLink } from './components/primitives/ui-link.js';
21
- export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './components/blocks/cards/card.js';
22
- export { Body } from './components/sections/body/body.js';
23
- export { BlogPost } from './components/templates/blogpost/blogpost.js';
24
- export { StartPage } from './components/templates/startpage/startpage.js';
41
+ export { Text, textVariants, textVariantsProps } from './components/primitives/text/text.js';
42
+ export { UiImage } from './components/primitives/ui-image/ui-image.js';
43
+ export { UiLink } from './components/primitives/ui-link/ui-link.js';
25
44
  export { BaseImageProps, DefaultImage, ImageComponentType, ImageProvider, useImage } from './components/providers/ImageContext.js';
26
45
  export { BaseLinkProps, DefaultLink, LinkComponentType, LinkProvider, useLink } from './components/providers/LinkContext.js';
27
46
  export { SingularityProvider } from './components/providers/SingularityContext.js';
47
+ export { AuthProvider, useAuth } from './components/providers/auth-provider.js';
48
+ export { Theme, ThemeProvider, ThemeProviderProps, ThemeProviderState, useTheme } from './components/providers/theme-provider.js';
49
+ export { Container } from './components/templates/container/container.js';
50
+ export { Footer } from './components/templates/footer/footer.js';
51
+ export { Header, HeaderProps, NavLink } from './components/templates/navigation/header.js';
52
+ export { toast } from 'sonner';
28
53
  import 'react/jsx-runtime';
54
+ import 'react';
55
+ import './data/posts.js';
29
56
  import '@base-ui/react/accordion';
30
57
  import 'class-variance-authority/types';
31
- import 'react';
32
58
  import 'class-variance-authority';
33
59
  import '@base-ui/react/use-render';
34
60
  import '@base-ui/react/button';
35
61
  import 'lucide-react';
62
+ import '@radix-ui/react-collapsible';
63
+ import '@radix-ui/react-dropdown-menu';
64
+ import '@base-ui/react';
36
65
  import '@base-ui/react/separator';
37
- import './lib/types.js';
66
+ import '@radix-ui/react-dialog';
38
67
  import './components/primitives/text/internal/text-element.js';
68
+ import './lib/types.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./components";
1
+ export * from "./components/index.js";
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components\";\r\n"],"mappings":"AAAA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Root index\n *\n * Please keep exports sorted alphabetically by path!\n */\n\nexport * from \"./components/index\";\n"],"mappings":"AAMA,cAAc;","names":[]}
@@ -1,2 +1,2 @@
1
- export * from "./date";
1
+ export * from "./date.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/helpers/index.ts"],"sourcesContent":["export * from \"./date\";\r\n"],"mappings":"AAAA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/helpers/index.ts"],"sourcesContent":["/**\n * Helpers index\n *\n * Please keep exports sorted alphabetically by path!\n */\n\nexport * from \"./date\";\n"],"mappings":"AAMA,cAAc;","names":[]}
package/dist/lib/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from "./helpers";
2
- export * from "./hooks/useIsClient";
1
+ export * from "./helpers/index.js";
2
+ export * from "./hooks/useIsClient.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["export * from \"./helpers\";\r\nexport * from \"./hooks/useIsClient\";\r\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["/**\n * Library index\n *\n * Please keep exports sorted alphabetically by path!\n */\n\nexport * from \"./helpers/index\";\nexport * from \"./hooks/useIsClient\";\n"],"mappings":"AAMA,cAAc;AACd,cAAc;","names":[]}
@@ -1,9 +1,5 @@
1
- type Breakpoint = "" | "sm:" | "md:" | "lg:" | "xl:" | "2xl:";
2
- type MarginDirection = "m-" | "mx-" | "my-" | "mt-" | "mr-" | "mb-" | "ml-";
3
- type Size = "0" | "0.5" | "1" | "1.5" | "2" | "2.5" | "3" | "3.5" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "px" | "auto";
4
- type TailwindMarginClassValue = `${Breakpoint}${MarginDirection}${Size}`;
5
- type TailwindMarginClass = TailwindMarginClassValue[];
6
- type OmitClassProperty<T1, T2 extends string> = Omit<T1, T2>;
7
- type OmitClassName<T> = OmitClassProperty<T, "className">;
1
+ type OmitClassProperty<T1, T2 extends keyof T1> = Omit<T1, T2>;
2
+ type OmitClassString<T1, T2 extends string> = Omit<T1, T2>;
3
+ type OmitClassName<T> = OmitClassString<T, "className">;
8
4
 
9
- export type { OmitClassName, OmitClassProperty, TailwindMarginClass, TailwindMarginClassValue };
5
+ export type { OmitClassName, OmitClassProperty, OmitClassString };