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,489 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a carousel component with navigation controls and slide indicators.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidecarousel--docs) for TideCarousel
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import { computed, onMounted, onUnmounted, ref } from 'vue';
12
-
13
- import TideButtonIcon from '@/components/TideButtonIcon.vue';
14
- import { ICON } from '@/types/Icon';
15
- import { PRIORITY } from '@/types/Priority';
16
- import { CSS } from '@/types/Styles';
17
-
18
- type Props = {
19
- /** Determines whether to display the indicator dots overlay<br />(Only valid with full width cards) */
20
- hasDots?: boolean;
21
-
22
- /** Determines whether to display on-page or floating carousel */
23
- isFloating?: boolean;
24
-
25
- /** Determines font role used for title display */
26
- isHeadline1?: boolean;
27
-
28
- /** Determines whether on-page buttons should be hidden until hover */
29
- isHideawayButtons?: boolean;
30
-
31
- /** Determines whether to scroll by page or by individual slide */
32
- isScrollByPage?: boolean;
33
-
34
- /** Determines the max number of indicator dots to display at a given time */
35
- maxDots?: number;
36
-
37
- /** Determines the text displayed to the right of the title */
38
- subtitle?: string;
39
-
40
- /** Determines the title text displayed above the carousel */
41
- title?: string;
42
- };
43
-
44
- const props = withDefaults(defineProps<Props>(), {
45
- hasDots: undefined,
46
- isFloating: false,
47
- isHeadline1: false,
48
- isHideawayButtons: true,
49
- isScrollByPage: true,
50
- maxDots: 5,
51
- subtitle: undefined,
52
- title: undefined,
53
- });
54
-
55
- type Emits = {
56
- (event: 'slidesAddedToView', slidesInView: number[]): void;
57
- };
58
-
59
- const emit = defineEmits<Emits>();
60
-
61
- const carouselRef = ref<HTMLDivElement | null>(null);
62
- const containerRef = ref<HTMLDivElement | null>(null);
63
- const contentWidth = ref<number>(0);
64
- const currentPageIndex = ref<number>(0);
65
- const dotsRef = ref<HTMLDivElement | null>(null);
66
- const frameWidth = ref<number>(0);
67
- const isFirstSlide = ref<boolean>(true);
68
- const isLastSlide = ref<boolean>(false);
69
- const showButtons = ref<boolean>(true);
70
- const slideObserver = ref<IntersectionObserver | null>(null);
71
- const slides = ref<HTMLElement[]>([]);
72
- const slidesInView = ref<number[]>([]);
73
- const slotObserver = ref<MutationObserver | null>(null);
74
- const touchStart = ref<Touch | undefined>(undefined);
75
- const slidesInViewCount = ref<number>(1);
76
-
77
- const currentPage = computed(() => currentPageIndex.value + 1);
78
- const dotContainerWidth = computed(() => dotCountVisible.value * dotWidth + (dotCountVisible.value - 1) * dotGap);
79
- const dotCountVisible = computed(() => (props.maxDots > totalPages.value ? totalPages.value : props.maxDots));
80
- const totalPages = computed(() => {
81
- if (!slides.value.length) return 0;
82
- if (!props.isScrollByPage) return slides.value.length;
83
-
84
- const quotient = Math.floor(slides.value.length / slidesInViewCount.value);
85
- const remainder = slides.value.length % slidesInViewCount.value;
86
-
87
- return remainder ? quotient + 1 : quotient;
88
- });
89
-
90
- const dotGap: number = 8;
91
- const dotWidth: number = 8;
92
- let scrollTimeout: number | undefined;
93
-
94
- const getDotClass = (dotIndex: number) => {
95
- let className = '';
96
-
97
- if (dotIndex === currentPageIndex.value) className = 'tide-carousel-dot-active';
98
- if (Math.abs(currentPageIndex.value - dotIndex) === 1) className = 'tide-carousel-dot-neighbor';
99
-
100
- return className;
101
- };
102
-
103
- const getIsElementWithinContainer = (element: HTMLElement, container: HTMLElement) => {
104
- const containerRect = container.getBoundingClientRect();
105
- const containerRight = containerRect.left + containerRect.width;
106
- const elementRect = element.getBoundingClientRect();
107
- const elementRight = elementRect.left + elementRect.width;
108
-
109
- return elementRight <= containerRight && elementRect.left >= containerRect.left;
110
- };
111
-
112
- const handleTouchEnd = (event: TouchEvent) => {
113
- if (!touchStart.value) return;
114
-
115
- const touchEnd = event.changedTouches[0];
116
- const deltaX = touchStart.value.clientX - touchEnd.clientX;
117
- const deltaY = touchEnd.clientY - touchStart.value.clientY;
118
-
119
- if (Math.abs(deltaX) > Math.abs(deltaY)) scrollByDelta(deltaX);
120
- };
121
-
122
- const handleTouchStart = (event: TouchEvent) => {
123
- touchStart.value = event.touches[0];
124
- };
125
-
126
- const handleWheel = (event: WheelEvent) => {
127
- const isShiftKeyDown = event.shiftKey;
128
- const isWheel = Math.abs(event.deltaY) >= 80;
129
-
130
- if (isWheel && !isShiftKeyDown) return;
131
- if (event.shiftKey) event.preventDefault();
132
-
133
- clearTimeout(scrollTimeout);
134
-
135
- scrollTimeout = window.setTimeout(() => {
136
- if (isWheel) {
137
- scrollByDelta(event.deltaY);
138
- } else {
139
- const offset = slides.value[slidesInView.value[0]]?.offsetLeft || 0;
140
-
141
- scrollToOffset(offset);
142
- }
143
- }, 100);
144
- };
145
-
146
- const measureDom = () => {
147
- if (!containerRef.value) return;
148
-
149
- contentWidth.value = containerRef.value.scrollWidth;
150
- frameWidth.value = containerRef.value.clientWidth;
151
- showButtons.value = contentWidth.value > frameWidth.value;
152
-
153
- slidesInViewCount.value = slides.value.filter((slide) =>
154
- getIsElementWithinContainer(slide, containerRef.value as HTMLElement)
155
- ).length;
156
- };
157
-
158
- const observeSlides = () => {
159
- const options = {
160
- root: carouselRef?.value,
161
- rootMargin: '0px 1px 0px 0px',
162
- threshold: 1,
163
- };
164
-
165
- slideObserver.value = new IntersectionObserver((entries) => {
166
- let slidesAddedToView: number[] = [];
167
-
168
- entries.forEach((entry) => {
169
- const slideIndex = slides.value.indexOf(entry.target as HTMLElement);
170
-
171
- if (entry.isIntersecting) {
172
- slidesAddedToView.push(slideIndex);
173
- slidesInView.value.push(slideIndex);
174
- } else {
175
- slidesInView.value = slidesInView.value.filter((slide) => slide !== slideIndex);
176
- }
177
-
178
- slidesInView.value.sort((a, b) => a - b);
179
- });
180
-
181
- isFirstSlide.value = slidesInView.value.includes(0);
182
- isLastSlide.value = slidesInView.value.includes(slides.value.length - 1);
183
-
184
- if (slidesAddedToView.length > 0) emit('slidesAddedToView', slidesAddedToView);
185
- }, options);
186
-
187
- slides.value.forEach((child) => {
188
- if (slideObserver.value) slideObserver.value.observe(child);
189
- });
190
- };
191
-
192
- const observeSlot = () => {
193
- const observerCallback = () => {
194
- if (containerRef.value === null) return;
195
-
196
- slides.value = Array.from(containerRef.value.children) as HTMLElement[];
197
- observeSlides();
198
- };
199
-
200
- slotObserver.value = new MutationObserver(observerCallback);
201
-
202
- if (containerRef.value) slotObserver.value.observe(containerRef.value, { childList: true });
203
- };
204
-
205
- const scrollByDelta = (delta: number) => {
206
- const isScrollingLeft = delta < 0;
207
-
208
- if (isScrollingLeft) {
209
- props.isScrollByPage ? showPreviousPage() : showPreviousSlide();
210
- } else {
211
- props.isScrollByPage ? showNextPage() : showNextSlide();
212
- }
213
- };
214
-
215
- const scrollToOffset = (target: number) => {
216
- if (containerRef.value === null) return;
217
-
218
- const isScrollingLeft = target <= containerRef.value.scrollLeft;
219
-
220
- currentPageIndex.value = isScrollingLeft ? currentPageIndex.value - 1 : currentPageIndex.value + 1;
221
-
222
- containerRef.value.scrollTo({
223
- behavior: 'smooth',
224
- left: target,
225
- });
226
- updateDots(isScrollingLeft);
227
- };
228
-
229
- const showNextPage = () => {
230
- if (slidesInView.value.length === 0 || isLastSlide.value) return;
231
-
232
- const nextSlide: number = slidesInView.value[slidesInView.value.length - 1] + 1;
233
- const offset = slides.value[nextSlide]?.offsetLeft;
234
-
235
- scrollToOffset(offset);
236
- };
237
-
238
- const showPreviousPage = () => {
239
- if (slidesInView.value.length === 0 || isFirstSlide.value) return;
240
-
241
- const previousSlide: number = slidesInView.value[0] - slidesInView.value.length;
242
- const offset = slides.value[previousSlide]?.offsetLeft || 0;
243
-
244
- scrollToOffset(offset);
245
- };
246
-
247
- const showNextSlide = () => {
248
- if (slidesInView.value.length === 0) return;
249
-
250
- const nextSlide: number = slidesInView.value.length > 1 ? slidesInView.value[1] : slidesInView.value[0] + 1;
251
-
252
- scrollToOffset(slides.value[nextSlide].offsetLeft);
253
- };
254
-
255
- const showPreviousSlide = () => {
256
- if (slidesInView.value.length === 0) return;
257
-
258
- const previousSlide: number = slidesInView.value[0] - 1;
259
-
260
- scrollToOffset(slides.value[previousSlide].offsetLeft);
261
- };
262
-
263
- const updateDots = (isScrollingLeft: boolean) => {
264
- if (!dotsRef.value || dotCountVisible.value >= totalPages.value) return;
265
-
266
- const isOddDotCount = dotCountVisible.value % 2 !== 0;
267
- const centerDot =
268
- isOddDotCount || isScrollingLeft
269
- ? Math.floor(dotCountVisible.value / 2) + 1
270
- : Math.floor(dotCountVisible.value / 2);
271
-
272
- dotsRef.value.scrollTo({
273
- behavior: 'smooth',
274
- left: currentPage.value < centerDot ? 0 : (currentPage.value - centerDot) * (dotWidth + dotGap),
275
- });
276
- };
277
-
278
- onMounted(() => {
279
- if (containerRef.value === null) return;
280
-
281
- slides.value = Array.from(containerRef.value.children) as HTMLElement[];
282
-
283
- measureDom();
284
- observeSlides();
285
- observeSlot();
286
-
287
- if (window) {
288
- window.addEventListener('resize', measureDom);
289
- }
290
- });
291
-
292
- onUnmounted(() => {
293
- slideObserver.value?.disconnect();
294
- slotObserver.value?.disconnect();
295
- window.removeEventListener('resize', measureDom);
296
- });
297
- </script>
298
-
299
- <template>
300
- <section
301
- :class="[
302
- 'tide-carousel',
303
- CSS.POSITION.RELATIVE,
304
- CSS.DISPLAY.FLEX,
305
- CSS.FLEX.DIRECTION.COLUMN,
306
- CSS.GAP.ONE,
307
- CSS.WIDTH.MAX_FULL,
308
- ]"
309
- ref="carouselRef"
310
- >
311
- <section
312
- :class="[CSS.DISPLAY.FLEX, props.title ? CSS.AXIS1.BETWEEN : CSS.AXIS1.END, CSS.AXIS2.CENTER, CSS.WIDTH.FULL]"
313
- v-if="(!props.isFloating && showButtons) || props.title"
314
- >
315
- <div
316
- :class="[CSS.DISPLAY.FLEX, CSS.FLEX.WRAP, CSS.AXIS2.CENTER, CSS.GAP.ONE]"
317
- v-if="props.title"
318
- >
319
- <div
320
- :class="[isHeadline1 ? CSS.FONT.ROLE.HEADLINE_1 : CSS.FONT.ROLE.HEADLINE_2]"
321
- v-if="props.title"
322
- >
323
- {{ props.title }}
324
- </div>
325
-
326
- <div
327
- :class="[CSS.FONT.ROLE.LABEL_2, CSS.FONT.COLOR.SURFACE.VARIANT]"
328
- v-if="props.subtitle"
329
- >
330
- {{ props.subtitle }}
331
- </div>
332
- </div>
333
-
334
- <div
335
- :class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.ONE]"
336
- v-if="!props.isFloating && showButtons"
337
- >
338
- <TideButtonIcon
339
- :disabled="isFirstSlide"
340
- :icon="ICON.CHEVRON_LEFT"
341
- :priority="PRIORITY.TERTIARY"
342
- @click="isScrollByPage ? showPreviousPage() : showPreviousSlide()"
343
- />
344
-
345
- <TideButtonIcon
346
- :disabled="isLastSlide"
347
- :icon="ICON.CHEVRON_RIGHT"
348
- :priority="PRIORITY.TERTIARY"
349
- @click="isScrollByPage ? showNextPage() : showNextSlide()"
350
- />
351
- </div>
352
- </section>
353
-
354
- <slot name="misc" />
355
-
356
- <div :class="[CSS.POSITION.RELATIVE, CSS.DISPLAY.FLEX]">
357
- <ul
358
- :class="[
359
- 'tide-carousel-container',
360
- CSS.DISPLAY.FLEX,
361
- CSS.GAP.ONE,
362
- CSS.LIST_BULLETS.OFF,
363
- CSS.OVERFLOW.X.SCROLL,
364
- CSS.SCROLLBAR.OFF,
365
- CSS.SNAP.ON,
366
- ]"
367
- ref="containerRef"
368
- @touchend="handleTouchEnd"
369
- @touchstart.passive="handleTouchStart"
370
- @wheel="handleWheel"
371
- >
372
- <slot />
373
- </ul>
374
-
375
- <div
376
- :class="[
377
- CSS.POSITION.ABSOLUTE,
378
- CSS.POSITIONING.BOTTOM,
379
- CSS.DISPLAY.FLEX,
380
- CSS.AXIS1.CENTER,
381
- CSS.MARGIN.BOTTOM.HALF,
382
- CSS.WIDTH.FULL,
383
- CSS.POINTER_EVENTS.OFF,
384
- ]"
385
- v-if="hasDots && totalPages > 1"
386
- >
387
- <div
388
- :class="['tide-carousel-dots-container']"
389
- :style="{
390
- width: `${dotContainerWidth}px`,
391
- }"
392
- >
393
- <div
394
- :class="[
395
- 'tide-carousel-dots',
396
- CSS.DISPLAY.FLEX,
397
- CSS.AXIS1.START,
398
- CSS.AXIS2.CENTER,
399
- CSS.GAP.HALF,
400
- CSS.OVERFLOW.X.SCROLL,
401
- CSS.POINTER_EVENTS.OFF,
402
- CSS.SCROLLBAR.OFF,
403
- ]"
404
- ref="dotsRef"
405
- >
406
- <div
407
- :class="[
408
- 'tide-carousel-dot',
409
- CSS.FLEX.SHRINK.OFF,
410
- CSS.HEIGHT.ZERO,
411
- CSS.WIDTH.ZERO,
412
- CSS.BORDER.RADIUS.FULL,
413
- CSS.BG.SURFACE.DEFAULT,
414
- getDotClass(index),
415
- ]"
416
- :key="index"
417
- v-for="(_, index) in totalPages"
418
- />
419
- </div>
420
- </div>
421
- </div>
422
-
423
- <div
424
- :class="[
425
- 'tide-carousel-button-overlay',
426
- CSS.POSITION.ABSOLUTE,
427
- CSS.POSITIONING.TOP,
428
- CSS.DISPLAY.FLEX,
429
- CSS.AXIS1.BETWEEN,
430
- CSS.AXIS2.CENTER,
431
- CSS.WIDTH.FULL,
432
- CSS.HEIGHT.FULL,
433
- CSS.POINTER_EVENTS.OFF,
434
- props.isHideawayButtons ? 'hideaway' : '',
435
- ]"
436
- v-if="isFloating && showButtons"
437
- >
438
- <TideButtonIcon
439
- :class="[CSS.MARGIN.LEFT.ONE, CSS.POINTER_EVENTS.ON]"
440
- :disabled="isFirstSlide"
441
- :icon="ICON.CHEVRON_LEFT"
442
- :priority="PRIORITY.QUATERNARY"
443
- @click="isScrollByPage ? showPreviousPage() : showPreviousSlide()"
444
- />
445
-
446
- <TideButtonIcon
447
- :class="[CSS.MARGIN.RIGHT.ONE, CSS.POINTER_EVENTS.ON]"
448
- :disabled="isLastSlide"
449
- :icon="ICON.CHEVRON_RIGHT"
450
- :priority="PRIORITY.QUATERNARY"
451
- @click="isScrollByPage ? showNextPage() : showNextSlide()"
452
- />
453
- </div>
454
- </div>
455
- </section>
456
- </template>
457
-
458
- <style scoped>
459
- .tide-carousel-button-overlay.hideaway {
460
- opacity: 0;
461
- }
462
-
463
- .tide-carousel:hover .tide-carousel-button-overlay.hideaway {
464
- opacity: 1;
465
- }
466
-
467
- .tide-carousel-dot {
468
- width: 8px;
469
- height: 8px;
470
- opacity: 0.75;
471
- transform: scale(0.5);
472
- transition: opacity var(--tide-animate), transform var(--tide-animate);
473
- }
474
-
475
- .tide-carousel-dot-neighbor {
476
- transform: scale(0.75);
477
- }
478
-
479
- .tide-carousel-dot-active {
480
- transform: scale(1);
481
- opacity: 1;
482
- }
483
-
484
- @media (pointer: coarse) {
485
- .tide-carousel .tide-carousel-button-overlay {
486
- display: none;
487
- }
488
- }
489
- </style>
@@ -1,83 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a chip action button intended to be used in navigation menus relating to searches.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidechipaction--docs) for TideChipAction
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script setup lang="ts">
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 { ICON } from '@/types/Icon';
17
- import { CSS } from '@/types/Styles';
18
- import { TARGET } from '@/types/Target';
19
-
20
- import type { Element } from '@/types/Element';
21
- import type { Icon } from '@/types/Icon';
22
-
23
- type Props = {
24
- /** HTML tag type. */
25
- element?: Element;
26
-
27
- /** URL to navigate to on click. */
28
- href?: string;
29
-
30
- /** Icon to show before the label. */
31
- iconLeading?: Icon;
32
-
33
- /** Determines whether to target a new browser tab. */
34
- isNewTab?: boolean;
35
-
36
- /** Chip text. */
37
- label: string;
38
- };
39
-
40
- const props = withDefaults(defineProps<Props>(), {
41
- element: ELEMENT.LINK,
42
- href: undefined,
43
- iconLeading: ICON.SEARCH,
44
- isNewTab: false,
45
- });
46
-
47
- const rootElement = computed(() => (props.element === ELEMENT.LINK ? InternalBaseLink : props.element));
48
- </script>
49
-
50
- <template>
51
- <component
52
- :class="[
53
- 'tide-chip-action',
54
- CSS.DISPLAY.FLEX,
55
- CSS.AXIS2.CENTER,
56
- CSS.GAP.HALF,
57
- CSS.BORDER.FULL.ONE,
58
- CSS.BORDER.RADIUS.FULL,
59
- CSS.BORDER.COLOR.DEFAULT,
60
- CSS.PADDING.X.ONE,
61
- CSS.PADDING.Y.HALF,
62
- CSS.BG.SURFACE.DEFAULT,
63
- CSS.FONT.ROLE.LINK_2,
64
- CSS.FONT.COLOR.SURFACE.DEFAULT,
65
- CSS.UNDERLINE.REST.OFF,
66
- ]"
67
- :href="props.href"
68
- :target="props.isNewTab ? TARGET.BLANK : TARGET.SELF"
69
- :type="element === ELEMENT.BUTTON ? ELEMENT.BUTTON : undefined"
70
- :is="rootElement"
71
- >
72
- <TideIcon :icon="props.iconLeading" />
73
-
74
- <span>{{ props.label }}</span>
75
- </component>
76
- </template>
77
-
78
- <style scoped>
79
- .tide-chip-action:hover {
80
- background-color: var(--tide-surface-variant);
81
- border-color: var(--tide-border-high);
82
- }
83
- </style>
@@ -1,71 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a chip filter component for use in navigation.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidechipfilter--docs) for TideChipFilter
6
- */
7
- export default {};
8
- </script>
9
-
10
- <script lang="ts" setup>
11
- import { CSS } from '@/types/Styles';
12
-
13
- type Props = {
14
- /** Chip text. */
15
- label: string;
16
- };
17
-
18
- defineProps<Props>();
19
-
20
- const isActive = defineModel<boolean>({ required: true });
21
-
22
- const handleClick = () => {
23
- isActive.value = !isActive.value;
24
- };
25
- </script>
26
-
27
- <template>
28
- <button
29
- :class="[
30
- 'tide-chip-filter',
31
- isActive
32
- ? ['active', CSS.BG.SECONDARY, CSS.FONT.COLOR.SECONDARY]
33
- : [CSS.BG.SURFACE.VARIANT, CSS.FONT.COLOR.SURFACE.DEFAULT],
34
- CSS.DISPLAY.FLEX,
35
- CSS.AXIS2.CENTER,
36
- CSS.GAP.HALF,
37
- CSS.BORDER.FULL.ONE,
38
- CSS.BORDER.RADIUS.FULL,
39
- CSS.PADDING.X.ONE,
40
- CSS.PADDING.Y.HALF,
41
- CSS.FONT.ROLE.LABEL_2,
42
- ]"
43
- @click="handleClick"
44
- type="button"
45
- >
46
- <slot />
47
-
48
- <div :class="[CSS.DISPLAY.FLEX, CSS.AXIS1.CENTER, CSS.AXIS2.CENTER, CSS.GAP.HALF]">
49
- <span :class="[CSS.FONT.ROLE.LABEL_1, CSS.WHITESPACE_WRAP.OFF]">
50
- {{ label }}
51
- </span>
52
- </div>
53
- </button>
54
- </template>
55
-
56
- <style scoped>
57
- /* Border must always exist to prevent resize on hover state, but match background color on rest state to blend in. */
58
- .tide-chip-filter {
59
- border-color: var(--tide-surface-variant);
60
- }
61
-
62
- .tide-chip-filter.active {
63
- border-color: var(--tide-secondary);
64
- }
65
-
66
- .tide-chip-filter:hover {
67
- background-color: var(--tide-surface-variant);
68
- border-color: var(--tide-border);
69
- color: var(--tide-on-surface);
70
- }
71
- </style>
@@ -1,54 +0,0 @@
1
- <script lang="ts">
2
- /**
3
- * Renders a input chip component for use in navigation.
4
- *
5
- * @see the [Storybook interface](https://tide-design-system.netlify.app/?path=/docs/components-tidechipinput--docs) for TideChipInput
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
-
15
- type Props = {
16
- /** Chip text */
17
- label: string;
18
- };
19
-
20
- const props = defineProps<Props>();
21
- </script>
22
-
23
- <template>
24
- <button
25
- :class="[
26
- 'tide-chip-input',
27
- CSS.BG.SURFACE.VARIANT,
28
- CSS.FONT.COLOR.SURFACE,
29
- CSS.DISPLAY.FLEX,
30
- CSS.AXIS2.CENTER,
31
- CSS.GAP.HALF,
32
- CSS.BORDER.FULL.ONE,
33
- CSS.BORDER.RADIUS.FULL,
34
- CSS.PADDING.X.ONE,
35
- CSS.PADDING.Y.HALF,
36
- CSS.FONT.ROLE.LABEL_2,
37
- ]"
38
- type="button"
39
- >
40
- <span>{{ props.label }}</span>
41
-
42
- <TideIcon :icon="ICON.CLOSE" />
43
- </button>
44
- </template>
45
-
46
- <style scoped>
47
- .tide-chip-input {
48
- border-color: var(--tide-border);
49
- }
50
-
51
- .tide-chip-input:hover {
52
- border-color: var(--tide-border-high);
53
- }
54
- </style>