@mbpockets/shared-ui 0.2.0 → 0.2.6

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 (205) hide show
  1. package/dist/EventPage/editMode/index.cjs.map +1 -1
  2. package/dist/EventPage/editMode/index.d.cts +1 -1
  3. package/dist/EventPage/editMode/index.d.ts +1 -1
  4. package/dist/EventPage/editMode/index.mjs.map +1 -1
  5. package/dist/EventPage/editMode.cjs.map +1 -1
  6. package/dist/EventPage/editMode.d.cts +1 -1
  7. package/dist/EventPage/editMode.d.ts +1 -1
  8. package/dist/EventPage/editMode.mjs.map +1 -1
  9. package/dist/EventPage/index.cjs +202 -96
  10. package/dist/EventPage/index.cjs.map +1 -1
  11. package/dist/EventPage/index.d.cts +1 -1
  12. package/dist/EventPage/index.d.ts +1 -1
  13. package/dist/EventPage/index.mjs +202 -96
  14. package/dist/EventPage/index.mjs.map +1 -1
  15. package/dist/EventPage.cjs +202 -96
  16. package/dist/EventPage.cjs.map +1 -1
  17. package/dist/EventPage.d.cts +6 -4
  18. package/dist/EventPage.d.ts +6 -4
  19. package/dist/EventPage.mjs +202 -96
  20. package/dist/EventPage.mjs.map +1 -1
  21. package/dist/PlayerPage/index.cjs +12 -8
  22. package/dist/PlayerPage/index.cjs.map +1 -1
  23. package/dist/PlayerPage/index.mjs +12 -8
  24. package/dist/PlayerPage/index.mjs.map +1 -1
  25. package/dist/PlayerPage.cjs +12 -8
  26. package/dist/PlayerPage.cjs.map +1 -1
  27. package/dist/PlayerPage.mjs +12 -8
  28. package/dist/PlayerPage.mjs.map +1 -1
  29. package/dist/ProfilePage/index.cjs +12 -8
  30. package/dist/ProfilePage/index.cjs.map +1 -1
  31. package/dist/ProfilePage/index.mjs +12 -8
  32. package/dist/ProfilePage/index.mjs.map +1 -1
  33. package/dist/ProfilePage.cjs +12 -8
  34. package/dist/ProfilePage.cjs.map +1 -1
  35. package/dist/ProfilePage.mjs +12 -8
  36. package/dist/ProfilePage.mjs.map +1 -1
  37. package/dist/SearchPage/Filters/index.cjs +38 -18
  38. package/dist/SearchPage/Filters/index.cjs.map +1 -1
  39. package/dist/SearchPage/Filters/index.d.cts +2 -1
  40. package/dist/SearchPage/Filters/index.d.ts +2 -1
  41. package/dist/SearchPage/Filters/index.mjs +34 -17
  42. package/dist/SearchPage/Filters/index.mjs.map +1 -1
  43. package/dist/SearchPage/Filters.cjs +38 -18
  44. package/dist/SearchPage/Filters.cjs.map +1 -1
  45. package/dist/SearchPage/Filters.d.cts +13 -1
  46. package/dist/SearchPage/Filters.d.ts +13 -1
  47. package/dist/SearchPage/Filters.mjs +34 -17
  48. package/dist/SearchPage/Filters.mjs.map +1 -1
  49. package/dist/SearchPage/Results/index.cjs +137 -73
  50. package/dist/SearchPage/Results/index.cjs.map +1 -1
  51. package/dist/SearchPage/Results/index.mjs +137 -73
  52. package/dist/SearchPage/Results/index.mjs.map +1 -1
  53. package/dist/SearchPage/Results.cjs +137 -73
  54. package/dist/SearchPage/Results.cjs.map +1 -1
  55. package/dist/SearchPage/Results.d.cts +14 -3
  56. package/dist/SearchPage/Results.d.ts +14 -3
  57. package/dist/SearchPage/Results.mjs +137 -73
  58. package/dist/SearchPage/Results.mjs.map +1 -1
  59. package/dist/SearchPage/index.cjs +265 -130
  60. package/dist/SearchPage/index.cjs.map +1 -1
  61. package/dist/SearchPage/index.d.cts +2 -2
  62. package/dist/SearchPage/index.d.ts +2 -2
  63. package/dist/SearchPage/index.mjs +261 -129
  64. package/dist/SearchPage/index.mjs.map +1 -1
  65. package/dist/SearchPage.cjs +265 -130
  66. package/dist/SearchPage.cjs.map +1 -1
  67. package/dist/SearchPage.d.cts +25 -3
  68. package/dist/SearchPage.d.ts +25 -3
  69. package/dist/SearchPage.mjs +261 -129
  70. package/dist/SearchPage.mjs.map +1 -1
  71. package/dist/TablePage/EditComponents/index.cjs +296 -0
  72. package/dist/TablePage/EditComponents/index.cjs.map +1 -0
  73. package/dist/TablePage/EditComponents/index.d.cts +3 -0
  74. package/dist/TablePage/EditComponents/index.d.ts +3 -0
  75. package/dist/TablePage/EditComponents/index.mjs +286 -0
  76. package/dist/TablePage/EditComponents/index.mjs.map +1 -0
  77. package/dist/TablePage/EditComponents.cjs +296 -0
  78. package/dist/TablePage/EditComponents.cjs.map +1 -0
  79. package/dist/TablePage/EditComponents.d.cts +21 -0
  80. package/dist/TablePage/EditComponents.d.ts +21 -0
  81. package/dist/TablePage/EditComponents.mjs +286 -0
  82. package/dist/TablePage/EditComponents.mjs.map +1 -0
  83. package/dist/TablePage/ModalProvider/index.cjs +59 -58
  84. package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
  85. package/dist/TablePage/ModalProvider/index.d.cts +1 -1
  86. package/dist/TablePage/ModalProvider/index.d.ts +1 -1
  87. package/dist/TablePage/ModalProvider/index.mjs +50 -59
  88. package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
  89. package/dist/TablePage/ModalProvider.cjs +59 -58
  90. package/dist/TablePage/ModalProvider.cjs.map +1 -1
  91. package/dist/TablePage/ModalProvider.d.cts +7 -2
  92. package/dist/TablePage/ModalProvider.d.ts +7 -2
  93. package/dist/TablePage/ModalProvider.mjs +50 -59
  94. package/dist/TablePage/ModalProvider.mjs.map +1 -1
  95. package/dist/TablePage/index.cjs +555 -331
  96. package/dist/TablePage/index.cjs.map +1 -1
  97. package/dist/TablePage/index.d.cts +3 -2
  98. package/dist/TablePage/index.d.ts +3 -2
  99. package/dist/TablePage/index.mjs +539 -320
  100. package/dist/TablePage/index.mjs.map +1 -1
  101. package/dist/TablePage/players/index.cjs +24 -4
  102. package/dist/TablePage/players/index.cjs.map +1 -1
  103. package/dist/TablePage/players/index.mjs +24 -4
  104. package/dist/TablePage/players/index.mjs.map +1 -1
  105. package/dist/TablePage/players.cjs +24 -4
  106. package/dist/TablePage/players.cjs.map +1 -1
  107. package/dist/TablePage/players.mjs +24 -4
  108. package/dist/TablePage/players.mjs.map +1 -1
  109. package/dist/TablePage.cjs +555 -331
  110. package/dist/TablePage.cjs.map +1 -1
  111. package/dist/TablePage.d.cts +4 -1
  112. package/dist/TablePage.d.ts +4 -1
  113. package/dist/TablePage.mjs +539 -320
  114. package/dist/TablePage.mjs.map +1 -1
  115. package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
  116. package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
  117. package/dist/index.cjs +972 -460
  118. package/dist/index.cjs.map +1 -1
  119. package/dist/index.d.cts +5 -4
  120. package/dist/index.d.ts +5 -4
  121. package/dist/index.mjs +953 -457
  122. package/dist/index.mjs.map +1 -1
  123. package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
  124. package/dist/mocks/EventDetails.cjs.map +1 -0
  125. package/dist/mocks/EventDetails.d.cts +6 -0
  126. package/dist/mocks/EventDetails.d.ts +6 -0
  127. package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
  128. package/dist/mocks/EventDetails.mjs.map +1 -0
  129. package/dist/mocks/Tables.cjs +1 -1
  130. package/dist/mocks/Tables.cjs.map +1 -1
  131. package/dist/mocks/Tables.mjs +1 -1
  132. package/dist/mocks/Tables.mjs.map +1 -1
  133. package/dist/mocks/Tags.cjs +200 -0
  134. package/dist/mocks/Tags.cjs.map +1 -1
  135. package/dist/mocks/Tags.mjs +200 -0
  136. package/dist/mocks/Tags.mjs.map +1 -1
  137. package/dist/mocks/index.cjs +202 -2
  138. package/dist/mocks/index.cjs.map +1 -1
  139. package/dist/mocks/index.d.cts +1 -1
  140. package/dist/mocks/index.d.ts +1 -1
  141. package/dist/mocks/index.mjs +202 -2
  142. package/dist/mocks/index.mjs.map +1 -1
  143. package/dist/mocks.cjs +202 -2
  144. package/dist/mocks.cjs.map +1 -1
  145. package/dist/mocks.d.cts +1 -1
  146. package/dist/mocks.d.ts +1 -1
  147. package/dist/mocks.mjs +202 -2
  148. package/dist/mocks.mjs.map +1 -1
  149. package/dist/shared/index.cjs +327 -64
  150. package/dist/shared/index.cjs.map +1 -1
  151. package/dist/shared/index.d.cts +1 -1
  152. package/dist/shared/index.d.ts +1 -1
  153. package/dist/shared/index.mjs +324 -64
  154. package/dist/shared/index.mjs.map +1 -1
  155. package/dist/shared.cjs +327 -64
  156. package/dist/shared.cjs.map +1 -1
  157. package/dist/shared.d.cts +25 -2
  158. package/dist/shared.d.ts +25 -2
  159. package/dist/shared.mjs +324 -64
  160. package/dist/shared.mjs.map +1 -1
  161. package/dist/types/event.d.cts +2 -3
  162. package/dist/types/event.d.ts +2 -3
  163. package/dist/types/index.d.cts +2 -2
  164. package/dist/types/index.d.ts +2 -2
  165. package/dist/types/search.d.cts +7 -1
  166. package/dist/types/search.d.ts +7 -1
  167. package/dist/types/tables.d.cts +1 -0
  168. package/dist/types/tables.d.ts +1 -0
  169. package/dist/types.d.cts +2 -2
  170. package/dist/types.d.ts +2 -2
  171. package/package.json +9 -2
  172. package/dist/TablePage/ModalProvider/index.css +0 -49
  173. package/dist/TablePage/ModalProvider/index.css.map +0 -1
  174. package/dist/TablePage/ModalProvider.css +0 -49
  175. package/dist/TablePage/ModalProvider.css.map +0 -1
  176. package/dist/TablePage/index.css +0 -49
  177. package/dist/TablePage/index.css.map +0 -1
  178. package/dist/TablePage.css +0 -49
  179. package/dist/TablePage.css.map +0 -1
  180. package/dist/index.css +0 -49
  181. package/dist/index.css.map +0 -1
  182. package/dist/mocks/EventDB.cjs.map +0 -1
  183. package/dist/mocks/EventDB.d.cts +0 -6
  184. package/dist/mocks/EventDB.d.ts +0 -6
  185. package/dist/mocks/EventDB.mjs.map +0 -1
  186. package/dist/shared/Modal/index.cjs +0 -64
  187. package/dist/shared/Modal/index.cjs.map +0 -1
  188. package/dist/shared/Modal/index.css +0 -49
  189. package/dist/shared/Modal/index.css.map +0 -1
  190. package/dist/shared/Modal/index.d.cts +0 -2
  191. package/dist/shared/Modal/index.d.ts +0 -2
  192. package/dist/shared/Modal/index.mjs +0 -62
  193. package/dist/shared/Modal/index.mjs.map +0 -1
  194. package/dist/shared/Modal.cjs +0 -64
  195. package/dist/shared/Modal.cjs.map +0 -1
  196. package/dist/shared/Modal.css +0 -49
  197. package/dist/shared/Modal.css.map +0 -1
  198. package/dist/shared/Modal.d.cts +0 -9
  199. package/dist/shared/Modal.d.ts +0 -9
  200. package/dist/shared/Modal.mjs +0 -62
  201. package/dist/shared/Modal.mjs.map +0 -1
  202. package/dist/shared/index.css +0 -49
  203. package/dist/shared/index.css.map +0 -1
  204. package/dist/shared.css +0 -49
  205. package/dist/shared.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/shared/Chip.tsx","../../../src/components/shared/TagComponents.tsx","../../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs"],"mappings":";;;;;;AAGe,SAAR,IAAA,CAAsB,EAAE,GAAA,EAAK,cAAA,EAAe,EAA2D;AAH9G,EAAA,IAAA,EAAA;AAIE,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,GAAA,CAAI,KAAA,KAAJ,IAAA,GAAA,EAAA,GAAa,SAAA;AAC3B,EAAA,uBACI,GAAA,CAAA,QAAA,EAAA,EACA,QAAA,kBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAEG,SAAA,EAAU,iHAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,WAAA,EAAa,sBAAsB,KAAK,CAAA,YAAA,CAAA;AAAA,QACxC,UAAA,EAAY,CAAA,2CAAA,EAA8C,KAAK,CAAA,oCAAA,EAAuC,KAAK,CAAA,kBAAA,CAAA;AAAA,QAC3G,UAAA,EAAY,uBAAA;AAAA,QACZ,MAAA,EAAQ,gDAAgD,KAAK,CAAA,aAAA;AAAA,OAC/D;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,KAAA;AAAA,QACJ,cAAA,oBACG,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACG,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,cAAA,CAAe,GAAA,CAAI,EAAE,CAAA;AAAA,YACpC,SAAA,EAAU,8GAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY;AAAA,aACd;AAAA,YACH,QAAA,EAAA;AAAA;AAAA;AAED;AAAA,KAAA;AAAA,IApBC,GAAA,CAAI;AAAA,GAsBf,EACA,CAAA;AAGJ;AC5BO,SAAS,oBAAoB,GAAA,EAAU;AAC1C,EAAA,uBACIA,GAAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAA,EAAe,IAAI,EAAI,CAAA;AAErC;AAEO,SAAS,iBAAA,CAAkB,KAA2B,SAAA,EAAkB;AAC3E,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,SAAA,IAAa,SAAA,CAAU,WAAW,CAAA,EAAG;AAAE,IAAA,uBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAE,CAAA;AAAA,EAAK;AACpE,EAAA,MAAM,YAAY,GAAA,CACb,GAAA,CAAI,CAAC,EAAA,KAAO,SAAA,CAAU,KAAK,CAAC,GAAA,KAAQ,IAAI,EAAA,KAAO,EAAE,CAAC,CAAA,CAClD,MAAA,CAAO,CAAC,GAAA,KAAoB,OAAA,CAAQ,GAAG,CAAC,CAAA;AAE7C,EAAA,OAAO,UAAU,GAAA,CAAI,CAAC,GAAA,KAAQ,mBAAA,CAAoB,GAAG,CAAC,CAAA;AAC1D;ACEO,IAAM,oBAAA,GAAuB,SAAS,KAAA,EAAkC;AAC3E,EAAA,MAAM;AAAA,IACF,OAAA;AAAA,IACA,sBAAA;AAAA,IACA,OAAA;AAAA,IACA,2BAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACJ,GAAI,KAAA;AAEJ,EAAA,uBACID,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,IAAI,EAAE,eAAA,EAAiB,OAAA,GAAU,SAAA,GAAY,WAAW,YAAA,EAAa,KAAA,EAAM,EAC3F,QAAA,kBAAAE,KAAC,WAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAA,KAAC,IAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EAAG,WAAU,QAAA,EAClC,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,WAAU,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAF,IAAC,IAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,KAAK,MAAA,CAAO,QAAA,GAAW,gBAAA,EAAkB,MAAA,EAAQ,IAAI,GAAA,EAAK,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,EAAO,IAAI,CAAA,EACtG,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA,CAAC,cAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,QAAA,EAAS,CAAA,EAC9C;AAAA,OAAA,EACJ,CAAA;AAAA,sBACAA,GAAAA,CAAC,IAAA,EAAA,EAAM,4BAAkB,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAE;AAAA,KAAA,EACnD,CAAA;AAAA,IACC,OAAA,oBACGE,IAAAA,CAAC,IAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAAF,IAAC,MAAA,EAAA,EAAO,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAM,CAAA,EACvC,QAAA,EAAA,UAAA,mBAAaA,GAAAA,CAAC,OAAE,QAAA,EAAA,aAAA,EAAW,CAAA,mBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,2BAAa,CAAA,EACxD,CAAA;AAAA,MACC,sBAAA,oBACGA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAS,MAAM;AACnB,QAAA,2BAAA,CAA4B,MAAM,CAAA;AAClC,QAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC1B,CAAA,EACI,QAAA,kBAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,qCAAuB,CAAA,EAC9B;AAAA,KAAA,EAER;AAAA,GAAA,EAER,CAAA,EACJ,CAAA;AAER;AAEO,IAAM,mBAAmB,SAAS,EAAC,OAAA,EAAS,MAAA,EAAQ,SAAO,EAAqD;AACnH,EAAA,uBACIE,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,EAAA,EAAI,EAAE,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAa,KAAA,EAAM,EACrE,QAAA,EAAA;AAAA,oBAAAF,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,EAAC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAI,EAAC,EAAG,KAAA,EAAM,aAAA,EAAa,CAAA;AAAA,oBACrEA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAI,EAAE,eAAA,EAAiB,UAAU,SAAA,GAAY,SAAA,EAAU,EAChE,QAAA,kBAAAE,KAAC,IAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EAAG,WAAU,QAAA,EAClC,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAAC,QACG,QAAA,kBAAAA,GAAAA,CAAC,cAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,QAAA,EAAS,CAAA,EAC9C,CAAA;AAAA,sBACAE,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,WAAU,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAF,IAAC,IAAA,EAAA,EACG,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAM,GAAA,EAAK,OAAO,QAAA,GAAW,gBAAA,EAAkB,QAAQ,GAAA,EAAK,GAAA,EAAK,OAAO,QAAA,GAAW,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,EAAO,KAAK,CAAA,EAC1H,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EAAM,4BAAkB,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAE,CAAA;AAAA,wBAC/CA,GAAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,MAAA,CAAO,WAAA,EAAY;AAAA,OAAA,EACpC;AAAA,KAAA,EACJ,CAAA,EACJ;AAAA,GAAA,EACJ,CAAA;AAER","file":"index.mjs","sourcesContent":["import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n return validTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","\"use client\";\n\nimport Image from \"next/image\";\nimport Button from \"@mui/material/Button\";\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\nimport type { Player } from \"@/types/player\";\nimport type { Tag } from \"@/types/tag\";\n\nexport type PlayerHighlightsCardProps = {\n addToTable?: (player: Player) => void;\n allTags: Tag[];\n canChangeDungeonMaster: boolean;\n canEdit: boolean;\n handleAssignToDungeonMaster: (player: Player) => void;\n isWaitList?: boolean;\n player: Player;\n removeFromTable: (player: Player) => void;\n}\n\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\n const {\n allTags,\n canChangeDungeonMaster,\n canEdit,\n handleAssignToDungeonMaster,\n isWaitList,\n player,\n removeFromTable\n } = props;\n\n return (\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardContent>\n <Grid container spacing={2} direction=\"column\">\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || \"\"} width={64} />\n </Grid>\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n </Grid>\n {canEdit && (\n <Grid>\n <Button onClick={() => removeFromTable(player)}>\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\n </Button>\n {canChangeDungeonMaster && (\n <Button onClick={() => {\n handleAssignToDungeonMaster(player);\n removeFromTable(player);\n }}>\n <p>Assign to DungeonMaster</p>\n </Button>\n )}\n </Grid>\n )}\n </CardContent>\n </Card>\n )\n}\n\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\n return (\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\n <Grid container spacing={2} direction=\"column\">\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl ? player.imageUrl : \"\"} width={256} />\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n <Typography>{player.description}</Typography>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/shared/Chip.tsx","../../../src/components/shared/TagComponents.tsx","../../../src/data/values.tsx","../../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs"],"mappings":"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","file":"index.mjs","sourcesContent":["import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[], options: { showEventTag?: boolean, eventTagId?: number } = {}) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const { showEventTag = false, eventTagId } = options;\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n // Sort tags: event tag (if shown) first, then \"Organizer Run\", then \"Display Only\", then others\r\n const sortedTags = [...validTags].sort((a, b) => {\r\n // Handle event tag priority if enabled\r\n if (showEventTag && eventTagId !== undefined) {\r\n if (a.id === eventTagId && b.id === eventTagId) return 0;\r\n if (a.id === eventTagId) return -1;\r\n if (b.id === eventTagId) return 1;\r\n }\r\n\r\n const priorityOrder = [\"Organizer Run\", \"Display Only\"];\r\n const aIndex = priorityOrder.indexOf(a.label);\r\n const bIndex = priorityOrder.indexOf(b.label);\r\n\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== -1) return -1;\r\n if (bIndex !== -1) return 1;\r\n return 0;\r\n });\r\n\r\n return sortedTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","export function BlurbTitles() {\r\n const blurbTitles = new Map();\r\n blurbTitles.set(1, \"What’s your most epic tabletop moment?\");\r\n blurbTitles.set(2, \"What type of character do you dream of playing?\");\r\n blurbTitles.set(3, \"What kind of story are you most excited to be part of?\");\r\n blurbTitles.set(4, \"Which tabletop world would you want to live in?\");\r\n blurbTitles.set(5, \"If you could only play one tabletop game forever, what would it be?\");\r\n blurbTitles.set(6, \"What’s a fantasy or sci-fi world you love and would want to game in?\");\r\n blurbTitles.set(7, \"Who’s the most chaotic (or hilarious) player you've ever gamed with?\");\r\n blurbTitles.set(8, \"What motivates you to join a tabletop game: adventure, laughs, or something else?\");\r\n blurbTitles.set(9, \"What’s your weirdest in-game flex?\");\r\n blurbTitles.set(10, \"Which class or archetype are you drawn to—fighter, mage, rogue, healer, or wildcard?\");\r\n blurbTitles.set(11, \"What character did you have the most fun playing?\");\r\n blurbTitles.set(12, \"What kind of player are you: Min-maxer, storyteller, or chaos incarnate?\");\r\n blurbTitles.set(13, \"Describe the best campaign twist you’ve ever experienced.\");\r\n blurbTitles.set(14, \"What’s your guilty pleasure when it comes to character archetypes?\");\r\n blurbTitles.set(15, \"Who’s your favorite villain or antagonist you’ve faced in a campaign?\");\r\n blurbTitles.set(16, \"What’s the hardest decision your character ever had to make?\");\r\n blurbTitles.set(17, \"What’s the funniest tabletop memory you’ve ever had?\");\r\n blurbTitles.set(18, \"Ever had a tabletop game go completely off the rails? What happened?\");\r\n blurbTitles.set(19, \"Introduce us to your favorite homebrew rule!\");\r\n blurbTitles.set(20, \"What’s your favorite dice-rolling ritual or superstition?\");\r\n blurbTitles.set(21, \"What’s your go-to tabletop snack during sessions?\");\r\n blurbTitles.set(22, \"What’s the most creative solution you’ve ever come up with in a game?\");\r\n blurbTitles.set(23, \"What NPC or character from a campaign would you date IRL?\");\r\n blurbTitles.set(24, \"What’s your favorite tabletop rule or mechanic?\");\r\n blurbTitles.set(25, \"What’s the most emotional tabletop moment you’ve had?\");\r\n blurbTitles.set(26, \"What kind of story twist or epic moment would make you fall in love with the game?\");\r\n blurbTitles.set(27, \"What’s the most challenging yet rewarding NPC you've ever created?\");\r\n blurbTitles.set(28, \"How do you keep players on track without railroading your game?\");\r\n blurbTitles.set(29, \"What’s the most unexpected way your players solved a problem you designed?\");\r\n blurbTitles.set(30, \"What’s your favorite resource or tool for planning campaigns?\");\r\n blurbTitles.set(31, \"What’s the funniest way your players have broken your carefully-planned encounter?\");\r\n blurbTitles.set(32, \"What’s the most memorable villain or antagonist you’ve created?\");\r\n blurbTitles.set(33, \"How do you handle player conflict in your campaigns?\");\r\n blurbTitles.set(34, \"What’s your favorite homebrew rule to spice up your campaigns?\");\r\n blurbTitles.set(35, \"Have you ever scrapped a planned session because of something your players did?\");\r\n blurbTitles.set(36, \"What’s the most creative environment or setting you’ve designed for your players?\");\r\n\r\n return blurbTitles;\r\n}\r\n\r\nexport function PrivacyValues() {\r\n const privacyValues = new Map();\r\n privacyValues.set(1, \"private\");\r\n privacyValues.set(\"private\", 1);\r\n\r\n privacyValues.set(2, \"connection\");\r\n privacyValues.set(\"connection\",2);\r\n\r\n privacyValues.set(3, \"public\");\r\n privacyValues.set(\"public\", 3);\r\n\r\n privacyValues.set(4, \"table\");\r\n privacyValues.set(\"table\", 4);\r\n\r\n return privacyValues;\r\n}\r\n\r\nexport function PlayerTagLabels(): string[] {\r\n const tagTitles: string[] = [];\r\n\r\n tagTitles.push(\"girl gamer\");\r\n tagTitles.push(\"veteran\");\r\n tagTitles.push(\"new\");\r\n tagTitles.push(\"min-maxer\");\r\n tagTitles.push(\"role-player\");\r\n tagTitles.push(\"rules lawyer\");\r\n tagTitles.push(\"storyteller\");\r\n tagTitles.push(\"chaotic\");\r\n tagTitles.push(\"planner\");\r\n tagTitles.push(\"wildcard\");\r\n tagTitles.push(\"protector\");\r\n tagTitles.push(\"rogue-like\");\r\n tagTitles.push(\"power gamer\");\r\n tagTitles.push(\"thinker\");\r\n tagTitles.push(\"narrative\");\r\n tagTitles.push(\"homebrewer\");\r\n tagTitles.push(\"dungeon master\");\r\n tagTitles.push(\"world builder\");\r\n tagTitles.push(\"solver\");\r\n tagTitles.push(\"strategist\");\r\n tagTitles.push(\"dice lover\");\r\n tagTitles.push(\"performer\");\r\n tagTitles.push(\"casual\");\r\n tagTitles.push(\"character-focused\");\r\n tagTitles.push(\"team player\");\r\n tagTitles.push(\"mechanics\");\r\n tagTitles.push(\"adventurer\");\r\n tagTitles.push(\"collector\");\r\n tagTitles.push(\"problem solver\");\r\n tagTitles.push(\"innovator\");\r\n tagTitles.push(\"lorekeeper\");\r\n tagTitles.push(\"rule bender\");\r\n tagTitles.push(\"sandboxer\");\r\n tagTitles.push(\"cartographer\");\r\n tagTitles.push(\"loyalist\");\r\n tagTitles.push(\"wrangler\");\r\n tagTitles.push(\"moment maker\");\r\n tagTitles.push(\"jinxed roller\");\r\n tagTitles.push(\"lucky roller\");\r\n tagTitles.push(\"meticulous\");\r\n tagTitles.push(\"improviser\");\r\n tagTitles.push(\"tactician\");\r\n tagTitles.push(\"butterfly\");\r\n tagTitles.push(\"beginner\");\r\n tagTitles.push(\"voice actor\");\r\n tagTitles.push(\"multi-campaign\");\r\n tagTitles.push(\"starter\");\r\n tagTitles.push(\"forever DM\");\r\n tagTitles.push(\"finisher\");\r\n tagTitles.push(\"swapper\");\r\n tagTitles.push(\"meta-gamer\");\r\n tagTitles.push(\"specialist\");\r\n\r\n return tagTitles;\r\n}\r\n\r\n\r\nexport const FantasyNouns = [\r\n // Core D&D Classes\r\n \"Fighter\", \"Rogue\", \"Wizard\", \"Cleric\", \"Paladin\", \"Barbarian\", \"Ranger\", \"Sorcerer\", \"Bard\", \"Monk\", \"Warlock\", \"Druid\", \"Artificer\",\r\n\r\n // Fantasy Occupations\r\n \"Alchemist\", \"Blacksmith\", \"Knight\", \"Mage\", \"Mercenary\", \"Archer\", \"Scribe\", \"Healer\", \"Hunter\", \"Assassin\", \"Enchanter\",\r\n \"Miner\", \"Sailor\", \"Merchant\", \"Herbalist\", \"Cartographer\", \"Tailor\", \"Innkeeper\", \"Cook\", \"Scholar\",\r\n\r\n // Archetypes\r\n \"Adventurer\", \"Champion\", \"Warlord\", \"Outlaw\", \"Pilgrim\", \"Prophet\", \"Necromancer\", \"Witch\", \"Shaman\",\r\n \"Beastmaster\", \"Acolyte\", \"Spellblade\", \"Battlemage\", \"Blademaster\", \"Warpriest\", \"Berserker\", \"Elementalist\",\r\n\r\n // Fantasy Creatures/Beings\r\n \"Dragon\", \"Elf\", \"Dwarf\", \"Orc\", \"Goblin\", \"Gnome\", \"Tiefling\", \"Genasi\", \"Halfling\", \"Lich\", \"Vampire\", \"Werewolf\",\r\n \"Demon\", \"Angel\", \"Pixie\", \"Dryad\", \"Centaur\", \"Chimera\", \"Golem\", \"Fairy\", \"Troll\", \"Minotaur\", \"Kraken\",\r\n \"Griffin\", \"Phoenix\",\r\n\r\n // Fantasy Roles/Titles\r\n \"Archmage\", \"High Priestess\", \"King\", \"Queen\", \"Duke\", \"Duchess\", \"Emperor\", \"Empress\", \"Captain\", \"Seer\", \"Oracle\",\r\n \"Warden\", \"Guardian\", \"Watchman\", \"Hero\", \"Villain\", \"Herald\", \"Scout\", \"Envoy\",\r\n\r\n // Other Fantasy-Themed Nouns\r\n \"Spellcaster\", \"Summoner\", \"Conjurer\", \"Warrior\", \"Gladiator\", \"Pathfinder\", \"Explorer\", \"Tinkerer\", \"Shadowblade\",\r\n \"Dungeoneer\", \"Archon\", \"Mystic\", \"Sage\", \"Runemaster\", \"Smith\", \"Wanderer\", \"Wayfarer\", \"Avenger\", \"Defender\", \"Keeper\"\r\n];\r\n\r\nexport const FantasyAdjectives = [\r\n // Descriptive of Power/Strength\r\n \"Mighty\", \"Powerful\", \"Fierce\", \"Tough\", \"Armored\", \"Indomitable\", \"Savage\", \"Vengeful\", \"Heroic\", \"Valiant\",\r\n\r\n // Magical Features\r\n \"Enchanted\", \"Bewitched\", \"Magical\", \"Mystical\", \"Ethereal\", \"Arcane\", \"Spellbound\", \"Supernatural\", \"Runed\",\r\n\r\n // Personality/Appearance Traits\r\n \"Noble\", \"Gallant\", \"Cunning\", \"Crafty\", \"Shadowy\", \"Elegant\", \"Wise\", \"Shrewd\", \"Merciless\", \"Serene\",\r\n \"Infernal\", \"Wicked\", \"Pious\", \"Charming\", \"Loyal\", \"Treacherous\", \"Bold\", \"Cowardly\", \"Sly\",\r\n\r\n // Environment-Themed\r\n \"Cursed\", \"Blessed\", \"Haunted\", \"Frozen\", \"Burning\", \"Fiery\", \"Icy\", \"Stormy\", \"Sunlit\", \"Moonlit\",\r\n \"Dark\", \"Luminous\", \"Glistening\", \"Ancient\", \"Shattered\", \"Sacred\", \"Forbidden\", \"Hidden\", \"Lost\",\r\n \"Verdant\", \"Barren\",\r\n\r\n // Monster/Creature Traits\r\n \"Ferocious\", \"Ravenous\", \"Menacing\", \"Grotesque\", \"Spiked\", \"Scaled\", \"Hulking\", \"Winged\", \"Fanged\", \"Horned\",\r\n \"Tentacled\", \"Shapeshifting\",\r\n\r\n // Mystical/Abstract Traits\r\n \"Immortal\", \"Mythical\", \"Omniscient\", \"Unbreakable\",\r\n \"Unfathomable\", \"Celestial\", \"Void\", \"Otherworldly\", \"Primordial\",\r\n\r\n // Precious/Gleaming Adjectives\r\n \"Golden\", \"Silver\", \"Crystalline\", \"Diamond\", \"Jeweled\", \"Sapphire\", \"Emerald\", \"Shimmering\", \"Gleaming\", \"Radiant\",\r\n\r\n // Combat-Related Traits\r\n \"Bloodstained\", \"Battleworn\", \"Unyielding\", \"Victorious\", \"Deadly\", \"Sharp\", \"Piercing\", \"Relentless\", \"Untouchable\",\r\n\r\n // Nature-Themed\r\n \"Whispering\", \"Thorned\", \"Blossoming\", \"Blooming\", \"Overgrown\", \"Howling\", \"Cracked\", \"Twisted\", \"Mossy\", \"Winding\",\r\n \"Towering\", \"Rooted\",\r\n\r\n // Emotional/Thematic Descriptors\r\n \"Free\", \"Courageous\", \"Reckless\", \"Damned\", \"Lonely\", \"Heartless\", \"Driven\", \"Hopeful\",\r\n \"Fateful\"\r\n];\r\n\r\nexport const FantasyQualifiers = [\r\n // Describing Uniqueness or Origins\r\n \"Original\", \"Prime\", \"Primal\", \"Archetypal\", \"Ancestral\", \"Legendary\", \"Foremost\",\r\n\r\n // Describing Finality or Completion\r\n \"Final\", \"Ultimate\", \"Absolute\", \"Conclusive\", \"Eternal\", \"Enduring\", \"Definitive\",\r\n\r\n // Describing Supremacy or Greatness\r\n \"Supreme\", \"Paramount\", \"Preeminent\", \"Pinnacle\", \"Peerless\", \"Unrivaled\", \"Sovereign\", \"Dominant\",\r\n\r\n // Describing Perfection or Excellence\r\n \"Flawless\", \"Perfect\", \"Divine\", \"Exalted\", \"Transcendent\", \"Matchless\", \"Incomparable\",\r\n\r\n // Describing Eternity or Timelessness\r\n \"Timeless\", \"Boundless\", \"Ageless\", \"Perpetual\", \"Infinite\", \"Everlasting\",\r\n\r\n // Describing Power or Authority\r\n \"Omnipotent\", \"Almighty\", \"Unassailable\", \"Overwhelming\", \"Irresistible\", \"Unconquerable\", \"Majestic\"\r\n];\r\n\r\nexport const generateUsername = () => {\r\n let output = \"\"\r\n\r\n output+= getRandomElement(FantasyQualifiers)\r\n output+= getRandomElement(FantasyAdjectives)\r\n output+= getRandomElement(FantasyNouns)\r\n\r\n return output;\r\n}\r\n\r\nexport const DEFAULT_PROFILE_PIC = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=\";\r\n\r\nexport const ProfilePictureSettings = {\r\n aspectRatio: 4/5,\r\n minWidth: 400,\r\n}\r\n\r\nconst getRandomElement = (array: string[]) => {\r\n return array[Math.floor(Math.random() * array.length)];\r\n}\r\n\r\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\r\nimport type { Player } from \"@/types/player\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport { DEFAULT_PROFILE_PIC } from \"@/data/values\";\r\n\r\nexport type PlayerHighlightsCardProps = {\r\n addToTable?: (player: Player) => void;\r\n allTags: Tag[];\r\n canChangeDungeonMaster: boolean;\r\n canEdit: boolean;\r\n handleAssignToDungeonMaster: (player: Player) => void;\r\n isWaitList?: boolean;\r\n player: Player;\r\n removeFromTable: (player: Player) => void;\r\n}\r\n\r\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\r\n const {\r\n allTags,\r\n canChangeDungeonMaster,\r\n canEdit,\r\n handleAssignToDungeonMaster,\r\n isWaitList,\r\n player,\r\n removeFromTable\r\n } = props;\r\n\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardContent>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || DEFAULT_PROFILE_PIC} width={64} />\r\n </Grid>\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n </Grid>\r\n {canEdit && (\r\n <Grid>\r\n <Button onClick={() => removeFromTable(player)}>\r\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\r\n </Button>\r\n {canChangeDungeonMaster && (\r\n <Button onClick={() => {\r\n handleAssignToDungeonMaster(player);\r\n removeFromTable(player);\r\n }}>\r\n <p>Assign to DungeonMaster</p>\r\n </Button>\r\n )}\r\n </Grid>\r\n )}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\r\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl || DEFAULT_PROFILE_PIC} width={256} />\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n <Typography>{player.description}</Typography>\r\n </Grid>\r\n </Grid>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n"]}
