@slashclick/ui 0.1.16 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/README.md +108 -108
  2. package/dist/components/auth/providers.cjs.map +1 -1
  3. package/dist/components/auth/providers.js.map +1 -1
  4. package/dist/components/card/back-button.cjs.map +1 -1
  5. package/dist/components/card/back-button.js.map +1 -1
  6. package/dist/components/card/card-wrapper.cjs.map +1 -1
  7. package/dist/components/card/card-wrapper.js.map +1 -1
  8. package/dist/components/card/header.cjs.map +1 -1
  9. package/dist/components/card/header.js.map +1 -1
  10. package/dist/components/combobox/ComboList.cjs.map +1 -1
  11. package/dist/components/combobox/ComboList.js.map +1 -1
  12. package/dist/components/combobox/index.cjs.map +1 -1
  13. package/dist/components/combobox/index.js.map +1 -1
  14. package/dist/components/dashboard/account-select.cjs.map +1 -1
  15. package/dist/components/dashboard/account-select.js.map +1 -1
  16. package/dist/components/dashboard/account-switcher.cjs.map +1 -1
  17. package/dist/components/dashboard/account-switcher.js.map +1 -1
  18. package/dist/components/dashboard/sidebar/CollapsibleSection.cjs.map +1 -1
  19. package/dist/components/dashboard/sidebar/CollapsibleSection.js.map +1 -1
  20. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.cjs.map +1 -1
  21. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.js.map +1 -1
  22. package/dist/components/dashboard/sidebar/EntityList.cjs.map +1 -1
  23. package/dist/components/dashboard/sidebar/EntityList.js.map +1 -1
  24. package/dist/components/dashboard/sidebar/EntityList.styles.cjs.map +1 -1
  25. package/dist/components/dashboard/sidebar/EntityList.styles.js.map +1 -1
  26. package/dist/components/dashboard/sidebar/SectionHeader.cjs.map +1 -1
  27. package/dist/components/dashboard/sidebar/SectionHeader.js.map +1 -1
  28. package/dist/components/dashboard/sidebar/SectionHeader.styles.cjs.map +1 -1
  29. package/dist/components/dashboard/sidebar/SectionHeader.styles.js.map +1 -1
  30. package/dist/components/dashboard/sidebar/index.cjs.map +1 -1
  31. package/dist/components/dashboard/sidebar/index.js.map +1 -1
  32. package/dist/components/dashboard/sidebar/sidebar.cjs.map +1 -1
  33. package/dist/components/dashboard/sidebar/sidebar.js.map +1 -1
  34. package/dist/components/dashboard/sidebar/tabs.cjs.map +1 -1
  35. package/dist/components/dashboard/sidebar/tabs.js.map +1 -1
  36. package/dist/components/dashboard/sidebar/types.cjs.map +1 -1
  37. package/dist/components/dashboard/sidebar-nav.cjs.map +1 -1
  38. package/dist/components/dashboard/sidebar-nav.js.map +1 -1
  39. package/dist/components/dashboard/utils/build-nav.cjs.map +1 -1
  40. package/dist/components/dashboard/utils/build-nav.js.map +1 -1
  41. package/dist/components/dashboard/with-dashboard.cjs.map +1 -1
  42. package/dist/components/dashboard/with-dashboard.js.map +1 -1
  43. package/dist/components/detail/DetailLayout.styles.cjs.map +1 -1
  44. package/dist/components/detail/DetailLayout.styles.js.map +1 -1
  45. package/dist/components/detail/index.cjs.map +1 -1
  46. package/dist/components/detail/index.js.map +1 -1
  47. package/dist/components/flowbite/card-images.cjs.map +1 -1
  48. package/dist/components/flowbite/card-images.js.map +1 -1
  49. package/dist/components/flowbite/gallery.cjs.map +1 -1
  50. package/dist/components/flowbite/gallery.js.map +1 -1
  51. package/dist/components/flowbite/masonry.cjs.map +1 -1
  52. package/dist/components/flowbite/masonry.js.map +1 -1
  53. package/dist/components/flowbite/search-hero.cjs +3 -3
  54. package/dist/components/flowbite/search-hero.cjs.map +1 -1
  55. package/dist/components/flowbite/search-hero.js +3 -3
  56. package/dist/components/flowbite/search-hero.js.map +1 -1
  57. package/dist/components/generic/copyright.cjs.map +1 -1
  58. package/dist/components/generic/copyright.js.map +1 -1
  59. package/dist/components/generic/icons.cjs.map +1 -1
  60. package/dist/components/generic/icons.js.map +1 -1
  61. package/dist/components/generic/link.cjs.map +1 -1
  62. package/dist/components/generic/link.js.map +1 -1
  63. package/dist/components/header/header.cjs +8 -6
  64. package/dist/components/header/header.cjs.map +1 -1
  65. package/dist/components/header/header.d.ts +4 -1
  66. package/dist/components/header/header.d.ts.map +1 -1
  67. package/dist/components/header/header.js +8 -6
  68. package/dist/components/header/header.js.map +1 -1
  69. package/dist/components/header/internal/main-nav.cjs.map +1 -1
  70. package/dist/components/header/internal/main-nav.js.map +1 -1
  71. package/dist/components/header/internal/mobile-nav.cjs.map +1 -1
  72. package/dist/components/header/internal/mobile-nav.js.map +1 -1
  73. package/dist/components/header/internal/mode-toggle.cjs.map +1 -1
  74. package/dist/components/header/internal/mode-toggle.js.map +1 -1
  75. package/dist/components/header/internal/site-header.cjs.map +1 -1
  76. package/dist/components/header/internal/site-header.js.map +1 -1
  77. package/dist/components/header/langbutton/langbutton.cjs +17 -5
  78. package/dist/components/header/langbutton/langbutton.cjs.map +1 -1
  79. package/dist/components/header/langbutton/langbutton.d.ts +3 -1
  80. package/dist/components/header/langbutton/langbutton.d.ts.map +1 -1
  81. package/dist/components/header/langbutton/langbutton.js +17 -5
  82. package/dist/components/header/langbutton/langbutton.js.map +1 -1
  83. package/dist/components/header/userbutton/user-dropdown.cjs.map +1 -1
  84. package/dist/components/header/userbutton/user-dropdown.js.map +1 -1
  85. package/dist/components/header/userbutton/userbutton.cjs +14 -5
  86. package/dist/components/header/userbutton/userbutton.cjs.map +1 -1
  87. package/dist/components/header/userbutton/userbutton.d.ts +3 -1
  88. package/dist/components/header/userbutton/userbutton.d.ts.map +1 -1
  89. package/dist/components/header/userbutton/userbutton.js +14 -5
  90. package/dist/components/header/userbutton/userbutton.js.map +1 -1
  91. package/dist/components/hooks/use-page-nav.cjs.map +1 -1
  92. package/dist/components/hooks/use-page-nav.js.map +1 -1
  93. package/dist/components/hooks/use-user-entities.cjs.map +1 -1
  94. package/dist/components/hooks/use-user-entities.js.map +1 -1
  95. package/dist/components/icons/apple.cjs.map +1 -1
  96. package/dist/components/icons/apple.js.map +1 -1
  97. package/dist/components/icons/facebook.cjs.map +1 -1
  98. package/dist/components/icons/facebook.js.map +1 -1
  99. package/dist/components/icons/github.cjs.map +1 -1
  100. package/dist/components/icons/github.js.map +1 -1
  101. package/dist/components/icons/google.cjs.map +1 -1
  102. package/dist/components/icons/google.js.map +1 -1
  103. package/dist/components/icons/logo.cjs +6 -2
  104. package/dist/components/icons/logo.cjs.map +1 -1
  105. package/dist/components/icons/logo.d.ts +3 -1
  106. package/dist/components/icons/logo.d.ts.map +1 -1
  107. package/dist/components/icons/logo.js +6 -2
  108. package/dist/components/icons/logo.js.map +1 -1
  109. package/dist/components/lightbox/GallerySection.cjs.map +1 -1
  110. package/dist/components/lightbox/GallerySection.js.map +1 -1
  111. package/dist/components/lightbox/ImageLightbox.cjs.map +1 -1
  112. package/dist/components/lightbox/ImageLightbox.js.map +1 -1
  113. package/dist/components/lightbox/ImageLightbox.types.cjs.map +1 -1
  114. package/dist/components/lightbox/index.cjs.map +1 -1
  115. package/dist/components/lightbox/index.js.map +1 -1
  116. package/dist/components/lightbox/useEntityLightbox.cjs.map +1 -1
  117. package/dist/components/lightbox/useEntityLightbox.js.map +1 -1
  118. package/dist/components/lightbox/useLightbox.cjs.map +1 -1
  119. package/dist/components/lightbox/useLightbox.js.map +1 -1
  120. package/dist/components/search/search.cjs.map +1 -1
  121. package/dist/components/search/search.js.map +1 -1
  122. package/dist/components/tailwind/contact.cjs +6 -6
  123. package/dist/components/tailwind/contact.cjs.map +1 -1
  124. package/dist/components/tailwind/contact.js +6 -6
  125. package/dist/components/tailwind/contact.js.map +1 -1
  126. package/dist/components/tailwind/content-page.cjs.map +1 -1
  127. package/dist/components/tailwind/content-page.js.map +1 -1
  128. package/dist/components/tailwind/feature.cjs.map +1 -1
  129. package/dist/components/tailwind/feature.js.map +1 -1
  130. package/dist/components/tailwind/featurelist.cjs.map +1 -1
  131. package/dist/components/tailwind/featurelist.js.map +1 -1
  132. package/dist/components/tailwind/footer.cjs.map +1 -1
  133. package/dist/components/tailwind/footer.js.map +1 -1
  134. package/dist/components/tailwind/hero.cjs.map +1 -1
  135. package/dist/components/tailwind/hero.js.map +1 -1
  136. package/dist/components/tailwind/pricing.cjs +28 -28
  137. package/dist/components/tailwind/pricing.cjs.map +1 -1
  138. package/dist/components/tailwind/pricing.d.ts.map +1 -1
  139. package/dist/components/tailwind/pricing.js +28 -28
  140. package/dist/components/tailwind/pricing.js.map +1 -1
  141. package/dist/components/tailwind/privacy.cjs.map +1 -1
  142. package/dist/components/tailwind/privacy.js.map +1 -1
  143. package/dist/components/tailwind/providerIcons.cjs.map +1 -1
  144. package/dist/components/tailwind/providerIcons.js.map +1 -1
  145. package/dist/components/ui/avatar.cjs.map +1 -1
  146. package/dist/components/ui/avatar.js.map +1 -1
  147. package/dist/components/ui/breadcrumb.cjs.map +1 -1
  148. package/dist/components/ui/breadcrumb.js.map +1 -1
  149. package/dist/components/ui/button.cjs.map +1 -1
  150. package/dist/components/ui/button.js.map +1 -1
  151. package/dist/components/ui/card.cjs.map +1 -1
  152. package/dist/components/ui/card.js.map +1 -1
  153. package/dist/components/ui/checkbox.cjs.map +1 -1
  154. package/dist/components/ui/checkbox.js.map +1 -1
  155. package/dist/components/ui/command.cjs.map +1 -1
  156. package/dist/components/ui/command.d.ts.map +1 -1
  157. package/dist/components/ui/command.js.map +1 -1
  158. package/dist/components/ui/dialog.cjs.map +1 -1
  159. package/dist/components/ui/dialog.js.map +1 -1
  160. package/dist/components/ui/drawer.cjs.map +1 -1
  161. package/dist/components/ui/drawer.js.map +1 -1
  162. package/dist/components/ui/dropdown-menu.cjs.map +1 -1
  163. package/dist/components/ui/dropdown-menu.js.map +1 -1
  164. package/dist/components/ui/input.cjs.map +1 -1
  165. package/dist/components/ui/input.js.map +1 -1
  166. package/dist/components/ui/label.cjs.map +1 -1
  167. package/dist/components/ui/label.js.map +1 -1
  168. package/dist/components/ui/menubar.cjs.map +1 -1
  169. package/dist/components/ui/menubar.js.map +1 -1
  170. package/dist/components/ui/navigation-menu.cjs.map +1 -1
  171. package/dist/components/ui/navigation-menu.js.map +1 -1
  172. package/dist/components/ui/popover.cjs.map +1 -1
  173. package/dist/components/ui/popover.js.map +1 -1
  174. package/dist/components/ui/resizable.cjs.map +1 -1
  175. package/dist/components/ui/resizable.js.map +1 -1
  176. package/dist/components/ui/scroll-area.cjs.map +1 -1
  177. package/dist/components/ui/scroll-area.js.map +1 -1
  178. package/dist/components/ui/select.cjs.map +1 -1
  179. package/dist/components/ui/select.js.map +1 -1
  180. package/dist/components/ui/sheet.cjs.map +1 -1
  181. package/dist/components/ui/sheet.js.map +1 -1
  182. package/dist/components/ui/skeleton.cjs.map +1 -1
  183. package/dist/components/ui/skeleton.js.map +1 -1
  184. package/dist/components/ui/spinner.cjs.map +1 -1
  185. package/dist/components/ui/spinner.js.map +1 -1
  186. package/dist/components/ui/switch.cjs.map +1 -1
  187. package/dist/components/ui/switch.js.map +1 -1
  188. package/dist/components/ui/tabs.cjs.map +1 -1
  189. package/dist/components/ui/tabs.js.map +1 -1
  190. package/dist/components/ui/textarea.cjs.map +1 -1
  191. package/dist/components/ui/textarea.js.map +1 -1
  192. package/dist/components/ui/toast.cjs.map +1 -1
  193. package/dist/components/ui/toast.js.map +1 -1
  194. package/dist/components/ui/toaster.cjs.map +1 -1
  195. package/dist/components/ui/toaster.js.map +1 -1
  196. package/dist/components/ui/tooltip.cjs.map +1 -1
  197. package/dist/components/ui/tooltip.js.map +1 -1
  198. package/dist/components/ui/use-toast.cjs.map +1 -1
  199. package/dist/components/ui/use-toast.js.map +1 -1
  200. package/dist/components/upgrade-prompt/UpgradePrompt.cjs.map +1 -1
  201. package/dist/components/upgrade-prompt/UpgradePrompt.js.map +1 -1
  202. package/dist/components/upgrade-prompt/index.cjs.map +1 -1
  203. package/dist/components/upgrade-prompt/index.js.map +1 -1
  204. package/dist/hooks/useRecaptcha.cjs.map +1 -1
  205. package/dist/hooks/useRecaptcha.js.map +1 -1
  206. package/dist/lib/nav-theme.cjs +33 -0
  207. package/dist/lib/nav-theme.cjs.map +1 -0
  208. package/dist/lib/nav-theme.d.ts +3 -0
  209. package/dist/lib/nav-theme.d.ts.map +1 -0
  210. package/dist/lib/nav-theme.js +9 -0
  211. package/dist/lib/nav-theme.js.map +1 -0
  212. package/dist/lib/utils.cjs.map +1 -1
  213. package/dist/lib/utils.d.cjs +17 -0
  214. package/dist/lib/utils.d.cjs.map +1 -0
  215. package/dist/lib/utils.d.js +1 -0
  216. package/dist/lib/utils.d.js.map +1 -0
  217. package/dist/lib/utils.js.map +1 -1
  218. package/dist/styles.css +2 -2
  219. package/dist/types/nav.cjs.map +1 -1
  220. package/dist/types/sitemap.cjs.map +1 -1
  221. package/dist/types/unist.cjs.map +1 -1
  222. package/package.json +1 -1
  223. package/styles/theme.css +52 -52
