@stihl-design-system/components 1.0.0-RC.10 → 1.0.0-RC.12

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 (330) hide show
  1. package/README.md +0 -9
  2. package/{accordion.B3UkxlAZ.js → accordion.Rvtiu8Y4.js} +3 -3
  3. package/accordion.d.ts +1 -0
  4. package/arialiveregions.Cyycgs8g.js +27 -0
  5. package/arialiveregions.d.ts +1 -0
  6. package/assets/Accordion.i4k5SMQM.css +1 -0
  7. package/assets/CheckboxGroup.BH1Br1dg.css +1 -0
  8. package/assets/Chip.DSdLuzoi.css +1 -0
  9. package/assets/CustomReactSelect.vHt8qNKC.css +1 -0
  10. package/assets/Dialog.BgzebVk4.css +1 -0
  11. package/assets/Drawer.Bauwxrk7.css +1 -0
  12. package/assets/Fieldset.DOdTbb7C.css +1 -0
  13. package/assets/Icon.DxRSBRSL.css +1 -0
  14. package/assets/InputPassword.CG7Ugu73.css +1 -0
  15. package/assets/InputSearch.CseChMc-.css +1 -0
  16. package/assets/InputStepper.C0eAYr7P.css +1 -0
  17. package/assets/Notification.DbRapUJo.css +1 -0
  18. package/assets/RadioGroup.BfMo157q.css +1 -0
  19. package/assets/Select.D4EXgIbz.css +1 -0
  20. package/assets/Textarea.KJGPTYMz.css +1 -0
  21. package/assets/Toast.CuafTAf7.css +1 -0
  22. package/assets/arialiveregions.DhsijBaL.css +1 -0
  23. package/assets/asterisk.BfVAUBO7.css +1 -0
  24. package/assets/button.DF4RBeC2.css +1 -0
  25. package/assets/buttonround.19uK_-oO.css +1 -0
  26. package/assets/checkbox.ByOoFouu.css +1 -0
  27. package/assets/chipgroup.BzfZLbkv.css +1 -0
  28. package/assets/flag.B-RLcMcf.css +1 -0
  29. package/assets/floatingactionbutton.E9HekT6S.css +1 -0
  30. package/assets/heading.u4f8Mz94.css +1 -0
  31. package/assets/input.BAkFKPW3.css +1 -0
  32. package/assets/link.DDJj0D1U.css +1 -0
  33. package/assets/linkstandalone.DIazcjIv.css +1 -0
  34. package/assets/logo.CnW8alZU.css +1 -0
  35. package/assets/optioncheckbox.BZaWtRD7.css +1 -0
  36. package/assets/radio.X-RTl_jo.css +1 -0
  37. package/assets/skiptocontent.PTL3256m.css +1 -0
  38. package/assets/spinner.2iWJWKyA.css +1 -0
  39. package/assets/switch.gw6aa3kx.css +1 -0
  40. package/assets/systemfeedback.BPz5YlPC.css +1 -0
  41. package/assets/text.DjTG_qNb.css +1 -0
  42. package/assets/title.rosWPEG3.css +1 -0
  43. package/asterisk.DpzETKdT.js +8 -0
  44. package/asterisk.d.ts +1 -0
  45. package/button.M4nXjcUn.js +135 -0
  46. package/button.d.ts +1 -0
  47. package/buttonround.E56F_805.js +118 -0
  48. package/buttonround.d.ts +1 -0
  49. package/checkbox.Cb2_ey6U.js +111 -0
  50. package/checkbox.d.ts +1 -0
  51. package/checkboxgroup.DBDmB-zR.js +8 -0
  52. package/checkboxgroup.d.ts +1 -0
  53. package/chip.C_1tGqvZ.js +10 -0
  54. package/chip.d.ts +2 -0
  55. package/chipgroup.BvTj1ziW.js +174 -0
  56. package/chipgroup.d.ts +2 -0
  57. package/chunks/Accordion.CB6jB3s_.js +125 -0
  58. package/chunks/{AriaLiveRegions.utils.D2ni4Yrf.js → AriaLiveRegions.utils.BGSZafnS.js} +2 -2
  59. package/chunks/CheckboxGroup.S6i5EOc4.js +92 -0
  60. package/chunks/Chip.CMlPUyOJ.js +142 -0
  61. package/chunks/{CustomReactSelect.ChAtL6fu.js → CustomReactSelect.Cg_XW3YK.js} +1056 -1049
  62. package/chunks/Dialog.CudsqNag.js +148 -0
  63. package/chunks/Drawer.ueG2Bzr9.js +154 -0
  64. package/chunks/Fieldset.Cjmkgxxk.js +99 -0
  65. package/chunks/{Icon.C2o2seDb.js → Icon.BCmt_XBG.js} +45 -45
  66. package/chunks/InputPassword.CNLbBFjx.js +143 -0
  67. package/chunks/InputSearch.CHA6mkX_.js +192 -0
  68. package/chunks/InputStepper.xmWGU9pU.js +294 -0
  69. package/chunks/Notification.o6pagKQy.js +93 -0
  70. package/chunks/RadioGroup.Crj7NoOs.js +137 -0
  71. package/chunks/Select.E6gLFYLk.js +194 -0
  72. package/chunks/Textarea.DUBSOpNL.js +198 -0
  73. package/chunks/Toast.DyEi2GEP.js +89 -0
  74. package/chunks/translate.isa3FHb8.js +11 -0
  75. package/{combobox.JL1Dsn3E.js → combobox.DUzv8jzM.js} +1 -1
  76. package/combobox.d.ts +1 -0
  77. package/components/Accordion/Accordion.d.ts +0 -1
  78. package/components/Accordion/Accordion.utils.d.ts +0 -1
  79. package/components/Button/Button.d.ts +0 -1
  80. package/components/ButtonRound/ButtonRound.d.ts +0 -1
  81. package/components/Checkbox/Checkbox.d.ts +0 -1
  82. package/components/CheckboxGroup/CheckboxGroup.d.ts +6 -7
  83. package/components/CheckboxGroup/CheckboxGroup.utils.d.ts +0 -1
  84. package/components/ChipGroup/Chip.d.ts +12 -0
  85. package/components/ChipGroup/ChipGroup.d.ts +42 -0
  86. package/components/ChipGroup/ChipGroup.utils.d.ts +60 -0
  87. package/components/ChipGroup/ChipGroup.utils.test.d.ts +1 -0
  88. package/components/Combobox/Combobox.d.ts +1 -2
  89. package/components/Combobox/Combobox.utils.d.ts +6 -1
  90. package/components/{CustomReactSelect → Combobox/CustomReactSelect}/CustomReactSelect.d.ts +2 -3
  91. package/components/Combobox/CustomReactSelect/CustomReactSelect.utils.d.ts +3 -0
  92. package/components/Combobox/CustomReactSelect/CustomReactSelect.utils.test.d.ts +1 -0
  93. package/components/{CustomReactSelect → Combobox/CustomReactSelect}/OptionCheckbox.d.ts +0 -1
  94. package/components/Dialog/Dialog.d.ts +0 -1
  95. package/components/Dialog/Dialog.utils.d.ts +0 -1
  96. package/components/Drawer/Drawer.d.ts +0 -1
  97. package/components/Drawer/Drawer.utils.d.ts +0 -1
  98. package/components/Fieldset/Fieldset.d.ts +0 -1
  99. package/components/Fieldset/Fieldset.utils.d.ts +7 -1
  100. package/components/Flag/Flag.d.ts +23 -0
  101. package/components/Flag/Flag.test.d.ts +1 -0
  102. package/components/Flag/Flag.utils.d.ts +2 -0
  103. package/components/FloatingActionButton/FloatingActionButton.d.ts +0 -1
  104. package/components/Heading/Heading.d.ts +0 -1
  105. package/components/Icon/Icon.d.ts +0 -1
  106. package/components/Icon/Icon.utils.d.ts +0 -1
  107. package/components/Input/Input.d.ts +0 -1
  108. package/components/Input/Input.utils.d.ts +0 -1
  109. package/components/InputPassword/InputPassword.d.ts +0 -1
  110. package/components/InputPassword/InputPassword.utils.d.ts +0 -1
  111. package/components/InputSearch/InputSearch.d.ts +0 -1
  112. package/components/InputSearch/InputSearch.utils.d.ts +0 -1
  113. package/components/InputStepper/InputStepper.d.ts +0 -1
  114. package/components/InputStepper/InputStepper.utils.d.ts +0 -1
  115. package/components/Link/Link.d.ts +0 -1
  116. package/components/LinkStandalone/LinkStandalone.d.ts +0 -1
  117. package/components/Logo/Logo.d.ts +1 -2
  118. package/components/Logo/Logo.utils.d.ts +0 -1
  119. package/components/Notification/Notification.d.ts +0 -1
  120. package/components/Notification/Notification.utils.d.ts +0 -1
  121. package/components/Radio/Radio.d.ts +1 -2
  122. package/components/RadioGroup/RadioGroup.d.ts +7 -8
  123. package/components/RadioGroup/RadioGroup.utils.d.ts +2 -3
  124. package/components/Select/Select.d.ts +0 -1
  125. package/components/Select/Select.utils.d.ts +0 -1
  126. package/components/SkipToContent/SkipToContent.d.ts +0 -1
  127. package/components/Spinner/Spinner.d.ts +0 -1
  128. package/components/Switch/Switch.d.ts +0 -1
  129. package/components/SystemFeedback/SystemFeedback.d.ts +0 -1
  130. package/components/Text/Text.d.ts +0 -1
  131. package/components/Textarea/Textarea.d.ts +0 -1
  132. package/components/Textarea/Textarea.utils.d.ts +0 -1
  133. package/components/Title/Title.d.ts +0 -1
  134. package/components/Toast/Toast.d.ts +0 -1
  135. package/components/Toast/Toast.utils.d.ts +0 -1
  136. package/components/Toast/ToastManager.d.ts +0 -1
  137. package/customreactselect.CXmBRqQ9.js +13 -0
  138. package/customreactselect.d.ts +2 -1
  139. package/{dialog.D3bJ0rsW.js → dialog.DYlBUsOD.js} +2 -2
  140. package/dialog.d.ts +1 -0
  141. package/{drawer.CNPF1-Kc.js → drawer.CvhbP1ra.js} +2 -2
  142. package/drawer.d.ts +1 -0
  143. package/fieldset.CtUGEdLv.js +11 -0
  144. package/fieldset.d.ts +1 -0
  145. package/flag.BKpsdB_-.js +43 -0
  146. package/flag.d.ts +2 -0
  147. package/floatingactionbutton.D5L0B7zI.js +87 -0
  148. package/floatingactionbutton.d.ts +1 -0
  149. package/heading.IPIYc5vW.js +50 -0
  150. package/heading.d.ts +1 -0
  151. package/{icon.BoMgOmC1.js → icon.Ck0BpI34.js} +1 -1
  152. package/icon.d.ts +1 -0
  153. package/index.d.ts +4 -0
  154. package/index.es.js +134 -114
  155. package/input.BEnCFNM-.js +239 -0
  156. package/input.d.ts +1 -0
  157. package/{inputpassword.nsYu6YeB.js → inputpassword.B-D_jB9w.js} +4 -4
  158. package/inputpassword.d.ts +1 -0
  159. package/{inputsearch.ZGIrDrcv.js → inputsearch.CaSpklR1.js} +4 -4
  160. package/inputsearch.d.ts +1 -0
  161. package/{inputstepper.BvY36hA1.js → inputstepper.C7KD1-0S.js} +4 -4
  162. package/inputstepper.d.ts +1 -0
  163. package/link.DREJAoPG.js +116 -0
  164. package/link.d.ts +1 -0
  165. package/linkstandalone.BBoEniZ_.js +79 -0
  166. package/linkstandalone.d.ts +1 -0
  167. package/logo.Hul8qCFo.js +65 -0
  168. package/logo.d.ts +1 -0
  169. package/{notification.BAS13UQ6.js → notification.JWhrkEcE.js} +3 -3
  170. package/notification.d.ts +1 -0
  171. package/optioncheckbox.BRUTnQnJ.js +43 -0
  172. package/optioncheckbox.d.ts +2 -1
  173. package/package.json +47 -40
  174. package/partials/index.js +407 -407
  175. package/partials/lib/partials.d.ts +0 -1
  176. package/radio.DEILy_lV.js +114 -0
  177. package/radio.d.ts +1 -0
  178. package/radiogroup.DeU-HdlP.js +10 -0
  179. package/radiogroup.d.ts +1 -0
  180. package/{select.C4OZMB-V.js → select.BYraFJzz.js} +4 -4
  181. package/select.d.ts +1 -0
  182. package/skiptocontent.BxvpIB7H.js +45 -0
  183. package/skiptocontent.d.ts +1 -0
  184. package/spinner.Bq97Og-6.js +58 -0
  185. package/spinner.d.ts +1 -0
  186. package/styles/fonts/STIHLContrafaceDigitalTextDemi.woff +0 -0
  187. package/styles/fonts/STIHLContrafaceDigitalTextDemi.woff2 +0 -0
  188. package/styles/fonts/font-face.min.css +1 -1
  189. package/styles/scss/ds/index.scss +19 -0
  190. package/styles/scss/ds/lib/animation.scss +21 -0
  191. package/styles/scss/ds/lib/breakpoints.scss +15 -0
  192. package/styles/scss/ds/lib/container-query.scss +54 -0
  193. package/styles/scss/ds/lib/ds-internal/_a11y.scss +15 -0
  194. package/styles/scss/{lib → ds/lib/ds-internal}/_focus.scss +13 -15
  195. package/styles/scss/ds/lib/ds-internal/_heading.scss +37 -0
  196. package/styles/scss/ds/lib/ds-internal/_helpers.scss +32 -0
  197. package/styles/scss/ds/lib/ds-internal/_high-contrast.scss +6 -0
  198. package/styles/scss/ds/lib/ds-internal/_hover.scss +6 -0
  199. package/styles/scss/ds/lib/ds-internal/_index.scss +9 -0
  200. package/styles/scss/ds/lib/ds-internal/_link.scss +62 -0
  201. package/styles/scss/ds/lib/ds-internal/_spacing-dynamic.scss +53 -0
  202. package/styles/scss/ds/lib/ds-internal/_text.scss +30 -0
  203. package/styles/scss/ds/lib/grid-extended.scss +11 -0
  204. package/styles/scss/ds/lib/grid-full.scss +6 -0
  205. package/styles/scss/ds/lib/grid-main.scss +119 -0
  206. package/styles/scss/ds/lib/grid-narrow.scss +14 -0
  207. package/styles/scss/ds/lib/grid-sidebar-sidebar.scss +52 -0
  208. package/styles/scss/{lib/_grid-sidebar.scss → ds/lib/grid-sidebar.scss} +23 -32
  209. package/styles/scss/{lib/_grid.scss → ds/lib/grid.scss} +15 -17
  210. package/styles/scss/ds/lib/heading.scss +75 -0
  211. package/styles/scss/ds/lib/link.scss +74 -0
  212. package/styles/scss/ds/lib/media-query.scss +32 -0
  213. package/styles/scss/{lib/_shadow.scss → ds/lib/shadow.scss} +2 -2
  214. package/styles/scss/ds/lib/spacing-dynamic.scss +7 -0
  215. package/styles/scss/ds/lib/spacing.scss +20 -0
  216. package/styles/scss/ds/lib/text.scss +83 -0
  217. package/styles/scss/ds/lib/theme.scss +162 -0
  218. package/styles/scss/ds/lib/transition.scss +36 -0
  219. package/switch.DI8YYa5G.js +65 -0
  220. package/switch.d.ts +1 -0
  221. package/{systemfeedback.ZzRUAVYX.js → systemfeedback.C3Pfxxpp.js} +6 -6
  222. package/systemfeedback.d.ts +1 -0
  223. package/text.DThvTwm8.js +57 -0
  224. package/text.d.ts +1 -0
  225. package/{textarea.CtQtGqn5.js → textarea.CBvH0ljM.js} +3 -3
  226. package/textarea.d.ts +1 -0
  227. package/title.DqzdB2Gq.js +36 -0
  228. package/title.d.ts +1 -0
  229. package/toast.d.ts +1 -0
  230. package/{toast.DVd9dLs2.js → toast.n1QUINSA.js} +3 -3
  231. package/{toastmanager.Dh0gzFkM.js → toastmanager.B7EZ4JSI.js} +2 -2
  232. package/toastmanager.d.ts +1 -0
  233. package/utils/index.d.ts +1 -0
  234. package/utils/translate.d.ts +11 -0
  235. package/utils/translate.test.d.ts +1 -0
  236. package/utils/useBreakpoint.d.ts +0 -1
  237. package/utils/useIsomorphicLayoutEffect.d.ts +0 -1
  238. package/utils/vitest.setup.d.ts +0 -1
  239. package/arialiveregions.BK4T7Vhk.js +0 -27
  240. package/assets/Accordion.lFv7Q_RG.css +0 -1
  241. package/assets/CustomReactSelect.CMkn-EGK.css +0 -1
  242. package/assets/Dialog.fiQvxJg_.css +0 -1
  243. package/assets/Drawer.BqBgbSuP.css +0 -1
  244. package/assets/Fieldset.qHYeUFZt.css +0 -1
  245. package/assets/Icon.Duy_0R8w.css +0 -1
  246. package/assets/InputPassword.Cf394z47.css +0 -1
  247. package/assets/InputSearch.eCRQoxjN.css +0 -1
  248. package/assets/InputStepper.B80KulYE.css +0 -1
  249. package/assets/Notification.DK6agBGS.css +0 -1
  250. package/assets/RadioGroup.Bz3_xkZU.css +0 -1
  251. package/assets/Select.BptsMxz4.css +0 -1
  252. package/assets/Textarea.CIIVh03G.css +0 -1
  253. package/assets/Toast.Dsvs1zdM.css +0 -1
  254. package/assets/arialiveregions.GsGx2USO.css +0 -1
  255. package/assets/asterisk.DlJ4YtSZ.css +0 -1
  256. package/assets/button.B1O7Yw3Q.css +0 -1
  257. package/assets/buttonround.DlH_ipDo.css +0 -1
  258. package/assets/checkbox.K4CVYK9g.css +0 -1
  259. package/assets/floatingactionbutton.DRYentYC.css +0 -1
  260. package/assets/heading.6bER-Eac.css +0 -1
  261. package/assets/input.C0MrSbQu.css +0 -1
  262. package/assets/link.vtTST2ki.css +0 -1
  263. package/assets/linkstandalone.BtAcziZ7.css +0 -1
  264. package/assets/logo.pETQEsvZ.css +0 -1
  265. package/assets/optioncheckbox.BJJAph5_.css +0 -1
  266. package/assets/radio.9kpIO3HC.css +0 -1
  267. package/assets/skiptocontent.CHcqLS7S.css +0 -1
  268. package/assets/spinner.D_Nnf1ZG.css +0 -1
  269. package/assets/switch.2DQF2zH-.css +0 -1
  270. package/assets/systemfeedback.Sq0bAIyf.css +0 -1
  271. package/assets/text.Dhb_l50R.css +0 -1
  272. package/assets/title.f74Bosn-.css +0 -1
  273. package/asterisk.DDn-yX4P.js +0 -8
  274. package/button.DH0h6uPs.js +0 -135
  275. package/buttonround.0mw4zzlU.js +0 -118
  276. package/checkbox.DETR3e3X.js +0 -112
  277. package/checkboxgroup.CZqrlF-x.js +0 -9
  278. package/chunks/Accordion.pI3JyHJL.js +0 -125
  279. package/chunks/CheckboxGroup.4J_gZ_XJ.js +0 -87
  280. package/chunks/Dialog.Z5ESJQMi.js +0 -148
  281. package/chunks/Drawer.BdowMqE0.js +0 -154
  282. package/chunks/Fieldset.COGbZwry.js +0 -99
  283. package/chunks/InputPassword.Dgo95-PU.js +0 -140
  284. package/chunks/InputSearch.BFof0pBn.js +0 -189
  285. package/chunks/InputStepper.4IqLa5tX.js +0 -291
  286. package/chunks/Notification.BhwbaXqk.js +0 -93
  287. package/chunks/RadioGroup.C5jbCJM4.js +0 -132
  288. package/chunks/RadioGroup.module.BBZwHDjW.js +0 -11
  289. package/chunks/Select.fXeQJXtz.js +0 -191
  290. package/chunks/Textarea.Bewrp0Za.js +0 -195
  291. package/chunks/Toast.DA_CQ9J-.js +0 -89
  292. package/components/CustomReactSelect/CustomReactSelect.utils.d.ts +0 -16
  293. package/customreactselect.Dg8Kgq3e.js +0 -13
  294. package/fieldset.CTshPWYX.js +0 -11
  295. package/floatingactionbutton.CCIj9Fjr.js +0 -87
  296. package/heading.CAkraI2D.js +0 -50
  297. package/input.CTgeAYdu.js +0 -236
  298. package/link.DAZNwQ0a.js +0 -116
  299. package/linkstandalone.C9X3er7g.js +0 -80
  300. package/logo.CEO6OV7u.js +0 -65
  301. package/optioncheckbox.DZWwtx6f.js +0 -43
  302. package/radio.CWGJtmKl.js +0 -115
  303. package/radiogroup.BhffFqN3.js +0 -11
  304. package/skiptocontent.C4yQfWr2.js +0 -46
  305. package/spinner.D-xrotcu.js +0 -58
  306. package/styles/scss/_index.scss +0 -23
  307. package/styles/scss/lib/_a11y.scss +0 -15
  308. package/styles/scss/lib/_animation.scss +0 -21
  309. package/styles/scss/lib/_breakpoints.scss +0 -16
  310. package/styles/scss/lib/_container-query.scss +0 -58
  311. package/styles/scss/lib/_grid-extended.scss +0 -11
  312. package/styles/scss/lib/_grid-full.scss +0 -6
  313. package/styles/scss/lib/_grid-main.scss +0 -117
  314. package/styles/scss/lib/_grid-narrow.scss +0 -16
  315. package/styles/scss/lib/_grid-sidebar-sidebar.scss +0 -50
  316. package/styles/scss/lib/_heading.scss +0 -107
  317. package/styles/scss/lib/_helpers.scss +0 -15
  318. package/styles/scss/lib/_high-contrast.scss +0 -24
  319. package/styles/scss/lib/_hover.scss +0 -10
  320. package/styles/scss/lib/_link.scss +0 -126
  321. package/styles/scss/lib/_media-query.scss +0 -32
  322. package/styles/scss/lib/_spacing.scss +0 -32
  323. package/styles/scss/lib/_text.scss +0 -110
  324. package/styles/scss/lib/_theme.scss +0 -162
  325. package/styles/scss/lib/_transition.scss +0 -45
  326. package/switch.CmpNUC7s.js +0 -65
  327. package/text.rgDKQBrU.js +0 -57
  328. package/title.LY1ylQsb.js +0 -36
  329. package/utils/render-in-iframe.d.ts +0 -15
  330. /package/components/{CustomReactSelect/CustomReactSelect.utils.test.d.ts → ChipGroup/ChipGroup.test.d.ts} +0 -0
