@jarrodmedrano/ui 0.1.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 (575) hide show
  1. package/README.md +108 -0
  2. package/dist/components/auth/providers.cjs +83 -0
  3. package/dist/components/auth/providers.cjs.map +1 -0
  4. package/dist/components/auth/providers.d.ts +19 -0
  5. package/dist/components/auth/providers.d.ts.map +1 -0
  6. package/dist/components/auth/providers.js +59 -0
  7. package/dist/components/auth/providers.js.map +1 -0
  8. package/dist/components/card/back-button.cjs +45 -0
  9. package/dist/components/card/back-button.cjs.map +1 -0
  10. package/dist/components/card/back-button.d.ts +7 -0
  11. package/dist/components/card/back-button.d.ts.map +1 -0
  12. package/dist/components/card/back-button.js +11 -0
  13. package/dist/components/card/back-button.js.map +1 -0
  14. package/dist/components/card/card-wrapper.cjs +56 -0
  15. package/dist/components/card/card-wrapper.cjs.map +1 -0
  16. package/dist/components/card/card-wrapper.d.ts +11 -0
  17. package/dist/components/card/card-wrapper.d.ts.map +1 -0
  18. package/dist/components/card/card-wrapper.js +36 -0
  19. package/dist/components/card/card-wrapper.js.map +1 -0
  20. package/dist/components/card/header.cjs +52 -0
  21. package/dist/components/card/header.cjs.map +1 -0
  22. package/dist/components/card/header.d.ts +8 -0
  23. package/dist/components/card/header.d.ts.map +1 -0
  24. package/dist/components/card/header.js +18 -0
  25. package/dist/components/card/header.js.map +1 -0
  26. package/dist/components/combobox/ComboList.cjs +78 -0
  27. package/dist/components/combobox/ComboList.cjs.map +1 -0
  28. package/dist/components/combobox/ComboList.d.ts +14 -0
  29. package/dist/components/combobox/ComboList.d.ts.map +1 -0
  30. package/dist/components/combobox/ComboList.js +61 -0
  31. package/dist/components/combobox/ComboList.js.map +1 -0
  32. package/dist/components/combobox/index.cjs +119 -0
  33. package/dist/components/combobox/index.cjs.map +1 -0
  34. package/dist/components/combobox/index.d.ts +6 -0
  35. package/dist/components/combobox/index.d.ts.map +1 -0
  36. package/dist/components/combobox/index.js +101 -0
  37. package/dist/components/combobox/index.js.map +1 -0
  38. package/dist/components/dashboard/account-select.cjs +69 -0
  39. package/dist/components/dashboard/account-select.cjs.map +1 -0
  40. package/dist/components/dashboard/account-select.d.ts +12 -0
  41. package/dist/components/dashboard/account-select.d.ts.map +1 -0
  42. package/dist/components/dashboard/account-select.js +41 -0
  43. package/dist/components/dashboard/account-select.js.map +1 -0
  44. package/dist/components/dashboard/account-switcher.cjs +72 -0
  45. package/dist/components/dashboard/account-switcher.cjs.map +1 -0
  46. package/dist/components/dashboard/account-switcher.d.ts +12 -0
  47. package/dist/components/dashboard/account-switcher.d.ts.map +1 -0
  48. package/dist/components/dashboard/account-switcher.js +44 -0
  49. package/dist/components/dashboard/account-switcher.js.map +1 -0
  50. package/dist/components/dashboard/sidebar/CollapsibleSection.cjs +100 -0
  51. package/dist/components/dashboard/sidebar/CollapsibleSection.cjs.map +1 -0
  52. package/dist/components/dashboard/sidebar/CollapsibleSection.d.ts +3 -0
  53. package/dist/components/dashboard/sidebar/CollapsibleSection.d.ts.map +1 -0
  54. package/dist/components/dashboard/sidebar/CollapsibleSection.js +81 -0
  55. package/dist/components/dashboard/sidebar/CollapsibleSection.js.map +1 -0
  56. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.cjs +77 -0
  57. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.cjs.map +1 -0
  58. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.d.ts +9 -0
  59. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.d.ts.map +1 -0
  60. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.js +40 -0
  61. package/dist/components/dashboard/sidebar/CollapsibleSection.styles.js.map +1 -0
  62. package/dist/components/dashboard/sidebar/EntityList.cjs +121 -0
  63. package/dist/components/dashboard/sidebar/EntityList.cjs.map +1 -0
  64. package/dist/components/dashboard/sidebar/EntityList.d.ts +3 -0
  65. package/dist/components/dashboard/sidebar/EntityList.d.ts.map +1 -0
  66. package/dist/components/dashboard/sidebar/EntityList.js +87 -0
  67. package/dist/components/dashboard/sidebar/EntityList.js.map +1 -0
  68. package/dist/components/dashboard/sidebar/EntityList.styles.cjs +95 -0
  69. package/dist/components/dashboard/sidebar/EntityList.styles.cjs.map +1 -0
  70. package/dist/components/dashboard/sidebar/EntityList.styles.d.ts +14 -0
  71. package/dist/components/dashboard/sidebar/EntityList.styles.d.ts.map +1 -0
  72. package/dist/components/dashboard/sidebar/EntityList.styles.js +57 -0
  73. package/dist/components/dashboard/sidebar/EntityList.styles.js.map +1 -0
  74. package/dist/components/dashboard/sidebar/SectionHeader.cjs +99 -0
  75. package/dist/components/dashboard/sidebar/SectionHeader.cjs.map +1 -0
  76. package/dist/components/dashboard/sidebar/SectionHeader.d.ts +3 -0
  77. package/dist/components/dashboard/sidebar/SectionHeader.d.ts.map +1 -0
  78. package/dist/components/dashboard/sidebar/SectionHeader.js +81 -0
  79. package/dist/components/dashboard/sidebar/SectionHeader.js.map +1 -0
  80. package/dist/components/dashboard/sidebar/SectionHeader.styles.cjs +116 -0
  81. package/dist/components/dashboard/sidebar/SectionHeader.styles.cjs.map +1 -0
  82. package/dist/components/dashboard/sidebar/SectionHeader.styles.d.ts +18 -0
  83. package/dist/components/dashboard/sidebar/SectionHeader.styles.d.ts.map +1 -0
  84. package/dist/components/dashboard/sidebar/SectionHeader.styles.js +77 -0
  85. package/dist/components/dashboard/sidebar/SectionHeader.styles.js.map +1 -0
  86. package/dist/components/dashboard/sidebar/index.cjs +41 -0
  87. package/dist/components/dashboard/sidebar/index.cjs.map +1 -0
  88. package/dist/components/dashboard/sidebar/index.d.ts +6 -0
  89. package/dist/components/dashboard/sidebar/index.d.ts.map +1 -0
  90. package/dist/components/dashboard/sidebar/index.js +12 -0
  91. package/dist/components/dashboard/sidebar/index.js.map +1 -0
  92. package/dist/components/dashboard/sidebar/sidebar.cjs +50 -0
  93. package/dist/components/dashboard/sidebar/sidebar.cjs.map +1 -0
  94. package/dist/components/dashboard/sidebar/sidebar.d.ts +15 -0
  95. package/dist/components/dashboard/sidebar/sidebar.d.ts.map +1 -0
  96. package/dist/components/dashboard/sidebar/sidebar.js +26 -0
  97. package/dist/components/dashboard/sidebar/sidebar.js.map +1 -0
  98. package/dist/components/dashboard/sidebar/tabs.cjs +52 -0
  99. package/dist/components/dashboard/sidebar/tabs.cjs.map +1 -0
  100. package/dist/components/dashboard/sidebar/tabs.d.ts +3 -0
  101. package/dist/components/dashboard/sidebar/tabs.d.ts.map +1 -0
  102. package/dist/components/dashboard/sidebar/tabs.js +37 -0
  103. package/dist/components/dashboard/sidebar/tabs.js.map +1 -0
  104. package/dist/components/dashboard/sidebar/types.cjs +17 -0
  105. package/dist/components/dashboard/sidebar/types.cjs.map +1 -0
  106. package/dist/components/dashboard/sidebar/types.d.ts +36 -0
  107. package/dist/components/dashboard/sidebar/types.d.ts.map +1 -0
  108. package/dist/components/dashboard/sidebar/types.js +1 -0
  109. package/dist/components/dashboard/sidebar/types.js.map +1 -0
  110. package/dist/components/dashboard/sidebar-nav.cjs +99 -0
  111. package/dist/components/dashboard/sidebar-nav.cjs.map +1 -0
  112. package/dist/components/dashboard/sidebar-nav.d.ts +24 -0
  113. package/dist/components/dashboard/sidebar-nav.d.ts.map +1 -0
  114. package/dist/components/dashboard/sidebar-nav.js +75 -0
  115. package/dist/components/dashboard/sidebar-nav.js.map +1 -0
  116. package/dist/components/dashboard/utils/build-nav.cjs +103 -0
  117. package/dist/components/dashboard/utils/build-nav.cjs.map +1 -0
  118. package/dist/components/dashboard/utils/build-nav.d.ts +7 -0
  119. package/dist/components/dashboard/utils/build-nav.d.ts.map +1 -0
  120. package/dist/components/dashboard/utils/build-nav.js +78 -0
  121. package/dist/components/dashboard/utils/build-nav.js.map +1 -0
  122. package/dist/components/dashboard/utils.cjs +2 -0
  123. package/dist/components/dashboard/utils.cjs.map +1 -0
  124. package/dist/components/dashboard/utils.d.ts +1 -0
  125. package/dist/components/dashboard/utils.d.ts.map +1 -0
  126. package/dist/components/dashboard/utils.js +1 -0
  127. package/dist/components/dashboard/utils.js.map +1 -0
  128. package/dist/components/dashboard/with-dashboard.cjs +189 -0
  129. package/dist/components/dashboard/with-dashboard.cjs.map +1 -0
  130. package/dist/components/dashboard/with-dashboard.d.ts +6 -0
  131. package/dist/components/dashboard/with-dashboard.d.ts.map +1 -0
  132. package/dist/components/dashboard/with-dashboard.js +175 -0
  133. package/dist/components/dashboard/with-dashboard.js.map +1 -0
  134. package/dist/components/detail/DetailLayout.styles.cjs +116 -0
  135. package/dist/components/detail/DetailLayout.styles.cjs.map +1 -0
  136. package/dist/components/detail/DetailLayout.styles.d.ts +18 -0
  137. package/dist/components/detail/DetailLayout.styles.d.ts.map +1 -0
  138. package/dist/components/detail/DetailLayout.styles.js +74 -0
  139. package/dist/components/detail/DetailLayout.styles.js.map +1 -0
  140. package/dist/components/detail/index.cjs +45 -0
  141. package/dist/components/detail/index.cjs.map +1 -0
  142. package/dist/components/detail/index.d.ts +2 -0
  143. package/dist/components/detail/index.d.ts.map +1 -0
  144. package/dist/components/detail/index.js +23 -0
  145. package/dist/components/detail/index.js.map +1 -0
  146. package/dist/components/flowbite/card-images.cjs +104 -0
  147. package/dist/components/flowbite/card-images.cjs.map +1 -0
  148. package/dist/components/flowbite/card-images.d.ts +3 -0
  149. package/dist/components/flowbite/card-images.d.ts.map +1 -0
  150. package/dist/components/flowbite/card-images.js +84 -0
  151. package/dist/components/flowbite/card-images.js.map +1 -0
  152. package/dist/components/flowbite/gallery.cjs +53 -0
  153. package/dist/components/flowbite/gallery.cjs.map +1 -0
  154. package/dist/components/flowbite/gallery.d.ts +3 -0
  155. package/dist/components/flowbite/gallery.d.ts.map +1 -0
  156. package/dist/components/flowbite/gallery.js +23 -0
  157. package/dist/components/flowbite/gallery.js.map +1 -0
  158. package/dist/components/flowbite/masonry.cjs +73 -0
  159. package/dist/components/flowbite/masonry.cjs.map +1 -0
  160. package/dist/components/flowbite/masonry.d.ts +13 -0
  161. package/dist/components/flowbite/masonry.d.ts.map +1 -0
  162. package/dist/components/flowbite/masonry.js +43 -0
  163. package/dist/components/flowbite/masonry.js.map +1 -0
  164. package/dist/components/flowbite/search-hero.cjs +109 -0
  165. package/dist/components/flowbite/search-hero.cjs.map +1 -0
  166. package/dist/components/flowbite/search-hero.d.ts +6 -0
  167. package/dist/components/flowbite/search-hero.d.ts.map +1 -0
  168. package/dist/components/flowbite/search-hero.js +89 -0
  169. package/dist/components/flowbite/search-hero.js.map +1 -0
  170. package/dist/components/generic/copyright.cjs +32 -0
  171. package/dist/components/generic/copyright.cjs.map +1 -0
  172. package/dist/components/generic/copyright.d.ts +4 -0
  173. package/dist/components/generic/copyright.d.ts.map +1 -0
  174. package/dist/components/generic/copyright.js +8 -0
  175. package/dist/components/generic/copyright.js.map +1 -0
  176. package/dist/components/generic/icons.cjs +186 -0
  177. package/dist/components/generic/icons.cjs.map +1 -0
  178. package/dist/components/generic/icons.d.ts +19 -0
  179. package/dist/components/generic/icons.d.ts.map +1 -0
  180. package/dist/components/generic/icons.js +164 -0
  181. package/dist/components/generic/icons.js.map +1 -0
  182. package/dist/components/header/header.cjs +130 -0
  183. package/dist/components/header/header.cjs.map +1 -0
  184. package/dist/components/header/header.d.ts +14 -0
  185. package/dist/components/header/header.d.ts.map +1 -0
  186. package/dist/components/header/header.js +106 -0
  187. package/dist/components/header/header.js.map +1 -0
  188. package/dist/components/header/internal/main-nav.cjs +65 -0
  189. package/dist/components/header/internal/main-nav.cjs.map +1 -0
  190. package/dist/components/header/internal/main-nav.d.ts +4 -0
  191. package/dist/components/header/internal/main-nav.d.ts.map +1 -0
  192. package/dist/components/header/internal/main-nav.js +31 -0
  193. package/dist/components/header/internal/main-nav.js.map +1 -0
  194. package/dist/components/header/internal/mobile-nav.cjs +209 -0
  195. package/dist/components/header/internal/mobile-nav.cjs.map +1 -0
  196. package/dist/components/header/internal/mobile-nav.d.ts +2 -0
  197. package/dist/components/header/internal/mobile-nav.d.ts.map +1 -0
  198. package/dist/components/header/internal/mobile-nav.js +177 -0
  199. package/dist/components/header/internal/mobile-nav.js.map +1 -0
  200. package/dist/components/header/internal/mode-toggle.cjs +73 -0
  201. package/dist/components/header/internal/mode-toggle.cjs.map +1 -0
  202. package/dist/components/header/internal/mode-toggle.d.ts +8 -0
  203. package/dist/components/header/internal/mode-toggle.d.ts.map +1 -0
  204. package/dist/components/header/internal/mode-toggle.js +54 -0
  205. package/dist/components/header/internal/mode-toggle.js.map +1 -0
  206. package/dist/components/header/internal/site-header.cjs +62 -0
  207. package/dist/components/header/internal/site-header.cjs.map +1 -0
  208. package/dist/components/header/internal/site-header.d.ts +15 -0
  209. package/dist/components/header/internal/site-header.d.ts.map +1 -0
  210. package/dist/components/header/internal/site-header.js +38 -0
  211. package/dist/components/header/internal/site-header.js.map +1 -0
  212. package/dist/components/header/langbutton/langbutton.cjs +54 -0
  213. package/dist/components/header/langbutton/langbutton.cjs.map +1 -0
  214. package/dist/components/header/langbutton/langbutton.d.ts +4 -0
  215. package/dist/components/header/langbutton/langbutton.d.ts.map +1 -0
  216. package/dist/components/header/langbutton/langbutton.js +35 -0
  217. package/dist/components/header/langbutton/langbutton.js.map +1 -0
  218. package/dist/components/header/userbutton/user-dropdown.cjs +72 -0
  219. package/dist/components/header/userbutton/user-dropdown.cjs.map +1 -0
  220. package/dist/components/header/userbutton/user-dropdown.d.ts +10 -0
  221. package/dist/components/header/userbutton/user-dropdown.d.ts.map +1 -0
  222. package/dist/components/header/userbutton/user-dropdown.js +64 -0
  223. package/dist/components/header/userbutton/user-dropdown.js.map +1 -0
  224. package/dist/components/header/userbutton/userbutton.cjs +50 -0
  225. package/dist/components/header/userbutton/userbutton.cjs.map +1 -0
  226. package/dist/components/header/userbutton/userbutton.d.ts +10 -0
  227. package/dist/components/header/userbutton/userbutton.d.ts.map +1 -0
  228. package/dist/components/header/userbutton/userbutton.js +16 -0
  229. package/dist/components/header/userbutton/userbutton.js.map +1 -0
  230. package/dist/components/hooks/use-page-nav.cjs +89 -0
  231. package/dist/components/hooks/use-page-nav.cjs.map +1 -0
  232. package/dist/components/hooks/use-page-nav.d.ts +5 -0
  233. package/dist/components/hooks/use-page-nav.d.ts.map +1 -0
  234. package/dist/components/hooks/use-page-nav.js +61 -0
  235. package/dist/components/hooks/use-page-nav.js.map +1 -0
  236. package/dist/components/hooks/use-user-entities.cjs +30 -0
  237. package/dist/components/hooks/use-user-entities.cjs.map +1 -0
  238. package/dist/components/hooks/use-user-entities.d.ts +2 -0
  239. package/dist/components/hooks/use-user-entities.d.ts.map +1 -0
  240. package/dist/components/hooks/use-user-entities.js +6 -0
  241. package/dist/components/hooks/use-user-entities.js.map +1 -0
  242. package/dist/components/icons/apple.cjs +47 -0
  243. package/dist/components/icons/apple.cjs.map +1 -0
  244. package/dist/components/icons/apple.d.ts +2 -0
  245. package/dist/components/icons/apple.d.ts.map +1 -0
  246. package/dist/components/icons/apple.js +23 -0
  247. package/dist/components/icons/apple.js.map +1 -0
  248. package/dist/components/icons/facebook.cjs +49 -0
  249. package/dist/components/icons/facebook.cjs.map +1 -0
  250. package/dist/components/icons/facebook.d.ts +2 -0
  251. package/dist/components/icons/facebook.d.ts.map +1 -0
  252. package/dist/components/icons/facebook.js +25 -0
  253. package/dist/components/icons/facebook.js.map +1 -0
  254. package/dist/components/icons/github.cjs +49 -0
  255. package/dist/components/icons/github.cjs.map +1 -0
  256. package/dist/components/icons/github.d.ts +2 -0
  257. package/dist/components/icons/github.d.ts.map +1 -0
  258. package/dist/components/icons/github.js +25 -0
  259. package/dist/components/icons/github.js.map +1 -0
  260. package/dist/components/icons/google.cjs +49 -0
  261. package/dist/components/icons/google.cjs.map +1 -0
  262. package/dist/components/icons/google.d.ts +2 -0
  263. package/dist/components/icons/google.d.ts.map +1 -0
  264. package/dist/components/icons/google.js +25 -0
  265. package/dist/components/icons/google.js.map +1 -0
  266. package/dist/components/icons/logo.cjs +49 -0
  267. package/dist/components/icons/logo.cjs.map +1 -0
  268. package/dist/components/icons/logo.d.ts +4 -0
  269. package/dist/components/icons/logo.d.ts.map +1 -0
  270. package/dist/components/icons/logo.js +25 -0
  271. package/dist/components/icons/logo.js.map +1 -0
  272. package/dist/components/lightbox/GallerySection.cjs +53 -0
  273. package/dist/components/lightbox/GallerySection.cjs.map +1 -0
  274. package/dist/components/lightbox/GallerySection.d.ts +12 -0
  275. package/dist/components/lightbox/GallerySection.d.ts.map +1 -0
  276. package/dist/components/lightbox/GallerySection.js +29 -0
  277. package/dist/components/lightbox/GallerySection.js.map +1 -0
  278. package/dist/components/lightbox/ImageLightbox.cjs +244 -0
  279. package/dist/components/lightbox/ImageLightbox.cjs.map +1 -0
  280. package/dist/components/lightbox/ImageLightbox.d.ts +3 -0
  281. package/dist/components/lightbox/ImageLightbox.d.ts.map +1 -0
  282. package/dist/components/lightbox/ImageLightbox.js +220 -0
  283. package/dist/components/lightbox/ImageLightbox.js.map +1 -0
  284. package/dist/components/lightbox/ImageLightbox.types.cjs +17 -0
  285. package/dist/components/lightbox/ImageLightbox.types.cjs.map +1 -0
  286. package/dist/components/lightbox/ImageLightbox.types.d.ts +28 -0
  287. package/dist/components/lightbox/ImageLightbox.types.d.ts.map +1 -0
  288. package/dist/components/lightbox/ImageLightbox.types.js +1 -0
  289. package/dist/components/lightbox/ImageLightbox.types.js.map +1 -0
  290. package/dist/components/lightbox/index.cjs +38 -0
  291. package/dist/components/lightbox/index.cjs.map +1 -0
  292. package/dist/components/lightbox/index.d.ts +8 -0
  293. package/dist/components/lightbox/index.d.ts.map +1 -0
  294. package/dist/components/lightbox/index.js +11 -0
  295. package/dist/components/lightbox/index.js.map +1 -0
  296. package/dist/components/lightbox/useEntityLightbox.cjs +57 -0
  297. package/dist/components/lightbox/useEntityLightbox.cjs.map +1 -0
  298. package/dist/components/lightbox/useEntityLightbox.d.ts +25 -0
  299. package/dist/components/lightbox/useEntityLightbox.d.ts.map +1 -0
  300. package/dist/components/lightbox/useEntityLightbox.js +33 -0
  301. package/dist/components/lightbox/useEntityLightbox.js.map +1 -0
  302. package/dist/components/lightbox/useLightbox.cjs +59 -0
  303. package/dist/components/lightbox/useLightbox.cjs.map +1 -0
  304. package/dist/components/lightbox/useLightbox.d.ts +9 -0
  305. package/dist/components/lightbox/useLightbox.d.ts.map +1 -0
  306. package/dist/components/lightbox/useLightbox.js +35 -0
  307. package/dist/components/lightbox/useLightbox.js.map +1 -0
  308. package/dist/components/search/search.cjs +71 -0
  309. package/dist/components/search/search.cjs.map +1 -0
  310. package/dist/components/search/search.d.ts +2 -0
  311. package/dist/components/search/search.d.ts.map +1 -0
  312. package/dist/components/search/search.js +63 -0
  313. package/dist/components/search/search.js.map +1 -0
  314. package/dist/components/tailwind/contact.cjs +380 -0
  315. package/dist/components/tailwind/contact.cjs.map +1 -0
  316. package/dist/components/tailwind/contact.d.ts +2 -0
  317. package/dist/components/tailwind/contact.d.ts.map +1 -0
  318. package/dist/components/tailwind/contact.js +356 -0
  319. package/dist/components/tailwind/contact.js.map +1 -0
  320. package/dist/components/tailwind/content-page.cjs +58 -0
  321. package/dist/components/tailwind/content-page.cjs.map +1 -0
  322. package/dist/components/tailwind/content-page.d.ts +18 -0
  323. package/dist/components/tailwind/content-page.d.ts.map +1 -0
  324. package/dist/components/tailwind/content-page.js +32 -0
  325. package/dist/components/tailwind/content-page.js.map +1 -0
  326. package/dist/components/tailwind/feature.cjs +95 -0
  327. package/dist/components/tailwind/feature.cjs.map +1 -0
  328. package/dist/components/tailwind/feature.d.ts +2 -0
  329. package/dist/components/tailwind/feature.d.ts.map +1 -0
  330. package/dist/components/tailwind/feature.js +75 -0
  331. package/dist/components/tailwind/feature.js.map +1 -0
  332. package/dist/components/tailwind/featurelist.cjs +99 -0
  333. package/dist/components/tailwind/featurelist.cjs.map +1 -0
  334. package/dist/components/tailwind/featurelist.d.ts +2 -0
  335. package/dist/components/tailwind/featurelist.d.ts.map +1 -0
  336. package/dist/components/tailwind/featurelist.js +65 -0
  337. package/dist/components/tailwind/featurelist.js.map +1 -0
  338. package/dist/components/tailwind/footer.cjs +104 -0
  339. package/dist/components/tailwind/footer.cjs.map +1 -0
  340. package/dist/components/tailwind/footer.d.ts +2 -0
  341. package/dist/components/tailwind/footer.d.ts.map +1 -0
  342. package/dist/components/tailwind/footer.js +80 -0
  343. package/dist/components/tailwind/footer.js.map +1 -0
  344. package/dist/components/tailwind/hero.cjs +130 -0
  345. package/dist/components/tailwind/hero.cjs.map +1 -0
  346. package/dist/components/tailwind/hero.d.ts +22 -0
  347. package/dist/components/tailwind/hero.d.ts.map +1 -0
  348. package/dist/components/tailwind/hero.js +106 -0
  349. package/dist/components/tailwind/hero.js.map +1 -0
  350. package/dist/components/tailwind/pricing.cjs +214 -0
  351. package/dist/components/tailwind/pricing.cjs.map +1 -0
  352. package/dist/components/tailwind/pricing.d.ts +6 -0
  353. package/dist/components/tailwind/pricing.d.ts.map +1 -0
  354. package/dist/components/tailwind/pricing.js +190 -0
  355. package/dist/components/tailwind/pricing.js.map +1 -0
  356. package/dist/components/tailwind/privacy.cjs +138 -0
  357. package/dist/components/tailwind/privacy.cjs.map +1 -0
  358. package/dist/components/tailwind/privacy.d.ts +2 -0
  359. package/dist/components/tailwind/privacy.d.ts.map +1 -0
  360. package/dist/components/tailwind/privacy.js +114 -0
  361. package/dist/components/tailwind/privacy.js.map +1 -0
  362. package/dist/components/tailwind/providerIcons.cjs +48 -0
  363. package/dist/components/tailwind/providerIcons.cjs.map +1 -0
  364. package/dist/components/tailwind/providerIcons.d.ts +4 -0
  365. package/dist/components/tailwind/providerIcons.d.ts.map +1 -0
  366. package/dist/components/tailwind/providerIcons.js +24 -0
  367. package/dist/components/tailwind/providerIcons.js.map +1 -0
  368. package/dist/components/ui/avatar.cjs +120 -0
  369. package/dist/components/ui/avatar.cjs.map +1 -0
  370. package/dist/components/ui/avatar.d.ts +7 -0
  371. package/dist/components/ui/avatar.d.ts.map +1 -0
  372. package/dist/components/ui/avatar.js +86 -0
  373. package/dist/components/ui/avatar.js.map +1 -0
  374. package/dist/components/ui/breadcrumb.cjs +63 -0
  375. package/dist/components/ui/breadcrumb.cjs.map +1 -0
  376. package/dist/components/ui/breadcrumb.d.ts +10 -0
  377. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  378. package/dist/components/ui/breadcrumb.js +29 -0
  379. package/dist/components/ui/breadcrumb.js.map +1 -0
  380. package/dist/components/ui/button.cjs +105 -0
  381. package/dist/components/ui/button.cjs.map +1 -0
  382. package/dist/components/ui/button.d.ts +11 -0
  383. package/dist/components/ui/button.d.ts.map +1 -0
  384. package/dist/components/ui/button.js +82 -0
  385. package/dist/components/ui/button.js.map +1 -0
  386. package/dist/components/ui/card.cjs +129 -0
  387. package/dist/components/ui/card.cjs.map +1 -0
  388. package/dist/components/ui/card.d.ts +9 -0
  389. package/dist/components/ui/card.d.ts.map +1 -0
  390. package/dist/components/ui/card.js +102 -0
  391. package/dist/components/ui/card.js.map +1 -0
  392. package/dist/components/ui/checkbox.cjs +98 -0
  393. package/dist/components/ui/checkbox.cjs.map +1 -0
  394. package/dist/components/ui/checkbox.d.ts +5 -0
  395. package/dist/components/ui/checkbox.d.ts.map +1 -0
  396. package/dist/components/ui/checkbox.js +66 -0
  397. package/dist/components/ui/checkbox.js.map +1 -0
  398. package/dist/components/ui/command.cjs +200 -0
  399. package/dist/components/ui/command.cjs.map +1 -0
  400. package/dist/components/ui/command.d.ts +83 -0
  401. package/dist/components/ui/command.d.ts.map +1 -0
  402. package/dist/components/ui/command.js +160 -0
  403. package/dist/components/ui/command.js.map +1 -0
  404. package/dist/components/ui/dialog.cjs +204 -0
  405. package/dist/components/ui/dialog.cjs.map +1 -0
  406. package/dist/components/ui/dialog.d.ts +14 -0
  407. package/dist/components/ui/dialog.d.ts.map +1 -0
  408. package/dist/components/ui/dialog.js +163 -0
  409. package/dist/components/ui/dialog.js.map +1 -0
  410. package/dist/components/ui/drawer.cjs +191 -0
  411. package/dist/components/ui/drawer.cjs.map +1 -0
  412. package/dist/components/ui/drawer.d.ts +14 -0
  413. package/dist/components/ui/drawer.d.ts.map +1 -0
  414. package/dist/components/ui/drawer.js +160 -0
  415. package/dist/components/ui/drawer.js.map +1 -0
  416. package/dist/components/ui/dropdown-menu.cjs +323 -0
  417. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  418. package/dist/components/ui/dropdown-menu.d.ts +26 -0
  419. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  420. package/dist/components/ui/dropdown-menu.js +277 -0
  421. package/dist/components/ui/dropdown-menu.js.map +1 -0
  422. package/dist/components/ui/input.cjs +72 -0
  423. package/dist/components/ui/input.cjs.map +1 -0
  424. package/dist/components/ui/input.d.ts +4 -0
  425. package/dist/components/ui/input.d.ts.map +1 -0
  426. package/dist/components/ui/input.js +50 -0
  427. package/dist/components/ui/input.js.map +1 -0
  428. package/dist/components/ui/label.cjs +85 -0
  429. package/dist/components/ui/label.cjs.map +1 -0
  430. package/dist/components/ui/label.d.ts +5 -0
  431. package/dist/components/ui/label.d.ts.map +1 -0
  432. package/dist/components/ui/label.js +53 -0
  433. package/dist/components/ui/label.js.map +1 -0
  434. package/dist/components/ui/menubar.cjs +351 -0
  435. package/dist/components/ui/menubar.cjs.map +1 -0
  436. package/dist/components/ui/menubar.d.ts +27 -0
  437. package/dist/components/ui/menubar.d.ts.map +1 -0
  438. package/dist/components/ui/menubar.js +304 -0
  439. package/dist/components/ui/menubar.js.map +1 -0
  440. package/dist/components/ui/navigation-menu.cjs +257 -0
  441. package/dist/components/ui/navigation-menu.cjs.map +1 -0
  442. package/dist/components/ui/navigation-menu.d.ts +15 -0
  443. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  444. package/dist/components/ui/navigation-menu.js +217 -0
  445. package/dist/components/ui/navigation-menu.js.map +1 -0
  446. package/dist/components/ui/popover.cjs +109 -0
  447. package/dist/components/ui/popover.cjs.map +1 -0
  448. package/dist/components/ui/popover.d.ts +8 -0
  449. package/dist/components/ui/popover.d.ts.map +1 -0
  450. package/dist/components/ui/popover.js +74 -0
  451. package/dist/components/ui/popover.js.map +1 -0
  452. package/dist/components/ui/resizable.cjs +124 -0
  453. package/dist/components/ui/resizable.cjs.map +1 -0
  454. package/dist/components/ui/resizable.d.ts +26 -0
  455. package/dist/components/ui/resizable.d.ts.map +1 -0
  456. package/dist/components/ui/resizable.js +90 -0
  457. package/dist/components/ui/resizable.js.map +1 -0
  458. package/dist/components/ui/scroll-area.cjs +132 -0
  459. package/dist/components/ui/scroll-area.cjs.map +1 -0
  460. package/dist/components/ui/scroll-area.d.ts +6 -0
  461. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  462. package/dist/components/ui/scroll-area.js +99 -0
  463. package/dist/components/ui/scroll-area.js.map +1 -0
  464. package/dist/components/ui/select.cjs +254 -0
  465. package/dist/components/ui/select.cjs.map +1 -0
  466. package/dist/components/ui/select.d.ts +14 -0
  467. package/dist/components/ui/select.d.ts.map +1 -0
  468. package/dist/components/ui/select.js +213 -0
  469. package/dist/components/ui/select.js.map +1 -0
  470. package/dist/components/ui/sheet.cjs +203 -0
  471. package/dist/components/ui/sheet.cjs.map +1 -0
  472. package/dist/components/ui/sheet.d.ts +14 -0
  473. package/dist/components/ui/sheet.d.ts.map +1 -0
  474. package/dist/components/ui/sheet.js +164 -0
  475. package/dist/components/ui/sheet.js.map +1 -0
  476. package/dist/components/ui/skeleton.cjs +66 -0
  477. package/dist/components/ui/skeleton.cjs.map +1 -0
  478. package/dist/components/ui/skeleton.d.ts +3 -0
  479. package/dist/components/ui/skeleton.d.ts.map +1 -0
  480. package/dist/components/ui/skeleton.js +44 -0
  481. package/dist/components/ui/skeleton.js.map +1 -0
  482. package/dist/components/ui/spinner.cjs +128 -0
  483. package/dist/components/ui/spinner.cjs.map +1 -0
  484. package/dist/components/ui/spinner.d.ts +12 -0
  485. package/dist/components/ui/spinner.d.ts.map +1 -0
  486. package/dist/components/ui/spinner.js +105 -0
  487. package/dist/components/ui/spinner.js.map +1 -0
  488. package/dist/components/ui/switch.cjs +98 -0
  489. package/dist/components/ui/switch.cjs.map +1 -0
  490. package/dist/components/ui/switch.d.ts +5 -0
  491. package/dist/components/ui/switch.d.ts.map +1 -0
  492. package/dist/components/ui/switch.js +66 -0
  493. package/dist/components/ui/switch.js.map +1 -0
  494. package/dist/components/ui/tabs.cjs +136 -0
  495. package/dist/components/ui/tabs.cjs.map +1 -0
  496. package/dist/components/ui/tabs.d.ts +8 -0
  497. package/dist/components/ui/tabs.d.ts.map +1 -0
  498. package/dist/components/ui/tabs.js +101 -0
  499. package/dist/components/ui/tabs.js.map +1 -0
  500. package/dist/components/ui/textarea.cjs +69 -0
  501. package/dist/components/ui/textarea.cjs.map +1 -0
  502. package/dist/components/ui/textarea.d.ts +4 -0
  503. package/dist/components/ui/textarea.d.ts.map +1 -0
  504. package/dist/components/ui/textarea.js +47 -0
  505. package/dist/components/ui/textarea.js.map +1 -0
  506. package/dist/components/ui/toast.cjs +169 -0
  507. package/dist/components/ui/toast.cjs.map +1 -0
  508. package/dist/components/ui/toast.d.ts +15 -0
  509. package/dist/components/ui/toast.d.ts.map +1 -0
  510. package/dist/components/ui/toast.js +131 -0
  511. package/dist/components/ui/toast.js.map +1 -0
  512. package/dist/components/ui/toaster.cjs +78 -0
  513. package/dist/components/ui/toaster.cjs.map +1 -0
  514. package/dist/components/ui/toaster.d.ts +2 -0
  515. package/dist/components/ui/toaster.d.ts.map +1 -0
  516. package/dist/components/ui/toaster.js +63 -0
  517. package/dist/components/ui/toaster.js.map +1 -0
  518. package/dist/components/ui/tooltip.cjs +126 -0
  519. package/dist/components/ui/tooltip.cjs.map +1 -0
  520. package/dist/components/ui/tooltip.d.ts +8 -0
  521. package/dist/components/ui/tooltip.d.ts.map +1 -0
  522. package/dist/components/ui/tooltip.js +91 -0
  523. package/dist/components/ui/tooltip.js.map +1 -0
  524. package/dist/components/ui/use-toast.cjs +187 -0
  525. package/dist/components/ui/use-toast.cjs.map +1 -0
  526. package/dist/components/ui/use-toast.d.ts +45 -0
  527. package/dist/components/ui/use-toast.d.ts.map +1 -0
  528. package/dist/components/ui/use-toast.js +153 -0
  529. package/dist/components/ui/use-toast.js.map +1 -0
  530. package/dist/components/upgrade-prompt/UpgradePrompt.cjs +80 -0
  531. package/dist/components/upgrade-prompt/UpgradePrompt.cjs.map +1 -0
  532. package/dist/components/upgrade-prompt/UpgradePrompt.d.ts +12 -0
  533. package/dist/components/upgrade-prompt/UpgradePrompt.d.ts.map +1 -0
  534. package/dist/components/upgrade-prompt/UpgradePrompt.js +46 -0
  535. package/dist/components/upgrade-prompt/UpgradePrompt.js.map +1 -0
  536. package/dist/components/upgrade-prompt/index.cjs +29 -0
  537. package/dist/components/upgrade-prompt/index.cjs.map +1 -0
  538. package/dist/components/upgrade-prompt/index.d.ts +3 -0
  539. package/dist/components/upgrade-prompt/index.d.ts.map +1 -0
  540. package/dist/components/upgrade-prompt/index.js +5 -0
  541. package/dist/components/upgrade-prompt/index.js.map +1 -0
  542. package/dist/config/docs.d.ts +8 -0
  543. package/dist/config/docs.d.ts.map +1 -0
  544. package/dist/config/site.d.ts +12 -0
  545. package/dist/config/site.d.ts.map +1 -0
  546. package/dist/hooks/useRecaptcha.d.ts +16 -0
  547. package/dist/hooks/useRecaptcha.d.ts.map +1 -0
  548. package/dist/lib/utils.cjs +48 -0
  549. package/dist/lib/utils.cjs.map +1 -0
  550. package/dist/lib/utils.d.cjs +17 -0
  551. package/dist/lib/utils.d.cjs.map +1 -0
  552. package/dist/lib/utils.d.js +1 -0
  553. package/dist/lib/utils.d.js.map +1 -0
  554. package/dist/lib/utils.d.ts +5 -0
  555. package/dist/lib/utils.d.ts.map +1 -0
  556. package/dist/lib/utils.js +22 -0
  557. package/dist/lib/utils.js.map +1 -0
  558. package/dist/styles.css +178 -0
  559. package/dist/types/nav.cjs +17 -0
  560. package/dist/types/nav.cjs.map +1 -0
  561. package/dist/types/nav.d.ts +17 -0
  562. package/dist/types/nav.d.ts.map +1 -0
  563. package/dist/types/nav.js +1 -0
  564. package/dist/types/nav.js.map +1 -0
  565. package/dist/types/sitemap.cjs +17 -0
  566. package/dist/types/sitemap.cjs.map +1 -0
  567. package/dist/types/sitemap.d.ts +19 -0
  568. package/dist/types/sitemap.d.ts.map +1 -0
  569. package/dist/types/sitemap.js +1 -0
  570. package/dist/types/sitemap.js.map +1 -0
  571. package/dist/types/unist.cjs +17 -0
  572. package/dist/types/unist.cjs.map +1 -0
  573. package/dist/types/unist.js +1 -0
  574. package/dist/types/unist.js.map +1 -0
  575. package/package.json +91 -0
