tide-design-system 2.5.4 → 2.5.7

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 (246) hide show
  1. package/.storybook/main.ts +1 -0
  2. package/dist/{IconAccountBalance-B9rJ09ax.js → IconAccountBalance-dARjIrfY.js} +3 -3
  3. package/dist/{IconAcute-9dHrmblT.js → IconAcute-BWwq_P2g.js} +3 -3
  4. package/dist/{IconAdd-BsJiPHYa.js → IconAdd-DtInpvF3.js} +3 -3
  5. package/dist/{IconAiDescription-fQ_B1UGe.js → IconAiDescription-C-OGiP7T.js} +3 -3
  6. package/dist/{IconAlignSpaceEven-B2UIi1ao.js → IconAlignSpaceEven-CTm_RFZr.js} +3 -3
  7. package/dist/{IconApplePay-DS6fQdV_.js → IconApplePay-BEECKvxd.js} +3 -3
  8. package/dist/{IconArrowBack-CZSCZ-Jf.js → IconArrowBack-CJYjUSAT.js} +3 -3
  9. package/dist/{IconArrowCycle-D3f38VT-.js → IconArrowCycle-B-SIKRjr.js} +3 -3
  10. package/dist/{IconArrowForward-CICM-aJ1.js → IconArrowForward-CTC_pWUJ.js} +3 -3
  11. package/dist/{IconArrowRight-CwweSeyO.js → IconArrowRight-DVgboHar.js} +3 -3
  12. package/dist/{IconArrowUp-7TI0p224.js → IconArrowUp-8yer6-rz.js} +3 -3
  13. package/dist/{IconAssignment-DQQnmJc_.js → IconAssignment-CKdgR4IZ.js} +3 -3
  14. package/dist/{IconAttachMoney-sLj77NOR.js → IconAttachMoney-BOqK4Ty3.js} +3 -3
  15. package/dist/{IconAtvAtv-bfqGL_Iq.js → IconAtvAtv-CVxNZw3x.js} +3 -3
  16. package/dist/{IconAtvDuneBuggy-CbiyQRZg.js → IconAtvDuneBuggy-ChpKK_uj.js} +3 -3
  17. package/dist/{IconAtvGoKart-BxqcGKzS.js → IconAtvGoKart-BA3-opIb.js} +3 -3
  18. package/dist/{IconAtvGolfCart-6Xwju3k6.js → IconAtvGolfCart-DIQybI94.js} +3 -3
  19. package/dist/{IconAtvSandRail-dKmA3KoG.js → IconAtvSandRail-vMg9E1B1.js} +3 -3
  20. package/dist/{IconAtvSideBySide-CVSUrX7w.js → IconAtvSideBySide-DpAgficE.js} +3 -3
  21. package/dist/{IconAtvTrailer-BB6C_WKk.js → IconAtvTrailer-DmqyaW6g.js} +3 -3
  22. package/dist/{IconAutoRenew-Bl-Obhh6.js → IconAutoRenew-PKxzoFUm.js} +3 -3
  23. package/dist/{IconAwardStar-KYYsH2ss.js → IconAwardStar-C80c-wJ9.js} +3 -3
  24. package/dist/{IconBed-BVLiRAhU.js → IconBed-D8iyGBIR.js} +3 -3
  25. package/dist/{IconBoatmartPwc-B3seLCYC.js → IconBoatmartPwc-a1AOjs7L.js} +3 -3
  26. package/dist/{IconBoatmartTrailer-BosS4Ix8.js → IconBoatmartTrailer-CprxPgWU.js} +3 -3
  27. package/dist/{IconBolt-D-BSIXex.js → IconBolt-D7tpOZMC.js} +3 -3
  28. package/dist/{IconBookmark-D3Pu86n4.js → IconBookmark-ZpQyXxtb.js} +3 -3
  29. package/dist/{IconBunkhouse-B4PaVH2y.js → IconBunkhouse-rPtR_Mct.js} +3 -3
  30. package/dist/IconCalculate-Bbp4hHOW.js +16 -0
  31. package/dist/IconCalculate-CGwDSRuU.cjs +2 -0
  32. package/dist/{IconCalendarMonth-CortoSy-.js → IconCalendarMonth-CKF3HJsX.js} +3 -3
  33. package/dist/{IconCall-DRysHKSn.js → IconCall-D6EvqV8k.js} +3 -3
  34. package/dist/{IconCallQuality-BMVs2M2s.js → IconCallQuality-FekMElKo.js} +3 -3
  35. package/dist/{IconCarRental-qvIsiGfR.js → IconCarRental-Cw5T4p4_.js} +3 -3
  36. package/dist/{IconCheck-CliQNN_D.js → IconCheck-Dmmvwu7-.js} +3 -3
  37. package/dist/{IconChevronLeft-hQC1St0W.js → IconChevronLeft-BF0qcV0B.js} +3 -3
  38. package/dist/{IconChevronRight-DVYcrzWE.js → IconChevronRight-CdE3lIbm.js} +3 -3
  39. package/dist/{IconClear-COYKsp8t.js → IconClear-YX6AUd3q.js} +3 -3
  40. package/dist/{IconClose-HSRbXCDE.js → IconClose-BKDRiJCn.js} +3 -3
  41. package/dist/{IconContract-BaV1mGEr.js → IconContract-7-9lX0ZL.js} +3 -3
  42. package/dist/{IconCrash-ClWQK2fw.js → IconCrash-Cz7QujvF.js} +3 -3
  43. package/dist/IconCycleMotorcycle-B8syyXoU.cjs +2 -0
  44. package/dist/IconCycleMotorcycle-DVRTUcId.js +21 -0
  45. package/dist/IconCycleTrailer-COTSVorR.cjs +2 -0
  46. package/dist/IconCycleTrailer-Cp2Ak9pX.js +20 -0
  47. package/dist/{IconDashboardCustomize-BJEcZ-jN.js → IconDashboardCustomize-g3VnCCx1.js} +3 -3
  48. package/dist/{IconDelete-DJwergoy.js → IconDelete-Dnyl1uzD.js} +3 -3
  49. package/dist/{IconDiamond-D34wtBhd.js → IconDiamond-sAYziqWh.js} +3 -3
  50. package/dist/{IconDirectionsBoat-ByiHuypy.js → IconDirectionsBoat-D0xl5It-.js} +3 -3
  51. package/dist/{IconDomain-CXsBLm5C.js → IconDomain-as7lGUZz.js} +3 -3
  52. package/dist/{IconDraft-qSYk5cPm.js → IconDraft-BTRj5LyI.js} +3 -3
  53. package/dist/{IconEdit-CFeDlBN2.js → IconEdit-Z8QjfAFi.js} +3 -3
  54. package/dist/{IconEngine-BLi3BThi.js → IconEngine-Nq1jLYrS.js} +3 -3
  55. package/dist/{IconEngineering-DKDW6b3b.js → IconEngineering-CDeCKiuN.js} +3 -3
  56. package/dist/{IconError-BsmS7Ido.js → IconError-CHkF1F4l.js} +3 -3
  57. package/dist/{IconExpandContent-CUz-acoJ.js → IconExpandContent-BKW1v-s1.js} +3 -3
  58. package/dist/{IconExpandLess-kI04ZTDg.js → IconExpandLess-DuwH_WmO.js} +3 -3
  59. package/dist/{IconExpandMore-BpIrNsXP.js → IconExpandMore-C-Fof15e.js} +3 -3
  60. package/dist/{IconFacebook-DiMWgcSK.js → IconFacebook-94UC5eci.js} +3 -3
  61. package/dist/{IconFavorite-CDLEUDWu.js → IconFavorite-Bi2ZLSFU.js} +3 -3
  62. package/dist/{IconFavoriteFilled--f1zeXKy.js → IconFavoriteFilled-BOzK3oQt.js} +3 -3
  63. package/dist/{IconFlag-CmppikB3.js → IconFlag-D3BdWSHX.js} +3 -3
  64. package/dist/{IconFormatBold-rtvyBotR.js → IconFormatBold-ptl4C5om.js} +3 -3
  65. package/dist/{IconFormatItalic-BlcS8gnO.js → IconFormatItalic-wjYo3E6V.js} +3 -3
  66. package/dist/{IconFormatListBulleted-BbJCNSJG.js → IconFormatListBulleted-Z4H5EHHL.js} +3 -3
  67. package/dist/{IconForum-CFa_3MsA.js → IconForum-dExYXhMs.js} +3 -3
  68. package/dist/{IconGas-rD46ubiw.js → IconGas-BeL_PidJ.js} +3 -3
  69. package/dist/{IconGavel-l3k6jtN3.js → IconGavel-b699C85e.js} +3 -3
  70. package/dist/{IconGears-CaXA9HK2.js → IconGears-DY0BIt9k.js} +3 -3
  71. package/dist/{IconGlobeLocationPin-cTdYm_5A.js → IconGlobeLocationPin-PPiJIaCW.js} +3 -3
  72. package/dist/{IconGoogle-6R7roJzd.js → IconGoogle-B1k1zKq5.js} +3 -3
  73. package/dist/{IconGooglePay-XLqJKvZe.js → IconGooglePay-CnoBw2gC.js} +3 -3
  74. package/dist/{IconGrid-BoplWzPb.js → IconGrid-DPAFjLOo.js} +3 -3
  75. package/dist/{IconHandshake-CsYF9kmp.js → IconHandshake-CF0rWfIQ.js} +3 -3
  76. package/dist/{IconHandyman-CQL-qu8p.js → IconHandyman-DqbZcABm.js} +3 -3
  77. package/dist/{IconHeight-CTAQLi2I.js → IconHeight-1sxFnuqb.js} +3 -3
  78. package/dist/{IconHelp-BEzzbWr3.js → IconHelp-BfxZeVdy.js} +3 -3
  79. package/dist/{IconInfo-BACpUpXu.js → IconInfo-ZZNZK4Fs.js} +3 -3
  80. package/dist/{IconInformation-CGYah4Eo.js → IconInformation-CQc0HSVc.js} +3 -3
  81. package/dist/{IconInsertText-C5HjwAuL.js → IconInsertText-dHM33CGA.js} +3 -3
  82. package/dist/{IconInstagram-DEPxn51x.js → IconInstagram-BbTbVTQe.js} +3 -3
  83. package/dist/{IconIosShare-jNePPJBV.js → IconIosShare-fe7iyZSt.js} +3 -3
  84. package/dist/{IconLayout-CgFL9FBD.js → IconLayout-BYkhBGPm.js} +3 -3
  85. package/dist/{IconLevellingJack-rO4KepKs.js → IconLevellingJack-CuuMfb9e.js} +3 -3
  86. package/dist/{IconLinkedIn-GWoK01li.js → IconLinkedIn-iC2pYpmX.js} +3 -3
  87. package/dist/{IconLocalShipping-Bayc9OL_.js → IconLocalShipping-sAYdRn-q.js} +3 -3
  88. package/dist/{IconLock-WfiVOWPI.js → IconLock-c8yaYnyT.js} +3 -3
  89. package/dist/{IconMail-ejl1H7D9.js → IconMail-D0yowPmX.js} +3 -3
  90. package/dist/{IconMenu-FlE3z6fX.js → IconMenu-Btzwi7Bu.js} +3 -3
  91. package/dist/{IconMoneyBag-CYq7aYjH.js → IconMoneyBag-BcZCfjrN.js} +3 -3
  92. package/dist/{IconMoreHoriz-B0mCtW1_.js → IconMoreHoriz-CYiGX78Y.js} +3 -3
  93. package/dist/{IconNotifications-Bm_gSQGu.js → IconNotifications-uBv1nZZ2.js} +3 -3
  94. package/dist/{IconOdometer-COcVC_eb.js → IconOdometer-DZASryD7.js} +3 -3
  95. package/dist/{IconOpenInNew-DFieFQIk.js → IconOpenInNew-VuTM8uiR.js} +3 -3
  96. package/dist/{IconPalette-DoDIzZJO.js → IconPalette-B78tp213.js} +3 -3
  97. package/dist/{IconPaypal-CX6Z2rvX.js → IconPaypal-z7u9aPLj.js} +3 -3
  98. package/dist/{IconPerson-CK0AXlS_.js → IconPerson-DWwdRmJX.js} +3 -3
  99. package/dist/{IconPersonSearch-Da5EdDrS.js → IconPersonSearch-4ESzm5yH.js} +3 -3
  100. package/dist/{IconPhotoCamera-DZHI-Yb7.js → IconPhotoCamera-Drkhsfpi.js} +3 -3
  101. package/dist/{IconPinterest-B3UM6t9-.js → IconPinterest-BhgYE6Fc.js} +3 -3
  102. package/dist/{IconPlayArrow-CR7bXHC8.js → IconPlayArrow-ztNUkoji.js} +3 -3
  103. package/dist/{IconPolicy-CzN-v54O.js → IconPolicy-DrcQUdvI.js} +3 -3
  104. package/dist/{IconPower-C5MJihEZ.js → IconPower-BISw4q1i.js} +3 -3
  105. package/dist/{IconPowerOff-BziDMScz.js → IconPowerOff-D94o_eIX.js} +3 -3
  106. package/dist/{IconPriorityHigh-Bv-j3DaQ.js → IconPriorityHigh-DzCnK1QW.js} +3 -3
  107. package/dist/{IconRemove-Bo4RUocr.js → IconRemove-gGo2PMeX.js} +3 -3
  108. package/dist/{IconRequestQuote-BUNyScQ-.js → IconRequestQuote-CWfytYvA.js} +3 -3
  109. package/dist/{IconResetWrench-DCcBmojh.js → IconResetWrench-B0tYLDcb.js} +3 -3
  110. package/dist/{IconRoad-BGTu-WPJ.js → IconRoad-m4Orr44c.js} +3 -3
  111. package/dist/{IconRoundedCorner-DycjfuJj.js → IconRoundedCorner-CqdpAVGU.js} +3 -3
  112. package/dist/{IconRuler-Da8zNDvf.js → IconRuler-C8SSjTfX.js} +3 -3
  113. package/dist/{IconRvClassA-D2-lug19.js → IconRvClassA-CFQOw02-.js} +3 -3
  114. package/dist/{IconRvClassB-Coe3FpBI.js → IconRvClassB-p-03DBol.js} +3 -3
  115. package/dist/{IconRvClassC-DWnLqMGg.js → IconRvClassC-BP5Zzlj_.js} +3 -3
  116. package/dist/{IconRvFifthWheel-CB_mQ-tO.js → IconRvFifthWheel-BMGxt3_M.js} +3 -3
  117. package/dist/{IconRvFishHouse-Cs2fm3r1.js → IconRvFishHouse-C7iNMr-3.js} +3 -3
  118. package/dist/{IconRvParkModel-D4S_iYTG.js → IconRvParkModel-l4Rx5P9F.js} +3 -3
  119. package/dist/{IconRvPopUpCamper-CW47dgll.js → IconRvPopUpCamper-BY6aLEic.js} +3 -3
  120. package/dist/{IconRvTravelTrailer-CC48bci7.js → IconRvTravelTrailer-FstodwFk.js} +3 -3
  121. package/dist/{IconRvTruckCamper-EoEVfaJM.js → IconRvTruckCamper-lLLE86pz.js} +3 -3
  122. package/dist/{IconSailing-CPcgnYwx.js → IconSailing-svTfDLn9.js} +3 -3
  123. package/dist/{IconSchool-3Dy70s11.js → IconSchool-CUB4fiMX.js} +3 -3
  124. package/dist/{IconSearch-C8WeOYws.js → IconSearch-QZW19aza.js} +3 -3
  125. package/dist/{IconSeating-D7B47LU4.js → IconSeating-B3MAIZkv.js} +3 -3
  126. package/dist/{IconSell-B95iGdOh.js → IconSell-CG2i7EOI.js} +3 -3
  127. package/dist/{IconSensors-Ckv6BEOK.js → IconSensors-BVBTJDAv.js} +3 -3
  128. package/dist/{IconSettings-CLrLZmQs.js → IconSettings-BGJv8ylA.js} +3 -3
  129. package/dist/{IconShare-CH2w2udo.js → IconShare-DLN_ze1T.js} +3 -3
  130. package/dist/{IconShieldCheck-BBHcsJhF.js → IconShieldCheck-DwGlL83P.js} +3 -3
  131. package/dist/{IconShoppingCart-_CKPKJ12.js → IconShoppingCart-BWcDIQ0t.js} +3 -3
  132. package/dist/{IconSleeps-CTzXW2RS.js → IconSleeps-Bl1OHp_d.js} +3 -3
  133. package/dist/{IconSms-C_jULP6X.js → IconSms-DXF4Rvv5.js} +3 -3
  134. package/dist/{IconSnowflake-DYpTwl2q.js → IconSnowflake-3DOCBRxO.js} +3 -3
  135. package/dist/{IconStar-CR0UA_S9.js → IconStar-y4w1Q_Ly.js} +3 -3
  136. package/dist/{IconStarFilled-DEnQm6s8.js → IconStarFilled-h3V6lcA1.js} +3 -3
  137. package/dist/{IconStarHalf-DZqwFVlC.js → IconStarHalf-CD3Otd__.js} +3 -3
  138. package/dist/{IconSummarize-BwU7xViX.js → IconSummarize-DQAFpTrk.js} +3 -3
  139. package/dist/{IconSwapHoriz-B7Nu99ui.js → IconSwapHoriz-C3usXzhR.js} +3 -3
  140. package/dist/{IconSwapVert-D83OnTLJ.js → IconSwapVert-CODa7if1.js} +3 -3
  141. package/dist/{IconThreeDRotation-WuabFIaS.js → IconThreeDRotation-Dt-qEsTU.js} +3 -3
  142. package/dist/{IconThumbUp-DwPs1Aog.js → IconThumbUp-2aoi8Hn6.js} +3 -3
  143. package/dist/{IconTrendingDown-CKqQl7o7.js → IconTrendingDown-Cc1jUDOB.js} +3 -3
  144. package/dist/{IconTrophy-DRcIPW-F.js → IconTrophy-CWU4189G.js} +3 -3
  145. package/dist/{IconTune-CXVj1kqb.js → IconTune-PtcGFHGO.js} +3 -3
  146. package/dist/{IconTwitter-B5AwI_-2.js → IconTwitter-Q7-VmjkP.js} +3 -3
  147. package/dist/{IconUmbrella-BWmv4GFi.js → IconUmbrella-B_1l6UAu.js} +3 -3
  148. package/dist/{IconVerified-BMRocsAd.js → IconVerified-BCiRYMzp.js} +3 -3
  149. package/dist/{IconVideocam-D5eUdBxR.js → IconVideocam-TZ4vpxTp.js} +3 -3
  150. package/dist/{IconViewInAr-CvR2gh_r.js → IconViewInAr-Dn4BjPYu.js} +3 -3
  151. package/dist/{IconVisibility-BlzyaCVD.js → IconVisibility-nxEIwt29.js} +3 -3
  152. package/dist/{IconVolumeOff-DB757krU.js → IconVolumeOff-D_ASm6Jk.js} +3 -3
  153. package/dist/{IconVolumeOn-CYf77UaC.js → IconVolumeOn-CTVNBoFQ.js} +3 -3
  154. package/dist/{IconWarehouse-DIRQdX8P.js → IconWarehouse-DP-BJpYG.js} +3 -3
  155. package/dist/{IconWarning-n_GTsWOM.js → IconWarning-DcYnbH1n.js} +3 -3
  156. package/dist/{IconWater-DFV09TyV.js → IconWater-Bh1ru5aW.js} +3 -3
  157. package/dist/{IconWeight-Cq12caT_.js → IconWeight-DfxHx8iL.js} +3 -3
  158. package/dist/{IconWidth-DtPjsKm8.js → IconWidth-E4u3XnEj.js} +3 -3
  159. package/dist/{IconWorkspacePremium-_Olggt_G.js → IconWorkspacePremium-Cn2NhzIu.js} +3 -3
  160. package/dist/{IconWrench-C2MHGxho.js → IconWrench-DHpCQriM.js} +3 -3
  161. package/dist/{IconYoutube-C8cHj1uF.js → IconYoutube-DHlDGTQp.js} +3 -3
  162. package/dist/css/reset.css +2 -2
  163. package/dist/css/utilities-base.css +67 -38
  164. package/dist/css/utilities-responsive.css +428 -312
  165. package/dist/css/variables.css +6 -0
  166. package/dist/logo-aero-CkTVffxb.js +17 -0
  167. package/dist/logo-aero-Z-V0eOLB.cjs +2 -0
  168. package/dist/logo-atv-BC9pKXBl.js +21 -0
  169. package/dist/logo-atv-xQMzut2h.cjs +2 -0
  170. package/dist/logo-boatmart-B9upxiMl.cjs +2 -0
  171. package/dist/logo-boatmart-DroAqtiq.js +16 -0
  172. package/dist/logo-cycle-c9schUUY.cjs +2 -0
  173. package/dist/logo-cycle-iWCyRwSL.js +21 -0
  174. package/dist/logo-equipment-3VYa6YcW.cjs +2 -0
  175. package/dist/logo-equipment-BoqO9oqu.js +17 -0
  176. package/dist/logo-pwc-BBFWrkvE.js +21 -0
  177. package/dist/logo-pwc-DhXtaTyu.cjs +2 -0
  178. package/dist/logo-rv-BRXxuciP.cjs +2 -0
  179. package/dist/logo-rv-DzHxIw2C.js +21 -0
  180. package/dist/logo-snow-Dzpaeho2.js +17 -0
  181. package/dist/logo-snow-PVobISvF.cjs +2 -0
  182. package/dist/logo-truck-DE0J4OIJ.cjs +2 -0
  183. package/dist/logo-truck-MUfLC0tr.js +21 -0
  184. package/dist/mark-aero-CFjGMjbx.cjs +2 -0
  185. package/dist/mark-aero-D8m3JDkS.js +23 -0
  186. package/dist/mark-atv-1Vppojls.js +19 -0
  187. package/dist/mark-atv-BhRn5mUA.cjs +2 -0
  188. package/dist/mark-boatmart-Bmkv3dOs.cjs +2 -0
  189. package/dist/mark-boatmart-b77RvD0c.js +16 -0
  190. package/dist/mark-cycle-BFxZOD4K.js +23 -0
  191. package/dist/mark-cycle-QCLSEZTF.cjs +2 -0
  192. package/dist/mark-equipment-BbnRZ0vl.js +19 -0
  193. package/dist/mark-equipment-ThuZOvf6.cjs +2 -0
  194. package/dist/mark-pwc-CQWDRntw.cjs +2 -0
  195. package/dist/mark-pwc-CQa98Z9S.js +21 -0
  196. package/dist/mark-rv-BtQWH4-a.cjs +2 -0
  197. package/dist/mark-rv-DY1wwuIO.js +21 -0
  198. package/dist/mark-snow-BEUxteW6.js +23 -0
  199. package/dist/mark-snow-Bek2T8IY.cjs +2 -0
  200. package/dist/mark-truck-BsOOC6Lx.cjs +2 -0
  201. package/dist/mark-truck-CUaX6FYM.js +19 -0
  202. package/dist/tide-design-system.cjs +2 -2
  203. package/dist/tide-design-system.css +1 -0
  204. package/dist/tide-design-system.esm.d.ts +0 -2031
  205. package/dist/tide-design-system.esm.js +1447 -1133
  206. package/dist/utilities/realm.ts +17 -0
  207. package/dist/utilities/storybook.ts +0 -2
  208. package/dist/utilities/viewport.ts +2 -2
  209. package/index.ts +8 -0
  210. package/package.json +1 -1
  211. package/src/assets/svg/branding/logo/logo-aero.svg +9 -0
  212. package/src/assets/svg/branding/logo/logo-atv.svg +3 -0
  213. package/src/assets/svg/branding/logo/logo-boatmart.svg +18 -0
  214. package/src/assets/svg/branding/logo/logo-cycle.svg +3 -0
  215. package/src/assets/svg/branding/logo/logo-equipment.svg +11 -0
  216. package/src/assets/svg/branding/logo/logo-pwc.svg +3 -0
  217. package/src/assets/svg/branding/logo/logo-rv.svg +3 -0
  218. package/src/assets/svg/branding/logo/logo-snow.svg +12 -0
  219. package/src/assets/svg/branding/logo/logo-truck.svg +3 -0
  220. package/src/assets/svg/branding/mark/mark-aero.svg +4 -0
  221. package/src/assets/svg/branding/mark/mark-atv.svg +3 -0
  222. package/src/assets/svg/branding/mark/mark-boatmart.svg +17 -0
  223. package/src/assets/svg/branding/mark/mark-cycle.svg +4 -0
  224. package/src/assets/svg/branding/mark/mark-equipment.svg +3 -0
  225. package/src/assets/svg/branding/mark/mark-pwc.svg +3 -0
  226. package/src/assets/svg/branding/mark/mark-rv.svg +3 -0
  227. package/src/assets/svg/branding/mark/mark-snow.svg +4 -0
  228. package/src/assets/svg/branding/mark/mark-truck.svg +3 -0
  229. package/src/assets/svg/icons/realm/cycle/IconCycleMotorcycle.svg +4 -0
  230. package/src/assets/svg/icons/realm/cycle/IconCycleTrailer.svg +3 -0
  231. package/src/components/TideChipAction.vue +23 -2
  232. package/src/components/TideIcon.vue +8 -6
  233. package/src/components/TideModal.vue +14 -2
  234. package/src/components/TideRealmLogo.vue +71 -0
  235. package/src/components/TideSheet.vue +11 -2
  236. package/src/components/TideTabs.vue +4 -9
  237. package/src/stories/TideChipAction.stories.ts +10 -4
  238. package/src/stories/TideModal.stories.ts +0 -4
  239. package/src/stories/TideRealmLogo.stories.ts +25 -0
  240. package/src/stories/TideSheet.stories.ts +0 -1
  241. package/src/types/Icon.ts +4 -0
  242. package/src/types/RealmLogo.ts +38 -0
  243. package/src/utilities/realm.ts +17 -0
  244. package/src/utilities/viewport.ts +2 -2
  245. package/tests/TideRealmLogo.spec.ts +58 -0
  246. package/dist/style.css +0 -1
