@olwiba/ui 0.2.24 → 0.2.26

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 (209) hide show
  1. package/content/docs/app/app-shell.mdx +71 -0
  2. package/content/docs/app/auth-section.mdx +73 -0
  3. package/content/docs/app/billing-panel.mdx +38 -0
  4. package/content/docs/app/empty-state.mdx +47 -0
  5. package/content/docs/app/error-page.mdx +31 -0
  6. package/content/docs/app/index.mdx +13 -0
  7. package/content/docs/app/meta.json +4 -0
  8. package/content/docs/app/onboarding-wizard.mdx +41 -0
  9. package/content/docs/app/settings-section.mdx +37 -0
  10. package/content/docs/app/team-members-panel.mdx +35 -0
  11. package/content/docs/app/update-banner.mdx +43 -0
  12. package/content/docs/components/activity-feed.mdx +42 -0
  13. package/content/docs/components/chart.mdx +47 -0
  14. package/content/docs/components/command-menu.mdx +41 -0
  15. package/content/docs/components/confirm-dialog.mdx +26 -0
  16. package/content/docs/components/context-menu.mdx +26 -0
  17. package/content/docs/components/data-table.mdx +40 -0
  18. package/content/docs/components/dock.mdx +26 -0
  19. package/content/docs/components/feature-card.mdx +26 -0
  20. package/content/docs/components/file-upload.mdx +35 -0
  21. package/content/docs/components/full-page-spinner.mdx +44 -0
  22. package/content/docs/components/glass-card.mdx +26 -0
  23. package/content/docs/components/image-card.mdx +26 -0
  24. package/content/docs/components/index.mdx +49 -0
  25. package/content/docs/components/load-more.mdx +34 -0
  26. package/content/docs/components/meta.json +35 -0
  27. package/content/docs/components/notifications-popover.mdx +34 -0
  28. package/content/docs/components/notify.mdx +40 -0
  29. package/content/docs/components/olwiba-ui-context.mdx +69 -0
  30. package/content/docs/components/page-header.mdx +42 -0
  31. package/content/docs/components/pricing-card.mdx +26 -0
  32. package/content/docs/components/register-hotkeys.mdx +50 -0
  33. package/content/docs/components/root-error-fallback.mdx +39 -0
  34. package/content/docs/components/spotlight.mdx +26 -0
  35. package/content/docs/components/stat-card.mdx +26 -0
  36. package/content/docs/components/suspensed.mdx +42 -0
  37. package/content/docs/components/testimonial-card.mdx +26 -0
  38. package/content/docs/components/theme-color-updater.mdx +40 -0
  39. package/content/docs/components/theme-switch-minimal.mdx +32 -0
  40. package/content/docs/components/version-banner.mdx +44 -0
  41. package/content/docs/email/action-email.mdx +62 -0
  42. package/content/docs/email/email-layout.mdx +58 -0
  43. package/content/docs/email/email-link-fallback.mdx +46 -0
  44. package/content/docs/email/index.mdx +32 -0
  45. package/content/docs/email/meta.json +10 -0
  46. package/content/docs/email/notice-email.mdx +51 -0
  47. package/content/docs/hooks/index.mdx +21 -0
  48. package/content/docs/hooks/meta.json +16 -0
  49. package/content/docs/hooks/use-confirm.mdx +81 -0
  50. package/content/docs/hooks/use-controlled-open.mdx +53 -0
  51. package/content/docs/hooks/use-copy-to-clipboard.mdx +26 -0
  52. package/content/docs/hooks/use-debounce.mdx +26 -0
  53. package/content/docs/hooks/use-intersection-observer.mdx +26 -0
  54. package/content/docs/hooks/use-local-storage.mdx +26 -0
  55. package/content/docs/hooks/use-media-query.mdx +26 -0
  56. package/content/docs/hooks/use-mounted.mdx +39 -0
  57. package/content/docs/hooks/use-pagination.mdx +26 -0
  58. package/content/docs/hooks/use-scrolled-past.mdx +44 -0
  59. package/content/docs/index.mdx +68 -0
  60. package/content/docs/marketing/contact-section.mdx +16 -0
  61. package/content/docs/marketing/cta-section.mdx +31 -0
  62. package/content/docs/marketing/faq-section.mdx +16 -0
  63. package/content/docs/marketing/features-section.mdx +23 -0
  64. package/content/docs/marketing/footer.mdx +16 -0
  65. package/content/docs/marketing/hero-section.mdx +16 -0
  66. package/content/docs/marketing/index.mdx +22 -0
  67. package/content/docs/marketing/meta.json +20 -0
  68. package/content/docs/marketing/navbar.mdx +16 -0
  69. package/content/docs/marketing/newsletter-section.mdx +16 -0
  70. package/content/docs/marketing/post-list.mdx +32 -0
  71. package/content/docs/marketing/pricing-section.mdx +16 -0
  72. package/content/docs/marketing/stats-section.mdx +16 -0
  73. package/content/docs/marketing/steps-section.mdx +60 -0
  74. package/content/docs/marketing/team-section.mdx +16 -0
  75. package/content/docs/marketing/testimonials-section.mdx +16 -0
  76. package/content/docs/mechanics/carousel.mdx +42 -0
  77. package/content/docs/mechanics/index.mdx +11 -0
  78. package/content/docs/mechanics/meta.json +4 -0
  79. package/content/docs/mechanics/sortable.mdx +44 -0
  80. package/content/docs/meta.json +4 -0
  81. package/content/docs/motion/animated-swap.mdx +75 -0
  82. package/content/docs/motion/count-up.mdx +31 -0
  83. package/content/docs/motion/fade-in.mdx +34 -0
  84. package/content/docs/motion/index.mdx +12 -0
  85. package/content/docs/motion/meta.json +4 -0
  86. package/content/docs/motion/page-transition.mdx +29 -0
  87. package/content/docs/motion/stagger-children.mdx +31 -0
  88. package/content/docs/overlays/index.mdx +9 -0
  89. package/content/docs/overlays/meta.json +4 -0
  90. package/content/docs/overlays/overlay.mdx +60 -0
  91. package/content/docs/overlays/underlay.mdx +56 -0
  92. package/dist/email/index.d.ts +8 -1
  93. package/dist/email/index.js +3 -3
  94. package/dist/email/index.js.map +1 -1
  95. package/dist/index.d.ts +51 -3
  96. package/dist/index.js +40 -16
  97. package/dist/index.js.map +1 -1
  98. package/docs-manifest.json +253 -0
  99. package/package.json +17 -9
  100. package/site/demos/action-email.tsx +6 -0
  101. package/site/demos/activity-feed.tsx +42 -0
  102. package/site/demos/animated-swap.tsx +42 -0
  103. package/site/demos/app-shell.tsx +47 -0
  104. package/site/demos/app-ui-page.tsx +9 -0
  105. package/site/demos/application-sidebar-block.tsx +9 -0
  106. package/site/demos/auth-section.tsx +15 -0
  107. package/site/demos/auth-split-block.tsx +9 -0
  108. package/site/demos/billing-page.tsx +157 -0
  109. package/site/demos/billing-panel.tsx +26 -0
  110. package/site/demos/carousel.tsx +34 -0
  111. package/site/demos/chart.tsx +55 -0
  112. package/site/demos/command-menu.tsx +39 -0
  113. package/site/demos/confirm-dialog.tsx +27 -0
  114. package/site/demos/contact-form-block.tsx +3 -0
  115. package/site/demos/contact-section.tsx +2 -0
  116. package/site/demos/context-menu.tsx +30 -0
  117. package/site/demos/count-up.tsx +23 -0
  118. package/site/demos/cta-section.tsx +6 -0
  119. package/site/demos/dashboard-overview-block.tsx +9 -0
  120. package/site/demos/dashboard-shell-block.tsx +10 -0
  121. package/site/demos/data-table.tsx +47 -0
  122. package/site/demos/demo-brand.tsx +23 -0
  123. package/site/demos/dock.tsx +20 -0
  124. package/site/demos/document-sidebar-block.tsx +9 -0
  125. package/site/demos/email-examples.tsx +58 -0
  126. package/site/demos/email-frame.tsx +50 -0
  127. package/site/demos/email-layout.tsx +6 -0
  128. package/site/demos/email-link-fallback.tsx +6 -0
  129. package/site/demos/email-previews.generated.ts +11 -0
  130. package/site/demos/empty-state-block.tsx +3 -0
  131. package/site/demos/empty-state.tsx +23 -0
  132. package/site/demos/error-page.tsx +5 -0
  133. package/site/demos/fade-in.tsx +18 -0
  134. package/site/demos/faq-section.tsx +6 -0
  135. package/site/demos/feature-card.tsx +13 -0
  136. package/site/demos/features-section.tsx +6 -0
  137. package/site/demos/file-upload.tsx +16 -0
  138. package/site/demos/footer.tsx +42 -0
  139. package/site/demos/full-page-spinner.tsx +9 -0
  140. package/site/demos/glass-card.tsx +14 -0
  141. package/site/demos/glow-effect.tsx +3 -0
  142. package/site/demos/gradient-background.tsx +3 -0
  143. package/site/demos/grid-pattern.tsx +3 -0
  144. package/site/demos/hero-section.tsx +6 -0
  145. package/site/demos/image-card.tsx +17 -0
  146. package/site/demos/login-block.tsx +9 -0
  147. package/site/demos/marketing-cta-block.tsx +3 -0
  148. package/site/demos/marketing-demo-data.tsx +114 -0
  149. package/site/demos/marketing-faq-block.tsx +3 -0
  150. package/site/demos/marketing-features-block.tsx +3 -0
  151. package/site/demos/marketing-footer-block.tsx +3 -0
  152. package/site/demos/marketing-hero-block.tsx +10 -0
  153. package/site/demos/marketing-nav-block.tsx +3 -0
  154. package/site/demos/marketing-newsletter-block.tsx +3 -0
  155. package/site/demos/marketing-page.tsx +52 -0
  156. package/site/demos/marketing-pricing-block.tsx +3 -0
  157. package/site/demos/marketing-stats-block.tsx +3 -0
  158. package/site/demos/marketing-team-block.tsx +3 -0
  159. package/site/demos/marketing-testimonials-block.tsx +3 -0
  160. package/site/demos/navbar.tsx +32 -0
  161. package/site/demos/newsletter-section.tsx +2 -0
  162. package/site/demos/noise-overlay.tsx +3 -0
  163. package/site/demos/not-found-block.tsx +3 -0
  164. package/site/demos/notice-email.tsx +6 -0
  165. package/site/demos/notifications-popover.tsx +27 -0
  166. package/site/demos/notify.tsx +44 -0
  167. package/site/demos/olwiba-ui-context.tsx +51 -0
  168. package/site/demos/onboarding-block.tsx +3 -0
  169. package/site/demos/onboarding-wizard.tsx +43 -0
  170. package/site/demos/overlay.tsx +72 -0
  171. package/site/demos/page-header.tsx +15 -0
  172. package/site/demos/page-transition.tsx +34 -0
  173. package/site/demos/post-list.tsx +24 -0
  174. package/site/demos/pricing-card.tsx +27 -0
  175. package/site/demos/pricing-section.tsx +6 -0
  176. package/site/demos/register-hotkeys.tsx +39 -0
  177. package/site/demos/root-error-fallback.tsx +28 -0
  178. package/site/demos/settings-layout-block.tsx +3 -0
  179. package/site/demos/settings-section.tsx +22 -0
  180. package/site/demos/sign-in-page.tsx +10 -0
  181. package/site/demos/sortable.tsx +30 -0
  182. package/site/demos/spotlight.tsx +29 -0
  183. package/site/demos/stagger-children.tsx +16 -0
  184. package/site/demos/stat-card.tsx +12 -0
  185. package/site/demos/stats-section.tsx +6 -0
  186. package/site/demos/steps-section.tsx +66 -0
  187. package/site/demos/suspensed.tsx +31 -0
  188. package/site/demos/team-members-panel.tsx +26 -0
  189. package/site/demos/team-section.tsx +2 -0
  190. package/site/demos/testimonial-card.tsx +17 -0
  191. package/site/demos/testimonials-section.tsx +6 -0
  192. package/site/demos/theme-color-updater.tsx +32 -0
  193. package/site/demos/theme-switch-minimal.tsx +10 -0
  194. package/site/demos/underlay.tsx +74 -0
  195. package/site/demos/update-banner.tsx +31 -0
  196. package/site/demos/use-copy-to-clipboard.tsx +21 -0
  197. package/site/demos/use-debounce.tsx +25 -0
  198. package/site/demos/use-intersection-observer.tsx +32 -0
  199. package/site/demos/use-local-storage.tsx +22 -0
  200. package/site/demos/use-media-query.tsx +31 -0
  201. package/site/demos/use-pagination.tsx +31 -0
  202. package/site/demos/user-profile-block.tsx +3 -0
  203. package/site/demos/version-banner.tsx +27 -0
  204. package/src/components/Chart.tsx +38 -7
  205. package/src/components/DataTable.tsx +56 -8
  206. package/src/components/Notify.tsx +32 -1
  207. package/src/email/EmailLinkFallback.tsx +7 -1
  208. package/src/email/index.ts +3 -0
  209. package/src/marketing/Footer.tsx +7 -1
