@dcrackel/hematournamentui 1.0.706 → 1.0.707

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 (330) hide show
  1. package/.prettierignore +7 -1
  2. package/.storybook/main.js +5 -12
  3. package/.storybook/preview-head.html +10 -3
  4. package/.storybook/preview.js +5 -13
  5. package/AGENTS.md +31 -1
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +7189 -7467
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +0 -24
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +6 -2
  13. package/postcss.config.js +3 -3
  14. package/prettier.config.js +16 -10
  15. package/src/config/boutScreenConfigurations.js +52 -50
  16. package/src/main.js +1 -1
  17. package/src/mocks/EventQuestionsMock.js +43 -55
  18. package/src/mocks/assignments.js +180 -181
  19. package/src/mocks/clubGetAllMock.js +8143 -8143
  20. package/src/mocks/eventMock.js +205 -205
  21. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  23. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  24. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  25. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  26. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  27. package/src/mocks/eventRules.js +87 -86
  28. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  29. package/src/mocks/getAllClubs.js +8143 -8143
  30. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  31. package/src/mocks/getAllWeapons.js +81 -82
  32. package/src/mocks/getAttendance.js +43 -44
  33. package/src/mocks/getClub.js +43 -44
  34. package/src/mocks/getClubDisplayByClubId.js +104 -105
  35. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  36. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  37. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  38. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  39. package/src/mocks/getDEWithBouts.js +628 -629
  40. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  41. package/src/mocks/getDeBouts-15fencers.js +925 -927
  42. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  43. package/src/mocks/getDeBouts-6fencers.js +818 -818
  44. package/src/mocks/getEventByTournamentId.js +47 -48
  45. package/src/mocks/getFinalEventResult.js +304 -305
  46. package/src/mocks/getPenaltiesByEvent.js +655 -656
  47. package/src/mocks/getPoolResults.js +1533 -1534
  48. package/src/mocks/getPoolsWithBouts.js +662 -663
  49. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  50. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  51. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  52. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  53. package/src/mocks/locationMock.js +3213 -3214
  54. package/src/mocks/mockRoutes.js +3 -3
  55. package/src/mocks/personGetAllMock.js +2536 -2537
  56. package/src/mocks/personsMock.js +17569 -17570
  57. package/src/mocks/singleEventMock.js +249 -250
  58. package/src/mocks/tournamentMock.js +1988 -1927
  59. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  60. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  61. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  62. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  63. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  64. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  65. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  66. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  67. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  68. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  69. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  70. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  71. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  72. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  73. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  74. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  75. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  76. package/src/stories/Configure.mdx +5 -3
  77. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  78. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  79. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  80. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  81. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  83. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  84. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  85. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  86. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  87. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  88. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  89. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  90. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  91. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  92. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  93. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  94. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  95. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  96. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  97. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  98. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  99. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  100. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  101. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  102. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  103. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  104. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  105. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  106. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  107. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  108. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  109. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  110. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  111. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  112. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  113. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  114. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  115. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  116. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  117. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  118. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  119. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  120. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  121. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +27 -22
  122. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  123. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +27 -15
  124. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  125. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  126. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  127. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  128. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  129. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  130. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  131. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  132. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  133. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  134. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  135. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  136. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  137. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  138. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  139. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  140. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  141. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  143. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  144. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  145. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  146. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  147. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  148. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  149. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  150. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  151. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  152. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  153. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +142 -58
  154. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  155. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  156. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  157. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  158. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  159. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  160. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  161. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  162. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  163. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  164. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  165. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  166. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  167. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  168. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  169. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  170. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  171. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  172. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +103 -103
  173. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +73 -73
  174. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +44 -0
  175. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +69 -56
  176. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +80 -81
  177. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +39 -22
  178. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  179. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  180. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +44 -30
  181. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  182. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  183. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  184. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  185. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  186. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  187. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  188. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  189. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  190. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  191. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  192. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  193. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  194. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  195. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  196. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  197. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  198. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  199. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  200. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  201. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  202. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  203. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  204. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  205. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  206. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  207. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  208. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  209. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  210. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  211. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  212. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +49 -10
  213. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +96 -173
  214. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  215. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +20 -17
  216. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +153 -103
  217. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +13 -15
  218. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +7 -8
  219. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  220. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  221. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  222. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  223. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  224. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  225. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  226. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  227. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  228. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  229. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  230. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  231. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  232. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  233. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  234. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  235. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  236. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  237. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  238. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  239. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  240. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  241. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  242. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  243. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  244. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  245. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  246. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  247. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  248. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  249. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  250. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  251. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  252. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  253. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  254. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  255. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  256. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  257. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  258. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  259. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  260. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  261. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  262. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  263. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  264. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  265. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  266. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  267. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  268. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  269. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  270. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  271. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +82 -103
  272. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +88 -43
  273. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +167 -200
  274. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  275. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  276. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  277. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  278. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  279. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  280. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  281. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  282. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  283. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  284. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  285. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  286. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  287. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  288. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  289. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  290. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  291. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  292. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  293. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  294. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  295. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  296. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  297. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  298. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  299. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  300. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  301. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  302. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  303. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  304. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  305. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  306. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  307. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  308. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  309. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  310. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  311. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  312. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  313. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  314. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  315. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  316. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  317. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  318. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  319. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  320. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  321. package/src/stories/Util/seeding.js +131 -131
  322. package/src/stories/Util/tabs.js +75 -75
  323. package/tailwind/tailwind.css +5 -7
  324. package/tailwind.config.js +12 -15
  325. package/vite.config.js +3 -3
  326. package/src/mocks/getDirectors.js +0 -18
  327. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  328. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  329. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  330. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
