@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
@@ -100,28 +100,28 @@ const Pricing = ({ onSubscribe }) => {
100
100
  setLoading(false);
101
101
  }
102
102
  });
103
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bg-gray-900", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("main", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8", children: [
103
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bg-white dark:bg-gray-900", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("main", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8", children: [
104
104
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto max-w-4xl text-center", children: [
105
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-base font-semibold leading-7 text-indigo-400", children: "Pricing" }),
106
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl", children: "Start free. Upgrade when you're ready." })
105
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400", children: "Pricing" }),
106
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl dark:text-white", children: "Start free. Upgrade when you're ready." })
107
107
  ] }),
108
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-300", children: "Build your story bible for free. Subscribe for unlimited worlds, characters, and creative freedom." }),
108
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-600 dark:text-gray-300", children: "Build your story bible for free. Subscribe for unlimited worlds, characters, and creative freedom." }),
109
109
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "isolate mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-2", children: [
110
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-3xl p-8 ring-1 ring-white/10 xl:p-10", children: [
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-3xl p-8 ring-1 ring-gray-900/10 xl:p-10 dark:ring-white/10", children: [
111
111
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-x-4", children: [
112
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-lg font-semibold leading-8 text-white", children: "Preview" }),
113
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "rounded-full bg-white/10 px-2.5 py-1 text-xs font-semibold leading-5 text-white", children: "Free forever" })
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-lg font-semibold leading-8 text-gray-900 dark:text-white", children: "Preview" }),
113
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "rounded-full bg-gray-900/5 px-2.5 py-1 text-xs font-semibold leading-5 text-gray-900 dark:bg-white/10 dark:text-white", children: "Free forever" })
114
114
  ] }),
115
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-4 text-sm leading-6 text-gray-300", children: "Explore Story Bible and start building your creative world with no commitment." }),
115
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300", children: "Explore Story Bible and start building your creative world with no commitment." }),
116
116
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "mt-6 flex items-baseline gap-x-1", children: [
117
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-4xl font-bold tracking-tight text-white", children: "$0" }),
118
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm font-semibold leading-6 text-gray-300", children: "/month" })
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-4xl font-bold tracking-tight text-gray-900 dark:text-white", children: "$0" }),
118
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300", children: "/month" })
119
119
  ] }),
120
120
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
121
121
  "a",
122
122
  {
123
123
  href: "/signin",
124
- className: "mt-6 block rounded-md bg-white/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-white hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white",
124
+ className: "mt-6 block rounded-md bg-gray-900/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-gray-900 hover:bg-gray-900/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900 dark:bg-white/10 dark:text-white dark:hover:bg-white/20 dark:focus-visible:outline-white",
125
125
  children: "Get started free"
126
126
  }
127
127
  ),
@@ -129,12 +129,12 @@ const Pricing = ({ onSubscribe }) => {
129
129
  "ul",
130
130
  {
131
131
  role: "list",
132
- className: "mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10",
132
+ className: "mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300",
133
133
  children: FREE_FEATURES.map((feature) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { className: "flex gap-x-3", children: [
134
134
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
135
135
  import_lucide_react.Check,
136
136
  {
137
- className: "h-6 w-5 flex-none text-white",
137
+ className: "h-6 w-5 flex-none text-gray-900 dark:text-white",
138
138
  "aria-hidden": "true"
139
139
  }
140
140
  ),
@@ -143,15 +143,15 @@ const Pricing = ({ onSubscribe }) => {
143
143
  }
144
144
  )
145
145
  ] }),
146
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-3xl bg-white/5 p-8 ring-2 ring-indigo-500 xl:p-10", children: [
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-3xl bg-gray-900/5 p-8 ring-2 ring-indigo-500 xl:p-10 dark:bg-white/5", children: [
147
147
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-x-4", children: [
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-lg font-semibold leading-8 text-white", children: "Pro" }),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-lg font-semibold leading-8 text-gray-900 dark:text-white", children: "Pro" }),
149
149
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "rounded-full bg-indigo-500 px-2.5 py-1 text-xs font-semibold leading-5 text-white", children: "Most popular" })
150
150
  ] }),
151
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-4 text-sm leading-6 text-gray-300", children: "Unlock unlimited stories, characters, locations, and timelines. Build entire universes." }),
151
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300", children: "Unlock unlimited stories, characters, locations, and timelines. Build entire universes." }),
152
152
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "mt-6 flex items-baseline gap-x-1", children: [
153
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-4xl font-bold tracking-tight text-white", children: "$9.99" }),
154
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm font-semibold leading-6 text-gray-300", children: "/month" })
153
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-4xl font-bold tracking-tight text-gray-900 dark:text-white", children: "$9.99" }),
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300", children: "/month" })
155
155
  ] }),
156
156
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
157
157
  "button",
@@ -168,17 +168,17 @@ const Pricing = ({ onSubscribe }) => {
168
168
  ]
169
169
  }
170
170
  ),
171
- error && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-3 text-center text-sm text-red-400", children: error }),
171
+ error && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-3 text-center text-sm text-red-600 dark:text-red-400", children: error }),
172
172
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
173
173
  "ul",
174
174
  {
175
175
  role: "list",
176
- className: "mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10",
176
+ className: "mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300",
177
177
  children: PRO_FEATURES.map((feature) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { className: "flex gap-x-3", children: [
178
178
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
179
179
  import_lucide_react.Check,
180
180
  {
181
- className: "h-6 w-5 flex-none text-white",
181
+ className: "h-6 w-5 flex-none text-gray-900 dark:text-white",
182
182
  "aria-hidden": "true"
183
183
  }
184
184
  ),
@@ -189,19 +189,19 @@ const Pricing = ({ onSubscribe }) => {
189
189
  ] })
190
190
  ] }),
191
191
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto mt-24 max-w-2xl pb-24", children: [
192
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl font-bold leading-10 tracking-tight text-white", children: "Frequently asked questions" }),
192
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl font-bold leading-10 tracking-tight text-gray-900 dark:text-white", children: "Frequently asked questions" }),
193
193
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("dl", { className: "mt-10 space-y-8", children: [
194
194
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
195
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base font-semibold leading-7 text-white", children: "Can I cancel anytime?" }),
196
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-2 text-base leading-7 text-gray-300", children: "Yes. You can cancel at any time from the subscription management page. You retain Pro access until the end of your current billing period." })
195
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base font-semibold leading-7 text-gray-900 dark:text-white", children: "Can I cancel anytime?" }),
196
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-2 text-base leading-7 text-gray-600 dark:text-gray-300", children: "Yes. You can cancel at any time from the subscription management page. You retain Pro access until the end of your current billing period." })
197
197
  ] }),
198
198
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
199
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base font-semibold leading-7 text-white", children: "What happens to my data if I downgrade?" }),
200
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-2 text-base leading-7 text-gray-300", children: "Your existing stories and characters are never deleted. You'll just be unable to create new ones beyond the preview limits until you resubscribe." })
199
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base font-semibold leading-7 text-gray-900 dark:text-white", children: "What happens to my data if I downgrade?" }),
200
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-2 text-base leading-7 text-gray-600 dark:text-gray-300", children: "Your existing stories and characters are never deleted. You'll just be unable to create new ones beyond the preview limits until you resubscribe." })
201
201
  ] }),
202
202
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
203
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base font-semibold leading-7 text-white", children: "Is billing monthly or annually?" }),
204
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-2 text-base leading-7 text-gray-300", children: "Currently monthly only. Annual billing with a discount is coming soon." })
203
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dt", { className: "text-base font-semibold leading-7 text-gray-900 dark:text-white", children: "Is billing monthly or annually?" }),
204
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("dd", { className: "mt-2 text-base leading-7 text-gray-600 dark:text-gray-300", children: "Currently monthly only. Annual billing with a discount is coming soon." })
205
205
  ] })
206
206
  ] })
