@foi/design-system 0.0.18 → 0.0.19
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.
- package/README.md +658 -63
- package/dist/{DatePicker.utils-ytCEcs6T.js → DatePicker.utils-BAUVa26Q.js} +2 -2
- package/dist/{DatePicker.utils-ytCEcs6T.js.map → DatePicker.utils-BAUVa26Q.js.map} +1 -1
- package/dist/{emotion-react-jsx-runtime.browser.esm-Ct_bZ5JG.js → IconButton-C3x-E-ot.js} +458 -248
- package/dist/IconButton-C3x-E-ot.js.map +1 -0
- package/dist/{RadioGroup-D_R-nwCD.js → RadioGroup-Cvt9MtvM.js} +71 -71
- package/dist/{RadioGroup-D_R-nwCD.js.map → RadioGroup-Cvt9MtvM.js.map} +1 -1
- package/dist/RadioGroup.context-v_CCYB7_.js +392 -0
- package/dist/RadioGroup.context-v_CCYB7_.js.map +1 -0
- package/dist/{Switch-DK5hEXUS.js → Switch-6eNmT34-.js} +315 -315
- package/dist/{Switch-DK5hEXUS.js.map → Switch-6eNmT34-.js.map} +1 -1
- package/dist/{ThemeProvider-BlqXHfU_.js → ThemeProvider-C_PzAJz3.js} +11 -6
- package/dist/{ThemeProvider-BlqXHfU_.js.map → ThemeProvider-C_PzAJz3.js.map} +1 -1
- package/dist/Toast-_9W7YGxS.js +146 -0
- package/dist/Toast-_9W7YGxS.js.map +1 -0
- package/dist/atoms.mjs +4 -3
- package/dist/components/atoms/Button/Button.interface.d.ts +1 -1
- package/dist/components/atoms/Checkbox/Checkbox.interface.d.ts +3 -3
- package/dist/components/atoms/Chip/Chip.d.ts +4 -0
- package/dist/components/atoms/Chip/Chip.emotion.d.ts +2 -0
- package/dist/components/atoms/Chip/Chip.interface.d.ts +14 -0
- package/dist/components/atoms/Chip/index.d.ts +5 -0
- package/dist/components/atoms/DatePicker/DatePicker.interface.d.ts +2 -2
- package/dist/components/atoms/DatePicker/DatePickerMenu/DatePickerMenu.interface.d.ts +3 -3
- package/dist/components/atoms/IconButton/IconButton.interface.d.ts +2 -2
- package/dist/components/atoms/NumberField/NumberField.interface.d.ts +2 -2
- package/dist/components/atoms/Radio/Radio.interface.d.ts +2 -2
- package/dist/components/atoms/Select/Select.interface.d.ts +2 -2
- package/dist/components/atoms/Select/SelectMenu/SelectMenu.interface.d.ts +1 -1
- package/dist/components/atoms/Slider/Slider.interface.d.ts +4 -4
- package/dist/components/atoms/Switch/Switch.interface.d.ts +1 -1
- package/dist/components/atoms/TextField/TextField.interface.d.ts +2 -2
- package/dist/components/molecules/CheckboxGroup/CheckboxGroup.interface.d.ts +2 -2
- package/dist/components/molecules/CheckboxTree/CheckboxTree.interface.d.ts +2 -2
- package/dist/components/molecules/Modal/Modal.interface.d.ts +4 -4
- package/dist/components/molecules/RadioGroup/RadioGroup.interface.d.ts +2 -2
- package/dist/components/molecules/Toast/Toast.context.d.ts +2 -0
- package/dist/components/molecules/Toast/Toast.d.ts +4 -0
- package/dist/components/molecules/Toast/Toast.emotion.d.ts +4 -0
- package/dist/components/molecules/Toast/Toast.hook.d.ts +1 -0
- package/dist/components/molecules/Toast/Toast.interface.d.ts +33 -0
- package/dist/components/molecules/Toast/Toast.provider.d.ts +3 -0
- package/dist/components/molecules/Toast/index.d.ts +3 -0
- package/dist/components/organisms/DataGrid/DataGrid.interface.d.ts +3 -3
- package/dist/components/organisms/DataGrid/DataGridMenu/DataGridMenu.interface.d.ts +1 -1
- package/dist/hocs/ThemeProvider/ThemeProvider.interface.d.ts +6 -0
- package/dist/hocs/ThemeProvider/components/{Button.d.ts → atoms/Button.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Checkbox.d.ts → atoms/Checkbox.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/atoms/Chip.d.ts +13 -0
- package/dist/hocs/ThemeProvider/components/{DatePicker.d.ts → atoms/DatePicker.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{DatePickerMenu.d.ts → atoms/DatePickerMenu.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{IconButton.d.ts → atoms/IconButton.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{NumberField.d.ts → atoms/NumberField.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Pagination.d.ts → atoms/Pagination.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{PaginationMenu.d.ts → atoms/PaginationMenu.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Radio.d.ts → atoms/Radio.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Select.d.ts → atoms/Select.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{SelectMenu.d.ts → atoms/SelectMenu.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Slider.d.ts → atoms/Slider.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Switch.d.ts → atoms/Switch.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{TextField.d.ts → atoms/TextField.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/index.d.ts +23 -17
- package/dist/hocs/ThemeProvider/components/{CheckboxGroup.d.ts → molecules/CheckboxGroup.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{CheckboxTree.d.ts → molecules/CheckboxTree.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{Modal.d.ts → molecules/Modal.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{RadioGroup.d.ts → molecules/RadioGroup.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/molecules/Toast.d.ts +16 -0
- package/dist/hocs/ThemeProvider/components/{DataGrid.d.ts → organisms/DataGrid.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/components/{DataGridMenu.d.ts → organisms/DataGridMenu.d.ts} +1 -1
- package/dist/hocs/ThemeProvider/interfaces/Components.interface.d.ts +2 -0
- package/dist/hocs.mjs +1 -1
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.mjs +2 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +247 -239
- package/dist/index.mjs.map +1 -1
- package/dist/molecules.d.ts +2 -0
- package/dist/molecules.mjs +3 -2
- package/dist/theme/dark/components/atoms/Chip.d.ts +13 -0
- package/dist/theme/dark/components/index.d.ts +287 -263
- package/dist/theme/dark/components/molecules/Toast.d.ts +17 -0
- package/dist/theme/dark/index.d.ts +287 -263
- package/dist/theme/index.d.ts +287 -263
- package/dist/{theme-CLkxVsoE.js → theme-BjrtNRDQ.js} +230 -218
- package/dist/theme-BjrtNRDQ.js.map +1 -0
- package/dist/theme.mjs +1 -1
- package/dist/utilities.mjs +1 -1
- package/package.json +1 -1
- package/dist/RadioGroup.context-CdFGi5z1.js +0 -601
- package/dist/RadioGroup.context-CdFGi5z1.js.map +0 -1
- package/dist/emotion-react-jsx-runtime.browser.esm-Ct_bZ5JG.js.map +0 -1
- package/dist/theme-CLkxVsoE.js.map +0 -1
- /package/dist/theme/dark/components/{Button.d.ts → atoms/Button.d.ts} +0 -0
- /package/dist/theme/dark/components/{Checkbox.d.ts → atoms/Checkbox.d.ts} +0 -0
- /package/dist/theme/dark/components/{DatePicker.d.ts → atoms/DatePicker.d.ts} +0 -0
- /package/dist/theme/dark/components/{DatePickerMenu.d.ts → atoms/DatePickerMenu.d.ts} +0 -0
- /package/dist/theme/dark/components/{IconButton.d.ts → atoms/IconButton.d.ts} +0 -0
- /package/dist/theme/dark/components/{NumberField.d.ts → atoms/NumberField.d.ts} +0 -0
- /package/dist/theme/dark/components/{Pagination.d.ts → atoms/Pagination.d.ts} +0 -0
- /package/dist/theme/dark/components/{PaginationMenu.d.ts → atoms/PaginationMenu.d.ts} +0 -0
- /package/dist/theme/dark/components/{Radio.d.ts → atoms/Radio.d.ts} +0 -0
- /package/dist/theme/dark/components/{Select.d.ts → atoms/Select.d.ts} +0 -0
- /package/dist/theme/dark/components/{SelectMenu.d.ts → atoms/SelectMenu.d.ts} +0 -0
- /package/dist/theme/dark/components/{Slider.d.ts → atoms/Slider.d.ts} +0 -0
- /package/dist/theme/dark/components/{Switch.d.ts → atoms/Switch.d.ts} +0 -0
- /package/dist/theme/dark/components/{TextField.d.ts → atoms/TextField.d.ts} +0 -0
- /package/dist/theme/dark/components/{CheckboxGroup.d.ts → molecules/CheckboxGroup.d.ts} +0 -0
- /package/dist/theme/dark/components/{CheckboxTree.d.ts → molecules/CheckboxTree.d.ts} +0 -0
- /package/dist/theme/dark/components/{Modal.d.ts → molecules/Modal.d.ts} +0 -0
- /package/dist/theme/dark/components/{RadioGroup.d.ts → molecules/RadioGroup.d.ts} +0 -0
- /package/dist/theme/dark/components/{DataGrid.d.ts → organisms/DataGrid.d.ts} +0 -0
- /package/dist/theme/dark/components/{DataGridMenu.d.ts → organisms/DataGridMenu.d.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r } from "./theme-
|
|
3
|
-
import {
|
|
1
|
+
import { a as e, i as t, n, o as r, s as i, t as a } from "./IconButton-C3x-E-ot.js";
|
|
2
|
+
import { r as o } from "./theme-BjrtNRDQ.js";
|
|
3
|
+
import { i as s, n as c, r as l, t as u } from "./RadioGroup.context-v_CCYB7_.js";
|
|
4
4
|
import d, { useEffect as f, useMemo as p, useRef as m } from "react";
|
|
5
5
|
import { css as h } from "@emotion/react";
|
|
6
6
|
import { useController as g } from "react-hook-form";
|
|
@@ -8,11 +8,11 @@ import { createPortal as _ } from "react-dom";
|
|
|
8
8
|
//#region src/components/molecules/CheckboxGroup/CheckboxGroup.emotion.ts
|
|
9
9
|
var v = (e, t) => `
|
|
10
10
|
.--CHECKBOXGROUP-label {
|
|
11
|
-
${
|
|
11
|
+
${o(e, "color", `--CHECKBOXGROUP-EVENTS-${t}-COLOR-PRIMARY`)}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.--CHECKBOXGROUP-helperText {
|
|
15
|
-
${
|
|
15
|
+
${o(e, "color", `--CHECKBOXGROUP-EVENTS-${t}-COLOR-SECONDARY`)}
|
|
16
16
|
}
|
|
17
17
|
`, y = (e) => h`
|
|
18
18
|
&.--CHECKBOXGROUP {
|
|
@@ -61,12 +61,12 @@ var v = (e, t) => `
|
|
|
61
61
|
margin-left: 14px;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
`, b = "--CHECKBOXGROUP", x = ({ name:
|
|
64
|
+
`, b = "--CHECKBOXGROUP", x = ({ name: n, control: r, children: i, label: a, helperText: o, showErrorText: c = !0, disabled: l, direction: u = "vertical", style: d, className: f }) => {
|
|
65
65
|
let { field: p, fieldState: m } = g({
|
|
66
66
|
control: r,
|
|
67
|
-
name:
|
|
67
|
+
name: n
|
|
68
68
|
}), h = Array.isArray(p.value) ? p.value : [], _ = m.error;
|
|
69
|
-
return /* @__PURE__ */ t(
|
|
69
|
+
return /* @__PURE__ */ t(s.Provider, {
|
|
70
70
|
value: {
|
|
71
71
|
checkedValues: h,
|
|
72
72
|
onChange: (e, t) => {
|
|
@@ -76,7 +76,7 @@ var v = (e, t) => `
|
|
|
76
76
|
disabled: l,
|
|
77
77
|
error: _
|
|
78
78
|
},
|
|
79
|
-
children: /* @__PURE__ */
|
|
79
|
+
children: /* @__PURE__ */ e("div", {
|
|
80
80
|
className: [
|
|
81
81
|
b,
|
|
82
82
|
`${b}--${u}`,
|
|
@@ -87,29 +87,29 @@ var v = (e, t) => `
|
|
|
87
87
|
css: y(d),
|
|
88
88
|
"data-testid": b,
|
|
89
89
|
children: [
|
|
90
|
-
|
|
90
|
+
a && /* @__PURE__ */ t("span", {
|
|
91
91
|
className: `${b}-label`,
|
|
92
92
|
"data-testid": `${b}-label`,
|
|
93
|
-
children:
|
|
93
|
+
children: a
|
|
94
94
|
}),
|
|
95
95
|
/* @__PURE__ */ t("div", {
|
|
96
96
|
className: `${b}-items`,
|
|
97
97
|
"data-testid": `${b}-items`,
|
|
98
|
-
children:
|
|
98
|
+
children: i
|
|
99
99
|
}),
|
|
100
|
-
/* @__PURE__ */
|
|
100
|
+
/* @__PURE__ */ e("span", {
|
|
101
101
|
className: `${b}-helperText`,
|
|
102
102
|
"data-testid": `${b}-helperText`,
|
|
103
|
-
children: [
|
|
103
|
+
children: [o && (!_ || !c) && o, c && _ && _.message]
|
|
104
104
|
})
|
|
105
105
|
]
|
|
106
106
|
})
|
|
107
107
|
});
|
|
108
|
-
}, S = ({ theme:
|
|
109
|
-
let { componentStyles:
|
|
108
|
+
}, S = ({ theme: e, variant: n = "default", ...a }) => {
|
|
109
|
+
let { componentStyles: o } = i([r.CHECKBOXGROUP], e, n.toUpperCase());
|
|
110
110
|
return /* @__PURE__ */ t(x, {
|
|
111
|
-
...
|
|
112
|
-
style:
|
|
111
|
+
...a,
|
|
112
|
+
style: o
|
|
113
113
|
});
|
|
114
114
|
}, C = (e) => h`
|
|
115
115
|
&.--CHECKBOXTREE {
|
|
@@ -130,7 +130,7 @@ var v = (e, t) => `
|
|
|
130
130
|
font-size: 13px;
|
|
131
131
|
line-height: 16px;
|
|
132
132
|
margin-left: 14px;
|
|
133
|
-
${
|
|
133
|
+
${o(e, "color", "--CHECKBOXTREE-EVENTS-ENABLED-COLOR-SECONDARY")}
|
|
134
134
|
|
|
135
135
|
&:empty {
|
|
136
136
|
display: none;
|
|
@@ -139,28 +139,28 @@ var v = (e, t) => `
|
|
|
139
139
|
|
|
140
140
|
&.--CHECKBOXTREE-error {
|
|
141
141
|
.--CHECKBOXTREE-helperText {
|
|
142
|
-
${
|
|
142
|
+
${o(e, "color", "--CHECKBOXTREE-EVENTS-ERROR-COLOR-SECONDARY")}
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
&.--CHECKBOXTREE-disabled {
|
|
147
147
|
.--CHECKBOXTREE-helperText {
|
|
148
|
-
${
|
|
148
|
+
${o(e, "color", "--CHECKBOXTREE-EVENTS-DISABLED-COLOR-SECONDARY")}
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
|
-
`, w = "--CHECKBOXTREE", T = ({ name:
|
|
152
|
+
`, w = "--CHECKBOXTREE", T = ({ name: r, control: i, children: a, label: o, iconChecked: s = /* @__PURE__ */ t(n, { name: "check" }), iconIndeterminate: u = /* @__PURE__ */ t(n, { name: "remove" }), helperText: h, showErrorText: _ = !0, disabled: v, style: y, className: b }) => {
|
|
153
153
|
let { field: x, fieldState: S } = g({
|
|
154
|
-
control:
|
|
155
|
-
name:
|
|
156
|
-
}), T = Array.isArray(x.value) ? x.value : [], E = S.error, D = p(() => d.Children.toArray(
|
|
154
|
+
control: i,
|
|
155
|
+
name: r
|
|
156
|
+
}), T = Array.isArray(x.value) ? x.value : [], E = S.error, D = p(() => d.Children.toArray(a).map((e) => {
|
|
157
157
|
let t = e;
|
|
158
158
|
return t.props?.value ?? t.props?.name ?? "";
|
|
159
|
-
}).filter(Boolean), [
|
|
159
|
+
}).filter(Boolean), [a]), O = D.length > 0 && D.every((e) => T.includes(e)), k = !O && D.some((e) => T.includes(e)), A = m(null);
|
|
160
160
|
return f(() => {
|
|
161
161
|
let e = A.current?.querySelectorAll("input[type=\"checkbox\"]")[0];
|
|
162
162
|
e && (e.indeterminate = k);
|
|
163
|
-
}, [k]), /* @__PURE__ */
|
|
163
|
+
}, [k]), /* @__PURE__ */ e("div", {
|
|
164
164
|
ref: A,
|
|
165
165
|
className: [
|
|
166
166
|
w,
|
|
@@ -178,12 +178,12 @@ var v = (e, t) => `
|
|
|
178
178
|
x.onChange(t), x.onBlur();
|
|
179
179
|
},
|
|
180
180
|
label: o,
|
|
181
|
-
icon: k ? u :
|
|
181
|
+
icon: k ? u : s,
|
|
182
182
|
disabled: v,
|
|
183
183
|
showErrorText: !1,
|
|
184
184
|
helperText: void 0
|
|
185
185
|
}),
|
|
186
|
-
/* @__PURE__ */ t(
|
|
186
|
+
/* @__PURE__ */ t(l.Provider, {
|
|
187
187
|
value: {
|
|
188
188
|
checkedValues: T,
|
|
189
189
|
onChange: (e, t) => {
|
|
@@ -196,31 +196,31 @@ var v = (e, t) => `
|
|
|
196
196
|
children: /* @__PURE__ */ t("div", {
|
|
197
197
|
className: `${w}-children`,
|
|
198
198
|
"data-testid": `${w}-children`,
|
|
199
|
-
children:
|
|
199
|
+
children: a
|
|
200
200
|
})
|
|
201
201
|
}),
|
|
202
|
-
/* @__PURE__ */
|
|
202
|
+
/* @__PURE__ */ e("span", {
|
|
203
203
|
className: `${w}-helperText`,
|
|
204
204
|
"data-testid": `${w}-helperText`,
|
|
205
205
|
children: [h && (!E || !_) && h, _ && E && E.message]
|
|
206
206
|
})
|
|
207
207
|
]
|
|
208
208
|
});
|
|
209
|
-
}, E = ({ theme:
|
|
210
|
-
let { componentStyles:
|
|
209
|
+
}, E = ({ theme: e, variant: n = "default", ...a }) => {
|
|
210
|
+
let { componentStyles: o } = i([r.CHECKBOXTREE], e, n.toUpperCase());
|
|
211
211
|
return /* @__PURE__ */ t(T, {
|
|
212
|
-
...
|
|
213
|
-
style:
|
|
212
|
+
...a,
|
|
213
|
+
style: o
|
|
214
214
|
});
|
|
215
215
|
}, D = (e, t) => `
|
|
216
216
|
// BACKGROUNDS
|
|
217
|
-
${
|
|
217
|
+
${o(e, "background-color", `--MODAL-${t}-BACKGROUND-COLOR`)}
|
|
218
218
|
|
|
219
219
|
// BORDERS
|
|
220
|
-
${
|
|
221
|
-
${
|
|
222
|
-
${
|
|
223
|
-
${
|
|
220
|
+
${o(e, "border-color", `--MODAL-${t}-BORDER-COLOR`)}
|
|
221
|
+
${o(e, "border-width", `--MODAL-${t}-BORDER-WIDTH`)}
|
|
222
|
+
${o(e, "border-style", `--MODAL-${t}-BORDER-STYLE`)}
|
|
223
|
+
${o(e, "border-radius", `--MODAL-${t}-BORDER-RADIUS`)}
|
|
224
224
|
`, O = (e) => h`
|
|
225
225
|
&.--MODAL-scrim {
|
|
226
226
|
position: fixed;
|
|
@@ -262,7 +262,7 @@ var v = (e, t) => `
|
|
|
262
262
|
flex: 1;
|
|
263
263
|
margin: 0;
|
|
264
264
|
|
|
265
|
-
${
|
|
265
|
+
${o(e, "color", "--MODAL-EVENTS-ENABLED-COLOR-PRIMARY")};
|
|
266
266
|
|
|
267
267
|
font-family: ${e["--FONTFAMILY-PRIMARY"]};
|
|
268
268
|
font-size: 1rem;
|
|
@@ -275,7 +275,7 @@ var v = (e, t) => `
|
|
|
275
275
|
padding: 20px;
|
|
276
276
|
overflow-y: auto;
|
|
277
277
|
|
|
278
|
-
${
|
|
278
|
+
${o(e, "color", "--MODAL-EVENTS-ENABLED-COLOR-SECONDARY")};
|
|
279
279
|
|
|
280
280
|
font-family: ${e["--FONTFAMILY-PRIMARY"]};
|
|
281
281
|
font-size: 0.875rem;
|
|
@@ -290,36 +290,36 @@ var v = (e, t) => `
|
|
|
290
290
|
flex-shrink: 0;
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
|
-
`, k = "--MODAL", A = ({ open:
|
|
294
|
-
if (!
|
|
295
|
-
let
|
|
296
|
-
e.key === "Escape" &&
|
|
293
|
+
`, k = "--MODAL", A = ({ open: r, onClose: i, header: o, showCloseButton: s = !0, size: c = "md", children: l, footer: u, staticBackdrop: d = !1, className: p, style: m }) => (f(() => {
|
|
294
|
+
if (!r || d) return;
|
|
295
|
+
let e = (e) => {
|
|
296
|
+
e.key === "Escape" && i();
|
|
297
297
|
};
|
|
298
|
-
return document.addEventListener("keydown",
|
|
298
|
+
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
299
299
|
}, [
|
|
300
|
-
e,
|
|
301
300
|
r,
|
|
301
|
+
i,
|
|
302
302
|
d
|
|
303
|
-
]),
|
|
303
|
+
]), r ? _(/* @__PURE__ */ t("div", {
|
|
304
304
|
className: `${k}-scrim`,
|
|
305
305
|
css: O(m),
|
|
306
306
|
role: "dialog",
|
|
307
307
|
"aria-modal": "true",
|
|
308
308
|
onClick: (e) => {
|
|
309
|
-
!d && e.target === e.currentTarget &&
|
|
309
|
+
!d && e.target === e.currentTarget && i();
|
|
310
310
|
},
|
|
311
|
-
children: /* @__PURE__ */
|
|
311
|
+
children: /* @__PURE__ */ e("div", {
|
|
312
312
|
className: [
|
|
313
313
|
k,
|
|
314
314
|
c === "lg" ? `${k}-lg` : "",
|
|
315
315
|
p || ""
|
|
316
316
|
].filter(Boolean).join(" "),
|
|
317
317
|
children: [
|
|
318
|
-
(
|
|
318
|
+
(o !== void 0 || s) && /* @__PURE__ */ e("header", {
|
|
319
319
|
className: `${k}-header`,
|
|
320
|
-
children: [
|
|
321
|
-
icon: /* @__PURE__ */ t(
|
|
322
|
-
onClick:
|
|
320
|
+
children: [o, s && /* @__PURE__ */ t(a, {
|
|
321
|
+
icon: /* @__PURE__ */ t(n, { name: "close" }),
|
|
322
|
+
onClick: i,
|
|
323
323
|
"aria-label": "Cerrar modal"
|
|
324
324
|
})]
|
|
325
325
|
}),
|
|
@@ -337,19 +337,19 @@ var v = (e, t) => `
|
|
|
337
337
|
A.displayName = "Modal";
|
|
338
338
|
//#endregion
|
|
339
339
|
//#region src/components/molecules/Modal/index.tsx
|
|
340
|
-
var j = ({ theme:
|
|
341
|
-
let { componentStyles:
|
|
340
|
+
var j = ({ theme: e, variant: n = "default", ...a }) => {
|
|
341
|
+
let { componentStyles: o } = i([r.MODAL], e, n.toUpperCase());
|
|
342
342
|
return /* @__PURE__ */ t(A, {
|
|
343
|
-
...
|
|
344
|
-
style:
|
|
343
|
+
...a,
|
|
344
|
+
style: o
|
|
345
345
|
});
|
|
346
346
|
}, M = (e, t) => `
|
|
347
347
|
.--RADIOGROUP-label {
|
|
348
|
-
${
|
|
348
|
+
${o(e, "color", `--RADIOGROUP-EVENTS-${t}-COLOR-PRIMARY`)}
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
.--RADIOGROUP-helperText {
|
|
352
|
-
${
|
|
352
|
+
${o(e, "color", `--RADIOGROUP-EVENTS-${t}-COLOR-SECONDARY`)}
|
|
353
353
|
}
|
|
354
354
|
`, N = (e) => h`
|
|
355
355
|
&.--RADIOGROUP {
|
|
@@ -398,23 +398,23 @@ var j = ({ theme: n, variant: r = "default", ...i }) => {
|
|
|
398
398
|
margin-left: 14px;
|
|
399
399
|
}
|
|
400
400
|
}
|
|
401
|
-
`, P = "--RADIOGROUP", F = ({ name:
|
|
401
|
+
`, P = "--RADIOGROUP", F = ({ name: n, control: r, children: i, label: a, helperText: o, showErrorText: s = !0, disabled: c, direction: l = "vertical", style: f, className: p }) => {
|
|
402
402
|
let { field: m, fieldState: h } = g({
|
|
403
403
|
control: r,
|
|
404
|
-
name:
|
|
404
|
+
name: n
|
|
405
405
|
}), _ = typeof m.value == "string" ? m.value : "", v = h.error, y = (e) => {
|
|
406
406
|
m.onChange(e), m.onBlur();
|
|
407
407
|
}, b = d.Children.toArray(i).find((e) => d.isValidElement(e) && !e.props.disabled)?.props.value ?? "";
|
|
408
408
|
return /* @__PURE__ */ t(u.Provider, {
|
|
409
409
|
value: {
|
|
410
|
-
name:
|
|
410
|
+
name: n,
|
|
411
411
|
selectedValue: _,
|
|
412
412
|
onChange: y,
|
|
413
413
|
disabled: c,
|
|
414
414
|
error: v,
|
|
415
415
|
firstValue: b
|
|
416
416
|
},
|
|
417
|
-
children: /* @__PURE__ */
|
|
417
|
+
children: /* @__PURE__ */ e("div", {
|
|
418
418
|
className: [
|
|
419
419
|
P,
|
|
420
420
|
`${P}--${l}`,
|
|
@@ -435,7 +435,7 @@ var j = ({ theme: n, variant: r = "default", ...i }) => {
|
|
|
435
435
|
"data-testid": `${P}-items`,
|
|
436
436
|
children: i
|
|
437
437
|
}),
|
|
438
|
-
/* @__PURE__ */
|
|
438
|
+
/* @__PURE__ */ e("span", {
|
|
439
439
|
className: `${P}-helperText`,
|
|
440
440
|
"data-testid": `${P}-helperText`,
|
|
441
441
|
children: [o && (!v || !s) && o, s && v && v.message]
|
|
@@ -443,14 +443,14 @@ var j = ({ theme: n, variant: r = "default", ...i }) => {
|
|
|
443
443
|
]
|
|
444
444
|
})
|
|
445
445
|
});
|
|
446
|
-
}, I = ({ theme:
|
|
447
|
-
let { componentStyles:
|
|
446
|
+
}, I = ({ theme: e, variant: n = "default", ...a }) => {
|
|
447
|
+
let { componentStyles: o } = i([r.RADIOGROUP], e, n.toUpperCase());
|
|
448
448
|
return /* @__PURE__ */ t(F, {
|
|
449
|
-
...
|
|
450
|
-
style:
|
|
449
|
+
...a,
|
|
450
|
+
style: o
|
|
451
451
|
});
|
|
452
452
|
};
|
|
453
453
|
//#endregion
|
|
454
454
|
export { S as i, j as n, E as r, I as t };
|
|
455
455
|
|
|
456
|
-
//# sourceMappingURL=RadioGroup-
|
|
456
|
+
//# sourceMappingURL=RadioGroup-Cvt9MtvM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup-D_R-nwCD.js","names":[],"sources":["../src/components/molecules/CheckboxGroup/CheckboxGroup.emotion.ts","../src/components/molecules/CheckboxGroup/CheckboxGroup.tsx","../src/components/molecules/CheckboxGroup/index.tsx","../src/components/molecules/CheckboxTree/CheckboxTree.emotion.ts","../src/components/molecules/CheckboxTree/CheckboxTree.tsx","../src/components/molecules/CheckboxTree/index.tsx","../src/components/molecules/Modal/Modal.emotion.ts","../src/components/molecules/Modal/Modal.tsx","../src/components/molecules/Modal/index.tsx","../src/components/molecules/RadioGroup/RadioGroup.emotion.ts","../src/components/molecules/RadioGroup/RadioGroup.tsx","../src/components/molecules/RadioGroup/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst labelColor = (theme: Record<string, string>, event: string): string => `\n .--CHECKBOXGROUP-label {\n ${getStyle(theme, 'color', `--CHECKBOXGROUP-EVENTS-${event}-COLOR-PRIMARY`)}\n }\n\n .--CHECKBOXGROUP-helperText {\n ${getStyle(theme, 'color', `--CHECKBOXGROUP-EVENTS-${event}-COLOR-SECONDARY`)}\n }\n`;\n\nconst Style = (theme: Record<string, string>) => css`\n &.--CHECKBOXGROUP {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: fit-content;\n\n // ENABLED\n ${labelColor(theme, 'ENABLED')};\n\n // ERROR\n &.--CHECKBOXGROUP-error {\n ${labelColor(theme, 'ERROR')};\n }\n\n // DISABLED\n &.--CHECKBOXGROUP-disabled {\n ${labelColor(theme, 'DISABLED')};\n }\n\n .--CHECKBOXGROUP-items {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n &.--CHECKBOXGROUP--horizontal .--CHECKBOXGROUP-items {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n .--CHECKBOXGROUP-label {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1;\n }\n\n .--CHECKBOXGROUP-helperText {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 13px;\n line-height: 16px;\n margin-left: 14px;\n }\n }\n`;\n\nexport default Style;\n","// Component Base\nimport emotion from './CheckboxGroup.emotion';\nimport type { CheckboxGroupProps } from './CheckboxGroup.interface';\nimport { CheckboxGroupContext } from './CheckboxGroup.context';\n// External Libraries\nimport { useController, type FieldValues, type FieldPath } from 'react-hook-form';\n\nconst CLASS = '--CHECKBOXGROUP';\n\n/**\n * CheckboxGroup manages a set of `<Checkbox>` children as a single RHF field.\n * The form value is `string[]` — the `value` props of every checked child.\n *\n * Validation (min, max, custom) is declared on the Zod schema:\n * ```ts\n * z.object({\n * options: z.array(z.string()).min(1, 'Select at least one').max(3, 'Select at most 3'),\n * })\n * ```\n *\n * @example\n * ```tsx\n * <CheckboxGroup name=\"options\" control={control} label=\"Skills\">\n * <Checkbox value=\"react\" label=\"React\" />\n * <Checkbox value=\"vue\" label=\"Vue\" />\n * </CheckboxGroup>\n * ```\n */\nconst CheckboxGroup = <TFieldValues extends FieldValues = FieldValues>({\n name,\n control,\n children,\n label,\n helperText,\n showErrorText = true,\n disabled,\n direction = 'vertical',\n style,\n className,\n}: CheckboxGroupProps<TFieldValues>) => {\n const { field, fieldState } = useController({ control, name: name as FieldPath<TFieldValues> });\n\n const checkedValues: string[] = Array.isArray(field.value) ? field.value : [];\n const errorText = fieldState.error;\n\n const onChange = (value: string, checked: boolean) => {\n const next = checked ? [...checkedValues, value] : checkedValues.filter(v => v !== value);\n field.onChange(next);\n field.onBlur();\n };\n\n return (\n <CheckboxGroupContext.Provider value={{ checkedValues, onChange, disabled, error: errorText }}>\n <div\n className={[\n CLASS,\n `${CLASS}--${direction}`,\n showErrorText && errorText?.message && `${CLASS}-error`,\n disabled && `${CLASS}-disabled`,\n className || '',\n ].join(' ')}\n css={emotion(style)}\n data-testid={CLASS}\n >\n {label && (\n <span className={`${CLASS}-label`} data-testid={`${CLASS}-label`}>\n {label}\n </span>\n )}\n\n <div className={`${CLASS}-items`} data-testid={`${CLASS}-items`}>\n {children}\n </div>\n\n <span className={`${CLASS}-helperText`} data-testid={`${CLASS}-helperText`}>\n {helperText && (!errorText || !showErrorText) && helperText}\n {showErrorText && errorText && errorText.message}\n </span>\n </div>\n </CheckboxGroupContext.Provider>\n );\n};\n\nexport default CheckboxGroup;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { CheckboxGroupStyleProps } from './CheckboxGroup.interface';\nimport type { FieldValues } from 'react-hook-form';\nimport CheckboxGroupBase from './CheckboxGroup';\n\nconst CheckboxGroup = <TFieldValues extends FieldValues = FieldValues>({\n theme,\n variant = 'default',\n ...rest\n}: CheckboxGroupStyleProps<TFieldValues>) => {\n const { componentStyles } = useCreateComponentStyles([Component.CHECKBOXGROUP], theme, variant.toUpperCase());\n\n return <CheckboxGroupBase {...rest} style={componentStyles} />;\n};\n\nexport default CheckboxGroup;\n","import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst Style = (theme: Record<string, string>) => css`\n &.--CHECKBOXTREE {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: fit-content;\n\n .--CHECKBOXTREE-children {\n display: flex;\n flex-direction: column;\n padding-left: 36px;\n gap: 16px;\n }\n\n .--CHECKBOXTREE-helperText {\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 13px;\n line-height: 16px;\n margin-left: 14px;\n ${getStyle(theme, 'color', '--CHECKBOXTREE-EVENTS-ENABLED-COLOR-SECONDARY')}\n\n &:empty {\n display: none;\n }\n }\n\n &.--CHECKBOXTREE-error {\n .--CHECKBOXTREE-helperText {\n ${getStyle(theme, 'color', '--CHECKBOXTREE-EVENTS-ERROR-COLOR-SECONDARY')}\n }\n }\n\n &.--CHECKBOXTREE-disabled {\n .--CHECKBOXTREE-helperText {\n ${getStyle(theme, 'color', '--CHECKBOXTREE-EVENTS-DISABLED-COLOR-SECONDARY')}\n }\n }\n }\n`;\n\nexport default Style;\n","import React, { useRef, useEffect, useMemo } from 'react';\n// External Libraries\nimport { useController, type FieldValues, type FieldPath } from 'react-hook-form';\nimport Icon from '@components/atoms/Icon';\n// Component Base\nimport emotion from './CheckboxTree.emotion';\nimport type { CheckboxTreeProps } from './CheckboxTree.interface';\nimport Checkbox from '@components/atoms/Checkbox';\nimport { CheckboxTreeContext } from './CheckboxTree.context';\n\nconst CLASS = '--CHECKBOXTREE';\n\n/**\n * CheckboxTree renders a parent `<Checkbox>` that controls all of its `<Checkbox>` children.\n *\n * Parent states:\n * - **Checked** — all children are checked.\n * - **Unchecked** — no children are checked.\n * - **Indeterminate** — some (but not all) children are checked.\n *\n * The form value is `string[]` — the `value` props of every checked child.\n * Validation is declared on the Zod schema, the same way as CheckboxGroup.\n *\n * @example\n * ```tsx\n * <CheckboxTree name=\"options\" control={control} label=\"Select all\">\n * <Checkbox value=\"a\" label=\"Option A\" />\n * <Checkbox value=\"b\" label=\"Option B\" />\n * </CheckboxTree>\n * ```\n */\nconst CheckboxTree = <TFieldValues extends FieldValues = FieldValues>({\n name,\n control,\n children,\n label,\n iconChecked = <Icon name='check' />,\n iconIndeterminate = <Icon name='remove' />,\n helperText,\n showErrorText = true,\n disabled,\n style,\n className,\n}: CheckboxTreeProps<TFieldValues>) => {\n const { field, fieldState } = useController({ control, name: name as FieldPath<TFieldValues> });\n\n const checkedValues: string[] = Array.isArray(field.value) ? field.value : [];\n const errorText = fieldState.error;\n\n const childValues = useMemo(\n () =>\n React.Children.toArray(children)\n .map(child => {\n const el = child as React.ReactElement<{ value?: string; name?: string }>;\n return el.props?.value ?? el.props?.name ?? '';\n })\n .filter(Boolean),\n [children],\n );\n\n const allChecked = childValues.length > 0 && childValues.every(v => checkedValues.includes(v));\n const someChecked = !allChecked && childValues.some(v => checkedValues.includes(v));\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const input = rootRef.current?.querySelectorAll<HTMLInputElement>('input[type=\"checkbox\"]')[0];\n if (input) input.indeterminate = someChecked;\n }, [someChecked]);\n\n const onParentChange = (checked: boolean) => {\n const next = checked ? [...childValues] : [];\n field.onChange(next);\n field.onBlur();\n };\n\n const onChange = (value: string, checked: boolean) => {\n const next = checked ? [...checkedValues, value] : checkedValues.filter(v => v !== value);\n field.onChange(next);\n field.onBlur();\n };\n\n return (\n <div\n ref={rootRef}\n className={[\n CLASS,\n showErrorText && errorText?.message ? `${CLASS}-error` : '',\n disabled ? `${CLASS}-disabled` : '',\n className || '',\n ].join(' ')}\n css={emotion(style)}\n data-testid={CLASS}\n >\n <Checkbox\n checked={allChecked || someChecked}\n onChecked={onParentChange}\n label={label}\n icon={someChecked ? iconIndeterminate : iconChecked}\n disabled={disabled}\n showErrorText={false}\n helperText={undefined}\n />\n\n <CheckboxTreeContext.Provider value={{ checkedValues, onChange, disabled, error: errorText }}>\n <div className={`${CLASS}-children`} data-testid={`${CLASS}-children`}>\n {children}\n </div>\n </CheckboxTreeContext.Provider>\n\n <span className={`${CLASS}-helperText`} data-testid={`${CLASS}-helperText`}>\n {helperText && (!errorText || !showErrorText) && helperText}\n {showErrorText && errorText && errorText.message}\n </span>\n </div>\n );\n};\n\nexport default CheckboxTree;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { CheckboxTreeStyleProps } from './CheckboxTree.interface';\nimport type { FieldValues } from 'react-hook-form';\nimport CheckboxTreeBase from './CheckboxTree';\n\nconst CheckboxTree = <TFieldValues extends FieldValues = FieldValues>({\n theme,\n variant = 'default',\n ...rest\n}: CheckboxTreeStyleProps<TFieldValues>) => {\n const { componentStyles } = useCreateComponentStyles([Component.CHECKBOXTREE], theme, variant.toUpperCase());\n\n return <CheckboxTreeBase {...rest} style={componentStyles} />;\n};\n\nexport default CheckboxTree;\n","import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst container = (theme: Record<string, string>, event: string): string => `\n // BACKGROUNDS\n ${getStyle(theme, 'background-color', `--MODAL-${event}-BACKGROUND-COLOR`)}\n \n // BORDERS\n ${getStyle(theme, 'border-color', `--MODAL-${event}-BORDER-COLOR`)}\n ${getStyle(theme, 'border-width', `--MODAL-${event}-BORDER-WIDTH`)}\n ${getStyle(theme, 'border-style', `--MODAL-${event}-BORDER-STYLE`)}\n ${getStyle(theme, 'border-radius', `--MODAL-${event}-BORDER-RADIUS`)}\n`;\n\nconst Style = (theme: Record<string, string>) => css`\n &.--MODAL-scrim {\n position: fixed;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n\n .--MODAL {\n display: flex;\n flex-direction: column;\n width: 480px;\n max-width: calc(100vw - 48px);\n max-height: calc(100vh - 64px);\n overflow: hidden;\n box-shadow:\n rgba(0, 0, 0, 0.2) 0px 5px 5px -3px,\n rgba(0, 0, 0, 0.14) 0px 8px 10px 1px,\n rgba(0, 0, 0, 0.12) 0px 3px 14px 2px;\n\n ${container(theme, 'ROOT')}\n\n &.--MODAL-lg {\n width: 720px;\n }\n\n .--MODAL-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n flex-shrink: 0;\n }\n\n .--MODAL-title {\n flex: 1;\n margin: 0;\n\n ${getStyle(theme, 'color', '--MODAL-EVENTS-ENABLED-COLOR-PRIMARY')};\n\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.25;\n }\n\n .--MODAL-body {\n flex: 1;\n padding: 20px;\n overflow-y: auto;\n\n ${getStyle(theme, 'color', '--MODAL-EVENTS-ENABLED-COLOR-SECONDARY')};\n\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 0.875rem;\n line-height: 1.5;\n }\n\n .--MODAL-footer {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 16px 20px;\n flex-shrink: 0;\n }\n }\n`;\n\nexport default Style;\n","import { type FC, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n// Component Base\nimport emotion from './Modal.emotion';\nimport type { ModalProps } from './Modal.interface';\n// Custom Components\nimport IconButton from '@components/atoms/IconButton';\nimport Icon from '@components/atoms/Icon';\n\nconst CLASS = '--MODAL';\n\n/**\n * Generic overlay dialog rendered via a portal into `document.body`.\n *\n * Closes on:\n * - Clicking the × button in the header.\n * - Pressing **Escape** (unless `staticBackdrop` is `true`).\n * - Clicking the semi-transparent backdrop (unless `staticBackdrop` is `true`).\n *\n * Pass `footer` to render action buttons below the body content.\n */\nconst Modal: FC<ModalProps> = ({\n open,\n onClose,\n header,\n showCloseButton = true,\n size = 'md',\n children,\n footer,\n staticBackdrop = false,\n className,\n style,\n}) => {\n useEffect(() => {\n if (!open || staticBackdrop) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [open, onClose, staticBackdrop]);\n\n if (!open) return null;\n\n return createPortal(\n <div\n className={`${CLASS}-scrim`}\n css={emotion(style)}\n role='dialog'\n aria-modal='true'\n onClick={e => {\n if (!staticBackdrop && e.target === e.currentTarget) onClose();\n }}\n >\n <div className={[CLASS, size === 'lg' ? `${CLASS}-lg` : '', className || ''].filter(Boolean).join(' ')}>\n {(header !== undefined || showCloseButton) && (\n <header className={`${CLASS}-header`}>\n {header}\n {showCloseButton && <IconButton icon={<Icon name='close' />} onClick={onClose} aria-label='Cerrar modal' />}\n </header>\n )}\n {children !== undefined && <div className={`${CLASS}-body`}>{children}</div>}\n {footer && <footer className={`${CLASS}-footer`}>{footer}</footer>}\n </div>\n </div>,\n document.body,\n );\n};\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { FC } from 'react';\nimport type { ModalStyleProps } from './Modal.interface';\nimport ModalBase from './Modal';\n\nconst Modal: FC<ModalStyleProps> = ({ theme, variant = 'default', ...rest }) => {\n const { componentStyles } = useCreateComponentStyles([Component.MODAL], theme, variant.toUpperCase());\n return <ModalBase {...rest} style={componentStyles} />;\n};\n\nexport default Modal;\nexport type { ModalStyleProps, ModalProps } from './Modal.interface';\n","import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst labelColor = (theme: Record<string, string>, event: string): string => `\n .--RADIOGROUP-label {\n ${getStyle(theme, 'color', `--RADIOGROUP-EVENTS-${event}-COLOR-PRIMARY`)}\n }\n\n .--RADIOGROUP-helperText {\n ${getStyle(theme, 'color', `--RADIOGROUP-EVENTS-${event}-COLOR-SECONDARY`)}\n }\n`;\n\nconst Style = (theme: Record<string, string>) => css`\n &.--RADIOGROUP {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: fit-content;\n\n // ENABLED\n ${labelColor(theme, 'ENABLED')};\n\n // ERROR\n &.--RADIOGROUP-error {\n ${labelColor(theme, 'ERROR')};\n }\n\n // DISABLED\n &.--RADIOGROUP-disabled {\n ${labelColor(theme, 'DISABLED')};\n }\n\n .--RADIOGROUP-items {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n &.--RADIOGROUP--horizontal .--RADIOGROUP-items {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n .--RADIOGROUP-label {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1;\n }\n\n .--RADIOGROUP-helperText {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 13px;\n line-height: 16px;\n margin-left: 14px;\n }\n }\n`;\n\nexport default Style;\n","// Component Base\nimport React from 'react';\nimport emotion from './RadioGroup.emotion';\nimport type { RadioGroupProps } from './RadioGroup.interface';\nimport { RadioGroupContext } from '@components/atoms/Radio/RadioGroup.context';\n// External Libraries\nimport { useController, type FieldValues, type FieldPath } from 'react-hook-form';\n\nconst CLASS = '--RADIOGROUP';\n\n/**\n * RadioGroup manages a set of `<Radio>` children as a single RHF field.\n * The form value is a `string` — the `value` prop of the selected Radio.\n *\n * Provides a `RadioGroupContext` that every child `<Radio>` reads its selected state from.\n * Rendering a `<Radio>` outside a RadioGroup throws an error.\n *\n * @example\n * ```tsx\n * <RadioGroup name=\"option\" control={control} label=\"Pick one\">\n * <Radio value=\"a\" label=\"Option A\" />\n * <Radio value=\"b\" label=\"Option B\" />\n * </RadioGroup>\n * ```\n */\nconst RadioGroup = <TFieldValues extends FieldValues = FieldValues>({\n name,\n control,\n children,\n label,\n helperText,\n showErrorText = true,\n disabled,\n direction = 'vertical',\n style,\n className,\n}: RadioGroupProps<TFieldValues>) => {\n const { field, fieldState } = useController({ control, name: name as FieldPath<TFieldValues> });\n\n const selectedValue: string = typeof field.value === 'string' ? field.value : '';\n const errorText = fieldState.error;\n\n const onChange = (value: string) => {\n field.onChange(value);\n field.onBlur();\n };\n\n const firstValue =\n (\n React.Children.toArray(children).find(\n (child): child is React.ReactElement<{ value?: string; disabled?: boolean }> =>\n React.isValidElement<{ value?: string; disabled?: boolean }>(child) && !child.props.disabled,\n ) as React.ReactElement<{ value?: string }> | undefined\n )?.props.value ?? '';\n\n return (\n <RadioGroupContext.Provider value={{ name, selectedValue, onChange, disabled, error: errorText, firstValue }}>\n <div\n className={[\n CLASS,\n `${CLASS}--${direction}`,\n showErrorText && errorText?.message && `${CLASS}-error`,\n disabled && `${CLASS}-disabled`,\n className || '',\n ].join(' ')}\n css={emotion(style)}\n data-testid={CLASS}\n >\n {label && (\n <span className={`${CLASS}-label`} data-testid={`${CLASS}-label`}>\n {label}\n </span>\n )}\n\n <div className={`${CLASS}-items`} data-testid={`${CLASS}-items`}>\n {children}\n </div>\n\n <span className={`${CLASS}-helperText`} data-testid={`${CLASS}-helperText`}>\n {helperText && (!errorText || !showErrorText) && helperText}\n {showErrorText && errorText && errorText.message}\n </span>\n </div>\n </RadioGroupContext.Provider>\n );\n};\n\nexport default RadioGroup;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { RadioGroupStyleProps } from './RadioGroup.interface';\nimport type { FieldValues } from 'react-hook-form';\nimport RadioGroupBase from './RadioGroup';\n\nconst RadioGroup = <TFieldValues extends FieldValues = FieldValues>({\n theme,\n variant = 'default',\n ...rest\n}: RadioGroupStyleProps<TFieldValues>) => {\n const { componentStyles } = useCreateComponentStyles([Component.RADIOGROUP], theme, variant.toUpperCase());\n\n return <RadioGroupBase {...rest} style={componentStyles} />;\n};\n\nexport default RadioGroup;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RadioGroup-Cvt9MtvM.js","names":[],"sources":["../src/components/molecules/CheckboxGroup/CheckboxGroup.emotion.ts","../src/components/molecules/CheckboxGroup/CheckboxGroup.tsx","../src/components/molecules/CheckboxGroup/index.tsx","../src/components/molecules/CheckboxTree/CheckboxTree.emotion.ts","../src/components/molecules/CheckboxTree/CheckboxTree.tsx","../src/components/molecules/CheckboxTree/index.tsx","../src/components/molecules/Modal/Modal.emotion.ts","../src/components/molecules/Modal/Modal.tsx","../src/components/molecules/Modal/index.tsx","../src/components/molecules/RadioGroup/RadioGroup.emotion.ts","../src/components/molecules/RadioGroup/RadioGroup.tsx","../src/components/molecules/RadioGroup/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst labelColor = (theme: Record<string, string>, event: string): string => `\n .--CHECKBOXGROUP-label {\n ${getStyle(theme, 'color', `--CHECKBOXGROUP-EVENTS-${event}-COLOR-PRIMARY`)}\n }\n\n .--CHECKBOXGROUP-helperText {\n ${getStyle(theme, 'color', `--CHECKBOXGROUP-EVENTS-${event}-COLOR-SECONDARY`)}\n }\n`;\n\nconst Style = (theme: Record<string, string>) => css`\n &.--CHECKBOXGROUP {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: fit-content;\n\n // ENABLED\n ${labelColor(theme, 'ENABLED')};\n\n // ERROR\n &.--CHECKBOXGROUP-error {\n ${labelColor(theme, 'ERROR')};\n }\n\n // DISABLED\n &.--CHECKBOXGROUP-disabled {\n ${labelColor(theme, 'DISABLED')};\n }\n\n .--CHECKBOXGROUP-items {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n &.--CHECKBOXGROUP--horizontal .--CHECKBOXGROUP-items {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n .--CHECKBOXGROUP-label {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1;\n }\n\n .--CHECKBOXGROUP-helperText {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 13px;\n line-height: 16px;\n margin-left: 14px;\n }\n }\n`;\n\nexport default Style;\n","// Component Base\nimport emotion from './CheckboxGroup.emotion';\nimport type { CheckboxGroupProps } from './CheckboxGroup.interface';\nimport { CheckboxGroupContext } from './CheckboxGroup.context';\n// External Libraries\nimport { useController, type FieldValues, type FieldPath } from 'react-hook-form';\n\nconst CLASS = '--CHECKBOXGROUP';\n\n/**\n * CheckboxGroup manages a set of `<Checkbox>` children as a single RHF field.\n * The form value is `string[]` — the `value` props of every checked child.\n *\n * Validation (min, max, custom) is declared on the Zod schema:\n * ```ts\n * z.object({\n * options: z.array(z.string()).min(1, 'Select at least one').max(3, 'Select at most 3'),\n * })\n * ```\n *\n * @example\n * ```tsx\n * <CheckboxGroup name=\"options\" control={control} label=\"Skills\">\n * <Checkbox value=\"react\" label=\"React\" />\n * <Checkbox value=\"vue\" label=\"Vue\" />\n * </CheckboxGroup>\n * ```\n */\nconst CheckboxGroup = <TFieldValues extends FieldValues = FieldValues>({\n name,\n control,\n children,\n label,\n helperText,\n showErrorText = true,\n disabled,\n direction = 'vertical',\n style,\n className,\n}: CheckboxGroupProps<TFieldValues>) => {\n const { field, fieldState } = useController({ control, name: name as FieldPath<TFieldValues> });\n\n const checkedValues: string[] = Array.isArray(field.value) ? field.value : [];\n const errorText = fieldState.error;\n\n const onChange = (value: string, checked: boolean) => {\n const next = checked ? [...checkedValues, value] : checkedValues.filter(v => v !== value);\n field.onChange(next);\n field.onBlur();\n };\n\n return (\n <CheckboxGroupContext.Provider value={{ checkedValues, onChange, disabled, error: errorText }}>\n <div\n className={[\n CLASS,\n `${CLASS}--${direction}`,\n showErrorText && errorText?.message && `${CLASS}-error`,\n disabled && `${CLASS}-disabled`,\n className || '',\n ].join(' ')}\n css={emotion(style)}\n data-testid={CLASS}\n >\n {label && (\n <span className={`${CLASS}-label`} data-testid={`${CLASS}-label`}>\n {label}\n </span>\n )}\n\n <div className={`${CLASS}-items`} data-testid={`${CLASS}-items`}>\n {children}\n </div>\n\n <span className={`${CLASS}-helperText`} data-testid={`${CLASS}-helperText`}>\n {helperText && (!errorText || !showErrorText) && helperText}\n {showErrorText && errorText && errorText.message}\n </span>\n </div>\n </CheckboxGroupContext.Provider>\n );\n};\n\nexport default CheckboxGroup;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { CheckboxGroupStyleProps } from './CheckboxGroup.interface';\nimport type { FieldValues } from 'react-hook-form';\nimport CheckboxGroupBase from './CheckboxGroup';\n\nconst CheckboxGroup = <TFieldValues extends FieldValues = FieldValues>({\n theme,\n variant = 'default',\n ...rest\n}: CheckboxGroupStyleProps<TFieldValues>) => {\n const { componentStyles } = useCreateComponentStyles([Component.CHECKBOXGROUP], theme, variant.toUpperCase());\n\n return <CheckboxGroupBase {...rest} style={componentStyles} />;\n};\n\nexport default CheckboxGroup;\n","import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst Style = (theme: Record<string, string>) => css`\n &.--CHECKBOXTREE {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: fit-content;\n\n .--CHECKBOXTREE-children {\n display: flex;\n flex-direction: column;\n padding-left: 36px;\n gap: 16px;\n }\n\n .--CHECKBOXTREE-helperText {\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 13px;\n line-height: 16px;\n margin-left: 14px;\n ${getStyle(theme, 'color', '--CHECKBOXTREE-EVENTS-ENABLED-COLOR-SECONDARY')}\n\n &:empty {\n display: none;\n }\n }\n\n &.--CHECKBOXTREE-error {\n .--CHECKBOXTREE-helperText {\n ${getStyle(theme, 'color', '--CHECKBOXTREE-EVENTS-ERROR-COLOR-SECONDARY')}\n }\n }\n\n &.--CHECKBOXTREE-disabled {\n .--CHECKBOXTREE-helperText {\n ${getStyle(theme, 'color', '--CHECKBOXTREE-EVENTS-DISABLED-COLOR-SECONDARY')}\n }\n }\n }\n`;\n\nexport default Style;\n","import React, { useRef, useEffect, useMemo } from 'react';\n// External Libraries\nimport { useController, type FieldValues, type FieldPath } from 'react-hook-form';\nimport Icon from '@components/atoms/Icon';\n// Component Base\nimport emotion from './CheckboxTree.emotion';\nimport type { CheckboxTreeProps } from './CheckboxTree.interface';\nimport Checkbox from '@components/atoms/Checkbox';\nimport { CheckboxTreeContext } from './CheckboxTree.context';\n\nconst CLASS = '--CHECKBOXTREE';\n\n/**\n * CheckboxTree renders a parent `<Checkbox>` that controls all of its `<Checkbox>` children.\n *\n * Parent states:\n * - **Checked** — all children are checked.\n * - **Unchecked** — no children are checked.\n * - **Indeterminate** — some (but not all) children are checked.\n *\n * The form value is `string[]` — the `value` props of every checked child.\n * Validation is declared on the Zod schema, the same way as CheckboxGroup.\n *\n * @example\n * ```tsx\n * <CheckboxTree name=\"options\" control={control} label=\"Select all\">\n * <Checkbox value=\"a\" label=\"Option A\" />\n * <Checkbox value=\"b\" label=\"Option B\" />\n * </CheckboxTree>\n * ```\n */\nconst CheckboxTree = <TFieldValues extends FieldValues = FieldValues>({\n name,\n control,\n children,\n label,\n iconChecked = <Icon name='check' />,\n iconIndeterminate = <Icon name='remove' />,\n helperText,\n showErrorText = true,\n disabled,\n style,\n className,\n}: CheckboxTreeProps<TFieldValues>) => {\n const { field, fieldState } = useController({ control, name: name as FieldPath<TFieldValues> });\n\n const checkedValues: string[] = Array.isArray(field.value) ? field.value : [];\n const errorText = fieldState.error;\n\n const childValues = useMemo(\n () =>\n React.Children.toArray(children)\n .map(child => {\n const el = child as React.ReactElement<{ value?: string; name?: string }>;\n return el.props?.value ?? el.props?.name ?? '';\n })\n .filter(Boolean),\n [children],\n );\n\n const allChecked = childValues.length > 0 && childValues.every(v => checkedValues.includes(v));\n const someChecked = !allChecked && childValues.some(v => checkedValues.includes(v));\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const input = rootRef.current?.querySelectorAll<HTMLInputElement>('input[type=\"checkbox\"]')[0];\n if (input) input.indeterminate = someChecked;\n }, [someChecked]);\n\n const onParentChange = (checked: boolean) => {\n const next = checked ? [...childValues] : [];\n field.onChange(next);\n field.onBlur();\n };\n\n const onChange = (value: string, checked: boolean) => {\n const next = checked ? [...checkedValues, value] : checkedValues.filter(v => v !== value);\n field.onChange(next);\n field.onBlur();\n };\n\n return (\n <div\n ref={rootRef}\n className={[\n CLASS,\n showErrorText && errorText?.message ? `${CLASS}-error` : '',\n disabled ? `${CLASS}-disabled` : '',\n className || '',\n ].join(' ')}\n css={emotion(style)}\n data-testid={CLASS}\n >\n <Checkbox\n checked={allChecked || someChecked}\n onChecked={onParentChange}\n label={label}\n icon={someChecked ? iconIndeterminate : iconChecked}\n disabled={disabled}\n showErrorText={false}\n helperText={undefined}\n />\n\n <CheckboxTreeContext.Provider value={{ checkedValues, onChange, disabled, error: errorText }}>\n <div className={`${CLASS}-children`} data-testid={`${CLASS}-children`}>\n {children}\n </div>\n </CheckboxTreeContext.Provider>\n\n <span className={`${CLASS}-helperText`} data-testid={`${CLASS}-helperText`}>\n {helperText && (!errorText || !showErrorText) && helperText}\n {showErrorText && errorText && errorText.message}\n </span>\n </div>\n );\n};\n\nexport default CheckboxTree;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { CheckboxTreeStyleProps } from './CheckboxTree.interface';\nimport type { FieldValues } from 'react-hook-form';\nimport CheckboxTreeBase from './CheckboxTree';\n\nconst CheckboxTree = <TFieldValues extends FieldValues = FieldValues>({\n theme,\n variant = 'default',\n ...rest\n}: CheckboxTreeStyleProps<TFieldValues>) => {\n const { componentStyles } = useCreateComponentStyles([Component.CHECKBOXTREE], theme, variant.toUpperCase());\n\n return <CheckboxTreeBase {...rest} style={componentStyles} />;\n};\n\nexport default CheckboxTree;\n","import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst container = (theme: Record<string, string>, event: string): string => `\n // BACKGROUNDS\n ${getStyle(theme, 'background-color', `--MODAL-${event}-BACKGROUND-COLOR`)}\n \n // BORDERS\n ${getStyle(theme, 'border-color', `--MODAL-${event}-BORDER-COLOR`)}\n ${getStyle(theme, 'border-width', `--MODAL-${event}-BORDER-WIDTH`)}\n ${getStyle(theme, 'border-style', `--MODAL-${event}-BORDER-STYLE`)}\n ${getStyle(theme, 'border-radius', `--MODAL-${event}-BORDER-RADIUS`)}\n`;\n\nconst Style = (theme: Record<string, string>) => css`\n &.--MODAL-scrim {\n position: fixed;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n\n .--MODAL {\n display: flex;\n flex-direction: column;\n width: 480px;\n max-width: calc(100vw - 48px);\n max-height: calc(100vh - 64px);\n overflow: hidden;\n box-shadow:\n rgba(0, 0, 0, 0.2) 0px 5px 5px -3px,\n rgba(0, 0, 0, 0.14) 0px 8px 10px 1px,\n rgba(0, 0, 0, 0.12) 0px 3px 14px 2px;\n\n ${container(theme, 'ROOT')}\n\n &.--MODAL-lg {\n width: 720px;\n }\n\n .--MODAL-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n flex-shrink: 0;\n }\n\n .--MODAL-title {\n flex: 1;\n margin: 0;\n\n ${getStyle(theme, 'color', '--MODAL-EVENTS-ENABLED-COLOR-PRIMARY')};\n\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.25;\n }\n\n .--MODAL-body {\n flex: 1;\n padding: 20px;\n overflow-y: auto;\n\n ${getStyle(theme, 'color', '--MODAL-EVENTS-ENABLED-COLOR-SECONDARY')};\n\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 0.875rem;\n line-height: 1.5;\n }\n\n .--MODAL-footer {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 16px 20px;\n flex-shrink: 0;\n }\n }\n`;\n\nexport default Style;\n","import { type FC, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n// Component Base\nimport emotion from './Modal.emotion';\nimport type { ModalProps } from './Modal.interface';\n// Custom Components\nimport IconButton from '@components/atoms/IconButton';\nimport Icon from '@components/atoms/Icon';\n\nconst CLASS = '--MODAL';\n\n/**\n * Generic overlay dialog rendered via a portal into `document.body`.\n *\n * Closes on:\n * - Clicking the × button in the header.\n * - Pressing **Escape** (unless `staticBackdrop` is `true`).\n * - Clicking the semi-transparent backdrop (unless `staticBackdrop` is `true`).\n *\n * Pass `footer` to render action buttons below the body content.\n */\nconst Modal: FC<ModalProps> = ({\n open,\n onClose,\n header,\n showCloseButton = true,\n size = 'md',\n children,\n footer,\n staticBackdrop = false,\n className,\n style,\n}) => {\n useEffect(() => {\n if (!open || staticBackdrop) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [open, onClose, staticBackdrop]);\n\n if (!open) return null;\n\n return createPortal(\n <div\n className={`${CLASS}-scrim`}\n css={emotion(style)}\n role='dialog'\n aria-modal='true'\n onClick={e => {\n if (!staticBackdrop && e.target === e.currentTarget) onClose();\n }}\n >\n <div className={[CLASS, size === 'lg' ? `${CLASS}-lg` : '', className || ''].filter(Boolean).join(' ')}>\n {(header !== undefined || showCloseButton) && (\n <header className={`${CLASS}-header`}>\n {header}\n {showCloseButton && <IconButton icon={<Icon name='close' />} onClick={onClose} aria-label='Cerrar modal' />}\n </header>\n )}\n {children !== undefined && <div className={`${CLASS}-body`}>{children}</div>}\n {footer && <footer className={`${CLASS}-footer`}>{footer}</footer>}\n </div>\n </div>,\n document.body,\n );\n};\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { FC } from 'react';\nimport type { ModalStyleProps } from './Modal.interface';\nimport ModalBase from './Modal';\n\nconst Modal: FC<ModalStyleProps> = ({ theme, variant = 'default', ...rest }) => {\n const { componentStyles } = useCreateComponentStyles([Component.MODAL], theme, variant.toUpperCase());\n return <ModalBase {...rest} style={componentStyles} />;\n};\n\nexport default Modal;\nexport type { ModalStyleProps, ModalProps } from './Modal.interface';\n","import { css } from '@emotion/react';\nimport { getStyle } from '@utilities/emotion/styles';\n\nconst labelColor = (theme: Record<string, string>, event: string): string => `\n .--RADIOGROUP-label {\n ${getStyle(theme, 'color', `--RADIOGROUP-EVENTS-${event}-COLOR-PRIMARY`)}\n }\n\n .--RADIOGROUP-helperText {\n ${getStyle(theme, 'color', `--RADIOGROUP-EVENTS-${event}-COLOR-SECONDARY`)}\n }\n`;\n\nconst Style = (theme: Record<string, string>) => css`\n &.--RADIOGROUP {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: fit-content;\n\n // ENABLED\n ${labelColor(theme, 'ENABLED')};\n\n // ERROR\n &.--RADIOGROUP-error {\n ${labelColor(theme, 'ERROR')};\n }\n\n // DISABLED\n &.--RADIOGROUP-disabled {\n ${labelColor(theme, 'DISABLED')};\n }\n\n .--RADIOGROUP-items {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n &.--RADIOGROUP--horizontal .--RADIOGROUP-items {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n .--RADIOGROUP-label {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1;\n }\n\n .--RADIOGROUP-helperText {\n // FONT\n font-family: ${theme['--FONTFAMILY-PRIMARY']};\n font-size: 13px;\n line-height: 16px;\n margin-left: 14px;\n }\n }\n`;\n\nexport default Style;\n","// Component Base\nimport React from 'react';\nimport emotion from './RadioGroup.emotion';\nimport type { RadioGroupProps } from './RadioGroup.interface';\nimport { RadioGroupContext } from '@components/atoms/Radio/RadioGroup.context';\n// External Libraries\nimport { useController, type FieldValues, type FieldPath } from 'react-hook-form';\n\nconst CLASS = '--RADIOGROUP';\n\n/**\n * RadioGroup manages a set of `<Radio>` children as a single RHF field.\n * The form value is a `string` — the `value` prop of the selected Radio.\n *\n * Provides a `RadioGroupContext` that every child `<Radio>` reads its selected state from.\n * Rendering a `<Radio>` outside a RadioGroup throws an error.\n *\n * @example\n * ```tsx\n * <RadioGroup name=\"option\" control={control} label=\"Pick one\">\n * <Radio value=\"a\" label=\"Option A\" />\n * <Radio value=\"b\" label=\"Option B\" />\n * </RadioGroup>\n * ```\n */\nconst RadioGroup = <TFieldValues extends FieldValues = FieldValues>({\n name,\n control,\n children,\n label,\n helperText,\n showErrorText = true,\n disabled,\n direction = 'vertical',\n style,\n className,\n}: RadioGroupProps<TFieldValues>) => {\n const { field, fieldState } = useController({ control, name: name as FieldPath<TFieldValues> });\n\n const selectedValue: string = typeof field.value === 'string' ? field.value : '';\n const errorText = fieldState.error;\n\n const onChange = (value: string) => {\n field.onChange(value);\n field.onBlur();\n };\n\n const firstValue =\n (\n React.Children.toArray(children).find(\n (child): child is React.ReactElement<{ value?: string; disabled?: boolean }> =>\n React.isValidElement<{ value?: string; disabled?: boolean }>(child) && !child.props.disabled,\n ) as React.ReactElement<{ value?: string }> | undefined\n )?.props.value ?? '';\n\n return (\n <RadioGroupContext.Provider value={{ name, selectedValue, onChange, disabled, error: errorText, firstValue }}>\n <div\n className={[\n CLASS,\n `${CLASS}--${direction}`,\n showErrorText && errorText?.message && `${CLASS}-error`,\n disabled && `${CLASS}-disabled`,\n className || '',\n ].join(' ')}\n css={emotion(style)}\n data-testid={CLASS}\n >\n {label && (\n <span className={`${CLASS}-label`} data-testid={`${CLASS}-label`}>\n {label}\n </span>\n )}\n\n <div className={`${CLASS}-items`} data-testid={`${CLASS}-items`}>\n {children}\n </div>\n\n <span className={`${CLASS}-helperText`} data-testid={`${CLASS}-helperText`}>\n {helperText && (!errorText || !showErrorText) && helperText}\n {showErrorText && errorText && errorText.message}\n </span>\n </div>\n </RadioGroupContext.Provider>\n );\n};\n\nexport default RadioGroup;\n","import { useCreateComponentStyles } from '@hocs/ThemeProvider/useThemeProvider.hook';\nimport { Component } from '@hocs/ThemeProvider/interfaces';\nimport type { RadioGroupStyleProps } from './RadioGroup.interface';\nimport type { FieldValues } from 'react-hook-form';\nimport RadioGroupBase from './RadioGroup';\n\nconst RadioGroup = <TFieldValues extends FieldValues = FieldValues>({\n theme,\n variant = 'default',\n ...rest\n}: RadioGroupStyleProps<TFieldValues>) => {\n const { componentStyles } = useCreateComponentStyles([Component.RADIOGROUP], theme, variant.toUpperCase());\n\n return <RadioGroupBase {...rest} style={componentStyles} />;\n};\n\nexport default RadioGroup;\n"],"mappings":"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"}
|