@@ -122,7 +122,7 @@ const Contact = () => {
122
122
  autoComplete: "given-name",
123
123
  required: true,
124
124
  disabled: status === "loading",
125
- className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full"
125
+ className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10"
126
126
  }
127
127
  ) })
128
128
  ] }),
@@ -144,7 +144,7 @@ const Contact = () => {
144
144
  autoComplete: "family-name",
145
145
  required: true,
146
146
  disabled: status === "loading",
147
- className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full"
147
+ className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10"
148
148
  }
149
149
  ) })
150
150
  ] }),
@@ -165,7 +165,7 @@ const Contact = () => {
165
165
  id: "company",
166
166
  autoComplete: "organization",
167
167
  disabled: status === "loading",
168
- className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full"
168
+ className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10"
169
169
  }
170
170
  ) })
171
171
  ] }),
@@ -187,7 +187,7 @@ const Contact = () => {
187
187
  autoComplete: "email",
188
188
  required: true,
189
189
  disabled: status === "loading",
190
- className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full"
190
+ className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10"
191
191
  }
192
192
  ) })
193
193
  ] }),
@@ -233,7 +233,7 @@ const Contact = () => {
233
233
  id: "phone-number",
234
234
  autoComplete: "tel",
235
235
  disabled: status === "loading",
236
- className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full"
236
+ className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10"
237
237
  }
238
238
  )
239
239
  ] })
@@ -255,7 +255,7 @@ const Contact = () => {
255
255
  rows: 4,
256
256
  required: true,
257
257
  disabled: status === "loading",
258
- className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full",
258
+ className: "focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10",
259
259
  defaultValue: ""
260
260
  }
