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.
Files changed (166) hide show
  1. package/dist/components/blocks/badges/category-badge.d.ts +11 -0
  2. package/dist/components/blocks/badges/category-badge.js +34 -0
  3. package/dist/components/blocks/badges/category-badge.js.map +1 -0
  4. package/dist/components/blocks/cards/blogpost-card.d.ts +3 -1
  5. package/dist/components/blocks/cards/blogpost-card.js +10 -5
  6. package/dist/components/blocks/cards/blogpost-card.js.map +1 -1
  7. package/dist/components/blocks/directory/author-card.d.ts +10 -0
  8. package/dist/components/blocks/directory/author-card.js +50 -0
  9. package/dist/components/blocks/directory/author-card.js.map +1 -0
  10. package/dist/components/blocks/directory/category-card.d.ts +10 -0
  11. package/dist/components/blocks/directory/category-card.js +27 -0
  12. package/dist/components/blocks/directory/category-card.js.map +1 -0
  13. package/dist/components/blocks/extras/extras-hub-card.d.ts +16 -0
  14. package/dist/components/blocks/extras/extras-hub-card.js +22 -0
  15. package/dist/components/blocks/extras/extras-hub-card.js.map +1 -0
  16. package/dist/components/blocks/gallery/image-gallery.d.ts +14 -0
  17. package/dist/components/blocks/gallery/image-gallery.js +211 -0
  18. package/dist/components/blocks/gallery/image-gallery.js.map +1 -0
  19. package/dist/components/blocks/index.d.ts +11 -0
  20. package/dist/components/blocks/index.js +10 -0
  21. package/dist/components/blocks/index.js.map +1 -1
  22. package/dist/components/blocks/loading/loading-skeletons.d.ts +15 -0
  23. package/dist/components/blocks/loading/loading-skeletons.js +78 -0
  24. package/dist/components/blocks/loading/loading-skeletons.js.map +1 -0
  25. package/dist/components/blocks/login/login.js +76 -47
  26. package/dist/components/blocks/login/login.js.map +1 -1
  27. package/dist/components/blocks/marketing/page-hero.d.ts +13 -0
  28. package/dist/components/blocks/marketing/page-hero.js +37 -0
  29. package/dist/components/blocks/marketing/page-hero.js.map +1 -0
  30. package/dist/components/blocks/marketing/stats-grid.d.ts +16 -0
  31. package/dist/components/blocks/marketing/stats-grid.js +30 -0
  32. package/dist/components/blocks/marketing/stats-grid.js.map +1 -0
  33. package/dist/components/blocks/marketing/timeline.d.ts +17 -0
  34. package/dist/components/blocks/marketing/timeline.js +46 -0
  35. package/dist/components/blocks/marketing/timeline.js.map +1 -0
  36. package/dist/components/blocks/marketing/values-grid.d.ts +16 -0
  37. package/dist/components/blocks/marketing/values-grid.js +29 -0
  38. package/dist/components/blocks/marketing/values-grid.js.map +1 -0
  39. package/dist/components/blocks/post-list/post-list-with-filters.js +4 -4
  40. package/dist/components/blocks/post-list/post-list-with-filters.js.map +1 -1
  41. package/dist/components/index.d.ts +28 -1
  42. package/dist/components/pages/about/about-page.d.ts +5 -0
  43. package/dist/components/pages/about/about-page.js +161 -0
  44. package/dist/components/pages/about/about-page.js.map +1 -0
  45. package/dist/components/pages/admin/admin-page.js +160 -103
  46. package/dist/components/pages/admin/admin-page.js.map +1 -1
  47. package/dist/components/pages/author/author-page.d.ts +8 -0
  48. package/dist/components/pages/author/author-page.js +107 -0
  49. package/dist/components/pages/author/author-page.js.map +1 -0
  50. package/dist/components/pages/authors/authors-page.d.ts +5 -0
  51. package/dist/components/pages/authors/authors-page.js +25 -0
  52. package/dist/components/pages/authors/authors-page.js.map +1 -0
  53. package/dist/components/pages/blogpost/blogpost.d.ts +4 -1
  54. package/dist/components/pages/blogpost/blogpost.js +110 -62
  55. package/dist/components/pages/blogpost/blogpost.js.map +1 -1
  56. package/dist/components/pages/categories/categories-page.d.ts +5 -0
  57. package/dist/components/pages/categories/categories-page.js +33 -0
  58. package/dist/components/pages/categories/categories-page.js.map +1 -0
  59. package/dist/components/pages/category/category-page.js +4 -2
  60. package/dist/components/pages/category/category-page.js.map +1 -1
  61. package/dist/components/pages/chat/chat-page.js +4 -4
  62. package/dist/components/pages/chat/chat-page.js.map +1 -1
  63. package/dist/components/pages/contact/contact-page.d.ts +5 -0
  64. package/dist/components/pages/contact/contact-page.js +180 -0
  65. package/dist/components/pages/contact/contact-page.js.map +1 -0
  66. package/dist/components/pages/content-blocks/content-blocks-page.d.ts +5 -0
  67. package/dist/components/pages/content-blocks/content-blocks-page.js +87 -0
  68. package/dist/components/pages/content-blocks/content-blocks-page.js.map +1 -0
  69. package/dist/components/pages/extras/extras-hub-page.d.ts +10 -0
  70. package/dist/components/pages/extras/extras-hub-page.js +110 -0
  71. package/dist/components/pages/extras/extras-hub-page.js.map +1 -0
  72. package/dist/components/pages/index.d.ts +14 -0
  73. package/dist/components/pages/index.js +12 -0
  74. package/dist/components/pages/index.js.map +1 -1
  75. package/dist/components/pages/maintenance/maintenance-page.js +1 -1
  76. package/dist/components/pages/maintenance/maintenance-page.js.map +1 -1
  77. package/dist/components/pages/membership/membership-page.d.ts +5 -0
  78. package/dist/components/pages/membership/membership-page.js +131 -0
  79. package/dist/components/pages/membership/membership-page.js.map +1 -0
  80. package/dist/components/pages/mosaic/mosaic-page.d.ts +5 -0
  81. package/dist/components/pages/mosaic/mosaic-page.js +81 -0
  82. package/dist/components/pages/mosaic/mosaic-page.js.map +1 -0
  83. package/dist/components/pages/newsletter/newsletter-page.d.ts +5 -0
  84. package/dist/components/pages/newsletter/newsletter-page.js +165 -0
  85. package/dist/components/pages/newsletter/newsletter-page.js.map +1 -0
  86. package/dist/components/pages/not-found/not-found.js +2 -2
  87. package/dist/components/pages/not-found/not-found.js.map +1 -1
  88. package/dist/components/pages/privacy/privacy-page.js +2 -2
  89. package/dist/components/pages/privacy/privacy-page.js.map +1 -1
  90. package/dist/components/pages/resources/resources-page.d.ts +5 -0
  91. package/dist/components/pages/resources/resources-page.js +24 -0
  92. package/dist/components/pages/resources/resources-page.js.map +1 -0
  93. package/dist/components/pages/startpage/startpage.js +6 -4
  94. package/dist/components/pages/startpage/startpage.js.map +1 -1
  95. package/dist/components/pages/terms/terms-page.js +2 -2
  96. package/dist/components/pages/terms/terms-page.js.map +1 -1
  97. package/dist/components/primitives/accordion/accordion.js +14 -16
  98. package/dist/components/primitives/accordion/accordion.js.map +1 -1
  99. package/dist/components/primitives/badge/badge.js +1 -1
  100. package/dist/components/primitives/badge/badge.js.map +1 -1
  101. package/dist/components/primitives/buttons/button.d.ts +2 -2
  102. package/dist/components/primitives/buttons/icon-button.d.ts +1 -1
  103. package/dist/components/primitives/collapsible/collapsible.js +4 -1
  104. package/dist/components/primitives/collapsible/collapsible.js.map +1 -1
  105. package/dist/components/primitives/dropdown-menu/dropdown-menu.js +6 -1
  106. package/dist/components/primitives/dropdown-menu/dropdown-menu.js.map +1 -1
  107. package/dist/components/primitives/forms/checkbox.js +1 -1
  108. package/dist/components/primitives/forms/checkbox.js.map +1 -1
  109. package/dist/components/primitives/forms/field.d.ts +4 -2
  110. package/dist/components/primitives/forms/field.js +4 -2
  111. package/dist/components/primitives/forms/field.js.map +1 -1
  112. package/dist/components/primitives/forms/form-control.d.ts +28 -0
  113. package/dist/components/primitives/forms/form-control.js +40 -0
  114. package/dist/components/primitives/forms/form-control.js.map +1 -0
  115. package/dist/components/primitives/forms/form.d.ts +12 -0
  116. package/dist/components/primitives/forms/form.js +30 -0
  117. package/dist/components/primitives/forms/form.js.map +1 -0
  118. package/dist/components/primitives/forms/select.js +12 -12
  119. package/dist/components/primitives/forms/select.js.map +1 -1
  120. package/dist/components/primitives/icon/icon.d.ts +3 -2
  121. package/dist/components/primitives/icon/icon.js +2 -1
  122. package/dist/components/primitives/icon/icon.js.map +1 -1
  123. package/dist/components/primitives/index.d.ts +4 -0
  124. package/dist/components/primitives/index.js +3 -0
  125. package/dist/components/primitives/index.js.map +1 -1
  126. package/dist/components/primitives/layout/layout.d.ts +1 -1
  127. package/dist/components/primitives/link/link.d.ts +2 -2
  128. package/dist/components/primitives/sheet/sheet.js +1 -1
  129. package/dist/components/primitives/sheet/sheet.js.map +1 -1
  130. package/dist/components/primitives/stack/stack.d.ts +2 -2
  131. package/dist/components/primitives/text/internal/text-element.d.ts +8 -2
  132. package/dist/components/primitives/text/internal/text-element.js +3 -0
  133. package/dist/components/primitives/text/internal/text-element.js.map +1 -1
  134. package/dist/components/primitives/text/text-code.d.ts +1 -1
  135. package/dist/components/templates/form/form.d.ts +2 -2
  136. package/dist/components/templates/form/form.js +133 -87
  137. package/dist/components/templates/form/form.js.map +1 -1
  138. package/dist/components/templates/hero/hero.js +1 -0
  139. package/dist/components/templates/hero/hero.js.map +1 -1
  140. package/dist/components/templates/index.d.ts +1 -0
  141. package/dist/components/templates/index.js +1 -0
  142. package/dist/components/templates/index.js.map +1 -1
  143. package/dist/components/templates/loading-screen/loading-screen.d.ts +10 -0
  144. package/dist/components/templates/loading-screen/loading-screen.js +39 -0
  145. package/dist/components/templates/loading-screen/loading-screen.js.map +1 -0
  146. package/dist/css/variables.css +6 -3
  147. package/dist/css/variables.css.map +1 -1
  148. package/dist/data/posts.d.ts +5 -0
  149. package/dist/data/posts.js +41 -8
  150. package/dist/data/posts.js.map +1 -1
  151. package/dist/index.d.ts +28 -1
  152. package/dist/lib/forms/field-props.d.ts +60 -0
  153. package/dist/lib/forms/field-props.js +60 -0
  154. package/dist/lib/forms/field-props.js.map +1 -0
  155. package/dist/lib/forms/index.d.ts +11 -0
  156. package/dist/lib/forms/index.js +3 -0
  157. package/dist/lib/forms/index.js.map +1 -0
  158. package/dist/lib/forms/tanstack-field.d.ts +71 -0
  159. package/dist/lib/forms/tanstack-field.js +121 -0
  160. package/dist/lib/forms/tanstack-field.js.map +1 -0
  161. package/dist/lib/index.d.ts +11 -0
  162. package/dist/lib/index.js +1 -0
  163. package/dist/lib/index.js.map +1 -1
  164. package/dist/main.css +393 -90
  165. package/dist/main.css.map +1 -1
  166. 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,5 @@
1
+ import * as React from 'react';
2
+
3
+ declare function ContentBlocksPage(): React.JSX.Element;
4
+
5
+ export { ContentBlocksPage };
@@ -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&quot;Design is not just what it looks like — design is how it works.&quot;\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: 0, y: 20 },
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: 0, 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&apos;re making some improvements to bring you a better experience.\n We&apos;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":[]}
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&apos;re making some improvements to bring you a better experience.\n We&apos;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":[]}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+
3
+ declare function MembershipPage(): React.JSX.Element;
4
+
5
+ export { MembershipPage };