@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/EventPage/index.cjs
CHANGED
|
@@ -12,12 +12,18 @@ var CancelIcon = require('@mui/icons-material/Cancel');
|
|
|
12
12
|
var CheckCircleIcon = require('@mui/icons-material/CheckCircle');
|
|
13
13
|
var Box2 = require('@mui/material/Box');
|
|
14
14
|
var Grid5 = require('@mui/material/Grid');
|
|
15
|
-
var
|
|
16
|
-
var
|
|
15
|
+
var Card3 = require('@mui/material/Card');
|
|
16
|
+
var CardContent3 = require('@mui/material/CardContent');
|
|
17
17
|
var CardHeader = require('@mui/material/CardHeader');
|
|
18
18
|
var Divider = require('@mui/material/Divider');
|
|
19
|
+
var Typography4 = require('@mui/material/Typography');
|
|
20
|
+
var Pagination = require('@mui/material/Pagination');
|
|
19
21
|
var Avatar = require('@mui/material/Avatar');
|
|
20
|
-
var
|
|
22
|
+
var Chip2 = require('@mui/material/Chip');
|
|
23
|
+
var LinearProgress = require('@mui/material/LinearProgress');
|
|
24
|
+
var PersonIcon = require('@mui/icons-material/Person');
|
|
25
|
+
var SupervisorAccountIcon = require('@mui/icons-material/SupervisorAccount');
|
|
26
|
+
var TableRestaurantIcon = require('@mui/icons-material/TableRestaurant');
|
|
21
27
|
var CalendarTodayIcon = require('@mui/icons-material/CalendarToday');
|
|
22
28
|
var LocationOnIcon = require('@mui/icons-material/LocationOn');
|
|
23
29
|
var EventIcon = require('@mui/icons-material/Event');
|
|
@@ -32,12 +38,18 @@ var CancelIcon__default = /*#__PURE__*/_interopDefault(CancelIcon);
|
|
|
32
38
|
var CheckCircleIcon__default = /*#__PURE__*/_interopDefault(CheckCircleIcon);
|
|
33
39
|
var Box2__default = /*#__PURE__*/_interopDefault(Box2);
|
|
34
40
|
var Grid5__default = /*#__PURE__*/_interopDefault(Grid5);
|
|
35
|
-
var
|
|
36
|
-
var
|
|
41
|
+
var Card3__default = /*#__PURE__*/_interopDefault(Card3);
|
|
42
|
+
var CardContent3__default = /*#__PURE__*/_interopDefault(CardContent3);
|
|
37
43
|
var CardHeader__default = /*#__PURE__*/_interopDefault(CardHeader);
|
|
38
44
|
var Divider__default = /*#__PURE__*/_interopDefault(Divider);
|
|
45
|
+
var Typography4__default = /*#__PURE__*/_interopDefault(Typography4);
|
|
46
|
+
var Pagination__default = /*#__PURE__*/_interopDefault(Pagination);
|
|
39
47
|
var Avatar__default = /*#__PURE__*/_interopDefault(Avatar);
|
|
40
|
-
var
|
|
48
|
+
var Chip2__default = /*#__PURE__*/_interopDefault(Chip2);
|
|
49
|
+
var LinearProgress__default = /*#__PURE__*/_interopDefault(LinearProgress);
|
|
50
|
+
var PersonIcon__default = /*#__PURE__*/_interopDefault(PersonIcon);
|
|
51
|
+
var SupervisorAccountIcon__default = /*#__PURE__*/_interopDefault(SupervisorAccountIcon);
|
|
52
|
+
var TableRestaurantIcon__default = /*#__PURE__*/_interopDefault(TableRestaurantIcon);
|
|
41
53
|
var CalendarTodayIcon__default = /*#__PURE__*/_interopDefault(CalendarTodayIcon);
|
|
42
54
|
var LocationOnIcon__default = /*#__PURE__*/_interopDefault(LocationOnIcon);
|
|
43
55
|
var EventIcon__default = /*#__PURE__*/_interopDefault(EventIcon);
|
|
@@ -129,6 +141,13 @@ function Chip({ tag, removeCallback }) {
|
|
|
129
141
|
function generateTagsDisplay(tag) {
|
|
130
142
|
return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
|
|
131
143
|
}
|
|
144
|
+
function renderTagsFromIds(ids, legalTags) {
|
|
145
|
+
if (!ids || !legalTags || legalTags.length === 0) {
|
|
146
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
147
|
+
}
|
|
148
|
+
const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
|
|
149
|
+
return validTags.map((tag) => generateTagsDisplay(tag));
|
|
150
|
+
}
|
|
132
151
|
function EventBannerEdit({
|
|
133
152
|
initialValue,
|
|
134
153
|
onCancel,
|
|
@@ -937,6 +956,14 @@ var generateLink = function(link) {
|
|
|
937
956
|
link.text
|
|
938
957
|
);
|
|
939
958
|
};
|
|
959
|
+
var NextGameLabel = ({ nextGameTime }) => {
|
|
960
|
+
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
961
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
962
|
+
"Next Game: ",
|
|
963
|
+
date.toLocaleString()
|
|
964
|
+
] });
|
|
965
|
+
};
|
|
966
|
+
var NextGameLabel_default = NextGameLabel;
|
|
940
967
|
var BaseSearchResultCard = ({
|
|
941
968
|
result,
|
|
942
969
|
onClick,
|
|
@@ -944,13 +971,19 @@ var BaseSearchResultCard = ({
|
|
|
944
971
|
icon,
|
|
945
972
|
tags
|
|
946
973
|
}) => {
|
|
947
|
-
const handleClick = () => {
|
|
974
|
+
const handleClick = (e) => {
|
|
948
975
|
if (onClick) {
|
|
949
|
-
|
|
976
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
977
|
+
e.stopPropagation();
|
|
978
|
+
const url = `/${result.type}/${result.id}`;
|
|
979
|
+
window.open(url, "_blank");
|
|
980
|
+
} else {
|
|
981
|
+
onClick(result.id);
|
|
982
|
+
}
|
|
950
983
|
}
|
|
951
984
|
};
|
|
952
985
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
953
|
-
|
|
986
|
+
Card3__default.default,
|
|
954
987
|
{
|
|
955
988
|
elevation: 6,
|
|
956
989
|
sx: {
|
|
@@ -963,48 +996,22 @@ var BaseSearchResultCard = ({
|
|
|
963
996
|
},
|
|
964
997
|
marginBottom: 2
|
|
965
998
|
},
|
|
966
|
-
onClick: handleClick,
|
|
967
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
968
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
969
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
970
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
999
|
+
onClick: (e) => handleClick(e),
|
|
1000
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent3__default.default, { sx: { display: "flex", alignItems: "flex-start" }, children: [
|
|
1001
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mr: 2, display: "flex", alignItems: "center", pt: 0.5 }, children: icon }),
|
|
1002
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { flex: 1 }, children: [
|
|
1003
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", sx: { mb: 1 }, children: result.title }),
|
|
1004
|
+
result.nextGameTime && /* @__PURE__ */ jsxRuntime.jsx(NextGameLabel_default, { nextGameTime: result.nextGameTime }),
|
|
1005
|
+
result.type === "table" && result.shortDescription ? /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mb: 1 }, children: result.shortDescription }) : null,
|
|
971
1006
|
children,
|
|
972
|
-
/* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
986
|
-
visible.map((tag) => generateTagsDisplay(tag)),
|
|
987
|
-
hiddenCount > 0 && /* @__PURE__ */ jsxRuntime.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
|
-
})() }) })
|
|
1007
|
+
result.type === "table" ? /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: (() => {
|
|
1008
|
+
var _a, _b;
|
|
1009
|
+
const full = (_b = (_a = result.fullDescription) != null ? _a : result.description) != null ? _b : "";
|
|
1010
|
+
if (typeof full !== "string") return "";
|
|
1011
|
+
const text = full || "";
|
|
1012
|
+
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
1013
|
+
})() }) : /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: result.description }),
|
|
1014
|
+
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
|
|
1008
1015
|
] })
|
|
1009
1016
|
] })
|
|
1010
1017
|
}
|
|
@@ -1059,21 +1066,60 @@ var PlayerResultCard = ({
|
|
|
1059
1066
|
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: playerIcon, tags });
|
|
1060
1067
|
};
|
|
1061
1068
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1062
|
-
var TableResultCard = ({
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1069
|
+
var TableResultCard = ({
|
|
1070
|
+
result,
|
|
1071
|
+
onClick,
|
|
1072
|
+
tags
|
|
1073
|
+
}) => {
|
|
1074
|
+
const rawCapacity = result.capacity;
|
|
1075
|
+
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
1076
|
+
const capacity = hasDefinedCapacity ? rawCapacity : 0;
|
|
1077
|
+
const activePlayers = typeof result.numPlayers === "number" ? result.numPlayers : 0;
|
|
1078
|
+
const availableSlots = Math.max(capacity - activePlayers, 0);
|
|
1079
|
+
const hasDM = typeof result.hasDM === "boolean" ? result.hasDM : Boolean(result.dungeonMaster);
|
|
1080
|
+
const occupancyPercentage = hasDefinedCapacity ? activePlayers / capacity * 100 : 100;
|
|
1081
|
+
const tableIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1082
|
+
TableRestaurantIcon__default.default,
|
|
1083
|
+
{
|
|
1084
|
+
sx: {
|
|
1085
|
+
fontSize: 40,
|
|
1086
|
+
color: "primary.main"
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
);
|
|
1090
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: tableIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1091
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1092
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1093
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Players:" }),
|
|
1094
|
+
" ",
|
|
1095
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1073
1096
|
] }),
|
|
1074
|
-
|
|
1097
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1098
|
+
Chip2__default.default,
|
|
1099
|
+
{
|
|
1100
|
+
icon: hasDM ? /* @__PURE__ */ jsxRuntime.jsx(SupervisorAccountIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(PersonIcon__default.default, {}),
|
|
1101
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1102
|
+
color: hasDM ? "success" : "warning",
|
|
1103
|
+
size: "small"
|
|
1104
|
+
}
|
|
1105
|
+
)
|
|
1075
1106
|
] }),
|
|
1076
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1107
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1108
|
+
LinearProgress__default.default,
|
|
1109
|
+
{
|
|
1110
|
+
variant: "determinate",
|
|
1111
|
+
value: occupancyPercentage,
|
|
1112
|
+
sx: {
|
|
1113
|
+
height: 10,
|
|
1114
|
+
borderRadius: 5,
|
|
1115
|
+
backgroundColor: "#e0e0e0",
|
|
1116
|
+
"& .MuiLinearProgress-bar": {
|
|
1117
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
),
|
|
1122
|
+
hasDefinedCapacity && /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
|
|
1077
1123
|
] }) });
|
|
1078
1124
|
};
|
|
1079
1125
|
var TableResultCard_default = TableResultCard;
|
|
@@ -1092,20 +1138,42 @@ var EventResultCard = ({
|
|
|
1092
1138
|
try {
|
|
1093
1139
|
const date = new Date(dateString);
|
|
1094
1140
|
return date.toLocaleDateString("en-US", options);
|
|
1095
|
-
} catch {
|
|
1141
|
+
} catch (error) {
|
|
1096
1142
|
return dateString;
|
|
1097
1143
|
}
|
|
1098
1144
|
};
|
|
1099
1145
|
const formattedDate = result.date ? formatDate(result.date) : "Date TBD";
|
|
1100
1146
|
const location = result.location || "Location TBD";
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1147
|
+
const eventIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1148
|
+
EventIcon__default.default,
|
|
1149
|
+
{
|
|
1150
|
+
sx: {
|
|
1151
|
+
fontSize: 40,
|
|
1152
|
+
color: "primary.main"
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
);
|
|
1156
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseSearchResultCard_default, { result, onClick, icon: eventIcon, tags, children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1157
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1158
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarTodayIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1159
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1160
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Date:" }),
|
|
1161
|
+
" ",
|
|
1162
|
+
formattedDate
|
|
1163
|
+
] })
|
|
1105
1164
|
] }),
|
|
1106
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1107
|
-
/* @__PURE__ */ jsxRuntime.jsx(LocationOnIcon__default.default, { sx: { mr: 1,
|
|
1108
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1165
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1166
|
+
/* @__PURE__ */ jsxRuntime.jsx(LocationOnIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1167
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1168
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Location:" }),
|
|
1169
|
+
" ",
|
|
1170
|
+
location
|
|
1171
|
+
] })
|
|
1172
|
+
] }),
|
|
1173
|
+
result.organizer && /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1174
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Organizer:" }),
|
|
1175
|
+
" ",
|
|
1176
|
+
result.organizer
|
|
1109
1177
|
] })
|
|
1110
1178
|
] }) });
|
|
1111
1179
|
};
|
|
@@ -1113,9 +1181,11 @@ var EventResultCard_default = EventResultCard;
|
|
|
1113
1181
|
var ResultsContainer = ({
|
|
1114
1182
|
results,
|
|
1115
1183
|
onResultClick,
|
|
1116
|
-
tags
|
|
1184
|
+
tags,
|
|
1185
|
+
pagination,
|
|
1186
|
+
onPacketChange
|
|
1117
1187
|
}) => {
|
|
1118
|
-
if (results.length === 0 || !results.map) {
|
|
1188
|
+
if (!results || results.length === 0 || !results.map) {
|
|
1119
1189
|
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1120
1190
|
}
|
|
1121
1191
|
const onPlayerClick = (id) => {
|
|
@@ -1127,43 +1197,68 @@ var ResultsContainer = ({
|
|
|
1127
1197
|
const onEventClick = (id) => {
|
|
1128
1198
|
onResultClick == null ? void 0 : onResultClick(id, "event");
|
|
1129
1199
|
};
|
|
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
|
-
|
|
1200
|
+
const handlePacketChange = (_event, packet) => {
|
|
1201
|
+
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1202
|
+
};
|
|
1203
|
+
const startResult = pagination ? (pagination.currentPacket - 1) * pagination.packetSize + 1 : 1;
|
|
1204
|
+
const endResult = pagination ? Math.min(pagination.currentPacket * pagination.packetSize, pagination.totalResults) : results.length;
|
|
1205
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
1206
|
+
pagination && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", color: "text.secondary", children: [
|
|
1207
|
+
"Showing ",
|
|
1208
|
+
startResult,
|
|
1209
|
+
"-",
|
|
1210
|
+
endResult,
|
|
1211
|
+
" of ",
|
|
1212
|
+
pagination.totalResults,
|
|
1213
|
+
" results"
|
|
1214
|
+
] }) }),
|
|
1215
|
+
results.map((result, index) => {
|
|
1216
|
+
switch (result.type) {
|
|
1217
|
+
case "player":
|
|
1218
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1219
|
+
PlayerResultCard_default,
|
|
1220
|
+
{
|
|
1221
|
+
result,
|
|
1222
|
+
onClick: onPlayerClick,
|
|
1223
|
+
tags
|
|
1224
|
+
},
|
|
1225
|
+
result.id
|
|
1226
|
+
);
|
|
1227
|
+
case "table":
|
|
1228
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1229
|
+
TableResultCard_default,
|
|
1230
|
+
{
|
|
1231
|
+
result,
|
|
1232
|
+
onClick: onTableClick,
|
|
1233
|
+
tags
|
|
1234
|
+
},
|
|
1235
|
+
result.id
|
|
1236
|
+
);
|
|
1237
|
+
case "event":
|
|
1238
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1239
|
+
EventResultCard_default,
|
|
1240
|
+
{
|
|
1241
|
+
result,
|
|
1242
|
+
onClick: onEventClick,
|
|
1243
|
+
tags
|
|
1244
|
+
},
|
|
1245
|
+
result.id
|
|
1246
|
+
);
|
|
1247
|
+
default:
|
|
1248
|
+
console.error(`Unknown result type: ${result.type}`);
|
|
1249
|
+
return null;
|
|
1250
|
+
}
|
|
1251
|
+
}),
|
|
1252
|
+
pagination && pagination.totalPackets > 1 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", mt: 4 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1253
|
+
Pagination__default.default,
|
|
1254
|
+
{
|
|
1255
|
+
count: pagination.totalPackets,
|
|
1256
|
+
page: pagination.currentPacket,
|
|
1257
|
+
onChange: handlePacketChange,
|
|
1258
|
+
color: "primary"
|
|
1259
|
+
}
|
|
1260
|
+
) })
|
|
1261
|
+
] });
|
|
1167
1262
|
};
|
|
1168
1263
|
var ResultsContainer_default = ResultsContainer;
|
|
1169
1264
|
var ScrollableResultsList = ({
|
|
@@ -1181,21 +1276,14 @@ var TablesScrollableList = ({
|
|
|
1181
1276
|
results,
|
|
1182
1277
|
tags,
|
|
1183
1278
|
maxHeight,
|
|
1184
|
-
onResultClick
|
|
1185
|
-
sortBy = "availability"
|
|
1279
|
+
onResultClick
|
|
1186
1280
|
}) => {
|
|
1187
1281
|
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
1282
|
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1195
1283
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1196
1284
|
ScrollableResultsList_default,
|
|
1197
1285
|
{
|
|
1198
|
-
results:
|
|
1286
|
+
results: tables,
|
|
1199
1287
|
tags,
|
|
1200
1288
|
maxHeight,
|
|
1201
1289
|
onResultClick: (id, type) => {
|
|
@@ -1211,10 +1299,10 @@ var EventTablesCard = ({
|
|
|
1211
1299
|
maxHeight = 450,
|
|
1212
1300
|
onTableClick
|
|
1213
1301
|
}) => {
|
|
1214
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1302
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Card3__default.default, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1215
1303
|
/* @__PURE__ */ jsxRuntime.jsx(CardHeader__default.default, { title: "Tables" }),
|
|
1216
1304
|
/* @__PURE__ */ jsxRuntime.jsx(Divider__default.default, {}),
|
|
1217
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1305
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent3__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(TablesScrollableList_default, { results: tables, tags, maxHeight, onResultClick: onTableClick }) })
|
|
1218
1306
|
] });
|
|
1219
1307
|
};
|
|
1220
1308
|
var EventTablesCard_default = EventTablesCard;
|