@@ -48,13 +48,33 @@ function Chip({ tag, removeCallback }) {
48
48
  function generateTagsDisplay(tag) {
49
49
  return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
50
50
  }
51
- function renderTagsFromIds(ids, legalTags) {
51
+ function renderTagsFromIds(ids, legalTags, options = {}) {
52
52
  if (!ids || !legalTags || legalTags.length === 0) {
53
53
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
54
54
  }
55
+ const { showEventTag = false, eventTagId } = options;
55
56
  const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
56
- return validTags.map((tag) => generateTagsDisplay(tag));
57
+ const sortedTags = [...validTags].sort((a, b) => {
58
+ if (showEventTag && eventTagId !== void 0) {
59
+ if (a.id === eventTagId && b.id === eventTagId) return 0;
60
+ if (a.id === eventTagId) return -1;
61
+ if (b.id === eventTagId) return 1;
62
+ }
63
+ const priorityOrder = ["Organizer Run", "Display Only"];
64
+ const aIndex = priorityOrder.indexOf(a.label);
65
+ const bIndex = priorityOrder.indexOf(b.label);
66
+ if (aIndex !== -1 && bIndex !== -1) {
67
+ return aIndex - bIndex;
68
+ }
69
+ if (aIndex !== -1) return -1;
70
+ if (bIndex !== -1) return 1;
71
+ return 0;
72
+ });
73
+ return sortedTags.map((tag) => generateTagsDisplay(tag));
57
74
  }
75
+
76
+ // src/data/values.tsx
77
+ var DEFAULT_PROFILE_PIC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=";
58
78
  var PlayerHighlightsCard = function(props) {
59
79
  const {
60
80
  allTags,
@@ -68,7 +88,7 @@ var PlayerHighlightsCard = function(props) {
68
88
  return /* @__PURE__ */ jsxRuntime.jsx(material.Card, { elevation: 3, sx: { backgroundColor: canEdit ? "#fffbea" : "#f5f9fa", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { children: [
69
89
  /* @__PURE__ */ jsxRuntime.jsxs(Grid__default.default, { container: true, spacing: 2, direction: "column", children: [
70
90
  /* @__PURE__ */ jsxRuntime.jsxs(Grid__default.default, { container: true, direction: "row", children: [
71
- /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image__default.default, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || "", width: 64 }) }),
91
+ /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image__default.default, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || DEFAULT_PROFILE_PIC, width: 64 }) }),
72
92
  /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) })
73
93
  ] }),
74
94
  /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: renderTagsFromIds(player.tags, allTags) })
