@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.
- 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 +121 -63
- 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 +121 -63
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +121 -63
- 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 +121 -63
- 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 -48
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +87 -48
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +87 -48
- 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 -48
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +207 -99
- 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 +203 -98
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +207 -99
- 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 +203 -98
- 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 +889 -424
- 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 +870 -421
- 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
package/dist/TablePage.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/TablePage/GameTableProvider/GameTableContext.tsx","../src/components/TablePage/ModalProvider/ModalContext.ts","../src/components/shared/Modal/index.tsx","../src/components/TablePage/ModalProvider/ModalProvider.tsx","../src/components/TablePage/NextGameLabel.tsx","../src/components/shared/Chip.tsx","../src/components/shared/TagComponents.tsx","../src/components/TablePage/players/PlayerHighlightsCard.tsx","../src/components/TablePage/TableActionsBar.tsx","../src/components/shared/AutoResizingTextarea.tsx","../src/components/shared/TagEditor.tsx","../src/components/TablePage/TablePageLayout.tsx"],"names":["_a","jsx","jsxs","Fragment","Typography","Button","CardHeader","Image","Grid","useEffect","useState","Card","CardContent","useRef","useMemo"],"mappings":"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","file":"TablePage.mjs","sourcesContent":["\"use client\"\nimport React from \"react\";\nimport type { TableFormat } from \"@/types/table\";\n\ninterface IGameTableContextType {\n table: TableFormat;\n setTable: React.Dispatch<React.SetStateAction<TableFormat | null>>;\n}\n\ninterface IGameTableProviderProps {\n children: React.ReactNode;\n}\n\nconst GameTableContext = React.createContext<IGameTableContextType | undefined>(undefined);\n\nexport function GameTableProvider(props: IGameTableProviderProps) {\n return <>{props.children}</>;\n}\n\nexport function useGameTableContext(): IGameTableContextType {\n const context = React.useContext(GameTableContext);\n\n if (context) {\n return context;\n }\n\n throw new Error('useGameTableContext is deprecated in the package build. Pass table data through props instead.');\n}\n","\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: (content: ReactNode) => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"use client\"\r\nimport React, { useEffect, useRef } from \"react\";\r\nimport \"./style.css\";\r\n\r\ninterface IModalProps {\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Modal: React.FC<IModalProps> = ({ onClose, children }) => {\r\n const modalRef = useRef<HTMLDivElement>(null);\r\n const previouslyFocusedElement = useRef<HTMLElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (children) {\r\n previouslyFocusedElement.current = document.activeElement as HTMLElement;\r\n modalRef.current?.focus();\r\n }\r\n return () => {\r\n previouslyFocusedElement.current?.focus();\r\n }\r\n }, [children]);\r\n\r\n const handleOnClose = () => {\r\n onClose();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== 'Tab') return;\r\n\r\n const focusableElements = modalRef.current?.querySelectorAll<HTMLElement>(\r\n 'button, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n if (!focusableElements || focusableElements.length === 0) return;\r\n\r\n const first = focusableElements[0];\r\n const last = focusableElements[focusableElements.length - 1];\r\n\r\n if (e.shiftKey) {\r\n // shift + tab\r\n if (document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n }\r\n } else {\r\n // tab\r\n if (document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"modal-overlay\"\r\n onKeyDown={handleKeyDown}\r\n ref={modalRef}\r\n role=\"dialog\"\r\n tabIndex={-1}\r\n >\r\n <div className=\"modal-container\">\r\n <div className=\"modal-control-strip\">\r\n <button onClick={handleOnClose}>X</button>\r\n </div>\r\n <div className=\"modal-content\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","\"use client\";\n\nimport React, { ReactNode, useState } from \"react\";\r\nimport { ModalContext } from './ModalContext';\r\nimport Modal from \"@/components/shared/Modal\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n\r\n const showModal = (content: ReactNode) => setModalContent(content);\r\n const hideModal = () => setModalContent(null);\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n {modalContent && (\r\n <Modal onClose={hideModal}>\r\n {modalContent}\r\n </Modal>\r\n )}\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;","import React from 'react';\r\nimport { Typography } from '@mui/material';\r\n\r\ninterface NextGameCountdownProps {\r\n nextGameTime: string | Date;\r\n}\r\n\r\nconst NextGameLabel: React.FC<NextGameCountdownProps> = ({ nextGameTime }) => {\r\n const date = typeof nextGameTime === 'string' ? new Date(nextGameTime) : nextGameTime;\r\n \r\n return (\r\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 1, color: 'primary.main', fontWeight: 'bold' }}>\r\n Next Game: {date.toLocaleString()}\r\n </Typography>\r\n );\r\n};\r\n\r\nexport default NextGameLabel;\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\";\n\nimport Image from \"next/image\";\nimport Button from \"@mui/material/Button\";\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\nimport type { Player } from \"@/types/player\";\nimport type { Tag } from \"@/types/tag\";\n\nexport type PlayerHighlightsCardProps = {\n addToTable?: (player: Player) => void;\n allTags: Tag[];\n canChangeDungeonMaster: boolean;\n canEdit: boolean;\n handleAssignToDungeonMaster: (player: Player) => void;\n isWaitList?: boolean;\n player: Player;\n removeFromTable: (player: Player) => void;\n}\n\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\n const {\n allTags,\n canChangeDungeonMaster,\n canEdit,\n handleAssignToDungeonMaster,\n isWaitList,\n player,\n removeFromTable\n } = props;\n\n return (\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardContent>\n <Grid container spacing={2} direction=\"column\">\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || \"\"} width={64} />\n </Grid>\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n </Grid>\n {canEdit && (\n <Grid>\n <Button onClick={() => removeFromTable(player)}>\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\n </Button>\n {canChangeDungeonMaster && (\n <Button onClick={() => {\n handleAssignToDungeonMaster(player);\n removeFromTable(player);\n }}>\n <p>Assign to DungeonMaster</p>\n </Button>\n )}\n </Grid>\n )}\n </CardContent>\n </Card>\n )\n}\n\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\n return (\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\n <Grid container spacing={2} direction=\"column\">\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl ? player.imageUrl : \"\"} width={256} />\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n <Typography>{player.description}</Typography>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport Image from \"next/image\";\nimport Button from \"@mui/material/Button\";\nimport CardHeader from \"@mui/material/CardHeader\";\nimport { Grid, Typography } from \"@mui/material\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport ListIcon from \"@mui/icons-material/List\";\nimport SaveIcon from \"@mui/icons-material/Save\";\nimport { useModal } from \"@/components/TablePage/ModalProvider/ModalContext\";\nimport type { Player } from \"@/types/player\";\nimport type { TableStatus } from \"@/components/TablePage/types\";\n\nexport interface TableActionProps {\n isInEditMode: boolean;\n numPlayers: number;\n onDeleteTable?: () => void | Promise<void>;\n onEditModeChange: (nextValue: boolean) => void;\n onJoinWaitlist?: () => void | Promise<void>;\n onLeaveTable?: () => void | Promise<void>;\n onPromoteWaitlistPlayer?: (playerId: number) => void;\n onSave: () => void;\n slots: number;\n tableStatus: TableStatus;\n waitlistPlayers: Player[];\n}\n\nexport default function TableActionsBar(props: TableActionProps) {\n const { hideModal, showModal } = useModal();\n const {\n isInEditMode,\n numPlayers,\n onDeleteTable,\n onEditModeChange,\n onJoinWaitlist,\n onLeaveTable,\n onPromoteWaitlistPlayer,\n onSave,\n slots,\n tableStatus,\n waitlistPlayers,\n } = props;\n const {isOwner, isPlayer, isDM, onWaitlist} = tableStatus;\n\n const canEditTable = isOwner && !isInEditMode;\n const canSaveTable = isOwner && isInEditMode;\n const canViewWaitlist = isOwner || isDM || waitlistPlayers.length > 0;\n\n const renderPlayerWaitlistModalContent = (canMovePlayersToTable?: boolean): ReactNode => {\n if (waitlistPlayers.length === 0) {\n return <p>Waitlist is empty!</p>;\n }\n\n return (\n <div className=\"flex flex-col items-center\">\n <CardHeader slotProps={{title: {variant: \"h4\"}}} title=\"Waitlist Players: \"/>\n <ul className=\"gap-8\">\n {waitlistPlayers.map((player) => (\n <li\n className={`${canMovePlayersToTable ? 'bg-amber-100 cursor-pointer' : 'bg-gray-200'} mb-8 flex flex-row flex-start space-between justify-center items-center gap-3 p-2 rounded`}\n key={player.id}\n onClick={() => canMovePlayersToTable ? onPromoteWaitlistPlayer?.(player.id) : undefined}\n tabIndex={0}\n >\n <Image\n alt={player.username + \"'s profile pic\"}\n height={64}\n src={player.miniPic || \"\"}\n width={64}\n />\n <div>{player.username}</div>\n </li>\n ))}\n </ul>\n <button onClick={() => hideModal()}>close modal</button>\n </div>\n )\n }\n\n return (\n <Grid container direction=\"column\" spacing={1}>\n <Grid container direction=\"row\">\n <Typography color=\"white\" sx={{ textShadow:'4px 4px 6px rgba(0, 0, 0, 0.5)' }}>\n Players: {numPlayers} / {slots}\n </Typography>\n </Grid>\n\n <Grid container direction=\"row\">\n {!isOwner && !isPlayer && !isDM && !onWaitlist && (\n <Button onClick={() => onJoinWaitlist?.()} sx={buttonStyle}>\n Join Waitlist\n </Button>\n )}\n\n {!isOwner && (isPlayer || onWaitlist) && (\n <Button onClick={() => onLeaveTable?.()} sx={buttonStyle}>\n {onWaitlist ? \"Leave Waitlist\" : \"Leave Table\"}\n </Button>\n )}\n\n { canEditTable ? (\n <>\n <Button onClick={() => onEditModeChange(true)} sx={buttonStyle} endIcon={<EditIcon/>}>\n Edit\n </Button>\n {canViewWaitlist ? (\n <Button\n endIcon={<ListIcon />}\n onClick={() => showModal(renderPlayerWaitlistModalContent(false))}\n sx={buttonStyle}\n >\n View Waitlist\n </Button>\n ) : null}\n </>\n ) : canSaveTable ? (\n <>\n <Button onClick={onSave} sx={buttonStyle} endIcon={<SaveIcon/>}>\n Save\n </Button>\n <Button onClick={() => onEditModeChange(false)} sx={buttonStyle}>\n Cancel\n </Button>\n <Button\n endIcon={<ListIcon />}\n onClick={() => showModal(renderPlayerWaitlistModalContent(true))}\n sx={buttonStyle}\n >\n Edit Waitlist\n </Button>\n </>\n ) : null}\n\n { isOwner && (\n <Button onClick={() => onDeleteTable?.()} sx={buttonStyle} endIcon={<DeleteIcon/>}>\n Delete Table\n </Button>\n )}\n </Grid>\n </Grid>\n )\n}\n\nconst buttonStyle = {\n marginLeft: \"3px\",\n backgroundColor:\"blue\",\n color:\"white\",\n borderRadius:\"5px\",\n};\n","\"use client\"\r\n\r\nimport React, {Dispatch, SetStateAction, useEffect} from 'react';\r\n\r\ninterface IAutoResizingTextareaProps {\r\n isInEditMode: boolean;\r\n onChange: Dispatch<SetStateAction<string>>;\r\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\r\n value: string;\r\n}\r\n\r\nconst AutoResizingTextarea: React.FC<IAutoResizingTextareaProps> = (props: IAutoResizingTextareaProps) => {\r\n const { isInEditMode, onChange, textareaRef, value } = props;\r\n\r\n useEffect(() => {\r\n if (isInEditMode && textareaRef.current) {\r\n const textarea = textareaRef.current;\r\n\r\n textarea.style.height = 'auto';\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n }\r\n }, [isInEditMode, textareaRef, value]); // Run effect when entering edit mode or value changes\r\n\r\n return (\r\n <textarea\r\n ref={textareaRef}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n style={{\r\n backgroundColor: '#fffbea',\r\n overflow: 'hidden',\r\n resize: 'none',\r\n width: '100%'\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default AutoResizingTextarea;\r\n","\"use client\";\r\n\r\nimport React, { useMemo, useState } from \"react\";\r\nimport Autocomplete from \"@mui/material/Autocomplete\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardContent from \"@mui/material/CardContent\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Popper, { PopperProps } from \"@mui/material/Popper\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport interface TagEditorProps {\r\n title?: string;\r\n selectedTags: Tag[];\r\n possibleTags: Tag[];\r\n onToggleTag: (id: number) => void;\r\n}\r\n\r\nexport function TagEditor({\r\n title = \"Tags\",\r\n selectedTags,\r\n possibleTags,\r\n onToggleTag,\r\n}: TagEditorProps) {\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);\r\n\r\n const options = useMemo(\r\n () => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),\r\n [possibleTags]\r\n );\r\n\r\n return (\r\n <Grid container>\r\n <Grid size={{ xs: 12 }}>\r\n <Card>\r\n <CardHeader\r\n title={title}\r\n style={{\r\n background: \"linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))\",\r\n color: \"#FFFFFF\",\r\n fontSize: \"1.5rem\",\r\n textShadow: \"0px 3px 6px rgba(0, 0, 0, 0.5)\",\r\n }}\r\n />\r\n <CardContent>\r\n <div className=\"mt-2 flex flex-wrap gap-2\">\r\n {selectedTags.map((tag) => (\r\n <Chip\r\n key={tag.id}\r\n tag={tag}\r\n removeCallback={() => onToggleTag(tag.id)}\r\n />\r\n ))}\r\n </div>\r\n <Grid container spacing={3}>\r\n <Grid sx={{ marginTop: 3, width: \"100%\" }}>\r\n <Autocomplete\r\n key={selectedIds.join(\"-\")}\r\n options={options}\r\n filterOptions={(availableOptions, state) =>\r\n availableOptions\r\n .filter(\r\n (option) =>\r\n !selectedIds.includes(option.value) &&\r\n option.label.toLowerCase().includes(state.inputValue.toLowerCase())\r\n )\r\n .slice(0, 3)\r\n }\r\n value={null}\r\n inputValue={inputValue}\r\n onInputChange={(event, newInputValue) => {\r\n if (event && event.type === \"change\") {\r\n setInputValue(newInputValue);\r\n }\r\n }}\r\n onChange={(event, newValue) => {\r\n if (newValue) {\r\n onToggleTag(newValue.value);\r\n }\r\n setInputValue(\"\");\r\n }}\r\n slots={{ popper: CustomPopper }}\r\n renderInput={(params) => <TextField {...params} label=\"Select Tags\" />}\r\n />\r\n </Grid>\r\n </Grid>\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n );\r\n}\r\n\r\nconst CustomPopper = (props: PopperProps) => {\r\n return (\r\n <Popper\r\n {...props}\r\n modifiers={[\r\n {\r\n name: \"preventOverflow\",\r\n options: { boundary: \"viewport\" },\r\n },\r\n {\r\n name: \"offset\",\r\n options: { offset: [0, -10] },\r\n },\r\n ]}\r\n placement=\"top-start\"\r\n />\r\n );\r\n};\r\n","\"use client\";\n\nimport { JSX, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Box, Card, CardContent, CardHeader, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport AutoResizingTextarea from \"@/components/shared/AutoResizingTextarea\";\nimport { TagEditor, generateTagsDisplay } from \"@/components/shared\";\nimport { DMHighlightsCard, PlayerHighlightsCard } from \"@/components/TablePage/players/PlayerHighlightsCard\";\nimport TableActionsBar from \"@/components/TablePage/TableActionsBar\";\nimport type { Player } from \"@/types/player\";\nimport type { TableRecord } from \"@/types/tables\";\nimport type { Tag } from \"@/types/tag\";\nimport type { TablePageLayoutProps } from \"@/components/TablePage/types\";\n\nexport function TablePageLayout(props: TablePageLayoutProps) {\n const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers } = props;\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const [isTableInEditMode, setIsTableInEditMode] = useState(false);\n\n const [currentDescription, setCurrentDescription] = useState(table.description);\n const [currentDungeonMaster, setCurrentDungeonMaster] = useState(dungeonMaster);\n const [currentPlayers, setCurrentPlayers] = useState(players);\n const [currentShortDescription, setCurrentShortDescription] = useState(table.shortDescription);\n const [currentTitle, setCurrentTitle] = useState(table.title);\n const [currentWaitlistPlayers, setCurrentWaitlistPlayers] = useState(waitlistPlayers);\n const [currentTagIds, setCurrentTagIds] = useState<number[]>(table.tags ?? []);\n\n useEffect(() => {\n setCurrentDescription(table.description);\n setCurrentDungeonMaster(dungeonMaster);\n setCurrentPlayers(players);\n setCurrentShortDescription(table.shortDescription);\n setCurrentTitle(table.title);\n setCurrentWaitlistPlayers(waitlistPlayers);\n setCurrentTagIds(table.tags ?? []);\n }, [dungeonMaster, players, table, waitlistPlayers]);\n\n const currentTags = useMemo(\n () => allTags.filter((tag) => currentTagIds.includes(tag.id)),\n [allTags, currentTagIds]\n );\n\n const handleAssignToDungeonMaster = (newDungeonMaster: Player) => {\n setCurrentDungeonMaster(newDungeonMaster);\n };\n\n const handleRemovePlayerFromTable = (playerToRemove: Player): void => {\n setCurrentPlayers((prevState) => prevState.filter((player) => player.id !== playerToRemove.id));\n };\n\n const handlePromoteWaitlistPlayer = (playerIdToPromote: number) => {\n setCurrentWaitlistPlayers((prevWaitlist) => {\n const foundPlayer = prevWaitlist.find((player) => player.id === playerIdToPromote);\n if (!foundPlayer) {\n return prevWaitlist;\n }\n\n setCurrentPlayers((prevPlayers) => [...prevPlayers, foundPlayer]);\n return prevWaitlist.filter((player) => player.id !== playerIdToPromote);\n });\n };\n\n const handleToggleTag = (tagId: number) => {\n setCurrentTagIds((prevState) =>\n prevState.includes(tagId)\n ? prevState.filter((id) => id !== tagId)\n : [...prevState, tagId]\n );\n };\n\n const handleSaveTable = () => {\n const nextDraft: TableRecord = {\n ...table,\n description: currentDescription,\n dungeonMaster: String(currentDungeonMaster.id),\n players: currentPlayers.map((player) => player.id),\n shortDescription: currentShortDescription,\n tags: currentTagIds,\n title: currentTitle,\n waitlist: currentWaitlistPlayers.map((player) => player.id),\n };\n\n void onSaveDraft?.(nextDraft);\n setIsTableInEditMode(false);\n };\n\n return (\n <Card\n sx={{\n backgroundColor: isTableInEditMode ? \"lightsalmon\" : \"white\",\n borderRadius: \"5%\",\n p: 2,\n boxShadow: \"0px 8px 15px rgba(25, 118, 210, 0.3)\",\n }}\n >\n <Grid container direction=\"column\">\n <Grid\n container\n direction=\"column\"\n spacing={1}\n sx={{\n px: 2,\n py: 1.5,\n borderRadius: 2,\n background: \"linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))\",\n textShadow:'4px 4px 6px rgba(0, 0, 0, 0.5)'\n }}\n >\n <Box>\n {isTableInEditMode ? (\n <input\n onChange={(e) => setCurrentTitle(e.target.value)}\n style={{ backgroundColor: '#fffbea' }}\n tabIndex={0}\n type=\"text\"\n value={currentTitle}\n />\n ) : (\n <CardHeader\n title={currentTitle}\n sx={{\n p: 0,\n \"& .MuiCardHeader-title\": {\n color: \"white\",\n fontWeight: 700,\n },\n }}\n />\n )}\n </Box>\n\n {isTableInEditMode ? (\n <input\n onChange={(e) => setCurrentShortDescription(e.target.value)}\n style={{ backgroundColor: '#fffbea' }}\n tabIndex={0}\n type=\"text\"\n value={currentShortDescription}\n />\n ) : (\n <Typography sx={{ color: \"white\", opacity: 0.95 }}>\n {currentShortDescription}\n </Typography>\n )}\n\n <Grid container>\n {isTableInEditMode\n ? renderEditableTags(currentTags, allTags, handleToggleTag)\n : renderTags(currentTagIds, allTags)}\n </Grid>\n\n <TableActionsBar\n isInEditMode={isTableInEditMode}\n numPlayers={currentPlayers.length}\n onDeleteTable={onDeleteTable}\n onEditModeChange={setIsTableInEditMode}\n onJoinWaitlist={onJoinWaitlist}\n onLeaveTable={onLeaveTable}\n onPromoteWaitlistPlayer={handlePromoteWaitlistPlayer}\n onSave={handleSaveTable}\n slots={table.capacity || 0}\n tableStatus={tableStatus}\n waitlistPlayers={currentWaitlistPlayers}\n />\n </Grid>\n\n <Grid container spacing={2} sx={{ mt: 2 }}>\n <Grid size={{xs: 12, md:8}}>\n <Card sx={{ height: \"100%\" }}>\n <CardContent>\n {isTableInEditMode ? (\n <AutoResizingTextarea\n isInEditMode={isTableInEditMode}\n onChange={setCurrentDescription}\n textareaRef={textAreaRef}\n value={currentDescription}\n />\n ) : (\n <Typography sx={{ whiteSpace: \"pre-wrap\" }}>\n {currentDescription}\n </Typography>\n )}\n </CardContent>\n </Card>\n </Grid>\n\n <Grid size={{xs: 12, md:4}}>\n <DMHighlightsCard canEdit={isTableInEditMode} player={currentDungeonMaster} allTags={allTags} />\n\n <Card sx={{ height: \"100%\" }}>\n <CardHeader slotProps={{title: {variant: \"h4\"}}} title=\"Players: \"/>\n <CardContent>\n {currentPlayers.map((player) => (\n <PlayerHighlightsCard\n allTags={allTags}\n canChangeDungeonMaster={tableStatus.isOwner || tableStatus.isDM}\n canEdit={isTableInEditMode}\n handleAssignToDungeonMaster={handleAssignToDungeonMaster}\n key={player.id}\n player={player}\n removeFromTable={handleRemovePlayerFromTable}\n />\n ))}\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n </Grid>\n </Card>\n );\n}\n\nconst renderTags = function (\n tags: number[] | undefined,\n allTags: Tag[] | undefined\n): JSX.Element {\n if (!tags || !allTags) {\n return <></>;\n }\n return (\n <Grid container spacing={1} sx={{ pb: 1.5 }}>\n {tags.map((tagId) => {\n const tag = allTags.find((potentialTag) => tagId === potentialTag.id);\n return tag ? generateTagsDisplay(tag) : <></>;\n })}\n </Grid>\n );\n};\n\nconst renderEditableTags = function (\n selectedTags: Tag[],\n allTags: Tag[],\n onToggleTag: (tagId: number) => void\n): JSX.Element {\n return (\n <Grid size={{ xs: 12 }} sx={{ pb: 1.5 }}>\n <TagEditor\n title=\"Table Tags\"\n possibleTags={allTags.filter((tag) => tag.appliesTo?.tables)}\n selectedTags={selectedTags}\n onToggleTag={onToggleTag}\n />\n </Grid>\n );\n};\n\nexport default TablePageLayout;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/shared/NameGenerator.ts","../src/components/shared/Chip.tsx","../src/components/TablePage/EditComponents/TagSelector.tsx","../src/components/TablePage/EditComponents/EditTableDetailsForm.tsx","../src/components/TablePage/GameTableProvider/GameTableContext.tsx","../src/components/TablePage/ModalProvider/ModalContext.ts","../src/components/shared/TagComponents.tsx","../src/data/values.tsx","../src/components/TablePage/NextGameLabel.tsx","../src/components/shared/AutoResizingTextarea.tsx","../src/components/TablePage/players/PlayerHighlightsCard.tsx","../src/components/TablePage/TableActionsBar.tsx","../src/components/TablePage/TablePageLayout.tsx","../src/components/TablePage/ModalProvider/ModalProvider.tsx"],"names":["jsxs","Fragment","jsx","Grid","TextField","useState","React","Typography","Button","Image","EditIcon","useEffect","useMemo","Card","Box","CardHeader","CardContent","title","DialogActions","_a"],"mappings":"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","file":"TablePage.mjs","sourcesContent":["\r\nexport const getRandomTitle = () => {\r\n const randomPrefix = titlePrefixes[Math.random() * titlePrefixes.length | 0];\r\n const randomMiddle = tileMiddle[Math.random() * tileMiddle.length | 0];\r\n const randomSuffix = titleSuffixes[Math.random() * titleSuffixes.length | 0];\r\n return `${randomPrefix} ${randomMiddle} ${randomSuffix}`;\r\n}\r\n\r\nexport const getRandomTagline = () => taglines[Math.random() * taglines.length | 0];\r\n\r\n\r\nconst titlePrefixes = [\r\n \"The Knights of The\",\r\n \"The Fellowship of The\",\r\n \"The Order of The\",\r\n \"The Infamous\",\r\n \"The Legendary\",\r\n \"The Dubious\",\r\n \"The Sworn Guardians of The\",\r\n \"The Ancient Guild of The\",\r\n \"The Unstoppable\",\r\n \"The Misfit\",\r\n \"The Chaotic\",\r\n \"The Brave\",\r\n \"The Forgotten\",\r\n \"The Wandering\",\r\n \"The Noble Council of The\",\r\n \"The Dread Pirates of The\",\r\n \"The Honorable Society of The\",\r\n \"The Cursed\",\r\n \"The Unlikely Heroes of The\",\r\n \"The Elders of The\",\r\n \"The Seekers of The\",\r\n \"The Champions of The\",\r\n \"The Heralds of The\",\r\n \"The Disciples of The\",\r\n \"The Ragtag Band of The\",\r\n \"The Cult of The\",\r\n];\r\n\r\nconst tileMiddle = [\r\n \"Round\",\r\n \"Kitchen\",\r\n \"Deepest\",\r\n \"Sorcery\",\r\n \"Munchkin\",\r\n \"Shenanigan\",\r\n \"Secret\",\r\n \"Dungeon\",\r\n \"Fireside\",\r\n \"Tabletop\",\r\n \"Midnight\",\r\n \"Tavern\",\r\n \"Goblin\",\r\n \"Dragon\",\r\n \"Critical\",\r\n \"Natural Twenty\",\r\n \"Counterspell\",\r\n \"Nat One\",\r\n \"Cardboard\",\r\n \"Dice Tower\",\r\n \"Campaign\",\r\n \"Lore\",\r\n \"Awkward\",\r\n \"Unhinged\",\r\n \"Chaotic Neutral\",\r\n \"Homebrew\",\r\n \"Side Quest\",\r\n];\r\n\r\nconst titleSuffixes = [\r\n \"Table\",\r\n \"Dungeon\",\r\n \"Cave\",\r\n \"Crew\",\r\n \"Team\",\r\n \"League\",\r\n \"Horde\",\r\n \"Party\",\r\n \"Conclave\",\r\n \"Collective\",\r\n \"Alliance\",\r\n \"Syndicate\",\r\n \"Guild\",\r\n \"Cabal\",\r\n \"Council\",\r\n \"Expedition\",\r\n \"Enclave\",\r\n \"Consortium\",\r\n \"Troupe\",\r\n \"Vanguard\",\r\n \"Cohort\",\r\n \"Brotherhood\",\r\n \"Sisterhood\",\r\n \"Pantheon\",\r\n \"Assembly\",\r\n \"Coven\",\r\n];\r\n\r\nconst taglines = [\r\n \"Everyone is welcome!\",\r\n \"Looking for serious players.\",\r\n \"Get in nerds, we're gaming!\",\r\n \"If you aren't there, you're square.\",\r\n \"It will be legendary!\",\r\n \"Beginners welcome — we were all level 1 once.\",\r\n \"No experience necessary. Snacks encouraged.\",\r\n \"Roleplayers, board gamers, and chaos gremlins welcome.\",\r\n \"We don't metagame. Much.\",\r\n \"All alignments accepted. True Neutral gets the snacks.\",\r\n \"Where every session is a one-shot... until it isn't.\",\r\n \"Homebrew rules may apply.\",\r\n \"Warning: may contain excessive lore.\",\r\n \"Critical failures celebrated as much as critical hits.\",\r\n \"No powergamers. Okay, maybe one powergamer.\",\r\n \"We finish campaigns. (Eventually.)\",\r\n \"Veteran players seeking worthy companions.\",\r\n \"Casuals only — we're here for the vibes.\",\r\n \"Serious about fun, not about rules.\",\r\n \"Min-maxers need not apply.\",\r\n \"For those who read the rulebook... and those who definitely didn't.\",\r\n \"Roll for initiative. Arrive on time.\",\r\n \"Side quests are the main quest here.\",\r\n \"Chaotic good energy required.\",\r\n \"If you bring snacks, you can name the first NPC.\",\r\n \"We read the rulebook so you don't have to.\",\r\n \"Wargamers only — no take-backs, no mercy.\",\r\n \"Everyone welcome. Meeple provided.\",\r\n \"We always play the longest game on the shelf.\",\r\n \"Worker placement. Resource management. Existential dread.\",\r\n \"No phones at the table! We're here for the game.\",\r\n \"Someone always flips the table. Metaphorically. Usually.\",\r\n \"We have a designated rules lawyer. It's fine.\",\r\n \"Cooperative games only — we can't handle another Monopoly incident.\",\r\n \"Teaching time is half the fun!\",\r\n];\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}","import React, {useMemo, useState} from \"react\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Autocomplete from \"@mui/material/Autocomplete\";\r\nimport Chip from \"../../shared/Chip\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport function TagSelector({initialTagIDs, allTags, onTagChange}: {\r\n initialTagIDs: number[];\r\n allTags: Tag[];\r\n onTagChange: (tagIDs: number[]) => void;\r\n}) {\r\n const [tagList, updateTagList] = useState(initialTagIDs);\r\n const [inputValue, setInputValue] = useState(\"\");\r\n\r\n const toggleTag = (id: number) => tagList.find(t => t === id) ? removeTag(id) : addTag(id);\r\n const addTag = (id: number) => {\r\n const newList = [...tagList, id];\r\n updateTagList(newList);\r\n onTagChange(newList);\r\n };\r\n const removeTag = (id: number) => {\r\n const newList = tagList.filter(t => t !== id);\r\n updateTagList(newList);\r\n onTagChange(newList);\r\n }\r\n const selectedTags = useMemo(() => allTags.filter(tag => tagList.includes(tag.id)), [allTags, tagList]);\r\n const options = useMemo(\r\n () => allTags.map((tag) => ({ value: tag.id, label: tag.label })),\r\n [allTags]\r\n );\r\n\r\n return (\r\n <>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {selectedTags.map((tag) => (\r\n <Chip\r\n key={tag.id}\r\n tag={tag}\r\n removeCallback={() => toggleTag(tag.id)}\r\n />\r\n ))}\r\n </div>\r\n <Grid container spacing={3}>\r\n <Grid sx={{ marginTop: 3, width: \"100%\", minWidth: \"550px\" }}>\r\n <Autocomplete\r\n key={tagList.join(\"-\")}\r\n options={options}\r\n filterOptions={(availableOptions, state) =>\r\n availableOptions\r\n .filter(\r\n (option) =>\r\n !tagList.includes(option.value) &&\r\n option.label.toLowerCase().includes(state.inputValue.toLowerCase())\r\n )\r\n }\r\n value={null}\r\n inputValue={inputValue}\r\n onInputChange={(event, newInputValue) => {\r\n if (event && event.type === \"change\") {\r\n setInputValue(newInputValue);\r\n }\r\n }}\r\n onChange={(event, newValue) => {\r\n if (newValue) {\r\n toggleTag(newValue.value);\r\n }\r\n setInputValue(\"\");\r\n }}\r\n renderInput={(params) => <TextField {...params} label=\"Select Tags\" />}\r\n />\r\n </Grid>\r\n </Grid>\r\n </>\r\n );\r\n}\r\n","import React, {useState} from \"react\";\r\nimport {Box, Tooltip} from \"@mui/material\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport CasinoIcon from \"@mui/icons-material/Casino\";\r\nimport {getRandomTagline, getRandomTitle} from \"@/components/shared/NameGenerator\";\r\nimport {Tag} from \"@/types/tag\";\r\nimport {TagSelector} from \"./TagSelector\";\r\n\r\nexport function EditTableDetailsForm({initialTitle, initialSubtitle, onTitleChange, onSubtitleChange, allowEditingTitles, initialTagIDs, allTags, onTagChange}: {\r\n initialTitle: string;\r\n initialSubtitle: string;\r\n onTitleChange: (title: string) => void;\r\n onSubtitleChange: (subtitle: string) => void;\r\n allowEditingTitles?: boolean;\r\n onTagChange: (tagIDs: number[]) => void;\r\n initialTagIDs: number[],\r\n allTags: Tag[],\r\n}) {\r\n const [title, setTitle] = useState(initialTitle);\r\n const [subtitle, setSubtitle] = useState(initialSubtitle);\r\n const handleTitleChange = (newTitle: string) => {\r\n setTitle(newTitle);\r\n onTitleChange(newTitle);\r\n };\r\n\r\n const handleSubtitleChange = (newSubtitle: string) => {\r\n setSubtitle(newSubtitle);\r\n onSubtitleChange(newSubtitle);\r\n };\r\n\r\n return (\r\n <>\r\n {(allowEditingTitles && <Box className={\"flex flex-col gap-4 mb-8\"}>\r\n <Box className={\"inline-flex\"}>\r\n <TextField\r\n sx={{minWidth: \"400px\"}}\r\n label=\"Title\"\r\n onChange={(e) => handleTitleChange(e.target.value)}\r\n variant=\"filled\"\r\n value={title}\r\n />\r\n <Tooltip title=\"Randomize\">\r\n <CasinoIcon sx={{cursor: \"pointer\", alignSelf: \"center\", ml: 1}}\r\n onClick={() => handleTitleChange(getRandomTitle())}/>\r\n </Tooltip>\r\n </Box>\r\n <Box className={\"inline-flex min-w-96\"}>\r\n <TextField\r\n sx={{minWidth: \"400px\"}}\r\n label=\"Short Description or Tagline\"\r\n onChange={(e) => handleSubtitleChange(e.target.value)}\r\n variant=\"filled\"\r\n value={subtitle}\r\n />\r\n <Tooltip title=\"Randomize\">\r\n <CasinoIcon sx={{cursor: \"pointer\", alignSelf: \"center\", ml: 1}}\r\n onClick={() => handleSubtitleChange(getRandomTagline())}/>\r\n </Tooltip>\r\n </Box>\r\n </Box>)}\r\n\r\n <TagSelector initialTagIDs={initialTagIDs} allTags={allTags} onTagChange={onTagChange} />\r\n </>\r\n );\r\n}","\"use client\"\nimport React from \"react\";\nimport type { TableFormat } from \"@/types/table\";\n\ninterface IGameTableContextType {\n table: TableFormat;\n setTable: React.Dispatch<React.SetStateAction<TableFormat | null>>;\n}\n\ninterface IGameTableProviderProps {\n children: React.ReactNode;\n}\n\nconst GameTableContext = React.createContext<IGameTableContextType | undefined>(undefined);\n\nexport function GameTableProvider(props: IGameTableProviderProps) {\n return <>{props.children}</>;\n}\n\nexport function useGameTableContext(): IGameTableContextType {\n const context = React.useContext(GameTableContext);\n\n if (context) {\n return context;\n }\n\n throw new Error('useGameTableContext is deprecated in the package build. Pass table data through props instead.');\n}\n","\"use client\"\r\nimport { createContext, ReactNode, useContext } from \"react\";\r\n\r\nexport type ModalOptions = {\r\n acceptText?: string;\r\n onAccept?: () => void;\r\n onCancel?: () => void;\r\n}\r\n\r\ntype ModalContextType = {\r\n showModal: (content: ReactNode, title: string, options?: ModalOptions) => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const ModalContext = createContext<ModalContextType>({\r\n showModal: () => {},\r\n hideModal: () => {},\r\n});\r\n\r\nexport const useModal = () => useContext(ModalContext);","\"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","export function BlurbTitles() {\r\n const blurbTitles = new Map();\r\n blurbTitles.set(1, \"What’s your most epic tabletop moment?\");\r\n blurbTitles.set(2, \"What type of character do you dream of playing?\");\r\n blurbTitles.set(3, \"What kind of story are you most excited to be part of?\");\r\n blurbTitles.set(4, \"Which tabletop world would you want to live in?\");\r\n blurbTitles.set(5, \"If you could only play one tabletop game forever, what would it be?\");\r\n blurbTitles.set(6, \"What’s a fantasy or sci-fi world you love and would want to game in?\");\r\n blurbTitles.set(7, \"Who’s the most chaotic (or hilarious) player you've ever gamed with?\");\r\n blurbTitles.set(8, \"What motivates you to join a tabletop game: adventure, laughs, or something else?\");\r\n blurbTitles.set(9, \"What’s your weirdest in-game flex?\");\r\n blurbTitles.set(10, \"Which class or archetype are you drawn to—fighter, mage, rogue, healer, or wildcard?\");\r\n blurbTitles.set(11, \"What character did you have the most fun playing?\");\r\n blurbTitles.set(12, \"What kind of player are you: Min-maxer, storyteller, or chaos incarnate?\");\r\n blurbTitles.set(13, \"Describe the best campaign twist you’ve ever experienced.\");\r\n blurbTitles.set(14, \"What’s your guilty pleasure when it comes to character archetypes?\");\r\n blurbTitles.set(15, \"Who’s your favorite villain or antagonist you’ve faced in a campaign?\");\r\n blurbTitles.set(16, \"What’s the hardest decision your character ever had to make?\");\r\n blurbTitles.set(17, \"What’s the funniest tabletop memory you’ve ever had?\");\r\n blurbTitles.set(18, \"Ever had a tabletop game go completely off the rails? What happened?\");\r\n blurbTitles.set(19, \"Introduce us to your favorite homebrew rule!\");\r\n blurbTitles.set(20, \"What’s your favorite dice-rolling ritual or superstition?\");\r\n blurbTitles.set(21, \"What’s your go-to tabletop snack during sessions?\");\r\n blurbTitles.set(22, \"What’s the most creative solution you’ve ever come up with in a game?\");\r\n blurbTitles.set(23, \"What NPC or character from a campaign would you date IRL?\");\r\n blurbTitles.set(24, \"What’s your favorite tabletop rule or mechanic?\");\r\n blurbTitles.set(25, \"What’s the most emotional tabletop moment you’ve had?\");\r\n blurbTitles.set(26, \"What kind of story twist or epic moment would make you fall in love with the game?\");\r\n blurbTitles.set(27, \"What’s the most challenging yet rewarding NPC you've ever created?\");\r\n blurbTitles.set(28, \"How do you keep players on track without railroading your game?\");\r\n blurbTitles.set(29, \"What’s the most unexpected way your players solved a problem you designed?\");\r\n blurbTitles.set(30, \"What’s your favorite resource or tool for planning campaigns?\");\r\n blurbTitles.set(31, \"What’s the funniest way your players have broken your carefully-planned encounter?\");\r\n blurbTitles.set(32, \"What’s the most memorable villain or antagonist you’ve created?\");\r\n blurbTitles.set(33, \"How do you handle player conflict in your campaigns?\");\r\n blurbTitles.set(34, \"What’s your favorite homebrew rule to spice up your campaigns?\");\r\n blurbTitles.set(35, \"Have you ever scrapped a planned session because of something your players did?\");\r\n blurbTitles.set(36, \"What’s the most creative environment or setting you’ve designed for your players?\");\r\n\r\n return blurbTitles;\r\n}\r\n\r\nexport function PrivacyValues() {\r\n const privacyValues = new Map();\r\n privacyValues.set(1, \"private\");\r\n privacyValues.set(\"private\", 1);\r\n\r\n privacyValues.set(2, \"connection\");\r\n privacyValues.set(\"connection\",2);\r\n\r\n privacyValues.set(3, \"public\");\r\n privacyValues.set(\"public\", 3);\r\n\r\n privacyValues.set(4, \"table\");\r\n privacyValues.set(\"table\", 4);\r\n\r\n return privacyValues;\r\n}\r\n\r\nexport function PlayerTagLabels(): string[] {\r\n const tagTitles: string[] = [];\r\n\r\n tagTitles.push(\"girl gamer\");\r\n tagTitles.push(\"veteran\");\r\n tagTitles.push(\"new\");\r\n tagTitles.push(\"min-maxer\");\r\n tagTitles.push(\"role-player\");\r\n tagTitles.push(\"rules lawyer\");\r\n tagTitles.push(\"storyteller\");\r\n tagTitles.push(\"chaotic\");\r\n tagTitles.push(\"planner\");\r\n tagTitles.push(\"wildcard\");\r\n tagTitles.push(\"protector\");\r\n tagTitles.push(\"rogue-like\");\r\n tagTitles.push(\"power gamer\");\r\n tagTitles.push(\"thinker\");\r\n tagTitles.push(\"narrative\");\r\n tagTitles.push(\"homebrewer\");\r\n tagTitles.push(\"dungeon master\");\r\n tagTitles.push(\"world builder\");\r\n tagTitles.push(\"solver\");\r\n tagTitles.push(\"strategist\");\r\n tagTitles.push(\"dice lover\");\r\n tagTitles.push(\"performer\");\r\n tagTitles.push(\"casual\");\r\n tagTitles.push(\"character-focused\");\r\n tagTitles.push(\"team player\");\r\n tagTitles.push(\"mechanics\");\r\n tagTitles.push(\"adventurer\");\r\n tagTitles.push(\"collector\");\r\n tagTitles.push(\"problem solver\");\r\n tagTitles.push(\"innovator\");\r\n tagTitles.push(\"lorekeeper\");\r\n tagTitles.push(\"rule bender\");\r\n tagTitles.push(\"sandboxer\");\r\n tagTitles.push(\"cartographer\");\r\n tagTitles.push(\"loyalist\");\r\n tagTitles.push(\"wrangler\");\r\n tagTitles.push(\"moment maker\");\r\n tagTitles.push(\"jinxed roller\");\r\n tagTitles.push(\"lucky roller\");\r\n tagTitles.push(\"meticulous\");\r\n tagTitles.push(\"improviser\");\r\n tagTitles.push(\"tactician\");\r\n tagTitles.push(\"butterfly\");\r\n tagTitles.push(\"beginner\");\r\n tagTitles.push(\"voice actor\");\r\n tagTitles.push(\"multi-campaign\");\r\n tagTitles.push(\"starter\");\r\n tagTitles.push(\"forever DM\");\r\n tagTitles.push(\"finisher\");\r\n tagTitles.push(\"swapper\");\r\n tagTitles.push(\"meta-gamer\");\r\n tagTitles.push(\"specialist\");\r\n\r\n return tagTitles;\r\n}\r\n\r\n\r\nexport const FantasyNouns = [\r\n // Core D&D Classes\r\n \"Fighter\", \"Rogue\", \"Wizard\", \"Cleric\", \"Paladin\", \"Barbarian\", \"Ranger\", \"Sorcerer\", \"Bard\", \"Monk\", \"Warlock\", \"Druid\", \"Artificer\",\r\n\r\n // Fantasy Occupations\r\n \"Alchemist\", \"Blacksmith\", \"Knight\", \"Mage\", \"Mercenary\", \"Archer\", \"Scribe\", \"Healer\", \"Hunter\", \"Assassin\", \"Enchanter\",\r\n \"Miner\", \"Sailor\", \"Merchant\", \"Herbalist\", \"Cartographer\", \"Tailor\", \"Innkeeper\", \"Cook\", \"Scholar\",\r\n\r\n // Archetypes\r\n \"Adventurer\", \"Champion\", \"Warlord\", \"Outlaw\", \"Pilgrim\", \"Prophet\", \"Necromancer\", \"Witch\", \"Shaman\",\r\n \"Beastmaster\", \"Acolyte\", \"Spellblade\", \"Battlemage\", \"Blademaster\", \"Warpriest\", \"Berserker\", \"Elementalist\",\r\n\r\n // Fantasy Creatures/Beings\r\n \"Dragon\", \"Elf\", \"Dwarf\", \"Orc\", \"Goblin\", \"Gnome\", \"Tiefling\", \"Genasi\", \"Halfling\", \"Lich\", \"Vampire\", \"Werewolf\",\r\n \"Demon\", \"Angel\", \"Pixie\", \"Dryad\", \"Centaur\", \"Chimera\", \"Golem\", \"Fairy\", \"Troll\", \"Minotaur\", \"Kraken\",\r\n \"Griffin\", \"Phoenix\",\r\n\r\n // Fantasy Roles/Titles\r\n \"Archmage\", \"High Priestess\", \"King\", \"Queen\", \"Duke\", \"Duchess\", \"Emperor\", \"Empress\", \"Captain\", \"Seer\", \"Oracle\",\r\n \"Warden\", \"Guardian\", \"Watchman\", \"Hero\", \"Villain\", \"Herald\", \"Scout\", \"Envoy\",\r\n\r\n // Other Fantasy-Themed Nouns\r\n \"Spellcaster\", \"Summoner\", \"Conjurer\", \"Warrior\", \"Gladiator\", \"Pathfinder\", \"Explorer\", \"Tinkerer\", \"Shadowblade\",\r\n \"Dungeoneer\", \"Archon\", \"Mystic\", \"Sage\", \"Runemaster\", \"Smith\", \"Wanderer\", \"Wayfarer\", \"Avenger\", \"Defender\", \"Keeper\"\r\n];\r\n\r\nexport const FantasyAdjectives = [\r\n // Descriptive of Power/Strength\r\n \"Mighty\", \"Powerful\", \"Fierce\", \"Tough\", \"Armored\", \"Indomitable\", \"Savage\", \"Vengeful\", \"Heroic\", \"Valiant\",\r\n\r\n // Magical Features\r\n \"Enchanted\", \"Bewitched\", \"Magical\", \"Mystical\", \"Ethereal\", \"Arcane\", \"Spellbound\", \"Supernatural\", \"Runed\",\r\n\r\n // Personality/Appearance Traits\r\n \"Noble\", \"Gallant\", \"Cunning\", \"Crafty\", \"Shadowy\", \"Elegant\", \"Wise\", \"Shrewd\", \"Merciless\", \"Serene\",\r\n \"Infernal\", \"Wicked\", \"Pious\", \"Charming\", \"Loyal\", \"Treacherous\", \"Bold\", \"Cowardly\", \"Sly\",\r\n\r\n // Environment-Themed\r\n \"Cursed\", \"Blessed\", \"Haunted\", \"Frozen\", \"Burning\", \"Fiery\", \"Icy\", \"Stormy\", \"Sunlit\", \"Moonlit\",\r\n \"Dark\", \"Luminous\", \"Glistening\", \"Ancient\", \"Shattered\", \"Sacred\", \"Forbidden\", \"Hidden\", \"Lost\",\r\n \"Verdant\", \"Barren\",\r\n\r\n // Monster/Creature Traits\r\n \"Ferocious\", \"Ravenous\", \"Menacing\", \"Grotesque\", \"Spiked\", \"Scaled\", \"Hulking\", \"Winged\", \"Fanged\", \"Horned\",\r\n \"Tentacled\", \"Shapeshifting\",\r\n\r\n // Mystical/Abstract Traits\r\n \"Immortal\", \"Mythical\", \"Omniscient\", \"Unbreakable\",\r\n \"Unfathomable\", \"Celestial\", \"Void\", \"Otherworldly\", \"Primordial\",\r\n\r\n // Precious/Gleaming Adjectives\r\n \"Golden\", \"Silver\", \"Crystalline\", \"Diamond\", \"Jeweled\", \"Sapphire\", \"Emerald\", \"Shimmering\", \"Gleaming\", \"Radiant\",\r\n\r\n // Combat-Related Traits\r\n \"Bloodstained\", \"Battleworn\", \"Unyielding\", \"Victorious\", \"Deadly\", \"Sharp\", \"Piercing\", \"Relentless\", \"Untouchable\",\r\n\r\n // Nature-Themed\r\n \"Whispering\", \"Thorned\", \"Blossoming\", \"Blooming\", \"Overgrown\", \"Howling\", \"Cracked\", \"Twisted\", \"Mossy\", \"Winding\",\r\n \"Towering\", \"Rooted\",\r\n\r\n // Emotional/Thematic Descriptors\r\n \"Free\", \"Courageous\", \"Reckless\", \"Damned\", \"Lonely\", \"Heartless\", \"Driven\", \"Hopeful\",\r\n \"Fateful\"\r\n];\r\n\r\nexport const FantasyQualifiers = [\r\n // Describing Uniqueness or Origins\r\n \"Original\", \"Prime\", \"Primal\", \"Archetypal\", \"Ancestral\", \"Legendary\", \"Foremost\",\r\n\r\n // Describing Finality or Completion\r\n \"Final\", \"Ultimate\", \"Absolute\", \"Conclusive\", \"Eternal\", \"Enduring\", \"Definitive\",\r\n\r\n // Describing Supremacy or Greatness\r\n \"Supreme\", \"Paramount\", \"Preeminent\", \"Pinnacle\", \"Peerless\", \"Unrivaled\", \"Sovereign\", \"Dominant\",\r\n\r\n // Describing Perfection or Excellence\r\n \"Flawless\", \"Perfect\", \"Divine\", \"Exalted\", \"Transcendent\", \"Matchless\", \"Incomparable\",\r\n\r\n // Describing Eternity or Timelessness\r\n \"Timeless\", \"Boundless\", \"Ageless\", \"Perpetual\", \"Infinite\", \"Everlasting\",\r\n\r\n // Describing Power or Authority\r\n \"Omnipotent\", \"Almighty\", \"Unassailable\", \"Overwhelming\", \"Irresistible\", \"Unconquerable\", \"Majestic\"\r\n];\r\n\r\nexport const generateUsername = () => {\r\n let output = \"\"\r\n\r\n output+= getRandomElement(FantasyQualifiers)\r\n output+= getRandomElement(FantasyAdjectives)\r\n output+= getRandomElement(FantasyNouns)\r\n\r\n return output;\r\n}\r\n\r\nexport const DEFAULT_PROFILE_PIC = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=\";\r\n\r\nexport const ProfilePictureSettings = {\r\n aspectRatio: 4/5,\r\n minWidth: 400,\r\n}\r\n\r\nconst getRandomElement = (array: string[]) => {\r\n return array[Math.floor(Math.random() * array.length)];\r\n}\r\n\r\n","import React from 'react';\r\nimport { Typography } from '@mui/material';\r\n\r\ninterface NextGameCountdownProps {\r\n nextGameTime: string | Date;\r\n}\r\n\r\nconst NextGameLabel: React.FC<NextGameCountdownProps> = ({ nextGameTime }) => {\r\n const date = typeof nextGameTime === 'string' ? new Date(nextGameTime) : nextGameTime;\r\n \r\n return (\r\n <Typography variant=\"caption\" sx={{ display: 'block', mb: 1, color: 'primary.main', fontWeight: 'bold' }}>\r\n Next Game: {date.toLocaleString()}\r\n </Typography>\r\n );\r\n};\r\n\r\nexport default NextGameLabel;\r\n","\"use client\"\r\n\r\nimport React, {Dispatch, SetStateAction, useEffect} from 'react';\r\n\r\ninterface IAutoResizingTextareaProps {\r\n isInEditMode: boolean;\r\n onChange: Dispatch<SetStateAction<string>>;\r\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\r\n value: string;\r\n}\r\n\r\nconst AutoResizingTextarea: React.FC<IAutoResizingTextareaProps> = (props: IAutoResizingTextareaProps) => {\r\n const { isInEditMode, onChange, textareaRef, value } = props;\r\n\r\n useEffect(() => {\r\n if (isInEditMode && textareaRef.current) {\r\n const textarea = textareaRef.current;\r\n\r\n textarea.style.height = 'auto';\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n }\r\n }, [isInEditMode, textareaRef, value]); // Run effect when entering edit mode or value changes\r\n\r\n return (\r\n <textarea\r\n ref={textareaRef}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n style={{\r\n backgroundColor: '#fffbea',\r\n overflow: 'hidden',\r\n resize: 'none',\r\n width: '100%'\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default AutoResizingTextarea;\r\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\r\nimport type { Player } from \"@/types/player\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport { DEFAULT_PROFILE_PIC } from \"@/data/values\";\r\n\r\nexport type PlayerHighlightsCardProps = {\r\n addToTable?: (player: Player) => void;\r\n allTags: Tag[];\r\n canChangeDungeonMaster: boolean;\r\n canEdit: boolean;\r\n handleAssignToDungeonMaster: (player: Player) => void;\r\n isWaitList?: boolean;\r\n player: Player;\r\n removeFromTable: (player: Player) => void;\r\n}\r\n\r\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\r\n const {\r\n allTags,\r\n canChangeDungeonMaster,\r\n canEdit,\r\n handleAssignToDungeonMaster,\r\n isWaitList,\r\n player,\r\n removeFromTable\r\n } = props;\r\n\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardContent>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || DEFAULT_PROFILE_PIC} width={64} />\r\n </Grid>\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n </Grid>\r\n {canEdit && (\r\n <Grid>\r\n <Button onClick={() => removeFromTable(player)}>\r\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\r\n </Button>\r\n {canChangeDungeonMaster && (\r\n <Button onClick={() => {\r\n handleAssignToDungeonMaster(player);\r\n removeFromTable(player);\r\n }}>\r\n <p>Assign to DungeonMaster</p>\r\n </Button>\r\n )}\r\n </Grid>\r\n )}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\r\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl || DEFAULT_PROFILE_PIC} width={256} />\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n <Typography>{player.description}</Typography>\r\n </Grid>\r\n </Grid>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n","\"use client\";\r\n\r\nimport type { ReactNode } from \"react\";\r\nimport Image from \"next/image\";\r\nimport Button from \"@mui/material/Button\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport { Grid, Typography } from \"@mui/material\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport ListIcon from \"@mui/icons-material/List\";\r\nimport SaveIcon from \"@mui/icons-material/Save\";\r\nimport { useModal } from \"@/components/TablePage/ModalProvider/ModalContext\";\r\nimport type { Player } from \"@/types/player\";\r\nimport type { TableStatus } from \"@/components/TablePage/types\";\r\nimport { DEFAULT_PROFILE_PIC } from \"@/data/values\";\r\n\r\nexport interface TableActionProps {\r\n isInEditMode: boolean;\r\n numPlayers: number;\r\n onDeleteTable?: () => void | Promise<void>;\r\n onEditModeChange: (nextValue: boolean) => void;\r\n onJoinWaitlist?: () => void | Promise<void>;\r\n onLeaveTable?: () => void | Promise<void>;\r\n onPromoteWaitlistPlayer?: (playerId: number) => void;\r\n onSave: () => void;\r\n slots: number;\r\n tableStatus: TableStatus;\r\n waitlistPlayers: Player[];\r\n}\r\n\r\nexport default function TableActionsBar(props: TableActionProps) {\r\n const { hideModal, showModal } = useModal();\r\n const {\r\n isInEditMode,\r\n numPlayers,\r\n onDeleteTable,\r\n onEditModeChange,\r\n onJoinWaitlist,\r\n onLeaveTable,\r\n onPromoteWaitlistPlayer,\r\n onSave,\r\n slots,\r\n tableStatus,\r\n waitlistPlayers,\r\n } = props;\r\n const {isOwner, isPlayer, isDM, onWaitlist} = tableStatus;\r\n\r\n const canEditTable = isOwner && !isInEditMode;\r\n const canSaveTable = isOwner && isInEditMode;\r\n const canViewWaitlist = isOwner || isDM || waitlistPlayers.length > 0;\r\n\r\n const renderPlayerWaitlistModalContent = (canMovePlayersToTable?: boolean): ReactNode => {\r\n if (waitlistPlayers.length === 0) {\r\n return <p>Waitlist is empty!</p>;\r\n }\r\n\r\n return (\r\n <>\r\n <ul className=\"gap-8 px-6\">\r\n {waitlistPlayers.map((player) => (\r\n <li\r\n className={`${canMovePlayersToTable ? 'bg-amber-100 cursor-pointer' : 'bg-gray-200'} mb-8 flex flex-row flex-start space-between items-center gap-3 p-2 rounded`}\r\n key={player.id}\r\n onClick={() => canMovePlayersToTable ? onPromoteWaitlistPlayer?.(player.id) : undefined}\r\n tabIndex={0}\r\n >\r\n <Image\r\n alt={player.username + \"'s profile pic\"}\r\n height={64}\r\n src={player.miniPic || DEFAULT_PROFILE_PIC}\r\n width={64}\r\n />\r\n <div>{player.username}</div>\r\n </li>\r\n ))}\r\n </ul>\r\n <DialogActions>\r\n <Button onClick={() => hideModal()}>Close</Button>\r\n </DialogActions>\r\n </>\r\n )\r\n }\r\n\r\n return (\r\n <Grid container direction=\"column\" spacing={1}>\r\n <Grid container direction=\"row\">\r\n <Typography color=\"white\" sx={{ textShadow:'4px 4px 6px rgba(0, 0, 0, 0.5)' }}>\r\n Players: {numPlayers} / {slots}\r\n </Typography>\r\n </Grid>\r\n\r\n <Grid container direction=\"row\">\r\n {!isOwner && !isPlayer && !isDM && !onWaitlist && (\r\n <Button onClick={() => onJoinWaitlist?.()} sx={buttonStyle}>\r\n Join Waitlist\r\n </Button>\r\n )}\r\n\r\n {!isOwner && (isPlayer || onWaitlist) && (\r\n <Button onClick={() => onLeaveTable?.()} sx={buttonStyle}>\r\n {onWaitlist ? \"Leave Waitlist\" : \"Leave Table\"}\r\n </Button>\r\n )}\r\n\r\n { canEditTable ? (\r\n <>\r\n <Button onClick={() => onEditModeChange(true)} sx={buttonStyle} endIcon={<EditIcon/>}>\r\n Edit\r\n </Button>\r\n {canViewWaitlist ? (\r\n <Button\r\n endIcon={<ListIcon />}\r\n onClick={() => showModal(renderPlayerWaitlistModalContent(false), \"Waitlist Players:\")}\r\n sx={buttonStyle}\r\n >\r\n View Waitlist\r\n </Button>\r\n ) : null}\r\n </>\r\n ) : canSaveTable ? (\r\n <>\r\n <Button onClick={onSave} sx={buttonStyle} endIcon={<SaveIcon/>}>\r\n Save\r\n </Button>\r\n <Button onClick={() => onEditModeChange(false)} sx={buttonStyle}>\r\n Cancel\r\n </Button>\r\n <Button\r\n endIcon={<ListIcon />}\r\n onClick={() => showModal(renderPlayerWaitlistModalContent(true), \"Waitlist Players:\")}\r\n sx={buttonStyle}\r\n >\r\n Edit Waitlist\r\n </Button>\r\n </>\r\n ) : null}\r\n\r\n { isOwner && (\r\n <Button\r\n onClick={() => showModal(\r\n <Typography>Are you sure you want to delete this table? This action cannot be undone.</Typography>,\r\n \"Delete Table\",\r\n { acceptText: \"Delete\", onAccept: () => onDeleteTable?.() }\r\n )}\r\n sx={buttonStyle}\r\n endIcon={<DeleteIcon/>}\r\n >\r\n Delete Table\r\n </Button>\r\n )}\r\n </Grid>\r\n </Grid>\r\n )\r\n}\r\n\r\nconst buttonStyle = {\r\n marginLeft: \"3px\",\r\n backgroundColor:\"blue\",\r\n color:\"white\",\r\n borderRadius:\"5px\",\r\n};\r\n","\"use client\";\r\n\r\nimport React, {JSX, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {Box, Button, Card, CardContent, CardHeader, Typography} from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport AutoResizingTextarea from \"@/components/shared/AutoResizingTextarea\";\r\nimport {generateTagsDisplay, TagEditor} from \"@/components/shared\";\r\nimport {DMHighlightsCard, PlayerHighlightsCard} from \"@/components/TablePage/players/PlayerHighlightsCard\";\r\nimport TableActionsBar from \"@/components/TablePage/TableActionsBar\";\r\nimport type {Player} from \"@/types/player\";\r\nimport type {TableRecord} from \"@/types/tables\";\r\nimport type {Tag} from \"@/types/tag\";\r\nimport { renderTagsFromIds } from \"@/components/shared/TagComponents\";\r\nimport type {TablePageLayoutProps} from \"@/components/TablePage/types\";\r\nimport {useModal} from \"@/components\";\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport {EditTableDetailsForm} from \"@/components/TablePage/EditComponents/EditTableDetailsForm\";\r\nimport Chip from \"../shared/Chip\";\r\n\r\nexport function TablePageLayout(props: TablePageLayoutProps) {\r\n const { hideModal, showModal } = useModal();\r\n\r\n const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers, startWithEditTitle, eventTagId } = props;\r\n const canEdit = tableStatus.isOwner;\r\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\r\n const [isTableInEditMode, setIsTableInEditMode] = useState(false);\r\n\r\n const [currentTitle, setCurrentTitle] = useState(table.title);\r\n const [currentSubtitle, setCurrentSubtitle] = useState(table.shortDescription);\r\n const [currentDescription, setCurrentDescription] = useState(table.description);\r\n\r\n const [currentDungeonMaster, setCurrentDungeonMaster] = useState(dungeonMaster);\r\n const [currentPlayers, setCurrentPlayers] = useState(players);\r\n const [currentWaitlistPlayers, setCurrentWaitlistPlayers] = useState(waitlistPlayers);\r\n const [currentTagIds, setCurrentTagIds] = useState<number[]>(table.tags ?? []);\r\n\r\n const pendingEdits = useRef({ title: currentTitle, subtitle: currentSubtitle, tags: currentTagIds });\r\n\r\n const handleSaveTable = (tableData: Partial<TableRecord> = {}) => {\r\n const nextDraft: TableRecord = {\r\n ...table,\r\n description: currentDescription,\r\n dungeonMaster: String(currentDungeonMaster.id),\r\n players: currentPlayers.map((player) => player.id),\r\n shortDescription: currentSubtitle,\r\n tags: currentTagIds,\r\n title: currentTitle,\r\n waitlist: currentWaitlistPlayers.map((player) => player.id),\r\n ...tableData,\r\n };\r\n\r\n void onSaveDraft?.(nextDraft);\r\n setIsTableInEditMode(false);\r\n };\r\n\r\n /*\r\n * This is a simple profanity filter that replaces any instance of common slurs with the word \"dudes\". It's not meant to be comprehensive,\r\n * just to catch some of the more common and egregious cases. The regex is case-insensitive and looks for whole words only.\r\n */\r\n const clean = (text: string) => text.replaceAll(\r\n /\\b(n[i1!]g+(er|a|e)s?|f[a@]g|f[a@]g+[o0]ts?|k[i1!]k[e3]s?|ch[i1!]nks?|w[e3]tb[a@]cks?|r[a@]gh[e3][a@]ds?|t[o0]w[e3]lh[e3][a@]ds?|r[e3]t[a@]rd(ed|s)?|c[o0][o0]ns?|tr[a@]nn(y|i[e3]s?)|g[o0][o0]ks?)\\b/gi,\r\n \"dudes\");\r\n\r\n const editTableDetails = () => {\r\n if (!canEdit) { return }\r\n pendingEdits.current = { title: currentTitle, subtitle: currentSubtitle, tags: currentTagIds\r\n };\r\n\r\n const editContent = (\r\n <EditTableDetailsForm\r\n initialTitle={currentTitle}\r\n initialSubtitle={currentSubtitle}\r\n onTitleChange={t => pendingEdits.current.title = t}\r\n onSubtitleChange={s => pendingEdits.current.subtitle = s}\r\n onTagChange={t => pendingEdits.current.tags = t}\r\n initialTagIDs={currentTagIds}\r\n allTags={allTags.filter(t => t.appliesTo.tables)}\r\n allowEditingTitles={true}\r\n />\r\n );\r\n\r\n showModal(editContent, \"Edit Table Details\", {\r\n acceptText: \"Save\",\r\n onAccept: () => {\r\n setCurrentTitle(clean(pendingEdits.current.title));\r\n setCurrentSubtitle(clean(pendingEdits.current.subtitle));\r\n setCurrentTagIds(pendingEdits.current.tags);\r\n handleSaveTable({\r\n title: clean(pendingEdits.current.title),\r\n shortDescription: clean(pendingEdits.current.subtitle),\r\n tags: pendingEdits.current.tags,\r\n });\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n if(startWithEditTitle) {\r\n editTableDetails();\r\n }\r\n });\r\n\r\n const currentTags = useMemo(\r\n () => allTags.filter((tag) => currentTagIds.includes(tag.id)),\r\n [allTags, currentTagIds]\r\n );\r\n\r\n const handleAssignToDungeonMaster = (newDungeonMaster: Player) => {\r\n setCurrentDungeonMaster(newDungeonMaster);\r\n };\r\n\r\n const handleRemovePlayerFromTable = (playerToRemove: Player): void => {\r\n setCurrentPlayers((prevState) => prevState.filter((player) => player.id !== playerToRemove.id));\r\n };\r\n\r\n const handlePromoteWaitlistPlayer = (playerIdToPromote: number) => {\r\n setCurrentWaitlistPlayers((prevWaitlist) => {\r\n const foundPlayer = prevWaitlist.find((player) => player.id === playerIdToPromote);\r\n if (!foundPlayer) {\r\n return prevWaitlist;\r\n }\r\n\r\n setCurrentPlayers((prevPlayers) => [...prevPlayers, foundPlayer]);\r\n return prevWaitlist.filter((player) => player.id !== playerIdToPromote);\r\n });\r\n };\r\n\r\n const handleToggleTag = (tagId: number) => {\r\n setCurrentTagIds((prevState) =>\r\n prevState.includes(tagId)\r\n ? prevState.filter((id) => id !== tagId)\r\n : [...prevState, tagId]\r\n );\r\n };\r\n\r\n return (\r\n <Card\r\n sx={{\r\n backgroundColor: isTableInEditMode ? \"lightsalmon\" : \"white\",\r\n p: 2,\r\n boxShadow: \"0px 8px 15px rgba(25, 118, 210, 0.3)\",\r\n }}\r\n >\r\n <Grid container direction=\"column\">\r\n <Grid\r\n container\r\n direction=\"column\"\r\n spacing={1}\r\n sx={{\r\n px: 2,\r\n py: 1.5,\r\n borderRadius: 2,\r\n background: \"linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))\",\r\n textShadow:'4px 4px 6px rgba(0, 0, 0, 0.5)'\r\n }}\r\n >\r\n <Box>\r\n <Box\r\n className={`flex items-center gap-1 ${canEdit ? \"cursor-pointer\" : \"\"}`}\r\n sx={{\"&:hover .edit-icon\": { opacity: 1 } }}\r\n onClick={editTableDetails}\r\n >\r\n <CardHeader\r\n title={currentTitle}\r\n sx={{\r\n p: 0,\r\n \"& .MuiCardHeader-title\": {\r\n color: \"white\",\r\n fontWeight: 700,\r\n },\r\n }}\r\n />\r\n {canEdit ? (<EditIcon className=\"edit-icon text-white\" sx={{ opacity: 0, transition: \"opacity 0.2s\" }} />) : \"\"}\r\n </Box>\r\n </Box>\r\n <Box\r\n className={`flex items-center gap-1 ${canEdit ? \"cursor-pointer\" : \"\"}`}\r\n sx={{\"&:hover .edit-icon\": { opacity: 1 } }}\r\n onClick={editTableDetails}\r\n >\r\n <Typography\r\n sx={{ color: \"white\", opacity: 0.95 }}\r\n >\r\n {currentSubtitle}\r\n </Typography>\r\n {canEdit ? (<EditIcon className=\"edit-icon text-white\" sx={{ opacity: 0, transition: \"opacity 0.2s\", fontSize: \"medium\" }} />) : \"\"}\r\n </Box>\r\n\r\n <Grid container onClick={editTableDetails} className={`${canEdit ? \"cursor-pointer\" : \"\"}`}>\r\n {renderTags(currentTagIds, allTags, canEdit, table.eventTagId || eventTagId)}\r\n </Grid>\r\n\r\n <TableActionsBar\r\n isInEditMode={isTableInEditMode}\r\n numPlayers={currentPlayers.length}\r\n onDeleteTable={onDeleteTable}\r\n onEditModeChange={setIsTableInEditMode}\r\n onJoinWaitlist={onJoinWaitlist}\r\n onLeaveTable={onLeaveTable}\r\n onPromoteWaitlistPlayer={handlePromoteWaitlistPlayer}\r\n onSave={handleSaveTable}\r\n slots={table.capacity || 0}\r\n tableStatus={tableStatus}\r\n waitlistPlayers={currentWaitlistPlayers}\r\n />\r\n </Grid>\r\n\r\n <Grid container spacing={2} sx={{ mt: 2 }}>\r\n <Grid size={{xs: 12, md:8}}>\r\n <Card sx={{ height: \"100%\" }}>\r\n <CardContent>\r\n {isTableInEditMode ? (\r\n <AutoResizingTextarea\r\n isInEditMode={isTableInEditMode}\r\n onChange={setCurrentDescription}\r\n textareaRef={textAreaRef}\r\n value={currentDescription}\r\n />\r\n ) : (\r\n <Typography sx={{ whiteSpace: \"pre-wrap\" }}>\r\n {currentDescription}\r\n </Typography>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n\r\n <Grid size={{xs: 12, md:4}}>\r\n <DMHighlightsCard canEdit={isTableInEditMode} player={currentDungeonMaster} allTags={allTags} />\r\n\r\n <Card sx={{ height: \"100%\" }}>\r\n <CardHeader slotProps={{title: {variant: \"h4\"}}} title=\"Players: \"/>\r\n <CardContent>\r\n {currentPlayers.map((player) => (\r\n <PlayerHighlightsCard\r\n allTags={allTags}\r\n canChangeDungeonMaster={tableStatus.isOwner || tableStatus.isDM}\r\n canEdit={isTableInEditMode}\r\n handleAssignToDungeonMaster={handleAssignToDungeonMaster}\r\n key={player.id}\r\n player={player}\r\n removeFromTable={handleRemovePlayerFromTable}\r\n />\r\n ))}\r\n </CardContent>\r\n </Card>\r\n </Grid>\r\n </Grid>\r\n </Grid>\r\n </Card>\r\n );\r\n}\r\n\r\nconst renderTags = function (\r\n tags: number[] | undefined,\r\n allTags: Tag[] | undefined,\r\n canEdit: boolean,\r\n eventTagId?: number\r\n): JSX.Element {\r\n if (!tags || !allTags) {\r\n return <></>;\r\n }\r\n return (\r\n <Grid container spacing={1} sx={{ pb: 1.5 }}>\r\n {renderTagsFromIds(tags, allTags, { showEventTag: true, eventTagId })}\r\n {(canEdit ? <Button variant={\"text\"}\r\n className=\"inline-block text-sm px-3 py-1font-outlined m-0.5 font-stretch-105% font-sans\"\r\n sx={{\r\n color: \"white\",\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n '&:hover': {\r\n background: '#889'\r\n }\r\n }}>Edit Tags...</Button>\r\n : \"\")}\r\n </Grid>\r\n );\r\n};\r\n\r\nexport default TablePageLayout;\r\n\r\n","\"use client\";\r\n\r\nimport React, { ReactNode, useState } from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Button from \"@mui/material/Button\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { ModalContext, ModalOptions } from '@/components';\r\nimport {Box} from \"@mui/material\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\n\r\ntype ModalProviderProps = {\r\n children: ReactNode;\r\n}\r\n\r\nexport const ModalProvider = ({ children }: ModalProviderProps) => {\r\n const [modalContent, setModalContent] = useState<null | ReactNode>(null);\r\n const [displayModal, setDisplayModal] = useState(false);\r\n const [title, setTitle] = useState(\"\");\r\n const [options, setOptions] = useState<ModalOptions>({});\r\n\r\n const showModal = (content: ReactNode, title: string, opts?: ModalOptions) => {\r\n setModalContent(content);\r\n setTitle(title);\r\n setOptions(opts ?? {});\r\n setDisplayModal(true);\r\n }\r\n const hideModal = () => {\r\n setDisplayModal(false);\r\n };\r\n\r\n return (\r\n <ModalContext.Provider value={{ showModal, hideModal }}>\r\n {children}\r\n <Dialog open={displayModal} onClose={hideModal} sx={{height: \"85%\"}}>\r\n <Box>\r\n <DialogTitle sx={{marginRight: '20px', minWidth: '400px'}}>{title}</DialogTitle>\r\n <IconButton\r\n aria-label=\"close\"\r\n onClick={hideModal}\r\n sx={{ position: 'absolute', right: 8, top: 8 }}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </Box>\r\n <DialogContent sx={{paddingTop: 0}}>\r\n {modalContent}\r\n </DialogContent>\r\n {(options.acceptText || options.onAccept) && (\r\n <DialogActions>\r\n <Button variant=\"contained\" onClick={() => { hideModal(); options.onAccept?.(); }}>\r\n {options.acceptText ?? \"OK\"}\r\n </Button>\r\n <Button onClick={() => { hideModal(); options.onCancel?.(); }}>Cancel</Button>\r\n </DialogActions>\r\n )}\r\n </Dialog>\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport default ModalProvider;"]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { EventDetails, EventEditContextValue } from './types/event';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
|
|
5
5
|
type EventBannerProps = {
|
|
6
6
|
attendees: number;
|
|
7
7
|
numGames: number;
|
|
8
|
-
bannerUrl?:
|
|
9
|
-
links?:
|
|
10
|
-
title?:
|
|
11
|
-
eventTag?:
|
|
8
|
+
bannerUrl?: EventDetails["bannerUrl"];
|
|
9
|
+
links?: EventDetails["links"];
|
|
10
|
+
title?: EventDetails["title"];
|
|
11
|
+
eventTag?: EventDetails["eventTag"];
|
|
12
12
|
bannerColor?: string;
|
|
13
13
|
};
|
|
14
14
|
type EventBannerEditPayload = {
|
|
15
|
-
bannerUrl:
|
|
16
|
-
bannerColor?:
|
|
17
|
-
links:
|
|
18
|
-
title:
|
|
19
|
-
eventTag:
|
|
15
|
+
bannerUrl: EventDetails["bannerUrl"];
|
|
16
|
+
bannerColor?: EventDetails["bannerColor"];
|
|
17
|
+
links: EventDetails["links"];
|
|
18
|
+
title: EventDetails["title"];
|
|
19
|
+
eventTag: EventDetails["eventTag"];
|
|
20
20
|
};
|
|
21
21
|
declare function EventBanner(props: EventBannerProps): react_jsx_runtime.JSX.Element | null;
|
|
22
22
|
|
|
@@ -42,14 +42,14 @@ type EventBasicInfoEditProps = {
|
|
|
42
42
|
declare function EventBasicInfoEdit({ initialValue, onCancel, onSave, }: EventBasicInfoEditProps): react_jsx_runtime.JSX.Element;
|
|
43
43
|
|
|
44
44
|
type ExtendedEventEditContextValue = EventEditContextValue & {
|
|
45
|
-
event:
|
|
45
|
+
event: EventDetails | null;
|
|
46
46
|
};
|
|
47
47
|
/**
|
|
48
48
|
* Provider props
|
|
49
49
|
*/
|
|
50
50
|
type EventEditProviderProps = {
|
|
51
51
|
value?: Partial<EventEditContextValue>;
|
|
52
|
-
initialEvent:
|
|
52
|
+
initialEvent: EventDetails;
|
|
53
53
|
children: ReactNode;
|
|
54
54
|
};
|
|
55
55
|
/**
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { EventDetails, EventEditContextValue } from './types/event';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
|
|
5
5
|
type EventBannerProps = {
|
|
6
6
|
attendees: number;
|
|
7
7
|
numGames: number;
|
|
8
|
-
bannerUrl?:
|
|
9
|
-
links?:
|
|
10
|
-
title?:
|
|
11
|
-
eventTag?:
|
|
8
|
+
bannerUrl?: EventDetails["bannerUrl"];
|
|
9
|
+
links?: EventDetails["links"];
|
|
10
|
+
title?: EventDetails["title"];
|
|
11
|
+
eventTag?: EventDetails["eventTag"];
|
|
12
12
|
bannerColor?: string;
|
|
13
13
|
};
|
|
14
14
|
type EventBannerEditPayload = {
|
|
15
|
-
bannerUrl:
|
|
16
|
-
bannerColor?:
|
|
17
|
-
links:
|
|
18
|
-
title:
|
|
19
|
-
eventTag:
|
|
15
|
+
bannerUrl: EventDetails["bannerUrl"];
|
|
16
|
+
bannerColor?: EventDetails["bannerColor"];
|
|
17
|
+
links: EventDetails["links"];
|
|
18
|
+
title: EventDetails["title"];
|
|
19
|
+
eventTag: EventDetails["eventTag"];
|
|
20
20
|
};
|
|
21
21
|
declare function EventBanner(props: EventBannerProps): react_jsx_runtime.JSX.Element | null;
|
|
22
22
|
|
|
@@ -42,14 +42,14 @@ type EventBasicInfoEditProps = {
|
|
|
42
42
|
declare function EventBasicInfoEdit({ initialValue, onCancel, onSave, }: EventBasicInfoEditProps): react_jsx_runtime.JSX.Element;
|
|
43
43
|
|
|
44
44
|
type ExtendedEventEditContextValue = EventEditContextValue & {
|
|
45
|
-
event:
|
|
45
|
+
event: EventDetails | null;
|
|
46
46
|
};
|
|
47
47
|
/**
|
|
48
48
|
* Provider props
|
|
49
49
|
*/
|
|
50
50
|
type EventEditProviderProps = {
|
|
51
51
|
value?: Partial<EventEditContextValue>;
|
|
52
|
-
initialEvent:
|
|
52
|
+
initialEvent: EventDetails;
|
|
53
53
|
children: ReactNode;
|
|
54
54
|
};
|
|
55
55
|
/**
|