@@ -0,0 +1,253 @@
1
+ {
2
+ "package": "@olwiba/ui",
3
+ "version": "0.2.25",
4
+ "generatedBy": "scripts/check-docs-exports.ts",
5
+ "contentRoot": "content/docs",
6
+ "demosRoot": "site/demos",
7
+ "pages": [
8
+ "app/app-shell.mdx",
9
+ "app/auth-section.mdx",
10
+ "app/billing-panel.mdx",
11
+ "app/empty-state.mdx",
12
+ "app/error-page.mdx",
13
+ "app/index.mdx",
14
+ "app/onboarding-wizard.mdx",
15
+ "app/settings-section.mdx",
16
+ "app/team-members-panel.mdx",
17
+ "app/update-banner.mdx",
18
+ "components/activity-feed.mdx",
19
+ "components/chart.mdx",
20
+ "components/command-menu.mdx",
21
+ "components/confirm-dialog.mdx",
22
+ "components/context-menu.mdx",
23
+ "components/data-table.mdx",
24
+ "components/dock.mdx",
25
+ "components/feature-card.mdx",
26
+ "components/file-upload.mdx",
27
+ "components/full-page-spinner.mdx",
28
+ "components/glass-card.mdx",
29
+ "components/image-card.mdx",
30
+ "components/index.mdx",
31
+ "components/load-more.mdx",
32
+ "components/notifications-popover.mdx",
33
+ "components/notify.mdx",
34
+ "components/olwiba-ui-context.mdx",
35
+ "components/page-header.mdx",
36
+ "components/pricing-card.mdx",
37
+ "components/register-hotkeys.mdx",
38
+ "components/root-error-fallback.mdx",
39
+ "components/spotlight.mdx",
40
+ "components/stat-card.mdx",
41
+ "components/suspensed.mdx",
42
+ "components/testimonial-card.mdx",
43
+ "components/theme-color-updater.mdx",
44
+ "components/theme-switch-minimal.mdx",
45
+ "components/version-banner.mdx",
46
+ "email/action-email.mdx",
47
+ "email/email-layout.mdx",
48
+ "email/email-link-fallback.mdx",
49
+ "email/index.mdx",
50
+ "email/notice-email.mdx",
51
+ "hooks/index.mdx",
52
+ "hooks/use-confirm.mdx",
53
+ "hooks/use-controlled-open.mdx",
54
+ "hooks/use-copy-to-clipboard.mdx",
55
+ "hooks/use-debounce.mdx",
56
+ "hooks/use-intersection-observer.mdx",
57
+ "hooks/use-local-storage.mdx",
58
+ "hooks/use-media-query.mdx",
59
+ "hooks/use-mounted.mdx",
60
+ "hooks/use-pagination.mdx",
61
+ "hooks/use-scrolled-past.mdx",
62
+ "index.mdx",
63
+ "marketing/contact-section.mdx",
64
+ "marketing/cta-section.mdx",
65
+ "marketing/faq-section.mdx",
66
+ "marketing/features-section.mdx",
67
+ "marketing/footer.mdx",
68
+ "marketing/hero-section.mdx",
69
+ "marketing/index.mdx",
70
+ "marketing/navbar.mdx",
71
+ "marketing/newsletter-section.mdx",
72
+ "marketing/post-list.mdx",
73
+ "marketing/pricing-section.mdx",
74
+ "marketing/stats-section.mdx",
75
+ "marketing/steps-section.mdx",
76
+ "marketing/team-section.mdx",
77
+ "marketing/testimonials-section.mdx",
78
+ "mechanics/carousel.mdx",
79
+ "mechanics/index.mdx",
80
+ "mechanics/sortable.mdx",
81
+ "motion/animated-swap.mdx",
82
+ "motion/count-up.mdx",
83
+ "motion/fade-in.mdx",
84
+ "motion/index.mdx",
85
+ "motion/page-transition.mdx",
86
+ "motion/stagger-children.mdx",
87
+ "overlays/index.mdx",
88
+ "overlays/overlay.mdx",
89
+ "overlays/underlay.mdx"
90
+ ],
91
+ "demos": [
92
+ "action-email.tsx",
93
+ "activity-feed.tsx",
94
+ "animated-swap.tsx",
95
+ "app-shell.tsx",
96
+ "app-ui-page.tsx",
97
+ "application-sidebar-block.tsx",
98
+ "auth-section.tsx",
99
+ "auth-split-block.tsx",
100
+ "billing-page.tsx",
101
+ "billing-panel.tsx",
102
+ "carousel.tsx",
103
+ "chart.tsx",
104
+ "command-menu.tsx",
105
+ "confirm-dialog.tsx",
106
+ "contact-form-block.tsx",
107
+ "contact-section.tsx",
108
+ "context-menu.tsx",
109
+ "count-up.tsx",
110
+ "cta-section.tsx",
111
+ "dashboard-overview-block.tsx",
112
+ "dashboard-shell-block.tsx",
113
+ "data-table.tsx",
114
+ "demo-brand.tsx",
115
+ "dock.tsx",
116
+ "document-sidebar-block.tsx",
117
+ "email-examples.tsx",
118
+ "email-frame.tsx",
119
+ "email-layout.tsx",
120
+ "email-link-fallback.tsx",
121
+ "empty-state-block.tsx",
122
+ "empty-state.tsx",
123
+ "error-page.tsx",
124
+ "fade-in.tsx",
125
+ "faq-section.tsx",
126
+ "feature-card.tsx",
127
+ "features-section.tsx",
128
+ "file-upload.tsx",
129
+ "footer.tsx",
130
+ "full-page-spinner.tsx",
131
+ "glass-card.tsx",
132
+ "glow-effect.tsx",
133
+ "gradient-background.tsx",
134
+ "grid-pattern.tsx",
135
+ "hero-section.tsx",
136
+ "image-card.tsx",
137
+ "login-block.tsx",
138
+ "marketing-cta-block.tsx",
139
+ "marketing-demo-data.tsx",
140
+ "marketing-faq-block.tsx",
141
+ "marketing-features-block.tsx",
142
+ "marketing-footer-block.tsx",
143
+ "marketing-hero-block.tsx",
144
+ "marketing-nav-block.tsx",
145
+ "marketing-newsletter-block.tsx",
146
+ "marketing-page.tsx",
147
+ "marketing-pricing-block.tsx",
148
+ "marketing-stats-block.tsx",
149
+ "marketing-team-block.tsx",
150
+ "marketing-testimonials-block.tsx",
151
+ "navbar.tsx",
152
+ "newsletter-section.tsx",
153
+ "noise-overlay.tsx",
154
+ "not-found-block.tsx",
155
+ "notice-email.tsx",
156
+ "notifications-popover.tsx",
157
+ "notify.tsx",
158
+ "olwiba-ui-context.tsx",
159
+ "onboarding-block.tsx",
160
+ "onboarding-wizard.tsx",
161
+ "overlay.tsx",
162
+ "page-header.tsx",
163
+ "page-transition.tsx",
164
+ "post-list.tsx",
165
+ "pricing-card.tsx",
166
+ "pricing-section.tsx",
167
+ "register-hotkeys.tsx",
168
+ "root-error-fallback.tsx",
169
+ "settings-layout-block.tsx",
170
+ "settings-section.tsx",
171
+ "sign-in-page.tsx",
172
+ "sortable.tsx",
173
+ "spotlight.tsx",
174
+ "stagger-children.tsx",
175
+ "stat-card.tsx",
176
+ "stats-section.tsx",
177
+ "steps-section.tsx",
178
+ "suspensed.tsx",
179
+ "team-members-panel.tsx",
180
+ "team-section.tsx",
181
+ "testimonial-card.tsx",
182
+ "testimonials-section.tsx",
183
+ "theme-color-updater.tsx",
184
+ "theme-switch-minimal.tsx",
185
+ "underlay.tsx",
186
+ "update-banner.tsx",
187
+ "use-copy-to-clipboard.tsx",
188
+ "use-debounce.tsx",
189
+ "use-intersection-observer.tsx",
190
+ "use-local-storage.tsx",
191
+ "use-media-query.tsx",
192
+ "use-pagination.tsx",
193
+ "user-profile-block.tsx",
194
+ "version-banner.tsx"
195
+ ],
196
+ "sandboxIds": [
197
+ "action-email",
198
+ "activity-feed",
199
+ "animated-swap",
200
+ "app-shell",
201
+ "auth-section",
202
+ "billing-panel",
203
+ "carousel",
204
+ "chart",
205
+ "command-menu",
206
+ "confirm-dialog",
207
+ "contact-section",
208
+ "context-menu",
209
+ "count-up",
210
+ "cta-section",
211
+ "data-table",
212
+ "dock",
213
+ "email-layout",
214
+ "email-link-fallback",
215
+ "fade-in",
216
+ "faq-section",
217
+ "feature-card",
218
+ "features-section",
219
+ "file-upload",
220
+ "footer",
221
+ "glass-card",
222
+ "hero-section",
223
+ "image-card",
224
+ "navbar",
225
+ "newsletter-section",
226
+ "notice-email",
227
+ "notifications-popover",
228
+ "notify",
229
+ "onboarding-wizard",
230
+ "page-transition",
231
+ "post-list",
232
+ "pricing-card",
233
+ "pricing-section",
234
+ "settings-section",
235
+ "sortable",
236
+ "spotlight",
237
+ "stagger-children",
238
+ "stat-card",
239
+ "stats-section",
240
+ "steps-section",
241
+ "team-members-panel",
242
+ "team-section",
243
+ "testimonial-card",
244
+ "testimonials-section",
245
+ "update-banner",
246
+ "use-copy-to-clipboard",
247
+ "use-debounce",
248
+ "use-intersection-observer",
249
+ "use-local-storage",
250
+ "use-media-query",
251
+ "use-pagination"
252
+ ]
253
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olwiba/ui",
3
- "version": "0.2.24",
3
+ "version": "0.2.26",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -19,29 +19,35 @@
19
19
  "./mdx": {
20
20
  "import": "./dist/mdx/index.js",
21
21
  "types": "./dist/mdx/index.d.ts"
22
- }
22
+ },
23
+ "./content/*": "./content/*",
24
+ "./demos/*": "./site/demos/*.tsx",
25
+ "./docs-manifest.json": "./docs-manifest.json"
23
26
  },