@@ -7,7 +7,7 @@
7
7
  <!-- Desktop active -->
8
8
  <div class="hidden md:flex items-center justify-between rounded-lg">
9
9
  <!-- Fencer 1 -->
10
- <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-5/12">
10
+ <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-5/12">
11
11
  <div class="flex space-x-4 items-center">
12
12
  <div class="relative">
13
13
  <img :src="fencer1Portrait" alt="Portrait" class="w-12 h-12 rounded-full z-0 relative" />
@@ -27,7 +27,7 @@
27
27
  </div>
28
28
 
29
29
  <!-- Fencer 2 -->
30
- <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-5/12">
30
+ <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-5/12">
31
31
  <div class="flex space-x-4 justify-between w-full">
32
32
  <BaseText :text="String(card.score2)" size="3xl" weight="bold" class="align-middle pl-3 pt-0.5" />
33
33
  <div class="w-full">
@@ -50,11 +50,11 @@
50
50
  </div>
51
51
 
52
52
  <!-- Mobile active -->
53
- <div
54
- class="flex md:hidden justify-between items-center p-3 border border-alarm rounded-md bg-poolBox transition"
55
- :class="mobileCardActionClass"
56
- @click="onCardClick"
57
- >
53
+ <div
54
+ class="flex md:hidden justify-between items-center p-3 border border-alarm rounded-md bg-poolBox transition"
55
+ :class="mobileCardActionClass"
56
+ @click="onCardClick"
57
+ >
58
58
  <div class="relative flex flex-col items-center">
59
59
  <img :src="fencer1Portrait" alt="Portrait" class="w-12 h-12 rounded-full" />
