@mbpockets/shared-ui 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/EventPage/editMode/index.cjs +28 -11
  2. package/dist/EventPage/editMode/index.cjs.map +1 -1
  3. package/dist/EventPage/editMode/index.mjs +29 -12
  4. package/dist/EventPage/editMode/index.mjs.map +1 -1
  5. package/dist/EventPage/editMode.cjs +28 -11
  6. package/dist/EventPage/editMode.cjs.map +1 -1
  7. package/dist/EventPage/editMode.mjs +29 -12
  8. package/dist/EventPage/editMode.mjs.map +1 -1
  9. package/dist/EventPage/index.cjs +28 -11
  10. package/dist/EventPage/index.cjs.map +1 -1
  11. package/dist/EventPage/index.mjs +30 -13
  12. package/dist/EventPage/index.mjs.map +1 -1
  13. package/dist/EventPage.cjs +28 -11
  14. package/dist/EventPage.cjs.map +1 -1
  15. package/dist/EventPage.mjs +30 -13
  16. package/dist/EventPage.mjs.map +1 -1
  17. package/dist/PlayerPage/index.cjs +311 -99
  18. package/dist/PlayerPage/index.cjs.map +1 -1
  19. package/dist/PlayerPage/index.d.cts +1 -1
  20. package/dist/PlayerPage/index.d.ts +1 -1
  21. package/dist/PlayerPage/index.mjs +310 -98
  22. package/dist/PlayerPage/index.mjs.map +1 -1
  23. package/dist/PlayerPage.cjs +311 -99
  24. package/dist/PlayerPage.cjs.map +1 -1
  25. package/dist/PlayerPage.d.cts +24 -6
  26. package/dist/PlayerPage.d.ts +24 -6
  27. package/dist/PlayerPage.mjs +310 -98
  28. package/dist/PlayerPage.mjs.map +1 -1
  29. package/dist/ProfilePage/index.cjs +509 -63
  30. package/dist/ProfilePage/index.cjs.map +1 -1
  31. package/dist/ProfilePage/index.d.cts +2 -1
  32. package/dist/ProfilePage/index.d.ts +2 -1
  33. package/dist/ProfilePage/index.mjs +504 -58
  34. package/dist/ProfilePage/index.mjs.map +1 -1
  35. package/dist/ProfilePage.cjs +509 -63
  36. package/dist/ProfilePage.cjs.map +1 -1
  37. package/dist/ProfilePage.d.cts +4 -10
  38. package/dist/ProfilePage.d.ts +4 -10
  39. package/dist/ProfilePage.mjs +504 -58
  40. package/dist/ProfilePage.mjs.map +1 -1
  41. package/dist/SearchPage/Results/index.cjs +28 -11
  42. package/dist/SearchPage/Results/index.cjs.map +1 -1
  43. package/dist/SearchPage/Results/index.mjs +30 -13
  44. package/dist/SearchPage/Results/index.mjs.map +1 -1
  45. package/dist/SearchPage/Results.cjs +28 -11
  46. package/dist/SearchPage/Results.cjs.map +1 -1
  47. package/dist/SearchPage/Results.mjs +30 -13
  48. package/dist/SearchPage/Results.mjs.map +1 -1
  49. package/dist/SearchPage/index.cjs +28 -11
  50. package/dist/SearchPage/index.cjs.map +1 -1
  51. package/dist/SearchPage/index.mjs +30 -13
  52. package/dist/SearchPage/index.mjs.map +1 -1
  53. package/dist/SearchPage.cjs +28 -11
  54. package/dist/SearchPage.cjs.map +1 -1
  55. package/dist/SearchPage.mjs +30 -13
  56. package/dist/SearchPage.mjs.map +1 -1
  57. package/dist/TablePage/index.cjs +32 -31
  58. package/dist/TablePage/index.cjs.map +1 -1
  59. package/dist/TablePage/index.mjs +32 -31
  60. package/dist/TablePage/index.mjs.map +1 -1
  61. package/dist/TablePage/players/index.cjs +28 -11
  62. package/dist/TablePage/players/index.cjs.map +1 -1
  63. package/dist/TablePage/players/index.mjs +28 -11
  64. package/dist/TablePage/players/index.mjs.map +1 -1
  65. package/dist/TablePage/players.cjs +28 -11
  66. package/dist/TablePage/players.cjs.map +1 -1
  67. package/dist/TablePage/players.mjs +28 -11
  68. package/dist/TablePage/players.mjs.map +1 -1
  69. package/dist/TablePage.cjs +32 -31
  70. package/dist/TablePage.cjs.map +1 -1
  71. package/dist/TablePage.mjs +32 -31
  72. package/dist/TablePage.mjs.map +1 -1
  73. package/dist/common/index.cjs +38 -36
  74. package/dist/common/index.cjs.map +1 -1
  75. package/dist/common/index.d.cts +1 -1
  76. package/dist/common/index.d.ts +1 -1
  77. package/dist/common/index.mjs +39 -38
  78. package/dist/common/index.mjs.map +1 -1
  79. package/dist/common.cjs +38 -36
  80. package/dist/common.cjs.map +1 -1
  81. package/dist/common.d.cts +6 -1
  82. package/dist/common.d.ts +6 -1
  83. package/dist/common.mjs +39 -38
  84. package/dist/common.mjs.map +1 -1
  85. package/dist/index.cjs +373 -199
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.d.cts +2 -3
  88. package/dist/index.d.ts +2 -3
  89. package/dist/index.mjs +370 -198
  90. package/dist/index.mjs.map +1 -1
  91. package/package.json +2 -1