@@ -1,5 +1,4 @@
1
1
  import { Format } from '../shared';
2
-
3
2
  type GetMetaIconLinksOptions = {
4
3
  format?: Format;
5
4
  };
@@ -0,0 +1,114 @@
1
+ "use client";
2
+ import { j as i } from "./chunks/jsx-runtime.C115EyI4.js";
3
+ import { c as h } from "./chunks/index.CvOaL64Y.js";
4
+ import { forwardRef as $, useRef as C, useState as E, useEffect as L, useCallback as O } from "react";
5
+ import { u as P } from "./chunks/useBreakpoint.5xBNDiCf.js";
6
+ import './assets/radio.X-RTl_jo.css';const v = (o) => o.replace(/\s+/g, ""), U = "ds-radio_root_tdhm5_1", q = "ds-radio_root--disabled_tdhm5_21", z = "ds-radio_root--with-custom-area_tdhm5_24", F = "ds-radio_radio_tdhm5_28", G = "ds-radio_dot_tdhm5_45", J = "ds-radio_radio--invalid_tdhm5_69", K = "ds-radio_label_tdhm5_74", M = "ds-radio_label--bold_tdhm5_88", Q = "ds-radio_label--hidden_tdhm5_99", T = "ds-radio_label--with-custom-area_tdhm5_111", X = "ds-radio_custom-area_tdhm5_115", Y = "ds-radio_hint_tdhm5_123", Z = "ds-radio_hint--visible_tdhm5_146", tt = "ds-radio_hint--unchecked-hidden_tdhm5_150", dt = "ds-radio_hint--hidden_tdhm5_155", et = "ds-radio_input_tdhm5_168", t = {
7
+ root: U,
8
+ "root--disabled": "ds-radio_root--disabled_tdhm5_21",
9
+ rootDisabled: q,
10
+ "root--with-custom-area": "ds-radio_root--with-custom-area_tdhm5_24",
11
+ rootWithCustomArea: z,
12
+ radio: F,
13
+ dot: G,
14
+ "radio--invalid": "ds-radio_radio--invalid_tdhm5_69",
15
+ radioInvalid: J,
16
+ label: K,
17
+ "label--bold": "ds-radio_label--bold_tdhm5_88",
18
+ labelBold: M,
19
+ "label--hidden": "ds-radio_label--hidden_tdhm5_99",
20
+ labelHidden: Q,
21
+ "label--with-custom-area": "ds-radio_label--with-custom-area_tdhm5_111",
22
+ labelWithCustomArea: T,
23
+ "custom-area": "ds-radio_custom-area_tdhm5_115",
24
+ customArea: X,
25
+ hint: Y,
26
+ "hint--visible": "ds-radio_hint--visible_tdhm5_146",
27
+ hintVisible: Z,
28
+ "hint--unchecked-hidden": "ds-radio_hint--unchecked-hidden_tdhm5_150",
29
+ hintUncheckedHidden: tt,
30
+ "hint--hidden": "ds-radio_hint--hidden_tdhm5_155",
31
+ hintHidden: dt,
32
+ input: et
33
+ }, it = $(
34
+ ({
35
+ label: o,
36
+ name: u,
37
+ value: b,
38
+ checked: f,
39
+ className: x,
40
+ customArea: s,
41
+ defaultChecked: k = !1,
42
+ disabled: a = !1,
43
+ hideLabel: j = !1,
44
+ hint: r,
45
+ invalid: N = !1,
46
+ isBold: g = !1,
47
+ hideUncheckedHint: l = !1,
48
+ onChange: _,
49
+ ...H
50
+ }, n) => {
51
+ const w = C(null), d = C(null), [D, A] = E(k), m = f !== void 0, c = m ? f : D;
52
+ L(() => {
53
+ d.current && l && ((d.current.style.height === "0px" || d.current.style.height === "") && c ? (d.current.style.height = `${d.current.scrollHeight}px`, d.current.style.opacity = "1") : (d.current.style.opacity = "0", d.current.style.height = "0px"));
54
+ }, [d, c]);
55
+ const p = P(j), W = h(
56
+ t.root,
57
+ {
58
+ [t.rootDisabled]: a,
59
+ [t.rootWithCustomArea]: !!s
60
+ },
61
+ x
62
+ ), B = h(t.label, {
63
+ [t.labelBold]: g,
64
+ // hide label only visually to keep them available for assistive technologies
65
+ [t.labelHidden]: p,
66
+ [t.labelWithCustomArea]: !!s
67
+ }), V = () => !l && r ? !0 : !!(l && r && c), I = h(t.hint, {
68
+ [t.hintHidden]: p,
69
+ [t.hintUncheckedHidden]: l,
70
+ [t.hintVisible]: V()
71
+ }), R = h(t.radio, {
72
+ [t.radioInvalid]: N
73
+ }), S = O(
74
+ (e) => {
75
+ if (a) {
76
+ e.preventDefault();
77
+ return;
78
+ }
79
+ m || A(e.target.checked), _ && _(e);
80
+ },
81
+ [a, m, _]
82
+ ), y = r ? `${v(u)}-${v(b)}-description` : void 0;
83
+ return /* @__PURE__ */ i.jsxs("label", { className: W, children: [
84
+ /* @__PURE__ */ i.jsx(
85
+ "input",
86
+ {
87
+ type: "radio",
88
+ value: b,
89
+ name: u,
90
+ className: t.input,
91
+ ref: (e) => {
92
+ typeof n == "function" ? n(e) : n !== null && (n.current = e), w.current = e;
93
+ },
94
+ onChange: S,
95
+ ...H,
96
+ disabled: a,
97
+ checked: c,
98
+ "aria-label": typeof o == "string" ? o : void 0,
99
+ "aria-describedby": y
100
+ }
101
+ ),
102
+ /* @__PURE__ */ i.jsx("span", { className: R, children: /* @__PURE__ */ i.jsx("div", { className: t.dot }) }),
103
+ /* @__PURE__ */ i.jsxs("span", { className: B, children: [
104
+ o,
105
+ s && /* @__PURE__ */ i.jsx("div", { className: t.customArea, children: s }),
106
+ /* @__PURE__ */ i.jsx("span", { id: y, className: I, ref: d, children: r })
107
+ ] })
108
+ ] });
109
+ }
110
+ );
111
+ it.displayName = "DSRadio";
112
+ export {
113
+ it as DSRadio
114
+ };
package/radio.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './components/Radio/Radio'
2
+ export {}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import "./chunks/jsx-runtime.C115EyI4.js";
3
+ import "./chunks/index.CvOaL64Y.js";
4
+ import "react";
5
+ import "./chunks/Fieldset.Cjmkgxxk.js";
6
+ import "./radio.DEILy_lV.js";
7
+ import { D as a } from "./chunks/RadioGroup.Crj7NoOs.js";
8
+ export {
9
+ a as DSRadioGroup
10
+ };
package/radiogroup.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './components/RadioGroup/RadioGroup'
2
+ export {}
@@ -3,10 +3,10 @@ import "./chunks/jsx-runtime.C115EyI4.js";
3
3
  import "./chunks/index.CvOaL64Y.js";
