tide-design-system 2.5.13 → 2.5.14

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 (392) hide show
  1. package/dist/tide-design-system.d.ts +2742 -0
  2. package/dist/tide-design-system.js +2 -2
  3. package/package.json +13 -2
  4. package/.eslintrc.cjs +0 -119
  5. package/.github/workflows/publish-release.yml +0 -38
  6. package/.storybook/main.ts +0 -70
  7. package/.storybook/preview.ts +0 -256
  8. package/docs/assets/full-bleed.gif +0 -0
  9. package/docs/assets/layout-grid-default.webp +0 -0
  10. package/docs/assets/layout-grid-fluid.webp +0 -0
  11. package/docs/assets/layout-grid.webp +0 -0
  12. package/docs/assets/native-input-validation.png +0 -0
  13. package/docs/configuation.md +0 -47
  14. package/docs/development.md +0 -163
  15. package/docs/figma.md +0 -43
  16. package/docs/forms.md +0 -484
  17. package/docs/grid-layout.md +0 -83
  18. package/docs/images.md +0 -50
  19. package/docs/integration-full.md +0 -84
  20. package/docs/integration-partial.md +0 -39
  21. package/docs/migration.md +0 -74
  22. package/docs/storybook.md +0 -44
  23. package/docs/style-guide.md +0 -22
  24. package/docs/toast.md +0 -61
  25. package/docs/token-cheatsheet.md +0 -63
  26. package/docs/upgrading.md +0 -188
  27. package/docs/workflows.md +0 -20
  28. package/index.html +0 -14
  29. package/index.ts +0 -201
  30. package/netlify.toml +0 -3
  31. package/src/assets/css/fonts.css +0 -36
  32. package/src/assets/css/grid-layout.css +0 -34
  33. package/src/assets/css/main.css +0 -5
  34. package/src/assets/css/realm/aero.css +0 -25
  35. package/src/assets/css/realm/atv.css +0 -25
  36. package/src/assets/css/realm/boatmart.css +0 -25
  37. package/src/assets/css/realm/cycle.css +0 -24
  38. package/src/assets/css/realm/equipment.css +0 -25
  39. package/src/assets/css/realm/pwc.css +0 -25
  40. package/src/assets/css/realm/rv.css +0 -25
  41. package/src/assets/css/realm/snow.css +0 -25
  42. package/src/assets/css/realm/truck.css +0 -25
  43. package/src/assets/css/reset.css +0 -99
  44. package/src/assets/css/storybook.css +0 -18
  45. package/src/assets/css/utilities-base.css +0 -574
  46. package/src/assets/css/utilities-responsive.css +0 -2307
  47. package/src/assets/css/utilities.css +0 -16
  48. package/src/assets/css/variables.css +0 -223
  49. package/src/assets/svg/branding/logo/logo-aero.svg +0 -4
  50. package/src/assets/svg/branding/logo/logo-atv.svg +0 -6
  51. package/src/assets/svg/branding/logo/logo-boatmart.svg +0 -4
  52. package/src/assets/svg/branding/logo/logo-cycle.svg +0 -4
  53. package/src/assets/svg/branding/logo/logo-equipment.svg +0 -4
  54. package/src/assets/svg/branding/logo/logo-pwc.svg +0 -4
  55. package/src/assets/svg/branding/logo/logo-rv.svg +0 -6
  56. package/src/assets/svg/branding/logo/logo-snow.svg +0 -4
  57. package/src/assets/svg/branding/logo/logo-truck.svg +0 -5
  58. package/src/assets/svg/branding/mark/mark-aero.svg +0 -3
  59. package/src/assets/svg/branding/mark/mark-atv.svg +0 -4
  60. package/src/assets/svg/branding/mark/mark-boatmart.svg +0 -3
  61. package/src/assets/svg/branding/mark/mark-cycle.svg +0 -3
  62. package/src/assets/svg/branding/mark/mark-equipment.svg +0 -3
  63. package/src/assets/svg/branding/mark/mark-pwc.svg +0 -3
  64. package/src/assets/svg/branding/mark/mark-rv.svg +0 -4
  65. package/src/assets/svg/branding/mark/mark-snow.svg +0 -3
  66. package/src/assets/svg/branding/mark/mark-truck.svg +0 -4
  67. package/src/assets/svg/icons/IconAccountBalance.svg +0 -5
  68. package/src/assets/svg/icons/IconAcute.svg +0 -3
  69. package/src/assets/svg/icons/IconAdd.svg +0 -3
  70. package/src/assets/svg/icons/IconAiDescription.svg +0 -7
  71. package/src/assets/svg/icons/IconAlignSpaceEven.svg +0 -3
  72. package/src/assets/svg/icons/IconApplePay.svg +0 -5
  73. package/src/assets/svg/icons/IconArrowBack.svg +0 -3
  74. package/src/assets/svg/icons/IconArrowCycle.svg +0 -5
  75. package/src/assets/svg/icons/IconArrowForward.svg +0 -3
  76. package/src/assets/svg/icons/IconArrowRight.svg +0 -3
  77. package/src/assets/svg/icons/IconArrowUp.svg +0 -3
  78. package/src/assets/svg/icons/IconAssignment.svg +0 -3
  79. package/src/assets/svg/icons/IconAttachMoney.svg +0 -4
  80. package/src/assets/svg/icons/IconAutoRenew.svg +0 -3
  81. package/src/assets/svg/icons/IconAwardStar.svg +0 -5
  82. package/src/assets/svg/icons/IconBed.svg +0 -3
  83. package/src/assets/svg/icons/IconBolt.svg +0 -3
  84. package/src/assets/svg/icons/IconBookmark.svg +0 -5
  85. package/src/assets/svg/icons/IconBunkhouse.svg +0 -3
  86. package/src/assets/svg/icons/IconCalculate.svg +0 -3
  87. package/src/assets/svg/icons/IconCalendarMonth.svg +0 -5
  88. package/src/assets/svg/icons/IconCall.svg +0 -5
  89. package/src/assets/svg/icons/IconCallQuality.svg +0 -3
  90. package/src/assets/svg/icons/IconCarRental.svg +0 -3
  91. package/src/assets/svg/icons/IconCheck.svg +0 -3
  92. package/src/assets/svg/icons/IconChevronLeft.svg +0 -3
  93. package/src/assets/svg/icons/IconChevronRight.svg +0 -3
  94. package/src/assets/svg/icons/IconClear.svg +0 -3
  95. package/src/assets/svg/icons/IconClose.svg +0 -3
  96. package/src/assets/svg/icons/IconContract.svg +0 -3
  97. package/src/assets/svg/icons/IconCrash.svg +0 -3
  98. package/src/assets/svg/icons/IconDashboardCustomize.svg +0 -3
  99. package/src/assets/svg/icons/IconDelete.svg +0 -5
  100. package/src/assets/svg/icons/IconDiamond.svg +0 -5
  101. package/src/assets/svg/icons/IconDirectionsBoat.svg +0 -3
  102. package/src/assets/svg/icons/IconDomain.svg +0 -3
  103. package/src/assets/svg/icons/IconDraft.svg +0 -3
  104. package/src/assets/svg/icons/IconEdit.svg +0 -5
  105. package/src/assets/svg/icons/IconEngine.svg +0 -3
  106. package/src/assets/svg/icons/IconEngineering.svg +0 -3
  107. package/src/assets/svg/icons/IconError.svg +0 -5
  108. package/src/assets/svg/icons/IconExpandContent.svg +0 -3
  109. package/src/assets/svg/icons/IconExpandLess.svg +0 -3
  110. package/src/assets/svg/icons/IconExpandMore.svg +0 -3
  111. package/src/assets/svg/icons/IconFacebook.svg +0 -3
  112. package/src/assets/svg/icons/IconFavorite.svg +0 -5
  113. package/src/assets/svg/icons/IconFavoriteFilled.svg +0 -5
  114. package/src/assets/svg/icons/IconFlag.svg +0 -3
  115. package/src/assets/svg/icons/IconFormatBold.svg +0 -5
  116. package/src/assets/svg/icons/IconFormatItalic.svg +0 -3
  117. package/src/assets/svg/icons/IconFormatListBulleted.svg +0 -5
  118. package/src/assets/svg/icons/IconForum.svg +0 -5
  119. package/src/assets/svg/icons/IconGas.svg +0 -3
  120. package/src/assets/svg/icons/IconGavel.svg +0 -5
  121. package/src/assets/svg/icons/IconGears.svg +0 -3
  122. package/src/assets/svg/icons/IconGlobeLocationPin.svg +0 -3
  123. package/src/assets/svg/icons/IconGoogle.svg +0 -18
  124. package/src/assets/svg/icons/IconGooglePay.svg +0 -5
  125. package/src/assets/svg/icons/IconGrid.svg +0 -3
  126. package/src/assets/svg/icons/IconHandshake.svg +0 -3
  127. package/src/assets/svg/icons/IconHandyman.svg +0 -3
  128. package/src/assets/svg/icons/IconHeight.svg +0 -3
  129. package/src/assets/svg/icons/IconHelp.svg +0 -5
  130. package/src/assets/svg/icons/IconInfo.svg +0 -5
  131. package/src/assets/svg/icons/IconInformation.svg +0 -3
  132. package/src/assets/svg/icons/IconInsertText.svg +0 -5
  133. package/src/assets/svg/icons/IconInstagram.svg +0 -3
  134. package/src/assets/svg/icons/IconIosShare.svg +0 -5
  135. package/src/assets/svg/icons/IconLayout.svg +0 -3
  136. package/src/assets/svg/icons/IconLevellingJack.svg +0 -3
  137. package/src/assets/svg/icons/IconLinkedIn.svg +0 -3
  138. package/src/assets/svg/icons/IconLocalShipping.svg +0 -5
  139. package/src/assets/svg/icons/IconLock.svg +0 -5
  140. package/src/assets/svg/icons/IconMail.svg +0 -5
  141. package/src/assets/svg/icons/IconMenu.svg +0 -3
  142. package/src/assets/svg/icons/IconMoneyBag.svg +0 -3
  143. package/src/assets/svg/icons/IconMoreHoriz.svg +0 -5
  144. package/src/assets/svg/icons/IconMove.svg +0 -3
  145. package/src/assets/svg/icons/IconNotifications.svg +0 -5
  146. package/src/assets/svg/icons/IconOdometer.svg +0 -3
  147. package/src/assets/svg/icons/IconOpenInNew.svg +0 -5
  148. package/src/assets/svg/icons/IconPalette.svg +0 -5
  149. package/src/assets/svg/icons/IconPaypal.svg +0 -5
  150. package/src/assets/svg/icons/IconPerson.svg +0 -5
  151. package/src/assets/svg/icons/IconPersonSearch.svg +0 -3
  152. package/src/assets/svg/icons/IconPhotoCamera.svg +0 -5
  153. package/src/assets/svg/icons/IconPinterest.svg +0 -5
  154. package/src/assets/svg/icons/IconPlayArrow.svg +0 -3
  155. package/src/assets/svg/icons/IconPolicy.svg +0 -3
  156. package/src/assets/svg/icons/IconPower.svg +0 -3
  157. package/src/assets/svg/icons/IconPowerOff.svg +0 -3
  158. package/src/assets/svg/icons/IconPriorityHigh.svg +0 -3
  159. package/src/assets/svg/icons/IconRemove.svg +0 -3
  160. package/src/assets/svg/icons/IconRequestQuote.svg +0 -3
  161. package/src/assets/svg/icons/IconResetWrench.svg +0 -3
  162. package/src/assets/svg/icons/IconRoad.svg +0 -3
  163. package/src/assets/svg/icons/IconRoundedCorner.svg +0 -5
  164. package/src/assets/svg/icons/IconRuler.svg +0 -3
  165. package/src/assets/svg/icons/IconSailing.svg +0 -3
  166. package/src/assets/svg/icons/IconSchool.svg +0 -3
  167. package/src/assets/svg/icons/IconSearch.svg +0 -5
  168. package/src/assets/svg/icons/IconSeating.svg +0 -3
  169. package/src/assets/svg/icons/IconSell.svg +0 -5
  170. package/src/assets/svg/icons/IconSensors.svg +0 -3
  171. package/src/assets/svg/icons/IconSettings.svg +0 -3
  172. package/src/assets/svg/icons/IconShare.svg +0 -5
  173. package/src/assets/svg/icons/IconShieldCheck.svg +0 -3
  174. package/src/assets/svg/icons/IconShoppingCart.svg +0 -5
  175. package/src/assets/svg/icons/IconSleeps.svg +0 -3
  176. package/src/assets/svg/icons/IconSms.svg +0 -5
  177. package/src/assets/svg/icons/IconSnowflake.svg +0 -3
  178. package/src/assets/svg/icons/IconStar.svg +0 -5
  179. package/src/assets/svg/icons/IconStarFilled.svg +0 -3
  180. package/src/assets/svg/icons/IconStarHalf.svg +0 -3
  181. package/src/assets/svg/icons/IconSummarize.svg +0 -3
  182. package/src/assets/svg/icons/IconSwapHoriz.svg +0 -3
  183. package/src/assets/svg/icons/IconSwapVert.svg +0 -5
  184. package/src/assets/svg/icons/IconThreeDRotation.svg +0 -18
  185. package/src/assets/svg/icons/IconThumbUp.svg +0 -3
  186. package/src/assets/svg/icons/IconTrendingDown.svg +0 -5
  187. package/src/assets/svg/icons/IconTrophy.svg +0 -5
  188. package/src/assets/svg/icons/IconTune.svg +0 -5
  189. package/src/assets/svg/icons/IconTwitter.svg +0 -5
  190. package/src/assets/svg/icons/IconUmbrella.svg +0 -3
  191. package/src/assets/svg/icons/IconVerified.svg +0 -4
  192. package/src/assets/svg/icons/IconVideocam.svg +0 -5
  193. package/src/assets/svg/icons/IconViewInAr.svg +0 -5
  194. package/src/assets/svg/icons/IconVisibility.svg +0 -5
  195. package/src/assets/svg/icons/IconVolumeOff.svg +0 -5
  196. package/src/assets/svg/icons/IconVolumeOn.svg +0 -5
  197. package/src/assets/svg/icons/IconWarehouse.svg +0 -3
  198. package/src/assets/svg/icons/IconWarning.svg +0 -5
  199. package/src/assets/svg/icons/IconWater.svg +0 -3
  200. package/src/assets/svg/icons/IconWeight.svg +0 -3
  201. package/src/assets/svg/icons/IconWidth.svg +0 -3
  202. package/src/assets/svg/icons/IconWorkspacePremium.svg +0 -3
  203. package/src/assets/svg/icons/IconWrench.svg +0 -3
  204. package/src/assets/svg/icons/IconYoutube.svg +0 -5
  205. package/src/assets/svg/icons/realm/aero/IconAeroFlight.svg +0 -3
  206. package/src/assets/svg/icons/realm/aero/IconAeroHelicopter.svg +0 -3
  207. package/src/assets/svg/icons/realm/aero/IconAeroModeFan.svg +0 -3
  208. package/src/assets/svg/icons/realm/aero/IconAeroPlaneContrails.svg +0 -3
  209. package/src/assets/svg/icons/realm/atv/IconAtvAtv.svg +0 -3
  210. package/src/assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg +0 -3
  211. package/src/assets/svg/icons/realm/atv/IconAtvGoKart.svg +0 -3
  212. package/src/assets/svg/icons/realm/atv/IconAtvGolfCart.svg +0 -3
  213. package/src/assets/svg/icons/realm/atv/IconAtvSandRail.svg +0 -3
  214. package/src/assets/svg/icons/realm/atv/IconAtvSideBySide.svg +0 -3
  215. package/src/assets/svg/icons/realm/atv/IconAtvTrailer.svg +0 -3
  216. package/src/assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg +0 -3
  217. package/src/assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg +0 -3
  218. package/src/assets/svg/icons/realm/cycle/IconCycleMotorcycle.svg +0 -4
  219. package/src/assets/svg/icons/realm/cycle/IconCycleTrailer.svg +0 -3
  220. package/src/assets/svg/icons/realm/pwc/IconPwcPwc.svg +0 -3
  221. package/src/assets/svg/icons/realm/pwc/IconPwcSnowmobile.svg +0 -3
  222. package/src/assets/svg/icons/realm/pwc/IconPwcTrailer.svg +0 -3
  223. package/src/assets/svg/icons/realm/rv/IconRvClassA.svg +0 -3
  224. package/src/assets/svg/icons/realm/rv/IconRvClassB.svg +0 -3
  225. package/src/assets/svg/icons/realm/rv/IconRvClassC.svg +0 -3
  226. package/src/assets/svg/icons/realm/rv/IconRvDestinationTrailer.svg +0 -5
  227. package/src/assets/svg/icons/realm/rv/IconRvFifthWheel.svg +0 -3
  228. package/src/assets/svg/icons/realm/rv/IconRvFishHouse.svg +0 -3
  229. package/src/assets/svg/icons/realm/rv/IconRvParkModel.svg +0 -3
  230. package/src/assets/svg/icons/realm/rv/IconRvPopUpCamper.svg +0 -3
  231. package/src/assets/svg/icons/realm/rv/IconRvTeardropTrailer.svg +0 -4
  232. package/src/assets/svg/icons/realm/rv/IconRvTravelTrailer.svg +0 -3
  233. package/src/assets/svg/icons/realm/rv/IconRvTruckCamper.svg +0 -3
  234. package/src/assets/svg/icons/realm/snow/IconSnowMotorcycle.svg +0 -4
  235. package/src/assets/svg/icons/realm/snow/IconSnowPwc.svg +0 -3
  236. package/src/assets/svg/icons/realm/snow/IconSnowSideBySide.svg +0 -3
  237. package/src/assets/svg/icons/realm/snow/IconSnowSnowmobile.svg +0 -3
  238. package/src/assets/svg/icons/realm/snow/IconSnowTrailer.svg +0 -3
  239. package/src/components/InternalBaseLink.vue +0 -11
  240. package/src/components/TideAccordionItem.vue +0 -120
  241. package/src/components/TideAlert.vue +0 -186
  242. package/src/components/TideBadge.vue +0 -64
  243. package/src/components/TideBadgeTrustedPartner.vue +0 -52
  244. package/src/components/TideBadgeVerifiedVehicle.vue +0 -46
  245. package/src/components/TideBreadCrumbs.vue +0 -62
  246. package/src/components/TideButton.vue +0 -115
  247. package/src/components/TideButtonIcon.vue +0 -91
  248. package/src/components/TideButtonPagination.vue +0 -87
  249. package/src/components/TideButtonSave.vue +0 -109
  250. package/src/components/TideButtonSegmented.vue +0 -115
  251. package/src/components/TideCard.vue +0 -107
  252. package/src/components/TideCarousel.vue +0 -489
  253. package/src/components/TideChipAction.vue +0 -83
  254. package/src/components/TideChipFilter.vue +0 -71
  255. package/src/components/TideChipInput.vue +0 -54
  256. package/src/components/TideColumns.vue +0 -65
  257. package/src/components/TideDivider.vue +0 -43
  258. package/src/components/TideForm.vue +0 -33
  259. package/src/components/TideIcon.vue +0 -85
  260. package/src/components/TideImage.vue +0 -126
  261. package/src/components/TideImageBackground.vue +0 -69
  262. package/src/components/TideIndicator.vue +0 -63
  263. package/src/components/TideInputCheckbox.vue +0 -210
  264. package/src/components/TideInputCheckboxDeprecated.vue +0 -117
  265. package/src/components/TideInputRadio.vue +0 -115
  266. package/src/components/TideInputRadioDeprecated.vue +0 -119
  267. package/src/components/TideInputSelect.vue +0 -331
  268. package/src/components/TideInputSelectDeprecated.vue +0 -245
  269. package/src/components/TideInputSupportingText.vue +0 -44
  270. package/src/components/TideInputText.vue +0 -382
  271. package/src/components/TideInputTextDeprecated.vue +0 -327
  272. package/src/components/TideInputTextarea.vue +0 -235
  273. package/src/components/TideInputTextareaDeprecated.vue +0 -198
  274. package/src/components/TideLink.vue +0 -95
  275. package/src/components/TideMenuItem.vue +0 -83
  276. package/src/components/TideModal.vue +0 -281
  277. package/src/components/TidePagination.vue +0 -65
  278. package/src/components/TidePopover.vue +0 -198
  279. package/src/components/TideRating.vue +0 -109
  280. package/src/components/TideRealmLogo.vue +0 -154
  281. package/src/components/TideSeoLinks.vue +0 -59
  282. package/src/components/TideSheet.vue +0 -209
  283. package/src/components/TideSwitch.vue +0 -101
  284. package/src/components/TideTabs.vue +0 -63
  285. package/src/components/TideToaster.vue +0 -97
  286. package/src/composables/useTideConfig.ts +0 -23
  287. package/src/composables/useTideForm.ts +0 -25
  288. package/src/composables/useTideToaster.ts +0 -63
  289. package/src/contexts/sandbox/AppSandbox.vue +0 -7
  290. package/src/contexts/sandbox/app-sandbox.ts +0 -10
  291. package/src/stories/DemoCssUtilities.stories.ts +0 -154
  292. package/src/stories/DemoCssUtilitiesByTextInput.stories.ts +0 -61
  293. package/src/stories/FoundationsBorder.stories.ts +0 -272
  294. package/src/stories/FoundationsColor.stories.ts +0 -311
  295. package/src/stories/FoundationsFlexbox.stories.ts +0 -184
  296. package/src/stories/FoundationsGrid.stories.ts +0 -126
  297. package/src/stories/FoundationsMargin.stories.ts +0 -155
  298. package/src/stories/FoundationsPadding.stories.ts +0 -108
  299. package/src/stories/FoundationsShadow.stories.ts +0 -103
  300. package/src/stories/FoundationsTransparency.stories.ts +0 -114
  301. package/src/stories/FoundationsTypography.stories.ts +0 -212
  302. package/src/stories/Template.stories.ts +0 -73
  303. package/src/stories/TideAccordionItem.stories.ts +0 -91
  304. package/src/stories/TideAlert.stories.ts +0 -133
  305. package/src/stories/TideBadge.stories.ts +0 -90
  306. package/src/stories/TideBadgeTrustedPartner.stories.ts +0 -34
  307. package/src/stories/TideBadgeVerifiedVehicle.stories.ts +0 -22
  308. package/src/stories/TideBreadCrumbs.stories.ts +0 -42
  309. package/src/stories/TideButton.stories.ts +0 -132
  310. package/src/stories/TideButtonIcon.stories.ts +0 -109
  311. package/src/stories/TideButtonPagination.stories.ts +0 -99
  312. package/src/stories/TideButtonSave.stories.ts +0 -62
  313. package/src/stories/TideButtonSegmented.stories.ts +0 -110
  314. package/src/stories/TideCard.stories.ts +0 -102
  315. package/src/stories/TideCarousel.stories.ts +0 -219
  316. package/src/stories/TideChipAction.stories.ts +0 -81
  317. package/src/stories/TideChipFilter.stories.ts +0 -84
  318. package/src/stories/TideChipInput.stories.ts +0 -56
  319. package/src/stories/TideColumns.stories.ts +0 -89
  320. package/src/stories/TideDivider.stories.ts +0 -48
  321. package/src/stories/TideIcon.stories.ts +0 -31
  322. package/src/stories/TideImage.stories.ts +0 -124
  323. package/src/stories/TideImageBackground.stories.ts +0 -114
  324. package/src/stories/TideIndicator.stories.ts +0 -32
  325. package/src/stories/TideInputCheckbox.stories.ts +0 -138
  326. package/src/stories/TideInputRadio.stories.ts +0 -100
  327. package/src/stories/TideInputSelect.stories.ts +0 -244
  328. package/src/stories/TideInputText.stories.ts +0 -221
  329. package/src/stories/TideInputTextarea.stories.ts +0 -156
  330. package/src/stories/TideLink.stories.ts +0 -127
  331. package/src/stories/TideMenuItem.stories.ts +0 -117
  332. package/src/stories/TideModal.stories.ts +0 -219
  333. package/src/stories/TidePagination.stories.ts +0 -100
  334. package/src/stories/TidePopover.stories.ts +0 -101
  335. package/src/stories/TideRating.stories.ts +0 -114
  336. package/src/stories/TideRealmLogo.stories.ts +0 -93
  337. package/src/stories/TideSeoLinks.stories.ts +0 -68
  338. package/src/stories/TideSheet.stories.ts +0 -152
  339. package/src/stories/TideSwitch.stories.ts +0 -72
  340. package/src/stories/TideTabs.stories.ts +0 -114
  341. package/src/stories/TideToaster.stories.ts +0 -117
  342. package/src/stories/Welcome.mdx +0 -17
  343. package/src/types/Alert.ts +0 -8
  344. package/src/types/Badge.ts +0 -76
  345. package/src/types/BreadCrumb.ts +0 -5
  346. package/src/types/Breakpoint.ts +0 -18
  347. package/src/types/Card.ts +0 -7
  348. package/src/types/Element.ts +0 -13
  349. package/src/types/FieldDeprecated.ts +0 -92
  350. package/src/types/Form.ts +0 -1
  351. package/src/types/FormDeprecated.ts +0 -91
  352. package/src/types/Formatted.ts +0 -23
  353. package/src/types/Icon.ts +0 -202
  354. package/src/types/Image.ts +0 -7
  355. package/src/types/Link.ts +0 -5
  356. package/src/types/Orientation.ts +0 -6
  357. package/src/types/Priority.ts +0 -11
  358. package/src/types/Realm.ts +0 -14
  359. package/src/types/RealmLogo.ts +0 -23
  360. package/src/types/Select.ts +0 -9
  361. package/src/types/Size.ts +0 -13
  362. package/src/types/Source.ts +0 -6
  363. package/src/types/Storybook.ts +0 -253
  364. package/src/types/Styles.ts +0 -526
  365. package/src/types/Tab.ts +0 -5
  366. package/src/types/Target.ts +0 -6
  367. package/src/types/TextInput.ts +0 -28
  368. package/src/types/Toast.ts +0 -21
  369. package/src/types/Type.ts +0 -6
  370. package/src/types/Validation.ts +0 -33
  371. package/src/types/ValidationDeprecated.ts +0 -41
  372. package/src/utilities/event.ts +0 -4
  373. package/src/utilities/format.ts +0 -184
  374. package/src/utilities/forms.ts +0 -22
  375. package/src/utilities/realm.ts +0 -17
  376. package/src/utilities/storybook.ts +0 -354
  377. package/src/utilities/validation-deprecated.ts +0 -252
  378. package/src/utilities/validation.ts +0 -132
  379. package/src/utilities/viewport.ts +0 -63
  380. package/tests/InternalBaseLink.spec.ts +0 -61
  381. package/tests/TideRealmLogo.spec.ts +0 -58
  382. package/tests/svg-icons.spec.ts +0 -74
  383. package/tests/utilities-format.spec.ts +0 -470
  384. package/tests/utilities-storybook.spec.ts +0 -99
  385. package/tsconfig.app.json +0 -14
  386. package/tsconfig.config.json +0 -12
  387. package/tsconfig.json +0 -35
  388. package/tsconfig.node.json +0 -7
  389. package/tsconfig.vitest.json +0 -10
  390. package/vite-env.d.ts +0 -2
  391. package/vite.config.sandbox.ts +0 -29
  392. package/vite.config.ts +0 -37