@@ -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/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","Button","CardHeader","Image","Grid","Typography","useEffect","useState","Card","CardContent","useRef","useMemo"],"mappings":"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","file":"index.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;","\"use client\";\n\nimport React from \"react\";\nimport type { Tag } from \"@/types/tag\";\n\nexport function generateTagsDisplay(tag: Tag) {\n return (\n <span\n key={tag.id}\n className=\"inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined\"\n style={{\n marginTop:\"6px\",\n marginRight: \"6px\",\n marginBottom: \"6px\",\n background: tag.color || '#bfbcbb',\n color: \"white\",\n textShadow: \"black 0.2em 0.2em 0.4em\"\n }}\n >\n {tag.label}\n </span>\n )\n}\n\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\n const validTags = ids\n .map((id) => legalTags.find((tag) => tag.id === id))\n .filter((tag): tag is Tag => Boolean(tag));\n\n return validTags.map((tag) => generateTagsDisplay(tag));\n}\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\";\n\nimport React, { useMemo, useState } from \"react\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport Card from \"@mui/material/Card\";\nimport CardContent from \"@mui/material/CardContent\";\nimport CardHeader from \"@mui/material/CardHeader\";\nimport Grid from \"@mui/material/Grid\";\nimport Popper, { PopperProps } from \"@mui/material/Popper\";\nimport TextField from \"@mui/material/TextField\";\nimport type { Tag } from \"@/types/tag\";\n\nexport interface TagEditorProps {\n title?: string;\n selectedTags: Tag[];\n possibleTags: Tag[];\n onToggleTag: (id: number) => void;\n}\n\nexport function TagEditor({\n title = \"Tags\",\n selectedTags,\n possibleTags,\n onToggleTag,\n}: TagEditorProps) {\n const [inputValue, setInputValue] = useState(\"\");\n const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);\n\n const options = useMemo(\n () => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),\n [possibleTags]\n );\n\n return (\n <Grid container>\n <Grid size={{ xs: 12 }}>\n <Card>\n <CardHeader\n title={title}\n style={{\n background: \"linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))\",\n color: \"#FFFFFF\",\n fontSize: \"1.5rem\",\n textShadow: \"0px 3px 6px rgba(0, 0, 0, 0.5)\",\n }}\n />\n <CardContent>\n <div className=\"mt-2 flex flex-wrap gap-2\">\n {selectedTags.map((tag) => (\n <span\n key={tag.id}\n className=\"inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined\"\n style={{\n background: tag.color || \"#bfbcbb\",\n color: \"white\",\n textShadow: \"black 0.2em 0.2em 0.4em\",\n }}\n >\n {tag.label}\n <button\n type=\"button\"\n onClick={() => onToggleTag(tag.id)}\n className=\"ml-2 text-red-500 bg-white bg-opacity-50 rounded-full outline-black outline-2 font-outlined\"\n >\n &times;\n </button>\n </span>\n ))}\n </div>\n <Grid container spacing={3}>\n <Grid sx={{ marginTop: 3, width: \"100%\" }}>\n <Autocomplete\n key={selectedIds.join(\"-\")}\n options={options}\n filterOptions={(availableOptions, state) =>\n availableOptions\n .filter(\n (option) =>\n !selectedIds.includes(option.value) &&\n option.label.toLowerCase().includes(state.inputValue.toLowerCase())\n )\n .slice(0, 3)\n }\n value={null}\n inputValue={inputValue}\n onInputChange={(event, newInputValue) => {\n if (event && event.type === \"change\") {\n setInputValue(newInputValue);\n }\n }}\n onChange={(event, newValue) => {\n if (newValue) {\n onToggleTag(newValue.value);\n }\n setInputValue(\"\");\n }}\n slots={{ popper: CustomPopper }}\n renderInput={(params) => <TextField {...params} label=\"Select Tags\" />}\n />\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n );\n}\n\nconst CustomPopper = (props: PopperProps) => {\n return (\n <Popper\n {...props}\n modifiers={[\n {\n name: \"preventOverflow\",\n options: { boundary: \"viewport\" },\n },\n {\n name: \"offset\",\n options: { offset: [0, -10] },\n },\n ]}\n placement=\"top-start\"\n />\n );\n};\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/TablePage/GameTableProvider/GameTableContext.tsx","../../src/components/TablePage/ModalProvider/ModalContext.ts","../../src/components/shared/Modal/index.tsx","../../src/components/TablePage/ModalProvider/ModalProvider.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","Button","CardHeader","Image","Grid","Typography","useEffect","useState","Card","CardContent","useRef","useMemo"],"mappings":"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","file":"index.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 {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"]}
@@ -13,23 +13,40 @@ var Image__default = /*#__PURE__*/_interopDefault(Image);
13
13
  var Button__default = /*#__PURE__*/_interopDefault(Button);