60
60
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer1.colorDot} absolute top-0 left-0`"></div>
@@ -77,33 +77,35 @@
77
77
  </template>
78
78
 
79
79
  <script>
80
- import BaseText from "../../../../../Atoms/Text/BaseText.vue";
81
- import BaseButton from "../../../../../Molecules/Buttons/BaseButton/BaseButton.vue";
82
- import missingPortrait from "../../../../../../assets/portrait1.png";
80
+ import BaseText from '../../../../../Atoms/Text/BaseText.vue';
81
+ import BaseButton from '../../../../../Molecules/Buttons/BaseButton/BaseButton.vue';
82
+ import missingPortrait from '../../../../../../assets/portrait1.png';
83
83
 
84
84
  export default {
85
- name: "BoutCardActive",
85
+ name: 'BoutCardActive',
86
86
  emits: ['resume'],
87
87
  components: { BaseButton, BaseText },
88
88
  props: {
89
- card: { type: Object, required: true },
90
- editMode: { type: Boolean, default: false },
91
- timerStatus: { type: String, default: "stopped" },
92
- },
89
+ card: { type: Object, required: true },
90
+ editMode: { type: Boolean, default: false },
91
+ timerStatus: { type: String, default: 'stopped' }
92
+ },
93
93
  data() {
94
94
  return {
95
95
  missingPortrait,
96
96
  remaining: 0,
97
- interval: null,
97
+ interval: null
98
98
  };
99
99
  },
100
- computed: {
101
- hasCard() { return !!this.card; },
102
- mobileCardActionClass() {
103
- if (this.editMode) return "cursor-pointer";
104
- return "cursor-default";
105
- },
106
- fencer1Portrait() {
100
+ computed: {
101
+ hasCard() {
102
+ return !!this.card;
103
+ },
104
+ mobileCardActionClass() {
105
+ if (this.editMode) return 'cursor-pointer';
106
+ return 'cursor-default';
107
+ },
108
+ fencer1Portrait() {
107
109
  const src = this.card?.fencer1?.portrait;
108
110
  return src && String(src).trim() ? src : this.missingPortrait;
109
111
  },
@@ -112,46 +114,56 @@ export default {
112
114
  return src && String(src).trim() ? src : this.missingPortrait;
113
115
  },
114
116
  displayTime() {
115
- const m = Math.floor(this.remaining / 60).toString().padStart(2, "0");
116
- const s = (this.remaining % 60).toString().padStart(2, "0");
117
+ const m = Math.floor(this.remaining / 60)
118
+ .toString()
119
+ .padStart(2, '0');
120
+ const s = (this.remaining % 60).toString().padStart(2, '0');
117
121
  return `${m}:${s}`;
118
- },
122
+ }
119
123
  },
120
124
  mounted() {
121
- if (this.timerStatus === "running") this.start();
125
+ if (this.timerStatus === 'running') this.start();
126
+ },
127
+ beforeUnmount() {
128
+ this.stop();
122
129
  },
123
- beforeUnmount() { this.stop(); },
124
130
  watch: {
125
- "card.timeLeftSeconds": {
131
+ 'card.timeLeftSeconds': {
126
132
  immediate: true,
127
133
  handler(n) {
128
134
  const next = Number(n ?? 0);
129
- if (this.timerStatus !== "running") this.remaining = next;
130
- if (this.timerStatus === "running" && this.remaining === 0) this.remaining = next;
131
- },
135
+ if (this.timerStatus !== 'running') this.remaining = next;
136
+ if (this.timerStatus === 'running' && this.remaining === 0) this.remaining = next;
137
+ }
132
138
  },
133
139
  timerStatus(n) {
134
- if (n === "running") { this.start(); return; }
140
+ if (n === 'running') {
141
+ this.start();
142
+ return;
143
+ }
135
144
  this.stop();
136
- },
145
+ }
137
146
  },
138
147
  methods: {
139
148
  start() {
140
149
  this.stop();
141
150
  if (!this.remaining) this.remaining = Number(this.card?.timeLeftSeconds ?? 0);
142
151
  this.interval = setInterval(() => {
143
- if (this.remaining <= 0) { this.stop(); return; }
152
+ if (this.remaining <= 0) {
153
+ this.stop();
154
+ return;
155
+ }
144
156
  this.remaining--;
145
157
  }, 1000);
146
158
  },
147
159
  stop() {
148
160
  if (this.interval) clearInterval(this.interval);
149
161
  this.interval = null;
150
- },
151
- onCardClick() {
152
- if (!this.editMode) return;
153
- this.$emit("resume", this.card.ids);
154
- },
155
- },
162
+ },
163
+ onCardClick() {
164
+ if (!this.editMode) return;
165
+ this.$emit('resume', this.card.ids);
166
+ }
167
+ }
156
168
  };
157
169
  </script>
@@ -1,49 +1,36 @@
1
1
  import BoutCardInactive from './BoutCardInactive.vue';
2
2
 
3
3
  const baseCard = {
4
- status: 'scheduled',
5
- customStatus: '',
6
- fencer1: { portrait: '', name: 'Fencer A', team: 'Club X', colorDot: 'red-500' },
7
- fencer2: { portrait: '', name: 'Fencer B', team: 'Club Y', colorDot: 'blue-500' },
8
- score1: 0,
9
- score2: 0,
10
- pos1: '1',
11
- pos2: '2',
12
- ids: { BoutId: 2, orderIndex: 1, PoolId: 10, EventId: 5 },
4
+ status: 'scheduled',
5
+ customStatus: '',
6
+ fencer1: { portrait: '', name: 'Fencer A', team: 'Club X', colorDot: 'red-500' },
7
+ fencer2: { portrait: '', name: 'Fencer B', team: 'Club Y', colorDot: 'blue-500' },
8
+ score1: 0,
9
+ score2: 0,
10
+ pos1: '1',
11
+ pos2: '2',
12
+ ids: { BoutId: 2, orderIndex: 1, PoolId: 10, EventId: 5 }
13
13
  };
14
14
 
15
15
  export default {
16
- title: 'Molecules/BoutCard/Variants/Inactive',
17
- component: BoutCardInactive,
18
- args: {
19
- card: { ...baseCard },
20
- editMode: true,
21
- reorderMode: false,
22
- mode: 'scheduled',
23
-
24
- // NEW
25
- isAdmin: false,
26
- },
27
- argTypes: {
28
- mode: { control: { type: 'radio' }, options: ['scheduled', 'completed'] },
29
- isAdmin: { control: 'boolean' },
30
- },
16
+ title: 'Molecules/BoutCard/Variants/Inactive',
17
+ component: BoutCardInactive,
18
+ args: {
19
+ card: { ...baseCard },
20
+ editMode: true,
21
+ reorderMode: false,
22
+ mode: 'scheduled'
23
+ },
24
+ argTypes: {
25
+ mode: { control: { type: 'radio' }, options: ['scheduled', 'completed'] }
26
+ }
31
27
  };
32
28
 
33
29
  export const Scheduled = {};
34
30
 
35
- export const ScheduledAdminAssignVisible = {
36
- args: {
37
- mode: 'scheduled',
38
- isAdmin: true,
39
- card: { ...baseCard, status: 'scheduled' },
40
- },
41
- };
42
-
43
31
  export const Completed = {
44
- args: {
45
- mode: 'completed',
46
- isAdmin: true, // doesn't matter; button should be hidden when not scheduled
47
- card: { ...baseCard, status: 'completed', score1: 5, score2: 2 },
48
- },
32
+ args: {
33
+ mode: 'completed',
34
+ card: { ...baseCard, status: 'completed', score1: 5, score2: 2 }
35
+ }
49
36
  };
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <section class="w-full">
3
3
  <div v-if="c.customStatus && c.status !== 'active'" class="text-left">
4
- <BaseText :text="c.customStatus" size="sm" color="primary"/>
4
+ <BaseText :text="c.customStatus" size="sm" color="primary" />
5
5
  </div>
6
6
 
7
7
  <!-- Desktop -->
@@ -10,27 +10,27 @@
10
10
  <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-full mr-4">
11
11
  <div class="flex space-x-4 items-center">
12
12
  <div class="relative">
13
- <img :src="fencer1Portrait" alt="Portrait" class="w-12 h-12 rounded-full"/>
13
+ <img :src="fencer1Portrait" alt="Portrait" class="w-12 h-12 rounded-full" />
14
14
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer1.colorDot} relative -mt-4 ml-9 z-10`"></div>
15
15
  </div>
