@helsenorge/designsystem-react 15.0.0-beta.0 → 15.0.0

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 (712) hide show
  1. package/lib/AnchorLink.js.map +1 -1
  2. package/lib/AsChildSlot.js.map +1 -1
  3. package/lib/Avatar.js.map +1 -1
  4. package/lib/Badge.js.map +1 -1
  5. package/lib/Button.js.map +1 -1
  6. package/lib/CHANGELOG.md +61 -0
  7. package/lib/Checkbox.js +25 -48
  8. package/lib/Checkbox.js.map +1 -1
  9. package/lib/Checkbox2.js +69 -0
  10. package/lib/Checkbox2.js.map +1 -0
  11. package/lib/CheckboxMarker.js +64 -0
  12. package/lib/CheckboxMarker.js.map +1 -0
  13. package/lib/Chip.js.map +1 -1
  14. package/lib/Close.js.map +1 -1
  15. package/lib/DictionaryTrigger.js.map +1 -1
  16. package/lib/Drawer.js +2 -2
  17. package/lib/Drawer.js.map +1 -1
  18. package/lib/DrawerNavigation.js.map +1 -1
  19. package/lib/Duolist.js.map +1 -1
  20. package/lib/ElementHeader.js.map +1 -1
  21. package/lib/ElementHeaderText.js.map +1 -1
  22. package/lib/ErrorBoundary.js.map +1 -1
  23. package/lib/ErrorWrapper.js.map +1 -1
  24. package/lib/Expander.js.map +1 -1
  25. package/lib/FilterButton.js.map +1 -1
  26. package/lib/FilterButtonAndChipsWrapper.js.map +1 -1
  27. package/lib/FilterDrawer.js +20 -10
  28. package/lib/FilterDrawer.js.map +1 -1
  29. package/lib/FilterLinkList.js.map +1 -1
  30. package/lib/FilterOverviewLinkList.js.map +1 -1
  31. package/lib/FilterOverviewSearch.js.map +1 -1
  32. package/lib/FilterResultCountAndSortWrapper.js.map +1 -1
  33. package/lib/FilterSearch.js.map +1 -1
  34. package/lib/FilterSort.js.map +1 -1
  35. package/lib/FilterStateWrapper.js.map +1 -1
  36. package/lib/FormFieldTag.js.map +1 -1
  37. package/lib/FormGroup.js +8 -6
  38. package/lib/FormGroup.js.map +1 -1
  39. package/lib/FormLayout.js.map +1 -1
  40. package/lib/HelpDetails.js.map +1 -1
  41. package/lib/HelpTriggerIcon.js.map +1 -1
  42. package/lib/HelpTriggerStandalone.js.map +1 -1
  43. package/lib/HighlightPanel.js.map +1 -1
  44. package/lib/Highlighter.js.map +1 -1
  45. package/lib/HorizontalScroll.js.map +1 -1
  46. package/lib/Icon.js.map +1 -1
  47. package/lib/Illustration.js +1 -1
  48. package/lib/Illustration.js.map +1 -1
  49. package/lib/InfoTeaser.js.map +1 -1
  50. package/lib/Input.js.map +1 -1
  51. package/lib/LazyIcon.js +1 -1
  52. package/lib/LazyIcon.js.map +1 -1
  53. package/lib/LazyIllustration.js +6 -2
  54. package/lib/LazyIllustration.js.map +1 -1
  55. package/lib/LinkList.js.map +1 -1
  56. package/lib/List.js.map +1 -1
  57. package/lib/ListEditMode.js.map +1 -1
  58. package/lib/LoaderSpinner.js +61 -0
  59. package/lib/LoaderSpinner.js.map +1 -0
  60. package/lib/MaxCharacters.js.map +1 -1
  61. package/lib/NotificationBadge.js.map +1 -1
  62. package/lib/PanelTitle.js.map +1 -1
  63. package/lib/PopOver.js.map +1 -1
  64. package/lib/Radio.js +74 -0
  65. package/lib/Radio.js.map +1 -0
  66. package/lib/RadioButton.js +84 -0
  67. package/lib/RadioButton.js.map +1 -0
  68. package/lib/RadioMarker.js +35 -0
  69. package/lib/RadioMarker.js.map +1 -0
  70. package/lib/Select.js.map +1 -1
  71. package/lib/SingleSelectItem.js.map +1 -1
  72. package/lib/Slider.js.map +1 -1
  73. package/lib/Spacer.js.map +1 -1
  74. package/lib/StatusDot.js.map +1 -1
  75. package/lib/StatusDotList.js.map +1 -1
  76. package/lib/StepButtons.js.map +1 -1
  77. package/lib/TabList.js.map +1 -1
  78. package/lib/TabPanel.js.map +1 -1
  79. package/lib/TableBody.js +1 -1
  80. package/lib/TableBody.js.map +1 -1
  81. package/lib/TableCell.js.map +1 -1
  82. package/lib/TableExpandedRow.js.map +1 -1
  83. package/lib/TableExpanderCell.js.map +1 -1
  84. package/lib/TableHead.js +1 -1
  85. package/lib/TableHead.js.map +1 -1
  86. package/lib/TableHeadCell.js.map +1 -1
  87. package/lib/TableRow.js +1 -1
  88. package/lib/TableRow.js.map +1 -1
  89. package/lib/Textarea.js.map +1 -1
  90. package/lib/Title.js.map +1 -1
  91. package/lib/Toast.js.map +1 -1
  92. package/lib/VisualCheckbox.js +79 -0
  93. package/lib/VisualCheckbox.js.map +1 -0
  94. package/lib/VisualRadio.js +64 -0
  95. package/lib/VisualRadio.js.map +1 -0
  96. package/lib/__mocks__/IntersectionObserver.js.map +1 -1
  97. package/lib/__mocks__/MutationObserver.js.map +1 -1
  98. package/lib/__mocks__/ResizeObserver.js.map +1 -1
  99. package/lib/__mocks__/matchMedia.js +3 -2
  100. package/lib/__mocks__/matchMedia.js.map +1 -1
  101. package/lib/__mocks__/useLayoutEvent.js.map +1 -1
  102. package/lib/__mocks__/useOutsideEvent.js.map +1 -1
  103. package/lib/__mocks__/usePseudoClasses.js.map +1 -1
  104. package/lib/__mocks__/useSize.js.map +1 -1
  105. package/lib/__mocks__/uuid.js.map +1 -1
  106. package/lib/components/ArticleTeaser/index.js.map +1 -1
  107. package/lib/components/Checkbox/CheckboxMarker/CheckboxMarker.d.ts +20 -0
  108. package/lib/components/Checkbox/CheckboxMarker/styles.module.scss +309 -0
  109. package/lib/components/Checkbox/CheckboxMarker/styles.module.scss.d.ts +25 -0
  110. package/lib/components/Checkbox/styles.module.scss +9 -269
  111. package/lib/components/Checkbox/styles.module.scss.d.ts +1 -17
  112. package/lib/components/Dropdown/index.js.map +1 -1
  113. package/lib/components/DropdownOld/index.js.map +1 -1
  114. package/lib/components/EmptyState/index.js.map +1 -1
  115. package/lib/components/ExpanderHierarchy/index.js.map +1 -1
  116. package/lib/components/ExpanderList/index.js.map +1 -1
  117. package/lib/components/EyebrowHeader/index.js.map +1 -1
  118. package/lib/components/FavoriteButton/index.js.map +1 -1
  119. package/lib/components/Filter/FilterDrawer/FilterDrawer.d.ts +4 -2
  120. package/lib/components/Filter/FilterDrawer/styles.module.scss +7 -0
  121. package/lib/components/Filter/FilterDrawer/styles.module.scss.d.ts +1 -0
  122. package/lib/components/Filter/FilterSort/styles.module.scss +2 -0
  123. package/lib/components/Filter/LoaderSpinner/LoaderSpinner.d.ts +9 -0
  124. package/lib/components/Filter/LoaderSpinner/index.d.ts +3 -0
  125. package/lib/components/Filter/LoaderSpinner/index.js +7 -0
  126. package/lib/components/Filter/LoaderSpinner/index.js.map +1 -0
  127. package/lib/components/Filter/LoaderSpinner/styles.module.scss +27 -0
  128. package/lib/components/Filter/LoaderSpinner/styles.module.scss.d.ts +11 -0
  129. package/lib/components/Filter/index.d.ts +2 -0
  130. package/lib/components/Filter/index.js +2 -1
  131. package/lib/components/Filter/index.js.map +1 -1
  132. package/lib/components/FormGroup/FormGroup.d.ts +2 -0
  133. package/lib/components/HelpBubble/index.js.map +1 -1
  134. package/lib/components/HelpDrawer/index.js.map +1 -1
  135. package/lib/components/HelpExpanderInline/index.js.map +1 -1
  136. package/lib/components/HelpExpanderStandalone/index.js.map +1 -1
  137. package/lib/components/HelpPanel/index.js.map +1 -1
  138. package/lib/components/HelpTeaser/index.js.map +1 -1
  139. package/lib/components/HelpTooltip/index.js.map +1 -1
  140. package/lib/components/HelpTriggerInline/index.js.map +1 -1
  141. package/lib/components/Icons/ActiveMonitoring.js.map +1 -1
  142. package/lib/components/Icons/AcupunctureBack.js.map +1 -1
  143. package/lib/components/Icons/AdditionalIconInformation.js.map +1 -1
  144. package/lib/components/Icons/AlarmClock.js.map +1 -1
  145. package/lib/components/Icons/AlertSignFill.js.map +1 -1
  146. package/lib/components/Icons/AlertSignStroke.js.map +1 -1
  147. package/lib/components/Icons/Amputation.js.map +1 -1
  148. package/lib/components/Icons/Anxiety.js.map +1 -1
  149. package/lib/components/Icons/Apple.js.map +1 -1
  150. package/lib/components/Icons/Archive.js.map +1 -1
  151. package/lib/components/Icons/ArmFlexing.js.map +1 -1
  152. package/lib/components/Icons/ArrowDown.js.map +1 -1
  153. package/lib/components/Icons/ArrowLeft.js.map +1 -1
  154. package/lib/components/Icons/ArrowRight.js.map +1 -1
  155. package/lib/components/Icons/ArrowUp.js.map +1 -1
  156. package/lib/components/Icons/ArrowUpRight.js.map +1 -1
  157. package/lib/components/Icons/Attachment.js.map +1 -1
  158. package/lib/components/Icons/Atv.js.map +1 -1
  159. package/lib/components/Icons/Avatar.js.map +1 -1
  160. package/lib/components/Icons/AwakePersonOnPillow.js.map +1 -1
  161. package/lib/components/Icons/Baby.js.map +1 -1
  162. package/lib/components/Icons/BandAid.js.map +1 -1
  163. package/lib/components/Icons/BeerAndPills.js.map +1 -1
  164. package/lib/components/Icons/Bell.js.map +1 -1
  165. package/lib/components/Icons/Bike.js.map +1 -1
  166. package/lib/components/Icons/BirthControl.js.map +1 -1
  167. package/lib/components/Icons/BirthdayCake.js.map +1 -1
  168. package/lib/components/Icons/Boat.js.map +1 -1
  169. package/lib/components/Icons/Body.js.map +1 -1
  170. package/lib/components/Icons/Braille.js.map +1 -1
  171. package/lib/components/Icons/Brain.js.map +1 -1
  172. package/lib/components/Icons/BreastReconstruction.js.map +1 -1
  173. package/lib/components/Icons/BreastRemoval.js.map +1 -1
  174. package/lib/components/Icons/Breasts.js.map +1 -1
  175. package/lib/components/Icons/BrokenHeart.js.map +1 -1
  176. package/lib/components/Icons/BrokenPuzzle.js.map +1 -1
  177. package/lib/components/Icons/Bus.js.map +1 -1
  178. package/lib/components/Icons/Calendar.js.map +1 -1
  179. package/lib/components/Icons/CalendarChange.js.map +1 -1
  180. package/lib/components/Icons/CalendarCheck.js.map +1 -1
  181. package/lib/components/Icons/CalendarEvent.js.map +1 -1
  182. package/lib/components/Icons/CalendarSave.js.map +1 -1
  183. package/lib/components/Icons/Cancer.js.map +1 -1
  184. package/lib/components/Icons/Candle.js.map +1 -1
  185. package/lib/components/Icons/Car.js.map +1 -1
  186. package/lib/components/Icons/Carton.js.map +1 -1
  187. package/lib/components/Icons/Change.js.map +1 -1
  188. package/lib/components/Icons/Check.js.map +1 -1
  189. package/lib/components/Icons/CheckFill.js.map +1 -1
  190. package/lib/components/Icons/CheckOutline.js.map +1 -1
  191. package/lib/components/Icons/Chest.js.map +1 -1
  192. package/lib/components/Icons/ChevronDown.js.map +1 -1
  193. package/lib/components/Icons/ChevronLeft.js.map +1 -1
  194. package/lib/components/Icons/ChevronRight.js.map +1 -1
  195. package/lib/components/Icons/ChevronUp.js.map +1 -1
  196. package/lib/components/Icons/ChevronsDown.js.map +1 -1
  197. package/lib/components/Icons/ChevronsUp.js.map +1 -1
  198. package/lib/components/Icons/ChildPlaying.js.map +1 -1
  199. package/lib/components/Icons/Cigarette.js.map +1 -1
  200. package/lib/components/Icons/Coins.js.map +1 -1
  201. package/lib/components/Icons/Contacts.js.map +1 -1
  202. package/lib/components/Icons/Copy.js.map +1 -1
  203. package/lib/components/Icons/CoronaCertificate.js.map +1 -1
  204. package/lib/components/Icons/Coronavirus.js.map +1 -1
  205. package/lib/components/Icons/Cough.js.map +1 -1
  206. package/lib/components/Icons/CreditCard.js.map +1 -1
  207. package/lib/components/Icons/CriticalHealthInfo.js.map +1 -1
  208. package/lib/components/Icons/Cross.js.map +1 -1
  209. package/lib/components/Icons/DataExchange.js.map +1 -1
  210. package/lib/components/Icons/DataReceived.js.map +1 -1
  211. package/lib/components/Icons/DataSent.js.map +1 -1
  212. package/lib/components/Icons/Depression.js.map +1 -1
  213. package/lib/components/Icons/DigestiveSystem.js.map +1 -1
  214. package/lib/components/Icons/Dizzy.js.map +1 -1
  215. package/lib/components/Icons/Documents.js.map +1 -1
  216. package/lib/components/Icons/Dog.js.map +1 -1
  217. package/lib/components/Icons/DonorCard.js.map +1 -1
  218. package/lib/components/Icons/DotAttachment.js.map +1 -1
  219. package/lib/components/Icons/DotCheckmark.js.map +1 -1
  220. package/lib/components/Icons/DotCircleArrows.js.map +1 -1
  221. package/lib/components/Icons/DotDot.js.map +1 -1
  222. package/lib/components/Icons/DotExclamationMark.js.map +1 -1
  223. package/lib/components/Icons/DotFill.js.map +1 -1
  224. package/lib/components/Icons/DotGroup.js.map +1 -1
  225. package/lib/components/Icons/DotHalfDisc.js.map +1 -1
  226. package/lib/components/Icons/DotInfo.js.map +1 -1
  227. package/lib/components/Icons/DotLogin.js.map +1 -1
  228. package/lib/components/Icons/DotLookingGlass.js.map +1 -1
  229. package/lib/components/Icons/DotNoAccess.js.map +1 -1
  230. package/lib/components/Icons/DotNoEye.js.map +1 -1
  231. package/lib/components/Icons/DotOutline.js.map +1 -1
  232. package/lib/components/Icons/DotPencil.js.map +1 -1
  233. package/lib/components/Icons/DotQuestionMark.js.map +1 -1
  234. package/lib/components/Icons/DotTriangle.js.map +1 -1
  235. package/lib/components/Icons/DotX.js.map +1 -1
  236. package/lib/components/Icons/Download.js.map +1 -1
  237. package/lib/components/Icons/Draft.js.map +1 -1
  238. package/lib/components/Icons/Drag.js.map +1 -1
  239. package/lib/components/Icons/EChat.js.map +1 -1
  240. package/lib/components/Icons/Ear.js.map +1 -1
  241. package/lib/components/Icons/EarDeaf.js.map +1 -1
  242. package/lib/components/Icons/EarHearingAid.js.map +1 -1
  243. package/lib/components/Icons/EarNoseThroat.js.map +1 -1
  244. package/lib/components/Icons/EarVolume.js.map +1 -1
  245. package/lib/components/Icons/Edit.js.map +1 -1
  246. package/lib/components/Icons/ElderlyPerson.js.map +1 -1
  247. package/lib/components/Icons/Embolization.js.map +1 -1
  248. package/lib/components/Icons/EmergencyCall.js.map +1 -1
  249. package/lib/components/Icons/EmoticonAnnoyed.js.map +1 -1
  250. package/lib/components/Icons/EmoticonDelighted.js.map +1 -1
  251. package/lib/components/Icons/EmoticonDisappointed.js.map +1 -1
  252. package/lib/components/Icons/EmoticonHappy.js.map +1 -1
  253. package/lib/components/Icons/EmoticonMeh.js.map +1 -1
  254. package/lib/components/Icons/EmptyBox.js.map +1 -1
  255. package/lib/components/Icons/EnterFullScreen.js.map +1 -1
  256. package/lib/components/Icons/Envelope.js.map +1 -1
  257. package/lib/components/Icons/Epilepsy.js.map +1 -1
  258. package/lib/components/Icons/Eraser.js.map +1 -1
  259. package/lib/components/Icons/ErrorSignFill.js.map +1 -1
  260. package/lib/components/Icons/ErrorSignStroke.js.map +1 -1
  261. package/lib/components/Icons/EuropeanHealthCard.js.map +1 -1
  262. package/lib/components/Icons/ExitFullScreen.js.map +1 -1
  263. package/lib/components/Icons/Eye.js.map +1 -1
  264. package/lib/components/Icons/Facebook.js.map +1 -1
  265. package/lib/components/Icons/FallingLeaf.js.map +1 -1
  266. package/lib/components/Icons/Feedback.js.map +1 -1
  267. package/lib/components/Icons/Female.js.map +1 -1
  268. package/lib/components/Icons/FemaleDoctor.js.map +1 -1
  269. package/lib/components/Icons/Ferry.js.map +1 -1
  270. package/lib/components/Icons/File.js.map +1 -1
  271. package/lib/components/Icons/Filter.js +12 -12
  272. package/lib/components/Icons/Filter.js.map +1 -1
  273. package/lib/components/Icons/FingerBleed.js.map +1 -1
  274. package/lib/components/Icons/FirstAidKit.js.map +1 -1
  275. package/lib/components/Icons/Fish.js.map +1 -1
  276. package/lib/components/Icons/FloppyDisk.js.map +1 -1
  277. package/lib/components/Icons/Football.js.map +1 -1
  278. package/lib/components/Icons/Form.js.map +1 -1
  279. package/lib/components/Icons/Forward.js.map +1 -1
  280. package/lib/components/Icons/Gallery.js.map +1 -1
  281. package/lib/components/Icons/Garden.js.map +1 -1
  282. package/lib/components/Icons/GasCan.js.map +1 -1
  283. package/lib/components/Icons/GenderIdentity.js.map +1 -1
  284. package/lib/components/Icons/GlassWater.js.map +1 -1
  285. package/lib/components/Icons/Glasses.js.map +1 -1
  286. package/lib/components/Icons/Globe.js.map +1 -1
  287. package/lib/components/Icons/Grain.js.map +1 -1
  288. package/lib/components/Icons/Graph.js.map +1 -1
  289. package/lib/components/Icons/Group.js.map +1 -1
  290. package/lib/components/Icons/GroupTwins.js.map +1 -1
  291. package/lib/components/Icons/HTMLFile.js.map +1 -1
  292. package/lib/components/Icons/HandWaving.js.map +1 -1
  293. package/lib/components/Icons/HandWithDisease.js.map +1 -1
  294. package/lib/components/Icons/HandsAndHeart.js.map +1 -1
  295. package/lib/components/Icons/HealthClinic.js.map +1 -1
  296. package/lib/components/Icons/HealthMeasurements.js.map +1 -1
  297. package/lib/components/Icons/HealthWarning.js.map +1 -1
  298. package/lib/components/Icons/HealthcarePerson.js.map +1 -1
  299. package/lib/components/Icons/HealthcarePersonell.js.map +1 -1
  300. package/lib/components/Icons/HearingProtection.js.map +1 -1
  301. package/lib/components/Icons/Heart.js.map +1 -1
  302. package/lib/components/Icons/HeartHands.js.map +1 -1
  303. package/lib/components/Icons/HelpSign.js.map +1 -1
  304. package/lib/components/Icons/HelpingHand.js.map +1 -1
  305. package/lib/components/Icons/Hemodialysis.js.map +1 -1
  306. package/lib/components/Icons/Hiker.js.map +1 -1
  307. package/lib/components/Icons/Hipprosthesis.js.map +1 -1
  308. package/lib/components/Icons/History.js.map +1 -1
  309. package/lib/components/Icons/HivAndAids.js.map +1 -1
  310. package/lib/components/Icons/Home.js.map +1 -1
  311. package/lib/components/Icons/HomeFill.js.map +1 -1
  312. package/lib/components/Icons/Hormone.js.map +1 -1
  313. package/lib/components/Icons/Hospital.js.map +1 -1
  314. package/lib/components/Icons/Hourglass.js.map +1 -1
  315. package/lib/components/Icons/IconNames.js.map +1 -1
  316. package/lib/components/Icons/ImgFile.js.map +1 -1
  317. package/lib/components/Icons/Inbox.js.map +1 -1
  318. package/lib/components/Icons/InfoSignFill.js.map +1 -1
  319. package/lib/components/Icons/InfoSignStroke.js.map +1 -1
  320. package/lib/components/Icons/Instagram.js.map +1 -1
  321. package/lib/components/Icons/Intravenous.js.map +1 -1
  322. package/lib/components/Icons/JointPain.js.map +1 -1
  323. package/lib/components/Icons/Journal.js.map +1 -1
  324. package/lib/components/Icons/JpgFile.js.map +1 -1
  325. package/lib/components/Icons/Kidney.js.map +1 -1
  326. package/lib/components/Icons/KitchenScale.js.map +1 -1
  327. package/lib/components/Icons/Kjernejournal.js.map +1 -1
  328. package/lib/components/Icons/Laboratory.js.map +1 -1
  329. package/lib/components/Icons/LaptopBlog.js.map +1 -1
  330. package/lib/components/Icons/LawBook.js.map +1 -1
  331. package/lib/components/Icons/LegalDocument.js.map +1 -1
  332. package/lib/components/Icons/LightBulb.js.map +1 -1
  333. package/lib/components/Icons/List.js.map +1 -1
  334. package/lib/components/Icons/Location.js.map +1 -1
  335. package/lib/components/Icons/LocationFill.js.map +1 -1
  336. package/lib/components/Icons/Lock.js.map +1 -1
  337. package/lib/components/Icons/Login.js.map +1 -1
  338. package/lib/components/Icons/Logout.js.map +1 -1
  339. package/lib/components/Icons/Lungs.js.map +1 -1
  340. package/lib/components/Icons/Makeup.js.map +1 -1
  341. package/lib/components/Icons/MaleDoctor.js.map +1 -1
  342. package/lib/components/Icons/MaleDoctorAndPerson.js.map +1 -1
  343. package/lib/components/Icons/MaleDoctorCompact.js.map +1 -1
  344. package/lib/components/Icons/MaleDoctorCompactFill.js.map +1 -1
  345. package/lib/components/Icons/MaleGenitalia.js.map +1 -1
  346. package/lib/components/Icons/MeasuringTape.js.map +1 -1
  347. package/lib/components/Icons/Medicine.js.map +1 -1
  348. package/lib/components/Icons/MedicineWarning.js.map +1 -1
  349. package/lib/components/Icons/MentalHealthAdult.js.map +1 -1
  350. package/lib/components/Icons/MentalHealthChild.js.map +1 -1
  351. package/lib/components/Icons/Menu.js.map +1 -1
  352. package/lib/components/Icons/Microscope.js.map +1 -1
  353. package/lib/components/Icons/Minus.js.map +1 -1
  354. package/lib/components/Icons/Mirror.js.map +1 -1
  355. package/lib/components/Icons/MobilePhone.js.map +1 -1
  356. package/lib/components/Icons/MotherHoldingBaby.js.map +1 -1
  357. package/lib/components/Icons/MuscleBack.js.map +1 -1
  358. package/lib/components/Icons/MuscleLeg.js.map +1 -1
  359. package/lib/components/Icons/Mushroom.js.map +1 -1
  360. package/lib/components/Icons/Music.js.map +1 -1
  361. package/lib/components/Icons/MusselsAndSalt.js.map +1 -1
  362. package/lib/components/Icons/NoAccess.js.map +1 -1
  363. package/lib/components/Icons/NoEye.js.map +1 -1
  364. package/lib/components/Icons/NoFilter.js.map +1 -1
  365. package/lib/components/Icons/Notepad.js.map +1 -1
  366. package/lib/components/Icons/Osteotomy.js.map +1 -1
  367. package/lib/components/Icons/PaintRoller.js.map +1 -1
  368. package/lib/components/Icons/PaperPlane.js.map +1 -1
  369. package/lib/components/Icons/PatientAndPerson.js.map +1 -1
  370. package/lib/components/Icons/Pause.js.map +1 -1
  371. package/lib/components/Icons/PdfFile.js.map +1 -1
  372. package/lib/components/Icons/Pencil.js.map +1 -1
  373. package/lib/components/Icons/PeopleTalking.js.map +1 -1
  374. package/lib/components/Icons/Peritonealdialysis.js.map +1 -1
  375. package/lib/components/Icons/Person.js.map +1 -1
  376. package/lib/components/Icons/PersonAndPatient.js.map +1 -1
  377. package/lib/components/Icons/PersonCancel.js.map +1 -1
  378. package/lib/components/Icons/PersonInXRayMachine.js.map +1 -1
  379. package/lib/components/Icons/PersonOverweight.js.map +1 -1
  380. package/lib/components/Icons/PersonRelaxing.js.map +1 -1
  381. package/lib/components/Icons/PersonWithBrain.js.map +1 -1
  382. package/lib/components/Icons/PersonWithBrokenArm.js.map +1 -1
  383. package/lib/components/Icons/PersonWithCrutches.js.map +1 -1
  384. package/lib/components/Icons/PersonWithJaw.js.map +1 -1
  385. package/lib/components/Icons/PersonWithMagnifyingGlass.js.map +1 -1
  386. package/lib/components/Icons/PersonWithSenses.js.map +1 -1
  387. package/lib/components/Icons/PersonWorking.js.map +1 -1
  388. package/lib/components/Icons/PersonalPlan.js.map +1 -1
  389. package/lib/components/Icons/PizzaSlice.js.map +1 -1
  390. package/lib/components/Icons/Plane.js.map +1 -1
  391. package/lib/components/Icons/Plant.js.map +1 -1
  392. package/lib/components/Icons/PlateKnifeFork.js.map +1 -1
  393. package/lib/components/Icons/Play.js.map +1 -1
  394. package/lib/components/Icons/PlusLarge.js.map +1 -1
  395. package/lib/components/Icons/PlusSmall.js.map +1 -1
  396. package/lib/components/Icons/PngFile.js.map +1 -1
  397. package/lib/components/Icons/Podcast.js.map +1 -1
  398. package/lib/components/Icons/PoisonInformation.js.map +1 -1
  399. package/lib/components/Icons/Pregnant.js.map +1 -1
  400. package/lib/components/Icons/Printer.js.map +1 -1
  401. package/lib/components/Icons/Psychosis.js.map +1 -1
  402. package/lib/components/Icons/Publication.js.map +1 -1
  403. package/lib/components/Icons/Puzzle.js.map +1 -1
  404. package/lib/components/Icons/QrCode.js.map +1 -1
  405. package/lib/components/Icons/Quarrel.js.map +1 -1
  406. package/lib/components/Icons/RadioTherapy.js.map +1 -1
  407. package/lib/components/Icons/RadioactiveTreatment.js.map +1 -1
  408. package/lib/components/Icons/Radioiodine.js.map +1 -1
  409. package/lib/components/Icons/Receipt.js.map +1 -1
  410. package/lib/components/Icons/Receptionist.js.map +1 -1
  411. package/lib/components/Icons/Recovery.js.map +1 -1
  412. package/lib/components/Icons/Referral.js.map +1 -1
  413. package/lib/components/Icons/Refresh.js.map +1 -1
  414. package/lib/components/Icons/Refund.js.map +1 -1
  415. package/lib/components/Icons/Reminder.js.map +1 -1
  416. package/lib/components/Icons/Reply.js.map +1 -1
  417. package/lib/components/Icons/Rocket.js.map +1 -1
  418. package/lib/components/Icons/RtfFile.js.map +1 -1
  419. package/lib/components/Icons/STDs.js.map +1 -1
  420. package/lib/components/Icons/Save.js.map +1 -1
  421. package/lib/components/Icons/Scale.js.map +1 -1
  422. package/lib/components/Icons/ScreenReader.js.map +1 -1
  423. package/lib/components/Icons/Search.js +4 -4
  424. package/lib/components/Icons/Search.js.map +1 -1
  425. package/lib/components/Icons/SectionSign.js.map +1 -1
  426. package/lib/components/Icons/Settings.js.map +1 -1
  427. package/lib/components/Icons/SettingsFill.js.map +1 -1
  428. package/lib/components/Icons/Sexualorientation.js.map +1 -1
  429. package/lib/components/Icons/ShakingHand.js.map +1 -1
  430. package/lib/components/Icons/Share.js.map +1 -1
  431. package/lib/components/Icons/SharedHealthData.js.map +1 -1
  432. package/lib/components/Icons/SharedHealthMeasurements.js.map +1 -1
  433. package/lib/components/Icons/Shield.js.map +1 -1
  434. package/lib/components/Icons/ShuntOperation.js.map +1 -1
  435. package/lib/components/Icons/Skeleton.js.map +1 -1
  436. package/lib/components/Icons/Skin.js.map +1 -1
  437. package/lib/components/Icons/Snake.js.map +1 -1
  438. package/lib/components/Icons/Snapchat.js.map +1 -1
  439. package/lib/components/Icons/Sort.js +12 -12
  440. package/lib/components/Icons/Sort.js.map +1 -1
  441. package/lib/components/Icons/SortDown.js.map +1 -1
  442. package/lib/components/Icons/SortUp.js.map +1 -1
  443. package/lib/components/Icons/SpeechBubble.js.map +1 -1
  444. package/lib/components/Icons/Spray.js.map +1 -1
  445. package/lib/components/Icons/StarFill.js.map +1 -1
  446. package/lib/components/Icons/StarStroke.js.map +1 -1
  447. package/lib/components/Icons/StickyNote.js.map +1 -1
  448. package/lib/components/Icons/StickyNotes.js.map +1 -1
  449. package/lib/components/Icons/Stopwatch.js.map +1 -1
  450. package/lib/components/Icons/Sun.js.map +1 -1
  451. package/lib/components/Icons/SupportingPerson.js.map +1 -1
  452. package/lib/components/Icons/Surgery.js.map +1 -1
  453. package/lib/components/Icons/Sweets.js.map +1 -1
  454. package/lib/components/Icons/Syringe.js.map +1 -1
  455. package/lib/components/Icons/Taxi.js.map +1 -1
  456. package/lib/components/Icons/TeddyBear.js.map +1 -1
  457. package/lib/components/Icons/Teenagers.js.map +1 -1
  458. package/lib/components/Icons/ThinkingAboutBaby.js.map +1 -1
  459. package/lib/components/Icons/Ticket.js.map +1 -1
  460. package/lib/components/Icons/TimePassing.js.map +1 -1
  461. package/lib/components/Icons/Toddler.js.map +1 -1
  462. package/lib/components/Icons/Tombstone.js.map +1 -1
  463. package/lib/components/Icons/Toolbox.js.map +1 -1
  464. package/lib/components/Icons/Tooth.js.map +1 -1
  465. package/lib/components/Icons/TotalKneeProsthesis.js.map +1 -1
  466. package/lib/components/Icons/Train.js.map +1 -1
  467. package/lib/components/Icons/Transplantation.js.map +1 -1
  468. package/lib/components/Icons/TrashCan.js.map +1 -1
  469. package/lib/components/Icons/TravelRoute.js.map +1 -1
  470. package/lib/components/Icons/TreatmentAids.js.map +1 -1
  471. package/lib/components/Icons/TriangleX.js.map +1 -1
  472. package/lib/components/Icons/Twitter.js.map +1 -1
  473. package/lib/components/Icons/Undo.js.map +1 -1
  474. package/lib/components/Icons/UniProsthesis.js.map +1 -1
  475. package/lib/components/Icons/Upload.js.map +1 -1
  476. package/lib/components/Icons/UserOrganization.js.map +1 -1
  477. package/lib/components/Icons/Vaccine.js.map +1 -1
  478. package/lib/components/Icons/VerticalDots.js.map +1 -1
  479. package/lib/components/Icons/VideoCamera.js.map +1 -1
  480. package/lib/components/Icons/VideoChat.js.map +1 -1
  481. package/lib/components/Icons/Wallet.js.map +1 -1
  482. package/lib/components/Icons/Watch.js.map +1 -1
  483. package/lib/components/Icons/Website.js.map +1 -1
  484. package/lib/components/Icons/Wheelchair.js.map +1 -1
  485. package/lib/components/Icons/WheelchairActive.js.map +1 -1
  486. package/lib/components/Icons/Window.js.map +1 -1
  487. package/lib/components/Icons/WordDocument.js.map +1 -1
  488. package/lib/components/Icons/WorkSuitcase.js.map +1 -1
  489. package/lib/components/Icons/X.js.map +1 -1
  490. package/lib/components/Icons/XOutline.js.map +1 -1
  491. package/lib/components/Icons/XmlFile.js.map +1 -1
  492. package/lib/components/Icons/YouTube.js.map +1 -1
  493. package/lib/components/Icons/Zoom.js.map +1 -1
  494. package/lib/components/Icons/ZoomInLeft.js.map +1 -1
  495. package/lib/components/Icons/ZoomOutLeft.js.map +1 -1
  496. package/lib/components/Illustration/index.js +1 -1
  497. package/lib/components/Illustrations/BabyMobile.js +1 -1
  498. package/lib/components/Illustrations/BabyMobile.js.map +1 -1
  499. package/lib/components/Illustrations/BabyMobileMedium.js +1 -1
  500. package/lib/components/Illustrations/BabyMobileMedium.js.map +1 -1
  501. package/lib/components/Illustrations/Child.js +1 -1
  502. package/lib/components/Illustrations/Child.js.map +1 -1
  503. package/lib/components/Illustrations/ChildMedium.js +1 -1
  504. package/lib/components/Illustrations/ChildMedium.js.map +1 -1
  505. package/lib/components/Illustrations/Doctor.js +1 -1
  506. package/lib/components/Illustrations/Doctor.js.map +1 -1
  507. package/lib/components/Illustrations/DoctorMedium.js.map +1 -1
  508. package/lib/components/Illustrations/DoctorSmall.js.map +1 -1
  509. package/lib/components/Illustrations/EyeContact.d.ts +8 -0
  510. package/lib/components/Illustrations/EyeContact.js +17 -0
  511. package/lib/components/Illustrations/EyeContact.js.map +1 -0
  512. package/lib/components/Illustrations/EyeContactMedium.d.ts +3 -0
  513. package/lib/components/Illustrations/EyeContactMedium.js +80 -0
  514. package/lib/components/Illustrations/EyeContactMedium.js.map +1 -0
  515. package/lib/components/Illustrations/FacialRecognitionFingerprint.js +1 -1
  516. package/lib/components/Illustrations/FacialRecognitionFingerprint.js.map +1 -1
  517. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js +1 -1
  518. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js.map +1 -1
  519. package/lib/components/Illustrations/GiveBabyFood.js +1 -1
  520. package/lib/components/Illustrations/GiveBabyFood.js.map +1 -1
  521. package/lib/components/Illustrations/GiveBabyFoodMedium.js +1 -1
  522. package/lib/components/Illustrations/GiveBabyFoodMedium.js.map +1 -1
  523. package/lib/components/Illustrations/HealthcarePersonnel.js +1 -1
  524. package/lib/components/Illustrations/HealthcarePersonnel.js.map +1 -1
  525. package/lib/components/Illustrations/HealthcarePersonnelMedium.js.map +1 -1
  526. package/lib/components/Illustrations/HealthcarePersonnelSmall.js.map +1 -1
  527. package/lib/components/Illustrations/IllustrationNames.d.ts +1 -1
  528. package/lib/components/Illustrations/IllustrationNames.js +4 -0
  529. package/lib/components/Illustrations/IllustrationNames.js.map +1 -1
  530. package/lib/components/Illustrations/ReadLetters.js +1 -1
  531. package/lib/components/Illustrations/ReadLetters.js.map +1 -1
  532. package/lib/components/Illustrations/ReadLettersMedium.js +1 -1
  533. package/lib/components/Illustrations/ReadLettersMedium.js.map +1 -1
  534. package/lib/components/Illustrations/SkinToSkin.d.ts +8 -0
  535. package/lib/components/Illustrations/SkinToSkin.js +17 -0
  536. package/lib/components/Illustrations/SkinToSkin.js.map +1 -0
  537. package/lib/components/Illustrations/SkinToSkinMedium.d.ts +3 -0
  538. package/lib/components/Illustrations/SkinToSkinMedium.js +107 -0
  539. package/lib/components/Illustrations/SkinToSkinMedium.js.map +1 -0
  540. package/lib/components/Illustrations/Stork.js +1 -1
  541. package/lib/components/Illustrations/Stork.js.map +1 -1
  542. package/lib/components/Illustrations/StorkMedium.js +1 -1
  543. package/lib/components/Illustrations/StorkMedium.js.map +1 -1
  544. package/lib/components/Illustrations/Stroller.js +1 -1
  545. package/lib/components/Illustrations/Stroller.js.map +1 -1
  546. package/lib/components/Illustrations/StrollerMedium.js +1 -1
  547. package/lib/components/Illustrations/StrollerMedium.js.map +1 -1
  548. package/lib/components/Illustrations/Support2.js +1 -1
  549. package/lib/components/Illustrations/Support2.js.map +1 -1
  550. package/lib/components/Illustrations/Support2Medium.js +1 -1
  551. package/lib/components/Illustrations/Support2Medium.js.map +1 -1
  552. package/lib/components/Illustrations/Thinking.js +1 -1
  553. package/lib/components/Illustrations/Thinking.js.map +1 -1
  554. package/lib/components/Illustrations/ThinkingMedium.js +1 -1
  555. package/lib/components/Illustrations/ThinkingMedium.js.map +1 -1
  556. package/lib/components/Loader/index.js.map +1 -1
  557. package/lib/components/Logo/index.js.map +1 -1
  558. package/lib/components/Modal/index.js.map +1 -1
  559. package/lib/components/NotificationPanel/index.js.map +1 -1
  560. package/lib/components/Panel/index.js +1 -1
  561. package/lib/components/Panel/index.js.map +1 -1
  562. package/lib/components/PanelList/index.js +1 -1
  563. package/lib/components/PanelList/index.js.map +1 -1
  564. package/lib/components/PopMenu/index.js.map +1 -1
  565. package/lib/components/Portal/index.js.map +1 -1
  566. package/lib/components/Progressbar/index.js.map +1 -1
  567. package/lib/components/PromoPanel/index.js.map +1 -1
  568. package/lib/components/RadioButton/RadioMarker/RadioMarker.d.ts +20 -0
  569. package/lib/components/RadioButton/RadioMarker/styles.module.scss +288 -0
  570. package/lib/components/RadioButton/RadioMarker/styles.module.scss.d.ts +20 -0
  571. package/lib/components/RadioButton/index.d.ts +0 -1
  572. package/lib/components/RadioButton/index.js +2 -2
  573. package/lib/components/RadioButton/index.js.map +1 -1
  574. package/lib/components/RadioButton/styles.module.scss +13 -275
  575. package/lib/components/RadioButton/styles.module.scss.d.ts +2 -12
  576. package/lib/components/ServiceMessage/index.js.map +1 -1
  577. package/lib/components/SharingStatus/index.js.map +1 -1
  578. package/lib/components/Step/index.js.map +1 -1
  579. package/lib/components/Stepper/index.js +1 -5
  580. package/lib/components/Stepper/index.js.map +1 -1
  581. package/lib/components/StickyNote/index.js.map +1 -1
  582. package/lib/components/Table/index.js +1 -1
  583. package/lib/components/Table/index.js.map +1 -1
  584. package/lib/components/Tabs/index.js.map +1 -1
  585. package/lib/components/Tag/index.js.map +1 -1
  586. package/lib/components/TagList/index.js.map +1 -1
  587. package/lib/components/Tile/index.js.map +1 -1
  588. package/lib/components/ToastList/index.js.map +1 -1
  589. package/lib/components/Toggle/index.js.map +1 -1
  590. package/lib/components/Validation/index.js.map +1 -1
  591. package/lib/components/VisualCheckboxCloud/Checkbox/Checkbox.d.ts +21 -0
  592. package/lib/components/VisualCheckboxCloud/Checkbox/index.d.ts +3 -0
  593. package/lib/components/VisualCheckboxCloud/Checkbox/index.js +7 -0
  594. package/lib/components/VisualCheckboxCloud/Checkbox/index.js.map +1 -0
  595. package/lib/components/VisualCheckboxCloud/Checkbox/styles.module.scss +10 -0
  596. package/lib/components/VisualCheckboxCloud/Checkbox/styles.module.scss.d.ts +15 -0
  597. package/lib/components/VisualCheckboxCloud/VisualCheckboxCloud.d.ts +29 -0
  598. package/lib/components/VisualCheckboxCloud/index.d.ts +3 -0
  599. package/lib/components/VisualCheckboxCloud/index.js +42 -0
  600. package/lib/components/VisualCheckboxCloud/index.js.map +1 -0
  601. package/lib/components/VisualCheckboxCloud/styles.module.scss +6 -0
  602. package/lib/components/VisualCheckboxCloud/styles.module.scss.d.ts +9 -0
  603. package/lib/components/VisualCheckboxGroup/VisualCheckbox/VisualCheckbox.d.ts +26 -0
  604. package/lib/components/VisualCheckboxGroup/VisualCheckbox/VisualContent.d.ts +10 -0
  605. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.d.ts +3 -0
  606. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.js +7 -0
  607. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.js.map +1 -0
  608. package/lib/components/VisualCheckboxGroup/VisualCheckbox/styles.module.scss +7 -0
  609. package/lib/components/VisualCheckboxGroup/VisualCheckbox/styles.module.scss.d.ts +18 -0
  610. package/lib/components/VisualCheckboxGroup/VisualCheckboxGroup.d.ts +33 -0
  611. package/lib/components/VisualCheckboxGroup/index.d.ts +3 -0
  612. package/lib/components/VisualCheckboxGroup/index.js +47 -0
  613. package/lib/components/VisualCheckboxGroup/index.js.map +1 -0
  614. package/lib/components/VisualCheckboxGroup/styles.module.scss +6 -0
  615. package/lib/components/VisualCheckboxGroup/styles.module.scss.d.ts +10 -0
  616. package/lib/components/VisualRadioCloud/Radio/Radio.d.ts +23 -0
  617. package/lib/components/VisualRadioCloud/Radio/index.d.ts +3 -0
  618. package/lib/components/VisualRadioCloud/Radio/index.js +7 -0
  619. package/lib/components/VisualRadioCloud/Radio/index.js.map +1 -0
  620. package/lib/components/VisualRadioCloud/Radio/styles.module.scss +7 -0
  621. package/lib/components/VisualRadioCloud/Radio/styles.module.scss.d.ts +15 -0
  622. package/lib/components/VisualRadioCloud/VisualRadioCloud.d.ts +39 -0
  623. package/lib/components/VisualRadioCloud/index.d.ts +3 -0
  624. package/lib/components/VisualRadioCloud/index.js +62 -0
  625. package/lib/components/VisualRadioCloud/index.js.map +1 -0
  626. package/lib/components/VisualRadioCloud/styles.module.scss +6 -0
  627. package/lib/components/VisualRadioCloud/styles.module.scss.d.ts +9 -0
  628. package/lib/components/VisualRadioGroup/VisualRadio/VisualContent.d.ts +10 -0
  629. package/lib/components/VisualRadioGroup/VisualRadio/VisualRadio.d.ts +26 -0
  630. package/lib/components/VisualRadioGroup/VisualRadio/index.d.ts +3 -0
  631. package/lib/components/VisualRadioGroup/VisualRadio/index.js +7 -0
  632. package/lib/components/VisualRadioGroup/VisualRadio/index.js.map +1 -0
  633. package/lib/components/VisualRadioGroup/VisualRadio/styles.module.scss +7 -0
  634. package/lib/components/VisualRadioGroup/VisualRadio/styles.module.scss.d.ts +18 -0
  635. package/lib/components/VisualRadioGroup/VisualRadioGroup.d.ts +39 -0
  636. package/lib/components/VisualRadioGroup/index.d.ts +3 -0
  637. package/lib/components/VisualRadioGroup/index.js +67 -0
  638. package/lib/components/VisualRadioGroup/index.js.map +1 -0
  639. package/lib/components/VisualRadioGroup/styles.module.scss +6 -0
  640. package/lib/components/VisualRadioGroup/styles.module.scss.d.ts +10 -0
  641. package/lib/constants.js.map +1 -1
  642. package/lib/constants2.js +6 -6
  643. package/lib/constants2.js.map +1 -1
  644. package/lib/floating-ui.react.js +34 -30
  645. package/lib/floating-ui.react.js.map +1 -1
  646. package/lib/getFilterChips.js.map +1 -1
  647. package/lib/hoc/withBreakpoint/withBreakpoint.js.map +1 -1
  648. package/lib/hooks/useBreakpoint.js.map +1 -1
  649. package/lib/hooks/useElementList.js.map +1 -1
  650. package/lib/hooks/useEventListenerState.js.map +1 -1
  651. package/lib/hooks/useExpand.js.map +1 -1
  652. package/lib/hooks/useFocusToggle.js.map +1 -1
  653. package/lib/hooks/useFocusTrap.js.map +1 -1
  654. package/lib/hooks/useFocusableElements.js.map +1 -1
  655. package/lib/hooks/useIcons.js.map +1 -1
  656. package/lib/hooks/useIdWithFallback.js.map +1 -1
  657. package/lib/hooks/useIntersectionObserver.js.map +1 -1
  658. package/lib/hooks/useInterval.js.map +1 -1
  659. package/lib/hooks/useIsMobileBreakpoint.js.map +1 -1
  660. package/lib/hooks/useIsServerSide.js.map +1 -1
  661. package/lib/hooks/useIsVisible.js.map +1 -1
  662. package/lib/hooks/useKeyboardEvent.js.map +1 -1
  663. package/lib/hooks/useLanguage.js.map +1 -1
  664. package/lib/hooks/useLayoutEvent.js.map +1 -1
  665. package/lib/hooks/useOutsideEvent.js.map +1 -1
  666. package/lib/hooks/usePrevious.js.map +1 -1
  667. package/lib/hooks/usePseudoClasses.js.map +1 -1
  668. package/lib/hooks/useResizeObserver.js.map +1 -1
  669. package/lib/hooks/useReturnFocusOnUnmount.js.map +1 -1
  670. package/lib/hooks/useRovingFocus.js.map +1 -1
  671. package/lib/hooks/useSize.js.map +1 -1
  672. package/lib/hooks/useToggle.js.map +1 -1
  673. package/lib/hooks/usestopPropagation.js.map +1 -1
  674. package/lib/resourceHelper.js +12 -8
  675. package/lib/resourceHelper.js.map +1 -1
  676. package/lib/resources/HN.Designsystem.Drawer.en-GB.json.d.ts +2 -2
  677. package/lib/resources/HN.Designsystem.Filter.en-GB.json.d.ts +6 -4
  678. package/lib/resources/HN.Designsystem.Filter.nb-NO.json.d.ts +6 -4
  679. package/lib/resources/Resources.d.ts +11 -3
  680. package/lib/scss/_visual-form.scss +357 -0
  681. package/lib/theme/currys/color.js.map +1 -1
  682. package/lib/theme/currys/spacing.js.map +1 -1
  683. package/lib/theme/grid.js.map +1 -1
  684. package/lib/theme/index.js.map +1 -1
  685. package/lib/theme/palette.js.map +1 -1
  686. package/lib/theme/spacers.js.map +1 -1
  687. package/lib/utils/accessibility.js.map +1 -1
  688. package/lib/utils/component.js.map +1 -1
  689. package/lib/utils/debounce.js.map +1 -1
  690. package/lib/utils/deepContains.js.map +1 -1
  691. package/lib/utils/device.js.map +1 -1
  692. package/lib/utils/focus.js.map +1 -1
  693. package/lib/utils/language.js.map +1 -1
  694. package/lib/utils/mobile.js.map +1 -1
  695. package/lib/utils/refs.js.map +1 -1
  696. package/lib/utils/resource.js.map +1 -1
  697. package/lib/utils/scroll.js.map +1 -1
  698. package/lib/utils/viewport.js.map +1 -1
  699. package/lib/utils.js.map +1 -1
  700. package/lib/utils2.js.map +1 -1
  701. package/lib/utils3.js +11 -100
  702. package/lib/utils3.js.map +1 -1
  703. package/lib/utils4.js +31 -12
  704. package/lib/utils4.js.map +1 -1
  705. package/lib/utils5.js +112 -31
  706. package/lib/utils5.js.map +1 -1
  707. package/lib/uuid.js.map +1 -1
  708. package/package.json +115 -1
  709. package/scss/_visual-form.scss +357 -0
  710. package/lib/components/RadioButton/utils.d.ts +0 -2
  711. package/lib/utils6.js +0 -115
  712. package/lib/utils6.js.map +0 -1