14
14
  var Grid__default = /*#__PURE__*/_interopDefault(Grid);
15
15
 
16
- function generateTagsDisplay(tag) {
17
- return /* @__PURE__ */ jsxRuntime.jsx(
16
+ function Chip({ tag, removeCallback }) {
17
+ var _a;
18
+ const color = (_a = tag.color) != null ? _a : "#bfbcbb";
19
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
18
20
  "span",
19
21
  {
20
- className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
22
+ 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",
21
23
  style: {
22
- marginTop: "6px",
23
- marginRight: "6px",
24
- marginBottom: "6px",
25
- background: tag.color || "#bfbcbb",
26
- color: "white",
27
- textShadow: "black 0.2em 0.2em 0.4em"
24
+ borderColor: `color-mix(in srgb, ${color}, black 50%)`,
25
+ background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,
26
+ textShadow: "black 1.5px 1px 1.5px",
27
+ filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`
28
28
  },
29
- children: tag.label
29
+ children: [
30
+ tag.label,
31
+ removeCallback && /* @__PURE__ */ jsxRuntime.jsx(
32
+ "button",
33
+ {
34
+ type: "button",
35
+ onClick: () => removeCallback(tag.id),
36
+ className: "ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full",
37
+ style: {
38
+ textShadow: "black 1px 1px 1px"
39
+ },
40
+ children: "X"
41
+ }
42
+ )
43
+ ]
30
44
  },
31
45
  tag.id
32
- );
46
+ ) });
47
+ }
48
+ function generateTagsDisplay(tag) {
49
+ return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
33
50
  }
34
51
  function renderTagsFromIds(ids, legalTags) {
35
52
  if (!ids || !legalTags || legalTags.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/shared/TagComponents.tsx","../../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","Card","CardContent","jsxs","Grid","Image","Typography","Button","CardHeader"],"mappings":"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","file":"index.cjs","sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport type { Tag } from \"@/types/tag\";\n\nexport function generateTagsDisplay(tag: Tag) {\n return (\n <span\n key={tag.id}\n className=\"inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined\"\n style={{\n marginTop:\"6px\",\n marginRight: \"6px\",\n marginBottom: \"6px\",\n background: tag.color || '#bfbcbb',\n color: \"white\",\n textShadow: \"black 0.2em 0.2em 0.4em\"\n }}\n >\n {tag.label}\n </span>\n )\n}\n\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\n const validTags = ids\n .map((id) => legalTags.find((tag) => tag.id === id))\n .filter((tag): tag is Tag => Boolean(tag));\n\n return validTags.map((tag) => generateTagsDisplay(tag));\n}\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"]}
1
+ {"version":3,"sources":["../../../src/components/shared/Chip.tsx","../../../src/components/shared/TagComponents.tsx","../../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs","Card","CardContent","Grid","Image","Typography","Button","CardHeader"],"mappings":";;;;;;;;;;;;;;AAGe,SAAR,IAAA,CAAsB,EAAE,GAAA,EAAK,cAAA,EAAe,EAA2D;AAH9G,EAAA,IAAA,EAAA;AAIE,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,GAAA,CAAI,KAAA,KAAJ,IAAA,GAAA,EAAA,GAAa,SAAA;AAC3B,EAAA,uBACIA,cAAA,CAAAC,mBAAA,EAAA,EACA,QAAA,kBAAAC,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAEG,SAAA,EAAU,iHAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,WAAA,EAAa,sBAAsB,KAAK,CAAA,YAAA,CAAA;AAAA,QACxC,UAAA,EAAY,CAAA,2CAAA,EAA8C,KAAK,CAAA,oCAAA,EAAuC,KAAK,CAAA,kBAAA,CAAA;AAAA,QAC3G,UAAA,EAAY,uBAAA;AAAA,QACZ,MAAA,EAAQ,gDAAgD,KAAK,CAAA,aAAA;AAAA,OAC/D;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,KAAA;AAAA,QACJ,cAAA,oBACGF,cAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACG,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,cAAA,CAAe,GAAA,CAAI,EAAE,CAAA;AAAA,YACpC,SAAA,EAAU,8GAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY;AAAA,aACd;AAAA,YACH,QAAA,EAAA;AAAA;AAAA;AAED;AAAA,KAAA;AAAA,IApBC,GAAA,CAAI;AAAA,GAsBf,EACA,CAAA;AAGJ;AC5BO,SAAS,oBAAoB,GAAA,EAAU;AAC1C,EAAA,uBACIA,cAAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAA,EAAe,IAAI,EAAI,CAAA;AAErC;AAEO,SAAS,iBAAA,CAAkB,KAA2B,SAAA,EAAkB;AAC3E,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,SAAA,IAAa,SAAA,CAAU,WAAW,CAAA,EAAG;AAAE,IAAA,uBAASA,cAAAA,CAAAC,mBAAAA,EAAA,EAAE,CAAA;AAAA,EAAK;AACpE,EAAA,MAAM,YAAY,GAAA,CACb,GAAA,CAAI,CAAC,EAAA,KAAO,SAAA,CAAU,KAAK,CAAC,GAAA,KAAQ,IAAI,EAAA,KAAO,EAAE,CAAC,CAAA,CAClD,MAAA,CAAO,CAAC,GAAA,KAAoB,OAAA,CAAQ,GAAG,CAAC,CAAA;AAE7C,EAAA,OAAO,UAAU,GAAA,CAAI,CAAC,GAAA,KAAQ,mBAAA,CAAoB,GAAG,CAAC,CAAA;AAC1D;ACEO,IAAM,oBAAA,GAAuB,SAAS,KAAA,EAAkC;AAC3E,EAAA,MAAM;AAAA,IACF,OAAA;AAAA,IACA,sBAAA;AAAA,IACA,OAAA;AAAA,IACA,2BAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACJ,GAAI,KAAA;AAEJ,EAAA,uBACID,cAAAA,CAACG,aAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,IAAI,EAAE,eAAA,EAAiB,OAAA,GAAU,SAAA,GAAY,WAAW,YAAA,EAAa,KAAA,EAAM,EAC3F,QAAA,kBAAAD,gBAACE,oBAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAF,gBAACG,qBAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EAAG,WAAU,QAAA,EAClC,QAAA,EAAA;AAAA,sBAAAH,eAAAA,CAACG,qBAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,WAAU,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAL,eAACK,qBAAA,EAAA,EACG,QAAA,kBAAAL,cAAAA,CAACM,sBAAA,EAAA,EAAM,KAAK,MAAA,CAAO,QAAA,GAAW,gBAAA,EAAkB,MAAA,EAAQ,IAAI,GAAA,EAAK,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,EAAO,IAAI,CAAA,EACtG,CAAA;AAAA,wBACAN,cAAAA,CAACK,qBAAA,EAAA,EACG,QAAA,kBAAAL,cAAAA,CAACO,uBAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,QAAA,EAAS,CAAA,EAC9C;AAAA,OAAA,EACJ,CAAA;AAAA,sBACAP,cAAAA,CAACK,qBAAA,EAAA,EAAM,4BAAkB,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAE;AAAA,KAAA,EACnD,CAAA;AAAA,IACC,OAAA,oBACGH,eAAAA,CAACG,qBAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAAL,eAACQ,uBAAA,EAAA,EAAO,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAM,CAAA,EACvC,QAAA,EAAA,UAAA,mBAAaR,cAAAA,CAAC,OAAE,QAAA,EAAA,aAAA,EAAW,CAAA,mBAAOA,cAAAA,CAAC,GAAA,EAAA,EAAE,2BAAa,CAAA,EACxD,CAAA;AAAA,MACC,sBAAA,oBACGA,cAAAA,CAACQ,uBAAA,EAAA,EAAO,SAAS,MAAM;AACnB,QAAA,2BAAA,CAA4B,MAAM,CAAA;AAClC,QAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC1B,CAAA,EACI,QAAA,kBAAAR,cAAAA,CAAC,GAAA,EAAA,EAAE,qCAAuB,CAAA,EAC9B;AAAA,KAAA,EAER;AAAA,GAAA,EAER,CAAA,EACJ,CAAA;AAER;AAEO,IAAM,mBAAmB,SAAS,EAAC,OAAA,EAAS,MAAA,EAAQ,SAAO,EAAqD;AACnH,EAAA,uBACIE,eAAAA,CAACC,aAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,EAAA,EAAI,EAAE,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAa,KAAA,EAAM,EACrE,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAACS,mBAAA,EAAA,EAAW,SAAA,EAAW,EAAC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAI,EAAC,EAAG,KAAA,EAAM,aAAA,EAAa,CAAA;AAAA,oBACrET,cAAAA,CAACI,oBAAA,EAAA,EAAY,IAAI,EAAE,eAAA,EAAiB,UAAU,SAAA,GAAY,SAAA,EAAU,EAChE,QAAA,kBAAAF,gBAACG,qBAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EAAG,WAAU,QAAA,EAClC,QAAA,EAAA;AAAA,sBAAAL,cAAAA,CAACK,yBACG,QAAA,kBAAAL,cAAAA,CAACO,uBAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,QAAA,EAAS,CAAA,EAC9C,CAAA;AAAA,sBACAL,eAAAA,CAACG,qBAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,WAAU,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAL,eAACK,qBAAA,EAAA,EACG,QAAA,kBAAAL,eAACM,sBAAA,EAAA,EAAM,GAAA,EAAK,OAAO,QAAA,GAAW,gBAAA,EAAkB,QAAQ,GAAA,EAAK,GAAA,EAAK,OAAO,QAAA,GAAW,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,EAAO,KAAK,CAAA,EAC1H,CAAA;AAAA,wBACAN,cAAAA,CAACK,qBAAA,EAAA,EAAM,4BAAkB,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAE,CAAA;AAAA,wBAC/CL,cAAAA,CAACO,mBAAA,EAAA,EAAY,QAAA,EAAA,MAAA,CAAO,WAAA,EAAY;AAAA,OAAA,EACpC;AAAA,KAAA,EACJ,CAAA,EACJ;AAAA,GAAA,EACJ,CAAA;AAER","file":"index.cjs","sourcesContent":["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"]}
@@ -5,23 +5,40 @@ import { Card, CardContent, Typography, CardHeader } from '@mui/material';
5
5
  import Grid from '@mui/material/Grid';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
7
 
8
- function generateTagsDisplay(tag) {
9
- return /* @__PURE__ */ jsx(
8
+ function Chip({ tag, removeCallback }) {
9
+ var _a;
10
+ const color = (_a = tag.color) != null ? _a : "#bfbcbb";
11
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
10
12
  "span",
11
13
  {
12
- className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
14
+ 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",
13
15
  style: {
14
- marginTop: "6px",
15
- marginRight: "6px",
16
- marginBottom: "6px",
17
- background: tag.color || "#bfbcbb",
18
- color: "white",
19
- textShadow: "black 0.2em 0.2em 0.4em"
16
+ borderColor: `color-mix(in srgb, ${color}, black 50%)`,
17
+ background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,
18
+ textShadow: "black 1.5px 1px 1.5px",
19
+ filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`
20
20
  },
21
- children: tag.label
21
+ children: [
22
+ tag.label,
23
+ removeCallback && /* @__PURE__ */ jsx(
24
+ "button",
25
+ {
26
+ type: "button",
27
+ onClick: () => removeCallback(tag.id),
28
+ className: "ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full",
29
+ style: {
30
+ textShadow: "black 1px 1px 1px"
31
+ },
32
+ children: "X"
33
+ }
34
+ )
35
+ ]
22
36
  },
23
37
  tag.id
24
- );
38
+ ) });
39
+ }
40
+ function generateTagsDisplay(tag) {
41
+ return /* @__PURE__ */ jsx(Chip, { tag }, tag.id);
25
42
  }
