@stacksjs/defaults 0.70.54

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 (286) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +2 -0
  3. package/package.json +20 -0
  4. package/resources/assets/fonts/013717e9.woff +0 -0
  5. package/resources/assets/fonts/03355817.woff2 +0 -0
  6. package/resources/assets/fonts/0380de7e.woff2 +0 -0
  7. package/resources/assets/fonts/0ba5d32a.woff +0 -0
  8. package/resources/assets/fonts/0bd57ddf.woff2 +0 -0
  9. package/resources/assets/fonts/19de0a60.woff2 +0 -0
  10. package/resources/assets/fonts/20b87e84.woff +0 -0
  11. package/resources/assets/fonts/4bbc67e1.woff +0 -0
  12. package/resources/assets/fonts/576fb0d7.woff +0 -0
  13. package/resources/assets/fonts/5ea10ee5.woff2 +0 -0
  14. package/resources/assets/fonts/6413fc0a.woff +0 -0
  15. package/resources/assets/fonts/72c114cf.woff +0 -0
  16. package/resources/assets/fonts/73c57e73.woff2 +0 -0
  17. package/resources/assets/fonts/813dca6c.woff +0 -0
  18. package/resources/assets/fonts/8a9b0995.woff2 +0 -0
  19. package/resources/assets/fonts/90b4832f.woff +0 -0
  20. package/resources/assets/fonts/9394ab85.woff2 +0 -0
  21. package/resources/assets/fonts/9b3c7d7f.woff2 +0 -0
  22. package/resources/assets/fonts/Monaco.ttf +0 -0
  23. package/resources/assets/fonts/b1b36d74.woff +0 -0
  24. package/resources/assets/fonts/b5d74798.woff2 +0 -0
  25. package/resources/assets/fonts/b9f81a4d.woff +0 -0
  26. package/resources/assets/fonts/c9784008.woff2 +0 -0
  27. package/resources/assets/fonts/cf692227.woff +0 -0
  28. package/resources/assets/fonts/d1c6ab51.woff2 +0 -0
  29. package/resources/assets/fonts/e2eb62fc.woff +0 -0
  30. package/resources/assets/fonts/fe21f8d8.woff2 +0 -0
  31. package/resources/assets/fonts/nps/CampmateScript-Regular.woff2 +0 -0
  32. package/resources/assets/fonts/nps/NPS_2026-variable.woff2 +0 -0
  33. package/resources/assets/fonts/nps/RedwoodSerif-Regular.woff2 +0 -0
  34. package/resources/assets/fonts/nps/SequoiaSans-Regular.woff2 +0 -0
  35. package/resources/assets/fonts/nps/Switchback-Regular.woff2 +0 -0
  36. package/resources/assets/images/app-icon.png +0 -0
  37. package/resources/assets/images/bg-img.png +0 -0
  38. package/resources/assets/images/park-ridge.svg +15 -0
  39. package/resources/assets/images/topography.svg +1 -0
  40. package/resources/assets/scripts/main.ts +2153 -0
  41. package/resources/assets/styles/README.md +19 -0
  42. package/resources/assets/styles/docs/main.css +1 -0
  43. package/resources/assets/styles/docs/overrides.css +1 -0
  44. package/resources/assets/styles/docs/vars.css +8 -0
  45. package/resources/assets/styles/main.css +1419 -0
  46. package/resources/components/Button.stx +70 -0
  47. package/resources/components/Buttons/BaseButton.stx +39 -0
  48. package/resources/components/Buttons/Counter.stx +28 -0
  49. package/resources/components/Buttons/ToggleDark.stx +11 -0
  50. package/resources/components/Container.stx +10 -0
  51. package/resources/components/Dashboard/.gitkeep +0 -0
  52. package/resources/components/Dashboard/Auth/ForgotPassword.stx +127 -0
  53. package/resources/components/Dashboard/Auth/Login.stx +212 -0
  54. package/resources/components/Dashboard/Auth/Register.stx +306 -0
  55. package/resources/components/Dashboard/Avatar.stx +123 -0
  56. package/resources/components/Dashboard/Billing/ActivePlan.stx +57 -0
  57. package/resources/components/Dashboard/Billing/CardBrands.stx +32 -0
  58. package/resources/components/Dashboard/Billing/CardForm.stx +34 -0
  59. package/resources/components/Dashboard/Billing/OneTimePayment.stx +28 -0
  60. package/resources/components/Dashboard/Billing/PaymentForm.stx +33 -0
  61. package/resources/components/Dashboard/Billing/PaymentMethod.stx +66 -0
  62. package/resources/components/Dashboard/Billing/PaymentMethodList.stx +52 -0
  63. package/resources/components/Dashboard/Billing/Plans.stx +136 -0
  64. package/resources/components/Dashboard/Buttons/AppButton.stx +48 -0
  65. package/resources/components/Dashboard/Buttons/IconButton.stx +20 -0
  66. package/resources/components/Dashboard/Card.stx +78 -0
  67. package/resources/components/Dashboard/Chart.stx +75 -0
  68. package/resources/components/Dashboard/CodeEditor.stx +41 -0
  69. package/resources/components/Dashboard/Commerce/BulkActionBar.stx +70 -0
  70. package/resources/components/Dashboard/Commerce/CategoriesTable.stx +133 -0
  71. package/resources/components/Dashboard/Commerce/CouponsTable.stx +161 -0
  72. package/resources/components/Dashboard/Commerce/CustomersTable.stx +142 -0
  73. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesTable.stx +80 -0
  74. package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryTable.stx +85 -0
  75. package/resources/components/Dashboard/Commerce/Delivery/DriversTable.stx +99 -0
  76. package/resources/components/Dashboard/Commerce/Delivery/LicenseKeysTable.stx +92 -0
  77. package/resources/components/Dashboard/Commerce/Delivery/LicenseTemplatesTable.stx +88 -0
  78. package/resources/components/Dashboard/Commerce/Delivery/Pagination.stx +122 -0
  79. package/resources/components/Dashboard/Commerce/Delivery/SearchFilter.stx +23 -0
  80. package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodsTable.stx +80 -0
  81. package/resources/components/Dashboard/Commerce/Delivery/ShippingRatesTable.stx +59 -0
  82. package/resources/components/Dashboard/Commerce/Delivery/ShippingZonesTable.stx +71 -0
  83. package/resources/components/Dashboard/Commerce/Delivery/TabNavigation.stx +36 -0
  84. package/resources/components/Dashboard/Commerce/Forms/CouponsForm.stx +191 -0
  85. package/resources/components/Dashboard/Commerce/OrdersTable.stx +131 -0
  86. package/resources/components/Dashboard/Commerce/ProductsTable.stx +170 -0
  87. package/resources/components/Dashboard/CreateRecordModal.stx +363 -0
  88. package/resources/components/Dashboard/DashboardLayout.stx +155 -0
  89. package/resources/components/Dashboard/Deployments/ActivityFeed.stx +54 -0
  90. package/resources/components/Dashboard/Deployments/DeployScript.stx +23 -0
  91. package/resources/components/Dashboard/Deployments/DeploymentHistory.stx +97 -0
  92. package/resources/components/Dashboard/Deployments/DeploymentList.stx +94 -0
  93. package/resources/components/Dashboard/Deployments/LiveTerminalOutput.stx +18 -0
  94. package/resources/components/Dashboard/Elements/Dropdown.stx +57 -0
  95. package/resources/components/Dashboard/Email/EmailActivityChart.stx +111 -0
  96. package/resources/components/Dashboard/Email/EmailCompose.stx +72 -0
  97. package/resources/components/Dashboard/Email/EmailDetail.stx +105 -0
  98. package/resources/components/Dashboard/Email/EmailList.stx +117 -0
  99. package/resources/components/Dashboard/Email/EmailSearch.stx +40 -0
  100. package/resources/components/Dashboard/Email/EmailSidebar.stx +133 -0
  101. package/resources/components/Dashboard/GlobalSearch.stx +124 -0
  102. package/resources/components/Dashboard/MobileSidebar.stx +47 -0
  103. package/resources/components/Dashboard/Modals/BaseModal.stx +50 -0
  104. package/resources/components/Dashboard/Modals/Popups/Alert.stx +112 -0
  105. package/resources/components/Dashboard/Modals/Popups/Toast.stx +70 -0
  106. package/resources/components/Dashboard/Modals/ToastWrapper.stx +35 -0
  107. package/resources/components/Dashboard/Monitoring/ErrorDetailModal.stx +228 -0
  108. package/resources/components/Dashboard/Monitoring/ErrorsTable.stx +184 -0
  109. package/resources/components/Dashboard/Navbar.stx +194 -0
  110. package/resources/components/Dashboard/NavbarModern.stx +188 -0
  111. package/resources/components/Dashboard/NotificationErrorModal.stx +105 -0
  112. package/resources/components/Dashboard/NotificationStatusBadge.stx +20 -0
  113. package/resources/components/Dashboard/Pagination.stx +90 -0
  114. package/resources/components/Dashboard/Queue/QueueTable.stx +127 -0
  115. package/resources/components/Dashboard/Settings/Forms/AIForm.stx +126 -0
  116. package/resources/components/Dashboard/Settings/Forms/AnalyticsForm.stx +52 -0
  117. package/resources/components/Dashboard/Settings/Forms/AppForm.stx +157 -0
  118. package/resources/components/Dashboard/Settings/Forms/CLIForm.stx +66 -0
  119. package/resources/components/Dashboard/Settings/Forms/CacheForm.stx +253 -0
  120. package/resources/components/Dashboard/Settings/Forms/CloudForm.stx +441 -0
  121. package/resources/components/Dashboard/Settings/Forms/DNSForm.stx +307 -0
  122. package/resources/components/Dashboard/Settings/Forms/DatabaseForm.stx +168 -0
  123. package/resources/components/Dashboard/Settings/Forms/EmailForm.stx +100 -0
  124. package/resources/components/Dashboard/Settings/Forms/FileSystemForm.stx +259 -0
  125. package/resources/components/Dashboard/Settings/Forms/HashingForm.stx +119 -0
  126. package/resources/components/Dashboard/Settings/Forms/LibraryForm.stx +389 -0
  127. package/resources/components/Dashboard/Settings/Forms/QueueForm.stx +219 -0
  128. package/resources/components/Dashboard/Settings/Forms/SearchEngineForm.stx +48 -0
  129. package/resources/components/Dashboard/Settings/Forms/SecurityForm.stx +143 -0
  130. package/resources/components/Dashboard/Settings/Forms/ServicesForm.stx +194 -0
  131. package/resources/components/Dashboard/Settings/Forms/StorageForm.stx +191 -0
  132. package/resources/components/Dashboard/Settings/Forms/TeamsForm.stx +33 -0
  133. package/resources/components/Dashboard/Settings/SettingsFormManager.stx +181 -0
  134. package/resources/components/Dashboard/SettingsHeader.stx +88 -0
  135. package/resources/components/Dashboard/SettingsSidebar.stx +234 -0
  136. package/resources/components/Dashboard/Sidebar.stx +23 -0
  137. package/resources/components/Dashboard/SidebarModern.stx +249 -0
  138. package/resources/components/Dashboard/Skeleton/LoadingCard.stx +15 -0
  139. package/resources/components/Dashboard/Skeleton/LoadingDetails.stx +26 -0
  140. package/resources/components/Dashboard/Table.stx +82 -0
  141. package/resources/components/Dashboard/TerminalContainer.stx +97 -0
  142. package/resources/components/Dashboard/Tooltip.stx +166 -0
  143. package/resources/components/Dashboard/Transaction/index.stx +88 -0
  144. package/resources/components/Dashboard/UI/ActivityTable.stx +54 -0
  145. package/resources/components/Dashboard/UI/Avatar.stx +102 -0
  146. package/resources/components/Dashboard/UI/Badge.stx +66 -0
  147. package/resources/components/Dashboard/UI/Button.stx +73 -0
  148. package/resources/components/Dashboard/UI/Card.stx +51 -0
  149. package/resources/components/Dashboard/UI/ChartCard.stx +36 -0
  150. package/resources/components/Dashboard/UI/Checkbox.stx +74 -0
  151. package/resources/components/Dashboard/UI/ConfirmDialog.stx +74 -0
  152. package/resources/components/Dashboard/UI/DataTable.stx +45 -0
  153. package/resources/components/Dashboard/UI/Dropdown.stx +72 -0
  154. package/resources/components/Dashboard/UI/DropdownItem.stx +80 -0
  155. package/resources/components/Dashboard/UI/EmptyState.stx +50 -0
  156. package/resources/components/Dashboard/UI/FilterBar.stx +48 -0
  157. package/resources/components/Dashboard/UI/Input.stx +77 -0
  158. package/resources/components/Dashboard/UI/Modal.stx +75 -0
  159. package/resources/components/Dashboard/UI/PageHeader.stx +69 -0
  160. package/resources/components/Dashboard/UI/PageLayout.stx +84 -0
  161. package/resources/components/Dashboard/UI/Pagination.stx +126 -0
  162. package/resources/components/Dashboard/UI/QuickLinks.stx +31 -0
  163. package/resources/components/Dashboard/UI/RouterLink.stx +31 -0
  164. package/resources/components/Dashboard/UI/Select.stx +84 -0
  165. package/resources/components/Dashboard/UI/ServiceHealth.stx +38 -0
  166. package/resources/components/Dashboard/UI/StatsCard.stx +79 -0
  167. package/resources/components/Dashboard/UI/Table.stx +143 -0
  168. package/resources/components/Dashboard/UI/Tabs.stx +45 -0
  169. package/resources/components/Dashboard/UI/Textarea.stx +93 -0
  170. package/resources/components/Dashboard/UI/Toggle.stx +84 -0
  171. package/resources/components/Dashboard/UI/WindowControls.stx +135 -0
  172. package/resources/components/Dashboard/Widget.stx +89 -0
  173. package/resources/components/Dashboard/WindowControls.stx +119 -0
  174. package/resources/components/Dashboard/index.ts +106 -0
  175. package/resources/components/Docs/Demo/ComboboxCode.md +114 -0
  176. package/resources/components/Docs/Demo/ComboboxDemo.stx +91 -0
  177. package/resources/components/Docs/Demo/DialogCode.md +42 -0
  178. package/resources/components/Docs/Demo/DialogDemo.stx +76 -0
  179. package/resources/components/Docs/Demo/DocsPlayground.stx +39 -0
  180. package/resources/components/Docs/Demo/DropdownCode.md +109 -0
  181. package/resources/components/Docs/Demo/DropdownDemo.stx +82 -0
  182. package/resources/components/Docs/Demo/Hero.stx +100 -0
  183. package/resources/components/Docs/Demo/ListboxCode.md +87 -0
  184. package/resources/components/Docs/Demo/ListboxDemo.stx +59 -0
  185. package/resources/components/Docs/Demo/NotificationCode.md +173 -0
  186. package/resources/components/Docs/Demo/NotificationDemo.stx +99 -0
  187. package/resources/components/Docs/Demo/PopoverCode.md +161 -0
  188. package/resources/components/Docs/Demo/PopoverDemo.stx +96 -0
  189. package/resources/components/Docs/Demo/RadioGroupCode.md +98 -0
  190. package/resources/components/Docs/Demo/RadioGroupDemo.stx +53 -0
  191. package/resources/components/Docs/Demo/StepperCode.md +216 -0
  192. package/resources/components/Docs/Demo/StepperDemo.stx +137 -0
  193. package/resources/components/Docs/Demo/SwitchCode.md +24 -0
  194. package/resources/components/Docs/Demo/SwitchDemo.stx +28 -0
  195. package/resources/components/Docs/Home.stx +7 -0
  196. package/resources/components/Docs/HomeContributors.stx +23 -0
  197. package/resources/components/Docs/HomeSponsors.stx +17 -0
  198. package/resources/components/Docs/HomeTeam.stx +18 -0
  199. package/resources/components/Docs/TeamMember.stx +79 -0
  200. package/resources/components/Email/EmailButton.stx +32 -0
  201. package/resources/components/Email/EmailDivider.stx +20 -0
  202. package/resources/components/Email/EmailImage.stx +24 -0
  203. package/resources/components/Email/EmailLayout.stx +55 -0
  204. package/resources/components/Email/EmailLink.stx +22 -0
  205. package/resources/components/Email/EmailSection.stx +20 -0
  206. package/resources/components/Email/EmailText.stx +30 -0
  207. package/resources/components/Forum/ForumBreadcrumb.stx +38 -0
  208. package/resources/components/Forum/ForumCategory.stx +16 -0
  209. package/resources/components/Forum/ForumCategoryItem.stx +46 -0
  210. package/resources/components/Forum/ForumLayout.stx +36 -0
  211. package/resources/components/Forum/ForumPagination.stx +39 -0
  212. package/resources/components/Forum/ForumPost.stx +71 -0
  213. package/resources/components/Forum/ForumReplyForm.stx +76 -0
  214. package/resources/components/Forum/ForumSidebar.stx +86 -0
  215. package/resources/components/Forum/ForumTopicItem.stx +77 -0
  216. package/resources/components/Forum/ForumTopicList.stx +23 -0
  217. package/resources/components/HelloWorld.stx +253 -0
  218. package/resources/components/Logo.stx +10 -0
  219. package/resources/components/Marketing/CallToAction.stx +30 -0
  220. package/resources/components/Marketing/ComingSoon.stx +155 -0
  221. package/resources/components/Marketing/Faqs.stx +99 -0
  222. package/resources/components/Marketing/Feature.stx +32 -0
  223. package/resources/components/Marketing/Fields.stx +28 -0
  224. package/resources/components/Marketing/Footer.stx +33 -0
  225. package/resources/components/Marketing/Header.stx +51 -0
  226. package/resources/components/Marketing/Hero.stx +46 -0
  227. package/resources/components/Marketing/Layout.stx +26 -0
  228. package/resources/components/Marketing/NavLink.stx +13 -0
  229. package/resources/components/Marketing/Plan.stx +43 -0
  230. package/resources/components/Marketing/Pricing.stx +120 -0
  231. package/resources/components/Marketing/PrimaryFeatures.stx +80 -0
  232. package/resources/components/Marketing/PrimaryFeatures2.stx +98 -0
  233. package/resources/components/Marketing/SecondaryFeatures.stx +80 -0
  234. package/resources/components/Marketing/Testimonials.stx +120 -0
  235. package/resources/components/Pagination.stx +149 -0
  236. package/resources/components/Playground.stx +9 -0
  237. package/resources/components/README.md +87 -0
  238. package/resources/components/Storefront/AnnouncementBar.stx +17 -0
  239. package/resources/components/Storefront/CartDrawer.stx +227 -0
  240. package/resources/components/Storefront/CheckoutSteps.stx +50 -0
  241. package/resources/components/Storefront/Footer.stx +81 -0
  242. package/resources/components/Storefront/Header.stx +66 -0
  243. package/resources/components/Storefront/OrderSummary.stx +79 -0
  244. package/resources/components/Storefront/ProductCard.stx +63 -0
  245. package/resources/components/Storefront/ProductGallery.stx +88 -0
  246. package/resources/components/Storefront/QuantitySelector.stx +97 -0
  247. package/resources/components/index.ts +13 -0
  248. package/resources/emails/email-verification.stx +46 -0
  249. package/resources/emails/layouts/base.html +113 -0
  250. package/resources/emails/password-changed.stx +55 -0
  251. package/resources/emails/password-reset.stx +43 -0
  252. package/resources/emails/subscription-confirmation.stx +99 -0
  253. package/resources/emails/welcome.stx +48 -0
  254. package/resources/functions/README.md +28 -0
  255. package/resources/functions/counter.ts +13 -0
  256. package/resources/functions/dark.ts +4 -0
  257. package/resources/functions/dashboard/analytics.ts +238 -0
  258. package/resources/functions/dashboard/config-io.ts +316 -0
  259. package/resources/functions/dashboard/data.ts +375 -0
  260. package/resources/functions/dashboard/library.ts +250 -0
  261. package/resources/functions/dashboard/sidebar.ts +537 -0
  262. package/resources/functions/dashboard/system.ts +150 -0
  263. package/resources/layouts/403.stx +188 -0
  264. package/resources/layouts/404.stx +34 -0
  265. package/resources/layouts/README.md +14 -0
  266. package/resources/layouts/dashboard/default.stx +20 -0
  267. package/resources/layouts/dashboard/guest.stx +10 -0
  268. package/resources/layouts/default.stx +3 -0
  269. package/resources/layouts/maintenance.stx +11 -0
  270. package/resources/layouts/storefront.stx +73 -0
  271. package/resources/layouts/system-tray/default.stx +3 -0
  272. package/resources/modules/.gitkeep +0 -0
  273. package/resources/plugins/.gitkeep +0 -0
  274. package/resources/plugins/preloader.ts +308 -0
  275. package/resources/types/README.md +3 -0
  276. package/resources/views/cart.stx +149 -0
  277. package/resources/views/checkout/contact.stx +101 -0
  278. package/resources/views/checkout/payment.stx +114 -0
  279. package/resources/views/checkout/shipping.stx +120 -0
  280. package/resources/views/coming-soon.stx +9 -0
  281. package/resources/views/dashboard/custom-page.stx +45 -0
  282. package/resources/views/dashboard/index.stx +24 -0
  283. package/resources/views/emails/welcome.stx +0 -0
  284. package/resources/views/errors/tester.stx +26 -0
  285. package/resources/views/index.stx +2865 -0
  286. package/resources/views/orders/[id].stx +130 -0
