singularity-components 0.1.195 → 0.1.197
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/blocks/badges/category-badge.d.ts +11 -0
- package/dist/components/blocks/badges/category-badge.js +34 -0
- package/dist/components/blocks/badges/category-badge.js.map +1 -0
- package/dist/components/blocks/cards/blogpost-card.d.ts +3 -1
- package/dist/components/blocks/cards/blogpost-card.js +10 -5
- package/dist/components/blocks/cards/blogpost-card.js.map +1 -1
- package/dist/components/blocks/directory/author-card.d.ts +10 -0
- package/dist/components/blocks/directory/author-card.js +50 -0
- package/dist/components/blocks/directory/author-card.js.map +1 -0
- package/dist/components/blocks/directory/category-card.d.ts +10 -0
- package/dist/components/blocks/directory/category-card.js +27 -0
- package/dist/components/blocks/directory/category-card.js.map +1 -0
- package/dist/components/blocks/extras/extras-hub-card.d.ts +16 -0
- package/dist/components/blocks/extras/extras-hub-card.js +22 -0
- package/dist/components/blocks/extras/extras-hub-card.js.map +1 -0
- package/dist/components/blocks/gallery/image-gallery.d.ts +14 -0
- package/dist/components/blocks/gallery/image-gallery.js +211 -0
- package/dist/components/blocks/gallery/image-gallery.js.map +1 -0
- package/dist/components/blocks/index.d.ts +11 -0
- package/dist/components/blocks/index.js +10 -0
- package/dist/components/blocks/index.js.map +1 -1
- package/dist/components/blocks/loading/loading-skeletons.d.ts +15 -0
- package/dist/components/blocks/loading/loading-skeletons.js +78 -0
- package/dist/components/blocks/loading/loading-skeletons.js.map +1 -0
- package/dist/components/blocks/login/login.js +76 -47
- package/dist/components/blocks/login/login.js.map +1 -1
- package/dist/components/blocks/marketing/page-hero.d.ts +13 -0
- package/dist/components/blocks/marketing/page-hero.js +37 -0
- package/dist/components/blocks/marketing/page-hero.js.map +1 -0
- package/dist/components/blocks/marketing/stats-grid.d.ts +16 -0
- package/dist/components/blocks/marketing/stats-grid.js +30 -0
- package/dist/components/blocks/marketing/stats-grid.js.map +1 -0
- package/dist/components/blocks/marketing/timeline.d.ts +17 -0
- package/dist/components/blocks/marketing/timeline.js +46 -0
- package/dist/components/blocks/marketing/timeline.js.map +1 -0
- package/dist/components/blocks/marketing/values-grid.d.ts +16 -0
- package/dist/components/blocks/marketing/values-grid.js +29 -0
- package/dist/components/blocks/marketing/values-grid.js.map +1 -0
- package/dist/components/blocks/post-list/post-list-with-filters.js +4 -4
- package/dist/components/blocks/post-list/post-list-with-filters.js.map +1 -1
- package/dist/components/index.d.ts +28 -1
- package/dist/components/pages/about/about-page.d.ts +5 -0
- package/dist/components/pages/about/about-page.js +161 -0
- package/dist/components/pages/about/about-page.js.map +1 -0
- package/dist/components/pages/admin/admin-page.js +160 -103
- package/dist/components/pages/admin/admin-page.js.map +1 -1
- package/dist/components/pages/author/author-page.d.ts +8 -0
- package/dist/components/pages/author/author-page.js +107 -0
- package/dist/components/pages/author/author-page.js.map +1 -0
- package/dist/components/pages/authors/authors-page.d.ts +5 -0
- package/dist/components/pages/authors/authors-page.js +25 -0
- package/dist/components/pages/authors/authors-page.js.map +1 -0
- package/dist/components/pages/blogpost/blogpost.d.ts +4 -1
- package/dist/components/pages/blogpost/blogpost.js +110 -62
- package/dist/components/pages/blogpost/blogpost.js.map +1 -1
- package/dist/components/pages/categories/categories-page.d.ts +5 -0
- package/dist/components/pages/categories/categories-page.js +33 -0
- package/dist/components/pages/categories/categories-page.js.map +1 -0
- package/dist/components/pages/category/category-page.js +4 -2
- package/dist/components/pages/category/category-page.js.map +1 -1
- package/dist/components/pages/chat/chat-page.js +4 -4
- package/dist/components/pages/chat/chat-page.js.map +1 -1
- package/dist/components/pages/contact/contact-page.d.ts +5 -0
- package/dist/components/pages/contact/contact-page.js +180 -0
- package/dist/components/pages/contact/contact-page.js.map +1 -0
- package/dist/components/pages/content-blocks/content-blocks-page.d.ts +5 -0
- package/dist/components/pages/content-blocks/content-blocks-page.js +87 -0
- package/dist/components/pages/content-blocks/content-blocks-page.js.map +1 -0
- package/dist/components/pages/extras/extras-hub-page.d.ts +10 -0
- package/dist/components/pages/extras/extras-hub-page.js +110 -0
- package/dist/components/pages/extras/extras-hub-page.js.map +1 -0
- package/dist/components/pages/index.d.ts +14 -0
- package/dist/components/pages/index.js +12 -0
- package/dist/components/pages/index.js.map +1 -1
- package/dist/components/pages/maintenance/maintenance-page.js +1 -1
- package/dist/components/pages/maintenance/maintenance-page.js.map +1 -1
- package/dist/components/pages/membership/membership-page.d.ts +5 -0
- package/dist/components/pages/membership/membership-page.js +131 -0
- package/dist/components/pages/membership/membership-page.js.map +1 -0
- package/dist/components/pages/mosaic/mosaic-page.d.ts +5 -0
- package/dist/components/pages/mosaic/mosaic-page.js +81 -0
- package/dist/components/pages/mosaic/mosaic-page.js.map +1 -0
- package/dist/components/pages/newsletter/newsletter-page.d.ts +5 -0
- package/dist/components/pages/newsletter/newsletter-page.js +165 -0
- package/dist/components/pages/newsletter/newsletter-page.js.map +1 -0
- package/dist/components/pages/not-found/not-found.js +2 -2
- package/dist/components/pages/not-found/not-found.js.map +1 -1
- package/dist/components/pages/privacy/privacy-page.js +2 -2
- package/dist/components/pages/privacy/privacy-page.js.map +1 -1
- package/dist/components/pages/resources/resources-page.d.ts +5 -0
- package/dist/components/pages/resources/resources-page.js +24 -0
- package/dist/components/pages/resources/resources-page.js.map +1 -0
- package/dist/components/pages/startpage/startpage.js +6 -4
- package/dist/components/pages/startpage/startpage.js.map +1 -1
- package/dist/components/pages/terms/terms-page.js +2 -2
- package/dist/components/pages/terms/terms-page.js.map +1 -1
- package/dist/components/primitives/accordion/accordion.js +14 -16
- package/dist/components/primitives/accordion/accordion.js.map +1 -1
- package/dist/components/primitives/badge/badge.js +1 -1
- package/dist/components/primitives/badge/badge.js.map +1 -1
- package/dist/components/primitives/buttons/button.d.ts +2 -2
- package/dist/components/primitives/buttons/icon-button.d.ts +1 -1
- package/dist/components/primitives/collapsible/collapsible.js +4 -1
- package/dist/components/primitives/collapsible/collapsible.js.map +1 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu.js +6 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/primitives/forms/checkbox.js +1 -1
- package/dist/components/primitives/forms/checkbox.js.map +1 -1
- package/dist/components/primitives/forms/field.d.ts +4 -2
- package/dist/components/primitives/forms/field.js +4 -2
- package/dist/components/primitives/forms/field.js.map +1 -1
- package/dist/components/primitives/forms/form-control.d.ts +28 -0
- package/dist/components/primitives/forms/form-control.js +40 -0
- package/dist/components/primitives/forms/form-control.js.map +1 -0
- package/dist/components/primitives/forms/form.d.ts +12 -0
- package/dist/components/primitives/forms/form.js +30 -0
- package/dist/components/primitives/forms/form.js.map +1 -0
- package/dist/components/primitives/forms/select.js +12 -12
- package/dist/components/primitives/forms/select.js.map +1 -1
- package/dist/components/primitives/icon/icon.d.ts +3 -2
- package/dist/components/primitives/icon/icon.js +2 -1
- package/dist/components/primitives/icon/icon.js.map +1 -1
- package/dist/components/primitives/index.d.ts +4 -0
- package/dist/components/primitives/index.js +3 -0
- package/dist/components/primitives/index.js.map +1 -1
- package/dist/components/primitives/layout/layout.d.ts +1 -1
- package/dist/components/primitives/link/link.d.ts +2 -2
- package/dist/components/primitives/sheet/sheet.js +1 -1
- package/dist/components/primitives/sheet/sheet.js.map +1 -1
- package/dist/components/primitives/stack/stack.d.ts +2 -2
- package/dist/components/primitives/text/internal/text-element.d.ts +8 -2
- package/dist/components/primitives/text/internal/text-element.js +3 -0
- package/dist/components/primitives/text/internal/text-element.js.map +1 -1
- package/dist/components/primitives/text/text-code.d.ts +1 -1
- package/dist/components/templates/form/form.d.ts +2 -2
- package/dist/components/templates/form/form.js +133 -87
- package/dist/components/templates/form/form.js.map +1 -1
- package/dist/components/templates/hero/hero.js +1 -0
- package/dist/components/templates/hero/hero.js.map +1 -1
- package/dist/components/templates/index.d.ts +1 -0
- package/dist/components/templates/index.js +1 -0
- package/dist/components/templates/index.js.map +1 -1
- package/dist/components/templates/loading-screen/loading-screen.d.ts +10 -0
- package/dist/components/templates/loading-screen/loading-screen.js +39 -0
- package/dist/components/templates/loading-screen/loading-screen.js.map +1 -0
- package/dist/css/variables.css +6 -3
- package/dist/css/variables.css.map +1 -1
- package/dist/data/posts.d.ts +5 -0
- package/dist/data/posts.js +41 -8
- package/dist/data/posts.js.map +1 -1
- package/dist/index.d.ts +28 -1
- package/dist/lib/forms/field-props.d.ts +60 -0
- package/dist/lib/forms/field-props.js +60 -0
- package/dist/lib/forms/field-props.js.map +1 -0
- package/dist/lib/forms/index.d.ts +11 -0
- package/dist/lib/forms/index.js +3 -0
- package/dist/lib/forms/index.js.map +1 -0
- package/dist/lib/forms/tanstack-field.d.ts +71 -0
- package/dist/lib/forms/tanstack-field.js +121 -0
- package/dist/lib/forms/tanstack-field.js.map +1 -0
- package/dist/lib/index.d.ts +11 -0
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/main.css +393 -90
- package/dist/main.css.map +1 -1
- package/package.json +30 -23
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useForm } from "@tanstack/react-form";
|
|
4
|
+
import { motion } from "framer-motion";
|
|
5
|
+
import {
|
|
6
|
+
TanStackInputField,
|
|
7
|
+
TanStackTextareaField
|
|
8
|
+
} from "../../../lib/forms/tanstack-field.js";
|
|
9
|
+
import {
|
|
10
|
+
Layout,
|
|
11
|
+
Heading,
|
|
12
|
+
Text,
|
|
13
|
+
Button,
|
|
14
|
+
Icon
|
|
15
|
+
} from "../../primitives/index.js";
|
|
16
|
+
import { FieldGroup } from "../../primitives/forms/field.js";
|
|
17
|
+
import {
|
|
18
|
+
Form,
|
|
19
|
+
FormActions
|
|
20
|
+
} from "../../primitives/forms/form.js";
|
|
21
|
+
import { PageHero } from "../../blocks/marketing/page-hero.js";
|
|
22
|
+
import { Card, CardContent } from "../../blocks/cards/card.js";
|
|
23
|
+
import { useToast } from "../../primitives/sonner/use-toast.js";
|
|
24
|
+
const initialForm = {
|
|
25
|
+
name: "",
|
|
26
|
+
email: "",
|
|
27
|
+
subject: "",
|
|
28
|
+
message: ""
|
|
29
|
+
};
|
|
30
|
+
function ContactPage() {
|
|
31
|
+
const { toast } = useToast();
|
|
32
|
+
const form = useForm({
|
|
33
|
+
defaultValues: initialForm,
|
|
34
|
+
onSubmit: async ({ formApi }) => {
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, 1200));
|
|
36
|
+
toast.message("Message sent!", {
|
|
37
|
+
description: "Thanks for reaching out. We'll get back to you soon."
|
|
38
|
+
});
|
|
39
|
+
formApi.reset();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return /* @__PURE__ */ jsxs(
|
|
43
|
+
motion.div,
|
|
44
|
+
{
|
|
45
|
+
initial: { opacity: 1, y: 20 },
|
|
46
|
+
animate: { opacity: 1, y: 0 },
|
|
47
|
+
transition: { duration: 0.3 },
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ jsx(
|
|
50
|
+
PageHero,
|
|
51
|
+
{
|
|
52
|
+
icon: "Mail",
|
|
53
|
+
title: "Get in Touch",
|
|
54
|
+
description: "Have a question, idea, or just want to say hello? We'd love to hear from you."
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsx(Layout, { type: "col", className: "sg:py-16", children: /* @__PURE__ */ jsx(Layout.Col1, { hideDiv: true, className: "sg:max-w-5xl", children: /* @__PURE__ */ jsxs("div", { className: "sg:grid sg:gap-12 lg:sg:grid-cols-5", children: [
|
|
58
|
+
/* @__PURE__ */ jsxs("div", { className: "lg:sg:col-span-3", children: [
|
|
59
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h3", className: "sg:mb-6", children: "Send a Message" }),
|
|
60
|
+
/* @__PURE__ */ jsxs(
|
|
61
|
+
Form,
|
|
62
|
+
{
|
|
63
|
+
noValidate: true,
|
|
64
|
+
onSubmit: (event) => {
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
event.stopPropagation();
|
|
67
|
+
void form.handleSubmit();
|
|
68
|
+
},
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ jsxs(FieldGroup, { className: "sg:grid sg:gap-5 sm:sg:grid-cols-2", children: [
|
|
71
|
+
/* @__PURE__ */ jsx(
|
|
72
|
+
TanStackInputField,
|
|
73
|
+
{
|
|
74
|
+
formApi: form,
|
|
75
|
+
name: "name",
|
|
76
|
+
label: "Name",
|
|
77
|
+
placeholder: "Your name",
|
|
78
|
+
validators: {
|
|
79
|
+
onChange: ({ value }) => value.trim() ? void 0 : "Name is required"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
/* @__PURE__ */ jsx(
|
|
84
|
+
TanStackInputField,
|
|
85
|
+
{
|
|
86
|
+
formApi: form,
|
|
87
|
+
name: "email",
|
|
88
|
+
label: "Email",
|
|
89
|
+
type: "email",
|
|
90
|
+
placeholder: "you@example.com",
|
|
91
|
+
validators: {
|
|
92
|
+
onChange: ({ value }) => {
|
|
93
|
+
if (!value.trim() || !value.includes("@")) {
|
|
94
|
+
return "Please enter a valid email";
|
|
95
|
+
}
|
|
96
|
+
return void 0;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
] }),
|
|
102
|
+
/* @__PURE__ */ jsxs(FieldGroup, { className: "sg:gap-4", children: [
|
|
103
|
+
/* @__PURE__ */ jsx(
|
|
104
|
+
TanStackInputField,
|
|
105
|
+
{
|
|
106
|
+
formApi: form,
|
|
107
|
+
name: "subject",
|
|
108
|
+
label: "Subject",
|
|
109
|
+
placeholder: "What's this about?",
|
|
110
|
+
validators: {
|
|
111
|
+
onChange: ({ value }) => value.trim() ? void 0 : "Subject is required"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
/* @__PURE__ */ jsx(
|
|
116
|
+
TanStackTextareaField,
|
|
117
|
+
{
|
|
118
|
+
formApi: form,
|
|
119
|
+
name: "message",
|
|
120
|
+
label: "Message",
|
|
121
|
+
placeholder: "Your message...",
|
|
122
|
+
rows: 6,
|
|
123
|
+
validators: {
|
|
124
|
+
onChange: ({ value }) => value.trim() ? void 0 : "Message is required"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
] }),
|
|
129
|
+
/* @__PURE__ */ jsx(FormActions, { children: /* @__PURE__ */ jsx(
|
|
130
|
+
form.Subscribe,
|
|
131
|
+
{
|
|
132
|
+
selector: (state) => [state.canSubmit, state.isSubmitting],
|
|
133
|
+
children: ([canSubmit, isSubmitting]) => /* @__PURE__ */ jsx(
|
|
134
|
+
Button,
|
|
135
|
+
{
|
|
136
|
+
type: "submit",
|
|
137
|
+
iconStart: "Send",
|
|
138
|
+
disabled: !canSubmit || isSubmitting,
|
|
139
|
+
loading: isSubmitting,
|
|
140
|
+
children: "Send message"
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
) })
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
)
|
|
148
|
+
] }),
|
|
149
|
+
/* @__PURE__ */ jsx("div", { className: "lg:sg:col-span-2 sg:space-y-6", children: /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardContent, { className: "sg:pt-6 sg:space-y-4", children: [
|
|
150
|
+
/* @__PURE__ */ jsxs("div", { className: "sg:flex sg:items-start sg:gap-3", children: [
|
|
151
|
+
/* @__PURE__ */ jsx(Icon, { icon: "Mail", className: "sg:h-5 sg:w-5 sg:text-primary sg:mt-0.5" }),
|
|
152
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
153
|
+
/* @__PURE__ */ jsx(Text, { fontweight: "medium", children: "Email" }),
|
|
154
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", foreground: "muted-foreground", children: "hello@filion.se" })
|
|
155
|
+
] })
|
|
156
|
+
] }),
|
|
157
|
+
/* @__PURE__ */ jsxs("div", { className: "sg:flex sg:items-start sg:gap-3", children: [
|
|
158
|
+
/* @__PURE__ */ jsx(Icon, { icon: "MapPin", className: "sg:h-5 sg:w-5 sg:text-primary sg:mt-0.5" }),
|
|
159
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
160
|
+
/* @__PURE__ */ jsx(Text, { fontweight: "medium", children: "Location" }),
|
|
161
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", foreground: "muted-foreground", children: "Stockholm, Sweden" })
|
|
162
|
+
] })
|
|
163
|
+
] }),
|
|
164
|
+
/* @__PURE__ */ jsxs("div", { className: "sg:flex sg:items-start sg:gap-3", children: [
|
|
165
|
+
/* @__PURE__ */ jsx(Icon, { icon: "Clock", className: "sg:h-5 sg:w-5 sg:text-primary sg:mt-0.5" }),
|
|
166
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
167
|
+
/* @__PURE__ */ jsx(Text, { fontweight: "medium", children: "Hours" }),
|
|
168
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", foreground: "muted-foreground", children: "Mon\u2013Fri, 9am\u20135pm CET" })
|
|
169
|
+
] })
|
|
170
|
+
] })
|
|
171
|
+
] }) }) })
|
|
172
|
+
] }) }) })
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
export {
|
|
178
|
+
ContactPage
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=contact-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/contact/contact-page.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useForm } from \"@tanstack/react-form\";\r\nimport { motion } from \"framer-motion\";\r\nimport {\r\n\tTanStackInputField,\r\n\tTanStackTextareaField,\r\n} from \"../../../lib/forms/tanstack-field\";\r\nimport {\r\n\tLayout,\r\n\tHeading,\r\n\tText,\r\n\tButton,\r\n\tIcon,\r\n} from \"../../primitives/index\";\r\nimport { FieldGroup } from \"../../primitives/forms/field\";\r\nimport {\r\n\tForm,\r\n\tFormActions,\r\n} from \"../../primitives/forms/form\";\r\nimport { PageHero } from \"../../blocks/marketing/page-hero\";\r\nimport { Card, CardContent } from \"../../blocks/cards/card\";\r\nimport { useToast } from \"../../primitives/sonner/use-toast\";\r\n\r\ntype ContactFormValues = {\r\n\tname: string;\r\n\temail: string;\r\n\tsubject: string;\r\n\tmessage: string;\r\n};\r\n\r\nconst initialForm: ContactFormValues = {\r\n\tname: \"\",\r\n\temail: \"\",\r\n\tsubject: \"\",\r\n\tmessage: \"\",\r\n};\r\n\r\nexport function ContactPage() {\r\n\tconst { toast } = useToast();\r\n\r\n\tconst form = useForm({\r\n\t\tdefaultValues: initialForm,\r\n\t\tonSubmit: async ({ formApi }) => {\r\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1200));\r\n\t\t\ttoast.message(\"Message sent!\", {\r\n\t\t\t\tdescription: \"Thanks for reaching out. We'll get back to you soon.\",\r\n\t\t\t});\r\n\t\t\tformApi.reset();\r\n\t\t},\r\n\t});\r\n\r\n\treturn (\r\n\t\t<motion.div\r\n\t\t\tinitial={{ opacity: 1, y: 20 }}\r\n\t\t\tanimate={{ opacity: 1, y: 0 }}\r\n\t\t\ttransition={{ duration: 0.3 }}\r\n\t\t>\r\n\t\t\t<PageHero\r\n\t\t\t\ticon=\"Mail\"\r\n\t\t\t\ttitle=\"Get in Touch\"\r\n\t\t\t\tdescription=\"Have a question, idea, or just want to say hello? We'd love to hear from you.\"\r\n\t\t\t/>\r\n\r\n\t\t\t<Layout type=\"col\" className=\"sg:py-16\">\r\n\t\t\t\t<Layout.Col1 hideDiv className=\"sg:max-w-5xl\">\r\n\t\t\t\t\t<div className=\"sg:grid sg:gap-12 lg:sg:grid-cols-5\">\r\n\t\t\t\t\t\t<div className=\"lg:sg:col-span-3\">\r\n\t\t\t\t\t\t\t<Heading variant=\"h3\" className=\"sg:mb-6\">\r\n\t\t\t\t\t\t\t\tSend a Message\r\n\t\t\t\t\t\t\t</Heading>\r\n\t\t\t\t\t\t\t<Form\r\n\t\t\t\t\t\t\t\tnoValidate\r\n\t\t\t\t\t\t\t\tonSubmit={(event) => {\r\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\t\t\tvoid form.handleSubmit();\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<FieldGroup className=\"sg:grid sg:gap-5 sm:sg:grid-cols-2\">\r\n\t\t\t\t\t\t\t\t\t<TanStackInputField\r\n\t\t\t\t\t\t\t\t\t\tformApi={form}\r\n\t\t\t\t\t\t\t\t\t\tname=\"name\"\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Name\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"Your name\"\r\n\t\t\t\t\t\t\t\t\t\tvalidators={{\r\n\t\t\t\t\t\t\t\t\t\t\tonChange: ({ value }: { value: string }) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.trim() ? undefined : \"Name is required\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t<TanStackInputField\r\n\t\t\t\t\t\t\t\t\t\tformApi={form}\r\n\t\t\t\t\t\t\t\t\t\tname=\"email\"\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Email\"\r\n\t\t\t\t\t\t\t\t\t\ttype=\"email\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"you@example.com\"\r\n\t\t\t\t\t\t\t\t\t\tvalidators={{\r\n\t\t\t\t\t\t\t\t\t\t\tonChange: ({ value }: { value: string }) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!value.trim() || !value.includes(\"@\")) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn \"Please enter a valid email\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</FieldGroup>\r\n\t\t\t\t\t\t\t\t<FieldGroup className=\"sg:gap-4\">\r\n\t\t\t\t\t\t\t\t\t<TanStackInputField\r\n\t\t\t\t\t\t\t\t\t\tformApi={form}\r\n\t\t\t\t\t\t\t\t\t\tname=\"subject\"\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Subject\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"What's this about?\"\r\n\t\t\t\t\t\t\t\t\t\tvalidators={{\r\n\t\t\t\t\t\t\t\t\t\t\tonChange: ({ value }: { value: string }) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.trim() ? undefined : \"Subject is required\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t<TanStackTextareaField\r\n\t\t\t\t\t\t\t\t\t\tformApi={form}\r\n\t\t\t\t\t\t\t\t\t\tname=\"message\"\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Message\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"Your message...\"\r\n\t\t\t\t\t\t\t\t\t\trows={6}\r\n\t\t\t\t\t\t\t\t\t\tvalidators={{\r\n\t\t\t\t\t\t\t\t\t\t\tonChange: ({ value }: { value: string }) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.trim() ? undefined : \"Message is required\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</FieldGroup>\r\n\t\t\t\t\t\t\t\t<FormActions>\r\n\t\t\t\t\t\t\t\t\t<form.Subscribe\r\n\t\t\t\t\t\t\t\t\t\tselector={(state) => [state.canSubmit, state.isSubmitting]}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{([canSubmit, isSubmitting]) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"submit\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ticonStart=\"Send\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!canSubmit || isSubmitting}\r\n\t\t\t\t\t\t\t\t\t\t\t\tloading={isSubmitting}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\tSend message\r\n\t\t\t\t\t\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t</form.Subscribe>\r\n\t\t\t\t\t\t\t\t</FormActions>\r\n\t\t\t\t\t\t\t</Form>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<div className=\"lg:sg:col-span-2 sg:space-y-6\">\r\n\t\t\t\t\t\t\t<Card>\r\n\t\t\t\t\t\t\t\t<CardContent className=\"sg:pt-6 sg:space-y-4\">\r\n\t\t\t\t\t\t\t\t\t<div className=\"sg:flex sg:items-start sg:gap-3\">\r\n\t\t\t\t\t\t\t\t\t\t<Icon icon=\"Mail\" className=\"sg:h-5 sg:w-5 sg:text-primary sg:mt-0.5\" />\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<Text fontweight=\"medium\">Email</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t<Text size=\"sm\" foreground=\"muted-foreground\">\r\n\t\t\t\t\t\t\t\t\t\t\t\thello@filion.se\r\n\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div className=\"sg:flex sg:items-start sg:gap-3\">\r\n\t\t\t\t\t\t\t\t\t\t<Icon icon=\"MapPin\" className=\"sg:h-5 sg:w-5 sg:text-primary sg:mt-0.5\" />\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<Text fontweight=\"medium\">Location</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t<Text size=\"sm\" foreground=\"muted-foreground\">\r\n\t\t\t\t\t\t\t\t\t\t\t\tStockholm, Sweden\r\n\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div className=\"sg:flex sg:items-start sg:gap-3\">\r\n\t\t\t\t\t\t\t\t\t\t<Icon icon=\"Clock\" className=\"sg:h-5 sg:w-5 sg:text-primary sg:mt-0.5\" />\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<Text fontweight=\"medium\">Hours</Text>\r\n\t\t\t\t\t\t\t\t\t\t\t<Text size=\"sm\" foreground=\"muted-foreground\">\r\n\t\t\t\t\t\t\t\t\t\t\t\tMon–Fri, 9am–5pm CET\r\n\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</CardContent>\r\n\t\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</Layout.Col1>\r\n\t\t\t</Layout>\r\n\t\t</motion.div>\r\n\t);\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { motion } from "framer-motion";
|
|
4
|
+
import {
|
|
5
|
+
Layout,
|
|
6
|
+
Heading,
|
|
7
|
+
Text,
|
|
8
|
+
Stack,
|
|
9
|
+
Alert,
|
|
10
|
+
AlertDescription,
|
|
11
|
+
AlertTitle,
|
|
12
|
+
Accordion,
|
|
13
|
+
AccordionContent,
|
|
14
|
+
AccordionItem,
|
|
15
|
+
AccordionTrigger
|
|
16
|
+
} from "../../primitives/index.js";
|
|
17
|
+
import { LinkButton } from "../../primitives/buttons/link-button.js";
|
|
18
|
+
import { PageHero } from "../../blocks/marketing/page-hero.js";
|
|
19
|
+
import { Card, CardContent } from "../../blocks/cards/card.js";
|
|
20
|
+
import { TextCode } from "../../primitives/text/text-code.js";
|
|
21
|
+
function ContentBlocksPage() {
|
|
22
|
+
return /* @__PURE__ */ jsxs(
|
|
23
|
+
motion.div,
|
|
24
|
+
{
|
|
25
|
+
initial: { opacity: 1, y: 20 },
|
|
26
|
+
animate: { opacity: 1, y: 0 },
|
|
27
|
+
transition: { duration: 0.3 },
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ jsx(
|
|
30
|
+
PageHero,
|
|
31
|
+
{
|
|
32
|
+
icon: "Layers",
|
|
33
|
+
title: "Content Blocks",
|
|
34
|
+
description: "Reusable editorial patterns for articles and marketing pages."
|
|
35
|
+
}
|
|
36
|
+
),
|
|
37
|
+
/* @__PURE__ */ jsx(Layout, { type: "col", className: "sg:py-16", children: /* @__PURE__ */ jsxs(Layout.Col1, { hideDiv: true, className: "sg:max-w-3xl sg:space-y-12", children: [
|
|
38
|
+
/* @__PURE__ */ jsxs("section", { className: "sg:space-y-4", children: [
|
|
39
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h2", children: "Callouts" }),
|
|
40
|
+
/* @__PURE__ */ jsxs(Alert, { children: [
|
|
41
|
+
/* @__PURE__ */ jsx(AlertTitle, { children: "Info" }),
|
|
42
|
+
/* @__PURE__ */ jsx(AlertDescription, { children: "Use callouts to highlight tips, warnings, or key takeaways." })
|
|
43
|
+
] })
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ jsxs("section", { className: "sg:space-y-4", children: [
|
|
46
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h2", children: "Code Snippets" }),
|
|
47
|
+
/* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { className: "sg:pt-6", children: /* @__PURE__ */ jsx(TextCode, { children: `const featured = posts.filter((p) => p.featured);` }) }) })
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ jsxs("section", { className: "sg:space-y-4", children: [
|
|
50
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h2", children: "Quote Block" }),
|
|
51
|
+
/* @__PURE__ */ jsxs("blockquote", { className: "sg:border-l-4 sg:border-primary sg:pl-6 sg:py-2", children: [
|
|
52
|
+
/* @__PURE__ */ jsx(Text, { size: "lg", className: "sg:italic", children: '"Design is not just what it looks like \u2014 design is how it works."' }),
|
|
53
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", foreground: "muted-foreground", className: "sg:mt-2", children: "\u2014 Steve Jobs" })
|
|
54
|
+
] })
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ jsxs("section", { className: "sg:space-y-4", children: [
|
|
57
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h2", children: "FAQ Accordion" }),
|
|
58
|
+
/* @__PURE__ */ jsxs(Accordion, { multiple: false, "aria-label": "Content blocks FAQ", children: [
|
|
59
|
+
/* @__PURE__ */ jsxs(AccordionItem, { value: "item-1", children: [
|
|
60
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { children: "What are content blocks?" }),
|
|
61
|
+
/* @__PURE__ */ jsx(AccordionContent, { children: "Reusable UI patterns for editorial and marketing content." })
|
|
62
|
+
] }),
|
|
63
|
+
/* @__PURE__ */ jsxs(AccordionItem, { value: "item-2", children: [
|
|
64
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { children: "How do I use them?" }),
|
|
65
|
+
/* @__PURE__ */ jsx(AccordionContent, { children: "Import the block components and compose them in your pages." })
|
|
66
|
+
] })
|
|
67
|
+
] })
|
|
68
|
+
] }),
|
|
69
|
+
/* @__PURE__ */ jsxs("section", { className: "sg:space-y-4", children: [
|
|
70
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h2", children: "Inline CTA" }),
|
|
71
|
+
/* @__PURE__ */ jsx(Card, { className: "sg:bg-primary/5 sg:border-primary/20", children: /* @__PURE__ */ jsxs(CardContent, { className: "sg:py-6 sg:flex sg:flex-col sm:sg:flex-row sg:items-center sg:justify-between sg:gap-4", children: [
|
|
72
|
+
/* @__PURE__ */ jsxs(Stack, { gap: 1, children: [
|
|
73
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h4", children: "Stay in the loop" }),
|
|
74
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", foreground: "muted-foreground", children: "Get curated stories delivered weekly." })
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ jsx(LinkButton, { to: "/extras/newsletter", children: "Subscribe" })
|
|
77
|
+
] }) })
|
|
78
|
+
] })
|
|
79
|
+
] }) })
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
export {
|
|
85
|
+
ContentBlocksPage
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=content-blocks-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/content-blocks/content-blocks-page.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport {\r\n\tLayout,\r\n\tHeading,\r\n\tText,\r\n\tStack,\r\n\tAlert,\r\n\tAlertDescription,\r\n\tAlertTitle,\r\n\tAccordion,\r\n\tAccordionContent,\r\n\tAccordionItem,\r\n\tAccordionTrigger,\r\n} from \"../../primitives/index\";\r\nimport { LinkButton } from \"../../primitives/buttons/link-button\";\r\nimport { PageHero } from \"../../blocks/marketing/page-hero\";\r\nimport { Card, CardContent } from \"../../blocks/cards/card\";\r\nimport { TextCode } from \"../../primitives/text/text-code\";\r\n\r\nexport function ContentBlocksPage() {\r\n\treturn (\r\n\t\t<motion.div\r\n\t\t\tinitial={{ opacity: 1, y: 20 }}\r\n\t\t\tanimate={{ opacity: 1, y: 0 }}\r\n\t\t\ttransition={{ duration: 0.3 }}\r\n\t\t>\r\n\t\t\t<PageHero\r\n\t\t\t\ticon=\"Layers\"\r\n\t\t\t\ttitle=\"Content Blocks\"\r\n\t\t\t\tdescription=\"Reusable editorial patterns for articles and marketing pages.\"\r\n\t\t\t/>\r\n\r\n\t\t\t<Layout type=\"col\" className=\"sg:py-16\">\r\n\t\t\t\t<Layout.Col1 hideDiv className=\"sg:max-w-3xl sg:space-y-12\">\r\n\t\t\t\t\t<section className=\"sg:space-y-4\">\r\n\t\t\t\t\t\t<Heading variant=\"h2\">Callouts</Heading>\r\n\t\t\t\t\t\t<Alert>\r\n\t\t\t\t\t\t\t<AlertTitle>Info</AlertTitle>\r\n\t\t\t\t\t\t\t<AlertDescription>\r\n\t\t\t\t\t\t\t\tUse callouts to highlight tips, warnings, or key takeaways.\r\n\t\t\t\t\t\t\t</AlertDescription>\r\n\t\t\t\t\t\t</Alert>\r\n\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t<section className=\"sg:space-y-4\">\r\n\t\t\t\t\t\t<Heading variant=\"h2\">Code Snippets</Heading>\r\n\t\t\t\t\t\t<Card>\r\n\t\t\t\t\t\t\t<CardContent className=\"sg:pt-6\">\r\n\t\t\t\t\t\t\t\t<TextCode>{`const featured = posts.filter((p) => p.featured);`}</TextCode>\r\n\t\t\t\t\t\t\t</CardContent>\r\n\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t<section className=\"sg:space-y-4\">\r\n\t\t\t\t\t\t<Heading variant=\"h2\">Quote Block</Heading>\r\n\t\t\t\t\t\t<blockquote className=\"sg:border-l-4 sg:border-primary sg:pl-6 sg:py-2\">\r\n\t\t\t\t\t\t\t<Text size=\"lg\" className=\"sg:italic\">\r\n\t\t\t\t\t\t\t\t"Design is not just what it looks like — design is how it works."\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t<Text size=\"sm\" foreground=\"muted-foreground\" className=\"sg:mt-2\">\r\n\t\t\t\t\t\t\t\t— Steve Jobs\r\n\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t</blockquote>\r\n\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t<section className=\"sg:space-y-4\">\r\n\t\t\t\t\t\t<Heading variant=\"h2\">FAQ Accordion</Heading>\r\n\t\t\t\t\t\t<Accordion multiple={false} aria-label=\"Content blocks FAQ\">\r\n\t\t\t\t\t\t\t<AccordionItem value=\"item-1\">\r\n\t\t\t\t\t\t\t\t<AccordionTrigger>What are content blocks?</AccordionTrigger>\r\n\t\t\t\t\t\t\t\t<AccordionContent>\r\n\t\t\t\t\t\t\t\t\tReusable UI patterns for editorial and marketing content.\r\n\t\t\t\t\t\t\t\t</AccordionContent>\r\n\t\t\t\t\t\t\t</AccordionItem>\r\n\t\t\t\t\t\t\t<AccordionItem value=\"item-2\">\r\n\t\t\t\t\t\t\t\t<AccordionTrigger>How do I use them?</AccordionTrigger>\r\n\t\t\t\t\t\t\t\t<AccordionContent>\r\n\t\t\t\t\t\t\t\t\tImport the block components and compose them in your pages.\r\n\t\t\t\t\t\t\t\t</AccordionContent>\r\n\t\t\t\t\t\t\t</AccordionItem>\r\n\t\t\t\t\t\t</Accordion>\r\n\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t<section className=\"sg:space-y-4\">\r\n\t\t\t\t\t\t<Heading variant=\"h2\">Inline CTA</Heading>\r\n\t\t\t\t\t\t<Card className=\"sg:bg-primary/5 sg:border-primary/20\">\r\n\t\t\t\t\t\t\t<CardContent className=\"sg:py-6 sg:flex sg:flex-col sm:sg:flex-row sg:items-center sg:justify-between sg:gap-4\">\r\n\t\t\t\t\t\t\t\t<Stack gap={1}>\r\n\t\t\t\t\t\t\t\t\t<Heading variant=\"h4\">Stay in the loop</Heading>\r\n\t\t\t\t\t\t\t\t\t<Text size=\"sm\" foreground=\"muted-foreground\">\r\n\t\t\t\t\t\t\t\t\t\tGet curated stories delivered weekly.\r\n\t\t\t\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t\t\t<LinkButton to=\"/extras/newsletter\">Subscribe</LinkButton>\r\n\t\t\t\t\t\t\t</CardContent>\r\n\t\t\t\t\t\t</Card>\r\n\t\t\t\t\t</section>\r\n\t\t\t\t</Layout.Col1>\r\n\t\t\t</Layout>\r\n\t\t</motion.div>\r\n\t);\r\n}\r\n"],"mappings":";AA4BG,cAUG,YAVH;AA1BH,SAAS,cAAc;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,MAAM,mBAAmB;AAClC,SAAS,gBAAgB;AAElB,SAAS,oBAAoB;AACnC,SACC;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACA,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,MAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,MAC5B,YAAY,EAAE,UAAU,IAAI;AAAA,MAE5B;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,MAAK;AAAA,YACL,OAAM;AAAA,YACN,aAAY;AAAA;AAAA,QACb;AAAA,QAEA,oBAAC,UAAO,MAAK,OAAM,WAAU,YAC5B,+BAAC,OAAO,MAAP,EAAY,SAAO,MAAC,WAAU,8BAC9B;AAAA,+BAAC,aAAQ,WAAU,gBAClB;AAAA,gCAAC,WAAQ,SAAQ,MAAK,sBAAQ;AAAA,YAC9B,qBAAC,SACA;AAAA,kCAAC,cAAW,kBAAI;AAAA,cAChB,oBAAC,oBAAiB,yEAElB;AAAA,eACD;AAAA,aACD;AAAA,UAEA,qBAAC,aAAQ,WAAU,gBAClB;AAAA,gCAAC,WAAQ,SAAQ,MAAK,2BAAa;AAAA,YACnC,oBAAC,QACA,8BAAC,eAAY,WAAU,WACtB,8BAAC,YAAU,+DAAoD,GAChE,GACD;AAAA,aACD;AAAA,UAEA,qBAAC,aAAQ,WAAU,gBAClB;AAAA,gCAAC,WAAQ,SAAQ,MAAK,yBAAW;AAAA,YACjC,qBAAC,gBAAW,WAAU,mDACrB;AAAA,kCAAC,QAAK,MAAK,MAAK,WAAU,aAAY,oFAEtC;AAAA,cACA,oBAAC,QAAK,MAAK,MAAK,YAAW,oBAAmB,WAAU,WAAU,+BAElE;AAAA,eACD;AAAA,aACD;AAAA,UAEA,qBAAC,aAAQ,WAAU,gBAClB;AAAA,gCAAC,WAAQ,SAAQ,MAAK,2BAAa;AAAA,YACnC,qBAAC,aAAU,UAAU,OAAO,cAAW,sBACtC;AAAA,mCAAC,iBAAc,OAAM,UACpB;AAAA,oCAAC,oBAAiB,sCAAwB;AAAA,gBAC1C,oBAAC,oBAAiB,uEAElB;AAAA,iBACD;AAAA,cACA,qBAAC,iBAAc,OAAM,UACpB;AAAA,oCAAC,oBAAiB,gCAAkB;AAAA,gBACpC,oBAAC,oBAAiB,yEAElB;AAAA,iBACD;AAAA,eACD;AAAA,aACD;AAAA,UAEA,qBAAC,aAAQ,WAAU,gBAClB;AAAA,gCAAC,WAAQ,SAAQ,MAAK,wBAAU;AAAA,YAChC,oBAAC,QAAK,WAAU,wCACf,+BAAC,eAAY,WAAU,0FACtB;AAAA,mCAAC,SAAM,KAAK,GACX;AAAA,oCAAC,WAAQ,SAAQ,MAAK,8BAAgB;AAAA,gBACtC,oBAAC,QAAK,MAAK,MAAK,YAAW,oBAAmB,mDAE9C;AAAA,iBACD;AAAA,cACA,oBAAC,cAAW,IAAG,sBAAqB,uBAAS;AAAA,eAC9C,GACD;AAAA,aACD;AAAA,WACD,GACD;AAAA;AAAA;AAAA,EACD;AAEF;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ExtrasHubItem } from '../../blocks/extras/extras-hub-card.js';
|
|
3
|
+
import 'lucide-react';
|
|
4
|
+
|
|
5
|
+
type Props = {
|
|
6
|
+
items?: ExtrasHubItem[];
|
|
7
|
+
};
|
|
8
|
+
declare function ExtrasHubPage({ items }: Props): React.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { ExtrasHubPage };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { motion } from "framer-motion";
|
|
4
|
+
import { Layout, Heading, Text } from "../../primitives/index.js";
|
|
5
|
+
import { ExtrasHubCard } from "../../blocks/extras/extras-hub-card.js";
|
|
6
|
+
const defaultItems = [
|
|
7
|
+
{
|
|
8
|
+
title: "About",
|
|
9
|
+
description: "Our mission, story, team, and journey.",
|
|
10
|
+
to: "/extras/about",
|
|
11
|
+
icon: "Info"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: "Contact",
|
|
15
|
+
description: "Get in touch \u2014 form, map, and social links.",
|
|
16
|
+
to: "/extras/contact",
|
|
17
|
+
icon: "Mail"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
title: "Newsletter",
|
|
21
|
+
description: "Subscribe for weekly curated stories and exclusive content.",
|
|
22
|
+
to: "/extras/newsletter",
|
|
23
|
+
icon: "Newspaper"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
title: "Membership",
|
|
27
|
+
description: "Premium plans, benefits comparison, and pricing.",
|
|
28
|
+
to: "/extras/membership",
|
|
29
|
+
icon: "Crown"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
title: "Content Blocks",
|
|
33
|
+
description: "Callouts, code snippets, quotes, tables, CTAs, and more.",
|
|
34
|
+
to: "/extras/content-blocks",
|
|
35
|
+
icon: "Layers"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: "Resources",
|
|
39
|
+
description: "Curated links, tools, and references for creators.",
|
|
40
|
+
to: "/extras/resources",
|
|
41
|
+
icon: "Sparkles"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "Mosaic",
|
|
45
|
+
description: "A visual mosaic of images from our blog posts.",
|
|
46
|
+
to: "/extras/showcase",
|
|
47
|
+
icon: "Palette"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: "Authors",
|
|
51
|
+
description: "Meet the writers behind the stories.",
|
|
52
|
+
to: "/extras/authors",
|
|
53
|
+
icon: "Users"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: "Categories",
|
|
57
|
+
description: "Browse all post categories in one place.",
|
|
58
|
+
to: "/extras/categories",
|
|
59
|
+
icon: "Tag"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
title: "Search",
|
|
63
|
+
description: "Find posts by keyword, category, or author with flexible filters.",
|
|
64
|
+
to: "/extras/search",
|
|
65
|
+
icon: "Search"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
title: "Search (Compact)",
|
|
69
|
+
description: "Same search with filters always in a slide-out drawer.",
|
|
70
|
+
to: "/extras/search-compact",
|
|
71
|
+
icon: "Search"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
title: "Chat",
|
|
75
|
+
description: "AI chatbot demo with conversational interface.",
|
|
76
|
+
to: "/extras/chat",
|
|
77
|
+
icon: "MessageCircle"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
title: "Privacy Policy",
|
|
81
|
+
description: "How we handle your data and protect your privacy.",
|
|
82
|
+
to: "/extras/privacy",
|
|
83
|
+
icon: "Shield"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
title: "Terms of Service",
|
|
87
|
+
description: "Rules and conditions for using the site.",
|
|
88
|
+
to: "/extras/terms",
|
|
89
|
+
icon: "FileText"
|
|
90
|
+
}
|
|
91
|
+
];
|
|
92
|
+
function ExtrasHubPage({ items = defaultItems }) {
|
|
93
|
+
return /* @__PURE__ */ jsx(Layout, { type: "col", className: "sg:py-16", children: /* @__PURE__ */ jsx(Layout.Col1, { hideDiv: true, className: "sg:max-w-3xl", children: /* @__PURE__ */ jsxs(
|
|
94
|
+
motion.div,
|
|
95
|
+
{
|
|
96
|
+
initial: { opacity: 1, y: 20 },
|
|
97
|
+
animate: { opacity: 1, y: 0 },
|
|
98
|
+
transition: { duration: 0.3 },
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ jsx(Heading, { variant: "h1", className: "sg:mb-2", children: "Extras" }),
|
|
101
|
+
/* @__PURE__ */ jsx(Text, { foreground: "muted-foreground", className: "sg:mb-10", children: "Bonus content and additional pages." }),
|
|
102
|
+
/* @__PURE__ */ jsx("div", { className: "sg:grid sg:gap-4 sm:sg:grid-cols-2", children: items.map((item) => /* @__PURE__ */ jsx(ExtrasHubCard, { item }, item.to)) })
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
) }) });
|
|
106
|
+
}
|
|
107
|
+
export {
|
|
108
|
+
ExtrasHubPage
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=extras-hub-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/extras/extras-hub-page.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { Layout, Heading, Text } from \"../../primitives/index\";\r\nimport { ExtrasHubCard, type ExtrasHubItem } from \"../../blocks/extras/extras-hub-card\";\r\n\r\nconst defaultItems: ExtrasHubItem[] = [\r\n\t{\r\n\t\ttitle: \"About\",\r\n\t\tdescription: \"Our mission, story, team, and journey.\",\r\n\t\tto: \"/extras/about\",\r\n\t\ticon: \"Info\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Contact\",\r\n\t\tdescription: \"Get in touch — form, map, and social links.\",\r\n\t\tto: \"/extras/contact\",\r\n\t\ticon: \"Mail\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Newsletter\",\r\n\t\tdescription: \"Subscribe for weekly curated stories and exclusive content.\",\r\n\t\tto: \"/extras/newsletter\",\r\n\t\ticon: \"Newspaper\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Membership\",\r\n\t\tdescription: \"Premium plans, benefits comparison, and pricing.\",\r\n\t\tto: \"/extras/membership\",\r\n\t\ticon: \"Crown\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Content Blocks\",\r\n\t\tdescription: \"Callouts, code snippets, quotes, tables, CTAs, and more.\",\r\n\t\tto: \"/extras/content-blocks\",\r\n\t\ticon: \"Layers\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Resources\",\r\n\t\tdescription: \"Curated links, tools, and references for creators.\",\r\n\t\tto: \"/extras/resources\",\r\n\t\ticon: \"Sparkles\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Mosaic\",\r\n\t\tdescription: \"A visual mosaic of images from our blog posts.\",\r\n\t\tto: \"/extras/showcase\",\r\n\t\ticon: \"Palette\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Authors\",\r\n\t\tdescription: \"Meet the writers behind the stories.\",\r\n\t\tto: \"/extras/authors\",\r\n\t\ticon: \"Users\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Categories\",\r\n\t\tdescription: \"Browse all post categories in one place.\",\r\n\t\tto: \"/extras/categories\",\r\n\t\ticon: \"Tag\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Search\",\r\n\t\tdescription: \"Find posts by keyword, category, or author with flexible filters.\",\r\n\t\tto: \"/extras/search\",\r\n\t\ticon: \"Search\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Search (Compact)\",\r\n\t\tdescription: \"Same search with filters always in a slide-out drawer.\",\r\n\t\tto: \"/extras/search-compact\",\r\n\t\ticon: \"Search\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Chat\",\r\n\t\tdescription: \"AI chatbot demo with conversational interface.\",\r\n\t\tto: \"/extras/chat\",\r\n\t\ticon: \"MessageCircle\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Privacy Policy\",\r\n\t\tdescription: \"How we handle your data and protect your privacy.\",\r\n\t\tto: \"/extras/privacy\",\r\n\t\ticon: \"Shield\",\r\n\t},\r\n\t{\r\n\t\ttitle: \"Terms of Service\",\r\n\t\tdescription: \"Rules and conditions for using the site.\",\r\n\t\tto: \"/extras/terms\",\r\n\t\ticon: \"FileText\",\r\n\t},\r\n];\r\n\r\ntype Props = {\r\n\titems?: ExtrasHubItem[];\r\n};\r\n\r\nexport function ExtrasHubPage({ items = defaultItems }: Props) {\r\n\treturn (\r\n\t\t<Layout type=\"col\" className=\"sg:py-16\">\r\n\t\t\t<Layout.Col1 hideDiv className=\"sg:max-w-3xl\">\r\n\t\t\t\t<motion.div\r\n\t\t\t\t\tinitial={{ opacity: 1, y: 20 }}\r\n\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\r\n\t\t\t\t\ttransition={{ duration: 0.3 }}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Heading variant=\"h1\" className=\"sg:mb-2\">\r\n\t\t\t\t\t\tExtras\r\n\t\t\t\t\t</Heading>\r\n\t\t\t\t\t<Text foreground=\"muted-foreground\" className=\"sg:mb-10\">\r\n\t\t\t\t\t\tBonus content and additional pages.\r\n\t\t\t\t\t</Text>\r\n\t\t\t\t\t<div className=\"sg:grid sg:gap-4 sm:sg:grid-cols-2\">\r\n\t\t\t\t\t\t{items.map((item) => (\r\n\t\t\t\t\t\t\t<ExtrasHubCard key={item.to} item={item} />\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</motion.div>\r\n\t\t\t</Layout.Col1>\r\n\t\t</Layout>\r\n\t);\r\n}\r\n"],"mappings":";AAqGI,SAKC,KALD;AAnGJ,SAAS,cAAc;AACvB,SAAS,QAAQ,SAAS,YAAY;AACtC,SAAS,qBAAyC;AAElD,MAAM,eAAgC;AAAA,EACrC;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AACD;AAMO,SAAS,cAAc,EAAE,QAAQ,aAAa,GAAU;AAC9D,SACC,oBAAC,UAAO,MAAK,OAAM,WAAU,YAC5B,8BAAC,OAAO,MAAP,EAAY,SAAO,MAAC,WAAU,gBAC9B;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACA,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,MAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,MAC5B,YAAY,EAAE,UAAU,IAAI;AAAA,MAE5B;AAAA,4BAAC,WAAQ,SAAQ,MAAK,WAAU,WAAU,oBAE1C;AAAA,QACA,oBAAC,QAAK,YAAW,oBAAmB,WAAU,YAAW,iDAEzD;AAAA,QACA,oBAAC,SAAI,WAAU,sCACb,gBAAM,IAAI,CAAC,SACX,oBAAC,iBAA4B,QAAT,KAAK,EAAgB,CACzC,GACF;AAAA;AAAA;AAAA,EACD,GACD,GACD;AAEF;","names":[]}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
|
+
export { AboutPage } from './about/about-page.js';
|
|
1
2
|
export { AdminPage, AdminPageProps } from './admin/admin-page.js';
|
|
3
|
+
export { AuthorPage } from './author/author-page.js';
|
|
4
|
+
export { AuthorsPage } from './authors/authors-page.js';
|
|
2
5
|
export { BlogPost } from './blogpost/blogpost.js';
|
|
6
|
+
export { CategoriesPage } from './categories/categories-page.js';
|
|
3
7
|
export { CategoryPage } from './category/category-page.js';
|
|
8
|
+
export { ChatPage } from './chat/chat-page.js';
|
|
9
|
+
export { ContactPage } from './contact/contact-page.js';
|
|
10
|
+
export { ContentBlocksPage } from './content-blocks/content-blocks-page.js';
|
|
11
|
+
export { ExtrasHubPage } from './extras/extras-hub-page.js';
|
|
4
12
|
export { LoginPage } from './login/login-page.js';
|
|
5
13
|
export { MaintenancePage } from './maintenance/maintenance-page.js';
|
|
14
|
+
export { MembershipPage } from './membership/membership-page.js';
|
|
15
|
+
export { MosaicPage } from './mosaic/mosaic-page.js';
|
|
16
|
+
export { NewsletterPage } from './newsletter/newsletter-page.js';
|
|
6
17
|
export { NotFound } from './not-found/not-found.js';
|
|
7
18
|
export { PrivacyPage } from './privacy/privacy-page.js';
|
|
19
|
+
export { ResourcesPage } from './resources/resources-page.js';
|
|
8
20
|
export { SearchPage } from './search/search-page.js';
|
|
9
21
|
export { StartPage } from './startpage/startpage.js';
|
|
10
22
|
export { TermsPage } from './terms/terms-page.js';
|
|
11
23
|
import 'react';
|
|
24
|
+
import '../blocks/extras/extras-hub-card.js';
|
|
25
|
+
import 'lucide-react';
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
export * from "./about/about-page.js";
|
|
1
2
|
export * from "./admin/admin-page.js";
|
|
3
|
+
export * from "./author/author-page.js";
|
|
4
|
+
export * from "./authors/authors-page.js";
|
|
2
5
|
export * from "./blogpost/blogpost.js";
|
|
6
|
+
export * from "./categories/categories-page.js";
|
|
3
7
|
export * from "./category/category-page.js";
|
|
8
|
+
export * from "./chat/chat-page.js";
|
|
9
|
+
export * from "./contact/contact-page.js";
|
|
10
|
+
export * from "./content-blocks/content-blocks-page.js";
|
|
11
|
+
export * from "./extras/extras-hub-page.js";
|
|
4
12
|
export * from "./login/login-page.js";
|
|
5
13
|
export * from "./maintenance/maintenance-page.js";
|
|
14
|
+
export * from "./membership/membership-page.js";
|
|
15
|
+
export * from "./mosaic/mosaic-page.js";
|
|
16
|
+
export * from "./newsletter/newsletter-page.js";
|
|
6
17
|
export * from "./not-found/not-found.js";
|
|
7
18
|
export * from "./privacy/privacy-page.js";
|
|
19
|
+
export * from "./resources/resources-page.js";
|
|
8
20
|
export * from "./search/search-page.js";
|
|
9
21
|
export * from "./startpage/startpage.js";
|
|
10
22
|
export * from "./terms/terms-page.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/pages/index.ts"],"sourcesContent":["/**\n * Pages index\n *\n * Please keep exports sorted alphabetically by path!\n */\n\nexport * from \"./admin/admin-page\";\nexport * from \"./blogpost/blogpost\";\nexport * from \"./category/category-page\";\nexport * from \"./login/login-page\";\nexport * from \"./maintenance/maintenance-page\";\nexport * from \"./not-found/not-found\";\nexport * from \"./privacy/privacy-page\";\nexport * from \"./search/search-page\";\nexport * from \"./startpage/startpage\";\nexport * from \"./terms/terms-page\";\n"],"mappings":"AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/pages/index.ts"],"sourcesContent":["/**\n * Pages index\n *\n * Please keep exports sorted alphabetically by path!\n */\n\nexport * from \"./about/about-page\";\nexport * from \"./admin/admin-page\";\nexport * from \"./author/author-page\";\nexport * from \"./authors/authors-page\";\nexport * from \"./blogpost/blogpost\";\nexport * from \"./categories/categories-page\";\nexport * from \"./category/category-page\";\nexport * from \"./chat/chat-page\";\nexport * from \"./contact/contact-page\";\nexport * from \"./content-blocks/content-blocks-page\";\nexport * from \"./extras/extras-hub-page\";\nexport * from \"./login/login-page\";\nexport * from \"./maintenance/maintenance-page\";\nexport * from \"./membership/membership-page\";\nexport * from \"./mosaic/mosaic-page\";\nexport * from \"./newsletter/newsletter-page\";\nexport * from \"./not-found/not-found\";\nexport * from \"./privacy/privacy-page\";\nexport * from \"./resources/resources-page\";\nexport * from \"./search/search-page\";\nexport * from \"./startpage/startpage\";\nexport * from \"./terms/terms-page\";\n"],"mappings":"AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -7,7 +7,7 @@ function MaintenancePage() {
|
|
|
7
7
|
return /* @__PURE__ */ jsx("div", { className: "sg:min-h-screen sg:flex sg:flex-col sg:items-center sg:justify-center sg:bg-background sg:px-4", children: /* @__PURE__ */ jsxs(
|
|
8
8
|
motion.div,
|
|
9
9
|
{
|
|
10
|
-
initial: { opacity:
|
|
10
|
+
initial: { opacity: 1, y: 20 },
|
|
11
11
|
animate: { opacity: 1, y: 0 },
|
|
12
12
|
transition: { duration: 0.4 },
|
|
13
13
|
className: "sg:text-center sg:max-w-md",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/pages/maintenance/maintenance-page.tsx"],"sourcesContent":["\"use client\";\nimport { motion } from \"framer-motion\";\nimport { Heading, Text, Button, Link, Icon, Stack } from \"../../primitives/index\";\nimport { LinkButton } from \"../../primitives/buttons/link-button\";\n\nexport function MaintenancePage() {\n return (\n <div className=\"sg:min-h-screen sg:flex sg:flex-col sg:items-center sg:justify-center sg:bg-background sg:px-4\">\n <motion.div\n initial={{ opacity:
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/pages/maintenance/maintenance-page.tsx"],"sourcesContent":["\"use client\";\nimport { motion } from \"framer-motion\";\nimport { Heading, Text, Button, Link, Icon, Stack } from \"../../primitives/index\";\nimport { LinkButton } from \"../../primitives/buttons/link-button\";\n\nexport function MaintenancePage() {\n return (\n <div className=\"sg:min-h-screen sg:flex sg:flex-col sg:items-center sg:justify-center sg:bg-background sg:px-4\">\n <motion.div\n initial={{ opacity: 1, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4 }}\n className=\"sg:text-center sg:max-w-md\"\n >\n <div className=\"sg:rounded-full sg:bg-primary/10 sg:p-5 sg:inline-flex sg:mb-6\">\n <Icon icon=\"Construction\" size=\"xl\" color=\"primary\" />\n </div>\n <Heading variant=\"h1\" className=\"sg:mb-3\">\n Under Maintenance\n </Heading>\n <Text\n foreground=\"muted-foreground\"\n className=\"sg:leading-relaxed sg:mb-2\"\n >\n We're making some improvements to bring you a better experience.\n We'll be back shortly.\n </Text>\n <Text\n size=\"sm\"\n foreground=\"muted-foreground\"\n className=\"sg:opacity-70 sg:mb-8\"\n >\n Expected downtime: less than 1 hour\n </Text>\n <Stack direction=\"row\" wrap=\"wrap\" justifyContent=\"center\" gap={3}>\n <LinkButton to=\"/\" iconStart=\"ArrowLeft\">\n Try Home Page\n </LinkButton>\n <Button variant=\"outline\" onClick={() => window.location.reload()}>\n Refresh\n </Button>\n </Stack>\n <Text size=\"xs\" foreground=\"muted-foreground\" className=\"sg:mt-10\">\n Questions? Reach us at{\" \"}\n <Link to=\"mailto:hello@storied.blog\">hello@storied.blog</Link>\n </Text>\n </motion.div>\n </div>\n );\n}\n"],"mappings":";AAeU,cAmBF,YAnBE;AAdV,SAAS,cAAc;AACvB,SAAS,SAAS,MAAM,QAAQ,MAAM,MAAM,aAAa;AACzD,SAAS,kBAAkB;AAEpB,SAAS,kBAAkB;AAChC,SACE,oBAAC,SAAI,WAAU,kGACb;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,MAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,MAC5B,YAAY,EAAE,UAAU,IAAI;AAAA,MAC5B,WAAU;AAAA,MAEV;AAAA,4BAAC,SAAI,WAAU,kEACb,8BAAC,QAAK,MAAK,gBAAe,MAAK,MAAK,OAAM,WAAU,GACtD;AAAA,QACA,oBAAC,WAAQ,SAAQ,MAAK,WAAU,WAAU,+BAE1C;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,YAAW;AAAA,YACX,WAAU;AAAA,YACX;AAAA;AAAA,QAGD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,YAAW;AAAA,YACX,WAAU;AAAA,YACX;AAAA;AAAA,QAED;AAAA,QACA,qBAAC,SAAM,WAAU,OAAM,MAAK,QAAO,gBAAe,UAAS,KAAK,GAC9D;AAAA,8BAAC,cAAW,IAAG,KAAI,WAAU,aAAY,2BAEzC;AAAA,UACA,oBAAC,UAAO,SAAQ,WAAU,SAAS,MAAM,OAAO,SAAS,OAAO,GAAG,qBAEnE;AAAA,WACF;AAAA,QACA,qBAAC,QAAK,MAAK,MAAK,YAAW,oBAAmB,WAAU,YAAW;AAAA;AAAA,UAC1C;AAAA,UACvB,oBAAC,QAAK,IAAG,6BAA4B,gCAAkB;AAAA,WACzD;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;","names":[]}
|