@@ -0,0 +1,71 @@
1
+ <script setup lang="ts">
2
+ import { computed, defineAsyncComponent, markRaw, ref, watch } from 'vue';
3
+
4
+ import { LOGO_HEIGHT, LOGO_LARGE_WIDTH, LOGO_MARK_WIDTH, SIZE_LOGO } from '@/types/RealmLogo';
5
+ import { CSS } from '@/types/Styles';
6
+ import { getRealmKeyFromRealm } from '@/utilities/realm';
7
+
8
+ import type { Realm } from '@/types/Realm';
9
+ import type { SizeLogo } from '@/types/RealmLogo';
10
+ import type { Component } from 'vue';
11
+
12
+ type Props = {
13
+ /** Determines the size of the logo or mark */
14
+ size: SizeLogo;
15
+
16
+ /** Sets the realm for this logo instance */
17
+ realm: Realm;
18
+ };
19
+ const props = defineProps<Props>();
20
+
21
+ const innerSVG = ref<Component>();
22
+
23
+ const logoWidth = computed<number>(() => {
24
+ if (props.size === SIZE_LOGO.MARK) return LOGO_MARK_WIDTH[getRealmKeyFromRealm(props.realm)];
25
+ const fullLogoWidth = LOGO_LARGE_WIDTH[getRealmKeyFromRealm(props.realm)];
26
+ if (props.size === SIZE_LOGO.SMALL) {
27
+ const shrinkFactor = LOGO_HEIGHT.SMALL / LOGO_HEIGHT.LARGE;
28
+ return Math.round(fullLogoWidth * shrinkFactor);
29
+ } else {
30
+ return fullLogoWidth;
31
+ }
32
+ });
33
+
34
+ const logoHeight = computed<number>(() => (props.size === SIZE_LOGO.SMALL ? LOGO_HEIGHT.SMALL : LOGO_HEIGHT.LARGE));
35
+
36
+ watch(
37
+ () => [props.size, props.realm],
38
+ async () => {
39
+ const component = defineAsyncComponent(() => {
40
+ if (props.size === SIZE_LOGO.MARK)
41
+ return import(`../assets/svg/branding/mark/mark-${props.realm}.svg?component`);
42
+ else return import(`../assets/svg/branding/logo/logo-${props.realm}.svg?component`);
43
+ });
44
+ innerSVG.value = markRaw(component);
45
+ },
46
+ { immediate: true }
47
+ );
48
+ </script>
49
+
50
+ <template>
51
+ <div
52
+ :class="['tide-realm-logo']"
53
+ :style="{
54
+ '--tide-logo-width': `${logoWidth}px`,
55
+ '--tide-logo-height': `${logoHeight}px`,
56
+ }"
57
+ >
58
+ <Component
59
+ :class="[CSS.DISPLAY.BLOCK]"
60
+ :is="innerSVG"
61
+ v-if="innerSVG"
62
+ />
63
+ </div>
64
+ </template>
65
+
66
+ <style>
67
+ .tide-realm-logo {
68
+ width: var(--tide-logo-width);
69
+ height: var(--tide-logo-height);
70
+ }
71
+ </style>
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" setup>
2
- import { onBeforeMount, onMounted, ref, watch } from 'vue';
2
+ import { onBeforeMount, onBeforeUnmount, onMounted, ref, watch } from 'vue';
3
3
 