@@ -0,0 +1,356 @@
1
+ "use client";
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ import { useState } from "react";
24
+ import { ChevronDownIcon } from "@heroicons/react/20/solid";
25
+ import { Switch } from "@headlessui/react";
26
+ import { Input } from "../ui/input";
27
+ import { useRecaptcha } from "../../hooks/useRecaptcha";
28
+ function classNames(...classes) {
29
+ return classes.filter(Boolean).join(" ");
30
+ }
31
+ const Contact = () => {
32
+ const [agreed, setAgreed] = useState(false);
33
+ const [status, setStatus] = useState("idle");
34
+ const [errorMessage, setErrorMessage] = useState("");
35
+ const { executeRecaptcha } = useRecaptcha();
36
+ const handleSubmit = (e) => __async(null, null, function* () {
37
+ var _a;
38
+ e.preventDefault();
39
+ if (!agreed) {
40
+ setErrorMessage("You must agree to the privacy policy");
41
+ return;
42
+ }
43
+ const form = e.currentTarget;
44
+ const data = new FormData(form);
45
+ const recaptchaToken = yield executeRecaptcha("contact");
46
+ const body = {
47
+ firstName: data.get("first-name"),
48
+ lastName: data.get("last-name"),
49
+ company: data.get("company"),
50
+ email: data.get("email"),
51
+ phone: data.get("phone-number"),
52
+ message: data.get("message"),
53
+ agreed: true,
54
+ recaptchaToken: recaptchaToken != null ? recaptchaToken : void 0
55
+ };
56
+ setStatus("loading");
57
+ setErrorMessage("");
58
+ try {
59
+ const res = yield fetch("/api/contact", {
60
+ method: "POST",
61
+ headers: { "Content-Type": "application/json" },
62
+ body: JSON.stringify(body)
63
+ });
64
+ if (!res.ok) {
65
+ const json = yield res.json();
66
+ throw new Error((_a = json.error) != null ? _a : "Something went wrong");
67
+ }
68
+ setStatus("success");
69
+ form.reset();
70
+ setAgreed(false);
71
+ } catch (err) {
72
+ setStatus("error");
73
+ setErrorMessage(
74
+ err instanceof Error ? err.message : "Something went wrong"
75
+ );
76
+ }
77
+ });
78
+ if (status === "success") {
79
+ return /* @__PURE__ */ jsx("div", { className: "isolate bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-800 dark:text-white", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-2xl text-center", children: [
80
+ /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-gray-100", children: "Message sent" }),
81
+ /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg leading-8 text-gray-600 dark:text-gray-400", children: "Thanks for reaching out. We'll get back to you as soon as possible." })
82
+ ] }) });
83
+ }
84
+ return /* @__PURE__ */ jsxs("div", { className: "isolate bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-800 dark:text-white", children: [
85
+ /* @__PURE__ */ jsx(
86
+ "div",
87
+ {
88
+ className: "absolute inset-x-0 top-[-10rem] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[-20rem]",
89
+ "aria-hidden": "true",
90
+ children: /* @__PURE__ */ jsx(
91
+ "div",
92
+ {
93
+ 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]",
94
+ style: {
95
+ clipPath: "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%)"
96
+ }
97
+ }
98
+ )
99
+ }
100
+ ),
101
+ /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-2xl text-center", children: [
102
+ /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl dark:text-gray-100", children: "Contact us" }),
103
+ /* @__PURE__ */ jsx("p", { className: "mt-2 text-lg leading-8 text-gray-600 dark:text-gray-400", children: "Have a question or want to learn more? Send us a message." })
104
+ ] }),
105
+ /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "mx-auto mt-16 max-w-xl sm:mt-20", children: [
106
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-x-8 gap-y-6 sm:grid-cols-2", children: [
107
+ /* @__PURE__ */ jsxs("div", { children: [
108
+ /* @__PURE__ */ jsx(
109
+ "label",
110
+ {
111
+ htmlFor: "first-name",
112
+ className: "block text-sm font-semibold leading-6 text-gray-900 dark:text-white",
113
+ children: "First name"
114
+ }
115
+ ),
116
+ /* @__PURE__ */ jsx("div", { className: "mt-2.5", children: /* @__PURE__ */ jsx(
117
+ Input,
118
+ {
119
+ type: "text",
120
+ name: "first-name",
121
+ id: "first-name",
122
+ autoComplete: "given-name",
123
+ required: true,
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"
126
+ }
127
+ ) })
128
+ ] }),
129
+ /* @__PURE__ */ jsxs("div", { children: [
130
+ /* @__PURE__ */ jsx(
131
+ "label",
132
+ {
133
+ htmlFor: "last-name",
134
+ className: "block text-sm font-semibold leading-6 text-gray-900 dark:text-white",
135
+ children: "Last name"
136
+ }
137
+ ),
138
+ /* @__PURE__ */ jsx("div", { className: "mt-2.5", children: /* @__PURE__ */ jsx(
139
+ Input,
140
+ {
141
+ type: "text",
142
+ name: "last-name",
143
+ id: "last-name",
144
+ autoComplete: "family-name",
145
+ required: true,
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"
148
+ }
149
+ ) })
150
+ ] }),
151
+ /* @__PURE__ */ jsxs("div", { className: "sm:col-span-2", children: [
152
+ /* @__PURE__ */ jsx(
153
+ "label",
154
+ {
155
+ htmlFor: "company",
156
+ className: "block text-sm font-semibold leading-6 text-gray-900 dark:text-white",
157
+ children: "Company"
158
+ }
159
+ ),
160
+ /* @__PURE__ */ jsx("div", { className: "mt-2.5", children: /* @__PURE__ */ jsx(
161
+ Input,
162
+ {
163
+ type: "text",
164
+ name: "company",
165
+ id: "company",
166
+ autoComplete: "organization",
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"
169
+ }
170
+ ) })
171
+ ] }),
172
+ /* @__PURE__ */ jsxs("div", { className: "sm:col-span-2", children: [
173
+ /* @__PURE__ */ jsx(
174
+ "label",
175
+ {
176
+ htmlFor: "email",
177
+ className: "block text-sm font-semibold leading-6 text-gray-900 dark:text-white",
178
+ children: "Email"
179
+ }
180
+ ),
181
+ /* @__PURE__ */ jsx("div", { className: "mt-2.5", children: /* @__PURE__ */ jsx(
182
+ Input,
183
+ {
184
+ type: "email",
185
+ name: "email",
186
+ id: "email",
187
+ autoComplete: "email",
188
+ required: true,
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"
191
+ }
192
+ ) })
193
+ ] }),
194
+ /* @__PURE__ */ jsxs("div", { className: "sm:col-span-2", children: [
195
+ /* @__PURE__ */ jsx(
196
+ "label",
197
+ {
198
+ htmlFor: "phone-number",
199
+ className: "block text-sm font-semibold leading-6 text-gray-900 dark:text-white",
200
+ children: "Phone number"
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsxs("div", { className: "relative mt-2.5", children: [
204
+ /* @__PURE__ */ jsxs("div", { className: "absolute inset-y-0 left-0 flex items-center", children: [
205
+ /* @__PURE__ */ jsx("label", { htmlFor: "country", className: "sr-only", children: "Country" }),
206
+ /* @__PURE__ */ jsxs(
207
+ "select",
208
+ {
209
+ id: "country",
210
+ name: "country",
211
+ disabled: status === "loading",
212
+ 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",
213
+ children: [
214
+ /* @__PURE__ */ jsx("option", { children: "US" }),
215
+ /* @__PURE__ */ jsx("option", { children: "CA" }),
216
+ /* @__PURE__ */ jsx("option", { children: "EU" })
217
+ ]
218
+ }
219
+ ),
220
+ /* @__PURE__ */ jsx(
221
+ ChevronDownIcon,
222
+ {
223
+ className: "pointer-events-none absolute right-3 top-0 h-full w-5 text-gray-400",
224
+ "aria-hidden": "true"
225
+ }
226
+ )
227
+ ] }),
228
+ /* @__PURE__ */ jsx(
229
+ Input,
230
+ {
231
+ type: "tel",
232
+ name: "phone-number",
233
+ id: "phone-number",
234
+ autoComplete: "tel",
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"
237
+ }
238
+ )
239
+ ] })
240
+ ] }),
241
+ /* @__PURE__ */ jsxs("div", { className: "sm:col-span-2", children: [
242
+ /* @__PURE__ */ jsx(
243
+ "label",
244
+ {
245
+ htmlFor: "message",
246
+ className: "block text-sm font-semibold leading-6 text-gray-900 dark:text-white",
247
+ children: "Message"
248
+ }
249
+ ),
250
+ /* @__PURE__ */ jsx("div", { className: "mt-2.5", children: /* @__PURE__ */ jsx(
251
+ "textarea",
252
+ {
253
+ name: "message",
254
+ id: "message",
255
+ rows: 4,
256
+ required: true,
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",
259
+ defaultValue: ""
260
+ }
261
+ ) })
262
+ ] }),
263
+ /* @__PURE__ */ jsxs(Switch.Group, { as: "div", className: "flex gap-x-4 sm:col-span-2", children: [
264
+ /* @__PURE__ */ jsx("div", { className: "flex h-6 items-center", children: /* @__PURE__ */ jsxs(
265
+ Switch,
266
+ {
267
+ checked: agreed,
268
+ onChange: setAgreed,
269
+ disabled: status === "loading",
270
+ className: classNames(
271
+ agreed ? "bg-primary-600" : "bg-gray-200",
272
+ "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"
273
+ ),
274
+ children: [
275
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Agree to policies" }),
276
+ /* @__PURE__ */ jsx(
277
+ "span",
278
+ {
279
+ "aria-hidden": "true",
280
+ className: classNames(
281
+ agreed ? "translate-x-3.5" : "translate-x-0",
282
+ "shadow-2xs h-4 w-4 transform rounded-full bg-white ring-1 ring-gray-900/5 transition duration-200 ease-in-out"
283
+ )
284
+ }
285
+ )
286
+ ]
287
+ }
288
+ ) }),
289
+ /* @__PURE__ */ jsxs(Switch.Label, { className: "text-sm leading-6 text-gray-600 dark:text-white", children: [
290
+ "By selecting this, you agree to our",
291
+ " ",
292
+ /* @__PURE__ */ jsx(
293
+ "a",
294
+ {
295
+ href: "/about/privacy",
296
+ className: "text-primary-600 font-semibold",
297
+ children: "privacy\xA0policy"
298
+ }
299
+ ),
300
+ "."
301
+ ] })
302
+ ] })
303
+ ] }),
304
+ errorMessage && /* @__PURE__ */ jsx(
305
+ "p",
306
+ {
307
+ className: "mt-4 text-sm text-red-600 dark:text-red-400",
308
+ role: "alert",
309
+ children: errorMessage
310
+ }
311
+ ),
312
+ /* @__PURE__ */ jsx("div", { className: "mt-10", children: /* @__PURE__ */ jsx(
313
+ "button",
314
+ {
315
+ type: "submit",
316
+ disabled: status === "loading",
317
+ 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",
318
+ children: status === "loading" ? "Sending\u2026" : "Send message"
319
+ }
320
+ ) }),
321
+ /* @__PURE__ */ jsxs("p", { className: "mt-4 text-center text-xs text-gray-400 dark:text-gray-500", children: [
322
+ "This site is protected by reCAPTCHA and the Google",
323
+ " ",
324
+ /* @__PURE__ */ jsx(
325
+ "a",
326
+ {
327
+ href: "https://policies.google.com/privacy",
328
+ className: "underline hover:text-gray-600 dark:hover:text-gray-300",
329
+ target: "_blank",
330
+ rel: "noopener noreferrer",
331
+ children: "Privacy Policy"
332
+ }
333
+ ),
334
+ " ",
335
+ "and",
336
+ " ",
337
+ /* @__PURE__ */ jsx(
338
+ "a",
339
+ {
340
+ href: "https://policies.google.com/terms",
341
+ className: "underline hover:text-gray-600 dark:hover:text-gray-300",
342
+ target: "_blank",
343
+ rel: "noopener noreferrer",
344
+ children: "Terms of Service"
345
+ }
346
+ ),
347
+ " ",
348
+ "apply."
349
+ ] })
350
+ ] })
351
+ ] });
352
+ };
353
+ export {
354
+ Contact
355
+ };
356
+ //# sourceMappingURL=contact.js.map
@@ -0,0 +1 @@
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-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 />\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-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 />\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-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 />\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-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 />\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-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 />\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-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 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":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var content_page_exports = {};
20
+ __export(content_page_exports, {
21
+ ContentList: () => ContentList,
22
+ ContentPage: () => ContentPage,
23
+ ContentSection: () => ContentSection
24
+ });
25
+ module.exports = __toCommonJS(content_page_exports);
26
+ var import_jsx_runtime = require("react/jsx-runtime");
27
+ function ContentPage({
28
+ title,
29
+ subtitle,
30
+ lastUpdated,
31
+ children
32
+ }) {
33
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bg-white dark:bg-gray-900", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8 lg:py-40", children: [
34
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-4xl font-semibold tracking-tight text-gray-900 sm:text-5xl dark:text-white", children: title }),
35
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-4 text-lg text-gray-600 dark:text-gray-400", children: subtitle }),
36
+ lastUpdated && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "mt-3 text-sm text-gray-400 dark:text-gray-500", children: [
37
+ "Last updated: ",
38
+ lastUpdated
39
+ ] }),
40
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dl", { className: "mt-16 divide-y divide-gray-900/10 dark:divide-white/10", children })
41
+ ] }) });
42
+ }
43
+ function ContentSection({ title, children }) {
44
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "py-8 first:pt-0 last:pb-0 lg:grid lg:grid-cols-12 lg:gap-8", children: [
45
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base/7 font-semibold text-gray-900 lg:col-span-5 dark:text-white", children: title }),
46
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-4 space-y-4 text-base/7 text-gray-600 lg:col-span-7 lg:mt-0 dark:text-gray-400", children })
47
+ ] });
48
+ }
49
+ function ContentList({ items }) {
50
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { className: "list-disc space-y-2 pl-5", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: item }, i)) });
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ ContentList,
55
+ ContentPage,
56
+ ContentSection
57
+ });
58
+ //# sourceMappingURL=content-page.cjs.map
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,18 @@
1
+ import { ReactNode } from 'react';
2
+ interface ContentPageProps {
3
+ title: string;
4
+ subtitle?: string;
5
+ lastUpdated?: string;
6
+ children: ReactNode;
7
+ }
8
+ export declare function ContentPage({ title, subtitle, lastUpdated, children, }: ContentPageProps): import("react/jsx-runtime").JSX.Element;
9
+ interface ContentSectionProps {
10
+ title: string;
11
+ children: ReactNode;
12
+ }
13
+ export declare function ContentSection({ title, children }: ContentSectionProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ContentList({ items }: {
15
+ items: ReactNode[];
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=content-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-page.d.ts","sourceRoot":"","sources":["../../../components/tailwind/content-page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,gBAAgB,2CAuBlB;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAWtE;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,2CAQ5D"}
@@ -0,0 +1,32 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ function ContentPage({
3
+ title,
4
+ subtitle,
5
+ lastUpdated,
6
+ children
7
+ }) {
8
+ return /* @__PURE__ */ jsx("div", { className: "bg-white dark:bg-gray-900", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-7xl px-6 py-24 sm:py-32 lg:px-8 lg:py-40", children: [
9
+ /* @__PURE__ */ jsx("h2", { className: "text-4xl font-semibold tracking-tight text-gray-900 sm:text-5xl dark:text-white", children: title }),
10
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-gray-600 dark:text-gray-400", children: subtitle }),
11
+ lastUpdated && /* @__PURE__ */ jsxs("p", { className: "mt-3 text-sm text-gray-400 dark:text-gray-500", children: [
12
+ "Last updated: ",
13
+ lastUpdated
14
+ ] }),
15
+ /* @__PURE__ */ jsx("dl", { className: "mt-16 divide-y divide-gray-900/10 dark:divide-white/10", children })
16
+ ] }) });
17
+ }
18
+ function ContentSection({ title, children }) {
19
+ return /* @__PURE__ */ jsxs("div", { className: "py-8 first:pt-0 last:pb-0 lg:grid lg:grid-cols-12 lg:gap-8", children: [
20
+ /* @__PURE__ */ jsx("dt", { className: "text-base/7 font-semibold text-gray-900 lg:col-span-5 dark:text-white", children: title }),
21
+ /* @__PURE__ */ jsx("dd", { className: "mt-4 space-y-4 text-base/7 text-gray-600 lg:col-span-7 lg:mt-0 dark:text-gray-400", children })
22
+ ] });
23
+ }
24
+ function ContentList({ items }) {
25
+ return /* @__PURE__ */ jsx("ul", { className: "list-disc space-y-2 pl-5", children: items.map((item, i) => /* @__PURE__ */ jsx("li", { children: item }, i)) });
26
+ }
27
+ export {
28
+ ContentList,
29
+ ContentPage,
30
+ ContentSection
31
+ };
32
+ //# sourceMappingURL=content-page.js.map
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var feature_exports = {};
20
+ __export(feature_exports, {
21
+ Feature: () => Feature
22
+ });
23
+ module.exports = __toCommonJS(feature_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_solid = require("@heroicons/react/20/solid");
26
+ const features = [
27
+ {
28
+ name: "AI story assistant",
29
+ description: "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.",
30
+ href: "/about/features",
31
+ icon: import_solid.SparklesIcon
32
+ },
33
+ {
34
+ name: "Wiki-style story bibles",
35
+ description: "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.",
36
+ href: "/about/features",
37
+ icon: import_solid.BookOpenIcon
38
+ },
39
+ {
40
+ name: "Characters, locations & timelines",
41
+ description: "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.",
42
+ href: "/about/features",
43
+ icon: import_solid.UsersIcon
44
+ }
45
+ ];
46
+ const Feature = () => {
47
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
48
+ "div",
49
+ {
50
+ className: "relative bg-gray-900 bg-cover bg-center bg-no-repeat py-24 sm:py-32",
51
+ style: { backgroundImage: "url('/img/bg-footer.png')" },
52
+ children: [
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-gray-900/80" }),
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative mx-auto max-w-7xl px-6 lg:px-8", children: [
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto max-w-2xl lg:text-center", children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-primary-400 text-base font-semibold leading-7", children: "Built for storytellers" }),
57
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-2 text-3xl font-bold tracking-tight text-white sm:text-4xl", children: "Everything a writer needs to stay in the flow" }),
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-6 text-lg leading-8 text-gray-300", children: "Whether you write novels, screenplays, games, or fan fiction, Story Bible Ultimate adapts to your process. Start simple and grow your world as your story does." })
59
+ ] }),
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dl", { className: "grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3", children: features.map((feature) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col", children: [
61
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("dt", { className: "flex items-center gap-x-3 text-base font-semibold leading-7 text-white", children: [
62
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
+ feature.icon,
64
+ {
65
+ className: "text-primary-400 h-5 w-5 flex-none",
66
+ "aria-hidden": "true"
67
+ }
68
+ ),
69
+ feature.name
70
+ ] }),
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("dd", { className: "mt-4 flex flex-auto flex-col text-base leading-7 text-gray-300", children: [
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "flex-auto", children: feature.description }),
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-6", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
74
+ "a",
75
+ {
76
+ href: feature.href,
77
+ className: "text-primary-400 text-sm font-semibold leading-6",
78
+ children: [
79
+ "Learn more ",
80
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "aria-hidden": "true", children: "\u2192" })
81
+ ]
82
+ }
83
+ ) })
84
+ ] })
85
+ ] }, feature.name)) }) })
86
+ ] })
87
+ ]
88
+ }
89
+ );
90
+ };
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ Feature
94
+ });
95
+ //# sourceMappingURL=feature.cjs.map
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,2 @@
1
+ export declare const Feature: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=feature.d.ts.map