@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
@@ -1 +1 @@
1
- {"version":3,"file":"AnchorLink.js","names":[],"sources":["../src/components/AnchorLink/AnchorLink.tsx","../src/components/AnchorLink/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport { AnalyticsId } from '../../constants';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getColor } from '../../theme/currys';\nimport AsChildSlot from '../AsChildSlot';\nimport Icon, { IconSize } from '../Icon';\nimport ArrowUpRight from '../Icons/ArrowUpRight';\n\nimport AnchorLinkStyles from './styles.module.scss';\n\nexport type AnchorLinkTargets = '_self' | '_blank' | '_parent';\n\nexport type AnchorLinkTags = 'a' | 'button';\n\nexport type AnchorLinkOnClickEvent =\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.FormEvent<unknown>\n | React.KeyboardEvent<HTMLUListElement>\n | null;\n\nexport interface AnchorLinkProps {\n /** When true, onclick and keyboard events will be passed to the child. */\n asChild?: boolean;\n /** Sets the content of the <a> tag */\n children: React.ReactNode;\n /** URL to link to */\n href?: string;\n /** Gives a unique id to the anchor-link :) */\n id?: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the target type of the <a> tag. _blank adds an arrow icon at the end of the link */\n target?: AnchorLinkTargets;\n /** HTML markup for anchor link. Default: a */\n htmlMarkup?: AnchorLinkTags;\n /** Function that is called when clicked */\n onClick?: (e?: AnchorLinkOnClickEvent) => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref that is passed to the component */\n ref?: React.Ref<HTMLAnchorElement | HTMLButtonElement | null>;\n}\n\nconst AnchorLink: React.FC<AnchorLinkProps> = props => {\n const { asChild, id, href, children, className, target = '_self', htmlMarkup = 'a', onClick, testId, ref } = props;\n const external = target === '_blank';\n const { refObject, isHovered } = usePseudoClasses<HTMLButtonElement | HTMLAnchorElement>(\n ref as React.RefObject<HTMLButtonElement | HTMLAnchorElement>\n );\n const anchorClasses = classNames(AnchorLinkStyles.anchorlink, className);\n\n const commonProps = {\n id,\n ['data-testid']: testId,\n ['data-analyticsid']: AnalyticsId.AnchorLink,\n onClick,\n };\n\n const renderContent = (): React.ReactElement => (\n <>\n {children}\n {external && (\n <Icon\n className={AnchorLinkStyles.anchorlink__icon}\n svgIcon={ArrowUpRight}\n color={getColor('blueberry', 600)}\n hoverColor={getColor('blueberry', 700)}\n size={IconSize.XSmall}\n isHovered={isHovered}\n />\n )}\n </>\n );\n\n if (asChild) {\n return (\n <AsChildSlot content={<span className={anchorClasses} />} className={AnchorLinkStyles['anchorlink-wrapper']} elementRef={refObject}>\n {children}\n </AsChildSlot>\n );\n }\n\n if (htmlMarkup === 'a') {\n return (\n <a\n href={href}\n target={target}\n className={anchorClasses}\n rel={external ? 'noopener noreferrer' : undefined}\n ref={refObject as React.RefObject<HTMLAnchorElement>}\n {...commonProps}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n className={AnchorLinkStyles['anchorlink-wrapper']}\n ref={refObject as React.RefObject<HTMLButtonElement>}\n {...commonProps}\n >\n <span className={anchorClasses}>{renderContent()}</span>\n </button>\n );\n};\n\nexport default AnchorLink;\n","import AnchorLink from './AnchorLink';\nexport * from './AnchorLink';\nexport default AnchorLink;\n"],"mappings":";;;;;;;;;;AA4CA,IAAM,cAAwC,UAAS;CACrD,MAAM,EAAE,SAAS,IAAI,MAAM,UAAU,WAAW,SAAS,SAAS,aAAa,KAAK,SAAS,QAAQ,QAAQ;CAC7G,MAAM,WAAW,WAAW;CAC5B,MAAM,EAAE,WAAW,cAAc,iBAC/B,IACD;CACD,MAAM,gBAAgB,WAAW,iBAAiB,YAAY,UAAU;CAExE,MAAM,cAAc;EAClB;GACC,gBAAgB;GAChB,qBAAqB,YAAY;EAClC;EACD;CAED,MAAM,sBACJ,qBAAA,UAAA,EAAA,UAAA,CACG,UACA,YACC,oBAAC,cAAD;EACE,WAAW,iBAAiB;EAC5B,SAAS;EACT,OAAO,SAAS,aAAa,IAAI;EACjC,YAAY,SAAS,aAAa,IAAI;EACtC,MAAM,SAAS;EACJ;EACX,CAAA,CAEH,EAAA,CAAA;CAGL,IAAI,SACF,OACE,oBAAC,qBAAD;EAAa,SAAS,oBAAC,QAAD,EAAM,WAAW,eAAiB,CAAA;EAAE,WAAW,iBAAiB;EAAuB,YAAY;EACtH;EACW,CAAA;CAIlB,IAAI,eAAe,KACjB,OACE,oBAAC,KAAD;EACQ;EACE;EACR,WAAW;EACX,KAAK,WAAW,wBAAwB,KAAA;EACxC,KAAK;EACL,GAAI;YAEH,eAAe;EACd,CAAA;CAIR,OACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW,iBAAiB;EAC5B,KAAK;EACL,GAAI;YAEJ,oBAAC,QAAD;GAAM,WAAW;aAAgB,eAAe;GAAQ,CAAA;EACjD,CAAA;;;;ACxGb,IAAA,qBAAe"}
1
+ {"version":3,"file":"AnchorLink.js","names":[],"sources":["../src/components/AnchorLink/AnchorLink.tsx","../src/components/AnchorLink/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport { AnalyticsId } from '../../constants';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getColor } from '../../theme/currys';\nimport AsChildSlot from '../AsChildSlot';\nimport Icon, { IconSize } from '../Icon';\nimport ArrowUpRight from '../Icons/ArrowUpRight';\n\nimport AnchorLinkStyles from './styles.module.scss';\n\nexport type AnchorLinkTargets = '_self' | '_blank' | '_parent';\n\nexport type AnchorLinkTags = 'a' | 'button';\n\nexport type AnchorLinkOnClickEvent =\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.FormEvent<unknown>\n | React.KeyboardEvent<HTMLUListElement>\n | null;\n\nexport interface AnchorLinkProps {\n /** When true, onclick and keyboard events will be passed to the child. */\n asChild?: boolean;\n /** Sets the content of the <a> tag */\n children: React.ReactNode;\n /** URL to link to */\n href?: string;\n /** Gives a unique id to the anchor-link :) */\n id?: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the target type of the <a> tag. _blank adds an arrow icon at the end of the link */\n target?: AnchorLinkTargets;\n /** HTML markup for anchor link. Default: a */\n htmlMarkup?: AnchorLinkTags;\n /** Function that is called when clicked */\n onClick?: (e?: AnchorLinkOnClickEvent) => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref that is passed to the component */\n ref?: React.Ref<HTMLAnchorElement | HTMLButtonElement | null>;\n}\n\nconst AnchorLink: React.FC<AnchorLinkProps> = props => {\n const { asChild, id, href, children, className, target = '_self', htmlMarkup = 'a', onClick, testId, ref } = props;\n const external = target === '_blank';\n const { refObject, isHovered } = usePseudoClasses<HTMLButtonElement | HTMLAnchorElement>(\n ref as React.RefObject<HTMLButtonElement | HTMLAnchorElement>\n );\n const anchorClasses = classNames(AnchorLinkStyles.anchorlink, className);\n\n const commonProps = {\n id,\n ['data-testid']: testId,\n ['data-analyticsid']: AnalyticsId.AnchorLink,\n onClick,\n };\n\n const renderContent = (): React.ReactElement => (\n <>\n {children}\n {external && (\n <Icon\n className={AnchorLinkStyles.anchorlink__icon}\n svgIcon={ArrowUpRight}\n color={getColor('blueberry', 600)}\n hoverColor={getColor('blueberry', 700)}\n size={IconSize.XSmall}\n isHovered={isHovered}\n />\n )}\n </>\n );\n\n if (asChild) {\n return (\n <AsChildSlot content={<span className={anchorClasses} />} className={AnchorLinkStyles['anchorlink-wrapper']} elementRef={refObject}>\n {children}\n </AsChildSlot>\n );\n }\n\n if (htmlMarkup === 'a') {\n return (\n <a\n href={href}\n target={target}\n className={anchorClasses}\n rel={external ? 'noopener noreferrer' : undefined}\n ref={refObject as React.RefObject<HTMLAnchorElement>}\n {...commonProps}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n className={AnchorLinkStyles['anchorlink-wrapper']}\n ref={refObject as React.RefObject<HTMLButtonElement>}\n {...commonProps}\n >\n <span className={anchorClasses}>{renderContent()}</span>\n </button>\n );\n};\n\nexport default AnchorLink;\n","import AnchorLink from './AnchorLink';\nexport * from './AnchorLink';\nexport default AnchorLink;\n"],"mappings":";;;;;;;;;;AA4CA,IAAM,cAAwC,UAAS;CACrD,MAAM,EAAE,SAAS,IAAI,MAAM,UAAU,WAAW,SAAS,SAAS,aAAa,KAAK,SAAS,QAAQ,QAAQ;CAC7G,MAAM,WAAW,WAAW;CAC5B,MAAM,EAAE,WAAW,cAAc,iBAC/B,GACF;CACA,MAAM,gBAAgB,WAAW,iBAAiB,YAAY,SAAS;CAEvE,MAAM,cAAc;EAClB;GACC,gBAAgB;GAChB,qBAAqB,YAAY;EAClC;CACF;CAEA,MAAM,sBACJ,qBAAA,UAAA,EAAA,UAAA,CACG,UACA,YACC,oBAAC,cAAD;EACE,WAAW,iBAAiB;EAC5B,SAAS;EACT,OAAO,SAAS,aAAa,GAAG;EAChC,YAAY,SAAS,aAAa,GAAG;EACrC,MAAM,SAAS;EACJ;CACZ,CAAA,CAEH,EAAA,CAAA;CAGJ,IAAI,SACF,OACE,oBAAC,qBAAD;EAAa,SAAS,oBAAC,QAAD,EAAM,WAAW,cAAgB,CAAA;EAAG,WAAW,iBAAiB;EAAuB,YAAY;EACtH;CACU,CAAA;CAIjB,IAAI,eAAe,KACjB,OACE,oBAAC,KAAD;EACQ;EACE;EACR,WAAW;EACX,KAAK,WAAW,wBAAwB,KAAA;EACxC,KAAK;EACL,GAAI;YAEH,cAAc;CACd,CAAA;CAIP,OACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW,iBAAiB;EAC5B,KAAK;EACL,GAAI;YAEJ,oBAAC,QAAD;GAAM,WAAW;aAAgB,cAAc;EAAQ,CAAA;CACjD,CAAA;AAEZ;;;AC1GA,IAAA,qBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"AsChildSlot.js","names":[],"sources":["../src/components/AsChildSlot/AsChildSlot.tsx","../src/components/AsChildSlot/index.ts"],"sourcesContent":["import React from 'react';\n\nimport { mergeRefs } from '../../utils/refs';\n\nimport styles from './styles.module.scss';\n\nexport interface AsChildSlotHandle {\n /** Click the child’s DOM node */\n click: () => void;\n}\n\nexport interface AsChildSlotProps {\n /** Pass one element/component that we will map to a DOM element (<a>, <button>, React Router <Link>) */\n children?: React.ReactNode;\n /** Class names to apply to the visible element */\n className?: string;\n /** Content to render inside the visible element - For example the text and icons of the parent component that renders AsChildSlot */\n content?: React.ReactNode;\n /** Disabled state passed down (merged with child’s disabled/aria-disabled) */\n disabled?: boolean;\n /** Called before the child’s onClick when visible */\n onSelect?: (e: React.SyntheticEvent) => void;\n /** Optional states to apply to the DOM element */\n ariaCurrent?: 'page' | 'true';\n /** DOM ref for the element we end up rendering */\n elementRef?: React.Ref<HTMLElement>;\n /** Ref that is passed to the component */\n ref?: React.Ref<AsChildSlotHandle>;\n}\n\nconst isAriaDisabled = (v: unknown): boolean => v === true || v === 'true';\n\nexport const AsChildSlot: React.FC<AsChildSlotProps> = props => {\n const { children, className, content, disabled, onSelect, ariaCurrent, elementRef, ref } = props;\n const childElement = React.Children.toArray(children).filter(React.isValidElement)[0] as React.ReactElement | undefined;\n const nodeRef = React.useRef<HTMLElement | null>(null);\n const childPropsRef = (childElement as unknown as { props?: { ref?: React.Ref<HTMLElement> } })?.props?.ref;\n const mergedRef = mergeRefs<HTMLElement>([\n (node): void => {\n nodeRef.current = node;\n },\n childPropsRef,\n elementRef,\n ]);\n\n const childProps =\n (childElement?.props as Partial<React.DOMAttributes<HTMLElement>> &\n Partial<React.AnchorHTMLAttributes<HTMLElement>> &\n Partial<React.ButtonHTMLAttributes<HTMLElement>> & { disabled?: boolean; href?: unknown }) || {};\n const childDisabled = !!childProps.disabled || isAriaDisabled((childProps as React.AriaAttributes)['aria-disabled']);\n const isDisabled = !!disabled || childDisabled;\n\n // Exposes a callable click() to the parents.\n React.useImperativeHandle(\n ref,\n () => ({\n click: (): void => {\n if (isDisabled) return;\n nodeRef.current?.click();\n },\n }),\n [isDisabled]\n );\n\n if (!childElement) return null;\n\n // Actual user mouse interaction\n const childOnClick = childProps.onClick as React.MouseEventHandler<HTMLElement> | undefined;\n const wrappedOnClick: React.MouseEventHandler<HTMLElement> = e => {\n if (isDisabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onSelect?.(e);\n childOnClick?.(e);\n };\n\n // Actual user keyboard interaction\n const childOnKeyDown = childProps.onKeyDown as React.KeyboardEventHandler<HTMLElement> | undefined;\n const wrappedOnKeyDown: React.KeyboardEventHandler<HTMLElement> = e => {\n childOnKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === ' ' || e.key === 'Spacebar' || e.code === 'Space') {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n e.preventDefault();\n nodeRef.current?.click();\n }\n };\n\n const isButtonLike = typeof childProps.href === 'undefined';\n const elementWithChildren = childElement as React.ReactElement<{ children?: React.ReactNode }>;\n const wrappedChildren =\n content && React.isValidElement(content)\n ? React.cloneElement(content, undefined, elementWithChildren.props.children)\n : elementWithChildren.props.children;\n\n const nextProps: Record<string, unknown> = {\n ref: mergedRef,\n className: `${styles['as-child-reset']} ${className ?? ''}`,\n style: undefined,\n 'aria-disabled': isDisabled || undefined,\n 'aria-current': ariaCurrent,\n ...(isButtonLike && !('type' in childProps) ? { type: 'button' as const } : {}),\n onClick: wrappedOnClick,\n onKeyDown: wrappedOnKeyDown,\n children: wrappedChildren,\n };\n\n return React.cloneElement(childElement as React.ReactElement<Record<string, unknown>>, nextProps);\n};\n\nexport default AsChildSlot;\n","import AsChildSlot from './AsChildSlot';\nexport * from './AsChildSlot';\nexport default AsChildSlot;\n"],"mappings":";;;;AA8BA,IAAM,kBAAkB,MAAwB,MAAM,QAAQ,MAAM;AAEpE,IAAa,eAA0C,UAAS;CAC9D,MAAM,EAAE,UAAU,WAAW,SAAS,UAAU,UAAU,aAAa,YAAY,QAAQ;CAC3F,MAAM,eAAe,MAAM,SAAS,QAAQ,SAAS,CAAC,OAAO,MAAM,eAAe,CAAC;CACnF,MAAM,UAAU,MAAM,OAA2B,KAAK;CACtD,MAAM,gBAAiB,cAA0E,OAAO;CACxG,MAAM,YAAY,UAAuB;GACtC,SAAe;GACd,QAAQ,UAAU;;EAEpB;EACA;EACD,CAAC;CAEF,MAAM,aACH,cAAc,SAEiF,EAAE;CACpG,MAAM,gBAAgB,CAAC,CAAC,WAAW,YAAY,eAAgB,WAAoC,iBAAiB;CACpH,MAAM,aAAa,CAAC,CAAC,YAAY;CAGjC,MAAM,oBACJ,YACO,EACL,aAAmB;EACjB,IAAI,YAAY;EAChB,QAAQ,SAAS,OAAO;IAE3B,GACD,CAAC,WAAW,CACb;CAED,IAAI,CAAC,cAAc,OAAO;CAG1B,MAAM,eAAe,WAAW;CAChC,MAAM,kBAAuD,MAAK;EAChE,IAAI,YAAY;GACd,EAAE,gBAAgB;GAClB,EAAE,iBAAiB;GACnB;;EAEF,WAAW,EAAE;EACb,eAAe,EAAE;;CAInB,MAAM,iBAAiB,WAAW;CAClC,MAAM,oBAA4D,MAAK;EACrE,iBAAiB,EAAE;EACnB,IAAI,EAAE,kBAAkB;EACxB,IAAI,EAAE,QAAQ,OAAO,EAAE,QAAQ,cAAc,EAAE,SAAS,SAAS;GAC/D,IAAI,YAAY;IACd,EAAE,gBAAgB;IAClB;;GAEF,EAAE,gBAAgB;GAClB,QAAQ,SAAS,OAAO;;;CAI5B,MAAM,eAAe,OAAO,WAAW,SAAS;CAChD,MAAM,sBAAsB;CAC5B,MAAM,kBACJ,WAAW,MAAM,eAAe,QAAQ,GACpC,MAAM,aAAa,SAAS,KAAA,GAAW,oBAAoB,MAAM,SAAS,GAC1E,oBAAoB,MAAM;CAEhC,MAAM,YAAqC;EACzC,KAAK;EACL,WAAW,GAAG,OAAO,kBAAkB,GAAG,aAAa;EACvD,OAAO,KAAA;EACP,iBAAiB,cAAc,KAAA;EAC/B,gBAAgB;EAChB,GAAI,gBAAgB,EAAE,UAAU,cAAc,EAAE,MAAM,UAAmB,GAAG,EAAE;EAC9E,SAAS;EACT,WAAW;EACX,UAAU;EACX;CAED,OAAO,MAAM,aAAa,cAA6D,UAAU;;;;AC9GnG,IAAA,sBAAe"}
1
+ {"version":3,"file":"AsChildSlot.js","names":[],"sources":["../src/components/AsChildSlot/AsChildSlot.tsx","../src/components/AsChildSlot/index.ts"],"sourcesContent":["import React from 'react';\n\nimport { mergeRefs } from '../../utils/refs';\n\nimport styles from './styles.module.scss';\n\nexport interface AsChildSlotHandle {\n /** Click the child’s DOM node */\n click: () => void;\n}\n\nexport interface AsChildSlotProps {\n /** Pass one element/component that we will map to a DOM element (<a>, <button>, React Router <Link>) */\n children?: React.ReactNode;\n /** Class names to apply to the visible element */\n className?: string;\n /** Content to render inside the visible element - For example the text and icons of the parent component that renders AsChildSlot */\n content?: React.ReactNode;\n /** Disabled state passed down (merged with child’s disabled/aria-disabled) */\n disabled?: boolean;\n /** Called before the child’s onClick when visible */\n onSelect?: (e: React.SyntheticEvent) => void;\n /** Optional states to apply to the DOM element */\n ariaCurrent?: 'page' | 'true';\n /** DOM ref for the element we end up rendering */\n elementRef?: React.Ref<HTMLElement>;\n /** Ref that is passed to the component */\n ref?: React.Ref<AsChildSlotHandle>;\n}\n\nconst isAriaDisabled = (v: unknown): boolean => v === true || v === 'true';\n\nexport const AsChildSlot: React.FC<AsChildSlotProps> = props => {\n const { children, className, content, disabled, onSelect, ariaCurrent, elementRef, ref } = props;\n const childElement = React.Children.toArray(children).filter(React.isValidElement)[0] as React.ReactElement | undefined;\n const nodeRef = React.useRef<HTMLElement | null>(null);\n const childPropsRef = (childElement as unknown as { props?: { ref?: React.Ref<HTMLElement> } })?.props?.ref;\n const mergedRef = mergeRefs<HTMLElement>([\n (node): void => {\n nodeRef.current = node;\n },\n childPropsRef,\n elementRef,\n ]);\n\n const childProps =\n (childElement?.props as Partial<React.DOMAttributes<HTMLElement>> &\n Partial<React.AnchorHTMLAttributes<HTMLElement>> &\n Partial<React.ButtonHTMLAttributes<HTMLElement>> & { disabled?: boolean; href?: unknown }) || {};\n const childDisabled = !!childProps.disabled || isAriaDisabled((childProps as React.AriaAttributes)['aria-disabled']);\n const isDisabled = !!disabled || childDisabled;\n\n // Exposes a callable click() to the parents.\n React.useImperativeHandle(\n ref,\n () => ({\n click: (): void => {\n if (isDisabled) return;\n nodeRef.current?.click();\n },\n }),\n [isDisabled]\n );\n\n if (!childElement) return null;\n\n // Actual user mouse interaction\n const childOnClick = childProps.onClick as React.MouseEventHandler<HTMLElement> | undefined;\n const wrappedOnClick: React.MouseEventHandler<HTMLElement> = e => {\n if (isDisabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onSelect?.(e);\n childOnClick?.(e);\n };\n\n // Actual user keyboard interaction\n const childOnKeyDown = childProps.onKeyDown as React.KeyboardEventHandler<HTMLElement> | undefined;\n const wrappedOnKeyDown: React.KeyboardEventHandler<HTMLElement> = e => {\n childOnKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === ' ' || e.key === 'Spacebar' || e.code === 'Space') {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n e.preventDefault();\n nodeRef.current?.click();\n }\n };\n\n const isButtonLike = typeof childProps.href === 'undefined';\n const elementWithChildren = childElement as React.ReactElement<{ children?: React.ReactNode }>;\n const wrappedChildren =\n content && React.isValidElement(content)\n ? React.cloneElement(content, undefined, elementWithChildren.props.children)\n : elementWithChildren.props.children;\n\n const nextProps: Record<string, unknown> = {\n ref: mergedRef,\n className: `${styles['as-child-reset']} ${className ?? ''}`,\n style: undefined,\n 'aria-disabled': isDisabled || undefined,\n 'aria-current': ariaCurrent,\n ...(isButtonLike && !('type' in childProps) ? { type: 'button' as const } : {}),\n onClick: wrappedOnClick,\n onKeyDown: wrappedOnKeyDown,\n children: wrappedChildren,\n };\n\n return React.cloneElement(childElement as React.ReactElement<Record<string, unknown>>, nextProps);\n};\n\nexport default AsChildSlot;\n","import AsChildSlot from './AsChildSlot';\nexport * from './AsChildSlot';\nexport default AsChildSlot;\n"],"mappings":";;;;AA8BA,IAAM,kBAAkB,MAAwB,MAAM,QAAQ,MAAM;AAEpE,IAAa,eAA0C,UAAS;CAC9D,MAAM,EAAE,UAAU,WAAW,SAAS,UAAU,UAAU,aAAa,YAAY,QAAQ;CAC3F,MAAM,eAAe,MAAM,SAAS,QAAQ,QAAQ,EAAE,OAAO,MAAM,cAAc,EAAE;CACnF,MAAM,UAAU,MAAM,OAA2B,IAAI;CACrD,MAAM,gBAAiB,cAA0E,OAAO;CACxG,MAAM,YAAY,UAAuB;GACtC,SAAe;GACd,QAAQ,UAAU;EACpB;EACA;EACA;CACF,CAAC;CAED,MAAM,aACH,cAAc,SAEiF,CAAC;CACnG,MAAM,gBAAgB,CAAC,CAAC,WAAW,YAAY,eAAgB,WAAoC,gBAAgB;CACnH,MAAM,aAAa,CAAC,CAAC,YAAY;CAGjC,MAAM,oBACJ,YACO,EACL,aAAmB;EACjB,IAAI,YAAY;EAChB,QAAQ,SAAS,MAAM;CACzB,EACF,IACA,CAAC,UAAU,CACb;CAEA,IAAI,CAAC,cAAc,OAAO;CAG1B,MAAM,eAAe,WAAW;CAChC,MAAM,kBAAuD,MAAK;EAChE,IAAI,YAAY;GACd,EAAE,eAAe;GACjB,EAAE,gBAAgB;GAClB;EACF;EACA,WAAW,CAAC;EACZ,eAAe,CAAC;CAClB;CAGA,MAAM,iBAAiB,WAAW;CAClC,MAAM,oBAA4D,MAAK;EACrE,iBAAiB,CAAC;EAClB,IAAI,EAAE,kBAAkB;EACxB,IAAI,EAAE,QAAQ,OAAO,EAAE,QAAQ,cAAc,EAAE,SAAS,SAAS;GAC/D,IAAI,YAAY;IACd,EAAE,eAAe;IACjB;GACF;GACA,EAAE,eAAe;GACjB,QAAQ,SAAS,MAAM;EACzB;CACF;CAEA,MAAM,eAAe,OAAO,WAAW,SAAS;CAChD,MAAM,sBAAsB;CAC5B,MAAM,kBACJ,WAAW,MAAM,eAAe,OAAO,IACnC,MAAM,aAAa,SAAS,KAAA,GAAW,oBAAoB,MAAM,QAAQ,IACzE,oBAAoB,MAAM;CAEhC,MAAM,YAAqC;EACzC,KAAK;EACL,WAAW,GAAG,OAAO,kBAAkB,GAAG,aAAa;EACvD,OAAO,KAAA;EACP,iBAAiB,cAAc,KAAA;EAC/B,gBAAgB;EAChB,GAAI,gBAAgB,EAAE,UAAU,cAAc,EAAE,MAAM,SAAkB,IAAI,CAAC;EAC7E,SAAS;EACT,WAAW;EACX,UAAU;CACZ;CAEA,OAAO,MAAM,aAAa,cAA6D,SAAS;AAClG;;;AC/GA,IAAA,sBAAe"}
package/lib/Avatar.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","names":[],"sources":["../src/components/Avatar/constants.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/index.ts"],"sourcesContent":["export enum AvatarSize {\n xsmall = 'xsmall',\n small = 'small',\n}\n","import cn from 'classnames';\n\nimport { AvatarSize } from './constants';\nimport { AnalyticsId } from '../../constants';\nimport { palette } from '../../theme/palette';\nimport Icon, { IconSize } from '../Icon';\nimport Check from '../Icons/Check';\n\nimport styles from './styles.module.scss';\n\nexport interface AvatarProps {\n /** Name to display in the avatar. Will be truncated to the first two characters. */\n children: string;\n /** Displays a check icon to indicated the selected state. */\n selected?: boolean;\n /** Sets blue or black color on avatar. */\n color?: 'blueberry' | 'black';\n /** Square or circle variant of avatar. The circle should only be used for representation of someone else. NB: This is temporary and will be renamed in v10 */\n variant?: 'square' | 'circle';\n /** Avatar size. Default: small */\n size?: keyof typeof AvatarSize;\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}\nexport type AvatarType = typeof Avatar;\nconst Avatar: React.FC<AvatarProps> = (props: AvatarProps) => {\n const {\n children,\n className = '',\n selected = false,\n color = 'blueberry',\n variant = 'square',\n size = AvatarSize.small,\n testId,\n ref,\n } = props;\n const truncatedName = children.charAt(0).toLocaleUpperCase() + children.substring(1, 2);\n return (\n <span\n className={cn(\n styles.avatar,\n selected && styles['avatar--selected'],\n color === 'black' && styles['avatar--black'],\n variant === 'circle' && styles['avatar--circle'],\n size === AvatarSize.xsmall && styles['avatar--xsmall'],\n size === AvatarSize.small && styles['avatar--small'],\n className\n )}\n ref={ref}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Avatar}\n >\n {selected ? (\n <Icon svgIcon={Check} size={IconSize.Small} color={color === 'black' ? palette.neutral900 : palette.blueberry600} />\n ) : (\n truncatedName\n )}\n </span>\n );\n};\n\nexport default Avatar;\n","import Avatar from './Avatar';\nexport { AvatarSize } from './constants';\nexport * from './Avatar';\nexport default Avatar;\n"],"mappings":";;;;;;;;AAAA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,YAAS;CACT,WAAA,WAAQ;;KACT;;;AC0BD,IAAM,UAAiC,UAAuB;CAC5D,MAAM,EACJ,UACA,YAAY,IACZ,WAAW,OACX,QAAQ,aACR,UAAU,UACV,OAAO,WAAW,OAClB,QACA,QACE;CACJ,MAAM,gBAAgB,SAAS,OAAO,EAAE,CAAC,mBAAmB,GAAG,SAAS,UAAU,GAAG,EAAE;CACvF,OACE,oBAAC,QAAD;EACE,WAAW,WACT,OAAO,QACP,YAAY,OAAO,qBACnB,UAAU,WAAW,OAAO,kBAC5B,YAAY,YAAY,OAAO,mBAC/B,SAAS,WAAW,UAAU,OAAO,mBACrC,SAAS,WAAW,SAAS,OAAO,kBACpC,UACD;EACI;EACL,eAAa;EACb,oBAAkB,YAAY;YAE7B,WACC,oBAAC,cAAD;GAAM,SAAS;GAAO,MAAM,SAAS;GAAO,OAAO,UAAU,UAAU,QAAQ,aAAa,QAAQ;GAAgB,CAAA,GAEpH;EAEG,CAAA;;;;AC1DX,IAAA,iBAAe"}
1
+ {"version":3,"file":"Avatar.js","names":[],"sources":["../src/components/Avatar/constants.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/index.ts"],"sourcesContent":["export enum AvatarSize {\n xsmall = 'xsmall',\n small = 'small',\n}\n","import cn from 'classnames';\n\nimport { AvatarSize } from './constants';\nimport { AnalyticsId } from '../../constants';\nimport { palette } from '../../theme/palette';\nimport Icon, { IconSize } from '../Icon';\nimport Check from '../Icons/Check';\n\nimport styles from './styles.module.scss';\n\nexport interface AvatarProps {\n /** Name to display in the avatar. Will be truncated to the first two characters. */\n children: string;\n /** Displays a check icon to indicated the selected state. */\n selected?: boolean;\n /** Sets blue or black color on avatar. */\n color?: 'blueberry' | 'black';\n /** Square or circle variant of avatar. The circle should only be used for representation of someone else. NB: This is temporary and will be renamed in v10 */\n variant?: 'square' | 'circle';\n /** Avatar size. Default: small */\n size?: keyof typeof AvatarSize;\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}\nexport type AvatarType = typeof Avatar;\nconst Avatar: React.FC<AvatarProps> = (props: AvatarProps) => {\n const {\n children,\n className = '',\n selected = false,\n color = 'blueberry',\n variant = 'square',\n size = AvatarSize.small,\n testId,\n ref,\n } = props;\n const truncatedName = children.charAt(0).toLocaleUpperCase() + children.substring(1, 2);\n return (\n <span\n className={cn(\n styles.avatar,\n selected && styles['avatar--selected'],\n color === 'black' && styles['avatar--black'],\n variant === 'circle' && styles['avatar--circle'],\n size === AvatarSize.xsmall && styles['avatar--xsmall'],\n size === AvatarSize.small && styles['avatar--small'],\n className\n )}\n ref={ref}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Avatar}\n >\n {selected ? (\n <Icon svgIcon={Check} size={IconSize.Small} color={color === 'black' ? palette.neutral900 : palette.blueberry600} />\n ) : (\n truncatedName\n )}\n </span>\n );\n};\n\nexport default Avatar;\n","import Avatar from './Avatar';\nexport { AvatarSize } from './constants';\nexport * from './Avatar';\nexport default Avatar;\n"],"mappings":";;;;;;;;AAAA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,YAAA;CACA,WAAA,WAAA;;AACF,EAAA,CAAA,CAAA;;;AC0BA,IAAM,UAAiC,UAAuB;CAC5D,MAAM,EACJ,UACA,YAAY,IACZ,WAAW,OACX,QAAQ,aACR,UAAU,UACV,OAAO,WAAW,OAClB,QACA,QACE;CACJ,MAAM,gBAAgB,SAAS,OAAO,CAAC,EAAE,kBAAkB,IAAI,SAAS,UAAU,GAAG,CAAC;CACtF,OACE,oBAAC,QAAD;EACE,WAAW,WACT,OAAO,QACP,YAAY,OAAO,qBACnB,UAAU,WAAW,OAAO,kBAC5B,YAAY,YAAY,OAAO,mBAC/B,SAAS,WAAW,UAAU,OAAO,mBACrC,SAAS,WAAW,SAAS,OAAO,kBACpC,SACF;EACK;EACL,eAAa;EACb,oBAAkB,YAAY;YAE7B,WACC,oBAAC,cAAD;GAAM,SAAS;GAAO,MAAM,SAAS;GAAO,OAAO,UAAU,UAAU,QAAQ,aAAa,QAAQ;EAAe,CAAA,IAEnH;CAEE,CAAA;AAEV;;;AC5DA,IAAA,iBAAe"}
package/lib/Badge.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","names":[],"sources":["../src/components/Badge/Badge.tsx","../src/components/Badge/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { BadgeNotificationVariant } from './NotificationBadge';\nimport type { PaletteNames } from '../../theme/palette';\n\nimport NotificationBadge from './NotificationBadge';\nimport { AnalyticsId, IconSize } from '../../constants';\n\nimport badgeStyles from './styles.module.scss';\n\nexport type BadgeColors = Extract<PaletteNames, 'blueberry' | 'cherry' | 'neutral'>;\nexport type BadgeChildren = string | number;\nexport type BadgeVariant = 'string' | 'notification';\n\nexport interface BadgeProps {\n /** Sets the content of the badge. */\n children?: BadgeChildren;\n /** Adds custom classes to the element. */\n className?: string;\n /** Changes the badge background color. */\n color?: BadgeColors;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Changes the type of the badge. Default: string */\n type?: BadgeVariant;\n /** Type of notification badge. Only works if type is 'notification'. */\n notificationVariant?: BadgeNotificationVariant;\n /** Ref passed to the root element */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nexport type BadgeType = typeof Badge;\nconst Badge: React.FC<BadgeProps> = (props: BadgeProps) => {\n const { children, className = '', color = 'blueberry', testId, type = 'string', notificationVariant = 'info', ref } = props;\n const badgeClasses = classNames(\n badgeStyles.badge,\n {\n [badgeStyles['badge--blueberry']]: color === 'blueberry',\n [badgeStyles['badge--cherry']]: color === 'cherry',\n [badgeStyles['badge--neutral']]: color === 'neutral',\n },\n className\n );\n\n if (type === 'notification' && notificationVariant !== undefined) {\n return (\n <NotificationBadge\n variant={notificationVariant}\n size={IconSize.XSmall}\n className={className}\n testId={testId}\n data-analyticsid={AnalyticsId.Badge}\n />\n );\n }\n\n return (\n <span className={badgeClasses} ref={ref} data-testid={testId} data-analyticsid={AnalyticsId.Badge}>\n {children}\n </span>\n );\n};\n\nexport default Badge;\n","import Badge from './Badge';\nexport * from './Badge';\nexport default Badge;\n"],"mappings":";;;;;;AAgCA,IAAM,SAA+B,UAAsB;CACzD,MAAM,EAAE,UAAU,YAAY,IAAI,QAAQ,aAAa,QAAQ,OAAO,UAAU,sBAAsB,QAAQ,QAAQ;CACtH,MAAM,eAAe,WACnB,YAAY,OACZ;GACG,YAAY,sBAAsB,UAAU;GAC5C,YAAY,mBAAmB,UAAU;GACzC,YAAY,oBAAoB,UAAU;EAC5C,EACD,UACD;CAED,IAAI,SAAS,kBAAkB,wBAAwB,KAAA,GACrD,OACE,oBAAC,mBAAD;EACE,SAAS;EACT,MAAM,SAAS;EACJ;EACH;EACR,oBAAkB,YAAY;EAC9B,CAAA;CAIN,OACE,oBAAC,QAAD;EAAM,WAAW;EAAmB;EAAK,eAAa;EAAQ,oBAAkB,YAAY;EACzF;EACI,CAAA;;;;ACzDX,IAAA,gBAAe"}
1
+ {"version":3,"file":"Badge.js","names":[],"sources":["../src/components/Badge/Badge.tsx","../src/components/Badge/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { BadgeNotificationVariant } from './NotificationBadge';\nimport type { PaletteNames } from '../../theme/palette';\n\nimport NotificationBadge from './NotificationBadge';\nimport { AnalyticsId, IconSize } from '../../constants';\n\nimport badgeStyles from './styles.module.scss';\n\nexport type BadgeColors = Extract<PaletteNames, 'blueberry' | 'cherry' | 'neutral'>;\nexport type BadgeChildren = string | number;\nexport type BadgeVariant = 'string' | 'notification';\n\nexport interface BadgeProps {\n /** Sets the content of the badge. */\n children?: BadgeChildren;\n /** Adds custom classes to the element. */\n className?: string;\n /** Changes the badge background color. */\n color?: BadgeColors;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Changes the type of the badge. Default: string */\n type?: BadgeVariant;\n /** Type of notification badge. Only works if type is 'notification'. */\n notificationVariant?: BadgeNotificationVariant;\n /** Ref passed to the root element */\n ref?: React.Ref<HTMLElement | null>;\n}\n\nexport type BadgeType = typeof Badge;\nconst Badge: React.FC<BadgeProps> = (props: BadgeProps) => {\n const { children, className = '', color = 'blueberry', testId, type = 'string', notificationVariant = 'info', ref } = props;\n const badgeClasses = classNames(\n badgeStyles.badge,\n {\n [badgeStyles['badge--blueberry']]: color === 'blueberry',\n [badgeStyles['badge--cherry']]: color === 'cherry',\n [badgeStyles['badge--neutral']]: color === 'neutral',\n },\n className\n );\n\n if (type === 'notification' && notificationVariant !== undefined) {\n return (\n <NotificationBadge\n variant={notificationVariant}\n size={IconSize.XSmall}\n className={className}\n testId={testId}\n data-analyticsid={AnalyticsId.Badge}\n />\n );\n }\n\n return (\n <span className={badgeClasses} ref={ref} data-testid={testId} data-analyticsid={AnalyticsId.Badge}>\n {children}\n </span>\n );\n};\n\nexport default Badge;\n","import Badge from './Badge';\nexport * from './Badge';\nexport default Badge;\n"],"mappings":";;;;;;AAgCA,IAAM,SAA+B,UAAsB;CACzD,MAAM,EAAE,UAAU,YAAY,IAAI,QAAQ,aAAa,QAAQ,OAAO,UAAU,sBAAsB,QAAQ,QAAQ;CACtH,MAAM,eAAe,WACnB,YAAY,OACZ;GACG,YAAY,sBAAsB,UAAU;GAC5C,YAAY,mBAAmB,UAAU;GACzC,YAAY,oBAAoB,UAAU;CAC7C,GACA,SACF;CAEA,IAAI,SAAS,kBAAkB,wBAAwB,KAAA,GACrD,OACE,oBAAC,mBAAD;EACE,SAAS;EACT,MAAM,SAAS;EACJ;EACH;EACR,oBAAkB,YAAY;CAC/B,CAAA;CAIL,OACE,oBAAC,QAAD;EAAM,WAAW;EAAmB;EAAK,eAAa;EAAQ,oBAAkB,YAAY;EACzF;CACG,CAAA;AAEV;;;AC3DA,IAAA,gBAAe"}
package/lib/Button.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":[],"sources":["../src/components/Button/Button.tsx","../src/components/Button/index.ts"],"sourcesContent":["import React, { type AriaAttributes, useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport Icon, { IconSize } from './../Icon';\nimport { type HTMLButtonProps, type HTMLAnchorProps, AnalyticsId } from '../../constants';\nimport { type BaseIconElement, useIcons } from '../../hooks/useIcons';\nimport { useIsMobileBreakpoint } from '../../hooks/useIsMobileBreakpoint';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getColor } from '../../theme/currys/color';\nimport { isTest, isProd } from '../../utils/environment';\nimport ArrowRight from '../Icons/ArrowRight';\n\nimport buttonStyles from './styles.module.scss';\n\nexport type ButtonConcept = 'normal' | 'destructive';\nexport type ButtonVariant = 'fill' | 'outline' | 'borderless';\nexport type ButtonSize = 'medium' | 'large';\nexport type ButtonOnColor = 'onlight' | 'ondark';\nexport type ButtonTags = 'button' | 'a';\nexport type ButtonArrows = 'icon' | 'accessibility-character';\nexport type ButtonTextPosition = 'left' | 'centered';\n\nexport interface ButtonProps extends Omit<HTMLButtonProps, 'onClick' | 'type'>, Omit<HTMLAnchorProps, 'onClick'>, AriaAttributes {\n /** Sets the aria-label of the button, use when the button only includes an icon */\n ariaLabel?: string;\n /** Gives a unique id to the button */\n id?: string;\n /** Sets the content of the button. */\n children: React.ReactNode;\n /** Adds custom classes to the wrapper element. */\n wrapperClassName?: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Enables an arrow icon to the right inside the button (Not available in borderless variant) */\n arrow?: ButtonArrows;\n /** Changes the intent of the button. Mostly changes the color profile. */\n concept?: ButtonConcept;\n /** Disables text wrapping and enables ellipsis. */\n ellipsis?: boolean;\n /** Makes the button scale to full width of its parent element. */\n fluid?: boolean;\n /** Changes the underlying element of the button. */\n htmlMarkup?: ButtonTags;\n /** Changes the button colors for different backgrounds. */\n onColor?: ButtonOnColor;\n /** Function that is called when the Button loses focus */\n onBlur?: () => void;\n /** Function that is called when clicked */\n onClick?: (\n e?: React.MouseEvent<HTMLElement, MouseEvent> | React.FormEvent<unknown> | React.KeyboardEvent<HTMLUListElement> | null\n ) => void;\n /** Changes the button colors for different backgrounds. (Large not available in borderless variant) */\n size?: ButtonSize;\n /** Changes the visual representation of the button. */\n variant?: ButtonVariant;\n /** Specifies the focus order relative to the other buttons or controls on the page */\n tabIndex?: number;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Adds custom classes to the text */\n textClassName?: string;\n /** Sets the position of the text in the button - only applies when button is fluid */\n textPosition?: ButtonTextPosition;\n /** Button type. Default: button */\n type?: React.ButtonHTMLAttributes<HTMLButtonElement>['type'];\n /** Ref that is passed to the component */\n ref?: React.RefObject<HTMLButtonElement | HTMLAnchorElement | null>;\n}\n\nconst getIconColor = (\n fill: boolean,\n borderless: boolean,\n disabled: boolean,\n concept: ButtonConcept,\n ondark: boolean,\n mobile: boolean\n): string => {\n if (mobile && disabled) {\n return !ondark || fill ? getColor('neutral', !borderless ? 700 : 500) : getColor('white');\n }\n if (disabled) {\n return !ondark || fill ? getColor('neutral', 500) : `${getColor('white')}b3`;\n }\n if ((fill && !ondark) || (!fill && ondark)) {\n return 'white';\n }\n\n return concept === 'normal' ? getColor('blueberry', 600) : getColor('cherry', 500);\n};\nconst getLargeIconSize = (large: boolean, mobile: boolean): IconSize => {\n if (mobile && large) return IconSize.Small;\n if (large) return IconSize.Medium;\n return IconSize.XSmall;\n};\n\nconst checkOnlyIconAria = (onlyIcon: boolean, ariaLabel: string | undefined, devEnv: boolean): void => {\n if (devEnv && onlyIcon && (ariaLabel === undefined || ariaLabel === '')) {\n throw new Error('Fyll inn ariaLabel prop på Button uten tekst for å opprettholde UU krav');\n }\n};\n\nconst Button: React.FC<ButtonProps> = props => {\n const {\n ariaLabel,\n id,\n children,\n wrapperClassName,\n className,\n arrow,\n concept = 'normal',\n disabled = false,\n ellipsis = false,\n fluid = false,\n htmlMarkup = 'button',\n onColor = 'onlight',\n onBlur,\n onClick,\n size = 'medium',\n variant = 'fill',\n href,\n tabIndex,\n testId,\n target,\n type = 'button',\n textClassName,\n textPosition = 'left',\n ref,\n ...restProps\n } = props;\n const [leftIcon, rightIcon, restChildren] = useIcons(React.Children.toArray(children));\n const { refObject, isHovered } = usePseudoClasses<HTMLButtonElement | HTMLAnchorElement | null>(ref);\n const buttonContentRef = useRef<HTMLDivElement>(null);\n const onlyIcon = !!(leftIcon || rightIcon) && !restChildren;\n const bothIcons = leftIcon && (rightIcon || arrow) && !onlyIcon;\n const onDark = onColor === 'ondark';\n const isMobile = useIsMobileBreakpoint();\n const destructive = concept === 'destructive' && !disabled;\n const outlineVariant = variant === 'outline';\n const borderlessVariant = variant === 'borderless';\n const iconColor = getIconColor(variant === 'fill', borderlessVariant, disabled, concept, onDark, isMobile);\n const hasArrow = arrow === 'icon' && !borderlessVariant;\n const large = size === 'large' && !destructive && !borderlessVariant;\n const hasUURightArrow = arrow === 'accessibility-character' && !fluid && !leftIcon && !rightIcon && !hasArrow && borderlessVariant;\n const rest = { ...restProps };\n\n const buttonWrapperClasses = classNames(\n buttonStyles['button-wrapper'],\n { [buttonStyles['button-wrapper--fluid']]: fluid || ellipsis },\n wrapperClassName\n );\n const buttonClasses = classNames(\n buttonStyles.button,\n {\n [buttonStyles['button--destructive']]: destructive,\n [buttonStyles['button--normal']]: !large,\n [buttonStyles['button--large']]: large,\n [buttonStyles['button--outline']]: outlineVariant,\n [buttonStyles['button--borderless']]: borderlessVariant,\n [buttonStyles['button--left-icon']]: leftIcon && !onlyIcon,\n [buttonStyles['button--right-icon']]: rightIcon && !onlyIcon,\n [buttonStyles['button--both-icons']]: bothIcons,\n [buttonStyles['button--only-icon']]: onlyIcon,\n [buttonStyles['button--arrow']]: hasArrow,\n [buttonStyles['button--on-dark']]: onDark,\n },\n className\n );\n const buttonTextClasses = classNames(\n buttonStyles['button__text'],\n {\n [buttonStyles['button__text--ellipsis']]: ellipsis,\n [buttonStyles['button__text--centered']]: fluid && textPosition === 'centered',\n },\n textClassName\n );\n const diagonalClasses = classNames(buttonStyles['diagonal'], {\n [buttonStyles['diagonal--on-dark']]: onDark,\n });\n\n useEffect(() => {\n checkOnlyIconAria(onlyIcon, ariaLabel, !isTest() && !isProd());\n }, []);\n\n const renderIcon = (iconElement: BaseIconElement | null, iconSize: number, iconClassName?: string): BaseIconElement | null => {\n return iconElement\n ? React.cloneElement(iconElement, {\n size: iconSize,\n color: iconElement?.props.color && !disabled ? iconElement.props.color : iconColor,\n isHovered: iconElement.props.isHovered === undefined ? !disabled && isHovered : iconElement.props.isHovered,\n className: iconClassName,\n })\n : null;\n };\n\n const renderButtonContent = (): React.ReactNode => {\n return (\n <span className={buttonTextClasses} ref={buttonContentRef}>\n {disabled && borderlessVariant && (\n <span className={diagonalClasses}>\n <span className={buttonStyles['diagonal__line']} />\n </span>\n )}\n <span>{onlyIcon ? ariaLabel : restChildren}</span>\n </span>\n );\n };\n\n const renderbuttonContentWrapper = (): React.ReactNode => (\n <span className={buttonClasses}>\n {renderIcon(leftIcon, getLargeIconSize(large, isMobile), !onlyIcon ? buttonStyles['button__left-icon'] : undefined)}\n {renderButtonContent()}\n {hasArrow\n ? renderIcon(\n <Icon svgIcon={ArrowRight} />,\n getLargeIconSize(large, isMobile),\n classNames(buttonStyles['button__arrow'], { [buttonStyles['button__arrow--both-icons']]: bothIcons })\n )\n : renderIcon(rightIcon, getLargeIconSize(large, isMobile), buttonStyles['button__right-icon'])}\n {hasUURightArrow && (\n <span style={{ color: iconColor }} className={buttonStyles['button__right-unicode-arrow']} aria-hidden>\n {' →'}\n </span>\n )}\n </span>\n );\n\n return (\n <>\n {htmlMarkup === 'button' && (\n <button\n id={id}\n onBlur={onBlur}\n onClick={onClick}\n disabled={disabled}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Button}\n className={buttonWrapperClasses}\n ref={refObject as React.RefObject<HTMLButtonElement>}\n tabIndex={tabIndex}\n type={type}\n {...rest}\n >\n {renderbuttonContentWrapper()}\n </button>\n )}\n {htmlMarkup === 'a' && (\n <a\n id={id}\n onBlur={onBlur}\n onClick={onClick}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Button}\n className={buttonWrapperClasses}\n href={href}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : props.rel}\n ref={refObject as React.RefObject<HTMLAnchorElement>}\n tabIndex={tabIndex}\n {...restProps}\n >\n {renderbuttonContentWrapper()}\n </a>\n )}\n </>\n );\n};\n\nexport default Button;\n","import Button from './Button';\nexport * from './Button';\nexport default Button;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":[],"sources":["../src/components/Button/Button.tsx","../src/components/Button/index.ts"],"sourcesContent":["import React, { type AriaAttributes, useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport Icon, { IconSize } from './../Icon';\nimport { type HTMLButtonProps, type HTMLAnchorProps, AnalyticsId } from '../../constants';\nimport { type BaseIconElement, useIcons } from '../../hooks/useIcons';\nimport { useIsMobileBreakpoint } from '../../hooks/useIsMobileBreakpoint';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getColor } from '../../theme/currys/color';\nimport { isTest, isProd } from '../../utils/environment';\nimport ArrowRight from '../Icons/ArrowRight';\n\nimport buttonStyles from './styles.module.scss';\n\nexport type ButtonConcept = 'normal' | 'destructive';\nexport type ButtonVariant = 'fill' | 'outline' | 'borderless';\nexport type ButtonSize = 'medium' | 'large';\nexport type ButtonOnColor = 'onlight' | 'ondark';\nexport type ButtonTags = 'button' | 'a';\nexport type ButtonArrows = 'icon' | 'accessibility-character';\nexport type ButtonTextPosition = 'left' | 'centered';\n\nexport interface ButtonProps extends Omit<HTMLButtonProps, 'onClick' | 'type'>, Omit<HTMLAnchorProps, 'onClick'>, AriaAttributes {\n /** Sets the aria-label of the button, use when the button only includes an icon */\n ariaLabel?: string;\n /** Gives a unique id to the button */\n id?: string;\n /** Sets the content of the button. */\n children: React.ReactNode;\n /** Adds custom classes to the wrapper element. */\n wrapperClassName?: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Enables an arrow icon to the right inside the button (Not available in borderless variant) */\n arrow?: ButtonArrows;\n /** Changes the intent of the button. Mostly changes the color profile. */\n concept?: ButtonConcept;\n /** Disables text wrapping and enables ellipsis. */\n ellipsis?: boolean;\n /** Makes the button scale to full width of its parent element. */\n fluid?: boolean;\n /** Changes the underlying element of the button. */\n htmlMarkup?: ButtonTags;\n /** Changes the button colors for different backgrounds. */\n onColor?: ButtonOnColor;\n /** Function that is called when the Button loses focus */\n onBlur?: () => void;\n /** Function that is called when clicked */\n onClick?: (\n e?: React.MouseEvent<HTMLElement, MouseEvent> | React.FormEvent<unknown> | React.KeyboardEvent<HTMLUListElement> | null\n ) => void;\n /** Changes the button colors for different backgrounds. (Large not available in borderless variant) */\n size?: ButtonSize;\n /** Changes the visual representation of the button. */\n variant?: ButtonVariant;\n /** Specifies the focus order relative to the other buttons or controls on the page */\n tabIndex?: number;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Adds custom classes to the text */\n textClassName?: string;\n /** Sets the position of the text in the button - only applies when button is fluid */\n textPosition?: ButtonTextPosition;\n /** Button type. Default: button */\n type?: React.ButtonHTMLAttributes<HTMLButtonElement>['type'];\n /** Ref that is passed to the component */\n ref?: React.RefObject<HTMLButtonElement | HTMLAnchorElement | null>;\n}\n\nconst getIconColor = (\n fill: boolean,\n borderless: boolean,\n disabled: boolean,\n concept: ButtonConcept,\n ondark: boolean,\n mobile: boolean\n): string => {\n if (mobile && disabled) {\n return !ondark || fill ? getColor('neutral', !borderless ? 700 : 500) : getColor('white');\n }\n if (disabled) {\n return !ondark || fill ? getColor('neutral', 500) : `${getColor('white')}b3`;\n }\n if ((fill && !ondark) || (!fill && ondark)) {\n return 'white';\n }\n\n return concept === 'normal' ? getColor('blueberry', 600) : getColor('cherry', 500);\n};\nconst getLargeIconSize = (large: boolean, mobile: boolean): IconSize => {\n if (mobile && large) return IconSize.Small;\n if (large) return IconSize.Medium;\n return IconSize.XSmall;\n};\n\nconst checkOnlyIconAria = (onlyIcon: boolean, ariaLabel: string | undefined, devEnv: boolean): void => {\n if (devEnv && onlyIcon && (ariaLabel === undefined || ariaLabel === '')) {\n throw new Error('Fyll inn ariaLabel prop på Button uten tekst for å opprettholde UU krav');\n }\n};\n\nconst Button: React.FC<ButtonProps> = props => {\n const {\n ariaLabel,\n id,\n children,\n wrapperClassName,\n className,\n arrow,\n concept = 'normal',\n disabled = false,\n ellipsis = false,\n fluid = false,\n htmlMarkup = 'button',\n onColor = 'onlight',\n onBlur,\n onClick,\n size = 'medium',\n variant = 'fill',\n href,\n tabIndex,\n testId,\n target,\n type = 'button',\n textClassName,\n textPosition = 'left',\n ref,\n ...restProps\n } = props;\n const [leftIcon, rightIcon, restChildren] = useIcons(React.Children.toArray(children));\n const { refObject, isHovered } = usePseudoClasses<HTMLButtonElement | HTMLAnchorElement | null>(ref);\n const buttonContentRef = useRef<HTMLDivElement>(null);\n const onlyIcon = !!(leftIcon || rightIcon) && !restChildren;\n const bothIcons = leftIcon && (rightIcon || arrow) && !onlyIcon;\n const onDark = onColor === 'ondark';\n const isMobile = useIsMobileBreakpoint();\n const destructive = concept === 'destructive' && !disabled;\n const outlineVariant = variant === 'outline';\n const borderlessVariant = variant === 'borderless';\n const iconColor = getIconColor(variant === 'fill', borderlessVariant, disabled, concept, onDark, isMobile);\n const hasArrow = arrow === 'icon' && !borderlessVariant;\n const large = size === 'large' && !destructive && !borderlessVariant;\n const hasUURightArrow = arrow === 'accessibility-character' && !fluid && !leftIcon && !rightIcon && !hasArrow && borderlessVariant;\n const rest = { ...restProps };\n\n const buttonWrapperClasses = classNames(\n buttonStyles['button-wrapper'],\n { [buttonStyles['button-wrapper--fluid']]: fluid || ellipsis },\n wrapperClassName\n );\n const buttonClasses = classNames(\n buttonStyles.button,\n {\n [buttonStyles['button--destructive']]: destructive,\n [buttonStyles['button--normal']]: !large,\n [buttonStyles['button--large']]: large,\n [buttonStyles['button--outline']]: outlineVariant,\n [buttonStyles['button--borderless']]: borderlessVariant,\n [buttonStyles['button--left-icon']]: leftIcon && !onlyIcon,\n [buttonStyles['button--right-icon']]: rightIcon && !onlyIcon,\n [buttonStyles['button--both-icons']]: bothIcons,\n [buttonStyles['button--only-icon']]: onlyIcon,\n [buttonStyles['button--arrow']]: hasArrow,\n [buttonStyles['button--on-dark']]: onDark,\n },\n className\n );\n const buttonTextClasses = classNames(\n buttonStyles['button__text'],\n {\n [buttonStyles['button__text--ellipsis']]: ellipsis,\n [buttonStyles['button__text--centered']]: fluid && textPosition === 'centered',\n },\n textClassName\n );\n const diagonalClasses = classNames(buttonStyles['diagonal'], {\n [buttonStyles['diagonal--on-dark']]: onDark,\n });\n\n useEffect(() => {\n checkOnlyIconAria(onlyIcon, ariaLabel, !isTest() && !isProd());\n }, []);\n\n const renderIcon = (iconElement: BaseIconElement | null, iconSize: number, iconClassName?: string): BaseIconElement | null => {\n return iconElement\n ? React.cloneElement(iconElement, {\n size: iconSize,\n color: iconElement?.props.color && !disabled ? iconElement.props.color : iconColor,\n isHovered: iconElement.props.isHovered === undefined ? !disabled && isHovered : iconElement.props.isHovered,\n className: iconClassName,\n })\n : null;\n };\n\n const renderButtonContent = (): React.ReactNode => {\n return (\n <span className={buttonTextClasses} ref={buttonContentRef}>\n {disabled && borderlessVariant && (\n <span className={diagonalClasses}>\n <span className={buttonStyles['diagonal__line']} />\n </span>\n )}\n <span>{onlyIcon ? ariaLabel : restChildren}</span>\n </span>\n );\n };\n\n const renderbuttonContentWrapper = (): React.ReactNode => (\n <span className={buttonClasses}>\n {renderIcon(leftIcon, getLargeIconSize(large, isMobile), !onlyIcon ? buttonStyles['button__left-icon'] : undefined)}\n {renderButtonContent()}\n {hasArrow\n ? renderIcon(\n <Icon svgIcon={ArrowRight} />,\n getLargeIconSize(large, isMobile),\n classNames(buttonStyles['button__arrow'], { [buttonStyles['button__arrow--both-icons']]: bothIcons })\n )\n : renderIcon(rightIcon, getLargeIconSize(large, isMobile), buttonStyles['button__right-icon'])}\n {hasUURightArrow && (\n <span style={{ color: iconColor }} className={buttonStyles['button__right-unicode-arrow']} aria-hidden>\n {' →'}\n </span>\n )}\n </span>\n );\n\n return (\n <>\n {htmlMarkup === 'button' && (\n <button\n id={id}\n onBlur={onBlur}\n onClick={onClick}\n disabled={disabled}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Button}\n className={buttonWrapperClasses}\n ref={refObject as React.RefObject<HTMLButtonElement>}\n tabIndex={tabIndex}\n type={type}\n {...rest}\n >\n {renderbuttonContentWrapper()}\n </button>\n )}\n {htmlMarkup === 'a' && (\n <a\n id={id}\n onBlur={onBlur}\n onClick={onClick}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Button}\n className={buttonWrapperClasses}\n href={href}\n target={target}\n rel={target === '_blank' ? 'noopener noreferrer' : props.rel}\n ref={refObject as React.RefObject<HTMLAnchorElement>}\n tabIndex={tabIndex}\n {...restProps}\n >\n {renderbuttonContentWrapper()}\n </a>\n )}\n </>\n );\n};\n\nexport default Button;\n","import Button from './Button';\nexport * from './Button';\nexport default Button;\n"],"mappings":";;;;;;;;;;;;;AAsEA,IAAM,gBACJ,MACA,YACA,UACA,SACA,QACA,WACW;CACX,IAAI,UAAU,UACZ,OAAO,CAAC,UAAU,OAAO,SAAS,WAAW,CAAC,aAAa,MAAM,GAAG,IAAI,SAAS,OAAO;CAE1F,IAAI,UACF,OAAO,CAAC,UAAU,OAAO,SAAS,WAAW,GAAG,IAAI,GAAG,SAAS,OAAO,EAAE;CAE3E,IAAK,QAAQ,CAAC,UAAY,CAAC,QAAQ,QACjC,OAAO;CAGT,OAAO,YAAY,WAAW,SAAS,aAAa,GAAG,IAAI,SAAS,UAAU,GAAG;AACnF;AACA,IAAM,oBAAoB,OAAgB,WAA8B;CACtE,IAAI,UAAU,OAAO,OAAO,SAAS;CACrC,IAAI,OAAO,OAAO,SAAS;CAC3B,OAAO,SAAS;AAClB;AAEA,IAAM,qBAAqB,UAAmB,WAA+B,WAA0B;CACrG,IAAI,UAAU,aAAa,cAAc,KAAA,KAAa,cAAc,KAClE,MAAM,IAAI,MAAM,yEAAyE;AAE7F;AAEA,IAAM,UAAgC,UAAS;CAC7C,MAAM,EACJ,WACA,IACA,UACA,kBACA,WACA,OACA,UAAU,UACV,WAAW,OACX,WAAW,OACX,QAAQ,OACR,aAAa,UACb,UAAU,WACV,QACA,SACA,OAAO,UACP,UAAU,QACV,MACA,UACA,QACA,QACA,OAAO,UACP,eACA,eAAe,QACf,KACA,GAAG,cACD;CACJ,MAAM,CAAC,UAAU,WAAW,gBAAgB,SAAS,MAAM,SAAS,QAAQ,QAAQ,CAAC;CACrF,MAAM,EAAE,WAAW,cAAc,iBAA+D,GAAG;CACnG,MAAM,mBAAmB,OAAuB,IAAI;CACpD,MAAM,WAAW,CAAC,EAAE,YAAY,cAAc,CAAC;CAC/C,MAAM,YAAY,aAAa,aAAa,UAAU,CAAC;CACvD,MAAM,SAAS,YAAY;CAC3B,MAAM,WAAW,sBAAsB;CACvC,MAAM,cAAc,YAAY,iBAAiB,CAAC;CAClD,MAAM,iBAAiB,YAAY;CACnC,MAAM,oBAAoB,YAAY;CACtC,MAAM,YAAY,aAAa,YAAY,QAAQ,mBAAmB,UAAU,SAAS,QAAQ,QAAQ;CACzG,MAAM,WAAW,UAAU,UAAU,CAAC;CACtC,MAAM,QAAQ,SAAS,WAAW,CAAC,eAAe,CAAC;CACnD,MAAM,kBAAkB,UAAU,6BAA6B,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY;CACjH,MAAM,OAAO,EAAE,GAAG,UAAU;CAE5B,MAAM,uBAAuB,WAC3B,aAAa,mBACb,GAAG,aAAa,2BAA2B,SAAS,SAAS,GAC7D,gBACF;CACA,MAAM,gBAAgB,WACpB,aAAa,QACb;GACG,aAAa,yBAAyB;GACtC,aAAa,oBAAoB,CAAC;GAClC,aAAa,mBAAmB;GAChC,aAAa,qBAAqB;GAClC,aAAa,wBAAwB;GACrC,aAAa,uBAAuB,YAAY,CAAC;GACjD,aAAa,wBAAwB,aAAa,CAAC;GACnD,aAAa,wBAAwB;GACrC,aAAa,uBAAuB;GACpC,aAAa,mBAAmB;GAChC,aAAa,qBAAqB;CACrC,GACA,SACF;CACA,MAAM,oBAAoB,WACxB,aAAa,iBACb;GACG,aAAa,4BAA4B;GACzC,aAAa,4BAA4B,SAAS,iBAAiB;CACtE,GACA,aACF;CACA,MAAM,kBAAkB,WAAW,aAAa,aAAa,GAC1D,aAAa,uBAAuB,OACvC,CAAC;CAED,gBAAgB;EACd,kBAAkB,UAAU,WAAW,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC;CAC/D,GAAG,CAAC,CAAC;CAEL,MAAM,cAAc,aAAqC,UAAkB,kBAAmD;EAC5H,OAAO,cACH,MAAM,aAAa,aAAa;GAC9B,MAAM;GACN,OAAO,aAAa,MAAM,SAAS,CAAC,WAAW,YAAY,MAAM,QAAQ;GACzE,WAAW,YAAY,MAAM,cAAc,KAAA,IAAY,CAAC,YAAY,YAAY,YAAY,MAAM;GAClG,WAAW;EACb,CAAC,IACD;CACN;CAEA,MAAM,4BAA6C;EACjD,OACE,qBAAC,QAAD;GAAM,WAAW;GAAmB,KAAK;aAAzC,CACG,YAAY,qBACX,oBAAC,QAAD;IAAM,WAAW;cACf,oBAAC,QAAD,EAAM,WAAW,aAAa,kBAAoB,CAAA;GAC9C,CAAA,GAER,oBAAC,QAAD,EAAA,UAAO,WAAW,YAAY,aAAmB,CAAA,CAC7C;;CAEV;CAEA,MAAM,mCACJ,qBAAC,QAAD;EAAM,WAAW;YAAjB;GACG,WAAW,UAAU,iBAAiB,OAAO,QAAQ,GAAG,CAAC,WAAW,aAAa,uBAAuB,KAAA,CAAS;GACjH,oBAAoB;GACpB,WACG,WACE,oBAAC,cAAD,EAAM,SAAS,WAAa,CAAA,GAC5B,iBAAiB,OAAO,QAAQ,GAChC,WAAW,aAAa,kBAAkB,GAAG,aAAa,+BAA+B,UAAU,CAAC,CACtG,IACA,WAAW,WAAW,iBAAiB,OAAO,QAAQ,GAAG,aAAa,qBAAqB;GAC9F,mBACC,oBAAC,QAAD;IAAM,OAAO,EAAE,OAAO,UAAU;IAAG,WAAW,aAAa;IAAgC,eAAA;cACxF;GACG,CAAA;EAEJ;;CAGR,OACE,qBAAA,UAAA,EAAA,UAAA,CACG,eAAe,YACd,oBAAC,UAAD;EACM;EACI;EACC;EACC;EACV,eAAa;EACb,oBAAkB,YAAY;EAC9B,WAAW;EACX,KAAK;EACK;EACJ;EACN,GAAI;YAEH,2BAA2B;CACtB,CAAA,GAET,eAAe,OACd,oBAAC,KAAD;EACM;EACI;EACC;EACT,eAAa;EACb,oBAAkB,YAAY;EAC9B,WAAW;EACL;EACE;EACR,KAAK,WAAW,WAAW,wBAAwB,MAAM;EACzD,KAAK;EACK;EACV,GAAI;YAEH,2BAA2B;CAC3B,CAAA,CAEL,EAAA,CAAA;AAEN;;;ACxQA,IAAA,iBAAe"}
package/lib/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
1
 
