@stihl-design-system/components 1.0.0-RC.4 → 1.0.0-RC.6

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 (167) hide show
  1. package/Klarna.svg +1 -0
  2. package/Mastercard.svg +2 -0
  3. package/PayPal.svg +2 -0
  4. package/Placeholder.svg +1 -0
  5. package/Visa.svg +2 -0
  6. package/arialiveregions.BvZhV6hb.js +27 -0
  7. package/assets/CustomReactSelect.Bsphydqt.css +1 -0
  8. package/assets/Fieldset.D0jHAGRL.css +1 -0
  9. package/assets/Icon.Duy_0R8w.css +1 -0
  10. package/assets/InputPassword.VCNO8ANM.css +1 -0
  11. package/assets/InputSearch.BMRAb95l.css +1 -0
  12. package/assets/InputStepper.BKjqNi-i.css +1 -0
  13. package/assets/Notification.Bg63cvs4.css +1 -0
  14. package/assets/RadioGroup.Bz3_xkZU.css +1 -0
  15. package/assets/Select.Bz1TImkI.css +1 -0
  16. package/assets/Textarea.D2h5cW_t.css +1 -0
  17. package/assets/Toast.BzVaebc0.css +1 -0
  18. package/assets/{arialiveregions.VnhjP8Gr.css → arialiveregions.GsGx2USO.css} +1 -1
  19. package/assets/{asterisk.C-o6rbGQ.css → asterisk.JlyPArZu.css} +1 -1
  20. package/assets/button.BdxtFZKx.css +1 -0
  21. package/assets/buttonround.pR4StXA7.css +1 -0
  22. package/assets/checkbox.BjIn2stV.css +1 -0
  23. package/assets/dialog.CKwM2EBH.css +1 -0
  24. package/assets/floatingactionbutton.CUvMbEMf.css +1 -0
  25. package/assets/heading.CCbuI4X-.css +1 -0
  26. package/assets/input.71tOIrpp.css +1 -0
  27. package/assets/link.D61tKkSK.css +1 -0
  28. package/assets/linkstandalone.Bx8Uvo0G.css +1 -0
  29. package/assets/logo.C05WqGId.css +1 -0
  30. package/assets/optioncheckbox.BdRJHcSw.css +1 -0
  31. package/assets/radio.ewRpPo4W.css +1 -0
  32. package/assets/skiptocontent.DGVJ77cj.css +1 -0
  33. package/assets/spinner.D_Nnf1ZG.css +1 -0
  34. package/assets/switch.Ds-I_ybT.css +1 -0
  35. package/assets/{systemfeedback.WE3wClZ3.css → systemfeedback.BzJATHDd.css} +1 -1
  36. package/assets/text.B-CTuGgI.css +1 -0
  37. package/assets/{title.CE0Dm7PI.css → title.DlhX9K3W.css} +1 -1
  38. package/asterisk.Cjbk-xZi.js +8 -0
  39. package/button.L1lgCuM9.js +135 -0
  40. package/buttonround.ddSqXjYf.js +118 -0
  41. package/checkbox.DNHdo6_n.js +113 -0
  42. package/checkboxgroup.DqWlzAeR.js +9 -0
  43. package/chunks/{CheckboxGroup.CS6Q_TeZ.js → CheckboxGroup.DsQ6lI5a.js} +22 -22
  44. package/chunks/{CustomReactSelect.DtmbYZUf.js → CustomReactSelect.5dHi6PEO.js} +909 -959
  45. package/chunks/Fieldset.B1vsrHNv.js +99 -0
  46. package/chunks/{Icon.9gDIp6p4.js → Icon.n4XZrQ4N.js} +33 -27
  47. package/chunks/InputPassword.a7zHKrmM.js +140 -0
  48. package/chunks/InputSearch.DITRiB92.js +189 -0
  49. package/chunks/InputStepper.BkncCNwJ.js +291 -0
  50. package/chunks/Notification.DVVuSOqG.js +93 -0
  51. package/chunks/RadioGroup.BO4pbAJw.js +132 -0
  52. package/chunks/RadioGroup.module.BBZwHDjW.js +11 -0
  53. package/chunks/Select.COdS787F.js +191 -0
  54. package/chunks/Textarea.oqCrSopu.js +195 -0
  55. package/chunks/Toast.RON4bFPY.js +89 -0
  56. package/chunks/{jsx-runtime.C-kxDJ4g.js → jsx-runtime.C115EyI4.js} +3 -7
  57. package/{combobox.BaSkiD6f.js → combobox.CRlhqmuO.js} +2 -2
  58. package/components/Radio/Radio.d.ts +11 -3
  59. package/components/RadioGroup/RadioGroup.d.ts +6 -3
  60. package/components/RadioGroup/RadioGroup.utils.d.ts +5 -3
  61. package/components/RadioGroup/RadioGroup.utils.test.d.ts +1 -0
  62. package/components/SkipToContent/SkipToContent.d.ts +12 -0
  63. package/components/SkipToContent/SkipToContent.test.d.ts +1 -0
  64. package/customreactselect.CD58gwtp.js +13 -0
  65. package/dialog.0qPUVJha.js +45 -0
  66. package/fieldset.aY3V2jK2.js +11 -0
  67. package/floatingactionbutton.D_e4vz2G.js +87 -0
  68. package/heading.BTNroD1E.js +50 -0
  69. package/icon.D3RXjzh4.js +8 -0
  70. package/index.d.ts +1 -0
  71. package/index.es.js +66 -62
  72. package/input.ChVISFEX.js +236 -0
  73. package/inputpassword.Ba9SUUIK.js +12 -0
  74. package/inputsearch.BK-0OTwA.js +13 -0
  75. package/inputstepper.CTpTeXL9.js +13 -0
  76. package/link.SAcKvzJ3.js +115 -0
  77. package/linkstandalone.DNe0Nydm.js +79 -0
  78. package/{logo.C_oJ8isW.js → logo.BR_CUXFl.js} +16 -16
  79. package/notification.Csn5QCR2.js +9 -0
  80. package/{optioncheckbox.CUV1MQhh.js → optioncheckbox.C4l2UIak.js} +7 -7
  81. package/package.json +28 -24
  82. package/partials/index.js +51 -79
  83. package/radio.epf54-sG.js +115 -0
  84. package/radiogroup.CiENWRos.js +11 -0
  85. package/select.DLYav8gw.js +12 -0
  86. package/skiptocontent._YZRKxnc.js +44 -0
  87. package/skiptocontent.d.ts +1 -0
  88. package/spinner.DVa112nj.js +58 -0
  89. package/styles/scss/lib/_animation.scss +15 -14
  90. package/styles/scss/lib/_container-query.scss +3 -3
  91. package/styles/scss/lib/_grid-sidebar.scss +14 -7
  92. package/styles/scss/lib/_link.scss +48 -42
  93. package/styles/scss/lib/_media-query.scss +3 -3
  94. package/styles/scss/lib/_transition.scss +26 -7
  95. package/switch.rd7PdLc9.js +65 -0
  96. package/{systemfeedback.4Hkfigi-.js → systemfeedback.CUWch42u.js} +3 -3
  97. package/text.CrYUewrP.js +57 -0
  98. package/{textarea.DPy3TJJf.js → textarea.hLgeYdsI.js} +4 -4
  99. package/title.Dvp8LKJt.js +36 -0
  100. package/toast.r_yhGYEe.js +10 -0
  101. package/{toastmanager.DQ_-eTrx.js → toastmanager.D-uIi-TS.js} +2 -2
  102. package/utils/index.d.ts +1 -0
  103. package/utils/remove-spaces.d.ts +6 -0
  104. package/utils/remove-spaces.test.d.ts +1 -0
  105. package/arialiveregions.49Zyf6mj.js +0 -27
  106. package/assets/CustomReactSelect.B0rJLjN0.css +0 -1
  107. package/assets/Fieldset.xazpUXJX.css +0 -1
  108. package/assets/Icon.CB-KQmw4.css +0 -1
  109. package/assets/InputPassword.C3Uyj7oA.css +0 -1
  110. package/assets/InputSearch.tL3e9-Ob.css +0 -1
  111. package/assets/InputStepper.paPJix5A.css +0 -1
  112. package/assets/Notification.CCCbfXEz.css +0 -1
  113. package/assets/RadioGroup.Ur8Ro-XL.css +0 -1
  114. package/assets/Select.D2qBxaHP.css +0 -1
  115. package/assets/Textarea.BKbocznb.css +0 -1
  116. package/assets/Toast.CAP_EwDX.css +0 -1
  117. package/assets/button.BuIpnG-S.css +0 -1
  118. package/assets/buttonround.C3ph5Yyu.css +0 -1
  119. package/assets/checkbox.BsFEWfQe.css +0 -1
  120. package/assets/dialog.BGK3mgk7.css +0 -1
  121. package/assets/floatingactionbutton.D7ywURL3.css +0 -1
  122. package/assets/heading.CGFucb-C.css +0 -1
  123. package/assets/input.BcP5kkZ2.css +0 -1
  124. package/assets/link.DQy_OhwC.css +0 -1
  125. package/assets/linkstandalone.Dh6bE5Fb.css +0 -1
  126. package/assets/logo.BbHYgnWo.css +0 -1
  127. package/assets/optioncheckbox.C-K1FLhc.css +0 -1
  128. package/assets/radio.CSHQGdpr.css +0 -1
  129. package/assets/spinner.C5rBmKiF.css +0 -1
  130. package/assets/switch.sqve8ApJ.css +0 -1
  131. package/assets/text.DDAveG7E.css +0 -1
  132. package/asterisk.DU8THnoC.js +0 -8
  133. package/button.DX_nxoJC.js +0 -135
  134. package/buttonround.CXsBk9nL.js +0 -118
  135. package/checkbox.B43oeMeC.js +0 -112
  136. package/checkboxgroup.C7aCjYds.js +0 -9
  137. package/chunks/Fieldset.BokeZzG5.js +0 -99
  138. package/chunks/InputPassword.jpUCijp7.js +0 -140
  139. package/chunks/InputSearch.BmOtAZcR.js +0 -190
  140. package/chunks/InputStepper.DTKjUL4U.js +0 -291
  141. package/chunks/Notification.CUPOlHAX.js +0 -93
  142. package/chunks/RadioGroup.DpwnVv7u.js +0 -110
  143. package/chunks/RadioGroup.module.bi3leRes.js +0 -11
  144. package/chunks/Select.DkDZo0ky.js +0 -193
  145. package/chunks/Textarea.C938p79X.js +0 -195
  146. package/chunks/Toast.CLYrwQVO.js +0 -89
  147. package/customreactselect.LTbjaBN2.js +0 -13
  148. package/dialog.BkXwcbUh.js +0 -45
  149. package/fieldset.BXOWK-B-.js +0 -11
  150. package/floatingactionbutton.-nDRRiXY.js +0 -87
  151. package/heading.DqGbFfj2.js +0 -50
  152. package/icon.Cpp_9L1I.js +0 -8
  153. package/input.BM6tyRUm.js +0 -236
  154. package/inputpassword.DUxH1K_k.js +0 -12
  155. package/inputsearch.B-vePHle.js +0 -13
  156. package/inputstepper.C2ypADPI.js +0 -13
  157. package/link.B4XZoLDj.js +0 -115
  158. package/linkstandalone.BSfd95Pd.js +0 -79
  159. package/notification.CxxAOdNV.js +0 -9
  160. package/radio.Bhu9OUY-.js +0 -79
  161. package/radiogroup.CMJ1b38q.js +0 -11
  162. package/select.DFJK2mHF.js +0 -12
  163. package/spinner.BskX4ovu.js +0 -58
  164. package/switch.Bx2tDKx0.js +0 -65
  165. package/text.CPU8IUqY.js +0 -57
  166. package/title.icX0VDiO.js +0 -36
  167. package/toast.C-Yg5EoE.js +0 -10