24
27
  "files": [
25
28
  "dist",
26
- "src"
29
+ "src",
30
+ "content",
31
+ "site/demos",
32
+ "docs-manifest.json"
27
33
  ],
28
34
  "scripts": {
29
35
  "build": "tsup",
30
36
  "dev": "tsup --watch",
31
37
  "dev:link:ecosystem": "pwsh -NoProfile -Command '& { $ErrorActionPreference = \"Stop\"; function Invoke-Link([string]$RepoPath,[string[]]$CommandArgs){ Write-Host (\"[link-ecosystem] bun \" + ($CommandArgs -join \" \") + \" (\" + $RepoPath + \")\"); Push-Location $RepoPath; try { & bun @CommandArgs } finally { Pop-Location } }; Invoke-Link \"..\\\\olwibaCN\" @(\"link\"); Invoke-Link \"..\\\\olwibaDOCS\" @(\"link\"); Invoke-Link \".\" @(\"link\"); Invoke-Link \"..\\\\genesis-render\" @(\"link\"); Invoke-Link \"..\\\\olwibaDOCS\" @(\"link\",\"@olwiba/cn\"); Invoke-Link \".\" @(\"link\",\"@olwiba/cn\"); Invoke-Link \".\" @(\"link\",\"@olwiba/docs\"); Invoke-Link \"..\\\\genesis-render\" @(\"link\",\"@olwiba/cn\"); Invoke-Link \"..\\\\genesis-render\" @(\"link\",\"@olwiba/docs\"); Invoke-Link \"..\\\\genesis-render\" @(\"link\",\"@olwiba/ui\"); Write-Host \"[link-ecosystem] Local Bun links are in place. CI and build servers will still use published package versions.\" }'",
32
38
  "dev:link:ecosystem:check": "pwsh -NoProfile -Command '& { $ErrorActionPreference = \"Stop\"; function Show-Link([string]$RepoPath,[string[]]$CommandArgs){ Write-Host (\"[link-ecosystem] bun \" + ($CommandArgs -join \" \") + \" (\" + $RepoPath + \")\") }; Show-Link \"..\\\\olwibaCN\" @(\"link\"); Show-Link \"..\\\\olwibaDOCS\" @(\"link\"); Show-Link \".\" @(\"link\"); Show-Link \"..\\\\genesis-render\" @(\"link\"); Show-Link \"..\\\\olwibaDOCS\" @(\"link\",\"@olwiba/cn\"); Show-Link \".\" @(\"link\",\"@olwiba/cn\"); Show-Link \".\" @(\"link\",\"@olwiba/docs\"); Show-Link \"..\\\\genesis-render\" @(\"link\",\"@olwiba/cn\"); Show-Link \"..\\\\genesis-render\" @(\"link\",\"@olwiba/docs\"); Show-Link \"..\\\\genesis-render\" @(\"link\",\"@olwiba/ui\"); Write-Host \"[link-ecosystem] Skipped directories without package.json: genesis, genesis-start, genesis-sync\"; Write-Host \"[link-ecosystem] Dry run complete. No links were changed.\" }'",
33
- "web:build": "fumadocs-mdx && vite build",
34
- "web:dev": "fumadocs-mdx && vite dev",
39
+ "web:build": "bun run email:generate && fumadocs-mdx && vite build",
40
+ "web:dev": "bun run email:generate && fumadocs-mdx && vite dev",
35
41
  "start": "bun run server.ts",
36
42
  "types:check": "fumadocs-mdx && tsc --noEmit",
37
- "iso:generate": "bun scripts/generate-iso-previews.ts"
43
+ "iso:generate": "bun scripts/generate-iso-previews.ts",
44
+ "email:generate": "bun scripts/generate-email-previews.ts"
38
45
  },
