@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,48 @@
1
+ <script>
2
+ interface SearchEngineFormProps {
3
+ defaultEngine?: string
4
+ }
5
+
6
+ const { defaultEngine = 'opensearch' } = defineProps<SearchEngineFormProps>()
7
+ </script>
8
+ <form>
9
+ <main class="border-b border-gray-900/10">
10
+ <!-- Settings forms -->
11
+ <div class="divide-gray-900/10 divide-y">
12
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
13
+ <div>
14
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
15
+ Default Search Engine Settings
16
+ </h2>
17
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
18
+ Update your default Search Engine settings
19
+ </p>
20
+ </div>
21
+
22
+ <div class="md:col-span-2">
23
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
24
+ <div class="sm:col-span-3">
25
+ <label for="type" class="block font-medium leading-6 text-gray-900 text-sm">Default</label>
26
+ <div class="mt-2">
27
+ <select id="type" name="type" class="block py-1.5 w-full sm:max-w-xs text-gray-900 sm:leading-6 sm:text-sm border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
28
+ <option {{ defaultEngine == 'opensearch' ? 'selected' : '' }}>opensearch</option>
29
+ </select>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </main>
37
+ <div class="flex gap-x-6 items-center justify-end mt-6">
38
+ <button type="button" class="font-semibold leading-6 text-gray-900 text-sm">
39
+ Cancel
40
+ </button>
41
+ <button
42
+ type="submit"
43
+ class="px-3 py-2 font-semibold text-sm text-white bg-indigo-600 hover:bg-indigo-500 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600 focus-visible:outline-offset-2 shadow-sm"
44
+ >
45
+ Save
46
+ </button>
47
+ </div>
48
+ </form>
@@ -0,0 +1,143 @@
1
+ <script>
2
+ interface SecurityFormProps {
3
+ rateLimitPerMinute?: string
4
+ countryCodes?: string
5
+ ipAddresses?: string
6
+ queryString?: string
7
+ httpHeaders?: string
8
+ firewallEnabled?: boolean
9
+ useIpReputationLists?: boolean
10
+ useKnownBadInputs?: boolean
11
+ }
12
+
13
+ const { rateLimitPerMinute = '1000', countryCodes = 'RU,IN', ipAddresses = '56.123.456.789', queryString = 'foo,bar', httpHeaders = 'x-foo,x-bar', firewallEnabled = true, useIpReputationLists = true, useKnownBadInputs = true } = defineProps<SecurityFormProps>()
14
+ </script>
15
+ <form>
16
+ <main class="border-b border-gray-900/10">
17
+ <!-- Settings forms -->
18
+ <div class="divide-gray-900/10 divide-y">
19
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
20
+ <div>
21
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
22
+ Firewall
23
+ </h2>
24
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
25
+ Update your firewall settings.
26
+ </p>
27
+ </div>
28
+
29
+ <div class="md:col-span-2">
30
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6">
31
+ <div class="col-span-2">
32
+ <label for="firewall-enabled" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Enabled</label>
33
+ <div class="mt-2">
34
+ <button
35
+ type="button"
36
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ firewallEnabled ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
37
+ role="switch"
38
+ aria-checked="{{ firewallEnabled ? 'true' : 'false' }}"
39
+ data-action="toggle-firewall"
40
+ >
41
+ <span class="sr-only">Firewall Enabled</span>
42
+ <span
43
+ aria-hidden="true"
44
+ class="pointer-events-none inline-block h-5 w-5 {{ firewallEnabled ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
45
+ ></span>
46
+ </button>
47
+ </div>
48
+ </div>
49
+ <div class="col-span-2">
50
+ <label for="ip-reputation" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Use Ip Reputation Lists</label>
51
+ <div class="mt-2">
52
+ <button
53
+ type="button"
54
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ useIpReputationLists ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
55
+ role="switch"
56
+ aria-checked="{{ useIpReputationLists ? 'true' : 'false' }}"
57
+ data-action="toggle-ip-reputation"
58
+ >
59
+ <span class="sr-only">Use Ip Reputation Lists</span>
60
+ <span
61
+ aria-hidden="true"
62
+ class="pointer-events-none inline-block h-5 w-5 {{ useIpReputationLists ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
63
+ ></span>
64
+ </button>
65
+ </div>
66
+ </div>
67
+ <div class="col-span-2">
68
+ <label for="bad-inputs" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Use Known Bad Inputs Rule Set</label>
69
+ <div class="mt-2">
70
+ <button
71
+ type="button"
72
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ useKnownBadInputs ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
73
+ role="switch"
74
+ aria-checked="{{ useKnownBadInputs ? 'true' : 'false' }}"
75
+ data-action="toggle-bad-inputs"
76
+ >
77
+ <span class="sr-only">Use Known Bad Inputs</span>
78
+ <span
79
+ aria-hidden="true"
80
+ class="pointer-events-none inline-block h-5 w-5 {{ useKnownBadInputs ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
81
+ ></span>
82
+ </button>
83
+ </div>
84
+ </div>
85
+ <div class="col-span-2">
86
+ <label for="rate-limit" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Rate Limit per minute</label>
87
+ <div class="mt-2">
88
+ <input
89
+ id="rate-limit"
90
+ name="rate-limit"
91
+ type="text"
92
+ value="{{ rateLimitPerMinute }}"
93
+ class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm"
94
+ >
95
+ </div>
96
+ </div>
97
+ <div class="col-span-2">
98
+ <label for="country-codes" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Country Codes</label>
99
+ <div class="mt-2">
100
+ <input
101
+ id="country-codes"
102
+ name="country-codes"
103
+ type="text"
104
+ value="{{ countryCodes }}"
105
+ class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm"
106
+ >
107
+ </div>
108
+ </div>
109
+ <div class="sm:col-span-full">
110
+ <label for="ip-addresses" class="block font-medium leading-6 text-gray-900 text-sm">IP Addresses</label>
111
+ <div class="mt-2">
112
+ <input id="ip-addresses" type="text" name="ip-addresses" value="{{ ipAddresses }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
113
+ </div>
114
+ </div>
115
+ <div class="sm:col-span-3">
116
+ <label for="query-string" class="block font-medium leading-6 text-gray-900 text-sm">Query String</label>
117
+ <div class="mt-2">
118
+ <input id="query-string" type="text" name="query-string" value="{{ queryString }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
119
+ </div>
120
+ </div>
121
+ <div class="sm:col-span-3">
122
+ <label for="http-headers" class="block font-medium leading-6 text-gray-900 text-sm">HTTP Headers</label>
123
+ <div class="mt-2">
124
+ <input id="http-headers" type="text" name="http-headers" value="{{ httpHeaders }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </main>
132
+ <div class="flex gap-x-6 items-center justify-end mt-6">
133
+ <button type="button" class="font-semibold leading-6 text-gray-900 text-sm">
134
+ Cancel
135
+ </button>
136
+ <button
137
+ type="submit"
138
+ class="px-3 py-2 font-semibold text-sm text-white bg-indigo-600 hover:bg-indigo-500 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600 focus-visible:outline-offset-2 shadow-sm"
139
+ >
140
+ Save
141
+ </button>
142
+ </div>
143
+ </form>
@@ -0,0 +1,194 @@
1
+ <script>
2
+ interface ServicesFormProps {
3
+ awsAccountId?: string
4
+ awsAppId?: string
5
+ awsAppKey?: string
6
+ awsAppRegion?: string
7
+ algoliaAppId?: string
8
+ algoliaAppKey?: string
9
+ meiliAppId?: string
10
+ meiliAppKey?: string
11
+ lemonSqueezyAppId?: string
12
+ lemonSqueezyAppKey?: string
13
+ stripeAppId?: string
14
+ stripeAppKey?: string
15
+ }
16
+
17
+ const { awsAccountId = '', awsAppId = '', awsAppKey = '', awsAppRegion = 'us-east-1', algoliaAppId = '', algoliaAppKey = '', meiliAppId = '', meiliAppKey = '', lemonSqueezyAppId = '', lemonSqueezyAppKey = '', stripeAppId = '', stripeAppKey = '' } = defineProps<ServicesFormProps>()
18
+ </script>
19
+ <form>
20
+ <main class="border-b border-gray-900/10">
21
+ <!-- Settings forms -->
22
+ <div class="divide-gray-900/10 divide-y">
23
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
24
+ <div>
25
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
26
+ AWS Settings
27
+ </h2>
28
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
29
+ Update your AWS settings
30
+ </p>
31
+ </div>
32
+
33
+ <div class="md:col-span-2">
34
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
35
+ <div class="sm:col-span-3">
36
+ <label for="aws-account-id" class="block font-medium leading-6 text-gray-900 text-sm">Account ID</label>
37
+ <div class="mt-2">
38
+ <input id="aws-account-id" type="text" name="aws-account-id" value="{{ awsAccountId }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
39
+ </div>
40
+ </div>
41
+
42
+ <div class="sm:col-span-3">
43
+ <label for="aws-app-id" class="block font-medium leading-6 text-gray-900 text-sm">App ID</label>
44
+ <div class="mt-2">
45
+ <input id="aws-app-id" type="text" name="aws-app-id" value="{{ awsAppId }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
46
+ </div>
47
+ </div>
48
+
49
+ <div class="sm:col-span-3">
50
+ <label for="aws-app-key" class="block font-medium leading-6 text-gray-900 text-sm">App Key</label>
51
+ <div class="mt-2">
52
+ <input id="aws-app-key" type="password" name="aws-app-key" value="{{ awsAppKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
53
+ </div>
54
+ </div>
55
+
56
+ <div class="sm:col-span-3">
57
+ <label for="aws-region" class="block font-medium leading-6 text-gray-900 text-sm">App Region</label>
58
+ <div class="mt-2">
59
+ <input id="aws-region" type="text" name="aws-region" value="{{ awsAppRegion }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
67
+ <div>
68
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
69
+ Algolia Settings
70
+ </h2>
71
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
72
+ Update your Algolia settings
73
+ </p>
74
+ </div>
75
+
76
+ <div class="md:col-span-2">
77
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
78
+ <div class="sm:col-span-3">
79
+ <label for="algolia-app-id" class="block font-medium leading-6 text-gray-900 text-sm">App ID</label>
80
+ <div class="mt-2">
81
+ <input id="algolia-app-id" type="text" name="algolia-app-id" value="{{ algoliaAppId }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
82
+ </div>
83
+ </div>
84
+
85
+ <div class="sm:col-span-3">
86
+ <label for="algolia-app-key" class="block font-medium leading-6 text-gray-900 text-sm">App Key</label>
87
+ <div class="mt-2">
88
+ <input id="algolia-app-key" type="password" name="algolia-app-key" value="{{ algoliaAppKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
89
+ </div>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+
95
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
96
+ <div>
97
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
98
+ Meili Search Settings
99
+ </h2>
100
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
101
+ Update your Meili Search settings
102
+ </p>
103
+ </div>
104
+
105
+ <div class="md:col-span-2">
106
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
107
+ <div class="sm:col-span-3">
108
+ <label for="meili-app-id" class="block font-medium leading-6 text-gray-900 text-sm">App ID</label>
109
+ <div class="mt-2">
110
+ <input id="meili-app-id" type="text" name="meili-app-id" value="{{ meiliAppId }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
111
+ </div>
112
+ </div>
113
+
114
+ <div class="sm:col-span-3">
115
+ <label for="meili-app-key" class="block font-medium leading-6 text-gray-900 text-sm">App Key</label>
116
+ <div class="mt-2">
117
+ <input id="meili-app-key" type="password" name="meili-app-key" value="{{ meiliAppKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+
124
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
125
+ <div>
126
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
127
+ Lemon Squeezy Settings
128
+ </h2>
129
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
130
+ Update your Lemon Squeezy settings
131
+ </p>
132
+ </div>
133
+
134
+ <div class="md:col-span-2">
135
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
136
+ <div class="sm:col-span-3">
137
+ <label for="lemonsqueezy-app-id" class="block font-medium leading-6 text-gray-900 text-sm">App ID</label>
138
+ <div class="mt-2">
139
+ <input id="lemonsqueezy-app-id" type="text" name="lemonsqueezy-app-id" value="{{ lemonSqueezyAppId }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
140
+ </div>
141
+ </div>
142
+
143
+ <div class="sm:col-span-3">
144
+ <label for="lemonsqueezy-app-key" class="block font-medium leading-6 text-gray-900 text-sm">App Key</label>
145
+ <div class="mt-2">
146
+ <input id="lemonsqueezy-app-key" type="password" name="lemonsqueezy-app-key" value="{{ lemonSqueezyAppKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
147
+ </div>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </div>
152
+
153
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
154
+ <div>
155
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
156
+ Stripe Settings
157
+ </h2>
158
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
159
+ Update your Stripe settings
160
+ </p>
161
+ </div>
162
+
163
+ <div class="md:col-span-2">
164
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
165
+ <div class="sm:col-span-3">
166
+ <label for="stripe-app-id" class="block font-medium leading-6 text-gray-900 text-sm">App ID</label>
167
+ <div class="mt-2">
168
+ <input id="stripe-app-id" type="text" name="stripe-app-id" value="{{ stripeAppId }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
169
+ </div>
170
+ </div>
171
+
172
+ <div class="sm:col-span-3">
173
+ <label for="stripe-app-key" class="block font-medium leading-6 text-gray-900 text-sm">App Key</label>
174
+ <div class="mt-2">
175
+ <input id="stripe-app-key" type="password" name="stripe-app-key" value="{{ stripeAppKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
176
+ </div>
177
+ </div>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </main>
183
+ <div class="flex gap-x-6 items-center justify-end mt-6">
184
+ <button type="button" class="font-semibold leading-6 text-gray-900 text-sm">
185
+ Cancel
186
+ </button>
187
+ <button
188
+ type="submit"
189
+ class="px-3 py-2 font-semibold text-sm text-white bg-indigo-600 hover:bg-indigo-500 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600 focus-visible:outline-offset-2 shadow-sm"
190
+ >
191
+ Save
192
+ </button>
193
+ </div>
194
+ </form>
@@ -0,0 +1,191 @@
1
+ <script>
2
+ interface StorageFormProps {
3
+ defaultStorage?: string
4
+ s3Key?: string
5
+ s3Secret?: string
6
+ s3Region?: string
7
+ s3Bucket?: string
8
+ s3Url?: string
9
+ dropboxKey?: string
10
+ dropboxSecret?: string
11
+ dropboxBox?: string
12
+ meemaKey?: string
13
+ meemaSecret?: string
14
+ meemaRegion?: string
15
+ meemaBucket?: string
16
+ }
17
+
18
+ const { defaultStorage = 's3', s3Key = 'JKHJK$KJAHKS', s3Secret = 'kldsanko3njksdasjfasdn2m', s3Region = 'us-east-1', s3Bucket = 'stacks', s3Url = 'stacks.s3.amazonaws.com', dropboxKey = 'JKHJK$KJAHKS', dropboxSecret = 'kldsanko3njksdasjfasdn2m', dropboxBox = 'stacks', meemaKey = 'HJDSU41HJJKAD', meemaSecret = 'jkhnb523nbmnb9dsanmeop', meemaRegion = 'us-east-1', meemaBucket = 'stacks' } = defineProps<StorageFormProps>()
19
+ </script>
20
+ <form>
21
+ <main class="border-b border-gray-900/10">
22
+ <!-- Settings forms -->
23
+ <div class="divide-gray-900/10 divide-y">
24
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
25
+ <div>
26
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
27
+ Default Storage Settings
28
+ </h2>
29
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
30
+ Update your default Storage settings
31
+ </p>
32
+ </div>
33
+
34
+ <div class="md:col-span-2">
35
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
36
+ <div class="sm:col-span-3">
37
+ <label for="type" class="block font-medium leading-6 text-gray-900 text-sm">Default</label>
38
+ <div class="mt-2">
39
+ <select id="type" name="type" class="block py-1.5 w-full sm:max-w-xs text-gray-900 sm:leading-6 sm:text-sm border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
40
+ <option {{ defaultStorage == 's3' ? 'selected' : '' }}>s3</option>
41
+ <option {{ defaultStorage == 'Dropbox' ? 'selected' : '' }}>Dropbox</option>
42
+ <option {{ defaultStorage == 'Meema' ? 'selected' : '' }}>Meema</option>
43
+ </select>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
51
+ <div>
52
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
53
+ AWS S3
54
+ </h2>
55
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
56
+ Update your AWS S3 configurations
57
+ </p>
58
+ </div>
59
+
60
+ <div class="md:col-span-2">
61
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
62
+ <div class="sm:col-span-3">
63
+ <label for="s3-key" class="block font-medium leading-6 text-gray-900 text-sm">Key</label>
64
+ <div class="mt-2">
65
+ <input id="s3-key" type="text" name="s3-key" value="{{ s3Key }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
66
+ </div>
67
+ </div>
68
+
69
+ <div class="sm:col-span-3">
70
+ <label for="s3-secret" class="block font-medium leading-6 text-gray-900 text-sm">Secret</label>
71
+ <div class="mt-2">
72
+ <input id="s3-secret" type="password" name="s3-secret" value="{{ s3Secret }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
73
+ </div>
74
+ </div>
75
+
76
+ <div class="sm:col-span-3">
77
+ <label for="s3-region" class="block font-medium leading-6 text-gray-900 text-sm">Region</label>
78
+ <div class="mt-2">
79
+ <input id="s3-region" type="text" name="s3-region" value="{{ s3Region }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
80
+ </div>
81
+ </div>
82
+
83
+ <div class="sm:col-span-3">
84
+ <label for="s3-bucket" class="block font-medium leading-6 text-gray-900 text-sm">Bucket</label>
85
+ <div class="mt-2">
86
+ <input id="s3-bucket" type="text" name="s3-bucket" value="{{ s3Bucket }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
87
+ </div>
88
+ </div>
89
+
90
+ <div class="sm:col-span-full">
91
+ <label for="s3-url" class="block font-medium leading-6 text-gray-900 text-sm">URL</label>
92
+ <div class="mt-2">
93
+ <input id="s3-url" type="text" name="s3-url" value="{{ s3Url }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
101
+ <div>
102
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
103
+ Dropbox
104
+ </h2>
105
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
106
+ Update your Dropbox configurations
107
+ </p>
108
+ </div>
109
+
110
+ <div class="md:col-span-2">
111
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
112
+ <div class="sm:col-span-3">
113
+ <label for="dropbox-key" class="block font-medium leading-6 text-gray-900 text-sm">Key</label>
114
+ <div class="mt-2">
115
+ <input id="dropbox-key" type="text" name="dropbox-key" value="{{ dropboxKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
116
+ </div>
117
+ </div>
118
+
119
+ <div class="sm:col-span-3">
120
+ <label for="dropbox-secret" class="block font-medium leading-6 text-gray-900 text-sm">Secret</label>
121
+ <div class="mt-2">
122
+ <input id="dropbox-secret" type="password" name="dropbox-secret" value="{{ dropboxSecret }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
123
+ </div>
124
+ </div>
125
+
126
+ <div class="sm:col-span-full">
127
+ <label for="dropbox-box" class="block font-medium leading-6 text-gray-900 text-sm">Box</label>
128
+ <div class="mt-2">
129
+ <input id="dropbox-box" type="text" name="dropbox-box" value="{{ dropboxBox }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
130
+ </div>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+
136
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
137
+ <div>
138
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
139
+ Meema
140
+ </h2>
141
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
142
+ Update your Meema configurations
143
+ </p>
144
+ </div>
145
+
146
+ <div class="md:col-span-2">
147
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
148
+ <div class="sm:col-span-3">
149
+ <label for="meema-key" class="block font-medium leading-6 text-gray-900 text-sm">Key</label>
150
+ <div class="mt-2">
151
+ <input id="meema-key" type="text" name="meema-key" value="{{ meemaKey }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
152
+ </div>
153
+ </div>
154
+
155
+ <div class="sm:col-span-3">
156
+ <label for="meema-secret" class="block font-medium leading-6 text-gray-900 text-sm">Secret</label>
157
+ <div class="mt-2">
158
+ <input id="meema-secret" type="password" name="meema-secret" value="{{ meemaSecret }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
159
+ </div>
160
+ </div>
161
+
162
+ <div class="sm:col-span-3">
163
+ <label for="meema-region" class="block font-medium leading-6 text-gray-900 text-sm">Region</label>
164
+ <div class="mt-2">
165
+ <input id="meema-region" type="text" name="meema-region" value="{{ meemaRegion }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
166
+ </div>
167
+ </div>
168
+
169
+ <div class="sm:col-span-3">
170
+ <label for="meema-bucket" class="block font-medium leading-6 text-gray-900 text-sm">Bucket</label>
171
+ <div class="mt-2">
172
+ <input id="meema-bucket" type="text" name="meema-bucket" value="{{ meemaBucket }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
173
+ </div>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ </div>
179
+ </main>
180
+ <div class="flex gap-x-6 items-center justify-end mt-6">
181
+ <button type="button" class="font-semibold leading-6 text-gray-900 text-sm">
182
+ Cancel
183
+ </button>
184
+ <button
185
+ type="submit"
186
+ class="px-3 py-2 font-semibold text-sm text-white bg-indigo-600 hover:bg-indigo-500 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600 focus-visible:outline-offset-2 shadow-sm"
187
+ >
188
+ Save
189
+ </button>
190
+ </div>
191
+ </form>
@@ -0,0 +1,33 @@
1
+ <script>
2
+ interface TeamsFormProps {
3
+ teamMembers?: string
4
+ }
5
+
6
+ const { teamMembers = [ } = defineProps<TeamsFormProps>()
7
+
8
+ { name: 'Chris', email: 'chris@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' },
9
+ { name: 'Blake', email: 'blake@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' },
10
+ { name: 'Zoltan', email: 'zoltan@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' },
11
+ { name: 'Freddy', email: 'freddy@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' },
12
+ { name: 'Glenn', email: 'glenn@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' },
13
+ { name: 'Dorell', email: 'dorell@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' },
14
+ { name: 'Avery', email: 'avery@stacksjs.com', avatar: 'https://pbs.twimg.com/profile_images/1707883193054228480/n98q6t1L_400x400.jpg' }
15
+ ]
16
+ </script>
17
+ <div class="bg-white">
18
+ <div class="mx-auto px-6 lg:px-8 max-w-7xl">
19
+ <ul role="list" class="grid gap-x-8 gap-y-16 grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 mt-20 mx-auto lg:mx-0 max-w-2xl lg:max-w-none text-center">
20
+ @foreach(teamMembers as member)
21
+ <li>
22
+ <img class="mx-auto h-24 w-24 rounded-full" src="{{ member.avatar }}" alt="{{ member.name }}">
23
+ <h3 class="mt-6 font-semibold leading-7 text-base text-gray-900 tracking-tight">
24
+ {{ member.name }}
25
+ </h3>
26
+ <p class="leading-6 text-gray-600 text-sm">
27
+ {{ member.email }}
28
+ </p>
29
+ </li>
30
+ @endforeach
31
+ </ul>
32
+ </div>
33
+ </div>