@@ -0,0 +1,97 @@
1
+ <script>
2
+ interface DeploymentHistoryProps {
3
+ deployments?: any[]
4
+ }
5
+
6
+ const { deployments = [] } = defineProps<DeploymentHistoryProps>()
7
+ </script>
8
+ <div class="pt-12 px-4 sm:px-6 lg:px-8">
9
+ <div class="sm:flex sm:items-center">
10
+ <div class="sm:flex-auto">
11
+ <h1 class="font-semibold leading-6 text-base text-gray-900">
12
+ Deployment History
13
+ </h1>
14
+ <p class="mt-2 text-gray-700 text-sm">
15
+ A list of all the <em>(zero-downtime)</em> deployments relating your project.
16
+ </p>
17
+ </div>
18
+ <div class="sm:flex-none mt-4 sm:ml-16 sm:mt-0">
19
+ <button type="button" class="block px-3 py-2 font-semibold text-center text-sm text-white bg-blue-600 hover:bg-blue-500 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:outline-blue-600 focus-visible:outline-offset-2 shadow-sm">
20
+ Deploy
21
+ </button>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="flow-root mt-8">
26
+ <div class="overflow-x-auto -mx-4 -my-2 sm:-mx-6 lg:-mx-8">
27
+ <div class="inline-block py-2 sm:px-6 lg:px-8 min-w-full align-middle">
28
+ <div class="overflow-hidden ring-1 ring-black ring-opacity-5 sm:rounded-lg shadow">
29
+ <table class="min-w-full divide-gray-300 divide-y">
30
+ <thead class="bg-gray-50">
31
+ <tr>
32
+ <th scope="col" class="pl-4 pr-3 py-3.5 sm:pl-6 font-semibold text-gray-900 text-left text-sm">
33
+ When
34
+ </th>
35
+ <th scope="col" class="px-3 py-3.5 font-semibold text-gray-900 text-left text-sm">
36
+ Triggered By
37
+ </th>
38
+ <th scope="col" class="px-3 py-3.5 font-semibold text-gray-900 text-left text-sm">
39
+ Commit
40
+ </th>
41
+ <th scope="col" class="px-3 py-3.5 font-semibold text-gray-900 text-left text-sm">
42
+ Status
43
+ </th>
44
+ <th scope="col" class="relative pl-3 pr-4 py-3.5 sm:pr-6">
45
+ <span class="sr-only">Edit</span>
46
+ </th>
47
+ </tr>
48
+ </thead>
49
+
50
+ <tbody class="bg-white divide-gray-200 divide-y">
51
+ <tr>
52
+ <td class="pl-4 pr-3 py-4 sm:pl-6 font-medium text-gray-900 text-sm whitespace-nowrap">
53
+ Moments ago
54
+ </td>
55
+ <td class="px-3 py-4 text-gray-500 text-sm whitespace-nowrap">
56
+ <div class="flex items-center">
57
+ <div class="flex-shrink-0 h-10 w-10">
58
+ <img src="https://avatars.githubusercontent.com/u/6228425?v=4" alt="" class="h-10 w-10 rounded-full">
59
+ </div>
60
+ <div class="ml-4">
61
+ <div class="flex items-center font-medium text-gray-900 text-sm dark:text-neutral-100">
62
+ Chris Breuer
63
+ </div>
64
+ <div class="text-gray-500 text-sm dark:text-neutral-300 dark:text-neutral-400">
65
+ chris@stacksjs.com
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </td>
70
+ <td class="px-3 py-4 font-mono text-gray-500 text-sm whitespace-nowrap">
71
+ <div class="flex gap-x-3">
72
+ <div class="font-mono text-gray-700 text-sm/6">
73
+ <a href="github.com/stacksjs/stacks/commit/342afe5a" class="hover:text-gray-800 duration-150 ease-in-out transition">342afe5a</a>
74
+ </div>
75
+ <div class="px-2 py-1 font-medium text-gray-700 text-xs bg-gray-300/40 ring-1 ring-inset ring-white/10 rounded-md">main</div>
76
+ </div>
77
+ </td>
78
+ <td class="pl-0 pr-4 py-4 sm:pr-8 lg:pr-20 text-sm/6">
79
+ <div class="flex gap-x-2 items-center justify-end sm:justify-start">
80
+ <time class="sm:hidden text-gray-400" datetime="2023-01-23T11:00">45 minutes ago</time>
81
+ <div class="flex-none p-1 text-green-400 bg-green-400/10 rounded-full">
82
+ <div class="size-1.5 bg-current rounded-full"></div>
83
+ </div>
84
+ <div class="hidden sm:block text-gray-900">Completed</div>
85
+ </div>
86
+ </td>
87
+ <td class="relative pl-3 pr-4 py-4 sm:pr-6 font-medium text-right text-sm whitespace-nowrap">
88
+ <a href="#" class="text-blue-600 hover:text-blue-900" data-action="view">View<span class="sr-only">, Deployment</span></a>
89
+ </td>
90
+ </tr>
91
+ </tbody>
92
+ </table>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
@@ -0,0 +1,94 @@
1
+ <script>
2
+ interface DeploymentListProps {
3
+ showModal?: boolean
4
+ }
5
+
6
+ const { showModal = false } = defineProps<DeploymentListProps>()
7
+ </script>
8
+ <div class="py-4 lg:py-8 min-h-screen dark:bg-neutral-800">
9
+ <div class="mb-8 px-4 sm:px-6 lg:px-8">
10
+ <div>
11
+ <h3 class="font-semibold leading-6 text-base text-gray-900 dark:text-neutral-100">
12
+ Last 30 days
13
+ </h3>
14
+
15
+ <dl class="grid gap-5 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 mt-5">
16
+ <div class="overflow-hidden relative pt-5 px-4 sm:pt-6 sm:px-6 bg-white dark:bg-neutral-700 rounded-lg shadow">
17
+ <dt>
18
+ <div class="absolute p-3 bg-blue-500 rounded-md">
19
+ <div class="h-6 w-6 text-white i-hugeicons-rocket-01"></div>
20
+ </div>
21
+ <p class="ml-16 font-medium text-gray-500 text-sm truncate dark:text-neutral-400">
22
+ Total Deployments
23
+ </p>
24
+ </dt>
25
+ <dd class="flex items-baseline ml-16 pb-6 sm:pb-7">
26
+ <p class="font-semibold text-2xl text-gray-900 dark:text-neutral-100">
27
+ 71,897
28
+ </p>
29
+ <p class="flex items-baseline ml-2 font-semibold text-green-600 text-sm dark:text-green-400">
30
+ <svg class="flex-shrink-0 self-center h-5 w-5 text-green-500 dark:text-green-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
31
+ <path fill-rule="evenodd" d="M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z" clip-rule="evenodd"></path>
32
+ </svg>
33
+ <span class="sr-only"> Increased by </span>
34
+ 122
35
+ </p>
36
+ </dd>
37
+ </div>
38
+
39
+ <div class="overflow-hidden relative pt-5 px-4 sm:pt-6 sm:px-6 bg-white dark:bg-neutral-700 rounded-lg shadow">
40
+ <dt>
41
+ <div class="absolute p-3 bg-blue-500 rounded-md">
42
+ <div class="h-6 w-6 text-white i-hugeicons-clock-01"></div>
43
+ </div>
44
+ <p class="ml-16 font-medium text-gray-500 text-sm truncate dark:text-neutral-400">
45
+ Avg. Deploy Time
46
+ </p>
47
+ </dt>
48
+ <dd class="flex items-baseline ml-16 pb-6 sm:pb-7">
49
+ <p class="font-semibold text-2xl text-gray-900 dark:text-neutral-100">
50
+ 3.65 mins
51
+ </p>
52
+ <p class="flex items-baseline ml-2 font-semibold text-green-600 text-sm dark:text-green-400">
53
+ <svg class="flex-shrink-0 self-center h-5 w-5 text-green-500 dark:text-green-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
54
+ <path fill-rule="evenodd" d="M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z" clip-rule="evenodd"></path>
55
+ </svg>
56
+ <span class="sr-only"> Increased by </span>
57
+ 12 s
58
+ </p>
59
+ </dd>
60
+ </div>
61
+
62
+ <div class="overflow-hidden relative pt-5 px-4 sm:pt-6 sm:px-6 bg-white dark:bg-neutral-700 rounded-lg shadow">
63
+ <dt>
64
+ <div class="absolute p-3 bg-blue-500 rounded-md">
65
+ <div class="h-6 w-6 text-white i-hugeicons-checkmark-circle-02"></div>
66
+ </div>
67
+ <p class="ml-16 font-medium text-gray-500 text-sm truncate dark:text-neutral-400">
68
+ Success Rate
69
+ </p>
70
+ </dt>
71
+ <dd class="flex items-baseline ml-16 pb-6 sm:pb-7">
72
+ <p class="font-semibold text-2xl text-gray-900 dark:text-neutral-100">
73
+ 94.57%
74
+ </p>
75
+ <p class="flex items-baseline ml-2 font-semibold text-red-600 text-sm dark:text-red-400">
76
+ <svg class="flex-shrink-0 self-center h-5 w-5 text-red-500 dark:text-red-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
77
+ <path fill-rule="evenodd" d="M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z" clip-rule="evenodd"></path>
78
+ </svg>
79
+ <span class="sr-only"> Decreased by </span>
80
+ 3.2%
81
+ </p>
82
+ </dd>
83
+ </div>
84
+ </dl>
85
+ </div>
86
+ </div>
87
+
88
+ <slot name="deployScript" />
89
+ <slot name="deploymentHistory" />
90
+ </div>
91
+
92
+ @if(showModal)
93
+ <slot name="modal" />
94
+ @endif
@@ -0,0 +1,18 @@
1
+ <script>
2
+ interface LiveTerminalOutputProps {
3
+ live?: boolean
4
+ }
5
+
6
+ const { live = true } = defineProps<LiveTerminalOutputProps>()
7
+ </script>
8
+ <div class="pt-12 px-4 sm:px-6 lg:px-8">
9
+ <div class="flow-root mt-8">
10
+ <div class="overflow-x-auto -mx-4 -my-2 sm:-mx-6 lg:-mx-8">
11
+ <div class="inline-block py-2 sm:px-6 lg:px-8 min-w-full align-middle">
12
+ <div class="overflow-hidden">
13
+ <slot />
14
+ </div>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
@@ -0,0 +1,57 @@
1
+ <script>
2
+ interface DropdownProps {
3
+ label?: string
4
+ open?: boolean
5
+ elements?: any[]
6
+ id?: string
7
+ }
8
+
9
+ const { label = '', open = false, elements = [], id = 'dropdown-nav-' + Math.random().toString(36).slice(2, 11) } = defineProps<DropdownProps>()
10
+ </script>
11
+ <div ref="pageRoot" class="flex overflow-hidden flex-col gap-y-2" data-dropdown-nav="{{ id }}">
12
+ <a class="flex gap-x-2 items-center justify-between cursor-pointer" data-toggle>
13
+ <span class="font-medium text-dark text-sm">
14
+ {{ label }}
15
+ </span>
16
+
17
+ <span class="i-hugeicons-chevron-down" data-icon-closed></span>
18
+ <span class="hidden i-hugeicons-minus" data-icon-open></span>
19
+ </a>
20
+
21
+ <ul data-list class="{{ open ? '' : 'hidden' }}">
22
+ @foreach(elements as element)
23
+ <li>
24
+ <a href="{{ element.to }}" class="block">
25
+ {{ element.label }}
26
+ </a>
27
+ </li>
28
+ @endforeach
29
+ </ul>
30
+ </div>
31
+ <script client>
32
+ var _root = useRef('pageRoot')
33
+ onMount(function() {
34
+ var el = _root.current;
35
+ if (!el) return;
36
+ const nav = el
37
+
38
+ const toggle = nav.querySelector('[data-toggle]')
39
+ const list = nav.querySelector('[data-list]')
40
+ const iconClosed = nav.querySelector('[data-icon-closed]')
41
+ const iconOpen = nav.querySelector('[data-icon-open]')
42
+ let isOpen = {{ open ? 'true' : 'false' }}
43
+
44
+ function updateState() {
45
+ list.classList.toggle('hidden', !isOpen)
46
+ iconClosed.classList.toggle('hidden', isOpen)
47
+ iconOpen.classList.toggle('hidden', !isOpen)
48
+ }
49
+
50
+ toggle?.addEventListener('click', function() {
51
+ isOpen = !isOpen
52
+ updateState()
53
+ })
54
+
55
+ updateState()
56
+ })
57
+ </script>
@@ -0,0 +1,111 @@
1
+ <script>
2
+ interface EmailActivityChartProps {
3
+ timeRange?: 'day' | 'week' | 'month' | 'year'
4
+ isLoading?: boolean
5
+ chartOptions?: string
6
+ }
7
+
8
+ const { timeRange = 'day', isLoading = false, chartOptions = { } = defineProps<EmailActivityChartProps>()
9
+
10
+ // Chart configuration - to be rendered client-side
11
+ responsive: true,
12
+ maintainAspectRatio: false,
13
+ scales: {
14
+ y: {
15
+ beginAtZero: true,
16
+ grid: {
17
+ color: 'rgba(200, 200, 200, 0.1)',
18
+ },
19
+ ticks: {
20
+ color: 'rgb(156, 163, 175)',
21
+ font: {
22
+ family: "'JetBrains Mono', monospace",
23
+ },
24
+ },
25
+ },
26
+ x: {
27
+ grid: {
28
+ display: false,
29
+ },
30
+ ticks: {
31
+ color: 'rgb(156, 163, 175)',
32
+ font: {
33
+ family: "'JetBrains Mono', monospace",
34
+ },
35
+ },
36
+ },
37
+ },
38
+ plugins: {
39
+ legend: {
40
+ display: true,
41
+ position: 'top',
42
+ align: 'end',
43
+ labels: {
44
+ color: 'rgb(156, 163, 175)',
45
+ font: {
46
+ family: "'JetBrains Mono', monospace",
47
+ },
48
+ boxWidth: 12,
49
+ padding: 15,
50
+ },
51
+ },
52
+ tooltip: {
53
+ mode: 'index',
54
+ intersect: false,
55
+ },
56
+ },
57
+ }
58
+ </script>
59
+ <div ref="pageRoot" class="p-4 bg-white dark:bg-neutral-700 border-b border-gray-200 dark:border-neutral-600">
60
+ <div class="flex items-center justify-between mb-2">
61
+ <h3 class="font-medium text-base text-gray-900 dark:text-neutral-100">Email Activity</h3>
62
+ </div>
63
+ <div class="relative h-[120px]">
64
+ @if(isLoading)
65
+ <div class="flex absolute inset-0 z-10 items-center justify-center bg-opacity-75 bg-white dark:bg-neutral-700 dark:bg-opacity-75">
66
+ <div class="h-8 w-8 border-b-2 border-blue-500 rounded-full animate-spin"></div>
67
+ </div>
68
+ @endif
69
+ <!-- Chart canvas - requires client-side Chart.js initialization -->
70
+ <canvas id="emailActivityChart" data-chart-type="line" data-time-range="{{ timeRange }}"></canvas>
71
+ </div>
72
+ </div>
73
+ <script client>
74
+ // Client-side chart initialization
75
+ var _root = useRef('pageRoot')
76
+ onMount(function() {
77
+ var el = _root.current;
78
+ if (!el) return;
79
+ const canvas = el.querySelector('#emailActivityChart');
80
+ if (canvas && typeof Chart !== 'undefined') {
81
+ const labels = Array.from({ length: 24 }, (_, i) => `${i}:00`);
82
+ const data = {
83
+ labels,
84
+ datasets: [
85
+ {
86
+ label: 'Received',
87
+ data: Array.from({ length: 24 }, () => Math.floor(Math.random() * 50) + 20),
88
+ borderColor: 'rgb(59, 130, 246)',
89
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
90
+ fill: true,
91
+ },
92
+ {
93
+ label: 'Sent',
94
+ data: Array.from({ length: 24 }, () => Math.floor(Math.random() * 30) + 10),
95
+ borderColor: 'rgb(16, 185, 129)',
96
+ backgroundColor: 'rgba(16, 185, 129, 0.1)',
97
+ fill: true,
98
+ },
99
+ {
100
+ label: 'Spam',
101
+ data: Array.from({ length: 24 }, () => Math.floor(Math.random() * 10)),
102
+ borderColor: 'rgb(239, 68, 68)',
103
+ backgroundColor: 'rgba(239, 68, 68, 0.1)',
104
+ fill: true,
105
+ },
106
+ ],
107
+ };
108
+ new Chart(canvas, { type: 'line', data, options: {} });
109
+ }
110
+ });
111
+ </script>
@@ -0,0 +1,72 @@
1
+ <script>
2
+ interface EmailComposeProps {
3
+ to?: string
4
+ subject?: string
5
+ body?: string
6
+ }
7
+
8
+ const { to = '', subject = '', body = '' } = defineProps<EmailComposeProps>()
9
+ </script>
10
+ <div class="flex flex-col w-full md:w-2/3 lg:w-3/5 bg-white dark:bg-neutral-700">
11
+ <div class="flex items-center justify-between px-4 py-2 border-b border-gray-200 dark:border-neutral-600">
12
+ <h2 class="font-medium text-gray-900 text-lg dark:text-neutral-100">
13
+ New Message
14
+ </h2>
15
+ <button class="p-1 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded" data-action="cancel">
16
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-cancel-circle"></i>
17
+ </button>
18
+ </div>
19
+
20
+ <div class="overflow-y-auto flex-1 p-4">
21
+ <div class="space-y-4">
22
+ <div>
23
+ <label for="to" class="block font-medium text-gray-700 text-sm dark:text-neutral-300">To</label>
24
+ <input
25
+ id="to"
26
+ name="to"
27
+ type="text"
28
+ value="{{ to }}"
29
+ class="block mt-1 w-full text-gray-900 sm:text-sm dark:text-neutral-100 bg-white dark:bg-neutral-600 border-gray-300 rounded-md dark:border-neutral-600 focus:border-blue-500 focus:ring-blue-500 shadow-sm"
30
+ >
31
+ </div>
32
+ <div>
33
+ <label for="subject" class="block font-medium text-gray-700 text-sm dark:text-neutral-300">Subject</label>
34
+ <input
35
+ id="subject"
36
+ name="subject"
37
+ type="text"
38
+ value="{{ subject }}"
39
+ class="block mt-1 w-full text-gray-900 sm:text-sm dark:text-neutral-100 bg-white dark:bg-neutral-600 border-gray-300 rounded-md dark:border-neutral-600 focus:border-blue-500 focus:ring-blue-500 shadow-sm"
40
+ >
41
+ </div>
42
+ <div>
43
+ <label for="body" class="block font-medium text-gray-700 text-sm dark:text-neutral-300">Message</label>
44
+ <textarea
45
+ id="body"
46
+ name="body"
47
+ rows="15"
48
+ class="block mt-1 w-full text-gray-900 sm:text-sm dark:text-neutral-100 bg-white dark:bg-neutral-600 border-gray-300 rounded-md dark:border-neutral-600 focus:border-blue-500 focus:ring-blue-500 shadow-sm"
49
+ >{{ body }}</textarea>
50
+ </div>
51
+ </div>
52
+ </div>
53
+
54
+ <div class="flex justify-between p-4 border-gray-200 border-t dark:border-neutral-600">
55
+ <div class="flex space-x-2">
56
+ <button class="p-2 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded">
57
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-attachment-01"></i>
58
+ </button>
59
+ <button class="p-2 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded">
60
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-image-01"></i>
61
+ </button>
62
+ <button class="p-2 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded">
63
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-smile"></i>
64
+ </button>
65
+ </div>
66
+ <div>
67
+ <button type="submit" class="px-4 py-2 font-medium text-sm text-white bg-blue-600 hover:bg-blue-500 rounded-md" data-action="send">
68
+ Send
69
+ </button>
70
+ </div>
71
+ </div>
72
+ </div>
@@ -0,0 +1,105 @@
1
+ <script>
2
+ interface EmailDetailProps {
3
+ email?: string
4
+ }
5
+
6
+ const { email = { } = defineProps<EmailDetailProps>()
7
+
8
+ id: 0,
9
+ from: '',
10
+ email: '',
11
+ subject: '',
12
+ preview: '',
13
+ body: '',
14
+ date: '',
15
+ read: false,
16
+ starred: false,
17
+ folder: 'inbox',
18
+ attachment: false
19
+ }
20
+ </script>
21
+ <div class="flex flex-col w-full md:w-2/3 lg:w-3/5 bg-white dark:bg-neutral-700">
22
+ <div class="flex items-center justify-between px-4 py-2 border-b border-gray-200 dark:border-neutral-600">
23
+ <div class="flex items-center space-x-2">
24
+ <button class="p-1 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded" data-action="close">
25
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-arrow-left-02"></i>
26
+ </button>
27
+ <h2 class="font-medium text-gray-900 text-lg dark:text-neutral-100">
28
+ {{ email.subject }}
29
+ </h2>
30
+ </div>
31
+ <div class="flex space-x-2">
32
+ <button class="p-1 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded" data-action="toggle-star" data-email-id="{{ email.id }}">
33
+ @if(email.starred)
34
+ <span class="text-lg text-yellow-400">
35
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
36
+ <path d="M13.7276 3.44418L15.4874 6.99288C15.7274 7.48687 16.3673 7.9607 16.9073 8.05143L20.0969 8.58575C22.1367 8.92853 22.6167 10.4206 21.1468 11.8925L18.6671 14.3927C18.2471 14.8161 18.0172 15.6327 18.1471 16.2175L18.8571 19.3125C19.417 21.7623 18.1271 22.71 15.9774 21.4296L12.9877 19.6452C12.4478 19.3226 11.5579 19.3226 11.0079 19.6452L8.01827 21.4296C5.8785 22.71 4.57865 21.7522 5.13859 19.3125L5.84851 16.2175C5.97849 15.6327 5.74852 14.8161 5.32856 14.3927L2.84884 11.8925C1.389 10.4206 1.85895 8.92853 3.89872 8.58575L7.08837 8.05143C7.61831 7.9607 8.25824 7.48687 8.49821 6.99288L10.258 3.44418C11.2179 1.51861 12.7777 1.51861 13.7276 3.44418Z"/>
37
+ </svg>
38
+ </span>
39
+ @else
40
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-star"></i>
41
+ @endif
42
+ </button>
43
+ <button class="p-1 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded">
44
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-inbox"></i>
45
+ </button>
46
+ <button class="p-1 hover:bg-gray-100 dark:hover:bg-neutral-600 rounded">
47
+ <i class="text-gray-500 text-lg dark:text-neutral-400 i-hugeicons-waste"></i>
48
+ </button>
49
+ </div>
50
+ </div>
51
+
52
+ <div class="px-4 py-3 border-b border-gray-200 dark:border-neutral-600">
53
+ <div class="flex items-start justify-between">
54
+ <div>
55
+ <div class="flex items-center">
56
+ <div class="flex items-center justify-center h-10 w-10 font-medium text-blue-700 bg-blue-100 rounded-full">
57
+ {{ email.from.charAt(0) }}
58
+ </div>
59
+ <div class="ml-3">
60
+ <p class="font-medium text-gray-900 text-sm dark:text-neutral-100">{{ email.from }}</p>
61
+ <p class="text-gray-500 text-xs dark:text-neutral-400">{{ email.email }}</p>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ <div class="text-gray-500 text-xs dark:text-neutral-400">
66
+ {{ email.date }}
67
+ </div>
68
+ </div>
69
+ <div class="mt-2">
70
+ <p class="font-medium text-base text-gray-900 dark:text-neutral-100">{{ email.subject }}</p>
71
+ </div>
72
+ </div>
73
+
74
+ <div class="overflow-y-auto flex-1 p-4">
75
+ <div class="max-w-none prose dark:prose-invert">
76
+ {!! email.body !!}
77
+ </div>
78
+
79
+ @if(email.attachment)
80
+ <div class="mt-4 p-3 border border-gray-200 rounded dark:border-neutral-600">
81
+ <div class="flex items-center">
82
+ <i class="text-gray-500 text-xl dark:text-neutral-400 i-hugeicons-file-01"></i>
83
+ <div class="ml-3">
84
+ <p class="font-medium text-gray-900 text-sm dark:text-neutral-100">Document.pdf</p>
85
+ <p class="text-gray-500 text-xs dark:text-neutral-400">1.2 MB</p>
86
+ </div>
87
+ <button class="ml-auto p-1 text-blue-700 dark:text-blue-100 bg-blue-100 dark:bg-blue-900 hover:bg-blue-200 dark:hover:bg-blue-800 rounded">
88
+ <i class="text-lg i-hugeicons-download-04"></i>
89
+ </button>
90
+ </div>
91
+ </div>
92
+ @endif
93
+ </div>
94
+
95
+ <div class="p-4 border-gray-200 border-t dark:border-neutral-600">
96
+ <div class="flex space-x-2">
97
+ <button class="px-4 py-2 font-medium text-sm text-white bg-blue-600 hover:bg-blue-500 rounded-md">
98
+ Reply
99
+ </button>
100
+ <button class="px-4 py-2 font-medium text-gray-700 text-sm dark:text-neutral-200 hover:bg-gray-50 dark:hover:bg-neutral-600 border border-gray-300 rounded-md dark:border-neutral-600">
101
+ Forward
102
+ </button>
103
+ </div>
104
+ </div>
105
+ </div>