@slashclick/ui 0.1.15 → 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.
- package/dist/components/flowbite/search-hero.cjs +3 -3
- package/dist/components/flowbite/search-hero.cjs.map +1 -1
- package/dist/components/flowbite/search-hero.js +3 -3
- package/dist/components/flowbite/search-hero.js.map +1 -1
- package/dist/components/header/header.cjs +23 -10
- package/dist/components/header/header.cjs.map +1 -1
- package/dist/components/header/header.d.ts +5 -2
- package/dist/components/header/header.d.ts.map +1 -1
- package/dist/components/header/header.js +13 -10
- package/dist/components/header/header.js.map +1 -1
- package/dist/components/header/langbutton/langbutton.cjs +17 -5
- package/dist/components/header/langbutton/langbutton.cjs.map +1 -1
- package/dist/components/header/langbutton/langbutton.d.ts +3 -1
- package/dist/components/header/langbutton/langbutton.d.ts.map +1 -1
- package/dist/components/header/langbutton/langbutton.js +17 -5
- package/dist/components/header/langbutton/langbutton.js.map +1 -1
- package/dist/components/header/userbutton/userbutton.cjs +14 -5
- package/dist/components/header/userbutton/userbutton.cjs.map +1 -1
- package/dist/components/header/userbutton/userbutton.d.ts +3 -1
- package/dist/components/header/userbutton/userbutton.d.ts.map +1 -1
- package/dist/components/header/userbutton/userbutton.js +14 -5
- package/dist/components/header/userbutton/userbutton.js.map +1 -1
- package/dist/components/icons/logo.cjs +6 -2
- package/dist/components/icons/logo.cjs.map +1 -1
- package/dist/components/icons/logo.d.ts +3 -1
- package/dist/components/icons/logo.d.ts.map +1 -1
- package/dist/components/icons/logo.js +6 -2
- package/dist/components/icons/logo.js.map +1 -1
- package/dist/components/tailwind/contact.cjs +6 -6
- package/dist/components/tailwind/contact.cjs.map +1 -1
- package/dist/components/tailwind/contact.js +6 -6
- package/dist/components/tailwind/contact.js.map +1 -1
- package/dist/components/tailwind/pricing.cjs +28 -28
- package/dist/components/tailwind/pricing.cjs.map +1 -1
- package/dist/components/tailwind/pricing.d.ts.map +1 -1
- package/dist/components/tailwind/pricing.js +28 -28
- package/dist/components/tailwind/pricing.js.map +1 -1
- package/dist/lib/nav-theme.cjs +33 -0
- package/dist/lib/nav-theme.cjs.map +1 -0
- package/dist/lib/nav-theme.d.ts +3 -0
- package/dist/lib/nav-theme.d.ts.map +1 -0
- package/dist/lib/nav-theme.js +9 -0
- package/dist/lib/nav-theme.js.map +1 -0
- package/dist/styles.css +2 -2
- package/package.json +14 -7
|
@@ -1 +1 @@
|
|
|
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-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-400\">\n Pricing\n </h1>\n <p className=\"mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl\">\n Start free. Upgrade when you're ready.\n </p>\n </div>\n <p className=\"mx-auto mt-6 max-w-2xl text-center text-lg leading-8 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-white/10 xl:p-10\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 text-white\">\n Preview\n </h2>\n <p className=\"rounded-full bg-white/10 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\n Free forever\n </p>\n </div>\n <p className=\"mt-4 text-sm leading-6 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-white\">\n $0\n </span>\n <span className=\"text-sm font-semibold leading-6 text-gray-300\">\n /month\n </span>\n </p>\n <a\n href=\"/signin\"\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\"\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-300 xl:mt-10\"\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-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-white/5 p-8 ring-2 ring-indigo-500 xl:p-10\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 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-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-white\">\n $9.99\n </span>\n <span className=\"text-sm font-semibold leading-6 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-400\">{error}</p>\n )}\n <ul\n role=\"list\"\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10\"\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-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-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-white\">\n Can I cancel anytime?\n </dt>\n <dd className=\"mt-2 text-base leading-7 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-white\">\n What happens to my data if I downgrade?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\n Your existing stories and characters are never deleted.\n You'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-white\">\n Is billing monthly or annually?\n </dt>\n <dd className=\"mt-2 text-base leading-7 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
|
+
{"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'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'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,
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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'\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-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-400\">\n Pricing\n </h1>\n <p className=\"mt-2 text-4xl font-bold tracking-tight text-white sm:text-5xl\">\n Start free. Upgrade when you're ready.\n </p>\n </div>\n <p className=\"mx-auto mt-6 max-w-2xl text-center text-lg leading-8 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-white/10 xl:p-10\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 text-white\">\n Preview\n </h2>\n <p className=\"rounded-full bg-white/10 px-2.5 py-1 text-xs font-semibold leading-5 text-white\">\n Free forever\n </p>\n </div>\n <p className=\"mt-4 text-sm leading-6 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-white\">\n $0\n </span>\n <span className=\"text-sm font-semibold leading-6 text-gray-300\">\n /month\n </span>\n </p>\n <a\n href=\"/signin\"\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\"\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-300 xl:mt-10\"\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-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-white/5 p-8 ring-2 ring-indigo-500 xl:p-10\">\n <div className=\"flex items-center justify-between gap-x-4\">\n <h2 className=\"text-lg font-semibold leading-8 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-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-white\">\n $9.99\n </span>\n <span className=\"text-sm font-semibold leading-6 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-400\">{error}</p>\n )}\n <ul\n role=\"list\"\n className=\"mt-8 space-y-3 text-sm leading-6 text-gray-300 xl:mt-10\"\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-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-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-white\">\n Can I cancel anytime?\n </dt>\n <dd className=\"mt-2 text-base leading-7 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-white\">\n What happens to my data if I downgrade?\n </dt>\n <dd className=\"mt-2 text-base leading-7 text-gray-300\">\n Your existing stories and characters are never deleted.\n You'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-white\">\n Is billing monthly or annually?\n </dt>\n <dd className=\"mt-2 text-base leading-7 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
|
+
{"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'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'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"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var nav_theme_exports = {};
|
|
20
|
+
__export(nav_theme_exports, {
|
|
21
|
+
NAV_TEXT_CLASSES: () => NAV_TEXT_CLASSES
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(nav_theme_exports);
|
|
24
|
+
const NAV_TEXT_CLASSES = {
|
|
25
|
+
auto: "text-gray-900 dark:text-white",
|
|
26
|
+
light: "text-white",
|
|
27
|
+
dark: "text-gray-900"
|
|
28
|
+
};
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
NAV_TEXT_CLASSES
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=nav-theme.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/nav-theme.ts"],"sourcesContent":["export type NavTheme = 'auto' | 'light' | 'dark'\n\nexport const NAV_TEXT_CLASSES: Record<NavTheme, string> = {\n auto: 'text-gray-900 dark:text-white',\n light: 'text-white',\n dark: 'text-gray-900',\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,mBAA6C;AAAA,EACxD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-theme.d.ts","sourceRoot":"","sources":["../../lib/nav-theme.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAEhD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAIrD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/nav-theme.ts"],"sourcesContent":["export type NavTheme = 'auto' | 'light' | 'dark'\n\nexport const NAV_TEXT_CLASSES: Record<NavTheme, string> = {\n auto: 'text-gray-900 dark:text-white',\n light: 'text-white',\n dark: 'text-gray-900',\n}\n"],"mappings":"AAEO,MAAM,mBAA6C;AAAA,EACxD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR;","names":[]}
|