4
4
  import TideButtonIcon from '@/components/TideButtonIcon.vue';
5
5
  import TideDivider from '@/components/TideDivider.vue';
@@ -11,6 +11,7 @@
11
11
  import type { Ref } from 'vue';
12
12
 
13
13
  type Props = {
14
+ /** Controls display of the back button. */
14
15
  isBackButton?: boolean;
15
16
  };
16
17
 
@@ -30,10 +31,12 @@
30
31
 
31
32
  const triggerNativeDialogOpen = () => {
32
33
  dialogElement.value?.showModal();
34
+ setScrollLock(true);
33
35
  };
34
36
 
35
37
  const triggerNativeDialogClose = () => {
36
38
  dialogElement.value?.close();
39
+ setScrollLock(false);
37
40
  };
38
41
 
39
42
  const close = () => {
@@ -56,7 +59,6 @@
56
59
  } else {
57
60
  triggerNativeDialogClose();
58
61
  }
59
- setScrollLock(isOpen.value);
60
62
  });
61
63
 
62
64
  onBeforeMount(() => {
@@ -68,6 +70,13 @@
68
70
  triggerNativeDialogOpen();
69
71
  }
70
72
  });
73
+
74
+ onBeforeUnmount(() => {
75
+ if (isOpen.value) {
76
+ isOpen.value = false;
77
+ triggerNativeDialogClose();
78
+ }
79
+ });
71
80
  </script>