26
43
  function renderTagsFromIds(ids, legalTags) {
27
44
  if (!ids || !legalTags || legalTags.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/shared/TagComponents.tsx","../../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport type { Tag } from \"@/types/tag\";\n\nexport function generateTagsDisplay(tag: Tag) {\n return (\n <span\n key={tag.id}\n className=\"inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined\"\n style={{\n marginTop:\"6px\",\n marginRight: \"6px\",\n marginBottom: \"6px\",\n background: tag.color || '#bfbcbb',\n color: \"white\",\n textShadow: \"black 0.2em 0.2em 0.4em\"\n }}\n >\n {tag.label}\n </span>\n )\n}\n\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\n const validTags = ids\n .map((id) => legalTags.find((tag) => tag.id === id))\n .filter((tag): tag is Tag => Boolean(tag));\n\n return validTags.map((tag) => generateTagsDisplay(tag));\n}\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"]}
1
+ {"version":3,"sources":["../../../src/components/shared/Chip.tsx","../../../src/components/shared/TagComponents.tsx","../../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs"],"mappings":"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","file":"index.mjs","sourcesContent":["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"]}
@@ -13,23 +13,40 @@ var Image__default = /*#__PURE__*/_interopDefault(Image);
13
13
  var Button__default = /*#__PURE__*/_interopDefault(Button);