16
16
  <div>
17
- <BaseText :text="c.fencer1.name" size="md" color="quaternary" weight="bold"/>
18
- <BaseText :text="c.fencer1.team" size="xs" color="quinary"/>
17
+ <BaseText :text="c.fencer1.name" size="md" color="quaternary" weight="bold" />
18
+ <BaseText :text="c.fencer1.team" size="xs" color="quinary" />
19
19
  </div>
20
20
  </div>
21
- <BaseText :text="score1Display" size="3xl" weight="bold" class="align-middle pr-3 pt-0.5"/>
21
+ <BaseText :text="score1Display" size="3xl" weight="bold" class="align-middle pr-3 pt-0.5" />
22
22
  </div>
23
23
 
24
24
  <!-- Fencer 2 -->
25
25
  <div class="flex justify-between shadow-lg drop-shadow p-2 rounded-xl bg-poolBox w-full ml-4">
26
26
  <div class="flex space-x-4 justify-between w-full">
27
- <BaseText :text="score2Display" size="3xl" weight="bold" class="align-middle pl-3 pt-0.5"/>
27
+ <BaseText :text="score2Display" size="3xl" weight="bold" class="align-middle pl-3 pt-0.5" />
28
28
  <div class="w-full">
29
- <BaseText :text="c.fencer2.name" size="md" color="quaternary" weight="bold" class="text-right"/>
30
- <BaseText :text="c.fencer2.team" size="xs" color="quinary" class="text-right"/>
29
+ <BaseText :text="c.fencer2.name" size="md" color="quaternary" weight="bold" class="text-right" />
30
+ <BaseText :text="c.fencer2.team" size="xs" color="quinary" class="text-right" />
31
31
  </div>