207
207
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/pricing.tsx"],"sourcesContent":["'use client'\r\nimport { useState } from 'react'\r\nimport { Check, Zap } from 'lucide-react'\r\n\r\nconst FREE_FEATURES = [\r\n '1 story',\r\n '10 characters',\r\n '10 locations',\r\n '1 timeline',\r\n 'Image galleries',\r\n 'Public sharing',\r\n]\r\n\r\nconst PRO_FEATURES = [\r\n 'Unlimited stories',\r\n 'Unlimited characters',\r\n 'Unlimited locations',\r\n 'Unlimited timelines',\r\n 'Image galleries',\r\n 'Public sharing',\r\n 'Priority support',\r\n]\r\n\r\nfunction classNames(...classes: string[]) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\ninterface PricingProps {\r\n onSubscribe?: () => void\r\n}\r\n\r\nexport const Pricing = ({ onSubscribe }: PricingProps) => {\r\n const [loading, setLoading] = useState(false)\r\n const [error, setError] = useState<string | null>(null)\r\n\r\n const handleSubscribe = async () => {\r\n if (onSubscribe) {\r\n onSubscribe()\r\n return\r\n }\r\n setLoading(true)\r\n setError(null)\r\n try {\r\n const response = await fetch('/api/subscription/checkout', {\r\n method: 'POST',\r\n })\r\n if (!response.ok) {\r\n if (response.status === 401) {\r\n window.location.href = `/signin?callbackUrl=${encodeURIComponent(window.location.pathname)}`\r\n return\r\n }\r\n const data = (await response.json().catch(() => ({}))) as {\r\n error?: string\r\n }\r\n throw new Error(data.error ?? 'Failed to create checkout session')\r\n }\r\n const data = (await response.json()) as { url: string }\r\n if (data.url) {\r\n window.location.href = data.url\r\n }\r\n } catch (err) {\r\n setError(\r\n err instanceof Error\r\n ? err.message\r\n : 'Something went wrong. Please try again.',\r\n )\r\n } finally {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"bg-gray-900\">\r\n <main>\r\n {/* Header */}\r\n <div className=\"mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8\">\r\n <div className=\"mx-auto max-w-4xl text-center\">\r\n <h1 className=\"text-base font-semibold leading-7 text-indigo-400\">\r\n Pricing\r\n </h1>\r\n <p className=\"mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl\">\r\n Start free. Upgrade when you&apos;re ready.\r\n </p>\r\n </div>\r\n <p className=\"mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-300\">\r\n Build your story bible for free. Subscribe for unlimited worlds,\r\n characters, and creative freedom.\r\n </p>\r\n\r\n {/* Pricing cards */}\r\n <div className=\"isolate mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-2\">\r\n {/* Free tier */}\r\n <div className=\"rounded-3xl p-8 ring-1 ring-white/10 xl:p-10\">\r\n <div className=\"flex items-center justify-between gap-x-4\">\r\n <h2 className=\"text-lg font-semibold leading-8 text-white\">\r\n Preview\r\n </h2>\r\n <p className=\"rounded-full bg-white/10 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\r\n Free forever\r\n </p>\r\n </div>\r\n <p className=\"mt-4 text-sm leading-6 text-gray-300\">\r\n Explore Story Bible and start building your creative world with\r\n no commitment.\r\n </p>\r\n <p className=\"mt-6 flex items-baseline gap-x-1\">\r\n <span className=\"text-4xl font-bold tracking-tight text-white\">\r\n $0\r\n </span>\r\n <span className=\"text-sm font-semibold leading-6 text-gray-300\">\r\n /month\r\n </span>\r\n </p>\r\n <a\r\n href=\"/signin\"\r\n className=\"mt-6 block rounded-md bg-white/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-white hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\r\n >\r\n Get started free\r\n </a>\r\n <ul\r\n role=\"list\"\r\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10\"\r\n >\r\n {FREE_FEATURES.map((feature) => (\r\n <li key={feature} className=\"flex gap-x-3\">\r\n <Check\r\n className=\"h-6 w-5 flex-none text-white\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n\r\n {/* Pro tier */}\r\n <div className=\"rounded-3xl bg-white/5 p-8 ring-2 ring-indigo-500 xl:p-10\">\r\n <div className=\"flex items-center justify-between gap-x-4\">\r\n <h2 className=\"text-lg font-semibold leading-8 text-white\">\r\n Pro\r\n </h2>\r\n <p className=\"rounded-full bg-indigo-500 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\r\n Most popular\r\n </p>\r\n </div>\r\n <p className=\"mt-4 text-sm leading-6 text-gray-300\">\r\n Unlock unlimited stories, characters, locations, and timelines.\r\n Build entire universes.\r\n </p>\r\n <p className=\"mt-6 flex items-baseline gap-x-1\">\r\n <span className=\"text-4xl font-bold tracking-tight text-white\">\r\n $9.99\r\n </span>\r\n <span className=\"text-sm font-semibold leading-6 text-gray-300\">\r\n /month\r\n </span>\r\n </p>\r\n <button\r\n onClick={handleSubscribe}\r\n disabled={loading}\r\n className={classNames(\r\n 'mt-6 flex w-full items-center justify-center gap-2 rounded-md px-3 py-2 text-center text-sm font-semibold leading-6 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-500',\r\n loading\r\n ? 'cursor-not-allowed bg-indigo-400 text-white'\r\n : 'shadow-2xs bg-indigo-500 text-white hover:bg-indigo-400',\r\n )}\r\n >\r\n <Zap className=\"h-4 w-4\" aria-hidden=\"true\" />\r\n {loading ? 'Redirecting…' : 'Subscribe — $9.99/mo'}\r\n </button>\r\n {error && (\r\n <p className=\"mt-3 text-center text-sm text-red-400\">{error}</p>\r\n )}\r\n <ul\r\n role=\"list\"\r\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10\"\r\n >\r\n {PRO_FEATURES.map((feature) => (\r\n <li key={feature} className=\"flex gap-x-3\">\r\n <Check\r\n className=\"h-6 w-5 flex-none text-white\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n {/* FAQ */}\r\n <div className=\"mx-auto mt-24 max-w-2xl pb-24\">\r\n <h2 className=\"text-2xl font-bold leading-10 tracking-tight text-white\">\r\n Frequently asked questions\r\n </h2>\r\n <dl className=\"mt-10 space-y-8\">\r\n <div>\r\n <dt className=\"text-base font-semibold leading-7 text-white\">\r\n Can I cancel anytime?\r\n </dt>\r\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\r\n Yes. You can cancel at any time from the subscription\r\n management page. You retain Pro access until the end of your\r\n current billing period.\r\n </dd>\r\n </div>\r\n <div>\r\n <dt className=\"text-base font-semibold leading-7 text-white\">\r\n What happens to my data if I downgrade?\r\n </dt>\r\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\r\n Your existing stories and characters are never deleted.\r\n You&apos;ll just be unable to create new ones beyond the\r\n preview limits until you resubscribe.\r\n </dd>\r\n </div>\r\n <div>\r\n <dt className=\"text-base font-semibold leading-7 text-white\">\r\n Is billing monthly or annually?\r\n </dt>\r\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\r\n Currently monthly only. Annual billing with a discount is\r\n coming soon.\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n </div>\r\n </main>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":["data"]}
1
+ {"version":3,"sources":["../../../components/tailwind/pricing.tsx"],"sourcesContent":["'use client'\nimport { useState } from 'react'\nimport { Check, Zap } from 'lucide-react'\n\nconst FREE_FEATURES = [\n '1 story',\n '10 characters',\n '10 locations',\n '1 timeline',\n 'Image galleries',\n 'Public sharing',\n]\n\nconst PRO_FEATURES = [\n 'Unlimited stories',\n 'Unlimited characters',\n 'Unlimited locations',\n 'Unlimited timelines',\n 'Image galleries',\n 'Public sharing',\n 'Priority support',\n]\n\nfunction classNames(...classes: string[]) {\n return classes.filter(Boolean).join(' ')\n}\n\ninterface PricingProps {\n onSubscribe?: () => void\n}\n\nexport const Pricing = ({ onSubscribe }: PricingProps) => {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const handleSubscribe = async () => {\n if (onSubscribe) {\n onSubscribe()\n return\n }\n setLoading(true)\n setError(null)\n try {\n const response = await fetch('/api/subscription/checkout', {\n method: 'POST',\n })\n if (!response.ok) {\n if (response.status === 401) {\n window.location.href = `/signin?callbackUrl=${encodeURIComponent(window.location.pathname)}`\n return\n }\n const data = (await response.json().catch(() => ({}))) as {\n error?: string\n }\n throw new Error(data.error ?? 'Failed to create checkout session')\n }\n const data = (await response.json()) as { url: string }\n if (data.url) {\n window.location.href = data.url\n }\n } catch (err) {\n setError(\n err instanceof Error\n ? err.message\n : 'Something went wrong. Please try again.',\n )\n } finally {\n setLoading(false)\n }\n }\n\n return (\n <div className=\"bg-white dark:bg-gray-900\">\n <main>\n {/* Header */}\n <div className=\"mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8\">\n <div className=\"mx-auto max-w-4xl text-center\">\n <h1 className=\"text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400\">\n Pricing\n </h1>\n <p className=\"mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl dark:text-white\">\n Start free. Upgrade when you&apos;re ready.\n </p>\n </div>\n <p className=\"mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-600 dark:text-gray-300\">\n Build your story bible for free. Subscribe for unlimited worlds,\n characters, and creative freedom.\n </p>\n\n {/* Pricing cards */}\n <div className=\"isolate mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-2\">\n {/* Free tier */}\n <div className=\"rounded-3xl p-8 ring-1 ring-gray-900/10 xl:p-10 dark:ring-white/10\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 text-gray-900 dark:text-white\">\n Preview\n </h2>\n <p className=\"rounded-full bg-gray-900/5 px-2.5 py-1 text-xs font-semibold leading-5 text-gray-900 dark:bg-white/10 dark:text-white\">\n Free forever\n </p>\n </div>\n <p className=\"mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300\">\n Explore Story Bible and start building your creative world with\n no commitment.\n </p>\n <p className=\"mt-6 flex items-baseline gap-x-1\">\n <span className=\"text-4xl font-bold tracking-tight text-gray-900 dark:text-white\">\n $0\n </span>\n <span className=\"text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300\">\n /month\n </span>\n </p>\n <a\n href=\"/signin\"\n className=\"mt-6 block rounded-md bg-gray-900/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-gray-900 hover:bg-gray-900/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900 dark:bg-white/10 dark:text-white dark:hover:bg-white/20 dark:focus-visible:outline-white\"\n >\n Get started free\n </a>\n <ul\n role=\"list\"\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300\"\n >\n {FREE_FEATURES.map((feature) => (\n <li key={feature} className=\"flex gap-x-3\">\n <Check\n className=\"h-6 w-5 flex-none text-gray-900 dark:text-white\"\n aria-hidden=\"true\"\n />\n {feature}\n </li>\n ))}\n </ul>\n </div>\n\n {/* Pro tier */}\n <div className=\"rounded-3xl bg-gray-900/5 p-8 ring-2 ring-indigo-500 xl:p-10 dark:bg-white/5\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 text-gray-900 dark:text-white\">\n Pro\n </h2>\n <p className=\"rounded-full bg-indigo-500 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\n Most popular\n </p>\n </div>\n <p className=\"mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300\">\n Unlock unlimited stories, characters, locations, and timelines.\n Build entire universes.\n </p>\n <p className=\"mt-6 flex items-baseline gap-x-1\">\n <span className=\"text-4xl font-bold tracking-tight text-gray-900 dark:text-white\">\n $9.99\n </span>\n <span className=\"text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300\">\n /month\n </span>\n </p>\n <button\n onClick={handleSubscribe}\n disabled={loading}\n className={classNames(\n 'mt-6 flex w-full items-center justify-center gap-2 rounded-md px-3 py-2 text-center text-sm font-semibold leading-6 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-500',\n loading\n ? 'cursor-not-allowed bg-indigo-400 text-white'\n : 'shadow-2xs bg-indigo-500 text-white hover:bg-indigo-400',\n )}\n >\n <Zap className=\"h-4 w-4\" aria-hidden=\"true\" />\n {loading ? 'Redirecting…' : 'Subscribe — $9.99/mo'}\n </button>\n {error && (\n <p className=\"mt-3 text-center text-sm text-red-600 dark:text-red-400\">\n {error}\n </p>\n )}\n <ul\n role=\"list\"\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300\"\n >\n {PRO_FEATURES.map((feature) => (\n <li key={feature} className=\"flex gap-x-3\">\n <Check\n className=\"h-6 w-5 flex-none text-gray-900 dark:text-white\"\n aria-hidden=\"true\"\n />\n {feature}\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n {/* FAQ */}\n <div className=\"mx-auto mt-24 max-w-2xl pb-24\">\n <h2 className=\"text-2xl font-bold leading-10 tracking-tight text-gray-900 dark:text-white\">\n Frequently asked questions\n </h2>\n <dl className=\"mt-10 space-y-8\">\n <div>\n <dt className=\"text-base font-semibold leading-7 text-gray-900 dark:text-white\">\n Can I cancel anytime?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-600 dark:text-gray-300\">\n Yes. You can cancel at any time from the subscription\n management page. You retain Pro access until the end of your\n current billing period.\n </dd>\n </div>\n <div>\n <dt className=\"text-base font-semibold leading-7 text-gray-900 dark:text-white\">\n What happens to my data if I downgrade?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-600 dark:text-gray-300\">\n Your existing stories and characters are never deleted.\n You&apos;ll just be unable to create new ones beyond the\n preview limits until you resubscribe.\n </dd>\n </div>\n <div>\n <dt className=\"text-base font-semibold leading-7 text-gray-900 dark:text-white\">\n Is billing monthly or annually?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-600 dark:text-gray-300\">\n Currently monthly only. Annual billing with a discount is\n coming soon.\n </dd>\n </div>\n </dl>\n </div>\n </div>\n </main>\n </div>\n )\n}\n"],"mappings":"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","names":["data"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../components/tailwind/pricing.tsx"],"names":[],"mappings":"AA2BA,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,eAAO,MAAM,OAAO,GAAI,iBAAiB,YAAY,gCAwMpD,CAAA"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../../components/tailwind/pricing.tsx"],"names":[],"mappings":"AA2BA,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,eAAO,MAAM,OAAO,GAAI,iBAAiB,YAAY,gCA0MpD,CAAA"}
@@ -77,28 +77,28 @@ const Pricing = ({ onSubscribe }) => {
77
77
  setLoading(false);
78
78
  }
79
79
  });
