@mbpockets/shared-ui 0.2.0 → 0.2.5

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 (205) hide show
  1. package/dist/EventPage/editMode/index.cjs.map +1 -1
  2. package/dist/EventPage/editMode/index.d.cts +1 -1
  3. package/dist/EventPage/editMode/index.d.ts +1 -1
  4. package/dist/EventPage/editMode/index.mjs.map +1 -1
  5. package/dist/EventPage/editMode.cjs.map +1 -1
  6. package/dist/EventPage/editMode.d.cts +1 -1
  7. package/dist/EventPage/editMode.d.ts +1 -1
  8. package/dist/EventPage/editMode.mjs.map +1 -1
  9. package/dist/EventPage/index.cjs +121 -63
  10. package/dist/EventPage/index.cjs.map +1 -1
  11. package/dist/EventPage/index.d.cts +1 -1
  12. package/dist/EventPage/index.d.ts +1 -1
  13. package/dist/EventPage/index.mjs +121 -63
  14. package/dist/EventPage/index.mjs.map +1 -1
  15. package/dist/EventPage.cjs +121 -63
  16. package/dist/EventPage.cjs.map +1 -1
  17. package/dist/EventPage.d.cts +4 -4
  18. package/dist/EventPage.d.ts +4 -4
  19. package/dist/EventPage.mjs +121 -63
  20. package/dist/EventPage.mjs.map +1 -1
  21. package/dist/PlayerPage/index.cjs +12 -8
  22. package/dist/PlayerPage/index.cjs.map +1 -1
  23. package/dist/PlayerPage/index.mjs +12 -8
  24. package/dist/PlayerPage/index.mjs.map +1 -1
  25. package/dist/PlayerPage.cjs +12 -8
  26. package/dist/PlayerPage.cjs.map +1 -1
  27. package/dist/PlayerPage.mjs +12 -8
  28. package/dist/PlayerPage.mjs.map +1 -1
  29. package/dist/ProfilePage/index.cjs +12 -8
  30. package/dist/ProfilePage/index.cjs.map +1 -1
  31. package/dist/ProfilePage/index.mjs +12 -8
  32. package/dist/ProfilePage/index.mjs.map +1 -1
  33. package/dist/ProfilePage.cjs +12 -8
  34. package/dist/ProfilePage.cjs.map +1 -1
  35. package/dist/ProfilePage.mjs +12 -8
  36. package/dist/ProfilePage.mjs.map +1 -1
  37. package/dist/SearchPage/Filters/index.cjs +38 -18
  38. package/dist/SearchPage/Filters/index.cjs.map +1 -1
  39. package/dist/SearchPage/Filters/index.d.cts +2 -1
  40. package/dist/SearchPage/Filters/index.d.ts +2 -1
  41. package/dist/SearchPage/Filters/index.mjs +34 -17
  42. package/dist/SearchPage/Filters/index.mjs.map +1 -1
  43. package/dist/SearchPage/Filters.cjs +38 -18
  44. package/dist/SearchPage/Filters.cjs.map +1 -1
  45. package/dist/SearchPage/Filters.d.cts +13 -1
  46. package/dist/SearchPage/Filters.d.ts +13 -1
  47. package/dist/SearchPage/Filters.mjs +34 -17
  48. package/dist/SearchPage/Filters.mjs.map +1 -1
  49. package/dist/SearchPage/Results/index.cjs +87 -48
  50. package/dist/SearchPage/Results/index.cjs.map +1 -1
  51. package/dist/SearchPage/Results/index.mjs +87 -48
  52. package/dist/SearchPage/Results/index.mjs.map +1 -1
  53. package/dist/SearchPage/Results.cjs +87 -48
  54. package/dist/SearchPage/Results.cjs.map +1 -1
  55. package/dist/SearchPage/Results.d.cts +10 -3
  56. package/dist/SearchPage/Results.d.ts +10 -3
  57. package/dist/SearchPage/Results.mjs +87 -48
  58. package/dist/SearchPage/Results.mjs.map +1 -1
  59. package/dist/SearchPage/index.cjs +207 -99
  60. package/dist/SearchPage/index.cjs.map +1 -1
  61. package/dist/SearchPage/index.d.cts +2 -2
  62. package/dist/SearchPage/index.d.ts +2 -2
  63. package/dist/SearchPage/index.mjs +203 -98
  64. package/dist/SearchPage/index.mjs.map +1 -1
  65. package/dist/SearchPage.cjs +207 -99
  66. package/dist/SearchPage.cjs.map +1 -1
  67. package/dist/SearchPage.d.cts +25 -3
  68. package/dist/SearchPage.d.ts +25 -3
  69. package/dist/SearchPage.mjs +203 -98
  70. package/dist/SearchPage.mjs.map +1 -1
  71. package/dist/TablePage/EditComponents/index.cjs +296 -0
  72. package/dist/TablePage/EditComponents/index.cjs.map +1 -0
  73. package/dist/TablePage/EditComponents/index.d.cts +3 -0
  74. package/dist/TablePage/EditComponents/index.d.ts +3 -0
  75. package/dist/TablePage/EditComponents/index.mjs +286 -0
  76. package/dist/TablePage/EditComponents/index.mjs.map +1 -0
  77. package/dist/TablePage/EditComponents.cjs +296 -0
  78. package/dist/TablePage/EditComponents.cjs.map +1 -0
  79. package/dist/TablePage/EditComponents.d.cts +21 -0
  80. package/dist/TablePage/EditComponents.d.ts +21 -0
  81. package/dist/TablePage/EditComponents.mjs +286 -0
  82. package/dist/TablePage/EditComponents.mjs.map +1 -0
  83. package/dist/TablePage/ModalProvider/index.cjs +59 -58
  84. package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
  85. package/dist/TablePage/ModalProvider/index.d.cts +1 -1
  86. package/dist/TablePage/ModalProvider/index.d.ts +1 -1
  87. package/dist/TablePage/ModalProvider/index.mjs +50 -59
  88. package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
  89. package/dist/TablePage/ModalProvider.cjs +59 -58
  90. package/dist/TablePage/ModalProvider.cjs.map +1 -1
  91. package/dist/TablePage/ModalProvider.d.cts +7 -2
  92. package/dist/TablePage/ModalProvider.d.ts +7 -2
  93. package/dist/TablePage/ModalProvider.mjs +50 -59
  94. package/dist/TablePage/ModalProvider.mjs.map +1 -1
  95. package/dist/TablePage/index.cjs +555 -331
  96. package/dist/TablePage/index.cjs.map +1 -1
  97. package/dist/TablePage/index.d.cts +3 -2
  98. package/dist/TablePage/index.d.ts +3 -2
  99. package/dist/TablePage/index.mjs +539 -320
  100. package/dist/TablePage/index.mjs.map +1 -1
  101. package/dist/TablePage/players/index.cjs +24 -4
  102. package/dist/TablePage/players/index.cjs.map +1 -1
  103. package/dist/TablePage/players/index.mjs +24 -4
  104. package/dist/TablePage/players/index.mjs.map +1 -1
  105. package/dist/TablePage/players.cjs +24 -4
  106. package/dist/TablePage/players.cjs.map +1 -1
  107. package/dist/TablePage/players.mjs +24 -4
  108. package/dist/TablePage/players.mjs.map +1 -1
  109. package/dist/TablePage.cjs +555 -331
  110. package/dist/TablePage.cjs.map +1 -1
  111. package/dist/TablePage.d.cts +4 -1
  112. package/dist/TablePage.d.ts +4 -1
  113. package/dist/TablePage.mjs +539 -320
  114. package/dist/TablePage.mjs.map +1 -1
  115. package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
  116. package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
  117. package/dist/index.cjs +889 -424
  118. package/dist/index.cjs.map +1 -1
  119. package/dist/index.d.cts +5 -4
  120. package/dist/index.d.ts +5 -4
  121. package/dist/index.mjs +870 -421
  122. package/dist/index.mjs.map +1 -1
  123. package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
  124. package/dist/mocks/EventDetails.cjs.map +1 -0
  125. package/dist/mocks/EventDetails.d.cts +6 -0
  126. package/dist/mocks/EventDetails.d.ts +6 -0
  127. package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
  128. package/dist/mocks/EventDetails.mjs.map +1 -0
  129. package/dist/mocks/Tables.cjs +1 -1
  130. package/dist/mocks/Tables.cjs.map +1 -1
  131. package/dist/mocks/Tables.mjs +1 -1
  132. package/dist/mocks/Tables.mjs.map +1 -1
  133. package/dist/mocks/Tags.cjs +200 -0
  134. package/dist/mocks/Tags.cjs.map +1 -1
  135. package/dist/mocks/Tags.mjs +200 -0
  136. package/dist/mocks/Tags.mjs.map +1 -1
  137. package/dist/mocks/index.cjs +202 -2
  138. package/dist/mocks/index.cjs.map +1 -1
  139. package/dist/mocks/index.d.cts +1 -1
  140. package/dist/mocks/index.d.ts +1 -1
  141. package/dist/mocks/index.mjs +202 -2
  142. package/dist/mocks/index.mjs.map +1 -1
  143. package/dist/mocks.cjs +202 -2
  144. package/dist/mocks.cjs.map +1 -1
  145. package/dist/mocks.d.cts +1 -1
  146. package/dist/mocks.d.ts +1 -1
  147. package/dist/mocks.mjs +202 -2
  148. package/dist/mocks.mjs.map +1 -1
  149. package/dist/shared/index.cjs +327 -64
  150. package/dist/shared/index.cjs.map +1 -1
  151. package/dist/shared/index.d.cts +1 -1
  152. package/dist/shared/index.d.ts +1 -1
  153. package/dist/shared/index.mjs +324 -64
  154. package/dist/shared/index.mjs.map +1 -1
  155. package/dist/shared.cjs +327 -64
  156. package/dist/shared.cjs.map +1 -1
  157. package/dist/shared.d.cts +25 -2
  158. package/dist/shared.d.ts +25 -2
  159. package/dist/shared.mjs +324 -64
  160. package/dist/shared.mjs.map +1 -1
  161. package/dist/types/event.d.cts +2 -3
  162. package/dist/types/event.d.ts +2 -3
  163. package/dist/types/index.d.cts +2 -2
  164. package/dist/types/index.d.ts +2 -2
  165. package/dist/types/search.d.cts +7 -1
  166. package/dist/types/search.d.ts +7 -1
  167. package/dist/types/tables.d.cts +1 -0
  168. package/dist/types/tables.d.ts +1 -0
  169. package/dist/types.d.cts +2 -2
  170. package/dist/types.d.ts +2 -2
  171. package/package.json +9 -2
  172. package/dist/TablePage/ModalProvider/index.css +0 -49
  173. package/dist/TablePage/ModalProvider/index.css.map +0 -1
  174. package/dist/TablePage/ModalProvider.css +0 -49
  175. package/dist/TablePage/ModalProvider.css.map +0 -1
  176. package/dist/TablePage/index.css +0 -49
  177. package/dist/TablePage/index.css.map +0 -1
  178. package/dist/TablePage.css +0 -49
  179. package/dist/TablePage.css.map +0 -1
  180. package/dist/index.css +0 -49
  181. package/dist/index.css.map +0 -1
  182. package/dist/mocks/EventDB.cjs.map +0 -1
  183. package/dist/mocks/EventDB.d.cts +0 -6
  184. package/dist/mocks/EventDB.d.ts +0 -6
  185. package/dist/mocks/EventDB.mjs.map +0 -1
  186. package/dist/shared/Modal/index.cjs +0 -64
  187. package/dist/shared/Modal/index.cjs.map +0 -1
  188. package/dist/shared/Modal/index.css +0 -49
  189. package/dist/shared/Modal/index.css.map +0 -1
  190. package/dist/shared/Modal/index.d.cts +0 -2
  191. package/dist/shared/Modal/index.d.ts +0 -2
  192. package/dist/shared/Modal/index.mjs +0 -62
  193. package/dist/shared/Modal/index.mjs.map +0 -1
  194. package/dist/shared/Modal.cjs +0 -64
  195. package/dist/shared/Modal.cjs.map +0 -1
  196. package/dist/shared/Modal.css +0 -49
  197. package/dist/shared/Modal.css.map +0 -1
  198. package/dist/shared/Modal.d.cts +0 -9
  199. package/dist/shared/Modal.d.ts +0 -9
  200. package/dist/shared/Modal.mjs +0 -62
  201. package/dist/shared/Modal.mjs.map +0 -1
  202. package/dist/shared/index.css +0 -49
  203. package/dist/shared/index.css.map +0 -1
  204. package/dist/shared.css +0 -49
  205. package/dist/shared.css.map +0 -1
