@mbpockets/shared-ui 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/EventPage/editMode/index.cjs +28 -11
  2. package/dist/EventPage/editMode/index.cjs.map +1 -1
  3. package/dist/EventPage/editMode/index.mjs +29 -12
  4. package/dist/EventPage/editMode/index.mjs.map +1 -1
  5. package/dist/EventPage/editMode.cjs +28 -11
  6. package/dist/EventPage/editMode.cjs.map +1 -1
  7. package/dist/EventPage/editMode.mjs +29 -12
  8. package/dist/EventPage/editMode.mjs.map +1 -1
  9. package/dist/EventPage/index.cjs +28 -11
  10. package/dist/EventPage/index.cjs.map +1 -1
  11. package/dist/EventPage/index.mjs +30 -13
  12. package/dist/EventPage/index.mjs.map +1 -1
  13. package/dist/EventPage.cjs +28 -11
  14. package/dist/EventPage.cjs.map +1 -1
  15. package/dist/EventPage.mjs +30 -13
  16. package/dist/EventPage.mjs.map +1 -1
  17. package/dist/PlayerPage/index.cjs +311 -99
  18. package/dist/PlayerPage/index.cjs.map +1 -1
  19. package/dist/PlayerPage/index.d.cts +1 -1
  20. package/dist/PlayerPage/index.d.ts +1 -1
  21. package/dist/PlayerPage/index.mjs +310 -98
  22. package/dist/PlayerPage/index.mjs.map +1 -1
  23. package/dist/PlayerPage.cjs +311 -99
  24. package/dist/PlayerPage.cjs.map +1 -1
  25. package/dist/PlayerPage.d.cts +24 -6
  26. package/dist/PlayerPage.d.ts +24 -6
  27. package/dist/PlayerPage.mjs +310 -98
  28. package/dist/PlayerPage.mjs.map +1 -1
  29. package/dist/ProfilePage/index.cjs +509 -63
  30. package/dist/ProfilePage/index.cjs.map +1 -1
  31. package/dist/ProfilePage/index.d.cts +2 -1
  32. package/dist/ProfilePage/index.d.ts +2 -1
  33. package/dist/ProfilePage/index.mjs +504 -58
  34. package/dist/ProfilePage/index.mjs.map +1 -1
  35. package/dist/ProfilePage.cjs +509 -63
  36. package/dist/ProfilePage.cjs.map +1 -1
  37. package/dist/ProfilePage.d.cts +4 -10
  38. package/dist/ProfilePage.d.ts +4 -10
  39. package/dist/ProfilePage.mjs +504 -58
  40. package/dist/ProfilePage.mjs.map +1 -1
  41. package/dist/SearchPage/Results/index.cjs +28 -11
  42. package/dist/SearchPage/Results/index.cjs.map +1 -1
  43. package/dist/SearchPage/Results/index.mjs +30 -13
  44. package/dist/SearchPage/Results/index.mjs.map +1 -1
  45. package/dist/SearchPage/Results.cjs +28 -11
  46. package/dist/SearchPage/Results.cjs.map +1 -1
  47. package/dist/SearchPage/Results.mjs +30 -13
  48. package/dist/SearchPage/Results.mjs.map +1 -1
  49. package/dist/SearchPage/index.cjs +28 -11
  50. package/dist/SearchPage/index.cjs.map +1 -1
  51. package/dist/SearchPage/index.mjs +30 -13
  52. package/dist/SearchPage/index.mjs.map +1 -1
  53. package/dist/SearchPage.cjs +28 -11
  54. package/dist/SearchPage.cjs.map +1 -1
  55. package/dist/SearchPage.mjs +30 -13
  56. package/dist/SearchPage.mjs.map +1 -1
  57. package/dist/TablePage/index.cjs +32 -31
  58. package/dist/TablePage/index.cjs.map +1 -1
  59. package/dist/TablePage/index.mjs +32 -31
  60. package/dist/TablePage/index.mjs.map +1 -1
  61. package/dist/TablePage/players/index.cjs +28 -11
  62. package/dist/TablePage/players/index.cjs.map +1 -1
  63. package/dist/TablePage/players/index.mjs +28 -11
  64. package/dist/TablePage/players/index.mjs.map +1 -1
  65. package/dist/TablePage/players.cjs +28 -11
  66. package/dist/TablePage/players.cjs.map +1 -1
  67. package/dist/TablePage/players.mjs +28 -11
  68. package/dist/TablePage/players.mjs.map +1 -1
  69. package/dist/TablePage.cjs +32 -31
  70. package/dist/TablePage.cjs.map +1 -1
  71. package/dist/TablePage.mjs +32 -31
  72. package/dist/TablePage.mjs.map +1 -1
  73. package/dist/common/index.cjs +38 -36
  74. package/dist/common/index.cjs.map +1 -1
  75. package/dist/common/index.d.cts +1 -1
  76. package/dist/common/index.d.ts +1 -1
  77. package/dist/common/index.mjs +39 -38
  78. package/dist/common/index.mjs.map +1 -1
  79. package/dist/common.cjs +38 -36
  80. package/dist/common.cjs.map +1 -1
  81. package/dist/common.d.cts +6 -1
  82. package/dist/common.d.ts +6 -1
  83. package/dist/common.mjs +39 -38
  84. package/dist/common.mjs.map +1 -1
  85. package/dist/index.cjs +373 -199
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.d.cts +2 -3
  88. package/dist/index.d.ts +2 -3
  89. package/dist/index.mjs +370 -198
  90. package/dist/index.mjs.map +1 -1
  91. package/package.json +2 -1
package/dist/index.cjs CHANGED
@@ -11,7 +11,7 @@ var ColorizeIcon = require('@mui/icons-material/Colorize');
11
11
  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
- var Grid9 = require('@mui/material/Grid');
14
+ var Grid8 = require('@mui/material/Grid');
15
15
  var Card10 = require('@mui/material/Card');
16
16
  var CardContent10 = require('@mui/material/CardContent');