@@ -0,0 +1,191 @@
1
+ "use client";
2
+ import { j as n } from "./jsx-runtime.C115EyI4.js";
3
+ import { c as _ } from "./index.CvOaL64Y.js";
4
+ import { useRef as C, useState as q, useEffect as W } from "react";
5
+ import { u as F } from "./useBreakpoint.5xBNDiCf.js";
6
+ import { Asterisk as M } from "../asterisk.Cjbk-xZi.js";
7
+ import { D as O } from "./Icon.n4XZrQ4N.js";
8
+ import { DSSystemFeedback as T } from "../systemfeedback.CUWch42u.js";
9
+ import { g as u } from "./helpers.B1JT5ShS.js";
10
+ import '../assets/Select.Bz1TImkI.css';const V = "_root_omrno_226", Z = "_hint_omrno_234", J = "_label_omrno_234", K = "_wrapper_omrno_238", Q = "_affix_omrno_244", U = "_affix--small_omrno_264", X = "_affix--disabled_omrno_276", Y = "_prefix_omrno_279", z = "_affix--readonly_omrno_282", G = "_suffix_omrno_292", ee = "_action-button_omrno_299", oe = "_label--hidden_omrno_316", ne = "_feedback_omrno_343", te = "_select-wrapper_omrno_348", se = "_select_omrno_348", ae = "_select--invalid_omrno_464", le = "_select--small_omrno_471", ce = "_input--has-leading-icon_omrno_523", re = "_input--has-action-button_omrno_526", ie = "_input--has-second-action-button_omrno_529", _e = "_select--has-leading-icon_omrno_532", de = "_select--has-action-button_omrno_535", me = "_select--has-second-action-button_omrno_538", fe = "_select--has-affix_omrno_541", ue = "_select--is-ready_omrno_555", he = "_select--placeholder_omrno_572", pe = "_chevron_omrno_581", be = "_chevron--small_omrno_585", xe = "_chevron--disabled_omrno_588", e = {
11
+ root: V,
12
+ hint: Z,
13
+ label: J,
14
+ wrapper: K,
15
+ affix: Q,
16
+ "affix--small": "_affix--small_omrno_264",
17
+ affixSmall: U,
18
+ "affix--disabled": "_affix--disabled_omrno_276",
19
+ affixDisabled: X,
20
+ prefix: Y,
21
+ "affix--readonly": "_affix--readonly_omrno_282",
22
+ affixReadonly: z,
23
+ suffix: G,
24
+ "action-button": "_action-button_omrno_299",
25
+ actionButton: ee,
26
+ "label--hidden": "_label--hidden_omrno_316",
27
+ labelHidden: oe,
28
+ feedback: ne,
29
+ "select-wrapper": "_select-wrapper_omrno_348",
30
+ selectWrapper: te,
31
+ select: se,
32
+ "select--invalid": "_select--invalid_omrno_464",
33
+ selectInvalid: ae,
34
+ "select--small": "_select--small_omrno_471",
35
+ selectSmall: le,
36
+ "input--has-leading-icon": "_input--has-leading-icon_omrno_523",
37
+ inputHasLeadingIcon: ce,
38
+ "input--has-action-button": "_input--has-action-button_omrno_526",
39
+ inputHasActionButton: re,
40
+ "input--has-second-action-button": "_input--has-second-action-button_omrno_529",
41
+ inputHasSecondActionButton: ie,
42
+ "select--has-leading-icon": "_select--has-leading-icon_omrno_532",
43
+ selectHasLeadingIcon: _e,
44
+ "select--has-action-button": "_select--has-action-button_omrno_535",
45
+ selectHasActionButton: de,
46
+ "select--has-second-action-button": "_select--has-second-action-button_omrno_538",
47
+ selectHasSecondActionButton: me,
48
+ "select--has-affix": "_select--has-affix_omrno_541",
49
+ selectHasAffix: fe,
50
+ "select--is-ready": "_select--is-ready_omrno_555",
51
+ selectIsReady: ue,
52
+ "select--placeholder": "_select--placeholder_omrno_572",
53
+ selectPlaceholder: he,
54
+ chevron: pe,
55
+ "chevron--small": "_chevron--small_omrno_585",
56
+ chevronSmall: be,
57
+ "chevron--disabled": "_chevron--disabled_omrno_588",
58
+ chevronDisabled: xe
59
+ }, Be = ["medium", "small"], ve = ({
60
+ id: o,
61
+ label: a,
62
+ options: s
63
+ }) => {
64
+ if (!o)
65
+ throw new Error(
66
+ u(
67
+ "DSSelect",
68
+ 'A unique "id" prop is required. Please add an unique "id" prop to the DSSelect component.'
69
+ )
70
+ );
71
+ if (!a)
72
+ throw new Error(
73
+ u(
74
+ "DSSelect",
75
+ `A label is always required for a11y reasons. Please add a descriptive "label" prop to the DSSelect component. If you don't want to display a label, set hideLabel={true}.`
76
+ )
77
+ );
78
+ if (!s || s.length === 0)
79
+ throw new Error(
80
+ u(
81
+ "DSSelect",
82
+ 'Options are always required. Please add an "options" prop to the DSSelect component.'
83
+ )
84
+ );
85
+ }, Se = (o, a, s) => o === "" || a !== void 0 && a !== "" ? !1 : !(s !== void 0 && s !== ""), Ee = ({
86
+ id: o,
87
+ label: a,
88
+ options: s,
89
+ className: H,
90
+ defaultValue: h,
91
+ disabled: p = !1,
92
+ hideLabel: I = !1,
93
+ hint: d,
94
+ invalid: i = !1,
95
+ placeholder: m = "Select",
96
+ required: b = !1,
97
+ size: x = "medium",
98
+ systemFeedback: f,
99
+ value: v,
100
+ ...w
101
+ }) => {
102
+ process.env.NODE_ENV !== "production" && ve({
103
+ id: o,
104
+ label: a,
105
+ options: s
106
+ });
107
+ const r = C(null), [j, A] = q(
108
+ Se(m, h, v)
109
+ );
110
+ W(() => {
111
+ if (!r.current) return;
112
+ const l = () => {
113
+ if (!r.current) return;
114
+ const c = r.current.value;
115
+ A(c === "");
116
+ }, t = r.current;
117
+ return t.addEventListener("change", l), () => {
118
+ t.removeEventListener("change", l);
119
+ };
120
+ }, []);
121
+ const B = F(I), S = `${o}-label`, g = `${o}-feedback`, y = `${o}-hint`, E = d ? ` ${y}` : "", L = (l) => [
122
+ m && /* @__PURE__ */ n.jsx("option", { value: "", children: m }, `${o}-hidden-option-disabled-placeholder`),
123
+ ...l.map((t) => {
124
+ if ("options" in t) {
125
+ const { label: c, options: $ } = t;
126
+ return /* @__PURE__ */ n.jsx("optgroup", { label: c, children: $.map(D) }, c);
127
+ } else
128
+ return D(t);
129
+ })
130
+ ], D = ({ label: l, value: t, isDisabled: c }) => /* @__PURE__ */ n.jsx("option", { value: t, disabled: c, children: l }, t), N = _(e.root, H), P = _(e.select, {
131
+ [e.selectSmall]: x === "small",
132
+ [e.selectInvalid]: i,
133
+ [e.selectPlaceholder]: j
134
+ }), k = _(e.label, {
135
+ // hide label only visually to keep them available for assistive technologies
136
+ [e.labelHidden]: B
137
+ }), R = _(e.chevron, {
138
+ [e.chevronSmall]: x === "small",
139
+ [e.chevronDisabled]: p
140
+ });
141
+ return /* @__PURE__ */ n.jsxs("div", { className: N, children: [
142
+ /* @__PURE__ */ n.jsxs("label", { className: k, id: S, htmlFor: o, children: [
143
+ a,
144
+ b && /* @__PURE__ */ n.jsx(M, {})
145
+ ] }),
146
+ d && /* @__PURE__ */ n.jsx("div", { className: e.hint, id: y, children: d }),
147
+ i && f && /* @__PURE__ */ n.jsx(
148
+ T,
149
+ {
150
+ className: e.feedback,
151
+ message: f,
152
+ type: "invalid",
153
+ id: g,
154
+ "aria-live": "assertive"
155
+ }
156
+ ),
157
+ /* @__PURE__ */ n.jsxs("div", { className: e.selectWrapper, children: [
158
+ /* @__PURE__ */ n.jsx(
159
+ "select",
160
+ {
161
+ ...w,
162
+ id: o,
163
+ ref: r,
164
+ className: P,
165
+ "aria-labelledby": `${S}${E}`,
166
+ "aria-describedby": i && f ? g : void 0,
167
+ "aria-invalid": i,
168
+ defaultValue: h,
169
+ value: v,
170
+ disabled: p,
171
+ required: b,
172
+ children: L(s)
173
+ }
174
+ ),
175
+ /* @__PURE__ */ n.jsx(
176
+ O,
177
+ {
178
+ name: "chevron-down",
179
+ className: R,
180
+ "aria-hidden": "true"
181
+ }
182
+ )
183
+ ] })
184
+ ] });
185
+ };
186
+ export {
187
+ Ee as D,
188
+ Be as S,
189
+ Se as g,
190
+ ve as v
191
+ };
@@ -0,0 +1,195 @@
1
+ "use client";
2
+ import { j as n } from "./jsx-runtime.C115EyI4.js";
3
+ import { c as g } from "./index.CvOaL64Y.js";
4
+ import { useState as c, useRef as oe, useEffect as q } from "react";
5
+ import { u as se, h as ie } from "./useBreakpoint.5xBNDiCf.js";
6
+ import { g as k, p as H } from "./helpers.B1JT5ShS.js";
7
+ import { Asterisk as re } from "../asterisk.Cjbk-xZi.js";
8
+ import { DSSystemFeedback as le } from "../systemfeedback.CUWch42u.js";
9
+ import '../assets/Textarea.D2h5cW_t.css';const ce = "_textarea_q1qm9_226", de = "_textarea--invalid_q1qm9_336", _e = "_textarea--small_q1qm9_343", ue = "_textarea--resize-auto_q1qm9_361", fe = "_root_q1qm9_371", me = "_hint_q1qm9_379", qe = "_label_q1qm9_379", xe = "_affix_q1qm9_383", be = "_affix--small_q1qm9_403", he = "_affix--disabled_q1qm9_415", pe = "_prefix_q1qm9_418", ve = "_affix--readonly_q1qm9_421", ge = "_suffix_q1qm9_431", Se = "_leading-icon_q1qm9_438", Ie = "_leading-icon--small_q1qm9_450", Ce = "_leading-icon--disabled_q1qm9_453", ye = "_action-button_q1qm9_462", Ae = "_label--hidden_q1qm9_479", De = "_feedback_q1qm9_506", je = "_char-count_q1qm9_511", we = "_char-count-announcer_q1qm9_526", t = {
10
+ textarea: ce,
11
+ "textarea--invalid": "_textarea--invalid_q1qm9_336",
12
+ textareaInvalid: de,
13
+ "textarea--small": "_textarea--small_q1qm9_343",
14
+ textareaSmall: _e,
15
+ "textarea--resize-auto": "_textarea--resize-auto_q1qm9_361",
16
+ textareaResizeAuto: ue,
17
+ root: fe,
18
+ hint: me,
19
+ label: qe,
20
+ affix: xe,
21
+ "affix--small": "_affix--small_q1qm9_403",
22
+ affixSmall: be,
23
+ "affix--disabled": "_affix--disabled_q1qm9_415",
24
+ affixDisabled: he,
25
+ prefix: pe,
26
+ "affix--readonly": "_affix--readonly_q1qm9_421",
27
+ affixReadonly: ve,
28
+ suffix: ge,
29
+ "leading-icon": "_leading-icon_q1qm9_438",
30
+ leadingIcon: Se,
31
+ "leading-icon--small": "_leading-icon--small_q1qm9_450",
32
+ leadingIconSmall: Ie,
33
+ "leading-icon--disabled": "_leading-icon--disabled_q1qm9_453",
34
+ leadingIconDisabled: Ce,
35
+ "action-button": "_action-button_q1qm9_462",
36
+ actionButton: ye,
37
+ "label--hidden": "_label--hidden_q1qm9_479",
38
+ labelHidden: Ae,
39
+ feedback: De,
40
+ "char-count": "_char-count_q1qm9_511",
41
+ charCount: je,
42
+ "char-count-announcer": "_char-count-announcer_q1qm9_526",
43
+ charCountAnnouncer: we
44
+ }, Ve = ["medium", "small"], Re = ({ id: o, label: _ }) => {
45
+ if (!o)
46
+ throw new Error(
47
+ k(
48
+ "DSTextarea",
49
+ 'A unique "id" prop is required. Please add an unique "id" prop to the DSTextarea component.'
50
+ )
51
+ );
52
+ if (!_)
53
+ throw new Error(
54
+ k(
55
+ "DSTextarea",
56
+ `A label is always required for a11y reasons. Please add a descriptive "label" prop to the DSTextarea component. If you don't want to display a label, set hideLabel={true}.`
57
+ )
58
+ );
59
+ }, ze = ({
60
+ id: o,
61
+ label: _,
62
+ charsLimitText: V = "Character limit reached",
63
+ charsRemainingText: z = "Characters remaining:",
64
+ className: P,
65
+ defaultValue: M,
66
+ disabled: O = !1,
67
+ hint: x,
68
+ hideLabel: F = !1,
69
+ invalid: s = !1,
70
+ maxLength: e,
71
+ readonly: S = !1,
72
+ required: I = !1,
73
+ resize: u = "vertical",
74
+ size: W = "medium",
75
+ systemFeedback: r,
76
+ value: b,
77
+ wrapperClassName: X,
78
+ onChange: C,
79
+ onInput: y,
80
+ ...Z
81
+ }) => {
82
+ process.env.NODE_ENV !== "production" && Re({
83
+ id: o,
84
+ label: _
85
+ });
86
+ const [G, A] = c(M || ""), [l, D] = c(0), [J, j] = c(0), [K, w] = c("off"), [R, h] = c(r), [p, v] = c(s), T = b !== void 0, f = T ? b : G, i = oe(null), Q = se(F);
87
+ q(() => {
88
+ if (!e || e <= 0)
89
+ return;
90
+ l >= e * 0.8 ? w("polite") : w("off");
91
+ const a = setTimeout(() => {
92
+ j(e - l || 0);
93
+ }, 1e3);
94
+ return () => clearTimeout(a);
95
+ }, [l]), q(() => {
96
+ A(f || ""), d(), e && e > 0 && (D(f.toString().length || 0), j(e - f.toString().length || 0));
97
+ }, [b]), q(() => {
98
+ s && r ? (h(r), v(s)) : !s && e && e >= 0 && l >= e ? (v(!0), h(V)) : (h(r), v(s));
99
+ }, [s, p, r, l]), q(() => {
100
+ if (ie && u === "auto")
101
+ return d(), window.addEventListener("resize", d), () => window.removeEventListener("resize", d);
102
+ }, [u, i.current]);
103
+ const U = g(t.root, X), Y = g(t.textarea, P, {
104
+ // small textarea
105
+ [t.textareaSmall]: W === "small",
106
+ // invalid state
107
+ [t.textareaInvalid]: p,
108
+ // resize handling
109
+ [t.textareaResizeAuto]: u === "auto"
110
+ }), L = g(t.label, {
111
+ // hide label only visually to keep them available for assistive technologies
112
+ [t.labelHidden]: Q
113
+ }), E = `${o}-label`, N = `${o}-feedback`, B = `${o}-hint`, $ = `${o}-char-count-announcer`, ee = x ? ` ${B}` : "", d = () => {
114
+ if (i.current && u === "auto") {
115
+ i.current.style.height = "auto";
116
+ const a = H(i.current.scrollHeight), m = H(2);
117
+ i.current.style.height = `${// We need to add 2px (border-top & border-bottom) to the scrollHeight to prevent the textarea
118
+ // from jumping as soon as the user starts typing.
119
+ a + m}rem`;
120
+ }
121
+ }, ae = () => {
122
+ const a = [];
123
+ return e && e > 0 && a.push($), s && r && a.push(N), a.length > 0 ? a.join(" ") : void 0;
124
+ }, te = (a) => {
125
+ var m;
126
+ y && y(a), e && e > 0 && D(((m = i.current) == null ? void 0 : m.value.length) || 0), d();
127
+ }, ne = (a) => {
128
+ C && C(a), T || A(a.target.value);
129
+ };
130
+ return /* @__PURE__ */ n.jsxs("div", { className: U, children: [
131
+ /* @__PURE__ */ n.jsxs("label", { className: L, id: E, htmlFor: o, children: [
132
+ _,
133
+ I && /* @__PURE__ */ n.jsx(re, {})
134
+ ] }),
135
+ x && /* @__PURE__ */ n.jsx("div", { className: t.hint, id: B, children: x }),
136
+ p && R && /* @__PURE__ */ n.jsx(
137
+ le,
138
+ {
139
+ className: t.feedback,
140
+ message: R,
141
+ type: "invalid",
142
+ id: N
143
+ }
144
+ ),
145
+ /* @__PURE__ */ n.jsx(
146
+ "textarea",
147
+ {
148
+ className: Y,
149
+ id: o,
150
+ ref: i,
151
+ ...Z,
152
+ "aria-labelledby": `${E}${ee}`,
153
+ "aria-describedby": ae(),
154
+ "aria-invalid": s,
155
+ "aria-disabled": S,
156
+ maxLength: e,
157
+ readOnly: S,
158
+ required: I,
159
+ disabled: O,
160
+ value: f,
161
+ defaultValue: void 0,
162
+ rows: void 0,
163
+ cols: void 0,
164
+ onChange: ne,
165
+ onInput: te
166
+ }
167
+ ),
168
+ e !== void 0 && e > 0 && /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
169
+ /* @__PURE__ */ n.jsxs("div", { className: t.charCount, "aria-hidden": "true", children: [
170
+ l,
171
+ "/",
172
+ e
173
+ ] }),
174
+ /* @__PURE__ */ n.jsxs(
175
+ "div",
176
+ {
177
+ className: t.charCountAnnouncer,
178
+ id: $,
179
+ "aria-live": K,
180
+ "aria-atomic": "true",
181
+ children: [
182
+ z,
183
+ " ",
184
+ J
185
+ ]
186
+ }
187
+ )
188
+ ] })
189
+ ] });
190
+ };
191
+ export {
192
+ ze as D,
193
+ Ve as T,
194
+ Re as v
195
+ };
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { j as n } from "./jsx-runtime.C115EyI4.js";
3
+ import { c } from "./index.CvOaL64Y.js";
4
+ import { forwardRef as u } from "react";
5
+ import { DSButton as g } from "../button.L1lgCuM9.js";
6
+ import { D as h } from "./Icon.n4XZrQ4N.js";
7
+ import '../assets/Toast.BzVaebc0.css';const p = "_root_127fr_80", x = "_root--closing_127fr_89", I = "_fade-out_127fr_1", S = "_move-in_127fr_1", N = "_root--success_127fr_124", j = "_root--info_127fr_128", v = "_root--warning_127fr_132", w = "_content_127fr_137", C = "_content--hide-icon_127fr_144", D = "_icon_127fr_148", O = "_message_127fr_152", o = {
8
+ root: p,
9
+ "root--closing": "_root--closing_127fr_89",
10
+ rootClosing: x,
11
+ "fade-out": "_fade-out_127fr_1",
12
+ fadeOut: I,
13
+ "move-in": "_move-in_127fr_1",
14
+ moveIn: S,
15
+ "root--success": "_root--success_127fr_124",
16
+ rootSuccess: N,
17
+ "root--info": "_root--info_127fr_128",
18
+ rootInfo: j,
19
+ "root--warning": "_root--warning_127fr_132",
20
+ rootWarning: v,
21
+ content: w,
22
+ "content--hide-icon": "_content--hide-icon_127fr_144",
23
+ contentHideIcon: C,
24
+ icon: D,
25
+ message: O
26
+ }, T = {
27
+ success: "circle-check-colored",
28
+ warning: "triangle-exclamationmark-colored",
29
+ info: "circle-info-colored"
30
+ }, H = u(
31
+ ({
32
+ message: s,
33
+ className: e,
34
+ hideIcon: r = !1,
35
+ variant: t = "info",
36
+ onClick: i,
37
+ onMouseEnter: a,
38
+ onMouseLeave: _,
39
+ ...f
40
+ }, l) => {
41
+ const m = c(o.root, e, {
42
+ [o.rootSuccess]: t === "success",
43
+ [o.rootWarning]: t === "warning",
44
+ [o.rootInfo]: t === "info"
45
+ }), d = c(o.content, {
46
+ [o.contentHideIcon]: r
47
+ });
48
+ return /* @__PURE__ */ n.jsx(
49
+ "aside",
50
+ {
51
+ className: m,
52
+ ref: l,
53
+ popover: "manual",
54
+ "data-ds-toast": !0,
55
+ onMouseEnter: a,
56
+ onMouseLeave: _,
57
+ "aria-label": s,
58
+ ...f,
59
+ children: /* @__PURE__ */ n.jsxs("div", { className: d, children: [
60
+ !r && /* @__PURE__ */ n.jsx(
61
+ h,
62
+ {
63
+ name: T[t],
64
+ className: o.icon,
65
+ "aria-hidden": "true"
66
+ }
67
+ ),
68
+ /* @__PURE__ */ n.jsx("div", { className: o.message, children: s }),
69
+ /* @__PURE__ */ n.jsx(
70
+ g,
71
+ {
72
+ hideLabel: !0,
73
+ iconName: "cross",
74
+ size: "small",
75
+ variant: "ghost",
76
+ onClick: i,
77
+ children: "Close toast"
78
+ }
79
+ )
80
+ ] })
81
+ }
82
+ );
83
+ }
84
+ );
85
+ H.displayName = "DSToast";
86
+ export {
87
+ H as D,
88
+ o as s
89
+ };
@@ -12,18 +12,14 @@ var Z = { exports: {} }, D = {};
12
12
  */