@@ -88,7 +108,7 @@ var DMHighlightsCard = function({ canEdit, player, allTags }) {
88
108
  /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(Grid__default.default, { container: true, spacing: 2, direction: "column", children: [
89
109
  /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) }),
90
110
  /* @__PURE__ */ jsxRuntime.jsxs(Grid__default.default, { container: true, direction: "row", children: [
91
- /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image__default.default, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl ? player.imageUrl : "", width: 256 }) }),
111
+ /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image__default.default, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl || DEFAULT_PROFILE_PIC, width: 256 }) }),
92
112
  /* @__PURE__ */ jsxRuntime.jsx(Grid__default.default, { children: renderTagsFromIds(player.tags, allTags) }),
93
113
  /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: player.description })
94
114
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs","Card","CardContent","Grid","Image","Typography","Button","CardHeader"],"mappings":"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","file":"players.cjs","sourcesContent":["import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n return validTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","\"use client\";\n\nimport Image from \"next/image\";\nimport Button from \"@mui/material/Button\";\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\nimport type { Player } from \"@/types/player\";\nimport type { Tag } from \"@/types/tag\";\n\nexport type PlayerHighlightsCardProps = {\n addToTable?: (player: Player) => void;\n allTags: Tag[];\n canChangeDungeonMaster: boolean;\n canEdit: boolean;\n handleAssignToDungeonMaster: (player: Player) => void;\n isWaitList?: boolean;\n player: Player;\n removeFromTable: (player: Player) => void;\n}\n\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\n const {\n allTags,\n canChangeDungeonMaster,\n canEdit,\n handleAssignToDungeonMaster,\n isWaitList,\n player,\n removeFromTable\n } = props;\n\n return (\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardContent>\n <Grid container spacing={2} direction=\"column\">\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || \"\"} width={64} />\n </Grid>\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n </Grid>\n {canEdit && (\n <Grid>\n <Button onClick={() => removeFromTable(player)}>\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\n </Button>\n {canChangeDungeonMaster && (\n <Button onClick={() => {\n handleAssignToDungeonMaster(player);\n removeFromTable(player);\n }}>\n <p>Assign to DungeonMaster</p>\n </Button>\n )}\n </Grid>\n )}\n </CardContent>\n </Card>\n )\n}\n\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\n return (\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\n <Grid container spacing={2} direction=\"column\">\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl ? player.imageUrl : \"\"} width={256} />\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n <Typography>{player.description}</Typography>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/data/values.tsx","../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs","Card","CardContent","Grid","Image","Typography","Button","CardHeader"],"mappings":"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","file":"players.cjs","sourcesContent":["import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[], options: { showEventTag?: boolean, eventTagId?: number } = {}) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const { showEventTag = false, eventTagId } = options;\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n // Sort tags: event tag (if shown) first, then \"Organizer Run\", then \"Display Only\", then others\r\n const sortedTags = [...validTags].sort((a, b) => {\r\n // Handle event tag priority if enabled\r\n if (showEventTag && eventTagId !== undefined) {\r\n if (a.id === eventTagId && b.id === eventTagId) return 0;\r\n if (a.id === eventTagId) return -1;\r\n if (b.id === eventTagId) return 1;\r\n }\r\n\r\n const priorityOrder = [\"Organizer Run\", \"Display Only\"];\r\n const aIndex = priorityOrder.indexOf(a.label);\r\n const bIndex = priorityOrder.indexOf(b.label);\r\n\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== -1) return -1;\r\n if (bIndex !== -1) return 1;\r\n return 0;\r\n });\r\n\r\n return sortedTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","export function BlurbTitles() {\r\n const blurbTitles = new Map();\r\n blurbTitles.set(1, \"What’s your most epic tabletop moment?\");\r\n blurbTitles.set(2, \"What type of character do you dream of playing?\");\r\n blurbTitles.set(3, \"What kind of story are you most excited to be part of?\");\r\n blurbTitles.set(4, \"Which tabletop world would you want to live in?\");\r\n blurbTitles.set(5, \"If you could only play one tabletop game forever, what would it be?\");\r\n blurbTitles.set(6, \"What’s a fantasy or sci-fi world you love and would want to game in?\");\r\n blurbTitles.set(7, \"Who’s the most chaotic (or hilarious) player you've ever gamed with?\");\r\n blurbTitles.set(8, \"What motivates you to join a tabletop game: adventure, laughs, or something else?\");\r\n blurbTitles.set(9, \"What’s your weirdest in-game flex?\");\r\n blurbTitles.set(10, \"Which class or archetype are you drawn to—fighter, mage, rogue, healer, or wildcard?\");\r\n blurbTitles.set(11, \"What character did you have the most fun playing?\");\r\n blurbTitles.set(12, \"What kind of player are you: Min-maxer, storyteller, or chaos incarnate?\");\r\n blurbTitles.set(13, \"Describe the best campaign twist you’ve ever experienced.\");\r\n blurbTitles.set(14, \"What’s your guilty pleasure when it comes to character archetypes?\");\r\n blurbTitles.set(15, \"Who’s your favorite villain or antagonist you’ve faced in a campaign?\");\r\n blurbTitles.set(16, \"What’s the hardest decision your character ever had to make?\");\r\n blurbTitles.set(17, \"What’s the funniest tabletop memory you’ve ever had?\");\r\n blurbTitles.set(18, \"Ever had a tabletop game go completely off the rails? What happened?\");\r\n blurbTitles.set(19, \"Introduce us to your favorite homebrew rule!\");\r\n blurbTitles.set(20, \"What’s your favorite dice-rolling ritual or superstition?\");\r\n blurbTitles.set(21, \"What’s your go-to tabletop snack during sessions?\");\r\n blurbTitles.set(22, \"What’s the most creative solution you’ve ever come up with in a game?\");\r\n blurbTitles.set(23, \"What NPC or character from a campaign would you date IRL?\");\r\n blurbTitles.set(24, \"What’s your favorite tabletop rule or mechanic?\");\r\n blurbTitles.set(25, \"What’s the most emotional tabletop moment you’ve had?\");\r\n blurbTitles.set(26, \"What kind of story twist or epic moment would make you fall in love with the game?\");\r\n blurbTitles.set(27, \"What’s the most challenging yet rewarding NPC you've ever created?\");\r\n blurbTitles.set(28, \"How do you keep players on track without railroading your game?\");\r\n blurbTitles.set(29, \"What’s the most unexpected way your players solved a problem you designed?\");\r\n blurbTitles.set(30, \"What’s your favorite resource or tool for planning campaigns?\");\r\n blurbTitles.set(31, \"What’s the funniest way your players have broken your carefully-planned encounter?\");\r\n blurbTitles.set(32, \"What’s the most memorable villain or antagonist you’ve created?\");\r\n blurbTitles.set(33, \"How do you handle player conflict in your campaigns?\");\r\n blurbTitles.set(34, \"What’s your favorite homebrew rule to spice up your campaigns?\");\r\n blurbTitles.set(35, \"Have you ever scrapped a planned session because of something your players did?\");\r\n blurbTitles.set(36, \"What’s the most creative environment or setting you’ve designed for your players?\");\r\n\r\n return blurbTitles;\r\n}\r\n\r\nexport function PrivacyValues() {\r\n const privacyValues = new Map();\r\n privacyValues.set(1, \"private\");\r\n privacyValues.set(\"private\", 1);\r\n\r\n privacyValues.set(2, \"connection\");\r\n privacyValues.set(\"connection\",2);\r\n\r\n privacyValues.set(3, \"public\");\r\n privacyValues.set(\"public\", 3);\r\n\r\n privacyValues.set(4, \"table\");\r\n privacyValues.set(\"table\", 4);\r\n\r\n return privacyValues;\r\n}\r\n\r\nexport function PlayerTagLabels(): string[] {\r\n const tagTitles: string[] = [];\r\n\r\n tagTitles.push(\"girl gamer\");\r\n tagTitles.push(\"veteran\");\r\n tagTitles.push(\"new\");\r\n tagTitles.push(\"min-maxer\");\r\n tagTitles.push(\"role-player\");\r\n tagTitles.push(\"rules lawyer\");\r\n tagTitles.push(\"storyteller\");\r\n tagTitles.push(\"chaotic\");\r\n tagTitles.push(\"planner\");\r\n tagTitles.push(\"wildcard\");\r\n tagTitles.push(\"protector\");\r\n tagTitles.push(\"rogue-like\");\r\n tagTitles.push(\"power gamer\");\r\n tagTitles.push(\"thinker\");\r\n tagTitles.push(\"narrative\");\r\n tagTitles.push(\"homebrewer\");\r\n tagTitles.push(\"dungeon master\");\r\n tagTitles.push(\"world builder\");\r\n tagTitles.push(\"solver\");\r\n tagTitles.push(\"strategist\");\r\n tagTitles.push(\"dice lover\");\r\n tagTitles.push(\"performer\");\r\n tagTitles.push(\"casual\");\r\n tagTitles.push(\"character-focused\");\r\n tagTitles.push(\"team player\");\r\n tagTitles.push(\"mechanics\");\r\n tagTitles.push(\"adventurer\");\r\n tagTitles.push(\"collector\");\r\n tagTitles.push(\"problem solver\");\r\n tagTitles.push(\"innovator\");\r\n tagTitles.push(\"lorekeeper\");\r\n tagTitles.push(\"rule bender\");\r\n tagTitles.push(\"sandboxer\");\r\n tagTitles.push(\"cartographer\");\r\n tagTitles.push(\"loyalist\");\r\n tagTitles.push(\"wrangler\");\r\n tagTitles.push(\"moment maker\");\r\n tagTitles.push(\"jinxed roller\");\r\n tagTitles.push(\"lucky roller\");\r\n tagTitles.push(\"meticulous\");\r\n tagTitles.push(\"improviser\");\r\n tagTitles.push(\"tactician\");\r\n tagTitles.push(\"butterfly\");\r\n tagTitles.push(\"beginner\");\r\n tagTitles.push(\"voice actor\");\r\n tagTitles.push(\"multi-campaign\");\r\n tagTitles.push(\"starter\");\r\n tagTitles.push(\"forever DM\");\r\n tagTitles.push(\"finisher\");\r\n tagTitles.push(\"swapper\");\r\n tagTitles.push(\"meta-gamer\");\r\n tagTitles.push(\"specialist\");\r\n\r\n return tagTitles;\r\n}\r\n\r\n\r\nexport const FantasyNouns = [\r\n // Core D&D Classes\r\n \"Fighter\", \"Rogue\", \"Wizard\", \"Cleric\", \"Paladin\", \"Barbarian\", \"Ranger\", \"Sorcerer\", \"Bard\", \"Monk\", \"Warlock\", \"Druid\", \"Artificer\",\r\n\r\n // Fantasy Occupations\r\n \"Alchemist\", \"Blacksmith\", \"Knight\", \"Mage\", \"Mercenary\", \"Archer\", \"Scribe\", \"Healer\", \"Hunter\", \"Assassin\", \"Enchanter\",\r\n \"Miner\", \"Sailor\", \"Merchant\", \"Herbalist\", \"Cartographer\", \"Tailor\", \"Innkeeper\", \"Cook\", \"Scholar\",\r\n\r\n // Archetypes\r\n \"Adventurer\", \"Champion\", \"Warlord\", \"Outlaw\", \"Pilgrim\", \"Prophet\", \"Necromancer\", \"Witch\", \"Shaman\",\r\n \"Beastmaster\", \"Acolyte\", \"Spellblade\", \"Battlemage\", \"Blademaster\", \"Warpriest\", \"Berserker\", \"Elementalist\",\r\n\r\n // Fantasy Creatures/Beings\r\n \"Dragon\", \"Elf\", \"Dwarf\", \"Orc\", \"Goblin\", \"Gnome\", \"Tiefling\", \"Genasi\", \"Halfling\", \"Lich\", \"Vampire\", \"Werewolf\",\r\n \"Demon\", \"Angel\", \"Pixie\", \"Dryad\", \"Centaur\", \"Chimera\", \"Golem\", \"Fairy\", \"Troll\", \"Minotaur\", \"Kraken\",\r\n \"Griffin\", \"Phoenix\",\r\n\r\n // Fantasy Roles/Titles\r\n \"Archmage\", \"High Priestess\", \"King\", \"Queen\", \"Duke\", \"Duchess\", \"Emperor\", \"Empress\", \"Captain\", \"Seer\", \"Oracle\",\r\n \"Warden\", \"Guardian\", \"Watchman\", \"Hero\", \"Villain\", \"Herald\", \"Scout\", \"Envoy\",\r\n\r\n // Other Fantasy-Themed Nouns\r\n \"Spellcaster\", \"Summoner\", \"Conjurer\", \"Warrior\", \"Gladiator\", \"Pathfinder\", \"Explorer\", \"Tinkerer\", \"Shadowblade\",\r\n \"Dungeoneer\", \"Archon\", \"Mystic\", \"Sage\", \"Runemaster\", \"Smith\", \"Wanderer\", \"Wayfarer\", \"Avenger\", \"Defender\", \"Keeper\"\r\n];\r\n\r\nexport const FantasyAdjectives = [\r\n // Descriptive of Power/Strength\r\n \"Mighty\", \"Powerful\", \"Fierce\", \"Tough\", \"Armored\", \"Indomitable\", \"Savage\", \"Vengeful\", \"Heroic\", \"Valiant\",\r\n\r\n // Magical Features\r\n \"Enchanted\", \"Bewitched\", \"Magical\", \"Mystical\", \"Ethereal\", \"Arcane\", \"Spellbound\", \"Supernatural\", \"Runed\",\r\n\r\n // Personality/Appearance Traits\r\n \"Noble\", \"Gallant\", \"Cunning\", \"Crafty\", \"Shadowy\", \"Elegant\", \"Wise\", \"Shrewd\", \"Merciless\", \"Serene\",\r\n \"Infernal\", \"Wicked\", \"Pious\", \"Charming\", \"Loyal\", \"Treacherous\", \"Bold\", \"Cowardly\", \"Sly\",\r\n\r\n // Environment-Themed\r\n \"Cursed\", \"Blessed\", \"Haunted\", \"Frozen\", \"Burning\", \"Fiery\", \"Icy\", \"Stormy\", \"Sunlit\", \"Moonlit\",\r\n \"Dark\", \"Luminous\", \"Glistening\", \"Ancient\", \"Shattered\", \"Sacred\", \"Forbidden\", \"Hidden\", \"Lost\",\r\n \"Verdant\", \"Barren\",\r\n\r\n // Monster/Creature Traits\r\n \"Ferocious\", \"Ravenous\", \"Menacing\", \"Grotesque\", \"Spiked\", \"Scaled\", \"Hulking\", \"Winged\", \"Fanged\", \"Horned\",\r\n \"Tentacled\", \"Shapeshifting\",\r\n\r\n // Mystical/Abstract Traits\r\n \"Immortal\", \"Mythical\", \"Omniscient\", \"Unbreakable\",\r\n \"Unfathomable\", \"Celestial\", \"Void\", \"Otherworldly\", \"Primordial\",\r\n\r\n // Precious/Gleaming Adjectives\r\n \"Golden\", \"Silver\", \"Crystalline\", \"Diamond\", \"Jeweled\", \"Sapphire\", \"Emerald\", \"Shimmering\", \"Gleaming\", \"Radiant\",\r\n\r\n // Combat-Related Traits\r\n \"Bloodstained\", \"Battleworn\", \"Unyielding\", \"Victorious\", \"Deadly\", \"Sharp\", \"Piercing\", \"Relentless\", \"Untouchable\",\r\n\r\n // Nature-Themed\r\n \"Whispering\", \"Thorned\", \"Blossoming\", \"Blooming\", \"Overgrown\", \"Howling\", \"Cracked\", \"Twisted\", \"Mossy\", \"Winding\",\r\n \"Towering\", \"Rooted\",\r\n\r\n // Emotional/Thematic Descriptors\r\n \"Free\", \"Courageous\", \"Reckless\", \"Damned\", \"Lonely\", \"Heartless\", \"Driven\", \"Hopeful\",\r\n \"Fateful\"\r\n];\r\n\r\nexport const FantasyQualifiers = [\r\n // Describing Uniqueness or Origins\r\n \"Original\", \"Prime\", \"Primal\", \"Archetypal\", \"Ancestral\", \"Legendary\", \"Foremost\",\r\n\r\n // Describing Finality or Completion\r\n \"Final\", \"Ultimate\", \"Absolute\", \"Conclusive\", \"Eternal\", \"Enduring\", \"Definitive\",\r\n\r\n // Describing Supremacy or Greatness\r\n \"Supreme\", \"Paramount\", \"Preeminent\", \"Pinnacle\", \"Peerless\", \"Unrivaled\", \"Sovereign\", \"Dominant\",\r\n\r\n // Describing Perfection or Excellence\r\n \"Flawless\", \"Perfect\", \"Divine\", \"Exalted\", \"Transcendent\", \"Matchless\", \"Incomparable\",\r\n\r\n // Describing Eternity or Timelessness\r\n \"Timeless\", \"Boundless\", \"Ageless\", \"Perpetual\", \"Infinite\", \"Everlasting\",\r\n\r\n // Describing Power or Authority\r\n \"Omnipotent\", \"Almighty\", \"Unassailable\", \"Overwhelming\", \"Irresistible\", \"Unconquerable\", \"Majestic\"\r\n];\r\n\r\nexport const generateUsername = () => {\r\n let output = \"\"\r\n\r\n output+= getRandomElement(FantasyQualifiers)\r\n output+= getRandomElement(FantasyAdjectives)\r\n output+= getRandomElement(FantasyNouns)\r\n\r\n return output;\r\n}\r\n\r\nexport const DEFAULT_PROFILE_PIC = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=\";\r\n\r\nexport const ProfilePictureSettings = {\r\n aspectRatio: 4/5,\r\n minWidth: 400,\r\n}\r\n\r\nconst getRandomElement = (array: string[]) => {\r\n return array[Math.floor(Math.random() * array.length)];\r\n}\r\n\r\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\r\nimport type { Player } from \"@/types/player\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport { DEFAULT_PROFILE_PIC } from \"@/data/values\";\r\n\r\nexport type PlayerHighlightsCardProps = {\r\n addToTable?: (player: Player) => void;\r\n allTags: Tag[];\r\n canChangeDungeonMaster: boolean;\r\n canEdit: boolean;\r\n handleAssignToDungeonMaster: (player: Player) => void;\r\n isWaitList?: boolean;\r\n player: Player;\r\n removeFromTable: (player: Player) => void;\r\n}\r\n\r\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\r\n const {\r\n allTags,\r\n canChangeDungeonMaster,\r\n canEdit,\r\n handleAssignToDungeonMaster,\r\n isWaitList,\r\n player,\r\n removeFromTable\r\n } = props;\r\n\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardContent>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || DEFAULT_PROFILE_PIC} width={64} />\r\n </Grid>\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n </Grid>\r\n {canEdit && (\r\n <Grid>\r\n <Button onClick={() => removeFromTable(player)}>\r\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\r\n </Button>\r\n {canChangeDungeonMaster && (\r\n <Button onClick={() => {\r\n handleAssignToDungeonMaster(player);\r\n removeFromTable(player);\r\n }}>\r\n <p>Assign to DungeonMaster</p>\r\n </Button>\r\n )}\r\n </Grid>\r\n )}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\r\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl || DEFAULT_PROFILE_PIC} width={256} />\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n <Typography>{player.description}</Typography>\r\n </Grid>\r\n </Grid>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n"]}
@@ -40,13 +40,33 @@ function Chip({ tag, removeCallback }) {
40
40
  function generateTagsDisplay(tag) {
41
41
  return /* @__PURE__ */ jsx(Chip, { tag }, tag.id);
42
42
  }
43
- function renderTagsFromIds(ids, legalTags) {
43
+ function renderTagsFromIds(ids, legalTags, options = {}) {
44
44
  if (!ids || !legalTags || legalTags.length === 0) {
45
45
  return /* @__PURE__ */ jsx(Fragment, {});
46
46
  }
47
+ const { showEventTag = false, eventTagId } = options;
47
48
  const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
48
- return validTags.map((tag) => generateTagsDisplay(tag));
49
+ const sortedTags = [...validTags].sort((a, b) => {
50
+ if (showEventTag && eventTagId !== void 0) {
51
+ if (a.id === eventTagId && b.id === eventTagId) return 0;
52
+ if (a.id === eventTagId) return -1;
53
+ if (b.id === eventTagId) return 1;
54
+ }
55
+ const priorityOrder = ["Organizer Run", "Display Only"];
56
+ const aIndex = priorityOrder.indexOf(a.label);
57
+ const bIndex = priorityOrder.indexOf(b.label);
58
+ if (aIndex !== -1 && bIndex !== -1) {
59
+ return aIndex - bIndex;
60
+ }
61
+ if (aIndex !== -1) return -1;
62
+ if (bIndex !== -1) return 1;
63
+ return 0;
64
+ });
65
+ return sortedTags.map((tag) => generateTagsDisplay(tag));
49
66
  }
67
+
68
+ // src/data/values.tsx
69
+ var DEFAULT_PROFILE_PIC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=";
50
70
  var PlayerHighlightsCard = function(props) {
51
71
  const {
52
72
  allTags,
@@ -60,7 +80,7 @@ var PlayerHighlightsCard = function(props) {
60
80
  return /* @__PURE__ */ jsx(Card, { elevation: 3, sx: { backgroundColor: canEdit ? "#fffbea" : "#f5f9fa", marginBottom: "6px" }, children: /* @__PURE__ */ jsxs(CardContent, { children: [
61
81
  /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, direction: "column", children: [
62
82
  /* @__PURE__ */ jsxs(Grid, { container: true, direction: "row", children: [
63
- /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx(Image, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || "", width: 64 }) }),
83
+ /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx(Image, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || DEFAULT_PROFILE_PIC, width: 64 }) }),
64
84
  /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx(Typography, { variant: "h5", children: player.username }) })
65
85
  ] }),
66
86
  /* @__PURE__ */ jsx(Grid, { children: renderTagsFromIds(player.tags, allTags) })
@@ -80,7 +100,7 @@ var DMHighlightsCard = function({ canEdit, player, allTags }) {
80
100
  /* @__PURE__ */ jsx(CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, direction: "column", children: [
81
101
  /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx(Typography, { variant: "h5", children: player.username }) }),
82
102
  /* @__PURE__ */ jsxs(Grid, { container: true, direction: "row", children: [
83
- /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx(Image, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl ? player.imageUrl : "", width: 256 }) }),
103
+ /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx(Image, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl || DEFAULT_PROFILE_PIC, width: 256 }) }),
84
104
  /* @__PURE__ */ jsx(Grid, { children: renderTagsFromIds(player.tags, allTags) }),
85
105
  /* @__PURE__ */ jsx(Typography, { children: player.description })
86
106
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs"],"mappings":";;;;;;AAGe,SAAR,IAAA,CAAsB,EAAE,GAAA,EAAK,cAAA,EAAe,EAA2D;AAH9G,EAAA,IAAA,EAAA;AAIE,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,GAAA,CAAI,KAAA,KAAJ,IAAA,GAAA,EAAA,GAAa,SAAA;AAC3B,EAAA,uBACI,GAAA,CAAA,QAAA,EAAA,EACA,QAAA,kBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAEG,SAAA,EAAU,iHAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,WAAA,EAAa,sBAAsB,KAAK,CAAA,YAAA,CAAA;AAAA,QACxC,UAAA,EAAY,CAAA,2CAAA,EAA8C,KAAK,CAAA,oCAAA,EAAuC,KAAK,CAAA,kBAAA,CAAA;AAAA,QAC3G,UAAA,EAAY,uBAAA;AAAA,QACZ,MAAA,EAAQ,gDAAgD,KAAK,CAAA,aAAA;AAAA,OAC/D;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,KAAA;AAAA,QACJ,cAAA,oBACG,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACG,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,cAAA,CAAe,GAAA,CAAI,EAAE,CAAA;AAAA,YACpC,SAAA,EAAU,8GAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY;AAAA,aACd;AAAA,YACH,QAAA,EAAA;AAAA;AAAA;AAED;AAAA,KAAA;AAAA,IApBC,GAAA,CAAI;AAAA,GAsBf,EACA,CAAA;AAGJ;AC5BO,SAAS,oBAAoB,GAAA,EAAU;AAC1C,EAAA,uBACIA,GAAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAA,EAAe,IAAI,EAAI,CAAA;AAErC;AAEO,SAAS,iBAAA,CAAkB,KAA2B,SAAA,EAAkB;AAC3E,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,SAAA,IAAa,SAAA,CAAU,WAAW,CAAA,EAAG;AAAE,IAAA,uBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAE,CAAA;AAAA,EAAK;AACpE,EAAA,MAAM,YAAY,GAAA,CACb,GAAA,CAAI,CAAC,EAAA,KAAO,SAAA,CAAU,KAAK,CAAC,GAAA,KAAQ,IAAI,EAAA,KAAO,EAAE,CAAC,CAAA,CAClD,MAAA,CAAO,CAAC,GAAA,KAAoB,OAAA,CAAQ,GAAG,CAAC,CAAA;AAE7C,EAAA,OAAO,UAAU,GAAA,CAAI,CAAC,GAAA,KAAQ,mBAAA,CAAoB,GAAG,CAAC,CAAA;AAC1D;ACEO,IAAM,oBAAA,GAAuB,SAAS,KAAA,EAAkC;AAC3E,EAAA,MAAM;AAAA,IACF,OAAA;AAAA,IACA,sBAAA;AAAA,IACA,OAAA;AAAA,IACA,2BAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACJ,GAAI,KAAA;AAEJ,EAAA,uBACID,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,IAAI,EAAE,eAAA,EAAiB,OAAA,GAAU,SAAA,GAAY,WAAW,YAAA,EAAa,KAAA,EAAM,EAC3F,QAAA,kBAAAE,KAAC,WAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAA,KAAC,IAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EAAG,WAAU,QAAA,EAClC,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,WAAU,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAF,IAAC,IAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,KAAK,MAAA,CAAO,QAAA,GAAW,gBAAA,EAAkB,MAAA,EAAQ,IAAI,GAAA,EAAK,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,EAAO,IAAI,CAAA,EACtG,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EACG,QAAA,kBAAAA,GAAAA,CAAC,cAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,QAAA,EAAS,CAAA,EAC9C;AAAA,OAAA,EACJ,CAAA;AAAA,sBACAA,GAAAA,CAAC,IAAA,EAAA,EAAM,4BAAkB,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAE;AAAA,KAAA,EACnD,CAAA;AAAA,IACC,OAAA,oBACGE,IAAAA,CAAC,IAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAAF,IAAC,MAAA,EAAA,EAAO,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAM,CAAA,EACvC,QAAA,EAAA,UAAA,mBAAaA,GAAAA,CAAC,OAAE,QAAA,EAAA,aAAA,EAAW,CAAA,mBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,2BAAa,CAAA,EACxD,CAAA;AAAA,MACC,sBAAA,oBACGA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAS,MAAM;AACnB,QAAA,2BAAA,CAA4B,MAAM,CAAA;AAClC,QAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC1B,CAAA,EACI,QAAA,kBAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,qCAAuB,CAAA,EAC9B;AAAA,KAAA,EAER;AAAA,GAAA,EAER,CAAA,EACJ,CAAA;AAER;AAEO,IAAM,mBAAmB,SAAS,EAAC,OAAA,EAAS,MAAA,EAAQ,SAAO,EAAqD;AACnH,EAAA,uBACIE,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,EAAA,EAAI,EAAE,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAa,KAAA,EAAM,EACrE,QAAA,EAAA;AAAA,oBAAAF,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,EAAC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAI,EAAC,EAAG,KAAA,EAAM,aAAA,EAAa,CAAA;AAAA,oBACrEA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAI,EAAE,eAAA,EAAiB,UAAU,SAAA,GAAY,SAAA,EAAU,EAChE,QAAA,kBAAAE,KAAC,IAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EAAG,WAAU,QAAA,EAClC,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAAC,QACG,QAAA,kBAAAA,GAAAA,CAAC,cAAW,OAAA,EAAQ,IAAA,EAAM,QAAA,EAAA,MAAA,CAAO,QAAA,EAAS,CAAA,EAC9C,CAAA;AAAA,sBACAE,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,WAAU,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAF,IAAC,IAAA,EAAA,EACG,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAM,GAAA,EAAK,OAAO,QAAA,GAAW,gBAAA,EAAkB,QAAQ,GAAA,EAAK,GAAA,EAAK,OAAO,QAAA,GAAW,MAAA,CAAO,WAAW,EAAA,EAAI,KAAA,EAAO,KAAK,CAAA,EAC1H,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EAAM,4BAAkB,MAAA,CAAO,IAAA,EAAM,OAAO,CAAA,EAAE,CAAA;AAAA,wBAC/CA,GAAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,MAAA,CAAO,WAAA,EAAY;AAAA,OAAA,EACpC;AAAA,KAAA,EACJ,CAAA,EACJ;AAAA,GAAA,EACJ,CAAA;AAER","file":"players.mjs","sourcesContent":["import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[]) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n return validTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","\"use client\";\n\nimport Image from \"next/image\";\nimport Button from \"@mui/material/Button\";\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\nimport type { Player } from \"@/types/player\";\nimport type { Tag } from \"@/types/tag\";\n\nexport type PlayerHighlightsCardProps = {\n addToTable?: (player: Player) => void;\n allTags: Tag[];\n canChangeDungeonMaster: boolean;\n canEdit: boolean;\n handleAssignToDungeonMaster: (player: Player) => void;\n isWaitList?: boolean;\n player: Player;\n removeFromTable: (player: Player) => void;\n}\n\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\n const {\n allTags,\n canChangeDungeonMaster,\n canEdit,\n handleAssignToDungeonMaster,\n isWaitList,\n player,\n removeFromTable\n } = props;\n\n return (\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardContent>\n <Grid container spacing={2} direction=\"column\">\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || \"\"} width={64} />\n </Grid>\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n </Grid>\n {canEdit && (\n <Grid>\n <Button onClick={() => removeFromTable(player)}>\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\n </Button>\n {canChangeDungeonMaster && (\n <Button onClick={() => {\n handleAssignToDungeonMaster(player);\n removeFromTable(player);\n }}>\n <p>Assign to DungeonMaster</p>\n </Button>\n )}\n </Grid>\n )}\n </CardContent>\n </Card>\n )\n}\n\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\n return (\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\n <Grid container spacing={2} direction=\"column\">\n <Grid>\n <Typography variant=\"h5\">{player.username}</Typography>\n </Grid>\n <Grid container direction=\"row\">\n <Grid>\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl ? player.imageUrl : \"\"} width={256} />\n </Grid>\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\n <Typography>{player.description}</Typography>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/components/shared/Chip.tsx","../../src/components/shared/TagComponents.tsx","../../src/data/values.tsx","../../src/components/TablePage/players/PlayerHighlightsCard.tsx"],"names":["jsx","Fragment","jsxs"],"mappings":"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","file":"players.mjs","sourcesContent":["import React from \"react\";\r\nimport {Tag} from \"@/types/tag\";\r\n\r\nexport default function Chip({ tag, removeCallback }: { tag: Tag, removeCallback?: (tagId: number) => void }) {\r\n const color = tag.color ?? \"#bfbcbb\";\r\n return (\r\n <>\r\n <span\r\n key={tag.id}\r\n className=\"inline-block text-sm px-3 py-1 rounded-full border-2 font-outlined text-white m-0.5 font-stretch-105% font-sans\"\r\n style={{\r\n borderColor: `color-mix(in srgb, ${color}, black 50%)`,\r\n background: `linear-gradient(160deg, color-mix(in srgb, ${color}, white 10%) 0%, color-mix(in srgb, ${color}, black 60%) 100%)`,\r\n textShadow: \"black 1.5px 1px 1.5px\",\r\n filter: `drop-shadow(2px 2px 1.5px color-mix(in srgb, ${color}, black 80%))`\r\n }}\r\n >\r\n {tag.label}\r\n {removeCallback && (\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCallback(tag.id)}\r\n className=\"ml-2 text-white hover:text-red-700 focus:outline-none pl-0.5 pr-1 cursor-pointer hover:bg-white rounded-full\"\r\n style={{\r\n textShadow: \"black 1px 1px 1px\"\r\n }}\r\n >\r\n X\r\n </button>\r\n )}\r\n </span>\r\n </>\r\n )\r\n\r\n}","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport Chip from \"@/components/shared/Chip\";\r\n\r\nexport function generateTagsDisplay(tag: Tag) {\r\n return (\r\n <Chip tag={tag} key={tag.id} />\r\n )\r\n}\r\n\r\nexport function renderTagsFromIds(ids: number[] | undefined, legalTags: Tag[], options: { showEventTag?: boolean, eventTagId?: number } = {}) {\r\n if (!ids || !legalTags || legalTags.length === 0) { return ( <></>) }\r\n const { showEventTag = false, eventTagId } = options;\r\n const validTags = ids\r\n .map((id) => legalTags.find((tag) => tag.id === id))\r\n .filter((tag): tag is Tag => Boolean(tag));\r\n\r\n // Sort tags: event tag (if shown) first, then \"Organizer Run\", then \"Display Only\", then others\r\n const sortedTags = [...validTags].sort((a, b) => {\r\n // Handle event tag priority if enabled\r\n if (showEventTag && eventTagId !== undefined) {\r\n if (a.id === eventTagId && b.id === eventTagId) return 0;\r\n if (a.id === eventTagId) return -1;\r\n if (b.id === eventTagId) return 1;\r\n }\r\n\r\n const priorityOrder = [\"Organizer Run\", \"Display Only\"];\r\n const aIndex = priorityOrder.indexOf(a.label);\r\n const bIndex = priorityOrder.indexOf(b.label);\r\n\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n return aIndex - bIndex;\r\n }\r\n if (aIndex !== -1) return -1;\r\n if (bIndex !== -1) return 1;\r\n return 0;\r\n });\r\n\r\n return sortedTags.map((tag) => generateTagsDisplay(tag));\r\n}\r\n","export function BlurbTitles() {\r\n const blurbTitles = new Map();\r\n blurbTitles.set(1, \"What’s your most epic tabletop moment?\");\r\n blurbTitles.set(2, \"What type of character do you dream of playing?\");\r\n blurbTitles.set(3, \"What kind of story are you most excited to be part of?\");\r\n blurbTitles.set(4, \"Which tabletop world would you want to live in?\");\r\n blurbTitles.set(5, \"If you could only play one tabletop game forever, what would it be?\");\r\n blurbTitles.set(6, \"What’s a fantasy or sci-fi world you love and would want to game in?\");\r\n blurbTitles.set(7, \"Who’s the most chaotic (or hilarious) player you've ever gamed with?\");\r\n blurbTitles.set(8, \"What motivates you to join a tabletop game: adventure, laughs, or something else?\");\r\n blurbTitles.set(9, \"What’s your weirdest in-game flex?\");\r\n blurbTitles.set(10, \"Which class or archetype are you drawn to—fighter, mage, rogue, healer, or wildcard?\");\r\n blurbTitles.set(11, \"What character did you have the most fun playing?\");\r\n blurbTitles.set(12, \"What kind of player are you: Min-maxer, storyteller, or chaos incarnate?\");\r\n blurbTitles.set(13, \"Describe the best campaign twist you’ve ever experienced.\");\r\n blurbTitles.set(14, \"What’s your guilty pleasure when it comes to character archetypes?\");\r\n blurbTitles.set(15, \"Who’s your favorite villain or antagonist you’ve faced in a campaign?\");\r\n blurbTitles.set(16, \"What’s the hardest decision your character ever had to make?\");\r\n blurbTitles.set(17, \"What’s the funniest tabletop memory you’ve ever had?\");\r\n blurbTitles.set(18, \"Ever had a tabletop game go completely off the rails? What happened?\");\r\n blurbTitles.set(19, \"Introduce us to your favorite homebrew rule!\");\r\n blurbTitles.set(20, \"What’s your favorite dice-rolling ritual or superstition?\");\r\n blurbTitles.set(21, \"What’s your go-to tabletop snack during sessions?\");\r\n blurbTitles.set(22, \"What’s the most creative solution you’ve ever come up with in a game?\");\r\n blurbTitles.set(23, \"What NPC or character from a campaign would you date IRL?\");\r\n blurbTitles.set(24, \"What’s your favorite tabletop rule or mechanic?\");\r\n blurbTitles.set(25, \"What’s the most emotional tabletop moment you’ve had?\");\r\n blurbTitles.set(26, \"What kind of story twist or epic moment would make you fall in love with the game?\");\r\n blurbTitles.set(27, \"What’s the most challenging yet rewarding NPC you've ever created?\");\r\n blurbTitles.set(28, \"How do you keep players on track without railroading your game?\");\r\n blurbTitles.set(29, \"What’s the most unexpected way your players solved a problem you designed?\");\r\n blurbTitles.set(30, \"What’s your favorite resource or tool for planning campaigns?\");\r\n blurbTitles.set(31, \"What’s the funniest way your players have broken your carefully-planned encounter?\");\r\n blurbTitles.set(32, \"What’s the most memorable villain or antagonist you’ve created?\");\r\n blurbTitles.set(33, \"How do you handle player conflict in your campaigns?\");\r\n blurbTitles.set(34, \"What’s your favorite homebrew rule to spice up your campaigns?\");\r\n blurbTitles.set(35, \"Have you ever scrapped a planned session because of something your players did?\");\r\n blurbTitles.set(36, \"What’s the most creative environment or setting you’ve designed for your players?\");\r\n\r\n return blurbTitles;\r\n}\r\n\r\nexport function PrivacyValues() {\r\n const privacyValues = new Map();\r\n privacyValues.set(1, \"private\");\r\n privacyValues.set(\"private\", 1);\r\n\r\n privacyValues.set(2, \"connection\");\r\n privacyValues.set(\"connection\",2);\r\n\r\n privacyValues.set(3, \"public\");\r\n privacyValues.set(\"public\", 3);\r\n\r\n privacyValues.set(4, \"table\");\r\n privacyValues.set(\"table\", 4);\r\n\r\n return privacyValues;\r\n}\r\n\r\nexport function PlayerTagLabels(): string[] {\r\n const tagTitles: string[] = [];\r\n\r\n tagTitles.push(\"girl gamer\");\r\n tagTitles.push(\"veteran\");\r\n tagTitles.push(\"new\");\r\n tagTitles.push(\"min-maxer\");\r\n tagTitles.push(\"role-player\");\r\n tagTitles.push(\"rules lawyer\");\r\n tagTitles.push(\"storyteller\");\r\n tagTitles.push(\"chaotic\");\r\n tagTitles.push(\"planner\");\r\n tagTitles.push(\"wildcard\");\r\n tagTitles.push(\"protector\");\r\n tagTitles.push(\"rogue-like\");\r\n tagTitles.push(\"power gamer\");\r\n tagTitles.push(\"thinker\");\r\n tagTitles.push(\"narrative\");\r\n tagTitles.push(\"homebrewer\");\r\n tagTitles.push(\"dungeon master\");\r\n tagTitles.push(\"world builder\");\r\n tagTitles.push(\"solver\");\r\n tagTitles.push(\"strategist\");\r\n tagTitles.push(\"dice lover\");\r\n tagTitles.push(\"performer\");\r\n tagTitles.push(\"casual\");\r\n tagTitles.push(\"character-focused\");\r\n tagTitles.push(\"team player\");\r\n tagTitles.push(\"mechanics\");\r\n tagTitles.push(\"adventurer\");\r\n tagTitles.push(\"collector\");\r\n tagTitles.push(\"problem solver\");\r\n tagTitles.push(\"innovator\");\r\n tagTitles.push(\"lorekeeper\");\r\n tagTitles.push(\"rule bender\");\r\n tagTitles.push(\"sandboxer\");\r\n tagTitles.push(\"cartographer\");\r\n tagTitles.push(\"loyalist\");\r\n tagTitles.push(\"wrangler\");\r\n tagTitles.push(\"moment maker\");\r\n tagTitles.push(\"jinxed roller\");\r\n tagTitles.push(\"lucky roller\");\r\n tagTitles.push(\"meticulous\");\r\n tagTitles.push(\"improviser\");\r\n tagTitles.push(\"tactician\");\r\n tagTitles.push(\"butterfly\");\r\n tagTitles.push(\"beginner\");\r\n tagTitles.push(\"voice actor\");\r\n tagTitles.push(\"multi-campaign\");\r\n tagTitles.push(\"starter\");\r\n tagTitles.push(\"forever DM\");\r\n tagTitles.push(\"finisher\");\r\n tagTitles.push(\"swapper\");\r\n tagTitles.push(\"meta-gamer\");\r\n tagTitles.push(\"specialist\");\r\n\r\n return tagTitles;\r\n}\r\n\r\n\r\nexport const FantasyNouns = [\r\n // Core D&D Classes\r\n \"Fighter\", \"Rogue\", \"Wizard\", \"Cleric\", \"Paladin\", \"Barbarian\", \"Ranger\", \"Sorcerer\", \"Bard\", \"Monk\", \"Warlock\", \"Druid\", \"Artificer\",\r\n\r\n // Fantasy Occupations\r\n \"Alchemist\", \"Blacksmith\", \"Knight\", \"Mage\", \"Mercenary\", \"Archer\", \"Scribe\", \"Healer\", \"Hunter\", \"Assassin\", \"Enchanter\",\r\n \"Miner\", \"Sailor\", \"Merchant\", \"Herbalist\", \"Cartographer\", \"Tailor\", \"Innkeeper\", \"Cook\", \"Scholar\",\r\n\r\n // Archetypes\r\n \"Adventurer\", \"Champion\", \"Warlord\", \"Outlaw\", \"Pilgrim\", \"Prophet\", \"Necromancer\", \"Witch\", \"Shaman\",\r\n \"Beastmaster\", \"Acolyte\", \"Spellblade\", \"Battlemage\", \"Blademaster\", \"Warpriest\", \"Berserker\", \"Elementalist\",\r\n\r\n // Fantasy Creatures/Beings\r\n \"Dragon\", \"Elf\", \"Dwarf\", \"Orc\", \"Goblin\", \"Gnome\", \"Tiefling\", \"Genasi\", \"Halfling\", \"Lich\", \"Vampire\", \"Werewolf\",\r\n \"Demon\", \"Angel\", \"Pixie\", \"Dryad\", \"Centaur\", \"Chimera\", \"Golem\", \"Fairy\", \"Troll\", \"Minotaur\", \"Kraken\",\r\n \"Griffin\", \"Phoenix\",\r\n\r\n // Fantasy Roles/Titles\r\n \"Archmage\", \"High Priestess\", \"King\", \"Queen\", \"Duke\", \"Duchess\", \"Emperor\", \"Empress\", \"Captain\", \"Seer\", \"Oracle\",\r\n \"Warden\", \"Guardian\", \"Watchman\", \"Hero\", \"Villain\", \"Herald\", \"Scout\", \"Envoy\",\r\n\r\n // Other Fantasy-Themed Nouns\r\n \"Spellcaster\", \"Summoner\", \"Conjurer\", \"Warrior\", \"Gladiator\", \"Pathfinder\", \"Explorer\", \"Tinkerer\", \"Shadowblade\",\r\n \"Dungeoneer\", \"Archon\", \"Mystic\", \"Sage\", \"Runemaster\", \"Smith\", \"Wanderer\", \"Wayfarer\", \"Avenger\", \"Defender\", \"Keeper\"\r\n];\r\n\r\nexport const FantasyAdjectives = [\r\n // Descriptive of Power/Strength\r\n \"Mighty\", \"Powerful\", \"Fierce\", \"Tough\", \"Armored\", \"Indomitable\", \"Savage\", \"Vengeful\", \"Heroic\", \"Valiant\",\r\n\r\n // Magical Features\r\n \"Enchanted\", \"Bewitched\", \"Magical\", \"Mystical\", \"Ethereal\", \"Arcane\", \"Spellbound\", \"Supernatural\", \"Runed\",\r\n\r\n // Personality/Appearance Traits\r\n \"Noble\", \"Gallant\", \"Cunning\", \"Crafty\", \"Shadowy\", \"Elegant\", \"Wise\", \"Shrewd\", \"Merciless\", \"Serene\",\r\n \"Infernal\", \"Wicked\", \"Pious\", \"Charming\", \"Loyal\", \"Treacherous\", \"Bold\", \"Cowardly\", \"Sly\",\r\n\r\n // Environment-Themed\r\n \"Cursed\", \"Blessed\", \"Haunted\", \"Frozen\", \"Burning\", \"Fiery\", \"Icy\", \"Stormy\", \"Sunlit\", \"Moonlit\",\r\n \"Dark\", \"Luminous\", \"Glistening\", \"Ancient\", \"Shattered\", \"Sacred\", \"Forbidden\", \"Hidden\", \"Lost\",\r\n \"Verdant\", \"Barren\",\r\n\r\n // Monster/Creature Traits\r\n \"Ferocious\", \"Ravenous\", \"Menacing\", \"Grotesque\", \"Spiked\", \"Scaled\", \"Hulking\", \"Winged\", \"Fanged\", \"Horned\",\r\n \"Tentacled\", \"Shapeshifting\",\r\n\r\n // Mystical/Abstract Traits\r\n \"Immortal\", \"Mythical\", \"Omniscient\", \"Unbreakable\",\r\n \"Unfathomable\", \"Celestial\", \"Void\", \"Otherworldly\", \"Primordial\",\r\n\r\n // Precious/Gleaming Adjectives\r\n \"Golden\", \"Silver\", \"Crystalline\", \"Diamond\", \"Jeweled\", \"Sapphire\", \"Emerald\", \"Shimmering\", \"Gleaming\", \"Radiant\",\r\n\r\n // Combat-Related Traits\r\n \"Bloodstained\", \"Battleworn\", \"Unyielding\", \"Victorious\", \"Deadly\", \"Sharp\", \"Piercing\", \"Relentless\", \"Untouchable\",\r\n\r\n // Nature-Themed\r\n \"Whispering\", \"Thorned\", \"Blossoming\", \"Blooming\", \"Overgrown\", \"Howling\", \"Cracked\", \"Twisted\", \"Mossy\", \"Winding\",\r\n \"Towering\", \"Rooted\",\r\n\r\n // Emotional/Thematic Descriptors\r\n \"Free\", \"Courageous\", \"Reckless\", \"Damned\", \"Lonely\", \"Heartless\", \"Driven\", \"Hopeful\",\r\n \"Fateful\"\r\n];\r\n\r\nexport const FantasyQualifiers = [\r\n // Describing Uniqueness or Origins\r\n \"Original\", \"Prime\", \"Primal\", \"Archetypal\", \"Ancestral\", \"Legendary\", \"Foremost\",\r\n\r\n // Describing Finality or Completion\r\n \"Final\", \"Ultimate\", \"Absolute\", \"Conclusive\", \"Eternal\", \"Enduring\", \"Definitive\",\r\n\r\n // Describing Supremacy or Greatness\r\n \"Supreme\", \"Paramount\", \"Preeminent\", \"Pinnacle\", \"Peerless\", \"Unrivaled\", \"Sovereign\", \"Dominant\",\r\n\r\n // Describing Perfection or Excellence\r\n \"Flawless\", \"Perfect\", \"Divine\", \"Exalted\", \"Transcendent\", \"Matchless\", \"Incomparable\",\r\n\r\n // Describing Eternity or Timelessness\r\n \"Timeless\", \"Boundless\", \"Ageless\", \"Perpetual\", \"Infinite\", \"Everlasting\",\r\n\r\n // Describing Power or Authority\r\n \"Omnipotent\", \"Almighty\", \"Unassailable\", \"Overwhelming\", \"Irresistible\", \"Unconquerable\", \"Majestic\"\r\n];\r\n\r\nexport const generateUsername = () => {\r\n let output = \"\"\r\n\r\n output+= getRandomElement(FantasyQualifiers)\r\n output+= getRandomElement(FantasyAdjectives)\r\n output+= getRandomElement(FantasyNouns)\r\n\r\n return output;\r\n}\r\n\r\nexport const DEFAULT_PROFILE_PIC = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=\";\r\n\r\nexport const ProfilePictureSettings = {\r\n aspectRatio: 4/5,\r\n minWidth: 400,\r\n}\r\n\r\nconst getRandomElement = (array: string[]) => {\r\n return array[Math.floor(Math.random() * array.length)];\r\n}\r\n\r\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport Button from \"@mui/material/Button\";\r\nimport {Card, CardContent, CardHeader, Typography} from \"@mui/material\";\r\nimport Grid from \"@mui/material/Grid\";\r\nimport {renderTagsFromIds} from \"@/components/shared/TagComponents\";\r\nimport type { Player } from \"@/types/player\";\r\nimport type { Tag } from \"@/types/tag\";\r\nimport { DEFAULT_PROFILE_PIC } from \"@/data/values\";\r\n\r\nexport type PlayerHighlightsCardProps = {\r\n addToTable?: (player: Player) => void;\r\n allTags: Tag[];\r\n canChangeDungeonMaster: boolean;\r\n canEdit: boolean;\r\n handleAssignToDungeonMaster: (player: Player) => void;\r\n isWaitList?: boolean;\r\n player: Player;\r\n removeFromTable: (player: Player) => void;\r\n}\r\n\r\nexport const PlayerHighlightsCard = function(props: PlayerHighlightsCardProps) {\r\n const {\r\n allTags,\r\n canChangeDungeonMaster,\r\n canEdit,\r\n handleAssignToDungeonMaster,\r\n isWaitList,\r\n player,\r\n removeFromTable\r\n } = props;\r\n\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: canEdit ? \"#fffbea\" : \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardContent>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={64} src={player.miniPic || DEFAULT_PROFILE_PIC} width={64} />\r\n </Grid>\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n </Grid>\r\n {canEdit && (\r\n <Grid>\r\n <Button onClick={() => removeFromTable(player)}>\r\n { isWaitList ? <p>Deny Player</p> : <p>Remove Player</p> }\r\n </Button>\r\n {canChangeDungeonMaster && (\r\n <Button onClick={() => {\r\n handleAssignToDungeonMaster(player);\r\n removeFromTable(player);\r\n }}>\r\n <p>Assign to DungeonMaster</p>\r\n </Button>\r\n )}\r\n </Grid>\r\n )}\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n\r\nexport const DMHighlightsCard = function({canEdit, player, allTags}:{canEdit: boolean, player: Player, allTags:Tag[]}) {\r\n return (\r\n <Card elevation={3} sx={{ backgroundColor: \"#f5f9fa\", marginBottom:\"6px\" }}>\r\n <CardHeader slotProps={{title: { variant: \"h4\"}}} title=\"Game Master\"/>\r\n <CardContent sx={{ backgroundColor: canEdit ? '#fffbea' : 'inherit' }}>\r\n <Grid container spacing={2} direction=\"column\">\r\n <Grid>\r\n <Typography variant=\"h5\">{player.username}</Typography>\r\n </Grid>\r\n <Grid container direction=\"row\">\r\n <Grid>\r\n <Image alt={player.username + \"'s profile pic\"} height={120} src={player.imageUrl || DEFAULT_PROFILE_PIC} width={256} />\r\n </Grid>\r\n <Grid>{renderTagsFromIds(player.tags, allTags)}</Grid>\r\n <Typography>{player.description}</Typography>\r\n </Grid>\r\n </Grid>\r\n </CardContent>\r\n </Card>\r\n )\r\n}\r\n"]}