17
17
  var CardHeader4 = require('@mui/material/CardHeader');
@@ -23,12 +23,12 @@ var LocationOnIcon = require('@mui/icons-material/LocationOn');
23
23
  var EventIcon = require('@mui/icons-material/Event');
24
24
  var Autocomplete = require('@mui/material/Autocomplete');
25
25
  var Popper = require('@mui/material/Popper');
26
- var TextField3 = require('@mui/material/TextField');
27
26
  var Typography10 = require('@mui/material/Typography');
28
27
  var FormControl2 = require('@mui/material/FormControl');
29
28
  var RadioGroup = require('@mui/material/RadioGroup');
30
29
  var FormControlLabel = require('@mui/material/FormControlLabel');
31
30
  var Radio = require('@mui/material/Radio');
31
+ var TextField4 = require('@mui/material/TextField');
32
32
  var FormGroup = require('@mui/material/FormGroup');
33
33
  var Checkbox = require('@mui/material/Checkbox');
34
34
  var Button7 = require('@mui/material/Button');
@@ -47,7 +47,7 @@ var ColorizeIcon__default = /*#__PURE__*/_interopDefault(ColorizeIcon);
47
47
  var CancelIcon__default = /*#__PURE__*/_interopDefault(CancelIcon);
48
48
  var CheckCircleIcon__default = /*#__PURE__*/_interopDefault(CheckCircleIcon);
49
49
  var Box2__default = /*#__PURE__*/_interopDefault(Box2);
50
- var Grid9__default = /*#__PURE__*/_interopDefault(Grid9);
50
+ var Grid8__default = /*#__PURE__*/_interopDefault(Grid8);
51
51
  var Card10__default = /*#__PURE__*/_interopDefault(Card10);
52
52
  var CardContent10__default = /*#__PURE__*/_interopDefault(CardContent10);
53
53
  var CardHeader4__default = /*#__PURE__*/_interopDefault(CardHeader4);
@@ -59,12 +59,12 @@ var LocationOnIcon__default = /*#__PURE__*/_interopDefault(LocationOnIcon);
59
59
  var EventIcon__default = /*#__PURE__*/_interopDefault(EventIcon);
60
60
  var Autocomplete__default = /*#__PURE__*/_interopDefault(Autocomplete);
61
61
  var Popper__default = /*#__PURE__*/_interopDefault(Popper);
62
- var TextField3__default = /*#__PURE__*/_interopDefault(TextField3);
63
62
  var Typography10__default = /*#__PURE__*/_interopDefault(Typography10);
64
63
  var FormControl2__default = /*#__PURE__*/_interopDefault(FormControl2);
65
64
  var RadioGroup__default = /*#__PURE__*/_interopDefault(RadioGroup);
66
65
  var FormControlLabel__default = /*#__PURE__*/_interopDefault(FormControlLabel);
67
66
  var Radio__default = /*#__PURE__*/_interopDefault(Radio);
67
+ var TextField4__default = /*#__PURE__*/_interopDefault(TextField4);
68
68
  var FormGroup__default = /*#__PURE__*/_interopDefault(FormGroup);
69
69
  var Checkbox__default = /*#__PURE__*/_interopDefault(Checkbox);
70
70
  var Button7__default = /*#__PURE__*/_interopDefault(Button7);
@@ -125,23 +125,40 @@ function useEventEdit() {
125
125
  }
126
126
  return context;
127
127
  }