@@ -1,186 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders an alert component with customizable content and behavior.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidealert--docs) for TideAlert
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import { Comment, computed, useSlots } from 'vue';
12
-
13
- import TideButtonIcon from '@/components/TideButtonIcon.vue';
14
- import TideIcon from '@/components/TideIcon.vue';
15
- import TideLink from '@/components/TideLink.vue';
16
- import { ALERT } from '@/types/Alert';
17
- import { ELEMENT } from '@/types/Element';
18
- import { ICON } from '@/types/Icon';
19
- import { PRIORITY } from '@/types/Priority';
20
- import { SIZE } from '@/types/Size';
21
- import { CSS } from '@/types/Styles';
22
-
23
- import type { Alert } from '@/types/Alert';
24
-
25
- type Props = {
26
- /** Call To Action that renders as a TideLink; clicking emits a separate `click` event */
27
- ctaLabel?: string;
28
-
29
- /** Heading text */
30
- heading?: string;
31
-
32
- /** Determines whether the Alert can be closed by the user */
33
- isDismissible?: boolean;
34
-
35
- /** Determines whether the Alert is an overlay or displaces content */
36
- isToast?: boolean;
37
-
38
- /** Alert type */
39
- type?: Alert;
40
- };
41
-
42
- type Emits = {
43
- (event: 'close'): void;
44
- (event: 'ctaClick'): void;
45
- };
46
-
47
- const props = withDefaults(defineProps<Props>(), {
48
- ctaLabel: undefined,
49
- heading: undefined,
50
- isDismissible: true,
51
- isToast: false,
52
- type: ALERT.INFO,
53
- });
54
-
55
- const emit = defineEmits<Emits>();
56
- const slots = useSlots();
57
- const hasBody = computed(() => {
58
- const nodes = slots.default?.();
59
- if (!nodes) return false;
60
-
61
- return nodes.some(
62
- (node) => node.type !== Comment && (typeof node.children !== 'string' || node.children.trim().length > 0)
63
- );
64
- });
65
-
66
- const iconType = computed(() => {
67
- if (props.type === ALERT.ERROR) return ICON.PRIORITY_HIGH;
68
- if (props.type === ALERT.SUCCESS) return ICON.CHECK;
69
- if (props.type === ALERT.WARNING) return ICON.WARNING;
70
- return ICON.INFORMATION;
71
- });
72
- </script>
73
-
74
- <template>
75
- <div
76
- :class="[
77
- props.type,
78
- 'tide-alert',
79
- CSS.AXIS2.CENTER,
80
- CSS.BORDER.RADIUS.HALF,
81
- CSS.DISPLAY.GRID,
82
- CSS.PADDING.FULL.ONE,
83
- !props.isToast && props.type === ALERT.ERROR ? [CSS.BG.GLOBAL.SURFACE.ERROR, CSS.BORDER.COLOR.GLOBAL.ERROR] : '',
84
- !props.isToast && props.type === ALERT.INFO ? [CSS.BG.GLOBAL.SURFACE.INFO, CSS.BORDER.COLOR.GLOBAL.INFO] : '',
85
- !props.isToast && props.type === ALERT.SUCCESS
86
- ? [CSS.BG.GLOBAL.SURFACE.SUCCESS, CSS.BORDER.COLOR.GLOBAL.SUCCESS]
87
- : '',
88
- !props.isToast && props.type === ALERT.WARNING
89
- ? [CSS.BG.GLOBAL.SURFACE.WARNING, CSS.BORDER.COLOR.GLOBAL.WARNING]
90
- : '',
91
- props.isToast ? [CSS.BG.SECONDARY, CSS.FONT.COLOR.SECONDARY, CSS.SHADOW.BOTTOM] : CSS.BORDER.LEFT.TWO,
92
- ]"
93
- >
94
- <div
95
- :class="[
96
- 'tide-alert-icon',
97
- CSS.PADDING.FULL.QUARTER,
98
- CSS.BORDER.RADIUS.FULL,
99
- CSS.FONT.COLOR.SURFACE.INVERSE,
100
- props.type === ALERT.ERROR && CSS.BG.GLOBAL.PRIMARY.ERROR,
101
- props.type === ALERT.INFO && CSS.BG.GLOBAL.PRIMARY.INFO,
102
- props.type === ALERT.SUCCESS && CSS.BG.GLOBAL.PRIMARY.SUCCESS,
103
- props.type === ALERT.WARNING && CSS.BG.GLOBAL.PRIMARY.WARNING,
104
- ]"
105
- v-if="!props.isToast"
106
- >
107
- <TideIcon
108
- :icon="iconType"
109
- :size="SIZE.SMALL"
110
- />
111
- </div>
112
-
113
- <div
114
- :class="[
115
- 'tide-alert-heading',
116
- CSS.DISPLAY.FLEX,
117
- CSS.AXIS2.CENTER,
118
- CSS.FLEX.DIRECTION.ROW,
119
- !hasBody ? [CSS.AXIS1.BETWEEN, CSS.MARGIN.RIGHT.HALF] : '',
120
- ]"
121
- >
122
- <span :class="CSS.FONT.ROLE.LABEL_2_SEMIBOLD">{{ props.heading }}</span>
123
-
124
- <TideLink
125
- :class="[CSS.FONT.ROLE.LINK_2]"
126
- :element="ELEMENT.BUTTON"
127
- :label="props.ctaLabel"
128
- @click="emit('ctaClick')"
129
- v-if="props.ctaLabel && !hasBody"
130
- />
131
- </div>
132
-
133
- <TideButtonIcon
134
- :class="['tide-alert-close', CSS.AXIS2.CENTER, CSS.FONT.COLOR.SURFACE.DEFAULT]"
135
- :icon="ICON.CLOSE"
136
- :priority="PRIORITY.QUATERNARY"
137
- @click="emit('close')"
138
- aria-label="Close alert"
139
- v-if="isDismissible"
140
- />
141
-
142
- <div :class="['tide-alert-body', CSS.FONT.ROLE.BODY_2, !props.isToast && CSS.FONT.COLOR.SURFACE.DEFAULT]">
143
- <slot />
144
-
145
- <div
146
- :class="[CSS.MARGIN.TOP.HALF]"
147
- v-if="props.ctaLabel && hasBody"
148
- >
149
- <TideLink
150
- :class="[CSS.FONT.ROLE.LINK_2]"
151
- :element="ELEMENT.BUTTON"
152
- :label="props.ctaLabel"
153
- @click="emit('ctaClick')"
154
- v-if="props.ctaLabel"
155
- />
156
- </div>
157
- </div>
158
- </div>
159
- </template>
160
-
161
- <style scoped>
162
- .tide-alert {
163
- grid-template-areas:
164
- 'icon heading close'
165
- '. body .';
166
- grid-template-columns: auto var(--tide-safe-fr) auto;
167
- grid-column-gap: var(--tide-spacing-1\/2);
168
- max-width: var(--tide-max-width, 640px);
169
- }
170
-
171
- .tide-alert-icon {
172
- grid-area: icon;
173
- }
174
-
175
- .tide-alert-heading {
176
- grid-area: heading;
177
- }
178
-
179
- .tide-alert-close {
180
- grid-area: close;
181
- }
182
-
183
- .tide-alert-body {
184
- grid-area: body;
185
- }
186
- </style>
@@ -1,64 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a badge component with customizable content and behavior.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidebadge--docs) for TideBadge
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import TideIcon from '@/components/TideIcon.vue';
12
- import { BADGE_COLOR_DETAILS } from '@/types/Badge';
13
- import { CSS } from '@/types/Styles';
14
-
15
- import type { BadgeColor } from '@/types/Badge';
16
- import type { Icon } from '@/types/Icon';
17
-
18
- type Props = {
19
- /** Determines which color option to adopt (if any) */
20
- color?: BadgeColor;
21
-
22
- /** Icon to left of label */
23
- iconLeading?: Icon;
24
-
25
- /** Determines whether to display the "Floating" variant styles */
26
- isFloating?: boolean;
27
-
28
- /** Badge text */
29
- label: string;
30
- };
31
-
32
- const props = withDefaults(defineProps<Props>(), {
33
- color: undefined,
34
- iconLeading: undefined,
35
- isFloating: false,
36
- });
37
- </script>
38
-
39
- <template>
40
- <div
41
- :class="[
42
- 'tide-badge',
43
- props.isFloating || props.color ? [CSS.BG.SURFACE.FLOATING, CSS.SHADOW.BOTTOM] : [CSS.BG.SURFACE.VARIANT],
44
- CSS.DISPLAY.INLINE_FLEX,
45
- CSS.AXIS2.CENTER,
46
- CSS.GAP.QUARTER,
47
- CSS.BORDER.RADIUS.QUARTER,
48
- CSS.PADDING.Y.QUARTER,
49
- CSS.PADDING.X.HALF,
50
- props.color && [CSS.BORDER.LEFT.TWO, BADGE_COLOR_DETAILS[props.color].borderColor],
51
- CSS.ELLIPSIS,
52
- CSS.FONT.ROLE.LABEL_2,
53
- CSS.WHITESPACE_WRAP.OFF,
54
- ]"
55
- >
56
- <TideIcon
57
- :class="[CSS.FLEX.SHRINK.OFF, props.color && BADGE_COLOR_DETAILS[props.color].iconColor]"
58
- :icon="props.iconLeading"
59
- v-if="props.iconLeading"
60
- />
61
-
62
- <span :class="[CSS.ELLIPSIS]">{{ props.label }}</span>
63
- </div>
64
- </template>
@@ -1,52 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a trusted partner badge component with preset years.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidebadgetrustedpartner--docs) for TideBadgeTrustedPartner
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import TideIcon from '@/components/TideIcon.vue';
12
- import { BADGE_TRUSTED } from '@/types/Badge';
13
- import { ICON } from '@/types/Icon';
14
- import { CSS } from '@/types/Styles';
15
-
16
- import type { BadgeTrustedYears } from '@/types/Badge';
17
-
18
- type Props = {
19
- /** Number of years to display in the trusted partner badge */
20
- years?: BadgeTrustedYears;
21
- };
22
-
23
- const props = withDefaults(defineProps<Props>(), {
24
- years: BADGE_TRUSTED.YEARS_5,
25
- });
26
- </script>
27
-
28
- <template>
29
- <div
30
- :class="[
31
- 'tide-badge-trusted-partner',
32
- CSS.FONT.COLOR.SURFACE.BRAND,
33
- CSS.DISPLAY.INLINE_FLEX,
34
- CSS.AXIS2.CENTER,
35
- CSS.GAP.QUARTER,
36
- CSS.ELLIPSIS,
37
- CSS.FONT.ROLE.LABEL_2,
38
- CSS.WHITESPACE_WRAP.OFF,
39
- ]"
40
- >
41
- <TideIcon
42
- :class="[CSS.FLEX.SHRINK.OFF]"
43
- :icon="ICON.AWARD_STAR"
44
- />
45
-
46
- <div :class="[CSS.ELLIPSIS]">
47
- <span>{{ props.years }} year trusted partner</span>
48
- </div>
49
- </div>
50
- </template>
51
-
52
- <style scoped></style>
@@ -1,46 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a badge component for indicating a verified vehicle.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidebadgeverifiedvehicle--docs) for TideBadgeVerifiedVehicle
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import TideIcon from '@/components/TideIcon.vue';
12
- import { ICON } from '@/types/Icon';
13
- import { CSS } from '@/types/Styles';
14
- </script>
15
-
16
- <template>
17
- <div
18
- :class="[
19
- 'tide-badge-verified-vehicle',
20
- CSS.BG.SECONDARY,
21
- CSS.FONT.ROLE.LABEL_2,
22
- CSS.FONT.COLOR.SECONDARY,
23
- CSS.DISPLAY.INLINE_FLEX,
24
- CSS.AXIS2.CENTER,
25
- CSS.GAP.QUARTER,
26
- CSS.BORDER.RADIUS.QUARTER,
27
- CSS.PADDING.Y.QUARTER,
28
- CSS.PADDING.X.HALF,
29
- CSS.ELLIPSIS,
30
- CSS.WHITESPACE_WRAP.OFF,
31
- ]"
32
- >
33
- <TideIcon
34
- :class="[CSS.FLEX.SHRINK.OFF]"
35
- :icon="ICON.VERIFIED"
36
- />
37
-
38
- <span :class="[CSS.ELLIPSIS]">Verified vehicle</span>
39
- </div>
40
- </template>
41
-
42
- <style scoped>
43
- .tide-icon {
44
- color: var(--tide-info-primary);
45
- }
46
- </style>
@@ -1,62 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a set of breadcrumbs for navigation purposes.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidebreadcrumbs--docs) for TideBreadCrumbs
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import InternalBaseLink from '@/components/InternalBaseLink.vue';
12
- import TideIcon from '@/components/TideIcon.vue';
13
- import { ICON } from '@/types/Icon';
14
- import { SIZE } from '@/types/Size';
15
- import { CSS } from '@/types/Styles';
16
-
17
- import type { BreadCrumb } from '@/types/BreadCrumb';
18
-
19
- type Props = {
20
- /** An array of labels and optional URLs to display for each bread crumb. */
21
- breadCrumbs: BreadCrumb[];
22
- };
23
-
24
- const props = withDefaults(defineProps<Props>(), {
25
- breadCrumbs: undefined,
26
- });
27
- </script>
28
-
29
- <template>
30
- <ul :class="['tide-bread-crumbs', CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER, CSS.LIST_BULLETS.OFF]">
31
- <template
32
- :key="crumb.label"
33
- v-for="(crumb, index) in props.breadCrumbs"
34
- >
35
- <li :class="[CSS.FONT.ROLE.BODY_2]">
36
- <InternalBaseLink
37
- :class="[CSS.FONT.ROLE.LINK_2, CSS.FONT.COLOR.SURFACE.DEFAULT]"
38
- :data-track="crumb.dataTrack || undefined"
39
- :href="crumb.url"
40
- v-if="crumb.url"
41
- >
42
- {{ crumb.label }}
43
- </InternalBaseLink>
44
-
45
- <span
46
- :class="[CSS.FONT.ROLE.LABEL_2, CSS.FONT.COLOR.SURFACE.VARIANT]"
47
- :data-track="crumb.dataTrack || undefined"
48
- v-else
49
- >
50
- {{ crumb.label }}
51
- </span>
52
- </li>
53
-
54
- <li v-if="props.breadCrumbs && index < props.breadCrumbs.length - 1">
55
- <TideIcon
56
- :icon="ICON.ARROW_RIGHT"
57
- :size="SIZE.SMALL"
58
- />
59
- </li>
60
- </template>
61
- </ul>
62
- </template>
@@ -1,115 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a button component with various styling options.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidebutton--docs) for TideButton
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import { computed } from 'vue';
12
-
13
- import InternalBaseLink from '@/components/InternalBaseLink.vue';
14
- import TideIcon from '@/components/TideIcon.vue';
15
- import { ELEMENT } from '@/types/Element';
16
- import { PRIORITY } from '@/types/Priority';
17
- import { SIZE, SIZE_BUTTON } from '@/types/Size';
18
- import { CSS } from '@/types/Styles';
19
- import { TARGET } from '@/types/Target';
20
-
21
- import type { Element } from '@/types/Element';
22
- import type { Icon } from '@/types/Icon';
23
- import type { Priority } from '@/types/Priority';
24
- import type { SizeButton } from '@/types/Size';
25
- import type { ButtonType } from '@/types/Type';
26
-
27
- type Props = {
28
- /** Determines clickability (Button only) */
29
- disabled?: boolean;
30
-
31
- /** HTML tag type */
32
- element?: Element;
33
-
34
- /** URL to open (Link only) */
35
- href?: string;
36
-
37
- /** Icon to left of label */
38
- iconLeading?: Icon;
39
-
40
- /** Icon to right of label */
41
- iconTrailing?: Icon;
42
-
43
- /** Determines whether to target a new browser tab (Link only) */
44
- isNewTab?: boolean;
45
-
46
- /** Button text */
47
- label: string;
48
-
49
- /** Determines visual prominence */
50
- priority?: Exclude<Priority, typeof PRIORITY.FLOATING>;
51
-
52
- /** Determines rendered size */
53
- size?: SizeButton;
54
-
55
- /** Applies type attribute to HTML element */
56
- type?: ButtonType;
57
- };
58
-
59
- const props = withDefaults(defineProps<Props>(), {
60
- disabled: false,
61
- element: ELEMENT.BUTTON,
62
- href: undefined,
63
- iconLeading: undefined,
64
- iconTrailing: undefined,
65
- isNewTab: false,
66
- label: undefined,
67
- priority: PRIORITY.PRIMARY,
68
- size: SIZE_BUTTON.LARGE,
69
- type: undefined,
70
- });
71
-
72
- const typeAttribute = computed<string | undefined>(() =>
73
- props.element === ELEMENT.BUTTON ? props.type ?? ELEMENT.BUTTON : undefined
74
- );
75
-
76
- const rootElement = computed(() => (props.element === ELEMENT.LINK ? InternalBaseLink : props.element));
77
- </script>
78
-
79
- <template>
80
- <component
81
- :class="[
82
- 'tide-button',
83
- CSS.AXIS1.CENTER,
84
- CSS.AXIS2.CENTER,
85
- CSS.BORDER.RADIUS.FULL,
86
- CSS.FONT.ROLE.LABEL_1_SEMIBOLD,
87
- CSS.GAP.HALF,
88
- CSS.PADDING.X.TWO,
89
- `tide-button-${priority}`,
90
- element === ELEMENT.LINK ? [CSS.DISPLAY.INLINE_FLEX, CSS.UNDERLINE.REST.OFF] : [CSS.DISPLAY.FLEX],
91
- size === SIZE_BUTTON.SMALL
92
- ? [CSS.FONT.ROLE.BUTTON_2, CSS.PADDING.Y.HALF]
93
- : [CSS.FONT.ROLE.BUTTON_1, CSS.PADDING.Y.ONE],
94
- ]"
95
- :disabled="element === ELEMENT.BUTTON && disabled"
96
- :href="element === ELEMENT.LINK && href ? href : undefined"
97
- :target="element === ELEMENT.LINK && isNewTab ? TARGET.BLANK : TARGET.SELF"
98
- :type="typeAttribute"
99
- :is="rootElement"
100
- >
101
- <TideIcon
102
- :icon="iconLeading"
103
- :size="size === SIZE_BUTTON.LARGE ? SIZE.LARGE : SIZE.SMALL"
104
- v-if="iconLeading"
105
- />
106
-
107
- {{ label }}
108
-
109
- <TideIcon
110
- :icon="iconTrailing"
111
- :size="size === SIZE_BUTTON.LARGE ? SIZE.LARGE : SIZE.SMALL"
112
- v-if="iconTrailing"
113
- />
114
- </component>
115
- </template>
@@ -1,91 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a icon button component with various styling options.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidebuttonicon--docs) for TideButtonIcon
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import { computed } from 'vue';
12
-
13
- import InternalBaseLink from '@/components/InternalBaseLink.vue';
14
- import TideIcon from '@/components/TideIcon.vue';
15
- import { ELEMENT } from '@/types/Element';
16
- import { PRIORITY } from '@/types/Priority';
17
- import { SIZE } from '@/types/Size';
18
- import { CSS } from '@/types/Styles';
19
- import { TARGET } from '@/types/Target';
20
-
21
- import type { Element } from '@/types/Element';
22
- import type { Icon } from '@/types/Icon';
23
- import type { Priority } from '@/types/Priority';
24
- import type { ButtonType } from '@/types/Type';
25
-
26
- type Props = {
27
- /** Determines clickability (Button only) */
28
- disabled?: boolean;
29
-
30
- /** HTML tag type */
31
- element?: Element;
32
-
33
- /** URL to open (Link only) */
34
- href?: string;
35
-
36
- /** Icon to show */
37
- icon: Icon;
38
-
39
- /** Determines whether to target a new browser tab (Link only) */
40
- isNewTab?: boolean;
41
-
42
- /** Determines visual prominence */
43
- priority?: Priority;
44
-
45
- /** Applies type attribute to HTML element */
46
- type?: ButtonType;
47
- };
48
-
49
- const props = withDefaults(defineProps<Props>(), {
50
- disabled: false,
51
- element: ELEMENT.BUTTON,
52
- href: undefined,
53
- icon: undefined,
54
- isNewTab: false,
55
- priority: PRIORITY.PRIMARY,
56
- type: undefined,
57
- });
58
-
59
- const typeAttribute = computed<string | undefined>(() =>
60
- props.element === ELEMENT.BUTTON ? props.type ?? ELEMENT.BUTTON : undefined
61
- );
62
-
63
- const rootElement = computed(() => (props.element === ELEMENT.LINK ? InternalBaseLink : props.element));
64
- </script>
65
-
66
- <template>
67
- <component
68
- :aria-label="icon"
69
- :class="[
70
- 'tide-button-icon',
71
- CSS.AXIS1.CENTER,
72
- CSS.AXIS2.CENTER,
73
- CSS.BORDER.RADIUS.FULL,
74
- CSS.DISPLAY.FLEX,
75
- CSS.PADDING.FULL.HALF,
76
- `tide-button-${priority}`,
77
- element === ELEMENT.LINK ? [CSS.UNDERLINE.REST.OFF] : '',
78
- ]"
79
- :disabled="element === ELEMENT.BUTTON && disabled"
80
- :href="element === ELEMENT.LINK && href ? href : undefined"
81
- :target="element === ELEMENT.LINK && isNewTab ? TARGET.BLANK : TARGET.SELF"
82
- :type="typeAttribute"
83
- :is="rootElement"
84
- >
85
- <TideIcon
86
- :icon="icon"
87
- :size="SIZE.LARGE"
88
- v-if="icon"
89
- />
90
- </component>
91
- </template>