@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
@@ -1,117 +1,117 @@
1
1
  import BaseButton from './BaseButton.vue';
2
2
 
3
3
  export default {
4
- title: 'Molecules/Buttons/BaseButton',
5
- component: BaseButton,
6
- tags: ['autodocs'],
7
- args: {
8
- label: 'Button',
9
- size: 'md',
10
- iconName: '',
11
- iconStyle: 'fa-solid',
12
- type: 'primary'
4
+ title: 'Molecules/Buttons/BaseButton',
5
+ component: BaseButton,
6
+ tags: ['autodocs'],
7
+ args: {
8
+ label: 'Button',
9
+ size: 'md',
10
+ iconName: '',
11
+ iconStyle: 'fa-solid',
12
+ type: 'primary'
13
+ },
14
+ argTypes: {
15
+ onClick: {},
16
+ size: {
17
+ control: {
18
+ type: 'select'
19
+ },
20
+ options: ['small', 'medium', 'large']
13
21
  },
14
- argTypes: {
15
- onClick: {},
16
- size: {
17
- control: {
18
- type: 'select'
19
- },
20
- options: ['small', 'medium', 'large']
21
- },
22
- iconName: {
23
- control: {
24
- type: 'text'
25
- },
26
- defaultValue: ''
27
- },
28
- iconStyle: {
29
- control: {
30
- type: 'select'
31
- },
32
- options: ['fa-solid', 'fa-regular', 'fa-solid', 'fa-light', 'fa-thing'],
33
- defaultValue: 'fa-solid'
34
- },
35
- type: {
36
- control: {
37
- type: 'select'
38
- },
39
- options: ['primary', 'secondary', 'tertiary', 'bright', 'admin', 'square', 'tabBar'],
40
- defaultValue: 'primary'
41
- }
22
+ iconName: {
23
+ control: {
24
+ type: 'text'
25
+ },
26
+ defaultValue: ''
27
+ },
28
+ iconStyle: {
29
+ control: {
30
+ type: 'select'
31
+ },
32
+ options: ['fa-solid', 'fa-regular', 'fa-solid', 'fa-light', 'fa-thing'],
33
+ defaultValue: 'fa-solid'
34
+ },
35
+ type: {
36
+ control: {
37
+ type: 'select'
38
+ },
39
+ options: ['primary', 'secondary', 'tertiary', 'bright', 'admin', 'square', 'tabBar'],
40
+ defaultValue: 'primary'
42
41
  }
42
+ }
43
43
  };
44
44
  export const Primary = {
45
- args: {
46
- type: 'primary',
47
- label: 'Button'
48
- }
45
+ args: {
46
+ type: 'primary',
47
+ label: 'Button'
48
+ }
49
49
  };
50
50
  export const PrimaryButtonWithIcon = {
51
- args: {
52
- type: 'primary',
53
- label: 'Button',
54
- iconName: 'fa-check'
55
- }
51
+ args: {
52
+ type: 'primary',
53
+ label: 'Button',
54
+ iconName: 'fa-check'
55
+ }
56
56
  };
57
57
  export const Secondary = {
58
- args: {
59
- type: 'secondary',
60
- label: 'Button'
61
- }
58
+ args: {
59
+ type: 'secondary',
60
+ label: 'Button'
61
+ }
62
62
  };
63
63
  export const HighlightedButtonLarge = {
64
- args: {
65
- type: 'bright',
66
- size: '3xl',
67
- label: 'Button'
68
- }
64
+ args: {
65
+ type: 'bright',
66
+ size: '3xl',
67
+ label: 'Button'
68
+ }
69
69
  };
70
70
  export const SmallTertiary = {
71
- args: {
72
- type: 'tertiary',
73
- size: 'sm',
74
- label: 'Button'
75
- }
71
+ args: {
72
+ type: 'tertiary',
73
+ size: 'sm',
74
+ label: 'Button'
75
+ }
76
76
  };
77
77
 
78
78
  export const AdminMenuButton = {
79
- args: {
80
- type: 'admin',
81
- size: 'md',
82
- label: 'Admin Button',
83
- hoverColor: 'highlightPrimary'
84
- }
79
+ args: {
80
+ type: 'admin',
81
+ size: 'md',
82
+ label: 'Admin Button',
83
+ hoverColor: 'highlightPrimary'
84
+ }
85
85
  };
86
86
 
87
87
  export const SquareButton = {
88
- args: {
89
- type: 'square',
90
- label: 'Button',
91
- hoverColor: 'highlightPrimary'
92
- }
88
+ args: {
89
+ type: 'square',
90
+ label: 'Button',
91
+ hoverColor: 'highlightPrimary'
92
+ }
93
93
  };
94
94
 
95
95
  export const IconButton = {
96
- args: {
97
- label: '',
98
- type: 'iconOnly',
99
- iconName: 'fa-check',
100
- }
96
+ args: {
97
+ label: '',
98
+ type: 'iconOnly',
99
+ iconName: 'fa-check'
100
+ }
101
101
  };
102
102
 
103
103
  export const IconButtonWithIconOnRight = {
104
- args: {
105
- label: 'Save',
106
- type: 'primary',
107
- iconName: 'fa-check',
108
- iconLeft: false
109
- }
104
+ args: {
105
+ label: 'Save',
106
+ type: 'primary',
107
+ iconName: 'fa-check',
108
+ iconLeft: false
109
+ }
110
110
  };
111
111
 
112
112
  export const TabBarButton = {
113
- args: {
114
- type: 'tabBar',
115
- label: 'Button'
116
- }
113
+ args: {
114
+ type: 'tabBar',
115
+ label: 'Button'
116
+ }
117
117
  };
@@ -1,147 +1,145 @@
1
1
  import BaseButton from './BaseButton.vue';
2
- import { mount } from "@vue/test-utils";
3
- import { describe, expect, test, it } from "vitest";
2
+ import { mount } from '@vue/test-utils';
3
+ import { describe, expect, test, it } from 'vitest';
4
4
 
5
5
  describe('BaseButton.vue', () => {
6
+ it('renders the correct label', () => {
7
+ const wrapper = mount(BaseButton, {
8
+ props: { label: 'Test Button', size: 'lg' }
9
+ });
10
+ expect(wrapper.text()).toContain('Test Button');
11
+ });
6
12
 
7
- it('renders the correct label', () => {
8
- const wrapper = mount(BaseButton, {
9
- props: { label: 'Test Button', size: 'lg' }
10
- });
11
- expect(wrapper.text()).toContain('Test Button');
13
+ it('renders icon when iconName is provided', () => {
14
+ const iconName = 'some-icon-name';
15
+ const wrapper = mount(BaseButton, {
16
+ props: { label: 'Test Button', iconName: iconName }
12
17
  });
13
18
 
14
- it('renders icon when iconName is provided', () => {
15
- const iconName = 'some-icon-name';
16
- const wrapper = mount(BaseButton, {
17
- props: { label: 'Test Button', iconName: iconName }
18
- });
19
+ const iconElement = wrapper.find('[data-testid="base-icon"]');
20
+ expect(iconElement.exists()).toBe(true);
21
+ });
19
22
 
20
- const iconElement = wrapper.find('[data-testid="base-icon"]');
21
- expect(iconElement.exists()).toBe(true);
23
+ it('emits click event when clicked', async () => {
24
+ const wrapper = mount(BaseButton, {
25
+ props: { label: 'Test Button', size: 'sm' }
22
26
  });
27
+ await wrapper.trigger('click');
28
+ expect(wrapper.emitted().click).toHaveLength(1);
29
+ });
23
30
 
24
- it('emits click event when clicked', async () => {
25
- const wrapper = mount(BaseButton, {
26
- props: { label: 'Test Button', size: 'sm' }
27
- })
28
- await wrapper.trigger('click')
29
- expect(wrapper.emitted().click).toHaveLength(1)
30
- })
31
-
32
- it('computes correct classes based on type and size', () => {
33
- const wrapper = mount(BaseButton, {
34
- props: { label: 'Test Button', type: 'primary', size: 'md' }
35
- });
36
-
37
- const baseTextElement = wrapper.find('[data-testid="base-text"]');
38
- expect(baseTextElement.classes()).toContain('text-md');
39
- expect(baseTextElement.classes()).toContain('text-primary');
31
+ it('computes correct classes based on type and size', () => {
32
+ const wrapper = mount(BaseButton, {
33
+ props: { label: 'Test Button', type: 'primary', size: 'md' }
40
34
  });
41
35
 
42
- it('computes correct classes based on primary and selected', () => {
43
- const wrapper = mount(BaseButton, {
44
- props: { label: 'Test Button', type: 'primary', size: 'md', selected: true }
45
- });
36
+ const baseTextElement = wrapper.find('[data-testid="base-text"]');
37
+ expect(baseTextElement.classes()).toContain('text-md');
38
+ expect(baseTextElement.classes()).toContain('text-primary');
39
+ });
46
40
 
47
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
48
- expect(baseTextElement.classes()).toContain('bg-dropdownSelect');
41
+ it('computes correct classes based on primary and selected', () => {
42
+ const wrapper = mount(BaseButton, {
43
+ props: { label: 'Test Button', type: 'primary', size: 'md', selected: true }
49
44
  });
50
45
 
51
- it('computes correct classes based secondary type', () => {
52
- const wrapper = mount(BaseButton, {
53
- props: { label: 'Test Button', type: 'secondary', size: 'xl' }
54
- });
46
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
47
+ expect(baseTextElement.classes()).toContain('bg-dropdownSelect');
48
+ });
55
49
 
56
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
57
- expect(baseTextElement.classes()).toContain('text-xl');
58
- expect(baseTextElement.classes()).toContain('bg-secondary');
50
+ it('computes correct classes based secondary type', () => {
51
+ const wrapper = mount(BaseButton, {
52
+ props: { label: 'Test Button', type: 'secondary', size: 'xl' }
59
53
  });
60
54
 
61
- it('computes correct classes based secondary type and selected', () => {
62
- const wrapper = mount(BaseButton, {
63
- props: { label: 'Test Button', type: 'secondary', size: 'xl', selected:true }
64
- });
55
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
56
+ expect(baseTextElement.classes()).toContain('text-xl');
57
+ expect(baseTextElement.classes()).toContain('bg-secondary');
58
+ });
65
59
 
66
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
67
- expect(baseTextElement.classes()).toContain('bg-dropdownSelect');
60
+ it('computes correct classes based secondary type and selected', () => {
61
+ const wrapper = mount(BaseButton, {
62
+ props: { label: 'Test Button', type: 'secondary', size: 'xl', selected: true }
68
63
  });
69
64
 
70
- it('computes correct classes based tertiary type', () => {
71
- const wrapper = mount(BaseButton, {
72
- props: { label: 'Test Button', type: 'tertiary', size: 'lg' }
73
- });
65
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
66
+ expect(baseTextElement.classes()).toContain('bg-dropdownSelect');
67
+ });
74
68
 
75
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
76
- expect(baseTextElement.classes()).toContain('text-lg');
77
- expect(baseTextElement.classes()).toContain('bg-tertiary');
69
+ it('computes correct classes based tertiary type', () => {
70
+ const wrapper = mount(BaseButton, {
71
+ props: { label: 'Test Button', type: 'tertiary', size: 'lg' }
78
72
  });
79
73
 
80
- it('computes correct classes based tertiary type and selected', () => {
81
- const wrapper = mount(BaseButton, {
82
- props: { label: 'Test Button', type: 'tertiary', size: 'xl', selected:true }
83
- });
74
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
75
+ expect(baseTextElement.classes()).toContain('text-lg');
76
+ expect(baseTextElement.classes()).toContain('bg-tertiary');
77
+ });
84
78
 
85
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
86
- expect(baseTextElement.classes()).toContain('bg-primary');
79
+ it('computes correct classes based tertiary type and selected', () => {
80
+ const wrapper = mount(BaseButton, {
81
+ props: { label: 'Test Button', type: 'tertiary', size: 'xl', selected: true }
87
82
  });
88
83
 
89
- it('computes correct classes based bright type', () => {
90
- const wrapper = mount(BaseButton, {
91
- props: { label: 'Test Button', type: 'bright', size: 'xs' }
92
- });
84
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
85
+ expect(baseTextElement.classes()).toContain('bg-primary');
86
+ });
93
87
 
94
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
95
- expect(baseTextElement.classes()).toContain('text-xs');
96
- expect(baseTextElement.classes()).toContain('bg-bright');
88
+ it('computes correct classes based bright type', () => {
89
+ const wrapper = mount(BaseButton, {
90
+ props: { label: 'Test Button', type: 'bright', size: 'xs' }
97
91
  });
98
92
 
99
- it('computes correct classes based bright type and selected', () => {
100
- const wrapper = mount(BaseButton, {
101
- props: { label: 'Test Button', type: 'bright', size: 'xl', selected:true }
102
- });
93
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
94
+ expect(baseTextElement.classes()).toContain('text-xs');
95
+ expect(baseTextElement.classes()).toContain('bg-bright');
96
+ });
103
97
 
104
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
105
- expect(baseTextElement.classes()).toContain('bg-primary');
98
+ it('computes correct classes based bright type and selected', () => {
99
+ const wrapper = mount(BaseButton, {
100
+ props: { label: 'Test Button', type: 'bright', size: 'xl', selected: true }
106
101
  });
107
102
 
108
- it('computes correct classes based admin', () => {
109
- const wrapper = mount(BaseButton, {
110
- props: { label: 'Test Button', type: 'admin', size: 'xs', hoverColor: 'admin'}
111
- });
103
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
104
+ expect(baseTextElement.classes()).toContain('bg-primary');
105
+ });
112
106
 
113
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
114
- expect(baseTextElement.classes()).toContain('text-xs');
115
- expect(baseTextElement.classes()).toContain('bg-primary');
107
+ it('computes correct classes based admin', () => {
108
+ const wrapper = mount(BaseButton, {
109
+ props: { label: 'Test Button', type: 'admin', size: 'xs', hoverColor: 'admin' }
116
110
  });
117
111
 
118
- it('computes correct classes based admin type and selected', () => {
119
- const wrapper = mount(BaseButton, {
120
- props: { label: 'Test Button', type: 'admin', size: 'xl', selected:true }
121
- });
112
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
113
+ expect(baseTextElement.classes()).toContain('text-xs');
114
+ expect(baseTextElement.classes()).toContain('bg-primary');
115
+ });
122
116
 
123
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
124
- expect(baseTextElement.classes()).toContain('bg-primary');
117
+ it('computes correct classes based admin type and selected', () => {
118
+ const wrapper = mount(BaseButton, {
119
+ props: { label: 'Test Button', type: 'admin', size: 'xl', selected: true }
125
120
  });
126
121
 
127
- it('computes correct classes based admin secondary', () => {
128
- const wrapper = mount(BaseButton, {
129
- props: { label: 'Test Button', type: 'adminSecondary', size: 'xs', hoverColor: 'adminSecondary' }
130
- });
122
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
123
+ expect(baseTextElement.classes()).toContain('bg-primary');
124
+ });
131
125
 
132
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
133
- expect(baseTextElement.classes()).toContain('text-xs');
134
- expect(baseTextElement.classes()).toContain('bg-primary');
126
+ it('computes correct classes based admin secondary', () => {
127
+ const wrapper = mount(BaseButton, {
128
+ props: { label: 'Test Button', type: 'adminSecondary', size: 'xs', hoverColor: 'adminSecondary' }
135
129
  });
136
130
 
137
- it('computes correct classes based admin secondary type and selected', () => {
138
- const wrapper = mount(BaseButton, {
139
- props: {label: 'Test Button', type: 'adminSecondary', size: 'xl', selected:true}
140
- });
131
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
132
+ expect(baseTextElement.classes()).toContain('text-xs');
133
+ expect(baseTextElement.classes()).toContain('bg-primary');
134
+ });
141
135
 
142
- const baseTextElement = wrapper.find('[data-testid="base-button"]');
143
- expect(baseTextElement.classes()).toContain('text-xl');
144
- expect(baseTextElement.classes()).toContain('bg-primary');
136
+ it('computes correct classes based admin secondary type and selected', () => {
137
+ const wrapper = mount(BaseButton, {
138
+ props: { label: 'Test Button', type: 'adminSecondary', size: 'xl', selected: true }
145
139
  });
146
140
 
147
- })
141
+ const baseTextElement = wrapper.find('[data-testid="base-button"]');
142
+ expect(baseTextElement.classes()).toContain('text-xl');
143
+ expect(baseTextElement.classes()).toContain('bg-primary');
144
+ });
145
+ });
@@ -1,9 +1,37 @@
1
1
  <template>
2
2
  <button :class="computedClasses" data-testid="base-button" type="button" @click="handleClick">
3
- <BaseIcon v-if="iconName && iconLeft" :color="textColor" :icon-name="iconName" :size="size" :style="iconStyle" data-testid="base-icon"/>
4
- <BaseText v-if="shouldShowLabel" :color="textColor" :size="size" :text="label" data-testid="base-text" weight="normal" />
5
- <BaseIcon v-if="iconName && !iconLeft" :color="textColor" :icon-name="iconName" :size="size" :style="iconStyle" data-testid="base-icon"/>
6
- <BaseIcon v-if="isDropDown" :color="textColor" icon-name="fa-caret-down" size="xs" :style="'fa-solid ml-1'" data-testid="dropdown"/>
3
+ <BaseIcon
4
+ v-if="iconName && iconLeft"
5
+ :color="textColor"
6
+ :icon-name="iconName"
7
+ :size="size"
8
+ :style="iconStyle"
9
+ data-testid="base-icon"
10
+ />
11
+ <BaseText
12
+ v-if="shouldShowLabel"
13
+ :color="textColor"
14
+ :size="size"
15
+ :text="label"
16
+ data-testid="base-text"
17
+ weight="normal"
18
+ />
19
+ <BaseIcon
20
+ v-if="iconName && !iconLeft"
21
+ :color="textColor"
22
+ :icon-name="iconName"
23
+ :size="size"
24
+ :style="iconStyle"
25
+ data-testid="base-icon"
26
+ />
27
+ <BaseIcon
28
+ v-if="isDropDown"
29
+ :color="textColor"
30
+ icon-name="fa-caret-down"
31
+ size="xs"
32
+ :style="'fa-solid ml-1'"
33
+ data-testid="dropdown"
34
+ />
7
35
  </button>
8
36
  </template>
9
37
 
@@ -11,6 +39,41 @@
11
39
  import BaseText from '../../../Atoms/Text/BaseText.vue';
12
40
  import BaseIcon from '../../../Atoms/Icon/BaseIcon.vue';
13
41
 
42
+ const buttonClassesBySelection = {
43
+ true: {
44
+ primary: 'bg-dropdownSelect shadow-md',
45
+ secondary: 'bg-secondary',
46
+ tertiary: 'bg-primary',
47
+ bright: 'bg-primary',
48
+ admin: 'bg-primary',
49
+ adminSecondary: 'bg-primary',
50
+ square: 'bg-dropdownSelect',
51
+ tabBar: 'border-b border-b-bright',
52
+ graySecondary: 'bg-secondary',
53
+ grayAndBlue: 'bg-secondary hover:bg-quinary',
54
+ whiteSecondary: 'bg-neutral shadow',
55
+ liteGraySecondary: 'bg-neutral shadow',
56
+ playPause: 'bg-alarm hover:bg-quaternaryHighlight'
57
+ },
58
+ false: {
59
+ primary: 'bg-neutral',
60
+ secondary: 'bg-primary',
61
+ tertiary: 'bg-tertiary',
62
+ bright: 'bg-bright',
63
+ admin: 'bg-primary',
64
+ adminSecondary: 'bg-primary',
65
+ square: 'bg-neutral',
66
+ tabBar: 'border-b border-b-neutral text-bright',
67
+ graySecondary: 'bg-graySecondary',
68
+ grayAndBlue: 'bg-gridBoxHeader',
69
+ whiteSecondary: 'bg-poolBox',
70
+ liteGraySecondary: 'bg-poolBox',
71
+ playPause: 'bg-quaternary hover:bg-quaternaryHighlight'
72
+ }
73
+ };
74
+
75
+ const getSelectionClasses = (type, selected) => buttonClassesBySelection[String(selected)][type] || '';
76
+
14
77
  export default {
15
78
  name: 'BaseButton',
16
79
  components: { BaseText, BaseIcon },
@@ -36,12 +99,29 @@ export default {
36
99
  size: {
37
100
  type: String,
38
101
  default: 'sm',
39
- validator: value => [' ','', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl'].includes(value)
102
+ validator: value => [' ', '', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl'].includes(value)
40
103
  },
41
104
  type: {
42
105
  type: String,
43
106
  default: 'primary',
44
- validator: value => ['primary', 'secondary', 'tertiary', 'bright', 'admin', 'adminSecondary', 'iconOnly', 'editor', 'square', 'tabBar', 'graySecondary', 'liteGraySecondary', 'whiteSecondary', 'grayAndBlue', 'playPause'].includes(value)
107
+ validator: value =>
108
+ [
109
+ 'primary',
110
+ 'secondary',
111
+ 'tertiary',
112
+ 'bright',
113
+ 'admin',
114
+ 'adminSecondary',
115
+ 'iconOnly',
116
+ 'editor',
117
+ 'square',
118
+ 'tabBar',
119
+ 'graySecondary',
120
+ 'liteGraySecondary',
121
+ 'whiteSecondary',
122
+ 'grayAndBlue',
123
+ 'playPause'
124
+ ].includes(value)
45
125
  },
46
126
  selected: {
47
127
  type: Boolean,
@@ -104,24 +184,7 @@ export default {
104
184
  computed: {
105
185
  computedClasses() {
106
186
  const baseClasses = this.typeClasses[this.type] || '';
107
-
108
- const typeClassesMap = {
109
- primary: this.selected ? 'bg-dropdownSelect shadow-md' : 'bg-neutral',
110
- secondary: this.selected ? 'bg-secondary' : 'bg-primary',
111
- tertiary: this.selected ? 'bg-primary' : 'bg-tertiary',
112
- bright: this.selected ? 'bg-primary' : 'bg-bright',
113
- admin: this.selected ? 'bg-primary' : 'bg-primary',
114
- adminSecondary: this.selected ? 'bg-primary' : 'bg-primary',
115
- square: this.selected ? 'bg-dropdownSelect' : 'bg-neutral',
116
- tabBar: this.selected ? 'border-b border-b-bright' : 'border-b border-b-neutral text-bright',
117
- graySecondary: this.selected ? 'bg-secondary' : 'bg-graySecondary',
118
- grayAndBlue: this.selected ? 'bg-secondary hover:bg-quinary' : 'bg-gridBoxHeader',
119
- whiteSecondary: this.selected ? 'bg-neutral shadow' : 'bg-poolBox',
120
- liteGraySecondary: this.selected ? 'bg-neutral shadow' : 'bg-poolBox',
121
- playPause: this.selected ? 'bg-alarm hover:bg-quaternaryHighlight' : 'bg-quaternary hover:bg-quaternaryHighlight'
122
- };
123
-
124
- const dynamicClass = typeClassesMap[this.type] || '';
187
+ const dynamicClass = getSelectionClasses(this.type, this.selected);
125
188
  return `${baseClasses} ${dynamicClass}`;
126
189
  },
127
190
  textColor() {