39
46
  "dependencies": {
40
47
  "@dnd-kit/core": "^6.3.1",
41
48
  "@dnd-kit/modifiers": "^9.0.0",
42
49
  "@dnd-kit/sortable": "^10.0.0",
43
50
  "@dnd-kit/utilities": "^3.2.2",
44
- "@olwiba/dx": "0.0.23",
45
51
  "@tanstack/react-table": "^8.21.3",
46
52
  "clsx": "^2.1.1",
47
53
  "lucide-react": "^0.562.0",
@@ -63,8 +69,10 @@
63
69
  },
64
70
  "devDependencies": {
65
71
  "@content-collections/mdx": "^0.2.2",
66
- "@olwiba/cn": "0.1.35",
67
- "@olwiba/docs": "0.1.40",
72
+ "@olwiba/cn": "0.1.39",
73
+ "@olwiba/docs": "0.1.45",
74
+ "@olwiba/dx": "0.0.23",
75
+ "@react-email/render": "^2.1.0",
68
76
  "@tailwindcss/vite": "^4.1.18",
69
77
  "@tanstack/react-router": "1.154.8",
70
78
  "@tanstack/react-router-devtools": "1.154.8",
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+ import { EmailFrame } from './email-frame';
3
+
4
+ export default function Demo() {
5
+ return <EmailFrame id="action-email" />;
6
+ }
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import { ActivityFeed } from '@olwiba/ui';
3
+ import { CreditCard, GitCommit, Rocket } from 'lucide-react';
4
+
5
+ export default function Demo() {
6
+ return (
7
+ <div className="mx-auto max-w-md p-8">
8
+ <ActivityFeed
9
+ items={[
10
+ {
11
+ id: '1',
12
+ title: <><span className="font-medium">Ana Sousa</span> deployed to production</>,
13
+ description: 'v0.1.16 · 12 commits',
14
+ timestamp: '2h ago',
15
+ avatar: 'https://ui.shadcn.com/avatars/01.png',
16
+ initials: 'AS',
17
+ },
18
+ {
19
+ id: '2',
20
+ title: <><span className="font-medium">Marcus Webb</span> pushed 3 commits</>,
21
+ description: 'feat: billing usage alerts',
22
+ timestamp: '5h ago',
23
+ icon: <GitCommit />,
24
+ },
25
+ {
26
+ id: '3',
27
+ title: 'Subscription renewed',
28
+ description: 'Pro plan · $29/month',
29
+ timestamp: 'Yesterday',
30
+ icon: <CreditCard />,
31
+ },
32
+ {
33
+ id: '4',
34
+ title: 'Project created',
35
+ timestamp: 'Mar 2',
36
+ icon: <Rocket />,
37
+ },
38
+ ]}
39
+ />
40
+ </div>
41
+ );
42
+ }
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import { AnimatedSwap, Button, type AnimatedSwapEffect } from '@olwiba/ui';
4
+
5
+ const PRICES = ['$9', '$25', '$120'];
6
+ const EFFECTS: AnimatedSwapEffect[] = ['roll', 'fade', 'slide'];
7
+
8
+ export default function Demo() {
9
+ const [step, setStep] = React.useState(0);
10
+ const [effect, setEffect] = React.useState<AnimatedSwapEffect>('roll');
11
+ const price = PRICES[step % PRICES.length]!;
12
+
13
+ return (
14
+ <div className="flex flex-col items-center gap-6 p-8">
15
+ <div className="flex gap-1 rounded-full border bg-card p-1">
16
+ {EFFECTS.map((name) => (
17
+ <button
18
+ key={name}
19
+ type="button"
20
+ onClick={() => setEffect(name)}
21
+ className={`rounded-full px-3 py-1 text-sm capitalize transition-colors ${
22
+ effect === name ? 'bg-primary text-primary-foreground' : 'text-muted-foreground'
23
+ }`}
24
+ >
25
+ {name}
26
+ </button>
27
+ ))}
28
+ </div>
29
+
30
+ <div className="flex items-end gap-1">
31
+ <AnimatedSwap swapKey={price} effect={effect} className="text-5xl font-bold tracking-tight">
32
+ {price}
33
+ </AnimatedSwap>
34
+ <span className="mb-1.5 text-sm text-muted-foreground">/month</span>
35
+ </div>
36
+
37
+ <Button variant="outline" onClick={() => setStep((s) => s + 1)}>
38
+ Change plan
39
+ </Button>
40
+ </div>
41
+ );
42
+ }
@@ -0,0 +1,47 @@
1
+ 'use client';
2
+
3
+ import { AppShell } from '@olwiba/ui';
4
+ import { LayoutDashboard, Users, FileText, Settings, Plus } from 'lucide-react';
5
+ import { demoBrandLogo, demoBrandName } from './demo-brand';
6
+
7
+ export default function AppShellDemo() {
8
+ return (
9
+ <AppShell
10
+ sidebarPosition="contained"
11
+ // Same lockup as the Navbar demo, from one definition — the point of
12
+ // showing it in both is that they agree. Lowercase on purpose: a name
13
+ // with no caps and no descenders is the least forgiving case for the
14
+ // brand text's vertical alignment against the badge beside it.
15
+ brand={{ name: demoBrandName, logo: demoBrandLogo, href: '#' }}
16
+ navItems={[
17
+ { icon: LayoutDashboard, label: 'Dashboard', href: '#', isActive: true },
18
+ { icon: Users, label: 'Team', href: '#' },
19
+ { icon: FileText, label: 'Documents', href: '#' },
20
+ { icon: Settings, label: 'Settings', href: '#' },
21
+ ]}
22
+ action={{ icon: Plus, label: 'New project', href: '#' }}
23
+ user={{
24
+ name: 'Ollie Bannister',
25
+ email: 'ollie@nexus.dev',
26
+ plan: 'pro',
27
+ onSignOut: () => {},
28
+ onBilling: () => {},
29
+ }}
30
+ pageTitle="Dashboard"
31
+ >
32
+ <div className="flex flex-1 flex-col gap-4 p-6">
33
+ <div className="grid grid-cols-3 gap-4">
34
+ {['Revenue', 'Users', 'Active'].map((label) => (
35
+ <div key={label} className="rounded-lg border bg-card p-4">
36
+ <p className="text-xs text-muted-foreground">{label}</p>
37
+ <p className="mt-1 text-2xl font-semibold">—</p>
38
+ </div>
39
+ ))}
40
+ </div>
41
+ <div className="flex-1 rounded-lg border bg-card p-4">
42
+ <p className="text-sm text-muted-foreground">Page content goes here.</p>
43
+ </div>
44
+ </div>
45
+ </AppShell>
46
+ );
47
+ }
@@ -0,0 +1,9 @@
1
+ import { AppShell } from '@olwiba/ui';
2
+
3
+ export default function AppUIPageDemo() {
4
+ return (
5
+ <div className="w-full max-w-[1400px]">
6
+ <AppShell />
7
+ </div>
8
+ );
9
+ }
@@ -0,0 +1,9 @@
1
+ import { AppShell } from '@olwiba/ui';
2
+
3
+ export default function ApplicationSidebarBlockDemo() {
4
+ return (
5
+ <div className="w-full max-w-7xl">
6
+ <AppShell />
7
+ </div>
8
+ );
9
+ }
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+
3
+ import { AuthSection } from '@olwiba/ui';
4
+
5
+ export default function AuthSectionDemo() {
6
+ return (
7
+ <AuthSection
8
+ layout="split"
9
+ onSubmit={(e) => e.preventDefault()}
10
+ onSso={() => {}}
11
+ signUpHref="#"
12
+ forgotPasswordHref="#"
13
+ />
14
+ );
15
+ }
@@ -0,0 +1,9 @@
1
+ import { AuthSection } from '@olwiba/ui';
2
+
3
+ export default function AuthSplitBlockDemo() {
4
+ return (
5
+ <div className="w-full max-w-5xl">
6
+ <AuthSection layout="split" />
7
+ </div>
8
+ );
9
+ }
@@ -0,0 +1,157 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { CreditCard, Download, FileText, LayoutGrid, Settings, Shield, User, Zap } from 'lucide-react';
5
+ import {
6
+ Avatar,
7
+ AvatarFallback,
8
+ AvatarImage,
9
+ Badge,
10
+ cn,
11
+ Separator,
12
+ Table,
13
+ TableBody,
14
+ TableCell,
15
+ TableHead,
16
+ TableHeader,
17
+ TableRow,
18
+ } from '@olwiba/cn';
19
+ import { StatCard, Button } from '@olwiba/ui';
20
+
21
+ const navItems = [
22
+ { id: 'billing', label: 'Billing', Icon: CreditCard },
23
+ { id: 'profile', label: 'Profile', Icon: User },
24
+ { id: 'security', label: 'Security', Icon: Shield },
25
+ { id: 'integrations', label: 'Integrations', Icon: LayoutGrid },
26
+ { id: 'settings', label: 'Settings', Icon: Settings },
27
+ ];
28
+
29
+ const invoices = [
30
+ { id: 'INV-2024-009', date: 'Mar 1, 2026', amount: '$29.00', status: 'Paid' },
31
+ { id: 'INV-2024-008', date: 'Feb 1, 2026', amount: '$29.00', status: 'Paid' },
32
+ { id: 'INV-2024-007', date: 'Jan 1, 2026', amount: '$29.00', status: 'Paid' },
33
+ { id: 'INV-2024-006', date: 'Dec 1, 2025', amount: '$29.00', status: 'Paid' },
34
+ { id: 'INV-2024-005', date: 'Nov 1, 2025', amount: '$19.00', status: 'Paid' },
35
+ ];
36
+
37
+ export default function BillingPageDemo() {
38
+ return (
39
+ <div className="w-full max-w-5xl overflow-hidden rounded-2xl border bg-card">
40
+ {/* Header */}
41
+ <div className="flex items-center justify-between border-b px-6 py-4">
42
+ <div className="flex items-center gap-2 font-semibold">
43
+ <div className="flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground">
44
+ <Zap className="size-4" />
45
+ </div>
46
+ Olwiba
47
+ </div>
48
+ <Button variant="ghost" size="sm" className="gap-2">
49
+ <Avatar className="size-6">
50
+ <AvatarImage src="https://ui.shadcn.com/avatars/01.png" />
51
+ <AvatarFallback>OR</AvatarFallback>
52
+ </Avatar>
53
+ Olivia Reed
54
+ </Button>
55
+ </div>
56
+
57
+ <div className="grid lg:grid-cols-[200px_1fr]">
58
+ {/* Sidebar */}
59
+ <nav className="space-y-1 border-b p-4 lg:border-b-0 lg:border-r">
60
+ {navItems.map(({ id, label, Icon }) => (
61
+ <button
62
+ key={id}
63
+ className={cn(
64
+ 'flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm transition-colors',
65
+ id === 'billing'
66
+ ? 'bg-accent font-medium text-accent-foreground'
67
+ : 'text-muted-foreground hover:bg-accent hover:text-accent-foreground',
68
+ )}
69
+ >
70
+ <Icon className="size-4 shrink-0" />
71
+ {label}
72
+ </button>
73
+ ))}
74
+ </nav>
75
+
76
+ {/* Main */}
77
+ <div className="space-y-8 p-6 lg:p-8">
78
+ {/* Current plan */}
79
+ <div className="space-y-4">
80
+ <div>
81
+ <h2 className="text-lg font-semibold">Billing & Subscription</h2>
82
+ <p className="text-sm text-muted-foreground">Manage your plan, payment method, and invoices.</p>
83
+ </div>
84
+ <Separator />
85
+ <div className="rounded-xl border bg-muted/40 p-5">
86
+ <div className="flex flex-wrap items-start justify-between gap-4">
87
+ <div className="space-y-1">
88
+ <div className="flex items-center gap-2">
89
+ <span className="font-semibold">Pro Plan</span>
90
+ <Badge>Active</Badge>
91
+ </div>
92
+ <p className="text-sm text-muted-foreground">$29 / month · renews Apr 1, 2026</p>
93
+ <p className="text-xs text-muted-foreground">Billed to Visa ending in 4242</p>
94
+ </div>
95
+ <div className="flex gap-2">
96
+ <Button variant="outline" size="sm">Change plan</Button>
97
+ <Button variant="outline" size="sm">Update card</Button>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </div>
102
+
103
+ {/* Usage stats */}
104
+ <div className="space-y-3">
105
+ <h3 className="font-medium">Usage this month</h3>
106
+ <div className="grid gap-3 sm:grid-cols-3">
107
+ <StatCard value="24" label="Active projects" delta="+2" trend="up" description="3 projects added this month" />
108
+ <StatCard value="1,240" label="API calls" delta="+18%" trend="up" description="vs 1,051 last month" />
109
+ <StatCard value="4.2 GB" label="Storage used" delta="of 20 GB" trend="neutral" description="21% of your plan limit" />
110
+ </div>
111
+ </div>
112
+
113
+ {/* Invoice history */}
114
+ <div className="space-y-3">
115
+ <div className="flex items-center justify-between gap-3">
116
+ <h3 className="font-medium">Invoice history</h3>
117
+ <Button variant="outline" size="sm">
118
+ <Download className="mr-2 size-3.5" />
119
+ Export all
120
+ </Button>
121
+ </div>
122
+ <div className="rounded-xl border">
123
+ <Table>
124
+ <TableHeader>
125
+ <TableRow>
126
+ <TableHead>Invoice</TableHead>
127
+ <TableHead>Date</TableHead>
128
+ <TableHead>Amount</TableHead>
129
+ <TableHead>Status</TableHead>
130
+ <TableHead className="text-right">PDF</TableHead>
131
+ </TableRow>
132
+ </TableHeader>
133
+ <TableBody>
134
+ {invoices.map((inv) => (
135
+ <TableRow key={inv.id}>
136
+ <TableCell className="font-mono text-xs">{inv.id}</TableCell>
137
+ <TableCell className="text-sm text-muted-foreground">{inv.date}</TableCell>
138
+ <TableCell className="text-sm">{inv.amount}</TableCell>
139
+ <TableCell>
140
+ <Badge variant="secondary">{inv.status}</Badge>
141
+ </TableCell>
142
+ <TableCell className="text-right">
143
+ <Button variant="ghost" size="icon" className="size-7">
144
+ <FileText className="size-3.5" />
145
+ </Button>
146
+ </TableCell>
147
+ </TableRow>
148
+ ))}
149
+ </TableBody>
150
+ </Table>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ );
157
+ }