tide-design-system 2.3.1 → 2.4.1

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 (666) hide show
  1. package/dist/IconAccountBalance-B9rJ09ax.js +16 -0
  2. package/dist/IconAccountBalance-t66sPb0V.cjs +2 -0
  3. package/dist/IconAcute-9dHrmblT.js +16 -0
  4. package/dist/IconAcute-kA8NXjsF.cjs +2 -0
  5. package/dist/IconAdd-BsJiPHYa.js +16 -0
  6. package/dist/IconAdd-Bwkom_hG.cjs +2 -0
  7. package/dist/IconAiDescription-CFPMCDKK.cjs +2 -0
  8. package/dist/IconAiDescription-fQ_B1UGe.js +20 -0
  9. package/dist/IconAlignSpaceEven-B2UIi1ao.js +16 -0
  10. package/dist/IconAlignSpaceEven-DKSbfzb-.cjs +2 -0
  11. package/dist/IconApplePay-BBSCGFjG.cjs +2 -0
  12. package/dist/IconApplePay-DS6fQdV_.js +16 -0
  13. package/dist/IconArrowBack-CUHuJHxp.cjs +2 -0
  14. package/dist/IconArrowBack-CZSCZ-Jf.js +16 -0
  15. package/dist/IconArrowCycle-D3f38VT-.js +16 -0
  16. package/dist/IconArrowCycle-R7Q8EDQJ.cjs +2 -0
  17. package/dist/IconArrowForward-09bz9o1h.cjs +2 -0
  18. package/dist/IconArrowForward-CICM-aJ1.js +16 -0
  19. package/dist/IconArrowRight-CwweSeyO.js +16 -0
  20. package/dist/IconArrowRight-Np65RzRK.cjs +2 -0
  21. package/dist/IconArrowUp-7TI0p224.js +16 -0
  22. package/dist/IconArrowUp-DrhwTcVn.cjs +2 -0
  23. package/dist/IconAssignment-DGD2WaCW.cjs +2 -0
  24. package/dist/IconAssignment-DQQnmJc_.js +16 -0
  25. package/dist/IconAttachMoney-DFObJ1fx.cjs +2 -0
  26. package/dist/IconAttachMoney-sLj77NOR.js +16 -0
  27. package/dist/IconAtvAtv-DubJwTjK.cjs +2 -0
  28. package/dist/IconAtvAtv-bfqGL_Iq.js +20 -0
  29. package/dist/IconAtvDuneBuggy-CbiyQRZg.js +20 -0
  30. package/dist/IconAtvDuneBuggy-CjN1kUXQ.cjs +2 -0
  31. package/dist/IconAtvGoKart-BxqcGKzS.js +20 -0
  32. package/dist/IconAtvGoKart-C6lX6Uq4.cjs +2 -0
  33. package/dist/IconAtvGolfCart-6Xwju3k6.js +20 -0
  34. package/dist/IconAtvGolfCart-DWAt3bvk.cjs +2 -0
  35. package/dist/IconAtvSandRail-DGwmb5aU.cjs +2 -0
  36. package/dist/IconAtvSandRail-dKmA3KoG.js +20 -0
  37. package/dist/IconAtvSideBySide-CVSUrX7w.js +20 -0
  38. package/dist/IconAtvSideBySide-OvuV0qFX.cjs +2 -0
  39. package/dist/IconAtvTrailer-BB6C_WKk.js +20 -0
  40. package/dist/IconAtvTrailer-D_aI1qUx.cjs +2 -0
  41. package/dist/IconAutoRenew-Bl-Obhh6.js +16 -0
  42. package/dist/IconAutoRenew-CRnGvhzj.cjs +2 -0
  43. package/dist/IconAwardStar-Dx2metNr.cjs +2 -0
  44. package/dist/IconAwardStar-KYYsH2ss.js +16 -0
  45. package/dist/IconBed-BVLiRAhU.js +16 -0
  46. package/dist/IconBed-o4YHr8QY.cjs +2 -0
  47. package/dist/IconBoatmartPwc-B3seLCYC.js +20 -0
  48. package/dist/IconBoatmartPwc-BKltWtRW.cjs +2 -0
  49. package/dist/IconBoatmartTrailer-BosS4Ix8.js +20 -0
  50. package/dist/IconBoatmartTrailer-D3firMg5.cjs +2 -0
  51. package/dist/IconBolt-BTeYzS6k.cjs +2 -0
  52. package/dist/IconBolt-D-BSIXex.js +16 -0
  53. package/dist/IconBookmark-CitAJpUy.cjs +2 -0
  54. package/dist/IconBookmark-D3Pu86n4.js +16 -0
  55. package/dist/IconBunkhouse-B1covD1i.cjs +2 -0
  56. package/dist/IconBunkhouse-B4PaVH2y.js +16 -0
  57. package/dist/IconCalendarMonth-CortoSy-.js +16 -0
  58. package/dist/IconCalendarMonth-DfHe6Olt.cjs +2 -0
  59. package/dist/IconCall-6gUYtYnc.cjs +2 -0
  60. package/dist/IconCall-DRysHKSn.js +16 -0
  61. package/dist/IconCallQuality-BMVs2M2s.js +16 -0
  62. package/dist/IconCallQuality-DseNWKcQ.cjs +2 -0
  63. package/dist/IconCarRental-CaH55o-0.cjs +2 -0
  64. package/dist/IconCarRental-qvIsiGfR.js +16 -0
  65. package/dist/IconCheck-CliQNN_D.js +16 -0
  66. package/dist/IconCheck-DrU3Xqj-.cjs +2 -0
  67. package/dist/IconChevronLeft-CD73NwTB.cjs +2 -0
  68. package/dist/IconChevronLeft-hQC1St0W.js +16 -0
  69. package/dist/IconChevronRight-CNHvWIJQ.cjs +2 -0
  70. package/dist/IconChevronRight-DVYcrzWE.js +16 -0
  71. package/dist/IconClear-COYKsp8t.js +16 -0
  72. package/dist/IconClear-Ddi_gQQW.cjs +2 -0
  73. package/dist/IconClose-ClKjVrRR.cjs +2 -0
  74. package/dist/IconClose-HSRbXCDE.js +16 -0
  75. package/dist/IconContract-BMNU7dRH.cjs +2 -0
  76. package/dist/IconContract-BaV1mGEr.js +16 -0
  77. package/dist/IconCrash-BzlfUp1G.cjs +2 -0
  78. package/dist/IconCrash-ClWQK2fw.js +16 -0
  79. package/dist/IconDashboardCustomize-BAGay10U.cjs +2 -0
  80. package/dist/IconDashboardCustomize-BJEcZ-jN.js +16 -0
  81. package/dist/IconDelete-CUu2bGqQ.cjs +2 -0
  82. package/dist/IconDelete-DJwergoy.js +16 -0
  83. package/dist/IconDiamond-BeD6bdL2.cjs +2 -0
  84. package/dist/IconDiamond-D34wtBhd.js +16 -0
  85. package/dist/IconDirectionsBoat-B0wTnd3o.cjs +2 -0
  86. package/dist/IconDirectionsBoat-ByiHuypy.js +16 -0
  87. package/dist/IconDomain-CXsBLm5C.js +16 -0
  88. package/dist/IconDomain-Dxw5ILrL.cjs +2 -0
  89. package/dist/IconDraft-DR6EZSwa.cjs +2 -0
  90. package/dist/IconDraft-qSYk5cPm.js +16 -0
  91. package/dist/IconEdit-CFeDlBN2.js +16 -0
  92. package/dist/IconEdit-DiFJHvLw.cjs +2 -0
  93. package/dist/IconEngine-BLi3BThi.js +20 -0
  94. package/dist/IconEngine-NRbH-EHX.cjs +2 -0
  95. package/dist/IconEngineering-DKDW6b3b.js +16 -0
  96. package/dist/IconEngineering-Gu6xRPyo.cjs +2 -0
  97. package/dist/IconError-B8vfdBPh.cjs +2 -0
  98. package/dist/IconError-BsmS7Ido.js +16 -0
  99. package/dist/IconExpandContent-CUz-acoJ.js +16 -0
  100. package/dist/IconExpandContent-CZBUTFa4.cjs +2 -0
  101. package/dist/IconExpandLess-BeBqjATL.cjs +2 -0
  102. package/dist/IconExpandLess-kI04ZTDg.js +16 -0
  103. package/dist/IconExpandMore-BpIrNsXP.js +16 -0
  104. package/dist/IconExpandMore-EyD544-R.cjs +2 -0
  105. package/dist/IconFacebook-BZJRlI_M.cjs +2 -0
  106. package/dist/IconFacebook-DiMWgcSK.js +16 -0
  107. package/dist/IconFavorite-CDLEUDWu.js +16 -0
  108. package/dist/IconFavorite-DK4VZH9M.cjs +2 -0
  109. package/dist/IconFavoriteFilled--f1zeXKy.js +16 -0
  110. package/dist/IconFavoriteFilled-DEpn1cmU.cjs +2 -0
  111. package/dist/IconFlag-BztsqLLH.cjs +2 -0
  112. package/dist/IconFlag-CmppikB3.js +16 -0
  113. package/dist/IconFormatBold-D5ouQYvY.cjs +2 -0
  114. package/dist/IconFormatBold-rtvyBotR.js +16 -0
  115. package/dist/IconFormatItalic-BlcS8gnO.js +16 -0
  116. package/dist/IconFormatItalic-nERjH9_F.cjs +2 -0
  117. package/dist/IconFormatListBulleted-BbJCNSJG.js +16 -0
  118. package/dist/IconFormatListBulleted-DiO46Jg8.cjs +2 -0
  119. package/dist/IconForum-CFa_3MsA.js +16 -0
  120. package/dist/IconForum-Dw6egtlq.cjs +2 -0
  121. package/dist/IconGas-D8bshXuI.cjs +2 -0
  122. package/dist/IconGas-rD46ubiw.js +16 -0
  123. package/dist/IconGavel-CBdvVo3E.cjs +2 -0
  124. package/dist/IconGavel-l3k6jtN3.js +16 -0
  125. package/dist/IconGears-CaXA9HK2.js +16 -0
  126. package/dist/IconGears-DGMqs4S7.cjs +2 -0
  127. package/dist/IconGlobeLocationPin-DaxXQ30W.cjs +2 -0
  128. package/dist/IconGlobeLocationPin-cTdYm_5A.js +16 -0
  129. package/dist/IconGoogle-6R7roJzd.js +31 -0
  130. package/dist/IconGoogle-Yw_mSfTf.cjs +2 -0
  131. package/dist/IconGooglePay-RCvnstwi.cjs +2 -0
  132. package/dist/IconGooglePay-XLqJKvZe.js +16 -0
  133. package/dist/IconGrid-BoplWzPb.js +16 -0
  134. package/dist/IconGrid-Dt-ErvEF.cjs +2 -0
  135. package/dist/IconHandshake-CsYF9kmp.js +16 -0
  136. package/dist/IconHandshake-Cy-2UfCE.cjs +2 -0
  137. package/dist/IconHandyman-CQL-qu8p.js +16 -0
  138. package/dist/IconHandyman-Qk8vvw-k.cjs +2 -0
  139. package/dist/IconHeight-8L9ZpDnf.cjs +2 -0
  140. package/dist/IconHeight-CTAQLi2I.js +16 -0
  141. package/dist/IconHelp-BEzzbWr3.js +16 -0
  142. package/dist/IconHelp-yLLGan-o.cjs +2 -0
  143. package/dist/IconInfo-BACpUpXu.js +16 -0
  144. package/dist/IconInfo-MifqZPeF.cjs +2 -0
  145. package/dist/IconInformation-Bd6DwbOW.cjs +2 -0
  146. package/dist/IconInformation-CGYah4Eo.js +16 -0
  147. package/dist/IconInsertText-C5HjwAuL.js +16 -0
  148. package/dist/IconInsertText-DAU6Gz1h.cjs +2 -0
  149. package/dist/IconInstagram-DEPxn51x.js +16 -0
  150. package/dist/IconInstagram-V0Phqs8e.cjs +2 -0
  151. package/dist/IconIosShare-jNePPJBV.js +16 -0
  152. package/dist/IconIosShare-yDTudxOJ.cjs +2 -0
  153. package/dist/IconLayout-CgFL9FBD.js +16 -0
  154. package/dist/IconLayout-NaNwp1Mc.cjs +2 -0
  155. package/dist/IconLevellingJack-BrmBMIeS.cjs +2 -0
  156. package/dist/IconLevellingJack-rO4KepKs.js +20 -0
  157. package/dist/IconLinkedIn-B92dDFNi.cjs +2 -0
  158. package/dist/IconLinkedIn-GWoK01li.js +16 -0
  159. package/dist/IconLocalShipping-B3U2CrvK.cjs +2 -0
  160. package/dist/IconLocalShipping-Bayc9OL_.js +16 -0
  161. package/dist/IconLock-CzvHZ2QM.cjs +2 -0
  162. package/dist/IconLock-WfiVOWPI.js +16 -0
  163. package/dist/IconMail-4cFO6TUe.cjs +2 -0
  164. package/dist/IconMail-ejl1H7D9.js +16 -0
  165. package/dist/IconMenu-BV6py3Ml.cjs +2 -0
  166. package/dist/IconMenu-FlE3z6fX.js +16 -0
  167. package/dist/IconMoneyBag-CYq7aYjH.js +16 -0
  168. package/dist/IconMoneyBag-lMeRlCeA.cjs +2 -0
  169. package/dist/IconMoreHoriz-B0mCtW1_.js +16 -0
  170. package/dist/IconMoreHoriz-Fdrg4GhV.cjs +2 -0
  171. package/dist/IconNotifications-Bm_gSQGu.js +16 -0
  172. package/dist/IconNotifications-D6f_hP65.cjs +2 -0
  173. package/dist/IconOdometer-COcVC_eb.js +16 -0
  174. package/dist/IconOdometer-DFmoGuh1.cjs +2 -0
  175. package/dist/IconOpenInNew-Bh7f_m7Y.cjs +2 -0
  176. package/dist/IconOpenInNew-DFieFQIk.js +16 -0
  177. package/dist/IconPalette-ClefcQMe.cjs +2 -0
  178. package/dist/IconPalette-DoDIzZJO.js +16 -0
  179. package/dist/IconPaypal-CX6Z2rvX.js +16 -0
  180. package/dist/IconPaypal-R8-anQkg.cjs +2 -0
  181. package/dist/IconPerson-CK0AXlS_.js +16 -0
  182. package/dist/IconPerson-bq9WQXQP.cjs +2 -0
  183. package/dist/IconPersonSearch-Da5EdDrS.js +16 -0
  184. package/dist/IconPersonSearch-WGKPEFXj.cjs +2 -0
  185. package/dist/IconPhotoCamera-DZHI-Yb7.js +16 -0
  186. package/dist/IconPhotoCamera-DaJf6axF.cjs +2 -0
  187. package/dist/IconPinterest-B3UM6t9-.js +16 -0
  188. package/dist/IconPinterest-wqKY3pYh.cjs +2 -0
  189. package/dist/IconPlayArrow-BMvUb0Cs.cjs +2 -0
  190. package/dist/IconPlayArrow-CR7bXHC8.js +16 -0
  191. package/dist/IconPolicy-C6VqDhPq.cjs +2 -0
  192. package/dist/IconPolicy-CzN-v54O.js +16 -0
  193. package/dist/IconPower-C5MJihEZ.js +16 -0
  194. package/dist/IconPower-DNCBzhHN.cjs +2 -0
  195. package/dist/IconPowerOff-BziDMScz.js +16 -0
  196. package/dist/IconPowerOff-CFUkoB2U.cjs +2 -0
  197. package/dist/IconPriorityHigh-BXRK5f8v.cjs +2 -0
  198. package/dist/IconPriorityHigh-Bv-j3DaQ.js +16 -0
  199. package/dist/IconRemove-Bo4RUocr.js +16 -0
  200. package/dist/IconRemove-BoE63ZOl.cjs +2 -0
  201. package/dist/IconRequestQuote-BUNyScQ-.js +16 -0
  202. package/dist/IconRequestQuote-hNE0axaE.cjs +2 -0
  203. package/dist/IconResetWrench-BGo5LXI6.cjs +2 -0
  204. package/dist/IconResetWrench-DCcBmojh.js +16 -0
  205. package/dist/IconRoad-BGTu-WPJ.js +16 -0
  206. package/dist/IconRoad-CYQVphPa.cjs +2 -0
  207. package/dist/IconRoundedCorner-BsshtlDu.cjs +2 -0
  208. package/dist/IconRoundedCorner-DycjfuJj.js +16 -0
  209. package/dist/IconRuler-D6F7haVw.cjs +2 -0
  210. package/dist/IconRuler-Da8zNDvf.js +16 -0
  211. package/dist/IconRvClassA-CeynEY7N.cjs +2 -0
  212. package/dist/IconRvClassA-D2-lug19.js +20 -0
  213. package/dist/IconRvClassB-BGB0MmOD.cjs +2 -0
  214. package/dist/IconRvClassB-Coe3FpBI.js +20 -0
  215. package/dist/IconRvClassC-C8rS5sAC.cjs +2 -0
  216. package/dist/IconRvClassC-DWnLqMGg.js +20 -0
  217. package/dist/IconRvFifthWheel-C47iv80S.cjs +2 -0
  218. package/dist/IconRvFifthWheel-CB_mQ-tO.js +20 -0
  219. package/dist/IconRvFishHouse-B9CKlbHK.cjs +2 -0
  220. package/dist/IconRvFishHouse-Cs2fm3r1.js +20 -0
  221. package/dist/IconRvParkModel-D4S_iYTG.js +20 -0
  222. package/dist/IconRvParkModel-DZoz1TA3.cjs +2 -0
  223. package/dist/IconRvPopUpCamper-CW47dgll.js +20 -0
  224. package/dist/IconRvPopUpCamper-D7wbELIQ.cjs +2 -0
  225. package/dist/IconRvTravelTrailer-CC48bci7.js +20 -0
  226. package/dist/IconRvTravelTrailer-DGqI6COV.cjs +2 -0
  227. package/dist/IconRvTruckCamper-DFFQWh2o.cjs +2 -0
  228. package/dist/IconRvTruckCamper-EoEVfaJM.js +20 -0
  229. package/dist/IconSailing-BLsCQf5E.cjs +2 -0
  230. package/dist/IconSailing-CPcgnYwx.js +16 -0
  231. package/dist/IconSchool-3Dy70s11.js +16 -0
  232. package/dist/IconSchool-Ctkcm5E6.cjs +2 -0
  233. package/dist/IconSearch-C8WeOYws.js +16 -0
  234. package/dist/IconSearch-CqnvhCzt.cjs +2 -0
  235. package/dist/IconSeating-CIOne28A.cjs +2 -0
  236. package/dist/IconSeating-D7B47LU4.js +16 -0
  237. package/dist/IconSell-B95iGdOh.js +16 -0
  238. package/dist/IconSell-CJ88esDh.cjs +2 -0
  239. package/dist/IconSensors-CVBxtcwC.cjs +2 -0
  240. package/dist/IconSensors-Ckv6BEOK.js +16 -0
  241. package/dist/IconSettings-BWQS2Rd_.cjs +2 -0
  242. package/dist/IconSettings-CLrLZmQs.js +16 -0
  243. package/dist/IconShare-CH2w2udo.js +16 -0
  244. package/dist/IconShare-DgZxuRV0.cjs +2 -0
  245. package/dist/IconShieldCheck-BBHcsJhF.js +16 -0
  246. package/dist/IconShieldCheck-x6T3V-vS.cjs +2 -0
  247. package/dist/IconShoppingCart-BWH_PXom.cjs +2 -0
  248. package/dist/IconShoppingCart-_CKPKJ12.js +16 -0
  249. package/dist/IconSleeps-CTzXW2RS.js +16 -0
  250. package/dist/IconSleeps-CaPJzPZ7.cjs +2 -0
  251. package/dist/IconSms-C_jULP6X.js +16 -0
  252. package/dist/IconSms-NlCMrmBH.cjs +2 -0
  253. package/dist/IconSnowflake-CzkejYR_.cjs +2 -0
  254. package/dist/IconSnowflake-DYpTwl2q.js +16 -0
  255. package/dist/IconStar-BGEn0snz.cjs +2 -0
  256. package/dist/IconStar-CR0UA_S9.js +16 -0
  257. package/dist/IconStarFilled-CfYeQJic.cjs +2 -0
  258. package/dist/IconStarFilled-DEnQm6s8.js +16 -0
  259. package/dist/IconStarHalf-Bx8Qyb3h.cjs +2 -0
  260. package/dist/IconStarHalf-DZqwFVlC.js +16 -0
  261. package/dist/IconSummarize-BwU7xViX.js +16 -0
  262. package/dist/IconSummarize-lRdtNX68.cjs +2 -0
  263. package/dist/IconSwapHoriz-B-UnlgNS.cjs +2 -0
  264. package/dist/IconSwapHoriz-B7Nu99ui.js +16 -0
  265. package/dist/IconSwapVert-BBxeKMXP.cjs +2 -0
  266. package/dist/IconSwapVert-D83OnTLJ.js +16 -0
  267. package/dist/IconThreeDRotation-BPRR_9n0.cjs +2 -0
  268. package/dist/IconThreeDRotation-WuabFIaS.js +29 -0
  269. package/dist/IconThumbUp-Dw-Hvil4.cjs +2 -0
  270. package/dist/IconThumbUp-DwPs1Aog.js +16 -0
  271. package/dist/IconTrendingDown-CKqQl7o7.js +16 -0
  272. package/dist/IconTrendingDown-CUIEiRQk.cjs +2 -0
  273. package/dist/IconTrophy-DRcIPW-F.js +16 -0
  274. package/dist/IconTrophy-DwaYZ69z.cjs +2 -0
  275. package/dist/IconTune-CXVj1kqb.js +16 -0
  276. package/dist/IconTune-CdPQRgZE.cjs +2 -0
  277. package/dist/IconTwitter-B5AwI_-2.js +16 -0
  278. package/dist/IconTwitter-wxyn-htG.cjs +2 -0
  279. package/dist/IconUmbrella-BWmv4GFi.js +16 -0
  280. package/dist/IconUmbrella-CdgPNDdg.cjs +2 -0
  281. package/dist/IconVerified-BMRocsAd.js +20 -0
  282. package/dist/IconVerified-DKmEJ9ke.cjs +2 -0
  283. package/dist/IconVideocam-B8oUr7zP.cjs +2 -0
  284. package/dist/IconVideocam-D5eUdBxR.js +16 -0
  285. package/dist/IconViewInAr-CvR2gh_r.js +16 -0
  286. package/dist/IconViewInAr-DhbEKdon.cjs +2 -0
  287. package/dist/IconVisibility-BlzyaCVD.js +16 -0
  288. package/dist/IconVisibility-DaA3mBn4.cjs +2 -0
  289. package/dist/IconVolumeOff-42vl0HdH.cjs +2 -0
  290. package/dist/IconVolumeOff-DB757krU.js +16 -0
  291. package/dist/IconVolumeOn-B6HqcoA8.cjs +2 -0
  292. package/dist/IconVolumeOn-CYf77UaC.js +16 -0
  293. package/dist/IconWarehouse-DIRQdX8P.js +16 -0
  294. package/dist/IconWarehouse-DOw3YseH.cjs +2 -0
  295. package/dist/IconWarning-3AuFwkkg.cjs +2 -0
  296. package/dist/IconWarning-n_GTsWOM.js +16 -0
  297. package/dist/IconWater-DFV09TyV.js +16 -0
  298. package/dist/IconWater-dVEqMZb4.cjs +2 -0
  299. package/dist/IconWeight-Cq12caT_.js +16 -0
  300. package/dist/IconWeight-DfXiP6ob.cjs +2 -0
  301. package/dist/IconWidth-D1f8wank.cjs +2 -0
  302. package/dist/IconWidth-DtPjsKm8.js +16 -0
  303. package/dist/IconWorkspacePremium-DQIbVzlX.cjs +2 -0
  304. package/dist/IconWorkspacePremium-_Olggt_G.js +16 -0
  305. package/dist/IconWrench-C2MHGxho.js +16 -0
  306. package/dist/IconWrench-CZskpiB7.cjs +2 -0
  307. package/dist/IconYoutube-C8cHj1uF.js +16 -0
  308. package/dist/IconYoutube-ChEAKSkt.cjs +2 -0
  309. package/dist/css/reset.css +4 -0
  310. package/dist/css/utilities-base.css +7 -3
  311. package/dist/css/utilities-responsive.css +33 -13
  312. package/dist/css/utilities.css +14 -0
  313. package/dist/style.css +1 -1
  314. package/dist/tide-design-system.cjs +2 -2
  315. package/dist/tide-design-system.esm.d.ts +447 -1151
  316. package/dist/tide-design-system.esm.js +2579 -1838
  317. package/dist/utilities/forms.ts +22 -0
  318. package/dist/utilities/validation-deprecated.ts +252 -0
  319. package/dist/utilities/validation.ts +45 -123
  320. package/index.ts +20 -43
  321. package/package.json +3 -3
  322. package/src/assets/css/reset.css +4 -0
  323. package/src/assets/css/utilities-base.css +7 -3
  324. package/src/assets/css/utilities-responsive.css +33 -13
  325. package/src/assets/css/utilities.css +14 -0
  326. package/src/components/TideAlert.vue +11 -2
  327. package/src/components/TideCard.vue +1 -1
  328. package/src/components/TideCarousel.vue +131 -156
  329. package/src/components/TideForm.vue +24 -0
  330. package/src/components/TideImage.vue +1 -1
  331. package/src/components/TideInputCheckbox.vue +140 -63
  332. package/src/components/TideInputCheckboxDeprecated.vue +117 -0
  333. package/src/components/TideInputRadio.vue +23 -39
  334. package/src/components/TideInputRadioDeprecated.vue +118 -0
  335. package/src/components/TideInputSelect.vue +80 -47
  336. package/src/components/TideInputSelectDeprecated.vue +245 -0
  337. package/src/components/TideInputSupportingText.vue +35 -0
  338. package/src/components/TideInputText.vue +101 -84
  339. package/src/components/TideInputTextDeprecated.vue +324 -0
  340. package/src/components/TideInputTextarea.vue +71 -57
  341. package/src/components/TideInputTextareaDeprecated.vue +198 -0
  342. package/src/components/TideSwitch.vue +1 -1
  343. package/src/composables/useTideForm.ts +25 -0
  344. package/src/docs/assets/native-input-validation.png +0 -0
  345. package/src/docs/forms.md +484 -0
  346. package/src/docs/upgrading.md +44 -1
  347. package/src/stories/FoundationsBorder.stories.ts +25 -13
  348. package/src/stories/TideCarousel.stories.ts +9 -28
  349. package/src/types/{Field.ts → FieldDeprecated.ts} +39 -2
  350. package/src/types/Form.ts +0 -57
  351. package/src/types/FormDeprecated.ts +91 -0
  352. package/src/types/Styles.ts +5 -0
  353. package/src/types/TextInput.ts +12 -0
  354. package/src/types/Validation.ts +11 -4
  355. package/src/types/ValidationDeprecated.ts +41 -0
  356. package/src/utilities/forms.ts +22 -0
  357. package/src/utilities/validation-deprecated.ts +252 -0
  358. package/src/utilities/validation.ts +45 -123
  359. package/dist/IconAccountBalance-Ck1QODok.js +0 -16
  360. package/dist/IconAccountBalance-DUpdmQFe.cjs +0 -2
  361. package/dist/IconAcute-Dy5x_yJL.js +0 -16
  362. package/dist/IconAcute-bU4QJ8V7.cjs +0 -2
  363. package/dist/IconAdd-CoVrVzyk.js +0 -16
  364. package/dist/IconAdd-DcDrqXYF.cjs +0 -2
  365. package/dist/IconAiDescription-6Pv0Y_Yt.js +0 -20
  366. package/dist/IconAiDescription-CEkom1qc.cjs +0 -2
  367. package/dist/IconAlignSpaceEven-BF_GmIrK.js +0 -16
  368. package/dist/IconAlignSpaceEven-cqO2Dlov.cjs +0 -2
  369. package/dist/IconApplePay-C56V1wAj.cjs +0 -2
  370. package/dist/IconApplePay-oQ4zV5vN.js +0 -16
  371. package/dist/IconArrowBack-BP2TEpuq.js +0 -16
  372. package/dist/IconArrowBack-FzFtQ6Wh.cjs +0 -2
  373. package/dist/IconArrowCycle-CqKlSl5d.cjs +0 -2
  374. package/dist/IconArrowCycle-TQa-fbVD.js +0 -16
  375. package/dist/IconArrowForward-CkA2-WZe.cjs +0 -2
  376. package/dist/IconArrowForward-VWVINc35.js +0 -16
  377. package/dist/IconArrowRight-BJYT2e-d.js +0 -16
  378. package/dist/IconArrowRight-BxQWtz80.cjs +0 -2
  379. package/dist/IconArrowUp-BM37-Uxb.cjs +0 -2
  380. package/dist/IconArrowUp-JSl5zOyP.js +0 -16
  381. package/dist/IconAssignment-B13NJfNm.cjs +0 -2
  382. package/dist/IconAssignment-CSn4vDyt.js +0 -16
  383. package/dist/IconAttachMoney-CIYp4I2h.js +0 -16
  384. package/dist/IconAttachMoney-CUjPtX-U.cjs +0 -2
  385. package/dist/IconAtvAtv-DDtMKkiz.cjs +0 -2
  386. package/dist/IconAtvAtv-GFhgoQXA.js +0 -20
  387. package/dist/IconAtvDuneBuggy-CmVFELlj.cjs +0 -2
  388. package/dist/IconAtvDuneBuggy-Eou8hc_1.js +0 -20
  389. package/dist/IconAtvGoKart-Cj3k54oS.js +0 -20
  390. package/dist/IconAtvGoKart-D200V7pq.cjs +0 -2
  391. package/dist/IconAtvGolfCart-BGqnqb3G.cjs +0 -2
  392. package/dist/IconAtvGolfCart-CCQwt0_I.js +0 -20
  393. package/dist/IconAtvSandRail-C5P5lWt6.cjs +0 -2
  394. package/dist/IconAtvSandRail-HpaJVocj.js +0 -20
  395. package/dist/IconAtvSideBySide-BxqtCex8.js +0 -20
  396. package/dist/IconAtvSideBySide-dbhLoB1-.cjs +0 -2
  397. package/dist/IconAtvTrailer-CTlZZ8Wn.js +0 -20
  398. package/dist/IconAtvTrailer-tohF8f6D.cjs +0 -2
  399. package/dist/IconAutoRenew-C77Hq4T0.cjs +0 -2
  400. package/dist/IconAutoRenew-Dp5h0lzF.js +0 -16
  401. package/dist/IconAwardStar-CNBpPsCx.cjs +0 -2
  402. package/dist/IconAwardStar-CdAw4NY5.js +0 -16
  403. package/dist/IconBed-B1u5P61X.js +0 -16
  404. package/dist/IconBed-Du8uU-Fq.cjs +0 -2
  405. package/dist/IconBoatmartPwc-CcE6IBYS.cjs +0 -2
  406. package/dist/IconBoatmartPwc-D6wQ7mNA.js +0 -20
  407. package/dist/IconBoatmartTrailer-CfIANY7t.cjs +0 -2
  408. package/dist/IconBoatmartTrailer-hKiD_NXI.js +0 -20
  409. package/dist/IconBolt-CskRJDT1.js +0 -16
  410. package/dist/IconBolt-D3QlzyVv.cjs +0 -2
  411. package/dist/IconBookmark-Dc_xQALq.cjs +0 -2
  412. package/dist/IconBookmark-DsEGlmme.js +0 -16
  413. package/dist/IconBunkhouse-BLo-n_Mb.js +0 -16
  414. package/dist/IconBunkhouse-BUPqUZFs.cjs +0 -2
  415. package/dist/IconCalendarMonth-Cfs-ZKLJ.js +0 -16
  416. package/dist/IconCalendarMonth-ztc4w4Tw.cjs +0 -2
  417. package/dist/IconCall-BCjepEju.js +0 -16
  418. package/dist/IconCall-BKYdkS16.cjs +0 -2
  419. package/dist/IconCallQuality-BRfc8Y1K.cjs +0 -2
  420. package/dist/IconCallQuality-c7UaokVa.js +0 -16
  421. package/dist/IconCarRental-CkVWcpTh.cjs +0 -2
  422. package/dist/IconCarRental-D-qYjRe5.js +0 -16
  423. package/dist/IconCheck-D0w_fKOH.cjs +0 -2
  424. package/dist/IconCheck-DVE4Knnl.js +0 -16
  425. package/dist/IconChevronLeft-DStWQfoj.js +0 -16
  426. package/dist/IconChevronLeft-DhX3pOQ3.cjs +0 -2
  427. package/dist/IconChevronRight-3vFVvnNb.js +0 -16
  428. package/dist/IconChevronRight-BCv__YUh.cjs +0 -2
  429. package/dist/IconClear-D5yRmb93.cjs +0 -2
  430. package/dist/IconClear-F6afoxzY.js +0 -16
  431. package/dist/IconClose-Y-mY3AiS.cjs +0 -2
  432. package/dist/IconClose-eMGGtfEC.js +0 -16
  433. package/dist/IconContract-D6nGc_5y.cjs +0 -2
  434. package/dist/IconContract-f9bj5j-_.js +0 -16
  435. package/dist/IconCrash-B2l3Ie38.js +0 -16
  436. package/dist/IconCrash-BhwhKaB1.cjs +0 -2
  437. package/dist/IconDashboardCustomize-CyQTFASs.js +0 -16
  438. package/dist/IconDashboardCustomize-N7cHDhjT.cjs +0 -2
  439. package/dist/IconDelete-Couv2iBA.js +0 -16
  440. package/dist/IconDelete-LlUqnq04.cjs +0 -2
  441. package/dist/IconDiamond-sol6SUrB.js +0 -16
  442. package/dist/IconDiamond-t4Tf48_s.cjs +0 -2
  443. package/dist/IconDirectionsBoat-IZhI7oCN.cjs +0 -2
  444. package/dist/IconDirectionsBoat-S07T_dm_.js +0 -16
  445. package/dist/IconDomain-DSyC0Set.cjs +0 -2
  446. package/dist/IconDomain-ECxC_qj-.js +0 -16
  447. package/dist/IconDraft-BFxB85ro.js +0 -16
  448. package/dist/IconDraft-DL8E6d1f.cjs +0 -2
  449. package/dist/IconEdit-BoLO_nL5.js +0 -16
  450. package/dist/IconEdit-HzbIdd3z.cjs +0 -2
  451. package/dist/IconEngine-BBaqQJ6N.js +0 -20
  452. package/dist/IconEngine-DCKjsg0s.cjs +0 -2
  453. package/dist/IconEngineering-C60OP34_.js +0 -16
  454. package/dist/IconEngineering-WPQWx43h.cjs +0 -2
  455. package/dist/IconError-CAjFP9Jy.cjs +0 -2
  456. package/dist/IconError-Dd2H7cOG.js +0 -16
  457. package/dist/IconExpandContent-C1xzfkui.js +0 -16
  458. package/dist/IconExpandContent-UDkqNF-G.cjs +0 -2
  459. package/dist/IconExpandLess-Bf6Nypx3.js +0 -16
  460. package/dist/IconExpandLess-HiL8c2v-.cjs +0 -2
  461. package/dist/IconExpandMore-BffI3rnY.js +0 -16
  462. package/dist/IconExpandMore-tOo2Ynbv.cjs +0 -2
  463. package/dist/IconFacebook-7dq6Uz6i.cjs +0 -2
  464. package/dist/IconFacebook-Cki8sZRt.js +0 -16
  465. package/dist/IconFavorite-C6ZJCuY6.cjs +0 -2
  466. package/dist/IconFavorite-CyRSAVdw.js +0 -16
  467. package/dist/IconFavoriteFilled-DJIL-WYR.cjs +0 -2
  468. package/dist/IconFavoriteFilled-DeNJvMmm.js +0 -16
  469. package/dist/IconFlag-a6YLysex.cjs +0 -2
  470. package/dist/IconFlag-aeogw6hc.js +0 -16
  471. package/dist/IconFormatBold-CtYxihT6.js +0 -16
  472. package/dist/IconFormatBold-Yo5bdAwc.cjs +0 -2
  473. package/dist/IconFormatItalic-DSJCzNMj.cjs +0 -2
  474. package/dist/IconFormatItalic-EUVbp7Qb.js +0 -16
  475. package/dist/IconFormatListBulleted-CT9Ocq27.cjs +0 -2
  476. package/dist/IconFormatListBulleted-D-VQIabf.js +0 -16
  477. package/dist/IconForum-BrjEMf33.js +0 -16
  478. package/dist/IconForum-DQrwT4Pb.cjs +0 -2
  479. package/dist/IconGas-D_rJSqnT.js +0 -16
  480. package/dist/IconGas-DaKcTfiu.cjs +0 -2
  481. package/dist/IconGavel-D9XWUMJt.js +0 -16
  482. package/dist/IconGavel-ZdfEJ5bP.cjs +0 -2
  483. package/dist/IconGears-BlhP9t4o.cjs +0 -2
  484. package/dist/IconGears-Cavx6RDS.js +0 -16
  485. package/dist/IconGlobeLocationPin-CdwVS7ad.js +0 -16
  486. package/dist/IconGlobeLocationPin-Dz_hajhl.cjs +0 -2
  487. package/dist/IconGoogle-CW-JtHsA.js +0 -31
  488. package/dist/IconGoogle-DaDS3i9U.cjs +0 -2
  489. package/dist/IconGooglePay-ByaG5WLE.cjs +0 -2
  490. package/dist/IconGooglePay-lhVEuNTf.js +0 -16
  491. package/dist/IconGrid-4jZ_E7sN.cjs +0 -2
  492. package/dist/IconGrid-B-Z-t5S5.js +0 -16
  493. package/dist/IconHandshake-CCtEDb5s.js +0 -16
  494. package/dist/IconHandshake-Dm6HyjPZ.cjs +0 -2
  495. package/dist/IconHandyman-CeFGeaUD.js +0 -16
  496. package/dist/IconHandyman-DWBuUdrY.cjs +0 -2
  497. package/dist/IconHeight-CU7292SF.js +0 -16
  498. package/dist/IconHeight-DdZD0XDB.cjs +0 -2
  499. package/dist/IconHelp-CpHZAsX2.js +0 -16
  500. package/dist/IconHelp-Ks-iBsna.cjs +0 -2
  501. package/dist/IconInfo-Du8txE_y.js +0 -16
  502. package/dist/IconInfo-xZBbCBpg.cjs +0 -2
  503. package/dist/IconInformation-DnC1dUkM.cjs +0 -2
  504. package/dist/IconInformation-fpX8-lfe.js +0 -16
  505. package/dist/IconInsertText-B50Ml556.js +0 -16
  506. package/dist/IconInsertText-DRLSQCif.cjs +0 -2
  507. package/dist/IconInstagram-BAydhrdp.cjs +0 -2
  508. package/dist/IconInstagram-x9ut2Rvt.js +0 -16
  509. package/dist/IconIosShare-BAZa5TGR.js +0 -16
  510. package/dist/IconIosShare-ln3UX-op.cjs +0 -2
  511. package/dist/IconLayout-B7PSx75m.cjs +0 -2
  512. package/dist/IconLayout-Ctl5Nh6E.js +0 -16
  513. package/dist/IconLevellingJack-Cv_L_Xt-.cjs +0 -2
  514. package/dist/IconLevellingJack-OIJRh7On.js +0 -20
  515. package/dist/IconLinkedIn-DpuBRGWk.js +0 -16
  516. package/dist/IconLinkedIn-yIN3rQkH.cjs +0 -2
  517. package/dist/IconLocalShipping-CECgkii_.cjs +0 -2
  518. package/dist/IconLocalShipping-DFGIrDiT.js +0 -16
  519. package/dist/IconLock-CgnOY2yE.cjs +0 -2
  520. package/dist/IconLock-Kkxyx6xF.js +0 -16
  521. package/dist/IconMail-C52wU0bj.cjs +0 -2
  522. package/dist/IconMail-C_KZ99bY.js +0 -16
  523. package/dist/IconMenu-Bgr0cuPj.cjs +0 -2
  524. package/dist/IconMenu-DdVdEPQY.js +0 -16
  525. package/dist/IconMoneyBag-Bpwqj4h_.js +0 -16
  526. package/dist/IconMoneyBag-DIgjDYQp.cjs +0 -2
  527. package/dist/IconMoreHoriz-CMqeM-vy.js +0 -16
  528. package/dist/IconMoreHoriz-CopFNsjL.cjs +0 -2
  529. package/dist/IconNotifications-C-5jqVsp.js +0 -16
  530. package/dist/IconNotifications-CowlXF8e.cjs +0 -2
  531. package/dist/IconOdometer-8X8BZK7G.cjs +0 -2
  532. package/dist/IconOdometer-DOvJTqMC.js +0 -16
  533. package/dist/IconOpenInNew-BECM_cge.js +0 -16
  534. package/dist/IconOpenInNew-NIE7_GBf.cjs +0 -2
  535. package/dist/IconPalette-BnkMmdjx.cjs +0 -2
  536. package/dist/IconPalette-cNHa_Dl9.js +0 -16
  537. package/dist/IconPaypal-0MB9NiPi.js +0 -16
  538. package/dist/IconPaypal-Cm4sbOWR.cjs +0 -2
  539. package/dist/IconPerson-BlD3wl56.cjs +0 -2
  540. package/dist/IconPerson-C9FdsFRF.js +0 -16
  541. package/dist/IconPersonSearch-BAwODsOw.js +0 -16
  542. package/dist/IconPersonSearch-CvzxD13q.cjs +0 -2
  543. package/dist/IconPhotoCamera-Dhq3zkZ1.js +0 -16
  544. package/dist/IconPhotoCamera-LE83ELYg.cjs +0 -2
  545. package/dist/IconPinterest-B2ilympx.js +0 -16
  546. package/dist/IconPinterest-LMg3EmCf.cjs +0 -2
  547. package/dist/IconPlayArrow-DWY4o6mi.js +0 -16
  548. package/dist/IconPlayArrow-DaK8Rma5.cjs +0 -2
  549. package/dist/IconPolicy-CPfGoBvS.cjs +0 -2
  550. package/dist/IconPolicy-CTm0qx9m.js +0 -16
  551. package/dist/IconPower-BNYJxFS-.cjs +0 -2
  552. package/dist/IconPower-El-f1YpW.js +0 -16
  553. package/dist/IconPowerOff-BeF6a0I_.js +0 -16
  554. package/dist/IconPowerOff-BzVbrhfQ.cjs +0 -2
  555. package/dist/IconPriorityHigh-BOUPMj-c.js +0 -16
  556. package/dist/IconPriorityHigh-De-QwFs9.cjs +0 -2
  557. package/dist/IconRemove-DJ8Ats3O.js +0 -16
  558. package/dist/IconRemove-FRKIQpXX.cjs +0 -2
  559. package/dist/IconRequestQuote-63Pc7nFl.cjs +0 -2
  560. package/dist/IconRequestQuote-Dx73kEAB.js +0 -16
  561. package/dist/IconResetWrench-Cszjots_.cjs +0 -2
  562. package/dist/IconResetWrench-afPLSCCR.js +0 -16
  563. package/dist/IconRoad-CXNsqXt3.cjs +0 -2
  564. package/dist/IconRoad-D8LbDPzU.js +0 -16
  565. package/dist/IconRoundedCorner-CBFrVTjO.js +0 -16
  566. package/dist/IconRoundedCorner-s0eqhrw-.cjs +0 -2
  567. package/dist/IconRuler-BbrDrxik.js +0 -16
  568. package/dist/IconRuler-CS4llN2v.cjs +0 -2
  569. package/dist/IconRvClassA-IHRP4eXR.cjs +0 -2
  570. package/dist/IconRvClassA-pAChL2Qm.js +0 -20
  571. package/dist/IconRvClassB-BWEVHWYh.cjs +0 -2
  572. package/dist/IconRvClassB-BWaLlkdV.js +0 -20
  573. package/dist/IconRvClassC-CeDhPBYp.js +0 -20
  574. package/dist/IconRvClassC-CiUYMt7R.cjs +0 -2
  575. package/dist/IconRvFifthWheel-D98H64pq.js +0 -20
  576. package/dist/IconRvFifthWheel-tllq5hmh.cjs +0 -2
  577. package/dist/IconRvFishHouse-B9v3_c4m.js +0 -20
  578. package/dist/IconRvFishHouse-C5B0w81b.cjs +0 -2
  579. package/dist/IconRvParkModel-DJjJJFrS.js +0 -20
  580. package/dist/IconRvParkModel-DU9WYpvA.cjs +0 -2
  581. package/dist/IconRvPopUpCamper-C_L-wpFq.cjs +0 -2
  582. package/dist/IconRvPopUpCamper-DC5JLH5u.js +0 -20
  583. package/dist/IconRvTravelTrailer-CUzyIoJH.js +0 -20
  584. package/dist/IconRvTravelTrailer-DfoQmo80.cjs +0 -2
  585. package/dist/IconRvTruckCamper-CHLJEty2.js +0 -20
  586. package/dist/IconRvTruckCamper-CI5jKToo.cjs +0 -2
  587. package/dist/IconSailing-CP278bNv.cjs +0 -2
  588. package/dist/IconSailing-Ct5A7oe-.js +0 -16
  589. package/dist/IconSchool-DCJoiRB2.cjs +0 -2
  590. package/dist/IconSchool-DkD-by-f.js +0 -16
  591. package/dist/IconSearch-C3_cVelm.js +0 -16
  592. package/dist/IconSearch-CG3sTqyY.cjs +0 -2
  593. package/dist/IconSeating-B2-FR2aI.js +0 -16
  594. package/dist/IconSeating-DPz7Itl5.cjs +0 -2
  595. package/dist/IconSell-B01QAmJJ.js +0 -16
  596. package/dist/IconSell-tiqkK8HB.cjs +0 -2
  597. package/dist/IconSensors-B2yoU18I.cjs +0 -2
  598. package/dist/IconSensors-C9ikFDSl.js +0 -16
  599. package/dist/IconSettings-6iUt_j-N.cjs +0 -2
  600. package/dist/IconSettings-C7CzSyB_.js +0 -16
  601. package/dist/IconShare-CC3TgzM9.js +0 -16
  602. package/dist/IconShare-z3eso-fS.cjs +0 -2
  603. package/dist/IconShieldCheck-BKdiIhJ-.js +0 -16
  604. package/dist/IconShieldCheck-Dn0h4Aut.cjs +0 -2
  605. package/dist/IconShoppingCart-CQZWosiy.js +0 -16
  606. package/dist/IconShoppingCart-Dn7aCgYi.cjs +0 -2
  607. package/dist/IconSleeps-DDIWvIh8.js +0 -16
  608. package/dist/IconSleeps-DMXZj5P6.cjs +0 -2
  609. package/dist/IconSms-Bb3mhfHH.cjs +0 -2
  610. package/dist/IconSms-C22lp6yM.js +0 -16
  611. package/dist/IconSnowflake-DEJHKYBl.cjs +0 -2
  612. package/dist/IconSnowflake-aBZ4o4X2.js +0 -16
  613. package/dist/IconStar-2gDebu9X.js +0 -16
  614. package/dist/IconStar-COuoApVn.cjs +0 -2
  615. package/dist/IconStarFilled-BvH24VJ3.cjs +0 -2
  616. package/dist/IconStarFilled-CI8JFRKm.js +0 -16
  617. package/dist/IconStarHalf-9Mtxrxy2.js +0 -16
  618. package/dist/IconStarHalf-Cf3yNdfW.cjs +0 -2
  619. package/dist/IconSummarize-DdMTFwCZ.cjs +0 -2
  620. package/dist/IconSummarize-DjgKmXYf.js +0 -16
  621. package/dist/IconSwapHoriz-BI3V7cXl.js +0 -16
  622. package/dist/IconSwapHoriz-CHbH-rb1.cjs +0 -2
  623. package/dist/IconSwapVert-Bxn4iSnZ.js +0 -16
  624. package/dist/IconSwapVert-DT_2E9ir.cjs +0 -2
  625. package/dist/IconThreeDRotation-C5sf5vQe.js +0 -29
  626. package/dist/IconThreeDRotation-tzEyR04j.cjs +0 -2
  627. package/dist/IconThumbUp-Bewoaeaz.js +0 -16
  628. package/dist/IconThumbUp-Cv6VtGa7.cjs +0 -2
  629. package/dist/IconTrendingDown-ClqzR4Gm.js +0 -16
  630. package/dist/IconTrendingDown-YxmY8_d7.cjs +0 -2
  631. package/dist/IconTrophy-BvyInFpa.js +0 -16
  632. package/dist/IconTrophy-D68upC1Z.cjs +0 -2
  633. package/dist/IconTune-BeT6cJNb.cjs +0 -2
  634. package/dist/IconTune-DM9oNvly.js +0 -16
  635. package/dist/IconTwitter-CDK1k6Um.cjs +0 -2
  636. package/dist/IconTwitter-Di3mFm4J.js +0 -16
  637. package/dist/IconUmbrella-DdgZRF8v.cjs +0 -2
  638. package/dist/IconUmbrella-KarDrV_0.js +0 -16
  639. package/dist/IconVerified-BSLc-Tng.js +0 -20
  640. package/dist/IconVerified-CE6bl5Tr.cjs +0 -2
  641. package/dist/IconVideocam-Bk2i6zSL.js +0 -16
  642. package/dist/IconVideocam-DFAhIy60.cjs +0 -2
  643. package/dist/IconViewInAr-CyH3TuS9.js +0 -16
  644. package/dist/IconViewInAr-cJRKU-n8.cjs +0 -2
  645. package/dist/IconVisibility-C7r-OBqZ.js +0 -16
  646. package/dist/IconVisibility-CoZqOmFs.cjs +0 -2
  647. package/dist/IconVolumeOff-B1VwsF7D.cjs +0 -2
  648. package/dist/IconVolumeOff-DrXwzNlx.js +0 -16
  649. package/dist/IconVolumeOn-ByK04AMO.cjs +0 -2
  650. package/dist/IconVolumeOn-DMqPq3mL.js +0 -16
  651. package/dist/IconWarehouse-B-WGdkxc.cjs +0 -2
  652. package/dist/IconWarehouse-BLILe5TP.js +0 -16
  653. package/dist/IconWarning-BGb_hd4L.js +0 -16
  654. package/dist/IconWarning-BmJVooFC.cjs +0 -2
  655. package/dist/IconWater-BFIBeGBM.js +0 -16
  656. package/dist/IconWater-BcVoUC58.cjs +0 -2
  657. package/dist/IconWeight-BzjjPVJo.cjs +0 -2
  658. package/dist/IconWeight-IXMjxgaM.js +0 -16
  659. package/dist/IconWidth-CWT_XoXm.js +0 -16
  660. package/dist/IconWidth-DK12b7aq.cjs +0 -2
  661. package/dist/IconWorkspacePremium-B_CTpaCF.js +0 -16
  662. package/dist/IconWorkspacePremium-Dwj3FxW1.cjs +0 -2
  663. package/dist/IconWrench-CHHIpkKv.cjs +0 -2
  664. package/dist/IconWrench-CgaRK8xS.js +0 -16
  665. package/dist/IconYoutube-BBBj6jXd.js +0 -16
  666. package/dist/IconYoutube-DIFl6ykK.cjs +0 -2