72
81
 
73
82
  <template>
@@ -23,12 +23,13 @@
23
23
  <div :class="['tide-tabs', CSS.DISPLAY.FLEX, CSS.BORDER.BOTTOM.TWO, CSS.BORDER.COLOR.LOW]">
24
24
  <TideCarousel :is-floating="true">
25
25
  <li
26
+ :class="[CSS.PADDING.X.HALF]"
26
27
  :key="tab.label"
27
28
  v-for="(tab, index) in tabs"
28
29
  >
29
30
  <TideLink
30
31
  :class="[
31
- index === currentTab ? CSS.FONT.COLOR.SURFACE.BRAND : CSS.FONT.COLOR.SURFACE.VARIANT,
32
+ index === currentTab ? [CSS.FONT.COLOR.SURFACE.BRAND] : [CSS.FONT.COLOR.SURFACE.VARIANT],
32
33
  CSS.PADDING.BOTTOM.ONE,
33
34
  CSS.FONT.ROLE.LABEL_1,
34
35
  CSS.WHITESPACE_WRAP.OFF,
@@ -38,7 +39,7 @@
38
39
  :subtle="true"
39
40
  @click="handleClick(index)"
40
41
  />
41
- <div :class="['rounded-border', index === currentTab && 'active']" />
42
+ <div :class="['rounded-border', CSS.MARGIN.X.HALF, index === currentTab && [CSS.BG.PRIMARY]]" />
42
43
  </li>