4
4
  import "react";
5
5
  import "./chunks/useBreakpoint.5xBNDiCf.js";
6
- import "./asterisk.DDn-yX4P.js";
7
- import "./chunks/Icon.C2o2seDb.js";
8
- import "./systemfeedback.ZzRUAVYX.js";
9
- import { D as s } from "./chunks/Select.fXeQJXtz.js";
6
+ import "./asterisk.DpzETKdT.js";
7
+ import "./chunks/Icon.BCmt_XBG.js";
8
+ import "./systemfeedback.C3Pfxxpp.js";
9
+ import { D as s } from "./chunks/Select.E6gLFYLk.js";
10
10
  export {
11
11
  s as DSSelect
12
12
  };
package/select.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './components/Select/Select'
2
+ export {}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import { j as k } from "./chunks/jsx-runtime.C115EyI4.js";
3
+ import { c as p } from "./chunks/index.CvOaL64Y.js";
4
+ import { g as s } from "./chunks/helpers.B1JT5ShS.js";
5
+ import "react";
6
+ import { DSLink as c } from "./link.DREJAoPG.js";
7
+ import './assets/skiptocontent.PTL3256m.css';const h = "ds-skip-to-content_root_uqkjt_1", m = "ds-skip-to-content_root--dark_uqkjt_8", r = {
8
+ root: h,
9
+ "root--dark": "ds-skip-to-content_root--dark_uqkjt_8",
10
+ rootDark: m
11
+ }, _ = ({
12
+ children: e = "Skip to main content",
13
+ className: n,
14
+ targetElementId: t = "main",
15
+ theme: o = "light",
16
+ ...a
17
+ }) => {
18
+ t.startsWith("#") && console.warn(
19
+ s(
20
+ "DSSkipToContent",
21
+ 'The targetElementId should not start with a "#" character. Please provide the id of the element you want to skip to.'
22
+ )
23
+ ), (t.startsWith("http") || t.startsWith(".")) && console.warn(
24
+ s(
25
+ "DSSkipToContent",
26
+ 'The targetElementId should not start with "http" or ".". Please provide the id of the element you want to skip to.'
27
+ )
28
+ );
29
+ const i = p(r.root, n, {
30
+ [r.rootDark]: o === "dark"
31
+ });
32
+ return /* @__PURE__ */ k.jsx(
33
+ c,
34
+ {
35
+ ...a,
36
+ className: i,
37
+ href: `#${t}`,
38
+ theme: o,
39
+ children: e
40
+ }
41
+ );
42
+ };
43
+ export {
44
+ _ as DSSkipToContent
45
+ };
@@ -1 +1,2 @@
1
1
  export * from './components/SkipToContent/SkipToContent'