@@ -0,0 +1,484 @@
1
+ # Tide Input Components Usage Guide
2
+
3
+ This guide shows how to use `<TideInputText />`, `<TideInputTextarea />`, `<TideInputSelect />` and `<TideInputCheckbox />` in forms, and how to leverage the TIDE library's validation features.
4
+
5
+ ---
6
+
7
+ ## Key Concepts
8
+
9
+ - `v-model` is used to bind the value to your reactive form state.
10
+ - To react to value changes, parent components can watch for reactive changes to the input's value ref, or use a callback function on the `@update:modelValue` emit.
11
+ - Validation helper props like `required`, `minlength`, `maxlength`, can be used for common validations.
12
+ - Custom validations can be performed using `validators` prop.
13
+ - `error` prop can force a custom validation error with highest precedence.
14
+ - `@valid` event emits every time the input’s validation state changes, allowing reactive updates in real time.
15
+ - Use the `<TideForm />` component for a reliable form submit behavior.
16
+
17
+ ## Input State Management
18
+
19
+ All TIDE input components use Vue’s built-in [`v-model`](https://vuejs.org/guide/components/v-model) feature to provide **two-way data binding** between your component state and the input’s value.
20
+
21
+ ``` vue
22
+ <script lang="ts" setup>
23
+ import { TideInputText } from 'tide-design-system';
24
+
25
+ const nameValue = ref<string>(''); // text inputs use a string ref
26
+ </script>
27
+
28
+ <template>
29
+ <TideInputText
30
+ label="Name"
31
+ v-model="nameValue"
32
+ />
33
+ </template>
34
+ ```
35
+
36
+ ### What Is “Two-Way Binding” (`v-model`)?
37
+
38
+ Two-way binding means that data stays in sync **in both directions** between your component’s state and the UI.
39
+
40
+ #### 1. Upward Binding (User → State)
41
+
42
+ When a user types into the input, the bound `ref` (`nameValue` in this case) is automatically updated to reflect the new value.
43
+
44
+ #### 2. Downward Binding (State → UI)
45
+
46
+ If you modify the `ref` value in your code, the input’s display will automatically update to match.
47
+
48
+ For example:
49
+
50
+ ```vue
51
+ <TideButton
52
+ @click="nameValue = nameValue + 'A'"
53
+ label="Append letter 'A'"
54
+ />
55
+ ```
56
+
57
+ Clicking this button appends an `"A"` to the existing value of `nameValue`, and you’ll immediately see that change appear in the input field.
58
+
59
+ For more on `v-model` and two-way data bindings, [see the Vue docs](https://vuejs.org/guide/components/v-model).
60
+
61
+ ### Using `reactive()` for Multiple Inputs
62
+
63
+ When you have several related input values — such as a form with multiple fields — Vue’s [`reactive()`](https://vuejs.org/guide/essentials/reactivity-fundamentals.html#reactive-objects) helper can make managing state easier. It lets you store all inputs in a single reactive object instead of multiple separate refs.
64
+
65
+ ```vue
66
+ <script lang="ts" setup>
67
+ import { TideInputText, TideButton } from 'tide-design-system'
68
+
69
+ type FormState = {
70
+ fullName: string;
71
+ subscribed: boolean;
72
+ };
73
+
74
+ const form = reactive<FormState>({
75
+ fullName: '',
76
+ subscribed: false,
77
+ });
78
+ </script>
79
+
80
+ <template>
81
+ <TideInputText v-model="form.fullName" label="First name" />
82
+ <TideInputCheckbox v-model="form.subscribed" label="Subscribed" />
83
+
84
+ <TideButton
85
+ @click="form.fullName = form.fullName.toUpperCase()"
86
+ label="Capitalize name"
87
+ />
88
+
89
+ <pre>{{ form }}</pre>
90
+ </template>
91
+ ```
92
+
93
+ Here’s what’s happening:
94
+ - `form` is a single reactive object holding multiple fields.
95
+ - Each input uses `v-model` to bind directly to a property of `form`.
96
+ - Any change (user or programmatic) to one of the fields is immediately reflected everywhere it’s used — including other components or template bindings like `{{ form }}`.
97
+
98
+ This approach can help keep your forms organized, especially as the number of inputs grows. [Read more about `reactive()`](https://vuejs.org/guide/essentials/reactivity-fundamentals.html#reactive).
99
+
100
+ ### Reacting to value changes
101
+
102
+ The recommended way to do something in response to an input's value change is using [Vue watchers](https://vuejs.org/guide/essentials/watchers).
103
+
104
+ Basic usage:
105
+
106
+ ``` vue
107
+ <script lang="ts" setup>
108
+ const name = ref<string>('');
109
+
110
+ watch(name, () => {
111
+ console.log('Name is ' + name.value);
112
+ }, { immediate: true });
113
+ </script>
114
+
115
+ <template>
116
+ <TideInputText v-model="name" label="name" />
117
+ </template>
118
+ ```
119
+
120
+ This code will automatically log to the console every time `name` changes. It will also log to the console on mount. [Read about Eager Watchers](https://vuejs.org/guide/essentials/watchers#eager-watchers) (`immediate: true`).
121
+
122
+ `watchEffect()` is very similar to `watch()`, and can also be used for the same purpose. [Read about `watchEffect()`](https://vuejs.org/guide/essentials/watchers#watcheffect).
123
+
124
+ **Tip:** You can also conveniently react to value changes with the `@update:modelValue` emit. This is the exact same emit Vue uses under the hood in `v-model`, and it's entirely reliable to hook into to perform a given action every time the value changes. While it's possible to accomplish the same thing using Vue watchers, in some cases simple emits are more ergonomic. [Read more about `v-model` "Under the Hood"](https://vuejs.org/guide/components/v-model#under-the-hood).
125
+
126
+
127
+ ## Validation
128
+
129
+ Input components ship with a handful of convenient props for the most common validation use cases. Each component emits the result of its validations as a boolean `@valid`. This emit can be used to reactively apply conditional logic in your parent component in response to validation state changes.
130
+
131
+ | Prop name | Type | Component | Description |
132
+ | --- | --- | --- | --- |
133
+ | `required` | `boolean` (optional) | All components | Requires the input must not be left blank, or unselected (`TideInputCheckbox`).<br><br> Default: `false` |
134
+ | `minlength` | `number` (optional) | `TideInputText`<br> `TideInputTextarea`<br> | The minimum number of characters required in the input.<br><br> Default: `undefined` |
135
+ | `maxlength` | `number` (optional) | `TideInputText`<br> `TideInputTextarea`<br> | The maximum number of characters allowed in the input.<br><br> Default: `undefined` |
136
+ | `validators` | `Validator[]` (optional) | `TideInputText`<br> `TideInputTextarea`<br>`TideInputSelect`<br> | Provide one or more custom validator functions to run additional validation logic.<br><br> See [Custom Validators](#custom-validators).<br><br> Default: `[]` |
137
+ | `error` | `string` (optional) | All components | Manually specify an error message to display. This prop has the highest precedence of all validations. When provided a non-empty string, it immediately triggers a validation error and prevents other validation rules from running (only one error can be active at a time). When error is an empty string (`''`) or omitted, the component continues normal validation flow (`validators`, `required`, etc.). <br><br> See [Manual Error Messages](#manual-error-messages). <br><br> Default: `''` |
138
+
139
+ ### Validation Precedence
140
+
141
+ Validations are performed one at a time, and validation is cancelled as soon as an error occurs.
142
+
143
+ From highest to lowest, the order of precedence for validation is:
144
+
145
+ 1. `error`
146
+ 2. `validators`
147
+ 3. `required`
148
+ 4. `maxlength`
149
+ 4. `minlength`
150
+
151
+ **Note:** Only one error can be active at a time.
152
+
153
+ ### Custom Validators
154
+
155
+ The `validators` prop accepts one or more custom validator functions to run additional validation logic. Validators can be any function which conforms to `type Validator`.
156
+
157
+ ``` ts
158
+ type ValidationResult = {
159
+ message: string;
160
+ valid: boolean;
161
+ };
162
+ type Validator = (value: string) => ValidationResult;
163
+ ```
164
+
165
+ An example of a custom validator could be:
166
+
167
+ ``` vue
168
+ <script lang="ts" setup>
169
+ import { TideInputText } from 'tide-design-system';
170
+ import type { Validator, ValidationResult } from 'tide-design-system';
171
+
172
+ const nameIsJohnDoe: Validator = (name: string): ValidationResult => {
173
+ const isValid = name === 'John Doe';
174
+
175
+ return {
176
+ valid: isValid,
177
+ message: isValid ? '' : 'Name must be "John Doe".',
178
+ };
179
+ };
180
+ </script>
181
+
182
+ <template>
183
+ <!-- Error will show when "Jane Smith" is inputted -->
184
+ <TideInputText label="Full name" :validators="[nameIsJohnDoe]" />
185
+ </template>
186
+ ```
187
+
188
+ The `tide-design-system` npm package also exposes a `VALIDATOR` const object containing [validator functions for common use cases](https://github.com/traderinteractive/tide-design-system/blob/main/src/types/Validation.ts#:~:text=export%20const%20VALIDATOR%20%3D%20%7B,as%20const%3B).
189
+
190
+ ### Displaying errors
191
+
192
+ For finer control over when invalid inputs should display errors, each input components accepts an `errorDisplay` prop.
193
+
194
+ ``` ts
195
+ import { ERROR_DISPLAY } from 'tide-design-system';
196
+ ```
197
+
198
+ | `errorDisplay` prop value | Description |
199
+ | --- | --- |
200
+ | `ERROR_DISPLAY.EAGER` | Errors can show after first input focus event. |
201
+ | `ERROR_DISPLAY.LAZY` (default) | Errors can show after first blur event. |
202
+
203
+ Unlike the default setting of `ERROR_DISPLAY.LAZY`, the following input would show its error from the `required` prop as soon as it's focused.
204
+
205
+ ``` vue
206
+ <TideInputText
207
+ :error-display="ERROR_DISPLAY.EAGER"
208
+ label="Name"
209
+ required
210
+ v-model="name"
211
+ />
212
+ ```
213
+
214
+ ### When does validation occur?
215
+
216
+ Validation is triggered on mount, as well as whenever the following values change:
217
+ - The input's value (`v-model`)
218
+ - `required` prop
219
+ - `minlength`/`maxlength` prop
220
+ - `validators` prop
221
+ - `transform-value` prop
222
+ - `error` prop
223
+
224
+ So you can trust the `@valid` emit will always provide the most accurate & up to date validation status. But although validation is constantly performed, an input's errors may be visually suppressed if the user hasn't yet interacted with it.
225
+
226
+ ### Forced error reveal on submit
227
+
228
+ To provide a good form UX, the `<TideForm />` component should be utilized, as when its `@submit` event fires, it automatically reveals any suppressed validation errors on any official TIDE input component descendants. This is particularly useful for cases where a user tries to submit a form before interacting with all required fields. [More on this under `<TideForm />`](#form-submission).
229
+
230
+ ### Accessing Error Messages
231
+
232
+ `@valid` does not indicate *which* of the validations are valid/invalid. If you need fine-grained control over the validations, it's recommended to *opt out* of all internal validation helper props (`required`, `minlength`, `validators`, etc), and perform your validation manually. You can pass in a custom error message using the `:error` prop.
233
+
234
+ ### Manual error messages
235
+
236
+ Some use cases require more advanced validation. In such cases it's recommended to opt out of all validation helpers (`minlength`, `maxlength`, `required`, `validators`), and instead use the `:error` prop, paired with your own custom logic. This allows for fine-grained control over your validation, as well as the ability to precisely decide when errors show.
237
+
238
+ In the following example, we conditionally render a list of ✅ or ❌ icons in real time based on computed validation refs which reactively validate the input's value. `isPasswordValid` checks overall form validity and conditionally applies an `:error` prop to the input, and also prevents execution of `handleSubmit()` until the form is valid.
239
+
240
+ ``` vue
241
+ <script lang="ts" setup>
242
+ import { TideForm, TideInputText, TideButton } from 'tide-design-system';
243
+
244
+ const password = ref<string>('');
245
+
246
+ const hasMinLength = computed<boolean>(() => password.value.length >= 12);
247
+ const hasUppercase = computed<boolean>(() => /[A-Z]/.test(password.value));
248
+ const hasLowercase = computed<boolean>(() => /[a-z]/.test(password.value));
249
+ const hasSpecialChar = computed<boolean>(() => /[!@#$%^&*(),.?":{}|<>]/.test(password.value));
250
+ const isPasswordValid = computed<boolean>(() =>
251
+ hasMinLength.value &&
252
+ hasUppercase.value &&
253
+ hasLowercase.value &&
254
+ hasSpecialChar.value,
255
+ );
256
+
257
+ const passwordError = computed<string>(() =>
258
+ (password.value.length > 0 && !isPasswordValid.value)
259
+ ? 'Password does not meet all requirements.'
260
+ : '',
261
+ );
262
+
263
+ const handleSubmit = () => {
264
+ if (!isPasswordValid.value) return;
265
+ // ... is valid, register user
266
+ };
267
+ </script>
268
+
269
+ <template>
270
+ <TideForm @submit="handleSubmit">
271
+ <TideInputText
272
+ label="New password"
273
+ :type="TEXT_INPUT_TYPE.PASSWORD"
274
+ v-model="password"
275
+ :error="passwordError"
276
+ />
277
+
278
+ <ul>
279
+ <li>{{ hasMinLength ? '✅' : '❌' }} At least 12 characters</li>
280
+ <li>{{ hasUppercase ? '✅' : '❌' }} An uppercase letter</li>
281
+ <li>{{ hasLowercase ? '✅' : '❌' }} A lowercase letter</li>
282
+ <li>{{ hasSpecialChar ? '✅' : '❌' }} A special character</li>
283
+ </ul>
284
+
285
+ <TideButton
286
+ label="Register"
287
+ type="submit"
288
+ />
289
+ </TideForm>
290
+ </template>
291
+ ```
292
+
293
+ ## Form Submission
294
+
295
+ The `<TideForm />` component provides developers with consistent form submissions. It renders an unstyled `<form />` element, but adds a few subtle enhancements which make forms consistent and improve UX.
296
+
297
+ ### Basic usage:
298
+
299
+ ``` vue
300
+ <script lang="ts" setup>
301
+ import { TideButton, TideForm } from 'tide-design-system';
302
+
303
+ const handleSubmit = () => {/* ...submit */};
304
+ </script>
305
+
306
+ <template>
307
+ <TideForm @submit="handleSubmit">
308
+ <!-- ...TIDE input components go here -->
309
+
310
+ <TideButton
311
+ label="Submit"
312
+ type="submit"
313
+ />
314
+ </TideForm>
315
+ </template>
316
+ ```
317
+
318
+ ### How to Use `<TideForm />`
319
+
320
+ - Wrap your inputs in a `<TideForm />` component.
321
+ - Attach a submit handler to `@submit` for your custom form logic.
322
+ - Add a submit button (`type="submit"`) inside the form.
323
+
324
+ **Tip:** It's possible to trigger a form from *anywhere* in the DOM by applying a `form` attribute to a button. The attribute's value must match the unique HTML `id` of the target form element. [Read more about `[form]` on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/form).
325
+
326
+ ### Benefits of using `<TideForm />` over `<form />`
327
+
328
+ With `<TideForm />` you get the following enhancements for free:
329
+
330
+ #### event.preventDefault()
331
+ `<TideForm />` automatically prevents the browser's native form submit action. This is helpful as we typically want to submit forms using JS — not the native behavior which submits to the server, causing a full page reload. `preventDefault()` causes this native behavior to be ignored, yet the `@submit` event still fires, giving you full control over what happens when the user triggers form submission.
332
+
333
+ [Read about `preventDefault()` on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault).
334
+
335
+ #### novalidate
336
+
337
+ When a submit request is fired, the browser looks for various native validation-related attributes like [`[maxlength]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/maxlength), [`[required]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/required) or [`[pattern]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/pattern), and checks that the input's values are valid. If any values are invalid, it will prevent the submit event from firing, and it will show some error messages like so:
338
+
339
+ <p>
340
+ <img src="./assets/native-input-validation.png" width="360" />
341
+ </p>
342
+
343
+ But our components have their own Vue-based validation mechanisms, so we want to bypass this native behavior. `[novalidate]` being placed on the form element opts out of this native behavior.
344
+
345
+ [Read about `novalidate` on MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/noValidate).
346
+
347
+ #### Show errors on submit
348
+
349
+ Sometimes a user will attempt to submit a form before they've interacted with all required inputs. In this case it's crucial that the user is made aware they need to adjust some form values. For this reason, when a `<TideForm />` is submitted, it will cause any suppressed errors to be made visible, preventing potential user frustration.
350
+
351
+ ---
352
+
353
+ ## Minimal Reactive Single-Input Example
354
+
355
+ This is a simple example of a text input connected to a local `Ref<string>`. A `Ref<boolean>` separately tracks the validation state via the `@valid` emit, whose validation status is stored, and referenced when the user tries to submit. If the keyword input is invalid we cancel the submission as they need to modify their input.
356
+
357
+ ```vue
358
+ <script lang="ts" setup>
359
+ import { TideButton, TideForm, TideInputText } from 'tide-design-system';
360
+
361
+ const keyword = ref<string>('');
362
+ const isKeywordValid = ref<boolean>(false);
363
+
364
+ const handleSubmit = () => {
365
+ if (!isKeywordValid.value) return;
366
+ // ...perform search
367
+ };
368
+ </script>
369
+
370
+ <template>
371
+ <TideForm @submit="handleSubmit">
372
+ <TideInputText
373
+ label="Keyword"
374
+ required
375
+ v-model="keyword"
376
+ @valid="isKeywordValid = $event"
377
+ />
378
+
379
+ <TideButton
380
+ label="Search"
381
+ type="submit"
382
+ />
383
+ </TideForm>
384
+ </template>
385
+ ```
386
+
387
+ ---
388
+
389
+ ### Multi-Input Reactive Form Example
390
+
391
+ This more complex example contains a mix of input types. It also uses a mix of many kinds of validations.
392
+
393
+ A `reactive({})` ref is used here to conveniently store all form values together. A second `reactive({})` tracks the validation as a boolean for each input. A computed ref checks whether validation passes for all fields. Once again, this value is checked in the submit event handler to cancel submission if the form has errors. As [mentioned earlier](#show-errors-on-submit), form submits will automatically reveal any suppressed errors, which helps users know what they must do next.
394
+
395
+ ```vue
396
+ <script lang="ts" setup>
397
+ import {
398
+ TideButton,
399
+ TideForm,
400
+ TideInputCheckbox,
401
+ TideInputSelect,
402
+ TideInputText,
403
+ TideInputTextarea,
404
+ VALIDATOR,
405
+ } from 'tide-design-system';
406
+
407
+ const form = reactive({
408
+ bio: '',
409
+ country: '',
410
+ fullName: '',
411
+ terms: false,
412
+ });
413
+
414
+ const validation = reactive({
415
+ bio: false,
416
+ country: false,
417
+ fullName: false,
418
+ terms: false,
419
+ });
420
+
421
+ const isFormValid = computed<boolean>(() => [
422
+ validation.bio,
423
+ validation.country,
424
+ validation.fullName,
425
+ validation.terms,
426
+ ].every(Boolean));
427
+
428
+ const handleSubmit = () => {
429
+ if (!isFormValid.value) return;
430
+ // ...register user
431
+ };
432
+ </script>
433
+
434
+ <template>
435
+ <TideForm @submit="handleSubmit">
436
+ <TideInputText
437
+ :maxlength="24"
438
+ :validators="[VALIDATOR.ALPHA_SPACE]"
439
+ @valid="validation.fullName = $event"
440
+ label="Full name"
441
+ required
442
+ v-model="form.fullName"
443
+ />
444
+
445
+ <TideInputTextarea
446
+ :maxlength="500"
447
+ @valid="validation.bio = $event"
448
+ label="Bio"
449
+ v-model="form.bio"
450
+ />
451
+
452
+ <TideInputSelect
453
+ :options="[
454
+ { label: 'US', value: 'us' },
455
+ { label: 'Canada', value: 'ca' },
456
+ ]"
457
+ @valid="validation.country = $event"
458
+ label="Country"
459
+ required
460
+ v-model="form.country"
461
+ />
462
+
463
+ <TideInputCheckbox
464
+ @valid="validation.terms = $event"
465
+ label="Accept terms & conditions"
466
+ required
467
+ v-model="form.terms"
468
+ />
469
+
470
+ <TideButton
471
+ label="Register"
472
+ type="submit"
473
+ />
474
+ </TideForm>
475
+ </template>
476
+ ```
477
+
478
+ ## Further reading
479
+
480
+ Instead of disabling form submit buttons, consider leaving them enabled, but provide the user with visual feedback indicating the form is not yet submittable. Don't forget that just because an HTML form's submit button is disabled doesn't mean it can't be submittable. The `Enter`/`Return` key, or other mechanisms can still trigger the `@submit` event.
481
+
482
+ Read more:
483
+ - [The problem with disabled buttons and what to do instead](https://adamsilver.io/blog/the-problem-with-disabled-buttons-and-what-to-do-instead/) - Adam Silver
484
+ - [Don’t Disable Form Controls](https://adrianroselli.com/2024/02/dont-disable-form-controls.html) - Adrian Roselli
@@ -4,9 +4,52 @@ This document provides step-by-step instructions for upgrading from previous ver
4
4
 
5
5
  ---
6
6
 
7
+ ## Upgrading from 2.3 → 2.4
8
+
9
+ ### Summary
10
+ Version **2.4** introduces a new suite of form components. It remains largely backward-compatible with the previous versions of components, but requires an update to a number of component names. It also removes a number of form-related TS exports.
11
+
12
+ ### Migration steps
13
+
14
+ 1. **Convert component names**
15
+
16
+ These components have been changed, and must be renamed as follows:
17
+
18
+ | Old name (2.3) | New name (2.4) |
19
+ |---|---|
20
+ | `<TideInputCheckbox />` | `<TideInputCheckboxDeprecated />` |
21
+ | `<TideInputRadio />` | `<TideInputRadioDeprecated />` |
22
+ | `<TideInputSelect />` | `<TideInputSelectDeprecated />` |
23
+ | `<TideInputText />` | `<TideInputTextDeprecated />` |
24
+ | `<TideInputTextarea />` | `<TideInputTextareaDeprecated />` |
25
+
26
+ The components are otherwise identical.
27
+
28
+ 2. **Replace usage of removed types**
29
+
30
+ The following types are no longer exported from the TIDE repository and must be replaced:
31
+ - `BooleanInput`
32
+ - `BooleanValue`
33
+ - `CheckboxField`
34
+ - `CheckboxInput`
35
+ - `Field`
36
+ - `GenericField`
37
+ - `GenericInput`
38
+ - `Input`
39
+ - `SelectField`
40
+ - `SelectInput`
41
+ - `StringField`
42
+ - `StringInput`
43
+ - `StringValue`
44
+ - `TextField`
45
+ - `TextareaField`
46
+ - `TextareaInput`
47
+
48
+ ✅ After these changes your project should be compatible with **TIDE 2.4**.
49
+
7
50
  ## Upgrading from 2.2 → 2.3
8
51
 
9
- **Summary**
52
+ ### Summary
10
53
  Version **2.3** consolidates certain CSS files. The same utilities can now be made globally available in a TIDE consumer repository leveraging [partial integration](./integration-partial.md) by cherry-picking a smaller set of `dist` files from the `node_modules` subdirectory.
11
54
 
12
55
  **Important:** Upgrading to **2.3** introduces breaking changes unless deprecated imports are removed.
@@ -1,8 +1,10 @@
1
1
  import * as STYLES from '@/types/Storybook';
2
- import { formatArgType, getConstantsByValues, prependNoneAsEmpty } from '@/utilities/storybook';
2
+ import { CSS } from '@/types/Styles';
3
+ import { flatten, formatArgType, getConstantsByValues, prependNoneAsEmpty } from '@/utilities/storybook';
3
4
 
4
5
  import type { StoryContext } from '@storybook/vue3';
5
6
 
7
+ const BORDER_COLOR = prependNoneAsEmpty(flatten(CSS.BORDER.COLOR));
6
8
  const BORDER_RADIUS = prependNoneAsEmpty(STYLES.BORDER_RADIUS);
7
9
  const BORDER_SIDE = prependNoneAsEmpty(STYLES.BORDER_SIDE);
8
10
  const BORDER_STYLE = prependNoneAsEmpty(STYLES.BORDER_STYLE);
@@ -16,18 +18,21 @@ const formatArgs = (args: any) => {
16
18
 
17
19
  const formatClassNames = (args: any) => {
18
20
  const classNames: string[] = [];
21
+ const hasBorder = args.borderSide || args.borderWidth;
19
22
 
20
- if (args.borderSide === BORDER_SIDE.Full && args.borderWidth && args.borderRadius) {
21
- classNames.push(args.borderRadius);
22
- }
23
+ // Any selection for any property should also add a side and width or nothing will be visible.
24
+ if (hasBorder) {
25
+ const side = args.borderSide || BORDER_SIDE.Full;
26
+ const width = args.borderWidth || BORDER_WIDTH['1px'];
23
27
 
24
- if (args.borderSide && args.borderWidth) {
25
- classNames.push(`${args.borderSide}-${args.borderWidth}`);
28
+ classNames.push(`${side}-${width}`);
29
+ } else if (args.borderStyle || args.borderColor || args.borderRadius) {
30
+ classNames.push(CSS.BORDER.FULL.ONE);
26
31
  }
27
32
 
28
- if (args.borderSide && args.borderWidth && args.borderStyle) {
29
- classNames.push(args.borderStyle);
30
- }
33
+ if (args.borderStyle) classNames.push(args.borderStyle);
34
+ if (args.borderColor) classNames.push(args.borderColor);
35
+ if (args.borderRadius) classNames.push(args.borderRadius);
31
36
 
32
37
  return classNames;
33
38
  };
@@ -67,22 +72,28 @@ const render = (args: any) => ({
67
72
 
68
73
  export default {
69
74
  argTypes: {
75
+ borderColor: {
76
+ ...formatArgType({ BORDER_COLOR }),
77
+ description: 'Applies a border color',
78
+ name: 'Border Color',
79
+ table: {
80
+ defaultValue: { summary: 'None' },
81
+ type: { summary: 'CSS.BORDER.COLOR' },
82
+ },
83
+ },
70
84
  borderRadius: {
71
85
  ...formatArgType({ BORDER_RADIUS }),
72
86
  description: 'Dictates severity of rounded corners',
73
- if: { arg: 'borderSide', eq: BORDER_SIDE.Full },
74
87
  name: 'Border Radius',
75
88
  },
76
89
  borderSide: {
77
90
  ...formatArgType({ BORDER_SIDE }),
78
91
  description: 'Dictates to which edge(s) the border applies',
79
- if: { arg: 'borderWidth', neq: BORDER_WIDTH.None },
80
92
  name: 'Border Side',
81
93
  },
82
94
  borderStyle: {
83
95
  ...formatArgType({ BORDER_STYLE }),
84
96
  description: 'Applies a border style',
85
- if: { arg: 'borderWidth', neq: BORDER_STYLE.None },
86
97
  name: 'Border Style',
87
98
  },
88
99
  borderWidth: {
@@ -92,6 +103,7 @@ export default {
92
103
  },
93
104
  },
94
105
  args: {
106
+ borderColor: BORDER_COLOR.None,
95
107
  borderRadius: BORDER_RADIUS.None,
96
108
  borderSide: BORDER_SIDE.None,
97
109
  borderStyle: BORDER_STYLE.None,
@@ -200,7 +212,7 @@ export const BorderFullDashed2px = {
200
212
  borderStyle: BORDER_STYLE.Dashed,
201
213
  borderWidth: BORDER_WIDTH['2px'],
202
214
  },
203
- name: 'Border Full Dashed 1px',
215
+ name: 'Border Full Dashed 2px',
204
216
  };
205
217
 
206
218
  export const RadiusQuarter = {