@dcrackel/hematournamentui 1.0.706 → 1.0.708

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 (350) 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 +118 -88
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +8394 -8807
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +183 -428
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +15 -11
  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/index.js +2 -0
  17. package/src/main.js +1 -1
  18. package/src/mocks/EventQuestionsMock.js +43 -55
  19. package/src/mocks/assignments.js +180 -181
  20. package/src/mocks/clubGetAllMock.js +8143 -8143
  21. package/src/mocks/eventMock.js +205 -205
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  23. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  24. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  25. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  26. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  27. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  28. package/src/mocks/eventRules.js +87 -86
  29. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  30. package/src/mocks/getAllClubs.js +8143 -8143
  31. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  32. package/src/mocks/getAllWeapons.js +81 -82
  33. package/src/mocks/getAttendance.js +43 -44
  34. package/src/mocks/getClub.js +43 -44
  35. package/src/mocks/getClubDisplayByClubId.js +104 -105
  36. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  37. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  38. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  39. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  40. package/src/mocks/getDEBouts-TableOf128.js +37 -0
  41. package/src/mocks/getDEBouts-TableOf64.js +35 -0
  42. package/src/mocks/getDEWithBouts.js +628 -629
  43. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  44. package/src/mocks/getDeBouts-15fencers.js +925 -927
  45. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  46. package/src/mocks/getDeBouts-6fencers.js +818 -818
  47. package/src/mocks/getEventByTournamentId.js +47 -48
  48. package/src/mocks/getFinalEventResult.js +304 -305
  49. package/src/mocks/getPenaltiesByEvent.js +655 -656
  50. package/src/mocks/getPoolResults.js +1533 -1534
  51. package/src/mocks/getPoolsWithBouts.js +662 -663
  52. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  53. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  54. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  55. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  56. package/src/mocks/locationMock.js +3213 -3214
  57. package/src/mocks/mockRoutes.js +3 -3
  58. package/src/mocks/personGetAllMock.js +2536 -2537
  59. package/src/mocks/personsMock.js +17569 -17570
  60. package/src/mocks/singleEventMock.js +249 -250
  61. package/src/mocks/tournamentMock.js +1988 -1927
  62. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  63. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  64. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  65. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  66. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  67. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  68. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  69. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  70. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  71. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  72. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  73. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  74. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  75. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  76. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  77. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  78. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  79. package/src/stories/Configure.mdx +5 -3
  80. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  81. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  83. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  84. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  85. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  86. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  87. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  88. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  89. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  90. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  91. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  92. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  93. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  94. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  95. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  96. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  97. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  98. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  99. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  100. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  101. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  102. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  103. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  104. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  105. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  106. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  107. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  108. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  109. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.stories.js +23 -0
  110. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.vue +35 -0
  111. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  112. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  113. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  114. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  115. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  116. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  117. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  118. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  119. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  120. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  121. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  122. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  123. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  124. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  125. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  126. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.test.js +18 -0
  127. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +29 -23
  128. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  129. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +28 -16
  130. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  131. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  132. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  133. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  134. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  135. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  136. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  137. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  138. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  139. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  140. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  141. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  143. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  144. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  145. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  146. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  147. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  148. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  149. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.stories.js +33 -0
  150. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.test.js +45 -0
  151. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.vue +103 -0
  152. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  153. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  154. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  155. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  156. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  157. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  158. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  159. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  160. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  161. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  162. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +298 -194
  163. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  164. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  165. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  166. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  167. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  168. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  169. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  170. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  171. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  172. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  173. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  174. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  175. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  176. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  177. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  178. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  179. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  180. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  181. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +60 -98
  182. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +143 -0
  183. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +256 -202
  184. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +69 -93
  185. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +80 -111
  186. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  187. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  188. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +56 -32
  189. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  190. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  191. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  192. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  193. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  194. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  195. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  196. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  197. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  198. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  199. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  200. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  201. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  202. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  203. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  204. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  205. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  206. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  207. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  208. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  209. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  210. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  211. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  212. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  213. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  214. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  215. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  216. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  217. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  218. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  219. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  220. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +177 -10
  221. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +319 -198
  222. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.test.js +29 -0
  223. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.vue +46 -0
  224. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.test.js +21 -0
  225. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.vue +39 -0
  226. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.js +145 -0
  227. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.test.js +64 -0
  228. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.js +57 -0
  229. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.test.js +65 -0
  230. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  231. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +31 -26
  232. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  233. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  234. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  235. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  236. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  237. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  238. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  239. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  240. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  241. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  242. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  243. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  244. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  245. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  246. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  247. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  248. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  249. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  250. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  251. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  252. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  253. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  254. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  255. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  256. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  257. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  258. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  259. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  260. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  261. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  262. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  263. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  264. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  265. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  266. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  267. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  268. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  269. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  270. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  271. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  272. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  273. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  274. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  275. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  276. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  277. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  278. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  279. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  280. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  281. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  282. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  283. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  284. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +216 -109
  285. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +138 -43
  286. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +198 -195
  287. package/src/stories/Templates/EventManagement/Bracket/BracketPlannedSuggestions.js +39 -0
  288. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.js +39 -0
  289. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.test.js +79 -0
  290. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  291. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  292. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  293. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  294. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  295. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  296. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  297. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  298. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  299. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  300. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  301. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  302. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  303. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  304. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  305. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  306. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  307. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  308. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  309. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  310. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  311. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  312. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  313. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  314. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  315. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  316. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  317. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  318. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  319. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  320. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  321. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  322. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  323. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  324. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  325. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  326. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  327. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  328. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  329. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  330. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  331. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  332. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  333. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  334. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  335. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  336. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  337. package/src/stories/Util/seeding.js +131 -131
  338. package/src/stories/Util/tabs.js +75 -75
  339. package/tailwind/tailwind.css +5 -7
  340. package/tailwind.config.js +12 -15
  341. package/vite.config.js +3 -3
  342. package/src/mocks/getDirectors.js +0 -18
  343. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  344. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  345. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  346. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
  347. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +0 -111
  348. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +0 -112
  349. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +0 -23
  350. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +0 -79
@@ -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() {