@yimingliao/cms 0.0.222 → 0.0.225

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 (176) hide show
  1. package/dist/export/client/components/index.js +1 -0
  2. package/dist/export/client/components/resources/index.js +6 -0
  3. package/dist/export/client/index.js +1 -0
  4. package/dist/src/client/applications/resources/seo-metadata/seo-metadata-empty-translation.js +52 -0
  5. package/dist/src/client/applications/resources/seo-metadata/use-upsert-form-data.js +43 -0
  6. package/dist/src/client/interfaces/components/resources/admin/admin-refresh-tokens/active-sessions-badge.js +1 -0
  7. package/dist/src/client/interfaces/components/resources/admin/admin-refresh-tokens/active-spot.js +1 -0
  8. package/dist/src/client/interfaces/components/resources/admin/admin-refresh-tokens/admin-refresh-token-card.js +1 -1
  9. package/dist/src/client/interfaces/components/resources/file/file-relations-section.js +1 -1
  10. package/dist/src/client/interfaces/components/resources/file/is-locked-buttons.js +1 -1
  11. package/dist/src/client/interfaces/components/resources/file/type-buttons.js +1 -1
  12. package/dist/src/client/interfaces/components/resources/folder/file-manager/file-manager-header.js +1 -1
  13. package/dist/src/client/interfaces/components/resources/folder/folder-card.js +1 -1
  14. package/dist/src/client/interfaces/components/resources/folder/folder-full-path.js +1 -0
  15. package/dist/src/client/interfaces/components/resources/inquiry/inquiry-card.js +1 -1
  16. package/dist/src/client/interfaces/components/resources/post/control-fields-buttons.js +1 -1
  17. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/basic-tags.js +190 -0
  18. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/json-ld-tags.js +78 -0
  19. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/open-graph-tags.js +444 -0
  20. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/twitter-tags.js +126 -0
  21. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/reference-card.js +82 -0
  22. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form-side-fields.js +56 -0
  23. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.js +150 -0
  24. package/dist/src/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.js +66 -0
  25. package/dist/src/client/interfaces/components/shadcn/avatar.js +1 -0
  26. package/dist/src/client/interfaces/components/shadcn/badge.js +1 -0
  27. package/dist/src/client/interfaces/components/shadcn/button.js +1 -0
  28. package/dist/src/client/interfaces/components/shadcn/card.js +1 -0
  29. package/dist/src/client/interfaces/components/shadcn/dialog.js +1 -0
  30. package/dist/src/client/interfaces/components/shadcn/dropdown-menu.js +1 -0
  31. package/dist/src/client/interfaces/components/shadcn/input-group.js +1 -0
  32. package/dist/src/client/interfaces/components/shadcn/input.js +1 -0
  33. package/dist/src/client/interfaces/components/shadcn/item.js +1 -0
  34. package/dist/src/client/interfaces/components/shadcn/label.js +1 -0
  35. package/dist/src/client/interfaces/components/shadcn/pagination.js +1 -0
  36. package/dist/src/client/interfaces/components/shadcn/select.js +1 -0
  37. package/dist/src/client/interfaces/components/shadcn/separator.js +1 -0
  38. package/dist/src/client/interfaces/components/shadcn/sheet.js +1 -0
  39. package/dist/src/client/interfaces/components/shadcn/sidebar.js +1 -0
  40. package/dist/src/client/interfaces/components/shadcn/skeleton.js +1 -0
  41. package/dist/src/client/interfaces/components/shadcn/spinner.js +1 -0
  42. package/dist/src/client/interfaces/components/shadcn/table.js +1 -0
  43. package/dist/src/client/interfaces/components/shadcn/tabs.js +1 -0
  44. package/dist/src/client/interfaces/components/shadcn/textarea.js +1 -0
  45. package/dist/src/client/interfaces/components/shadcn/tooltip.js +1 -0
  46. package/dist/src/client/interfaces/components/ui/blocks/list-cards-container/list-cards-container.js +1 -0
  47. package/dist/src/client/interfaces/components/ui/blocks/list-cards-container/page-size-selector.js +1 -0
  48. package/dist/src/client/interfaces/components/ui/blocks/list-cards-container/pagination.js +1 -0
  49. package/dist/src/client/interfaces/components/ui/blocks/page-header/page-header-title.js +1 -0
  50. package/dist/src/client/interfaces/components/ui/blocks/page-header/page-header.js +1 -0
  51. package/dist/src/client/interfaces/components/ui/blocks/page-header/presets/batch-create.js +1 -0
  52. package/dist/src/client/interfaces/components/ui/blocks/page-header/presets/create.js +1 -0
  53. package/dist/src/client/interfaces/components/ui/blocks/page-header/presets/edit.js +1 -0
  54. package/dist/src/client/interfaces/components/ui/blocks/page-header/presets/show.js +1 -0
  55. package/dist/src/client/interfaces/components/ui/buttons/button.js +1 -0
  56. package/dist/src/client/interfaces/components/ui/buttons/return-button.js +1 -0
  57. package/dist/src/client/interfaces/components/ui/cards/action-buttons-card.js +1 -0
  58. package/dist/src/client/interfaces/components/ui/cards/feature-card.js +1 -0
  59. package/dist/src/client/interfaces/components/ui/cards/resource-card/card-status-bar.js +1 -1
  60. package/dist/src/client/interfaces/components/ui/cards/resource-card/card-text-content.js +1 -0
  61. package/dist/src/client/interfaces/components/ui/cards/resource-card/resource-card.js +1 -0
  62. package/dist/src/client/interfaces/components/ui/display/array-list.js +1 -1
  63. package/dist/src/client/interfaces/components/ui/display/badge.js +1 -0
  64. package/dist/src/client/interfaces/components/ui/display/html-display.js +1 -0
  65. package/dist/src/client/interfaces/components/ui/display/object-array-list.js +1 -1
  66. package/dist/src/client/interfaces/components/ui/features/accordion/accordion-container.js +1 -0
  67. package/dist/src/client/interfaces/components/ui/features/accordion/accordion-header.js +1 -0
  68. package/dist/src/client/interfaces/components/ui/features/accordion/accordion.js +1 -0
  69. package/dist/src/client/interfaces/components/ui/features/expandable-list/expand-bar.js +1 -0
  70. package/dist/src/client/interfaces/components/ui/features/expandable-list/expandable-list-content.js +1 -0
  71. package/dist/src/client/interfaces/components/ui/features/expandable-list/expandable-list.js +1 -0
  72. package/dist/src/client/interfaces/components/ui/features/external-link.js +1 -0
  73. package/dist/src/client/interfaces/components/ui/features/file/file-info/file-name.js +1 -1
  74. package/dist/src/client/interfaces/components/ui/features/file/file-picker/file-picker-container.js +1 -0
  75. package/dist/src/client/interfaces/components/ui/features/file/file-picker/file-picker-placeholder.js +1 -1
  76. package/dist/src/client/interfaces/components/ui/features/file/file-preview/file-preview-list.js +1 -0
  77. package/dist/src/client/interfaces/components/ui/features/file/file-preview/file-preview-meta.js +1 -0
  78. package/dist/src/client/interfaces/components/ui/features/pick-modal/pick-modal-body.js +1 -1
  79. package/dist/src/client/interfaces/components/ui/features/pick-modal/pick-modal-trigger.js +1 -0
  80. package/dist/src/client/interfaces/components/ui/features/pick-modal/pick-modal.js +1 -0
  81. package/dist/src/client/interfaces/components/ui/features/tick.js +1 -0
  82. package/dist/src/client/interfaces/components/ui/form/containers/fields-container.js +1 -0
  83. package/dist/src/client/interfaces/components/ui/form/containers/main-fields.js +1 -0
  84. package/dist/src/client/interfaces/components/ui/form/containers/side-fields.js +1 -0
  85. package/dist/src/client/interfaces/components/ui/form/control-fields/control-fields.js +1 -0
  86. package/dist/src/client/interfaces/components/ui/form/field-body.js +1 -0
  87. package/dist/src/client/interfaces/components/ui/form/field.js +1 -0
  88. package/dist/src/client/interfaces/components/ui/form/form.js +1 -0
  89. package/dist/src/client/interfaces/components/ui/i18n/i18n-tabs-wrapper.js +1 -0
  90. package/dist/src/client/interfaces/components/ui/i18n/inputs/i18n-array-input.js +1 -0
  91. package/dist/src/client/interfaces/components/ui/i18n/inputs/i18n-editor.js +1 -1
  92. package/dist/src/client/interfaces/components/ui/i18n/inputs/i18n-input.js +1 -0
  93. package/dist/src/client/interfaces/components/ui/i18n/inputs/i18n-number-input.js +1 -0
  94. package/dist/src/client/interfaces/components/ui/i18n/inputs/i18n-object-array-input.js +1 -0
  95. package/dist/src/client/interfaces/components/ui/i18n/inputs/i18n-textarea.js +1 -0
  96. package/dist/src/client/interfaces/components/ui/inputs/array-input.js +1 -0
  97. package/dist/src/client/interfaces/components/ui/inputs/checkbox.js +1 -0
  98. package/dist/src/client/interfaces/components/ui/inputs/editor/editor.js +1 -1
  99. package/dist/src/client/interfaces/components/ui/inputs/input.js +1 -0
  100. package/dist/src/client/interfaces/components/ui/inputs/password-input.js +1 -0
  101. package/dist/src/client/interfaces/components/ui/inputs/search-input.js +1 -0
  102. package/dist/src/client/interfaces/components/ui/inputs/select.js +1 -0
  103. package/dist/src/client/interfaces/components/ui/inputs/textarea.js +1 -0
  104. package/dist/src/client/interfaces/components/ui/layouts/auth-skeleton.js +1 -0
  105. package/dist/src/client/interfaces/components/ui/layouts/content-container.js +1 -0
  106. package/dist/src/client/interfaces/components/ui/layouts/dashboard-skeleton.js +1 -0
  107. package/dist/src/client/interfaces/components/ui/layouts/navbar/i18n-selector.js +1 -0
  108. package/dist/src/client/interfaces/components/ui/layouts/navbar/sign-out-button.js +1 -1
  109. package/dist/src/client/interfaces/components/ui/layouts/navbar/theme-selector.js +1 -0
  110. package/dist/src/client/interfaces/components/ui/layouts/sidebar/nav-main.js +1 -0
  111. package/dist/src/client/interfaces/pages/auth/change-password/page.js +1 -1
  112. package/dist/src/client/interfaces/pages/auth/email-unverified/page.js +1 -1
  113. package/dist/src/client/interfaces/pages/auth/forgot-password/page.js +1 -1
  114. package/dist/src/client/interfaces/pages/auth/reset-password/page.js +1 -1
  115. package/dist/src/client/interfaces/pages/auth/sign-in/page.js +1 -1
  116. package/dist/src/client/interfaces/pages/auth/verify-email/page.js +1 -0
  117. package/dist/src/shared/seo-metadata/utils/build-og-image.js +2 -2
  118. package/dist/types/export/client/components/resources/index.d.ts +1 -1
  119. package/dist/types/export/client/components/resources/index.d.ts.map +1 -1
  120. package/dist/types/export/client/index.d.ts +1 -1
  121. package/dist/types/export/client/index.d.ts.map +1 -1
  122. package/dist/types/src/client/applications/index.d.ts +1 -0
  123. package/dist/types/src/client/applications/index.d.ts.map +1 -1
  124. package/dist/types/src/client/applications/resources/index.d.ts +2 -0
  125. package/dist/types/src/client/applications/resources/index.d.ts.map +1 -0
  126. package/dist/types/src/client/applications/resources/seo-metadata/index.d.ts +2 -0
  127. package/dist/types/src/client/applications/resources/seo-metadata/index.d.ts.map +1 -0
  128. package/dist/types/src/client/applications/resources/seo-metadata/seo-metadata-empty-translation.d.ts +34 -0
  129. package/dist/types/src/client/applications/resources/seo-metadata/seo-metadata-empty-translation.d.ts.map +1 -0
  130. package/dist/types/src/client/applications/resources/seo-metadata/use-upsert-form-data.d.ts +82 -0
  131. package/dist/types/src/client/applications/resources/seo-metadata/use-upsert-form-data.d.ts.map +1 -0
  132. package/dist/types/src/client/index.d.ts +1 -1
  133. package/dist/types/src/client/index.d.ts.map +1 -1
  134. package/dist/types/src/client/interfaces/components/resources/index.d.ts +1 -0
  135. package/dist/types/src/client/interfaces/components/resources/index.d.ts.map +1 -1
  136. package/dist/types/src/client/interfaces/components/resources/seo-metadata/index.d.ts +3 -0
  137. package/dist/types/src/client/interfaces/components/resources/seo-metadata/index.d.ts.map +1 -0
  138. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/basic-tags.d.ts +10 -0
  139. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/basic-tags.d.ts.map +1 -0
  140. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/index.d.ts +5 -0
  141. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/index.d.ts.map +1 -0
  142. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/json-ld-tags.d.ts +9 -0
  143. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/json-ld-tags.d.ts.map +1 -0
  144. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/open-graph-tags.d.ts +10 -0
  145. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/open-graph-tags.d.ts.map +1 -0
  146. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/seo-fields-context.d.ts +19 -0
  147. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/seo-fields-context.d.ts.map +1 -0
  148. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/twitter-tags.d.ts +10 -0
  149. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/fields/twitter-tags.d.ts.map +1 -0
  150. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/index.d.ts +3 -0
  151. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/index.d.ts.map +1 -0
  152. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/reference-card.d.ts +2 -0
  153. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/reference-card.d.ts.map +1 -0
  154. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form-side-fields.d.ts +8 -0
  155. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form-side-fields.d.ts.map +1 -0
  156. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.d.ts +25 -0
  157. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.d.ts.map +1 -0
  158. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/types.d.ts +2 -0
  159. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-form/types.d.ts.map +1 -0
  160. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.d.ts +7 -0
  161. package/dist/types/src/client/interfaces/components/resources/seo-metadata/seo-metadata-dialog.d.ts.map +1 -0
  162. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-array-input.d.ts +1 -2
  163. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-array-input.d.ts.map +1 -1
  164. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-date-input.d.ts +1 -2
  165. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-date-input.d.ts.map +1 -1
  166. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-input.d.ts +1 -2
  167. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-input.d.ts.map +1 -1
  168. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-json-input.d.ts +2 -3
  169. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-json-input.d.ts.map +1 -1
  170. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-number-input.d.ts +1 -2
  171. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-number-input.d.ts.map +1 -1
  172. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-object-array-input.d.ts +1 -2
  173. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-object-array-input.d.ts.map +1 -1
  174. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-textarea.d.ts +1 -2
  175. package/dist/types/src/client/interfaces/components/ui/i18n/inputs/i18n-textarea.d.ts.map +1 -1
  176. package/package.json +1 -1