128
- function generateTagsDisplay(tag) {
129
- return /* @__PURE__ */ jsxRuntime.jsx(
128
+ function Chip({ tag, removeCallback }) {
129
+ var _a;
130
+ const color = (_a = tag.color) != null ? _a : "#bfbcbb";
131
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
130
132
  "span",
131
133
  {
132
- className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
134
+ className: "inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans",
133
135
  style: {
134
- marginTop: "6px",
135
- marginRight: "6px",
136
- marginBottom: "6px",
137
- background: tag.color || "#bfbcbb",
138
- color: "white",
139
- textShadow: "black 0.2em 0.2em 0.4em"
136
+ borderColor: `color-mix(in srgb, ${color}, black 50%)`,
137
+ background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,
138
+ textShadow: "black 1.5px 1px 1.5px",
139
+ filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`
140
140
  },
141
- children: tag.label
141
+ children: [
142
+ tag.label,
143
+ removeCallback && /* @__PURE__ */ jsxRuntime.jsx(
144
+ "button",
145
+ {
146
+ type: "button",
147
+ onClick: () => removeCallback(tag.id),
148
+ className: "ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full",
149
+ style: {
150
+ textShadow: "black 1px 1px 1px"
151
+ },
152
+ children: "X"
153
+ }
154
+ )
155
+ ]
142
156
  },
143
157
  tag.id
144
- );
158
+ ) });
159
+ }
160
+ function generateTagsDisplay(tag) {
161
+ return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
145
162
  }
146
163
  function renderTagsFromIds(ids, legalTags) {
147
164
  if (!ids || !legalTags || legalTags.length === 0) {
@@ -499,7 +516,7 @@ function EventBasicInfo(props) {
499
516
  );
500
517
  }
501
518
  function EventBasicInfoView({ description, locationId, startingDate, endingDate, timeInfo, timezone, isOwner, onEdit }) {
502
- return /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { sx: { position: "relative" }, children: /* @__PURE__ */ jsxRuntime.jsx(material.Card, { style: {
519
+ return /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { sx: { position: "relative" }, children: /* @__PURE__ */ jsxRuntime.jsx(material.Card, { style: {
503
520
  boxShadow: "0px 4px 10px rgba(0, 0, 0, 0.1)",
504
521
  background: "linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))"
505
522
  }, children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { children: [
@@ -783,7 +800,7 @@ function EventBannerView({
783
800
  }) {
784
801
  const backgroundColor = bannerColor || "linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))";
785
802
  return /* @__PURE__ */ jsxRuntime.jsxs(
786
- Grid9__default.default,
803
+ Grid8__default.default,
787
804
  {
788
805
  sx: {
789
806
  background: backgroundColor,
@@ -791,7 +808,7 @@ function EventBannerView({
791
808
  position: "relative"
792
809
  },
793
810
  children: [
794
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { children: [
811
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { children: [
795
812
  /* @__PURE__ */ jsxRuntime.jsxs(
796
813
  material.Box,
797
814
  {
@@ -850,7 +867,7 @@ function EventBannerView({
850
867
  }
851
868
  ),
852
869
  /* @__PURE__ */ jsxRuntime.jsxs(
853
- Grid9__default.default,
870
+ Grid8__default.default,
854
871
  {
855
872
  display: "flex",
856
873
  justifyContent: "center",
@@ -1249,27 +1266,28 @@ function EventPageLayout({
1249
1266
  tables,
1250
1267
  allTags
1251
1268
  }) {
1252
- return /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { container: true, flexDirection: "column", children: /* @__PURE__ */ jsxRuntime.jsxs(EventEditProvider, { initialEvent: mergedEvent, value: { isOwner, updateEvent, updateImages }, children: [
1253
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
1269
+ return /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, flexDirection: "column", children: /* @__PURE__ */ jsxRuntime.jsxs(EventEditProvider, { initialEvent: mergedEvent, value: { isOwner, updateEvent, updateImages }, children: [
1270
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
1254
1271
  EventBanner,
1255
1272
  {
1256
1273
  attendees,
1257
1274
  numGames
1258
1275
  }
1259
1276
  ) }),
1260
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, flexDirection: "row", spacing: 3, size: { xs: 12, md: 12 }, children: [
1261
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12, md: 4 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx(
1277
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, flexDirection: "row", spacing: 3, size: { xs: 12, md: 12 }, children: [
1278
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12, md: 4 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx(
1262
1279
  EventBasicInfo,
1263
1280
  {
1264
1281
  locationId: mergedEvent.location || "0"
1265
1282
  }
1266
1283
  ) }),
1267
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12, md: 8 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx(EventTablesCard_default, { tables, tags: allTags }) })
1284
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12, md: 8 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx(EventTablesCard_default, { tables, tags: allTags }) })
1268
1285
  ] }),
1269
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, {})
1286
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, {})
1270
1287
  ] }) });
1271
1288
  }
1272
- var PlayerDetails = ({
1289
+ var PlayerDetailsCard = ({
1290
+ preferredPronouns,
1273
1291
  age,
1274
1292
  yearsPlaying,
1275
1293
  discordUsername,
@@ -1319,6 +1337,23 @@ var PlayerDetails = ({
1319
1337
  }
1320
1338
  ),
1321
1339
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1340
+ preferredPronouns && /* @__PURE__ */ jsxRuntime.jsxs(
1341
+ material.Typography,
1342
+ {
1343
+ variant: "body2",
1344
+ className: "text-sm font-medium",
1345
+ sx: {
1346
+ color: "#FFFFFF",
1347
+ textShadow: "0px 2px 6px rgba(0, 0, 0, 0.5)",
1348
+ fontWeight: "bold"
1349
+ },
1350
+ children: [
1351
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-extrabold text-cyan-300", children: "Preferred Pronouns:" }),
1352
+ " ",
1353
+ preferredPronouns
1354
+ ]
1355
+ }
1356
+ ),
1322
1357
  age !== null && /* @__PURE__ */ jsxRuntime.jsxs(
1323
1358
  material.Typography,
1324
1359
  {
@@ -1370,7 +1405,7 @@ var PlayerDetails = ({
1370
1405
  ]
1371
1406
  }
1372
1407
  ),
1373
- preferredGames && preferredGames.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
1408
+ preferredGames && /* @__PURE__ */ jsxRuntime.jsxs(
1374
1409
  material.Typography,
1375
1410
  {
1376
1411
  variant: "body2",
@@ -1383,7 +1418,7 @@ var PlayerDetails = ({
1383
1418
  children: [
1384
1419
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-extrabold text-cyan-300", children: "Preferred Games:" }),
1385
1420
  " ",
1386
- preferredGames.join(", ")
1421
+ Array.isArray(preferredGames) ? preferredGames.join(", ") : preferredGames
1387
1422
  ]
1388
1423
  }
1389
1424
  )
@@ -1406,24 +1441,20 @@ var PlayerDetails = ({
1406
1441
  }
1407
1442
  );
1408
1443
  };
1409
- var PlayerDetailsCard_default = PlayerDetails;
1444
+ var PlayerDetailsCard_default = PlayerDetailsCard;
1410
1445
 
1411
1446
  // src/data/values.tsx
1412
1447
  var ProfilePictureSettings = {
1413
1448
  aspectRatio: 4 / 5};
1414
- var { aspectRatio } = ProfilePictureSettings;
1415
- var PlayerDisplayCard = ({
1416
- profilePicture,
1417
- username,
1418
- bio,
1419
- preferredPronouns
1420
- }) => {
1421
- const [imageSrc, setImageSrc] = React7.useState("/man-walking-silhouette-clipart.jpg");
1449
+ var PlayerDisplayCard = ({ profilePicture, username, bio, preferredPronouns }) => {
1450
+ const defaultImg = "/man-walking-silhouette-clipart.jpg";
1451
+ const [imageSrc, setImageSrc] = React7.useState(defaultImg);
1452
+ const { aspectRatio } = ProfilePictureSettings;
1422
1453
  React7.useEffect(() => {
1423
1454
  async function validateImage() {
1424
- const newImage = profilePicture || "/man-walking-silhouette-clipart.jpg";
1455
+ const newImage = profilePicture || defaultImg;
1425
1456
  if (!profilePicture) {
1426
- setImageSrc("/man-walking-silhouette-clipart.jpg");
1457
+ setImageSrc(defaultImg);
1427
1458
  return;
1428
1459
  }
1429
1460
  const img = new Image();
@@ -1432,7 +1463,7 @@ var PlayerDisplayCard = ({
1432
1463
  setImageSrc(newImage);
1433
1464
  };
1434
1465
  img.onerror = () => {
1435
- setImageSrc("/man-walking-silhouette-clipart.jpg");
1466
+ setImageSrc(defaultImg);
1436
1467
  };
1437
1468
  }
1438
1469
  validateImage();
@@ -1466,7 +1497,7 @@ var PlayerDisplayCard = ({
1466
1497
  height: "auto",
1467
1498
  // Updates to maintain aspect ratio and fill space nicely
1468
1499
  width: "100%",
1469
- objectFit: "scale-down"
1500
+ objectFit: "cover"
1470
1501
  }
1471
1502
  }
1472
1503
  ),
@@ -1525,151 +1556,147 @@ var PlayerDisplayCard = ({
1525
1556
  );
1526
1557
  };
1527
1558
  var PlayerDisplayCard_default = PlayerDisplayCard;
1528
- var PlayerPromptCard = ({ title, description }) => {
1529
- return /* @__PURE__ */ jsxRuntime.jsx(
1530
- material.Card,
1531
- {
1532
- sx: {
1533
- margin: "1rem",
1534
- background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
1535
- // Gradient color scheme
1536
- boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
1537
- // Card shadow
1538
- borderRadius: "12px",
1539
- // Rounded corners
1540
- color: "#FFFFFF",
1541
- // Text contrast with the background
1542
- overflow: "hidden"
1543
- // Keeps consistent and clean card shape
1544
- },
1545
- className: "transition duration-300 transform hover:scale-105 hover:shadow-2xl",
1546
- children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { className: "p-6", children: [
1547
- title && /* @__PURE__ */ jsxRuntime.jsx(
1548
- material.Typography,
1549
- {
1550
- variant: "h5",
1551
- className: "font-bold text-lg uppercase text-center tracking-wide mb-4",
1552
- sx: {
1553
- color: "#FFFFFF",
1554
- // Bright white for high visibility
1555
- textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
1556
- // Strong text shadow for contrast
1557
- fontSize: "1.5rem"
1558
- },
1559
- children: title
1560
- }
1561
- ),
1562
- description && /* @__PURE__ */ jsxRuntime.jsx(
1563
- material.Typography,
1564
- {
1565
- variant: "body2",
1566
- className: "text-sm font-medium text-center",
1567
- sx: {
1568
- color: "#E3F2FD",
1569
- // Softer light blue for description
1570
- textShadow: "0px 2px 4px rgba(0, 0, 0, 0.3)",
1571
- // Subtle shadow
1572
- lineHeight: 1.6,
1573
- marginTop: "1rem"
1574
- },
1575
- children: description
1559
+ var PlayerTagsCard = ({ tags = [] }) => {
1560
+ return /* @__PURE__ */ jsxRuntime.jsxs(material.Card, { sx: {
1561
+ margin: "1rem",
1562
+ borderRadius: "12px",
1563
+ boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
1564
+ overflow: "hidden"
1565
+ }, className: "transition duration-300 transform hover:scale-105 hover:shadow-2xl", children: [
1566
+ /* @__PURE__ */ jsxRuntime.jsx(
1567
+ material.CardHeader,
1568
+ {
1569
+ title: "Player Tags",
1570
+ sx: {
1571
+ background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
1572
+ color: "#FFFFFF",
1573
+ fontSize: "1.5rem",
1574
+ textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
1575
+ "& .MuiCardHeader-title": {
1576
+ fontWeight: "bold",
1577
+ fontSize: "1.5rem",
1578
+ textAlign: "center",
1579
+ textTransform: "uppercase",
1580
+ letterSpacing: "0.05em"
1576
1581
  }
1577
- )
1578
- ] })
1579
- }
1580
- );
1582
+ }
1583
+ }
1584
+ ),
1585
+ /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: tags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id)) }) })
1586
+ ] });
1581
1587
  };
1582
- var PlayerPromptCard_default = PlayerPromptCard;
1583
- function PlayerTagsCard(props) {
1584
- return /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { container: true, children: /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12, md: 3 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
1585
- /* @__PURE__ */ jsxRuntime.jsx(CardHeader4__default.default, { title: "Player Tags", style: {
1588
+ var PlayerTagsCard_default = PlayerTagsCard;
1589
+ var PlayerPromptCard = ({ title, description }) => /* @__PURE__ */ jsxRuntime.jsx(
1590
+ material.Card,
1591
+ {
1592
+ sx: {
1593
+ margin: "1rem",
1586
1594
  background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
1595
+ // Gradient color scheme
1596
+ boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
1597
+ // Card shadow
1598
+ borderRadius: "12px",
1599
+ // Rounded corners
1587
1600
  color: "#FFFFFF",
1588
- // Pure white for username
1589
- fontSize: "1.5rem",
1590
- textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
1591
- // Strong shadow for visibility
1592
- } }),
1593
- /* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: renderLabels(props.PlayerTags) })
1594
- ] }) }) });
1595
- }
1596
- var renderLabels = (tags) => {
1597
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: tags.map((tag) => generateLabel(tag)) });
1598
- };
1599
- var generateLabel = (tag) => {
1600
- let color = "#bfbcbb";
1601
- if (tag.color) color = tag.color;
1602
- return /* @__PURE__ */ jsxRuntime.jsx(
1603
- "span",
1604
- {
1605
- className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
1606
- style: {
1607
- background: color,
1608
- color: "white",
1609
- textShadow: "black 0.2em 0.2em 0.4em"
1610
- },
1611
- children: tag.label
1601
+ // Text contrast with the background
1602
+ overflow: "hidden"
1603
+ // Keeps consistent and clean card shape
1612
1604
  },
1613
- tag.id
1614
- );
1615
- };
1616
- function TagEditor({
1617
- title = "Tags",
1618
- selectedTags,
1619
- possibleTags,
1605
+ className: "transition duration-300 transform hover:scale-105 hover:shadow-2xl",
1606
+ children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { className: "p-6", children: [
1607
+ title && /* @__PURE__ */ jsxRuntime.jsx(
1608
+ material.Typography,
1609
+ {
1610
+ variant: "h5",
1611
+ className: "font-bold text-lg uppercase text-center tracking-wide mb-4",
1612
+ sx: {
1613
+ color: "#FFFFFF",
1614
+ // Bright white for high visibility
1615
+ textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
1616
+ // Strong text shadow for contrast
1617
+ fontSize: "1.5rem"
1618
+ },
1619
+ children: title
1620
+ }
1621
+ ),
1622
+ description && /* @__PURE__ */ jsxRuntime.jsx(
1623
+ material.Typography,
1624
+ {
1625
+ variant: "body2",
1626
+ className: "text-sm font-medium text-center",
1627
+ sx: {
1628
+ color: "#E3F2FD",
1629
+ // Softer light blue for description
1630
+ textShadow: "0px 2px 4px rgba(0, 0, 0, 0.3)",
1631
+ // Subtle shadow
1632
+ lineHeight: 1.6,
1633
+ marginTop: "1rem"
1634
+ },
1635
+ children: description
1636
+ }
1637
+ )
1638
+ ] })
1639
+ }
1640
+ );
1641
+ var PlayerPromptCard_default = PlayerPromptCard;
1642
+ var PlayerTagsEdit = ({
1643
+ selectedTags = [],
1644
+ possibleTags = [],
1620
1645
  onToggleTag
1621
- }) {
1646
+ }) => {
1622
1647
  const [inputValue, setInputValue] = React7.useState("");
1623
1648
  const selectedIds = React7.useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
1624
1649
  const options = React7.useMemo(
1625
- () => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),
1650
+ () => possibleTags.map((tag) => ({ value: tag.id, label: tag.label, alternate_title: tag.alternate_title })),
1626
1651
  [possibleTags]
1627
1652
  );
1628
- return /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { container: true, children: /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
1653
+ return /* @__PURE__ */ jsxRuntime.jsxs(material.Card, { sx: {
1654
+ margin: "1rem",
1655
+ borderRadius: "12px",
1656
+ boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)",
1657
+ overflow: "hidden"
1658
+ }, children: [
1629
1659
  /* @__PURE__ */ jsxRuntime.jsx(
1630
- CardHeader4__default.default,
1660
+ material.CardHeader,
1631
1661
  {
1632
- title,
1633
- style: {
1662
+ title: "Player Tags",
1663
+ sx: {
1634
1664
  background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
1635
1665
  color: "#FFFFFF",
1636
1666
  fontSize: "1.5rem",
1637
- textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
1667
+ textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)",
1668
+ "& .MuiCardHeader-title": {
1669
+ fontWeight: "bold",
1670
+ fontSize: "1.5rem",
1671
+ textAlign: "center",
1672
+ textTransform: "uppercase",
1673
+ letterSpacing: "0.05em"
1674
+ }
1638
1675
  }
1639
1676
  }
1640
1677
  ),
1641
- /* @__PURE__ */ jsxRuntime.jsxs(CardContent10__default.default, { children: [
1642
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsxs(
1643
- "span",
1678
+ /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { className: "p-6", children: [
1679
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2 mb-4", children: selectedTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
1680
+ Chip,
1644
1681
  {
1645
- className: "inline-block text-sm px-3 py-1 rounded-full outline-black outline-2 font-outlined",
1646
- style: {
1647
- background: tag.color || "#bfbcbb",
1648
- color: "white",
1649
- textShadow: "black 0.2em 0.2em 0.4em"
1650
- },
1651
- children: [
1652
- tag.label,
1653
- /* @__PURE__ */ jsxRuntime.jsx(
1654
- "button",
1655
- {
1656
- type: "button",
1657
- onClick: () => onToggleTag(tag.id),
1658
- className: "ml-2 text-red-500 bg-white bg-opacity-50 rounded-full outline-black outline-2 font-outlined",
1659
- children: "\xD7"
1660
- }
1661
- )
1662
- ]
1682
+ tag,
1683
+ removeCallback: () => onToggleTag(tag.id)
1663
1684
  },
1664
1685
  tag.id
1665
1686
  )) }),
1666
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { container: true, spacing: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { sx: { marginTop: 3, width: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
1687
+ /* @__PURE__ */ jsxRuntime.jsx(
1667
1688
  Autocomplete__default.default,
1668
1689
  {
1669
1690
  options,
1670
- filterOptions: (availableOptions, state) => availableOptions.filter(
1671
- (option) => !selectedIds.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
1672
- ).slice(0, 3),
1691
+ filterOptions: (availableOptions, state) => {
1692
+ const query = state.inputValue.toLowerCase();
1693
+ return availableOptions.filter(
1694
+ (option) => {
1695
+ var _a;
1696
+ return !selectedIds.includes(option.value) && (option.label.toLowerCase().includes(query) || ((_a = option.alternate_title) == null ? void 0 : _a.some((title) => title.toLowerCase().includes(query))));
1697
+ }
1698
+ ).slice(0, 5);
1699
+ },
1673
1700
  value: null,
1674
1701
  inputValue,
1675
1702
  onInputChange: (event, newInputValue) => {
@@ -1684,13 +1711,20 @@ function TagEditor({
1684
1711
  setInputValue("");
1685
1712
  },
1686
1713
  slots: { popper: CustomPopper },
1687
- renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField3__default.default, { ...params, label: "Select Tags" })
1714
+ renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(
1715
+ material.TextField,
1716
+ {
1717
+ ...params,
1718
+ label: "Select Tags",
1719
+ variant: "outlined"
1720
+ }
1721
+ )
1688
1722
  },
1689
1723
  selectedIds.join("-")
1690
- ) }) })
1724
+ )
1691
1725
  ] })
1692
- ] }) }) });
1693
- }
1726
+ ] });
1727
+ };
1694
1728
  var CustomPopper = (props) => {
1695
1729
  return /* @__PURE__ */ jsxRuntime.jsx(
1696
1730
  Popper__default.default,
@@ -1699,27 +1733,84 @@ var CustomPopper = (props) => {
1699
1733
  modifiers: [
1700
1734
  {
1701
1735
  name: "preventOverflow",
1702
- options: { boundary: "viewport" }
1736
+ options: {
1737
+ boundary: "viewport"
1738
+ }
1703
1739
  },
1704
1740
  {
1705
1741
  name: "offset",
1706
- options: { offset: [0, -10] }
1742
+ options: {
1743
+ offset: [0, -10]
1744
+ }
1707
1745
  }
1708
1746
  ],
1709
1747
  placement: "top-start"
1710
1748
  }
1711
1749
  );
1712
1750
  };
1713
- function PlayerTagsEdit(props) {
1714
- return /* @__PURE__ */ jsxRuntime.jsx(
1715
- TagEditor,
1751
+ var PlayerTagsEdit_default = PlayerTagsEdit;
1752
+ function PlayerPageLayout({
1753
+ playerData,
1754
+ tags = [],
1755
+ blurbs = [],
1756
+ isOwner = false,
1757
+ possibleTags = [],
1758
+ onToggleTag = () => {
1759
+ }
1760
+ }) {
1761
+ const theme = material.useTheme();
1762
+ const isSmallScreen = material.useMediaQuery(theme.breakpoints.down("lg"));
1763
+ const tagsElement = isOwner ? /* @__PURE__ */ jsxRuntime.jsx(
1764
+ PlayerTagsEdit_default,
1716
1765
  {
1717
- title: "Player Tags",
1718
- selectedTags: props.PlayerTags,
1719
- possibleTags: props.possibleTags,
1720
- onToggleTag: props.updatePlayerTags
1766
+ selectedTags: tags,
1767
+ possibleTags,
1768
+ onToggleTag
1721
1769
  }
1722
- );
1770
+ ) : /* @__PURE__ */ jsxRuntime.jsx(PlayerTagsCard_default, { tags });
1771
+ return /* @__PURE__ */ jsxRuntime.jsx(material.NoSsr, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { padding: "2rem", marginRight: "auto", marginLeft: "auto" }, justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsxs(material.Grid, { container: true, spacing: 3, justifyContent: "center", sx: { marginRight: "auto", marginLeft: "auto" }, children: [
1772
+ !isSmallScreen && /* @__PURE__ */ jsxRuntime.jsxs(material.Grid, { size: { xs: 12, lg: 3 }, children: [
1773
+ /* @__PURE__ */ jsxRuntime.jsx(
1774
+ PlayerDetailsCard_default,
1775
+ {
1776
+ preferredPronouns: playerData.preferredPronouns,
1777
+ age: playerData.age,
1778
+ yearsPlaying: playerData.yearsPlaying,
1779
+ discordUsername: playerData.discordUsername,
1780
+ preferredGames: playerData.preferredGames
1781
+ }
1782
+ ),
1783
+ tagsElement
1784
+ ] }),
1785
+ /* @__PURE__ */ jsxRuntime.jsx(material.Grid, { size: { xs: 12, lg: 6 }, children: /* @__PURE__ */ jsxRuntime.jsxs(material.Grid, { container: true, spacing: 3, children: [
1786
+ /* @__PURE__ */ jsxRuntime.jsx(material.Grid, { size: { xs: 12, lg: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(
1787
+ PlayerDisplayCard_default,
1788
+ {
1789
+ profilePicture: playerData.profilePicture,
1790
+ username: playerData.username,
1791
+ bio: playerData.bio,
1792
+ preferredPronouns: playerData.preferredPronouns
1793
+ }
1794
+ ) }),
1795
+ isSmallScreen && /* @__PURE__ */ jsxRuntime.jsx(material.Grid, { size: { xs: 12, lg: 3 }, children: /* @__PURE__ */ jsxRuntime.jsx(
1796
+ PlayerDetailsCard_default,
1797
+ {
1798
+ preferredPronouns: playerData.preferredPronouns,
1799
+ age: playerData.age,
1800
+ yearsPlaying: playerData.yearsPlaying,
1801
+ discordUsername: playerData.discordUsername,
1802
+ preferredGames: playerData.preferredGames
1803
+ }
1804
+ ) }),
1805
+ blurbs.map((blurb, index) => /* @__PURE__ */ jsxRuntime.jsx(material.Grid, { size: { xs: 12, lg: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(
1806
+ PlayerPromptCard_default,
1807
+ {
1808
+ title: blurb.title,
1809
+ description: blurb.description
1810
+ }
1811
+ ) }, index))
1812
+ ] }) })
1813
+ ] }) }) });
1723
1814
  }
1724
1815
  var SORT_OPTIONS = [
1725
1816
  { id: "relevance", label: "Relevance" },
@@ -1878,7 +1969,7 @@ var TagsFilter = ({
1878
1969
  });
1879
1970
  },
1880
1971
  slots: { popper: CustomPopper2 },
1881
- renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField3__default.default, { ...params, label: `Select ${label}` })
1972
+ renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField4__default.default, { ...params, label: `Select ${label}` })
1882
1973
  },
1883
1974
  `${category}-${selectedTags.join("-")}`
1884
1975
  )
@@ -2048,8 +2139,8 @@ function SearchPageLayout({
2048
2139
  }
2049
2140
  }
2050
2141
  ) }),
2051
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, spacing: 2, children: [
2052
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12, md: 3 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { sx: { marginBottom: isMobile ? 2 : 0 }, children: [
2142
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, spacing: 2, children: [
2143
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12, md: 3 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { sx: { marginBottom: isMobile ? 2 : 0 }, children: [
2053
2144
  /* @__PURE__ */ jsxRuntime.jsx(
2054
2145
  CardHeader4__default.default,
2055
2146
  {
@@ -2072,7 +2163,7 @@ function SearchPageLayout({
2072
2163
  }
2073
2164
  ) })
2074
2165
  ] }) }),
2075
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12, md: 9 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
2166
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12, md: 9 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
2076
2167
  /* @__PURE__ */ jsxRuntime.jsx(
2077
2168
  CardHeader4__default.default,
2078
2169
  {
@@ -2190,14 +2281,14 @@ var PlayerHighlightsCard = function(props) {
2190
2281
  removeFromTable
2191
2282
  } = props;
2192
2283
  return /* @__PURE__ */ jsxRuntime.jsx(material.Card, { elevation: 3, sx: { backgroundColor: canEdit ? "#fffbea" : "#f5f9fa", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { children: [
2193
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, spacing: 2, direction: "column", children: [
2194
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, direction: "row", children: [
2195
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image2__default.default, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || "", width: 64 }) }),
2196
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) })
2284
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, spacing: 2, direction: "column", children: [
2285
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, direction: "row", children: [
2286
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image2__default.default, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || "", width: 64 }) }),
2287
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) })
2197
2288
  ] }),
2198
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: renderTagsFromIds(player.tags, allTags) })
2289
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: renderTagsFromIds(player.tags, allTags) })
2199
2290
  ] }),
2200
- canEdit && /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { children: [
2291
+ canEdit && /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { children: [
2201
2292
  /* @__PURE__ */ jsxRuntime.jsx(Button7__default.default, { onClick: () => removeFromTable(player), children: isWaitList ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Deny Player" }) : /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Remove Player" }) }),
2202
2293
  canChangeDungeonMaster && /* @__PURE__ */ jsxRuntime.jsx(Button7__default.default, { onClick: () => {
2203
2294
  handleAssignToDungeonMaster(player);
@@ -2209,11 +2300,11 @@ var PlayerHighlightsCard = function(props) {
2209
2300
  var DMHighlightsCard = function({ canEdit, player, allTags }) {
2210
2301
  return /* @__PURE__ */ jsxRuntime.jsxs(material.Card, { elevation: 3, sx: { backgroundColor: "#f5f9fa", marginBottom: "6px" }, children: [
2211
2302
  /* @__PURE__ */ jsxRuntime.jsx(material.CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Game Master" }),
2212
- /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, spacing: 2, direction: "column", children: [
2213
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) }),
2214
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, direction: "row", children: [
2215
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image2__default.default, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl ? player.imageUrl : "", width: 256 }) }),
2216
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { children: renderTagsFromIds(player.tags, allTags) }),
2303
+ /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, spacing: 2, direction: "column", children: [
2304
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) }),
2305
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, direction: "row", children: [
2306
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image2__default.default, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl ? player.imageUrl : "", width: 256 }) }),
2307
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { children: renderTagsFromIds(player.tags, allTags) }),
2217
2308
  /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: player.description })
2218
2309
  ] })
2219
2310
  ] }) })
@@ -2367,6 +2458,87 @@ var NextGameCountdown = ({ nextGameTime }) => {
2367
2458
  timeLeft
2368
2459
  ] });
2369
2460
  };
2461
+ function TagEditor({
2462
+ title = "Tags",
2463
+ selectedTags,
2464
+ possibleTags,
2465
+ onToggleTag
2466
+ }) {
2467
+ const [inputValue, setInputValue] = React7.useState("");
2468
+ const selectedIds = React7.useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
2469
+ const options = React7.useMemo(
2470
+ () => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),
2471
+ [possibleTags]
2472
+ );
2473
+ return /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, children: /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
2474
+ /* @__PURE__ */ jsxRuntime.jsx(
2475
+ CardHeader4__default.default,
2476
+ {
2477
+ title,
2478
+ style: {
2479
+ background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
2480
+ color: "#FFFFFF",
2481
+ fontSize: "1.5rem",
2482
+ textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
2483
+ }
2484
+ }
2485
+ ),
2486
+ /* @__PURE__ */ jsxRuntime.jsxs(CardContent10__default.default, { children: [
2487
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
2488
+ Chip,
2489
+ {
2490
+ tag,
2491
+ removeCallback: () => onToggleTag(tag.id)
2492
+ },
2493
+ tag.id
2494
+ )) }),
2495
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, spacing: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { sx: { marginTop: 3, width: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
2496
+ Autocomplete__default.default,
2497
+ {
2498
+ options,
2499
+ filterOptions: (availableOptions, state) => availableOptions.filter(
2500
+ (option) => !selectedIds.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
2501
+ ).slice(0, 3),
2502
+ value: null,
2503
+ inputValue,
2504
+ onInputChange: (event, newInputValue) => {
2505
+ if (event && event.type === "change") {
2506
+ setInputValue(newInputValue);
2507
+ }
2508
+ },
2509
+ onChange: (event, newValue) => {
2510
+ if (newValue) {
2511
+ onToggleTag(newValue.value);
2512
+ }
2513
+ setInputValue("");
2514
+ },
2515
+ slots: { popper: CustomPopper3 },
2516
+ renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField4__default.default, { ...params, label: "Select Tags" })
2517
+ },
2518
+ selectedIds.join("-")
2519
+ ) }) })
2520
+ ] })
2521
+ ] }) }) });
2522
+ }
2523
+ var CustomPopper3 = (props) => {
2524
+ return /* @__PURE__ */ jsxRuntime.jsx(
2525
+ Popper__default.default,
2526
+ {
2527
+ ...props,
2528
+ modifiers: [
2529
+ {
2530
+ name: "preventOverflow",
2531
+ options: { boundary: "viewport" }
2532
+ },
2533
+ {
2534
+ name: "offset",
2535
+ options: { offset: [0, -10] }
2536
+ }
2537
+ ],
2538
+ placement: "top-start"
2539
+ }
2540
+ );
2541
+ };
2370
2542
  function TablePageLayout(props) {
2371
2543
  var _a;
2372
2544
  const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers } = props;
@@ -2437,9 +2609,9 @@ function TablePageLayout(props) {
2437
2609
  p: 2,
2438
2610
  boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)"
2439
2611
  },
2440
- children: /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, direction: "column", children: [
2612
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, direction: "column", children: [
2441
2613
  /* @__PURE__ */ jsxRuntime.jsxs(
2442
- Grid9__default.default,
2614
+ Grid8__default.default,
2443
2615
  {
2444
2616
  container: true,
2445
2617
  direction: "column",
@@ -2484,7 +2656,7 @@ function TablePageLayout(props) {
2484
2656
  value: currentShortDescription
2485
2657
  }
2486
2658
  ) : /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: { color: "white", opacity: 0.95 }, children: currentShortDescription }),
2487
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { container: true, children: isTableInEditMode ? renderEditableTags(currentTags, allTags, handleToggleTag) : renderTags(currentTagIds, allTags) }),
2659
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, children: isTableInEditMode ? renderEditableTags(currentTags, allTags, handleToggleTag) : renderTags(currentTagIds, allTags) }),
2488
2660
  /* @__PURE__ */ jsxRuntime.jsx(
2489
2661
  TableActionsBar,
2490
2662
  {
@@ -2504,8 +2676,8 @@ function TablePageLayout(props) {
2504
2676
  ]
2505
2677
  }
2506
2678
  ),
2507
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { container: true, spacing: 2, sx: { mt: 2 }, children: [
2508
- /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12, md: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(material.Card, { sx: { height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { children: isTableInEditMode ? /* @__PURE__ */ jsxRuntime.jsx(
2679
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { container: true, spacing: 2, sx: { mt: 2 }, children: [
2680
+ /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12, md: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(material.Card, { sx: { height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { children: isTableInEditMode ? /* @__PURE__ */ jsxRuntime.jsx(
2509
2681
  AutoResizingTextarea_default,
2510
2682
  {
2511
2683
  isInEditMode: isTableInEditMode,
@@ -2514,7 +2686,7 @@ function TablePageLayout(props) {
2514
2686
  value: currentDescription
2515
2687
  }
2516
2688
  ) : /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: { whiteSpace: "pre-wrap" }, children: currentDescription }) }) }) }),
2517
- /* @__PURE__ */ jsxRuntime.jsxs(Grid9__default.default, { size: { xs: 12, md: 4 }, children: [
2689
+ /* @__PURE__ */ jsxRuntime.jsxs(Grid8__default.default, { size: { xs: 12, md: 4 }, children: [
2518
2690
  /* @__PURE__ */ jsxRuntime.jsx(DMHighlightsCard, { canEdit: isTableInEditMode, player: currentDungeonMaster, allTags }),
2519
2691
  /* @__PURE__ */ jsxRuntime.jsxs(material.Card, { sx: { height: "100%" }, children: [
2520
2692
  /* @__PURE__ */ jsxRuntime.jsx(material.CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Players: " }),
@@ -2541,13 +2713,13 @@ var renderTags = function(tags, allTags) {
2541
2713
  if (!tags || !allTags) {
2542
2714
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
2543
2715
  }
2544
- return /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { container: true, spacing: 1, sx: { pb: 1.5 }, children: tags.map((tagId) => {
2716
+ return /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, spacing: 1, sx: { pb: 1.5 }, children: tags.map((tagId) => {
2545
2717
  const tag = allTags.find((potentialTag) => tagId === potentialTag.id);
2546
2718
  return tag ? generateTagsDisplay(tag) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
2547
2719
  }) });
2548
2720
  };
2549
2721
  var renderEditableTags = function(selectedTags, allTags, onToggleTag) {
2550
- return /* @__PURE__ */ jsxRuntime.jsx(Grid9__default.default, { size: { xs: 12 }, sx: { pb: 1.5 }, children: /* @__PURE__ */ jsxRuntime.jsx(
2722
+ return /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12 }, sx: { pb: 1.5 }, children: /* @__PURE__ */ jsxRuntime.jsx(
2551
2723
  TagEditor,
2552
2724
  {
2553
2725
  title: "Table Tags",
@@ -2565,6 +2737,7 @@ var TablePageLayout_default = TablePageLayout;
2565
2737
  exports.AutoResizingTextarea = AutoResizingTextarea_default;
2566
2738
  exports.BaseSearchResultCard = BaseSearchResultCard_default;
2567
2739
  exports.CANDIDATE_TIMEZONES = CANDIDATE_TIMEZONES;
2740
+ exports.Chip = Chip;
2568
2741
  exports.DMHighlightsCard = DMHighlightsCard;
2569
2742
  exports.EventBanner = EventBanner;
2570
2743
  exports.EventBannerEdit = EventBannerEdit;
@@ -2582,10 +2755,11 @@ exports.NextGameCountdown = NextGameCountdown;
2582
2755
  exports.PlayerDetailsCard = PlayerDetailsCard_default;
2583
2756
  exports.PlayerDisplayCard = PlayerDisplayCard_default;
2584
2757
  exports.PlayerHighlightsCard = PlayerHighlightsCard;
2758
+ exports.PlayerPageLayout = PlayerPageLayout;
2585
2759
  exports.PlayerPromptCard = PlayerPromptCard_default;
2586
2760
  exports.PlayerResultCard = PlayerResultCard_default;
2587
- exports.PlayerTagsCard = PlayerTagsCard;
2588
- exports.PlayerTagsEdit = PlayerTagsEdit;
2761
+ exports.PlayerTagsCard = PlayerTagsCard_default;
2762
+ exports.PlayerTagsEdit = PlayerTagsEdit_default;
2589
2763
  exports.PlayersScrollableList = PlayersScrollableList_default;
2590
2764
  exports.ResultsContainer = ResultsContainer_default;
2591
2765
  exports.ScrollableResultsList = ScrollableResultsList_default;