2
+ export {}
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { j as s } from "./chunks/jsx-runtime.C115EyI4.js";
3
+ import { c as l } from "./chunks/index.CvOaL64Y.js";
4
+ import { D as m } from "./chunks/Icon.BCmt_XBG.js";
5
+ import './assets/spinner.2iWJWKyA.css';const _ = "ds-spinner_root_15hmy_1", d = "ds-spinner_root-size-small_15hmy_7", z = "ds-spinner_root-size-medium_15hmy_11", c = "ds-spinner_root-size-large_15hmy_15", h = "ds-spinner_root-size-x-large_15hmy_19", p = "ds-spinner_root-size-inherit_15hmy_23", S = "ds-spinner_rotate_15hmy_1", y = "ds-spinner_screenReaderOnly_15hmy_48", e = {
6
+ root: _,
7
+ "root-size-small": "ds-spinner_root-size-small_15hmy_7",
8
+ rootSizeSmall: d,
9
+ "root-size-medium": "ds-spinner_root-size-medium_15hmy_11",
10
+ rootSizeMedium: z,
11
+ "root-size-large": "ds-spinner_root-size-large_15hmy_15",
12
+ rootSizeLarge: c,
13
+ "root-size-x-large": "ds-spinner_root-size-x-large_15hmy_19",
14
+ rootSizeXLarge: h,
15
+ "root-size-inherit": "ds-spinner_root-size-inherit_15hmy_23",
16
+ rootSizeInherit: p,
17
+ rotate: S,
18
+ screenReaderOnly: y
19
+ }, L = ({
20
+ aria: o,
21
+ className: i,
22
+ size: r = "small",
23
+ theme: t = "light",
24
+ ...n
25
+ }) => {
26
+ const a = l(e.root, i, {
27
+ [e.rootSizeSmall]: r === "small",
28
+ [e.rootSizeMedium]: r === "medium",
29
+ [e.rootSizeLarge]: r === "large",
30
+ [e.rootSizeXLarge]: r === "x-large",
31
+ [e.rootSizeInherit]: r === "inherit"
32
+ });
33
+ return /* @__PURE__ */ s.jsxs(
34
+ "span",
35
+ {
36
+ className: a,
37
+ role: "alert",
38
+ "aria-live": "assertive",
39
+ "aria-label": (o == null ? void 0 : o["aria-label"]) || void 0,
40
+ ...n,
41
+ children: [
42
+ /* @__PURE__ */ s.jsx("span", { className: e.screenReaderOnly, children: " " }),
43
+ /* @__PURE__ */ s.jsx(
44
+ m,
45
+ {
46
+ name: "loading-spinner",
47
+ theme: t,
48
+ focusable: "false",
49
+ "aria-hidden": "true"
50
+ }
51
+ )
52
+ ]
53
+ }
54
+ );
55
+ };
56
+ export {
57
+ L as DSSpinner
58
+ };
package/spinner.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './components/Spinner/Spinner'
2
+ export {}
@@ -1 +1 @@
1
- @font-face{font-family:STIHL Contraface Digital Display Title;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalDisplayTitling.woff2) format("woff2"),url(./STIHLContrafaceDigitalDisplayTitling.woff) format("woff")}@font-face{font-family:STIHL Contraface Digital Text Bold;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalText-Bold.woff2) format("woff2"),url(./STIHLContrafaceDigitalText-Bold.woff) format("woff")}@font-face{font-family:STIHL Contraface Digital Text Regular;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalText.woff2) format("woff2"),url(./STIHLContrafaceDigitalText.woff) format("woff")}
1
+ @font-face{font-family:STIHL Contraface Digital Display Title;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalDisplayTitling.woff2) format("woff2"),url(./STIHLContrafaceDigitalDisplayTitling.woff) format("woff")}@font-face{font-family:STIHL Contraface Digital Text Bold;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalText-Bold.woff2) format("woff2"),url(./STIHLContrafaceDigitalText-Bold.woff) format("woff")}@font-face{font-family:STIHL Contraface Digital Text Regular;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalText.woff2) format("woff2"),url(./STIHLContrafaceDigitalText.woff) format("woff")}@font-face{font-family:STIHL Contraface Digital Text Demi;font-weight:400;font-style:normal;font-display:swap;src:url(./STIHLContrafaceDigitalTextDemi.woff2) format("woff2"),url(./STIHLContrafaceDigitalTextDemi.woff) format("woff")}
@@ -0,0 +1,19 @@
1
+ @forward 'lib/animation';
2
+ @forward 'lib/breakpoints';
3
+ @forward 'lib/container-query';
4
+ @forward 'lib/grid';
5
+ @forward 'lib/grid-extended';
6
+ @forward 'lib/grid-full';
7
+ @forward 'lib/grid-main';
8
+ @forward 'lib/grid-narrow';
9
+ @forward 'lib/grid-sidebar';
10
+ @forward 'lib/grid-sidebar-sidebar';
11
+ @forward 'lib/heading';
12
+ @forward 'lib/link';
13
+ @forward 'lib/media-query';
14
+ @forward 'lib/shadow';
15
+ @forward 'lib/spacing';
16
+ @forward 'lib/spacing-dynamic';
17
+ @forward 'lib/text';
18
+ @forward 'lib/theme';
19
+ @forward 'lib/transition';
@@ -0,0 +1,21 @@
1
+ $animation-duration-100: var(--ds-animation-duration, 100ms);
2
+ $animation-duration-250: var(--ds-animation-duration, 250ms);
3
+ $animation-duration-400: var(--ds-animation-duration, 400ms);
4
+
5
+ $animation-durations: (
6
+ '100': $animation-duration-100,
7
+ '250': $animation-duration-250,
8
+ '400': $animation-duration-400,
9
+ );
10
+
11
+ $motion-functional-linear: linear;
12
+ $motion-functional-ease-in: cubic-bezier(0.5, 0, 1, 1);
13
+ $motion-functional-ease-out: cubic-bezier(0, 0, 0.5, 1);
14
+ $motion-functional-ease-in-out: cubic-bezier(0.5, 0, 0.5, 1);
15
+
16
+ $animation-easing-functions: (
17
+ 'linear': $motion-functional-linear,
18
+ 'ease-in': $motion-functional-ease-in,
19
+ 'ease-out': $motion-functional-ease-out,
20
+ 'ease-in-out': $motion-functional-ease-in-out,
21
+ );
@@ -0,0 +1,15 @@
1
+ $breakpoint-base: 0;
2
+ $breakpoint-s: 320;
3
+ $breakpoint-m: 768;
4
+ $breakpoint-l: 1024;
5
+ $breakpoint-xl: 1536;
6
+ $breakpoint-xxl: 1668;
7
+
8
+ $breakpoints: (
9
+ 'base': $breakpoint-base,
10
+ 's': $breakpoint-s,
11
+ 'm': $breakpoint-m,
12
+ 'l': $breakpoint-l,
13
+ 'xl': $breakpoint-xl,
14
+ 'xxl': $breakpoint-xxl,
15
+ );
@@ -0,0 +1,54 @@
1
+ @use 'sass:map';
2
+ @use 'breakpoints' as *;
3
+
4
+ @mixin container-query-min($min: null, $container-name: null) {
5
+ @if map.has-key($breakpoints, $min) {
6
+ $value: #{map.get($breakpoints, $min)}px;
7
+ @if $container-name {
8
+ @container #{$container-name} (min-width: #{$value}) {
9
+ @content;
10
+ }
11
+ } @else {
12
+ @container (min-width: #{$value}) {
13
+ @content;
14
+ }
15
+ }
16
+ } @else {
17
+ @error "[STIHL Design System] - [ds.container-query-min()]: Passed '#{$min}' breakpoint is not available in ds.container-query-min() mixin.";
18
+ }
19
+ }
20
+
21
+ @mixin container-query-max($max: null, $container-name: null) {
22
+ @if map.has-key($breakpoints, $max) {
23
+ $value: #{map.get($breakpoints, $max)}px;
24
+ @if $container-name {
25
+ @container #{$container-name} (width < #{$value}) {
26
+ @content;
27
+ }
28
+ } @else {
29
+ @container (width < #{$value}) {
30
+ @content;
31
+ }
32
+ }
33
+ } @else {
34
+ @error "[STIHL Design System] - [ds.container-query-max()]: Passed '#{$max}' breakpoint is not available in ds.container-query-max() mixin.";
35
+ }
36
+ }
37
+
38
+ @mixin container-query-min-max($min: null, $max: null, $container-name: null) {
39
+ @if map.has-key($breakpoints, $min) and map.has-key($breakpoints, $max) {
40
+ $min-value: #{map.get($breakpoints, $min)}px;
41
+ $max-value: #{map.get($breakpoints, $max)}px;
42
+ @if $container-name {
43
+ @container #{$container-name} (min-width: #{$min-value}) and (width < #{$max-value}) {
44
+ @content;
45
+ }
46
+ } @else {
47
+ @container (min-width: #{$min-value}) and (width < #{$max-value}) {
48
+ @content;
49
+ }
50
+ }
51
+ } @else {
52
+ @error "[STIHL Design System] - [ds.container-query-min-max()]: Passed '#{$min}' and/or '#{$max}' breakpoint is not available in ds.container-query-min-max() mixin.";
53
+ }
54
+ }
@@ -0,0 +1,15 @@
1
+
2
+
3
+
4
+ @mixin visually-hidden {
5
+ border: 0;
6
+ clip: rect(0 0 0 0);
7
+ width: 1px;
8
+ height: 1px;
9
+ margin: -1px;
10
+ overflow: hidden;
11
+ padding: 0;
12
+ position: absolute;
13
+ text-indent: -999999px;
14
+ white-space: nowrap;
15
+ }
@@ -1,12 +1,12 @@
1
- @import '_theme';
2
- @import '_high-contrast';
1
+ @use '../theme' as *;
2
+ @use '_high-contrast' as *;
3
3
 
