@stihl-design-system/components 1.0.0-RC.7 → 1.0.0-RC.9

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 (155) hide show
  1. package/Notification-additional-information.jpeg +0 -0
  2. package/Notification-confirm-error.jpg +0 -0
  3. package/Notification-confirm-warn.jpeg +0 -0
  4. package/Notification-overview.jpeg +0 -0
  5. package/Notification-success.jpeg +0 -0
  6. package/assets/CustomReactSelect.CMkn-EGK.css +1 -0
  7. package/assets/Dialog.DdLMmOLt.css +1 -0
  8. package/assets/Drawer.BqBgbSuP.css +1 -0
  9. package/assets/Fieldset.qHYeUFZt.css +1 -0
  10. package/assets/InputPassword.Cf394z47.css +1 -0
  11. package/assets/InputSearch.eCRQoxjN.css +1 -0
  12. package/assets/InputStepper.B80KulYE.css +1 -0
  13. package/assets/Notification.DK6agBGS.css +1 -0
  14. package/assets/Select.BptsMxz4.css +1 -0
  15. package/assets/Textarea.CIIVh03G.css +1 -0
  16. package/assets/Toast.Dsvs1zdM.css +1 -0
  17. package/assets/asterisk.DlJ4YtSZ.css +1 -0
  18. package/assets/button.B1O7Yw3Q.css +1 -0
  19. package/assets/buttonround.DlH_ipDo.css +1 -0
  20. package/assets/checkbox.K4CVYK9g.css +1 -0
  21. package/assets/heading.6bER-Eac.css +1 -0
  22. package/assets/input.C0MrSbQu.css +1 -0
  23. package/assets/link.vtTST2ki.css +1 -0
  24. package/assets/linkstandalone.BtAcziZ7.css +1 -0
  25. package/assets/logo.pETQEsvZ.css +1 -0
  26. package/assets/optioncheckbox.BJJAph5_.css +1 -0
  27. package/assets/radio.9kpIO3HC.css +1 -0
  28. package/assets/skiptocontent.CHcqLS7S.css +1 -0
  29. package/assets/switch.2DQF2zH-.css +1 -0
  30. package/assets/systemfeedback.Sq0bAIyf.css +1 -0
  31. package/assets/text.Dhb_l50R.css +1 -0
  32. package/assets/title.f74Bosn-.css +1 -0
  33. package/{asterisk.Cjbk-xZi.js → asterisk.DDn-yX4P.js} +1 -1
  34. package/button.CkHCQg3Y.js +135 -0
  35. package/buttonround.DX3u2Fio.js +118 -0
  36. package/checkbox.BbmCDJCm.js +112 -0
  37. package/{checkboxgroup.DqWlzAeR.js → checkboxgroup.CPENWSuk.js} +2 -2
  38. package/chunks/{CheckboxGroup.DsQ6lI5a.js → CheckboxGroup.Dx_Hn8Dl.js} +2 -2
  39. package/chunks/CustomReactSelect.C4rTVlvy.js +3593 -0
  40. package/chunks/Dialog.TPjJ_yxK.js +148 -0
  41. package/chunks/Drawer.DrLGSch-.js +154 -0
  42. package/chunks/{Fieldset.B1vsrHNv.js → Fieldset.P09LInkT.js} +29 -29
  43. package/chunks/{Input.utils.BGUhXCNP.js → Input.utils.ChV6RJsh.js} +19 -17
  44. package/chunks/InputPassword.CSc1c98k.js +140 -0
  45. package/chunks/{InputSearch.DITRiB92.js → InputSearch.DrgdGFT_.js} +49 -49
  46. package/chunks/{InputStepper.Bf8NZ9pb.js → InputStepper.DJEuIr4C.js} +76 -76
  47. package/chunks/{Notification.DVVuSOqG.js → Notification.B68mMDiB.js} +24 -24
  48. package/chunks/{RadioGroup.BO4pbAJw.js → RadioGroup.B5jRveyI.js} +2 -2
  49. package/chunks/Select.Cl2eJR1z.js +191 -0
  50. package/chunks/Textarea.Sk9-GXfs.js +195 -0
  51. package/chunks/{Toast.RON4bFPY.js → Toast.D9DAuz2m.js} +33 -33
  52. package/{combobox.CRlhqmuO.js → combobox.jDpV6bv-.js} +1 -1
  53. package/components/Button/Button.d.ts +1 -1
  54. package/components/Checkbox/Checkbox.d.ts +1 -1
  55. package/components/CustomReactSelect/CustomReactSelect.d.ts +2 -2
  56. package/components/Dialog/Dialog.d.ts +22 -3
  57. package/components/Dialog/Dialog.test.d.ts +1 -0
  58. package/components/Dialog/Dialog.utils.d.ts +12 -0
  59. package/components/Dialog/Dialog.utils.test.d.ts +1 -0
  60. package/components/Drawer/Drawer.d.ts +31 -0
  61. package/components/Drawer/Drawer.test.d.ts +1 -0
  62. package/components/Drawer/Drawer.utils.d.ts +14 -0
  63. package/components/Drawer/Drawer.utils.test.d.ts +1 -0
  64. package/components/Input/Input.d.ts +1 -1
  65. package/components/InputSearch/InputSearch.d.ts +1 -1
  66. package/components/LinkStandalone/LinkStandalone.d.ts +1 -1
  67. package/components/Notification/Notification.d.ts +3 -1
  68. package/components/Radio/Radio.d.ts +1 -1
  69. package/components/RadioGroup/RadioGroup.d.ts +1 -1
  70. package/components/SkipToContent/SkipToContent.d.ts +1 -1
  71. package/components/Switch/Switch.d.ts +1 -1
  72. package/components/Toast/Toast.d.ts +3 -0
  73. package/{customreactselect.CD58gwtp.js → customreactselect.C2QK_Q8T.js} +4 -4
  74. package/dialog.BPX7RJtQ.js +9 -0
  75. package/drawer.BfEPcSsQ.js +9 -0
  76. package/drawer.d.ts +1 -0
  77. package/fieldset.4yvz0e7M.js +11 -0
  78. package/heading.CAkraI2D.js +50 -0
  79. package/index.d.ts +4 -0
  80. package/index.es.js +99 -92
  81. package/input.lLMqAG-6.js +236 -0
  82. package/{inputpassword.Ba9SUUIK.js → inputpassword.BIdYGrhB.js} +4 -4
  83. package/{inputsearch.BK-0OTwA.js → inputsearch.DleOblJp.js} +4 -4
  84. package/inputstepper.DWkHwOAn.js +13 -0
  85. package/link.KZaBufPM.js +116 -0
  86. package/linkstandalone.B6tN-NXD.js +80 -0
  87. package/{logo.BR_CUXFl.js → logo.CqukakYv.js} +32 -36
  88. package/{notification.Csn5QCR2.js → notification.DdJjbSdM.js} +2 -2
  89. package/optioncheckbox.DwQEfxGG.js +43 -0
  90. package/package.json +6 -4
  91. package/partials/index.js +442 -442
  92. package/radio.CWGJtmKl.js +115 -0
  93. package/{radiogroup.CiENWRos.js → radiogroup.FfK4DLsV.js} +3 -3
  94. package/{select.DLYav8gw.js → select.BEuTuEFZ.js} +3 -3
  95. package/{skiptocontent._YZRKxnc.js → skiptocontent.fP4SOp-p.js} +16 -14
  96. package/styles/scss/lib/_heading.scss +50 -9
  97. package/styles/scss/lib/_helpers.scss +12 -0
  98. package/styles/scss/lib/_link.scss +58 -94
  99. package/styles/scss/lib/_text.scss +57 -14
  100. package/switch.KO8HZPNL.js +65 -0
  101. package/{systemfeedback.CUWch42u.js → systemfeedback._8gatmgR.js} +1 -1
  102. package/text.rgDKQBrU.js +57 -0
  103. package/{textarea.hLgeYdsI.js → textarea.DV1yVty7.js} +3 -3
  104. package/title.LY1ylQsb.js +36 -0
  105. package/{toast.r_yhGYEe.js → toast.BB8L0ixD.js} +2 -2
  106. package/{toastmanager.BncH_rUP.js → toastmanager.DifUvJcg.js} +27 -25
  107. package/utils/index.d.ts +1 -0
  108. package/utils/render-in-iframe.d.ts +15 -0
  109. package/utils/useIsomorphicLayoutEffect.d.ts +26 -0
  110. package/utils/vitest.setup.d.ts +2 -0
  111. package/assets/CustomReactSelect.Bsphydqt.css +0 -1
  112. package/assets/Fieldset.D0jHAGRL.css +0 -1
  113. package/assets/InputPassword.VCNO8ANM.css +0 -1
  114. package/assets/InputSearch.BMRAb95l.css +0 -1
  115. package/assets/InputStepper.BKjqNi-i.css +0 -1
  116. package/assets/Notification.Bg63cvs4.css +0 -1
  117. package/assets/Select.Bz1TImkI.css +0 -1
  118. package/assets/Textarea.D2h5cW_t.css +0 -1
  119. package/assets/Toast.BzVaebc0.css +0 -1
  120. package/assets/asterisk.JlyPArZu.css +0 -1
  121. package/assets/button.BdxtFZKx.css +0 -1
  122. package/assets/buttonround.pR4StXA7.css +0 -1
  123. package/assets/checkbox.BjIn2stV.css +0 -1
  124. package/assets/dialog.CKwM2EBH.css +0 -1
  125. package/assets/heading.CCbuI4X-.css +0 -1
  126. package/assets/input.71tOIrpp.css +0 -1
  127. package/assets/link.D61tKkSK.css +0 -1
  128. package/assets/linkstandalone.Bx8Uvo0G.css +0 -1
  129. package/assets/logo.C05WqGId.css +0 -1
  130. package/assets/optioncheckbox.BdRJHcSw.css +0 -1
  131. package/assets/radio.ewRpPo4W.css +0 -1
  132. package/assets/skiptocontent.DGVJ77cj.css +0 -1
  133. package/assets/switch.Ds-I_ybT.css +0 -1
  134. package/assets/systemfeedback.BzJATHDd.css +0 -1
  135. package/assets/text.B-CTuGgI.css +0 -1
  136. package/assets/title.DlhX9K3W.css +0 -1
  137. package/button.L1lgCuM9.js +0 -135
  138. package/buttonround.ddSqXjYf.js +0 -118
  139. package/checkbox.DNHdo6_n.js +0 -113
  140. package/chunks/CustomReactSelect.5dHi6PEO.js +0 -4983
  141. package/chunks/InputPassword.a7zHKrmM.js +0 -140
  142. package/chunks/Select.COdS787F.js +0 -191
  143. package/chunks/Textarea.oqCrSopu.js +0 -195
  144. package/dialog.0qPUVJha.js +0 -45
  145. package/fieldset.aY3V2jK2.js +0 -11
  146. package/heading.BTNroD1E.js +0 -50
  147. package/input.DqSOhSMX.js +0 -236
  148. package/inputstepper.DFQ4zC15.js +0 -13
  149. package/link.SAcKvzJ3.js +0 -115
  150. package/linkstandalone.DNe0Nydm.js +0 -79
  151. package/optioncheckbox.C4l2UIak.js +0 -43
  152. package/radio.epf54-sG.js +0 -115
  153. package/switch.rd7PdLc9.js +0 -65
  154. package/text.CrYUewrP.js +0 -57
  155. package/title.Dvp8LKJt.js +0 -36