43
44
  </TideCarousel>
44
45
  </div>
@@ -46,13 +47,7 @@
46
47
 
47
48
  <style scoped>
48
49
  .rounded-border {
50
+ height: 4px;
49
51
  border-radius: var(--tide-radius-full) var(--tide-radius-full) 0 0;
50
- border-top-width: 4px;
51
- border-top-style: solid;
52
- border-color: transparent;
53
- }
54
-
55
- .active {
56
- border-color: var(--tide-on-surface-brand);
57
52
  }
58
53
  </style>
@@ -1,5 +1,6 @@
1
1
  import TideChipAction from '@/components/TideChipAction.vue';
2
2
  import * as STANDARD_ELEMENT from '@/types/Element';
3
+ import * as STANDARD_ICON from '@/types/Icon';
3
4
  import {
4
5
  argTypeBooleanUnrequired,
5
6
  click,
@@ -12,6 +13,7 @@ import {
12
13
  type Args = InstanceType<typeof TideChipAction>['$props'];
13
14
 
14
15
  const ELEMENT = prependNoneAsUndefined(STANDARD_ELEMENT.ELEMENT);
16
+ const ICON = prependNoneAsUndefined(STANDARD_ICON.ICON);
15
17
 
16
18
  const render = (args: Args) => ({
17
19
  components: { TideChipAction },
@@ -28,7 +30,6 @@ export default {
28
30
  dataTrack,
29
31
  element: {
30
32
  ...formatArgType({ ELEMENT }),
31
- description: 'HTML tag type',
32
33
  table: {
33
34
  defaultValue: { summary: 'LINK' },
34
35
  type: { summary: 'Element' },
@@ -36,21 +37,25 @@ export default {
36
37
  },
37
38
  href: {
38
39
  control: 'text',
39
- description: 'URL to navigate to on click',
40
40
  if: { arg: 'element', eq: ELEMENT.LINK },
41
41
  table: {
42
42
  defaultValue: { summary: 'None' },
43
43
  type: { summary: 'string' },
44
44
  },
45
45
  },
46
+ iconLeading: {
47
+ ...formatArgType({ ICON }),
48
+ table: {
49
+ category: 'Props',
50
+ defaultValue: { summary: 'SEARCH' },
51
+ },
52
+ },
46
53
  isNewTab: {
47
54
  ...argTypeBooleanUnrequired,
48
- description: 'Determines whether to target a new browser tab',
49
55
  if: { arg: 'element', eq: ELEMENT.LINK },
50
56
  },
51
57
  label: {
52
58
  control: 'text',
53
- description: 'Chip text',
54
59
  table: {
55
60
  defaultValue: { summary: 'None' },
56
61
  type: { summary: 'string' },
@@ -62,6 +67,7 @@ export default {
62
67
  dataTrack: '',
63
68
  element: undefined,
64
69
  href: 'https://www.sample.com',
70
+ iconLeading: undefined,
65
71
  isNewTab: undefined,
66
72
  label: 'Demo',
67
73
  },
@@ -169,20 +169,17 @@ export default {
169
169
  },
170
170
  isBackButton: {
171
171
  ...argTypeBooleanUnrequired,
172
- description: 'Determines whether the back button is displayed',
173
172
  table: {
174
173
  defaultValue: { summary: 'False' },
175
174
  },
176
175
  },
177
176
  isDismissible: {
178
177
  ...argTypeBooleanUnrequired,
179
- description: 'Determines whether the close button is displayed',
180
178
  table: {
181
179
  defaultValue: { summary: 'False' },
182
180
  },
183
181
  },
184
182
  title: {
185
- description: 'Modal title',
186
183
  table: {
187
184
  defaultValue: { summary: 'None' },
188
185
  },
@@ -197,7 +194,6 @@ export default {
197
194
  },
198
195
  },
199
196
  width: {
200
- description: 'Applies width to Modal<br />(include units)',
201
197
  table: {
202
198
  defaultValue: { summary: 'None' },
203
199
  },
@@ -0,0 +1,25 @@
1
+ import TideRealmLogo from '@/components/TideRealmLogo.vue';
2
+ import { REALM } from '@/types/Realm';
3
+ import { SIZE_LOGO } from '@/types/RealmLogo';
4
+ import { formatArgType, parameters } from '@/utilities/storybook';
5
+
6
+ export default {
7
+ argTypes: {
8
+ realm: {
9
+ ...formatArgType({ REALM }),
10
+ },
11
+ size: {
12
+ ...formatArgType({ SIZE_LOGO }),
13
+ },
14
+ },
15
+ args: {
16
+ realm: REALM.RV,
17
+ size: SIZE_LOGO.LARGE,
18
+ },
19
+ component: TideRealmLogo,
20
+ parameters,
21
+ tags: ['autodocs'],
22
+ title: 'Components/TideRealmLogo',
23
+ };
24
+
25
+ export const Demo = {};
@@ -115,7 +115,6 @@ export default {
115
115
  },
116
116
  isBackButton: {
117
117
  ...argTypeBooleanUnrequired,
118
- description: 'Determines whether the back button is displayed',
119
118
  table: {
120
119
  defaultValue: { summary: 'False' },
121
120
  },
package/src/types/Icon.ts CHANGED
@@ -153,6 +153,10 @@ export const ICON_REALM = {
153
153
  PWC: 'boatmart-pwc',
154
154
  TRAILER: 'boatmart-trailer',
155
155
  },
156
+ CYCLE: {
157
+ MOTORCYCLE: 'cycle-motorcycle',
158
+ TRAILER: 'cycle-trailer',
159
+ },
156
160
  RV: {
157
161
  CLASS_A: 'rv-class-a',
158
162
  CLASS_B: 'rv-class-b',
@@ -0,0 +1,38 @@
1
+ import type { RealmKey } from '@/types/Realm';
2
+
3
+ export const SIZE_LOGO = {
4
+ LARGE: 'large',
5
+ MARK: 'mark',
6
+ SMALL: 'small',
7
+ } as const;
8
+ type SizeLogoKey = keyof typeof SIZE_LOGO;
9
+ export type SizeLogo = (typeof SIZE_LOGO)[SizeLogoKey];
10
+
11
+ export const LOGO_HEIGHT = {
12
+ LARGE: 32,
13
+ SMALL: 24,
14
+ };
15
+
16
+ export const LOGO_LARGE_WIDTH: Record<RealmKey, number> = {
17
+ AERO: 186,
18
+ ATV: 192,
19
+ BOATMART: 152,
20
+ CYCLE: 169,
21
+ EQUIPMENT: 112,
22
+ PWC: 177,
23
+ RV: 169,
24
+ SNOW: 150,
25
+ TRUCK: 185,
26
+ } as const;
27
+
28
+ export const LOGO_MARK_WIDTH: Record<RealmKey, number> = {
29
+ AERO: 32,
30
+ ATV: 32,
31
+ BOATMART: 33,
32
+ CYCLE: 32,
33
+ EQUIPMENT: 37,
34
+ PWC: 32,
35
+ RV: 32,
36
+ SNOW: 32,
37
+ TRUCK: 32,
38
+ } as const;
@@ -0,0 +1,17 @@
1
+ import { REALM } from '@/types/Realm';
2
+
3
+ import type { Realm, RealmKey } from '@/types/Realm';
4
+
5
+ export const getRealmKeyFromRealm = (realm: Realm): RealmKey => {
6
+ const entries = Object.entries(REALM) as [RealmKey, Realm][];
7
+
8
+ const match = entries.find((entry): entry is [RealmKey, Realm] => {
9
+ return entry[1] === realm;
10
+ });
11
+
12
+ if (!match) {
13
+ throw new Error(`Mapping for ${realm} not found`);
14
+ }
15
+
16
+ return match[0];
17
+ };
@@ -34,8 +34,8 @@ export const setScrollLock = async (isLocked: boolean) => {
34
34
  // body.classList.remove(BODY_LOCK_CLASS);
35
35
 
36
36
  body.style.removeProperty('inset');
37
- body.style.removeProperty('marginTop');
38
- body.style.removeProperty('overflowY');
37
+ body.style.removeProperty('margin-top');
38
+ body.style.removeProperty('overflow-y');
39
39
  body.style.removeProperty('position');
40
40
  body.style.removeProperty('--saved-scroll-y');
41
41
 
@@ -0,0 +1,58 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { describe, expect, it } from 'vitest';
4
+
5
+ import { LOGO_LARGE_WIDTH, LOGO_MARK_WIDTH } from '@/types/RealmLogo.ts';
6
+
7
+ const BRANDING_DIR = path.resolve(__dirname, '../src/assets/svg/branding');
8
+ const LOGO_DIR = path.join(BRANDING_DIR, 'logo');
9
+ const MARK_DIR = path.join(BRANDING_DIR, 'mark');
10
+
11
+ function getViewBoxWidth(content: string): number | null {
12
+ const viewBoxMatch = content.match(/viewBox\s*=\s*["']0\s+0\s+(\d+\.?\d*)\s+\d+\.?\d*["']/i);
13
+ return viewBoxMatch ? parseFloat(viewBoxMatch[1]) : null;
14
+ }
15
+
16
+ describe('Realm Logo Constant Validation', () => {
17
+ const realms = Object.keys(LOGO_LARGE_WIDTH) as (keyof typeof LOGO_LARGE_WIDTH)[];
18
+
19
+ describe('Full Logos', () => {
20
+ realms.forEach((realm) => {
21
+ const fileName = `logo-${realm.toLowerCase()}.svg`;
22
+ const filePath = path.join(LOGO_DIR, fileName);
23
+
24
+ it(`should match the viewBox width in ${fileName}`, () => {
25
+ if (!fs.existsSync(filePath)) {
26
+ throw new Error(`SVG file missing: ${filePath}`);
27
+ }
28
+
29
+ const content = fs.readFileSync(filePath, 'utf8');
30
+ const vbWidth = getViewBoxWidth(content);
31
+
32
+ expect(vbWidth, `Could not parse viewBox in ${fileName}`).not.toBeNull();
33
+
34
+ expect(LOGO_LARGE_WIDTH[realm], `LOGO_LARGE_WIDTH[${realm}] does not match ${fileName}`).toBe(vbWidth);
35
+ });
36
+ });
37
+ });
38
+
39
+ describe('Logo Marks', () => {
40
+ realms.forEach((realm) => {
41
+ const fileName = `mark-${realm.toLowerCase()}.svg`;
42
+ const filePath = path.join(MARK_DIR, fileName);
43
+
44
+ it(`should match the viewBox width in ${fileName}`, () => {
45
+ if (!fs.existsSync(filePath)) {
46
+ throw new Error(`SVG file missing: ${filePath}`);
47
+ }
48
+
49
+ const content = fs.readFileSync(filePath, 'utf8');
50
+ const vbWidth = getViewBoxWidth(content);
51
+
52
+ expect(vbWidth, `Could not parse viewBox in ${fileName}`).not.toBeNull();
53
+
54
+ expect(LOGO_MARK_WIDTH[realm], `LOGO_MARK_WIDTH[${realm}] does not match ${fileName}`).toBe(vbWidth);
55
+ });
56
+ });
57
+ });
58
+ });