2
+ ## [15.0.0](https://github.com/helsenorge/designsystem/compare/v14.11.1...v15.0.0) (2026-06-04)
3
+
4
+ ### Features
5
+
6
+ * **filter:** ny komponent LoaderSpinner ([fab4ec7](https://github.com/helsenorge/designsystem/commit/fab4ec7c5ba0695b63e30d398ff60de43ca90217)), closes [#377329](https://github.com/helsenorge/designsystem/issues/377329)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **loaderspinner:** justert spinner plassering for windows ([bc9c536](https://github.com/helsenorge/designsystem/commit/bc9c536ac3cfb730b9de882b0b1e25a0c9de233b)), closes [#377329](https://github.com/helsenorge/designsystem/issues/377329)
11
+
12
+ ## 15.0.0-beta.1 (2026-05-13)
13
+
2
14
  ## 15.0.0-beta.0 (2026-05-08)
3
15
 
4
16
  ### Features
@@ -7,6 +19,55 @@
7
19
  * **tag:** legg til accent2 variant med banana farge ([bb0c49b](https://github.com/helsenorge/designsystem/commit/bb0c49b340c8305fdc98e25adf955777f0d80be0)), closes [#376269](https://github.com/helsenorge/designsystem/issues/376269)
8
20
  * **tag:** nytt design på tag ([d0871d8](https://github.com/helsenorge/designsystem/commit/d0871d877a6b7ea52908114c533ea2cb924ad8ed)), closes [#374718](https://github.com/helsenorge/designsystem/issues/374718)
9
21
 
22
+ ## [14.11.1](https://github.com/helsenorge/designsystem/compare/v14.11.0...v14.11.1) (2026-05-29)
23
+
24
+ ### Bug Fixes
25
+
26
+ * **radiobutton:** dot forsvant ikke uten formgroup med name ([8da51a3](https://github.com/helsenorge/designsystem/commit/8da51a390f5a54aeca6ce697ed6c7818b2564515)), closes [#379249](https://github.com/helsenorge/designsystem/issues/379249)
27
+
28
+ ## [14.11.0](https://github.com/helsenorge/designsystem/compare/v14.10.0...v14.11.0) (2026-05-26)
29
+
30
+ ### Features
31
+
32
+ * nye komponenter visualcheckbox og visualcheckboxgroup ([8cde9b1](https://github.com/helsenorge/designsystem/commit/8cde9b1deea876ddb5fcc0bf22b7f228ca0d770f)), closes [#376756](https://github.com/helsenorge/designsystem/issues/376756)
33
+ * nye komponenter visualradio og visualradiogroup ([4643f81](https://github.com/helsenorge/designsystem/commit/4643f8177d086319ac168d24e2027573a76d681d)), closes [#376756](https://github.com/helsenorge/designsystem/issues/376756)
34
+ * renamet visualradiobuttoncloud til visualradiocloud ([2a52c26](https://github.com/helsenorge/designsystem/commit/2a52c26323c1cd57af057c301f8bc4d4ab66cb80)), closes [#376757](https://github.com/helsenorge/designsystem/issues/376757)
35
+ * **datepicker:** fjern blå markering ved focus på segment i dateinput og timeinput ([e02197e](https://github.com/helsenorge/designsystem/commit/e02197e5c63608a2ea531cce20d5d67f2a507c68)), closes [#378506](https://github.com/helsenorge/designsystem/issues/378506)
36
+ * **illustration:** nye illustrasjoner for småbarnsliv ([59a5521](https://github.com/helsenorge/designsystem/commit/59a5521d629420530cdc0d8dffa860a06a363912)), closes [#378919](https://github.com/helsenorge/designsystem/issues/378919)
37
+
38
+ ## [14.10.0](https://github.com/helsenorge/designsystem/compare/v14.9.2...v14.10.0) (2026-05-18)
39
+
40
+ ### Features
41
+
42
+ * ny komponent visualcheckboxcloud ([4e6ea9c](https://github.com/helsenorge/designsystem/commit/4e6ea9c904f65cf4aedf2cc3f474cbff117c080a)), closes [#376757](https://github.com/helsenorge/designsystem/issues/376757)
43
+ * ny komponent visualradiobuttoncloud ([d14fce7](https://github.com/helsenorge/designsystem/commit/d14fce7e75b9f22397288defc51bfc6158595199)), closes [#376757](https://github.com/helsenorge/designsystem/issues/376757)
44
+
45
+ ## [14.9.2](https://github.com/helsenorge/designsystem/compare/v14.9.1...v14.9.2) (2026-05-13)
46
+
47
+ ### Bug Fixes
48
+
49
+ * **dateandtime:** softerror skal spre seg uten å påvirke naboer ([27db71b](https://github.com/helsenorge/designsystem/commit/27db71b8e65f4d062da6b87f66147451d78be64f)), closes [#377339](https://github.com/helsenorge/designsystem/issues/377339)
50
+ * **filtersort:** første child skal være høyrestilt ([a9acf73](https://github.com/helsenorge/designsystem/commit/a9acf73ff4e65c267025535ec1d9f0ef78545b55)), closes [#376682](https://github.com/helsenorge/designsystem/issues/376682)
51
+
52
+ ## [14.9.1](https://github.com/helsenorge/designsystem/compare/v14.9.0...v14.9.1) (2026-05-12)
53
+
54
+ ### Bug Fixes
55
+
56
+ * **datepicker:** onblur skal trigges når popup lukkes ([dfc3193](https://github.com/helsenorge/designsystem/commit/dfc31937fae8d1dfa63c221792e340355db59101)), closes [#377127](https://github.com/helsenorge/designsystem/issues/377127)
57
+
58
+ ## [14.9.0](https://github.com/helsenorge/designsystem/compare/v14.8.0...v14.9.0) (2026-05-11)
59
+
60
+ ### Features
61
+
62
+ * **daterangepicker:** from og to value kan være undefined og null ([b1e2b07](https://github.com/helsenorge/designsystem/commit/b1e2b07037b932b1ceb35a5f2998fb0d8a224f3a)), closes [#377492](https://github.com/helsenorge/designsystem/issues/377492)
63
+ * **formgroup:** ny prop legendid ([5d73bdc](https://github.com/helsenorge/designsystem/commit/5d73bdcd1940f268b7aef79e602f8bf1d30044cf)), closes [#377978](https://github.com/helsenorge/designsystem/issues/377978)
64
+
65
+ ## [14.8.0](https://github.com/helsenorge/designsystem/compare/v14.7.3...v14.8.0) (2026-05-11)
66
+
67
+ ### Features
68
+
69
+ * **datepicker:** value kan være null ([67c98bd](https://github.com/helsenorge/designsystem/commit/67c98bdcf046674f9c3f04d8cbe922c506f9b298)), closes [#377492](https://github.com/helsenorge/designsystem/issues/377492)
70
+
10
71
  ## [14.7.3](https://github.com/helsenorge/designsystem/compare/v14.7.2...v14.7.3) (2026-05-08)
11
72
 
12
73
  ### Bug Fixes
package/lib/Checkbox.js CHANGED
@@ -1,10 +1,8 @@
1
1
  import { t as uuid } from "./uuid.js";
2
- import { AnalyticsId, FormOnColor, FormSize, IconSize } from "./constants.js";
2
+ import { AnalyticsId, FormOnColor, FormSize } from "./constants.js";
3
3
  import { usePseudoClasses } from "./hooks/usePseudoClasses.js";
4
- import { getColor } from "./theme/currys/color.js";
5
4
  import { isMutableRefObject, mergeRefs } from "./utils/refs.js";
6
- import { t as Icon_default } from "./Icon.js";
7
- import Check from "./components/Icons/Check.js";
5
+ import { t as CheckboxMarker } from "./CheckboxMarker.js";
8
6
  import { useIdWithFallback } from "./hooks/useIdWithFallback.js";
9
7
  import { getAriaDescribedBy } from "./utils/accessibility.js";
10
8
  import { t as ErrorWrapper_default } from "./ErrorWrapper.js";
@@ -40,34 +38,12 @@ var Checkbox = (props) => {
40
38
  [checkboxStyles["checkbox-label__large--disabled"]]: large && disabled
41
39
  });
42
40
  const checkboxClasses = classNames(checkboxStyles.checkbox, className);
43
- const checkboxIconWrapperClasses = classNames(checkboxStyles["checkbox__icon-wrapper"], {
44
- [checkboxStyles["checkbox__icon-wrapper--on-white"]]: onWhite,
45
- [checkboxStyles["checkbox__icon-wrapper--on-grey"]]: onGrey,
46
- [checkboxStyles["checkbox__icon-wrapper--on-invalid"]]: onInvalid,
47
- [checkboxStyles["checkbox__icon-wrapper--disabled"]]: disabled,
48
- [checkboxStyles["checkbox__icon-wrapper__regular--checked"]]: !large && isChecked,
49
- [checkboxStyles["checkbox__icon-wrapper__regular--invalid"]]: !large && isChecked && onInvalid,
50
- [checkboxStyles["checkbox__icon-wrapper__regular--on-dark"]]: !large && isChecked && onDark,
51
- [checkboxStyles["checkbox__icon-wrapper__large--checked"]]: large && isChecked,
52
- [checkboxStyles["checkbox__icon-wrapper__large--invalid"]]: large && onInvalid,
53
- [checkboxStyles["checkbox__icon-wrapper--on-dark"]]: onDark,
54
- [checkboxStyles["checkbox__icon-wrapper--on-blueberry"]]: onBlueberry,
55
- [checkboxStyles["checkbox__icon-wrapper--invalid"]]: onInvalid,
56
- [checkboxStyles["checkbox__icon-wrapper__large--invalid"]]: large && isChecked && onInvalid,
57
- [checkboxStyles["checkbox__icon-wrapper__large--disabled"]]: disabled && large && isChecked,
58
- [checkboxStyles["checkbox__icon-wrapper__large--checked--invalid"]]: large && isChecked && onInvalid,
59
- [checkboxStyles["checkbox__icon-wrapper__large--checked--disabled"]]: disabled && large && isChecked
60
- });
61
41
  const labelTextClasses = classNames(checkboxStyles["checkbox-label__text"], {
62
42
  [checkboxStyles["checkbox-label__text__large--checked"]]: large && isChecked,
63
43
  [checkboxStyles["checkbox-label__text__large--invalid"]]: large && isChecked && onInvalid,
64
44
  [checkboxStyles["checkbox-label__text--on-dark"]]: onDark,
65
45
  [checkboxStyles["checkbox-label__text--disabled"]]: disabled
66
46
  });
67
- let iconColor = getColor("white");
68
- if (onDark || large && isChecked) iconColor = getColor("blueberry", 900);
69
- if (onInvalid && large && isChecked) iconColor = getColor("white");
70
- if (disabled) iconColor = getColor("neutral", 700);
71
47
  useEffect(() => {
72
48
  setIsChecked(checked);
73
49
  }, [checked]);
@@ -76,28 +52,29 @@ var Checkbox = (props) => {
76
52
  setIsChecked(!isChecked);
77
53
  };
78
54
  const getLabelContent = () => {
79
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("input", {
80
- id: inputId,
81
- name,
82
- className: checkboxClasses,
83
- type: "checkbox",
84
- checked: isChecked,
85
- disabled,
86
- value,
87
- ref: mergedRefs,
88
- "aria-describedby": getAriaDescribedBy(props, errorTextId),
89
- "aria-invalid": error,
90
- required,
91
- onChange: onChangeHandler
92
- }), /* @__PURE__ */ jsx("span", {
93
- className: checkboxIconWrapperClasses,
94
- children: isChecked && /* @__PURE__ */ jsx(Icon_default, {
95
- color: iconColor,
96
- className: checkboxStyles["checkbox__icon"],
97
- svgIcon: Check,
98
- size: IconSize.XSmall
99
- })
100
- })] });
55
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("span", {
56
+ className: checkboxStyles["checkbox__marker-wrapper"],
57
+ children: [/* @__PURE__ */ jsx("input", {
58
+ id: inputId,
59
+ name,
60
+ className: checkboxClasses,
61
+ type: "checkbox",
62
+ checked: isChecked,
63
+ disabled,
64
+ value,
65
+ ref: mergedRefs,
66
+ "aria-describedby": getAriaDescribedBy(props, errorTextId),
67
+ "aria-invalid": error,
68
+ required,
69
+ onChange: onChangeHandler
70
+ }), /* @__PURE__ */ jsx(CheckboxMarker, {
71
+ checked: isChecked,
72
+ disabled,
73
+ error,
74
+ onColor,
75
+ size
76
+ })]
77
+ }) });
101
78
  };
102
79
  return /* @__PURE__ */ jsx(ErrorWrapper_default, {
103
80
  className: errorWrapperClassName,
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":[],"sources":["../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport { AnalyticsId, FormOnColor, FormSize, IconSize } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getColor } from '../../theme/currys/color';\nimport { getAriaDescribedBy } from '../../utils/accessibility';\nimport { isMutableRefObject, mergeRefs } from '../../utils/refs';\nimport { uuid } from '../../utils/uuid';\nimport ErrorWrapper from '../ErrorWrapper';\nimport Icon from '../Icon';\nimport Check from '../Icons/Check';\nimport { getLabelText, renderLabelAsParent } from '../Label/utils';\n\nimport checkboxStyles from './styles.module.scss';\n\nexport interface CheckboxProps\n extends\n ErrorWrapperClassNameProps,\n Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'aria-describedby' | 'name' | 'value' | 'disabled' | 'checked' | 'required' | 'onChange'\n > {\n /** Adds custom classes to the element. */\n className?: string;\n /** The <Label/> next to the checkbox - sublabels kan ikke kombineres med large variant */\n label: React.ReactNode;\n /** input id of the checkbox */\n inputId?: string;\n /** Changes the visuals of the checkbox */\n onColor?: keyof typeof FormOnColor;\n /** Changes the visuals of the checkbox */\n size?: keyof typeof FormSize;\n /** Activates Error style for the checkbox - 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 that is passed to the component */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = props => {\n const {\n className,\n checked = false,\n disabled,\n label,\n inputId = uuid(),\n onColor = FormOnColor.onwhite,\n name = inputId,\n size,\n errorText,\n error = !!errorText,\n errorTextId: errorTextIdProp,\n errorWrapperClassName,\n value = getLabelText(label),\n testId,\n required,\n onChange,\n ref,\n } = props;\n const [isChecked, setIsChecked] = useState(checked);\n const errorTextId = useIdWithFallback(errorTextIdProp);\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 const { refObject, isFocused } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n\n const checkboxWrapperClasses = classNames(checkboxStyles['checkbox-wrapper'], {\n [checkboxStyles['checkbox-wrapper--large']]: large,\n });\n const checkboxLabelClasses = classNames(checkboxStyles['checkbox-label'], {\n [checkboxStyles['checkbox-label--disabled']]: disabled,\n [checkboxStyles['checkbox-label--on-dark']]: onDark,\n [checkboxStyles['checkbox-label--large']]: large,\n [checkboxStyles['checkbox-label__large--checked']]: large && isChecked,\n [checkboxStyles['checkbox-label__large--focus']]: large && isFocused,\n [checkboxStyles['checkbox-label__large--on-white']]: large && onWhite,\n [checkboxStyles['checkbox-label__large--on-grey']]: large && onGrey,\n [checkboxStyles['checkbox-label__large--on-blueberry']]: large && onBlueberry,\n [checkboxStyles['checkbox-label__large--on-invalid']]: large && onInvalid,\n [checkboxStyles['checkbox-label__large--disabled']]: large && disabled,\n });\n const checkboxClasses = classNames(checkboxStyles.checkbox, className);\n const checkboxIconWrapperClasses = classNames(checkboxStyles['checkbox__icon-wrapper'], {\n [checkboxStyles['checkbox__icon-wrapper--on-white']]: onWhite,\n [checkboxStyles['checkbox__icon-wrapper--on-grey']]: onGrey,\n [checkboxStyles['checkbox__icon-wrapper--on-invalid']]: onInvalid,\n [checkboxStyles['checkbox__icon-wrapper--disabled']]: disabled,\n [checkboxStyles['checkbox__icon-wrapper__regular--checked']]: !large && isChecked,\n [checkboxStyles['checkbox__icon-wrapper__regular--invalid']]: !large && isChecked && onInvalid,\n [checkboxStyles['checkbox__icon-wrapper__regular--on-dark']]: !large && isChecked && onDark,\n [checkboxStyles['checkbox__icon-wrapper__large--checked']]: large && isChecked,\n [checkboxStyles['checkbox__icon-wrapper__large--invalid']]: large && onInvalid,\n [checkboxStyles['checkbox__icon-wrapper--on-dark']]: onDark,\n [checkboxStyles['checkbox__icon-wrapper--on-blueberry']]: onBlueberry,\n [checkboxStyles['checkbox__icon-wrapper--invalid']]: onInvalid,\n [checkboxStyles['checkbox__icon-wrapper__large--invalid']]: large && isChecked && onInvalid,\n [checkboxStyles['checkbox__icon-wrapper__large--disabled']]: disabled && large && isChecked,\n [checkboxStyles['checkbox__icon-wrapper__large--checked--invalid']]: large && isChecked && onInvalid,\n [checkboxStyles['checkbox__icon-wrapper__large--checked--disabled']]: disabled && large && isChecked,\n });\n const labelTextClasses = classNames(checkboxStyles['checkbox-label__text'], {\n [checkboxStyles['checkbox-label__text__large--checked']]: large && isChecked,\n [checkboxStyles['checkbox-label__text__large--invalid']]: large && isChecked && onInvalid,\n [checkboxStyles['checkbox-label__text--on-dark']]: onDark,\n [checkboxStyles['checkbox-label__text--disabled']]: disabled,\n });\n\n let iconColor = getColor('white');\n if (onDark || (large && isChecked)) iconColor = getColor('blueberry', 900);\n if (onInvalid && large && isChecked) iconColor = getColor('white');\n if (disabled) iconColor = getColor('neutral', 700);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked]);\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (onChange) {\n onChange(e);\n }\n\n setIsChecked(!isChecked);\n };\n\n const getLabelContent = (): React.ReactNode => {\n return (\n <>\n <input\n id={inputId}\n name={name}\n className={checkboxClasses}\n type=\"checkbox\"\n checked={isChecked}\n disabled={disabled}\n value={value}\n ref={mergedRefs}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n aria-invalid={error}\n required={required}\n onChange={onChangeHandler}\n />\n <span className={checkboxIconWrapperClasses}>\n {isChecked && <Icon color={iconColor} className={checkboxStyles['checkbox__icon']} svgIcon={Check} size={IconSize.XSmall} />}\n </span>\n </>\n );\n };\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <div data-testid={testId} data-analyticsid={AnalyticsId.Checkbox} className={checkboxWrapperClasses}>\n {renderLabelAsParent({\n label: label,\n children: getLabelContent(),\n inputId: inputId,\n onColor: onColor as FormOnColor,\n labelClassName: checkboxLabelClasses,\n labelTextClassName: labelTextClasses,\n sublabelWrapperClassName: checkboxStyles['checkbox-sublabel-wrapper'],\n large: large,\n afterLabelChildrenClassName: checkboxStyles['checkbox-afterlabelchildren-wrapper'],\n })}\n </div>\n </ErrorWrapper>\n );\n};\n\nexport default Checkbox;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","names":[],"sources":["../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../ErrorWrapper';\n\nimport CheckboxMarker from './CheckboxMarker/CheckboxMarker';\nimport { AnalyticsId, FormOnColor, FormSize } from '../../constants';\nimport { useIdWithFallback } from '../../hooks/useIdWithFallback';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getAriaDescribedBy } from '../../utils/accessibility';\nimport { isMutableRefObject, mergeRefs } from '../../utils/refs';\nimport { uuid } from '../../utils/uuid';\nimport ErrorWrapper from '../ErrorWrapper';\nimport { getLabelText, renderLabelAsParent } from '../Label/utils';\n\nimport checkboxStyles from './styles.module.scss';\n\nexport interface CheckboxProps\n extends\n ErrorWrapperClassNameProps,\n Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'aria-describedby' | 'name' | 'value' | 'disabled' | 'checked' | 'required' | 'onChange'\n > {\n /** Adds custom classes to the element. */\n className?: string;\n /** The <Label/> next to the checkbox - sublabels kan ikke kombineres med large variant */\n label: React.ReactNode;\n /** input id of the checkbox */\n inputId?: string;\n /** Changes the visuals of the checkbox */\n onColor?: keyof typeof FormOnColor;\n /** Changes the visuals of the checkbox */\n size?: keyof typeof FormSize;\n /** Activates Error style for the checkbox - 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 that is passed to the component */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = props => {\n const {\n className,\n checked = false,\n disabled,\n label,\n inputId = uuid(),\n onColor = FormOnColor.onwhite,\n name = inputId,\n size,\n errorText,\n error = !!errorText,\n errorTextId: errorTextIdProp,\n errorWrapperClassName,\n value = getLabelText(label),\n testId,\n required,\n onChange,\n ref,\n } = props;\n const [isChecked, setIsChecked] = useState(checked);\n const errorTextId = useIdWithFallback(errorTextIdProp);\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 const { refObject, isFocused } = usePseudoClasses<HTMLInputElement>(isMutableRefObject(ref) ? ref : null);\n const mergedRefs = mergeRefs([ref, refObject]);\n\n const checkboxWrapperClasses = classNames(checkboxStyles['checkbox-wrapper'], {\n [checkboxStyles['checkbox-wrapper--large']]: large,\n });\n const checkboxLabelClasses = classNames(checkboxStyles['checkbox-label'], {\n [checkboxStyles['checkbox-label--disabled']]: disabled,\n [checkboxStyles['checkbox-label--on-dark']]: onDark,\n [checkboxStyles['checkbox-label--large']]: large,\n [checkboxStyles['checkbox-label__large--checked']]: large && isChecked,\n [checkboxStyles['checkbox-label__large--focus']]: large && isFocused,\n [checkboxStyles['checkbox-label__large--on-white']]: large && onWhite,\n [checkboxStyles['checkbox-label__large--on-grey']]: large && onGrey,\n [checkboxStyles['checkbox-label__large--on-blueberry']]: large && onBlueberry,\n [checkboxStyles['checkbox-label__large--on-invalid']]: large && onInvalid,\n [checkboxStyles['checkbox-label__large--disabled']]: large && disabled,\n });\n const checkboxClasses = classNames(checkboxStyles.checkbox, className);\n const labelTextClasses = classNames(checkboxStyles['checkbox-label__text'], {\n [checkboxStyles['checkbox-label__text__large--checked']]: large && isChecked,\n [checkboxStyles['checkbox-label__text__large--invalid']]: large && isChecked && onInvalid,\n [checkboxStyles['checkbox-label__text--on-dark']]: onDark,\n [checkboxStyles['checkbox-label__text--disabled']]: disabled,\n });\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked]);\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (onChange) {\n onChange(e);\n }\n\n setIsChecked(!isChecked);\n };\n\n const getLabelContent = (): React.ReactNode => {\n return (\n <>\n <span className={checkboxStyles['checkbox__marker-wrapper']}>\n <input\n id={inputId}\n name={name}\n className={checkboxClasses}\n type=\"checkbox\"\n checked={isChecked}\n disabled={disabled}\n value={value}\n ref={mergedRefs}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n aria-invalid={error}\n required={required}\n onChange={onChangeHandler}\n />\n <CheckboxMarker checked={isChecked} disabled={disabled} error={error} onColor={onColor} size={size} />\n </span>\n </>\n );\n };\n\n return (\n <ErrorWrapper className={errorWrapperClassName} errorText={errorText} errorTextId={errorTextId}>\n <div data-testid={testId} data-analyticsid={AnalyticsId.Checkbox} className={checkboxWrapperClasses}>\n {renderLabelAsParent({\n label: label,\n children: getLabelContent(),\n inputId: inputId,\n onColor: onColor as FormOnColor,\n labelClassName: checkboxLabelClasses,\n labelTextClassName: labelTextClasses,\n sublabelWrapperClassName: checkboxStyles['checkbox-sublabel-wrapper'],\n large: large,\n afterLabelChildrenClassName: checkboxStyles['checkbox-afterlabelchildren-wrapper'],\n })}\n </div>\n </ErrorWrapper>\n );\n};\n\nexport default Checkbox;\n"],"mappings":";;;;;;;;;;;;;;AA+CA,IAAa,YAAoC,UAAS;CACxD,MAAM,EACJ,WACA,UAAU,OACV,UACA,OACA,UAAU,KAAK,GACf,UAAU,YAAY,SACtB,OAAO,SACP,MACA,WACA,QAAQ,CAAC,CAAC,WACV,aAAa,iBACb,uBACA,QAAQ,aAAa,KAAK,GAC1B,QACA,UACA,UACA,QACE;CACJ,MAAM,CAAC,WAAW,gBAAgB,SAAS,OAAO;CAClD,MAAM,cAAc,kBAAkB,eAAe;CACrD,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;CAChC,MAAM,EAAE,WAAW,cAAc,iBAAmC,mBAAmB,GAAG,IAAI,MAAM,IAAI;CACxG,MAAM,aAAa,UAAU,CAAC,KAAK,SAAS,CAAC;CAE7C,MAAM,yBAAyB,WAAW,eAAe,qBAAqB,GAC3E,eAAe,6BAA6B,MAC/C,CAAC;CACD,MAAM,uBAAuB,WAAW,eAAe,mBAAmB;GACvE,eAAe,8BAA8B;GAC7C,eAAe,6BAA6B;GAC5C,eAAe,2BAA2B;GAC1C,eAAe,oCAAoC,SAAS;GAC5D,eAAe,kCAAkC,SAAS;GAC1D,eAAe,qCAAqC,SAAS;GAC7D,eAAe,oCAAoC,SAAS;GAC5D,eAAe,yCAAyC,SAAS;GACjE,eAAe,uCAAuC,SAAS;GAC/D,eAAe,qCAAqC,SAAS;CAChE,CAAC;CACD,MAAM,kBAAkB,WAAW,eAAe,UAAU,SAAS;CACrE,MAAM,mBAAmB,WAAW,eAAe,yBAAyB;GACzE,eAAe,0CAA0C,SAAS;GAClE,eAAe,0CAA0C,SAAS,aAAa;GAC/E,eAAe,mCAAmC;GAClD,eAAe,oCAAoC;CACtD,CAAC;CAED,gBAAgB;EACd,aAAa,OAAO;CACtB,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,mBAAmB,MAAiD;EACxE,IAAI,UACF,SAAS,CAAC;EAGZ,aAAa,CAAC,SAAS;CACzB;CAEA,MAAM,wBAAyC;EAC7C,OACE,oBAAA,UAAA,EAAA,UACE,qBAAC,QAAD;GAAM,WAAW,eAAe;aAAhC,CACE,oBAAC,SAAD;IACE,IAAI;IACE;IACN,WAAW;IACX,MAAK;IACL,SAAS;IACC;IACH;IACP,KAAK;IACL,oBAAkB,mBAAmB,OAAO,WAAW;IACvD,gBAAc;IACJ;IACV,UAAU;GACX,CAAA,GACD,oBAAC,gBAAD;IAAgB,SAAS;IAAqB;IAAiB;IAAgB;IAAe;GAAO,CAAA,CACjG;KACN,CAAA;CAEN;CAEA,OACE,oBAAC,sBAAD;EAAc,WAAW;EAAkC;EAAwB;YACjF,oBAAC,OAAD;GAAK,eAAa;GAAQ,oBAAkB,YAAY;GAAU,WAAW;aAC1E,oBAAoB;IACZ;IACP,UAAU,gBAAgB;IACjB;IACA;IACT,gBAAgB;IAChB,oBAAoB;IACpB,0BAA0B,eAAe;IAClC;IACP,6BAA6B,eAAe;GAC9C,CAAC;EACE,CAAA;CACO,CAAA;AAElB"}
@@ -0,0 +1,69 @@
1
+ import { AnalyticsId } from "./constants.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/VisualCheckboxCloud/Checkbox/styles.module.scss";
9
+ //#region src/components/VisualCheckboxCloud/Checkbox/Checkbox.tsx
10
+ var Checkbox = (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 [isChecked, setIsChecked] = useState(!!(checked ?? defaultChecked));
15
+ const [prevChecked, setPrevChecked] = useState(checked);
16
+ if (prevChecked !== checked) {
17
+ setPrevChecked(checked);
18
+ if (checked !== void 0 && checked !== isChecked) setIsChecked(checked);
19
+ }
20
+ const handleChange = (e) => {
21
+ setIsChecked(e.target.checked);
22
+ onChange?.(e);
23
+ };
24
+ return /* @__PURE__ */ jsx(ErrorWrapper_default, {
25
+ className: errorWrapperClassName,
26
+ errorText,
27
+ errorTextId,
28
+ children: /* @__PURE__ */ jsxs("label", {
29
+ className: classNames(styles["visual-checkbox"], {
30
+ [styles["visual-checkbox--checked"]]: isChecked,
31
+ [styles["visual-checkbox--invalid"]]: error
32
+ }, className),
33
+ htmlFor: inputId,
34
+ "data-testid": testId,
35
+ "data-analyticsid": AnalyticsId.Checkbox,
36
+ children: [/* @__PURE__ */ jsx("input", {
37
+ ...rest,
38
+ id: inputId,
39
+ ref,
40
+ className: styles["visual-checkbox__input"],
41
+ type: "checkbox",
42
+ checked: isChecked,
43
+ "aria-invalid": error,
44
+ "aria-describedby": getAriaDescribedBy(props, errorTextId),
45
+ onChange: handleChange
46
+ }), /* @__PURE__ */ jsxs("span", {
47
+ className: styles["visual-checkbox__pill"],
48
+ children: [isChecked && /* @__PURE__ */ jsx("span", {
49
+ className: styles["visual-checkbox__icon"],
50
+ "aria-hidden": "true",
51
+ children: /* @__PURE__ */ jsx("svg", {
52
+ width: "16",
53
+ height: "12",
54
+ fill: "none",
55
+ xmlns: "http://www.w3.org/2000/svg",
56
+ children: /* @__PURE__ */ jsx("path", { d: "m14.754.165 1.08 1.074.166.164-.16.17L6.13 12 .159 5.59 0 5.42l.166-.164 1.08-1.075.165-.164.16.17 4.558 4.896 8.3-8.913.16-.17.165.165Z" })
57
+ })
58
+ }), /* @__PURE__ */ jsx("span", {
59
+ className: styles["visual-checkbox__label"],
60
+ children
61
+ })]
62
+ })]
63
+ })
64
+ });
65
+ };
66
+ //#endregion
67
+ export { Checkbox as t };
68
+
69
+ //# sourceMappingURL=Checkbox2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox2.js","names":[],"sources":["../src/components/VisualCheckboxCloud/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { ErrorWrapperClassNameProps } from '../../ErrorWrapper';\n\nimport { AnalyticsId } from '../../../constants';\nimport { useIdWithFallback } from '../../../hooks/useIdWithFallback';\nimport { getAriaDescribedBy } from '../../../utils/accessibility';\nimport ErrorWrapper from '../../ErrorWrapper';\n\nimport styles from './styles.module.scss';\n\nexport interface CheckboxProps\n extends ErrorWrapperClassNameProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'id' | 'className' | 'children' | 'size'> {\n /** Adds custom classes to the root element. */\n className?: string;\n /** Label text shown inside the pill. */\n children: React.ReactNode;\n /** input id of the underlying checkbox */\n inputId?: string;\n /** Activates error styling. Can be true while errorText is empty (e.g. when used 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 forwarded to the underlying input element. */\n ref?: React.Ref<HTMLInputElement | null>;\n}\n\nconst Checkbox: React.FC<CheckboxProps> = 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 [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-checkbox'],\n {\n [styles['visual-checkbox--checked']]: isChecked,\n [styles['visual-checkbox--invalid']]: error,\n },\n className\n )}\n htmlFor={inputId}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Checkbox}\n >\n <input\n {...rest}\n id={inputId}\n ref={ref}\n className={styles['visual-checkbox__input']}\n type=\"checkbox\"\n checked={isChecked}\n aria-invalid={error}\n aria-describedby={getAriaDescribedBy(props, errorTextId)}\n onChange={handleChange}\n />\n <span className={styles['visual-checkbox__pill']}>\n {isChecked && (\n <span className={styles['visual-checkbox__icon']} aria-hidden=\"true\">\n <svg width=\"16\" height=\"12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m14.754.165 1.08 1.074.166.164-.16.17L6.13 12 .159 5.59 0 5.42l.166-.164 1.08-1.075.165-.164.16.17 4.558 4.896 8.3-8.913.16-.17.165.165Z\" />\n </svg>\n </span>\n )}\n <span className={styles['visual-checkbox__label']}>{children}</span>\n </span>\n </label>\n </ErrorWrapper>\n );\n};\n\nexport default Checkbox;\n"],"mappings":";;;;;;;;;AAiCA,IAAM,YAAoC,UAAS;CACjD,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,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,oBACP;KACG,OAAO,8BAA8B;KACrC,OAAO,8BAA8B;GACxC,GACA,SACF;GACA,SAAS;GACT,eAAa;GACb,oBAAkB,YAAY;aAXhC,CAaE,oBAAC,SAAD;IACE,GAAI;IACJ,IAAI;IACC;IACL,WAAW,OAAO;IAClB,MAAK;IACL,SAAS;IACT,gBAAc;IACd,oBAAkB,mBAAmB,OAAO,WAAW;IACvD,UAAU;GACX,CAAA,GACD,qBAAC,QAAD;IAAM,WAAW,OAAO;cAAxB,CACG,aACC,oBAAC,QAAD;KAAM,WAAW,OAAO;KAA0B,eAAY;eAC5D,oBAAC,OAAD;MAAK,OAAM;MAAK,QAAO;MAAK,MAAK;MAAO,OAAM;gBAC5C,oBAAC,QAAD,EAAM,GAAE,2IAA4I,CAAA;KACjJ,CAAA;IACD,CAAA,GAER,oBAAC,QAAD;KAAM,WAAW,OAAO;KAA4B;IAAe,CAAA,CAC/D;KACD;;CACK,CAAA;AAElB"}
@@ -0,0 +1,64 @@
1
+ import { FormOnColor, FormSize } from "./constants.js";
2
+ import { getColor } from "./theme/currys/color.js";
3
+ import classNames from "classnames";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import styles from "./components/Checkbox/CheckboxMarker/styles.module.scss";
6
+ //#region src/components/Checkbox/CheckboxMarker/CheckboxMarker.tsx
7
+ /**
8
+ * Does not render an <input>; consumers render this on their end.
9
+ */
10
+ var CheckboxMarker = (props) => {
11
+ const { checked = false, disabled = false, error = false, onColor = FormOnColor.onwhite, size, className } = props;
12
+ const onWhite = onColor === FormOnColor.onwhite;
13
+ const onGrey = onColor === FormOnColor.ongrey;
14
+ const onBlueberry = onColor === FormOnColor.onblueberry;
15
+ const onInvalid = error || onColor === FormOnColor.oninvalid;
16
+ const onDark = onColor === FormOnColor.ondark;
17
+ const large = size === FormSize.large;
18
+ const markerClasses = classNames(styles["checkbox__marker"], {
19
+ [styles["checkbox__marker--on-white"]]: onWhite,
20
+ [styles["checkbox__marker--on-grey"]]: onGrey,
21
+ [styles["checkbox__marker--on-invalid"]]: onInvalid,
22
+ [styles["checkbox__marker--disabled"]]: disabled,
23
+ [styles["checkbox__marker__regular--checked"]]: !large && checked,
24
+ [styles["checkbox__marker__regular--invalid"]]: !large && checked && onInvalid,
25
+ [styles["checkbox__marker__regular--on-dark"]]: !large && checked && onDark,
26
+ [styles["checkbox__marker__large--checked"]]: large && checked,
27
+ [styles["checkbox__marker__large--invalid"]]: large && onInvalid,
28
+ [styles["checkbox__marker--on-dark"]]: onDark,
29
+ [styles["checkbox__marker--on-blueberry"]]: onBlueberry,
30
+ [styles["checkbox__marker--invalid"]]: onInvalid,
31
+ [styles["checkbox__marker__large--invalid"]]: large && checked && onInvalid,
32
+ [styles["checkbox__marker__large--disabled"]]: disabled && large && checked,
33
+ [styles["checkbox__marker__large--checked--invalid"]]: large && checked && onInvalid,
34
+ [styles["checkbox__marker__large--checked--disabled"]]: disabled && large && checked
35
+ }, className);
36
+ const getIconColor = () => {
37
+ if (disabled) return getColor("neutral", 700);
38
+ if (large && checked && onInvalid) return getColor("white");
39
+ if (onDark || large && checked) return getColor("blueberry", 900);
40
+ return getColor("white");
41
+ };
42
+ const iconColor = getIconColor();
43
+ return /* @__PURE__ */ jsx("span", {
44
+ className: markerClasses,
45
+ children: checked && /* @__PURE__ */ jsx("span", {
46
+ className: styles["checkbox__marker-icon"],
47
+ "aria-hidden": "true",
48
+ children: /* @__PURE__ */ jsx("svg", {
49
+ strokeWidth: "2.75",
50
+ width: "18",
51
+ height: "16",
52
+ viewBox: "0 0 16 12",
53
+ fill: "none",
54
+ stroke: iconColor,
55
+ xmlns: "http://www.w3.org/2000/svg",
56
+ children: /* @__PURE__ */ jsx("path", { d: "M1 6 L6 11 L15 1" })
57
+ })
58
+ })
59
+ });
60
+ };
61
+ //#endregion
62
+ export { CheckboxMarker as t };
63
+
64
+ //# sourceMappingURL=CheckboxMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxMarker.js","names":[],"sources":["../src/components/Checkbox/CheckboxMarker/CheckboxMarker.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport { FormOnColor, FormSize } from '../../../constants';\nimport { getColor } from '../../../theme/currys/color';\n\nimport styles from './styles.module.scss';\n\nexport interface CheckboxMarkerProps {\n /** Whether the checkbox is checked. Controls the checkmark 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 CheckboxMarker: React.FC<CheckboxMarkerProps> = 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['checkbox__marker'],\n {\n [styles['checkbox__marker--on-white']]: onWhite,\n [styles['checkbox__marker--on-grey']]: onGrey,\n [styles['checkbox__marker--on-invalid']]: onInvalid,\n [styles['checkbox__marker--disabled']]: disabled,\n [styles['checkbox__marker__regular--checked']]: !large && checked,\n [styles['checkbox__marker__regular--invalid']]: !large && checked && onInvalid,\n [styles['checkbox__marker__regular--on-dark']]: !large && checked && onDark,\n [styles['checkbox__marker__large--checked']]: large && checked,\n [styles['checkbox__marker__large--invalid']]: large && onInvalid,\n [styles['checkbox__marker--on-dark']]: onDark,\n [styles['checkbox__marker--on-blueberry']]: onBlueberry,\n [styles['checkbox__marker--invalid']]: onInvalid,\n [styles['checkbox__marker__large--invalid']]: large && checked && onInvalid,\n [styles['checkbox__marker__large--disabled']]: disabled && large && checked,\n [styles['checkbox__marker__large--checked--invalid']]: large && checked && onInvalid,\n [styles['checkbox__marker__large--checked--disabled']]: disabled && large && checked,\n },\n className\n );\n\n const getIconColor = (): string => {\n if (disabled) {\n return getColor('neutral', 700);\n }\n if (large && checked && onInvalid) {\n return getColor('white');\n }\n if (onDark || (large && checked)) {\n return getColor('blueberry', 900);\n }\n return getColor('white');\n };\n const iconColor = getIconColor();\n\n return (\n <span className={markerClasses}>\n {checked && (\n <span className={styles['checkbox__marker-icon']} aria-hidden=\"true\">\n <svg\n strokeWidth=\"2.75\"\n width=\"18\"\n height=\"16\"\n viewBox=\"0 0 16 12\"\n fill=\"none\"\n stroke={iconColor}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M1 6 L6 11 L15 1\" />\n </svg>\n </span>\n )}\n </span>\n );\n};\n\nexport default CheckboxMarker;\n"],"mappings":";;;;;;;;;AAyBA,IAAa,kBAAgD,UAAS;CACpE,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;CAEhC,MAAM,gBAAgB,WACpB,OAAO,qBACP;GACG,OAAO,gCAAgC;GACvC,OAAO,+BAA+B;GACtC,OAAO,kCAAkC;GACzC,OAAO,gCAAgC;GACvC,OAAO,wCAAwC,CAAC,SAAS;GACzD,OAAO,wCAAwC,CAAC,SAAS,WAAW;GACpE,OAAO,wCAAwC,CAAC,SAAS,WAAW;GACpE,OAAO,sCAAsC,SAAS;GACtD,OAAO,sCAAsC,SAAS;GACtD,OAAO,+BAA+B;GACtC,OAAO,oCAAoC;GAC3C,OAAO,+BAA+B;GACtC,OAAO,sCAAsC,SAAS,WAAW;GACjE,OAAO,uCAAuC,YAAY,SAAS;GACnE,OAAO,+CAA+C,SAAS,WAAW;GAC1E,OAAO,gDAAgD,YAAY,SAAS;CAC/E,GACA,SACF;CAEA,MAAM,qBAA6B;EACjC,IAAI,UACF,OAAO,SAAS,WAAW,GAAG;EAEhC,IAAI,SAAS,WAAW,WACtB,OAAO,SAAS,OAAO;EAEzB,IAAI,UAAW,SAAS,SACtB,OAAO,SAAS,aAAa,GAAG;EAElC,OAAO,SAAS,OAAO;CACzB;CACA,MAAM,YAAY,aAAa;CAE/B,OACE,oBAAC,QAAD;EAAM,WAAW;YACd,WACC,oBAAC,QAAD;GAAM,WAAW,OAAO;GAA0B,eAAY;aAC5D,oBAAC,OAAD;IACE,aAAY;IACZ,OAAM;IACN,QAAO;IACP,SAAQ;IACR,MAAK;IACL,QAAQ;IACR,OAAM;cAEN,oBAAC,QAAD,EAAM,GAAE,mBAAoB,CAAA;GACzB,CAAA;EACD,CAAA;CAEJ,CAAA;AAEV"}
package/lib/Chip.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.js","names":[],"sources":["../src/resources/HN.Designsystem.Chip.en-GB.json","../src/resources/HN.Designsystem.Chip.nb-NO.json","../src/components/Chip/resourceHelper.ts","../src/components/Chip/Chip.tsx","../src/components/Chip/index.ts"],"sourcesContent":["{\n \"removeAriaLabel\": \"Remove\"\n}\n","{\n \"removeAriaLabel\": \"Fjern\"\n}\n","import type { HNDesignsystemChip } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Chip.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Chip.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemChip => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import classNames from 'classnames';\n\nimport type { HNDesignsystemChip } from '../../resources/Resources';\n\nimport { getResources } from './resourceHelper';\nimport { AnalyticsId, LanguageLocales } from '../../constants';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport Icon, { IconSize } from '../Icon';\nimport X from '../Icons/X';\n\nimport styles from './styles.module.scss';\n\nexport interface ChipProps {\n /** Sets the text of the chip */\n children: string;\n /** Wether or not to have a close button */\n withCloseButton?: boolean;\n /** onClick handler for text-part of the chip */\n onChipClick?: () => void;\n /** Button props for main chip button */\n chipButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** onClick handler for close button */\n onCloseClick?: () => void;\n /** Button props for the close button */\n closeButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Sets the data-testid attribute on the expander button. */\n testId?: string;\n /** Resources for the component */\n resources?: Partial<HNDesignsystemChip>;\n}\n\nconst Chip: React.FC<ChipProps> = props => {\n const { children, onChipClick, onCloseClick, chipButtonProps, closeButtonProps, testId, withCloseButton = true, resources } = props;\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemChip = {\n ...defaultResources,\n ...resources,\n removeAriaLabel: closeButtonProps?.['aria-label'] || resources?.removeAriaLabel || `${defaultResources.removeAriaLabel} ${children}`,\n };\n\n return (\n <div className={styles['chip']}>\n <button\n {...chipButtonProps}\n className={classNames(styles['chip__chip'])}\n onClick={onChipClick}\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.Tag}\n >\n <span\n className={classNames(styles['chip__chip__inner'], {\n [styles['chip__chip__inner--without-close']]: !withCloseButton,\n })}\n >\n {children}\n </span>\n </button>\n {withCloseButton && (\n <button\n {...closeButtonProps}\n aria-label={mergedResources.removeAriaLabel}\n className={classNames(styles['chip__close'])}\n onClick={onCloseClick}\n type=\"button\"\n data-testid={`${testId}-close`}\n data-analyticsid={AnalyticsId.Tag}\n >\n <span className={styles['chip__close__inner']}>\n <Icon svgIcon={X} size={IconSize.XXSmall} />\n </span>\n </button>\n )}\n </div>\n );\n};\n\nexport default Chip;\n","import Chip from './Chip';\nexport * from './Chip';\nexport default Chip;\n"],"mappings":";;;;;;;;;;;AEMA,IAAa,gBAAgB,aAAkD;CAC7E,QAAQ,UAAR;EACE,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB;EACrB,SACE,OAAO;;;;;ACmBb,IAAM,QAA4B,UAAS;CACzC,MAAM,EAAE,UAAU,aAAa,cAAc,iBAAiB,kBAAkB,QAAQ,kBAAkB,MAAM,cAAc;CAC9H,MAAM,EAAE,aAAa,YAA6B,gBAAgB,UAAU;CAC5E,MAAM,mBAAmB,aAAa,SAAS;CAC/C,MAAM,kBAAsC;EAC1C,GAAG;EACH,GAAG;EACH,iBAAiB,mBAAmB,iBAAiB,WAAW,mBAAmB,GAAG,iBAAiB,gBAAgB,GAAG;EAC3H;CAED,OACE,qBAAC,OAAD;EAAK,WAAW,OAAO;YAAvB,CACE,oBAAC,UAAD;GACE,GAAI;GACJ,WAAW,WAAW,OAAO,cAAc;GAC3C,SAAS;GACT,MAAK;GACL,eAAa;GACb,oBAAkB,YAAY;aAE9B,oBAAC,QAAD;IACE,WAAW,WAAW,OAAO,sBAAsB,GAChD,OAAO,sCAAsC,CAAC,iBAChD,CAAC;IAED;IACI,CAAA;GACA,CAAA,EACR,mBACC,oBAAC,UAAD;GACE,GAAI;GACJ,cAAY,gBAAgB;GAC5B,WAAW,WAAW,OAAO,eAAe;GAC5C,SAAS;GACT,MAAK;GACL,eAAa,GAAG,OAAO;GACvB,oBAAkB,YAAY;aAE9B,oBAAC,QAAD;IAAM,WAAW,OAAO;cACtB,oBAAC,cAAD;KAAM,SAAS;KAAG,MAAM,SAAS;KAAW,CAAA;IACvC,CAAA;GACA,CAAA,CAEP;;;;;ACxEV,IAAA,eAAe"}
1
+ {"version":3,"file":"Chip.js","names":[],"sources":["../src/resources/HN.Designsystem.Chip.en-GB.json","../src/resources/HN.Designsystem.Chip.nb-NO.json","../src/components/Chip/resourceHelper.ts","../src/components/Chip/Chip.tsx","../src/components/Chip/index.ts"],"sourcesContent":["{\n \"removeAriaLabel\": \"Remove\"\n}\n","{\n \"removeAriaLabel\": \"Fjern\"\n}\n","import type { HNDesignsystemChip } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Chip.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Chip.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemChip => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import classNames from 'classnames';\n\nimport type { HNDesignsystemChip } from '../../resources/Resources';\n\nimport { getResources } from './resourceHelper';\nimport { AnalyticsId, LanguageLocales } from '../../constants';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport Icon, { IconSize } from '../Icon';\nimport X from '../Icons/X';\n\nimport styles from './styles.module.scss';\n\nexport interface ChipProps {\n /** Sets the text of the chip */\n children: string;\n /** Wether or not to have a close button */\n withCloseButton?: boolean;\n /** onClick handler for text-part of the chip */\n onChipClick?: () => void;\n /** Button props for main chip button */\n chipButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** onClick handler for close button */\n onCloseClick?: () => void;\n /** Button props for the close button */\n closeButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Sets the data-testid attribute on the expander button. */\n testId?: string;\n /** Resources for the component */\n resources?: Partial<HNDesignsystemChip>;\n}\n\nconst Chip: React.FC<ChipProps> = props => {\n const { children, onChipClick, onCloseClick, chipButtonProps, closeButtonProps, testId, withCloseButton = true, resources } = props;\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemChip = {\n ...defaultResources,\n ...resources,\n removeAriaLabel: closeButtonProps?.['aria-label'] || resources?.removeAriaLabel || `${defaultResources.removeAriaLabel} ${children}`,\n };\n\n return (\n <div className={styles['chip']}>\n <button\n {...chipButtonProps}\n className={classNames(styles['chip__chip'])}\n onClick={onChipClick}\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.Tag}\n >\n <span\n className={classNames(styles['chip__chip__inner'], {\n [styles['chip__chip__inner--without-close']]: !withCloseButton,\n })}\n >\n {children}\n </span>\n </button>\n {withCloseButton && (\n <button\n {...closeButtonProps}\n aria-label={mergedResources.removeAriaLabel}\n className={classNames(styles['chip__close'])}\n onClick={onCloseClick}\n type=\"button\"\n data-testid={`${testId}-close`}\n data-analyticsid={AnalyticsId.Tag}\n >\n <span className={styles['chip__close__inner']}>\n <Icon svgIcon={X} size={IconSize.XXSmall} />\n </span>\n </button>\n )}\n </div>\n );\n};\n\nexport default Chip;\n","import Chip from './Chip';\nexport * from './Chip';\nexport default Chip;\n"],"mappings":";;;;;;;;;;;AEMA,IAAa,gBAAgB,aAAkD;CAC7E,QAAQ,UAAR;EACE,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB;EACrB,SACE,OAAO;CACX;AACF;;;ACiBA,IAAM,QAA4B,UAAS;CACzC,MAAM,EAAE,UAAU,aAAa,cAAc,iBAAiB,kBAAkB,QAAQ,kBAAkB,MAAM,cAAc;CAC9H,MAAM,EAAE,aAAa,YAA6B,gBAAgB,SAAS;CAC3E,MAAM,mBAAmB,aAAa,QAAQ;CAC9C,MAAM,kBAAsC;EAC1C,GAAG;EACH,GAAG;EACH,iBAAiB,mBAAmB,iBAAiB,WAAW,mBAAmB,GAAG,iBAAiB,gBAAgB,GAAG;CAC5H;CAEA,OACE,qBAAC,OAAD;EAAK,WAAW,OAAO;YAAvB,CACE,oBAAC,UAAD;GACE,GAAI;GACJ,WAAW,WAAW,OAAO,aAAa;GAC1C,SAAS;GACT,MAAK;GACL,eAAa;GACb,oBAAkB,YAAY;aAE9B,oBAAC,QAAD;IACE,WAAW,WAAW,OAAO,sBAAsB,GAChD,OAAO,sCAAsC,CAAC,gBACjD,CAAC;IAEA;GACG,CAAA;EACA,CAAA,GACP,mBACC,oBAAC,UAAD;GACE,GAAI;GACJ,cAAY,gBAAgB;GAC5B,WAAW,WAAW,OAAO,cAAc;GAC3C,SAAS;GACT,MAAK;GACL,eAAa,GAAG,OAAO;GACvB,oBAAkB,YAAY;aAE9B,oBAAC,QAAD;IAAM,WAAW,OAAO;cACtB,oBAAC,cAAD;KAAM,SAAS;KAAG,MAAM,SAAS;IAAU,CAAA;GACvC,CAAA;EACA,CAAA,CAEP;;AAET;;;AC1EA,IAAA,eAAe"}