@@ -0,0 +1,191 @@
1
+ "use client";
2
+ import { j as s } 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.DDn-yX4P.js";
7
+ import { D as O } from "./Icon.n4XZrQ4N.js";
8
+ import { DSSystemFeedback as T } from "../systemfeedback._8gatmgR.js";
9
+ import { g as h } from "./helpers.B1JT5ShS.js";
10
+ import '../assets/Select.BptsMxz4.css';const V = "_root_15gy6_226", Z = "_hint_15gy6_234", J = "_label_15gy6_234", K = "_wrapper_15gy6_238", Q = "_affix_15gy6_244", U = "_affix--small_15gy6_266", X = "_affix--disabled_15gy6_280", Y = "_prefix_15gy6_283", z = "_affix--readonly_15gy6_286", G = "_suffix_15gy6_296", ee = "_action-button_15gy6_303", te = "_label--hidden_15gy6_322", se = "_feedback_15gy6_351", ae = "_select-wrapper_15gy6_356", ne = "_select_15gy6_356", le = "_select--invalid_15gy6_474", ce = "_select--small_15gy6_481", oe = "_input--has-leading-icon_15gy6_535", ie = "_input--has-action-button_15gy6_538", re = "_input--has-second-action-button_15gy6_541", _e = "_select--has-leading-icon_15gy6_544", de = "_select--has-action-button_15gy6_547", fe = "_select--has-second-action-button_15gy6_550", ue = "_select--has-affix_15gy6_553", he = "_select--is-ready_15gy6_567", pe = "_select--placeholder_15gy6_584", ge = "_chevron_15gy6_593", ye = "_chevron--small_15gy6_597", be = "_chevron--disabled_15gy6_600", e = {
11
+ root: V,
12
+ hint: Z,
13
+ label: J,
14
+ wrapper: K,
15
+ affix: Q,
16
+ "affix--small": "_affix--small_15gy6_266",
17
+ affixSmall: U,
18
+ "affix--disabled": "_affix--disabled_15gy6_280",
19
+ affixDisabled: X,
20
+ prefix: Y,
21
+ "affix--readonly": "_affix--readonly_15gy6_286",
22
+ affixReadonly: z,
23
+ suffix: G,
24
+ "action-button": "_action-button_15gy6_303",
25
+ actionButton: ee,
26
+ "label--hidden": "_label--hidden_15gy6_322",
27
+ labelHidden: te,
28
+ feedback: se,
29
+ "select-wrapper": "_select-wrapper_15gy6_356",
30
+ selectWrapper: ae,
31
+ select: ne,
32
+ "select--invalid": "_select--invalid_15gy6_474",
33
+ selectInvalid: le,
34
+ "select--small": "_select--small_15gy6_481",
35
+ selectSmall: ce,
36
+ "input--has-leading-icon": "_input--has-leading-icon_15gy6_535",
37
+ inputHasLeadingIcon: oe,
38
+ "input--has-action-button": "_input--has-action-button_15gy6_538",
39
+ inputHasActionButton: ie,
40
+ "input--has-second-action-button": "_input--has-second-action-button_15gy6_541",
41
+ inputHasSecondActionButton: re,
42
+ "select--has-leading-icon": "_select--has-leading-icon_15gy6_544",
43
+ selectHasLeadingIcon: _e,
44
+ "select--has-action-button": "_select--has-action-button_15gy6_547",
45
+ selectHasActionButton: de,
46
+ "select--has-second-action-button": "_select--has-second-action-button_15gy6_550",
47
+ selectHasSecondActionButton: fe,
48
+ "select--has-affix": "_select--has-affix_15gy6_553",
49
+ selectHasAffix: ue,
50
+ "select--is-ready": "_select--is-ready_15gy6_567",
51
+ selectIsReady: he,
52
+ "select--placeholder": "_select--placeholder_15gy6_584",
53
+ selectPlaceholder: pe,
54
+ chevron: ge,
55
+ "chevron--small": "_chevron--small_15gy6_597",
56
+ chevronSmall: ye,
57
+ "chevron--disabled": "_chevron--disabled_15gy6_600",
58
+ chevronDisabled: be
59
+ }, Be = ["medium", "small"], me = ({
60
+ id: t,
61
+ label: l,
62
+ options: n
63
+ }) => {
64
+ if (!t)
65
+ throw new Error(
66
+ h(
67
+ "DSSelect",
68
+ 'A unique "id" prop is required. Please add an unique "id" prop to the DSSelect component.'
69
+ )
70
+ );
71
+ if (!l)
72
+ throw new Error(
73
+ h(
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 (!n || n.length === 0)
79
+ throw new Error(
80
+ h(
81
+ "DSSelect",
82
+ 'Options are always required. Please add an "options" prop to the DSSelect component.'
83
+ )
84
+ );
85
+ }, xe = (t, l, n) => t === "" || l !== void 0 && l !== "" ? !1 : !(n !== void 0 && n !== ""), Ee = ({
86
+ id: t,
87
+ label: l,
88
+ options: n,
89
+ className: H,
90
+ defaultValue: p,
91
+ disabled: g = !1,
92
+ hideLabel: I = !1,
93
+ hint: d,
94
+ invalid: r = !1,
95
+ placeholder: f = "Select",
96
+ required: y = !1,
97
+ size: b = "medium",
98
+ systemFeedback: u,
99
+ value: m,
100
+ ...w
101
+ }) => {
102
+ process.env.NODE_ENV !== "production" && me({
103
+ id: t,
104
+ label: l,
105
+ options: n
106
+ });
107
+ const i = C(null), [j, A] = q(
108
+ xe(f, p, m)
109
+ );
110
+ W(() => {
111
+ if (!i.current) return;
112
+ const c = () => {
113
+ if (!i.current) return;
114
+ const o = i.current.value;
115
+ A(o === "");
116
+ }, a = i.current;
117
+ return a.addEventListener("change", c), () => {
118
+ a.removeEventListener("change", c);
119
+ };
120
+ }, []);
121
+ const B = F(I), x = `${t}-label`, v = `${t}-feedback`, S = `${t}-hint`, E = d ? ` ${S}` : "", L = (c) => [
122
+ f && /* @__PURE__ */ s.jsx("option", { value: "", children: f }, `${t}-hidden-option-disabled-placeholder`),
123
+ ...c.map((a) => {
124
+ if ("options" in a) {
125
+ const { label: o, options: $ } = a;
126
+ return /* @__PURE__ */ s.jsx("optgroup", { label: o, children: $.map(D) }, o);
127
+ } else
128
+ return D(a);
129
+ })
130
+ ], D = ({ label: c, value: a, isDisabled: o }) => /* @__PURE__ */ s.jsx("option", { value: a, disabled: o, children: c }, a), N = _(e.root, H), P = _(e.select, {
131
+ [e.selectSmall]: b === "small",
132
+ [e.selectInvalid]: r,
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]: b === "small",
139
+ [e.chevronDisabled]: g
140
+ });
141
+ return /* @__PURE__ */ s.jsxs("div", { className: N, children: [
142
+ /* @__PURE__ */ s.jsxs("label", { className: k, id: x, htmlFor: t, children: [
143
+ l,
144
+ y && /* @__PURE__ */ s.jsx(M, {})
145
+ ] }),
146
+ d && /* @__PURE__ */ s.jsx("div", { className: e.hint, id: S, children: d }),
147
+ r && u && /* @__PURE__ */ s.jsx(
148
+ T,
149
+ {
150
+ className: e.feedback,
151
+ message: u,
152
+ type: "invalid",
153
+ id: v,
154
+ "aria-live": "assertive"
155
+ }
156
+ ),
157
+ /* @__PURE__ */ s.jsxs("div", { className: e.selectWrapper, children: [
158
+ /* @__PURE__ */ s.jsx(
159
+ "select",
160
+ {
161
+ ...w,
162
+ id: t,
163
+ ref: i,
164
+ className: P,
165
+ "aria-labelledby": `${x}${E}`,
166
+ "aria-describedby": r && u ? v : void 0,
167
+ "aria-invalid": r,
168
+ defaultValue: p,
169
+ value: m,
170
+ disabled: g,
171
+ required: y,
172
+ children: L(n)
173
+ }
174
+ ),
175
+ /* @__PURE__ */ s.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
+ xe as g,
190
+ me as v
191
+ };
@@ -0,0 +1,195 @@
1
+ "use client";
2
+ import { j as s } from "./jsx-runtime.C115EyI4.js";
3
+ import { c as g } from "./index.CvOaL64Y.js";
4
+ import { useState as c, useRef as na, useEffect as m } from "react";
5
+ import { u as oa, h as ia } from "./useBreakpoint.5xBNDiCf.js";
6
+ import { g as k, p as H } from "./helpers.B1JT5ShS.js";
7
+ import { Asterisk as ra } from "../asterisk.DDn-yX4P.js";
8
+ import { DSSystemFeedback as la } from "../systemfeedback._8gatmgR.js";
9
+ import '../assets/Textarea.CIIVh03G.css';const ca = "_textarea_seaaz_226", da = "_textarea--invalid_seaaz_338", _a = "_textarea--small_seaaz_345", ua = "_textarea--resize-auto_seaaz_365", fa = "_root_seaaz_375", xa = "_hint_seaaz_383", ma = "_label_seaaz_383", ba = "_affix_seaaz_387", ha = "_affix--small_seaaz_409", za = "_affix--disabled_seaaz_423", pa = "_prefix_seaaz_426", va = "_affix--readonly_seaaz_429", ga = "_suffix_seaaz_439", Sa = "_leading-icon_seaaz_446", Ia = "_leading-icon--small_seaaz_458", Ca = "_leading-icon--disabled_seaaz_461", ya = "_action-button_seaaz_470", Aa = "_label--hidden_seaaz_489", Da = "_feedback_seaaz_518", ja = "_char-count_seaaz_523", wa = "_char-count-announcer_seaaz_540", t = {
10
+ textarea: ca,
11
+ "textarea--invalid": "_textarea--invalid_seaaz_338",
12
+ textareaInvalid: da,
13
+ "textarea--small": "_textarea--small_seaaz_345",
14
+ textareaSmall: _a,
15
+ "textarea--resize-auto": "_textarea--resize-auto_seaaz_365",
16
+ textareaResizeAuto: ua,
17
+ root: fa,
18
+ hint: xa,
19
+ label: ma,
20
+ affix: ba,
21
+ "affix--small": "_affix--small_seaaz_409",
22
+ affixSmall: ha,
23
+ "affix--disabled": "_affix--disabled_seaaz_423",
24
+ affixDisabled: za,
25
+ prefix: pa,
26
+ "affix--readonly": "_affix--readonly_seaaz_429",
27
+ affixReadonly: va,
28
+ suffix: ga,
29
+ "leading-icon": "_leading-icon_seaaz_446",
30
+ leadingIcon: Sa,
31
+ "leading-icon--small": "_leading-icon--small_seaaz_458",
32
+ leadingIconSmall: Ia,
33
+ "leading-icon--disabled": "_leading-icon--disabled_seaaz_461",
34
+ leadingIconDisabled: Ca,
35
+ "action-button": "_action-button_seaaz_470",
36
+ actionButton: ya,
37
+ "label--hidden": "_label--hidden_seaaz_489",
38
+ labelHidden: Aa,
39
+ feedback: Da,
40
+ "char-count": "_char-count_seaaz_523",
41
+ charCount: ja,
42
+ "char-count-announcer": "_char-count-announcer_seaaz_540",
43
+ charCountAnnouncer: wa
44
+ }, Va = ["medium", "small"], Ra = ({ id: n, label: _ }) => {
45
+ if (!n)
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
+ }, Pa = ({
60
+ id: n,
61
+ label: _,
62
+ charsLimitText: V = "Character limit reached",
63
+ charsRemainingText: P = "Characters remaining:",
64
+ className: q,
65
+ defaultValue: M,
66
+ disabled: O = !1,
67
+ hint: b,
68
+ hideLabel: F = !1,
69
+ invalid: o = !1,
70
+ maxLength: a,
71
+ readonly: S = !1,
72
+ required: I = !1,
73
+ resize: u = "vertical",
74
+ size: W = "medium",
75
+ systemFeedback: r,
76
+ value: h,
77
+ wrapperClassName: X,
78
+ onChange: C,
79
+ onInput: y,
80
+ ...Z
81
+ }) => {
82
+ process.env.NODE_ENV !== "production" && Ra({
83
+ id: n,
84
+ label: _
85
+ });
86
+ const [G, A] = c(M || ""), [l, D] = c(0), [J, j] = c(0), [K, w] = c("off"), [R, z] = c(r), [p, v] = c(o), T = h !== void 0, f = T ? h : G, i = na(null), Q = oa(F);
87
+ m(() => {
88
+ if (!a || a <= 0)
89
+ return;
90
+ l >= a * 0.8 ? w("polite") : w("off");
91
+ const e = setTimeout(() => {
92
+ j(a - l || 0);
93
+ }, 1e3);
94
+ return () => clearTimeout(e);
95
+ }, [l]), m(() => {
96
+ A(f || ""), d(), a && a > 0 && (D(f.toString().length || 0), j(a - f.toString().length || 0));
97
+ }, [h]), m(() => {
98
+ o && r ? (z(r), v(o)) : !o && a && a >= 0 && l >= a ? (v(!0), z(V)) : (z(r), v(o));
99
+ }, [o, p, r, l]), m(() => {
100
+ if (ia && 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, q, {
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 = `${n}-label`, N = `${n}-feedback`, B = `${n}-hint`, $ = `${n}-char-count-announcer`, aa = b ? ` ${B}` : "", d = () => {
114
+ if (i.current && u === "auto") {
115
+ i.current.style.height = "auto";
116
+ const e = H(i.current.scrollHeight), x = 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
+ e + x}rem`;
120
+ }
121
+ }, ea = () => {
122
+ const e = [];
123
+ return a && a > 0 && e.push($), o && r && e.push(N), e.length > 0 ? e.join(" ") : void 0;
124
+ }, ta = (e) => {
125
+ var x;
126
+ y && y(e), a && a > 0 && D(((x = i.current) == null ? void 0 : x.value.length) || 0), d();
127
+ }, sa = (e) => {
128
+ C && C(e), T || A(e.target.value);
129
+ };
130
+ return /* @__PURE__ */ s.jsxs("div", { className: U, children: [
131
+ /* @__PURE__ */ s.jsxs("label", { className: L, id: E, htmlFor: n, children: [
132
+ _,
133
+ I && /* @__PURE__ */ s.jsx(ra, {})
134
+ ] }),
135
+ b && /* @__PURE__ */ s.jsx("div", { className: t.hint, id: B, children: b }),
136
+ p && R && /* @__PURE__ */ s.jsx(
137
+ la,
138
+ {
139
+ className: t.feedback,
140
+ message: R,
141
+ type: "invalid",
142
+ id: N
143
+ }
144
+ ),
145
+ /* @__PURE__ */ s.jsx(
146
+ "textarea",
147
+ {
148
+ className: Y,
149
+ id: n,
150
+ ref: i,
151
+ ...Z,
152
+ "aria-labelledby": `${E}${aa}`,
153
+ "aria-describedby": ea(),
154
+ "aria-invalid": o,
155
+ "aria-disabled": S,
156
+ maxLength: a,
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: sa,
165
+ onInput: ta
166
+ }
167
+ ),
168
+ a !== void 0 && a > 0 && /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
169
+ /* @__PURE__ */ s.jsxs("div", { className: t.charCount, "aria-hidden": "true", children: [
170
+ l,
171
+ "/",
172
+ a
173
+ ] }),
174
+ /* @__PURE__ */ s.jsxs(
175
+ "div",
176
+ {
177
+ className: t.charCountAnnouncer,
178
+ id: $,
179
+ "aria-live": K,
180
+ "aria-atomic": "true",
181
+ children: [
182
+ P,
183
+ " ",
184
+ J
185
+ ]
186
+ }
187
+ )
188
+ ] })
189
+ ] });
190
+ };
191
+ export {
192
+ Pa as D,
193
+ Va as T,
194
+ Ra as v
195
+ };
@@ -1,25 +1,25 @@
1
1
  "use client";
2
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",
3
+ import { c as e } from "./index.CvOaL64Y.js";
4
+ import { forwardRef as f } from "react";
5
+ import { DSButton as u } from "../button.CkHCQg3Y.js";
6
+ import { D as g } from "./Icon.n4XZrQ4N.js";
7
+ import '../assets/Toast.Dsvs1zdM.css';const h = "_root_m9wn3_80", p = "_root--closing_m9wn3_94", x = "_fade-out_m9wn3_1", I = "_move-in_m9wn3_1", S = "_root--success_m9wn3_129", N = "_root--info_m9wn3_133", j = "_root--warning_m9wn3_137", v = "_content_m9wn3_142", C = "_content--hide-icon_m9wn3_149", D = "_icon_m9wn3_153", O = "_message_m9wn3_157", o = {
8
+ root: h,
9
+ "root--closing": "_root--closing_m9wn3_94",
10
+ rootClosing: p,
11
+ "fade-out": "_fade-out_m9wn3_1",
12
+ fadeOut: x,
13
+ "move-in": "_move-in_m9wn3_1",
14
+ moveIn: I,
15
+ "root--success": "_root--success_m9wn3_129",
16
+ rootSuccess: S,
17
+ "root--info": "_root--info_m9wn3_133",
18
+ rootInfo: N,
19
+ "root--warning": "_root--warning_m9wn3_137",
20
+ rootWarning: j,
21
+ content: v,
22
+ "content--hide-icon": "_content--hide-icon_m9wn3_149",
23
23
  contentHideIcon: C,
24
24
  icon: D,
25
25
  message: O
@@ -27,38 +27,38 @@ import '../assets/Toast.BzVaebc0.css';const p = "_root_127fr_80", x = "_root--cl
27
27
  success: "circle-check-colored",
28
28
  warning: "triangle-exclamationmark-colored",
29
29
  info: "circle-info-colored"
30
- }, H = u(
30
+ }, H = f(
31
31
  ({
32
32
  message: s,
33
- className: e,
34
- hideIcon: r = !1,
33
+ className: r,
34
+ hideIcon: c = !1,
35
35
  variant: t = "info",
36
36
  onClick: i,
37
37
  onMouseEnter: a,
38
38
  onMouseLeave: _,
39
- ...f
39
+ ...m
40
40
  }, l) => {
41
- const m = c(o.root, e, {
41
+ const d = e(o.root, r, {
42
42
  [o.rootSuccess]: t === "success",
43
43
  [o.rootWarning]: t === "warning",
44
44
  [o.rootInfo]: t === "info"
45
- }), d = c(o.content, {
46
- [o.contentHideIcon]: r
45
+ }), w = e(o.content, {
46
+ [o.contentHideIcon]: c
47
47
  });
48
48
  return /* @__PURE__ */ n.jsx(
49
49
  "aside",
50
50
  {
51
- className: m,
51
+ className: d,
52
52
  ref: l,
53
53
  popover: "manual",
54
54
  "data-ds-toast": !0,
55
55
  onMouseEnter: a,
56
56
  onMouseLeave: _,
57
57
  "aria-label": s,
58
- ...f,
59
- children: /* @__PURE__ */ n.jsxs("div", { className: d, children: [
60
- !r && /* @__PURE__ */ n.jsx(
61
- h,
58
+ ...m,
59
+ children: /* @__PURE__ */ n.jsxs("div", { className: w, children: [
60
+ !c && /* @__PURE__ */ n.jsx(
61
+ g,
62
62
  {
63
63
  name: T[t],
64
64
  className: o.icon,
@@ -67,7 +67,7 @@ import '../assets/Toast.BzVaebc0.css';const p = "_root_127fr_80", x = "_root--cl
67
67
  ),
68
68
  /* @__PURE__ */ n.jsx("div", { className: o.message, children: s }),
69
69
  /* @__PURE__ */ n.jsx(
70
- g,
70
+ u,
71
71
  {
72
72
  hideLabel: !0,
73
73
  iconName: "cross",
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { j as u } from "./chunks/jsx-runtime.C115EyI4.js";
3
- import { v as x, c as C } from "./chunks/CustomReactSelect.5dHi6PEO.js";
3
+ import { v as x, c as C } from "./chunks/CustomReactSelect.C4rTVlvy.js";
4
4
  const v = ({
5
5
  id: s,
6
6
  label: o,
@@ -37,7 +37,7 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
37
37
  theme?: Theme;
38
38
  /** Visual style variant of the button */
39
39
  variant?: ButtonVariant;
40
- /** Callback function triggered when the button is clicked */
40
+ /** Callback function called when the button is clicked */
41
41
  onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
42
42
  }
43
43
  /**
@@ -18,7 +18,7 @@ export interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement> {
18
18
  invalid?: boolean;
19
19
  /** Defines a system feedback message, shown when `invalid={true}` */
20
20
  systemFeedback?: string;
21
- /** Callback function triggered when the state of the checkbox changes */
21
+ /** Callback function called when the state of the checkbox changes */
22
22
  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
23
23
  }
24
24
  /**
@@ -47,9 +47,9 @@ export interface CustomReactSelectProps<IsMulti extends boolean> extends PickedR
47
47
  translations?: ComboboxAriaTranslations;
48
48
  /** Value of the DSCombobox */
49
49
  value?: IsMulti extends true ? ComboboxOption[] : ComboboxOption;
50
- /** Callback function triggered when the selection of the DSCombobox changes */
50
+ /** Callback function called when the selection of the DSCombobox changes */
51
51
  onChange?: (newValue: IsMulti extends true ? ComboboxOption[] : ComboboxOption) => void;
52
- /** Callback function triggered when the value of the DSCombobox input changes */
52
+ /** Callback function called when the value of the DSCombobox input changes */
53
53
  onInputChange?: (newValue: string) => void;
54
54
  }
55
55
  /**
@@ -1,11 +1,30 @@
1
1
  import { HTMLAttributes } from 'react';
2
2
 
3
- type DialogProps = {
3
+ export type DialogProps = {
4
+ /** Content within the Dialog */
4
5
  children: React.ReactNode;
6
+ /** Label for the close button */
7
+ closeButtonLabel?: string;
8
+ /** Disables closing the Dialog by clicking on the backdrop */
9
+ disableBackdropClose?: boolean;
10
+ /** Content within the Dialog's footer. For example a CTA button. */
5
11
  footer?: React.ReactNode;
12
+ /** Content within the Dialog's header. For example a Heading. */
6
13
  header?: React.ReactNode;
14
+ /**
15
+ * If `true`, hides the close button. Ensure you provide an alternative method for closing,
16
+ * such as a button in the footer or within the children components.
17
+ */
18
+ hideCloseButton?: boolean;
19
+ /** Determines if the Dialog is open */
7
20
  isOpen?: boolean;
21
+ /** Callback function called when the Dialog is closed */
8
22
  onClose?: () => void;
9
23
  } & HTMLAttributes<HTMLDialogElement>;
10
- export declare const DSDialog: ({ children, className, footer, header, isOpen, onClose, }: DialogProps) => JSX.Element;
11
- export {};
24
+ /**
25
+ * A component that renders a modal dialog, which can be used for displaying
26
+ * important messages, forms, or confirmations.
27
+ *
28
+ * <div className="ds-info">For more information on the different types of notifications and to determine which is best suited for your needs, please refer to our [Notification Guidelines](/docs/templates-notification-guidelines--documentation) and explore the decision trees provided.</div>
29
+ */
30
+ export declare const DSDialog: ({ children, className, closeButtonLabel, disableBackdropClose, footer, header, hideCloseButton, isOpen, onClose, ...rest }: DialogProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { DialogProps } from './Dialog';
2
+
3
+ type ValidationProps = Pick<DialogProps, 'tabIndex'>;
4
+ /**
5
+ * Validates the given properties of the DSDialog component for common configuration errors.
6
+ * This function is intended to be used in development mode to provide developers with
7
+ * warnings about potential misuse of the component.
8
+ *
9
+ * @param validationProps - The subset of DSDialog properties to validate.
10
+ */
11
+ export declare const validateDialogProps: ({ tabIndex }: ValidationProps) => void;
12
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import { DrawerPosition } from './Drawer.utils';
3
+
4
+ export type DrawerProps = {
5
+ /** Content within the Drawer */
6
+ children: React.ReactNode;
7
+ /** Label for the close button */
8
+ closeButtonLabel?: string;
9
+ /** Disables closing the Drawer by clicking on the backdrop */
10
+ disableBackdropClose?: boolean;
11
+ /** Content within the Drawer's footer. For example a CTA button. */
12
+ footer?: React.ReactNode;
13
+ /** Content within the Drawer's header. For example a Heading. */
14
+ header?: React.ReactNode;
15
+ /**
16
+ * If `true`, hides the close button. Ensure you provide an alternative method for closing,
17
+ * such as a button in the footer or within the children components.
18
+ */
19
+ hideCloseButton?: boolean;
20
+ /** Determines if the Drawer is open */
21
+ isOpen?: boolean;
22
+ /** Specifies the final position of the Drawer after opening. */
23
+ position?: DrawerPosition;
24
+ /** Callback function called when the Drawer is closed */
25
+ onClose?: () => void;
26
+ } & HTMLAttributes<HTMLDialogElement>;
27
+ /**
28
+ * A component that renders a modal drawer, which can be used for navigation,
29
+ * displaying additional information, or providing extra controls.
30
+ */
31
+ export declare const DSDrawer: ({ children, className, closeButtonLabel, disableBackdropClose, footer, header, hideCloseButton, position, isOpen, onClose, ...rest }: DrawerProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { DrawerProps } from './Drawer';
2
+
3
+ export declare const DRAWER_POSITION: readonly ["start", "end"];
4
+ export type DrawerPosition = (typeof DRAWER_POSITION)[number];
5
+ type ValidationProps = Pick<DrawerProps, 'tabIndex'>;
6
+ /**
7
+ * Validates the given properties of the DSDrawer component for common configuration errors.
8
+ * This function is intended to be used in development mode to provide developers with
9
+ * warnings about potential misuse of the component.
10
+ *
11
+ * @param validationProps - The subset of DSDrawer properties to validate.
12
+ */
13
+ export declare const validateDrawerProps: ({ tabIndex }: ValidationProps) => void;
14
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -14,7 +14,7 @@ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
14
14
  actionButtonIconName?: IconName;
15
15
  /** Custom source URL for the action button icon */
16
16
  actionButtonIconSource?: IconProps['source'];
17
- /** Callback function triggered when the action button is clicked */
17
+ /** Callback function called when the action button is clicked */
18
18
  actionButtonOnClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
19
19
  /** Disables the input, preventing user interaction */
20
20
  disabled?: boolean;
@@ -31,7 +31,7 @@ export interface InputSearchProps extends Omit<InputHTMLAttributes<HTMLInputElem
31
31
  size?: InputSize;
32
32
  /** Value of the input */
33
33
  value?: string;
34
- /** Callback function triggered when the submit button is clicked */
34
+ /** Callback function called when the submit button is clicked */
35
35
  submitButtonOnClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
36
36
  }
37
37
  /**