@mbpockets/shared-ui 0.1.19 → 0.1.21
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/index.cjs +209 -121
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.mjs +201 -119
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +209 -121
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.mjs +201 -119
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs +289 -92
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.d.cts +1 -1
- package/dist/PlayerPage/index.d.ts +1 -1
- package/dist/PlayerPage/index.mjs +287 -90
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs +289 -92
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.d.cts +24 -6
- package/dist/PlayerPage.d.ts +24 -6
- package/dist/PlayerPage.mjs +287 -90
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs +474 -44
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.d.cts +2 -1
- package/dist/ProfilePage/index.d.ts +2 -1
- package/dist/ProfilePage/index.mjs +469 -39
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs +474 -44
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.d.cts +4 -10
- package/dist/ProfilePage.d.ts +4 -10
- package/dist/ProfilePage.mjs +469 -39
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +149 -43
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +1 -2
- package/dist/SearchPage/Filters/index.d.ts +1 -2
- package/dist/SearchPage/Filters/index.mjs +146 -42
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +149 -43
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +38 -3
- package/dist/SearchPage/Filters.d.ts +38 -3
- package/dist/SearchPage/Filters.mjs +146 -42
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +139 -67
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +127 -63
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +139 -67
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +21 -12
- package/dist/SearchPage/Results.d.ts +21 -12
- package/dist/SearchPage/Results.mjs +127 -63
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +496 -221
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +1 -1
- package/dist/SearchPage/index.d.ts +1 -1
- package/dist/SearchPage/index.mjs +483 -216
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +496 -221
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +78 -7
- package/dist/SearchPage.d.ts +78 -7
- package/dist/SearchPage.mjs +483 -216
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/index.cjs +10 -1
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +2 -2
- package/dist/TablePage/index.d.ts +2 -2
- package/dist/TablePage/index.mjs +10 -2
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage.cjs +10 -1
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +7 -2
- package/dist/TablePage.d.ts +7 -2
- package/dist/TablePage.mjs +10 -2
- package/dist/TablePage.mjs.map +1 -1
- package/dist/index.cjs +789 -331
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.mjs +772 -324
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/SearchResults.cjs +22 -15
- package/dist/mocks/SearchResults.cjs.map +1 -1
- package/dist/mocks/SearchResults.d.cts +3 -15
- package/dist/mocks/SearchResults.d.ts +3 -15
- package/dist/mocks/SearchResults.mjs +22 -15
- package/dist/mocks/SearchResults.mjs.map +1 -1
- package/dist/mocks/index.cjs +22 -15
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +2 -1
- package/dist/mocks/index.d.ts +2 -1
- package/dist/mocks/index.mjs +22 -15
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +22 -15
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +2 -1
- package/dist/mocks.d.ts +2 -1
- package/dist/mocks.mjs +22 -15
- package/dist/mocks.mjs.map +1 -1
- package/dist/{common → shared}/index.cjs.map +1 -1
- package/dist/{common → shared}/index.d.cts +1 -1
- package/dist/{common → shared}/index.d.ts +1 -1
- package/dist/{common → shared}/index.mjs.map +1 -1
- package/dist/{common.cjs → shared.cjs} +2 -2
- package/dist/{common.cjs.map → shared.cjs.map} +1 -1
- package/dist/{common.css → shared.css} +1 -1
- package/dist/{common.mjs → shared.mjs} +2 -2
- package/dist/{common.mjs.map → shared.mjs.map} +1 -1
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/search.d.cts +23 -1
- package/dist/types/search.d.ts +23 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- /package/dist/{common → shared}/Modal/index.cjs +0 -0
- /package/dist/{common → shared}/Modal/index.cjs.map +0 -0
- /package/dist/{common → shared}/Modal/index.css +0 -0
- /package/dist/{common → shared}/Modal/index.css.map +0 -0
- /package/dist/{common → shared}/Modal/index.d.cts +0 -0
- /package/dist/{common → shared}/Modal/index.d.ts +0 -0
- /package/dist/{common → shared}/Modal/index.mjs +0 -0
- /package/dist/{common → shared}/Modal/index.mjs.map +0 -0
- /package/dist/{common → shared}/Modal.cjs +0 -0
- /package/dist/{common → shared}/Modal.cjs.map +0 -0
- /package/dist/{common → shared}/Modal.css +0 -0
- /package/dist/{common → shared}/Modal.css.map +0 -0
- /package/dist/{common → shared}/Modal.d.cts +0 -0
- /package/dist/{common → shared}/Modal.d.ts +0 -0
- /package/dist/{common → shared}/Modal.mjs +0 -0
- /package/dist/{common → shared}/Modal.mjs.map +0 -0
- /package/dist/{common → shared}/index.cjs +0 -0
- /package/dist/{common → shared}/index.css +0 -0
- /package/dist/{common → shared}/index.css.map +0 -0
- /package/dist/{common → shared}/index.mjs +0 -0
- /package/dist/{common.css.map → shared.css.map} +0 -0
- /package/dist/{common.d.cts → shared.d.cts} +0 -0
- /package/dist/{common.d.ts → shared.d.ts} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React7, { createContext, useState, useEffect, useContext, useMemo, useRef } from 'react';
|
|
3
3
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
4
|
-
import { Box, Grid, TextField, Tooltip, IconButton, Button, CircularProgress, Dialog, DialogTitle, DialogContent, DialogActions, Card, CardContent, Typography, FormControl, InputLabel, Select, MenuItem,
|
|
4
|
+
import { Box, Grid, TextField, Tooltip, IconButton, Button, CircularProgress, Dialog, DialogTitle, DialogContent, DialogActions, Card, CardContent, Typography, FormControl, InputLabel, Select, MenuItem, CardMedia, CardHeader, useTheme, useMediaQuery, NoSsr } from '@mui/material';
|
|
5
5
|
import DeleteIcon from '@mui/icons-material/Delete';
|
|
6
6
|
import EditIcon from '@mui/icons-material/Edit';
|
|
7
7
|
import AddIcon from '@mui/icons-material/Add';
|
|
@@ -9,28 +9,34 @@ import ColorizeIcon from '@mui/icons-material/Colorize';
|
|
|
9
9
|
import CancelIcon from '@mui/icons-material/Cancel';
|
|
10
10
|
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
|
|
11
11
|
import Box2 from '@mui/material/Box';
|
|
12
|
-
import
|
|
12
|
+
import Grid8 from '@mui/material/Grid';
|
|
13
13
|
import Card10 from '@mui/material/Card';
|
|
14
14
|
import CardContent10 from '@mui/material/CardContent';
|
|
15
15
|
import CardHeader4 from '@mui/material/CardHeader';
|
|
16
|
-
import
|
|
16
|
+
import Divider3 from '@mui/material/Divider';
|
|
17
|
+
import Typography4 from '@mui/material/Typography';
|
|
18
|
+
import Pagination from '@mui/material/Pagination';
|
|
17
19
|
import Avatar from '@mui/material/Avatar';
|
|
18
|
-
import
|
|
20
|
+
import Chip2 from '@mui/material/Chip';
|
|
21
|
+
import LinearProgress from '@mui/material/LinearProgress';
|
|
22
|
+
import PersonIcon from '@mui/icons-material/Person';
|
|
23
|
+
import SupervisorAccountIcon from '@mui/icons-material/SupervisorAccount';
|
|
24
|
+
import TableRestaurantIcon from '@mui/icons-material/TableRestaurant';
|
|
19
25
|
import CalendarTodayIcon from '@mui/icons-material/CalendarToday';
|
|
20
26
|
import LocationOnIcon from '@mui/icons-material/LocationOn';
|
|
21
27
|
import EventIcon from '@mui/icons-material/Event';
|
|
22
28
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
23
29
|
import Popper from '@mui/material/Popper';
|
|
24
|
-
import
|
|
25
|
-
import
|
|
30
|
+
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
31
|
+
import Checkbox from '@mui/material/Checkbox';
|
|
26
32
|
import FormControl2 from '@mui/material/FormControl';
|
|
27
33
|
import RadioGroup from '@mui/material/RadioGroup';
|
|
28
|
-
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
29
34
|
import Radio from '@mui/material/Radio';
|
|
35
|
+
import TextField4 from '@mui/material/TextField';
|
|
30
36
|
import FormGroup from '@mui/material/FormGroup';
|
|
31
|
-
import Checkbox from '@mui/material/Checkbox';
|
|
32
37
|
import Button7 from '@mui/material/Button';
|
|
33
38
|
import SearchIcon from '@mui/icons-material/Search';
|
|
39
|
+
import CircularProgress3 from '@mui/material/CircularProgress';
|
|
34
40
|
import Image2 from 'next/image';
|
|
35
41
|
import ListIcon from '@mui/icons-material/List';
|
|
36
42
|
import SaveIcon from '@mui/icons-material/Save';
|
|
@@ -478,7 +484,7 @@ function EventBasicInfo(props) {
|
|
|
478
484
|
);
|
|
479
485
|
}
|
|
480
486
|
function EventBasicInfoView({ description, locationId, startingDate, endingDate, timeInfo, timezone, isOwner, onEdit }) {
|
|
481
|
-
return /* @__PURE__ */ jsx(
|
|
487
|
+
return /* @__PURE__ */ jsx(Grid8, { sx: { position: "relative" }, children: /* @__PURE__ */ jsx(Card, { style: {
|
|
482
488
|
boxShadow: "0px 4px 10px rgba(0, 0, 0, 0.1)",
|
|
483
489
|
background: "linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))"
|
|
484
490
|
}, children: /* @__PURE__ */ jsxs(CardContent, { children: [
|
|
@@ -762,7 +768,7 @@ function EventBannerView({
|
|
|
762
768
|
}) {
|
|
763
769
|
const backgroundColor = bannerColor || "linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))";
|
|
764
770
|
return /* @__PURE__ */ jsxs(
|
|
765
|
-
|
|
771
|
+
Grid8,
|
|
766
772
|
{
|
|
767
773
|
sx: {
|
|
768
774
|
background: backgroundColor,
|
|
@@ -770,7 +776,7 @@ function EventBannerView({
|
|
|
770
776
|
position: "relative"
|
|
771
777
|
},
|
|
772
778
|
children: [
|
|
773
|
-
/* @__PURE__ */ jsxs(
|
|
779
|
+
/* @__PURE__ */ jsxs(Grid8, { children: [
|
|
774
780
|
/* @__PURE__ */ jsxs(
|
|
775
781
|
Box,
|
|
776
782
|
{
|
|
@@ -829,7 +835,7 @@ function EventBannerView({
|
|
|
829
835
|
}
|
|
830
836
|
),
|
|
831
837
|
/* @__PURE__ */ jsxs(
|
|
832
|
-
|
|
838
|
+
Grid8,
|
|
833
839
|
{
|
|
834
840
|
display: "flex",
|
|
835
841
|
justifyContent: "center",
|
|
@@ -937,6 +943,14 @@ var generateLink = function(link) {
|
|
|
937
943
|
link.text
|
|
938
944
|
);
|
|
939
945
|
};
|
|
946
|
+
var NextGameLabel = ({ nextGameTime }) => {
|
|
947
|
+
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
948
|
+
return /* @__PURE__ */ jsxs(Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
949
|
+
"Next Game: ",
|
|
950
|
+
date.toLocaleString()
|
|
951
|
+
] });
|
|
952
|
+
};
|
|
953
|
+
var NextGameLabel_default = NextGameLabel;
|
|
940
954
|
var BaseSearchResultCard = ({
|
|
941
955
|
result,
|
|
942
956
|
onClick,
|
|
@@ -944,13 +958,19 @@ var BaseSearchResultCard = ({
|
|
|
944
958
|
icon,
|
|
945
959
|
tags
|
|
946
960
|
}) => {
|
|
947
|
-
const handleClick = () => {
|
|
961
|
+
const handleClick = (e) => {
|
|
948
962
|
if (onClick) {
|
|
949
|
-
|
|
963
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
964
|
+
e.stopPropagation();
|
|
965
|
+
const url = `/${result.type}/${result.id}`;
|
|
966
|
+
window.open(url, "_blank");
|
|
967
|
+
} else {
|
|
968
|
+
onClick(result.id);
|
|
969
|
+
}
|
|
950
970
|
}
|
|
951
971
|
};
|
|
952
972
|
return /* @__PURE__ */ jsx(
|
|
953
|
-
|
|
973
|
+
Card10,
|
|
954
974
|
{
|
|
955
975
|
elevation: 6,
|
|
956
976
|
sx: {
|
|
@@ -963,48 +983,22 @@ var BaseSearchResultCard = ({
|
|
|
963
983
|
},
|
|
964
984
|
marginBottom: 2
|
|
965
985
|
},
|
|
966
|
-
onClick: handleClick,
|
|
967
|
-
children: /* @__PURE__ */ jsxs(
|
|
968
|
-
icon && /* @__PURE__ */ jsx(
|
|
969
|
-
/* @__PURE__ */ jsxs(
|
|
970
|
-
/* @__PURE__ */ jsx(
|
|
986
|
+
onClick: (e) => handleClick(e),
|
|
987
|
+
children: /* @__PURE__ */ jsxs(CardContent10, { sx: { display: "flex", alignItems: "flex-start" }, children: [
|
|
988
|
+
icon && /* @__PURE__ */ jsx(Box2, { sx: { mr: 2, display: "flex", alignItems: "center", pt: 0.5 }, children: icon }),
|
|
989
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { flex: 1 }, children: [
|
|
990
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", sx: { mb: 1 }, children: result.title }),
|
|
991
|
+
result.nextGameTime && /* @__PURE__ */ jsx(NextGameLabel_default, { nextGameTime: result.nextGameTime }),
|
|
992
|
+
result.type === "table" && result.shortDescription ? /* @__PURE__ */ jsx(Typography4, { variant: "body2", sx: { mb: 1 }, children: result.shortDescription }) : null,
|
|
971
993
|
children,
|
|
972
|
-
/* @__PURE__ */ jsx(
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
}, children: (() => {
|
|
981
|
-
const MAX_VISIBLE = 5;
|
|
982
|
-
const tagObjs = result.tags.map((tagId) => tags.find((t) => t.id === tagId)).filter((t) => Boolean(t));
|
|
983
|
-
const visible = tagObjs.slice(0, MAX_VISIBLE);
|
|
984
|
-
const hiddenCount = Math.max(tagObjs.length - visible.length, 0);
|
|
985
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
986
|
-
visible.map((tag) => generateTagsDisplay(tag)),
|
|
987
|
-
hiddenCount > 0 && /* @__PURE__ */ jsxs(
|
|
988
|
-
"span",
|
|
989
|
-
{
|
|
990
|
-
className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
|
|
991
|
-
style: {
|
|
992
|
-
marginTop: "6px",
|
|
993
|
-
marginRight: "6px",
|
|
994
|
-
marginBottom: "6px",
|
|
995
|
-
background: "#9e9e9e",
|
|
996
|
-
color: "white",
|
|
997
|
-
textShadow: "black 0.2em 0.2em 0.4em"
|
|
998
|
-
},
|
|
999
|
-
children: [
|
|
1000
|
-
"+",
|
|
1001
|
-
hiddenCount,
|
|
1002
|
-
" more"
|
|
1003
|
-
]
|
|
1004
|
-
}
|
|
1005
|
-
)
|
|
1006
|
-
] });
|
|
1007
|
-
})() }) })
|
|
994
|
+
result.type === "table" ? /* @__PURE__ */ jsx(Typography4, { variant: "body1", children: (() => {
|
|
995
|
+
var _a, _b;
|
|
996
|
+
const full = (_b = (_a = result.fullDescription) != null ? _a : result.description) != null ? _b : "";
|
|
997
|
+
if (typeof full !== "string") return "";
|
|
998
|
+
const text = full || "";
|
|
999
|
+
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
1000
|
+
})() }) : /* @__PURE__ */ jsx(Typography4, { variant: "body1", children: result.description }),
|
|
1001
|
+
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsx(Box2, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
|
|
1008
1002
|
] })
|
|
1009
1003
|
] })
|
|
1010
1004
|
}
|
|
@@ -1059,21 +1053,60 @@ var PlayerResultCard = ({
|
|
|
1059
1053
|
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: playerIcon, tags });
|
|
1060
1054
|
};
|
|
1061
1055
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1062
|
-
var TableResultCard = ({
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1056
|
+
var TableResultCard = ({
|
|
1057
|
+
result,
|
|
1058
|
+
onClick,
|
|
1059
|
+
tags
|
|
1060
|
+
}) => {
|
|
1061
|
+
const rawCapacity = result.capacity;
|
|
1062
|
+
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
1063
|
+
const capacity = hasDefinedCapacity ? rawCapacity : 0;
|
|
1064
|
+
const activePlayers = typeof result.numPlayers === "number" ? result.numPlayers : 0;
|
|
1065
|
+
const availableSlots = Math.max(capacity - activePlayers, 0);
|
|
1066
|
+
const hasDM = typeof result.hasDM === "boolean" ? result.hasDM : Boolean(result.dungeonMaster);
|
|
1067
|
+
const occupancyPercentage = hasDefinedCapacity ? activePlayers / capacity * 100 : 100;
|
|
1068
|
+
const tableIcon = /* @__PURE__ */ jsx(
|
|
1069
|
+
TableRestaurantIcon,
|
|
1070
|
+
{
|
|
1071
|
+
sx: {
|
|
1072
|
+
fontSize: 40,
|
|
1073
|
+
color: "primary.main"
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
);
|
|
1077
|
+
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
1078
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1079
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1080
|
+
/* @__PURE__ */ jsx("strong", { children: "Players:" }),
|
|
1081
|
+
" ",
|
|
1082
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1073
1083
|
] }),
|
|
1074
|
-
|
|
1084
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsx(
|
|
1085
|
+
Chip2,
|
|
1086
|
+
{
|
|
1087
|
+
icon: hasDM ? /* @__PURE__ */ jsx(SupervisorAccountIcon, {}) : /* @__PURE__ */ jsx(PersonIcon, {}),
|
|
1088
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1089
|
+
color: hasDM ? "success" : "warning",
|
|
1090
|
+
size: "small"
|
|
1091
|
+
}
|
|
1092
|
+
)
|
|
1075
1093
|
] }),
|
|
1076
|
-
/* @__PURE__ */ jsx(
|
|
1094
|
+
/* @__PURE__ */ jsx(
|
|
1095
|
+
LinearProgress,
|
|
1096
|
+
{
|
|
1097
|
+
variant: "determinate",
|
|
1098
|
+
value: occupancyPercentage,
|
|
1099
|
+
sx: {
|
|
1100
|
+
height: 10,
|
|
1101
|
+
borderRadius: 5,
|
|
1102
|
+
backgroundColor: "#e0e0e0",
|
|
1103
|
+
"& .MuiLinearProgress-bar": {
|
|
1104
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
),
|
|
1109
|
+
hasDefinedCapacity && /* @__PURE__ */ jsx(Typography4, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
|
|
1077
1110
|
] }) });
|
|
1078
1111
|
};
|
|
1079
1112
|
var TableResultCard_default = TableResultCard;
|
|
@@ -1092,20 +1125,42 @@ var EventResultCard = ({
|
|
|
1092
1125
|
try {
|
|
1093
1126
|
const date = new Date(dateString);
|
|
1094
1127
|
return date.toLocaleDateString("en-US", options);
|
|
1095
|
-
} catch {
|
|
1128
|
+
} catch (error) {
|
|
1096
1129
|
return dateString;
|
|
1097
1130
|
}
|
|
1098
1131
|
};
|
|
1099
1132
|
const formattedDate = result.date ? formatDate(result.date) : "Date TBD";
|
|
1100
1133
|
const location = result.location || "Location TBD";
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1134
|
+
const eventIcon = /* @__PURE__ */ jsx(
|
|
1135
|
+
EventIcon,
|
|
1136
|
+
{
|
|
1137
|
+
sx: {
|
|
1138
|
+
fontSize: 40,
|
|
1139
|
+
color: "primary.main"
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
);
|
|
1143
|
+
return /* @__PURE__ */ jsx(BaseSearchResultCard_default, { result, onClick, icon: eventIcon, tags, children: /* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
1144
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1145
|
+
/* @__PURE__ */ jsx(CalendarTodayIcon, { sx: { mr: 1, color: "primary.main" } }),
|
|
1146
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1147
|
+
/* @__PURE__ */ jsx("strong", { children: "Date:" }),
|
|
1148
|
+
" ",
|
|
1149
|
+
formattedDate
|
|
1150
|
+
] })
|
|
1151
|
+
] }),
|
|
1152
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1153
|
+
/* @__PURE__ */ jsx(LocationOnIcon, { sx: { mr: 1, color: "primary.main" } }),
|
|
1154
|
+
/* @__PURE__ */ jsxs(Typography4, { variant: "body2", children: [
|
|
1155
|
+
/* @__PURE__ */ jsx("strong", { children: "Location:" }),
|
|
1156
|
+
" ",
|
|
1157
|
+
location
|
|
1158
|
+
] })
|
|
1105
1159
|
] }),
|
|
1106
|
-
/* @__PURE__ */ jsxs(
|
|
1107
|
-
/* @__PURE__ */ jsx(
|
|
1108
|
-
|
|
1160
|
+
result.organizer && /* @__PURE__ */ jsxs(Typography4, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1161
|
+
/* @__PURE__ */ jsx("strong", { children: "Organizer:" }),
|
|
1162
|
+
" ",
|
|
1163
|
+
result.organizer
|
|
1109
1164
|
] })
|
|
1110
1165
|
] }) });
|
|
1111
1166
|
};
|
|
@@ -1113,9 +1168,11 @@ var EventResultCard_default = EventResultCard;
|
|
|
1113
1168
|
var ResultsContainer = ({
|
|
1114
1169
|
results,
|
|
1115
1170
|
onResultClick,
|
|
1116
|
-
tags
|
|
1171
|
+
tags,
|
|
1172
|
+
pagination,
|
|
1173
|
+
onPacketChange
|
|
1117
1174
|
}) => {
|
|
1118
|
-
if (results.length === 0 || !results.map) {
|
|
1175
|
+
if (!results || results.length === 0 || !results.map) {
|
|
1119
1176
|
return /* @__PURE__ */ jsx(Box2, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1120
1177
|
}
|
|
1121
1178
|
const onPlayerClick = (id) => {
|
|
@@ -1127,43 +1184,68 @@ var ResultsContainer = ({
|
|
|
1127
1184
|
const onEventClick = (id) => {
|
|
1128
1185
|
onResultClick == null ? void 0 : onResultClick(id, "event");
|
|
1129
1186
|
};
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1187
|
+
const handlePacketChange = (_event, packet) => {
|
|
1188
|
+
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1189
|
+
};
|
|
1190
|
+
const startResult = pagination ? (pagination.currentPacket - 1) * pagination.packetSize + 1 : 1;
|
|
1191
|
+
const endResult = pagination ? Math.min(pagination.currentPacket * pagination.packetSize, pagination.totalResults) : results.length;
|
|
1192
|
+
return /* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
1193
|
+
pagination && /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: /* @__PURE__ */ jsxs(Typography4, { variant: "body2", color: "text.secondary", children: [
|
|
1194
|
+
"Showing ",
|
|
1195
|
+
startResult,
|
|
1196
|
+
"-",
|
|
1197
|
+
endResult,
|
|
1198
|
+
" of ",
|
|
1199
|
+
pagination.totalResults,
|
|
1200
|
+
" results"
|
|
1201
|
+
] }) }),
|
|
1202
|
+
results.map((result, index) => {
|
|
1203
|
+
switch (result.type) {
|
|
1204
|
+
case "player":
|
|
1205
|
+
return /* @__PURE__ */ jsx(
|
|
1206
|
+
PlayerResultCard_default,
|
|
1207
|
+
{
|
|
1208
|
+
result,
|
|
1209
|
+
onClick: onPlayerClick,
|
|
1210
|
+
tags
|
|
1211
|
+
},
|
|
1212
|
+
result.id
|
|
1213
|
+
);
|
|
1214
|
+
case "table":
|
|
1215
|
+
return /* @__PURE__ */ jsx(
|
|
1216
|
+
TableResultCard_default,
|
|
1217
|
+
{
|
|
1218
|
+
result,
|
|
1219
|
+
onClick: onTableClick,
|
|
1220
|
+
tags
|
|
1221
|
+
},
|
|
1222
|
+
result.id
|
|
1223
|
+
);
|
|
1224
|
+
case "event":
|
|
1225
|
+
return /* @__PURE__ */ jsx(
|
|
1226
|
+
EventResultCard_default,
|
|
1227
|
+
{
|
|
1228
|
+
result,
|
|
1229
|
+
onClick: onEventClick,
|
|
1230
|
+
tags
|
|
1231
|
+
},
|
|
1232
|
+
result.id
|
|
1233
|
+
);
|
|
1234
|
+
default:
|
|
1235
|
+
console.error(`Unknown result type: ${result.type}`);
|
|
1236
|
+
return null;
|
|
1237
|
+
}
|
|
1238
|
+
}),
|
|
1239
|
+
pagination && pagination.totalPackets > 1 && /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", mt: 4 }, children: /* @__PURE__ */ jsx(
|
|
1240
|
+
Pagination,
|
|
1241
|
+
{
|
|
1242
|
+
count: pagination.totalPackets,
|
|
1243
|
+
page: pagination.currentPacket,
|
|
1244
|
+
onChange: handlePacketChange,
|
|
1245
|
+
color: "primary"
|
|
1246
|
+
}
|
|
1247
|
+
) })
|
|
1248
|
+
] });
|
|
1167
1249
|
};
|
|
1168
1250
|
var ResultsContainer_default = ResultsContainer;
|
|
1169
1251
|
var ScrollableResultsList = ({
|
|
@@ -1181,21 +1263,14 @@ var TablesScrollableList = ({
|
|
|
1181
1263
|
results,
|
|
1182
1264
|
tags,
|
|
1183
1265
|
maxHeight,
|
|
1184
|
-
onResultClick
|
|
1185
|
-
sortBy = "availability"
|
|
1266
|
+
onResultClick
|
|
1186
1267
|
}) => {
|
|
1187
1268
|
const tables = (results || []).filter((r) => (r == null ? void 0 : r.type) === "table");
|
|
1188
|
-
const getAvailableSlots = (r) => {
|
|
1189
|
-
const capacity = typeof r.capacity === "number" ? r.capacity : 0;
|
|
1190
|
-
const playersCount = typeof r.numPlayers === "number" ? r.numPlayers : 0;
|
|
1191
|
-
return Math.max(capacity - playersCount, 0);
|
|
1192
|
-
};
|
|
1193
|
-
const sortedTables = sortBy === "availability" ? [...tables].sort((a, b) => getAvailableSlots(b) - getAvailableSlots(a)) : tables;
|
|
1194
1269
|
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1195
1270
|
return /* @__PURE__ */ jsx(
|
|
1196
1271
|
ScrollableResultsList_default,
|
|
1197
1272
|
{
|
|
1198
|
-
results:
|
|
1273
|
+
results: tables,
|
|
1199
1274
|
tags,
|
|
1200
1275
|
maxHeight,
|
|
1201
1276
|
onResultClick: (id, type) => {
|
|
@@ -1213,8 +1288,8 @@ var EventTablesCard = ({
|
|
|
1213
1288
|
}) => {
|
|
1214
1289
|
return /* @__PURE__ */ jsxs(Card10, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1215
1290
|
/* @__PURE__ */ jsx(CardHeader4, { title: "Tables" }),
|
|
1216
|
-
/* @__PURE__ */ jsx(
|
|
1217
|
-
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick
|
|
1291
|
+
/* @__PURE__ */ jsx(Divider3, {}),
|
|
1292
|
+
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick }) })
|
|
1218
1293
|
] });
|
|
1219
1294
|
};
|
|
1220
1295
|
var EventTablesCard_default = EventTablesCard;
|
|
@@ -1228,27 +1303,28 @@ function EventPageLayout({
|
|
|
1228
1303
|
tables,
|
|
1229
1304
|
allTags
|
|
1230
1305
|
}) {
|
|
1231
|
-
return /* @__PURE__ */ jsx(
|
|
1232
|
-
/* @__PURE__ */ jsx(
|
|
1306
|
+
return /* @__PURE__ */ jsx(Grid8, { container: true, flexDirection: "column", children: /* @__PURE__ */ jsxs(EventEditProvider, { initialEvent: mergedEvent, value: { isOwner, updateEvent, updateImages }, children: [
|
|
1307
|
+
/* @__PURE__ */ jsx(Grid8, { children: /* @__PURE__ */ jsx(
|
|
1233
1308
|
EventBanner,
|
|
1234
1309
|
{
|
|
1235
1310
|
attendees,
|
|
1236
1311
|
numGames
|
|
1237
1312
|
}
|
|
1238
1313
|
) }),
|
|
1239
|
-
/* @__PURE__ */ jsxs(
|
|
1240
|
-
/* @__PURE__ */ jsx(
|
|
1314
|
+
/* @__PURE__ */ jsxs(Grid8, { container: true, flexDirection: "row", spacing: 3, size: { xs: 12, md: 12 }, children: [
|
|
1315
|
+
/* @__PURE__ */ jsx(Grid8, { size: { xs: 12, md: 4 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsx(
|
|
1241
1316
|
EventBasicInfo,
|
|
1242
1317
|
{
|
|
1243
1318
|
locationId: mergedEvent.location || "0"
|
|
1244
1319
|
}
|
|
1245
1320
|
) }),
|
|
1246
|
-
/* @__PURE__ */ jsx(
|
|
1321
|
+
/* @__PURE__ */ jsx(Grid8, { size: { xs: 12, md: 8 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsx(EventTablesCard_default, { tables, tags: allTags }) })
|
|
1247
1322
|
] }),
|
|
1248
|
-
/* @__PURE__ */ jsx(
|
|
1323
|
+
/* @__PURE__ */ jsx(Grid8, {})
|
|
1249
1324
|
] }) });
|
|
1250
1325
|
}
|
|
1251
|
-
var
|
|
1326
|
+
var PlayerDetailsCard = ({
|
|
1327
|
+
preferredPronouns,
|
|
1252
1328
|
age,
|
|
1253
1329
|
yearsPlaying,
|
|
1254
1330
|
discordUsername,
|
|
@@ -1298,6 +1374,23 @@ var PlayerDetails = ({
|
|
|
1298
1374
|
}
|
|
1299
1375
|
),
|
|
1300
1376
|
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
1377
|
+
preferredPronouns && /* @__PURE__ */ jsxs(
|
|
1378
|
+
Typography,
|
|
1379
|
+
{
|
|
1380
|
+
variant: "body2",
|
|
1381
|
+
className: "text-sm font-medium",
|
|
1382
|
+
sx: {
|
|
1383
|
+
color: "#FFFFFF",
|
|
1384
|
+
textShadow: "0px 2px 6px rgba(0, 0, 0, 0.5)",
|
|
1385
|
+
fontWeight: "bold"
|
|
1386
|
+
},
|
|
1387
|
+
children: [
|
|
1388
|
+
/* @__PURE__ */ jsx("span", { className: "font-extrabold text-cyan-300", children: "Preferred Pronouns:" }),
|
|
1389
|
+
" ",
|
|
1390
|
+
preferredPronouns
|
|
1391
|
+
]
|
|
1392
|
+
}
|
|
1393
|
+
),
|
|
1301
1394
|
age !== null && /* @__PURE__ */ jsxs(
|
|
1302
1395
|
Typography,
|
|
1303
1396
|
{
|
|
@@ -1349,7 +1442,7 @@ var PlayerDetails = ({
|
|
|
1349
1442
|
]
|
|
1350
1443
|
}
|
|
1351
1444
|
),
|
|
1352
|
-
preferredGames &&
|
|
1445
|
+
preferredGames && /* @__PURE__ */ jsxs(
|
|
1353
1446
|
Typography,
|
|
1354
1447
|
{
|
|
1355
1448
|
variant: "body2",
|
|
@@ -1362,7 +1455,7 @@ var PlayerDetails = ({
|
|
|
1362
1455
|
children: [
|
|
1363
1456
|
/* @__PURE__ */ jsx("span", { className: "font-extrabold text-cyan-300", children: "Preferred Games:" }),
|
|
1364
1457
|
" ",
|
|
1365
|
-
preferredGames.join(", ")
|
|
1458
|
+
Array.isArray(preferredGames) ? preferredGames.join(", ") : preferredGames
|
|
1366
1459
|
]
|
|
1367
1460
|
}
|
|
1368
1461
|
)
|
|
@@ -1385,24 +1478,20 @@ var PlayerDetails = ({
|
|
|
1385
1478
|
}
|
|
1386
1479
|
);
|
|
1387
1480
|
};
|
|
1388
|
-
var PlayerDetailsCard_default =
|
|
1481
|
+
var PlayerDetailsCard_default = PlayerDetailsCard;
|
|
1389
1482
|
|
|
1390
1483
|
// src/data/values.tsx
|
|
1391
1484
|
var ProfilePictureSettings = {
|
|
1392
1485
|
aspectRatio: 4 / 5};
|
|
1393
|
-
var {
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
bio,
|
|
1398
|
-
preferredPronouns
|
|
1399
|
-
}) => {
|
|
1400
|
-
const [imageSrc, setImageSrc] = useState("/man-walking-silhouette-clipart.jpg");
|
|
1486
|
+
var PlayerDisplayCard = ({ profilePicture, username, bio, preferredPronouns }) => {
|
|
1487
|
+
const defaultImg = "/man-walking-silhouette-clipart.jpg";
|
|
1488
|
+
const [imageSrc, setImageSrc] = useState(defaultImg);
|
|
1489
|
+
const { aspectRatio } = ProfilePictureSettings;
|
|
1401
1490
|
useEffect(() => {
|
|
1402
1491
|
async function validateImage() {
|
|
1403
|
-
const newImage = profilePicture ||
|
|
1492
|
+
const newImage = profilePicture || defaultImg;
|
|
1404
1493
|
if (!profilePicture) {
|
|
1405
|
-
setImageSrc(
|
|
1494
|
+
setImageSrc(defaultImg);
|
|
1406
1495
|
return;
|
|
1407
1496
|
}
|
|
1408
1497
|
const img = new Image();
|
|
@@ -1411,7 +1500,7 @@ var PlayerDisplayCard = ({
|
|
|
1411
1500
|
setImageSrc(newImage);
|
|
1412
1501
|
};
|
|
1413
1502
|
img.onerror = () => {
|
|
1414
|
-
setImageSrc(
|
|
1503
|
+
setImageSrc(defaultImg);
|
|
1415
1504
|
};
|
|
1416
1505
|
}
|
|
1417
1506
|
validateImage();
|
|
@@ -1445,7 +1534,7 @@ var PlayerDisplayCard = ({
|
|
|
1445
1534
|
height: "auto",
|
|
1446
1535
|
// Updates to maintain aspect ratio and fill space nicely
|
|
1447
1536
|
width: "100%",
|
|
1448
|
-
objectFit: "
|
|
1537
|
+
objectFit: "cover"
|
|
1449
1538
|
}
|
|
1450
1539
|
}
|
|
1451
1540
|
),
|
|
@@ -1504,104 +1593,127 @@ var PlayerDisplayCard = ({
|
|
|
1504
1593
|
);
|
|
1505
1594
|
};
|
|
1506
1595
|
var PlayerDisplayCard_default = PlayerDisplayCard;
|
|
1507
|
-
var
|
|
1508
|
-
return /* @__PURE__ */
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
variant: "h5",
|
|
1530
|
-
className: "font-bold text-lg uppercase text-center tracking-wide mb-4",
|
|
1531
|
-
sx: {
|
|
1532
|
-
color: "#FFFFFF",
|
|
1533
|
-
// Bright white for high visibility
|
|
1534
|
-
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
|
|
1535
|
-
// Strong text shadow for contrast
|
|
1536
|
-
fontSize: "1.5rem"
|
|
1537
|
-
},
|
|
1538
|
-
children: title
|
|
1539
|
-
}
|
|
1540
|
-
),
|
|
1541
|
-
description && /* @__PURE__ */ jsx(
|
|
1542
|
-
Typography,
|
|
1543
|
-
{
|
|
1544
|
-
variant: "body2",
|
|
1545
|
-
className: "text-sm font-medium text-center",
|
|
1546
|
-
sx: {
|
|
1547
|
-
color: "#E3F2FD",
|
|
1548
|
-
// Softer light blue for description
|
|
1549
|
-
textShadow: "0px 2px 4px rgba(0, 0, 0, 0.3)",
|
|
1550
|
-
// Subtle shadow
|
|
1551
|
-
lineHeight: 1.6,
|
|
1552
|
-
marginTop: "1rem"
|
|
1553
|
-
},
|
|
1554
|
-
children: description
|
|
1596
|
+
var PlayerTagsCard = ({ tags = [] }) => {
|
|
1597
|
+
return /* @__PURE__ */ jsxs(Card, { sx: {
|
|
1598
|
+
margin: "1rem",
|
|
1599
|
+
borderRadius: "12px",
|
|
1600
|
+
boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
|
|
1601
|
+
overflow: "hidden"
|
|
1602
|
+
}, className: "transition duration-300 transform hover:scale-105 hover:shadow-2xl", children: [
|
|
1603
|
+
/* @__PURE__ */ jsx(
|
|
1604
|
+
CardHeader,
|
|
1605
|
+
{
|
|
1606
|
+
title: "Player Tags",
|
|
1607
|
+
sx: {
|
|
1608
|
+
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
|
|
1609
|
+
color: "#FFFFFF",
|
|
1610
|
+
fontSize: "1.5rem",
|
|
1611
|
+
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
|
|
1612
|
+
"& .MuiCardHeader-title": {
|
|
1613
|
+
fontWeight: "bold",
|
|
1614
|
+
fontSize: "1.5rem",
|
|
1615
|
+
textAlign: "center",
|
|
1616
|
+
textTransform: "uppercase",
|
|
1617
|
+
letterSpacing: "0.05em"
|
|
1555
1618
|
}
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
),
|
|
1622
|
+
/* @__PURE__ */ jsx(CardContent, { className: "p-6", children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: tags.map((tag) => /* @__PURE__ */ jsx(Chip, { tag }, tag.id)) }) })
|
|
1623
|
+
] });
|
|
1560
1624
|
};
|
|
1561
|
-
var
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1625
|
+
var PlayerTagsCard_default = PlayerTagsCard;
|
|
1626
|
+
var PlayerPromptCard = ({ title, description }) => /* @__PURE__ */ jsx(
|
|
1627
|
+
Card,
|
|
1628
|
+
{
|
|
1629
|
+
sx: {
|
|
1630
|
+
margin: "1rem",
|
|
1565
1631
|
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
|
|
1632
|
+
// Gradient color scheme
|
|
1633
|
+
boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
|
|
1634
|
+
// Card shadow
|
|
1635
|
+
borderRadius: "12px",
|
|
1636
|
+
// Rounded corners
|
|
1566
1637
|
color: "#FFFFFF",
|
|
1567
|
-
//
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
/* @__PURE__ */
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1638
|
+
// Text contrast with the background
|
|
1639
|
+
overflow: "hidden"
|
|
1640
|
+
// Keeps consistent and clean card shape
|
|
1641
|
+
},
|
|
1642
|
+
className: "transition duration-300 transform hover:scale-105 hover:shadow-2xl",
|
|
1643
|
+
children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
|
|
1644
|
+
title && /* @__PURE__ */ jsx(
|
|
1645
|
+
Typography,
|
|
1646
|
+
{
|
|
1647
|
+
variant: "h5",
|
|
1648
|
+
className: "font-bold text-lg uppercase text-center tracking-wide mb-4",
|
|
1649
|
+
sx: {
|
|
1650
|
+
color: "#FFFFFF",
|
|
1651
|
+
// Bright white for high visibility
|
|
1652
|
+
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
|
|
1653
|
+
// Strong text shadow for contrast
|
|
1654
|
+
fontSize: "1.5rem"
|
|
1655
|
+
},
|
|
1656
|
+
children: title
|
|
1657
|
+
}
|
|
1658
|
+
),
|
|
1659
|
+
description && /* @__PURE__ */ jsx(
|
|
1660
|
+
Typography,
|
|
1661
|
+
{
|
|
1662
|
+
variant: "body2",
|
|
1663
|
+
className: "text-sm font-medium text-center",
|
|
1664
|
+
sx: {
|
|
1665
|
+
color: "#E3F2FD",
|
|
1666
|
+
// Softer light blue for description
|
|
1667
|
+
textShadow: "0px 2px 4px rgba(0, 0, 0, 0.3)",
|
|
1668
|
+
// Subtle shadow
|
|
1669
|
+
lineHeight: 1.6,
|
|
1670
|
+
marginTop: "1rem"
|
|
1671
|
+
},
|
|
1672
|
+
children: description
|
|
1673
|
+
}
|
|
1674
|
+
)
|
|
1675
|
+
] })
|
|
1676
|
+
}
|
|
1677
|
+
);
|
|
1678
|
+
var PlayerPromptCard_default = PlayerPromptCard;
|
|
1679
|
+
var PlayerTagsEdit = ({
|
|
1680
|
+
selectedTags = [],
|
|
1681
|
+
possibleTags = [],
|
|
1582
1682
|
onToggleTag
|
|
1583
|
-
}) {
|
|
1683
|
+
}) => {
|
|
1584
1684
|
const [inputValue, setInputValue] = useState("");
|
|
1585
1685
|
const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
|
|
1586
1686
|
const options = useMemo(
|
|
1587
|
-
() => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
1687
|
+
() => possibleTags.map((tag) => ({ value: tag.id, label: tag.label, alternate_title: tag.alternate_title })),
|
|
1588
1688
|
[possibleTags]
|
|
1589
1689
|
);
|
|
1590
|
-
return /* @__PURE__ */
|
|
1690
|
+
return /* @__PURE__ */ jsxs(Card, { sx: {
|
|
1691
|
+
margin: "1rem",
|
|
1692
|
+
borderRadius: "12px",
|
|
1693
|
+
boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
|
|
1694
|
+
overflow: "hidden"
|
|
1695
|
+
}, children: [
|
|
1591
1696
|
/* @__PURE__ */ jsx(
|
|
1592
|
-
|
|
1697
|
+
CardHeader,
|
|
1593
1698
|
{
|
|
1594
|
-
title,
|
|
1595
|
-
|
|
1699
|
+
title: "Player Tags",
|
|
1700
|
+
sx: {
|
|
1596
1701
|
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
|
|
1597
1702
|
color: "#FFFFFF",
|
|
1598
1703
|
fontSize: "1.5rem",
|
|
1599
|
-
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
|
|
1704
|
+
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
|
|
1705
|
+
"& .MuiCardHeader-title": {
|
|
1706
|
+
fontWeight: "bold",
|
|
1707
|
+
fontSize: "1.5rem",
|
|
1708
|
+
textAlign: "center",
|
|
1709
|
+
textTransform: "uppercase",
|
|
1710
|
+
letterSpacing: "0.05em"
|
|
1711
|
+
}
|
|
1600
1712
|
}
|
|
1601
1713
|
}
|
|
1602
1714
|
),
|
|
1603
|
-
/* @__PURE__ */ jsxs(
|
|
1604
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
1715
|
+
/* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
|
|
1716
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 mb-4", children: selectedTags.map((tag) => /* @__PURE__ */ jsx(
|
|
1605
1717
|
Chip,
|
|
1606
1718
|
{
|
|
1607
1719
|
tag,
|
|
@@ -1609,13 +1721,19 @@ function TagEditor({
|
|
|
1609
1721
|
},
|
|
1610
1722
|
tag.id
|
|
1611
1723
|
)) }),
|
|
1612
|
-
/* @__PURE__ */ jsx(
|
|
1724
|
+
/* @__PURE__ */ jsx(
|
|
1613
1725
|
Autocomplete,
|
|
1614
1726
|
{
|
|
1615
1727
|
options,
|
|
1616
|
-
filterOptions: (availableOptions, state) =>
|
|
1617
|
-
|
|
1618
|
-
|
|
1728
|
+
filterOptions: (availableOptions, state) => {
|
|
1729
|
+
const query = state.inputValue.toLowerCase();
|
|
1730
|
+
return availableOptions.filter(
|
|
1731
|
+
(option) => {
|
|
1732
|
+
var _a;
|
|
1733
|
+
return !selectedIds.includes(option.value) && (option.label.toLowerCase().includes(query) || ((_a = option.alternate_title) == null ? void 0 : _a.some((title) => title.toLowerCase().includes(query))));
|
|
1734
|
+
}
|
|
1735
|
+
).slice(0, 5);
|
|
1736
|
+
},
|
|
1619
1737
|
value: null,
|
|
1620
1738
|
inputValue,
|
|
1621
1739
|
onInputChange: (event, newInputValue) => {
|
|
@@ -1630,13 +1748,20 @@ function TagEditor({
|
|
|
1630
1748
|
setInputValue("");
|
|
1631
1749
|
},
|
|
1632
1750
|
slots: { popper: CustomPopper },
|
|
1633
|
-
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
1751
|
+
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
1752
|
+
TextField,
|
|
1753
|
+
{
|
|
1754
|
+
...params,
|
|
1755
|
+
label: "Select Tags",
|
|
1756
|
+
variant: "outlined"
|
|
1757
|
+
}
|
|
1758
|
+
)
|
|
1634
1759
|
},
|
|
1635
1760
|
selectedIds.join("-")
|
|
1636
|
-
)
|
|
1761
|
+
)
|
|
1637
1762
|
] })
|
|
1638
|
-
] })
|
|
1639
|
-
}
|
|
1763
|
+
] });
|
|
1764
|
+
};
|
|
1640
1765
|
var CustomPopper = (props) => {
|
|
1641
1766
|
return /* @__PURE__ */ jsx(
|
|
1642
1767
|
Popper,
|
|
@@ -1645,28 +1770,105 @@ var CustomPopper = (props) => {
|
|
|
1645
1770
|
modifiers: [
|
|
1646
1771
|
{
|
|
1647
1772
|
name: "preventOverflow",
|
|
1648
|
-
options: {
|
|
1773
|
+
options: {
|
|
1774
|
+
boundary: "viewport"
|
|
1775
|
+
}
|
|
1649
1776
|
},
|
|
1650
1777
|
{
|
|
1651
1778
|
name: "offset",
|
|
1652
|
-
options: {
|
|
1779
|
+
options: {
|
|
1780
|
+
offset: [0, -10]
|
|
1781
|
+
}
|
|
1653
1782
|
}
|
|
1654
1783
|
],
|
|
1655
1784
|
placement: "top-start"
|
|
1656
1785
|
}
|
|
1657
1786
|
);
|
|
1658
1787
|
};
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1788
|
+
var PlayerTagsEdit_default = PlayerTagsEdit;
|
|
1789
|
+
function PlayerPageLayout({
|
|
1790
|
+
playerData,
|
|
1791
|
+
tags = [],
|
|
1792
|
+
blurbs = [],
|
|
1793
|
+
isOwner = false,
|
|
1794
|
+
possibleTags = [],
|
|
1795
|
+
onToggleTag = () => {
|
|
1796
|
+
}
|
|
1797
|
+
}) {
|
|
1798
|
+
const theme = useTheme();
|
|
1799
|
+
const isSmallScreen = useMediaQuery(theme.breakpoints.down("lg"));
|
|
1800
|
+
const tagsElement = isOwner ? /* @__PURE__ */ jsx(
|
|
1801
|
+
PlayerTagsEdit_default,
|
|
1662
1802
|
{
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
onToggleTag: props.updatePlayerTags
|
|
1803
|
+
selectedTags: tags,
|
|
1804
|
+
possibleTags,
|
|
1805
|
+
onToggleTag
|
|
1667
1806
|
}
|
|
1668
|
-
);
|
|
1807
|
+
) : /* @__PURE__ */ jsx(PlayerTagsCard_default, { tags });
|
|
1808
|
+
return /* @__PURE__ */ jsx(NoSsr, { children: /* @__PURE__ */ jsx(Box, { sx: { padding: "2rem", marginRight: "auto", marginLeft: "auto" }, justifyContent: "center", children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 3, justifyContent: "center", sx: { marginRight: "auto", marginLeft: "auto" }, children: [
|
|
1809
|
+
!isSmallScreen && /* @__PURE__ */ jsxs(Grid, { size: { xs: 12, lg: 3 }, children: [
|
|
1810
|
+
/* @__PURE__ */ jsx(
|
|
1811
|
+
PlayerDetailsCard_default,
|
|
1812
|
+
{
|
|
1813
|
+
preferredPronouns: playerData.preferredPronouns,
|
|
1814
|
+
age: playerData.age,
|
|
1815
|
+
yearsPlaying: playerData.yearsPlaying,
|
|
1816
|
+
discordUsername: playerData.discordUsername,
|
|
1817
|
+
preferredGames: playerData.preferredGames
|
|
1818
|
+
}
|
|
1819
|
+
),
|
|
1820
|
+
tagsElement
|
|
1821
|
+
] }),
|
|
1822
|
+
/* @__PURE__ */ jsx(Grid, { size: { xs: 12, lg: 6 }, children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 3, children: [
|
|
1823
|
+
/* @__PURE__ */ jsx(Grid, { size: { xs: 12, lg: 8 }, children: /* @__PURE__ */ jsx(
|
|
1824
|
+
PlayerDisplayCard_default,
|
|
1825
|
+
{
|
|
1826
|
+
profilePicture: playerData.profilePicture,
|
|
1827
|
+
username: playerData.username,
|
|
1828
|
+
bio: playerData.bio,
|
|
1829
|
+
preferredPronouns: playerData.preferredPronouns
|
|
1830
|
+
}
|
|
1831
|
+
) }),
|
|
1832
|
+
isSmallScreen && /* @__PURE__ */ jsx(Grid, { size: { xs: 12, lg: 3 }, children: /* @__PURE__ */ jsx(
|
|
1833
|
+
PlayerDetailsCard_default,
|
|
1834
|
+
{
|
|
1835
|
+
preferredPronouns: playerData.preferredPronouns,
|
|
1836
|
+
age: playerData.age,
|
|
1837
|
+
yearsPlaying: playerData.yearsPlaying,
|
|
1838
|
+
discordUsername: playerData.discordUsername,
|
|
1839
|
+
preferredGames: playerData.preferredGames
|
|
1840
|
+
}
|
|
1841
|
+
) }),
|
|
1842
|
+
blurbs.map((blurb, index) => /* @__PURE__ */ jsx(Grid, { size: { xs: 12, lg: 8 }, children: /* @__PURE__ */ jsx(
|
|
1843
|
+
PlayerPromptCard_default,
|
|
1844
|
+
{
|
|
1845
|
+
title: blurb.title,
|
|
1846
|
+
description: blurb.description
|
|
1847
|
+
}
|
|
1848
|
+
) }, index))
|
|
1849
|
+
] }) })
|
|
1850
|
+
] }) }) });
|
|
1669
1851
|
}
|
|
1852
|
+
var ExpiredTablesFilter = ({
|
|
1853
|
+
includeExpiredTables,
|
|
1854
|
+
onChange
|
|
1855
|
+
}) => {
|
|
1856
|
+
return /* @__PURE__ */ jsx(Box2, { sx: { mt: 2 }, children: /* @__PURE__ */ jsx(
|
|
1857
|
+
FormControlLabel,
|
|
1858
|
+
{
|
|
1859
|
+
control: /* @__PURE__ */ jsx(
|
|
1860
|
+
Checkbox,
|
|
1861
|
+
{
|
|
1862
|
+
checked: includeExpiredTables,
|
|
1863
|
+
onChange: (e) => onChange(e.target.checked),
|
|
1864
|
+
color: "primary"
|
|
1865
|
+
}
|
|
1866
|
+
),
|
|
1867
|
+
label: "Show expired tables"
|
|
1868
|
+
}
|
|
1869
|
+
) });
|
|
1870
|
+
};
|
|
1871
|
+
var ExpiredTablesFilter_default = ExpiredTablesFilter;
|
|
1670
1872
|
var SORT_OPTIONS = [
|
|
1671
1873
|
{ id: "relevance", label: "Relevance" },
|
|
1672
1874
|
{ id: "newest", label: "Newest" },
|
|
@@ -1680,7 +1882,7 @@ var SortOptions = ({
|
|
|
1680
1882
|
onChange == null ? void 0 : onChange(event.target.value);
|
|
1681
1883
|
};
|
|
1682
1884
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1683
|
-
/* @__PURE__ */ jsx(
|
|
1885
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Sort By" }),
|
|
1684
1886
|
/* @__PURE__ */ jsx(FormControl2, { children: /* @__PURE__ */ jsx(RadioGroup, { defaultValue: defaultValue2, onChange: handleSortChange, children: SORT_OPTIONS.map((option) => /* @__PURE__ */ jsx(
|
|
1685
1887
|
FormControlLabel,
|
|
1686
1888
|
{
|
|
@@ -1695,11 +1897,19 @@ var SortOptions = ({
|
|
|
1695
1897
|
var SortOptions_default = SortOptions;
|
|
1696
1898
|
var TagsFilter = ({
|
|
1697
1899
|
onChange,
|
|
1698
|
-
tags: Tags = []
|
|
1900
|
+
tags: Tags = [],
|
|
1901
|
+
initialSelectedTags
|
|
1699
1902
|
}) => {
|
|
1700
|
-
const [mustHaveTags, setMustHaveTags] = React7.useState([]);
|
|
1701
|
-
const [mustNotHaveTags, setMustNotHaveTags] = React7.useState([]);
|
|
1702
|
-
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7.useState([]);
|
|
1903
|
+
const [mustHaveTags, setMustHaveTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustHave) || []);
|
|
1904
|
+
const [mustNotHaveTags, setMustNotHaveTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.mustNotHave) || []);
|
|
1905
|
+
const [shouldHaveAtLeastOneTags, setShouldHaveAtLeastOneTags] = React7.useState((initialSelectedTags == null ? void 0 : initialSelectedTags.shouldHaveAtLeastOne) || []);
|
|
1906
|
+
React7.useEffect(() => {
|
|
1907
|
+
if (initialSelectedTags) {
|
|
1908
|
+
setMustHaveTags(initialSelectedTags.mustHave || []);
|
|
1909
|
+
setMustNotHaveTags(initialSelectedTags.mustNotHave || []);
|
|
1910
|
+
setShouldHaveAtLeastOneTags(initialSelectedTags.shouldHaveAtLeastOne || []);
|
|
1911
|
+
}
|
|
1912
|
+
}, [initialSelectedTags]);
|
|
1703
1913
|
Tags = !!Tags ? Tags : [];
|
|
1704
1914
|
const [inputValues, setInputValues] = React7.useState({
|
|
1705
1915
|
mustHave: "",
|
|
@@ -1709,7 +1919,7 @@ var TagsFilter = ({
|
|
|
1709
1919
|
const tagOptions = React7.useMemo(() => {
|
|
1710
1920
|
console.log("available tags: " + JSON.stringify(Tags));
|
|
1711
1921
|
console.log(!Tags);
|
|
1712
|
-
if (!Tags || Tags.length
|
|
1922
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return [];
|
|
1713
1923
|
return Tags.map((tag) => ({
|
|
1714
1924
|
value: tag.id,
|
|
1715
1925
|
label: tag.label
|
|
@@ -1741,7 +1951,7 @@ var TagsFilter = ({
|
|
|
1741
1951
|
};
|
|
1742
1952
|
const renderSelectedTags = (selectedTags, category) => {
|
|
1743
1953
|
const tagValues = [];
|
|
1744
|
-
if (!Tags || Tags.length
|
|
1954
|
+
if (!Tags || Tags.length === 0 || !Tags.map) return null;
|
|
1745
1955
|
Tags.forEach((tag) => {
|
|
1746
1956
|
if (selectedTags.includes(tag.id)) {
|
|
1747
1957
|
tagValues.push(tag);
|
|
@@ -1750,27 +1960,11 @@ var TagsFilter = ({
|
|
|
1750
1960
|
if (tagValues.length === 0) {
|
|
1751
1961
|
return null;
|
|
1752
1962
|
}
|
|
1753
|
-
return /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */
|
|
1754
|
-
|
|
1963
|
+
return /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", flexWrap: "wrap", gap: 1, mb: 2 }, children: tagValues.map((tag) => /* @__PURE__ */ jsx(
|
|
1964
|
+
Chip,
|
|
1755
1965
|
{
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
background: tag.color || "#bfbcbb",
|
|
1759
|
-
color: "white",
|
|
1760
|
-
textShadow: "black 0.2em 0.2em 0.4em"
|
|
1761
|
-
},
|
|
1762
|
-
children: [
|
|
1763
|
-
tag.label,
|
|
1764
|
-
/* @__PURE__ */ jsx(
|
|
1765
|
-
"button",
|
|
1766
|
-
{
|
|
1767
|
-
type: "button",
|
|
1768
|
-
onClick: () => handleTagChange(tag.id, category),
|
|
1769
|
-
className: "ml-2 text-red-500 bg-white bg-opacity-50 rounded-full outline-black outline-2 font-outlined",
|
|
1770
|
-
children: "\xD7"
|
|
1771
|
-
}
|
|
1772
|
-
)
|
|
1773
|
-
]
|
|
1966
|
+
tag,
|
|
1967
|
+
removeCallback: (tagId) => handleTagChange(tagId, category)
|
|
1774
1968
|
},
|
|
1775
1969
|
tag.id
|
|
1776
1970
|
)) });
|
|
@@ -1778,7 +1972,7 @@ var TagsFilter = ({
|
|
|
1778
1972
|
const createTagSelector = (category, label) => {
|
|
1779
1973
|
const selectedTags = category === "mustHave" ? mustHaveTags : category === "mustNotHave" ? mustNotHaveTags : shouldHaveAtLeastOneTags;
|
|
1780
1974
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1781
|
-
/* @__PURE__ */ jsx(
|
|
1975
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "subtitle1", gutterBottom: true, sx: { mt: 2 }, children: label }),
|
|
1782
1976
|
renderSelectedTags(selectedTags, category),
|
|
1783
1977
|
/* @__PURE__ */ jsx(
|
|
1784
1978
|
Autocomplete,
|
|
@@ -1824,18 +2018,18 @@ var TagsFilter = ({
|
|
|
1824
2018
|
});
|
|
1825
2019
|
},
|
|
1826
2020
|
slots: { popper: CustomPopper2 },
|
|
1827
|
-
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
2021
|
+
renderInput: (params) => /* @__PURE__ */ jsx(TextField4, { ...params, label: `Select ${label}` })
|
|
1828
2022
|
},
|
|
1829
2023
|
`${category}-${selectedTags.join("-")}`
|
|
1830
2024
|
)
|
|
1831
2025
|
] });
|
|
1832
2026
|
};
|
|
1833
2027
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1834
|
-
/* @__PURE__ */ jsx(
|
|
2028
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Tags" }),
|
|
1835
2029
|
createTagSelector("mustHave", "Must Have Tags"),
|
|
1836
|
-
/* @__PURE__ */ jsx(
|
|
2030
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1837
2031
|
createTagSelector("mustNotHave", "Must Not Have Tags"),
|
|
1838
|
-
/* @__PURE__ */ jsx(
|
|
2032
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1839
2033
|
createTagSelector("shouldHaveAtLeastOne", "Should Contain At Least One Tag")
|
|
1840
2034
|
] });
|
|
1841
2035
|
};
|
|
@@ -1865,21 +2059,80 @@ var CustomPopper2 = (props) => {
|
|
|
1865
2059
|
);
|
|
1866
2060
|
};
|
|
1867
2061
|
var TagsFilter_default = TagsFilter;
|
|
1868
|
-
var
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
2062
|
+
var TextSearchCard = ({ onChange, selectedTypes, initialTextSearch }) => {
|
|
2063
|
+
const [query, setQuery] = React7.useState((initialTextSearch == null ? void 0 : initialTextSearch.query) || "");
|
|
2064
|
+
const [titleOnly, setTitleOnly] = React7.useState((initialTextSearch == null ? void 0 : initialTextSearch.titleOnly) || false);
|
|
2065
|
+
useEffect(() => {
|
|
2066
|
+
if (initialTextSearch) {
|
|
2067
|
+
setQuery(initialTextSearch.query || "");
|
|
2068
|
+
setTitleOnly(initialTextSearch.titleOnly || false);
|
|
2069
|
+
}
|
|
2070
|
+
}, [initialTextSearch]);
|
|
2071
|
+
const shouldShow = selectedTypes.includes("table") || selectedTypes.includes("event");
|
|
2072
|
+
if (!shouldShow) {
|
|
2073
|
+
return null;
|
|
2074
|
+
}
|
|
2075
|
+
const handleQueryChange = (e) => {
|
|
2076
|
+
const newQuery = e.target.value;
|
|
2077
|
+
setQuery(newQuery);
|
|
2078
|
+
if (onChange) {
|
|
2079
|
+
onChange({ query: newQuery, titleOnly });
|
|
2080
|
+
}
|
|
2081
|
+
};
|
|
2082
|
+
const handleTitleOnlyChange = (e) => {
|
|
2083
|
+
const newTitleOnly = e.target.checked;
|
|
2084
|
+
setTitleOnly(newTitleOnly);
|
|
2085
|
+
if (onChange) {
|
|
2086
|
+
onChange({ query, titleOnly: newTitleOnly });
|
|
2087
|
+
}
|
|
2088
|
+
};
|
|
2089
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2090
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Text Search" }),
|
|
2091
|
+
/* @__PURE__ */ jsxs(Box2, { sx: { mb: 2 }, children: [
|
|
2092
|
+
/* @__PURE__ */ jsx(
|
|
2093
|
+
TextField4,
|
|
2094
|
+
{
|
|
2095
|
+
fullWidth: true,
|
|
2096
|
+
label: "Search in title and description",
|
|
2097
|
+
variant: "outlined",
|
|
2098
|
+
value: query,
|
|
2099
|
+
onChange: handleQueryChange,
|
|
2100
|
+
placeholder: "Enter search terms...",
|
|
2101
|
+
sx: { mb: 1 }
|
|
2102
|
+
}
|
|
2103
|
+
),
|
|
2104
|
+
/* @__PURE__ */ jsx(
|
|
2105
|
+
FormControlLabel,
|
|
2106
|
+
{
|
|
2107
|
+
control: /* @__PURE__ */ jsx(
|
|
2108
|
+
Checkbox,
|
|
2109
|
+
{
|
|
2110
|
+
checked: titleOnly,
|
|
2111
|
+
onChange: handleTitleOnlyChange
|
|
2112
|
+
}
|
|
2113
|
+
),
|
|
2114
|
+
label: "Search in title only"
|
|
2115
|
+
}
|
|
2116
|
+
)
|
|
2117
|
+
] })
|
|
2118
|
+
] });
|
|
2119
|
+
};
|
|
2120
|
+
var TextSearchCard_default = TextSearchCard;
|
|
2121
|
+
var TypeFilter = ({ types, initialSelectedTypes = [], onChange }) => {
|
|
2122
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2123
|
+
useEffect(() => {
|
|
2124
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2125
|
+
}, [initialSelectedTypes]);
|
|
1875
2126
|
const handleTypeChange = (typeId) => {
|
|
1876
2127
|
const newSelectedTypes = selectedTypes.includes(typeId) ? selectedTypes.filter((id) => id !== typeId) : [...selectedTypes, typeId];
|
|
1877
2128
|
setSelectedTypes(newSelectedTypes);
|
|
1878
|
-
|
|
2129
|
+
if (onChange) {
|
|
2130
|
+
onChange(newSelectedTypes);
|
|
2131
|
+
}
|
|
1879
2132
|
};
|
|
1880
2133
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1881
|
-
/* @__PURE__ */ jsx(
|
|
1882
|
-
/* @__PURE__ */ jsx(FormGroup, { children:
|
|
2134
|
+
/* @__PURE__ */ jsx(Typography4, { variant: "h6", gutterBottom: true, children: "Type" }),
|
|
2135
|
+
/* @__PURE__ */ jsx(FormGroup, { children: types.map((type) => /* @__PURE__ */ jsx(
|
|
1883
2136
|
FormControlLabel,
|
|
1884
2137
|
{
|
|
1885
2138
|
control: /* @__PURE__ */ jsx(
|
|
@@ -1887,7 +2140,8 @@ var TypeFilter = ({ onChange }) => {
|
|
|
1887
2140
|
{
|
|
1888
2141
|
checked: selectedTypes.includes(type.id),
|
|
1889
2142
|
onChange: () => handleTypeChange(type.id),
|
|
1890
|
-
disabled: type.
|
|
2143
|
+
disabled: type.id === "event",
|
|
2144
|
+
title: type.id === "event" ? "Coming soon! Currently only player and table search are supported." : ""
|
|
1891
2145
|
}
|
|
1892
2146
|
),
|
|
1893
2147
|
label: type.label
|
|
@@ -1898,22 +2152,67 @@ var TypeFilter = ({ onChange }) => {
|
|
|
1898
2152
|
};
|
|
1899
2153
|
var TypeFilter_default = TypeFilter;
|
|
1900
2154
|
var FiltersContainer = ({
|
|
2155
|
+
initialSelectedTypes = [],
|
|
2156
|
+
initialSelectedTags,
|
|
2157
|
+
initialTextSearch,
|
|
2158
|
+
includeExpiredTables = false,
|
|
1901
2159
|
onTypeChange,
|
|
1902
2160
|
onTagChange,
|
|
2161
|
+
onTextSearchChange,
|
|
2162
|
+
onIncludeExpiredTablesChange,
|
|
1903
2163
|
onSubmit,
|
|
1904
|
-
tags
|
|
2164
|
+
tags,
|
|
2165
|
+
searchTypes
|
|
1905
2166
|
}) => {
|
|
2167
|
+
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2168
|
+
useEffect(() => {
|
|
2169
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2170
|
+
}, [initialSelectedTypes]);
|
|
2171
|
+
const handleTypeChange = (types) => {
|
|
2172
|
+
setSelectedTypes(types);
|
|
2173
|
+
if (onTypeChange) {
|
|
2174
|
+
onTypeChange(types);
|
|
2175
|
+
}
|
|
2176
|
+
};
|
|
1906
2177
|
return /* @__PURE__ */ jsxs(Box2, { children: [
|
|
1907
|
-
/* @__PURE__ */ jsx(
|
|
1908
|
-
|
|
2178
|
+
/* @__PURE__ */ jsx(
|
|
2179
|
+
TypeFilter_default,
|
|
2180
|
+
{
|
|
2181
|
+
types: searchTypes,
|
|
2182
|
+
initialSelectedTypes,
|
|
2183
|
+
onChange: handleTypeChange
|
|
2184
|
+
}
|
|
2185
|
+
),
|
|
2186
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2187
|
+
/* @__PURE__ */ jsx(
|
|
2188
|
+
TextSearchCard_default,
|
|
2189
|
+
{
|
|
2190
|
+
selectedTypes,
|
|
2191
|
+
initialTextSearch,
|
|
2192
|
+
onChange: onTextSearchChange
|
|
2193
|
+
}
|
|
2194
|
+
),
|
|
2195
|
+
(selectedTypes.includes("table") || selectedTypes.includes("event")) && /* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
1909
2196
|
/* @__PURE__ */ jsx(
|
|
1910
2197
|
TagsFilter_default,
|
|
1911
2198
|
{
|
|
1912
2199
|
tags,
|
|
2200
|
+
initialSelectedTags,
|
|
1913
2201
|
onChange: onTagChange
|
|
1914
2202
|
}
|
|
1915
2203
|
),
|
|
1916
|
-
/* @__PURE__ */ jsx(
|
|
2204
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } }),
|
|
2205
|
+
selectedTypes.includes("table") && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2206
|
+
/* @__PURE__ */ jsx(
|
|
2207
|
+
ExpiredTablesFilter_default,
|
|
2208
|
+
{
|
|
2209
|
+
includeExpiredTables,
|
|
2210
|
+
onChange: onIncludeExpiredTablesChange || (() => {
|
|
2211
|
+
})
|
|
2212
|
+
}
|
|
2213
|
+
),
|
|
2214
|
+
/* @__PURE__ */ jsx(Divider3, { sx: { my: 2 } })
|
|
2215
|
+
] }),
|
|
1917
2216
|
/* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", mt: 2 }, children: /* @__PURE__ */ jsx(
|
|
1918
2217
|
Button7,
|
|
1919
2218
|
{
|
|
@@ -1971,16 +2270,75 @@ var SearchResultCard_default = SearchResultCard;
|
|
|
1971
2270
|
function SearchPageLayout({
|
|
1972
2271
|
results,
|
|
1973
2272
|
title = "Search Results",
|
|
2273
|
+
initialSelectedTypes = [],
|
|
2274
|
+
initialSelectedTags = {
|
|
2275
|
+
mustHave: [],
|
|
2276
|
+
mustNotHave: [],
|
|
2277
|
+
shouldHaveAtLeastOne: []
|
|
2278
|
+
},
|
|
2279
|
+
initialTextSearch = {
|
|
2280
|
+
query: "",
|
|
2281
|
+
titleOnly: false
|
|
2282
|
+
},
|
|
2283
|
+
includeExpiredTables: initialIncludeExpiredTables = false,
|
|
1974
2284
|
onTypeChange,
|
|
1975
2285
|
onTagChange,
|
|
2286
|
+
onTextSearchChange,
|
|
2287
|
+
onIncludeExpiredTablesChange,
|
|
1976
2288
|
onSubmit,
|
|
1977
2289
|
onResultClick,
|
|
2290
|
+
onPacketChange,
|
|
2291
|
+
pagination,
|
|
1978
2292
|
validTags,
|
|
1979
|
-
allTags
|
|
2293
|
+
allTags,
|
|
2294
|
+
searchTypes,
|
|
2295
|
+
isLoading = false
|
|
1980
2296
|
}) {
|
|
1981
|
-
"use client";
|
|
1982
2297
|
const theme = useTheme();
|
|
1983
2298
|
const isMobile = useMediaQuery(theme.breakpoints.down("md"));
|
|
2299
|
+
const [selectedTypes, setSelectedTypes] = useState(initialSelectedTypes);
|
|
2300
|
+
const [selectedTags, setSelectedTags] = useState(initialSelectedTags);
|
|
2301
|
+
const [textSearch, setTextSearch] = useState(initialTextSearch);
|
|
2302
|
+
const [includeExpiredTables, setIncludeExpiredTables] = useState(initialIncludeExpiredTables);
|
|
2303
|
+
useEffect(() => {
|
|
2304
|
+
setSelectedTypes(initialSelectedTypes);
|
|
2305
|
+
}, [initialSelectedTypes]);
|
|
2306
|
+
useEffect(() => {
|
|
2307
|
+
setSelectedTags(initialSelectedTags);
|
|
2308
|
+
}, [initialSelectedTags]);
|
|
2309
|
+
useEffect(() => {
|
|
2310
|
+
setTextSearch(initialTextSearch);
|
|
2311
|
+
}, [initialTextSearch]);
|
|
2312
|
+
useEffect(() => {
|
|
2313
|
+
setIncludeExpiredTables(initialIncludeExpiredTables);
|
|
2314
|
+
}, [initialIncludeExpiredTables]);
|
|
2315
|
+
const handleTypeChange = (types) => {
|
|
2316
|
+
setSelectedTypes(types);
|
|
2317
|
+
if (onTypeChange) onTypeChange(types);
|
|
2318
|
+
};
|
|
2319
|
+
const handleTagChange = (tags) => {
|
|
2320
|
+
setSelectedTags(tags);
|
|
2321
|
+
if (onTagChange) onTagChange(tags);
|
|
2322
|
+
};
|
|
2323
|
+
const handleTextSearchChange = (ts) => {
|
|
2324
|
+
setTextSearch(ts);
|
|
2325
|
+
if (onTextSearchChange) onTextSearchChange(ts);
|
|
2326
|
+
};
|
|
2327
|
+
const handleIncludeExpiredTablesChange = (include) => {
|
|
2328
|
+
setIncludeExpiredTables(include);
|
|
2329
|
+
if (onIncludeExpiredTablesChange) onIncludeExpiredTablesChange(include);
|
|
2330
|
+
};
|
|
2331
|
+
const handleSubmit = () => {
|
|
2332
|
+
const currentCriteria = {
|
|
2333
|
+
selectedTypes,
|
|
2334
|
+
selectedTags,
|
|
2335
|
+
textSearch,
|
|
2336
|
+
includeExpiredTables
|
|
2337
|
+
};
|
|
2338
|
+
if (onSubmit) {
|
|
2339
|
+
onSubmit(currentCriteria);
|
|
2340
|
+
}
|
|
2341
|
+
};
|
|
1984
2342
|
return /* @__PURE__ */ jsxs(Box2, { sx: { padding: 2 }, children: [
|
|
1985
2343
|
/* @__PURE__ */ jsx(Card10, { sx: { marginBottom: 2 }, children: /* @__PURE__ */ jsx(
|
|
1986
2344
|
CardHeader4,
|
|
@@ -1994,8 +2352,8 @@ function SearchPageLayout({
|
|
|
1994
2352
|
}
|
|
1995
2353
|
}
|
|
1996
2354
|
) }),
|
|
1997
|
-
/* @__PURE__ */ jsxs(
|
|
1998
|
-
/* @__PURE__ */ jsx(
|
|
2355
|
+
/* @__PURE__ */ jsxs(Grid8, { container: true, spacing: 2, children: [
|
|
2356
|
+
/* @__PURE__ */ jsx(Grid8, { size: { xs: 12, md: 3 }, children: /* @__PURE__ */ jsxs(Card10, { sx: { marginBottom: isMobile ? 2 : 0 }, children: [
|
|
1999
2357
|
/* @__PURE__ */ jsx(
|
|
2000
2358
|
CardHeader4,
|
|
2001
2359
|
{
|
|
@@ -2011,14 +2369,21 @@ function SearchPageLayout({
|
|
|
2011
2369
|
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(
|
|
2012
2370
|
FiltersContainer_default,
|
|
2013
2371
|
{
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2372
|
+
initialSelectedTypes: selectedTypes,
|
|
2373
|
+
initialSelectedTags: selectedTags,
|
|
2374
|
+
initialTextSearch: textSearch,
|
|
2375
|
+
includeExpiredTables,
|
|
2376
|
+
onTypeChange: handleTypeChange,
|
|
2377
|
+
onTagChange: handleTagChange,
|
|
2378
|
+
onTextSearchChange: handleTextSearchChange,
|
|
2379
|
+
onIncludeExpiredTablesChange: handleIncludeExpiredTablesChange,
|
|
2380
|
+
onSubmit: handleSubmit,
|
|
2381
|
+
tags: validTags,
|
|
2382
|
+
searchTypes
|
|
2018
2383
|
}
|
|
2019
2384
|
) })
|
|
2020
2385
|
] }) }),
|
|
2021
|
-
/* @__PURE__ */ jsx(
|
|
2386
|
+
/* @__PURE__ */ jsx(Grid8, { size: { xs: 12, md: 9 }, children: /* @__PURE__ */ jsxs(Card10, { children: [
|
|
2022
2387
|
/* @__PURE__ */ jsx(
|
|
2023
2388
|
CardHeader4,
|
|
2024
2389
|
{
|
|
@@ -2031,10 +2396,12 @@ function SearchPageLayout({
|
|
|
2031
2396
|
}
|
|
2032
2397
|
}
|
|
2033
2398
|
),
|
|
2034
|
-
/* @__PURE__ */ jsx(CardContent10, { children: /* @__PURE__ */ jsx(
|
|
2399
|
+
/* @__PURE__ */ jsx(CardContent10, { children: isLoading ? /* @__PURE__ */ jsx(Box2, { sx: { display: "flex", justifyContent: "center", py: 8 }, children: /* @__PURE__ */ jsx(CircularProgress3, { size: 60, thickness: 4 }) }) : /* @__PURE__ */ jsx(
|
|
2035
2400
|
ResultsContainer_default,
|
|
2036
2401
|
{
|
|
2037
2402
|
results,
|
|
2403
|
+
pagination,
|
|
2404
|
+
onPacketChange,
|
|
2038
2405
|
onResultClick,
|
|
2039
2406
|
tags: allTags
|
|
2040
2407
|
}
|
|
@@ -2136,14 +2503,14 @@ var PlayerHighlightsCard = function(props) {
|
|
|
2136
2503
|
removeFromTable
|
|
2137
2504
|
} = props;
|
|
2138
2505
|
return /* @__PURE__ */ jsx(Card, { elevation: 3, sx: { backgroundColor: canEdit ? "#fffbea" : "#f5f9fa", marginBottom: "6px" }, children: /* @__PURE__ */ jsxs(CardContent, { children: [
|
|
2139
|
-
/* @__PURE__ */ jsxs(
|
|
2140
|
-
/* @__PURE__ */ jsxs(
|
|
2141
|
-
/* @__PURE__ */ jsx(
|
|
2142
|
-
/* @__PURE__ */ jsx(
|
|
2506
|
+
/* @__PURE__ */ jsxs(Grid8, { container: true, spacing: 2, direction: "column", children: [
|
|
2507
|
+
/* @__PURE__ */ jsxs(Grid8, { container: true, direction: "row", children: [
|
|
2508
|
+
/* @__PURE__ */ jsx(Grid8, { children: /* @__PURE__ */ jsx(Image2, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || "", width: 64 }) }),
|
|
2509
|
+
/* @__PURE__ */ jsx(Grid8, { children: /* @__PURE__ */ jsx(Typography, { variant: "h5", children: player.username }) })
|
|
2143
2510
|
] }),
|
|
2144
|
-
/* @__PURE__ */ jsx(
|
|
2511
|
+
/* @__PURE__ */ jsx(Grid8, { children: renderTagsFromIds(player.tags, allTags) })
|
|
2145
2512
|
] }),
|
|
2146
|
-
canEdit && /* @__PURE__ */ jsxs(
|
|
2513
|
+
canEdit && /* @__PURE__ */ jsxs(Grid8, { children: [
|
|
2147
2514
|
/* @__PURE__ */ jsx(Button7, { onClick: () => removeFromTable(player), children: isWaitList ? /* @__PURE__ */ jsx("p", { children: "Deny Player" }) : /* @__PURE__ */ jsx("p", { children: "Remove Player" }) }),
|
|
2148
2515
|
canChangeDungeonMaster && /* @__PURE__ */ jsx(Button7, { onClick: () => {
|
|
2149
2516
|
handleAssignToDungeonMaster(player);
|
|
@@ -2155,11 +2522,11 @@ var PlayerHighlightsCard = function(props) {
|
|
|
2155
2522
|
var DMHighlightsCard = function({ canEdit, player, allTags }) {
|
|
2156
2523
|
return /* @__PURE__ */ jsxs(Card, { elevation: 3, sx: { backgroundColor: "#f5f9fa", marginBottom: "6px" }, children: [
|
|
2157
2524
|
/* @__PURE__ */ jsx(CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Game Master" }),
|
|
2158
|
-
/* @__PURE__ */ jsx(CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxs(
|
|
2159
|
-
/* @__PURE__ */ jsx(
|
|
2160
|
-
/* @__PURE__ */ jsxs(
|
|
2161
|
-
/* @__PURE__ */ jsx(
|
|
2162
|
-
/* @__PURE__ */ jsx(
|
|
2525
|
+
/* @__PURE__ */ jsx(CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxs(Grid8, { container: true, spacing: 2, direction: "column", children: [
|
|
2526
|
+
/* @__PURE__ */ jsx(Grid8, { children: /* @__PURE__ */ jsx(Typography, { variant: "h5", children: player.username }) }),
|
|
2527
|
+
/* @__PURE__ */ jsxs(Grid8, { container: true, direction: "row", children: [
|
|
2528
|
+
/* @__PURE__ */ jsx(Grid8, { children: /* @__PURE__ */ jsx(Image2, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl ? player.imageUrl : "", width: 256 }) }),
|
|
2529
|
+
/* @__PURE__ */ jsx(Grid8, { children: renderTagsFromIds(player.tags, allTags) }),
|
|
2163
2530
|
/* @__PURE__ */ jsx(Typography, { children: player.description })
|
|
2164
2531
|
] })
|
|
2165
2532
|
] }) })
|
|
@@ -2313,6 +2680,87 @@ var NextGameCountdown = ({ nextGameTime }) => {
|
|
|
2313
2680
|
timeLeft
|
|
2314
2681
|
] });
|
|
2315
2682
|
};
|
|
2683
|
+
function TagEditor({
|
|
2684
|
+
title = "Tags",
|
|
2685
|
+
selectedTags,
|
|
2686
|
+
possibleTags,
|
|
2687
|
+
onToggleTag
|
|
2688
|
+
}) {
|
|
2689
|
+
const [inputValue, setInputValue] = useState("");
|
|
2690
|
+
const selectedIds = useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
|
|
2691
|
+
const options = useMemo(
|
|
2692
|
+
() => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
2693
|
+
[possibleTags]
|
|
2694
|
+
);
|
|
2695
|
+
return /* @__PURE__ */ jsx(Grid8, { container: true, children: /* @__PURE__ */ jsx(Grid8, { size: { xs: 12 }, children: /* @__PURE__ */ jsxs(Card10, { children: [
|
|
2696
|
+
/* @__PURE__ */ jsx(
|
|
2697
|
+
CardHeader4,
|
|
2698
|
+
{
|
|
2699
|
+
title,
|
|
2700
|
+
style: {
|
|
2701
|
+
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
|
|
2702
|
+
color: "#FFFFFF",
|
|
2703
|
+
fontSize: "1.5rem",
|
|
2704
|
+
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
|
|
2705
|
+
}
|
|
2706
|
+
}
|
|
2707
|
+
),
|
|
2708
|
+
/* @__PURE__ */ jsxs(CardContent10, { children: [
|
|
2709
|
+
/* @__PURE__ */ jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsx(
|
|
2710
|
+
Chip,
|
|
2711
|
+
{
|
|
2712
|
+
tag,
|
|
2713
|
+
removeCallback: () => onToggleTag(tag.id)
|
|
2714
|
+
},
|
|
2715
|
+
tag.id
|
|
2716
|
+
)) }),
|
|
2717
|
+
/* @__PURE__ */ jsx(Grid8, { container: true, spacing: 3, children: /* @__PURE__ */ jsx(Grid8, { sx: { marginTop: 3, width: "100%" }, children: /* @__PURE__ */ jsx(
|
|
2718
|
+
Autocomplete,
|
|
2719
|
+
{
|
|
2720
|
+
options,
|
|
2721
|
+
filterOptions: (availableOptions, state) => availableOptions.filter(
|
|
2722
|
+
(option) => !selectedIds.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
|
|
2723
|
+
).slice(0, 3),
|
|
2724
|
+
value: null,
|
|
2725
|
+
inputValue,
|
|
2726
|
+
onInputChange: (event, newInputValue) => {
|
|
2727
|
+
if (event && event.type === "change") {
|
|
2728
|
+
setInputValue(newInputValue);
|
|
2729
|
+
}
|
|
2730
|
+
},
|
|
2731
|
+
onChange: (event, newValue) => {
|
|
2732
|
+
if (newValue) {
|
|
2733
|
+
onToggleTag(newValue.value);
|
|
2734
|
+
}
|
|
2735
|
+
setInputValue("");
|
|
2736
|
+
},
|
|
2737
|
+
slots: { popper: CustomPopper3 },
|
|
2738
|
+
renderInput: (params) => /* @__PURE__ */ jsx(TextField4, { ...params, label: "Select Tags" })
|
|
2739
|
+
},
|
|
2740
|
+
selectedIds.join("-")
|
|
2741
|
+
) }) })
|
|
2742
|
+
] })
|
|
2743
|
+
] }) }) });
|
|
2744
|
+
}
|
|
2745
|
+
var CustomPopper3 = (props) => {
|
|
2746
|
+
return /* @__PURE__ */ jsx(
|
|
2747
|
+
Popper,
|
|
2748
|
+
{
|
|
2749
|
+
...props,
|
|
2750
|
+
modifiers: [
|
|
2751
|
+
{
|
|
2752
|
+
name: "preventOverflow",
|
|
2753
|
+
options: { boundary: "viewport" }
|
|
2754
|
+
},
|
|
2755
|
+
{
|
|
2756
|
+
name: "offset",
|
|
2757
|
+
options: { offset: [0, -10] }
|
|
2758
|
+
}
|
|
2759
|
+
],
|
|
2760
|
+
placement: "top-start"
|
|
2761
|
+
}
|
|
2762
|
+
);
|
|
2763
|
+
};
|
|
2316
2764
|
function TablePageLayout(props) {
|
|
2317
2765
|
var _a;
|
|
2318
2766
|
const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers } = props;
|
|
@@ -2383,9 +2831,9 @@ function TablePageLayout(props) {
|
|
|
2383
2831
|
p: 2,
|
|
2384
2832
|
boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)"
|
|
2385
2833
|
},
|
|
2386
|
-
children: /* @__PURE__ */ jsxs(
|
|
2834
|
+
children: /* @__PURE__ */ jsxs(Grid8, { container: true, direction: "column", children: [
|
|
2387
2835
|
/* @__PURE__ */ jsxs(
|
|
2388
|
-
|
|
2836
|
+
Grid8,
|
|
2389
2837
|
{
|
|
2390
2838
|
container: true,
|
|
2391
2839
|
direction: "column",
|
|
@@ -2430,7 +2878,7 @@ function TablePageLayout(props) {
|
|
|
2430
2878
|
value: currentShortDescription
|
|
2431
2879
|
}
|
|
2432
2880
|
) : /* @__PURE__ */ jsx(Typography, { sx: { color: "white", opacity: 0.95 }, children: currentShortDescription }),
|
|
2433
|
-
/* @__PURE__ */ jsx(
|
|
2881
|
+
/* @__PURE__ */ jsx(Grid8, { container: true, children: isTableInEditMode ? renderEditableTags(currentTags, allTags, handleToggleTag) : renderTags(currentTagIds, allTags) }),
|
|
2434
2882
|
/* @__PURE__ */ jsx(
|
|
2435
2883
|
TableActionsBar,
|
|
2436
2884
|
{
|
|
@@ -2450,8 +2898,8 @@ function TablePageLayout(props) {
|
|
|
2450
2898
|
]
|
|
2451
2899
|
}
|
|
2452
2900
|
),
|
|
2453
|
-
/* @__PURE__ */ jsxs(
|
|
2454
|
-
/* @__PURE__ */ jsx(
|
|
2901
|
+
/* @__PURE__ */ jsxs(Grid8, { container: true, spacing: 2, sx: { mt: 2 }, children: [
|
|
2902
|
+
/* @__PURE__ */ jsx(Grid8, { size: { xs: 12, md: 8 }, children: /* @__PURE__ */ jsx(Card, { sx: { height: "100%" }, children: /* @__PURE__ */ jsx(CardContent, { children: isTableInEditMode ? /* @__PURE__ */ jsx(
|
|
2455
2903
|
AutoResizingTextarea_default,
|
|
2456
2904
|
{
|
|
2457
2905
|
isInEditMode: isTableInEditMode,
|
|
@@ -2460,7 +2908,7 @@ function TablePageLayout(props) {
|
|
|
2460
2908
|
value: currentDescription
|
|
2461
2909
|
}
|
|
2462
2910
|
) : /* @__PURE__ */ jsx(Typography, { sx: { whiteSpace: "pre-wrap" }, children: currentDescription }) }) }) }),
|
|
2463
|
-
/* @__PURE__ */ jsxs(
|
|
2911
|
+
/* @__PURE__ */ jsxs(Grid8, { size: { xs: 12, md: 4 }, children: [
|
|
2464
2912
|
/* @__PURE__ */ jsx(DMHighlightsCard, { canEdit: isTableInEditMode, player: currentDungeonMaster, allTags }),
|
|
2465
2913
|
/* @__PURE__ */ jsxs(Card, { sx: { height: "100%" }, children: [
|
|
2466
2914
|
/* @__PURE__ */ jsx(CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Players: " }),
|
|
@@ -2487,13 +2935,13 @@ var renderTags = function(tags, allTags) {
|
|
|
2487
2935
|
if (!tags || !allTags) {
|
|
2488
2936
|
return /* @__PURE__ */ jsx(Fragment, {});
|
|
2489
2937
|
}
|
|
2490
|
-
return /* @__PURE__ */ jsx(
|
|
2938
|
+
return /* @__PURE__ */ jsx(Grid8, { container: true, spacing: 1, sx: { pb: 1.5 }, children: tags.map((tagId) => {
|
|
2491
2939
|
const tag = allTags.find((potentialTag) => tagId === potentialTag.id);
|
|
2492
2940
|
return tag ? generateTagsDisplay(tag) : /* @__PURE__ */ jsx(Fragment, {});
|
|
2493
2941
|
}) });
|
|
2494
2942
|
};
|
|
2495
2943
|
var renderEditableTags = function(selectedTags, allTags, onToggleTag) {
|
|
2496
|
-
return /* @__PURE__ */ jsx(
|
|
2944
|
+
return /* @__PURE__ */ jsx(Grid8, { size: { xs: 12 }, sx: { pb: 1.5 }, children: /* @__PURE__ */ jsx(
|
|
2497
2945
|
TagEditor,
|
|
2498
2946
|
{
|
|
2499
2947
|
title: "Table Tags",
|
|
@@ -2508,6 +2956,6 @@ var renderEditableTags = function(selectedTags, allTags, onToggleTag) {
|
|
|
2508
2956
|
};
|
|
2509
2957
|
var TablePageLayout_default = TablePageLayout;
|
|
2510
2958
|
|
|
2511
|
-
export { AutoResizingTextarea_default as AutoResizingTextarea, BaseSearchResultCard_default as BaseSearchResultCard, CANDIDATE_TIMEZONES, Chip, DMHighlightsCard, EventBanner, EventBannerEdit, EventBasicInfo, EventBasicInfoEdit, EventEditProvider, EventPageLayout, EventResultCard_default as EventResultCard, EventTablesCard_default as EventTablesCard, FiltersContainer_default as FiltersContainer, GameTableProvider, ModalContext, ModalProvider_default as ModalProvider, NextGameCountdown, PlayerDetailsCard_default as PlayerDetailsCard, PlayerDisplayCard_default as PlayerDisplayCard, PlayerHighlightsCard, PlayerPromptCard_default as PlayerPromptCard, PlayerResultCard_default as PlayerResultCard, PlayerTagsCard, PlayerTagsEdit, PlayersScrollableList_default as PlayersScrollableList, ResultsContainer_default as ResultsContainer, ScrollableResultsList_default as ScrollableResultsList, SearchPageLayout, SearchResultCard_default as SearchResultCard, SortOptions_default as SortOptions, TableActionsBar, TablePageLayout_default as TablePageLayout, TableResultCard_default as TableResultCard, TablesScrollableList_default as TablesScrollableList, TagEditor, TagsFilter_default as TagsFilter, TypeFilter_default as TypeFilter, generateTagsDisplay, renderTagsFromIds, useEventEdit, useGameTableContext, useModal };
|
|
2959
|
+
export { AutoResizingTextarea_default as AutoResizingTextarea, BaseSearchResultCard_default as BaseSearchResultCard, CANDIDATE_TIMEZONES, Chip, DMHighlightsCard, EventBanner, EventBannerEdit, EventBasicInfo, EventBasicInfoEdit, EventEditProvider, EventPageLayout, EventResultCard_default as EventResultCard, EventTablesCard_default as EventTablesCard, ExpiredTablesFilter_default as ExpiredTablesFilter, FiltersContainer_default as FiltersContainer, GameTableProvider, ModalContext, ModalProvider_default as ModalProvider, NextGameCountdown, NextGameLabel_default as NextGameLabel, PlayerDetailsCard_default as PlayerDetailsCard, PlayerDisplayCard_default as PlayerDisplayCard, PlayerHighlightsCard, PlayerPageLayout, PlayerPromptCard_default as PlayerPromptCard, PlayerResultCard_default as PlayerResultCard, PlayerTagsCard_default as PlayerTagsCard, PlayerTagsEdit_default as PlayerTagsEdit, PlayersScrollableList_default as PlayersScrollableList, ResultsContainer_default as ResultsContainer, ScrollableResultsList_default as ScrollableResultsList, SearchPageLayout, SearchResultCard_default as SearchResultCard, SortOptions_default as SortOptions, TableActionsBar, TablePageLayout_default as TablePageLayout, TableResultCard_default as TableResultCard, TablesScrollableList_default as TablesScrollableList, TagEditor, TagsFilter_default as TagsFilter, TextSearchCard_default as TextSearchCard, TypeFilter_default as TypeFilter, generateTagsDisplay, renderTagsFromIds, useEventEdit, useGameTableContext, useModal };
|
|
2512
2960
|
//# sourceMappingURL=index.mjs.map
|
|
2513
2961
|
//# sourceMappingURL=index.mjs.map
|