@@ -1,4 +1,4 @@
1
- export { a as EventBannerEdit, d as EventBasicInfoEdit, e as EventBasicInfoEditPayload, f as EventEditProvider, u as useEventEdit } from '../index-DC0kK3aC';
1
+ export { a as EventBannerEdit, d as EventBasicInfoEdit, e as EventBasicInfoEditPayload, f as EventEditProvider, u as useEventEdit } from '../index-Csj8S4A4';
2
2
  import 'react/jsx-runtime';
3
3
  import '../types/event.cjs';
4
4
  import '../types/tag.cjs';
@@ -1,4 +1,4 @@
1
- export { a as EventBannerEdit, d as EventBasicInfoEdit, e as EventBasicInfoEditPayload, f as EventEditProvider, u as useEventEdit } from '../index-D7WHhl3Q';
1
+ export { a as EventBannerEdit, d as EventBasicInfoEdit, e as EventBasicInfoEditPayload, f as EventEditProvider, u as useEventEdit } from '../index-B23RQop0';
2
2
  import 'react/jsx-runtime';
3
3
  import '../types/event.js';
4
4
  import '../types/tag.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/EventPage/editMode/EventEditContext.tsx","../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/components/EventPage/editMode/EventBannerEdit.tsx","../../src/components/EventPage/EventBasicInfo.tsx","../../src/components/EventPage/editMode/EventBasicInfoEdit.tsx"],"names":["jsx","useState","jsxs","Card","CardContent","Box","Tooltip","IconButton","CircularProgress","Typography","Grid","TextField"],"mappings":"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","file":"editMode.mjs","sourcesContent":["\"use client\"\r\nimport React, { createContext, useContext, ReactNode, useState, useEffect } from \"react\";\r\nimport { EventEditContextValue, EventDB } from \"@/types/event\";\r\n\r\ntype ExtendedEventEditContextValue = EventEditContextValue & {\r\n event: EventDB | null;\r\n};\r\n\r\n/**\r\n * Default Values for stability\r\n */\r\nconst defaultValue: ExtendedEventEditContextValue = {\r\n isOwner: false,\r\n updateEvent: async () => false,\r\n updateImages: () => {},\r\n event: null,\r\n}\r\n\r\n/**\r\n * Default call (safe fallback)\r\n * Components using this without a provider will behave as non-owner.\r\n */\r\nconst EventEditContext = createContext<ExtendedEventEditContextValue>(defaultValue);\r\n\r\n/**\r\n * Provider props\r\n */\r\ntype EventEditProviderProps = {\r\n value?: Partial<EventEditContextValue>;\r\n initialEvent: EventDB;\r\n children: ReactNode;\r\n};\r\n\r\n/**\r\n * Provider component\r\n */\r\nexport function EventEditProvider({\r\n value,\r\n initialEvent,\r\n children,\r\n }: EventEditProviderProps) {\r\n const [event, setEvent] = useState<EventDB>(initialEvent);\r\n\r\n // Update internal state if initialEvent changes (e.g. from parent fetch)\r\n useEffect(() => {\r\n setEvent(initialEvent);\r\n }, [initialEvent]);\r\n\r\n const handleUpdateEvent = async (patch: Partial<EventDB>) => {\r\n if (value?.updateEvent) {\r\n const result = value.updateEvent(patch);\r\n \r\n // Handle both Promise<boolean> and void/boolean return\r\n if (result instanceof Promise) {\r\n const success = await result;\r\n if (success) {\r\n setEvent(prev => ({ ...prev, ...patch }));\r\n }\r\n return success;\r\n } else {\r\n // If it's a boolean, use it. If void, assume true.\r\n const success = result === false ? false : true;\r\n if (success) {\r\n setEvent(prev => ({ ...prev, ...patch }));\r\n }\r\n return success;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * automatically fill in default values if data is missing or incomplete\r\n */\r\n const mergedValue: ExtendedEventEditContextValue = {\r\n ...defaultValue,\r\n ...value,\r\n event,\r\n updateEvent: handleUpdateEvent,\r\n }\r\n\r\n return (\r\n <EventEditContext.Provider value={mergedValue}>\r\n {children}\r\n </EventEditContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * Hook for consuming context\r\n */\r\nexport function useEventEdit(): ExtendedEventEditContextValue {\r\n const context = useContext(EventEditContext);\r\n\r\n // Optional guard (useful during development)\r\n if (!context) {\r\n throw new Error(\"useEventEdit must be used within an EventEditProvider\");\r\n }\r\n\r\n return context;\r\n}","import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n return validTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","\"use client\"\r\nimport React, { useState } from \"react\";\r\nimport { useEventEdit } from \"./EventEditContext\";\r\nimport type { EventBannerEditPayload } from \"../EventBanner\";\r\nimport { \r\n Box, \r\n Button, \r\n Grid, \r\n TextField, \r\n IconButton, \r\n Tooltip, \r\n Dialog, \r\n DialogTitle, \r\n DialogContent, \r\n DialogActions,\r\n CircularProgress \r\n} from \"@mui/material\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport AddIcon from \"@mui/icons-material/Add\";\r\nimport ColorizeIcon from \"@mui/icons-material/Colorize\";\r\nimport { generateTagsDisplay } from \"@/components/shared/TagComponents\";\r\n\r\ntype EventBannerEditProps = {\r\n initialValue: EventBannerEditPayload;\r\n onCancel: () => void;\r\n onSave: (payload: Partial<EventBannerEditPayload>) => Promise<void> | void;\r\n};\r\n\r\ntype LinkEditState = {\r\n index: number;\r\n text: string;\r\n url: string;\r\n} | null;\r\n\r\nexport default function EventBannerEdit({\r\n initialValue,\r\n onCancel,\r\n onSave,\r\n }: EventBannerEditProps) {\r\n const { updateImages } = useEventEdit();\r\n const [title, setTitle] = useState(initialValue.title);\r\n const [bannerColor, setBannerColor] = useState(initialValue.bannerColor || \"\");\r\n const [desktopBanner, setDesktopBanner] = useState(initialValue.bannerUrl.desktop);\r\n const [mobileBanner, setMobileBanner] = useState(initialValue.bannerUrl.mobile || \"\");\r\n const [links, setLinks] = useState(initialValue.links);\r\n const [linkToEdit, setLinkToEdit] = useState<LinkEditState>(null);\r\n const [isSaving, setIsSaving] = useState(false);\r\n\r\n const backgroundColor = bannerColor || \"linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))\";\r\n\r\n const handleSave = async () => {\r\n setIsSaving(true);\r\n try {\r\n const patch: Partial<EventBannerEditPayload> = {};\r\n\r\n if (title !== initialValue.title) {\r\n patch.title = title;\r\n }\r\n\r\n const currentBannerColor = bannerColor || undefined;\r\n const initialBannerColor = initialValue.bannerColor || undefined;\r\n if (currentBannerColor !== initialBannerColor) {\r\n patch.bannerColor = currentBannerColor;\r\n }\r\n\r\n const currentMobile = mobileBanner || undefined;\r\n const initialMobile = initialValue.bannerUrl.mobile || undefined;\r\n if (desktopBanner !== initialValue.bannerUrl.desktop || currentMobile !== initialMobile) {\r\n patch.bannerUrl = {\r\n desktop: desktopBanner,\r\n mobile: currentMobile,\r\n };\r\n }\r\n\r\n // Deep comparison for links\r\n if (JSON.stringify(links) !== JSON.stringify(initialValue.links)) {\r\n patch.links = links;\r\n }\r\n\r\n if (Object.keys(patch).length > 0) {\r\n await onSave(patch);\r\n } else {\r\n onCancel(); // Nothing changed\r\n }\r\n } catch (error) {\r\n console.error(\"Failed to save banner changes\", error);\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n };\r\n\r\n const removeLink = (index: number) => {\r\n setLinks(links.filter((_, i) => i !== index));\r\n };\r\n\r\n const openEditLink = (index: number) => {\r\n setLinkToEdit({\r\n index,\r\n text: links[index].text,\r\n url: links[index].url\r\n });\r\n };\r\n\r\n const saveEditedLink = () => {\r\n if (linkToEdit) {\r\n const newLinks = [...links];\r\n if (linkToEdit.index === -1) {\r\n newLinks.push({ text: linkToEdit.text, url: linkToEdit.url });\r\n } else {\r\n newLinks[linkToEdit.index] = { text: linkToEdit.text, url: linkToEdit.url };\r\n }\r\n setLinks(newLinks);\r\n setLinkToEdit(null);\r\n }\r\n };\r\n\r\n const handleEyeDropper = async () => {\r\n if (!(window as any).EyeDropper) {\r\n alert(\"EyeDropper API is not supported in this browser\");\r\n return;\r\n }\r\n const eyeDropper = new (window as any).EyeDropper();\r\n try {\r\n const result = await eyeDropper.open();\r\n setBannerColor(result.sRGBHex);\r\n } catch (e) {\r\n console.log(\"EyeDropper cancelled or failed\", e);\r\n }\r\n };\r\n\r\n return (\r\n <Box sx={{ position: 'relative', width: '100%' }}>\r\n <Grid\r\n sx={{\r\n background: backgroundColor,\r\n paddingTop: \"8px\",\r\n position: 'relative',\r\n border: '2px dashed rgba(255,255,255,0.5)',\r\n borderRadius: 1\r\n }}\r\n >\r\n {/* SETTINGS OVERLAY */}\r\n <Box sx={{ \r\n position: 'absolute', \r\n top: 8, \r\n left: 8, \r\n zIndex: 10, \r\n display: 'flex', \r\n flexDirection: 'column', \r\n gap: 1,\r\n bgcolor: 'rgba(0,0,0,0.5)',\r\n p: 1,\r\n borderRadius: 1,\r\n width: '300px'\r\n }}>\r\n <TextField\r\n label=\"Title\"\r\n variant=\"outlined\"\r\n size=\"small\"\r\n value={title}\r\n onChange={(e) => setTitle(e.target.value)}\r\n sx={{ input: { color: 'white' }, label: { color: 'rgba(255,255,255,0.7)' }, '& .MuiOutlinedInput-root': { '& fieldset': { borderColor: 'rgba(255,255,255,0.3)' } } }}\r\n />\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n <TextField\r\n label=\"Banner Color\"\r\n variant=\"outlined\"\r\n size=\"small\"\r\n value={bannerColor}\r\n onChange={(e) => setBannerColor(e.target.value)}\r\n placeholder=\"#HEX or linear-gradient(...)\"\r\n sx={{ flex: 1, input: { color: 'white' }, label: { color: 'rgba(255,255,255,0.7)' }, '& .MuiOutlinedInput-root': { '& fieldset': { borderColor: 'rgba(255,255,255,0.3)' } } }}\r\n />\r\n <Tooltip title=\"Eye Dropper\">\r\n <IconButton \r\n size=\"small\" \r\n onClick={handleEyeDropper}\r\n sx={{ color: 'white', bgcolor: 'rgba(255,255,255,0.1)', '&:hover': { bgcolor: 'rgba(255,255,255,0.2)' } }}\r\n >\r\n <ColorizeIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Tooltip>\r\n <input\r\n type=\"color\"\r\n value={bannerColor.startsWith('#') ? bannerColor : '#1976d2'}\r\n onChange={(e) => setBannerColor(e.target.value)}\r\n style={{ width: '40px', height: '40px', padding: 0, border: 'none', background: 'transparent', cursor: 'pointer' }}\r\n />\r\n </Box>\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n <Button \r\n variant=\"contained\" \r\n size=\"small\" \r\n fullWidth \r\n onClick={updateImages}\r\n >\r\n Update Images\r\n </Button>\r\n </Box>\r\n </Box>\r\n\r\n {/* VISUAL PREVIEW */}\r\n <Box\r\n sx={{\r\n width: '100%',\r\n height: 'auto',\r\n maxHeight: '250px',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n opacity: 0.8\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={desktopBanner}\r\n alt={title}\r\n sx={{\r\n width: '100%',\r\n height: 'auto',\r\n objectFit: 'contain',\r\n }}\r\n />\r\n </Box>\r\n\r\n <Grid\r\n display=\"flex\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n paddingTop=\"3px\"\r\n paddingBottom=\"3px\"\r\n sx={{ gap: 1.5, flexWrap: 'wrap' }}\r\n >\r\n {/* Placeholder for Stats (not editable here as per instructions) */}\r\n <Box sx={{ px: 1.5, py: 0.5, color: \"rgba(255,255,255,0.5)\", bgcolor: \"rgba(0,0,0,0.4)\", borderRadius: 2, border: \"1px dashed rgba(255,255,255,0.2)\" }}>\r\n Stats Placeholder\r\n </Box>\r\n\r\n {generateTagsDisplay(initialValue.eventTag)}\r\n\r\n {links.map((link, index) => (\r\n <Box\r\n key={index}\r\n sx={{\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n px: 1.5,\r\n py: 0.5,\r\n color: \"#fff\",\r\n bgcolor: \"rgba(0,0,0,0.7)\",\r\n borderRadius: 2,\r\n boxShadow: \"0 8px 16px rgba(0,0,0,0.25), 0 2px 4px rgba(0,0,0,0.15)\",\r\n border: \"1px solid rgba(255,255,255,0.25)\",\r\n backdropFilter: \"blur(6px)\",\r\n fontWeight: 700,\r\n letterSpacing: 0.2,\r\n }}\r\n >\r\n {link.text}\r\n <Box sx={{ ml: 1, display: 'flex' }}>\r\n <Tooltip title=\"Edit Link\">\r\n <IconButton size=\"small\" onClick={() => openEditLink(index)} sx={{ color: 'white', p: 0.2 }}>\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip title=\"Remove Link\">\r\n <IconButton size=\"small\" onClick={() => removeLink(index)} sx={{ color: 'error.light', p: 0.2 }}>\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </Tooltip>\r\n </Box>\r\n </Box>\r\n ))}\r\n\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n startIcon={<AddIcon />}\r\n onClick={() => setLinkToEdit({ index: -1, text: \"\", url: \"\" })}\r\n sx={{\r\n color: 'white',\r\n borderColor: 'rgba(255,255,255,0.5)',\r\n borderRadius: 2,\r\n '&:hover': { borderColor: 'white', bgcolor: 'rgba(255,255,255,0.1)' }\r\n }}\r\n >\r\n Add Link\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n\r\n {/* ACTION BUTTONS */}\r\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', gap: 2, mt: 2 }}>\r\n <Button onClick={onCancel} color=\"inherit\" disabled={isSaving}>Cancel</Button>\r\n <Button \r\n onClick={handleSave} \r\n variant=\"contained\" \r\n color=\"primary\" \r\n disabled={isSaving}\r\n startIcon={isSaving ? <CircularProgress size={20} color=\"inherit\" /> : null}\r\n >\r\n {isSaving ? \"Saving...\" : \"Save Changes\"}\r\n </Button>\r\n </Box>\r\n\r\n {/* LINK EDIT DIALOG */}\r\n <Dialog open={linkToEdit !== null} onClose={() => setLinkToEdit(null)}>\r\n <DialogTitle>{linkToEdit?.index === -1 ? \"Add Link\" : \"Edit Link\"}</DialogTitle>\r\n <DialogContent>\r\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, pt: 1, width: '400px' }}>\r\n <TextField\r\n label=\"Link Text\"\r\n fullWidth\r\n value={linkToEdit?.text || \"\"}\r\n onChange={(e) => setLinkToEdit(prev => prev ? { ...prev, text: e.target.value } : null)}\r\n />\r\n <TextField\r\n label=\"Link URL\"\r\n fullWidth\r\n value={linkToEdit?.url || \"\"}\r\n onChange={(e) => setLinkToEdit(prev => prev ? { ...prev, url: e.target.value } : null)}\r\n />\r\n </Box>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => setLinkToEdit(null)}>Cancel</Button>\r\n <Button onClick={saveEditedLink} variant=\"contained\">Confirm</Button>\r\n </DialogActions>\r\n </Dialog>\r\n </Box>\r\n );\r\n}","\"use client\"\r\nimport React, { useState } from \"react\";\r\nimport {Card, CardContent, Typography, Button} from \"@mui/material\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport { useEventEdit } from \"./editMode/EventEditContext\";\r\nimport EventBasicInfoEdit from \"./editMode/EventBasicInfoEdit\";\r\n\r\nexport type EventBasicInfoProps = {\r\n locationId: string,\r\n description?: string,\r\n startingDate?: Date | string,\r\n endingDate?: Date | string,\r\n timeInfo?: string,\r\n timezone?: string\r\n}\r\n\r\nexport const CANDIDATE_TIMEZONES = [\r\n \"America/New_York\",\r\n \"America/Chicago\",\r\n \"America/Denver\",\r\n \"America/Los_Angeles\",\r\n \"America/Anchorage\",\r\n \"America/Adak\",\r\n \"Pacific/Honolulu\",\r\n \"UTC\"\r\n];\r\n\r\nexport default function EventBasicInfo(props: EventBasicInfoProps) {\r\n const { isOwner, updateEvent, event } = useEventEdit();\r\n const [isEditing, setIsEditing] = useState(false);\r\n\r\n // Fallback to context if props are not provided\r\n const description = props.description ?? event?.description ?? \"\";\r\n const startingDate = props.startingDate ?? event?.startingDate;\r\n const endingDate = props.endingDate ?? event?.endingDate;\r\n const timeInfo = props.timeInfo ?? event?.date ?? \"\";\r\n const timezone = props.timezone ?? event?.timezone ?? \"UTC\";\r\n\r\n if (isEditing) {\r\n return (\r\n <EventBasicInfoEdit\r\n initialValue={{\r\n description: description,\r\n startingDate: typeof startingDate === 'string' ? startingDate : startingDate?.toISOString(),\r\n endingDate: typeof endingDate === 'string' ? endingDate : endingDate?.toISOString(),\r\n date: timeInfo,\r\n timezone: timezone\r\n }}\r\n onCancel={() => setIsEditing(false)}\r\n onSave={async (payload) => {\r\n const success = await updateEvent(payload);\r\n if (success) {\r\n setIsEditing(false);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <EventBasicInfoView\r\n {...props}\r\n description={description}\r\n startingDate={startingDate}\r\n endingDate={endingDate}\r\n timeInfo={timeInfo}\r\n timezone={timezone}\r\n isOwner={isOwner}\r\n onEdit={() => setIsEditing(true)}\r\n />\r\n );\r\n}\r\n\r\ntype EventBasicInfoViewProps = {\r\n locationId: string;\r\n description: string;\r\n startingDate?: Date | string;\r\n endingDate?: Date | string;\r\n timeInfo: string;\r\n timezone: string;\r\n isOwner: boolean;\r\n onEdit: () => void;\r\n};\r\n\r\nfunction EventBasicInfoView({description, locationId, startingDate, endingDate, timeInfo, timezone, isOwner, onEdit} : EventBasicInfoViewProps) {\r\n return (\r\n <Grid sx={{ position: 'relative' }}>\r\n <Card style={{\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))',\r\n }}>\r\n <CardContent>\r\n {isOwner && (\r\n <Box sx={{ display: 'flex', justifyContent: 'flex-end' }}>\r\n <Button size=\"small\" onClick={onEdit} variant=\"outlined\">Edit</Button>\r\n </Box>\r\n )}\r\n {generateTimeInfo(timeInfo, timezone || \"UTC\", startingDate, endingDate)}\r\n <Typography variant={\"h5\"} paddingTop={2}>\r\n About:\r\n </Typography>\r\n <Typography sx={{whiteSpace: 'pre-wrap'}} paddingTop={1}>\r\n {description}\r\n </Typography>\r\n {getLocation(locationId)}\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n )\r\n}\r\n\r\n\r\nconst generateTimeInfo = function (timeInfo: string, timezone: string, startingDate?: Date | string, endingDate?: Date | string) {\r\n\r\n const formatDateTime = (dateInput: Date | string) => {\r\n const d = typeof dateInput === 'string' ? new Date(dateInput) : dateInput;\r\n if (!d || isNaN(d.getTime())) return \"\";\r\n\r\n try {\r\n return new Intl.DateTimeFormat('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n timeZone: timezone,\r\n timeZoneName: 'shortGeneric'\r\n }).format(d).replace(',', ' @');\r\n } catch (e) {\r\n // Fallback for invalid timezones\r\n return d.toUTCString();\r\n }\r\n }\r\n\r\n let rangeText: string | null = null;\r\n if (startingDate && endingDate) {\r\n rangeText = `From ${formatDateTime(startingDate)}\\nUntil ${formatDateTime(endingDate)}`;\r\n } else if (startingDate) {\r\n rangeText = `starting ${formatDateTime(startingDate)}`;\r\n } else if (endingDate) {\r\n rangeText = `until ${formatDateTime(endingDate)}`;\r\n }\r\n\r\n return (\r\n <Box sx={{ mt: 2 }}>\r\n {rangeText && (\r\n <Typography variant={\"body1\"} fontSize={\"x-large\"} fontWeight={\"bold\"} sx={{whiteSpace:\"pre-wrap\"}}>\r\n {rangeText}\r\n </Typography>\r\n )}\r\n {timeInfo && (\r\n <Box sx={{ mt: 1 }}>\r\n <Typography variant={\"h5\"}>\r\n Hours of Operation:\r\n </Typography>\r\n <Typography variant={\"body1\"} sx={{whiteSpace:\"pre-wrap\"}}>\r\n {timeInfo}\r\n </Typography>\r\n </Box>\r\n )}\r\n </Box>\r\n )\r\n}\r\n\r\n\r\n/*\r\n DUMMY FUNCTIONS -- these relate heavily to sensitive data, so the functions below are simply placeholders\r\n */\r\n\r\nconst getLocation = function(locationId: string) {\r\n return (<Box sx={{\r\n width: '100%',\r\n p: 1.5,\r\n borderRadius: 2,\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(180, 180,180, 1), rgba(225, 225, 225, 0.8))',\r\n mt: 2\r\n }}>\r\n Location Data goes here\r\n </Box>\r\n )\r\n}","\"use client\"\r\nimport React, { useState } from \"react\";\r\nimport { \r\n Box, \r\n Button, \r\n TextField, \r\n Grid, \r\n Card, \r\n CardContent, \r\n Typography, \r\n IconButton, \r\n Tooltip, \r\n Select, \r\n MenuItem, \r\n FormControl, \r\n InputLabel,\r\n CircularProgress \r\n} from \"@mui/material\";\r\nimport CancelIcon from \"@mui/icons-material/Cancel\";\r\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\r\nimport { CANDIDATE_TIMEZONES } from \"../EventBasicInfo\";\r\n\r\nexport type EventBasicInfoEditPayload = {\r\n description: string;\r\n startingDate?: string;\r\n endingDate?: string;\r\n date: string; // timeInfo\r\n timezone: string;\r\n};\r\n\r\ntype EventBasicInfoEditProps = {\r\n initialValue: EventBasicInfoEditPayload;\r\n onCancel: () => void;\r\n onSave: (payload: Partial<EventBasicInfoEditPayload>) => Promise<void> | void;\r\n};\r\n\r\nexport default function EventBasicInfoEdit({\r\n initialValue,\r\n onCancel,\r\n onSave,\r\n }: EventBasicInfoEditProps) {\r\n\r\n // Helper to get YYYY-MM-DDThh:mm wall time for a specific timezone\r\n const toWallTimeISO = (dateInput: string | undefined, timeZone: string) => {\r\n if (!dateInput) return \"\";\r\n const d = new Date(dateInput);\r\n if (isNaN(d.getTime())) return \"\";\r\n\r\n const parts = new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric', month: '2-digit', day: '2-digit',\r\n hour: '2-digit', minute: '2-digit', hour12: false,\r\n timeZone: timeZone\r\n }).formatToParts(d);\r\n \r\n const f = (type: string) => parts.find(p => p.type === type)?.value;\r\n // Some environments might return 24 for hour 0 if hour12 is false, but usually 00.\r\n // Also handle the order of parts.\r\n const year = f('year');\r\n const month = f('month');\r\n const day = f('day');\r\n let hour = f('hour');\r\n if (hour === '24') hour = '00';\r\n const minute = f('minute');\r\n\r\n return `${year}-${month}-${day}T${hour}:${minute}`;\r\n };\r\n\r\n // Helper to combine wall time + timezone into UTC ISO string\r\n const toUTCISOString = (wallTime: string, timeZone: string) => {\r\n if (!wallTime) return undefined;\r\n \r\n // We need to find the offset for this wall time in the target timezone.\r\n const d = new Date(wallTime + \":00Z\"); \r\n \r\n const parts = new Intl.DateTimeFormat('en-US', {\r\n timeZone: timeZone,\r\n timeZoneName: 'longOffset'\r\n }).formatToParts(d);\r\n \r\n const offsetPart = parts.find(p => p.type === 'timeZoneName')?.value || \"GMT\";\r\n const offset = offsetPart.replace('GMT', ''); \r\n \r\n const isoWithOffset = `${wallTime}:00${offset || \"+00:00\"}`;\r\n return new Date(isoWithOffset).toISOString();\r\n };\r\n\r\n const [description, setDescription] = useState(initialValue.description);\r\n const [timezone, setTimezone] = useState(initialValue.timezone);\r\n const [startingDate, setStartingDate] = useState(toWallTimeISO(initialValue.startingDate, initialValue.timezone));\r\n const [endingDate, setEndingDate] = useState(toWallTimeISO(initialValue.endingDate, initialValue.timezone));\r\n const [timeInfo, setTimeInfo] = useState(initialValue.date);\r\n const [isSaving, setIsSaving] = useState(false);\r\n\r\n const handleSave = async () => {\r\n setIsSaving(true);\r\n try {\r\n const patch: Partial<EventBasicInfoEditPayload> = {};\r\n\r\n if (description !== initialValue.description) patch.description = description;\r\n if (timeInfo !== initialValue.date) patch.date = timeInfo;\r\n if (timezone !== initialValue.timezone) patch.timezone = timezone;\r\n\r\n if (startingDate !== toWallTimeISO(initialValue.startingDate, timezone) || timezone !== initialValue.timezone) {\r\n patch.startingDate = toUTCISOString(startingDate, timezone);\r\n }\r\n\r\n if (endingDate !== toWallTimeISO(initialValue.endingDate, timezone) || timezone !== initialValue.timezone) {\r\n patch.endingDate = toUTCISOString(endingDate, timezone);\r\n }\r\n\r\n if (Object.keys(patch).length > 0) {\r\n await onSave(patch);\r\n } else {\r\n onCancel();\r\n }\r\n } catch (error) {\r\n console.error(\"Failed to save basic info changes\", error);\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n };\r\n\r\n return (\r\n <Card sx={{\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))',\r\n border: '2px dashed rgba(25,118,210,0.5)',\r\n width: '100%'\r\n }}>\r\n <CardContent sx={{ position: 'relative' }}>\r\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1, gap: 1 }}>\r\n <Tooltip title=\"Cancel\">\r\n <IconButton size=\"small\" onClick={onCancel} color=\"error\" disabled={isSaving}>\r\n <CancelIcon />\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip title=\"Apply Changes\">\r\n <IconButton size=\"small\" onClick={handleSave} color=\"primary\" disabled={isSaving}>\r\n {isSaving ? <CircularProgress size={24} /> : <CheckCircleIcon />}\r\n </IconButton>\r\n </Tooltip>\r\n </Box>\r\n\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant={\"body1\"} fontSize={\"x-large\"} fontWeight={\"bold\"} sx={{ mb: 1 }}>\r\n Event Dates & Times:\r\n </Typography>\r\n <Grid container spacing={2}>\r\n <Grid size={{ xs: 12, sm: 4 }}>\r\n <TextField\r\n fullWidth\r\n label=\"Starting Date\"\r\n type=\"datetime-local\"\r\n size=\"small\"\r\n value={startingDate}\r\n onChange={(e) => setStartingDate(e.target.value)}\r\n InputLabelProps={{ shrink: true }}\r\n />\r\n </Grid>\r\n <Grid size={{ xs: 12, sm: 4 }}>\r\n <TextField\r\n fullWidth\r\n label=\"Ending Date\"\r\n type=\"datetime-local\"\r\n size=\"small\"\r\n value={endingDate}\r\n onChange={(e) => setEndingDate(e.target.value)}\r\n InputLabelProps={{ shrink: true }}\r\n />\r\n </Grid>\r\n <Grid size={{ xs: 12, sm: 4 }}>\r\n <FormControl fullWidth size=\"small\">\r\n <InputLabel>Display Timezone</InputLabel>\r\n <Select\r\n label=\"Display Timezone\"\r\n value={timezone}\r\n onChange={(e) => setTimezone(e.target.value)}\r\n >\r\n {CANDIDATE_TIMEZONES.map(tz => (\r\n <MenuItem key={tz} value={tz}>{tz}</MenuItem>\r\n ))}\r\n </Select>\r\n </FormControl>\r\n </Grid>\r\n </Grid>\r\n\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant={\"h5\"}>\r\n Hours of Operation:\r\n </Typography>\r\n <TextField\r\n fullWidth\r\n multiline\r\n variant=\"standard\"\r\n placeholder=\"e.g. Mon-Fri 9am-5pm\"\r\n value={timeInfo}\r\n onChange={(e) => setTimeInfo(e.target.value)}\r\n sx={{ mt: 1 }}\r\n />\r\n </Box>\r\n </Box>\r\n\r\n <Typography variant={\"h5\"} paddingTop={2}>\r\n About:\r\n </Typography>\r\n <TextField\r\n fullWidth\r\n multiline\r\n variant=\"standard\"\r\n value={description}\r\n onChange={(e) => setDescription(e.target.value)}\r\n sx={{\r\n paddingTop: 1,\r\n '& .MuiInputBase-root': {\r\n lineHeight: 1.5,\r\n whiteSpace: 'pre-wrap'\r\n }\r\n }}\r\n />\r\n\r\n <Box sx={{\r\n mt: 2,\r\n width: '100%',\r\n p: 1.5,\r\n borderRadius: 2,\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(180, 180,180, 1), rgba(225, 225, 225, 0.8))',\r\n color: 'rgba(0,0,0,0.5)',\r\n border: '1px dashed rgba(0,0,0,0.2)'\r\n }}>\r\n Location Data (Not Editable)\r\n </Box>\r\n </CardContent>\r\n </Card>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../src/components/EventPage/editMode/EventEditContext.tsx","../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/components/EventPage/editMode/EventBannerEdit.tsx","../../src/components/EventPage/EventBasicInfo.tsx","../../src/components/EventPage/editMode/EventBasicInfoEdit.tsx"],"names":["jsx","useState","jsxs","Card","CardContent","Box","Tooltip","IconButton","CircularProgress","Typography","Grid","TextField"],"mappings":"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","file":"editMode.mjs","sourcesContent":["\"use client\"\r\nimport React, { createContext, useContext, ReactNode, useState, useEffect } from \"react\";\r\nimport { EventEditContextValue, EventDetails } from \"@/types/event\";\r\n\r\ntype ExtendedEventEditContextValue = EventEditContextValue & {\r\n event: EventDetails | null;\r\n};\r\n\r\n/**\r\n * Default Values for stability\r\n */\r\nconst defaultValue: ExtendedEventEditContextValue = {\r\n isOwner: false,\r\n updateEvent: async () => false,\r\n updateImages: () => {},\r\n event: null,\r\n}\r\n\r\n/**\r\n * Default call (safe fallback)\r\n * Components using this without a provider will behave as non-owner.\r\n */\r\nconst EventEditContext = createContext<ExtendedEventEditContextValue>(defaultValue);\r\n\r\n/**\r\n * Provider props\r\n */\r\ntype EventEditProviderProps = {\r\n value?: Partial<EventEditContextValue>;\r\n initialEvent: EventDetails;\r\n children: ReactNode;\r\n};\r\n\r\n/**\r\n * Provider component\r\n */\r\nexport function EventEditProvider({\r\n value,\r\n initialEvent,\r\n children,\r\n }: EventEditProviderProps) {\r\n const [event, setEvent] = useState<EventDetails>(initialEvent);\r\n\r\n // Update internal state if initialEvent changes (e.g. from parent fetch)\r\n useEffect(() => {\r\n setEvent(initialEvent);\r\n }, [initialEvent]);\r\n\r\n const handleUpdateEvent = async (patch: Partial<EventDetails>) => {\r\n if (value?.updateEvent) {\r\n const result = value.updateEvent(patch);\r\n \r\n // Handle both Promise<boolean> and void/boolean return\r\n if (result instanceof Promise) {\r\n const success = await result;\r\n if (success) {\r\n setEvent(prev => ({ ...prev, ...patch }));\r\n }\r\n return success;\r\n } else {\r\n // If it's a boolean, use it. If void, assume true.\r\n const success = result === false ? false : true;\r\n if (success) {\r\n setEvent(prev => ({ ...prev, ...patch }));\r\n }\r\n return success;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * automatically fill in default values if data is missing or incomplete\r\n */\r\n const mergedValue: ExtendedEventEditContextValue = {\r\n ...defaultValue,\r\n ...value,\r\n event,\r\n updateEvent: handleUpdateEvent,\r\n }\r\n\r\n return (\r\n <EventEditContext.Provider value={mergedValue}>\r\n {children}\r\n </EventEditContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * Hook for consuming context\r\n */\r\nexport function useEventEdit(): ExtendedEventEditContextValue {\r\n const context = useContext(EventEditContext);\r\n\r\n // Optional guard (useful during development)\r\n if (!context) {\r\n throw new Error(\"useEventEdit must be used within an EventEditProvider\");\r\n }\r\n\r\n return context;\r\n}","import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[], options: { showEventTag?: boolean, eventTagId?: number } = {}) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const { showEventTag = false, eventTagId } = options;\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n // Sort tags: event tag (if shown) first, then \"Organizer Run\", then \"Display Only\", then others\r\n const sortedTags = [...validTags].sort((a, b) => {\r\n // Handle event tag priority if enabled\r\n if (showEventTag && eventTagId !== undefined) {\r\n if (a.id === eventTagId && b.id === eventTagId) return 0;\r\n if (a.id === eventTagId) return -1;\r\n if (b.id === eventTagId) return 1;\r\n }\r\n\r\n const priorityOrder = [\"Organizer Run\", \"Display Only\"];\r\n const aIndex = priorityOrder.indexOf(a.label);\r\n const bIndex = priorityOrder.indexOf(b.label);\r\n\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== -1) return -1;\r\n if (bIndex !== -1) return 1;\r\n return 0;\r\n });\r\n\r\n return sortedTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","\"use client\"\r\nimport React, { useState } from \"react\";\r\nimport { useEventEdit } from \"./EventEditContext\";\r\nimport type { EventBannerEditPayload } from \"../EventBanner\";\r\nimport { \r\n Box, \r\n Button, \r\n Grid, \r\n TextField, \r\n IconButton, \r\n Tooltip, \r\n Dialog, \r\n DialogTitle, \r\n DialogContent, \r\n DialogActions,\r\n CircularProgress \r\n} from \"@mui/material\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport AddIcon from \"@mui/icons-material/Add\";\r\nimport ColorizeIcon from \"@mui/icons-material/Colorize\";\r\nimport { generateTagsDisplay } from \"@/components/shared/TagComponents\";\r\n\r\ntype EventBannerEditProps = {\r\n initialValue: EventBannerEditPayload;\r\n onCancel: () => void;\r\n onSave: (payload: Partial<EventBannerEditPayload>) => Promise<void> | void;\r\n};\r\n\r\ntype LinkEditState = {\r\n index: number;\r\n text: string;\r\n url: string;\r\n} | null;\r\n\r\nexport default function EventBannerEdit({\r\n initialValue,\r\n onCancel,\r\n onSave,\r\n }: EventBannerEditProps) {\r\n const { updateImages } = useEventEdit();\r\n const [title, setTitle] = useState(initialValue.title);\r\n const [bannerColor, setBannerColor] = useState(initialValue.bannerColor || \"\");\r\n const [desktopBanner, setDesktopBanner] = useState(initialValue.bannerUrl.desktop);\r\n const [mobileBanner, setMobileBanner] = useState(initialValue.bannerUrl.mobile || \"\");\r\n const [links, setLinks] = useState(initialValue.links);\r\n const [linkToEdit, setLinkToEdit] = useState<LinkEditState>(null);\r\n const [isSaving, setIsSaving] = useState(false);\r\n\r\n const backgroundColor = bannerColor || \"linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))\";\r\n\r\n const handleSave = async () => {\r\n setIsSaving(true);\r\n try {\r\n const patch: Partial<EventBannerEditPayload> = {};\r\n\r\n if (title !== initialValue.title) {\r\n patch.title = title;\r\n }\r\n\r\n const currentBannerColor = bannerColor || undefined;\r\n const initialBannerColor = initialValue.bannerColor || undefined;\r\n if (currentBannerColor !== initialBannerColor) {\r\n patch.bannerColor = currentBannerColor;\r\n }\r\n\r\n const currentMobile = mobileBanner || undefined;\r\n const initialMobile = initialValue.bannerUrl.mobile || undefined;\r\n if (desktopBanner !== initialValue.bannerUrl.desktop || currentMobile !== initialMobile) {\r\n patch.bannerUrl = {\r\n desktop: desktopBanner,\r\n mobile: currentMobile,\r\n };\r\n }\r\n\r\n // Deep comparison for links\r\n if (JSON.stringify(links) !== JSON.stringify(initialValue.links)) {\r\n patch.links = links;\r\n }\r\n\r\n if (Object.keys(patch).length > 0) {\r\n await onSave(patch);\r\n } else {\r\n onCancel(); // Nothing changed\r\n }\r\n } catch (error) {\r\n console.error(\"Failed to save banner changes\", error);\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n };\r\n\r\n const removeLink = (index: number) => {\r\n setLinks(links.filter((_, i) => i !== index));\r\n };\r\n\r\n const openEditLink = (index: number) => {\r\n setLinkToEdit({\r\n index,\r\n text: links[index].text,\r\n url: links[index].url\r\n });\r\n };\r\n\r\n const saveEditedLink = () => {\r\n if (linkToEdit) {\r\n const newLinks = [...links];\r\n if (linkToEdit.index === -1) {\r\n newLinks.push({ text: linkToEdit.text, url: linkToEdit.url });\r\n } else {\r\n newLinks[linkToEdit.index] = { text: linkToEdit.text, url: linkToEdit.url };\r\n }\r\n setLinks(newLinks);\r\n setLinkToEdit(null);\r\n }\r\n };\r\n\r\n const handleEyeDropper = async () => {\r\n if (!(window as any).EyeDropper) {\r\n alert(\"EyeDropper API is not supported in this browser\");\r\n return;\r\n }\r\n const eyeDropper = new (window as any).EyeDropper();\r\n try {\r\n const result = await eyeDropper.open();\r\n setBannerColor(result.sRGBHex);\r\n } catch (e) {\r\n console.log(\"EyeDropper cancelled or failed\", e);\r\n }\r\n };\r\n\r\n return (\r\n <Box sx={{ position: 'relative', width: '100%' }}>\r\n <Grid\r\n sx={{\r\n background: backgroundColor,\r\n paddingTop: \"8px\",\r\n position: 'relative',\r\n border: '2px dashed rgba(255,255,255,0.5)',\r\n borderRadius: 1\r\n }}\r\n >\r\n {/* SETTINGS OVERLAY */}\r\n <Box sx={{ \r\n position: 'absolute', \r\n top: 8, \r\n left: 8, \r\n zIndex: 10, \r\n display: 'flex', \r\n flexDirection: 'column', \r\n gap: 1,\r\n bgcolor: 'rgba(0,0,0,0.5)',\r\n p: 1,\r\n borderRadius: 1,\r\n width: '300px'\r\n }}>\r\n <TextField\r\n label=\"Title\"\r\n variant=\"outlined\"\r\n size=\"small\"\r\n value={title}\r\n onChange={(e) => setTitle(e.target.value)}\r\n sx={{ input: { color: 'white' }, label: { color: 'rgba(255,255,255,0.7)' }, '& .MuiOutlinedInput-root': { '& fieldset': { borderColor: 'rgba(255,255,255,0.3)' } } }}\r\n />\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n <TextField\r\n label=\"Banner Color\"\r\n variant=\"outlined\"\r\n size=\"small\"\r\n value={bannerColor}\r\n onChange={(e) => setBannerColor(e.target.value)}\r\n placeholder=\"#HEX or linear-gradient(...)\"\r\n sx={{ flex: 1, input: { color: 'white' }, label: { color: 'rgba(255,255,255,0.7)' }, '& .MuiOutlinedInput-root': { '& fieldset': { borderColor: 'rgba(255,255,255,0.3)' } } }}\r\n />\r\n <Tooltip title=\"Eye Dropper\">\r\n <IconButton \r\n size=\"small\" \r\n onClick={handleEyeDropper}\r\n sx={{ color: 'white', bgcolor: 'rgba(255,255,255,0.1)', '&:hover': { bgcolor: 'rgba(255,255,255,0.2)' } }}\r\n >\r\n <ColorizeIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Tooltip>\r\n <input\r\n type=\"color\"\r\n value={bannerColor.startsWith('#') ? bannerColor : '#1976d2'}\r\n onChange={(e) => setBannerColor(e.target.value)}\r\n style={{ width: '40px', height: '40px', padding: 0, border: 'none', background: 'transparent', cursor: 'pointer' }}\r\n />\r\n </Box>\r\n <Box sx={{ display: 'flex', gap: 1 }}>\r\n <Button \r\n variant=\"contained\" \r\n size=\"small\" \r\n fullWidth \r\n onClick={updateImages}\r\n >\r\n Update Images\r\n </Button>\r\n </Box>\r\n </Box>\r\n\r\n {/* VISUAL PREVIEW */}\r\n <Box\r\n sx={{\r\n width: '100%',\r\n height: 'auto',\r\n maxHeight: '250px',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n opacity: 0.8\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={desktopBanner}\r\n alt={title}\r\n sx={{\r\n width: '100%',\r\n height: 'auto',\r\n objectFit: 'contain',\r\n }}\r\n />\r\n </Box>\r\n\r\n <Grid\r\n display=\"flex\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n paddingTop=\"3px\"\r\n paddingBottom=\"3px\"\r\n sx={{ gap: 1.5, flexWrap: 'wrap' }}\r\n >\r\n {/* Placeholder for Stats (not editable here as per instructions) */}\r\n <Box sx={{ px: 1.5, py: 0.5, color: \"rgba(255,255,255,0.5)\", bgcolor: \"rgba(0,0,0,0.4)\", borderRadius: 2, border: \"1px dashed rgba(255,255,255,0.2)\" }}>\r\n Stats Placeholder\r\n </Box>\r\n\r\n {generateTagsDisplay(initialValue.eventTag)}\r\n\r\n {links.map((link, index) => (\r\n <Box\r\n key={index}\r\n sx={{\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n px: 1.5,\r\n py: 0.5,\r\n color: \"#fff\",\r\n bgcolor: \"rgba(0,0,0,0.7)\",\r\n borderRadius: 2,\r\n boxShadow: \"0 8px 16px rgba(0,0,0,0.25), 0 2px 4px rgba(0,0,0,0.15)\",\r\n border: \"1px solid rgba(255,255,255,0.25)\",\r\n backdropFilter: \"blur(6px)\",\r\n fontWeight: 700,\r\n letterSpacing: 0.2,\r\n }}\r\n >\r\n {link.text}\r\n <Box sx={{ ml: 1, display: 'flex' }}>\r\n <Tooltip title=\"Edit Link\">\r\n <IconButton size=\"small\" onClick={() => openEditLink(index)} sx={{ color: 'white', p: 0.2 }}>\r\n <EditIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip title=\"Remove Link\">\r\n <IconButton size=\"small\" onClick={() => removeLink(index)} sx={{ color: 'error.light', p: 0.2 }}>\r\n <DeleteIcon fontSize=\"inherit\" />\r\n </IconButton>\r\n </Tooltip>\r\n </Box>\r\n </Box>\r\n ))}\r\n\r\n <Button\r\n variant=\"outlined\"\r\n size=\"small\"\r\n startIcon={<AddIcon />}\r\n onClick={() => setLinkToEdit({ index: -1, text: \"\", url: \"\" })}\r\n sx={{\r\n color: 'white',\r\n borderColor: 'rgba(255,255,255,0.5)',\r\n borderRadius: 2,\r\n '&:hover': { borderColor: 'white', bgcolor: 'rgba(255,255,255,0.1)' }\r\n }}\r\n >\r\n Add Link\r\n </Button>\r\n </Grid>\r\n </Grid>\r\n\r\n {/* ACTION BUTTONS */}\r\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', gap: 2, mt: 2 }}>\r\n <Button onClick={onCancel} color=\"inherit\" disabled={isSaving}>Cancel</Button>\r\n <Button \r\n onClick={handleSave} \r\n variant=\"contained\" \r\n color=\"primary\" \r\n disabled={isSaving}\r\n startIcon={isSaving ? <CircularProgress size={20} color=\"inherit\" /> : null}\r\n >\r\n {isSaving ? \"Saving...\" : \"Save Changes\"}\r\n </Button>\r\n </Box>\r\n\r\n {/* LINK EDIT DIALOG */}\r\n <Dialog open={linkToEdit !== null} onClose={() => setLinkToEdit(null)}>\r\n <DialogTitle>{linkToEdit?.index === -1 ? \"Add Link\" : \"Edit Link\"}</DialogTitle>\r\n <DialogContent>\r\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, pt: 1, width: '400px' }}>\r\n <TextField\r\n label=\"Link Text\"\r\n fullWidth\r\n value={linkToEdit?.text || \"\"}\r\n onChange={(e) => setLinkToEdit(prev => prev ? { ...prev, text: e.target.value } : null)}\r\n />\r\n <TextField\r\n label=\"Link URL\"\r\n fullWidth\r\n value={linkToEdit?.url || \"\"}\r\n onChange={(e) => setLinkToEdit(prev => prev ? { ...prev, url: e.target.value } : null)}\r\n />\r\n </Box>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => setLinkToEdit(null)}>Cancel</Button>\r\n <Button onClick={saveEditedLink} variant=\"contained\">Confirm</Button>\r\n </DialogActions>\r\n </Dialog>\r\n </Box>\r\n );\r\n}","\"use client\"\r\nimport React, { useState } from \"react\";\r\nimport {Card, CardContent, Typography, Button} from \"@mui/material\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport { useEventEdit } from \"./editMode/EventEditContext\";\r\nimport EventBasicInfoEdit from \"./editMode/EventBasicInfoEdit\";\r\n\r\nexport type EventBasicInfoProps = {\r\n locationId: string,\r\n description?: string,\r\n startingDate?: Date | string,\r\n endingDate?: Date | string,\r\n timeInfo?: string,\r\n timezone?: string\r\n}\r\n\r\nexport const CANDIDATE_TIMEZONES = [\r\n \"America/New_York\",\r\n \"America/Chicago\",\r\n \"America/Denver\",\r\n \"America/Los_Angeles\",\r\n \"America/Anchorage\",\r\n \"America/Adak\",\r\n \"Pacific/Honolulu\",\r\n \"UTC\"\r\n];\r\n\r\nexport default function EventBasicInfo(props: EventBasicInfoProps) {\r\n const { isOwner, updateEvent, event } = useEventEdit();\r\n const [isEditing, setIsEditing] = useState(false);\r\n\r\n // Fallback to context if props are not provided\r\n const description = props.description ?? event?.description ?? \"\";\r\n const startingDate = props.startingDate ?? event?.startingDate;\r\n const endingDate = props.endingDate ?? event?.endingDate;\r\n const timeInfo = props.timeInfo ?? event?.date ?? \"\";\r\n const timezone = props.timezone ?? event?.timezone ?? \"UTC\";\r\n\r\n if (isEditing) {\r\n return (\r\n <EventBasicInfoEdit\r\n initialValue={{\r\n description: description,\r\n startingDate: typeof startingDate === 'string' ? startingDate : startingDate?.toISOString(),\r\n endingDate: typeof endingDate === 'string' ? endingDate : endingDate?.toISOString(),\r\n date: timeInfo,\r\n timezone: timezone\r\n }}\r\n onCancel={() => setIsEditing(false)}\r\n onSave={async (payload) => {\r\n const success = await updateEvent(payload);\r\n if (success) {\r\n setIsEditing(false);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <EventBasicInfoView\r\n {...props}\r\n description={description}\r\n startingDate={startingDate}\r\n endingDate={endingDate}\r\n timeInfo={timeInfo}\r\n timezone={timezone}\r\n isOwner={isOwner}\r\n onEdit={() => setIsEditing(true)}\r\n />\r\n );\r\n}\r\n\r\ntype EventBasicInfoViewProps = {\r\n locationId: string;\r\n description: string;\r\n startingDate?: Date | string;\r\n endingDate?: Date | string;\r\n timeInfo: string;\r\n timezone: string;\r\n isOwner: boolean;\r\n onEdit: () => void;\r\n};\r\n\r\nfunction EventBasicInfoView({description, locationId, startingDate, endingDate, timeInfo, timezone, isOwner, onEdit} : EventBasicInfoViewProps) {\r\n return (\r\n <Grid sx={{ position: 'relative' }}>\r\n <Card style={{\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))',\r\n }}>\r\n <CardContent>\r\n {isOwner && (\r\n <Box sx={{ display: 'flex', justifyContent: 'flex-end' }}>\r\n <Button size=\"small\" onClick={onEdit} variant=\"outlined\">Edit</Button>\r\n </Box>\r\n )}\r\n {generateTimeInfo(timeInfo, timezone || \"UTC\", startingDate, endingDate)}\r\n <Typography variant={\"h5\"} paddingTop={2}>\r\n About:\r\n </Typography>\r\n <Typography sx={{whiteSpace: 'pre-wrap'}} paddingTop={1}>\r\n {description}\r\n </Typography>\r\n {getLocation(locationId)}\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n )\r\n}\r\n\r\n\r\nconst generateTimeInfo = function (timeInfo: string, timezone: string, startingDate?: Date | string, endingDate?: Date | string) {\r\n\r\n const formatDateTime = (dateInput: Date | string) => {\r\n const d = typeof dateInput === 'string' ? new Date(dateInput) : dateInput;\r\n if (!d || isNaN(d.getTime())) return \"\";\r\n\r\n try {\r\n return new Intl.DateTimeFormat('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n timeZone: timezone,\r\n timeZoneName: 'shortGeneric'\r\n }).format(d).replace(',', ' @');\r\n } catch (e) {\r\n // Fallback for invalid timezones\r\n return d.toUTCString();\r\n }\r\n }\r\n\r\n let rangeText: string | null = null;\r\n if (startingDate && endingDate) {\r\n rangeText = `From ${formatDateTime(startingDate)}\\nUntil ${formatDateTime(endingDate)}`;\r\n } else if (startingDate) {\r\n rangeText = `starting ${formatDateTime(startingDate)}`;\r\n } else if (endingDate) {\r\n rangeText = `until ${formatDateTime(endingDate)}`;\r\n }\r\n\r\n return (\r\n <Box sx={{ mt: 2 }}>\r\n {rangeText && (\r\n <Typography variant={\"body1\"} fontSize={\"x-large\"} fontWeight={\"bold\"} sx={{whiteSpace:\"pre-wrap\"}}>\r\n {rangeText}\r\n </Typography>\r\n )}\r\n {timeInfo && (\r\n <Box sx={{ mt: 1 }}>\r\n <Typography variant={\"h5\"}>\r\n Hours of Operation:\r\n </Typography>\r\n <Typography variant={\"body1\"} sx={{whiteSpace:\"pre-wrap\"}}>\r\n {timeInfo}\r\n </Typography>\r\n </Box>\r\n )}\r\n </Box>\r\n )\r\n}\r\n\r\n\r\n/*\r\n DUMMY FUNCTIONS -- these relate heavily to sensitive data, so the functions below are simply placeholders\r\n */\r\n\r\nconst getLocation = function(locationId: string) {\r\n return (<Box sx={{\r\n width: '100%',\r\n p: 1.5,\r\n borderRadius: 2,\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(180, 180,180, 1), rgba(225, 225, 225, 0.8))',\r\n mt: 2\r\n }}>\r\n Location Data goes here\r\n </Box>\r\n )\r\n}","\"use client\"\r\nimport React, { useState } from \"react\";\r\nimport { \r\n Box, \r\n Button, \r\n TextField, \r\n Grid, \r\n Card, \r\n CardContent, \r\n Typography, \r\n IconButton, \r\n Tooltip, \r\n Select, \r\n MenuItem, \r\n FormControl, \r\n InputLabel,\r\n CircularProgress \r\n} from \"@mui/material\";\r\nimport CancelIcon from \"@mui/icons-material/Cancel\";\r\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\r\nimport { CANDIDATE_TIMEZONES } from \"../EventBasicInfo\";\r\n\r\nexport type EventBasicInfoEditPayload = {\r\n description: string;\r\n startingDate?: string;\r\n endingDate?: string;\r\n date: string; // timeInfo\r\n timezone: string;\r\n};\r\n\r\ntype EventBasicInfoEditProps = {\r\n initialValue: EventBasicInfoEditPayload;\r\n onCancel: () => void;\r\n onSave: (payload: Partial<EventBasicInfoEditPayload>) => Promise<void> | void;\r\n};\r\n\r\nexport default function EventBasicInfoEdit({\r\n initialValue,\r\n onCancel,\r\n onSave,\r\n }: EventBasicInfoEditProps) {\r\n\r\n // Helper to get YYYY-MM-DDThh:mm wall time for a specific timezone\r\n const toWallTimeISO = (dateInput: string | undefined, timeZone: string) => {\r\n if (!dateInput) return \"\";\r\n const d = new Date(dateInput);\r\n if (isNaN(d.getTime())) return \"\";\r\n\r\n const parts = new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric', month: '2-digit', day: '2-digit',\r\n hour: '2-digit', minute: '2-digit', hour12: false,\r\n timeZone: timeZone\r\n }).formatToParts(d);\r\n \r\n const f = (type: string) => parts.find(p => p.type === type)?.value;\r\n // Some environments might return 24 for hour 0 if hour12 is false, but usually 00.\r\n // Also handle the order of parts.\r\n const year = f('year');\r\n const month = f('month');\r\n const day = f('day');\r\n let hour = f('hour');\r\n if (hour === '24') hour = '00';\r\n const minute = f('minute');\r\n\r\n return `${year}-${month}-${day}T${hour}:${minute}`;\r\n };\r\n\r\n // Helper to combine wall time + timezone into UTC ISO string\r\n const toUTCISOString = (wallTime: string, timeZone: string) => {\r\n if (!wallTime) return undefined;\r\n \r\n // We need to find the offset for this wall time in the target timezone.\r\n const d = new Date(wallTime + \":00Z\"); \r\n \r\n const parts = new Intl.DateTimeFormat('en-US', {\r\n timeZone: timeZone,\r\n timeZoneName: 'longOffset'\r\n }).formatToParts(d);\r\n \r\n const offsetPart = parts.find(p => p.type === 'timeZoneName')?.value || \"GMT\";\r\n const offset = offsetPart.replace('GMT', ''); \r\n \r\n const isoWithOffset = `${wallTime}:00${offset || \"+00:00\"}`;\r\n return new Date(isoWithOffset).toISOString();\r\n };\r\n\r\n const [description, setDescription] = useState(initialValue.description);\r\n const [timezone, setTimezone] = useState(initialValue.timezone);\r\n const [startingDate, setStartingDate] = useState(toWallTimeISO(initialValue.startingDate, initialValue.timezone));\r\n const [endingDate, setEndingDate] = useState(toWallTimeISO(initialValue.endingDate, initialValue.timezone));\r\n const [timeInfo, setTimeInfo] = useState(initialValue.date);\r\n const [isSaving, setIsSaving] = useState(false);\r\n\r\n const handleSave = async () => {\r\n setIsSaving(true);\r\n try {\r\n const patch: Partial<EventBasicInfoEditPayload> = {};\r\n\r\n if (description !== initialValue.description) patch.description = description;\r\n if (timeInfo !== initialValue.date) patch.date = timeInfo;\r\n if (timezone !== initialValue.timezone) patch.timezone = timezone;\r\n\r\n if (startingDate !== toWallTimeISO(initialValue.startingDate, timezone) || timezone !== initialValue.timezone) {\r\n patch.startingDate = toUTCISOString(startingDate, timezone);\r\n }\r\n\r\n if (endingDate !== toWallTimeISO(initialValue.endingDate, timezone) || timezone !== initialValue.timezone) {\r\n patch.endingDate = toUTCISOString(endingDate, timezone);\r\n }\r\n\r\n if (Object.keys(patch).length > 0) {\r\n await onSave(patch);\r\n } else {\r\n onCancel();\r\n }\r\n } catch (error) {\r\n console.error(\"Failed to save basic info changes\", error);\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n };\r\n\r\n return (\r\n <Card sx={{\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))',\r\n border: '2px dashed rgba(25,118,210,0.5)',\r\n width: '100%'\r\n }}>\r\n <CardContent sx={{ position: 'relative' }}>\r\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1, gap: 1 }}>\r\n <Tooltip title=\"Cancel\">\r\n <IconButton size=\"small\" onClick={onCancel} color=\"error\" disabled={isSaving}>\r\n <CancelIcon />\r\n </IconButton>\r\n </Tooltip>\r\n <Tooltip title=\"Apply Changes\">\r\n <IconButton size=\"small\" onClick={handleSave} color=\"primary\" disabled={isSaving}>\r\n {isSaving ? <CircularProgress size={24} /> : <CheckCircleIcon />}\r\n </IconButton>\r\n </Tooltip>\r\n </Box>\r\n\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant={\"body1\"} fontSize={\"x-large\"} fontWeight={\"bold\"} sx={{ mb: 1 }}>\r\n Event Dates & Times:\r\n </Typography>\r\n <Grid container spacing={2}>\r\n <Grid size={{ xs: 12, sm: 4 }}>\r\n <TextField\r\n fullWidth\r\n label=\"Starting Date\"\r\n type=\"datetime-local\"\r\n size=\"small\"\r\n value={startingDate}\r\n onChange={(e) => setStartingDate(e.target.value)}\r\n InputLabelProps={{ shrink: true }}\r\n />\r\n </Grid>\r\n <Grid size={{ xs: 12, sm: 4 }}>\r\n <TextField\r\n fullWidth\r\n label=\"Ending Date\"\r\n type=\"datetime-local\"\r\n size=\"small\"\r\n value={endingDate}\r\n onChange={(e) => setEndingDate(e.target.value)}\r\n InputLabelProps={{ shrink: true }}\r\n />\r\n </Grid>\r\n <Grid size={{ xs: 12, sm: 4 }}>\r\n <FormControl fullWidth size=\"small\">\r\n <InputLabel>Display Timezone</InputLabel>\r\n <Select\r\n label=\"Display Timezone\"\r\n value={timezone}\r\n onChange={(e) => setTimezone(e.target.value)}\r\n >\r\n {CANDIDATE_TIMEZONES.map(tz => (\r\n <MenuItem key={tz} value={tz}>{tz}</MenuItem>\r\n ))}\r\n </Select>\r\n </FormControl>\r\n </Grid>\r\n </Grid>\r\n\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant={\"h5\"}>\r\n Hours of Operation:\r\n </Typography>\r\n <TextField\r\n fullWidth\r\n multiline\r\n variant=\"standard\"\r\n placeholder=\"e.g. Mon-Fri 9am-5pm\"\r\n value={timeInfo}\r\n onChange={(e) => setTimeInfo(e.target.value)}\r\n sx={{ mt: 1 }}\r\n />\r\n </Box>\r\n </Box>\r\n\r\n <Typography variant={\"h5\"} paddingTop={2}>\r\n About:\r\n </Typography>\r\n <TextField\r\n fullWidth\r\n multiline\r\n variant=\"standard\"\r\n value={description}\r\n onChange={(e) => setDescription(e.target.value)}\r\n sx={{\r\n paddingTop: 1,\r\n '& .MuiInputBase-root': {\r\n lineHeight: 1.5,\r\n whiteSpace: 'pre-wrap'\r\n }\r\n }}\r\n />\r\n\r\n <Box sx={{\r\n mt: 2,\r\n width: '100%',\r\n p: 1.5,\r\n borderRadius: 2,\r\n boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)',\r\n background: 'linear-gradient(135deg, rgba(180, 180,180, 1), rgba(225, 225, 225, 0.8))',\r\n color: 'rgba(0,0,0,0.5)',\r\n border: '1px dashed rgba(0,0,0,0.2)'\r\n }}>\r\n Location Data (Not Editable)\r\n </Box>\r\n </CardContent>\r\n </Card>\r\n );\r\n}\r\n"]}
@@ -19,6 +19,7 @@ var Divider = require('@mui/material/Divider');
19
19
  var Typography4 = require('@mui/material/Typography');
20
20
  var Pagination = require('@mui/material/Pagination');
21
21
  var Avatar = require('@mui/material/Avatar');
22
+ var navigation = require('next/navigation');
22
23
  var Chip2 = require('@mui/material/Chip');
23
24
  var LinearProgress = require('@mui/material/LinearProgress');
24
25
  var PersonIcon = require('@mui/icons-material/Person');
@@ -141,12 +142,29 @@ function Chip({ tag, removeCallback }) {
141
142
  function generateTagsDisplay(tag) {
142
143
  return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
143
144
  }
144
- function renderTagsFromIds(ids, legalTags) {
145
+ function renderTagsFromIds(ids, legalTags, options = {}) {
145
146
  if (!ids || !legalTags || legalTags.length === 0) {
146
147
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
147
148
  }
149
+ const { showEventTag = false, eventTagId } = options;
148
150
  const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
149
- return validTags.map((tag) => generateTagsDisplay(tag));
151
+ const sortedTags = [...validTags].sort((a, b) => {
152
+ if (showEventTag && eventTagId !== void 0) {
153
+ if (a.id === eventTagId && b.id === eventTagId) return 0;
154
+ if (a.id === eventTagId) return -1;
155
+ if (b.id === eventTagId) return 1;
156
+ }
157
+ const priorityOrder = ["Organizer Run", "Display Only"];
158
+ const aIndex = priorityOrder.indexOf(a.label);
159
+ const bIndex = priorityOrder.indexOf(b.label);
160
+ if (aIndex !== -1 && bIndex !== -1) {
161
+ return aIndex - bIndex;
162
+ }
163
+ if (aIndex !== -1) return -1;
164
+ if (bIndex !== -1) return 1;
165
+ return 0;
166
+ });
167
+ return sortedTags.map((tag) => generateTagsDisplay(tag));
150
168
  }
151
169
  function EventBannerEdit({
152
170
  initialValue,
@@ -956,6 +974,9 @@ var generateLink = function(link) {
956
974
  link.text
957
975
  );
958
976
  };
977
+
978
+ // src/data/values.tsx
979
+ var DEFAULT_PROFILE_PIC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=";
959
980
  var NextGameLabel = ({ nextGameTime }) => {
960
981
  const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
961
982
  return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
@@ -969,17 +990,22 @@ var BaseSearchResultCard = ({
969
990
  onClick,
970
991
  children,
971
992
  icon,
972
- tags
993
+ tags,
994
+ showEventTag,
995
+ eventTagId
973
996
  }) => {
997
+ const router = navigation.useRouter();
974
998
  const handleClick = (e) => {
999
+ const url = `/${result.type}/${result.id}`;
1000
+ if (e.ctrlKey || e.metaKey || e.shiftKey) {
1001
+ e.stopPropagation();
1002
+ window.open(url, "_blank");
1003
+ return;
1004
+ }
975
1005
  if (onClick) {
976
- if (e.ctrlKey || e.metaKey || e.shiftKey) {
977
- e.stopPropagation();
978
- const url = `/${result.type}/${result.id}`;
979
- window.open(url, "_blank");
980
- } else {
981
- onClick(result.id);
982
- }
1006
+ onClick(result.id);
1007
+ } else {
1008
+ router.push(url);
983
1009
  }
984
1010
  };
985
1011
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -988,7 +1014,7 @@ var BaseSearchResultCard = ({
988
1014
  elevation: 6,
989
1015
  sx: {
990
1016
  width: "100%",
991
- cursor: onClick ? "pointer" : "default",
1017
+ cursor: "pointer",
992
1018
  boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)",
993
1019
  transition: "box-shadow 0.3s ease-in-out",
994
1020
  "&:hover": {
@@ -1010,7 +1036,7 @@ var BaseSearchResultCard = ({
1010
1036
  const text = full || "";
1011
1037
  return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
1012
1038
  })() }) : /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: result.description }),
1013
- result.tags && result.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
1039
+ result.tags && result.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags, { showEventTag, eventTagId }) })
1014
1040
  ] })
