@mbpockets/shared-ui 0.1.21 → 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.
- package/dist/EventPage/editMode/index.cjs.map +1 -1
- package/dist/EventPage/editMode/index.d.cts +1 -1
- package/dist/EventPage/editMode/index.d.ts +1 -1
- package/dist/EventPage/editMode/index.mjs.map +1 -1
- package/dist/EventPage/editMode.cjs.map +1 -1
- package/dist/EventPage/editMode.d.cts +1 -1
- package/dist/EventPage/editMode.d.ts +1 -1
- package/dist/EventPage/editMode.mjs.map +1 -1
- package/dist/EventPage/index.cjs +122 -65
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.d.cts +1 -1
- package/dist/EventPage/index.d.ts +1 -1
- package/dist/EventPage/index.mjs +122 -65
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +122 -65
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.d.cts +4 -4
- package/dist/EventPage.d.ts +4 -4
- package/dist/EventPage.mjs +122 -65
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs +12 -8
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.mjs +12 -8
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs +12 -8
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.mjs +12 -8
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs +12 -8
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.mjs +12 -8
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs +12 -8
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.mjs +12 -8
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +38 -18
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +2 -1
- package/dist/SearchPage/Filters/index.d.ts +2 -1
- package/dist/SearchPage/Filters/index.mjs +34 -17
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +38 -18
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +13 -1
- package/dist/SearchPage/Filters.d.ts +13 -1
- package/dist/SearchPage/Filters.mjs +34 -17
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +87 -49
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +87 -49
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +87 -49
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +10 -3
- package/dist/SearchPage/Results.d.ts +10 -3
- package/dist/SearchPage/Results.mjs +87 -49
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +208 -101
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +2 -2
- package/dist/SearchPage/index.d.ts +2 -2
- package/dist/SearchPage/index.mjs +204 -100
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +208 -101
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +25 -3
- package/dist/SearchPage.d.ts +25 -3
- package/dist/SearchPage.mjs +204 -100
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/EditComponents/index.cjs +296 -0
- package/dist/TablePage/EditComponents/index.cjs.map +1 -0
- package/dist/TablePage/EditComponents/index.d.cts +3 -0
- package/dist/TablePage/EditComponents/index.d.ts +3 -0
- package/dist/TablePage/EditComponents/index.mjs +286 -0
- package/dist/TablePage/EditComponents/index.mjs.map +1 -0
- package/dist/TablePage/EditComponents.cjs +296 -0
- package/dist/TablePage/EditComponents.cjs.map +1 -0
- package/dist/TablePage/EditComponents.d.cts +21 -0
- package/dist/TablePage/EditComponents.d.ts +21 -0
- package/dist/TablePage/EditComponents.mjs +286 -0
- package/dist/TablePage/EditComponents.mjs.map +1 -0
- package/dist/TablePage/ModalProvider/index.cjs +59 -58
- package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
- package/dist/TablePage/ModalProvider/index.d.cts +1 -1
- package/dist/TablePage/ModalProvider/index.d.ts +1 -1
- package/dist/TablePage/ModalProvider/index.mjs +50 -59
- package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
- package/dist/TablePage/ModalProvider.cjs +59 -58
- package/dist/TablePage/ModalProvider.cjs.map +1 -1
- package/dist/TablePage/ModalProvider.d.cts +7 -2
- package/dist/TablePage/ModalProvider.d.ts +7 -2
- package/dist/TablePage/ModalProvider.mjs +50 -59
- package/dist/TablePage/ModalProvider.mjs.map +1 -1
- package/dist/TablePage/index.cjs +555 -331
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +3 -2
- package/dist/TablePage/index.d.ts +3 -2
- package/dist/TablePage/index.mjs +539 -320
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage/players/index.cjs +24 -4
- package/dist/TablePage/players/index.cjs.map +1 -1
- package/dist/TablePage/players/index.mjs +24 -4
- package/dist/TablePage/players/index.mjs.map +1 -1
- package/dist/TablePage/players.cjs +24 -4
- package/dist/TablePage/players.cjs.map +1 -1
- package/dist/TablePage/players.mjs +24 -4
- package/dist/TablePage/players.mjs.map +1 -1
- package/dist/TablePage.cjs +555 -331
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +4 -1
- package/dist/TablePage.d.ts +4 -1
- package/dist/TablePage.mjs +539 -320
- package/dist/TablePage.mjs.map +1 -1
- package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
- package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
- package/dist/index.cjs +890 -426
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +871 -423
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
- package/dist/mocks/EventDetails.cjs.map +1 -0
- package/dist/mocks/EventDetails.d.cts +6 -0
- package/dist/mocks/EventDetails.d.ts +6 -0
- package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
- package/dist/mocks/EventDetails.mjs.map +1 -0
- package/dist/mocks/Tables.cjs +1 -1
- package/dist/mocks/Tables.cjs.map +1 -1
- package/dist/mocks/Tables.mjs +1 -1
- package/dist/mocks/Tables.mjs.map +1 -1
- package/dist/mocks/Tags.cjs +200 -0
- package/dist/mocks/Tags.cjs.map +1 -1
- package/dist/mocks/Tags.mjs +200 -0
- package/dist/mocks/Tags.mjs.map +1 -1
- package/dist/mocks/index.cjs +202 -2
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +1 -1
- package/dist/mocks/index.d.ts +1 -1
- package/dist/mocks/index.mjs +202 -2
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +202 -2
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +1 -1
- package/dist/mocks.d.ts +1 -1
- package/dist/mocks.mjs +202 -2
- package/dist/mocks.mjs.map +1 -1
- package/dist/shared/index.cjs +327 -64
- package/dist/shared/index.cjs.map +1 -1
- package/dist/shared/index.d.cts +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.mjs +324 -64
- package/dist/shared/index.mjs.map +1 -1
- package/dist/shared.cjs +327 -64
- package/dist/shared.cjs.map +1 -1
- package/dist/shared.d.cts +25 -2
- package/dist/shared.d.ts +25 -2
- package/dist/shared.mjs +324 -64
- package/dist/shared.mjs.map +1 -1
- package/dist/types/event.d.cts +2 -3
- package/dist/types/event.d.ts +2 -3
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/search.d.cts +7 -1
- package/dist/types/search.d.ts +7 -1
- package/dist/types/tables.d.cts +1 -0
- package/dist/types/tables.d.ts +1 -0
- package/dist/types.d.cts +2 -2
- package/dist/types.d.ts +2 -2
- package/package.json +9 -2
- package/dist/TablePage/ModalProvider/index.css +0 -49
- package/dist/TablePage/ModalProvider/index.css.map +0 -1
- package/dist/TablePage/ModalProvider.css +0 -49
- package/dist/TablePage/ModalProvider.css.map +0 -1
- package/dist/TablePage/index.css +0 -49
- package/dist/TablePage/index.css.map +0 -1
- package/dist/TablePage.css +0 -49
- package/dist/TablePage.css.map +0 -1
- package/dist/index.css +0 -49
- package/dist/index.css.map +0 -1
- package/dist/mocks/EventDB.cjs.map +0 -1
- package/dist/mocks/EventDB.d.cts +0 -6
- package/dist/mocks/EventDB.d.ts +0 -6
- package/dist/mocks/EventDB.mjs.map +0 -1
- package/dist/shared/Modal/index.cjs +0 -64
- package/dist/shared/Modal/index.cjs.map +0 -1
- package/dist/shared/Modal/index.css +0 -49
- package/dist/shared/Modal/index.css.map +0 -1
- package/dist/shared/Modal/index.d.cts +0 -2
- package/dist/shared/Modal/index.d.ts +0 -2
- package/dist/shared/Modal/index.mjs +0 -62
- package/dist/shared/Modal/index.mjs.map +0 -1
- package/dist/shared/Modal.cjs +0 -64
- package/dist/shared/Modal.cjs.map +0 -1
- package/dist/shared/Modal.css +0 -49
- package/dist/shared/Modal.css.map +0 -1
- package/dist/shared/Modal.d.cts +0 -9
- package/dist/shared/Modal.d.ts +0 -9
- package/dist/shared/Modal.mjs +0 -62
- package/dist/shared/Modal.mjs.map +0 -1
- package/dist/shared/index.css +0 -49
- package/dist/shared/index.css.map +0 -1
- package/dist/shared.css +0 -49
- package/dist/shared.css.map +0 -1
|
@@ -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":["createContext","useState","useEffect","useContext","jsx","Fragment","jsxs","Box","Grid","TextField","Tooltip","IconButton","ColorizeIcon","Button","EditIcon","DeleteIcon","AddIcon","CircularProgress","Dialog","DialogTitle","DialogContent","DialogActions","Card","CardContent","CancelIcon","CheckCircleIcon","Typography","FormControl","InputLabel","Select","MenuItem"],"mappings":"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","file":"index.cjs","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":["createContext","useState","useEffect","useContext","jsx","Fragment","jsxs","Box","Grid","TextField","Tooltip","IconButton","ColorizeIcon","Button","EditIcon","DeleteIcon","AddIcon","CircularProgress","Dialog","DialogTitle","DialogContent","DialogActions","Card","CardContent","CancelIcon","CheckCircleIcon","Typography","FormControl","InputLabel","Select","MenuItem"],"mappings":"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","file":"index.cjs","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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { a as EventBannerEdit, d as EventBasicInfoEdit, e as EventBasicInfoEditPayload, f as EventEditProvider, u as useEventEdit } from '../../index-
|
|
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-
|
|
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';
|