4
4
  @mixin outline($theme, $offset, $thickness: 2px) {
5
5
  outline: $thickness solid;
6
6
  outline-color: if(
7
7
  $theme == 'light',
8
- $ds-theme-light-border-color-focus,
9
- $ds-theme-dark-border-color-focus
8
+ $theme-light-border-color-focus,
9
+ $theme-dark-border-color-focus
10
10
  );
11
11
  outline-offset: $offset;
12
12
 
@@ -16,29 +16,27 @@
16
16
  }
17
17
  }
18
18
 
19
- // Read more here: https://www.tpgi.com/focus-visible-and-backwards-compatibility/
20
- @mixin ds-focus($theme: 'light', $offset: 2px, $thickness: 2px) {
19
+
20
+ @mixin focus($theme: 'light', $offset: 2px, $thickness: 2px) {
21
21
  &:focus {
22
22
  @include outline($theme, $offset, $thickness);
23
23
  }
24
24
  @supports selector(:focus-visible) {
25
25
  &:focus {
26
- /* revert all the above focus styles */
26
+
27
27
  outline: revert;
28
28
  outline-offset: revert;
29
29
  }
30
30
  &:focus-visible {
31
- /* and then reapply the styles here instead */
31
+
32
32
  @include outline($theme, $offset, $thickness);
33
33
  }
34
34
  }
35
35
  }
36
36
 
37
- /**
38
- * Adds focus to the before pseudo element, removing the original focus behavior on the parent element
39
- */
40
- @mixin ds-focus-pseudo($theme: 'light', $offset: 2px, $thickness: 2px) {
41
- // remove focus from actual element
37
+
38
+ @mixin focus-pseudo($theme: 'light', $offset: 2px, $thickness: 2px) {
39
+
42
40
  &:focus,
43
41
  &:focus-visible {
44
42
  outline: none;
@@ -50,12 +48,12 @@
50
48
 
51
49
  @supports selector(:focus-visible) {
52
50
  &:focus::before {
53
- /* revert all the above focus styles */
51
+
54
52
  outline: revert;
55
53
  outline-offset: revert;
56
54
  }
57
55
  &:focus-visible::before {
58
- /* and then reapply the styles here instead */
56
+
59
57
  @include outline($theme, $offset, $thickness);
60
58
  }
61
59
  }
@@ -0,0 +1,37 @@
1
+ @use 'sass:string';
2
+ @use '../media-query' as *;
3
+
4
+
5
+ @mixin base-heading($fontFamily, $fontSize, $lineHeight) {
6
+ font-family: #{string.unquote(
7
+ $fontFamily +
8
+ ', -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif'
9
+ )};
10
+ font-style: normal;
11
+ font-variant: normal;
12
+ font-weight: normal;
13
+ font-size: $fontSize;
14
+ line-height: $lineHeight;
15
+ }
16
+
17
+
18
+ @mixin base-heading-bold($fontFamily, $fontSize, $lineHeight) {
19
+ @include base-heading($fontFamily, $fontSize, $lineHeight);
20
+
21
+
22
+ font-size-adjust: 0.426;
23
+ }
24
+
25
+
26
+ @mixin base-heading-display-title($fontFamily, $fontSize, $lineHeight) {
27
+ @include base-heading($fontFamily, $fontSize, $lineHeight);
28
+
29
+ font-size-adjust: cap-height 0.68;
30
+ }
31
+
32
+ @mixin responsive-heading($min, $fontSize, $lineHeight) {
33
+ @include media-query-min($min: $min) {
34
+ font-size: $fontSize;
35
+ line-height: $lineHeight;
36
+ }
37
+ }
@@ -0,0 +1,32 @@
1
+ @use 'sass:color';
2
+ @use 'sass:meta';
3
+ @use 'sass:string';
4
+ @use '../spacing' as *;
5
+
6
+ @function px-to-rem($pixels, $base-font-size: 16px) {
7
+ @return #{calc($pixels / $base-font-size)}rem;
8
+ }
9
+
10
+
11
+ @function urlEncodeHexColor($string) {
12
+ @if meta.type-of($string) == 'color' and string.index(#{$string}, '#') == 1 {
13
+ $hex: string.slice(color.ie-hex-str($string), 4);
14
+ $string: string.unquote('#{$hex}');
15
+
16
+ @return '%23' + $string;
17
+ }
18
+
19
+ @return $string;
20
+ }
21
+
22
+
23
+
24
+
25
+
26
+ @function adjust-spacing-for-border-1($spacing) {
27
+ @return #{calc($spacing - $spacing-1)};
28
+ }
29
+
30
+ @function adjust-spacing-for-border-2($spacing) {
31
+ @return #{calc($spacing - $spacing-2)};
32
+ }
@@ -0,0 +1,6 @@
1
+
2
+ @mixin high-contrast-media-query {
3
+ @media screen and (forced-colors: active) {
4
+ @content;
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+
2
+ @mixin hover-media-query {
3
+ @media (hover: hover) {
4
+ @content;
5
+ }
6
+ }
@@ -0,0 +1,9 @@
1
+ @forward '_a11y';
2
+ @forward '_focus';
3
+ @forward '_hover';
4
+ @forward '_heading';
5
+ @forward '_helpers';
6
+ @forward '_high-contrast';
7
+ @forward '_link';
8
+ @forward '_spacing-dynamic';
9
+ @forward '_text';
@@ -0,0 +1,62 @@
1
+ @use '_focus' as *;
2
+ @use '_helpers' as *;
3
+ @use '_high-contrast' as *;
4
+ @use '_hover' as *;
5
+
6
+
7
+
8
+
9
+
10
+ @mixin link-variant(
11
+ $content-color,
12
+ $background-color-hover,
13
+ $content-color-hover,
14
+ $theme: 'light'
15
+ ) {
16
+ & {
17
+ color: $content-color;
18
+ }
19
+
20
+ &:link,
21
+ &:visited {
22
+ color: $content-color;
23
+ }
24
+
25
+ &:active {
26
+ background-color: $background-color-hover;
27
+ color: $content-color-hover;
28
+ }
29
+
30
+ @include hover-media-query {
31
+ &:hover {
32
+ background-color: $background-color-hover;
33
+ color: $content-color-hover;
34
+ @include high-contrast-media-query {
35
+ background-color: Canvas;
36
+ }
37
+ }
38
+ }
39
+
40
+ &[href^="http://"]::after,
41
+ &[href^="https://"]::after
42
+ {
43
+ content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{urlEncodeHexColor($content-color)}' viewBox='0 0 16 16' focusable='false' width='100%25' height='100%25'%3E%3Cpath fill-rule='evenodd' d='M9 2V0h7v7h-2V3.4L8.1 9.3 6.7 7.9 12.6 2H9Zm5 8h-2v4H2V4h4V2H0v14h14v-6Z' clip-rule='evenodd'/%3E%3C/svg%3E");
44
+ }
45
+
46
+ &[href^='#']::after {
47
+ content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{urlEncodeHexColor($content-color)}' viewBox='0 0 16 16' focusable='false' width='100%25' height='100%25'%3E%3Cpath d='M14.4 9.6 8 16 1.6 9.6 3 8.2l4 4V0h2v12.2l4-4 1.4 1.4Z'/%3E%3C/svg%3E");
48
+ }
49
+
50
+
51
+
52
+ @include focus($theme, $offset: 0);
53
+ }
54
+
55
+
56
+ @mixin link-underline {
57
+ text-decoration-skip-ink: auto;
58
+ text-decoration-line: underline;
59
+ text-underline-offset: 2px;
60
+ text-decoration-thickness: 1px;
61
+ text-decoration-color: currentColor;
62
+ }