1015
1041
  ] })
1016
1042
  }
@@ -1052,7 +1078,7 @@ var PlayerResultCard = ({
1052
1078
  const playerIcon = /* @__PURE__ */ jsxRuntime.jsx(
1053
1079
  Avatar__default.default,
1054
1080
  {
1055
- src: result.imageUrl,
1081
+ src: result.imageUrl || DEFAULT_PROFILE_PIC,
1056
1082
  alt: result.title,
1057
1083
  sx: {
1058
1084
  width: 40,
@@ -1068,7 +1094,9 @@ var PlayerResultCard_default = PlayerResultCard;
1068
1094
  var TableResultCard = ({
1069
1095
  result,
1070
1096
  onClick,
1071
- tags
1097
+ tags,
1098
+ showEventTag,
1099
+ eventTagId
1072
1100
  }) => {
1073
1101
  const rawCapacity = result.capacity;
1074
1102
  const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
@@ -1086,40 +1114,51 @@ var TableResultCard = ({
1086
1114
  }
1087
1115
  }
1088
1116
  );
1089
- return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
1090
- /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
1091
- /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
1092
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Players:" }),
1093
- " ",
1094
- hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
1095
- ] }),
1096
- typeof hasDM === "boolean" && /* @__PURE__ */ jsxRuntime.jsx(
1097
- Chip2__default.default,
1098
- {
1099
- icon: hasDM ? /* @__PURE__ */ jsxRuntime.jsx(SupervisorAccountIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(PersonIcon__default.default, {}),
1100
- label: hasDM ? "DM Present" : "No DM",
1101
- color: hasDM ? "success" : "warning",
1102
- size: "small"
1103
- }
1104
- )
1105
- ] }),
1106
- /* @__PURE__ */ jsxRuntime.jsx(
1107
- LinearProgress__default.default,
1108
- {
1109
- variant: "determinate",
1110
- value: occupancyPercentage,
1111
- sx: {
1112
- height: 10,
1113
- borderRadius: 5,
1114
- backgroundColor: "#e0e0e0",
1115
- "& .MuiLinearProgress-bar": {
1116
- backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
1117
+ return /* @__PURE__ */ jsxRuntime.jsx(
1118
+ BaseSearchResultCard_default,
1119
+ {
1120
+ result,
1121
+ onClick,
1122
+ icon: tableIcon,
1123
+ tags,
1124
+ showEventTag,
1125
+ eventTagId,
1126
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
1127
+ /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
1128
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
1129
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Players:" }),
1130
+ " ",
1131
+ hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
1132
+ ] }),
1133
+ typeof hasDM === "boolean" && /* @__PURE__ */ jsxRuntime.jsx(
1134
+ Chip2__default.default,
1135
+ {
1136
+ icon: hasDM ? /* @__PURE__ */ jsxRuntime.jsx(SupervisorAccountIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(PersonIcon__default.default, {}),
1137
+ label: hasDM ? "DM Present" : "No DM",
1138
+ color: hasDM ? "success" : "warning",
1139
+ size: "small"
1140
+ }
1141
+ )
1142
+ ] }),
1143
+ /* @__PURE__ */ jsxRuntime.jsx(
1144
+ LinearProgress__default.default,
1145
+ {
1146
+ variant: "determinate",
1147
+ value: occupancyPercentage,
1148
+ sx: {
1149
+ height: 10,
1150
+ borderRadius: 5,
1151
+ backgroundColor: "#e0e0e0",
1152
+ "& .MuiLinearProgress-bar": {
1153
+ backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
1154
+ }
1155
+ }
1117
1156
  }
1118
- }
1119
- }
1120
- ),
1121
- hasDefinedCapacity && /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
1122
- ] }) });
1157
+ ),
1158
+ hasDefinedCapacity && /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
1159
+ ] })
1160
+ }
1161
+ );
1123
1162
  };
