@vicacha-devs/strapi-plugin-events 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +121 -2
  3. package/dist/admin/CalendarPage-CwCvPDRx.js +1215 -0
  4. package/dist/admin/CalendarPage-Dz7g19qp.mjs +1215 -0
  5. package/dist/admin/RRuleInput-BQl-siRj.js +11 -0
  6. package/dist/admin/RRuleInput-C8bR37X9.mjs +6 -0
  7. package/dist/admin/SettingsPage-CNG9AEO_.mjs +415 -0
  8. package/dist/admin/SettingsPage-DhjtKDmY.js +415 -0
  9. package/dist/admin/ar-mMKUXxch.js +216 -0
  10. package/dist/admin/ar-tWKEvJLB.mjs +216 -0
  11. package/dist/admin/de-CGk8UZ3W.js +216 -0
  12. package/dist/admin/de-OdbJEFs0.mjs +216 -0
  13. package/dist/admin/en-Dskn9ZPa.mjs +216 -0
  14. package/dist/admin/en-imdSlLhJ.js +216 -0
  15. package/dist/admin/es-DcMsMHrI.mjs +216 -0
  16. package/dist/admin/es-DkqqxUJQ.js +216 -0
  17. package/dist/admin/fr-BTEIPOFw.mjs +216 -0
  18. package/dist/admin/fr-D92B_ZTv.js +216 -0
  19. package/dist/admin/index-BTq_X4uT.js +1005 -0
  20. package/dist/admin/index-BatOiwBu.mjs +1006 -0
  21. package/dist/admin/index.js +6 -0
  22. package/dist/admin/index.mjs +6 -0
  23. package/dist/admin/it-CAxPpL_9.mjs +216 -0
  24. package/dist/admin/it-ClKaSCgv.js +216 -0
  25. package/dist/admin/nl-CS1aUfT7.mjs +216 -0
  26. package/dist/admin/nl-F6FIi7zw.js +216 -0
  27. package/dist/admin/pl-BfmBU9FW.mjs +216 -0
  28. package/dist/admin/pl-p8VLXi02.js +216 -0
  29. package/dist/admin/pt-BUdH0uSw.js +216 -0
  30. package/dist/admin/pt-DdulKcbk.mjs +216 -0
  31. package/dist/admin/src/components/EventSidePanel.d.ts +13 -0
  32. package/dist/admin/src/components/Initializer.d.ts +5 -0
  33. package/dist/admin/src/components/PluginIcon.d.ts +2 -0
  34. package/dist/admin/src/components/RRuleInput.d.ts +3 -0
  35. package/dist/admin/src/components/events/AttendeesManagerPanel.d.ts +15 -0
  36. package/dist/admin/src/components/events/EventsDirectoryPanel.d.ts +11 -0
  37. package/dist/admin/src/components/events/EventsKpiCards.d.ts +16 -0
  38. package/dist/admin/src/components/events/QuickCreateEventPanel.d.ts +21 -0
  39. package/dist/admin/src/components/events/calendarPageHelpers.d.ts +8 -0
  40. package/dist/admin/src/fields/rruleField.d.ts +41 -0
  41. package/dist/admin/src/index.d.ts +15 -0
  42. package/dist/admin/src/pages/CalendarPage.d.ts +3 -0
  43. package/dist/admin/src/pages/SettingsPage.d.ts +3 -0
  44. package/dist/admin/src/permissions.d.ts +15 -0
  45. package/dist/admin/src/translations/cmLabels.d.ts +1 -0
  46. package/dist/admin/src/translations/cmPlaceholders.d.ts +1 -0
  47. package/dist/admin/tr-Bp50qvL8.mjs +216 -0
  48. package/dist/admin/tr-C7G9mPtg.js +216 -0
  49. package/dist/server/index.js +3709 -0
  50. package/dist/server/index.mjs +3705 -0
  51. package/dist/server/src/bootstrap.d.ts +5 -0
  52. package/dist/server/src/config/index.d.ts +7 -0
  53. package/dist/server/src/content-types/event/schema.json.d.ts +279 -0
  54. package/dist/server/src/content-types/index.d.ts +366 -0
  55. package/dist/server/src/content-types/registration/schema.json.d.ts +86 -0
  56. package/dist/server/src/controllers/admin.d.ts +17 -0
  57. package/dist/server/src/controllers/content-api.d.ts +14 -0
  58. package/dist/server/src/controllers/index.d.ts +28 -0
  59. package/dist/server/src/destroy.d.ts +5 -0
  60. package/dist/server/src/index.d.ts +551 -0
  61. package/dist/server/src/middlewares/index.d.ts +2 -0
  62. package/dist/server/src/policies/index.d.ts +2 -0
  63. package/dist/server/src/register.d.ts +5 -0
  64. package/dist/server/src/routes/admin.d.ts +17 -0
  65. package/dist/server/src/routes/content-api.d.ts +12 -0
  66. package/dist/server/src/routes/index.d.ts +30 -0
  67. package/dist/server/src/services/ical.d.ts +18 -0
  68. package/dist/server/src/services/index.d.ts +110 -0
  69. package/dist/server/src/services/occurrence.d.ts +44 -0
  70. package/dist/server/src/services/occurrenceHelpers.d.ts +16 -0
  71. package/dist/server/src/services/occurrencePayloadHelpers.d.ts +30 -0
  72. package/dist/server/src/services/occurrenceRsvpBatch.d.ts +25 -0
  73. package/dist/server/src/services/rsvp.d.ts +51 -0
  74. package/dist/server/src/services/rsvpHelpers.d.ts +52 -0
  75. package/dist/server/src/services/rsvpMutations.d.ts +34 -0
  76. package/dist/server/src/services/rsvpSecurity.d.ts +22 -0
  77. package/dist/server/src/services/settings.d.ts +10 -0
  78. package/dist/server/src/types.d.ts +171 -0
  79. package/dist/shared/calendarSystems.d.ts +6 -0
  80. package/dist/shared/icalGenerator.d.ts +25 -0
  81. package/dist/shared/index.d.ts +6 -0
  82. package/dist/shared/index.js +753 -0
  83. package/dist/shared/index.mjs +727 -0
  84. package/dist/shared/pluginId.d.ts +4 -0
  85. package/dist/shared/rruleEngine.d.ts +20 -0
  86. package/dist/shared/spotlightHelpers.d.ts +17 -0
  87. package/dist/shared/types.d.ts +309 -0
  88. package/dist/shared/urlAndPosterHelpers.d.ts +18 -0
  89. package/package.json +109 -3