@@ -0,0 +1,444 @@
1
+ "use client";
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { useTranslator } from 'intor/react';
4
+ import 'lucide-react';
5
+ import 'react';
6
+ import 'ua-parser-js';
7
+ import 'mime-types';
8
+ import 'clsx';
9
+ import 'tailwind-merge';
10
+ import 'next/navigation';
11
+ import '@radix-ui/react-avatar';
12
+ import '../../../../shadcn/badge.js';
13
+ import '../../../../shadcn/button.js';
14
+ import '@radix-ui/react-collapsible';
15
+ import '@radix-ui/react-dialog';
16
+ import '@radix-ui/react-dropdown-menu';
17
+ import '../../../../shadcn/input-group.js';
18
+ import '../../../../shadcn/item.js';
19
+ import '@radix-ui/react-label';
20
+ import '@radix-ui/react-select';
21
+ import '@radix-ui/react-separator';
22
+ import '../../../../shadcn/sidebar.js';
23
+ import 'next-themes';
24
+ import 'sonner';
25
+ import '@radix-ui/react-tabs';
26
+ import '@radix-ui/react-tooltip';
27
+ import 'next/link';
28
+ import '../../../../../../../constants/paths/auth.js';
29
+ import '../../../../../../../constants/paths/main.js';
30
+ import '../../../../../../../constants/paths/resources.js';
31
+ import '../../../../../../../constants/redirect-paths.js';
32
+ import { Field } from '../../../../ui/form/field.js';
33
+ import { Accordion } from '../../../../ui/features/accordion/accordion.js';
34
+ import '../../../../../../../domain/resources/admin/constants.js';
35
+ import 'next/image';
36
+
37
+ function createOpenGraphTags({
38
+ I18nInput,
39
+ I18nTextarea,
40
+ I18nArrayInput,
41
+ I18nDateInput,
42
+ I18nNumberInput
43
+ }) {
44
+ return function OpenGraphTags({
45
+ formData,
46
+ setFormData,
47
+ errors,
48
+ isArticle,
49
+ allowField
50
+ }) {
51
+ const { t } = useTranslator();
52
+ if (!allowField("og:all")) return;
53
+ return /* @__PURE__ */ jsx(
54
+ Accordion,
55
+ {
56
+ hasBorder: true,
57
+ initialOpen: true,
58
+ accordionHeaderProps: { children: "Open Graph" },
59
+ deps: [formData],
60
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
61
+ allowField("ogTitle") && /* @__PURE__ */ jsx(
62
+ Field,
63
+ {
64
+ htmlFor: "ogTitle",
65
+ label: "og:title",
66
+ hint: `<meta property="og:title" content="..." /> (${t(
67
+ "resources.seo-metadata.defaults-same-as.text"
68
+ )} title)`,
69
+ children: /* @__PURE__ */ jsx(
70
+ I18nInput,
71
+ {
72
+ id: "ogTitle",
73
+ fieldName: "ogTitle",
74
+ translations: formData?.translations.map((t2) => ({
75
+ locale: t2.locale,
76
+ ogTitle: t2.ogTitle
77
+ })),
78
+ setFormData,
79
+ errors
80
+ }
81
+ )
82
+ }
83
+ ),
84
+ allowField("ogDescription") && /* @__PURE__ */ jsx(
85
+ Field,
86
+ {
87
+ htmlFor: "ogDescription",
88
+ label: "og:description",
89
+ hint: `<meta property="og:description" content="..." /> (${t(
90
+ "resources.seo-metadata.defaults-same-as.text"
91
+ )} description)`,
92
+ children: /* @__PURE__ */ jsx(
93
+ I18nTextarea,
94
+ {
95
+ id: "ogDescription",
96
+ fieldName: "ogDescription",
97
+ translations: formData?.translations.map((t2) => ({
98
+ locale: t2.locale,
99
+ ogDescription: t2.ogDescription
100
+ })),
101
+ setFormData,
102
+ errors
103
+ }
104
+ )
105
+ }
106
+ ),
107
+ allowField("ogUrl") && /* @__PURE__ */ jsx(
108
+ Field,
109
+ {
110
+ htmlFor: "ogUrl",
111
+ label: "og:url",
112
+ hint: `<meta property="og:url" content="..." />`,
113
+ children: /* @__PURE__ */ jsx(
114
+ I18nInput,
115
+ {
116
+ id: "ogUrl",
117
+ fieldName: "ogUrl",
118
+ translations: formData?.translations.map((t2) => ({
119
+ locale: t2.locale,
120
+ ogUrl: t2.ogUrl
121
+ })),
122
+ setFormData,
123
+ errors
124
+ }
125
+ )
126
+ }
127
+ ),
128
+ allowField("ogType") && /* @__PURE__ */ jsx(
129
+ Field,
130
+ {
131
+ htmlFor: "ogType",
132
+ label: "og:type",
133
+ hint: `<meta property="og:type" content="..." /> (${t(
134
+ "resources.seo-metadata.defaults-based-on.text"
135
+ )} Type)`,
136
+ children: /* @__PURE__ */ jsx(
137
+ I18nInput,
138
+ {
139
+ id: "ogType",
140
+ fieldName: "ogType",
141
+ translations: formData?.translations.map((t2) => ({
142
+ locale: t2.locale,
143
+ ogType: t2.ogType
144
+ })),
145
+ setFormData,
146
+ errors
147
+ }
148
+ )
149
+ }
150
+ ),
151
+ allowField("ogSiteName") && /* @__PURE__ */ jsx(
152
+ Field,
153
+ {
154
+ htmlFor: "ogSiteName",
155
+ label: "og:site_name",
156
+ hint: `<meta property="og:site_name" content="..." /> (${t(
157
+ "resources.seo-metadata.defaults-based-on.text"
158
+ )} Site Name)`,
159
+ children: /* @__PURE__ */ jsx(
160
+ I18nInput,
161
+ {
162
+ id: "ogSiteName",
163
+ fieldName: "ogSiteName",
164
+ translations: formData?.translations.map((t2) => ({
165
+ locale: t2.locale,
166
+ ogSiteName: t2.ogSiteName
167
+ })),
168
+ setFormData,
169
+ errors
170
+ }
171
+ )
172
+ }
173
+ ),
174
+ allowField("ogImage") && /* @__PURE__ */ jsx(
175
+ Field,
176
+ {
177
+ htmlFor: "ogImage",
178
+ label: "og:image",
179
+ hint: `<meta property="og:image" content="..." />`,
180
+ children: /* @__PURE__ */ jsx(
181
+ I18nInput,
182
+ {
183
+ id: "ogImage",
184
+ fieldName: "ogImage",
185
+ translations: formData?.translations.map((t2) => ({
186
+ locale: t2.locale,
187
+ ogImage: t2.ogImage
188
+ })),
189
+ setFormData,
190
+ errors
191
+ }
192
+ )
193
+ }
194
+ ),
195
+ allowField("ogImageAlt") && /* @__PURE__ */ jsx(
196
+ Field,
197
+ {
198
+ htmlFor: "ogImageAlt",
199
+ label: "og:image:alt",
200
+ hint: `<meta property="og:image:alt" content="..." />`,
201
+ children: /* @__PURE__ */ jsx(
202
+ I18nInput,
203
+ {
204
+ id: "ogImageAlt",
205
+ fieldName: "ogImageAlt",
206
+ translations: formData?.translations.map((t2) => ({
207
+ locale: t2.locale,
208
+ ogImageAlt: t2.ogImageAlt
209
+ })),
210
+ setFormData,
211
+ errors
212
+ }
213
+ )
214
+ }
215
+ ),
216
+ allowField("ogImageType") && /* @__PURE__ */ jsx(
217
+ Field,
218
+ {
219
+ htmlFor: "ogImageType",
220
+ label: "og:image:type",
221
+ hint: `<meta property="og:image:type" content="..." /> (${t(
222
+ "resources.seo-metadata.defaults-based-on.text"
223
+ )} Image Type)`,
224
+ children: /* @__PURE__ */ jsx(
225
+ I18nInput,
226
+ {
227
+ id: "ogImageType",
228
+ fieldName: "ogImageType",
229
+ translations: formData?.translations.map((t2) => ({
230
+ locale: t2.locale,
231
+ ogImageType: t2.ogImageType
232
+ })),
233
+ setFormData,
234
+ errors
235
+ }
236
+ )
237
+ }
238
+ ),
239
+ allowField("ogImageWidth") && /* @__PURE__ */ jsx(
240
+ Field,
241
+ {
242
+ htmlFor: "ogImageWidth",
243
+ label: "og:image:width",
244
+ hint: `<meta property="og:image:width" content="..." /> (${t(
245
+ "resources.seo-metadata.defaults-based-on.text"
246
+ )} 1200)`,
247
+ children: /* @__PURE__ */ jsx(
248
+ I18nNumberInput,
249
+ {
250
+ id: "ogImageWidth",
251
+ fieldName: "ogImageWidth",
252
+ translations: formData?.translations.map((t2) => ({
253
+ locale: t2.locale,
254
+ ogImageWidth: t2.ogImageWidth
255
+ })),
256
+ setFormData,
257
+ errors,
258
+ type: "number"
259
+ }
260
+ )
261
+ }
262
+ ),
263
+ allowField("ogImageHeight") && /* @__PURE__ */ jsx(
264
+ Field,
265
+ {
266
+ htmlFor: "ogImageHeight",
267
+ label: "og:image:height",
268
+ hint: `<meta property="og:image:height" content="..." /> (${t(
269
+ "resources.seo-metadata.defaults-based-on.text"
270
+ )} 630)`,
271
+ children: /* @__PURE__ */ jsx(
272
+ I18nNumberInput,
273
+ {
274
+ id: "ogImageHeight",
275
+ fieldName: "ogImageHeight",
276
+ translations: formData?.translations.map((t2) => ({
277
+ locale: t2.locale,
278
+ ogImageHeight: t2.ogImageHeight
279
+ })),
280
+ setFormData,
281
+ errors,
282
+ type: "number"
283
+ }
284
+ )
285
+ }
286
+ ),
287
+ allowField("ogLocale") && /* @__PURE__ */ jsx(
288
+ Field,
289
+ {
290
+ htmlFor: "ogLocale",
291
+ label: "og:locale",
292
+ hint: `<meta property="og:locale" content="..." />`,
293
+ children: /* @__PURE__ */ jsx(
294
+ I18nInput,
295
+ {
296
+ id: "ogLocale",
297
+ fieldName: "ogLocale",
298
+ translations: formData?.translations.map((t2) => ({
299
+ locale: t2.locale,
300
+ ogLocale: t2.ogLocale
301
+ })),
302
+ setFormData,
303
+ errors
304
+ }
305
+ )
306
+ }
307
+ ),
308
+ allowField("ogLocaleAlternate") && /* @__PURE__ */ jsx(
309
+ Field,
310
+ {
311
+ htmlFor: "ogLocaleAlternate",
312
+ label: "og:locale:alternate",
313
+ hint: `<meta property="og:locale:alternate" content="..." />`,
314
+ children: /* @__PURE__ */ jsx(
315
+ I18nArrayInput,
316
+ {
317
+ id: "ogLocaleAlternate",
318
+ fieldName: "ogLocaleAlternate",
319
+ translations: formData?.translations.map((t2) => ({
320
+ locale: t2.locale,
321
+ ogLocaleAlternate: t2.ogLocaleAlternate
322
+ })),
323
+ setFormData,
324
+ errors
325
+ }
326
+ )
327
+ }
328
+ ),
329
+ allowField("ogArticlePublishedTime") && isArticle && /* @__PURE__ */ jsx(
330
+ Field,
331
+ {
332
+ htmlFor: "ogArticlePublishedTime",
333
+ label: "og:article:published_time",
334
+ hint: `<meta property="og:article:published_time" content="..." />`,
335
+ children: /* @__PURE__ */ jsx(
336
+ I18nDateInput,
337
+ {
338
+ id: "ogArticlePublishedTime",
339
+ fieldName: "ogArticlePublishedTime",
340
+ translations: formData?.translations.map((t2) => ({
341
+ locale: t2.locale,
342
+ ogArticlePublishedTime: t2.ogArticlePublishedTime
343
+ })),
344
+ setFormData,
345
+ errors,
346
+ type: "datetime-local"
347
+ }
348
+ )
349
+ }
350
+ ),
351
+ allowField("ogArticleModifiedTime") && isArticle && /* @__PURE__ */ jsx(
352
+ Field,
353
+ {
354
+ htmlFor: "ogArticleModifiedTime",
355
+ label: "og:article:modified_time",
356
+ hint: `<meta property="og:article:modified_time" content="..." />`,
357
+ children: /* @__PURE__ */ jsx(
358
+ I18nDateInput,
359
+ {
360
+ id: "ogArticleModifiedTime",
361
+ fieldName: "ogArticleModifiedTime",
362
+ translations: formData?.translations.map((t2) => ({
363
+ locale: t2.locale,
364
+ ogArticleModifiedTime: t2.ogArticleModifiedTime
365
+ })),
366
+ setFormData,
367
+ errors,
368
+ type: "datetime-local"
369
+ }
370
+ )
371
+ }
372
+ ),
373
+ allowField("ogArticleAuthor") && isArticle && /* @__PURE__ */ jsx(
374
+ Field,
375
+ {
376
+ htmlFor: "ogArticleAuthor",
377
+ label: "og:article:author",
378
+ hint: `<meta property="og:article:author" content="..." /> (${t(
379
+ "resources.seo-metadata.defaults-based-on.text"
380
+ )} Site Name)`,
381
+ children: /* @__PURE__ */ jsx(
382
+ I18nInput,
383
+ {
384
+ id: "ogArticleAuthor",
385
+ fieldName: "ogArticleAuthor",
386
+ translations: formData?.translations.map((t2) => ({
387
+ locale: t2.locale,
388
+ ogArticleAuthor: t2.ogArticleAuthor
389
+ })),
390
+ setFormData,
391
+ errors
392
+ }
393
+ )
394
+ }
395
+ ),
396
+ allowField("ogArticleSection") && isArticle && /* @__PURE__ */ jsx(
397
+ Field,
398
+ {
399
+ htmlFor: "ogArticleSection",
400
+ label: "og:article:section",
401
+ hint: `<meta property="og:article:section" content="..." />`,
402
+ children: /* @__PURE__ */ jsx(
403
+ I18nInput,
404
+ {
405
+ id: "ogArticleSection",
406
+ fieldName: "ogArticleSection",
407
+ translations: formData?.translations.map((t2) => ({
408
+ locale: t2.locale,
409
+ ogArticleSection: t2.ogArticleSection
410
+ })),
411
+ setFormData,
412
+ errors
413
+ }
414
+ )
415
+ }
416
+ ),
417
+ allowField("ogArticleTag") && isArticle && /* @__PURE__ */ jsx(
418
+ Field,
419
+ {
420
+ htmlFor: "ogArticleTag",
421
+ label: "og:article:tag",
422
+ hint: `<meta property="og:article:tag" content="..." />`,
423
+ children: /* @__PURE__ */ jsx(
424
+ I18nArrayInput,
425
+ {
426
+ id: "ogArticleTag",
427
+ fieldName: "ogArticleTag",
428
+ translations: formData?.translations.map((t2) => ({
429
+ locale: t2.locale,
430
+ ogArticleTag: t2.ogArticleTag
431
+ })),
432
+ setFormData,
433
+ errors
434
+ }
435
+ )
436
+ }
437
+ )
438
+ ] })
439
+ }
440
+ );
441
+ };
442
+ }
443
+
444
+ export { createOpenGraphTags };
@@ -0,0 +1,126 @@
1
+ "use client";
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { useTranslator } from 'intor/react';
4
+ import 'lucide-react';
5
+ import 'react';
6
+ import 'ua-parser-js';
7
+ import 'mime-types';
8
+ import 'clsx';
9
+ import 'tailwind-merge';
10
+ import 'next/navigation';
11
+ import '@radix-ui/react-avatar';
12
+ import '../../../../shadcn/badge.js';
13
+ import '../../../../shadcn/button.js';
14
+ import '@radix-ui/react-collapsible';
15
+ import '@radix-ui/react-dialog';
16
+ import '@radix-ui/react-dropdown-menu';
17
+ import '../../../../shadcn/input-group.js';
18
+ import '../../../../shadcn/item.js';
19
+ import '@radix-ui/react-label';
20
+ import '@radix-ui/react-select';
21
+ import '@radix-ui/react-separator';
22
+ import '../../../../shadcn/sidebar.js';
23
+ import 'next-themes';
24
+ import 'sonner';
25
+ import '@radix-ui/react-tabs';
26
+ import '@radix-ui/react-tooltip';
27
+ import 'next/link';
28
+ import '../../../../../../../constants/paths/auth.js';
29
+ import '../../../../../../../constants/paths/main.js';
30
+ import '../../../../../../../constants/paths/resources.js';
31
+ import '../../../../../../../constants/redirect-paths.js';
32
+ import { Field } from '../../../../ui/form/field.js';
33
+ import { Accordion } from '../../../../ui/features/accordion/accordion.js';
34
+ import '../../../../../../../domain/resources/admin/constants.js';
35
+ import 'next/image';
36
+
37
+ function createTwitterTags({ I18nInput }) {
38
+ return function TwitterTags({
39
+ formData,
40
+ setFormData,
41
+ errors,
42
+ isArticle,
43
+ allowField
44
+ }) {
45
+ const { t } = useTranslator();
46
+ if (!allowField("twitter:all")) return;
47
+ return /* @__PURE__ */ jsx(
48
+ Accordion,
49
+ {
50
+ hasBorder: true,
51
+ initialOpen: true,
52
+ accordionHeaderProps: { children: "Twitter" },
53
+ deps: [formData],
54
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
55
+ allowField("twitterCard") && /* @__PURE__ */ jsx(
56
+ Field,
57
+ {
58
+ htmlFor: "twitterCard",
59
+ label: "twitter:card",
60
+ hint: `<meta property="twitter:card" content="..." /> (${t(
61
+ "resources.seo-metadata.defaults-to.text"
62
+ )} summary_large_image)`,
63
+ children: /* @__PURE__ */ jsx(
64
+ I18nInput,
65
+ {
66
+ id: "twitterCard",
67
+ fieldName: "twitterCard",
68
+ translations: formData?.translations.map((t2) => ({
69
+ locale: t2.locale,
70
+ twitterCard: t2.twitterCard
71
+ })),
72
+ setFormData,
73
+ errors
74
+ }
75
+ )
76
+ }
77
+ ),
78
+ allowField("twitterSite") && /* @__PURE__ */ jsx(
79
+ Field,
80
+ {
81
+ htmlFor: "twitterSite",
82
+ label: "twitter:site",
83
+ hint: `<meta property="twitter:site" content="..." />`,
84
+ children: /* @__PURE__ */ jsx(
85
+ I18nInput,
86
+ {
87
+ id: "twitterSite",
88
+ fieldName: "twitterSite",
89
+ translations: formData?.translations.map((t2) => ({
90
+ locale: t2.locale,
91
+ twitterSite: t2.twitterSite
92
+ })),
93
+ setFormData,
94
+ errors
95
+ }
96
+ )
97
+ }
98
+ ),
99
+ allowField("twitterCreator") && isArticle && /* @__PURE__ */ jsx(
100
+ Field,
101
+ {
102
+ htmlFor: "twitterCreator",
103
+ label: "twitter:creator",
104
+ hint: `<meta property="twitter:creator" content="..." />`,
105
+ children: /* @__PURE__ */ jsx(
106
+ I18nInput,
107
+ {
108
+ id: "twitterCreator",
109
+ fieldName: "twitterCreator",
110
+ translations: formData?.translations.map((t2) => ({
111
+ locale: t2.locale,
112
+ twitterCreator: t2.twitterCreator
113
+ })),
114
+ setFormData,
115
+ errors
116
+ }
117
+ )
118
+ }
119
+ )
120
+ ] })
121
+ }
122
+ );
123
+ };
124
+ }
125
+
126
+ export { createTwitterTags };
@@ -0,0 +1,82 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useTranslator } from 'intor/react';
4
+ import { Link2 } from 'lucide-react';
5
+ import Link from 'next/link';
6
+ import '../../../../../../constants/paths/auth.js';
7
+ import '../../../../../../constants/paths/main.js';
8
+ import '../../../../../../constants/paths/resources.js';
9
+ import { NEW_TAB_REL, NEW_TAB_TARGET } from '../../../../../../constants/anchor.js';
10
+ import '../../../../../../constants/redirect-paths.js';
11
+ import '@radix-ui/react-avatar';
12
+ import 'react';
13
+ import 'ua-parser-js';
14
+ import 'mime-types';
15
+ import 'clsx';
16
+ import 'tailwind-merge';
17
+ import 'next/navigation';
18
+ import '../../../shadcn/badge.js';
19
+ import { Button } from '../../../shadcn/button.js';
20
+ import { Card } from '../../../shadcn/card.js';
21
+ import '@radix-ui/react-collapsible';
22
+ import '@radix-ui/react-dialog';
23
+ import '@radix-ui/react-dropdown-menu';
24
+ import '../../../shadcn/input-group.js';
25
+ import '../../../shadcn/item.js';
26
+ import '@radix-ui/react-label';
27
+ import '@radix-ui/react-select';
28
+ import '@radix-ui/react-separator';
29
+ import '../../../shadcn/sidebar.js';
30
+ import 'next-themes';
31
+ import 'sonner';
32
+ import '@radix-ui/react-tabs';
33
+ import '@radix-ui/react-tooltip';
34
+
35
+ function ReferenceCard() {
36
+ const { t } = useTranslator();
37
+ return /* @__PURE__ */ jsxs(Card, { className: "flex flex-col gap-2 p-4", children: [
38
+ /* @__PURE__ */ jsxs("p", { className: "flex-center mb-2 gap-2 text-sm", children: [
39
+ /* @__PURE__ */ jsx(Link2, { className: "size-5" }),
40
+ t("resources.seo-metadata.quick-links.text")
41
+ ] }),
42
+ /* @__PURE__ */ jsx(
43
+ Link,
44
+ {
45
+ href: "https://developers.google.com/search/docs",
46
+ target: NEW_TAB_TARGET,
47
+ rel: NEW_TAB_REL,
48
+ children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "link", children: "Google SEO" })
49
+ }
50
+ ),
51
+ /* @__PURE__ */ jsx(
52
+ Link,
53
+ {
54
+ href: "https://search.google.com/test/rich-results",
55
+ target: NEW_TAB_TARGET,
56
+ rel: NEW_TAB_REL,
57
+ children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "link", children: "Google Rich Results" })
58
+ }
59
+ ),
60
+ /* @__PURE__ */ jsx(
61
+ Link,
62
+ {
63
+ href: "https://validator.schema.org/",
64
+ target: NEW_TAB_TARGET,
65
+ rel: NEW_TAB_REL,
66
+ children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "link", children: "Schema Validator" })
67
+ }
68
+ ),
69
+ /* @__PURE__ */ jsx(Link, { href: "https://ogp.me/", target: NEW_TAB_TARGET, rel: NEW_TAB_REL, children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "link", children: "Open Graph" }) }),
70
+ /* @__PURE__ */ jsx(
71
+ Link,
72
+ {
73
+ href: "https://developer.x.com/en/docs/x-for-websites/cards/overview/abouts-cards",
74
+ target: NEW_TAB_TARGET,
75
+ rel: NEW_TAB_REL,
76
+ children: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "link", children: "Twitter Card" })
77
+ }
78
+ )
79
+ ] });
80
+ }
81
+
82
+ export { ReferenceCard };