1124
1163
  var TableResultCard_default = TableResultCard;
1125
1164
  var EventResultCard = ({
@@ -1137,7 +1176,7 @@ var EventResultCard = ({
1137
1176
  try {
1138
1177
  const date = new Date(dateString);
1139
1178
  return date.toLocaleDateString("en-US", options);
1140
- } catch (error) {
1179
+ } catch (__) {
1141
1180
  return dateString;
1142
1181
  }
1143
1182
  };
@@ -1182,20 +1221,22 @@ var ResultsContainer = ({
1182
1221
  onResultClick,
1183
1222
  tags,
1184
1223
  pagination,
1185
- onPacketChange
1224
+ onPacketChange,
1225
+ showEventTag,
1226
+ eventTagId
1186
1227
  }) => {
1187
1228
  if (!results || results.length === 0 || !results.map) {
1188
1229
  return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
1189
1230
  }
1190
- const onPlayerClick = (id) => {
1191
- onResultClick == null ? void 0 : onResultClick(id, "player");
1192
- };
1193
- const onTableClick = (id) => {
1194
- onResultClick == null ? void 0 : onResultClick(id, "table");
1195
- };
1196
- const onEventClick = (id) => {
1197
- onResultClick == null ? void 0 : onResultClick(id, "event");
1198
- };
1231
+ const onPlayerClick = onResultClick ? (id) => {
1232
+ onResultClick(id, "player");
1233
+ } : void 0;
1234
+ const onTableClick = onResultClick ? (id) => {
1235
+ onResultClick(id, "table");
1236
+ } : void 0;
1237
+ const onEventClick = onResultClick ? (id) => {
1238
+ onResultClick(id, "event");
1239
+ } : void 0;
1199
1240
  const handlePacketChange = (_event, packet) => {
1200
1241
  onPacketChange == null ? void 0 : onPacketChange(packet);
1201
1242
  };
@@ -1229,7 +1270,9 @@ var ResultsContainer = ({
1229
1270
  {
1230
1271
  result,
1231
1272
  onClick: onTableClick,
1232
- tags
1273
+ tags,
1274
+ showEventTag,
1275
+ eventTagId
1233
1276
  },
1234
1277
  result.id
1235
1278
  );
@@ -1265,17 +1308,30 @@ var ScrollableResultsList = ({
1265
1308
  tags,
1266
1309
  maxHeight = 400,
1267
1310
  onResultClick,
1268
- emptyText
1311
+ emptyText,
1312
+ showEventTag,
1313
+ eventTagId
1269
1314
  }) => {
1270
1315
  const hasResults = Array.isArray(results) && results.length > 0;
1271
- return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { maxHeight, overflowY: "auto", pr: 1 }, children: hasResults ? /* @__PURE__ */ jsxRuntime.jsx(ResultsContainer_default, { results, onResultClick, tags }) : /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 2 }, children: emptyText || "No results to display." }) });
1316
+ return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { maxHeight, overflowY: "auto", pr: 1 }, children: hasResults ? /* @__PURE__ */ jsxRuntime.jsx(
1317
+ ResultsContainer_default,
1318
+ {
1319
+ results,
1320
+ onResultClick,
1321
+ tags,
1322
+ showEventTag,
1323
+ eventTagId
1324
+ }
1325
+ ) : /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 2 }, children: emptyText || "No results to display." }) });
1272
1326
  };
1273
1327
  var ScrollableResultsList_default = ScrollableResultsList;
1274
1328
  var TablesScrollableList = ({
1275
1329
  results,
1276
1330
  tags,
1277
1331
  maxHeight,
1278
- onResultClick
1332
+ onResultClick,
1333
+ showEventTag,
1334
+ eventTagId
1279
1335
  }) => {
1280
1336
  const tables = (results || []).filter((r) => (r == null ? void 0 : r.type) === "table");
1281
1337
  const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
@@ -1287,7 +1343,9 @@ var TablesScrollableList = ({
1287
1343
  maxHeight,
1288
1344
  onResultClick: (id, type) => {
1289
1345
  if (type === "table") handleClick(id);
1290
- }
1346
+ },
1347
+ showEventTag,
1348
+ eventTagId
1291
1349
  }
1292
1350
  );
1293
1351
  };