13
13
  var Oe;
14
14
  function lr() {
15
- if (Oe)
16
- return D;
15
+ if (Oe) return D;
17
16
  Oe = 1;
18
17
  var M = we, C = Symbol.for("react.element"), U = Symbol.for("react.fragment"), m = Object.prototype.hasOwnProperty, A = M.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, I = { key: !0, ref: !0, __self: !0, __source: !0 };
19
18
  function P(h, c, T) {
20
19
  var p, b = {}, _ = null, W = null;
21
20
  T !== void 0 && (_ = "" + T), c.key !== void 0 && (_ = "" + c.key), c.ref !== void 0 && (W = c.ref);
22
- for (p in c)
23
- m.call(c, p) && !I.hasOwnProperty(p) && (b[p] = c[p]);
24
- if (h && h.defaultProps)
25
- for (p in c = h.defaultProps, c)
26
- b[p] === void 0 && (b[p] = c[p]);
21
+ for (p in c) m.call(c, p) && !I.hasOwnProperty(p) && (b[p] = c[p]);
22
+ if (h && h.defaultProps) for (p in c = h.defaultProps, c) b[p] === void 0 && (b[p] = c[p]);
27
23
  return { $$typeof: C, type: h, key: _, ref: W, props: b, _owner: A.current };
28
24
  }
29
25
  return D.Fragment = U, D.jsx = P, D.jsxs = P, D;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { j as u } from "./chunks/jsx-runtime.C-kxDJ4g.js";
3
- import { v as x, c as C } from "./chunks/CustomReactSelect.DtmbYZUf.js";
2
+ import { j as u } from "./chunks/jsx-runtime.C115EyI4.js";
3
+ import { v as x, c as C } from "./chunks/CustomReactSelect.5dHi6PEO.js";
4
4
  const v = ({
5
5
  id: s,
6
6
  label: o,
@@ -3,21 +3,29 @@ import { BreakpointCustomizable } from '../../types';
3
3
 
4
4
  export interface RadioProps extends InputHTMLAttributes<HTMLInputElement> {
5
5
  /** Label text displayed next to the radio */
6
- label: React.ReactNode;
6
+ label: string;
7
7
  /** Name of the radio group */
8
8
  name: string;
9
9
  /** Set the value of the radio */
10
10
  value: string;
11
+ /** Controls whether the radio is checked. */
12
+ checked?: boolean;
13
+ /** Allows the addition of e.g. decorative icons for an option */
14
+ customArea?: React.ReactNode;
11
15
  /** Disables the radio, preventing user interaction */
12
16
  disabled?: boolean;
13
17
  /** Hides the radio label, can be responsive
14
18
  * `boolean | { base: boolean; s?: boolean; m?: boolean; l?: boolean; xl?: boolean; }`
15
19
  */
16
20
  hideLabel?: BreakpointCustomizable<boolean>;
17
- /** Controls whether the radio is checked. */
18
- checked?: boolean;
21
+ /** Makes the label use `ds-utility-medium-bold` if any option has a `hint` and `hideUncheckedHint` is set to false */
22
+ isBold?: boolean;
23
+ /** Short descriptive text displayed beneath the label */
24
+ hint?: string;
19
25
  /** Marks the radio as invalid, typically used for form validation */
20
26
  invalid?: boolean;
27
+ /** Controls whether the hint is displayed when the radio button is not checked */
28
+ hideUncheckedHint?: boolean;
21
29
  /** Callback function triggered when the state of the radio changes */
22
30
  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
23
31
  }
@@ -18,12 +18,13 @@ export interface RadioGroupProps extends Omit<FieldsetHTMLAttributes<HTMLFieldSe
18
18
  name: string;
19
19
  /**
20
20
  * An array of RadioGroupOption Objects containing the label and the value of each Radio Button
21
- * `{label: string; value: string}[]`
22
- * @prop {{label: string; value: string}[]} options
21
+ * `{label: string; value: string; customArea?: React.ReactNode; hint?: string}[]`
22
+ * @prop {{label: string; value: string; customArea?: React.ReactNode; hint?: string}[]} options
23
23
  */
24
24
  options: RadioGroupOption[];
25
25
  /**
26
- * Set the alignment of the radio buttons
26
+ * Set the alignment of the radio buttons.
27
+ * `alignment="horizontal"` is not possible if a `hint` or `customArea` is passed to the `options`.
27
28
  */
28
29
  alignment?: 'vertical' | 'horizontal';
29
30
  /**
@@ -34,6 +35,8 @@ export interface RadioGroupProps extends Omit<FieldsetHTMLAttributes<HTMLFieldSe
34
35
  description?: FieldsetProps['description'];
35
36
  /** Disables the radio group, preventing user interaction */
36
37
  disabled?: boolean;
38
+ /** Controls whether the hint is displayed when the radio buttons are not checked. If set to `false` labels of radio buttons with hints will be displayed in **bold** */
39
+ hideUncheckedHints?: boolean;
37
40
  /** Unique id for the radio group, needs to be set for proper accessibility functionality, if `description` or `systemFeedback` are set */
38
41
  id?: string;
39
42
  /** Marks the radio group as invalid, typically used for form validation */
@@ -1,7 +1,9 @@
1
1
  import { RadioProps } from '../Radio/Radio';
2
2
  import { RadioGroupProps } from './RadioGroup';
3
3
 
4
- export type RadioGroupOption = Pick<RadioProps, 'label' | 'value'>;
5
- type ValidationProps = Pick<RadioGroupProps, 'description' | 'id' | 'legend' | 'name' | 'options' | 'systemFeedback'>;
6
- export declare const validateRadioGroupProps: ({ description, id, legend, name, options, systemFeedback, }: ValidationProps) => void;
4
+ export type RadioGroupOption = Pick<RadioProps, 'label' | 'value' | 'customArea' | 'hint'>;
5
+ type ValidationProps = Pick<RadioGroupProps, 'legend' | 'name' | 'options' | 'alignment' | 'description' | 'id' | 'systemFeedback'>;
6
+ export declare const optionsHaveHint: (options: RadioGroupOption[]) => boolean;
7
+ export declare const optionsHaveCustomArea: (options: RadioGroupOption[]) => boolean;
8
+ export declare const validateRadioGroupProps: ({ legend, name, options, alignment, description, id, systemFeedback, }: ValidationProps) => void;
7
9
  export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { LinkProps } from '../Link/Link';
2
+
3
+ export type SkipToContentProps = {
4
+ children?: string;
5
+ targetElementId?: string;
6
+ } & Pick<LinkProps, 'className' | 'theme'>;
7
+ /**
8
+ * The `<DSSkipToContent />` component is an accessibility feature that allows users, especially those using screen readers or keyboard navigation, to quickly jump to the targeted content of a webpage without having to focus all the navigation items first. This improves the user experience by making it easier and faster to access important information.
9
+ *
10
+ * Focus the section below by using the tab key to see the "Skip To Content" component in action.
11
+ */
12
+ export declare const DSSkipToContent: ({ children, className, targetElementId, theme, }: SkipToContentProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import "./chunks/jsx-runtime.C115EyI4.js";
3
+ import "./chunks/index.CvOaL64Y.js";
4
+ import "react";
5
+ import { c as l } from "./chunks/CustomReactSelect.5dHi6PEO.js";
6
+ import "./chunks/useBreakpoint.5xBNDiCf.js";
7
+ import "./asterisk.Cjbk-xZi.js";
8
+ import "./chunks/Icon.n4XZrQ4N.js";
9
+ import "./systemfeedback.CUWch42u.js";
10
+ import "./optioncheckbox.C4l2UIak.js";
11
+ export {
12
+ l as CustomReactSelect
13
+ };
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import { j as e } from "./chunks/jsx-runtime.C115EyI4.js";
3
+ import { c as u } from "./chunks/index.CvOaL64Y.js";
4
+ import { useRef as f, useEffect as l } from "react";
5
+ import { DSButton as m } from "./button.L1lgCuM9.js";
6
+ import './assets/dialog.CKwM2EBH.css';const _ = "_root_4piiz_76", p = "_success_4piiz_80", d = "_info_4piiz_84", g = "_warning_4piiz_88", h = {
7
+ root: _,
8
+ success: p,
9
+ info: d,
10
+ warning: g
11
+ }, z = ({
12
+ children: r,
13
+ className: c,
14
+ footer: n,
15
+ header: a,
16
+ isOpen: t,
17
+ onClose: s
18
+ }) => {
19
+ const i = f(null);
20
+ return l(() => {
21
+ const o = i.current;
22
+ return o && (t ? o.showModal() : o.close(), s && o.addEventListener("close", s)), () => {
23
+ o && s && o.removeEventListener("close", s);
24
+ };
25
+ }, [t, s]), /* @__PURE__ */ e.jsxs("dialog", { ref: i, className: u(h.root, c), children: [
26
+ /* @__PURE__ */ e.jsx(
27
+ m,
28
+ {
29
+ type: "button",
30
+ iconName: "cross",
31
+ variant: "ghost",
32
+ hideLabel: !0,
33
+ onClick: s,
34
+ autoFocus: !0,
35
+ children: "Close Dialog"
36
+ }
37
+ ),
38
+ a,
39
+ r,
40
+ n
41
+ ] });
42
+ };
43
+ export {
44
+ z as DSDialog
45
+ };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import "./chunks/jsx-runtime.C115EyI4.js";
3
+ import "./chunks/index.CvOaL64Y.js";
4
+ import "react";
5
+ import "./asterisk.Cjbk-xZi.js";
6
+ import "./heading.BTNroD1E.js";
7
+ import "./systemfeedback.CUWch42u.js";
8
+ import { D as l } from "./chunks/Fieldset.B1vsrHNv.js";
9
+ export {
10
+ l as DSFieldset
11
+ };