32
32
  <div class="relative w-20">
33
- <img :src="fencer2Portrait" alt="Portrait" class="w-12 h-12 rounded-full"/>
33
+ <img :src="fencer2Portrait" alt="Portrait" class="w-12 h-12 rounded-full" />
34
34
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer2.colorDot} relative -mt-4 -ml-2 z-10`"></div>
35
35
  </div>
36
36
  </div>
@@ -39,42 +39,40 @@
39
39
  <!-- Actions -->
40
40
  <section v-if="editMode" class="text-right pl-4 flex">
41
41
  <BaseButton
42
- v-if="isScheduled"
43
- label="Start" size="sm" type="primary"
44
- @buttonClick="$emit('start', c.ids)" class="w-16"/>
45
- <BaseButton
46
- v-if="!isScheduled"
47
- label="Edit" size="sm" type="primary"
48
- @buttonClick="$emit('edit', c.ids)" class="w-16"/>
49
- <!-- Admin assign button -->
42
+ v-if="isScheduled"
43
+ label="Start"
44
+ size="sm"
45
+ type="primary"
46
+ @buttonClick="$emit('start', c.ids)"
47
+ class="w-16"
48
+ />
50
49
  <BaseButton
51
- v-if="isAdmin && isScheduled"
52
- label=""
53
- type="primary"
54
- iconName="fa-user-plus"
55
- :iconLeft="false"
56
- class="w-10 h-10 pr-4"
57
- @buttonClick="$emit('assign', c.ids)"
50
+ v-if="!isScheduled"
51
+ label="Edit"
52
+ size="sm"
53
+ type="primary"
54
+ @buttonClick="$emit('edit', c.ids)"
55
+ class="w-16"
58
56
  />
59
57
  </section>
60
58
  </div>
61
59
 
62
60
  <!-- Mobile -->
63
- <section
64
- class="relative flex md:hidden items-center border rounded-md bg-poolBox transition overflow-hidden"
65
- :class="mobileCardActionClass"
66
- >
61
+ <section
62
+ class="relative flex md:hidden items-center border rounded-md bg-poolBox transition overflow-hidden"
63
+ :class="mobileCardActionClass"
64
+ >
67
65
  <!-- main tappable area -->
68
66
  <div class="flex flex-1 items-center p-4 min-w-0" @click="onCardClick">
69
67
  <!-- left portrait or index when reordering -->
70
68
  <div v-if="!reorderMode" class="relative flex flex-col items-center flex-none">
71
- <img :src="fencer1Portrait" alt="Portrait" class="w-12 h-12 rounded-full"/>
69
+ <img :src="fencer1Portrait" alt="Portrait" class="w-12 h-12 rounded-full" />
72
70
  <div :class="`w-4 h-4 rounded-full bg-${card.fencer1.colorDot} relative -mt-4 ml-9 z-10`"></div>
73
71
  </div>
74
72
 
75
73
  <div v-if="reorderMode" class="flex flex-col items-center -mt-3 select-none flex-none">
76
- <BaseText text="bout" size="xs" color="quinary" weight="bold"/>
77
- <BaseText :text="`${(c.ids.orderIndex ?? 0) + 1}`" size="3xl" color="quaternary" weight="bold"/>
74
+ <BaseText text="bout" size="xs" color="quinary" weight="bold" />
75
+ <BaseText :text="`${(c.ids.orderIndex ?? 0) + 1}`" size="3xl" color="quaternary" weight="bold" />
78
76
  </div>
79
77
 
80
78
  <!-- center -->
@@ -82,80 +80,67 @@
82
80
  <div class="flex items-center justify-center">
83
81
  <div :class="`mr-2 bg-${card.fencer1.colorDot} w-3 h-3 flex-none`"></div>
84
82
  <BaseText
85
- :text="c.fencer1.name"
86
- size="sm"
87
- color="quinary"
88
- weight="bold"
89
- class="leading-none truncate max-w-full"
83
+ :text="c.fencer1.name"
84
+ size="sm"
85
+ color="quinary"
86
+ weight="bold"
87
+ class="leading-none truncate max-w-full"
90
88
  />
91
89
  </div>
92
90
 
93
- <BaseText text="vs" size="xs" color="quaternary"/>
91
+ <BaseText text="vs" size="xs" color="quaternary" />
94
92
 
95
93
  <div class="flex items-center justify-center">
96
94
  <div :class="`mr-2 bg-${card.fencer2.colorDot} w-3 h-3 flex-none`"></div>
97
95
  <BaseText
98
- :text="c.fencer2.name"
99
- size="sm"
100
- color="quinary"
101
- weight="bold"
102
- class="leading-none truncate max-w-full"
96
+ :text="c.fencer2.name"
97
+ size="sm"
98
+ color="quinary"
99
+ weight="bold"
100
+ class="leading-none truncate max-w-full"
103
101
  />
104
102
  </div>
105
103
  </div>
106
104
 
107
105
  <!-- right portrait -->
108
106
  <div class="relative w-12 h-12 flex-none">
109
- <img :src="fencer2Portrait" alt="Portrait" class="w-12 h-12 rounded-full"/>
110
- <div :class="`absolute -mt-4 -right-1 w-4 h-4 rounded-full bg-${card.fencer2.colorDot} ring-2 ring-white`"></div>
107
+ <img :src="fencer2Portrait" alt="Portrait" class="w-12 h-12 rounded-full" />
108
+ <div
109
+ :class="`absolute -mt-4 -right-1 w-4 h-4 rounded-full bg-${card.fencer2.colorDot} ring-2 ring-white`"
110
+ ></div>
111
111
  </div>
112
112
  </div>
113
-
114
- <!-- action rail: [ > ] -->
115
- <button
116
- v-if="isAdmin && isScheduled && !reorderMode"
117
- type="button"
118
- class="flex-none w-10 h-full flex items-center justify-center bg-white/60 hover:bg-white"
119
- @click.stop="$emit('assign', c.ids)"
120
- aria-label="Assign director"
121
- title="Assign director"
122
- >
123
- <BaseIcon icon-name="fa-chevron-right" size="sm" color="quinary" hover="primary" />
124
- </button>
125
113
  </section>
126
-
127
114
  </section>
128
115
  </template>
129
116
 
130
117
  <script>
131
- import BaseText from "../../../../../Atoms/Text/BaseText.vue";
132
- import BaseButton from "../../../../../Molecules/Buttons/BaseButton/BaseButton.vue";
133
- import missingPortrait from "../../../../../../assets/portrait1.png";
134
- import BaseIcon from "../../../../../Atoms/Icon/BaseIcon.vue";
118
+ import BaseText from '../../../../../Atoms/Text/BaseText.vue';
119
+ import BaseButton from '../../../../../Molecules/Buttons/BaseButton/BaseButton.vue';
120
+ import missingPortrait from '../../../../../../assets/portrait1.png';
135
121
 
136
- const emptyFencer = { portrait: "", name: "Unknown Name", team: "Unknown Team", colorDot: "gray-400" };
122
+ const emptyFencer = { portrait: '', name: 'Unknown Name', team: 'Unknown Team', colorDot: 'gray-400' };
137
123
  const defaultCard = {
138
- status: "scheduled",
139
- customStatus: "",
124
+ status: 'scheduled',
125
+ customStatus: '',
140
126
  fencer1: { ...emptyFencer },
141
127
  fencer2: { ...emptyFencer },
142
128
  score1: 0,
143
129
  score2: 0,
144
- pos1: "",
145
- pos2: "",
146
- ids: {},
130
+ pos1: '',
131
+ pos2: '',
132
+ ids: {}
147
133
  };
148
134
 
149
135
  export default {
150
- name: "BoutCardInactive",
151
- emits: ['assign', 'edit', 'reorder:tap', 'start'],
152
- components: {BaseIcon, BaseButton, BaseText },
136
+ name: 'BoutCardInactive',
137
+ emits: ['edit', 'reorder:tap', 'start'],
138
+ components: { BaseButton, BaseText },
153
139
  props: {
154
140
  card: { type: Object, required: true },
155
141
  editMode: { type: Boolean, default: false },
156
142
  reorderMode: { type: Boolean, default: false },
157
- mode: { type: String, default: undefined }, // let status decide unless explicitly set
158
- isAdmin: { type: Boolean, default: false },
143
+ mode: { type: String, default: undefined } // let status decide unless explicitly set
159
144
  },
160
145
  computed: {
161
146
  c() {
@@ -164,23 +149,23 @@ export default {
164
149
  ...defaultCard,
165
150
  ...src,
166
151
  fencer1: { ...emptyFencer, ...(src.fencer1 || {}) },
167
- fencer2: { ...emptyFencer, ...(src.fencer2 || {}) },
152
+ fencer2: { ...emptyFencer, ...(src.fencer2 || {}) }
168
153
  };
169
154
  },
170
- isScheduled() {
171
- const status = this.mode ?? this.c.status; // prefer explicit prop if provided
172
- return status === "scheduled";
173
- },
174
- mobileCardActionClass() {
175
- if (this.reorderMode) return "cursor-grab ring-2 ring-dashed ring-slate-300";
176
- if (this.editMode) return "cursor-pointer";
177
- return "cursor-default";
178
- },
155
+ isScheduled() {
156
+ const status = this.mode ?? this.c.status; // prefer explicit prop if provided
157
+ return status === 'scheduled';
158
+ },
159
+ mobileCardActionClass() {
160
+ if (this.reorderMode) return 'cursor-grab ring-2 ring-dashed ring-slate-300';
161
+ if (this.editMode) return 'cursor-pointer';
162
+ return 'cursor-default';
163
+ },
179
164
  score1Display() {
180
- return this.isScheduled ? "-" : String(this.c.score1);
165
+ return this.isScheduled ? '-' : String(this.c.score1);
181
166
  },
182
167
  score2Display() {
183
- return this.isScheduled ? "-" : String(this.c.score2);
168
+ return this.isScheduled ? '-' : String(this.c.score2);
184
169
  },
185
170
  fencer1Portrait() {
186
171
  const s = this.c.fencer1.portrait;
@@ -189,23 +174,23 @@ export default {
189
174
  fencer2Portrait() {
190
175
  const s = this.c.fencer2.portrait;
191
176
  return s && String(s).trim() ? s : missingPortrait;
192
- },
193
- },
194
- methods: {
195
- onCardClick() {
196
- if (this.reorderMode) {
197
- this.$emit("reorder:tap", this.c.ids);
198
- return;
199
- }
200
-
201
- if (!this.editMode) return;
202
- if (this.isScheduled) {
203
- this.$emit("start", this.c.ids);
204
- return;
205
- }
206
-
207
- this.$emit("edit", this.c.ids);
208
- },
209
- },
210
- };
177
+ }
178
+ },
179
+ methods: {
180
+ onCardClick() {
181
+ if (this.reorderMode) {
182
+ this.$emit('reorder:tap', this.c.ids);
183
+ return;
184
+ }
185
+
186
+ if (!this.editMode) return;
187
+ if (this.isScheduled) {
188
+ this.$emit('start', this.c.ids);
189
+ return;
190
+ }
191
+
192
+ this.$emit('edit', this.c.ids);
193
+ }
194
+ }
195
+ };
211
196
  </script>
@@ -1,45 +1,44 @@
1
1
  <!-- src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue -->
2
2
  <template>
3
3
  <section class="w-full border rounded-lg mb-4" :class="selected ? 'border-bright' : ''">
4
- <div class="flex items-center justify-between p-2 rounded-md bg-poolBox shadow-sm" >
4
+ <div class="flex items-center justify-between p-2 rounded-md bg-poolBox shadow-sm">
5
5
  <!-- Left label / handle area (purely visual; drag comes from parent shell) -->
6
6
  <div class="flex flex-col items-center select-none pl-4 -mt-1">
7
7
  <BaseText text="bout" size="xs" color="quinary" weight="bold" />
8
- <BaseText :text="String(orderIndex + 1)" size="4xl" color="quaternary" weight="bold"/>
8
+ <BaseText :text="String(orderIndex + 1)" size="4xl" color="quaternary" weight="bold" />
9
9
  </div>
10
10
 
11
11
  <!-- Center text -->
12
12
  <div class="text-center flex-1 mx-2">
13
- <BaseText :text="`${card.pos1} - ${card.fencer1.name}`" size="sm" color="quinary" weight="bold"/>
14
- <BaseText text="vs" size="xs" color="quaternary" class="-mt-0.5 ml-3"/>
15
- <BaseText :text="`${card.pos2} - ${card.fencer2.name}`" size="sm" color="quinary" weight="bold"/>
13
+ <BaseText :text="`${card.pos1} - ${card.fencer1.name}`" size="sm" color="quinary" weight="bold" />
14
+ <BaseText text="vs" size="xs" color="quaternary" class="-mt-0.5 ml-3" />
15
+ <BaseText :text="`${card.pos2} - ${card.fencer2.name}`" size="sm" color="quinary" weight="bold" />
16
16
  </div>
17
17
 
18
18
  <div>
19
- <BaseIcon icon-name="fa-grip-dots-vertical" size="4xl" color="quinary" class="mr-4"/>
19
+ <BaseIcon icon-name="fa-grip-dots-vertical" size="4xl" color="quinary" class="mr-4" />
20
20
  </div>
21
-
22
21
  </div>
23
22
  </section>
24
23
  </template>
25
24
 
26
25
  <script>
27
- import BaseText from "../../../../../Atoms/Text/BaseText.vue";
28
- import BaseIcon from "../../../../../Atoms/Icon/BaseIcon.vue";
26
+ import BaseText from '../../../../../Atoms/Text/BaseText.vue';
27
+ import BaseIcon from '../../../../../Atoms/Icon/BaseIcon.vue';
29
28
 
30
29
  export default {
31
- name: "BoutCardReorder",
32
- components: {BaseIcon, BaseText },
30
+ name: 'BoutCardReorder',
31
+ components: { BaseIcon, BaseText },
33
32
  props: {
34
33
  card: { type: Object, required: true },
35
34
  editMode: { type: Boolean, default: false },
36
35
  reorderMode: { type: Boolean, default: true },
37
- selected: { type: Boolean, default: false },
36
+ selected: { type: Boolean, default: false }
38
37
  },
39
38
  computed: {
40
39
  orderIndex() {
41
40
  return Number(this.card?.ids?.orderIndex ?? 0);
42
- },
43
- },
41
+ }
42
+ }
44
43
  };
45
44
  </script>
@@ -1,11 +1,11 @@
1
1
  import BoutCardWaiting from './BoutCardWaiting.vue';
2
2
 
3
3
  export default {
4
- title: 'Molecules/BoutCard/Variants/Waiting',
5
- component: BoutCardWaiting,
6
- args: {
7
- colors: { Color1: 'red', Color2: 'blue' },
8
- },
4
+ title: 'Molecules/BoutCard/Variants/Waiting',
5
+ component: BoutCardWaiting,
6
+ args: {
7
+ colors: { Color1: 'red', Color2: 'blue' }
8
+ }
9
9
  };
10
10
 
11
11
  export const Default = {};