14
14
  var Grid__default = /*#__PURE__*/_interopDefault(Grid);
15
15
 
16
- function generateTagsDisplay(tag) {
17
- return /* @__PURE__ */ jsxRuntime.jsx(
16
+ function Chip({ tag, removeCallback }) {
17
+ var _a;
18
+ const color = (_a = tag.color) != null ? _a : "#bfbcbb";
19
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
18
20
  "span",
19
21
  {
20
- className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
22
+ 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",
21
23
  style: {
22
- marginTop: "6px",
23
- marginRight: "6px",
24
- marginBottom: "6px",
25
- background: tag.color || "#bfbcbb",
26
- color: "white",
27
- textShadow: "black 0.2em 0.2em 0.4em"
24
+ borderColor: `color-mix(in srgb, ${color}, black 50%)`,
25
+ background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,
26
+ textShadow: "black 1.5px 1px 1.5px",
27
+ filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`
28
28
  },
29
- children: tag.label
29
+ children: [
30
+ tag.label,
31
+ removeCallback && /* @__PURE__ */ jsxRuntime.jsx(
32
+ "button",
33
+ {
34
+ type: "button",
35
+ onClick: () => removeCallback(tag.id),
36
+ className: "ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full",
37
+ style: {
38
+ textShadow: "black 1px 1px 1px"
39
+ },
40
+ children: "X"
41
+ }
42
+ )
43
+ ]
30
44
  },
31
45
  tag.id
32
- );
46
+ ) });
47
+ }
48
+ function generateTagsDisplay(tag) {
49
+ return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
33
50
  }
34
51
  function renderTagsFromIds(ids, legalTags) {
35
52
  if (!ids || !legalTags || legalTags.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/shared/TagComponents.tsx","../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","Card","CardContent","jsxs","Grid","Image","Typography","Button","CardHeader"],"mappings":"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","file":"players.cjs","sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport type { Tag } from \"@/types/tag\";\n\nexport function generateTagsDisplay(tag: Tag) {\n return (\n <span\n key={tag.id}\n className=\"inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined\"\n style={{\n marginTop:\"6px\",\n marginRight: \"6px\",\n marginBottom: \"6px\",\n background: tag.color || '#bfbcbb',\n color: \"white\",\n textShadow: \"black 0.2em 0.2em 0.4em\"\n }}\n >\n {tag.label}\n </span>\n )\n}\n\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\n const validTags = ids\n .map((id) => legalTags.find((tag) => tag.id === id))\n .filter((tag): tag is Tag => Boolean(tag));\n\n return validTags.map((tag) => generateTagsDisplay(tag));\n}\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"]}
1
+ {"version":3,"sources":["../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs","Card","CardContent","Grid","Image","Typography","Button","CardHeader"],"mappings":"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","file":"players.cjs","sourcesContent":["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"]}