261
261
  ) })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/contact.tsx"],"sourcesContent":["'use client'\r\nimport { useState } from 'react'\r\nimport { ChevronDownIcon } from '@heroicons/react/20/solid'\r\nimport { Switch } from '@headlessui/react'\r\nimport { Input } from '../ui/input'\r\nimport { useRecaptcha } from '../../hooks/useRecaptcha'\r\n\r\nfunction classNames(...classes: string[]) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\ntype Status = 'idle' | 'loading' | 'success' | 'error'\r\n\r\nexport const Contact = () => {\r\n const [agreed, setAgreed] = useState(false)\r\n const [status, setStatus] = useState<Status>('idle')\r\n const [errorMessage, setErrorMessage] = useState('')\r\n const { executeRecaptcha } = useRecaptcha()\r\n\r\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\r\n e.preventDefault()\r\n\r\n if (!agreed) {\r\n setErrorMessage('You must agree to the privacy policy')\r\n return\r\n }\r\n\r\n const form = e.currentTarget\r\n const data = new FormData(form)\r\n\r\n const recaptchaToken = await executeRecaptcha('contact')\r\n\r\n const body = {\r\n firstName: data.get('first-name') as string,\r\n lastName: data.get('last-name') as string,\r\n company: data.get('company') as string,\r\n email: data.get('email') as string,\r\n phone: data.get('phone-number') as string,\r\n message: data.get('message') as string,\r\n agreed: true as const,\r\n recaptchaToken: recaptchaToken ?? undefined,\r\n }\r\n\r\n setStatus('loading')\r\n setErrorMessage('')\r\n\r\n try {\r\n const res = await fetch('/api/contact', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(body),\r\n })\r\n\r\n if (!res.ok) {\r\n const json = await res.json()\r\n throw new Error(json.error ?? 'Something went wrong')\r\n }\r\n\r\n setStatus('success')\r\n form.reset()\r\n setAgreed(false)\r\n } catch (err) {\r\n setStatus('error')\r\n setErrorMessage(\r\n err instanceof Error ? err.message : 'Something went wrong',\r\n )\r\n }\r\n }\r\n\r\n if (status === 'success') {\r\n return (\r\n <div className=\"isolate bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-800 dark:text-white\">\r\n <div className=\"mx-auto max-w-2xl text-center\">\r\n <h2 className=\"text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-gray-100\">\r\n Message sent\r\n </h2>\r\n <p className=\"mt-4 text-lg leading-8 text-gray-600 dark:text-gray-400\">\r\n Thanks for reaching out. We&apos;ll get back to you as soon as\r\n possible.\r\n </p>\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className=\"isolate bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-800 dark:text-white\">\r\n <div\r\n className=\"absolute inset-x-0 top-[-10rem] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[-20rem]\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"aspect-1155/678 bg-linear-to-tr relative left-1/2 -z-10 w-[36.125rem] max-w-none -translate-x-1/2 rotate-[30deg] from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-40rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n <div className=\"mx-auto max-w-2xl text-center\">\r\n <h2 className=\"text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-gray-100\">\r\n Contact us\r\n </h2>\r\n <p className=\"mt-2 text-lg leading-8 text-gray-600 dark:text-gray-400\">\r\n Have a question or want to learn more? Send us a message.\r\n </p>\r\n </div>\r\n <form onSubmit={handleSubmit} className=\"mx-auto mt-16 max-w-xl sm:mt-20\">\r\n <div className=\"grid grid-cols-1 gap-x-8 gap-y-6 sm:grid-cols-2\">\r\n <div>\r\n <label\r\n htmlFor=\"first-name\"\r\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\r\n >\r\n First name\r\n </label>\r\n <div className=\"mt-2.5\">\r\n <Input\r\n type=\"text\"\r\n name=\"first-name\"\r\n id=\"first-name\"\r\n autoComplete=\"given-name\"\r\n required\r\n disabled={status === 'loading'}\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <label\r\n htmlFor=\"last-name\"\r\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\r\n >\r\n Last name\r\n </label>\r\n <div className=\"mt-2.5\">\r\n <Input\r\n type=\"text\"\r\n name=\"last-name\"\r\n id=\"last-name\"\r\n autoComplete=\"family-name\"\r\n required\r\n disabled={status === 'loading'}\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n />\r\n </div>\r\n </div>\r\n <div className=\"sm:col-span-2\">\r\n <label\r\n htmlFor=\"company\"\r\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\r\n >\r\n Company\r\n </label>\r\n <div className=\"mt-2.5\">\r\n <Input\r\n type=\"text\"\r\n name=\"company\"\r\n id=\"company\"\r\n autoComplete=\"organization\"\r\n disabled={status === 'loading'}\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n />\r\n </div>\r\n </div>\r\n <div className=\"sm:col-span-2\">\r\n <label\r\n htmlFor=\"email\"\r\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\r\n >\r\n Email\r\n </label>\r\n <div className=\"mt-2.5\">\r\n <Input\r\n type=\"email\"\r\n name=\"email\"\r\n id=\"email\"\r\n autoComplete=\"email\"\r\n required\r\n disabled={status === 'loading'}\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n />\r\n </div>\r\n </div>\r\n <div className=\"sm:col-span-2\">\r\n <label\r\n htmlFor=\"phone-number\"\r\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\r\n >\r\n Phone number\r\n </label>\r\n <div className=\"relative mt-2.5\">\r\n <div className=\"absolute inset-y-0 left-0 flex items-center\">\r\n <label htmlFor=\"country\" className=\"sr-only\">\r\n Country\r\n </label>\r\n <select\r\n id=\"country\"\r\n name=\"country\"\r\n disabled={status === 'loading'}\r\n className=\"h-full rounded-md border-0 bg-transparent bg-none py-0 pl-4 pr-9 text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm\"\r\n >\r\n <option>US</option>\r\n <option>CA</option>\r\n <option>EU</option>\r\n </select>\r\n <ChevronDownIcon\r\n className=\"pointer-events-none absolute right-3 top-0 h-full w-5 text-gray-400\"\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n <Input\r\n type=\"tel\"\r\n name=\"phone-number\"\r\n id=\"phone-number\"\r\n autoComplete=\"tel\"\r\n disabled={status === 'loading'}\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n />\r\n </div>\r\n </div>\r\n <div className=\"sm:col-span-2\">\r\n <label\r\n htmlFor=\"message\"\r\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\r\n >\r\n Message\r\n </label>\r\n <div className=\"mt-2.5\">\r\n <textarea\r\n name=\"message\"\r\n id=\"message\"\r\n rows={4}\r\n required\r\n disabled={status === 'loading'}\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n defaultValue={''}\r\n />\r\n </div>\r\n </div>\r\n <Switch.Group as=\"div\" className=\"flex gap-x-4 sm:col-span-2\">\r\n <div className=\"flex h-6 items-center\">\r\n <Switch\r\n checked={agreed}\r\n onChange={setAgreed}\r\n disabled={status === 'loading'}\r\n className={classNames(\r\n agreed ? 'bg-primary-600' : 'bg-gray-200',\r\n 'focus-visible:outline-primary-600 flex w-8 flex-none cursor-pointer rounded-full p-px ring-1 ring-inset ring-gray-900/5 transition-colors duration-200 ease-in-out focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',\r\n )}\r\n >\r\n <span className=\"sr-only\">Agree to policies</span>\r\n <span\r\n aria-hidden=\"true\"\r\n className={classNames(\r\n agreed ? 'translate-x-3.5' : 'translate-x-0',\r\n 'shadow-2xs h-4 w-4 transform rounded-full bg-white ring-1 ring-gray-900/5 transition duration-200 ease-in-out',\r\n )}\r\n />\r\n </Switch>\r\n </div>\r\n <Switch.Label className=\"text-sm leading-6 text-gray-600 dark:text-white\">\r\n By selecting this, you agree to our{' '}\r\n <a\r\n href=\"/about/privacy\"\r\n className=\"text-primary-600 font-semibold\"\r\n >\r\n privacy&nbsp;policy\r\n </a>\r\n .\r\n </Switch.Label>\r\n </Switch.Group>\r\n </div>\r\n\r\n {errorMessage && (\r\n <p\r\n className=\"mt-4 text-sm text-red-600 dark:text-red-400\"\r\n role=\"alert\"\r\n >\r\n {errorMessage}\r\n </p>\r\n )}\r\n\r\n <div className=\"mt-10\">\r\n <button\r\n type=\"submit\"\r\n disabled={status === 'loading'}\r\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-500 shadow-2xs flex w-full items-center justify-center rounded-md px-3 py-2 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-60\"\r\n >\r\n {status === 'loading' ? 'Sending…' : 'Send message'}\r\n </button>\r\n </div>\r\n <p className=\"mt-4 text-center text-xs text-gray-400 dark:text-gray-500\">\r\n This site is protected by reCAPTCHA and the Google{' '}\r\n <a\r\n href=\"https://policies.google.com/privacy\"\r\n className=\"underline hover:text-gray-600 dark:hover:text-gray-300\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Privacy Policy\r\n </a>{' '}\r\n and{' '}\r\n <a\r\n href=\"https://policies.google.com/terms\"\r\n className=\"underline hover:text-gray-600 dark:hover:text-gray-300\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Terms of Service\r\n </a>{' '}\r\n apply.\r\n </p>\r\n </form>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/contact.tsx"],"sourcesContent":["'use client'\nimport { useState } from 'react'\nimport { ChevronDownIcon } from '@heroicons/react/20/solid'\nimport { Switch } from '@headlessui/react'\nimport { Input } from '../ui/input'\nimport { useRecaptcha } from '../../hooks/useRecaptcha'\n\nfunction classNames(...classes: string[]) {\n return classes.filter(Boolean).join(' ')\n}\n\ntype Status = 'idle' | 'loading' | 'success' | 'error'\n\nexport const Contact = () => {\n const [agreed, setAgreed] = useState(false)\n const [status, setStatus] = useState<Status>('idle')\n const [errorMessage, setErrorMessage] = useState('')\n const { executeRecaptcha } = useRecaptcha()\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n\n if (!agreed) {\n setErrorMessage('You must agree to the privacy policy')\n return\n }\n\n const form = e.currentTarget\n const data = new FormData(form)\n\n const recaptchaToken = await executeRecaptcha('contact')\n\n const body = {\n firstName: data.get('first-name') as string,\n lastName: data.get('last-name') as string,\n company: data.get('company') as string,\n email: data.get('email') as string,\n phone: data.get('phone-number') as string,\n message: data.get('message') as string,\n agreed: true as const,\n recaptchaToken: recaptchaToken ?? undefined,\n }\n\n setStatus('loading')\n setErrorMessage('')\n\n try {\n const res = await fetch('/api/contact', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n })\n\n if (!res.ok) {\n const json = await res.json()\n throw new Error(json.error ?? 'Something went wrong')\n }\n\n setStatus('success')\n form.reset()\n setAgreed(false)\n } catch (err) {\n setStatus('error')\n setErrorMessage(\n err instanceof Error ? err.message : 'Something went wrong',\n )\n }\n }\n\n if (status === 'success') {\n return (\n <div className=\"isolate bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-800 dark:text-white\">\n <div className=\"mx-auto max-w-2xl text-center\">\n <h2 className=\"text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-gray-100\">\n Message sent\n </h2>\n <p className=\"mt-4 text-lg leading-8 text-gray-600 dark:text-gray-400\">\n Thanks for reaching out. We&apos;ll get back to you as soon as\n possible.\n </p>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"isolate bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-800 dark:text-white\">\n <div\n className=\"absolute inset-x-0 top-[-10rem] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[-20rem]\"\n aria-hidden=\"true\"\n >\n <div\n className=\"aspect-1155/678 bg-linear-to-tr relative left-1/2 -z-10 w-[36.125rem] max-w-none -translate-x-1/2 rotate-[30deg] from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-40rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n <div className=\"mx-auto max-w-2xl text-center\">\n <h2 className=\"text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-gray-100\">\n Contact us\n </h2>\n <p className=\"mt-2 text-lg leading-8 text-gray-600 dark:text-gray-400\">\n Have a question or want to learn more? Send us a message.\n </p>\n </div>\n <form onSubmit={handleSubmit} className=\"mx-auto mt-16 max-w-xl sm:mt-20\">\n <div className=\"grid grid-cols-1 gap-x-8 gap-y-6 sm:grid-cols-2\">\n <div>\n <label\n htmlFor=\"first-name\"\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\n >\n First name\n </label>\n <div className=\"mt-2.5\">\n <Input\n type=\"text\"\n name=\"first-name\"\n id=\"first-name\"\n autoComplete=\"given-name\"\n required\n disabled={status === 'loading'}\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10\"\n />\n </div>\n </div>\n <div>\n <label\n htmlFor=\"last-name\"\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\n >\n Last name\n </label>\n <div className=\"mt-2.5\">\n <Input\n type=\"text\"\n name=\"last-name\"\n id=\"last-name\"\n autoComplete=\"family-name\"\n required\n disabled={status === 'loading'}\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10\"\n />\n </div>\n </div>\n <div className=\"sm:col-span-2\">\n <label\n htmlFor=\"company\"\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\n >\n Company\n </label>\n <div className=\"mt-2.5\">\n <Input\n type=\"text\"\n name=\"company\"\n id=\"company\"\n autoComplete=\"organization\"\n disabled={status === 'loading'}\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10\"\n />\n </div>\n </div>\n <div className=\"sm:col-span-2\">\n <label\n htmlFor=\"email\"\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\n >\n Email\n </label>\n <div className=\"mt-2.5\">\n <Input\n type=\"email\"\n name=\"email\"\n id=\"email\"\n autoComplete=\"email\"\n required\n disabled={status === 'loading'}\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10\"\n />\n </div>\n </div>\n <div className=\"sm:col-span-2\">\n <label\n htmlFor=\"phone-number\"\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\n >\n Phone number\n </label>\n <div className=\"relative mt-2.5\">\n <div className=\"absolute inset-y-0 left-0 flex items-center\">\n <label htmlFor=\"country\" className=\"sr-only\">\n Country\n </label>\n <select\n id=\"country\"\n name=\"country\"\n disabled={status === 'loading'}\n className=\"h-full rounded-md border-0 bg-transparent bg-none py-0 pl-4 pr-9 text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm\"\n >\n <option>US</option>\n <option>CA</option>\n <option>EU</option>\n </select>\n <ChevronDownIcon\n className=\"pointer-events-none absolute right-3 top-0 h-full w-5 text-gray-400\"\n aria-hidden=\"true\"\n />\n </div>\n <Input\n type=\"tel\"\n name=\"phone-number\"\n id=\"phone-number\"\n autoComplete=\"tel\"\n disabled={status === 'loading'}\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10\"\n />\n </div>\n </div>\n <div className=\"sm:col-span-2\">\n <label\n htmlFor=\"message\"\n className=\"block text-sm font-semibold leading-6 text-gray-900 dark:text-white\"\n >\n Message\n </label>\n <div className=\"mt-2.5\">\n <textarea\n name=\"message\"\n id=\"message\"\n rows={4}\n required\n disabled={status === 'loading'}\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-gray-900/5 px-3 py-1.5 text-base text-gray-900 ring-1 ring-inset ring-gray-900/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full dark:bg-white/5 dark:text-white dark:ring-white/10\"\n defaultValue={''}\n />\n </div>\n </div>\n <Switch.Group as=\"div\" className=\"flex gap-x-4 sm:col-span-2\">\n <div className=\"flex h-6 items-center\">\n <Switch\n checked={agreed}\n onChange={setAgreed}\n disabled={status === 'loading'}\n className={classNames(\n agreed ? 'bg-primary-600' : 'bg-gray-200',\n 'focus-visible:outline-primary-600 flex w-8 flex-none cursor-pointer rounded-full p-px ring-1 ring-inset ring-gray-900/5 transition-colors duration-200 ease-in-out focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',\n )}\n >\n <span className=\"sr-only\">Agree to policies</span>\n <span\n aria-hidden=\"true\"\n className={classNames(\n agreed ? 'translate-x-3.5' : 'translate-x-0',\n 'shadow-2xs h-4 w-4 transform rounded-full bg-white ring-1 ring-gray-900/5 transition duration-200 ease-in-out',\n )}\n />\n </Switch>\n </div>\n <Switch.Label className=\"text-sm leading-6 text-gray-600 dark:text-white\">\n By selecting this, you agree to our{' '}\n <a\n href=\"/about/privacy\"\n className=\"text-primary-600 font-semibold\"\n >\n privacy&nbsp;policy\n </a>\n .\n </Switch.Label>\n </Switch.Group>\n </div>\n\n {errorMessage && (\n <p\n className=\"mt-4 text-sm text-red-600 dark:text-red-400\"\n role=\"alert\"\n >\n {errorMessage}\n </p>\n )}\n\n <div className=\"mt-10\">\n <button\n type=\"submit\"\n disabled={status === 'loading'}\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-500 shadow-2xs flex w-full items-center justify-center rounded-md px-3 py-2 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-60\"\n >\n {status === 'loading' ? 'Sending…' : 'Send message'}\n </button>\n </div>\n <p className=\"mt-4 text-center text-xs text-gray-400 dark:text-gray-500\">\n This site is protected by reCAPTCHA and the Google{' '}\n <a\n href=\"https://policies.google.com/privacy\"\n className=\"underline hover:text-gray-600 dark:hover:text-gray-300\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Privacy Policy\n </a>{' '}\n and{' '}\n <a\n href=\"https://policies.google.com/terms\"\n className=\"underline hover:text-gray-600 dark:hover:text-gray-300\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Terms of Service\n </a>{' '}\n apply.\n </p>\n </form>\n </div>\n )\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/content-page.tsx"],"sourcesContent":["import { ReactNode } from 'react'\r\n\r\ninterface ContentPageProps {\r\n title: string\r\n subtitle?: string\r\n lastUpdated?: string\r\n children: ReactNode\r\n}\r\n\r\nexport function ContentPage({\r\n title,\r\n subtitle,\r\n lastUpdated,\r\n children,\r\n}: ContentPageProps) {\r\n return (\r\n <div className=\"bg-white dark:bg-gray-900\">\r\n <div className=\"mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8 lg:py-40\">\r\n <h2 className=\"text-4xl font-semibold tracking-tight text-gray-900 sm:text-5xl dark:text-white\">\r\n {title}\r\n </h2>\r\n {subtitle && (\r\n <p className=\"mt-4 text-lg text-gray-600 dark:text-gray-400\">\r\n {subtitle}\r\n </p>\r\n )}\r\n {lastUpdated && (\r\n <p className=\"mt-3 text-sm text-gray-400 dark:text-gray-500\">\r\n Last updated: {lastUpdated}\r\n </p>\r\n )}\r\n <dl className=\"mt-16 divide-y divide-gray-900/10 dark:divide-white/10\">\r\n {children}\r\n </dl>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\ninterface ContentSectionProps {\r\n title: string\r\n children: ReactNode\r\n}\r\n\r\nexport function ContentSection({ title, children }: ContentSectionProps) {\r\n return (\r\n <div className=\"py-8 first:pt-0 last:pb-0 lg:grid lg:grid-cols-12 lg:gap-8\">\r\n <dt className=\"text-base/7 font-semibold text-gray-900 lg:col-span-5 dark:text-white\">\r\n {title}\r\n </dt>\r\n <dd className=\"mt-4 space-y-4 text-base/7 text-gray-600 lg:col-span-7 lg:mt-0 dark:text-gray-400\">\r\n {children}\r\n </dd>\r\n </div>\r\n )\r\n}\r\n\r\nexport function ContentList({ items }: { items: ReactNode[] }) {\r\n return (\r\n <ul className=\"list-disc space-y-2 pl-5\">\r\n {items.map((item, i) => (\r\n <li key={i}>{item}</li>\r\n ))}\r\n </ul>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBQ;AATD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,SACE,4CAAC,SAAI,WAAU,6BACb,uDAAC,SAAI,WAAU,0DACb;AAAA,gDAAC,QAAG,WAAU,mFACX,iBACH;AAAA,IACC,YACC,4CAAC,OAAE,WAAU,iDACV,oBACH;AAAA,IAED,eACC,6CAAC,OAAE,WAAU,iDAAgD;AAAA;AAAA,MAC5C;AAAA,OACjB;AAAA,IAEF,4CAAC,QAAG,WAAU,0DACX,UACH;AAAA,KACF,GACF;AAEJ;AAOO,SAAS,eAAe,EAAE,OAAO,SAAS,GAAwB;AACvE,SACE,6CAAC,SAAI,WAAU,8DACb;AAAA,gDAAC,QAAG,WAAU,yEACX,iBACH;AAAA,IACA,4CAAC,QAAG,WAAU,qFACX,UACH;AAAA,KACF;AAEJ;AAEO,SAAS,YAAY,EAAE,MAAM,GAA2B;AAC7D,SACE,4CAAC,QAAG,WAAU,4BACX,gBAAM,IAAI,CAAC,MAAM,MAChB,4CAAC,QAAY,kBAAJ,CAAS,CACnB,GACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/content-page.tsx"],"sourcesContent":["import { ReactNode } from 'react'\n\ninterface ContentPageProps {\n title: string\n subtitle?: string\n lastUpdated?: string\n children: ReactNode\n}\n\nexport function ContentPage({\n title,\n subtitle,\n lastUpdated,\n children,\n}: ContentPageProps) {\n return (\n <div className=\"bg-white dark:bg-gray-900\">\n <div className=\"mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8 lg:py-40\">\n <h2 className=\"text-4xl font-semibold tracking-tight text-gray-900 sm:text-5xl dark:text-white\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"mt-4 text-lg text-gray-600 dark:text-gray-400\">\n {subtitle}\n </p>\n )}\n {lastUpdated && (\n <p className=\"mt-3 text-sm text-gray-400 dark:text-gray-500\">\n Last updated: {lastUpdated}\n </p>\n )}\n <dl className=\"mt-16 divide-y divide-gray-900/10 dark:divide-white/10\">\n {children}\n </dl>\n </div>\n </div>\n )\n}\n\ninterface ContentSectionProps {\n title: string\n children: ReactNode\n}\n\nexport function ContentSection({ title, children }: ContentSectionProps) {\n return (\n <div className=\"py-8 first:pt-0 last:pb-0 lg:grid lg:grid-cols-12 lg:gap-8\">\n <dt className=\"text-base/7 font-semibold text-gray-900 lg:col-span-5 dark:text-white\">\n {title}\n </dt>\n <dd className=\"mt-4 space-y-4 text-base/7 text-gray-600 lg:col-span-7 lg:mt-0 dark:text-gray-400\">\n {children}\n </dd>\n </div>\n )\n}\n\nexport function ContentList({ items }: { items: ReactNode[] }) {\n return (\n <ul className=\"list-disc space-y-2 pl-5\">\n {items.map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBQ;AATD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,SACE,4CAAC,SAAI,WAAU,6BACb,uDAAC,SAAI,WAAU,0DACb;AAAA,gDAAC,QAAG,WAAU,mFACX,iBACH;AAAA,IACC,YACC,4CAAC,OAAE,WAAU,iDACV,oBACH;AAAA,IAED,eACC,6CAAC,OAAE,WAAU,iDAAgD;AAAA;AAAA,MAC5C;AAAA,OACjB;AAAA,IAEF,4CAAC,QAAG,WAAU,0DACX,UACH;AAAA,KACF,GACF;AAEJ;AAOO,SAAS,eAAe,EAAE,OAAO,SAAS,GAAwB;AACvE,SACE,6CAAC,SAAI,WAAU,8DACb;AAAA,gDAAC,QAAG,WAAU,yEACX,iBACH;AAAA,IACA,4CAAC,QAAG,WAAU,qFACX,UACH;AAAA,KACF;AAEJ;AAEO,SAAS,YAAY,EAAE,MAAM,GAA2B;AAC7D,SACE,4CAAC,QAAG,WAAU,4BACX,gBAAM,IAAI,CAAC,MAAM,MAChB,4CAAC,QAAY,kBAAJ,CAAS,CACnB,GACH;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/content-page.tsx"],"sourcesContent":["import { ReactNode } from 'react'\r\n\r\ninterface ContentPageProps {\r\n title: string\r\n subtitle?: string\r\n lastUpdated?: string\r\n children: ReactNode\r\n}\r\n\r\nexport function ContentPage({\r\n title,\r\n subtitle,\r\n lastUpdated,\r\n children,\r\n}: ContentPageProps) {\r\n return (\r\n <div className=\"bg-white dark:bg-gray-900\">\r\n <div className=\"mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8 lg:py-40\">\r\n <h2 className=\"text-4xl font-semibold tracking-tight text-gray-900 sm:text-5xl dark:text-white\">\r\n {title}\r\n </h2>\r\n {subtitle && (\r\n <p className=\"mt-4 text-lg text-gray-600 dark:text-gray-400\">\r\n {subtitle}\r\n </p>\r\n )}\r\n {lastUpdated && (\r\n <p className=\"mt-3 text-sm text-gray-400 dark:text-gray-500\">\r\n Last updated: {lastUpdated}\r\n </p>\r\n )}\r\n <dl className=\"mt-16 divide-y divide-gray-900/10 dark:divide-white/10\">\r\n {children}\r\n </dl>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\ninterface ContentSectionProps {\r\n title: string\r\n children: ReactNode\r\n}\r\n\r\nexport function ContentSection({ title, children }: ContentSectionProps) {\r\n return (\r\n <div className=\"py-8 first:pt-0 last:pb-0 lg:grid lg:grid-cols-12 lg:gap-8\">\r\n <dt className=\"text-base/7 font-semibold text-gray-900 lg:col-span-5 dark:text-white\">\r\n {title}\r\n </dt>\r\n <dd className=\"mt-4 space-y-4 text-base/7 text-gray-600 lg:col-span-7 lg:mt-0 dark:text-gray-400\">\r\n {children}\r\n </dd>\r\n </div>\r\n )\r\n}\r\n\r\nexport function ContentList({ items }: { items: ReactNode[] }) {\r\n return (\r\n <ul className=\"list-disc space-y-2 pl-5\">\r\n {items.map((item, i) => (\r\n <li key={i}>{item}</li>\r\n ))}\r\n </ul>\r\n )\r\n}\r\n"],"mappings":"AAkBQ,cASE,YATF;AATD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,SACE,oBAAC,SAAI,WAAU,6BACb,+BAAC,SAAI,WAAU,0DACb;AAAA,wBAAC,QAAG,WAAU,mFACX,iBACH;AAAA,IACC,YACC,oBAAC,OAAE,WAAU,iDACV,oBACH;AAAA,IAED,eACC,qBAAC,OAAE,WAAU,iDAAgD;AAAA;AAAA,MAC5C;AAAA,OACjB;AAAA,IAEF,oBAAC,QAAG,WAAU,0DACX,UACH;AAAA,KACF,GACF;AAEJ;AAOO,SAAS,eAAe,EAAE,OAAO,SAAS,GAAwB;AACvE,SACE,qBAAC,SAAI,WAAU,8DACb;AAAA,wBAAC,QAAG,WAAU,yEACX,iBACH;AAAA,IACA,oBAAC,QAAG,WAAU,qFACX,UACH;AAAA,KACF;AAEJ;AAEO,SAAS,YAAY,EAAE,MAAM,GAA2B;AAC7D,SACE,oBAAC,QAAG,WAAU,4BACX,gBAAM,IAAI,CAAC,MAAM,MAChB,oBAAC,QAAY,kBAAJ,CAAS,CACnB,GACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/content-page.tsx"],"sourcesContent":["import { ReactNode } from 'react'\n\ninterface ContentPageProps {\n title: string\n subtitle?: string\n lastUpdated?: string\n children: ReactNode\n}\n\nexport function ContentPage({\n title,\n subtitle,\n lastUpdated,\n children,\n}: ContentPageProps) {\n return (\n <div className=\"bg-white dark:bg-gray-900\">\n <div className=\"mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8 lg:py-40\">\n <h2 className=\"text-4xl font-semibold tracking-tight text-gray-900 sm:text-5xl dark:text-white\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"mt-4 text-lg text-gray-600 dark:text-gray-400\">\n {subtitle}\n </p>\n )}\n {lastUpdated && (\n <p className=\"mt-3 text-sm text-gray-400 dark:text-gray-500\">\n Last updated: {lastUpdated}\n </p>\n )}\n <dl className=\"mt-16 divide-y divide-gray-900/10 dark:divide-white/10\">\n {children}\n </dl>\n </div>\n </div>\n )\n}\n\ninterface ContentSectionProps {\n title: string\n children: ReactNode\n}\n\nexport function ContentSection({ title, children }: ContentSectionProps) {\n return (\n <div className=\"py-8 first:pt-0 last:pb-0 lg:grid lg:grid-cols-12 lg:gap-8\">\n <dt className=\"text-base/7 font-semibold text-gray-900 lg:col-span-5 dark:text-white\">\n {title}\n </dt>\n <dd className=\"mt-4 space-y-4 text-base/7 text-gray-600 lg:col-span-7 lg:mt-0 dark:text-gray-400\">\n {children}\n </dd>\n </div>\n )\n}\n\nexport function ContentList({ items }: { items: ReactNode[] }) {\n return (\n <ul className=\"list-disc space-y-2 pl-5\">\n {items.map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n )\n}\n"],"mappings":"AAkBQ,cASE,YATF;AATD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,SACE,oBAAC,SAAI,WAAU,6BACb,+BAAC,SAAI,WAAU,0DACb;AAAA,wBAAC,QAAG,WAAU,mFACX,iBACH;AAAA,IACC,YACC,oBAAC,OAAE,WAAU,iDACV,oBACH;AAAA,IAED,eACC,qBAAC,OAAE,WAAU,iDAAgD;AAAA;AAAA,MAC5C;AAAA,OACjB;AAAA,IAEF,oBAAC,QAAG,WAAU,0DACX,UACH;AAAA,KACF,GACF;AAEJ;AAOO,SAAS,eAAe,EAAE,OAAO,SAAS,GAAwB;AACvE,SACE,qBAAC,SAAI,WAAU,8DACb;AAAA,wBAAC,QAAG,WAAU,yEACX,iBACH;AAAA,IACA,oBAAC,QAAG,WAAU,qFACX,UACH;AAAA,KACF;AAEJ;AAEO,SAAS,YAAY,EAAE,MAAM,GAA2B;AAC7D,SACE,oBAAC,QAAG,WAAU,4BACX,gBAAM,IAAI,CAAC,MAAM,MAChB,oBAAC,QAAY,kBAAJ,CAAS,CACnB,GACH;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/feature.tsx"],"sourcesContent":["import {\r\n SparklesIcon,\r\n BookOpenIcon,\r\n UsersIcon,\r\n} from '@heroicons/react/20/solid'\r\n\r\nconst features = [\r\n {\r\n name: 'AI story assistant',\r\n description:\r\n 'Describe your scene or character and let the AI help you develop it further. Catch plot holes, suggest backstory details, and keep your narrative consistent across hundreds of entries without leaving your story bible.',\r\n href: '/about/features',\r\n icon: SparklesIcon,\r\n },\r\n {\r\n name: 'Wiki-style story bibles',\r\n description:\r\n 'Every character, location, and timeline entry is a living document. Add images, rich text, and cross-links so your world feels as interconnected as it really is. Search across everything instantly.',\r\n href: '/about/features',\r\n icon: BookOpenIcon,\r\n },\r\n {\r\n name: 'Characters, locations & timelines',\r\n description:\r\n 'Purpose-built entry types for the building blocks of every story. Track character arcs, map out locations with history and atmosphere, and sequence events on a visual timeline. Structured, but flexible.',\r\n href: '/about/features',\r\n icon: UsersIcon,\r\n },\r\n]\r\n\r\nexport const Feature = () => {\r\n return (\r\n <div\r\n className=\"relative bg-gray-900 bg-cover bg-center bg-no-repeat py-24 sm:py-32\"\r\n style={{ backgroundImage: \"url('/img/bg-footer.png')\" }}\r\n >\r\n <div className=\"absolute inset-0 bg-gray-900/80\" />\r\n <div className=\"relative mx-auto max-w-7xl px-6 lg:px-8\">\r\n <div className=\"mx-auto max-w-2xl lg:text-center\">\r\n <h2 className=\"text-primary-400 text-base font-semibold leading-7\">\r\n Built for storytellers\r\n </h2>\r\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-white sm:text-4xl\">\r\n Everything a writer needs to stay in the flow\r\n </p>\r\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\r\n Whether you write novels, screenplays, games, or fan fiction, Story\r\n Bible Ultimate adapts to your process. Start simple and grow your\r\n world as your story does.\r\n </p>\r\n </div>\r\n <div className=\"mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none\">\r\n <dl className=\"grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3\">\r\n {features.map((feature) => (\r\n <div key={feature.name} className=\"flex flex-col\">\r\n <dt className=\"flex items-center gap-x-3 text-base font-semibold leading-7 text-white\">\r\n <feature.icon\r\n className=\"text-primary-400 h-5 w-5 flex-none\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature.name}\r\n </dt>\r\n <dd className=\"mt-4 flex flex-auto flex-col text-base leading-7 text-gray-300\">\r\n <p className=\"flex-auto\">{feature.description}</p>\r\n <p className=\"mt-6\">\r\n <a\r\n href={feature.href}\r\n className=\"text-primary-400 text-sm font-semibold leading-6\"\r\n >\r\n Learn more <span aria-hidden=\"true\">→</span>\r\n </a>\r\n </p>\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCM;AApCN,mBAIO;AAEP,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEO,MAAM,UAAU,MAAM;AAC3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,iBAAiB,4BAA4B;AAAA,MAEtD;AAAA,oDAAC,SAAI,WAAU,mCAAkC;AAAA,QACjD,6CAAC,SAAI,WAAU,2CACb;AAAA,uDAAC,SAAI,WAAU,oCACb;AAAA,wDAAC,QAAG,WAAU,sDAAqD,oCAEnE;AAAA,YACA,4CAAC,OAAE,WAAU,iEAAgE,2DAE7E;AAAA,YACA,4CAAC,OAAE,WAAU,wCAAuC,6KAIpD;AAAA,aACF;AAAA,UACA,4CAAC,SAAI,WAAU,2DACb,sDAAC,QAAG,WAAU,2EACX,mBAAS,IAAI,CAAC,YACb,6CAAC,SAAuB,WAAU,iBAChC;AAAA,yDAAC,QAAG,WAAU,0EACZ;AAAA;AAAA,gBAAC,QAAQ;AAAA,gBAAR;AAAA,kBACC,WAAU;AAAA,kBACV,eAAY;AAAA;AAAA,cACd;AAAA,cACC,QAAQ;AAAA,eACX;AAAA,YACA,6CAAC,QAAG,WAAU,kEACZ;AAAA,0DAAC,OAAE,WAAU,aAAa,kBAAQ,aAAY;AAAA,cAC9C,4CAAC,OAAE,WAAU,QACX;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,QAAQ;AAAA,kBACd,WAAU;AAAA,kBACX;AAAA;AAAA,oBACY,4CAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,cACvC,GACF;AAAA,eACF;AAAA,eAlBQ,QAAQ,IAmBlB,CACD,GACH,GACF;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/feature.tsx"],"sourcesContent":["import {\n SparklesIcon,\n BookOpenIcon,\n UsersIcon,\n} from '@heroicons/react/20/solid'\n\nconst features = [\n {\n name: 'AI story assistant',\n description:\n 'Describe your scene or character and let the AI help you develop it further. Catch plot holes, suggest backstory details, and keep your narrative consistent across hundreds of entries without leaving your story bible.',\n href: '/about/features',\n icon: SparklesIcon,\n },\n {\n name: 'Wiki-style story bibles',\n description:\n 'Every character, location, and timeline entry is a living document. Add images, rich text, and cross-links so your world feels as interconnected as it really is. Search across everything instantly.',\n href: '/about/features',\n icon: BookOpenIcon,\n },\n {\n name: 'Characters, locations & timelines',\n description:\n 'Purpose-built entry types for the building blocks of every story. Track character arcs, map out locations with history and atmosphere, and sequence events on a visual timeline. Structured, but flexible.',\n href: '/about/features',\n icon: UsersIcon,\n },\n]\n\nexport const Feature = () => {\n return (\n <div\n className=\"relative bg-gray-900 bg-cover bg-center bg-no-repeat py-24 sm:py-32\"\n style={{ backgroundImage: \"url('/img/bg-footer.png')\" }}\n >\n <div className=\"absolute inset-0 bg-gray-900/80\" />\n <div className=\"relative mx-auto max-w-7xl px-6 lg:px-8\">\n <div className=\"mx-auto max-w-2xl lg:text-center\">\n <h2 className=\"text-primary-400 text-base font-semibold leading-7\">\n Built for storytellers\n </h2>\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-white sm:text-4xl\">\n Everything a writer needs to stay in the flow\n </p>\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\n Whether you write novels, screenplays, games, or fan fiction, Story\n Bible Ultimate adapts to your process. Start simple and grow your\n world as your story does.\n </p>\n </div>\n <div className=\"mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none\">\n <dl className=\"grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3\">\n {features.map((feature) => (\n <div key={feature.name} className=\"flex flex-col\">\n <dt className=\"flex items-center gap-x-3 text-base font-semibold leading-7 text-white\">\n <feature.icon\n className=\"text-primary-400 h-5 w-5 flex-none\"\n aria-hidden=\"true\"\n />\n {feature.name}\n </dt>\n <dd className=\"mt-4 flex flex-auto flex-col text-base leading-7 text-gray-300\">\n <p className=\"flex-auto\">{feature.description}</p>\n <p className=\"mt-6\">\n <a\n href={feature.href}\n className=\"text-primary-400 text-sm font-semibold leading-6\"\n >\n Learn more <span aria-hidden=\"true\">→</span>\n </a>\n </p>\n </dd>\n </div>\n ))}\n </dl>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCM;AApCN,mBAIO;AAEP,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEO,MAAM,UAAU,MAAM;AAC3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,iBAAiB,4BAA4B;AAAA,MAEtD;AAAA,oDAAC,SAAI,WAAU,mCAAkC;AAAA,QACjD,6CAAC,SAAI,WAAU,2CACb;AAAA,uDAAC,SAAI,WAAU,oCACb;AAAA,wDAAC,QAAG,WAAU,sDAAqD,oCAEnE;AAAA,YACA,4CAAC,OAAE,WAAU,iEAAgE,2DAE7E;AAAA,YACA,4CAAC,OAAE,WAAU,wCAAuC,6KAIpD;AAAA,aACF;AAAA,UACA,4CAAC,SAAI,WAAU,2DACb,sDAAC,QAAG,WAAU,2EACX,mBAAS,IAAI,CAAC,YACb,6CAAC,SAAuB,WAAU,iBAChC;AAAA,yDAAC,QAAG,WAAU,0EACZ;AAAA;AAAA,gBAAC,QAAQ;AAAA,gBAAR;AAAA,kBACC,WAAU;AAAA,kBACV,eAAY;AAAA;AAAA,cACd;AAAA,cACC,QAAQ;AAAA,eACX;AAAA,YACA,6CAAC,QAAG,WAAU,kEACZ;AAAA,0DAAC,OAAE,WAAU,aAAa,kBAAQ,aAAY;AAAA,cAC9C,4CAAC,OAAE,WAAU,QACX;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,QAAQ;AAAA,kBACd,WAAU;AAAA,kBACX;AAAA;AAAA,oBACY,4CAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,cACvC,GACF;AAAA,eACF;AAAA,eAlBQ,QAAQ,IAmBlB,CACD,GACH,GACF;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/feature.tsx"],"sourcesContent":["import {\r\n SparklesIcon,\r\n BookOpenIcon,\r\n UsersIcon,\r\n} from '@heroicons/react/20/solid'\r\n\r\nconst features = [\r\n {\r\n name: 'AI story assistant',\r\n description:\r\n 'Describe your scene or character and let the AI help you develop it further. Catch plot holes, suggest backstory details, and keep your narrative consistent across hundreds of entries without leaving your story bible.',\r\n href: '/about/features',\r\n icon: SparklesIcon,\r\n },\r\n {\r\n name: 'Wiki-style story bibles',\r\n description:\r\n 'Every character, location, and timeline entry is a living document. Add images, rich text, and cross-links so your world feels as interconnected as it really is. Search across everything instantly.',\r\n href: '/about/features',\r\n icon: BookOpenIcon,\r\n },\r\n {\r\n name: 'Characters, locations & timelines',\r\n description:\r\n 'Purpose-built entry types for the building blocks of every story. Track character arcs, map out locations with history and atmosphere, and sequence events on a visual timeline. Structured, but flexible.',\r\n href: '/about/features',\r\n icon: UsersIcon,\r\n },\r\n]\r\n\r\nexport const Feature = () => {\r\n return (\r\n <div\r\n className=\"relative bg-gray-900 bg-cover bg-center bg-no-repeat py-24 sm:py-32\"\r\n style={{ backgroundImage: \"url('/img/bg-footer.png')\" }}\r\n >\r\n <div className=\"absolute inset-0 bg-gray-900/80\" />\r\n <div className=\"relative mx-auto max-w-7xl px-6 lg:px-8\">\r\n <div className=\"mx-auto max-w-2xl lg:text-center\">\r\n <h2 className=\"text-primary-400 text-base font-semibold leading-7\">\r\n Built for storytellers\r\n </h2>\r\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-white sm:text-4xl\">\r\n Everything a writer needs to stay in the flow\r\n </p>\r\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\r\n Whether you write novels, screenplays, games, or fan fiction, Story\r\n Bible Ultimate adapts to your process. Start simple and grow your\r\n world as your story does.\r\n </p>\r\n </div>\r\n <div className=\"mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none\">\r\n <dl className=\"grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3\">\r\n {features.map((feature) => (\r\n <div key={feature.name} className=\"flex flex-col\">\r\n <dt className=\"flex items-center gap-x-3 text-base font-semibold leading-7 text-white\">\r\n <feature.icon\r\n className=\"text-primary-400 h-5 w-5 flex-none\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature.name}\r\n </dt>\r\n <dd className=\"mt-4 flex flex-auto flex-col text-base leading-7 text-gray-300\">\r\n <p className=\"flex-auto\">{feature.description}</p>\r\n <p className=\"mt-6\">\r\n <a\r\n href={feature.href}\r\n className=\"text-primary-400 text-sm font-semibold leading-6\"\r\n >\r\n Learn more <span aria-hidden=\"true\">→</span>\r\n </a>\r\n </p>\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"AAoCM,cAEE,YAFF;AApCN;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEO,MAAM,UAAU,MAAM;AAC3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,iBAAiB,4BAA4B;AAAA,MAEtD;AAAA,4BAAC,SAAI,WAAU,mCAAkC;AAAA,QACjD,qBAAC,SAAI,WAAU,2CACb;AAAA,+BAAC,SAAI,WAAU,oCACb;AAAA,gCAAC,QAAG,WAAU,sDAAqD,oCAEnE;AAAA,YACA,oBAAC,OAAE,WAAU,iEAAgE,2DAE7E;AAAA,YACA,oBAAC,OAAE,WAAU,wCAAuC,6KAIpD;AAAA,aACF;AAAA,UACA,oBAAC,SAAI,WAAU,2DACb,8BAAC,QAAG,WAAU,2EACX,mBAAS,IAAI,CAAC,YACb,qBAAC,SAAuB,WAAU,iBAChC;AAAA,iCAAC,QAAG,WAAU,0EACZ;AAAA;AAAA,gBAAC,QAAQ;AAAA,gBAAR;AAAA,kBACC,WAAU;AAAA,kBACV,eAAY;AAAA;AAAA,cACd;AAAA,cACC,QAAQ;AAAA,eACX;AAAA,YACA,qBAAC,QAAG,WAAU,kEACZ;AAAA,kCAAC,OAAE,WAAU,aAAa,kBAAQ,aAAY;AAAA,cAC9C,oBAAC,OAAE,WAAU,QACX;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,QAAQ;AAAA,kBACd,WAAU;AAAA,kBACX;AAAA;AAAA,oBACY,oBAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,cACvC,GACF;AAAA,eACF;AAAA,eAlBQ,QAAQ,IAmBlB,CACD,GACH,GACF;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/feature.tsx"],"sourcesContent":["import {\n SparklesIcon,\n BookOpenIcon,\n UsersIcon,\n} from '@heroicons/react/20/solid'\n\nconst features = [\n {\n name: 'AI story assistant',\n description:\n 'Describe your scene or character and let the AI help you develop it further. Catch plot holes, suggest backstory details, and keep your narrative consistent across hundreds of entries without leaving your story bible.',\n href: '/about/features',\n icon: SparklesIcon,\n },\n {\n name: 'Wiki-style story bibles',\n description:\n 'Every character, location, and timeline entry is a living document. Add images, rich text, and cross-links so your world feels as interconnected as it really is. Search across everything instantly.',\n href: '/about/features',\n icon: BookOpenIcon,\n },\n {\n name: 'Characters, locations & timelines',\n description:\n 'Purpose-built entry types for the building blocks of every story. Track character arcs, map out locations with history and atmosphere, and sequence events on a visual timeline. Structured, but flexible.',\n href: '/about/features',\n icon: UsersIcon,\n },\n]\n\nexport const Feature = () => {\n return (\n <div\n className=\"relative bg-gray-900 bg-cover bg-center bg-no-repeat py-24 sm:py-32\"\n style={{ backgroundImage: \"url('/img/bg-footer.png')\" }}\n >\n <div className=\"absolute inset-0 bg-gray-900/80\" />\n <div className=\"relative mx-auto max-w-7xl px-6 lg:px-8\">\n <div className=\"mx-auto max-w-2xl lg:text-center\">\n <h2 className=\"text-primary-400 text-base font-semibold leading-7\">\n Built for storytellers\n </h2>\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-white sm:text-4xl\">\n Everything a writer needs to stay in the flow\n </p>\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\n Whether you write novels, screenplays, games, or fan fiction, Story\n Bible Ultimate adapts to your process. Start simple and grow your\n world as your story does.\n </p>\n </div>\n <div className=\"mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none\">\n <dl className=\"grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3\">\n {features.map((feature) => (\n <div key={feature.name} className=\"flex flex-col\">\n <dt className=\"flex items-center gap-x-3 text-base font-semibold leading-7 text-white\">\n <feature.icon\n className=\"text-primary-400 h-5 w-5 flex-none\"\n aria-hidden=\"true\"\n />\n {feature.name}\n </dt>\n <dd className=\"mt-4 flex flex-auto flex-col text-base leading-7 text-gray-300\">\n <p className=\"flex-auto\">{feature.description}</p>\n <p className=\"mt-6\">\n <a\n href={feature.href}\n className=\"text-primary-400 text-sm font-semibold leading-6\"\n >\n Learn more <span aria-hidden=\"true\">→</span>\n </a>\n </p>\n </dd>\n </div>\n ))}\n </dl>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"AAoCM,cAEE,YAFF;AApCN;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,IACF,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEO,MAAM,UAAU,MAAM;AAC3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,iBAAiB,4BAA4B;AAAA,MAEtD;AAAA,4BAAC,SAAI,WAAU,mCAAkC;AAAA,QACjD,qBAAC,SAAI,WAAU,2CACb;AAAA,+BAAC,SAAI,WAAU,oCACb;AAAA,gCAAC,QAAG,WAAU,sDAAqD,oCAEnE;AAAA,YACA,oBAAC,OAAE,WAAU,iEAAgE,2DAE7E;AAAA,YACA,oBAAC,OAAE,WAAU,wCAAuC,6KAIpD;AAAA,aACF;AAAA,UACA,oBAAC,SAAI,WAAU,2DACb,8BAAC,QAAG,WAAU,2EACX,mBAAS,IAAI,CAAC,YACb,qBAAC,SAAuB,WAAU,iBAChC;AAAA,iCAAC,QAAG,WAAU,0EACZ;AAAA;AAAA,gBAAC,QAAQ;AAAA,gBAAR;AAAA,kBACC,WAAU;AAAA,kBACV,eAAY;AAAA;AAAA,cACd;AAAA,cACC,QAAQ;AAAA,eACX;AAAA,YACA,qBAAC,QAAG,WAAU,kEACZ;AAAA,kCAAC,OAAE,WAAU,aAAa,kBAAQ,aAAY;AAAA,cAC9C,oBAAC,OAAE,WAAU,QACX;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,QAAQ;AAAA,kBACd,WAAU;AAAA,kBACX;AAAA;AAAA,oBACY,oBAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,cACvC,GACF;AAAA,eACF;AAAA,eAlBQ,QAAQ,IAmBlB,CACD,GACH,GACF;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/featurelist.tsx"],"sourcesContent":["import { CheckIcon } from '@heroicons/react/20/solid'\r\nimport { Button } from '../ui/button'\r\nimport Link from 'next/link'\r\n\r\nconst features = [\r\n {\r\n name: 'Character profiles',\r\n description:\r\n 'Build detailed character sheets with backstory, personality traits, relationships, and image galleries.',\r\n },\r\n {\r\n name: 'Location builder',\r\n description:\r\n 'Map out your world with rich location entries covering history, atmosphere, and notable details.',\r\n },\r\n {\r\n name: 'Timeline tracking',\r\n description:\r\n 'Lay out events, plot points, and story arcs in chronological order so nothing slips through the cracks.',\r\n },\r\n {\r\n name: 'Wiki-style cross-linking',\r\n description:\r\n 'Link characters, locations, and events together just like a professional story wiki.',\r\n },\r\n {\r\n name: 'AI story assistant',\r\n description:\r\n 'Get AI-powered suggestions to spot plot holes, maintain character consistency, and deepen your world-building.',\r\n },\r\n {\r\n name: 'Image galleries',\r\n description:\r\n 'Attach reference art, mood boards, and photos to any character, location, or timeline entry.',\r\n },\r\n {\r\n name: 'Relationship mapping',\r\n description:\r\n 'Visualize how your characters connect — allies, rivals, family, and everything in between.',\r\n },\r\n {\r\n name: 'Public sharing',\r\n description:\r\n 'Share your story bible with collaborators or readers, or keep it completely private.',\r\n },\r\n]\r\n\r\nexport const FeatureList = () => {\r\n return (\r\n <div className=\"bg-white py-24 sm:py-32 dark:bg-gray-900\">\r\n <div className=\"mx-auto max-w-7xl px-6 lg:px-8\">\r\n <div className=\"mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-3\">\r\n <div>\r\n <h2 className=\"text-primary-600 dark:text-primary-400 text-base font-semibold leading-7\">\r\n Everything you need\r\n </h2>\r\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-white\">\r\n One place for your entire story world\r\n </p>\r\n <p className=\"mt-6 text-base leading-7 text-gray-600 dark:text-gray-400\">\r\n Stop juggling scattered notes, spreadsheets, and docs. Story Bible\r\n Ultimate gives every element of your story a home: organized,\r\n searchable, and always at your fingertips.\r\n </p>\r\n <div className=\"mt-6\">\r\n <Link href=\"/about/features\">\r\n <Button className=\"bg-primary\">See all features</Button>\r\n </Link>\r\n </div>\r\n </div>\r\n <dl className=\"col-span-2 grid grid-cols-1 gap-x-8 gap-y-10 text-base leading-7 text-gray-600 sm:grid-cols-2 lg:gap-y-16 dark:text-gray-400\">\r\n {features.map((feature) => (\r\n <div key={feature.name} className=\"relative pl-9\">\r\n <dt className=\"font-semibold text-gray-900 dark:text-white\">\r\n <CheckIcon\r\n className=\"text-primary-500 absolute left-0 top-1 h-5 w-5\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature.name}\r\n </dt>\r\n <dd className=\"mt-2\">{feature.description}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoDU;AApDV,mBAA0B;AAC1B,oBAAuB;AACvB,kBAAiB;AAEjB,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AACF;AAEO,MAAM,cAAc,MAAM;AAC/B,SACE,4CAAC,SAAI,WAAU,4CACb,sDAAC,SAAI,WAAU,kCACb,uDAAC,SAAI,WAAU,wGACb;AAAA,iDAAC,SACC;AAAA,kDAAC,QAAG,WAAU,4EAA2E,iCAEzF;AAAA,MACA,4CAAC,OAAE,WAAU,oFAAmF,mDAEhG;AAAA,MACA,4CAAC,OAAE,WAAU,6DAA4D,yLAIzE;AAAA,MACA,4CAAC,SAAI,WAAU,QACb,sDAAC,YAAAA,SAAA,EAAK,MAAK,mBACT,sDAAC,wBAAO,WAAU,cAAa,8BAAgB,GACjD,GACF;AAAA,OACF;AAAA,IACA,4CAAC,QAAG,WAAU,gIACX,mBAAS,IAAI,CAAC,YACb,6CAAC,SAAuB,WAAU,iBAChC;AAAA,mDAAC,QAAG,WAAU,+CACZ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA,QACC,QAAQ;AAAA,SACX;AAAA,MACA,4CAAC,QAAG,WAAU,QAAQ,kBAAQ,aAAY;AAAA,SARlC,QAAQ,IASlB,CACD,GACH;AAAA,KACF,GACF,GACF;AAEJ;","names":["Link"]}
1
+ {"version":3,"sources":["../../../components/tailwind/featurelist.tsx"],"sourcesContent":["import { CheckIcon } from '@heroicons/react/20/solid'\nimport { Button } from '../ui/button'\nimport Link from 'next/link'\n\nconst features = [\n {\n name: 'Character profiles',\n description:\n 'Build detailed character sheets with backstory, personality traits, relationships, and image galleries.',\n },\n {\n name: 'Location builder',\n description:\n 'Map out your world with rich location entries covering history, atmosphere, and notable details.',\n },\n {\n name: 'Timeline tracking',\n description:\n 'Lay out events, plot points, and story arcs in chronological order so nothing slips through the cracks.',\n },\n {\n name: 'Wiki-style cross-linking',\n description:\n 'Link characters, locations, and events together just like a professional story wiki.',\n },\n {\n name: 'AI story assistant',\n description:\n 'Get AI-powered suggestions to spot plot holes, maintain character consistency, and deepen your world-building.',\n },\n {\n name: 'Image galleries',\n description:\n 'Attach reference art, mood boards, and photos to any character, location, or timeline entry.',\n },\n {\n name: 'Relationship mapping',\n description:\n 'Visualize how your characters connect — allies, rivals, family, and everything in between.',\n },\n {\n name: 'Public sharing',\n description:\n 'Share your story bible with collaborators or readers, or keep it completely private.',\n },\n]\n\nexport const FeatureList = () => {\n return (\n <div className=\"bg-white py-24 sm:py-32 dark:bg-gray-900\">\n <div className=\"mx-auto max-w-7xl px-6 lg:px-8\">\n <div className=\"mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-3\">\n <div>\n <h2 className=\"text-primary-600 dark:text-primary-400 text-base font-semibold leading-7\">\n Everything you need\n </h2>\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-white\">\n One place for your entire story world\n </p>\n <p className=\"mt-6 text-base leading-7 text-gray-600 dark:text-gray-400\">\n Stop juggling scattered notes, spreadsheets, and docs. Story Bible\n Ultimate gives every element of your story a home: organized,\n searchable, and always at your fingertips.\n </p>\n <div className=\"mt-6\">\n <Link href=\"/about/features\">\n <Button className=\"bg-primary\">See all features</Button>\n </Link>\n </div>\n </div>\n <dl className=\"col-span-2 grid grid-cols-1 gap-x-8 gap-y-10 text-base leading-7 text-gray-600 sm:grid-cols-2 lg:gap-y-16 dark:text-gray-400\">\n {features.map((feature) => (\n <div key={feature.name} className=\"relative pl-9\">\n <dt className=\"font-semibold text-gray-900 dark:text-white\">\n <CheckIcon\n className=\"text-primary-500 absolute left-0 top-1 h-5 w-5\"\n aria-hidden=\"true\"\n />\n {feature.name}\n </dt>\n <dd className=\"mt-2\">{feature.description}</dd>\n </div>\n ))}\n </dl>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoDU;AApDV,mBAA0B;AAC1B,oBAAuB;AACvB,kBAAiB;AAEjB,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AACF;AAEO,MAAM,cAAc,MAAM;AAC/B,SACE,4CAAC,SAAI,WAAU,4CACb,sDAAC,SAAI,WAAU,kCACb,uDAAC,SAAI,WAAU,wGACb;AAAA,iDAAC,SACC;AAAA,kDAAC,QAAG,WAAU,4EAA2E,iCAEzF;AAAA,MACA,4CAAC,OAAE,WAAU,oFAAmF,mDAEhG;AAAA,MACA,4CAAC,OAAE,WAAU,6DAA4D,yLAIzE;AAAA,MACA,4CAAC,SAAI,WAAU,QACb,sDAAC,YAAAA,SAAA,EAAK,MAAK,mBACT,sDAAC,wBAAO,WAAU,cAAa,8BAAgB,GACjD,GACF;AAAA,OACF;AAAA,IACA,4CAAC,QAAG,WAAU,gIACX,mBAAS,IAAI,CAAC,YACb,6CAAC,SAAuB,WAAU,iBAChC;AAAA,mDAAC,QAAG,WAAU,+CACZ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA,QACC,QAAQ;AAAA,SACX;AAAA,MACA,4CAAC,QAAG,WAAU,QAAQ,kBAAQ,aAAY;AAAA,SARlC,QAAQ,IASlB,CACD,GACH;AAAA,KACF,GACF,GACF;AAEJ;","names":["Link"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/featurelist.tsx"],"sourcesContent":["import { CheckIcon } from '@heroicons/react/20/solid'\r\nimport { Button } from '../ui/button'\r\nimport Link from 'next/link'\r\n\r\nconst features = [\r\n {\r\n name: 'Character profiles',\r\n description:\r\n 'Build detailed character sheets with backstory, personality traits, relationships, and image galleries.',\r\n },\r\n {\r\n name: 'Location builder',\r\n description:\r\n 'Map out your world with rich location entries covering history, atmosphere, and notable details.',\r\n },\r\n {\r\n name: 'Timeline tracking',\r\n description:\r\n 'Lay out events, plot points, and story arcs in chronological order so nothing slips through the cracks.',\r\n },\r\n {\r\n name: 'Wiki-style cross-linking',\r\n description:\r\n 'Link characters, locations, and events together just like a professional story wiki.',\r\n },\r\n {\r\n name: 'AI story assistant',\r\n description:\r\n 'Get AI-powered suggestions to spot plot holes, maintain character consistency, and deepen your world-building.',\r\n },\r\n {\r\n name: 'Image galleries',\r\n description:\r\n 'Attach reference art, mood boards, and photos to any character, location, or timeline entry.',\r\n },\r\n {\r\n name: 'Relationship mapping',\r\n description:\r\n 'Visualize how your characters connect — allies, rivals, family, and everything in between.',\r\n },\r\n {\r\n name: 'Public sharing',\r\n description:\r\n 'Share your story bible with collaborators or readers, or keep it completely private.',\r\n },\r\n]\r\n\r\nexport const FeatureList = () => {\r\n return (\r\n <div className=\"bg-white py-24 sm:py-32 dark:bg-gray-900\">\r\n <div className=\"mx-auto max-w-7xl px-6 lg:px-8\">\r\n <div className=\"mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-3\">\r\n <div>\r\n <h2 className=\"text-primary-600 dark:text-primary-400 text-base font-semibold leading-7\">\r\n Everything you need\r\n </h2>\r\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-white\">\r\n One place for your entire story world\r\n </p>\r\n <p className=\"mt-6 text-base leading-7 text-gray-600 dark:text-gray-400\">\r\n Stop juggling scattered notes, spreadsheets, and docs. Story Bible\r\n Ultimate gives every element of your story a home: organized,\r\n searchable, and always at your fingertips.\r\n </p>\r\n <div className=\"mt-6\">\r\n <Link href=\"/about/features\">\r\n <Button className=\"bg-primary\">See all features</Button>\r\n </Link>\r\n </div>\r\n </div>\r\n <dl className=\"col-span-2 grid grid-cols-1 gap-x-8 gap-y-10 text-base leading-7 text-gray-600 sm:grid-cols-2 lg:gap-y-16 dark:text-gray-400\">\r\n {features.map((feature) => (\r\n <div key={feature.name} className=\"relative pl-9\">\r\n <dt className=\"font-semibold text-gray-900 dark:text-white\">\r\n <CheckIcon\r\n className=\"text-primary-500 absolute left-0 top-1 h-5 w-5\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature.name}\r\n </dt>\r\n <dd className=\"mt-2\">{feature.description}</dd>\r\n </div>\r\n ))}\r\n </dl>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"AAoDU,SACE,KADF;AApDV,SAAS,iBAAiB;AAC1B,SAAS,cAAc;AACvB,OAAO,UAAU;AAEjB,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AACF;AAEO,MAAM,cAAc,MAAM;AAC/B,SACE,oBAAC,SAAI,WAAU,4CACb,8BAAC,SAAI,WAAU,kCACb,+BAAC,SAAI,WAAU,wGACb;AAAA,yBAAC,SACC;AAAA,0BAAC,QAAG,WAAU,4EAA2E,iCAEzF;AAAA,MACA,oBAAC,OAAE,WAAU,oFAAmF,mDAEhG;AAAA,MACA,oBAAC,OAAE,WAAU,6DAA4D,yLAIzE;AAAA,MACA,oBAAC,SAAI,WAAU,QACb,8BAAC,QAAK,MAAK,mBACT,8BAAC,UAAO,WAAU,cAAa,8BAAgB,GACjD,GACF;AAAA,OACF;AAAA,IACA,oBAAC,QAAG,WAAU,gIACX,mBAAS,IAAI,CAAC,YACb,qBAAC,SAAuB,WAAU,iBAChC;AAAA,2BAAC,QAAG,WAAU,+CACZ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA,QACC,QAAQ;AAAA,SACX;AAAA,MACA,oBAAC,QAAG,WAAU,QAAQ,kBAAQ,aAAY;AAAA,SARlC,QAAQ,IASlB,CACD,GACH;AAAA,KACF,GACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/featurelist.tsx"],"sourcesContent":["import { CheckIcon } from '@heroicons/react/20/solid'\nimport { Button } from '../ui/button'\nimport Link from 'next/link'\n\nconst features = [\n {\n name: 'Character profiles',\n description:\n 'Build detailed character sheets with backstory, personality traits, relationships, and image galleries.',\n },\n {\n name: 'Location builder',\n description:\n 'Map out your world with rich location entries covering history, atmosphere, and notable details.',\n },\n {\n name: 'Timeline tracking',\n description:\n 'Lay out events, plot points, and story arcs in chronological order so nothing slips through the cracks.',\n },\n {\n name: 'Wiki-style cross-linking',\n description:\n 'Link characters, locations, and events together just like a professional story wiki.',\n },\n {\n name: 'AI story assistant',\n description:\n 'Get AI-powered suggestions to spot plot holes, maintain character consistency, and deepen your world-building.',\n },\n {\n name: 'Image galleries',\n description:\n 'Attach reference art, mood boards, and photos to any character, location, or timeline entry.',\n },\n {\n name: 'Relationship mapping',\n description:\n 'Visualize how your characters connect — allies, rivals, family, and everything in between.',\n },\n {\n name: 'Public sharing',\n description:\n 'Share your story bible with collaborators or readers, or keep it completely private.',\n },\n]\n\nexport const FeatureList = () => {\n return (\n <div className=\"bg-white py-24 sm:py-32 dark:bg-gray-900\">\n <div className=\"mx-auto max-w-7xl px-6 lg:px-8\">\n <div className=\"mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-3\">\n <div>\n <h2 className=\"text-primary-600 dark:text-primary-400 text-base font-semibold leading-7\">\n Everything you need\n </h2>\n <p className=\"mt-2 text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-white\">\n One place for your entire story world\n </p>\n <p className=\"mt-6 text-base leading-7 text-gray-600 dark:text-gray-400\">\n Stop juggling scattered notes, spreadsheets, and docs. Story Bible\n Ultimate gives every element of your story a home: organized,\n searchable, and always at your fingertips.\n </p>\n <div className=\"mt-6\">\n <Link href=\"/about/features\">\n <Button className=\"bg-primary\">See all features</Button>\n </Link>\n </div>\n </div>\n <dl className=\"col-span-2 grid grid-cols-1 gap-x-8 gap-y-10 text-base leading-7 text-gray-600 sm:grid-cols-2 lg:gap-y-16 dark:text-gray-400\">\n {features.map((feature) => (\n <div key={feature.name} className=\"relative pl-9\">\n <dt className=\"font-semibold text-gray-900 dark:text-white\">\n <CheckIcon\n className=\"text-primary-500 absolute left-0 top-1 h-5 w-5\"\n aria-hidden=\"true\"\n />\n {feature.name}\n </dt>\n <dd className=\"mt-2\">{feature.description}</dd>\n </div>\n ))}\n </dl>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"AAoDU,SACE,KADF;AApDV,SAAS,iBAAiB;AAC1B,SAAS,cAAc;AACvB,OAAO,UAAU;AAEjB,MAAM,WAAW;AAAA,EACf;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AACF;AAEO,MAAM,cAAc,MAAM;AAC/B,SACE,oBAAC,SAAI,WAAU,4CACb,8BAAC,SAAI,WAAU,kCACb,+BAAC,SAAI,WAAU,wGACb;AAAA,yBAAC,SACC;AAAA,0BAAC,QAAG,WAAU,4EAA2E,iCAEzF;AAAA,MACA,oBAAC,OAAE,WAAU,oFAAmF,mDAEhG;AAAA,MACA,oBAAC,OAAE,WAAU,6DAA4D,yLAIzE;AAAA,MACA,oBAAC,SAAI,WAAU,QACb,8BAAC,QAAK,MAAK,mBACT,8BAAC,UAAO,WAAU,cAAa,8BAAgB,GACjD,GACF;AAAA,OACF;AAAA,IACA,oBAAC,QAAG,WAAU,gIACX,mBAAS,IAAI,CAAC,YACb,qBAAC,SAAuB,WAAU,iBAChC;AAAA,2BAAC,QAAG,WAAU,+CACZ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA,QACC,QAAQ;AAAA,SACX;AAAA,MACA,oBAAC,QAAG,WAAU,QAAQ,kBAAQ,aAAY;AAAA,SARlC,QAAQ,IASlB,CACD,GACH;AAAA,KACF,GACF,GACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/footer.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { Copyright } from '../generic/copyright'\r\n\r\nconst navigation = {\r\n resources: [\r\n { name: 'Features', href: '/about/features' },\r\n { name: 'Pricing', href: '/about/pricing' },\r\n { name: 'Contact', href: '/about/contact' },\r\n ],\r\n legal: [{ name: 'Privacy', href: '/about/privacy' }],\r\n}\r\n\r\nexport const Footer = () => {\r\n const [copyRight, setCopyright] = useState('')\r\n useEffect(() => {\r\n setCopyright(`© ${new Date().getFullYear()}. All rights reserved.`)\r\n }, [])\r\n return (\r\n <footer className=\"bg-gray-900\" aria-labelledby=\"footer-heading\">\r\n <h2 id=\"footer-heading\" className=\"sr-only\">\r\n Footer\r\n </h2>\r\n <div className=\"mx-auto max-w-7xl px-6 pb-8 pt-20 sm:pt-24 lg:px-8 lg:pt-32\">\r\n <div className=\"xl:grid xl:grid-cols-3 xl:gap-8\">\r\n <div className=\"grid grid-cols-2 gap-8 xl:col-span-2\">\r\n <div>\r\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\r\n Resources\r\n </h3>\r\n <ul role=\"list\" className=\"mt-6 space-y-4\">\r\n {navigation.resources.map((item) => (\r\n <li key={item.name}>\r\n <a\r\n href={item.href}\r\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\r\n >\r\n {item.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n <div>\r\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\r\n Legal\r\n </h3>\r\n <ul role=\"list\" className=\"mt-6 space-y-4\">\r\n {navigation.legal.map((item) => (\r\n <li key={item.name}>\r\n <a\r\n href={item.href}\r\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\r\n >\r\n {item.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"mt-10 xl:mt-0\">\r\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\r\n Subscribe to our newsletter\r\n </h3>\r\n <p className=\"mt-2 text-sm leading-6 text-gray-300\">\r\n The latest news, articles, and resources, sent to your inbox\r\n weekly.\r\n </p>\r\n <form className=\"mt-6 sm:flex sm:max-w-md\">\r\n <label htmlFor=\"email-address\" className=\"sr-only\">\r\n Email address\r\n </label>\r\n <input\r\n type=\"email\"\r\n name=\"email-address\"\r\n id=\"email-address\"\r\n autoComplete=\"email\"\r\n required\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n placeholder=\"Enter your email\"\r\n />\r\n <div className=\"mt-4 sm:ml-4 sm:mt-0 sm:shrink-0\">\r\n <button\r\n type=\"submit\"\r\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-500 shadow-2xs flex w-full items-center justify-center rounded-md px-3 py-2 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\r\n >\r\n Subscribe\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div className=\"mt-16 border-t border-white/10 pt-8 sm:mt-20 lg:mt-24\">\r\n <Copyright copyRight={copyRight} />\r\n </div>\r\n </div>\r\n </footer>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBM;AAnBN,mBAAoC;AACpC,uBAA0B;AAE1B,MAAM,aAAa;AAAA,EACjB,WAAW;AAAA,IACT,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,IAC5C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,IAC1C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,EAC5C;AAAA,EACA,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,iBAAiB,CAAC;AACrD;AAEO,MAAM,SAAS,MAAM;AAC1B,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,EAAE;AAC7C,8BAAU,MAAM;AACd,iBAAa,SAAK,oBAAI,KAAK,GAAE,YAAY,CAAC,wBAAwB;AAAA,EACpE,GAAG,CAAC,CAAC;AACL,SACE,6CAAC,YAAO,WAAU,eAAc,mBAAgB,kBAC9C;AAAA,gDAAC,QAAG,IAAG,kBAAiB,WAAU,WAAU,oBAE5C;AAAA,IACA,6CAAC,SAAI,WAAU,+DACb;AAAA,mDAAC,SAAI,WAAU,mCACb;AAAA,qDAAC,SAAI,WAAU,wCACb;AAAA,uDAAC,SACC;AAAA,wDAAC,QAAG,WAAU,8CAA6C,uBAE3D;AAAA,YACA,4CAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,UAAU,IAAI,CAAC,SACzB,4CAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,UACA,6CAAC,SACC;AAAA,wDAAC,QAAG,WAAU,8CAA6C,mBAE3D;AAAA,YACA,4CAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,MAAM,IAAI,CAAC,SACrB,4CAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,WACF;AAAA,QACA,6CAAC,SAAI,WAAU,iBACb;AAAA,sDAAC,QAAG,WAAU,8CAA6C,yCAE3D;AAAA,UACA,4CAAC,OAAE,WAAU,wCAAuC,kFAGpD;AAAA,UACA,6CAAC,UAAK,WAAU,4BACd;AAAA,wDAAC,WAAM,SAAQ,iBAAgB,WAAU,WAAU,2BAEnD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,IAAG;AAAA,gBACH,cAAa;AAAA,gBACb,UAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,aAAY;AAAA;AAAA,YACd;AAAA,YACA,4CAAC,SAAI,WAAU,oCACb;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACX;AAAA;AAAA,YAED,GACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,4CAAC,SAAI,WAAU,yDACb,sDAAC,8BAAU,WAAsB,GACnC;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/footer.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { Copyright } from '../generic/copyright'\n\nconst navigation = {\n resources: [\n { name: 'Features', href: '/about/features' },\n { name: 'Pricing', href: '/about/pricing' },\n { name: 'Contact', href: '/about/contact' },\n ],\n legal: [{ name: 'Privacy', href: '/about/privacy' }],\n}\n\nexport const Footer = () => {\n const [copyRight, setCopyright] = useState('')\n useEffect(() => {\n setCopyright(`© ${new Date().getFullYear()}. All rights reserved.`)\n }, [])\n return (\n <footer className=\"bg-gray-900\" aria-labelledby=\"footer-heading\">\n <h2 id=\"footer-heading\" className=\"sr-only\">\n Footer\n </h2>\n <div className=\"mx-auto max-w-7xl px-6 pb-8 pt-20 sm:pt-24 lg:px-8 lg:pt-32\">\n <div className=\"xl:grid xl:grid-cols-3 xl:gap-8\">\n <div className=\"grid grid-cols-2 gap-8 xl:col-span-2\">\n <div>\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\n Resources\n </h3>\n <ul role=\"list\" className=\"mt-6 space-y-4\">\n {navigation.resources.map((item) => (\n <li key={item.name}>\n <a\n href={item.href}\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\n >\n {item.name}\n </a>\n </li>\n ))}\n </ul>\n </div>\n <div>\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\n Legal\n </h3>\n <ul role=\"list\" className=\"mt-6 space-y-4\">\n {navigation.legal.map((item) => (\n <li key={item.name}>\n <a\n href={item.href}\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\n >\n {item.name}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n <div className=\"mt-10 xl:mt-0\">\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\n Subscribe to our newsletter\n </h3>\n <p className=\"mt-2 text-sm leading-6 text-gray-300\">\n The latest news, articles, and resources, sent to your inbox\n weekly.\n </p>\n <form className=\"mt-6 sm:flex sm:max-w-md\">\n <label htmlFor=\"email-address\" className=\"sr-only\">\n Email address\n </label>\n <input\n type=\"email\"\n name=\"email-address\"\n id=\"email-address\"\n autoComplete=\"email\"\n required\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\n placeholder=\"Enter your email\"\n />\n <div className=\"mt-4 sm:ml-4 sm:mt-0 sm:shrink-0\">\n <button\n type=\"submit\"\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-500 shadow-2xs flex w-full items-center justify-center rounded-md px-3 py-2 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\n >\n Subscribe\n </button>\n </div>\n </form>\n </div>\n </div>\n <div className=\"mt-16 border-t border-white/10 pt-8 sm:mt-20 lg:mt-24\">\n <Copyright copyRight={copyRight} />\n </div>\n </div>\n </footer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBM;AAnBN,mBAAoC;AACpC,uBAA0B;AAE1B,MAAM,aAAa;AAAA,EACjB,WAAW;AAAA,IACT,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,IAC5C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,IAC1C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,EAC5C;AAAA,EACA,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,iBAAiB,CAAC;AACrD;AAEO,MAAM,SAAS,MAAM;AAC1B,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,EAAE;AAC7C,8BAAU,MAAM;AACd,iBAAa,SAAK,oBAAI,KAAK,GAAE,YAAY,CAAC,wBAAwB;AAAA,EACpE,GAAG,CAAC,CAAC;AACL,SACE,6CAAC,YAAO,WAAU,eAAc,mBAAgB,kBAC9C;AAAA,gDAAC,QAAG,IAAG,kBAAiB,WAAU,WAAU,oBAE5C;AAAA,IACA,6CAAC,SAAI,WAAU,+DACb;AAAA,mDAAC,SAAI,WAAU,mCACb;AAAA,qDAAC,SAAI,WAAU,wCACb;AAAA,uDAAC,SACC;AAAA,wDAAC,QAAG,WAAU,8CAA6C,uBAE3D;AAAA,YACA,4CAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,UAAU,IAAI,CAAC,SACzB,4CAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,UACA,6CAAC,SACC;AAAA,wDAAC,QAAG,WAAU,8CAA6C,mBAE3D;AAAA,YACA,4CAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,MAAM,IAAI,CAAC,SACrB,4CAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,WACF;AAAA,QACA,6CAAC,SAAI,WAAU,iBACb;AAAA,sDAAC,QAAG,WAAU,8CAA6C,yCAE3D;AAAA,UACA,4CAAC,OAAE,WAAU,wCAAuC,kFAGpD;AAAA,UACA,6CAAC,UAAK,WAAU,4BACd;AAAA,wDAAC,WAAM,SAAQ,iBAAgB,WAAU,WAAU,2BAEnD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,IAAG;AAAA,gBACH,cAAa;AAAA,gBACb,UAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,aAAY;AAAA;AAAA,YACd;AAAA,YACA,4CAAC,SAAI,WAAU,oCACb;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACX;AAAA;AAAA,YAED,GACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,4CAAC,SAAI,WAAU,yDACb,sDAAC,8BAAU,WAAsB,GACnC;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/footer.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { Copyright } from '../generic/copyright'\r\n\r\nconst navigation = {\r\n resources: [\r\n { name: 'Features', href: '/about/features' },\r\n { name: 'Pricing', href: '/about/pricing' },\r\n { name: 'Contact', href: '/about/contact' },\r\n ],\r\n legal: [{ name: 'Privacy', href: '/about/privacy' }],\r\n}\r\n\r\nexport const Footer = () => {\r\n const [copyRight, setCopyright] = useState('')\r\n useEffect(() => {\r\n setCopyright(`© ${new Date().getFullYear()}. All rights reserved.`)\r\n }, [])\r\n return (\r\n <footer className=\"bg-gray-900\" aria-labelledby=\"footer-heading\">\r\n <h2 id=\"footer-heading\" className=\"sr-only\">\r\n Footer\r\n </h2>\r\n <div className=\"mx-auto max-w-7xl px-6 pb-8 pt-20 sm:pt-24 lg:px-8 lg:pt-32\">\r\n <div className=\"xl:grid xl:grid-cols-3 xl:gap-8\">\r\n <div className=\"grid grid-cols-2 gap-8 xl:col-span-2\">\r\n <div>\r\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\r\n Resources\r\n </h3>\r\n <ul role=\"list\" className=\"mt-6 space-y-4\">\r\n {navigation.resources.map((item) => (\r\n <li key={item.name}>\r\n <a\r\n href={item.href}\r\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\r\n >\r\n {item.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n <div>\r\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\r\n Legal\r\n </h3>\r\n <ul role=\"list\" className=\"mt-6 space-y-4\">\r\n {navigation.legal.map((item) => (\r\n <li key={item.name}>\r\n <a\r\n href={item.href}\r\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\r\n >\r\n {item.name}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"mt-10 xl:mt-0\">\r\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\r\n Subscribe to our newsletter\r\n </h3>\r\n <p className=\"mt-2 text-sm leading-6 text-gray-300\">\r\n The latest news, articles, and resources, sent to your inbox\r\n weekly.\r\n </p>\r\n <form className=\"mt-6 sm:flex sm:max-w-md\">\r\n <label htmlFor=\"email-address\" className=\"sr-only\">\r\n Email address\r\n </label>\r\n <input\r\n type=\"email\"\r\n name=\"email-address\"\r\n id=\"email-address\"\r\n autoComplete=\"email\"\r\n required\r\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\r\n placeholder=\"Enter your email\"\r\n />\r\n <div className=\"mt-4 sm:ml-4 sm:mt-0 sm:shrink-0\">\r\n <button\r\n type=\"submit\"\r\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-500 shadow-2xs flex w-full items-center justify-center rounded-md px-3 py-2 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\r\n >\r\n Subscribe\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div className=\"mt-16 border-t border-white/10 pt-8 sm:mt-20 lg:mt-24\">\r\n <Copyright copyRight={copyRight} />\r\n </div>\r\n </div>\r\n </footer>\r\n )\r\n}\r\n"],"mappings":"AAmBM,cAMM,YANN;AAnBN,SAAS,WAAW,gBAAgB;AACpC,SAAS,iBAAiB;AAE1B,MAAM,aAAa;AAAA,EACjB,WAAW;AAAA,IACT,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,IAC5C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,IAC1C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,EAC5C;AAAA,EACA,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,iBAAiB,CAAC;AACrD;AAEO,MAAM,SAAS,MAAM;AAC1B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,EAAE;AAC7C,YAAU,MAAM;AACd,iBAAa,SAAK,oBAAI,KAAK,GAAE,YAAY,CAAC,wBAAwB;AAAA,EACpE,GAAG,CAAC,CAAC;AACL,SACE,qBAAC,YAAO,WAAU,eAAc,mBAAgB,kBAC9C;AAAA,wBAAC,QAAG,IAAG,kBAAiB,WAAU,WAAU,oBAE5C;AAAA,IACA,qBAAC,SAAI,WAAU,+DACb;AAAA,2BAAC,SAAI,WAAU,mCACb;AAAA,6BAAC,SAAI,WAAU,wCACb;AAAA,+BAAC,SACC;AAAA,gCAAC,QAAG,WAAU,8CAA6C,uBAE3D;AAAA,YACA,oBAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,UAAU,IAAI,CAAC,SACzB,oBAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,UACA,qBAAC,SACC;AAAA,gCAAC,QAAG,WAAU,8CAA6C,mBAE3D;AAAA,YACA,oBAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,MAAM,IAAI,CAAC,SACrB,oBAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,WACF;AAAA,QACA,qBAAC,SAAI,WAAU,iBACb;AAAA,8BAAC,QAAG,WAAU,8CAA6C,yCAE3D;AAAA,UACA,oBAAC,OAAE,WAAU,wCAAuC,kFAGpD;AAAA,UACA,qBAAC,UAAK,WAAU,4BACd;AAAA,gCAAC,WAAM,SAAQ,iBAAgB,WAAU,WAAU,2BAEnD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,IAAG;AAAA,gBACH,cAAa;AAAA,gBACb,UAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,aAAY;AAAA;AAAA,YACd;AAAA,YACA,oBAAC,SAAI,WAAU,oCACb;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACX;AAAA;AAAA,YAED,GACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,oBAAC,SAAI,WAAU,yDACb,8BAAC,aAAU,WAAsB,GACnC;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/footer.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { Copyright } from '../generic/copyright'\n\nconst navigation = {\n resources: [\n { name: 'Features', href: '/about/features' },\n { name: 'Pricing', href: '/about/pricing' },\n { name: 'Contact', href: '/about/contact' },\n ],\n legal: [{ name: 'Privacy', href: '/about/privacy' }],\n}\n\nexport const Footer = () => {\n const [copyRight, setCopyright] = useState('')\n useEffect(() => {\n setCopyright(`© ${new Date().getFullYear()}. All rights reserved.`)\n }, [])\n return (\n <footer className=\"bg-gray-900\" aria-labelledby=\"footer-heading\">\n <h2 id=\"footer-heading\" className=\"sr-only\">\n Footer\n </h2>\n <div className=\"mx-auto max-w-7xl px-6 pb-8 pt-20 sm:pt-24 lg:px-8 lg:pt-32\">\n <div className=\"xl:grid xl:grid-cols-3 xl:gap-8\">\n <div className=\"grid grid-cols-2 gap-8 xl:col-span-2\">\n <div>\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\n Resources\n </h3>\n <ul role=\"list\" className=\"mt-6 space-y-4\">\n {navigation.resources.map((item) => (\n <li key={item.name}>\n <a\n href={item.href}\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\n >\n {item.name}\n </a>\n </li>\n ))}\n </ul>\n </div>\n <div>\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\n Legal\n </h3>\n <ul role=\"list\" className=\"mt-6 space-y-4\">\n {navigation.legal.map((item) => (\n <li key={item.name}>\n <a\n href={item.href}\n className=\"text-sm leading-6 text-gray-300 hover:text-white\"\n >\n {item.name}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n <div className=\"mt-10 xl:mt-0\">\n <h3 className=\"text-sm font-semibold leading-6 text-white\">\n Subscribe to our newsletter\n </h3>\n <p className=\"mt-2 text-sm leading-6 text-gray-300\">\n The latest news, articles, and resources, sent to your inbox\n weekly.\n </p>\n <form className=\"mt-6 sm:flex sm:max-w-md\">\n <label htmlFor=\"email-address\" className=\"sr-only\">\n Email address\n </label>\n <input\n type=\"email\"\n name=\"email-address\"\n id=\"email-address\"\n autoComplete=\"email\"\n required\n className=\"focus:ring-primary-500 shadow-2xs w-full min-w-0 appearance-none rounded-md border-0 bg-white/5 px-3 py-1.5 text-base text-white ring-1 ring-inset ring-white/10 placeholder:text-gray-500 focus:ring-2 focus:ring-inset sm:w-64 sm:text-sm sm:leading-6 xl:w-full\"\n placeholder=\"Enter your email\"\n />\n <div className=\"mt-4 sm:ml-4 sm:mt-0 sm:shrink-0\">\n <button\n type=\"submit\"\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-500 shadow-2xs flex w-full items-center justify-center rounded-md px-3 py-2 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\n >\n Subscribe\n </button>\n </div>\n </form>\n </div>\n </div>\n <div className=\"mt-16 border-t border-white/10 pt-8 sm:mt-20 lg:mt-24\">\n <Copyright copyRight={copyRight} />\n </div>\n </div>\n </footer>\n )\n}\n"],"mappings":"AAmBM,cAMM,YANN;AAnBN,SAAS,WAAW,gBAAgB;AACpC,SAAS,iBAAiB;AAE1B,MAAM,aAAa;AAAA,EACjB,WAAW;AAAA,IACT,EAAE,MAAM,YAAY,MAAM,kBAAkB;AAAA,IAC5C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,IAC1C,EAAE,MAAM,WAAW,MAAM,iBAAiB;AAAA,EAC5C;AAAA,EACA,OAAO,CAAC,EAAE,MAAM,WAAW,MAAM,iBAAiB,CAAC;AACrD;AAEO,MAAM,SAAS,MAAM;AAC1B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,EAAE;AAC7C,YAAU,MAAM;AACd,iBAAa,SAAK,oBAAI,KAAK,GAAE,YAAY,CAAC,wBAAwB;AAAA,EACpE,GAAG,CAAC,CAAC;AACL,SACE,qBAAC,YAAO,WAAU,eAAc,mBAAgB,kBAC9C;AAAA,wBAAC,QAAG,IAAG,kBAAiB,WAAU,WAAU,oBAE5C;AAAA,IACA,qBAAC,SAAI,WAAU,+DACb;AAAA,2BAAC,SAAI,WAAU,mCACb;AAAA,6BAAC,SAAI,WAAU,wCACb;AAAA,+BAAC,SACC;AAAA,gCAAC,QAAG,WAAU,8CAA6C,uBAE3D;AAAA,YACA,oBAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,UAAU,IAAI,CAAC,SACzB,oBAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,UACA,qBAAC,SACC;AAAA,gCAAC,QAAG,WAAU,8CAA6C,mBAE3D;AAAA,YACA,oBAAC,QAAG,MAAK,QAAO,WAAU,kBACvB,qBAAW,MAAM,IAAI,CAAC,SACrB,oBAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBAET,eAAK;AAAA;AAAA,YACR,KANO,KAAK,IAOd,CACD,GACH;AAAA,aACF;AAAA,WACF;AAAA,QACA,qBAAC,SAAI,WAAU,iBACb;AAAA,8BAAC,QAAG,WAAU,8CAA6C,yCAE3D;AAAA,UACA,oBAAC,OAAE,WAAU,wCAAuC,kFAGpD;AAAA,UACA,qBAAC,UAAK,WAAU,4BACd;AAAA,gCAAC,WAAM,SAAQ,iBAAgB,WAAU,WAAU,2BAEnD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL,IAAG;AAAA,gBACH,cAAa;AAAA,gBACb,UAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,aAAY;AAAA;AAAA,YACd;AAAA,YACA,oBAAC,SAAI,WAAU,oCACb;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACX;AAAA;AAAA,YAED,GACF;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,MACA,oBAAC,SAAI,WAAU,yDACb,8BAAC,aAAU,WAAsB,GACnC;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/hero.tsx"],"sourcesContent":["'use client'\r\n\r\nexport interface HeroProps {\r\n title: string\r\n description: string\r\n buttonText: string\r\n buttonLink: string\r\n altButtonText: string\r\n altButtonLink: string\r\n image?: string\r\n imageAlt?: string\r\n navigation: {\r\n name: string\r\n href: string\r\n }[]\r\n heroButtonText: string\r\n heroButtonLink: string\r\n heroButtonAltText: string\r\n companyName: string\r\n companyLink: string\r\n companyLogo: React.ReactElement\r\n}\r\n\r\nexport const Hero = ({\r\n title,\r\n description,\r\n buttonText,\r\n buttonLink,\r\n altButtonText,\r\n altButtonLink,\r\n heroButtonText,\r\n heroButtonLink,\r\n heroButtonAltText,\r\n}: HeroProps) => {\r\n return (\r\n <div className=\"bg-gray-900\">\r\n <div className=\"relative isolate overflow-hidden pt-14\">\r\n <img\r\n src=\"img/hero-left-dark.png\"\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n className=\"absolute inset-0 -z-10 h-full w-full object-cover\"\r\n />\r\n <div\r\n className=\"absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%-11rem)] w-[36.125rem] -translate-x-1/2 rotate-[30deg] from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n <div className=\"mx-auto max-w-2xl py-32 sm:py-48 lg:py-56\">\r\n <div className=\"hidden sm:mb-8 sm:flex sm:justify-center\">\r\n <div className=\"relative rounded-full px-3 py-1 text-sm leading-6 text-gray-400 ring-1 ring-white/10 hover:ring-white/20\">\r\n {heroButtonText}\r\n <a\r\n href={heroButtonLink}\r\n className=\"ml-2 font-semibold text-white\"\r\n >\r\n <span className=\"absolute inset-0\" aria-hidden=\"true\" />\r\n {heroButtonAltText} <span aria-hidden=\"true\">&rarr;</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div className=\"text-center\">\r\n <h1 className=\"text-4xl font-bold tracking-tight text-white sm:text-6xl dark:text-white\">\r\n {title}\r\n </h1>\r\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\r\n {description}\r\n </p>\r\n <div className=\"mt-10 flex items-center justify-center gap-x-6\">\r\n <a\r\n href={buttonLink}\r\n data-tour=\"hero-signup\"\r\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-400 shadow-2xs rounded-md px-3.5 py-2.5 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\r\n >\r\n {buttonText}\r\n </a>\r\n <a\r\n href={altButtonLink}\r\n className=\"text-sm font-semibold leading-6 text-white\"\r\n >\r\n {altButtonText} <span aria-hidden=\"true\">→</span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className=\"absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%+3rem)] w-[36.125rem] -translate-x-1/2 from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCQ;AAdD,MAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiB;AACf,SACE,4CAAC,SAAI,WAAU,eACb,uDAAC,SAAI,WAAU,0CACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAI;AAAA,QACJ,eAAY;AAAA,QACZ,WAAU;AAAA;AAAA,IACZ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,6CAAC,SAAI,WAAU,6CACb;AAAA,kDAAC,SAAI,WAAU,4CACb,uDAAC,SAAI,WAAU,4GACZ;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YAEV;AAAA,0DAAC,UAAK,WAAU,oBAAmB,eAAY,QAAO;AAAA,cACrD;AAAA,cAAkB;AAAA,cAAC,4CAAC,UAAK,eAAY,QAAO,oBAAM;AAAA;AAAA;AAAA,QACrD;AAAA,SACF,GACF;AAAA,MACA,6CAAC,SAAI,WAAU,eACb;AAAA,oDAAC,QAAG,WAAU,4EACX,iBACH;AAAA,QACA,4CAAC,OAAE,WAAU,wCACV,uBACH;AAAA,QACA,6CAAC,SAAI,WAAU,kDACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,aAAU;AAAA,cACV,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cAET;AAAA;AAAA,gBAAc;AAAA,gBAAC,4CAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,UAC5C;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/hero.tsx"],"sourcesContent":["'use client'\n\nexport interface HeroProps {\n title: string\n description: string\n buttonText: string\n buttonLink: string\n altButtonText: string\n altButtonLink: string\n image?: string\n imageAlt?: string\n navigation: {\n name: string\n href: string\n }[]\n heroButtonText: string\n heroButtonLink: string\n heroButtonAltText: string\n companyName: string\n companyLink: string\n companyLogo: React.ReactElement\n}\n\nexport const Hero = ({\n title,\n description,\n buttonText,\n buttonLink,\n altButtonText,\n altButtonLink,\n heroButtonText,\n heroButtonLink,\n heroButtonAltText,\n}: HeroProps) => {\n return (\n <div className=\"bg-gray-900\">\n <div className=\"relative isolate overflow-hidden pt-14\">\n <img\n src=\"img/hero-left-dark.png\"\n alt=\"\"\n aria-hidden=\"true\"\n className=\"absolute inset-0 -z-10 h-full w-full object-cover\"\n />\n <div\n className=\"absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80\"\n aria-hidden=\"true\"\n >\n <div\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%-11rem)] w-[36.125rem] -translate-x-1/2 rotate-[30deg] from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n <div className=\"mx-auto max-w-2xl py-32 sm:py-48 lg:py-56\">\n <div className=\"hidden sm:mb-8 sm:flex sm:justify-center\">\n <div className=\"relative rounded-full px-3 py-1 text-sm leading-6 text-gray-400 ring-1 ring-white/10 hover:ring-white/20\">\n {heroButtonText}\n <a\n href={heroButtonLink}\n className=\"ml-2 font-semibold text-white\"\n >\n <span className=\"absolute inset-0\" aria-hidden=\"true\" />\n {heroButtonAltText} <span aria-hidden=\"true\">&rarr;</span>\n </a>\n </div>\n </div>\n <div className=\"text-center\">\n <h1 className=\"text-4xl font-bold tracking-tight text-white sm:text-6xl dark:text-white\">\n {title}\n </h1>\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\n {description}\n </p>\n <div className=\"mt-10 flex items-center justify-center gap-x-6\">\n <a\n href={buttonLink}\n data-tour=\"hero-signup\"\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-400 shadow-2xs rounded-md px-3.5 py-2.5 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\n >\n {buttonText}\n </a>\n <a\n href={altButtonLink}\n className=\"text-sm font-semibold leading-6 text-white\"\n >\n {altButtonText} <span aria-hidden=\"true\">→</span>\n </a>\n </div>\n </div>\n </div>\n <div\n className=\"absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]\"\n aria-hidden=\"true\"\n >\n <div\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%+3rem)] w-[36.125rem] -translate-x-1/2 from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCQ;AAdD,MAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiB;AACf,SACE,4CAAC,SAAI,WAAU,eACb,uDAAC,SAAI,WAAU,0CACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAI;AAAA,QACJ,eAAY;AAAA,QACZ,WAAU;AAAA;AAAA,IACZ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,6CAAC,SAAI,WAAU,6CACb;AAAA,kDAAC,SAAI,WAAU,4CACb,uDAAC,SAAI,WAAU,4GACZ;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YAEV;AAAA,0DAAC,UAAK,WAAU,oBAAmB,eAAY,QAAO;AAAA,cACrD;AAAA,cAAkB;AAAA,cAAC,4CAAC,UAAK,eAAY,QAAO,oBAAM;AAAA;AAAA;AAAA,QACrD;AAAA,SACF,GACF;AAAA,MACA,6CAAC,SAAI,WAAU,eACb;AAAA,oDAAC,QAAG,WAAU,4EACX,iBACH;AAAA,QACA,4CAAC,OAAE,WAAU,wCACV,uBACH;AAAA,QACA,6CAAC,SAAI,WAAU,kDACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,aAAU;AAAA,cACV,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cAET;AAAA;AAAA,gBAAc;AAAA,gBAAC,4CAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,UAC5C;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/hero.tsx"],"sourcesContent":["'use client'\r\n\r\nexport interface HeroProps {\r\n title: string\r\n description: string\r\n buttonText: string\r\n buttonLink: string\r\n altButtonText: string\r\n altButtonLink: string\r\n image?: string\r\n imageAlt?: string\r\n navigation: {\r\n name: string\r\n href: string\r\n }[]\r\n heroButtonText: string\r\n heroButtonLink: string\r\n heroButtonAltText: string\r\n companyName: string\r\n companyLink: string\r\n companyLogo: React.ReactElement\r\n}\r\n\r\nexport const Hero = ({\r\n title,\r\n description,\r\n buttonText,\r\n buttonLink,\r\n altButtonText,\r\n altButtonLink,\r\n heroButtonText,\r\n heroButtonLink,\r\n heroButtonAltText,\r\n}: HeroProps) => {\r\n return (\r\n <div className=\"bg-gray-900\">\r\n <div className=\"relative isolate overflow-hidden pt-14\">\r\n <img\r\n src=\"img/hero-left-dark.png\"\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n className=\"absolute inset-0 -z-10 h-full w-full object-cover\"\r\n />\r\n <div\r\n className=\"absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%-11rem)] w-[36.125rem] -translate-x-1/2 rotate-[30deg] from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n <div className=\"mx-auto max-w-2xl py-32 sm:py-48 lg:py-56\">\r\n <div className=\"hidden sm:mb-8 sm:flex sm:justify-center\">\r\n <div className=\"relative rounded-full px-3 py-1 text-sm leading-6 text-gray-400 ring-1 ring-white/10 hover:ring-white/20\">\r\n {heroButtonText}\r\n <a\r\n href={heroButtonLink}\r\n className=\"ml-2 font-semibold text-white\"\r\n >\r\n <span className=\"absolute inset-0\" aria-hidden=\"true\" />\r\n {heroButtonAltText} <span aria-hidden=\"true\">&rarr;</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div className=\"text-center\">\r\n <h1 className=\"text-4xl font-bold tracking-tight text-white sm:text-6xl dark:text-white\">\r\n {title}\r\n </h1>\r\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\r\n {description}\r\n </p>\r\n <div className=\"mt-10 flex items-center justify-center gap-x-6\">\r\n <a\r\n href={buttonLink}\r\n data-tour=\"hero-signup\"\r\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-400 shadow-2xs rounded-md px-3.5 py-2.5 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\r\n >\r\n {buttonText}\r\n </a>\r\n <a\r\n href={altButtonLink}\r\n className=\"text-sm font-semibold leading-6 text-white\"\r\n >\r\n {altButtonText} <span aria-hidden=\"true\">→</span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className=\"absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%+3rem)] w-[36.125rem] -translate-x-1/2 from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AAqCQ,cAsBM,YAtBN;AAdD,MAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiB;AACf,SACE,oBAAC,SAAI,WAAU,eACb,+BAAC,SAAI,WAAU,0CACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAI;AAAA,QACJ,eAAY;AAAA,QACZ,WAAU;AAAA;AAAA,IACZ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,qBAAC,SAAI,WAAU,6CACb;AAAA,0BAAC,SAAI,WAAU,4CACb,+BAAC,SAAI,WAAU,4GACZ;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YAEV;AAAA,kCAAC,UAAK,WAAU,oBAAmB,eAAY,QAAO;AAAA,cACrD;AAAA,cAAkB;AAAA,cAAC,oBAAC,UAAK,eAAY,QAAO,oBAAM;AAAA;AAAA;AAAA,QACrD;AAAA,SACF,GACF;AAAA,MACA,qBAAC,SAAI,WAAU,eACb;AAAA,4BAAC,QAAG,WAAU,4EACX,iBACH;AAAA,QACA,oBAAC,OAAE,WAAU,wCACV,uBACH;AAAA,QACA,qBAAC,SAAI,WAAU,kDACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,aAAU;AAAA,cACV,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cAET;AAAA;AAAA,gBAAc;AAAA,gBAAC,oBAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,UAC5C;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/hero.tsx"],"sourcesContent":["'use client'\n\nexport interface HeroProps {\n title: string\n description: string\n buttonText: string\n buttonLink: string\n altButtonText: string\n altButtonLink: string\n image?: string\n imageAlt?: string\n navigation: {\n name: string\n href: string\n }[]\n heroButtonText: string\n heroButtonLink: string\n heroButtonAltText: string\n companyName: string\n companyLink: string\n companyLogo: React.ReactElement\n}\n\nexport const Hero = ({\n title,\n description,\n buttonText,\n buttonLink,\n altButtonText,\n altButtonLink,\n heroButtonText,\n heroButtonLink,\n heroButtonAltText,\n}: HeroProps) => {\n return (\n <div className=\"bg-gray-900\">\n <div className=\"relative isolate overflow-hidden pt-14\">\n <img\n src=\"img/hero-left-dark.png\"\n alt=\"\"\n aria-hidden=\"true\"\n className=\"absolute inset-0 -z-10 h-full w-full object-cover\"\n />\n <div\n className=\"absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80\"\n aria-hidden=\"true\"\n >\n <div\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%-11rem)] w-[36.125rem] -translate-x-1/2 rotate-[30deg] from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n <div className=\"mx-auto max-w-2xl py-32 sm:py-48 lg:py-56\">\n <div className=\"hidden sm:mb-8 sm:flex sm:justify-center\">\n <div className=\"relative rounded-full px-3 py-1 text-sm leading-6 text-gray-400 ring-1 ring-white/10 hover:ring-white/20\">\n {heroButtonText}\n <a\n href={heroButtonLink}\n className=\"ml-2 font-semibold text-white\"\n >\n <span className=\"absolute inset-0\" aria-hidden=\"true\" />\n {heroButtonAltText} <span aria-hidden=\"true\">&rarr;</span>\n </a>\n </div>\n </div>\n <div className=\"text-center\">\n <h1 className=\"text-4xl font-bold tracking-tight text-white sm:text-6xl dark:text-white\">\n {title}\n </h1>\n <p className=\"mt-6 text-lg leading-8 text-gray-300\">\n {description}\n </p>\n <div className=\"mt-10 flex items-center justify-center gap-x-6\">\n <a\n href={buttonLink}\n data-tour=\"hero-signup\"\n className=\"bg-primary-500 hover:bg-primary-400 focus-visible:outline-primary-400 shadow-2xs rounded-md px-3.5 py-2.5 text-sm font-semibold text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2\"\n >\n {buttonText}\n </a>\n <a\n href={altButtonLink}\n className=\"text-sm font-semibold leading-6 text-white\"\n >\n {altButtonText} <span aria-hidden=\"true\">→</span>\n </a>\n </div>\n </div>\n </div>\n <div\n className=\"absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]\"\n aria-hidden=\"true\"\n >\n <div\n className=\"aspect-1155/678 bg-linear-to-tr relative left-[calc(50%+3rem)] w-[36.125rem] -translate-x-1/2 from-[#ff80b5] to-[#9089fc] opacity-20 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":";AAqCQ,cAsBM,YAtBN;AAdD,MAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiB;AACf,SACE,oBAAC,SAAI,WAAU,eACb,+BAAC,SAAI,WAAU,0CACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAI;AAAA,QACJ,eAAY;AAAA,QACZ,WAAU;AAAA;AAAA,IACZ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,qBAAC,SAAI,WAAU,6CACb;AAAA,0BAAC,SAAI,WAAU,4CACb,+BAAC,SAAI,WAAU,4GACZ;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YAEV;AAAA,kCAAC,UAAK,WAAU,oBAAmB,eAAY,QAAO;AAAA,cACrD;AAAA,cAAkB;AAAA,cAAC,oBAAC,UAAK,eAAY,QAAO,oBAAM;AAAA;AAAA;AAAA,QACrD;AAAA,SACF,GACF;AAAA,MACA,qBAAC,SAAI,WAAU,eACb;AAAA,4BAAC,QAAG,WAAU,4EACX,iBACH;AAAA,QACA,oBAAC,OAAE,WAAU,wCACV,uBACH;AAAA,QACA,qBAAC,SAAI,WAAU,kDACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,aAAU;AAAA,cACV,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cAET;AAAA;AAAA,gBAAc;AAAA,gBAAC,oBAAC,UAAK,eAAY,QAAO,oBAAC;AAAA;AAAA;AAAA,UAC5C;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;","names":[]}