package/lib/Radio.js ADDED
@@ -0,0 +1,74 @@
1
+ import { useIsMobileBreakpoint } from "./hooks/useIsMobileBreakpoint.js";
2
+ import { useIdWithFallback } from "./hooks/useIdWithFallback.js";
3
+ import { getAriaDescribedBy } from "./utils/accessibility.js";
4
+ import { t as ErrorWrapper_default } from "./ErrorWrapper.js";
5
+ import classNames from "classnames";
6
+ import { useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import styles from "./components/VisualRadioCloud/Radio/styles.module.scss";
9
+ //#region src/components/VisualRadioCloud/Radio/Radio.tsx
10
+ var Radio = (props) => {
11
+ const { className, checked, defaultChecked, children, inputId: inputIdProp, errorText, error = !!errorText, errorTextId: errorTextIdProp, errorWrapperClassName, testId, onChange, ref, ...rest } = props;
12
+ const inputId = useIdWithFallback(inputIdProp);
13
+ const errorTextId = useIdWithFallback(errorTextIdProp);
14
+ const isMobile = useIsMobileBreakpoint();
15
+ const [isChecked, setIsChecked] = useState(!!(checked ?? defaultChecked));
16
+ const [prevChecked, setPrevChecked] = useState(checked);
17
+ if (prevChecked !== checked) {
18
+ setPrevChecked(checked);
19
+ if (checked !== void 0 && checked !== isChecked) setIsChecked(checked);
20
+ }
21
+ const handleChange = (e) => {
22
+ setIsChecked(e.target.checked);
23
+ onChange?.(e);
24
+ };
25
+ return /* @__PURE__ */ jsx(ErrorWrapper_default, {
26
+ className: errorWrapperClassName,
27
+ errorText,
28
+ errorTextId,
29
+ children: /* @__PURE__ */ jsxs("label", {
30
+ className: classNames(styles["visual-radio"], {
31
+ [styles["visual-radio--checked"]]: isChecked,
32
+ [styles["visual-radio--invalid"]]: error
33
+ }, className),
34
+ htmlFor: inputId,
35
+ "data-testid": testId,
36
+ children: [/* @__PURE__ */ jsx("input", {
37
+ ...rest,
38
+ id: inputId,
39
+ ref,
40
+ className: styles["visual-radio__input"],
41
+ type: "radio",
42
+ checked: isChecked,
43
+ "aria-describedby": getAriaDescribedBy(props, errorTextId),
44
+ onChange: handleChange
45
+ }), /* @__PURE__ */ jsxs("span", {
46
+ className: styles["visual-radio__pill"],
47
+ children: [isChecked && /* @__PURE__ */ jsx("span", {
48
+ className: styles["visual-radio__icon"],
49
+ "aria-hidden": "true",
50
+ children: isMobile ? /* @__PURE__ */ jsx("svg", {
51
+ width: "8",
52
+ height: "8",
53
+ fill: "none",
54
+ xmlns: "http://www.w3.org/2000/svg",
55
+ children: /* @__PURE__ */ jsx("path", { d: "M4 8a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z" })
56
+ }) : /* @__PURE__ */ jsx("svg", {
57
+ width: "12",
58
+ height: "12",
59
+ fill: "none",
60
+ xmlns: "http://www.w3.org/2000/svg",
61
+ children: /* @__PURE__ */ jsx("path", { d: "M6 12A6 6 0 1 0 6 0a6 6 0 0 0 0 12Z" })
62
+ })
63
+ }), /* @__PURE__ */ jsx("span", {
64
+ className: styles["visual-radio__label"],
65
+ children
66
+ })]
67
+ })]
68
+ })
69
+ });
70
+ };
71
+ //#endregion
72
+ export { Radio as t };
73
+
74
+ //# sourceMappingURL=Radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.js","names":[],"sources":["../src/components/VisualRadioCloud/Radio/Radio.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../../ErrorWrapper';\n\nimport { useIdWithFallback } from '../../../hooks/useIdWithFallback';\nimport { useIsMobileBreakpoint } from '../../../hooks/useIsMobileBreakpoint';\nimport { getAriaDescribedBy } from '../../../utils/accessibility';\nimport ErrorWrapper from '../../ErrorWrapper';\n\nimport styles from './styles.module.scss';\n\nexport interface RadioProps\n extends\n ErrorWrapperClassNameProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'id' | 'className' | 'children' | 'size' | 'value'> {\n /** Adds custom classes to the root element. */\n className?: string;\n /** Label text shown inside the pill. */\n children: React.ReactNode;\n /** Value identifying this radio inside its group. Required. */\n value: string;\n /** input id of the underlying radio */\n inputId?: string;\n /** Activates error styling. Can be true while errorText is empty (e.g. when used in a cloud). */\n error?: boolean;\n /** Error text to show above the component. */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref forwarded to the underlying input element. */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nconst Radio: React.FC<RadioProps> = props => {\n const {\n className,\n checked,\n defaultChecked,\n children,\n inputId: inputIdProp,\n errorText,\n error = !!errorText,\n errorTextId: errorTextIdProp,\n errorWrapperClassName,\n testId,\n onChange,\n ref,\n ...rest\n } = props;\n\n const inputId = useIdWithFallback(inputIdProp);\n const errorTextId = useIdWithFallback(errorTextIdProp);\n const isMobile = useIsMobileBreakpoint();\n const [isChecked, setIsChecked] = useState<boolean>(!!(checked ?? defaultChecked));\n const [prevChecked, setPrevChecked] = useState<boolean | undefined>(checked);\n if (prevChecked !== checked) {\n setPrevChecked(checked);\n if (checked !== undefined && checked !== isChecked) {\n setIsChecked(checked);\n }\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setIsChecked(e.target.checked);\n onChange?.(e);\n };\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <label\n className={classNames(\n styles['visual-radio'],\n {\n [styles['visual-radio--checked']]: isChecked,\n [styles['visual-radio--invalid']]: error,\n },\n className\n )}\n htmlFor={inputId}\n data-testid={testId}\n >\n <input\n {...rest}\n id={inputId}\n ref={ref}\n className={styles['visual-radio__input']}\n type=\"radio\"\n checked={isChecked}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n onChange={handleChange}\n />\n <span className={styles['visual-radio__pill']}>\n {isChecked && (\n <span className={styles['visual-radio__icon']} aria-hidden=\"true\">\n {isMobile ? (\n <svg width=\"8\" height=\"8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 8a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z\" />\n </svg>\n ) : (\n <svg width=\"12\" height=\"12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12A6 6 0 1 0 6 0a6 6 0 0 0 0 12Z\" />\n </svg>\n )}\n </span>\n )}\n <span className={styles['visual-radio__label']}>{children}</span>\n </span>\n </label>\n </ErrorWrapper>\n );\n};\n\nexport default Radio;\n"],"mappings":";;;;;;;;;AAqCA,IAAM,SAA8B,UAAS;CAC3C,MAAM,EACJ,WACA,SACA,gBACA,UACA,SAAS,aACT,WACA,QAAQ,CAAC,CAAC,WACV,aAAa,iBACb,uBACA,QACA,UACA,KACA,GAAG,SACD;CAEJ,MAAM,UAAU,kBAAkB,WAAW;CAC7C,MAAM,cAAc,kBAAkB,eAAe;CACrD,MAAM,WAAW,sBAAsB;CACvC,MAAM,CAAC,WAAW,gBAAgB,SAAkB,CAAC,EAAE,WAAW,eAAe;CACjF,MAAM,CAAC,aAAa,kBAAkB,SAA8B,OAAO;CAC3E,IAAI,gBAAgB,SAAS;EAC3B,eAAe,OAAO;EACtB,IAAI,YAAY,KAAA,KAAa,YAAY,WACvC,aAAa,OAAO;CAExB;CAEA,MAAM,gBAAgB,MAAiD;EACrE,aAAa,EAAE,OAAO,OAAO;EAC7B,WAAW,CAAC;CACd;CAEA,OACE,oBAAC,sBAAD;EAAc,WAAW;EAAkC;EAAwB;YACjF,qBAAC,SAAD;GACE,WAAW,WACT,OAAO,iBACP;KACG,OAAO,2BAA2B;KAClC,OAAO,2BAA2B;GACrC,GACA,SACF;GACA,SAAS;GACT,eAAa;aAVf,CAYE,oBAAC,SAAD;IACE,GAAI;IACJ,IAAI;IACC;IACL,WAAW,OAAO;IAClB,MAAK;IACL,SAAS;IACT,oBAAkB,mBAAmB,OAAO,WAAW;IACvD,UAAU;GACX,CAAA,GACD,qBAAC,QAAD;IAAM,WAAW,OAAO;cAAxB,CACG,aACC,oBAAC,QAAD;KAAM,WAAW,OAAO;KAAuB,eAAY;eACxD,WACC,oBAAC,OAAD;MAAK,OAAM;MAAI,QAAO;MAAI,MAAK;MAAO,OAAM;gBAC1C,oBAAC,QAAD,EAAM,GAAE,oCAAqC,CAAA;KAC1C,CAAA,IAEL,oBAAC,OAAD;MAAK,OAAM;MAAK,QAAO;MAAK,MAAK;MAAO,OAAM;gBAC5C,oBAAC,QAAD,EAAM,GAAE,sCAAuC,CAAA;KAC5C,CAAA;IAEH,CAAA,GAER,oBAAC,QAAD;KAAM,WAAW,OAAO;KAAyB;IAAe,CAAA,CAC5D;KACD;;CACK,CAAA;AAElB"}
@@ -0,0 +1,84 @@
1
+ import { t as uuid } from "./uuid.js";
2
+ import { AnalyticsId, FormOnColor, FormSize } from "./constants.js";
3
+ import { useIdWithFallback } from "./hooks/useIdWithFallback.js";
4
+ import { getAriaDescribedBy } from "./utils/accessibility.js";
5
+ import { t as ErrorWrapper_default } from "./ErrorWrapper.js";
6
+ import { r as renderLabelAsParent, t as getLabelText } from "./utils2.js";
7
+ import { t as RadioMarker } from "./RadioMarker.js";
8
+ import classNames from "classnames";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ import radioButtonStyles from "./components/RadioButton/styles.module.scss";
11
+ //#region src/components/RadioButton/RadioButton.tsx
12
+ var RadioButton = (props) => {
13
+ const { className, defaultChecked, onChange, disabled, label, inputId = uuid(), onColor = FormOnColor.onwhite, name = inputId, size, errorText, errorTextId: errorTextIdProp, error = !!errorText, errorWrapperClassName, value = getLabelText(label), testId, required, labelClassNames, ref, ...rest } = props;
14
+ const invalid = error || onColor === FormOnColor.oninvalid;
15
+ const onDark = onColor === FormOnColor.ondark;
16
+ const onGrey = onColor === FormOnColor.ongrey;
17
+ const onBlueberry = onColor === FormOnColor.onblueberry;
18
+ const onCherry = onColor === FormOnColor.oninvalid;
19
+ const isLarge = size === FormSize.large;
20
+ const errorTextId = useIdWithFallback(errorTextIdProp);
21
+ const radioButtonWrapperClasses = classNames(radioButtonStyles["radio-button-wrapper"], {
22
+ [radioButtonStyles["radio-button-wrapper__large"]]: isLarge,
23
+ [radioButtonStyles["radio-button-wrapper__large--invalid"]]: isLarge && onCherry,
24
+ [radioButtonStyles["radio-button-wrapper__large--on-blueberry"]]: isLarge && onBlueberry
25
+ });
26
+ const radioButtonLabelClasses = classNames(radioButtonStyles["radio-button-label"], {
27
+ [radioButtonStyles["radio-button-label--disabled"]]: disabled,
28
+ [radioButtonStyles["radio-button-label--on-dark"]]: onDark,
29
+ [radioButtonStyles["radio-button-label--invalid"]]: invalid,
30
+ [radioButtonStyles["radio-button-label__large"]]: isLarge,
31
+ [radioButtonStyles["radio-button-label__large--disabled"]]: isLarge && disabled,
32
+ [radioButtonStyles["radio-button-label__large--on-grey"]]: isLarge && onGrey,
33
+ [radioButtonStyles["radio-button-label__large--on-blueberry"]]: isLarge && onBlueberry,
34
+ [radioButtonStyles["radio-button-label__large--invalid"]]: isLarge && onCherry
35
+ }, labelClassNames);
36
+ const radioButtonClasses = classNames(radioButtonStyles["radio-button"], className);
37
+ const getLabelContent = () => /* @__PURE__ */ jsxs("span", {
38
+ className: radioButtonStyles["radio-button__marker-wrapper"],
39
+ children: [/* @__PURE__ */ jsx("input", {
40
+ ...rest,
41
+ id: inputId,
42
+ name,
43
+ className: radioButtonClasses,
44
+ type: "radio",
45
+ disabled,
46
+ value,
47
+ ref,
48
+ defaultChecked,
49
+ "aria-describedby": getAriaDescribedBy(props, errorTextId),
50
+ required,
51
+ onChange
52
+ }), /* @__PURE__ */ jsx(RadioMarker, {
53
+ disabled,
54
+ error: invalid,
55
+ onColor,
56
+ size
57
+ })]
58
+ });
59
+ return /* @__PURE__ */ jsx(ErrorWrapper_default, {
60
+ className: errorWrapperClassName,
61
+ errorText,
62
+ errorTextId,
63
+ children: /* @__PURE__ */ jsx("div", {
64
+ "data-testid": testId,
65
+ "data-analyticsid": AnalyticsId.RadioButton,
66
+ className: radioButtonWrapperClasses,
67
+ children: renderLabelAsParent({
68
+ label,
69
+ children: getLabelContent(),
70
+ inputId,
71
+ onColor,
72
+ labelClassName: radioButtonLabelClasses,
73
+ sublabelWrapperClassName: radioButtonStyles["radiobutton-sublabel-wrapper"],
74
+ large: isLarge,
75
+ afterLabelChildrenClassName: radioButtonStyles["radiobutton-afterlabelchildren-wrapper"]
76
+ })
77
+ })
78
+ });
79
+ };
80
+ RadioButton.displayName = "RadioButton";
81
+ //#endregion
82
+ export { RadioButton as t };
83
+
84
+ //# sourceMappingURL=RadioButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioButton.js","names":[],"sources":["../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport RadioMarker from './RadioMarker/RadioMarker';\nimport { AnalyticsId, FormOnColor, FormSize } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { getAriaDescribedBy } from '../../utils/accessibility';\nimport { uuid } from '../../utils/uuid';\nimport ErrorWrapper from '../ErrorWrapper';\nimport { getLabelText, renderLabelAsParent } from '../Label/utils';\n\nimport radioButtonStyles from './styles.module.scss';\n\nexport interface RadioButtonProps\n extends\n ErrorWrapperClassNameProps,\n Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'aria-describedby' | 'name' | 'value' | 'disabled' | 'checked' | 'defaultChecked' | 'required' | 'onChange'\n > {\n /** Adds custom classes to the element. */\n className?: string;\n /** The <Label/> next to the radioButton - sublabels kan ikke kombineres med large variant */\n label: React.ReactNode;\n /** Adds custom classes to the label element. */\n labelClassNames?: string;\n /** input id of the radioButton */\n inputId?: string;\n /** Changes the visuals of the radioButton */\n onColor?: keyof typeof FormOnColor;\n /** Changes the visuals of the radioButton. Large version only works when used inside a FormGroup wrapper. */\n size?: keyof typeof FormSize;\n /** Activates Error style for the radioButton - This is can be true while errorText is empty, when in a FormGroup */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref passed to the input element */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nexport const RadioButton: React.FC<RadioButtonProps> = props => {\n const {\n className,\n defaultChecked,\n onChange,\n disabled,\n label,\n inputId = uuid(),\n onColor = FormOnColor.onwhite,\n name = inputId,\n size,\n errorText,\n errorTextId: errorTextIdProp,\n error = !!errorText,\n errorWrapperClassName,\n value = getLabelText(label),\n testId,\n required,\n labelClassNames,\n ref,\n ...rest\n } = props;\n const invalid = error || onColor === FormOnColor.oninvalid;\n const onDark = onColor === FormOnColor.ondark;\n const onGrey = onColor === FormOnColor.ongrey;\n const onBlueberry = onColor === FormOnColor.onblueberry;\n const onCherry = onColor === FormOnColor.oninvalid;\n const isLarge = size === FormSize.large;\n\n const errorTextId = useIdWithFallback(errorTextIdProp);\n\n const radioButtonWrapperClasses = classNames(radioButtonStyles['radio-button-wrapper'], {\n [radioButtonStyles['radio-button-wrapper__large']]: isLarge,\n [radioButtonStyles['radio-button-wrapper__large--invalid']]: isLarge && onCherry,\n [radioButtonStyles['radio-button-wrapper__large--on-blueberry']]: isLarge && onBlueberry,\n });\n const radioButtonLabelClasses = classNames(\n radioButtonStyles['radio-button-label'],\n {\n [radioButtonStyles['radio-button-label--disabled']]: disabled,\n [radioButtonStyles['radio-button-label--on-dark']]: onDark,\n [radioButtonStyles['radio-button-label--invalid']]: invalid,\n [radioButtonStyles['radio-button-label__large']]: isLarge,\n [radioButtonStyles['radio-button-label__large--disabled']]: isLarge && disabled,\n [radioButtonStyles['radio-button-label__large--on-grey']]: isLarge && onGrey,\n [radioButtonStyles['radio-button-label__large--on-blueberry']]: isLarge && onBlueberry,\n [radioButtonStyles['radio-button-label__large--invalid']]: isLarge && onCherry,\n },\n labelClassNames\n );\n const radioButtonClasses = classNames(radioButtonStyles['radio-button'], className);\n\n const getLabelContent = (): React.ReactNode => (\n <span className={radioButtonStyles['radio-button__marker-wrapper']}>\n <input\n {...rest}\n id={inputId}\n name={name}\n className={radioButtonClasses}\n type=\"radio\"\n disabled={disabled}\n value={value}\n ref={ref}\n defaultChecked={defaultChecked}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n required={required}\n onChange={onChange}\n />\n <RadioMarker disabled={disabled} error={invalid} onColor={onColor} size={size} />\n </span>\n );\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <div data-testid={testId} data-analyticsid={AnalyticsId.RadioButton} className={radioButtonWrapperClasses}>\n {renderLabelAsParent({\n label: label,\n children: getLabelContent(),\n inputId: inputId,\n onColor: onColor as FormOnColor,\n labelClassName: radioButtonLabelClasses,\n sublabelWrapperClassName: radioButtonStyles['radiobutton-sublabel-wrapper'],\n large: isLarge,\n afterLabelChildrenClassName: radioButtonStyles['radiobutton-afterlabelchildren-wrapper'],\n })}\n </div>\n </ErrorWrapper>\n );\n};\n\nRadioButton.displayName = 'RadioButton';\n\nexport default RadioButton;\n"],"mappings":";;;;;;;;;;;AA6CA,IAAa,eAA0C,UAAS;CAC9D,MAAM,EACJ,WACA,gBACA,UACA,UACA,OACA,UAAU,KAAK,GACf,UAAU,YAAY,SACtB,OAAO,SACP,MACA,WACA,aAAa,iBACb,QAAQ,CAAC,CAAC,WACV,uBACA,QAAQ,aAAa,KAAK,GAC1B,QACA,UACA,iBACA,KACA,GAAG,SACD;CACJ,MAAM,UAAU,SAAS,YAAY,YAAY;CACjD,MAAM,SAAS,YAAY,YAAY;CACvC,MAAM,SAAS,YAAY,YAAY;CACvC,MAAM,cAAc,YAAY,YAAY;CAC5C,MAAM,WAAW,YAAY,YAAY;CACzC,MAAM,UAAU,SAAS,SAAS;CAElC,MAAM,cAAc,kBAAkB,eAAe;CAErD,MAAM,4BAA4B,WAAW,kBAAkB,yBAAyB;GACrF,kBAAkB,iCAAiC;GACnD,kBAAkB,0CAA0C,WAAW;GACvE,kBAAkB,+CAA+C,WAAW;CAC/E,CAAC;CACD,MAAM,0BAA0B,WAC9B,kBAAkB,uBAClB;GACG,kBAAkB,kCAAkC;GACpD,kBAAkB,iCAAiC;GACnD,kBAAkB,iCAAiC;GACnD,kBAAkB,+BAA+B;GACjD,kBAAkB,yCAAyC,WAAW;GACtE,kBAAkB,wCAAwC,WAAW;GACrE,kBAAkB,6CAA6C,WAAW;GAC1E,kBAAkB,wCAAwC,WAAW;CACxE,GACA,eACF;CACA,MAAM,qBAAqB,WAAW,kBAAkB,iBAAiB,SAAS;CAElF,MAAM,wBACJ,qBAAC,QAAD;EAAM,WAAW,kBAAkB;YAAnC,CACE,oBAAC,SAAD;GACE,GAAI;GACJ,IAAI;GACE;GACN,WAAW;GACX,MAAK;GACK;GACH;GACF;GACW;GAChB,oBAAkB,mBAAmB,OAAO,WAAW;GAC7C;GACA;EACX,CAAA,GACD,oBAAC,aAAD;GAAuB;GAAU,OAAO;GAAkB;GAAe;EAAO,CAAA,CAC5E;;CAGR,OACE,oBAAC,sBAAD;EAAc,WAAW;EAAkC;EAAwB;YACjF,oBAAC,OAAD;GAAK,eAAa;GAAQ,oBAAkB,YAAY;GAAa,WAAW;aAC7E,oBAAoB;IACZ;IACP,UAAU,gBAAgB;IACjB;IACA;IACT,gBAAgB;IAChB,0BAA0B,kBAAkB;IAC5C,OAAO;IACP,6BAA6B,kBAAkB;GACjD,CAAC;EACE,CAAA;CACO,CAAA;AAElB;AAEA,YAAY,cAAc"}
@@ -0,0 +1,35 @@
1
+ import { FormOnColor, FormSize } from "./constants.js";
2
+ import classNames from "classnames";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import styles from "./components/RadioButton/RadioMarker/styles.module.scss";
5
+ //#region src/components/RadioButton/RadioMarker/RadioMarker.tsx
6
+ /**
7
+ * Does not render an <input>; consumers render this on their end.
8
+ */
9
+ var RadioMarker = (props) => {
10
+ const { checked = false, disabled = false, error = false, onColor = FormOnColor.onwhite, size, className } = props;
11
+ const onWhite = onColor === FormOnColor.onwhite;
12
+ const onGrey = onColor === FormOnColor.ongrey;
13
+ const onBlueberry = onColor === FormOnColor.onblueberry;
14
+ const onInvalid = error || onColor === FormOnColor.oninvalid;
15
+ const onDark = onColor === FormOnColor.ondark;
16
+ const large = size === FormSize.large;
17
+ return /* @__PURE__ */ jsx("span", {
18
+ className: classNames(styles["radio__marker"], large ? styles["radio__marker__large"] : styles["radio__marker__regular"], {
19
+ [styles["radio__marker--on-white"]]: onWhite,
20
+ [styles["radio__marker--on-grey"]]: onGrey,
21
+ [styles["radio__marker--on-blueberry"]]: onBlueberry,
22
+ [styles["radio__marker--on-dark"]]: onDark,
23
+ [styles["radio__marker--on-invalid"]]: onInvalid,
24
+ [styles["radio__marker--invalid"]]: onInvalid,
25
+ [styles["radio__marker--disabled"]]: disabled,
26
+ [styles["radio__marker--checked"]]: checked
27
+ }, className),
28
+ "aria-hidden": "true",
29
+ children: /* @__PURE__ */ jsx("span", { className: styles["radio__marker-dot"] })
30
+ });
31
+ };
32
+ //#endregion
33
+ export { RadioMarker as t };
34
+
35
+ //# sourceMappingURL=RadioMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioMarker.js","names":[],"sources":["../src/components/RadioButton/RadioMarker/RadioMarker.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport { FormOnColor, FormSize } from '../../../constants';\n\nimport styles from './styles.module.scss';\n\nexport interface RadioMarkerProps {\n /** Whether the radio is checked. Controls the inner dot visibility. */\n checked?: boolean;\n /** Disables the visual state of the marker. */\n disabled?: boolean;\n /** Activates error styling. */\n error?: boolean;\n /** Background context the marker is rendered on. */\n onColor?: keyof typeof FormOnColor;\n /** Size variant of the marker. */\n size?: keyof typeof FormSize;\n /** Adds custom classes to the marker wrapper. */\n className?: string;\n}\n\n/**\n * Does not render an <input>; consumers render this on their end.\n */\nexport const RadioMarker: React.FC<RadioMarkerProps> = props => {\n const { checked = false, disabled = false, error = false, onColor = FormOnColor.onwhite, size, className } = props;\n\n const onWhite = onColor === FormOnColor.onwhite;\n const onGrey = onColor === FormOnColor.ongrey;\n const onBlueberry = onColor === FormOnColor.onblueberry;\n const onInvalid = error || onColor === FormOnColor.oninvalid;\n const onDark = onColor === FormOnColor.ondark;\n const large = size === FormSize.large;\n\n const markerClasses = classNames(\n styles['radio__marker'],\n large ? styles['radio__marker__large'] : styles['radio__marker__regular'],\n {\n [styles['radio__marker--on-white']]: onWhite,\n [styles['radio__marker--on-grey']]: onGrey,\n [styles['radio__marker--on-blueberry']]: onBlueberry,\n [styles['radio__marker--on-dark']]: onDark,\n [styles['radio__marker--on-invalid']]: onInvalid,\n [styles['radio__marker--invalid']]: onInvalid,\n [styles['radio__marker--disabled']]: disabled,\n [styles['radio__marker--checked']]: checked,\n },\n className\n );\n\n return (\n <span className={markerClasses} aria-hidden=\"true\">\n <span className={styles['radio__marker-dot']} />\n </span>\n );\n};\n\nexport default RadioMarker;\n"],"mappings":";;;;;;;;AAwBA,IAAa,eAA0C,UAAS;CAC9D,MAAM,EAAE,UAAU,OAAO,WAAW,OAAO,QAAQ,OAAO,UAAU,YAAY,SAAS,MAAM,cAAc;CAE7G,MAAM,UAAU,YAAY,YAAY;CACxC,MAAM,SAAS,YAAY,YAAY;CACvC,MAAM,cAAc,YAAY,YAAY;CAC5C,MAAM,YAAY,SAAS,YAAY,YAAY;CACnD,MAAM,SAAS,YAAY,YAAY;CACvC,MAAM,QAAQ,SAAS,SAAS;CAkBhC,OACE,oBAAC,QAAD;EAAM,WAjBc,WACpB,OAAO,kBACP,QAAQ,OAAO,0BAA0B,OAAO,2BAChD;IACG,OAAO,6BAA6B;IACpC,OAAO,4BAA4B;IACnC,OAAO,iCAAiC;IACxC,OAAO,4BAA4B;IACnC,OAAO,+BAA+B;IACtC,OAAO,4BAA4B;IACnC,OAAO,6BAA6B;IACpC,OAAO,4BAA4B;EACtC,GACA,SAIiB;EAAe,eAAY;YAC1C,oBAAC,QAAD,EAAM,WAAW,OAAO,qBAAuB,CAAA;CAC3C,CAAA;AAEV"}
package/lib/Select.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":[],"sources":["../src/components/Select/Select.tsx","../src/components/Select/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport { AnalyticsId, AVERAGE_CHARACTER_WIDTH_PX, FormOnColor, IconSize } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { getColor } from '../../theme/currys';\nimport { getAriaDescribedBy } from '../../utils/accessibility';\nimport ErrorWrapper from '../ErrorWrapper';\nimport Icon from '../Icon';\nimport ChevronDown from '../Icons/ChevronDown';\nimport { renderLabel } from '../Label/utils';\n\nimport selectStyles from './styles.module.scss';\n\ntype SelectConcept = 'normal' | 'transparent';\n\nexport interface SelectProps\n extends\n ErrorWrapperClassNameProps,\n Pick<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n 'aria-describedby' | 'name' | 'disabled' | 'required' | 'value' | 'onChange' | 'autoComplete'\n > {\n /** Sets the content of the select element. */\n children: React.ReactNode;\n /** Adds custom classes to the element. */\n className?: string;\n /** Changes the visuals of the component */\n concept?: SelectConcept;\n /** The label text above the select */\n label?: React.ReactNode;\n /** Adds custom classes to the label wrapper */\n labelClassName?: string;\n /** Changes the visuals of the component */\n onColor?: keyof typeof FormOnColor;\n /** Activates Error style for the select component - This is can be true while errorText is empty, when in a FormGroup */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** select id of the select element */\n selectId?: string;\n /** Width of select in characters (approximate) */\n width?: number;\n /** Gives defaultvalue to the comp. Preferred over selected prop on option by react */\n defaultValue?: string | number;\n /** Adds custom classes to the wrapper tag */\n wrapperClassName?: string;\n /** Ref passed to the select element */\n ref?: React.Ref<HTMLSelectElement | null>;\n}\n\nconst getSelectMaxWidth = (characters: number): string => {\n const paddingWidth = '2rem';\n\n return `calc(${characters * AVERAGE_CHARACTER_WIDTH_PX}px + ${paddingWidth})`;\n};\n\nconst getIconColor = (invalid: boolean, disabled: boolean): string => {\n const iconColor = invalid ? 'cherry' : 'blueberry';\n return disabled ? getColor('neutral', 500) : getColor(iconColor, 600);\n};\n\nexport const Select: React.FC<SelectProps> = props => {\n const {\n className,\n children,\n concept = 'normal',\n disabled,\n error,\n errorText,\n errorTextId: errorTextIdProp,\n selectId: selectIdProp,\n errorWrapperClassName,\n label,\n name = props.selectId,\n onColor = FormOnColor.onwhite,\n testId,\n width,\n required,\n value,\n defaultValue,\n autoComplete = 'off',\n wrapperClassName,\n ref,\n labelClassName,\n ...rest\n } = props;\n\n const selectId = useIdWithFallback(selectIdProp);\n const errorTextId = useIdWithFallback(errorTextIdProp);\n const onBlueberry = onColor === 'onblueberry';\n const invalid = onColor === 'oninvalid' || !!errorText || !!error;\n const iconColor = getIconColor(invalid, !!disabled);\n const maxWidth = width ? getSelectMaxWidth(width) : undefined;\n\n const selectInnerWrapperClasses = classNames(\n selectStyles['select-inner-wrapper'],\n {\n [selectStyles['select-inner-wrapper--transparent']]: concept === 'transparent',\n [selectStyles['select-inner-wrapper--on-blueberry']]: onBlueberry,\n [selectStyles['select-inner-wrapper--invalid']]: invalid,\n [selectStyles['select-inner-wrapper--disabled']]: disabled,\n },\n className\n );\n\n const selectClasses = classNames(selectStyles.select, {\n [selectStyles['select--on-blueberry']]: onBlueberry,\n [selectStyles['select--invalid']]: invalid,\n });\n\n const selectWrapperClasses = classNames(selectStyles['select-wrapper'], wrapperClassName);\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <div data-testid={testId} data-analyticsid={AnalyticsId.Select} className={selectWrapperClasses} style={{ maxWidth }}>\n {renderLabel({ label: label, inputId: selectId, onColor: onColor as FormOnColor, className: labelClassName })}\n <div className={selectInnerWrapperClasses} data-testid={testId + '-inner-wrapper'}>\n <Icon\n className={selectStyles['select-arrow']}\n svgIcon={ChevronDown}\n color={iconColor}\n size={IconSize.XSmall}\n testId={testId + '-icon'}\n />\n <select\n {...rest}\n aria-invalid={!!invalid}\n id={selectId}\n name={name}\n className={selectClasses}\n disabled={disabled}\n ref={ref}\n required={required}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n aria-required={!!required}\n value={value}\n defaultValue={defaultValue}\n autoComplete={autoComplete ? autoComplete : undefined}\n >\n {children}\n </select>\n </div>\n </div>\n </ErrorWrapper>\n );\n};\n\nexport default Select;\n","import Select from './Select';\nexport * from './Select';\nexport default Select;\n"],"mappings":";;;;;;;;;;;;AAwDA,IAAM,qBAAqB,eAA+B;CAGxD,OAAO,QAAQ,aAAA,GAAwC;;AAGzD,IAAM,gBAAgB,SAAkB,aAA8B;CAEpE,OAAO,WAAW,SAAS,WAAW,IAAI,GAAG,SAD3B,UAAU,WAAW,aAC0B,IAAI;;AAGvE,IAAa,UAAgC,UAAS;CACpD,MAAM,EACJ,WACA,UACA,UAAU,UACV,UACA,OACA,WACA,aAAa,iBACb,UAAU,cACV,uBACA,OACA,OAAO,MAAM,UACb,UAAU,YAAY,SACtB,QACA,OACA,UACA,OACA,cACA,eAAe,OACf,kBACA,KACA,gBACA,GAAG,SACD;CAEJ,MAAM,WAAW,kBAAkB,aAAa;CAChD,MAAM,cAAc,kBAAkB,gBAAgB;CACtD,MAAM,cAAc,YAAY;CAChC,MAAM,UAAU,YAAY,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;CAC5D,MAAM,YAAY,aAAa,SAAS,CAAC,CAAC,SAAS;CACnD,MAAM,WAAW,QAAQ,kBAAkB,MAAM,GAAG,KAAA;CAEpD,MAAM,4BAA4B,WAChC,aAAa,yBACb;GACG,aAAa,uCAAuC,YAAY;GAChE,aAAa,wCAAwC;GACrD,aAAa,mCAAmC;GAChD,aAAa,oCAAoC;EACnD,EACD,UACD;CAED,MAAM,gBAAgB,WAAW,aAAa,QAAQ;GACnD,aAAa,0BAA0B;GACvC,aAAa,qBAAqB;EACpC,CAAC;CAEF,MAAM,uBAAuB,WAAW,aAAa,mBAAmB,iBAAiB;CAEzF,OACE,oBAAC,sBAAD;EAAc,WAAW;EAAkC;EAAwB;YACjF,qBAAC,OAAD;GAAK,eAAa;GAAQ,oBAAkB,YAAY;GAAQ,WAAW;GAAsB,OAAO,EAAE,UAAU;aAApH,CACG,YAAY;IAAS;IAAO,SAAS;IAAmB;IAAwB,WAAW;IAAgB,CAAC,EAC7G,qBAAC,OAAD;IAAK,WAAW;IAA2B,eAAa,SAAS;cAAjE,CACE,oBAAC,cAAD;KACE,WAAW,aAAa;KACxB,SAAS;KACT,OAAO;KACP,MAAM,SAAS;KACf,QAAQ,SAAS;KACjB,CAAA,EACF,oBAAC,UAAD;KACE,GAAI;KACJ,gBAAc,CAAC,CAAC;KAChB,IAAI;KACE;KACN,WAAW;KACD;KACL;KACK;KACV,oBAAkB,mBAAmB,OAAO,YAAY;KACxD,iBAAe,CAAC,CAAC;KACV;KACO;KACd,cAAc,eAAe,eAAe,KAAA;KAE3C;KACM,CAAA,CACL;MACF;;EACO,CAAA;;;;ACnJnB,IAAA,iBAAe"}
1
+ {"version":3,"file":"Select.js","names":[],"sources":["../src/components/Select/Select.tsx","../src/components/Select/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport { AnalyticsId, AVERAGE_CHARACTER_WIDTH_PX, FormOnColor, IconSize } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { getColor } from '../../theme/currys';\nimport { getAriaDescribedBy } from '../../utils/accessibility';\nimport ErrorWrapper from '../ErrorWrapper';\nimport Icon from '../Icon';\nimport ChevronDown from '../Icons/ChevronDown';\nimport { renderLabel } from '../Label/utils';\n\nimport selectStyles from './styles.module.scss';\n\ntype SelectConcept = 'normal' | 'transparent';\n\nexport interface SelectProps\n extends\n ErrorWrapperClassNameProps,\n Pick<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n 'aria-describedby' | 'name' | 'disabled' | 'required' | 'value' | 'onChange' | 'autoComplete'\n > {\n /** Sets the content of the select element. */\n children: React.ReactNode;\n /** Adds custom classes to the element. */\n className?: string;\n /** Changes the visuals of the component */\n concept?: SelectConcept;\n /** The label text above the select */\n label?: React.ReactNode;\n /** Adds custom classes to the label wrapper */\n labelClassName?: string;\n /** Changes the visuals of the component */\n onColor?: keyof typeof FormOnColor;\n /** Activates Error style for the select component - This is can be true while errorText is empty, when in a FormGroup */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** select id of the select element */\n selectId?: string;\n /** Width of select in characters (approximate) */\n width?: number;\n /** Gives defaultvalue to the comp. Preferred over selected prop on option by react */\n defaultValue?: string | number;\n /** Adds custom classes to the wrapper tag */\n wrapperClassName?: string;\n /** Ref passed to the select element */\n ref?: React.Ref<HTMLSelectElement | null>;\n}\n\nconst getSelectMaxWidth = (characters: number): string => {\n const paddingWidth = '2rem';\n\n return `calc(${characters * AVERAGE_CHARACTER_WIDTH_PX}px + ${paddingWidth})`;\n};\n\nconst getIconColor = (invalid: boolean, disabled: boolean): string => {\n const iconColor = invalid ? 'cherry' : 'blueberry';\n return disabled ? getColor('neutral', 500) : getColor(iconColor, 600);\n};\n\nexport const Select: React.FC<SelectProps> = props => {\n const {\n className,\n children,\n concept = 'normal',\n disabled,\n error,\n errorText,\n errorTextId: errorTextIdProp,\n selectId: selectIdProp,\n errorWrapperClassName,\n label,\n name = props.selectId,\n onColor = FormOnColor.onwhite,\n testId,\n width,\n required,\n value,\n defaultValue,\n autoComplete = 'off',\n wrapperClassName,\n ref,\n labelClassName,\n ...rest\n } = props;\n\n const selectId = useIdWithFallback(selectIdProp);\n const errorTextId = useIdWithFallback(errorTextIdProp);\n const onBlueberry = onColor === 'onblueberry';\n const invalid = onColor === 'oninvalid' || !!errorText || !!error;\n const iconColor = getIconColor(invalid, !!disabled);\n const maxWidth = width ? getSelectMaxWidth(width) : undefined;\n\n const selectInnerWrapperClasses = classNames(\n selectStyles['select-inner-wrapper'],\n {\n [selectStyles['select-inner-wrapper--transparent']]: concept === 'transparent',\n [selectStyles['select-inner-wrapper--on-blueberry']]: onBlueberry,\n [selectStyles['select-inner-wrapper--invalid']]: invalid,\n [selectStyles['select-inner-wrapper--disabled']]: disabled,\n },\n className\n );\n\n const selectClasses = classNames(selectStyles.select, {\n [selectStyles['select--on-blueberry']]: onBlueberry,\n [selectStyles['select--invalid']]: invalid,\n });\n\n const selectWrapperClasses = classNames(selectStyles['select-wrapper'], wrapperClassName);\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <div data-testid={testId} data-analyticsid={AnalyticsId.Select} className={selectWrapperClasses} style={{ maxWidth }}>\n {renderLabel({ label: label, inputId: selectId, onColor: onColor as FormOnColor, className: labelClassName })}\n <div className={selectInnerWrapperClasses} data-testid={testId + '-inner-wrapper'}>\n <Icon\n className={selectStyles['select-arrow']}\n svgIcon={ChevronDown}\n color={iconColor}\n size={IconSize.XSmall}\n testId={testId + '-icon'}\n />\n <select\n {...rest}\n aria-invalid={!!invalid}\n id={selectId}\n name={name}\n className={selectClasses}\n disabled={disabled}\n ref={ref}\n required={required}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n aria-required={!!required}\n value={value}\n defaultValue={defaultValue}\n autoComplete={autoComplete ? autoComplete : undefined}\n >\n {children}\n </select>\n </div>\n </div>\n </ErrorWrapper>\n );\n};\n\nexport default Select;\n","import Select from './Select';\nexport * from './Select';\nexport default Select;\n"],"mappings":";;;;;;;;;;;;AAwDA,IAAM,qBAAqB,eAA+B;CAGxD,OAAO,QAAQ,aAAA,GAAwC;AACzD;AAEA,IAAM,gBAAgB,SAAkB,aAA8B;CAEpE,OAAO,WAAW,SAAS,WAAW,GAAG,IAAI,SAD3B,UAAU,WAAW,aAC0B,GAAG;AACtE;AAEA,IAAa,UAAgC,UAAS;CACpD,MAAM,EACJ,WACA,UACA,UAAU,UACV,UACA,OACA,WACA,aAAa,iBACb,UAAU,cACV,uBACA,OACA,OAAO,MAAM,UACb,UAAU,YAAY,SACtB,QACA,OACA,UACA,OACA,cACA,eAAe,OACf,kBACA,KACA,gBACA,GAAG,SACD;CAEJ,MAAM,WAAW,kBAAkB,YAAY;CAC/C,MAAM,cAAc,kBAAkB,eAAe;CACrD,MAAM,cAAc,YAAY;CAChC,MAAM,UAAU,YAAY,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;CAC5D,MAAM,YAAY,aAAa,SAAS,CAAC,CAAC,QAAQ;CAClD,MAAM,WAAW,QAAQ,kBAAkB,KAAK,IAAI,KAAA;CAEpD,MAAM,4BAA4B,WAChC,aAAa,yBACb;GACG,aAAa,uCAAuC,YAAY;GAChE,aAAa,wCAAwC;GACrD,aAAa,mCAAmC;GAChD,aAAa,oCAAoC;CACpD,GACA,SACF;CAEA,MAAM,gBAAgB,WAAW,aAAa,QAAQ;GACnD,aAAa,0BAA0B;GACvC,aAAa,qBAAqB;CACrC,CAAC;CAED,MAAM,uBAAuB,WAAW,aAAa,mBAAmB,gBAAgB;CAExF,OACE,oBAAC,sBAAD;EAAc,WAAW;EAAkC;EAAwB;YACjF,qBAAC,OAAD;GAAK,eAAa;GAAQ,oBAAkB,YAAY;GAAQ,WAAW;GAAsB,OAAO,EAAE,SAAS;aAAnH,CACG,YAAY;IAAS;IAAO,SAAS;IAAmB;IAAwB,WAAW;GAAe,CAAC,GAC5G,qBAAC,OAAD;IAAK,WAAW;IAA2B,eAAa,SAAS;cAAjE,CACE,oBAAC,cAAD;KACE,WAAW,aAAa;KACxB,SAAS;KACT,OAAO;KACP,MAAM,SAAS;KACf,QAAQ,SAAS;IAClB,CAAA,GACD,oBAAC,UAAD;KACE,GAAI;KACJ,gBAAc,CAAC,CAAC;KAChB,IAAI;KACE;KACN,WAAW;KACD;KACL;KACK;KACV,oBAAkB,mBAAmB,OAAO,WAAW;KACvD,iBAAe,CAAC,CAAC;KACV;KACO;KACd,cAAc,eAAe,eAAe,KAAA;KAE3C;IACK,CAAA,CACL;KACF;;CACO,CAAA;AAElB;;;ACrJA,IAAA,iBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSelectItem.js","names":[],"sources":["../src/components/Dropdown/SingleSelect/utils.tsx","../src/components/Dropdown/SingleSelect/SingleSelectItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SingleSelectContextType } from './SingleSelect';\n\nexport const SingleSelectContext = React.createContext<SingleSelectContextType | null>(null);\n\nexport const useSingleSelect = (): SingleSelectContextType | null => React.useContext(SingleSelectContext);\n","import React, { useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { AsChildSlotHandle } from '../../AsChildSlot';\n\nimport { useSingleSelect } from './utils';\nimport AsChildSlot from '../../AsChildSlot';\n\nimport styles from './styles.module.scss';\n\nexport interface SingleSelectItemProps extends Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'disabled'> {\n /** The text to the singleSelectItem */\n text?: string;\n /** input id of the singleSelectItem */\n inputId?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** When true, onclick and keyboard events will be passed to the child Button or AnchorLink. */\n asChild?: boolean;\n /** Only use when asChild is set to true and only pass one child */\n children?: React.ReactNode;\n /** Value for this singleSelectItem option - used by the parent wrapper to keep track of the context */\n value?: string;\n /** aria-describedby passthrough if needed */\n ['aria-describedby']?: string;\n /** Marks this option as initially selected */\n defaultSelected?: boolean;\n /** Ref that is passed to the component */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nexport const SingleSelectItem: React.FC<SingleSelectItemProps> = props => {\n const { text, value, testId, asChild = false, children, disabled, defaultSelected, ref, ...rest } = props;\n\n const generatedId = useId();\n const inputId = props.inputId ?? generatedId;\n const group = useSingleSelect();\n const optionValue = typeof value === 'string' && value.length > 0 ? value : inputId;\n const isSelected = group ? group.value === optionValue : false;\n const isDisabled = !!disabled || !!group?.disabled;\n const asChildSlotRef = React.useRef<AsChildSlotHandle | null>(null);\n\n React.useEffect(() => {\n if (defaultSelected && group && typeof group.value === 'undefined') {\n group.onValueChange?.(optionValue);\n }\n }, [defaultSelected, group, optionValue]);\n\n const contentClasses = classNames(styles['single-select-item__content'], {\n [styles['single-select-item__content--disabled']]: isDisabled,\n });\n const dotClasses = classNames(styles['single-select-item__dot'], {\n [styles['single-select-item__dot--disabled']]: isDisabled,\n [styles['single-select-item__dot--checked']]: isSelected,\n });\n\n const childArray = React.Children.toArray(children).filter(React.isValidElement) as React.ReactElement[];\n const childElement = childArray[0] ?? null;\n\n const selectThis = (e?: React.SyntheticEvent): void => {\n if (isDisabled) return;\n if (group && group.value !== optionValue) {\n group.onValueChange?.(optionValue, e);\n }\n };\n\n const content = (\n <>\n <span className={dotClasses} aria-hidden />\n <span>{text}</span>\n </>\n );\n\n const Component = (asChild ? AsChildSlot : 'button') as React.ElementType;\n const childWithInjectedContent = childElement ? React.cloneElement(childElement, undefined, content) : null;\n\n const componentProps = asChild\n ? {\n ref: asChildSlotRef,\n elementRef: ref,\n className: contentClasses,\n disabled: isDisabled,\n onSelect: (e: React.SyntheticEvent): void => selectThis(e),\n ariaCurrent: isSelected ? 'true' : undefined,\n children: childWithInjectedContent,\n }\n : {\n ...rest,\n type: 'button' as const,\n className: contentClasses,\n disabled: isDisabled,\n onClick: (e: React.MouseEvent<HTMLButtonElement>): void => {\n e.preventDefault();\n selectThis(e);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (e.key === 'Enter') {\n e.preventDefault();\n selectThis(e);\n }\n },\n ref: ref,\n 'aria-disabled': isDisabled || undefined,\n 'aria-current': isSelected ? 'true' : undefined,\n children: content,\n };\n\n return (\n <div data-testid={testId} className={styles['single-select-item']}>\n <Component {...componentProps} />\n </div>\n );\n};\n\nSingleSelectItem.displayName = 'Dropdown.SingleSelectItem';\n\nexport default SingleSelectItem;\n"],"mappings":";;;;;;AAIA,IAAa,sBAAsB,MAAM,cAA8C,KAAK;AAE5F,IAAa,wBAAwD,MAAM,WAAW,oBAAoB;;;AC0B1G,IAAa,oBAAoD,UAAS;CACxE,MAAM,EAAE,MAAM,OAAO,QAAQ,UAAU,OAAO,UAAU,UAAU,iBAAiB,KAAK,GAAG,SAAS;CAEpG,MAAM,cAAc,OAAO;CAC3B,MAAM,UAAU,MAAM,WAAW;CACjC,MAAM,QAAQ,iBAAiB;CAC/B,MAAM,cAAc,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;CAC5E,MAAM,aAAa,QAAQ,MAAM,UAAU,cAAc;CACzD,MAAM,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO;CAC1C,MAAM,iBAAiB,MAAM,OAAiC,KAAK;CAEnE,MAAM,gBAAgB;EACpB,IAAI,mBAAmB,SAAS,OAAO,MAAM,UAAU,aACrD,MAAM,gBAAgB,YAAY;IAEnC;EAAC;EAAiB;EAAO;EAAY,CAAC;CAEzC,MAAM,iBAAiB,WAAW,OAAO,gCAAgC,GACtE,OAAO,2CAA2C,YACpD,CAAC;CACF,MAAM,aAAa,WAAW,OAAO,4BAA4B;GAC9D,OAAO,uCAAuC;GAC9C,OAAO,sCAAsC;EAC/C,CAAC;CAGF,MAAM,eADa,MAAM,SAAS,QAAQ,SAAS,CAAC,OAAO,MAAM,eAC5C,CAAW,MAAM;CAEtC,MAAM,cAAc,MAAmC;EACrD,IAAI,YAAY;EAChB,IAAI,SAAS,MAAM,UAAU,aAC3B,MAAM,gBAAgB,aAAa,EAAE;;CAIzC,MAAM,UACJ,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,QAAD;EAAM,WAAW;EAAY,eAAA;EAAc,CAAA,EAC3C,oBAAC,QAAD,EAAA,UAAO,MAAY,CAAA,CAClB,EAAA,CAAA;CAGL,MAAM,YAAa,UAAU,sBAAc;CAC3C,MAAM,2BAA2B,eAAe,MAAM,aAAa,cAAc,KAAA,GAAW,QAAQ,GAAG;CAEvG,MAAM,iBAAiB,UACnB;EACE,KAAK;EACL,YAAY;EACZ,WAAW;EACX,UAAU;EACV,WAAW,MAAkC,WAAW,EAAE;EAC1D,aAAa,aAAa,SAAS,KAAA;EACnC,UAAU;EACX,GACD;EACE,GAAG;EACH,MAAM;EACN,WAAW;EACX,UAAU;EACV,UAAU,MAAiD;GACzD,EAAE,gBAAgB;GAClB,WAAW,EAAE;;EAEf,YAAY,MAAoD;GAC9D,IAAI,EAAE,QAAQ,SAAS;IACrB,EAAE,gBAAgB;IAClB,WAAW,EAAE;;;EAGZ;EACL,iBAAiB,cAAc,KAAA;EAC/B,gBAAgB,aAAa,SAAS,KAAA;EACtC,UAAU;EACX;CAEL,OACE,oBAAC,OAAD;EAAK,eAAa;EAAQ,WAAW,OAAO;YAC1C,oBAAC,WAAD,EAAW,GAAI,gBAAkB,CAAA;EAC7B,CAAA;;AAIV,iBAAiB,cAAc"}
1
+ {"version":3,"file":"SingleSelectItem.js","names":[],"sources":["../src/components/Dropdown/SingleSelect/utils.tsx","../src/components/Dropdown/SingleSelect/SingleSelectItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SingleSelectContextType } from './SingleSelect';\n\nexport const SingleSelectContext = React.createContext<SingleSelectContextType | null>(null);\n\nexport const useSingleSelect = (): SingleSelectContextType | null => React.useContext(SingleSelectContext);\n","import React, { useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { AsChildSlotHandle } from '../../AsChildSlot';\n\nimport { useSingleSelect } from './utils';\nimport AsChildSlot from '../../AsChildSlot';\n\nimport styles from './styles.module.scss';\n\nexport interface SingleSelectItemProps extends Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'disabled'> {\n /** The text to the singleSelectItem */\n text?: string;\n /** input id of the singleSelectItem */\n inputId?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** When true, onclick and keyboard events will be passed to the child Button or AnchorLink. */\n asChild?: boolean;\n /** Only use when asChild is set to true and only pass one child */\n children?: React.ReactNode;\n /** Value for this singleSelectItem option - used by the parent wrapper to keep track of the context */\n value?: string;\n /** aria-describedby passthrough if needed */\n ['aria-describedby']?: string;\n /** Marks this option as initially selected */\n defaultSelected?: boolean;\n /** Ref that is passed to the component */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nexport const SingleSelectItem: React.FC<SingleSelectItemProps> = props => {\n const { text, value, testId, asChild = false, children, disabled, defaultSelected, ref, ...rest } = props;\n\n const generatedId = useId();\n const inputId = props.inputId ?? generatedId;\n const group = useSingleSelect();\n const optionValue = typeof value === 'string' && value.length > 0 ? value : inputId;\n const isSelected = group ? group.value === optionValue : false;\n const isDisabled = !!disabled || !!group?.disabled;\n const asChildSlotRef = React.useRef<AsChildSlotHandle | null>(null);\n\n React.useEffect(() => {\n if (defaultSelected && group && typeof group.value === 'undefined') {\n group.onValueChange?.(optionValue);\n }\n }, [defaultSelected, group, optionValue]);\n\n const contentClasses = classNames(styles['single-select-item__content'], {\n [styles['single-select-item__content--disabled']]: isDisabled,\n });\n const dotClasses = classNames(styles['single-select-item__dot'], {\n [styles['single-select-item__dot--disabled']]: isDisabled,\n [styles['single-select-item__dot--checked']]: isSelected,\n });\n\n const childArray = React.Children.toArray(children).filter(React.isValidElement) as React.ReactElement[];\n const childElement = childArray[0] ?? null;\n\n const selectThis = (e?: React.SyntheticEvent): void => {\n if (isDisabled) return;\n if (group && group.value !== optionValue) {\n group.onValueChange?.(optionValue, e);\n }\n };\n\n const content = (\n <>\n <span className={dotClasses} aria-hidden />\n <span>{text}</span>\n </>\n );\n\n const Component = (asChild ? AsChildSlot : 'button') as React.ElementType;\n const childWithInjectedContent = childElement ? React.cloneElement(childElement, undefined, content) : null;\n\n const componentProps = asChild\n ? {\n ref: asChildSlotRef,\n elementRef: ref,\n className: contentClasses,\n disabled: isDisabled,\n onSelect: (e: React.SyntheticEvent): void => selectThis(e),\n ariaCurrent: isSelected ? 'true' : undefined,\n children: childWithInjectedContent,\n }\n : {\n ...rest,\n type: 'button' as const,\n className: contentClasses,\n disabled: isDisabled,\n onClick: (e: React.MouseEvent<HTMLButtonElement>): void => {\n e.preventDefault();\n selectThis(e);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (e.key === 'Enter') {\n e.preventDefault();\n selectThis(e);\n }\n },\n ref: ref,\n 'aria-disabled': isDisabled || undefined,\n 'aria-current': isSelected ? 'true' : undefined,\n children: content,\n };\n\n return (\n <div data-testid={testId} className={styles['single-select-item']}>\n <Component {...componentProps} />\n </div>\n );\n};\n\nSingleSelectItem.displayName = 'Dropdown.SingleSelectItem';\n\nexport default SingleSelectItem;\n"],"mappings":";;;;;;AAIA,IAAa,sBAAsB,MAAM,cAA8C,IAAI;AAE3F,IAAa,wBAAwD,MAAM,WAAW,mBAAmB;;;AC0BzG,IAAa,oBAAoD,UAAS;CACxE,MAAM,EAAE,MAAM,OAAO,QAAQ,UAAU,OAAO,UAAU,UAAU,iBAAiB,KAAK,GAAG,SAAS;CAEpG,MAAM,cAAc,MAAM;CAC1B,MAAM,UAAU,MAAM,WAAW;CACjC,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,cAAc,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;CAC5E,MAAM,aAAa,QAAQ,MAAM,UAAU,cAAc;CACzD,MAAM,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO;CAC1C,MAAM,iBAAiB,MAAM,OAAiC,IAAI;CAElE,MAAM,gBAAgB;EACpB,IAAI,mBAAmB,SAAS,OAAO,MAAM,UAAU,aACrD,MAAM,gBAAgB,WAAW;CAErC,GAAG;EAAC;EAAiB;EAAO;CAAW,CAAC;CAExC,MAAM,iBAAiB,WAAW,OAAO,gCAAgC,GACtE,OAAO,2CAA2C,WACrD,CAAC;CACD,MAAM,aAAa,WAAW,OAAO,4BAA4B;GAC9D,OAAO,uCAAuC;GAC9C,OAAO,sCAAsC;CAChD,CAAC;CAGD,MAAM,eADa,MAAM,SAAS,QAAQ,QAAQ,EAAE,OAAO,MAAM,cAC5C,EAAW,MAAM;CAEtC,MAAM,cAAc,MAAmC;EACrD,IAAI,YAAY;EAChB,IAAI,SAAS,MAAM,UAAU,aAC3B,MAAM,gBAAgB,aAAa,CAAC;CAExC;CAEA,MAAM,UACJ,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,QAAD;EAAM,WAAW;EAAY,eAAA;CAAa,CAAA,GAC1C,oBAAC,QAAD,EAAA,UAAO,KAAW,CAAA,CAClB,EAAA,CAAA;CAGJ,MAAM,YAAa,UAAU,sBAAc;CAC3C,MAAM,2BAA2B,eAAe,MAAM,aAAa,cAAc,KAAA,GAAW,OAAO,IAAI;CAEvG,MAAM,iBAAiB,UACnB;EACE,KAAK;EACL,YAAY;EACZ,WAAW;EACX,UAAU;EACV,WAAW,MAAkC,WAAW,CAAC;EACzD,aAAa,aAAa,SAAS,KAAA;EACnC,UAAU;CACZ,IACA;EACE,GAAG;EACH,MAAM;EACN,WAAW;EACX,UAAU;EACV,UAAU,MAAiD;GACzD,EAAE,eAAe;GACjB,WAAW,CAAC;EACd;EACA,YAAY,MAAoD;GAC9D,IAAI,EAAE,QAAQ,SAAS;IACrB,EAAE,eAAe;IACjB,WAAW,CAAC;GACd;EACF;EACK;EACL,iBAAiB,cAAc,KAAA;EAC/B,gBAAgB,aAAa,SAAS,KAAA;EACtC,UAAU;CACZ;CAEJ,OACE,oBAAC,OAAD;EAAK,eAAa;EAAQ,WAAW,OAAO;YAC1C,oBAAC,WAAD,EAAW,GAAI,eAAiB,CAAA;CAC7B,CAAA;AAET;AAEA,iBAAiB,cAAc"}
package/lib/Slider.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","names":[],"sources":["../src/components/Slider/Slider.tsx","../src/components/Slider/index.ts"],"sourcesContent":["import { useEffect, useState, useRef, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport { AnalyticsId } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { useSize } from '../../hooks/useSize';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { isMutableRefObject, mergeRefs } from '../../utils/refs';\nimport ErrorWrapper from '../ErrorWrapper';\nimport Title from '../Title';\n\nimport styles from './styles.module.scss';\n\nconst useSafeNumberValue = (initial: number, min: number, max: number): [number, (value: number) => void] => {\n const [value, setValue] = useState(initial);\n const [prevMin, setPrevMin] = useState(min);\n const [prevMax, setPrevMax] = useState(max);\n\n const getSafeValue = (newValue: number): number => {\n if (newValue > max) {\n return max;\n }\n if (newValue < min) {\n return min;\n }\n return newValue;\n };\n\n const setSafeValue = (newValue: number): void => {\n setValue(getSafeValue(newValue));\n };\n\n if (min !== prevMin || max !== prevMax) {\n setPrevMin(min);\n setPrevMax(max);\n const safeValue = getSafeValue(initial);\n if (safeValue !== value) {\n setValue(safeValue);\n }\n }\n\n return [value, setSafeValue];\n};\n\nexport type SliderStep = {\n label?: number | string;\n emojiUniCode?: string;\n};\n\nexport interface SliderProps\n extends ErrorWrapperClassNameProps, Pick<React.InputHTMLAttributes<HTMLInputElement>, 'id' | 'name' | 'onChange' | 'onBlur'> {\n /** Activates Error style for the input */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /**\tSets the title of the slider. */\n title?: string;\n /** Adds the left hand label to the element. */\n labelLeft?: string;\n /** Adds the right hand label to the element. */\n labelRight?: string;\n /**\tSets aria-label of the slider. */\n ariaLabel?: string;\n /** Disables the slider element. */\n disabled?: boolean;\n /** Sets the minimum allowed value on the slider - this overrides the use of steps prop for minValue/maxValue. */\n minValue?: number;\n /** Sets the maximum allowed value on the slider - this overrides the use of steps prop for minValue/maxValue. */\n maxValue?: number;\n /** If set to false will only trigger onChange once a user interaction has been made, updates to this prop will be taken into account - true by default */\n selected?: boolean;\n /** Sets the steps data for the slider */\n steps?: SliderStep[];\n /** Sets the step to move per point in the slider */\n step?: number;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Sets the value of the slider */\n value?: number;\n /** Ref passed to component */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nexport const Slider: React.FC<SliderProps> = props => {\n const {\n title,\n ariaLabel,\n error,\n errorText,\n errorTextId: errorTextIdProp,\n errorWrapperClassName,\n labelLeft,\n labelRight,\n disabled = false,\n onChange,\n steps,\n step = 1,\n minValue = 0,\n maxValue = steps ? steps.length - 1 : 100,\n selected = true,\n testId,\n value,\n ref,\n ...rest\n } = props;\n\n const [isMoving, setIsMoving] = useState(false);\n const [selectedState, setSelectedState] = useState(typeof value === 'undefined' ? selected : true);\n const [valueState, setValueState] = useSafeNumberValue(\n typeof value === 'undefined' ? (maxValue - minValue) / 2 + minValue : value,\n minValue,\n maxValue\n );\n\n const errorTextId = useIdWithFallback(errorTextIdProp);\n const baseId = useId();\n const titleId = 'title-' + baseId;\n const labelLeftId = 'label-' + baseId;\n const labelRightId = 'label-right-' + baseId;\n const trackRef = useRef<HTMLDivElement>(null);\n const { refObject, isFocused } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n\n const { width: trackWidth } = useSize(trackRef) || { width: 0 };\n const largeStep = maxValue / 10;\n const invalid = !!errorText || !!error;\n\n useEffect(() => {\n const handlePointerUp = (): void => {\n setIsMoving(false);\n };\n\n document.addEventListener('pointerup', handlePointerUp);\n\n return (): void => {\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, []);\n\n const getValueBasedOnMarkerPosition = (markerPosition: number): number => {\n const trackPosition = trackRef.current?.getBoundingClientRect().x ?? 0;\n\n // Calculate the normalized position (0 to 1) of the marker along the track\n const normalizedPosition = (markerPosition - trackPosition) / trackWidth;\n const valueRange = maxValue - minValue;\n // Calculate the value without considering the step\n let value = normalizedPosition * valueRange + minValue;\n // Adjust the value to account for the step increment\n const stepCount = Math.round(value / step);\n value = stepCount * step;\n value = Math.max(minValue, Math.min(maxValue, value));\n\n return value;\n };\n\n const handleSelected = (): void => {\n if (selectedState === false) {\n setSelectedState(true);\n }\n };\n\n useEffect(() => {\n const handlePointerMove = (e: PointerEvent): void => {\n if (!disabled && isMoving) {\n const newValue = getValueBasedOnMarkerPosition(e.clientX);\n setValueState(newValue);\n }\n };\n\n document.addEventListener('pointermove', handlePointerMove);\n\n return (): void => {\n document.removeEventListener('pointermove', handlePointerMove);\n };\n }, [isMoving]);\n\n useEffect(() => {\n if (value !== valueState && typeof value !== 'undefined') {\n handleSelected();\n setValueState(value);\n }\n }, [value]);\n\n useEffect(() => {\n if (typeof value === 'undefined' && selected !== selectedState) {\n setSelectedState(selected);\n }\n }, [selected]);\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = e => {\n if (disabled) return;\n\n let flag = false;\n\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n setValueState(valueState - step);\n flag = true;\n break;\n case 'PageDown':\n setValueState(valueState - largeStep);\n flag = true;\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n setValueState(valueState + step);\n flag = true;\n break;\n case 'PageUp':\n setValueState(valueState + largeStep);\n flag = true;\n break;\n case 'Home':\n setValueState(minValue);\n flag = true;\n break;\n case 'End':\n setValueState(maxValue);\n flag = true;\n break;\n default:\n break;\n }\n\n if (flag) {\n handleSelected();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleTrackClick: React.MouseEventHandler<HTMLDivElement> = e => {\n if (disabled) return;\n\n const newValue = getValueBasedOnMarkerPosition(e.clientX);\n setValueState(newValue);\n refObject.current?.focus();\n };\n\n const handlePointerDown: React.PointerEventHandler<HTMLDivElement> = e => {\n if (disabled) return;\n\n handleTrackClick(e);\n setIsMoving(true);\n handleSelected();\n\n e.preventDefault();\n e.stopPropagation();\n\n refObject.current?.focus();\n };\n\n const markerXPos = maxValue !== minValue ? (trackWidth / (maxValue - minValue)) * (valueState - minValue) : 0;\n\n const getAriaValueText = (): string | undefined => {\n const stepIndex = steps ? Math.round((valueState - minValue) / step) : null;\n\n if (steps && stepIndex !== null && stepIndex >= 0 && stepIndex < steps.length) {\n const step = steps[stepIndex];\n const emojiCode = step.emojiUniCode;\n const label = typeof step.label !== 'undefined' ? step.label.toString() : undefined;\n\n return emojiCode && label ? `${emojiCode} ${label}` : emojiCode || label;\n }\n\n return undefined;\n };\n\n const getAriaLabeledById = (): string | undefined => {\n if (title && labelLeft && labelRight) {\n return [titleId, labelLeftId, labelRightId].join(' ');\n }\n if (title && labelLeft) {\n return [titleId, labelLeftId].join(' ');\n }\n if (title && labelRight) {\n return [titleId, labelRightId].join(' ');\n }\n if (title) {\n return titleId;\n }\n };\n\n const ariaLabelAttributes = getAriaLabelAttributes({\n label: ariaLabel,\n id: getAriaLabeledById(),\n prefer: 'label',\n });\n\n const getXPositionStyling = (index: number, stepsLength: number): { left: string } => {\n return { left: `${(index / (stepsLength - 1)) * 100}%` };\n };\n\n useEffect(() => {\n if (selectedState && onChange) {\n onChange({\n target: {\n name: props.name,\n value: valueState,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>);\n }\n }, [valueState, selectedState]);\n\n const renderEmojies = (): React.ReactNode => {\n return (\n <div className={styles['slider__emoji-container']}>\n {steps?.map((step, index) => {\n return (\n step.emojiUniCode && (\n <div\n aria-hidden={true}\n key={'emoji' + index}\n className={styles['slider__emoji']}\n style={getXPositionStyling(index, steps.length)}\n >\n {step.emojiUniCode}\n </div>\n )\n );\n })}\n </div>\n );\n };\n\n const renderSteps = (): React.ReactNode => {\n return steps?.map((_step, index) => {\n return <div key={'step' + index} className={styles['slider__track__step']} style={getXPositionStyling(index, steps.length)} />;\n });\n };\n\n const renderStepLabels = (): React.ReactNode => {\n return (\n <div className={styles['slider__value-container']}>\n {steps?.map((step, index) => {\n return (\n typeof step.label !== 'undefined' && (\n <div\n aria-hidden={true}\n key={'label' + index}\n className={styles['slider__value']}\n style={getXPositionStyling(index, steps.length)}\n >\n {step.label}\n </div>\n )\n );\n })}\n </div>\n );\n };\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <input\n aria-valuetext={getAriaValueText()}\n className={styles['sr-only-slider']}\n disabled={disabled}\n min={minValue}\n max={maxValue}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n value={valueState}\n ref={mergedRefs}\n type=\"range\"\n {...rest}\n {...ariaLabelAttributes}\n />\n <div className={styles.slider} data-testid={testId} data-analyticsid={AnalyticsId.Slider}>\n {title && (\n <Title className={styles['slider__title']} htmlMarkup={'h3'} margin={0} appearance={'title3'} id={titleId}>\n {title}\n </Title>\n )}\n <div className={styles['slider__content-container']}>\n {renderEmojies()}\n {/* Slider streken er klikkbar med mus/touch */}\n <div\n ref={trackRef}\n className={classNames(styles['slider__track-wrapper'], disabled && styles['slider__track-wrapper--disabled'])}\n onPointerDown={handlePointerDown}\n >\n <div className={classNames(styles.slider__track, disabled && styles['slider__track--disabled'])}>{renderSteps()}</div>\n <div\n className={classNames(styles.slider__marker, {\n [styles['slider__marker--disabled']]: disabled,\n [styles['slider__marker--selected']]: selectedState,\n [styles['slider__marker--invalid']]: invalid,\n [styles['slider__marker--focused']]: !disabled && isFocused,\n })}\n style={{\n left: `${markerXPos}px`,\n }}\n />\n </div>\n {renderStepLabels()}\n </div>\n {(labelLeft || labelRight) && (\n <span className={styles.slider__options}>\n <span id={labelLeftId}>{labelLeft}</span>\n <span id={labelRightId}>{labelRight}</span>\n </span>\n )}\n </div>\n </ErrorWrapper>\n );\n};\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n","import Slider from './Slider';\nexport * from './Slider';\nexport default Slider;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.js","names":[],"sources":["../src/components/Slider/Slider.tsx","../src/components/Slider/index.ts"],"sourcesContent":["import { useEffect, useState, useRef, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport { AnalyticsId } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { useSize } from '../../hooks/useSize';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { isMutableRefObject, mergeRefs } from '../../utils/refs';\nimport ErrorWrapper from '../ErrorWrapper';\nimport Title from '../Title';\n\nimport styles from './styles.module.scss';\n\nconst useSafeNumberValue = (initial: number, min: number, max: number): [number, (value: number) => void] => {\n const [value, setValue] = useState(initial);\n const [prevMin, setPrevMin] = useState(min);\n const [prevMax, setPrevMax] = useState(max);\n\n const getSafeValue = (newValue: number): number => {\n if (newValue > max) {\n return max;\n }\n if (newValue < min) {\n return min;\n }\n return newValue;\n };\n\n const setSafeValue = (newValue: number): void => {\n setValue(getSafeValue(newValue));\n };\n\n if (min !== prevMin || max !== prevMax) {\n setPrevMin(min);\n setPrevMax(max);\n const safeValue = getSafeValue(initial);\n if (safeValue !== value) {\n setValue(safeValue);\n }\n }\n\n return [value, setSafeValue];\n};\n\nexport type SliderStep = {\n label?: number | string;\n emojiUniCode?: string;\n};\n\nexport interface SliderProps\n extends ErrorWrapperClassNameProps, Pick<React.InputHTMLAttributes<HTMLInputElement>, 'id' | 'name' | 'onChange' | 'onBlur'> {\n /** Activates Error style for the input */\n error?: boolean;\n /** Error text to show above the component */\n errorText?: string;\n /** Error text id */\n errorTextId?: string;\n /**\tSets the title of the slider. */\n title?: string;\n /** Adds the left hand label to the element. */\n labelLeft?: string;\n /** Adds the right hand label to the element. */\n labelRight?: string;\n /**\tSets aria-label of the slider. */\n ariaLabel?: string;\n /** Disables the slider element. */\n disabled?: boolean;\n /** Sets the minimum allowed value on the slider - this overrides the use of steps prop for minValue/maxValue. */\n minValue?: number;\n /** Sets the maximum allowed value on the slider - this overrides the use of steps prop for minValue/maxValue. */\n maxValue?: number;\n /** If set to false will only trigger onChange once a user interaction has been made, updates to this prop will be taken into account - true by default */\n selected?: boolean;\n /** Sets the steps data for the slider */\n steps?: SliderStep[];\n /** Sets the step to move per point in the slider */\n step?: number;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Sets the value of the slider */\n value?: number;\n /** Ref passed to component */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nexport const Slider: React.FC<SliderProps> = props => {\n const {\n title,\n ariaLabel,\n error,\n errorText,\n errorTextId: errorTextIdProp,\n errorWrapperClassName,\n labelLeft,\n labelRight,\n disabled = false,\n onChange,\n steps,\n step = 1,\n minValue = 0,\n maxValue = steps ? steps.length - 1 : 100,\n selected = true,\n testId,\n value,\n ref,\n ...rest\n } = props;\n\n const [isMoving, setIsMoving] = useState(false);\n const [selectedState, setSelectedState] = useState(typeof value === 'undefined' ? selected : true);\n const [valueState, setValueState] = useSafeNumberValue(\n typeof value === 'undefined' ? (maxValue - minValue) / 2 + minValue : value,\n minValue,\n maxValue\n );\n\n const errorTextId = useIdWithFallback(errorTextIdProp);\n const baseId = useId();\n const titleId = 'title-' + baseId;\n const labelLeftId = 'label-' + baseId;\n const labelRightId = 'label-right-' + baseId;\n const trackRef = useRef<HTMLDivElement>(null);\n const { refObject, isFocused } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n\n const { width: trackWidth } = useSize(trackRef) || { width: 0 };\n const largeStep = maxValue / 10;\n const invalid = !!errorText || !!error;\n\n useEffect(() => {\n const handlePointerUp = (): void => {\n setIsMoving(false);\n };\n\n document.addEventListener('pointerup', handlePointerUp);\n\n return (): void => {\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, []);\n\n const getValueBasedOnMarkerPosition = (markerPosition: number): number => {\n const trackPosition = trackRef.current?.getBoundingClientRect().x ?? 0;\n\n // Calculate the normalized position (0 to 1) of the marker along the track\n const normalizedPosition = (markerPosition - trackPosition) / trackWidth;\n const valueRange = maxValue - minValue;\n // Calculate the value without considering the step\n let value = normalizedPosition * valueRange + minValue;\n // Adjust the value to account for the step increment\n const stepCount = Math.round(value / step);\n value = stepCount * step;\n value = Math.max(minValue, Math.min(maxValue, value));\n\n return value;\n };\n\n const handleSelected = (): void => {\n if (selectedState === false) {\n setSelectedState(true);\n }\n };\n\n useEffect(() => {\n const handlePointerMove = (e: PointerEvent): void => {\n if (!disabled && isMoving) {\n const newValue = getValueBasedOnMarkerPosition(e.clientX);\n setValueState(newValue);\n }\n };\n\n document.addEventListener('pointermove', handlePointerMove);\n\n return (): void => {\n document.removeEventListener('pointermove', handlePointerMove);\n };\n }, [isMoving]);\n\n useEffect(() => {\n if (value !== valueState && typeof value !== 'undefined') {\n handleSelected();\n setValueState(value);\n }\n }, [value]);\n\n useEffect(() => {\n if (typeof value === 'undefined' && selected !== selectedState) {\n setSelectedState(selected);\n }\n }, [selected]);\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = e => {\n if (disabled) return;\n\n let flag = false;\n\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n setValueState(valueState - step);\n flag = true;\n break;\n case 'PageDown':\n setValueState(valueState - largeStep);\n flag = true;\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n setValueState(valueState + step);\n flag = true;\n break;\n case 'PageUp':\n setValueState(valueState + largeStep);\n flag = true;\n break;\n case 'Home':\n setValueState(minValue);\n flag = true;\n break;\n case 'End':\n setValueState(maxValue);\n flag = true;\n break;\n default:\n break;\n }\n\n if (flag) {\n handleSelected();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const handleTrackClick: React.MouseEventHandler<HTMLDivElement> = e => {\n if (disabled) return;\n\n const newValue = getValueBasedOnMarkerPosition(e.clientX);\n setValueState(newValue);\n refObject.current?.focus();\n };\n\n const handlePointerDown: React.PointerEventHandler<HTMLDivElement> = e => {\n if (disabled) return;\n\n handleTrackClick(e);\n setIsMoving(true);\n handleSelected();\n\n e.preventDefault();\n e.stopPropagation();\n\n refObject.current?.focus();\n };\n\n const markerXPos = maxValue !== minValue ? (trackWidth / (maxValue - minValue)) * (valueState - minValue) : 0;\n\n const getAriaValueText = (): string | undefined => {\n const stepIndex = steps ? Math.round((valueState - minValue) / step) : null;\n\n if (steps && stepIndex !== null && stepIndex >= 0 && stepIndex < steps.length) {\n const step = steps[stepIndex];\n const emojiCode = step.emojiUniCode;\n const label = typeof step.label !== 'undefined' ? step.label.toString() : undefined;\n\n return emojiCode && label ? `${emojiCode} ${label}` : emojiCode || label;\n }\n\n return undefined;\n };\n\n const getAriaLabeledById = (): string | undefined => {\n if (title && labelLeft && labelRight) {\n return [titleId, labelLeftId, labelRightId].join(' ');\n }\n if (title && labelLeft) {\n return [titleId, labelLeftId].join(' ');\n }\n if (title && labelRight) {\n return [titleId, labelRightId].join(' ');\n }\n if (title) {\n return titleId;\n }\n };\n\n const ariaLabelAttributes = getAriaLabelAttributes({\n label: ariaLabel,\n id: getAriaLabeledById(),\n prefer: 'label',\n });\n\n const getXPositionStyling = (index: number, stepsLength: number): { left: string } => {\n return { left: `${(index / (stepsLength - 1)) * 100}%` };\n };\n\n useEffect(() => {\n if (selectedState && onChange) {\n onChange({\n target: {\n name: props.name,\n value: valueState,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>);\n }\n }, [valueState, selectedState]);\n\n const renderEmojies = (): React.ReactNode => {\n return (\n <div className={styles['slider__emoji-container']}>\n {steps?.map((step, index) => {\n return (\n step.emojiUniCode && (\n <div\n aria-hidden={true}\n key={'emoji' + index}\n className={styles['slider__emoji']}\n style={getXPositionStyling(index, steps.length)}\n >\n {step.emojiUniCode}\n </div>\n )\n );\n })}\n </div>\n );\n };\n\n const renderSteps = (): React.ReactNode => {\n return steps?.map((_step, index) => {\n return <div key={'step' + index} className={styles['slider__track__step']} style={getXPositionStyling(index, steps.length)} />;\n });\n };\n\n const renderStepLabels = (): React.ReactNode => {\n return (\n <div className={styles['slider__value-container']}>\n {steps?.map((step, index) => {\n return (\n typeof step.label !== 'undefined' && (\n <div\n aria-hidden={true}\n key={'label' + index}\n className={styles['slider__value']}\n style={getXPositionStyling(index, steps.length)}\n >\n {step.label}\n </div>\n )\n );\n })}\n </div>\n );\n };\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <input\n aria-valuetext={getAriaValueText()}\n className={styles['sr-only-slider']}\n disabled={disabled}\n min={minValue}\n max={maxValue}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n value={valueState}\n ref={mergedRefs}\n type=\"range\"\n {...rest}\n {...ariaLabelAttributes}\n />\n <div className={styles.slider} data-testid={testId} data-analyticsid={AnalyticsId.Slider}>\n {title && (\n <Title className={styles['slider__title']} htmlMarkup={'h3'} margin={0} appearance={'title3'} id={titleId}>\n {title}\n </Title>\n )}\n <div className={styles['slider__content-container']}>\n {renderEmojies()}\n {/* Slider streken er klikkbar med mus/touch */}\n <div\n ref={trackRef}\n className={classNames(styles['slider__track-wrapper'], disabled && styles['slider__track-wrapper--disabled'])}\n onPointerDown={handlePointerDown}\n >\n <div className={classNames(styles.slider__track, disabled && styles['slider__track--disabled'])}>{renderSteps()}</div>\n <div\n className={classNames(styles.slider__marker, {\n [styles['slider__marker--disabled']]: disabled,\n [styles['slider__marker--selected']]: selectedState,\n [styles['slider__marker--invalid']]: invalid,\n [styles['slider__marker--focused']]: !disabled && isFocused,\n })}\n style={{\n left: `${markerXPos}px`,\n }}\n />\n </div>\n {renderStepLabels()}\n </div>\n {(labelLeft || labelRight) && (\n <span className={styles.slider__options}>\n <span id={labelLeftId}>{labelLeft}</span>\n <span id={labelRightId}>{labelRight}</span>\n </span>\n )}\n </div>\n </ErrorWrapper>\n );\n};\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n","import Slider from './Slider';\nexport * from './Slider';\nexport default Slider;\n"],"mappings":"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"}
package/lib/Spacer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Spacer.js","names":[],"sources":["../src/components/Spacer/Spacer.tsx","../src/components/Spacer/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { SpacerSizes } from './../../theme/spacers';\n\nimport { AnalyticsId } from '../../constants';\n\nimport spacerStyles from './styles.module.scss';\n\nexport interface SpacerProps {\n /** Sets the size of the spacer. */\n size?: SpacerSizes;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref passed to the component */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nconst Spacer: React.FC<SpacerProps> = (props: SpacerProps) => {\n const { size = 's', className, testId, ref } = props;\n const spacerClasses = classNames(\n spacerStyles.spacer,\n {\n [spacerStyles['spacer--4xs']]: size === '4xs',\n [spacerStyles['spacer--3xs']]: size === '3xs',\n [spacerStyles['spacer--2xs']]: size === '2xs',\n [spacerStyles['spacer--xs']]: size === 'xs',\n [spacerStyles['spacer--s']]: size === 's',\n [spacerStyles['spacer--m']]: size === 'm',\n [spacerStyles['spacer--l']]: size === 'l',\n [spacerStyles['spacer--xl']]: size === 'xl',\n [spacerStyles['spacer--2xl']]: size === '2xl',\n [spacerStyles['spacer--3xl']]: size === '3xl',\n [spacerStyles['spacer--4xl']]: size === '4xl',\n [spacerStyles['spacer--5xl']]: size === '5xl',\n [spacerStyles['spacer--6xl']]: size === '6xl',\n },\n className\n );\n\n return <span className={spacerClasses} ref={ref} data-testid={testId} data-analyticsid={AnalyticsId.Spacer}></span>;\n};\n\nexport default Spacer;\n","import Spacer from './Spacer';\nexport * from './Spacer';\nexport default Spacer;\n"],"mappings":";;;;;AAmBA,IAAM,UAAiC,UAAuB;CAC5D,MAAM,EAAE,OAAO,KAAK,WAAW,QAAQ,QAAQ;CAqB/C,OAAO,oBAAC,QAAD;EAAM,WApBS,WACpB,aAAa,QACb;IACG,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,gBAAgB,SAAS;IACtC,aAAa,eAAe,SAAS;IACrC,aAAa,eAAe,SAAS;IACrC,aAAa,eAAe,SAAS;IACrC,aAAa,gBAAgB,SAAS;IACtC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;GACzC,EACD,UAGsB;EAAoB;EAAK,eAAa;EAAQ,oBAAkB,YAAY;EAAe,CAAA;;;;ACvCrH,IAAA,iBAAe"}
1
+ {"version":3,"file":"Spacer.js","names":[],"sources":["../src/components/Spacer/Spacer.tsx","../src/components/Spacer/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { SpacerSizes } from './../../theme/spacers';\n\nimport { AnalyticsId } from '../../constants';\n\nimport spacerStyles from './styles.module.scss';\n\nexport interface SpacerProps {\n /** Sets the size of the spacer. */\n size?: SpacerSizes;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref passed to the component */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nconst Spacer: React.FC<SpacerProps> = (props: SpacerProps) => {\n const { size = 's', className, testId, ref } = props;\n const spacerClasses = classNames(\n spacerStyles.spacer,\n {\n [spacerStyles['spacer--4xs']]: size === '4xs',\n [spacerStyles['spacer--3xs']]: size === '3xs',\n [spacerStyles['spacer--2xs']]: size === '2xs',\n [spacerStyles['spacer--xs']]: size === 'xs',\n [spacerStyles['spacer--s']]: size === 's',\n [spacerStyles['spacer--m']]: size === 'm',\n [spacerStyles['spacer--l']]: size === 'l',\n [spacerStyles['spacer--xl']]: size === 'xl',\n [spacerStyles['spacer--2xl']]: size === '2xl',\n [spacerStyles['spacer--3xl']]: size === '3xl',\n [spacerStyles['spacer--4xl']]: size === '4xl',\n [spacerStyles['spacer--5xl']]: size === '5xl',\n [spacerStyles['spacer--6xl']]: size === '6xl',\n },\n className\n );\n\n return <span className={spacerClasses} ref={ref} data-testid={testId} data-analyticsid={AnalyticsId.Spacer}></span>;\n};\n\nexport default Spacer;\n","import Spacer from './Spacer';\nexport * from './Spacer';\nexport default Spacer;\n"],"mappings":";;;;;AAmBA,IAAM,UAAiC,UAAuB;CAC5D,MAAM,EAAE,OAAO,KAAK,WAAW,QAAQ,QAAQ;CAqB/C,OAAO,oBAAC,QAAD;EAAM,WApBS,WACpB,aAAa,QACb;IACG,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,gBAAgB,SAAS;IACtC,aAAa,eAAe,SAAS;IACrC,aAAa,eAAe,SAAS;IACrC,aAAa,eAAe,SAAS;IACrC,aAAa,gBAAgB,SAAS;IACtC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;IACvC,aAAa,iBAAiB,SAAS;EAC1C,GACA,SAGsB;EAAoB;EAAK,eAAa;EAAQ,oBAAkB,YAAY;CAAc,CAAA;AACpH;;;ACxCA,IAAA,iBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusDot.js","names":[],"sources":["../src/components/StatusDot/constants.ts","../src/components/StatusDot/StatusDot.tsx","../src/components/StatusDot/index.ts"],"sourcesContent":["import { FormOnColor } from '../../constants';\n\nexport enum StatusDotOnColor {\n onwhite = FormOnColor.onwhite,\n ondark = FormOnColor.ondark,\n}\n\nexport enum StatusDotVariant {\n success = 'success',\n inprocess = 'inprocess',\n exception = 'exception',\n unknown = 'unknown',\n inspected = 'inspected',\n cancelled = 'cancelled',\n alert = 'alert',\n transparent = 'transparent',\n info = 'info',\n group = 'group',\n recurring = 'recurring',\n noaccess = 'noaccess',\n draft = 'draft',\n hidden = 'hidden',\n login = 'login',\n attachment = 'attachment',\n active = 'active',\n pending = 'pending',\n inactive = 'inactive',\n ready = 'ready',\n}\n","import classNames from 'classnames';\n\nimport { StatusDotOnColor, StatusDotVariant } from './constants';\nimport { IconSize } from '../..';\nimport { AnalyticsId } from '../../constants';\nimport { getColor } from '../../theme/currys';\nimport { LazyIcon } from '../LazyIcon';\n\nimport styles from './styles.module.scss';\n\nexport interface StatusDotIconProps {\n /** Defines the color of the icon */\n onColor?: keyof typeof StatusDotOnColor;\n /** The variant defines style formatting and what icon to use */\n variant?: keyof typeof StatusDotVariant;\n}\n\nconst StatusDotIcon: React.FC<StatusDotIconProps> = ({ onColor, variant = 'info' }) => {\n const color = onColor === StatusDotOnColor.ondark ? getColor('white') : getColor('black');\n const iconProps = {\n color,\n size: IconSize.XXSmall,\n onColor,\n className: classNames({\n [styles[`statusdot__dot--${variant}`]]: typeof variant !== 'undefined',\n [styles['statusdot__dot--on-dark']]: onColor === StatusDotOnColor.ondark,\n }),\n };\n\n switch (variant) {\n case StatusDotVariant.success:\n return <LazyIcon {...iconProps} iconName={'DotCheckmark'} />;\n case StatusDotVariant.inprocess:\n return <LazyIcon {...iconProps} iconName={'DotHalfDisc'} />;\n case StatusDotVariant.exception:\n return <LazyIcon {...iconProps} iconName={'DotTriangle'} />;\n case StatusDotVariant.unknown:\n return <LazyIcon {...iconProps} iconName={'DotQuestionMark'} />;\n case StatusDotVariant.inspected:\n return <LazyIcon {...iconProps} iconName={'DotLookingGlass'} />;\n case StatusDotVariant.cancelled:\n return <LazyIcon {...iconProps} iconName={'DotX'} />;\n case StatusDotVariant.alert:\n return <LazyIcon {...iconProps} iconName={'DotExclamationMark'} />;\n case StatusDotVariant.transparent:\n return <LazyIcon {...iconProps} iconName={'DotOutline'} />;\n case StatusDotVariant.info:\n return <LazyIcon {...iconProps} iconName={'DotInfo'} />;\n case StatusDotVariant.group:\n return <LazyIcon {...iconProps} iconName={'DotGroup'} />;\n case StatusDotVariant.recurring:\n return <LazyIcon {...iconProps} iconName={'DotCircleArrows'} />;\n case StatusDotVariant.noaccess:\n return <LazyIcon {...iconProps} iconName={'DotNoAccess'} />;\n case StatusDotVariant.draft:\n return <LazyIcon {...iconProps} iconName={'DotPencil'} />;\n case StatusDotVariant.hidden:\n return <LazyIcon {...iconProps} iconName={'DotNoEye'} />;\n case StatusDotVariant.login:\n return <LazyIcon {...iconProps} iconName={'DotLogin'} />;\n case StatusDotVariant.attachment:\n return <LazyIcon {...iconProps} iconName={'DotAttachment'} />;\n case StatusDotVariant.active:\n return <LazyIcon {...iconProps} iconName={'DotFill'} />;\n case StatusDotVariant.pending:\n return <LazyIcon {...iconProps} iconName={'DotDot'} />;\n case StatusDotVariant.inactive:\n return <LazyIcon {...iconProps} iconName={'DotOutline'} />;\n case StatusDotVariant.ready:\n return <LazyIcon {...iconProps} iconName={'DotOutline'} />;\n }\n\n return null;\n};\n\nexport interface StatusDotProps {\n /** id that is placed on the wrapper */\n id?: string;\n /** Defines the color mode, onwhite, ondark etc. */\n onColor?: keyof typeof StatusDotOnColor;\n /** Visual variants for the statusdot */\n variant?: keyof typeof StatusDotVariant;\n /** Text placed to the right of the statusdot */\n text: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref passed to the root element */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nexport type StatusDotType = typeof StatusDot;\nconst StatusDot: React.FC<StatusDotProps> = (props: StatusDotProps) => {\n const { id, onColor = StatusDotOnColor.onwhite, variant = StatusDotVariant.info, text, className, testId, ref } = props;\n const statusDotClasses = classNames(styles['statusdot'], className);\n const labelClasses = classNames(styles['statusdot__label'], {\n [styles['statusdot__label--on-dark']]: onColor === StatusDotOnColor.ondark,\n });\n\n return (\n <span id={id} ref={ref} className={statusDotClasses} data-testid={testId} data-analyticsid={AnalyticsId.StatusDot}>\n <span className={styles['statusdot__dot']} data-testid={testId + '-dot'}>\n <StatusDotIcon onColor={onColor} variant={variant} />\n </span>\n <span className={labelClasses}>{text}</span>\n </span>\n );\n};\n\nexport default StatusDot;\n","import StatusDot from './StatusDot';\nexport { StatusDotOnColor, StatusDotVariant } from './constants';\nexport * from './StatusDot';\nexport default StatusDot;\n"],"mappings":"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"}
1
+ {"version":3,"file":"StatusDot.js","names":[],"sources":["../src/components/StatusDot/constants.ts","../src/components/StatusDot/StatusDot.tsx","../src/components/StatusDot/index.ts"],"sourcesContent":["import { FormOnColor } from '../../constants';\n\nexport enum StatusDotOnColor {\n onwhite = FormOnColor.onwhite,\n ondark = FormOnColor.ondark,\n}\n\nexport enum StatusDotVariant {\n success = 'success',\n inprocess = 'inprocess',\n exception = 'exception',\n unknown = 'unknown',\n inspected = 'inspected',\n cancelled = 'cancelled',\n alert = 'alert',\n transparent = 'transparent',\n info = 'info',\n group = 'group',\n recurring = 'recurring',\n noaccess = 'noaccess',\n draft = 'draft',\n hidden = 'hidden',\n login = 'login',\n attachment = 'attachment',\n active = 'active',\n pending = 'pending',\n inactive = 'inactive',\n ready = 'ready',\n}\n","import classNames from 'classnames';\n\nimport { StatusDotOnColor, StatusDotVariant } from './constants';\nimport { IconSize } from '../..';\nimport { AnalyticsId } from '../../constants';\nimport { getColor } from '../../theme/currys';\nimport { LazyIcon } from '../LazyIcon';\n\nimport styles from './styles.module.scss';\n\nexport interface StatusDotIconProps {\n /** Defines the color of the icon */\n onColor?: keyof typeof StatusDotOnColor;\n /** The variant defines style formatting and what icon to use */\n variant?: keyof typeof StatusDotVariant;\n}\n\nconst StatusDotIcon: React.FC<StatusDotIconProps> = ({ onColor, variant = 'info' }) => {\n const color = onColor === StatusDotOnColor.ondark ? getColor('white') : getColor('black');\n const iconProps = {\n color,\n size: IconSize.XXSmall,\n onColor,\n className: classNames({\n [styles[`statusdot__dot--${variant}`]]: typeof variant !== 'undefined',\n [styles['statusdot__dot--on-dark']]: onColor === StatusDotOnColor.ondark,\n }),\n };\n\n switch (variant) {\n case StatusDotVariant.success:\n return <LazyIcon {...iconProps} iconName={'DotCheckmark'} />;\n case StatusDotVariant.inprocess:\n return <LazyIcon {...iconProps} iconName={'DotHalfDisc'} />;\n case StatusDotVariant.exception:\n return <LazyIcon {...iconProps} iconName={'DotTriangle'} />;\n case StatusDotVariant.unknown:\n return <LazyIcon {...iconProps} iconName={'DotQuestionMark'} />;\n case StatusDotVariant.inspected:\n return <LazyIcon {...iconProps} iconName={'DotLookingGlass'} />;\n case StatusDotVariant.cancelled:\n return <LazyIcon {...iconProps} iconName={'DotX'} />;\n case StatusDotVariant.alert:\n return <LazyIcon {...iconProps} iconName={'DotExclamationMark'} />;\n case StatusDotVariant.transparent:\n return <LazyIcon {...iconProps} iconName={'DotOutline'} />;\n case StatusDotVariant.info:\n return <LazyIcon {...iconProps} iconName={'DotInfo'} />;\n case StatusDotVariant.group:\n return <LazyIcon {...iconProps} iconName={'DotGroup'} />;\n case StatusDotVariant.recurring:\n return <LazyIcon {...iconProps} iconName={'DotCircleArrows'} />;\n case StatusDotVariant.noaccess:\n return <LazyIcon {...iconProps} iconName={'DotNoAccess'} />;\n case StatusDotVariant.draft:\n return <LazyIcon {...iconProps} iconName={'DotPencil'} />;\n case StatusDotVariant.hidden:\n return <LazyIcon {...iconProps} iconName={'DotNoEye'} />;\n case StatusDotVariant.login:\n return <LazyIcon {...iconProps} iconName={'DotLogin'} />;\n case StatusDotVariant.attachment:\n return <LazyIcon {...iconProps} iconName={'DotAttachment'} />;\n case StatusDotVariant.active:\n return <LazyIcon {...iconProps} iconName={'DotFill'} />;\n case StatusDotVariant.pending:\n return <LazyIcon {...iconProps} iconName={'DotDot'} />;\n case StatusDotVariant.inactive:\n return <LazyIcon {...iconProps} iconName={'DotOutline'} />;\n case StatusDotVariant.ready:\n return <LazyIcon {...iconProps} iconName={'DotOutline'} />;\n }\n\n return null;\n};\n\nexport interface StatusDotProps {\n /** id that is placed on the wrapper */\n id?: string;\n /** Defines the color mode, onwhite, ondark etc. */\n onColor?: keyof typeof StatusDotOnColor;\n /** Visual variants for the statusdot */\n variant?: keyof typeof StatusDotVariant;\n /** Text placed to the right of the statusdot */\n text: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref passed to the root element */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nexport type StatusDotType = typeof StatusDot;\nconst StatusDot: React.FC<StatusDotProps> = (props: StatusDotProps) => {\n const { id, onColor = StatusDotOnColor.onwhite, variant = StatusDotVariant.info, text, className, testId, ref } = props;\n const statusDotClasses = classNames(styles['statusdot'], className);\n const labelClasses = classNames(styles['statusdot__label'], {\n [styles['statusdot__label--on-dark']]: onColor === StatusDotOnColor.ondark,\n });\n\n return (\n <span id={id} ref={ref} className={statusDotClasses} data-testid={testId} data-analyticsid={AnalyticsId.StatusDot}>\n <span className={styles['statusdot__dot']} data-testid={testId + '-dot'}>\n <StatusDotIcon onColor={onColor} variant={variant} />\n </span>\n <span className={labelClasses}>{text}</span>\n </span>\n );\n};\n\nexport default StatusDot;\n","import StatusDot from './StatusDot';\nexport { StatusDotOnColor, StatusDotVariant } from './constants';\nexport * from './StatusDot';\nexport default StatusDot;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusDotList.js","names":[],"sources":["../src/components/ElementHeader/StatusDotList/StatusDotList.tsx","../src/components/ElementHeader/StatusDotList/index.ts"],"sourcesContent":["import cn from 'classnames';\n\nimport type { StatusDotProps } from '../../StatusDot';\n\nimport StatusDot, { StatusDotVariant } from '../../StatusDot';\n\nimport styles from './styles.module.scss';\n\nexport type StatusDotListType = typeof StatusDotList;\n\nexport interface StatusDotListProps {\n /** Additional text to the bottom statusdot */\n additionalText?: string;\n /** StatusDot that is under the others and outside the stacking */\n bottomStatusDot?: React.ReactElement<StatusDotProps>;\n /** Stacking of the statusdots */\n stacking?: 'vertical' | 'horizontal';\n /** StatusDots as children */\n children?: React.ReactNode;\n /** Adds custom classes */\n className?: string;\n /** Show a hidden for child statusdot over the other */\n hiddenForChild?: boolean;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** StatusDot that is over the others and outside the stacking */\n topStatusDot?: React.ReactElement<StatusDotProps>;\n}\n\nexport const StatusDotList: React.FC<StatusDotListProps> = props => {\n const {\n additionalText,\n children,\n className = '',\n testId,\n stacking = 'horizontal',\n hiddenForChild = false,\n topStatusDot,\n bottomStatusDot,\n } = props;\n\n return (\n <span data-testid={testId} className={cn(styles['statusdotlist'], className)}>\n {topStatusDot}\n {/* @todo: legg til tekst i SOT */}\n {hiddenForChild && <StatusDot variant={StatusDotVariant.hidden} text=\"Skjult for barnet\" />}\n <span data-stacking={stacking} className={styles['statusdotlist__children']}>\n {children}\n </span>\n {bottomStatusDot}\n {additionalText && <span className={styles['statusdotlist__additional-text']}>{additionalText}</span>}\n </span>\n );\n};\n\nexport default StatusDotList;\n","import StatusDotList from './StatusDotList';\nexport * from './StatusDotList';\nexport default StatusDotList;\n"],"mappings":";;;;;AA6BA,IAAa,iBAA8C,UAAS;CAClE,MAAM,EACJ,gBACA,UACA,YAAY,IACZ,QACA,WAAW,cACX,iBAAiB,OACjB,cACA,oBACE;CAEJ,OACE,qBAAC,QAAD;EAAM,eAAa;EAAQ,WAAW,WAAG,OAAO,kBAAkB,UAAU;YAA5E;GACG;GAEA,kBAAkB,oBAAC,mBAAD;IAAW,SAAS,iBAAiB;IAAQ,MAAK;IAAsB,CAAA;GAC3F,oBAAC,QAAD;IAAM,iBAAe;IAAU,WAAW,OAAO;IAC9C;IACI,CAAA;GACN;GACA,kBAAkB,oBAAC,QAAD;IAAM,WAAW,OAAO;cAAoC;IAAsB,CAAA;GAChG;;;;;ACjDX,IAAA,wBAAe"}
1
+ {"version":3,"file":"StatusDotList.js","names":[],"sources":["../src/components/ElementHeader/StatusDotList/StatusDotList.tsx","../src/components/ElementHeader/StatusDotList/index.ts"],"sourcesContent":["import cn from 'classnames';\n\nimport type { StatusDotProps } from '../../StatusDot';\n\nimport StatusDot, { StatusDotVariant } from '../../StatusDot';\n\nimport styles from './styles.module.scss';\n\nexport type StatusDotListType = typeof StatusDotList;\n\nexport interface StatusDotListProps {\n /** Additional text to the bottom statusdot */\n additionalText?: string;\n /** StatusDot that is under the others and outside the stacking */\n bottomStatusDot?: React.ReactElement<StatusDotProps>;\n /** Stacking of the statusdots */\n stacking?: 'vertical' | 'horizontal';\n /** StatusDots as children */\n children?: React.ReactNode;\n /** Adds custom classes */\n className?: string;\n /** Show a hidden for child statusdot over the other */\n hiddenForChild?: boolean;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** StatusDot that is over the others and outside the stacking */\n topStatusDot?: React.ReactElement<StatusDotProps>;\n}\n\nexport const StatusDotList: React.FC<StatusDotListProps> = props => {\n const {\n additionalText,\n children,\n className = '',\n testId,\n stacking = 'horizontal',\n hiddenForChild = false,\n topStatusDot,\n bottomStatusDot,\n } = props;\n\n return (\n <span data-testid={testId} className={cn(styles['statusdotlist'], className)}>\n {topStatusDot}\n {/* @todo: legg til tekst i SOT */}\n {hiddenForChild && <StatusDot variant={StatusDotVariant.hidden} text=\"Skjult for barnet\" />}\n <span data-stacking={stacking} className={styles['statusdotlist__children']}>\n {children}\n </span>\n {bottomStatusDot}\n {additionalText && <span className={styles['statusdotlist__additional-text']}>{additionalText}</span>}\n </span>\n );\n};\n\nexport default StatusDotList;\n","import StatusDotList from './StatusDotList';\nexport * from './StatusDotList';\nexport default StatusDotList;\n"],"mappings":";;;;;AA6BA,IAAa,iBAA8C,UAAS;CAClE,MAAM,EACJ,gBACA,UACA,YAAY,IACZ,QACA,WAAW,cACX,iBAAiB,OACjB,cACA,oBACE;CAEJ,OACE,qBAAC,QAAD;EAAM,eAAa;EAAQ,WAAW,WAAG,OAAO,kBAAkB,SAAS;YAA3E;GACG;GAEA,kBAAkB,oBAAC,mBAAD;IAAW,SAAS,iBAAiB;IAAQ,MAAK;GAAqB,CAAA;GAC1F,oBAAC,QAAD;IAAM,iBAAe;IAAU,WAAW,OAAO;IAC9C;GACG,CAAA;GACL;GACA,kBAAkB,oBAAC,QAAD;IAAM,WAAW,OAAO;cAAoC;GAAqB,CAAA;EAChG;;AAEV;;;ACnDA,IAAA,wBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepButtons.js","names":[],"sources":["../src/components/StepButtons/StepButtons.tsx","../src/components/StepButtons/index.ts"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ButtonProps } from '../Button';\n\nimport { AnalyticsId } from '../../constants';\n\nimport styles from './styles.module.scss';\n\nexport interface StepButtonsProps {\n /** Knapp for å gå tilbake. Vises med \"outline\" variant. */\n backButton?: React.ReactElement<ButtonProps>;\n /** Knapp for å gå videre. Vises med \"fill\" variant. */\n forwardButton?: React.ReactElement<ButtonProps>;\n /** Ekstra knapper. Valgfritt utseende. */\n additionalButtons?: React.ReactElement<ButtonProps>[];\n /** Knapp for å avbryte eller fortsette senere. Vises med \"borderless\" variant. */\n cancelButton?: React.ReactElement<ButtonProps>;\n /** Knappene vil vises sticky nederst på skjermen. Default: false */\n sticky?: boolean;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nexport const StepButtons: React.FC<StepButtonsProps> = props => {\n const { backButton, forwardButton, additionalButtons, cancelButton, sticky = false, testId } = props;\n\n const navigationClasses = classNames(styles.stepbuttons, sticky && styles['stepbuttons--has-sticky-buttons']);\n\n if (backButton || forwardButton || additionalButtons || cancelButton) {\n return (\n <div className={navigationClasses} data-testid={testId} data-analyticsid={AnalyticsId.StepButtons}>\n {(backButton || forwardButton) && (\n <div className={styles.stepbuttons__buttons}>\n {backButton &&\n React.cloneElement(backButton, {\n variant: 'outline',\n wrapperClassName: classNames(styles['stepbuttons__button--back']),\n })}\n {forwardButton &&\n React.cloneElement(forwardButton, {\n variant: 'fill',\n wrapperClassName: classNames(styles['stepbuttons__button--forward']),\n })}\n </div>\n )}\n {additionalButtons && (\n <div className={classNames(styles.stepbuttons__buttons, styles['stepbuttons__buttons--additional'])}>{additionalButtons}</div>\n )}\n {cancelButton && (\n <div className={styles.stepbuttons__buttons}>\n {React.cloneElement(cancelButton, {\n variant: 'borderless',\n })}\n </div>\n )}\n </div>\n );\n }\n return null;\n};\n\nexport default StepButtons;\n","import StepButtons from './StepButtons';\nexport * from './StepButtons';\nexport default StepButtons;\n"],"mappings":";;;;;;AAyBA,IAAa,eAA0C,UAAS;CAC9D,MAAM,EAAE,YAAY,eAAe,mBAAmB,cAAc,SAAS,OAAO,WAAW;CAE/F,MAAM,oBAAoB,WAAW,OAAO,aAAa,UAAU,OAAO,mCAAmC;CAE7G,IAAI,cAAc,iBAAiB,qBAAqB,cACtD,OACE,qBAAC,OAAD;EAAK,WAAW;EAAmB,eAAa;EAAQ,oBAAkB,YAAY;YAAtF;IACI,cAAc,kBACd,qBAAC,OAAD;IAAK,WAAW,OAAO;cAAvB,CACG,cACC,MAAM,aAAa,YAAY;KAC7B,SAAS;KACT,kBAAkB,WAAW,OAAO,6BAA6B;KAClE,CAAC,EACH,iBACC,MAAM,aAAa,eAAe;KAChC,SAAS;KACT,kBAAkB,WAAW,OAAO,gCAAgC;KACrE,CAAC,CACA;;GAEP,qBACC,oBAAC,OAAD;IAAK,WAAW,WAAW,OAAO,sBAAsB,OAAO,oCAAoC;cAAG;IAAwB,CAAA;GAE/H,gBACC,oBAAC,OAAD;IAAK,WAAW,OAAO;cACpB,MAAM,aAAa,cAAc,EAChC,SAAS,cACV,CAAC;IACE,CAAA;GAEJ;;CAGV,OAAO;;;;AC1DT,IAAA,sBAAe"}
1
+ {"version":3,"file":"StepButtons.js","names":[],"sources":["../src/components/StepButtons/StepButtons.tsx","../src/components/StepButtons/index.ts"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ButtonProps } from '../Button';\n\nimport { AnalyticsId } from '../../constants';\n\nimport styles from './styles.module.scss';\n\nexport interface StepButtonsProps {\n /** Knapp for å gå tilbake. Vises med \"outline\" variant. */\n backButton?: React.ReactElement<ButtonProps>;\n /** Knapp for å gå videre. Vises med \"fill\" variant. */\n forwardButton?: React.ReactElement<ButtonProps>;\n /** Ekstra knapper. Valgfritt utseende. */\n additionalButtons?: React.ReactElement<ButtonProps>[];\n /** Knapp for å avbryte eller fortsette senere. Vises med \"borderless\" variant. */\n cancelButton?: React.ReactElement<ButtonProps>;\n /** Knappene vil vises sticky nederst på skjermen. Default: false */\n sticky?: boolean;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nexport const StepButtons: React.FC<StepButtonsProps> = props => {\n const { backButton, forwardButton, additionalButtons, cancelButton, sticky = false, testId } = props;\n\n const navigationClasses = classNames(styles.stepbuttons, sticky && styles['stepbuttons--has-sticky-buttons']);\n\n if (backButton || forwardButton || additionalButtons || cancelButton) {\n return (\n <div className={navigationClasses} data-testid={testId} data-analyticsid={AnalyticsId.StepButtons}>\n {(backButton || forwardButton) && (\n <div className={styles.stepbuttons__buttons}>\n {backButton &&\n React.cloneElement(backButton, {\n variant: 'outline',\n wrapperClassName: classNames(styles['stepbuttons__button--back']),\n })}\n {forwardButton &&\n React.cloneElement(forwardButton, {\n variant: 'fill',\n wrapperClassName: classNames(styles['stepbuttons__button--forward']),\n })}\n </div>\n )}\n {additionalButtons && (\n <div className={classNames(styles.stepbuttons__buttons, styles['stepbuttons__buttons--additional'])}>{additionalButtons}</div>\n )}\n {cancelButton && (\n <div className={styles.stepbuttons__buttons}>\n {React.cloneElement(cancelButton, {\n variant: 'borderless',\n })}\n </div>\n )}\n </div>\n );\n }\n return null;\n};\n\nexport default StepButtons;\n","import StepButtons from './StepButtons';\nexport * from './StepButtons';\nexport default StepButtons;\n"],"mappings":";;;;;;AAyBA,IAAa,eAA0C,UAAS;CAC9D,MAAM,EAAE,YAAY,eAAe,mBAAmB,cAAc,SAAS,OAAO,WAAW;CAE/F,MAAM,oBAAoB,WAAW,OAAO,aAAa,UAAU,OAAO,kCAAkC;CAE5G,IAAI,cAAc,iBAAiB,qBAAqB,cACtD,OACE,qBAAC,OAAD;EAAK,WAAW;EAAmB,eAAa;EAAQ,oBAAkB,YAAY;YAAtF;IACI,cAAc,kBACd,qBAAC,OAAD;IAAK,WAAW,OAAO;cAAvB,CACG,cACC,MAAM,aAAa,YAAY;KAC7B,SAAS;KACT,kBAAkB,WAAW,OAAO,4BAA4B;IAClE,CAAC,GACF,iBACC,MAAM,aAAa,eAAe;KAChC,SAAS;KACT,kBAAkB,WAAW,OAAO,+BAA+B;IACrE,CAAC,CACA;;GAEN,qBACC,oBAAC,OAAD;IAAK,WAAW,WAAW,OAAO,sBAAsB,OAAO,mCAAmC;cAAI;GAAuB,CAAA;GAE9H,gBACC,oBAAC,OAAD;IAAK,WAAW,OAAO;cACpB,MAAM,aAAa,cAAc,EAChC,SAAS,aACX,CAAC;GACE,CAAA;EAEJ;;CAGT,OAAO;AACT;;;AC3DA,IAAA,sBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabList.js","names":[],"sources":["../src/components/Tabs/Tab.tsx","../src/components/Tabs/TabList/TabChevron.tsx","../src/components/Tabs/TabList/TabItem.tsx","../src/components/Tabs/TabList/TabList.tsx","../src/components/Tabs/TabList/index.ts"],"sourcesContent":["import type { SvgIcon } from '../Icon';\nimport type { IconName } from '../Icons/IconNames';\n\nexport interface TabProps {\n /** Sets the tab panel content */\n children?: React.ReactNode;\n /** Optional icon on the tab */\n icon?: SvgIcon | IconName;\n /** Called when tab is selected */\n onTabClick?: (index: number) => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Title on the tab */\n title?: string;\n}\n\nconst Tab: React.FC<TabProps> = props => {\n return <>{props.children ?? null}</>;\n};\n\nexport default Tab;\n","import React from 'react';\n\nimport { usePseudoClasses } from '../../../hooks/usePseudoClasses';\nimport Icon, { IconSize } from '../../Icon';\nimport ChevronLeft from '../../Icons/ChevronLeft';\nimport ChevronRight from '../../Icons/ChevronRight';\n\nimport styles from './styles.module.scss';\n\ninterface TabChevronProps {\n direction: 'left' | 'right';\n onClick: () => void;\n backgroundColor?: string;\n ariaLabel?: string;\n}\n\nconst TabChevron: React.FC<TabChevronProps> = ({ direction, onClick, backgroundColor, ariaLabel }) => {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { isHovered } = usePseudoClasses<HTMLButtonElement | null>(buttonRef);\n\n return (\n <button\n type=\"button\"\n ref={buttonRef}\n className={styles['tab-list__button']}\n onClick={onClick}\n aria-label={ariaLabel}\n style={{ backgroundColor: backgroundColor }}\n >\n {direction === 'left' ? (\n <Icon color={'var(--color-action-graphics-onlight)'} isHovered={isHovered} svgIcon={ChevronLeft} size={IconSize.XSmall} />\n ) : (\n <Icon color={'var(--color-action-graphics-onlight)'} isHovered={isHovered} svgIcon={ChevronRight} size={IconSize.XSmall} />\n )}\n </button>\n );\n};\n\nexport default TabChevron;\n","import { useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { IconName } from '../../Icons/IconNames';\nimport type { TabProps } from '../Tab';\nimport type { TabsColors } from '../Tabs';\n\nimport { palette } from '../../../theme/palette';\nimport Icon, { IconSize } from '../../Icon';\nimport LazyIcon from '../../LazyIcon';\n\nimport styles from './styles.module.scss';\n\ninterface TabItemProps {\n tabProps: TabProps;\n index: number;\n color: TabsColors;\n selectedTab: number;\n tabRefs: React.RefObject<React.RefObject<HTMLButtonElement | null>[] | null | undefined>;\n tabListVisible: boolean;\n onTabListClick: (index: number) => void;\n}\n\nconst TabItem: React.FC<TabItemProps> = props => {\n const isSelected = props.index === props.selectedTab;\n const { title, onTabClick, icon, testId } = props.tabProps;\n const handleClick = (): void => {\n if (onTabClick) onTabClick(props.index);\n props.onTabListClick(props.index);\n scrollToTab(props.index);\n };\n const tabButtonClasses = classNames(styles['tab-list__tab'], styles[`tab-list__tab--${props.color}`], {\n [styles['tab-list__tab--selected']]: isSelected,\n [styles['tab-list__tab--not-selected']]: !isSelected,\n });\n\n const currentRef = props.tabRefs.current && props.tabRefs.current[props.index];\n\n const scrollToTab = (index: number): void => {\n const currentRef = props.tabRefs.current && props.tabRefs.current[index];\n\n if (currentRef?.current?.scrollIntoView) {\n currentRef?.current?.scrollIntoView({ behavior: 'smooth', inline: 'nearest', block: 'nearest' });\n }\n };\n\n const itemRef = useRef<HTMLLIElement>(null);\n\n useEffect(() => {\n if (isSelected && props.tabListVisible) {\n scrollToTab(props.index);\n }\n }, [isSelected]);\n\n return (\n <li role=\"presentation\" ref={itemRef}>\n <button\n role=\"tab\"\n aria-selected={isSelected}\n onClick={handleClick}\n className={tabButtonClasses}\n data-testid={testId}\n ref={currentRef as React.RefObject<HTMLButtonElement>}\n >\n <span className={styles['tab-list__tab__title-and-icon']}>\n {icon &&\n (typeof icon === 'string' ? (\n <LazyIcon\n iconName={icon as IconName}\n size={IconSize.XSmall}\n color={isSelected ? palette[`black`] : palette['blueberry500']}\n />\n ) : (\n <Icon svgIcon={icon} size={IconSize.XSmall} color={isSelected ? palette[`black`] : palette['blueberry500']} />\n ))}\n {title}\n </span>\n </button>\n </li>\n );\n};\n\nexport default TabItem;\n","import React, { useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { TabProps } from '../Tab';\nimport type { TabsColors, TabsOnColor } from '../Tabs';\n\nimport TabChevron from './TabChevron';\nimport TabItem from './TabItem';\nimport { useIsVisible } from '../../../hooks/useIsVisible';\nimport { useRovingFocus } from '../../../hooks/useRovingFocus';\nimport { isComponent } from '../../../utils/component';\nimport Tab from '../Tab';\n\nimport styles from './styles.module.scss';\ninterface TabListProps {\n children: React.ReactNode;\n onTabListClick: (index: number) => void;\n selectedTab: number;\n color: TabsColors;\n onColor: TabsOnColor;\n ariaLabelRightButton?: string;\n ariaLabelLeftButton?: string;\n}\n\nconst TabList: React.FC<TabListProps> = props => {\n const { selectedTab, onTabListClick, children, color, onColor, ariaLabelLeftButton, ariaLabelRightButton } = props;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const tabRefs = useRef(React.Children.map(children, () => React.createRef<HTMLButtonElement>()) || []);\n useRovingFocus(onTabListClick, tabRefs, listRef, true);\n\n const tablistClasses = classNames(styles['tab-list'], styles[`tab-list--${onColor}`]);\n\n const getBackgroundColor = (onColor: TabsOnColor): string => {\n switch (onColor) {\n case 'onwhite':\n return 'var(--color-base-background-white)';\n case 'onblueberry':\n return 'var(--color-base-background-blueberry)';\n case 'onneutral':\n return 'var(--color-base-background-neutral)';\n }\n };\n const firstTab = tabRefs.current && tabRefs.current[0];\n const lastTab = tabRefs.current && tabRefs.current[tabRefs.current.length - 1];\n\n const firstTabVisible = useIsVisible(firstTab);\n const lastTabVisible = useIsVisible(lastTab);\n const tabListVisible = useIsVisible(listRef);\n\n const shouldShowFadeStart = (): boolean => {\n return !firstTabVisible;\n };\n\n const shouldShowFadeEnd = (): boolean => {\n return !lastTabVisible;\n };\n\n const scrollInList = (direction: string): void => {\n if (listRef.current) {\n const listWidth = listRef.current.clientWidth;\n const listScrollLeft = listRef.current.scrollLeft;\n const maxScrollLeft = listRef.current.scrollWidth - listWidth;\n\n if (direction === 'right' && !lastTabVisible) {\n const scrollAmount = Math.min(listWidth / 2, maxScrollLeft - listScrollLeft);\n listRef.current.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n } else if (direction === 'left' && !firstTabVisible) {\n const scrollAmount = -Math.min(listWidth / 2, listScrollLeft);\n listRef.current.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n }\n }\n };\n\n return (\n <div className={styles['tab-list-wrapper']}>\n {shouldShowFadeStart() && (\n <div className={classNames(styles['tab-list__start-wrapper'])}>\n <TabChevron\n onClick={() => scrollInList('left')}\n direction=\"left\"\n backgroundColor={`${getBackgroundColor(onColor)}`}\n ariaLabel={ariaLabelLeftButton}\n />\n <div\n className={classNames(styles['tab-list__fade-start'])}\n style={{\n backgroundColor: `${getBackgroundColor(onColor)}`,\n }}\n ></div>\n </div>\n )}\n <ul className={tablistClasses} ref={listRef} role=\"tablist\" aria-orientation=\"horizontal\">\n {React.Children.map(children, (child, index) => {\n if (isComponent<TabProps>(child, Tab)) {\n return (\n <TabItem\n tabRefs={tabRefs}\n tabListVisible={tabListVisible}\n key={child.props.title}\n index={index}\n selectedTab={selectedTab}\n onTabListClick={onTabListClick}\n tabProps={child.props}\n color={color}\n />\n );\n }\n return null;\n })}\n </ul>\n {shouldShowFadeEnd() && (\n <div className={classNames(styles['tab-list__end-wrapper'])}>\n <div\n className={classNames(styles['tab-list__fade-end'])}\n style={{\n backgroundColor: `${getBackgroundColor(onColor)}`,\n }}\n ></div>\n <TabChevron\n onClick={() => scrollInList('right')}\n direction=\"right\"\n backgroundColor={`${getBackgroundColor(onColor)}`}\n ariaLabel={ariaLabelRightButton}\n />\n </div>\n )}\n <div className={classNames(styles['tab-list__border'])}></div>\n </div>\n );\n};\n\nexport default TabList;\n","import TabList from './TabList';\nexport * from './TabList';\nexport default TabList;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TabList.js","names":[],"sources":["../src/components/Tabs/Tab.tsx","../src/components/Tabs/TabList/TabChevron.tsx","../src/components/Tabs/TabList/TabItem.tsx","../src/components/Tabs/TabList/TabList.tsx","../src/components/Tabs/TabList/index.ts"],"sourcesContent":["import type { SvgIcon } from '../Icon';\nimport type { IconName } from '../Icons/IconNames';\n\nexport interface TabProps {\n /** Sets the tab panel content */\n children?: React.ReactNode;\n /** Optional icon on the tab */\n icon?: SvgIcon | IconName;\n /** Called when tab is selected */\n onTabClick?: (index: number) => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Title on the tab */\n title?: string;\n}\n\nconst Tab: React.FC<TabProps> = props => {\n return <>{props.children ?? null}</>;\n};\n\nexport default Tab;\n","import React from 'react';\n\nimport { usePseudoClasses } from '../../../hooks/usePseudoClasses';\nimport Icon, { IconSize } from '../../Icon';\nimport ChevronLeft from '../../Icons/ChevronLeft';\nimport ChevronRight from '../../Icons/ChevronRight';\n\nimport styles from './styles.module.scss';\n\ninterface TabChevronProps {\n direction: 'left' | 'right';\n onClick: () => void;\n backgroundColor?: string;\n ariaLabel?: string;\n}\n\nconst TabChevron: React.FC<TabChevronProps> = ({ direction, onClick, backgroundColor, ariaLabel }) => {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { isHovered } = usePseudoClasses<HTMLButtonElement | null>(buttonRef);\n\n return (\n <button\n type=\"button\"\n ref={buttonRef}\n className={styles['tab-list__button']}\n onClick={onClick}\n aria-label={ariaLabel}\n style={{ backgroundColor: backgroundColor }}\n >\n {direction === 'left' ? (\n <Icon color={'var(--color-action-graphics-onlight)'} isHovered={isHovered} svgIcon={ChevronLeft} size={IconSize.XSmall} />\n ) : (\n <Icon color={'var(--color-action-graphics-onlight)'} isHovered={isHovered} svgIcon={ChevronRight} size={IconSize.XSmall} />\n )}\n </button>\n );\n};\n\nexport default TabChevron;\n","import { useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { IconName } from '../../Icons/IconNames';\nimport type { TabProps } from '../Tab';\nimport type { TabsColors } from '../Tabs';\n\nimport { palette } from '../../../theme/palette';\nimport Icon, { IconSize } from '../../Icon';\nimport LazyIcon from '../../LazyIcon';\n\nimport styles from './styles.module.scss';\n\ninterface TabItemProps {\n tabProps: TabProps;\n index: number;\n color: TabsColors;\n selectedTab: number;\n tabRefs: React.RefObject<React.RefObject<HTMLButtonElement | null>[] | null | undefined>;\n tabListVisible: boolean;\n onTabListClick: (index: number) => void;\n}\n\nconst TabItem: React.FC<TabItemProps> = props => {\n const isSelected = props.index === props.selectedTab;\n const { title, onTabClick, icon, testId } = props.tabProps;\n const handleClick = (): void => {\n if (onTabClick) onTabClick(props.index);\n props.onTabListClick(props.index);\n scrollToTab(props.index);\n };\n const tabButtonClasses = classNames(styles['tab-list__tab'], styles[`tab-list__tab--${props.color}`], {\n [styles['tab-list__tab--selected']]: isSelected,\n [styles['tab-list__tab--not-selected']]: !isSelected,\n });\n\n const currentRef = props.tabRefs.current && props.tabRefs.current[props.index];\n\n const scrollToTab = (index: number): void => {\n const currentRef = props.tabRefs.current && props.tabRefs.current[index];\n\n if (currentRef?.current?.scrollIntoView) {\n currentRef?.current?.scrollIntoView({ behavior: 'smooth', inline: 'nearest', block: 'nearest' });\n }\n };\n\n const itemRef = useRef<HTMLLIElement>(null);\n\n useEffect(() => {\n if (isSelected && props.tabListVisible) {\n scrollToTab(props.index);\n }\n }, [isSelected]);\n\n return (\n <li role=\"presentation\" ref={itemRef}>\n <button\n role=\"tab\"\n aria-selected={isSelected}\n onClick={handleClick}\n className={tabButtonClasses}\n data-testid={testId}\n ref={currentRef as React.RefObject<HTMLButtonElement>}\n >\n <span className={styles['tab-list__tab__title-and-icon']}>\n {icon &&\n (typeof icon === 'string' ? (\n <LazyIcon\n iconName={icon as IconName}\n size={IconSize.XSmall}\n color={isSelected ? palette[`black`] : palette['blueberry500']}\n />\n ) : (\n <Icon svgIcon={icon} size={IconSize.XSmall} color={isSelected ? palette[`black`] : palette['blueberry500']} />\n ))}\n {title}\n </span>\n </button>\n </li>\n );\n};\n\nexport default TabItem;\n","import React, { useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { TabProps } from '../Tab';\nimport type { TabsColors, TabsOnColor } from '../Tabs';\n\nimport TabChevron from './TabChevron';\nimport TabItem from './TabItem';\nimport { useIsVisible } from '../../../hooks/useIsVisible';\nimport { useRovingFocus } from '../../../hooks/useRovingFocus';\nimport { isComponent } from '../../../utils/component';\nimport Tab from '../Tab';\n\nimport styles from './styles.module.scss';\ninterface TabListProps {\n children: React.ReactNode;\n onTabListClick: (index: number) => void;\n selectedTab: number;\n color: TabsColors;\n onColor: TabsOnColor;\n ariaLabelRightButton?: string;\n ariaLabelLeftButton?: string;\n}\n\nconst TabList: React.FC<TabListProps> = props => {\n const { selectedTab, onTabListClick, children, color, onColor, ariaLabelLeftButton, ariaLabelRightButton } = props;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const tabRefs = useRef(React.Children.map(children, () => React.createRef<HTMLButtonElement>()) || []);\n useRovingFocus(onTabListClick, tabRefs, listRef, true);\n\n const tablistClasses = classNames(styles['tab-list'], styles[`tab-list--${onColor}`]);\n\n const getBackgroundColor = (onColor: TabsOnColor): string => {\n switch (onColor) {\n case 'onwhite':\n return 'var(--color-base-background-white)';\n case 'onblueberry':\n return 'var(--color-base-background-blueberry)';\n case 'onneutral':\n return 'var(--color-base-background-neutral)';\n }\n };\n const firstTab = tabRefs.current && tabRefs.current[0];\n const lastTab = tabRefs.current && tabRefs.current[tabRefs.current.length - 1];\n\n const firstTabVisible = useIsVisible(firstTab);\n const lastTabVisible = useIsVisible(lastTab);\n const tabListVisible = useIsVisible(listRef);\n\n const shouldShowFadeStart = (): boolean => {\n return !firstTabVisible;\n };\n\n const shouldShowFadeEnd = (): boolean => {\n return !lastTabVisible;\n };\n\n const scrollInList = (direction: string): void => {\n if (listRef.current) {\n const listWidth = listRef.current.clientWidth;\n const listScrollLeft = listRef.current.scrollLeft;\n const maxScrollLeft = listRef.current.scrollWidth - listWidth;\n\n if (direction === 'right' && !lastTabVisible) {\n const scrollAmount = Math.min(listWidth / 2, maxScrollLeft - listScrollLeft);\n listRef.current.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n } else if (direction === 'left' && !firstTabVisible) {\n const scrollAmount = -Math.min(listWidth / 2, listScrollLeft);\n listRef.current.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n }\n }\n };\n\n return (\n <div className={styles['tab-list-wrapper']}>\n {shouldShowFadeStart() && (\n <div className={classNames(styles['tab-list__start-wrapper'])}>\n <TabChevron\n onClick={() => scrollInList('left')}\n direction=\"left\"\n backgroundColor={`${getBackgroundColor(onColor)}`}\n ariaLabel={ariaLabelLeftButton}\n />\n <div\n className={classNames(styles['tab-list__fade-start'])}\n style={{\n backgroundColor: `${getBackgroundColor(onColor)}`,\n }}\n ></div>\n </div>\n )}\n <ul className={tablistClasses} ref={listRef} role=\"tablist\" aria-orientation=\"horizontal\">\n {React.Children.map(children, (child, index) => {\n if (isComponent<TabProps>(child, Tab)) {\n return (\n <TabItem\n tabRefs={tabRefs}\n tabListVisible={tabListVisible}\n key={child.props.title}\n index={index}\n selectedTab={selectedTab}\n onTabListClick={onTabListClick}\n tabProps={child.props}\n color={color}\n />\n );\n }\n return null;\n })}\n </ul>\n {shouldShowFadeEnd() && (\n <div className={classNames(styles['tab-list__end-wrapper'])}>\n <div\n className={classNames(styles['tab-list__fade-end'])}\n style={{\n backgroundColor: `${getBackgroundColor(onColor)}`,\n }}\n ></div>\n <TabChevron\n onClick={() => scrollInList('right')}\n direction=\"right\"\n backgroundColor={`${getBackgroundColor(onColor)}`}\n ariaLabel={ariaLabelRightButton}\n />\n </div>\n )}\n <div className={classNames(styles['tab-list__border'])}></div>\n </div>\n );\n};\n\nexport default TabList;\n","import TabList from './TabList';\nexport * from './TabList';\nexport default TabList;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabPanel.js","names":[],"sources":["../src/components/Tabs/TabPanel/TabPanel.tsx","../src/components/Tabs/TabPanel/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { TabsColors } from '../Tabs';\n\nimport styles from './styles.module.scss';\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n color?: TabsColors;\n isFirst?: boolean;\n style?: React.CSSProperties;\n /** Ref passed to the component */\n ref?: React.Ref<HTMLDivElement | null>;\n}\n\nconst TabPanel: React.FC<TabPanelProps> = props => {\n const { children, color = 'white', isFirst = false, style, ref } = props;\n\n const tabPanelClasses = classNames(styles['tab-panel'], styles[`tab-panel--${color}`], {\n [styles['tab-panel--first']]: isFirst,\n });\n\n return (\n <div ref={ref} className={tabPanelClasses} style={style}>\n <div>{children}</div>\n </div>\n );\n};\n\nTabPanel.displayName = 'TabPanel';\nexport default TabPanel;\n","import TabPanel from './TabPanel';\nexport * from './TabPanel';\nexport default TabPanel;\n"],"mappings":";;;;AAeA,IAAM,YAAoC,UAAS;CACjD,MAAM,EAAE,UAAU,QAAQ,SAAS,UAAU,OAAO,OAAO,QAAQ;CAMnE,OACE,oBAAC,OAAD;EAAU;EAAK,WALO,WAAW,OAAO,cAAc,OAAO,cAAc,UAAU,GACpF,OAAO,sBAAsB,SAC/B,CAG2B;EAAwB;YAChD,oBAAC,OAAD,EAAM,UAAe,CAAA;EACjB,CAAA;;AAIV,SAAS,cAAc;;;AC3BvB,IAAA,mBAAe"}
1
+ {"version":3,"file":"TabPanel.js","names":[],"sources":["../src/components/Tabs/TabPanel/TabPanel.tsx","../src/components/Tabs/TabPanel/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { TabsColors } from '../Tabs';\n\nimport styles from './styles.module.scss';\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n color?: TabsColors;\n isFirst?: boolean;\n style?: React.CSSProperties;\n /** Ref passed to the component */\n ref?: React.Ref<HTMLDivElement | null>;\n}\n\nconst TabPanel: React.FC<TabPanelProps> = props => {\n const { children, color = 'white', isFirst = false, style, ref } = props;\n\n const tabPanelClasses = classNames(styles['tab-panel'], styles[`tab-panel--${color}`], {\n [styles['tab-panel--first']]: isFirst,\n });\n\n return (\n <div ref={ref} className={tabPanelClasses} style={style}>\n <div>{children}</div>\n </div>\n );\n};\n\nTabPanel.displayName = 'TabPanel';\nexport default TabPanel;\n","import TabPanel from './TabPanel';\nexport * from './TabPanel';\nexport default TabPanel;\n"],"mappings":";;;;AAeA,IAAM,YAAoC,UAAS;CACjD,MAAM,EAAE,UAAU,QAAQ,SAAS,UAAU,OAAO,OAAO,QAAQ;CAMnE,OACE,oBAAC,OAAD;EAAU;EAAK,WALO,WAAW,OAAO,cAAc,OAAO,cAAc,UAAU,GACpF,OAAO,sBAAsB,QAChC,CAG4B;EAAwB;YAChD,oBAAC,OAAD,EAAM,SAAc,CAAA;CACjB,CAAA;AAET;AAEA,SAAS,cAAc;;;AC3BvB,IAAA,mBAAe"}