@@ -0,0 +1,415 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const designSystem = require("@strapi/design-system");
5
+ const admin = require("@strapi/strapi/admin");
6
+ const react = require("react");
7
+ const reactIntl = require("react-intl");
8
+ const index = require("./index-BTq_X4uT.js");
9
+ const SUB_CARD_BORDER_STYLE = {
10
+ border: "1px solid rgba(128, 128, 128, 0.18)"
11
+ };
12
+ const SettingsPage = () => {
13
+ const { formatMessage } = reactIntl.useIntl();
14
+ const { get, put } = admin.useFetchClient();
15
+ const { toggleNotification } = admin.useNotification();
16
+ const isMountedRef = react.useRef(true);
17
+ const t = react.useCallback(
18
+ (id, defaultMessage) => formatMessage({ id: `${index.PLUGIN_ID}.${id}`, defaultMessage }),
19
+ [formatMessage]
20
+ );
21
+ const [settings, setSettings] = react.useState(null);
22
+ const [loadError, setLoadError] = react.useState(false);
23
+ const [saving, setSaving] = react.useState(false);
24
+ const [savedBanner, setSavedBanner] = react.useState(null);
25
+ react.useEffect(() => {
26
+ isMountedRef.current = true;
27
+ return () => {
28
+ isMountedRef.current = false;
29
+ };
30
+ }, []);
31
+ const loadSettings = react.useCallback(async () => {
32
+ setLoadError(false);
33
+ try {
34
+ const res = await get(
35
+ `/${index.PLUGIN_ID}/settings`
36
+ );
37
+ if (isMountedRef.current && res?.data?.data) {
38
+ setSettings(res.data.data);
39
+ }
40
+ } catch {
41
+ if (isMountedRef.current) {
42
+ setLoadError(true);
43
+ toggleNotification({
44
+ type: "danger",
45
+ message: t("settings.loadError", "Could not load settings.")
46
+ });
47
+ }
48
+ }
49
+ }, [get, t, toggleNotification]);
50
+ react.useEffect(() => {
51
+ void loadSettings();
52
+ }, [loadSettings]);
53
+ const handleSave = async () => {
54
+ if (!settings) return;
55
+ setSaving(true);
56
+ setSavedBanner(null);
57
+ try {
58
+ const res = await put(`/${index.PLUGIN_ID}/settings`, settings);
59
+ if (!isMountedRef.current) return;
60
+ if (res?.data?.data) {
61
+ setSettings(res.data.data);
62
+ }
63
+ const successMsg = t(
64
+ "settings.saved",
65
+ "Events plugin settings saved successfully."
66
+ );
67
+ setSavedBanner(successMsg);
68
+ toggleNotification({ type: "success", message: successMsg });
69
+ } catch {
70
+ if (!isMountedRef.current) return;
71
+ toggleNotification({
72
+ type: "danger",
73
+ message: t("settings.error", "Could not save settings.")
74
+ });
75
+ } finally {
76
+ if (isMountedRef.current) {
77
+ setSaving(false);
78
+ }
79
+ }
80
+ };
81
+ if (!settings) {
82
+ if (loadError) {
83
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 3, children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "danger600", children: t("settings.loadError", "Could not load settings.") }),
85
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "secondary", onClick: () => void loadSettings(), children: t("common.retry", "Retry") })
86
+ ] }) }) });
87
+ }
88
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: t("settings.loading", "Loading Events & RSVP settings...") }) }) });
89
+ }
90
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 6, background: "neutral100", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 5, children: [
91
+ /* @__PURE__ */ jsxRuntime.jsxs(
92
+ designSystem.Flex,
93
+ {
94
+ justifyContent: "space-between",
95
+ alignItems: "center",
96
+ wrap: "wrap",
97
+ gap: 3,
98
+ children: [
99
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
100
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "alpha", fontWeight: "bold", children: t("settings.title", "Events & RSVP Settings") }),
101
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 1, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "epsilon", textColor: "neutral600", children: t(
102
+ "settings.subtitle",
103
+ "Configure RSVP capacity, waitlist promotion automation, and public iCal (.ics) syndication."
104
+ ) }) })
105
+ ] }),
106
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "default", loading: saving, onClick: handleSave, children: t("common.save", "Save Settings") })
107
+ ]
108
+ }
109
+ ),
110
+ savedBanner && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 3, background: "success100", hasRadius: true, children: /* @__PURE__ */ jsxRuntime.jsx(
111
+ designSystem.Typography,
112
+ {
113
+ variant: "omega",
114
+ fontWeight: "bold",
115
+ textColor: "success700",
116
+ children: savedBanner
117
+ }
118
+ ) }),
119
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.Root, { defaultValue: "rsvp", children: [
120
+ /* @__PURE__ */ jsxRuntime.jsxs(
121
+ designSystem.Tabs.List,
122
+ {
123
+ "aria-label": t("settings.title", "Events & RSVP Settings"),
124
+ children: [
125
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "rsvp", children: t(
126
+ "settings.section.rsvp",
127
+ "RSVP, Capacity & Waitlist Automation"
128
+ ) }),
129
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "feed", children: t("settings.section.general", "iCal (.ics) Feed & Timezone") })
130
+ ]
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "rsvp", children: /* @__PURE__ */ jsxRuntime.jsx(
134
+ designSystem.Box,
135
+ {
136
+ padding: 6,
137
+ background: "neutral0",
138
+ hasRadius: true,
139
+ shadow: "tableShadow",
140
+ style: { borderTopLeftRadius: 0, borderTopRightRadius: 0 },
141
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
142
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", children: t(
143
+ "settings.section.rsvp",
144
+ "RSVP, Capacity & Waitlist Automation"
145
+ ) }),
146
+ /* @__PURE__ */ jsxRuntime.jsxs(
147
+ designSystem.Box,
148
+ {
149
+ style: {
150
+ display: "grid",
151
+ gridTemplateColumns: "repeat(2, minmax(0, 1fr))",
152
+ gap: 16
153
+ },
154
+ children: [
155
+ /* @__PURE__ */ jsxRuntime.jsxs(
156
+ designSystem.Field.Root,
157
+ {
158
+ hint: t(
159
+ "settings.defaultCapacityHint",
160
+ "Default seat capacity for newly created RSVP events."
161
+ ),
162
+ children: [
163
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t(
164
+ "settings.defaultCapacity",
165
+ "Default Event Capacity"
166
+ ) }),
167
+ /* @__PURE__ */ jsxRuntime.jsx(
168
+ designSystem.NumberInput,
169
+ {
170
+ placeholder: t(
171
+ "settings.defaultCapacity.placeholder",
172
+ "e.g., 100"
173
+ ),
174
+ value: settings.defaultCapacity ?? 100,
175
+ onValueChange: (val) => setSettings(
176
+ (prev) => prev ? {
177
+ ...prev,
178
+ defaultCapacity: val && val >= 1 ? val : 100
179
+ } : prev
180
+ )
181
+ }
182
+ ),
183
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
184
+ ]
185
+ }
186
+ ),
187
+ /* @__PURE__ */ jsxRuntime.jsxs(
188
+ designSystem.Field.Root,
189
+ {
190
+ hint: t(
191
+ "settings.maxGuestsHint",
192
+ "Maximum number of seats a single RSVP submission may reserve."
193
+ ),
194
+ children: [
195
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t("settings.maxGuests", "Max Guests per Registration") }),
196
+ /* @__PURE__ */ jsxRuntime.jsx(
197
+ designSystem.NumberInput,
198
+ {
199
+ placeholder: t(
200
+ "settings.maxGuests.placeholder",
201
+ "e.g., 5"
202
+ ),
203
+ value: settings.defaultMaxGuestsPerRegistration ?? 5,
204
+ onValueChange: (val) => setSettings(
205
+ (prev) => prev ? {
206
+ ...prev,
207
+ defaultMaxGuestsPerRegistration: val && val >= 1 ? val : 5
208
+ } : prev
209
+ )
210
+ }
211
+ ),
212
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
213
+ ]
214
+ }
215
+ )
216
+ ]
217
+ }
218
+ ),
219
+ /* @__PURE__ */ jsxRuntime.jsxs(
220
+ "div",
221
+ {
222
+ style: {
223
+ display: "grid",
224
+ gridTemplateColumns: "repeat(2, minmax(0, 1fr))",
225
+ gap: 16
226
+ },
227
+ children: [
228
+ /* @__PURE__ */ jsxRuntime.jsxs(
229
+ designSystem.Box,
230
+ {
231
+ padding: 4,
232
+ background: "neutral100",
233
+ hasRadius: true,
234
+ style: SUB_CARD_BORDER_STYLE,
235
+ children: [
236
+ /* @__PURE__ */ jsxRuntime.jsx(
237
+ designSystem.Checkbox,
238
+ {
239
+ checked: settings.waitlistEnabledByDefault,
240
+ onCheckedChange: (checked) => setSettings(
241
+ (prev) => prev ? {
242
+ ...prev,
243
+ waitlistEnabledByDefault: Boolean(checked)
244
+ } : prev
245
+ ),
246
+ children: t(
247
+ "settings.waitlistEnabledByDefault",
248
+ "Enable Waitlist & Automatic Promotion"
249
+ )
250
+ }
251
+ ),
252
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
253
+ "settings.waitlistEnabledByDefaultHint",
254
+ "Automatically promotes waitlisted attendees in FIFO order when a confirmed attendee cancels."
255
+ ) }) })
256
+ ]
257
+ }
258
+ ),
259
+ /* @__PURE__ */ jsxRuntime.jsxs(
260
+ designSystem.Box,
261
+ {
262
+ padding: 4,
263
+ background: "neutral100",
264
+ hasRadius: true,
265
+ style: SUB_CARD_BORDER_STYLE,
266
+ children: [
267
+ /* @__PURE__ */ jsxRuntime.jsx(
268
+ designSystem.Checkbox,
269
+ {
270
+ checked: settings.sendRsvpEmails,
271
+ onCheckedChange: (checked) => setSettings(
272
+ (prev) => prev ? {
273
+ ...prev,
274
+ sendRsvpEmails: Boolean(checked)
275
+ } : prev
276
+ ),
277
+ children: t(
278
+ "settings.sendRsvpEmails",
279
+ "Send Confirmation & Waitlist Promotion Emails"
280
+ )
281
+ }
282
+ ),
283
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingTop: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
284
+ "settings.sendRsvpEmailsHint",
285
+ "Dispatches confirmation and waitlist promotion emails via the Strapi Email plugin."
286
+ ) }) })
287
+ ]
288
+ }
289
+ )
290
+ ]
291
+ }
292
+ )
293
+ ] })
294
+ }
295
+ ) }),
296
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "feed", children: /* @__PURE__ */ jsxRuntime.jsx(
297
+ designSystem.Box,
298
+ {
299
+ padding: 6,
300
+ background: "neutral0",
301
+ hasRadius: true,
302
+ shadow: "tableShadow",
303
+ style: { borderTopLeftRadius: 0, borderTopRightRadius: 0 },
304
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
305
+ /* @__PURE__ */ jsxRuntime.jsxs(
306
+ designSystem.Flex,
307
+ {
308
+ justifyContent: "space-between",
309
+ alignItems: "center",
310
+ wrap: "wrap",
311
+ gap: 2,
312
+ children: [
313
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
314
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", fontWeight: "bold", children: t(
315
+ "settings.section.general",
316
+ "iCal (.ics) Feed & Timezone"
317
+ ) }),
318
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
319
+ "settings.section.generalHint",
320
+ "Default timezone and public iCal (.ics) feed title exported for community calendar subscriptions."
321
+ ) })
322
+ ] }),
323
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Badge, { active: true, children: [
324
+ t("settings.badge.timezone", "Timezone"),
325
+ ":",
326
+ " ",
327
+ settings.defaultTimezone || "UTC"
328
+ ] })
329
+ ]
330
+ }
331
+ ),
332
+ /* @__PURE__ */ jsxRuntime.jsxs(
333
+ designSystem.Box,
334
+ {
335
+ style: {
336
+ display: "grid",
337
+ gridTemplateColumns: "repeat(2, minmax(0, 1fr))",
338
+ gap: 16
339
+ },
340
+ children: [
341
+ /* @__PURE__ */ jsxRuntime.jsxs(
342
+ designSystem.Field.Root,
343
+ {
344
+ hint: t(
345
+ "settings.defaultTimezoneHint",
346
+ "IANA timezone identifier used for event recurrence and iCal exports."
347
+ ),
348
+ children: [
349
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t(
350
+ "settings.defaultTimezone",
351
+ "Default Timezone (IANA)"
352
+ ) }),
353
+ /* @__PURE__ */ jsxRuntime.jsx(
354
+ designSystem.TextInput,
355
+ {
356
+ placeholder: t(
357
+ "settings.defaultTimezone.placeholder",
358
+ "e.g., America/Bogota"
359
+ ),
360
+ value: settings.defaultTimezone ?? "",
361
+ onChange: (e) => {
362
+ const nextVal = e.target.value;
363
+ setSettings(
364
+ (prev) => prev ? { ...prev, defaultTimezone: nextVal } : prev
365
+ );
366
+ }
367
+ }
368
+ ),
369
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
370
+ ]
371
+ }
372
+ ),
373
+ /* @__PURE__ */ jsxRuntime.jsxs(
374
+ designSystem.Field.Root,
375
+ {
376
+ hint: t(
377
+ "settings.feedTitleHint",
378
+ "Calendar name shown when users subscribe in Google, Apple, or Outlook Calendar."
379
+ ),
380
+ children: [
381
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: t(
382
+ "settings.feedTitle",
383
+ "Public iCal (.ics) Feed Title"
384
+ ) }),
385
+ /* @__PURE__ */ jsxRuntime.jsx(
386
+ designSystem.TextInput,
387
+ {
388
+ placeholder: t(
389
+ "settings.feedTitle.placeholder",
390
+ "e.g., Events Calendar"
391
+ ),
392
+ value: settings.feedTitle ?? "",
393
+ onChange: (e) => {
394
+ const nextVal = e.target.value;
395
+ setSettings(
396
+ (prev) => prev ? { ...prev, feedTitle: nextVal } : prev
397
+ );
398
+ }
399
+ }
400
+ ),
401
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
402
+ ]
403
+ }
404
+ )
405
+ ]
406
+ }
407
+ )
408
+ ] })
409
+ }
410
+ ) })
411
+ ] })
412
+ ] }) }) });
413
+ };
414
+ exports.SettingsPage = SettingsPage;
415
+ exports.default = SettingsPage;
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ar = {
4
+ "sidePanel.title": "ملخص الفعالية والحجوزات",
5
+ "sidePanel.secondaryCalendars": "التواريخ في التقاويم البديلة",
6
+ "sidePanel.rsvpStatus": "الحجوزات والسعة",
7
+ "sidePanel.full": "مكتمل / قائمة الانتظار",
8
+ "sidePanel.open": "متاح",
9
+ "sidePanel.confirmedSeats": "المقاعد المؤكدة",
10
+ "sidePanel.checkedIn": "تم تسجيل حضورهم",
11
+ "sidePanel.waitlisted": "في قائمة الانتظار",
12
+ "sidePanel.downloadIcs": "تحميل دعوة .ics",
13
+ "sidePanel.openCalendar": "فتح في مدير الفعاليات والحضور",
14
+ "attendees.search": "ابحث عن مشارك أو فعالية",
15
+ "placeholder.name_email_or_event_title": "الاسم أو البريد الإلكتروني أو عنوان الفعالية...",
16
+ "attendees.statusFilter": "الحالة",
17
+ "placeholder.all_statuses": "جميع الحالات",
18
+ "attendees.clearEventFilter": "مسح تصفية الفعالية",
19
+ "attendees.exportCsv": "تصدير CSV",
20
+ "attendees.empty": "لم يتم العثور على تسجيلات مطابقة.",
21
+ "attendees.checkIn": "تسجيل حضور",
22
+ "attendees.rowStatus": "حالة التسجيل",
23
+ "placeholder.select_status": "اختر الحالة",
24
+ "calendar.rescheduleTo": "إعادة جدولة التاريخ",
25
+ "placeholder.yyyy_mm_dd": "YYYY-MM-DD",
26
+ "common.save": "حفظ الإعدادات",
27
+ "calendar.applyToSeries": "تطبيق على السلسلة المتكررة بالكامل",
28
+ "calendar.editInContentManager": "فتح في مدير المحتوى",
29
+ "calendar.cancelInstance": "إلغاء هذه الجلسة",
30
+ "common.close": "إغلاق",
31
+ "calendar.rsvpOverview": "نظرة عامة على التسجيل والسعة",
32
+ "calendar.viewAttendees": "الحضور",
33
+ "calendar.prev": "السابق",
34
+ "calendar.today": "اليوم",
35
+ "calendar.next": "التالي",
36
+ "calendar.allSources": "جميع المصادر",
37
+ "view.month": "شهر",
38
+ "view.week": "أسبوع",
39
+ "view.day": "يوم",
40
+ "view.agenda": "جدول الأعمال",
41
+ "view.attendees": "الحضور وتسجيل الدخول",
42
+ "calendar.categoryFilter": "الفئة",
43
+ "placeholder.all_categories": "جميع الفئات",
44
+ "calendar.allCategories": "جميع الفئات",
45
+ "calendar.language": "لغة التقويم",
46
+ "placeholder.select_calendar_language": "اختر لغة التقويم",
47
+ "calendar.hijriDisplay": "التاريخ الهجري / الثانوي",
48
+ "placeholder.select_hijri_display_mode": "اختر وضع عرض التاريخ الهجري",
49
+ "calendar.theme": "المظهر",
50
+ "placeholder.select_calendar_theme": "اختر مظهر التقويم",
51
+ "calendar.quickCreateTitle": "إنشاء فعالية سريعة",
52
+ "calendar.field.title": "عنوان الفعالية",
53
+ "placeholder.e_g_product_launch_webinar_weekly_workshop": "مثال: ندوة إطلاق المنتج / ورشة عمل أسبوعية",
54
+ "calendar.field.startDate": "تاريخ البدء",
55
+ "calendar.field.location": "الموقع",
56
+ "placeholder.main_auditorium_online": "القاعة الرئيسية / عبر الإنترنت",
57
+ "calendar.field.recurrence": "التكرار",
58
+ "placeholder.select_recurrence_preset": "اختر نمط التكرار",
59
+ "calendar.field.repeatWeekdays": "التكرار في أيام الأسبوع:",
60
+ "calendar.field.enableRsvp": "تفعيل التسجيل والحد الأقصى للمقاعد",
61
+ "calendar.field.capacity": "السعة القصوى (المقاعد)",
62
+ "placeholder.50": "50",
63
+ "common.cancel": "إلغاء",
64
+ "common.create": "إنشاء فعالية",
65
+ "calendar.error.load": "تعذّر تحميل مواعيد التقويم.",
66
+ "attendees.error.load": "تعذّر تحميل التسجيلات.",
67
+ "calendar.rescheduled": "تم تحديث الجدول الزمني.",
68
+ "calendar.error.reschedule": "تعذّر تحديث الجدول الزمني.",
69
+ "calendar.created": "تم إنشاء الفعالية ونشرها.",
70
+ "calendar.error.create": "تعذّر إنشاء الفعالية.",
71
+ "calendar.occurrenceCancelled": "تم إلغاء الجلسة.",
72
+ "attendees.checkedInSuccess": "تم تسجيل حضور المشارك.",
73
+ "attendees.error.checkIn": "فشل تسجيل الحضور.",
74
+ "attendees.statusUpdated": "تم تحديث الحالة.",
75
+ "attendees.waitlistPromoted": "تمت ترقية مشارك(ين) تلقائياً من قائمة الانتظار!",
76
+ "attendees.error.status": "تعذّر تحديث الحالة.",
77
+ "calendar.title": "الفعاليات والتقويم والحجوزات (RSVP)",
78
+ "calendar.quickCreate": "فعالية جديدة",
79
+ "calendar.downloadIcsFeed": "خلاصة iCal (.ics)",
80
+ "calendar.settings": "الإعدادات",
81
+ "settings.saved": "تم حفظ الإعدادات بنجاح.",
82
+ "settings.error": "تعذّر حفظ الإعدادات.",
83
+ "settings.loadError": "تعذّر تحميل الإعدادات.",
84
+ "common.retry": "إعادة المحاولة",
85
+ "settings.loading": "جارٍ تحميل إعدادات الفعاليات والتسجيل...",
86
+ "settings.title": "إعدادات الفعاليات وتأكيد الحضور",
87
+ "settings.subtitle": "ضبط المناطق الزمنية، وقوائم الانتظار، والمجموعات المرتبطة.",
88
+ "settings.section.general": "خلاصة iCal (.ics) والمنطقة الزمنية",
89
+ "settings.section.generalHint": "المنطقة الزمنية الافتراضية وعنوان خلاصة iCal (.ics) العامة للاشتراك في التقاويم.",
90
+ "settings.badge.timezone": "المنطقة الزمنية",
91
+ "settings.defaultTimezone": "المنطقة الزمنية الافتراضية (IANA)",
92
+ "settings.defaultTimezone.placeholder": "مثال: America/Bogota",
93
+ "settings.defaultTimezoneHint": "معرّف المنطقة الزمنية IANA المستخدم لتكرار الفعاليات وتصدير ملفات iCal.",
94
+ "settings.feedTitle": "عنوان خلاصة iCal (.ics) العامة",
95
+ "settings.feedTitle.placeholder": "مثال: تقويم الفعاليات",
96
+ "settings.defaultFeedTitle": "تقويم الفعاليات",
97
+ "settings.feedTitleHint": "اسم التقويم الذي يظهر للمستخدمين عند الاشتراك عبر Google أو Apple أو Outlook.",
98
+ "settings.section.secondaryCalendars": "أنظمة التقاويم الثانوية والبديلة (CLDR / مخصصة)",
99
+ "settings.secondaryCalendarsHint": "أضف أنظمة تقاويم Unicode CLDR (مثل الهجري والعبري والفارسي) أو منسقات مخصصة مع إمكانية تعديل فرق الأيام وحقول التجاوز.",
100
+ "settings.configuredCount": "مُعدّة",
101
+ "settings.badge.overrideField": "حقل التجاوز",
102
+ "settings.badge.offset": "الإزاحة",
103
+ "settings.calendarEnabled": "مفعّل",
104
+ "common.remove": "إزالة",
105
+ "settings.calendarPreset": "نظام التقويم (CLDR)",
106
+ "settings.calendarPreset.placeholder": "اختر نظام تقويم CLDR",
107
+ "settings.calendarPresetHint": "معرّف تقويم Unicode CLDR القياسي.",
108
+ "settings.calendarId": "مفتاح المعرّف (ID)",
109
+ "settings.calendarId.placeholder": "مثال: hijri",
110
+ "settings.calendarIdHint": "معرّف فريد مختصر.",
111
+ "settings.calendarLabel": "تسمية العرض",
112
+ "settings.calendarLabel.placeholder": "مثال: الهجري (أم القرى)",
113
+ "settings.calendarLabelHint": "العنوان الذي يظهر بجانب تواريخ الفعاليات.",
114
+ "settings.overrideField": "حقل التجاوز (اختياري)",
115
+ "settings.overrideField.placeholder": "مثال: hijriDate",
116
+ "settings.overrideFieldHint": "حقل في الوثيقة يتجاوز التاريخ المحسوب تلقائياً.",
117
+ "settings.dayOffset": "إزاحة الأيام",
118
+ "settings.dayOffset.placeholder": "مثال: 0",
119
+ "settings.dayOffsetHint": "تعديل رؤية الهلال من -2 إلى +2 يوم.",
120
+ "settings.addCalendar": "إضافة نظام تقويم",
121
+ "settings.section.rsvp": "أتمتة التسجيل والسعة وقائمة الانتظار",
122
+ "settings.defaultCapacity": "السعة الافتراضية للفعالية",
123
+ "settings.defaultCapacity.placeholder": "مثال: 100",
124
+ "settings.defaultCapacityHint": "عدد المقاعد الافتراضي للفعاليات الجديدة التي تقبل التسجيل.",
125
+ "settings.maxGuests": "الحد الأقصى للمرافقين لكل تسجيل",
126
+ "settings.maxGuests.placeholder": "مثال: 5",
127
+ "settings.maxGuestsHint": "أقصى عدد مقاعد يمكن حجزه في طلب تسجيل واحد.",
128
+ "settings.waitlistEnabledByDefault": "تفعيل قائمة الانتظار والترقية التلقائية عند الإلغاء",
129
+ "settings.waitlistEnabledByDefaultHint": "يرقّي المسجلين في قائمة الانتظار تلقائياً حسب أسبقية التسجيل عند إلغاء حجز مؤكد.",
130
+ "settings.sendRsvpEmails": "إرسال رسائل التأكيد عبر البريد الإلكتروني في Strapi",
131
+ "settings.sendRsvpEmailsHint": "يرسل رسائل تأكيد التسجيل والترقية من قائمة الانتظار عبر إضافة البريد الإلكتروني في Strapi.",
132
+ "settings.section.sources": "مجموعات المحتوى المرتبطة بالتقويم",
133
+ "settings.sourceEnabled": "مفعّل في التقويم والخلاصات",
134
+ "plugin.name": "الفعاليات والتقويم",
135
+ "settings.menuLabel": "الفعاليات وتأكيد الحضور",
136
+ "calendar.loading": "جارٍ تحميل الفعاليات...",
137
+ "calendar.empty": "لا توجد فعاليات مجدولة في هذه الفترة.",
138
+ "rrule.label": "التكرار والمنطقة الزمنية (RRULE)",
139
+ "rrule.description": "ضبط قواعد التكرار (RFC 5545 RRULE) والمنطقة الزمنية والتواريخ المستثناة.",
140
+ "rrule.section.advanced": "الإعدادات المتقدمة",
141
+ "rrule.options.required": "حقل إلزامي",
142
+ "rrule.options.required.description": "إلزام المحررين بتحديد إعدادات التكرار أو الجدول الزمني.",
143
+ "rrule.frequency": "يتكرر",
144
+ "rrule.freq.none": "لا يتكرر (فعالية مفردة)",
145
+ "rrule.freq.daily": "يومياً",
146
+ "rrule.freq.weekly": "أسبوعياً",
147
+ "rrule.freq.monthly": "شهرياً",
148
+ "rrule.freq.yearly": "سنوياً",
149
+ "rrule.weekday.mo": "الإثنين",
150
+ "rrule.weekday.tu": "الثلاثاء",
151
+ "rrule.weekday.we": "الأربعاء",
152
+ "rrule.weekday.th": "الخميس",
153
+ "rrule.weekday.fr": "الجمعة",
154
+ "rrule.weekday.sa": "السبت",
155
+ "rrule.weekday.su": "الأحد",
156
+ "rrule.interval": "كل (فاصل)",
157
+ "rrule.timezone": "المنطقة الزمنية (IANA)",
158
+ "rrule.allDay": "طوال اليوم",
159
+ "rrule.weekdays": "أيام التكرار",
160
+ "rrule.monthDay": "يوم الشهر (1–31)",
161
+ "rrule.ends": "ينتهي",
162
+ "rrule.ends.never": "أبداً (مستمر)",
163
+ "rrule.ends.until": "في تاريخ محدد",
164
+ "rrule.ends.count": "بعد عدد محدد من المرات",
165
+ "rrule.untilDate": "تاريخ الانتهاء (YYYY-MM-DD)",
166
+ "rrule.occurrencesCount": "الحد الأقصى للتكرارات",
167
+ "rrule.exdates": "التواريخ المستثناة",
168
+ "rrule.addExdate": "إضافة تاريخ مستثنى",
169
+ "rrule.summary": "الجدول",
170
+ "common.edit": "تعديل",
171
+ "events.directory.noRsvp": "معلومات / رابط خارجي",
172
+ "attendees.seatSingular": "مقعد",
173
+ "attendees.seatPlural": "مقاعد",
174
+ "status.confirmed": "مؤكد",
175
+ "status.checked_in": "تم تسجيل الحضور",
176
+ "status.waitlisted": "قائمة الانتظار",
177
+ "status.cancelled": "ملغى",
178
+ "status.scheduled": "مجدول",
179
+ "status.postponed": "مؤجل",
180
+ "status.rescheduled": "أعيدت جدولته",
181
+ "events.directory.recurring": "متكرر",
182
+ "events.directory.seatsLeft": "مقاعد متاحة",
183
+ "events.directory.filterRsvps": "عرض التسجيلات",
184
+ "events.directory.editEvent": "تعديل الفعالية",
185
+ "calendar.openUnifiedCalendar": "فتح في التقويم",
186
+ "events.directory.title": "الفعاليات المسجلة",
187
+ "events.directory.subtitle": "جميع الفعاليات المجدولة والمتكررة عبر المصادر المكونة لديك، بما في ذلك سعة المقاعد وروابط مدير المحتوى.",
188
+ "events.directory.search": "البحث في الفعاليات",
189
+ "events.directory.searchPlaceholder": "العنوان، الموقع، الفئة...",
190
+ "events.directory.rsvpFilter": "وضع التسجيل",
191
+ "events.directory.allEvents": "جميع الفعاليات",
192
+ "events.directory.rsvpOnly": "مع تفعيل التسجيل",
193
+ "events.directory.infoOnly": "معلوماتي فقط",
194
+ "events.directory.empty": "لم يتم العثور على فعاليات تطابق عوامل التصفية الحالية.",
195
+ "events.directory.actions": "الإجراءات",
196
+ "calendar.subtitle": "إدارة تسجيلات الفعاليات، والترقية التلقائية لقائمة الانتظار، وتسجيل حضور المشاركين.",
197
+ "stats.totalEvents": "الفعاليات المسجلة",
198
+ "stats.eventsWithRsvps": "فعاليات بتسجيل مسبق",
199
+ "stats.registrations": "إجمالي التسجيلات",
200
+ "stats.confirmedSeats": "المقاعد المؤكدة",
201
+ "stats.checkedInSeats": "المقاعد المسجل حضورها",
202
+ "stats.waitlistedSeats": "مقاعد قائمة الانتظار",
203
+ "recurrence.freq.NONE": "لا يتكرر (فعالية واحدة)",
204
+ "recurrence.freq.DAILY": "يومياً",
205
+ "recurrence.freq.WEEKLY": "أسبوعياً (الأيام المحددة)",
206
+ "recurrence.freq.MONTHLY": "شهرياً (نفس التاريخ)",
207
+ "recurrence.freq.YEARLY": "سنوياً",
208
+ "weekday.mon": "إثنين",
209
+ "weekday.tue": "ثلاثاء",
210
+ "weekday.wed": "أربعاء",
211
+ "weekday.thu": "خميس",
212
+ "weekday.fri": "جمعة",
213
+ "weekday.sat": "سبت",
214
+ "weekday.sun": "أحد"
215
+ };
216
+ exports.default = ar;