80
- return /* @__PURE__ */ jsx("div", { className: "bg-gray-900", children: /* @__PURE__ */ jsx("main", { children: /* @__PURE__ */ jsxs("div", { className: "mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8", children: [
80
+ return /* @__PURE__ */ jsx("div", { className: "bg-white dark:bg-gray-900", children: /* @__PURE__ */ jsx("main", { children: /* @__PURE__ */ jsxs("div", { className: "mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8", children: [
81
81
  /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-4xl text-center", children: [
82
- /* @__PURE__ */ jsx("h1", { className: "text-base font-semibold leading-7 text-indigo-400", children: "Pricing" }),
83
- /* @__PURE__ */ jsx("p", { className: "mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl", children: "Start free. Upgrade when you're ready." })
82
+ /* @__PURE__ */ jsx("h1", { className: "text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400", children: "Pricing" }),
83
+ /* @__PURE__ */ jsx("p", { className: "mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl dark:text-white", children: "Start free. Upgrade when you're ready." })
84
84
  ] }),
85
- /* @__PURE__ */ jsx("p", { className: "mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-300", children: "Build your story bible for free. Subscribe for unlimited worlds, characters, and creative freedom." }),
85
+ /* @__PURE__ */ jsx("p", { className: "mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-600 dark:text-gray-300", children: "Build your story bible for free. Subscribe for unlimited worlds, characters, and creative freedom." }),
86
86
  /* @__PURE__ */ jsxs("div", { className: "isolate mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-2", children: [
87
- /* @__PURE__ */ jsxs("div", { className: "rounded-3xl p-8 ring-1 ring-white/10 xl:p-10", children: [
87
+ /* @__PURE__ */ jsxs("div", { className: "rounded-3xl p-8 ring-1 ring-gray-900/10 xl:p-10 dark:ring-white/10", children: [
88
88
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-x-4", children: [
89
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold leading-8 text-white", children: "Preview" }),
90
- /* @__PURE__ */ jsx("p", { className: "rounded-full bg-white/10 px-2.5 py-1 text-xs font-semibold leading-5 text-white", children: "Free forever" })
89
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold leading-8 text-gray-900 dark:text-white", children: "Preview" }),
90
+ /* @__PURE__ */ jsx("p", { className: "rounded-full bg-gray-900/5 px-2.5 py-1 text-xs font-semibold leading-5 text-gray-900 dark:bg-white/10 dark:text-white", children: "Free forever" })
91
91
  ] }),
92
- /* @__PURE__ */ jsx("p", { className: "mt-4 text-sm leading-6 text-gray-300", children: "Explore Story Bible and start building your creative world with no commitment." }),
92
+ /* @__PURE__ */ jsx("p", { className: "mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300", children: "Explore Story Bible and start building your creative world with no commitment." }),
93
93
  /* @__PURE__ */ jsxs("p", { className: "mt-6 flex items-baseline gap-x-1", children: [
94
- /* @__PURE__ */ jsx("span", { className: "text-4xl font-bold tracking-tight text-white", children: "$0" }),
95
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold leading-6 text-gray-300", children: "/month" })
94
+ /* @__PURE__ */ jsx("span", { className: "text-4xl font-bold tracking-tight text-gray-900 dark:text-white", children: "$0" }),
95
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300", children: "/month" })
96
96
  ] }),
97
97
  /* @__PURE__ */ jsx(
98
98
  "a",
99
99
  {
100
100
  href: "/signin",
101
- className: "mt-6 block rounded-md bg-white/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-white hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white",
101
+ className: "mt-6 block rounded-md bg-gray-900/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-gray-900 hover:bg-gray-900/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900 dark:bg-white/10 dark:text-white dark:hover:bg-white/20 dark:focus-visible:outline-white",
102
102
  children: "Get started free"
103
103
  }
104
104
  ),
@@ -106,12 +106,12 @@ const Pricing = ({ onSubscribe }) => {
106
106
  "ul",
107
107
  {
108
108
  role: "list",
109
- className: "mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10",
109
+ className: "mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300",
110
110
  children: FREE_FEATURES.map((feature) => /* @__PURE__ */ jsxs("li", { className: "flex gap-x-3", children: [
111
111
  /* @__PURE__ */ jsx(
112
112
  Check,
113
113
  {
114
- className: "h-6 w-5 flex-none text-white",
114
+ className: "h-6 w-5 flex-none text-gray-900 dark:text-white",
115
115
  "aria-hidden": "true"
116
116
  }
117
117
  ),
@@ -120,15 +120,15 @@ const Pricing = ({ onSubscribe }) => {
120
120
  }
121
121
  )
122
122
  ] }),
123
- /* @__PURE__ */ jsxs("div", { className: "rounded-3xl bg-white/5 p-8 ring-2 ring-indigo-500 xl:p-10", children: [
123
+ /* @__PURE__ */ jsxs("div", { className: "rounded-3xl bg-gray-900/5 p-8 ring-2 ring-indigo-500 xl:p-10 dark:bg-white/5", children: [
124
124
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-x-4", children: [
125
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold leading-8 text-white", children: "Pro" }),
125
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold leading-8 text-gray-900 dark:text-white", children: "Pro" }),
126
126
  /* @__PURE__ */ jsx("p", { className: "rounded-full bg-indigo-500 px-2.5 py-1 text-xs font-semibold leading-5 text-white", children: "Most popular" })
127
127
  ] }),
128
- /* @__PURE__ */ jsx("p", { className: "mt-4 text-sm leading-6 text-gray-300", children: "Unlock unlimited stories, characters, locations, and timelines. Build entire universes." }),
128
+ /* @__PURE__ */ jsx("p", { className: "mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300", children: "Unlock unlimited stories, characters, locations, and timelines. Build entire universes." }),
129
129
  /* @__PURE__ */ jsxs("p", { className: "mt-6 flex items-baseline gap-x-1", children: [
130
- /* @__PURE__ */ jsx("span", { className: "text-4xl font-bold tracking-tight text-white", children: "$9.99" }),
131
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold leading-6 text-gray-300", children: "/month" })
130
+ /* @__PURE__ */ jsx("span", { className: "text-4xl font-bold tracking-tight text-gray-900 dark:text-white", children: "$9.99" }),
131
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300", children: "/month" })
132
132
  ] }),
133
133
  /* @__PURE__ */ jsxs(
134
134
  "button",
@@ -145,17 +145,17 @@ const Pricing = ({ onSubscribe }) => {
145
145
  ]
146
146
  }
147
147
  ),
148
- error && /* @__PURE__ */ jsx("p", { className: "mt-3 text-center text-sm text-red-400", children: error }),
148
+ error && /* @__PURE__ */ jsx("p", { className: "mt-3 text-center text-sm text-red-600 dark:text-red-400", children: error }),
149
149
  /* @__PURE__ */ jsx(
150
150
  "ul",
151
151
  {
152
152
  role: "list",
153
- className: "mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10",
153
+ className: "mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300",
154
154
  children: PRO_FEATURES.map((feature) => /* @__PURE__ */ jsxs("li", { className: "flex gap-x-3", children: [
155
155
  /* @__PURE__ */ jsx(
156
156
  Check,
157
157
  {
158
- className: "h-6 w-5 flex-none text-white",
158
+ className: "h-6 w-5 flex-none text-gray-900 dark:text-white",
159
159
  "aria-hidden": "true"
160
160
  }
161
161
  ),
@@ -166,19 +166,19 @@ const Pricing = ({ onSubscribe }) => {
166
166
  ] })
167
167
  ] }),
168
168
  /* @__PURE__ */ jsxs("div", { className: "mx-auto mt-24 max-w-2xl pb-24", children: [
169
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold leading-10 tracking-tight text-white", children: "Frequently asked questions" }),
169
+ /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold leading-10 tracking-tight text-gray-900 dark:text-white", children: "Frequently asked questions" }),
170
170
  /* @__PURE__ */ jsxs("dl", { className: "mt-10 space-y-8", children: [
171
171
  /* @__PURE__ */ jsxs("div", { children: [
172
- /* @__PURE__ */ jsx("dt", { className: "text-base font-semibold leading-7 text-white", children: "Can I cancel anytime?" }),
173
- /* @__PURE__ */ jsx("dd", { className: "mt-2 text-base leading-7 text-gray-300", children: "Yes. You can cancel at any time from the subscription management page. You retain Pro access until the end of your current billing period." })
172
+ /* @__PURE__ */ jsx("dt", { className: "text-base font-semibold leading-7 text-gray-900 dark:text-white", children: "Can I cancel anytime?" }),
173
+ /* @__PURE__ */ jsx("dd", { className: "mt-2 text-base leading-7 text-gray-600 dark:text-gray-300", children: "Yes. You can cancel at any time from the subscription management page. You retain Pro access until the end of your current billing period." })
174
174
  ] }),
175
175
  /* @__PURE__ */ jsxs("div", { children: [
176
- /* @__PURE__ */ jsx("dt", { className: "text-base font-semibold leading-7 text-white", children: "What happens to my data if I downgrade?" }),
177
- /* @__PURE__ */ jsx("dd", { className: "mt-2 text-base leading-7 text-gray-300", children: "Your existing stories and characters are never deleted. You'll just be unable to create new ones beyond the preview limits until you resubscribe." })
176
+ /* @__PURE__ */ jsx("dt", { className: "text-base font-semibold leading-7 text-gray-900 dark:text-white", children: "What happens to my data if I downgrade?" }),
177
+ /* @__PURE__ */ jsx("dd", { className: "mt-2 text-base leading-7 text-gray-600 dark:text-gray-300", children: "Your existing stories and characters are never deleted. You'll just be unable to create new ones beyond the preview limits until you resubscribe." })
178
178
  ] }),
179
179
  /* @__PURE__ */ jsxs("div", { children: [
180
- /* @__PURE__ */ jsx("dt", { className: "text-base font-semibold leading-7 text-white", children: "Is billing monthly or annually?" }),
181
- /* @__PURE__ */ jsx("dd", { className: "mt-2 text-base leading-7 text-gray-300", children: "Currently monthly only. Annual billing with a discount is coming soon." })
180
+ /* @__PURE__ */ jsx("dt", { className: "text-base font-semibold leading-7 text-gray-900 dark:text-white", children: "Is billing monthly or annually?" }),
181
+ /* @__PURE__ */ jsx("dd", { className: "mt-2 text-base leading-7 text-gray-600 dark:text-gray-300", children: "Currently monthly only. Annual billing with a discount is coming soon." })
182
182
  ] })
183
183
  ] })
184
184
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/pricing.tsx"],"sourcesContent":["'use client'\r\nimport { useState } from 'react'\r\nimport { Check, Zap } from 'lucide-react'\r\n\r\nconst FREE_FEATURES = [\r\n '1 story',\r\n '10 characters',\r\n '10 locations',\r\n '1 timeline',\r\n 'Image galleries',\r\n 'Public sharing',\r\n]\r\n\r\nconst PRO_FEATURES = [\r\n 'Unlimited stories',\r\n 'Unlimited characters',\r\n 'Unlimited locations',\r\n 'Unlimited timelines',\r\n 'Image galleries',\r\n 'Public sharing',\r\n 'Priority support',\r\n]\r\n\r\nfunction classNames(...classes: string[]) {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\ninterface PricingProps {\r\n onSubscribe?: () => void\r\n}\r\n\r\nexport const Pricing = ({ onSubscribe }: PricingProps) => {\r\n const [loading, setLoading] = useState(false)\r\n const [error, setError] = useState<string | null>(null)\r\n\r\n const handleSubscribe = async () => {\r\n if (onSubscribe) {\r\n onSubscribe()\r\n return\r\n }\r\n setLoading(true)\r\n setError(null)\r\n try {\r\n const response = await fetch('/api/subscription/checkout', {\r\n method: 'POST',\r\n })\r\n if (!response.ok) {\r\n if (response.status === 401) {\r\n window.location.href = `/signin?callbackUrl=${encodeURIComponent(window.location.pathname)}`\r\n return\r\n }\r\n const data = (await response.json().catch(() => ({}))) as {\r\n error?: string\r\n }\r\n throw new Error(data.error ?? 'Failed to create checkout session')\r\n }\r\n const data = (await response.json()) as { url: string }\r\n if (data.url) {\r\n window.location.href = data.url\r\n }\r\n } catch (err) {\r\n setError(\r\n err instanceof Error\r\n ? err.message\r\n : 'Something went wrong. Please try again.',\r\n )\r\n } finally {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"bg-gray-900\">\r\n <main>\r\n {/* Header */}\r\n <div className=\"mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8\">\r\n <div className=\"mx-auto max-w-4xl text-center\">\r\n <h1 className=\"text-base font-semibold leading-7 text-indigo-400\">\r\n Pricing\r\n </h1>\r\n <p className=\"mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl\">\r\n Start free. Upgrade when you&apos;re ready.\r\n </p>\r\n </div>\r\n <p className=\"mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-300\">\r\n Build your story bible for free. Subscribe for unlimited worlds,\r\n characters, and creative freedom.\r\n </p>\r\n\r\n {/* Pricing cards */}\r\n <div className=\"isolate mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-2\">\r\n {/* Free tier */}\r\n <div className=\"rounded-3xl p-8 ring-1 ring-white/10 xl:p-10\">\r\n <div className=\"flex items-center justify-between gap-x-4\">\r\n <h2 className=\"text-lg font-semibold leading-8 text-white\">\r\n Preview\r\n </h2>\r\n <p className=\"rounded-full bg-white/10 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\r\n Free forever\r\n </p>\r\n </div>\r\n <p className=\"mt-4 text-sm leading-6 text-gray-300\">\r\n Explore Story Bible and start building your creative world with\r\n no commitment.\r\n </p>\r\n <p className=\"mt-6 flex items-baseline gap-x-1\">\r\n <span className=\"text-4xl font-bold tracking-tight text-white\">\r\n $0\r\n </span>\r\n <span className=\"text-sm font-semibold leading-6 text-gray-300\">\r\n /month\r\n </span>\r\n </p>\r\n <a\r\n href=\"/signin\"\r\n className=\"mt-6 block rounded-md bg-white/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-white hover:bg-white/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white\"\r\n >\r\n Get started free\r\n </a>\r\n <ul\r\n role=\"list\"\r\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10\"\r\n >\r\n {FREE_FEATURES.map((feature) => (\r\n <li key={feature} className=\"flex gap-x-3\">\r\n <Check\r\n className=\"h-6 w-5 flex-none text-white\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n\r\n {/* Pro tier */}\r\n <div className=\"rounded-3xl bg-white/5 p-8 ring-2 ring-indigo-500 xl:p-10\">\r\n <div className=\"flex items-center justify-between gap-x-4\">\r\n <h2 className=\"text-lg font-semibold leading-8 text-white\">\r\n Pro\r\n </h2>\r\n <p className=\"rounded-full bg-indigo-500 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\r\n Most popular\r\n </p>\r\n </div>\r\n <p className=\"mt-4 text-sm leading-6 text-gray-300\">\r\n Unlock unlimited stories, characters, locations, and timelines.\r\n Build entire universes.\r\n </p>\r\n <p className=\"mt-6 flex items-baseline gap-x-1\">\r\n <span className=\"text-4xl font-bold tracking-tight text-white\">\r\n $9.99\r\n </span>\r\n <span className=\"text-sm font-semibold leading-6 text-gray-300\">\r\n /month\r\n </span>\r\n </p>\r\n <button\r\n onClick={handleSubscribe}\r\n disabled={loading}\r\n className={classNames(\r\n 'mt-6 flex w-full items-center justify-center gap-2 rounded-md px-3 py-2 text-center text-sm font-semibold leading-6 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-500',\r\n loading\r\n ? 'cursor-not-allowed bg-indigo-400 text-white'\r\n : 'shadow-2xs bg-indigo-500 text-white hover:bg-indigo-400',\r\n )}\r\n >\r\n <Zap className=\"h-4 w-4\" aria-hidden=\"true\" />\r\n {loading ? 'Redirecting…' : 'Subscribe — $9.99/mo'}\r\n </button>\r\n {error && (\r\n <p className=\"mt-3 text-center text-sm text-red-400\">{error}</p>\r\n )}\r\n <ul\r\n role=\"list\"\r\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10\"\r\n >\r\n {PRO_FEATURES.map((feature) => (\r\n <li key={feature} className=\"flex gap-x-3\">\r\n <Check\r\n className=\"h-6 w-5 flex-none text-white\"\r\n aria-hidden=\"true\"\r\n />\r\n {feature}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n {/* FAQ */}\r\n <div className=\"mx-auto mt-24 max-w-2xl pb-24\">\r\n <h2 className=\"text-2xl font-bold leading-10 tracking-tight text-white\">\r\n Frequently asked questions\r\n </h2>\r\n <dl className=\"mt-10 space-y-8\">\r\n <div>\r\n <dt className=\"text-base font-semibold leading-7 text-white\">\r\n Can I cancel anytime?\r\n </dt>\r\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\r\n Yes. You can cancel at any time from the subscription\r\n management page. You retain Pro access until the end of your\r\n current billing period.\r\n </dd>\r\n </div>\r\n <div>\r\n <dt className=\"text-base font-semibold leading-7 text-white\">\r\n What happens to my data if I downgrade?\r\n </dt>\r\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\r\n Your existing stories and characters are never deleted.\r\n You&apos;ll just be unable to create new ones beyond the\r\n preview limits until you resubscribe.\r\n </dd>\r\n </div>\r\n <div>\r\n <dt className=\"text-base font-semibold leading-7 text-white\">\r\n Is billing monthly or annually?\r\n </dt>\r\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\r\n Currently monthly only. Annual billing with a discount is\r\n coming soon.\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n </div>\r\n </main>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":["data"]}
1
+ {"version":3,"sources":["../../../components/tailwind/pricing.tsx"],"sourcesContent":["'use client'\nimport { useState } from 'react'\nimport { Check, Zap } from 'lucide-react'\n\nconst FREE_FEATURES = [\n '1 story',\n '10 characters',\n '10 locations',\n '1 timeline',\n 'Image galleries',\n 'Public sharing',\n]\n\nconst PRO_FEATURES = [\n 'Unlimited stories',\n 'Unlimited characters',\n 'Unlimited locations',\n 'Unlimited timelines',\n 'Image galleries',\n 'Public sharing',\n 'Priority support',\n]\n\nfunction classNames(...classes: string[]) {\n return classes.filter(Boolean).join(' ')\n}\n\ninterface PricingProps {\n onSubscribe?: () => void\n}\n\nexport const Pricing = ({ onSubscribe }: PricingProps) => {\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const handleSubscribe = async () => {\n if (onSubscribe) {\n onSubscribe()\n return\n }\n setLoading(true)\n setError(null)\n try {\n const response = await fetch('/api/subscription/checkout', {\n method: 'POST',\n })\n if (!response.ok) {\n if (response.status === 401) {\n window.location.href = `/signin?callbackUrl=${encodeURIComponent(window.location.pathname)}`\n return\n }\n const data = (await response.json().catch(() => ({}))) as {\n error?: string\n }\n throw new Error(data.error ?? 'Failed to create checkout session')\n }\n const data = (await response.json()) as { url: string }\n if (data.url) {\n window.location.href = data.url\n }\n } catch (err) {\n setError(\n err instanceof Error\n ? err.message\n : 'Something went wrong. Please try again.',\n )\n } finally {\n setLoading(false)\n }\n }\n\n return (\n <div className=\"bg-white dark:bg-gray-900\">\n <main>\n {/* Header */}\n <div className=\"mx-auto mt-16 max-w-7xl px-6 sm:mt-32 lg:px-8\">\n <div className=\"mx-auto max-w-4xl text-center\">\n <h1 className=\"text-base font-semibold leading-7 text-indigo-600 dark:text-indigo-400\">\n Pricing\n </h1>\n <p className=\"mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl dark:text-white\">\n Start free. Upgrade when you&apos;re ready.\n </p>\n </div>\n <p className=\"mx-auto mt-6 max-w-2xl text-center text-lg leading-8 text-gray-600 dark:text-gray-300\">\n Build your story bible for free. Subscribe for unlimited worlds,\n characters, and creative freedom.\n </p>\n\n {/* Pricing cards */}\n <div className=\"isolate mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:mx-0 lg:max-w-none lg:grid-cols-2\">\n {/* Free tier */}\n <div className=\"rounded-3xl p-8 ring-1 ring-gray-900/10 xl:p-10 dark:ring-white/10\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 text-gray-900 dark:text-white\">\n Preview\n </h2>\n <p className=\"rounded-full bg-gray-900/5 px-2.5 py-1 text-xs font-semibold leading-5 text-gray-900 dark:bg-white/10 dark:text-white\">\n Free forever\n </p>\n </div>\n <p className=\"mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300\">\n Explore Story Bible and start building your creative world with\n no commitment.\n </p>\n <p className=\"mt-6 flex items-baseline gap-x-1\">\n <span className=\"text-4xl font-bold tracking-tight text-gray-900 dark:text-white\">\n $0\n </span>\n <span className=\"text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300\">\n /month\n </span>\n </p>\n <a\n href=\"/signin\"\n className=\"mt-6 block rounded-md bg-gray-900/10 px-3 py-2 text-center text-sm font-semibold leading-6 text-gray-900 hover:bg-gray-900/20 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900 dark:bg-white/10 dark:text-white dark:hover:bg-white/20 dark:focus-visible:outline-white\"\n >\n Get started free\n </a>\n <ul\n role=\"list\"\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300\"\n >\n {FREE_FEATURES.map((feature) => (\n <li key={feature} className=\"flex gap-x-3\">\n <Check\n className=\"h-6 w-5 flex-none text-gray-900 dark:text-white\"\n aria-hidden=\"true\"\n />\n {feature}\n </li>\n ))}\n </ul>\n </div>\n\n {/* Pro tier */}\n <div className=\"rounded-3xl bg-gray-900/5 p-8 ring-2 ring-indigo-500 xl:p-10 dark:bg-white/5\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 text-gray-900 dark:text-white\">\n Pro\n </h2>\n <p className=\"rounded-full bg-indigo-500 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\n Most popular\n </p>\n </div>\n <p className=\"mt-4 text-sm leading-6 text-gray-600 dark:text-gray-300\">\n Unlock unlimited stories, characters, locations, and timelines.\n Build entire universes.\n </p>\n <p className=\"mt-6 flex items-baseline gap-x-1\">\n <span className=\"text-4xl font-bold tracking-tight text-gray-900 dark:text-white\">\n $9.99\n </span>\n <span className=\"text-sm font-semibold leading-6 text-gray-600 dark:text-gray-300\">\n /month\n </span>\n </p>\n <button\n onClick={handleSubscribe}\n disabled={loading}\n className={classNames(\n 'mt-6 flex w-full items-center justify-center gap-2 rounded-md px-3 py-2 text-center text-sm font-semibold leading-6 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-500',\n loading\n ? 'cursor-not-allowed bg-indigo-400 text-white'\n : 'shadow-2xs bg-indigo-500 text-white hover:bg-indigo-400',\n )}\n >\n <Zap className=\"h-4 w-4\" aria-hidden=\"true\" />\n {loading ? 'Redirecting…' : 'Subscribe — $9.99/mo'}\n </button>\n {error && (\n <p className=\"mt-3 text-center text-sm text-red-600 dark:text-red-400\">\n {error}\n </p>\n )}\n <ul\n role=\"list\"\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-600 xl:mt-10 dark:text-gray-300\"\n >\n {PRO_FEATURES.map((feature) => (\n <li key={feature} className=\"flex gap-x-3\">\n <Check\n className=\"h-6 w-5 flex-none text-gray-900 dark:text-white\"\n aria-hidden=\"true\"\n />\n {feature}\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n {/* FAQ */}\n <div className=\"mx-auto mt-24 max-w-2xl pb-24\">\n <h2 className=\"text-2xl font-bold leading-10 tracking-tight text-gray-900 dark:text-white\">\n Frequently asked questions\n </h2>\n <dl className=\"mt-10 space-y-8\">\n <div>\n <dt className=\"text-base font-semibold leading-7 text-gray-900 dark:text-white\">\n Can I cancel anytime?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-600 dark:text-gray-300\">\n Yes. You can cancel at any time from the subscription\n management page. You retain Pro access until the end of your\n current billing period.\n </dd>\n </div>\n <div>\n <dt className=\"text-base font-semibold leading-7 text-gray-900 dark:text-white\">\n What happens to my data if I downgrade?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-600 dark:text-gray-300\">\n Your existing stories and characters are never deleted.\n You&apos;ll just be unable to create new ones beyond the\n preview limits until you resubscribe.\n </dd>\n </div>\n <div>\n <dt className=\"text-base font-semibold leading-7 text-gray-900 dark:text-white\">\n Is billing monthly or annually?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-600 dark:text-gray-300\">\n Currently monthly only. Annual billing with a discount is\n coming soon.\n </dd>\n </div>\n </dl>\n </div>\n </div>\n </main>\n </div>\n )\n}\n"],"mappings":"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","names":["data"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/privacy.tsx"],"sourcesContent":["import { ContentPage, ContentSection, ContentList } from './content-page'\r\n\r\nexport function Privacy() {\r\n return (\r\n <ContentPage title=\"Privacy Policy\" lastUpdated=\"March 6, 2026\">\r\n <ContentSection title=\"Introduction\">\r\n <p>\r\n Story Bible Ultimate (&quot;we&quot;, &quot;us&quot;, or\r\n &quot;our&quot;) is committed to protecting your personal information.\r\n This Privacy Policy explains how we collect, use, disclose, and\r\n safeguard your information when you use our service.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Information We Collect\">\r\n <p>We collect information you provide directly to us, including:</p>\r\n <ContentList\r\n items={[\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Account information:\r\n </span>{' '}\r\n name, email address, and password when you register.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Content:\r\n </span>{' '}\r\n stories, characters, locations, timelines, and other creative\r\n content you create or upload.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Communications:\r\n </span>{' '}\r\n messages you send us through contact forms or support channels.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Usage data:\r\n </span>{' '}\r\n information about how you interact with our service, including log\r\n data, device information, and cookies.\r\n </>,\r\n ]}\r\n />\r\n </ContentSection>\r\n\r\n <ContentSection title=\"How We Use Your Information\">\r\n <p>We use the information we collect to:</p>\r\n <ContentList\r\n items={[\r\n 'Provide, maintain, and improve our services.',\r\n 'Process transactions and send related information.',\r\n 'Send technical notices, updates, security alerts, and support messages.',\r\n 'Respond to comments, questions, and requests for customer service.',\r\n 'Monitor and analyze trends, usage, and activities to improve the service.',\r\n 'Detect, investigate, and prevent fraudulent transactions and other illegal activities.',\r\n ]}\r\n />\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Sharing of Information\">\r\n <p>\r\n We do not sell, trade, or otherwise transfer your personally\r\n identifiable information to third parties, except as described below:\r\n </p>\r\n <ContentList\r\n items={[\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Service providers:\r\n </span>{' '}\r\n We may share your information with third-party vendors who perform\r\n services on our behalf (e.g., hosting, payment processing,\r\n analytics).\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Legal requirements:\r\n </span>{' '}\r\n We may disclose your information if required by law or in response\r\n to valid legal process.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Business transfers:\r\n </span>{' '}\r\n If we are involved in a merger, acquisition, or sale of assets,\r\n your information may be transferred as part of that transaction.\r\n </>,\r\n ]}\r\n />\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Data Retention\">\r\n <p>\r\n We retain your personal information for as long as your account is\r\n active or as needed to provide you services. You may request deletion\r\n of your account and associated data at any time by contacting us.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Security\">\r\n <p>\r\n We take reasonable measures to help protect information about you from\r\n loss, theft, misuse, unauthorized access, disclosure, alteration, and\r\n destruction. However, no internet or electronic storage system is 100%\r\n secure.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Cookies\">\r\n <p>\r\n We use cookies and similar tracking technologies to track activity on\r\n our service and hold certain information. You can instruct your\r\n browser to refuse all cookies or to indicate when a cookie is being\r\n sent.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Your Rights\">\r\n <p>\r\n Depending on your location, you may have certain rights regarding your\r\n personal information, including:\r\n </p>\r\n <ContentList\r\n items={[\r\n 'The right to access your personal information.',\r\n 'The right to correct inaccurate data.',\r\n 'The right to request deletion of your data.',\r\n 'The right to object to or restrict processing of your data.',\r\n 'The right to data portability (receiving your data in a structured format).',\r\n ]}\r\n />\r\n <p>To exercise these rights, please contact us at the address below.</p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Children's Privacy\">\r\n <p>\r\n Our service is not directed to children under the age of 13. We do not\r\n knowingly collect personally identifiable information from children\r\n under 13. If we discover that a child under 13 has provided us with\r\n personal information, we will delete such information promptly.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Changes to This Policy\">\r\n <p>\r\n We may update this Privacy Policy from time to time. We will notify\r\n you of any changes by posting the new policy on this page and updating\r\n the &quot;Last updated&quot; date. Continued use of the service after\r\n changes constitutes acceptance of the updated policy.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Contact Us\">\r\n <p>\r\n If you have any questions about this Privacy Policy, please reach out:\r\n </p>\r\n <p>\r\n <a\r\n href=\"/about/contact\"\r\n className=\"font-semibold text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300\"\r\n >\r\n Contact us via our contact form &rarr;\r\n </a>\r\n </p>\r\n </ContentSection>\r\n </ContentPage>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMQ;AANR,0BAAyD;AAElD,SAAS,UAAU;AACxB,SACE,6CAAC,mCAAY,OAAM,kBAAiB,aAAY,iBAC9C;AAAA,gDAAC,sCAAe,OAAM,gBACpB,sDAAC,OAAE,oOAKH,GACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,0BACpB;AAAA,kDAAC,OAAE,2EAA6D;AAAA,MAChE;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,kCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,sBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,6BAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,yBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,+BACpB;AAAA,kDAAC,OAAE,mDAAqC;AAAA,MACxC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,0BACpB;AAAA,kDAAC,OAAE,gJAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,gCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAId;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,kBACpB,sDAAC,OAAE,wNAIH,GACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,YACpB,sDAAC,OAAE,yOAKH,GACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,WACpB,sDAAC,OAAE,6NAKH,GACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,eACpB;AAAA,kDAAC,OAAE,qHAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MACA,4CAAC,OAAE,+EAAiE;AAAA,OACtE;AAAA,IAEA,4CAAC,sCAAe,OAAM,sBACpB,sDAAC,OAAE,4RAKH,GACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,0BACpB,sDAAC,OAAE,0QAKH,GACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,cACpB;AAAA,kDAAC,OAAE,oFAEH;AAAA,MACA,4CAAC,OACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/privacy.tsx"],"sourcesContent":["import { ContentPage, ContentSection, ContentList } from './content-page'\n\nexport function Privacy() {\n return (\n <ContentPage title=\"Privacy Policy\" lastUpdated=\"March 6, 2026\">\n <ContentSection title=\"Introduction\">\n <p>\n Story Bible Ultimate (&quot;we&quot;, &quot;us&quot;, or\n &quot;our&quot;) is committed to protecting your personal information.\n This Privacy Policy explains how we collect, use, disclose, and\n safeguard your information when you use our service.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Information We Collect\">\n <p>We collect information you provide directly to us, including:</p>\n <ContentList\n items={[\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Account information:\n </span>{' '}\n name, email address, and password when you register.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Content:\n </span>{' '}\n stories, characters, locations, timelines, and other creative\n content you create or upload.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Communications:\n </span>{' '}\n messages you send us through contact forms or support channels.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Usage data:\n </span>{' '}\n information about how you interact with our service, including log\n data, device information, and cookies.\n </>,\n ]}\n />\n </ContentSection>\n\n <ContentSection title=\"How We Use Your Information\">\n <p>We use the information we collect to:</p>\n <ContentList\n items={[\n 'Provide, maintain, and improve our services.',\n 'Process transactions and send related information.',\n 'Send technical notices, updates, security alerts, and support messages.',\n 'Respond to comments, questions, and requests for customer service.',\n 'Monitor and analyze trends, usage, and activities to improve the service.',\n 'Detect, investigate, and prevent fraudulent transactions and other illegal activities.',\n ]}\n />\n </ContentSection>\n\n <ContentSection title=\"Sharing of Information\">\n <p>\n We do not sell, trade, or otherwise transfer your personally\n identifiable information to third parties, except as described below:\n </p>\n <ContentList\n items={[\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Service providers:\n </span>{' '}\n We may share your information with third-party vendors who perform\n services on our behalf (e.g., hosting, payment processing,\n analytics).\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Legal requirements:\n </span>{' '}\n We may disclose your information if required by law or in response\n to valid legal process.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Business transfers:\n </span>{' '}\n If we are involved in a merger, acquisition, or sale of assets,\n your information may be transferred as part of that transaction.\n </>,\n ]}\n />\n </ContentSection>\n\n <ContentSection title=\"Data Retention\">\n <p>\n We retain your personal information for as long as your account is\n active or as needed to provide you services. You may request deletion\n of your account and associated data at any time by contacting us.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Security\">\n <p>\n We take reasonable measures to help protect information about you from\n loss, theft, misuse, unauthorized access, disclosure, alteration, and\n destruction. However, no internet or electronic storage system is 100%\n secure.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Cookies\">\n <p>\n We use cookies and similar tracking technologies to track activity on\n our service and hold certain information. You can instruct your\n browser to refuse all cookies or to indicate when a cookie is being\n sent.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Your Rights\">\n <p>\n Depending on your location, you may have certain rights regarding your\n personal information, including:\n </p>\n <ContentList\n items={[\n 'The right to access your personal information.',\n 'The right to correct inaccurate data.',\n 'The right to request deletion of your data.',\n 'The right to object to or restrict processing of your data.',\n 'The right to data portability (receiving your data in a structured format).',\n ]}\n />\n <p>To exercise these rights, please contact us at the address below.</p>\n </ContentSection>\n\n <ContentSection title=\"Children's Privacy\">\n <p>\n Our service is not directed to children under the age of 13. We do not\n knowingly collect personally identifiable information from children\n under 13. If we discover that a child under 13 has provided us with\n personal information, we will delete such information promptly.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Changes to This Policy\">\n <p>\n We may update this Privacy Policy from time to time. We will notify\n you of any changes by posting the new policy on this page and updating\n the &quot;Last updated&quot; date. Continued use of the service after\n changes constitutes acceptance of the updated policy.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Contact Us\">\n <p>\n If you have any questions about this Privacy Policy, please reach out:\n </p>\n <p>\n <a\n href=\"/about/contact\"\n className=\"font-semibold text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300\"\n >\n Contact us via our contact form &rarr;\n </a>\n </p>\n </ContentSection>\n </ContentPage>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMQ;AANR,0BAAyD;AAElD,SAAS,UAAU;AACxB,SACE,6CAAC,mCAAY,OAAM,kBAAiB,aAAY,iBAC9C;AAAA,gDAAC,sCAAe,OAAM,gBACpB,sDAAC,OAAE,oOAKH,GACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,0BACpB;AAAA,kDAAC,OAAE,2EAA6D;AAAA,MAChE;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,kCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,sBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,6BAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,yBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,+BACpB;AAAA,kDAAC,OAAE,mDAAqC;AAAA,MACxC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,0BACpB;AAAA,kDAAC,OAAE,gJAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,gCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAId;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,4EACE;AAAA,0DAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,kBACpB,sDAAC,OAAE,wNAIH,GACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,YACpB,sDAAC,OAAE,yOAKH,GACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,WACpB,sDAAC,OAAE,6NAKH,GACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,eACpB;AAAA,kDAAC,OAAE,qHAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MACA,4CAAC,OAAE,+EAAiE;AAAA,OACtE;AAAA,IAEA,4CAAC,sCAAe,OAAM,sBACpB,sDAAC,OAAE,4RAKH,GACF;AAAA,IAEA,4CAAC,sCAAe,OAAM,0BACpB,sDAAC,OAAE,0QAKH,GACF;AAAA,IAEA,6CAAC,sCAAe,OAAM,cACpB;AAAA,kDAAC,OAAE,oFAEH;AAAA,MACA,4CAAC,OACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/privacy.tsx"],"sourcesContent":["import { ContentPage, ContentSection, ContentList } from './content-page'\r\n\r\nexport function Privacy() {\r\n return (\r\n <ContentPage title=\"Privacy Policy\" lastUpdated=\"March 6, 2026\">\r\n <ContentSection title=\"Introduction\">\r\n <p>\r\n Story Bible Ultimate (&quot;we&quot;, &quot;us&quot;, or\r\n &quot;our&quot;) is committed to protecting your personal information.\r\n This Privacy Policy explains how we collect, use, disclose, and\r\n safeguard your information when you use our service.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Information We Collect\">\r\n <p>We collect information you provide directly to us, including:</p>\r\n <ContentList\r\n items={[\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Account information:\r\n </span>{' '}\r\n name, email address, and password when you register.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Content:\r\n </span>{' '}\r\n stories, characters, locations, timelines, and other creative\r\n content you create or upload.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Communications:\r\n </span>{' '}\r\n messages you send us through contact forms or support channels.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Usage data:\r\n </span>{' '}\r\n information about how you interact with our service, including log\r\n data, device information, and cookies.\r\n </>,\r\n ]}\r\n />\r\n </ContentSection>\r\n\r\n <ContentSection title=\"How We Use Your Information\">\r\n <p>We use the information we collect to:</p>\r\n <ContentList\r\n items={[\r\n 'Provide, maintain, and improve our services.',\r\n 'Process transactions and send related information.',\r\n 'Send technical notices, updates, security alerts, and support messages.',\r\n 'Respond to comments, questions, and requests for customer service.',\r\n 'Monitor and analyze trends, usage, and activities to improve the service.',\r\n 'Detect, investigate, and prevent fraudulent transactions and other illegal activities.',\r\n ]}\r\n />\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Sharing of Information\">\r\n <p>\r\n We do not sell, trade, or otherwise transfer your personally\r\n identifiable information to third parties, except as described below:\r\n </p>\r\n <ContentList\r\n items={[\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Service providers:\r\n </span>{' '}\r\n We may share your information with third-party vendors who perform\r\n services on our behalf (e.g., hosting, payment processing,\r\n analytics).\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Legal requirements:\r\n </span>{' '}\r\n We may disclose your information if required by law or in response\r\n to valid legal process.\r\n </>,\r\n <>\r\n <span className=\"font-semibold text-gray-900 dark:text-white\">\r\n Business transfers:\r\n </span>{' '}\r\n If we are involved in a merger, acquisition, or sale of assets,\r\n your information may be transferred as part of that transaction.\r\n </>,\r\n ]}\r\n />\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Data Retention\">\r\n <p>\r\n We retain your personal information for as long as your account is\r\n active or as needed to provide you services. You may request deletion\r\n of your account and associated data at any time by contacting us.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Security\">\r\n <p>\r\n We take reasonable measures to help protect information about you from\r\n loss, theft, misuse, unauthorized access, disclosure, alteration, and\r\n destruction. However, no internet or electronic storage system is 100%\r\n secure.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Cookies\">\r\n <p>\r\n We use cookies and similar tracking technologies to track activity on\r\n our service and hold certain information. You can instruct your\r\n browser to refuse all cookies or to indicate when a cookie is being\r\n sent.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Your Rights\">\r\n <p>\r\n Depending on your location, you may have certain rights regarding your\r\n personal information, including:\r\n </p>\r\n <ContentList\r\n items={[\r\n 'The right to access your personal information.',\r\n 'The right to correct inaccurate data.',\r\n 'The right to request deletion of your data.',\r\n 'The right to object to or restrict processing of your data.',\r\n 'The right to data portability (receiving your data in a structured format).',\r\n ]}\r\n />\r\n <p>To exercise these rights, please contact us at the address below.</p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Children's Privacy\">\r\n <p>\r\n Our service is not directed to children under the age of 13. We do not\r\n knowingly collect personally identifiable information from children\r\n under 13. If we discover that a child under 13 has provided us with\r\n personal information, we will delete such information promptly.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Changes to This Policy\">\r\n <p>\r\n We may update this Privacy Policy from time to time. We will notify\r\n you of any changes by posting the new policy on this page and updating\r\n the &quot;Last updated&quot; date. Continued use of the service after\r\n changes constitutes acceptance of the updated policy.\r\n </p>\r\n </ContentSection>\r\n\r\n <ContentSection title=\"Contact Us\">\r\n <p>\r\n If you have any questions about this Privacy Policy, please reach out:\r\n </p>\r\n <p>\r\n <a\r\n href=\"/about/contact\"\r\n className=\"font-semibold text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300\"\r\n >\r\n Contact us via our contact form &rarr;\r\n </a>\r\n </p>\r\n </ContentSection>\r\n </ContentPage>\r\n )\r\n}\r\n"],"mappings":"AAMQ,SAYI,UAZJ,KAYI,YAZJ;AANR,SAAS,aAAa,gBAAgB,mBAAmB;AAElD,SAAS,UAAU;AACxB,SACE,qBAAC,eAAY,OAAM,kBAAiB,aAAY,iBAC9C;AAAA,wBAAC,kBAAe,OAAM,gBACpB,8BAAC,OAAE,oOAKH,GACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,0BACpB;AAAA,0BAAC,OAAE,2EAA6D;AAAA,MAChE;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,kCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,sBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,6BAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,yBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,+BACpB;AAAA,0BAAC,OAAE,mDAAqC;AAAA,MACxC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,0BACpB;AAAA,0BAAC,OAAE,gJAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,gCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAId;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,kBACpB,8BAAC,OAAE,wNAIH,GACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,YACpB,8BAAC,OAAE,yOAKH,GACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,WACpB,8BAAC,OAAE,6NAKH,GACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,eACpB;AAAA,0BAAC,OAAE,qHAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,OAAE,+EAAiE;AAAA,OACtE;AAAA,IAEA,oBAAC,kBAAe,OAAM,sBACpB,8BAAC,OAAE,4RAKH,GACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,0BACpB,8BAAC,OAAE,0QAKH,GACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,cACpB;AAAA,0BAAC,OAAE,oFAEH;AAAA,MACA,oBAAC,OACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/privacy.tsx"],"sourcesContent":["import { ContentPage, ContentSection, ContentList } from './content-page'\n\nexport function Privacy() {\n return (\n <ContentPage title=\"Privacy Policy\" lastUpdated=\"March 6, 2026\">\n <ContentSection title=\"Introduction\">\n <p>\n Story Bible Ultimate (&quot;we&quot;, &quot;us&quot;, or\n &quot;our&quot;) is committed to protecting your personal information.\n This Privacy Policy explains how we collect, use, disclose, and\n safeguard your information when you use our service.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Information We Collect\">\n <p>We collect information you provide directly to us, including:</p>\n <ContentList\n items={[\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Account information:\n </span>{' '}\n name, email address, and password when you register.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Content:\n </span>{' '}\n stories, characters, locations, timelines, and other creative\n content you create or upload.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Communications:\n </span>{' '}\n messages you send us through contact forms or support channels.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Usage data:\n </span>{' '}\n information about how you interact with our service, including log\n data, device information, and cookies.\n </>,\n ]}\n />\n </ContentSection>\n\n <ContentSection title=\"How We Use Your Information\">\n <p>We use the information we collect to:</p>\n <ContentList\n items={[\n 'Provide, maintain, and improve our services.',\n 'Process transactions and send related information.',\n 'Send technical notices, updates, security alerts, and support messages.',\n 'Respond to comments, questions, and requests for customer service.',\n 'Monitor and analyze trends, usage, and activities to improve the service.',\n 'Detect, investigate, and prevent fraudulent transactions and other illegal activities.',\n ]}\n />\n </ContentSection>\n\n <ContentSection title=\"Sharing of Information\">\n <p>\n We do not sell, trade, or otherwise transfer your personally\n identifiable information to third parties, except as described below:\n </p>\n <ContentList\n items={[\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Service providers:\n </span>{' '}\n We may share your information with third-party vendors who perform\n services on our behalf (e.g., hosting, payment processing,\n analytics).\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Legal requirements:\n </span>{' '}\n We may disclose your information if required by law or in response\n to valid legal process.\n </>,\n <>\n <span className=\"font-semibold text-gray-900 dark:text-white\">\n Business transfers:\n </span>{' '}\n If we are involved in a merger, acquisition, or sale of assets,\n your information may be transferred as part of that transaction.\n </>,\n ]}\n />\n </ContentSection>\n\n <ContentSection title=\"Data Retention\">\n <p>\n We retain your personal information for as long as your account is\n active or as needed to provide you services. You may request deletion\n of your account and associated data at any time by contacting us.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Security\">\n <p>\n We take reasonable measures to help protect information about you from\n loss, theft, misuse, unauthorized access, disclosure, alteration, and\n destruction. However, no internet or electronic storage system is 100%\n secure.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Cookies\">\n <p>\n We use cookies and similar tracking technologies to track activity on\n our service and hold certain information. You can instruct your\n browser to refuse all cookies or to indicate when a cookie is being\n sent.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Your Rights\">\n <p>\n Depending on your location, you may have certain rights regarding your\n personal information, including:\n </p>\n <ContentList\n items={[\n 'The right to access your personal information.',\n 'The right to correct inaccurate data.',\n 'The right to request deletion of your data.',\n 'The right to object to or restrict processing of your data.',\n 'The right to data portability (receiving your data in a structured format).',\n ]}\n />\n <p>To exercise these rights, please contact us at the address below.</p>\n </ContentSection>\n\n <ContentSection title=\"Children's Privacy\">\n <p>\n Our service is not directed to children under the age of 13. We do not\n knowingly collect personally identifiable information from children\n under 13. If we discover that a child under 13 has provided us with\n personal information, we will delete such information promptly.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Changes to This Policy\">\n <p>\n We may update this Privacy Policy from time to time. We will notify\n you of any changes by posting the new policy on this page and updating\n the &quot;Last updated&quot; date. Continued use of the service after\n changes constitutes acceptance of the updated policy.\n </p>\n </ContentSection>\n\n <ContentSection title=\"Contact Us\">\n <p>\n If you have any questions about this Privacy Policy, please reach out:\n </p>\n <p>\n <a\n href=\"/about/contact\"\n className=\"font-semibold text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-300\"\n >\n Contact us via our contact form &rarr;\n </a>\n </p>\n </ContentSection>\n </ContentPage>\n )\n}\n"],"mappings":"AAMQ,SAYI,UAZJ,KAYI,YAZJ;AANR,SAAS,aAAa,gBAAgB,mBAAmB;AAElD,SAAS,UAAU;AACxB,SACE,qBAAC,eAAY,OAAM,kBAAiB,aAAY,iBAC9C;AAAA,wBAAC,kBAAe,OAAM,gBACpB,8BAAC,OAAE,oOAKH,GACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,0BACpB;AAAA,0BAAC,OAAE,2EAA6D;AAAA,MAChE;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,kCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,sBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,6BAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAEd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,yBAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,+BACpB;AAAA,0BAAC,OAAE,mDAAqC;AAAA,MACxC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,0BACpB;AAAA,0BAAC,OAAE,gJAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,gCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAId;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,YACA,iCACE;AAAA,kCAAC,UAAK,WAAU,+CAA8C,iCAE9D;AAAA,cAAQ;AAAA,cAAI;AAAA,eAGd;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,kBACpB,8BAAC,OAAE,wNAIH,GACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,YACpB,8BAAC,OAAE,yOAKH,GACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,WACpB,8BAAC,OAAE,6NAKH,GACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,eACpB;AAAA,0BAAC,OAAE,qHAGH;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MACA,oBAAC,OAAE,+EAAiE;AAAA,OACtE;AAAA,IAEA,oBAAC,kBAAe,OAAM,sBACpB,8BAAC,OAAE,4RAKH,GACF;AAAA,IAEA,oBAAC,kBAAe,OAAM,0BACpB,8BAAC,OAAE,0QAKH,GACF;AAAA,IAEA,qBAAC,kBAAe,OAAM,cACpB;AAAA,0BAAC,OAAE,oFAEH;AAAA,MACA,oBAAC,OACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/providerIcons.tsx"],"sourcesContent":["import { AppleIcon } from '../icons/apple'\r\nimport { FacebookIcon } from '../icons/facebook'\r\nimport { GithubIcon } from '../icons/github'\r\nimport { GoogleIcon } from '../icons/google'\r\n\r\nexport const ProviderIcons = ({ providerName }: { providerName: string }) => {\r\n const provider = providerName?.toLowerCase()\r\n switch (provider) {\r\n case 'github':\r\n return <GithubIcon />\r\n case 'google':\r\n return <GoogleIcon />\r\n case 'facebook':\r\n return <FacebookIcon />\r\n case 'apple':\r\n return <AppleIcon />\r\n default:\r\n return null\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASa;AATb,mBAA0B;AAC1B,sBAA6B;AAC7B,oBAA2B;AAC3B,oBAA2B;AAEpB,MAAM,gBAAgB,CAAC,EAAE,aAAa,MAAgC;AAC3E,QAAM,WAAW,6CAAc;AAC/B,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,4CAAC,4BAAW;AAAA,IACrB,KAAK;AACH,aAAO,4CAAC,4BAAW;AAAA,IACrB,KAAK;AACH,aAAO,4CAAC,gCAAa;AAAA,IACvB,KAAK;AACH,aAAO,4CAAC,0BAAU;AAAA,IACpB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/providerIcons.tsx"],"sourcesContent":["import { AppleIcon } from '../icons/apple'\nimport { FacebookIcon } from '../icons/facebook'\nimport { GithubIcon } from '../icons/github'\nimport { GoogleIcon } from '../icons/google'\n\nexport const ProviderIcons = ({ providerName }: { providerName: string }) => {\n const provider = providerName?.toLowerCase()\n switch (provider) {\n case 'github':\n return <GithubIcon />\n case 'google':\n return <GoogleIcon />\n case 'facebook':\n return <FacebookIcon />\n case 'apple':\n return <AppleIcon />\n default:\n return null\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASa;AATb,mBAA0B;AAC1B,sBAA6B;AAC7B,oBAA2B;AAC3B,oBAA2B;AAEpB,MAAM,gBAAgB,CAAC,EAAE,aAAa,MAAgC;AAC3E,QAAM,WAAW,6CAAc;AAC/B,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,4CAAC,4BAAW;AAAA,IACrB,KAAK;AACH,aAAO,4CAAC,4BAAW;AAAA,IACrB,KAAK;AACH,aAAO,4CAAC,gCAAa;AAAA,IACvB,KAAK;AACH,aAAO,4CAAC,0BAAU;AAAA,IACpB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/tailwind/providerIcons.tsx"],"sourcesContent":["import { AppleIcon } from '../icons/apple'\r\nimport { FacebookIcon } from '../icons/facebook'\r\nimport { GithubIcon } from '../icons/github'\r\nimport { GoogleIcon } from '../icons/google'\r\n\r\nexport const ProviderIcons = ({ providerName }: { providerName: string }) => {\r\n const provider = providerName?.toLowerCase()\r\n switch (provider) {\r\n case 'github':\r\n return <GithubIcon />\r\n case 'google':\r\n return <GoogleIcon />\r\n case 'facebook':\r\n return <FacebookIcon />\r\n case 'apple':\r\n return <AppleIcon />\r\n default:\r\n return null\r\n }\r\n}\r\n"],"mappings":"AASa;AATb,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAEpB,MAAM,gBAAgB,CAAC,EAAE,aAAa,MAAgC;AAC3E,QAAM,WAAW,6CAAc;AAC/B,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,oBAAC,cAAW;AAAA,IACrB,KAAK;AACH,aAAO,oBAAC,cAAW;AAAA,IACrB,KAAK;AACH,aAAO,oBAAC,gBAAa;AAAA,IACvB,KAAK;AACH,aAAO,oBAAC,aAAU;AAAA,IACpB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../components/tailwind/providerIcons.tsx"],"sourcesContent":["import { AppleIcon } from '../icons/apple'\nimport { FacebookIcon } from '../icons/facebook'\nimport { GithubIcon } from '../icons/github'\nimport { GoogleIcon } from '../icons/google'\n\nexport const ProviderIcons = ({ providerName }: { providerName: string }) => {\n const provider = providerName?.toLowerCase()\n switch (provider) {\n case 'github':\n return <GithubIcon />\n case 'google':\n return <GoogleIcon />\n case 'facebook':\n return <FacebookIcon />\n case 'apple':\n return <AppleIcon />\n default:\n return null\n }\n}\n"],"mappings":"AASa;AATb,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAEpB,MAAM,gBAAgB,CAAC,EAAE,aAAa,MAAgC;AAC3E,QAAM,WAAW,6CAAc;AAC/B,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO,oBAAC,cAAW;AAAA,IACrB,KAAK;AACH,aAAO,oBAAC,cAAW;AAAA,IACrB,KAAK;AACH,aAAO,oBAAC,gBAAa;AAAA,IACvB,KAAK;AACH,aAAO,oBAAC,aAAU;AAAA,IACpB;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/ui/avatar.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\r\n\r\nimport { cn } from '../../lib/utils'\r\n\r\nfunction Avatar({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\r\n return (\r\n <AvatarPrimitive.Root\r\n data-slot=\"avatar\"\r\n className={cn(\r\n 'relative flex size-8 shrink-0 overflow-hidden rounded-full',\r\n className,\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AvatarImage({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\r\n return (\r\n <AvatarPrimitive.Image\r\n data-slot=\"avatar-image\"\r\n className={cn('aspect-square size-full', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AvatarFallback({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\r\n return (\r\n <AvatarPrimitive.Fallback\r\n data-slot=\"avatar-fallback\"\r\n className={cn(\r\n 'bg-muted flex h-[40px] w-[40px] items-center justify-center rounded-full',\r\n className,\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYI;AATJ,sBAAiC;AAEjC,mBAAmB;AAEnB,SAAS,OAAO,IAGsC;AAHtC,eACd;AAAA;AAAA,EARF,IAOgB,IAEX,kBAFW,IAEX;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,IAGkC;AAHlC,eACnB;AAAA;AAAA,EAxBF,IAuBqB,IAEhB,kBAFgB,IAEhB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,IAGkC;AAHlC,eACtB;AAAA;AAAA,EArCF,IAoCwB,IAEnB,kBAFmB,IAEnB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/ui/avatar.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\n\nimport { cn } from '../../lib/utils'\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n 'relative flex size-8 shrink-0 overflow-hidden rounded-full',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'bg-muted flex h-[40px] w-[40px] items-center justify-center rounded-full',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYI;AATJ,sBAAiC;AAEjC,mBAAmB;AAEnB,SAAS,OAAO,IAGsC;AAHtC,eACd;AAAA;AAAA,EARF,IAOgB,IAEX,kBAFW,IAEX;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,IAGkC;AAHlC,eACnB;AAAA;AAAA,EAxBF,IAuBqB,IAEhB,kBAFgB,IAEhB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,IAGkC;AAHlC,eACtB;AAAA;AAAA,EArCF,IAoCwB,IAEnB,kBAFmB,IAEnB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/ui/avatar.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\r\n\r\nimport { cn } from '../../lib/utils'\r\n\r\nfunction Avatar({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\r\n return (\r\n <AvatarPrimitive.Root\r\n data-slot=\"avatar\"\r\n className={cn(\r\n 'relative flex size-8 shrink-0 overflow-hidden rounded-full',\r\n className,\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AvatarImage({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\r\n return (\r\n <AvatarPrimitive.Image\r\n data-slot=\"avatar-image\"\r\n className={cn('aspect-square size-full', className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AvatarFallback({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\r\n return (\r\n <AvatarPrimitive.Fallback\r\n data-slot=\"avatar-fallback\"\r\n className={cn(\r\n 'bg-muted flex h-[40px] w-[40px] items-center justify-center rounded-full',\r\n className,\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYI;AATJ,YAAY,qBAAqB;AAEjC,SAAS,UAAU;AAEnB,SAAS,OAAO,IAGsC;AAHtC,eACd;AAAA;AAAA,EARF,IAOgB,IAEX,kBAFW,IAEX;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,IAGkC;AAHlC,eACnB;AAAA;AAAA,EAxBF,IAuBqB,IAEhB,kBAFgB,IAEhB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,IAGkC;AAHlC,eACtB;AAAA;AAAA,EArCF,IAoCwB,IAEnB,kBAFmB,IAEnB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/ui/avatar.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\n\nimport { cn } from '../../lib/utils'\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n 'relative flex size-8 shrink-0 overflow-hidden rounded-full',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'bg-muted flex h-[40px] w-[40px] items-center justify-center rounded-full',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYI;AATJ,YAAY,qBAAqB;AAEjC,SAAS,UAAU;AAEnB,SAAS,OAAO,IAGsC;AAHtC,eACd;AAAA;AAAA,EARF,IAOgB,IAEX,kBAFW,IAEX;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,IAGkC;AAHlC,eACnB;AAAA;AAAA,EAxBF,IAuBqB,IAEhB,kBAFgB,IAEhB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,SAAS;AAAA,OAC9C;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,IAGkC;AAHlC,eACtB;AAAA;AAAA,EArCF,IAoCwB,IAEnB,kBAFmB,IAEnB;AAAA,IADH;AAAA;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/ui/breadcrumb.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport { ChevronRight } from 'lucide-react'\r\nimport { cn } from '../../lib/utils'\r\n\r\nexport interface BreadcrumbItem {\r\n label: string\r\n href?: string\r\n}\r\n\r\nexport interface BreadcrumbProps {\r\n items: BreadcrumbItem[]\r\n className?: string\r\n}\r\n\r\nexport function Breadcrumb({ items, className }: BreadcrumbProps) {\r\n return (\r\n <nav aria-label=\"breadcrumb\" className={cn('flex items-center', className)}>\r\n <ol className=\"text-muted-foreground flex flex-wrap items-center gap-1 text-sm leading-none\">\r\n {items.map((item, index) => (\r\n <React.Fragment key={index}>\r\n {index > 0 && (\r\n <li aria-hidden=\"true\" className=\"flex items-center\">\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </li>\r\n )}\r\n <li>\r\n {item.href ? (\r\n <a\r\n href={item.href}\r\n className=\"hover:text-foreground inline-block max-w-[200px] truncate transition-colors\"\r\n >\r\n {item.label}\r\n </a>\r\n ) : (\r\n <span\r\n aria-current=\"page\"\r\n className=\"text-foreground inline-block max-w-[200px] truncate font-medium\"\r\n >\r\n {item.label}\r\n </span>\r\n )}\r\n </li>\r\n </React.Fragment>\r\n ))}\r\n </ol>\r\n </nav>\r\n )\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBU;AAnBV,YAAuB;AACvB,0BAA6B;AAC7B,mBAAmB;AAYZ,SAAS,WAAW,EAAE,OAAO,UAAU,GAAoB;AAChE,SACE,4CAAC,SAAI,cAAW,cAAa,eAAW,iBAAG,qBAAqB,SAAS,GACvE,sDAAC,QAAG,WAAU,gFACX,gBAAM,IAAI,CAAC,MAAM,UAChB,6CAAC,MAAM,UAAN,EACE;AAAA,YAAQ,KACP,4CAAC,QAAG,eAAY,QAAO,WAAU,qBAC/B,sDAAC,oCAAa,WAAU,WAAU,GACpC;AAAA,IAEF,4CAAC,QACE,eAAK,OACJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,WAAU;AAAA,QAET,eAAK;AAAA;AAAA,IACR,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,gBAAa;AAAA,QACb,WAAU;AAAA,QAET,eAAK;AAAA;AAAA,IACR,GAEJ;AAAA,OAtBmB,KAuBrB,CACD,GACH,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/ui/breadcrumb.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n}\n\nexport interface BreadcrumbProps {\n items: BreadcrumbItem[]\n className?: string\n}\n\nexport function Breadcrumb({ items, className }: BreadcrumbProps) {\n return (\n <nav aria-label=\"breadcrumb\" className={cn('flex items-center', className)}>\n <ol className=\"text-muted-foreground flex flex-wrap items-center gap-1 text-sm leading-none\">\n {items.map((item, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <li aria-hidden=\"true\" className=\"flex items-center\">\n <ChevronRight className=\"h-4 w-4\" />\n </li>\n )}\n <li>\n {item.href ? (\n <a\n href={item.href}\n className=\"hover:text-foreground inline-block max-w-[200px] truncate transition-colors\"\n >\n {item.label}\n </a>\n ) : (\n <span\n aria-current=\"page\"\n className=\"text-foreground inline-block max-w-[200px] truncate font-medium\"\n >\n {item.label}\n </span>\n )}\n </li>\n </React.Fragment>\n ))}\n </ol>\n </nav>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBU;AAnBV,YAAuB;AACvB,0BAA6B;AAC7B,mBAAmB;AAYZ,SAAS,WAAW,EAAE,OAAO,UAAU,GAAoB;AAChE,SACE,4CAAC,SAAI,cAAW,cAAa,eAAW,iBAAG,qBAAqB,SAAS,GACvE,sDAAC,QAAG,WAAU,gFACX,gBAAM,IAAI,CAAC,MAAM,UAChB,6CAAC,MAAM,UAAN,EACE;AAAA,YAAQ,KACP,4CAAC,QAAG,eAAY,QAAO,WAAU,qBAC/B,sDAAC,oCAAa,WAAU,WAAU,GACpC;AAAA,IAEF,4CAAC,QACE,eAAK,OACJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,WAAU;AAAA,QAET,eAAK;AAAA;AAAA,IACR,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,gBAAa;AAAA,QACb,WAAU;AAAA,QAET,eAAK;AAAA;AAAA,IACR,GAEJ;AAAA,OAtBmB,KAuBrB,CACD,GACH,GACF;AAEJ;","names":[]}