@s_mart/nps 16.0.0 → 16.1.1
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/dist/index.mjs +86 -82
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.mjs
CHANGED
|
@@ -2,62 +2,66 @@ import { Dialog as e, LIcon as t } from "@s_mart/core";
|
|
|
2
2
|
import { Checkbox as n, Form as r, TextField as i } from "@s_mart/form";
|
|
3
3
|
import { lineTimes as a } from "@s_mart/regular-icons";
|
|
4
4
|
import { Backdrop as o, Button as s, IconButton as c, TextField as l, Typography as u, mergeSlotProps as d, styled as f, useMediaQuery as p, useTheme as m } from "@mui/material";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
//#region src/nps-popover/
|
|
11
|
-
var D = ({
|
|
12
|
-
|
|
5
|
+
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
6
|
+
import { colorPalette as v } from "@s_mart/tokens";
|
|
7
|
+
import { useFormContext as y, useWatch as b } from "react-hook-form";
|
|
8
|
+
import { z as x } from "zod";
|
|
9
|
+
import { createContext as S, useCallback as C, useContext as w, useMemo as T, useState as E } from "react";
|
|
10
|
+
//#region src/nps-popover/feedback/feedback.tsx
|
|
11
|
+
var D = ({ tipo: e, sistemaNome: t }) => /* @__PURE__ */ g(i, {
|
|
12
|
+
name: "feedback",
|
|
13
|
+
placeholder: e === "promotor" ? `Para mim o ${t} é...` : "Eu acho que...",
|
|
14
|
+
multiline: !0,
|
|
15
|
+
size: "large",
|
|
16
|
+
minRows: 2
|
|
17
|
+
}), O = ({ onSelecionarNota: e }) => {
|
|
18
|
+
let { control: t, setValue: n } = y(), r = p("(max-width: 500px)"), i = b({
|
|
13
19
|
control: t,
|
|
14
20
|
name: "nota"
|
|
15
21
|
}), a = (t) => {
|
|
16
22
|
i !== t && (n("nota", t), e?.(t));
|
|
17
|
-
}, o = /* @__PURE__ */
|
|
23
|
+
}, o = /* @__PURE__ */ g(u, {
|
|
18
24
|
variant: "bodyXS",
|
|
19
|
-
color:
|
|
25
|
+
sx: { color: v.neutral[100] },
|
|
20
26
|
children: "Pouco provável"
|
|
21
27
|
});
|
|
22
|
-
return /* @__PURE__ */
|
|
23
|
-
r && /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ _(h, { children: [
|
|
29
|
+
r && /* @__PURE__ */ g("div", {
|
|
24
30
|
style: { marginBottom: "0.5rem" },
|
|
25
31
|
children: o
|
|
26
32
|
}),
|
|
27
|
-
/* @__PURE__ */
|
|
33
|
+
/* @__PURE__ */ g("div", {
|
|
28
34
|
style: {
|
|
29
35
|
display: "flex",
|
|
30
36
|
gap: "0.3rem",
|
|
31
37
|
flexWrap: "wrap",
|
|
32
38
|
justifyContent: "center"
|
|
33
39
|
},
|
|
34
|
-
children: Array.from({ length: 11 }).map((e, t) => /* @__PURE__ */
|
|
40
|
+
children: Array.from({ length: 11 }).map((e, t) => /* @__PURE__ */ g(s, {
|
|
35
41
|
variant: i === t ? "contained" : "outlined",
|
|
36
42
|
style: { minWidth: "3rem" },
|
|
37
43
|
onClick: () => a(t),
|
|
38
44
|
children: t
|
|
39
45
|
}, t))
|
|
40
46
|
}),
|
|
41
|
-
/* @__PURE__ */
|
|
47
|
+
/* @__PURE__ */ _("div", {
|
|
42
48
|
style: {
|
|
43
49
|
display: "flex",
|
|
44
50
|
justifyContent: "space-between",
|
|
45
51
|
marginTop: "0.5rem"
|
|
46
52
|
},
|
|
47
|
-
children: [/* @__PURE__ */
|
|
53
|
+
children: [/* @__PURE__ */ g("span", { children: !r && o }), /* @__PURE__ */ g(u, {
|
|
48
54
|
variant: "bodyXS",
|
|
49
|
-
color:
|
|
55
|
+
sx: { color: v.neutral[100] },
|
|
50
56
|
children: "Muito provável"
|
|
51
57
|
})]
|
|
52
58
|
})
|
|
53
59
|
] });
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
minRows: 2
|
|
60
|
-
}), k = f("div")(({ theme: e }) => ({
|
|
60
|
+
}, k = x.object({
|
|
61
|
+
nota: x.number(),
|
|
62
|
+
feedback: x.string().optional(),
|
|
63
|
+
autorizoPublicacao: x.coerce.boolean()
|
|
64
|
+
}), A = f("div")(({ theme: e }) => ({
|
|
61
65
|
display: "flex",
|
|
62
66
|
flexDirection: "column",
|
|
63
67
|
gap: "1.5rem",
|
|
@@ -65,7 +69,7 @@ var D = ({ onSelecionarNota: e }) => {
|
|
|
65
69
|
borderRadius: Number.parseFloat(e.shape.borderRadius.toString()) * 1.5,
|
|
66
70
|
boxShadow: e.shadows[6],
|
|
67
71
|
border: `1px solid ${e.palette.primary?.main}`,
|
|
68
|
-
background:
|
|
72
|
+
background: v.neutral[0],
|
|
69
73
|
position: "absolute",
|
|
70
74
|
bottom: "1.5rem",
|
|
71
75
|
right: "1.75rem",
|
|
@@ -74,8 +78,8 @@ var D = ({ onSelecionarNota: e }) => {
|
|
|
74
78
|
right: "1.25rem",
|
|
75
79
|
left: "1.25rem"
|
|
76
80
|
}
|
|
77
|
-
})),
|
|
78
|
-
let [n, r] =
|
|
81
|
+
})), j = ({ onEnviarNota: e, onNotification: t }) => {
|
|
82
|
+
let [n, r] = E("selecionarNota");
|
|
79
83
|
return {
|
|
80
84
|
step: n,
|
|
81
85
|
handleEnviar: (i, a) => {
|
|
@@ -87,64 +91,64 @@ var D = ({ onSelecionarNota: e }) => {
|
|
|
87
91
|
}));
|
|
88
92
|
}
|
|
89
93
|
};
|
|
90
|
-
},
|
|
91
|
-
|
|
92
|
-
feedback: E.string().optional(),
|
|
93
|
-
autorizoPublicacao: E.coerce.boolean()
|
|
94
|
-
}), M = ({ onFinalizar: e, mostrarBackdrop: i, sistemaNome: l, onClose: d, shouldCloseOnBackdropClick: f, onSelecionarNota: p, paperStyle: h, ...g }) => {
|
|
95
|
-
let { step: _, handleEnviar: x } = A(g), S = m(), C = {
|
|
94
|
+
}, M = ({ onFinalizar: e, mostrarBackdrop: i, sistemaNome: l, onClose: d, shouldCloseOnBackdropClick: f, onSelecionarNota: p, paperStyle: v, ...y }) => {
|
|
95
|
+
let { step: b, handleEnviar: x } = j(y), S = m(), C = {
|
|
96
96
|
selecionarNota: `De 0 a 10, o quanto você recomendaria o ${l}?`,
|
|
97
97
|
feedbackDetrator: `Como podemos melhorar a sua experiência no ${l}?`,
|
|
98
98
|
feedbackPromotor: `O que você mais gosta no ${l}?`
|
|
99
99
|
};
|
|
100
|
-
return /* @__PURE__ */
|
|
100
|
+
return /* @__PURE__ */ g(r, {
|
|
101
101
|
onSubmit: e,
|
|
102
|
-
schema:
|
|
102
|
+
schema: k,
|
|
103
103
|
children: ({ watch: e, onSubmit: r }) => {
|
|
104
104
|
let m = e("nota");
|
|
105
|
-
return /* @__PURE__ */
|
|
105
|
+
return /* @__PURE__ */ _(h, { children: [!!i && /* @__PURE__ */ g(o, {
|
|
106
106
|
open: !0,
|
|
107
107
|
onClick: f ? d : void 0,
|
|
108
108
|
style: { zIndex: 99 }
|
|
109
|
-
}), /* @__PURE__ */
|
|
110
|
-
style:
|
|
109
|
+
}), /* @__PURE__ */ _(A, {
|
|
110
|
+
style: v,
|
|
111
111
|
children: [
|
|
112
|
-
/* @__PURE__ */
|
|
112
|
+
/* @__PURE__ */ _("div", {
|
|
113
113
|
style: {
|
|
114
114
|
display: "flex",
|
|
115
115
|
justifyContent: "space-between",
|
|
116
116
|
alignItems: "center"
|
|
117
117
|
},
|
|
118
|
-
children: [/* @__PURE__ */
|
|
118
|
+
children: [/* @__PURE__ */ g(u, {
|
|
119
119
|
variant: "titleSM",
|
|
120
|
-
color: S.palette.grey[700],
|
|
121
|
-
children: C[
|
|
122
|
-
}), /* @__PURE__ */
|
|
120
|
+
sx: { color: S.palette.grey[700] },
|
|
121
|
+
children: C[b]
|
|
122
|
+
}), /* @__PURE__ */ g(c, {
|
|
123
123
|
size: "small",
|
|
124
124
|
onClick: d,
|
|
125
|
-
children: /* @__PURE__ */
|
|
125
|
+
children: /* @__PURE__ */ g(t, {
|
|
126
126
|
icon: a,
|
|
127
127
|
removeMargin: !0,
|
|
128
128
|
size: "25px"
|
|
129
129
|
})
|
|
130
130
|
})]
|
|
131
131
|
}),
|
|
132
|
-
/* @__PURE__ */
|
|
133
|
-
tipo:
|
|
132
|
+
/* @__PURE__ */ g("div", { children: b === "selecionarNota" ? /* @__PURE__ */ g(O, { onSelecionarNota: p }) : /* @__PURE__ */ g(D, {
|
|
133
|
+
tipo: b === "feedbackPromotor" ? "promotor" : "detrator",
|
|
134
134
|
sistemaNome: l
|
|
135
135
|
}) }),
|
|
136
|
-
/* @__PURE__ */
|
|
136
|
+
/* @__PURE__ */ _("div", {
|
|
137
137
|
style: {
|
|
138
138
|
display: "flex",
|
|
139
139
|
justifyContent: "space-between"
|
|
140
140
|
},
|
|
141
|
-
children: [/* @__PURE__ */
|
|
141
|
+
children: [/* @__PURE__ */ g("div", { children: b === "feedbackPromotor" && /* @__PURE__ */ g(n, {
|
|
142
142
|
name: "autorizoPublicacao",
|
|
143
|
-
label: /* @__PURE__ */
|
|
143
|
+
label: /* @__PURE__ */ _(u, {
|
|
144
144
|
variant: "bodyXS",
|
|
145
|
-
children: [
|
|
145
|
+
children: [
|
|
146
|
+
"Autorizo a publicação deste comentário no site e em redes sociais do",
|
|
147
|
+
" ",
|
|
148
|
+
l
|
|
149
|
+
]
|
|
146
150
|
})
|
|
147
|
-
}) }), /* @__PURE__ */
|
|
151
|
+
}) }), /* @__PURE__ */ g("div", { children: /* @__PURE__ */ g(s, {
|
|
148
152
|
disabled: m === void 0,
|
|
149
153
|
onClick: () => x(m, r),
|
|
150
154
|
children: "Enviar"
|
|
@@ -165,7 +169,7 @@ var D = ({ onSelecionarNota: e }) => {
|
|
|
165
169
|
//#endregion
|
|
166
170
|
//#region src/nps-dialog/useNPS.ts
|
|
167
171
|
function P(e) {
|
|
168
|
-
let [t, n] =
|
|
172
|
+
let [t, n] = E(""), [r, i] = E(null), [a, o] = E("avaliacao"), s = m(), c = p(s.breakpoints.down("sm")), l = T(() => d(e.slotProps, {
|
|
169
173
|
...N,
|
|
170
174
|
dialog: {
|
|
171
175
|
fullScreen: c,
|
|
@@ -184,7 +188,7 @@ function P(e) {
|
|
|
184
188
|
},
|
|
185
189
|
etapa: a,
|
|
186
190
|
setEtapa: o,
|
|
187
|
-
handleSubmit:
|
|
191
|
+
handleSubmit: C(() => {
|
|
188
192
|
e.onSubmit({
|
|
189
193
|
nota: r,
|
|
190
194
|
feedback: t.trim()
|
|
@@ -208,7 +212,7 @@ var F = (e) => {
|
|
|
208
212
|
let { feedback: t, setFeedback: n } = G(), r = (t) => {
|
|
209
213
|
n(t.target.value), e.onChange?.(t);
|
|
210
214
|
};
|
|
211
|
-
return /* @__PURE__ */
|
|
215
|
+
return /* @__PURE__ */ g(l, {
|
|
212
216
|
autoFocus: !0,
|
|
213
217
|
fullWidth: !0,
|
|
214
218
|
rows: 3,
|
|
@@ -222,7 +226,7 @@ var F = (e) => {
|
|
|
222
226
|
//#region src/nps-dialog/atoms/NPSFeedbackButtonSubmit.tsx
|
|
223
227
|
function I(e) {
|
|
224
228
|
let { feedback: t, handleSubmit: n } = G();
|
|
225
|
-
return /* @__PURE__ */
|
|
229
|
+
return /* @__PURE__ */ g(s, {
|
|
226
230
|
fullWidth: !0,
|
|
227
231
|
disabled: !t.trim(),
|
|
228
232
|
...e,
|
|
@@ -231,7 +235,7 @@ function I(e) {
|
|
|
231
235
|
}
|
|
232
236
|
//#endregion
|
|
233
237
|
//#region src/nps-dialog/atoms/NPSTitle.tsx
|
|
234
|
-
var L = ({ children: e }) => /* @__PURE__ */
|
|
238
|
+
var L = ({ children: e }) => /* @__PURE__ */ g(u, {
|
|
235
239
|
variant: "titleMD",
|
|
236
240
|
sx: { fontSize: "18px" },
|
|
237
241
|
children: e
|
|
@@ -239,17 +243,17 @@ var L = ({ children: e }) => /* @__PURE__ */ y(u, {
|
|
|
239
243
|
//#endregion
|
|
240
244
|
//#region src/nps-dialog/contents/NPSFeedbackContent.tsx
|
|
241
245
|
function R(t) {
|
|
242
|
-
return /* @__PURE__ */
|
|
243
|
-
/* @__PURE__ */
|
|
244
|
-
/* @__PURE__ */
|
|
245
|
-
/* @__PURE__ */
|
|
246
|
+
return /* @__PURE__ */ _(h, { children: [
|
|
247
|
+
/* @__PURE__ */ g(e.Header, { children: /* @__PURE__ */ g(L, { children: t.title }) }),
|
|
248
|
+
/* @__PURE__ */ g(e.Content, { children: /* @__PURE__ */ g(F, {}) }),
|
|
249
|
+
/* @__PURE__ */ g(e.Footer, { children: /* @__PURE__ */ g(I, { children: "Enviar" }) })
|
|
246
250
|
] });
|
|
247
251
|
}
|
|
248
252
|
//#endregion
|
|
249
253
|
//#region src/nps-dialog/atoms/NPSAvaliacaoButtonNota.tsx
|
|
250
254
|
var z = (e) => {
|
|
251
255
|
let { handleChangeAvaliacao: t } = G(), n = () => t(e.notaSelecionada === e.nota ? null : e.nota);
|
|
252
|
-
return /* @__PURE__ */
|
|
256
|
+
return /* @__PURE__ */ g(s, {
|
|
253
257
|
sx: {
|
|
254
258
|
padding: 0,
|
|
255
259
|
minWidth: "3rem"
|
|
@@ -264,7 +268,7 @@ var z = (e) => {
|
|
|
264
268
|
//#region src/nps-dialog/atoms/NPSAvaliacaoButtonSubmit.tsx
|
|
265
269
|
function B(e) {
|
|
266
270
|
let { nota: t, handleProximaEtapa: n } = G();
|
|
267
|
-
return /* @__PURE__ */
|
|
271
|
+
return /* @__PURE__ */ g(s, {
|
|
268
272
|
fullWidth: !0,
|
|
269
273
|
disabled: t === null,
|
|
270
274
|
...e,
|
|
@@ -275,66 +279,66 @@ function B(e) {
|
|
|
275
279
|
//#region src/nps-dialog/contents/NPSAvaliacaoContent.tsx
|
|
276
280
|
function V(t) {
|
|
277
281
|
let { nota: n } = G();
|
|
278
|
-
return /* @__PURE__ */
|
|
279
|
-
/* @__PURE__ */
|
|
280
|
-
/* @__PURE__ */
|
|
281
|
-
/* @__PURE__ */
|
|
282
|
+
return /* @__PURE__ */ _(h, { children: [
|
|
283
|
+
/* @__PURE__ */ g(e.Header, { children: /* @__PURE__ */ g(L, { children: t.title }) }),
|
|
284
|
+
/* @__PURE__ */ g(e.Content, { children: /* @__PURE__ */ _(H, { children: [
|
|
285
|
+
/* @__PURE__ */ g(z, {
|
|
282
286
|
notaSelecionada: n,
|
|
283
287
|
nota: 0,
|
|
284
288
|
color: "feedbackHard"
|
|
285
289
|
}),
|
|
286
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ g(z, {
|
|
287
291
|
notaSelecionada: n,
|
|
288
292
|
nota: 1,
|
|
289
293
|
color: "feedbackHard"
|
|
290
294
|
}),
|
|
291
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ g(z, {
|
|
292
296
|
notaSelecionada: n,
|
|
293
297
|
nota: 2,
|
|
294
298
|
color: "feedbackHard"
|
|
295
299
|
}),
|
|
296
|
-
/* @__PURE__ */
|
|
300
|
+
/* @__PURE__ */ g(z, {
|
|
297
301
|
notaSelecionada: n,
|
|
298
302
|
nota: 3,
|
|
299
303
|
color: "feedbackHard"
|
|
300
304
|
}),
|
|
301
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ g(z, {
|
|
302
306
|
notaSelecionada: n,
|
|
303
307
|
nota: 4,
|
|
304
308
|
color: "feedbackHard"
|
|
305
309
|
}),
|
|
306
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ g(z, {
|
|
307
311
|
notaSelecionada: n,
|
|
308
312
|
nota: 5,
|
|
309
313
|
color: "feedbackHard"
|
|
310
314
|
}),
|
|
311
|
-
/* @__PURE__ */
|
|
315
|
+
/* @__PURE__ */ g(z, {
|
|
312
316
|
notaSelecionada: n,
|
|
313
317
|
nota: 6,
|
|
314
318
|
color: "feedbackHard"
|
|
315
319
|
}),
|
|
316
|
-
/* @__PURE__ */
|
|
320
|
+
/* @__PURE__ */ g(z, {
|
|
317
321
|
notaSelecionada: n,
|
|
318
322
|
nota: 7,
|
|
319
323
|
color: "feedbackMedium"
|
|
320
324
|
}),
|
|
321
|
-
/* @__PURE__ */
|
|
325
|
+
/* @__PURE__ */ g(z, {
|
|
322
326
|
notaSelecionada: n,
|
|
323
327
|
nota: 8,
|
|
324
328
|
color: "feedbackMedium"
|
|
325
329
|
}),
|
|
326
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ g(z, {
|
|
327
331
|
notaSelecionada: n,
|
|
328
332
|
nota: 9,
|
|
329
333
|
color: "feedbackVeryEasy"
|
|
330
334
|
}),
|
|
331
|
-
/* @__PURE__ */
|
|
335
|
+
/* @__PURE__ */ g(z, {
|
|
332
336
|
notaSelecionada: n,
|
|
333
337
|
nota: 10,
|
|
334
338
|
color: "feedbackVeryEasy"
|
|
335
339
|
})
|
|
336
340
|
] }) }),
|
|
337
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ g(e.Footer, { children: /* @__PURE__ */ g(B, { children: "Enviar" }) })
|
|
338
342
|
] });
|
|
339
343
|
}
|
|
340
344
|
var H = f("div")({
|
|
@@ -343,14 +347,14 @@ var H = f("div")({
|
|
|
343
347
|
flexWrap: "wrap",
|
|
344
348
|
justifyContent: "center",
|
|
345
349
|
paddingBlock: "0.25rem"
|
|
346
|
-
}), U =
|
|
350
|
+
}), U = S(null);
|
|
347
351
|
function W(e) {
|
|
348
352
|
let { feedback: t, nota: n, setFeedback: r, handleChangeAvaliacao: i, handleClose: a, handleProximaEtapa: o, etapa: s, slotProps: c, handleSubmit: l } = P(e);
|
|
349
|
-
return /* @__PURE__ */
|
|
353
|
+
return /* @__PURE__ */ g(K, {
|
|
350
354
|
open: e.isOpen,
|
|
351
355
|
onClose: a,
|
|
352
356
|
...c.dialog,
|
|
353
|
-
children: /* @__PURE__ */
|
|
357
|
+
children: /* @__PURE__ */ g(U.Provider, {
|
|
354
358
|
value: {
|
|
355
359
|
handleSubmit: l,
|
|
356
360
|
feedback: t,
|
|
@@ -360,12 +364,12 @@ function W(e) {
|
|
|
360
364
|
handleProximaEtapa: o,
|
|
361
365
|
etapa: s
|
|
362
366
|
},
|
|
363
|
-
children: /* @__PURE__ */
|
|
367
|
+
children: /* @__PURE__ */ _(h, { children: [s === "avaliacao" && /* @__PURE__ */ g(V, { ...c.avaliacao }), s === "feedback" && /* @__PURE__ */ g(R, { ...c.feedback })] })
|
|
364
368
|
})
|
|
365
369
|
});
|
|
366
370
|
}
|
|
367
371
|
var G = () => {
|
|
368
|
-
let e =
|
|
372
|
+
let e = w(U);
|
|
369
373
|
if (!e) throw Error("useNPSContext must be used within a NPSProvider");
|
|
370
374
|
return e;
|
|
371
375
|
}, K = f(e)(({ theme: e }) => ({ [e.breakpoints.down("sm")]: { ".MuiPaper-root": {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/nps-popover/notas/notas.tsx","../src/nps-popover/feedback/feedback.tsx","../src/nps-popover/nps.styles.ts","../src/nps-popover/useNps.ts","../src/nps-popover/nps.schema.ts","../src/nps-popover/nps.tsx","../src/nps-dialog/static.ts","../src/nps-dialog/useNPS.ts","../src/nps-dialog/atoms/NPSFeedbackTextField.tsx","../src/nps-dialog/atoms/NPSFeedbackButtonSubmit.tsx","../src/nps-dialog/atoms/NPSTitle.tsx","../src/nps-dialog/contents/NPSFeedbackContent.tsx","../src/nps-dialog/atoms/NPSAvaliacaoButtonNota.tsx","../src/nps-dialog/atoms/NPSAvaliacaoButtonSubmit.tsx","../src/nps-dialog/contents/NPSAvaliacaoContent.tsx","../src/nps-dialog/nps.tsx"],"sourcesContent":["import { Button, Typography, useMediaQuery } from '@mui/material';\nimport { colorPalette } from '@s_mart/tokens';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport type { FormValues } from '../nps.schema';\n\ninterface NotasProps {\n onSelecionarNota?: (nota: number) => void;\n}\n\nconst Notas = ({ onSelecionarNota }: NotasProps) => {\n const { control, setValue } = useFormContext<FormValues>();\n const maxWidth500 = useMediaQuery('(max-width: 500px)');\n\n const notaSelecionada = useWatch({ control, name: 'nota' });\n\n const handleClick = (nota: number) => {\n if (notaSelecionada === nota) return;\n\n setValue('nota', nota);\n onSelecionarNota?.(nota);\n };\n\n const poucoProvavel = (\n <Typography variant='bodyXS' color={colorPalette.neutral[100]}>\n Pouco provável\n </Typography>\n );\n\n return (\n <>\n {maxWidth500 && <div style={{ marginBottom: '0.5rem' }}>{poucoProvavel}</div>}\n\n <div style={{ display: 'flex', gap: '0.3rem', flexWrap: 'wrap', justifyContent: 'center' }}>\n {Array.from({ length: 11 }).map((_, index) => (\n <Button\n key={index}\n variant={notaSelecionada === index ? 'contained' : 'outlined'}\n style={{ minWidth: '3rem' }}\n onClick={() => handleClick(index)}\n >\n {index}\n </Button>\n ))}\n </div>\n\n <div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '0.5rem' }}>\n <span>{!maxWidth500 && poucoProvavel}</span>\n\n <Typography variant='bodyXS' color={colorPalette.neutral[100]}>\n Muito provável\n </Typography>\n </div>\n </>\n );\n};\n\nexport default Notas;\n","import type { FC } from 'react';\n\nimport { TextField } from '@s_mart/form';\n\ninterface FeedbackProps {\n tipo: 'promotor' | 'detrator';\n sistemaNome: string;\n}\n\nconst Feedback: FC<FeedbackProps> = ({ tipo, sistemaNome }) => {\n return (\n <TextField\n name='feedback'\n placeholder={tipo === 'promotor' ? `Para mim o ${sistemaNome} é...` : 'Eu acho que...'}\n multiline\n size='large'\n minRows={2}\n />\n );\n};\n\nexport default Feedback;\n","import { styled } from '@mui/material';\n\nimport { colorPalette } from '@s_mart/tokens';\n// Hack para evitar erro de importação do @mui/system e @emotion/styled, causado pelo symlink do pnpm\nimport type {} from '@mui/system';\nimport type {} from '@emotion/styled';\n\nexport const SPaper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: '1.5rem',\n\n padding: '1.5rem',\n borderRadius: Number.parseFloat(theme.shape.borderRadius.toString()) * 1.5,\n boxShadow: theme.shadows[6],\n border: `1px solid ${theme.palette.primary?.main}`,\n background: colorPalette.neutral[0],\n\n position: 'absolute',\n bottom: '1.5rem',\n right: '1.75rem',\n zIndex: 102,\n\n '@media (max-width: 650px)': {\n right: '1.25rem',\n left: '1.25rem',\n },\n}));\n","import { useState } from 'react';\n\nimport type { Steps, UseNpsProps } from './nps.types';\n\nconst useNps = ({ onEnviarNota, onNotification }: UseNpsProps) => {\n const [step, setStep] = useState<Steps>('selecionarNota');\n\n const handleEnviar = (nota: number, onSubmit: () => void) => {\n if (step === 'selecionarNota') {\n onEnviarNota?.(nota);\n\n if (nota >= 9) {\n setStep('feedbackPromotor');\n } else {\n setStep('feedbackDetrator');\n }\n } else {\n onSubmit();\n\n onNotification({\n variant: 'success',\n title: 'Avaliação enviada',\n message: 'Agradecemos muito pela sua avaliação.',\n duration: 5000,\n });\n }\n };\n\n return { step, handleEnviar };\n};\n\nexport default useNps;\n","import { z } from 'zod';\n\nconst schema = z.object({\n nota: z.number(),\n feedback: z.string().optional(),\n autorizoPublicacao: z.coerce.boolean(),\n});\n\nexport type FormValues = z.infer<typeof schema>;\n\nexport default schema;\n","import { LIcon } from '@s_mart/core';\nimport { Checkbox, Form } from '@s_mart/form';\nimport { lineTimes } from '@s_mart/regular-icons';\nimport { Button, Backdrop, IconButton, Typography, useTheme } from '@mui/material';\nimport Notas from './notas/notas';\nimport Feedback from './feedback/feedback';\nimport { SPaper } from './nps.styles';\nimport useNps from './useNps';\nimport schema from './nps.schema';\nimport type { NPSProps, Steps } from './nps.types';\n\nexport const NPS = ({\n onFinalizar,\n mostrarBackdrop,\n sistemaNome,\n onClose,\n shouldCloseOnBackdropClick,\n onSelecionarNota,\n paperStyle,\n ...rest\n}: NPSProps) => {\n const { step, handleEnviar } = useNps(rest);\n const theme = useTheme();\n\n const titles: Record<Steps, string> = {\n selecionarNota: `De 0 a 10, o quanto você recomendaria o ${sistemaNome}?`,\n feedbackDetrator: `Como podemos melhorar a sua experiência no ${sistemaNome}?`,\n feedbackPromotor: `O que você mais gosta no ${sistemaNome}?`,\n };\n\n return (\n <Form onSubmit={onFinalizar} schema={schema}>\n {({ watch, onSubmit }) => {\n const notaSelecionada = watch('nota');\n\n return (\n <>\n {!!mostrarBackdrop && (\n <Backdrop open onClick={shouldCloseOnBackdropClick ? onClose : undefined} style={{ zIndex: 99 }} />\n )}\n\n <SPaper style={paperStyle}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <Typography variant='titleSM' color={theme.palette.grey[700]}>\n {titles[step]}\n </Typography>\n\n <IconButton size='small' onClick={onClose}>\n <LIcon icon={lineTimes} removeMargin size='25px' />\n </IconButton>\n </div>\n\n <div>\n {step === 'selecionarNota' ? (\n <Notas onSelecionarNota={onSelecionarNota} />\n ) : (\n <Feedback tipo={step === 'feedbackPromotor' ? 'promotor' : 'detrator'} sistemaNome={sistemaNome} />\n )}\n </div>\n\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <div>\n {step === 'feedbackPromotor' && (\n <Checkbox\n name='autorizoPublicacao'\n label={\n <Typography variant='bodyXS'>\n Autorizo a publicação deste comentário no site e em redes sociais do {sistemaNome}\n </Typography>\n }\n />\n )}\n </div>\n\n <div>\n <Button\n disabled={notaSelecionada === undefined}\n onClick={() => handleEnviar(notaSelecionada, onSubmit)}\n >\n Enviar\n </Button>\n </div>\n </div>\n </SPaper>\n </>\n );\n }}\n </Form>\n );\n};\n","import type { NPSProps } from './types';\n\nexport const defaultSlotProps = {\n avaliacao: {\n title: 'O quanto você recomendaria o sistema?',\n },\n feedback: {\n title: 'Como podemos melhorar a sua experiência?',\n },\n dialog: {\n disableBackdropClick: true,\n closeIcon: true,\n },\n} satisfies NPSProps['slotProps'];\n","import { useCallback, useMemo, useState } from 'react';\nimport type { NPSEtapas, NotaValue, NPSProps } from './types';\nimport { mergeSlotProps, useMediaQuery, useTheme } from '@mui/material';\nimport { defaultSlotProps } from './static';\n\nexport function useNPS(props: NPSProps) {\n const [feedback, setFeedback] = useState('');\n const [nota, setNota] = useState<NotaValue>(null);\n const [etapa, setEtapa] = useState<NPSEtapas>('avaliacao');\n\n const theme = useTheme();\n const isDownSM = useMediaQuery(theme.breakpoints.down('sm'));\n\n const slotProps = useMemo(() => {\n return mergeSlotProps(props.slotProps, {\n ...defaultSlotProps,\n dialog: {\n fullScreen: isDownSM,\n ...defaultSlotProps.dialog,\n },\n }) satisfies typeof defaultSlotProps;\n }, [props.slotProps, isDownSM]);\n\n const handleChangeAvaliacao = (notaSelecionada: number | null) => {\n props.onChangeAvaliacao?.(notaSelecionada);\n setNota(notaSelecionada);\n };\n\n const handleClose = () => {\n props.onClose({ nota });\n\n setTimeout(() => {\n setNota(null);\n setFeedback('');\n setEtapa('avaliacao');\n }, 100);\n };\n\n const handleSubmit = useCallback(() => {\n props.onSubmit({ \n // biome-ignore lint/style/noNonNullAssertion: Avaliação não pode ser null, pois para fechar deve ser fechado somente na etapa de feedback\n nota: nota!, \n feedback: feedback.trim() \n });\n }, [props.onSubmit, nota, feedback]);\n\n const handleProximaEtapa = () => {\n setEtapa('feedback');\n props.onChangeEtapa?.('feedback');\n };\n\n return {\n feedback,\n setFeedback,\n nota,\n handleChangeAvaliacao,\n handleProximaEtapa,\n etapa,\n setEtapa,\n handleSubmit,\n handleClose,\n\n slotProps,\n };\n}\n","import { TextField, type TextFieldProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\n\nexport const NPSFeedbackTextField = (props: TextFieldProps) => {\n const { feedback, setFeedback } = useNPSContext();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setFeedback(e.target.value);\n props.onChange?.(e);\n };\n\n return <TextField autoFocus fullWidth rows={3} multiline {...props} value={feedback} onChange={handleChange} />;\n};\n","import { Button, type ButtonProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\n\nexport function NPSFeedBackButtonSubmit(props: ButtonProps) {\n const { feedback, handleSubmit } = useNPSContext();\n\n return <Button fullWidth disabled={!feedback.trim()} {...props} onClick={handleSubmit} />;\n}\n","import { Typography } from \"@mui/material\";\nimport type { PropsWithChildren } from \"react\";\n\nexport const NPSTitle = ({ children }: PropsWithChildren) => {\n return (\n <Typography variant='titleMD' sx={{\n fontSize: '18px'\n }}>\n {children}\n </Typography>\n );\n};\n","import { Dialog } from '@s_mart/core';\nimport type { FeedbackContentProps } from '../types';\nimport { NPSFeedbackTextField } from '../atoms/NPSFeedbackTextField';\nimport { NPSFeedBackButtonSubmit } from '../atoms/NPSFeedbackButtonSubmit';\nimport { NPSTitle } from '../atoms/NPSTitle';\n\nexport function NPSFeedbackContent(props: FeedbackContentProps) {\n return (\n <>\n <Dialog.Header>\n <NPSTitle>{props.title}</NPSTitle></Dialog.Header>\n <Dialog.Content>\n <NPSFeedbackTextField />\n </Dialog.Content>\n <Dialog.Footer>\n <NPSFeedBackButtonSubmit>Enviar</NPSFeedBackButtonSubmit>\n </Dialog.Footer>\n </>\n );\n}\n","import { Button, type ButtonProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\nimport type { NotaValue } from '../types';\n\ntype ButtonAvaliacaoProps = Omit<ButtonProps, 'children'> & { nota: number; notaSelecionada: NotaValue };\n\nexport const NPSAvaliacaoButtonNota = (props: ButtonAvaliacaoProps) => {\n const { handleChangeAvaliacao } = useNPSContext();\n\n const handleClick = () => handleChangeAvaliacao(props.notaSelecionada === props.nota ? null : props.nota);\n\n return (\n <Button\n sx={{ padding: 0, minWidth: '3rem' }}\n {...props}\n variant={props.nota === props.notaSelecionada ? 'contained' : 'outlined'}\n onClick={handleClick}\n >\n {props.nota}\n </Button>\n );\n};\n","import { Button, type ButtonProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\n\nexport function NPSAvaliacaoButtonSubmit(props: ButtonProps) {\n const { nota: notaSelecionada, handleProximaEtapa } = useNPSContext();\n\n return <Button fullWidth disabled={notaSelecionada === null} {...props} onClick={handleProximaEtapa} />;\n}\n","import { styled } from '@mui/material';\nimport { Dialog } from '@s_mart/core';\nimport { NPSAvaliacaoButtonNota } from '../atoms/NPSAvaliacaoButtonNota';\nimport { useNPSContext } from '../nps';\nimport type { AvaliacaoContentProps } from '../types';\nimport { NPSAvaliacaoButtonSubmit } from '../atoms/NPSAvaliacaoButtonSubmit';\nimport { NPSTitle } from '../atoms/NPSTitle';\n\nexport function NPSAvaliacaoContent(props: AvaliacaoContentProps) {\n const { nota: notaSelecionada } = useNPSContext();\n\n return (\n <>\n <Dialog.Header>\n <NPSTitle>{props.title}</NPSTitle>\n </Dialog.Header>\n <Dialog.Content>\n <Container>\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={0} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={1} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={2} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={3} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={4} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={5} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={6} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={7} color='feedbackMedium' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={8} color='feedbackMedium' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={9} color='feedbackVeryEasy' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={10} color='feedbackVeryEasy' />\n </Container>\n </Dialog.Content>\n <Dialog.Footer>\n <NPSAvaliacaoButtonSubmit>\n Enviar\n </NPSAvaliacaoButtonSubmit>\n </Dialog.Footer>\n </>\n );\n}\n\nconst Container = styled('div')({\n display: 'flex',\n gap: '0.25rem',\n flexWrap: 'wrap',\n justifyContent: 'center',\n paddingBlock: '0.25rem',\n});\n","import { Dialog } from '@s_mart/core';\nimport { createContext, useContext } from 'react';\nimport type { NPSContextType, NPSProps } from './types';\nimport { useNPS } from './useNPS';\nimport { NPSFeedbackContent } from './contents/NPSFeedbackContent';\nimport { NPSAvaliacaoContent } from './contents/NPSAvaliacaoContent';\nimport { styled } from '@mui/material';\n\nconst NPSContext = createContext<NPSContextType | null>(null);\n\nexport function NPS(props: NPSProps) {\n const {\n feedback,\n nota,\n setFeedback,\n handleChangeAvaliacao,\n handleClose,\n handleProximaEtapa,\n etapa,\n slotProps,\n handleSubmit,\n } = useNPS(props);\n\n return (\n <StyledDialog open={props.isOpen} onClose={handleClose} {...slotProps.dialog}>\n <NPSContext.Provider\n value={{\n handleSubmit,\n feedback,\n setFeedback,\n nota,\n handleChangeAvaliacao,\n handleProximaEtapa,\n etapa,\n }}\n >\n <>\n {etapa === 'avaliacao' && <NPSAvaliacaoContent {...slotProps.avaliacao} />}\n {etapa === 'feedback' && <NPSFeedbackContent {...slotProps.feedback} />}\n </>\n </NPSContext.Provider>\n </StyledDialog>\n );\n}\n\nexport const useNPSContext = () => {\n const context = useContext(NPSContext);\n if (!context) {\n throw new Error('useNPSContext must be used within a NPSProvider');\n }\n return context;\n};\n\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n [theme.breakpoints.down('sm')]: {\n '.MuiPaper-root': {\n position: 'absolute',\n bottom: 0,\n height: 'auto',\n },\n },\n}));\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/nps-popover/feedback/feedback.tsx","../src/nps-popover/notas/notas.tsx","../src/nps-popover/nps.schema.ts","../src/nps-popover/nps.styles.ts","../src/nps-popover/useNps.ts","../src/nps-popover/nps.tsx","../src/nps-dialog/static.ts","../src/nps-dialog/useNPS.ts","../src/nps-dialog/atoms/NPSFeedbackTextField.tsx","../src/nps-dialog/atoms/NPSFeedbackButtonSubmit.tsx","../src/nps-dialog/atoms/NPSTitle.tsx","../src/nps-dialog/contents/NPSFeedbackContent.tsx","../src/nps-dialog/atoms/NPSAvaliacaoButtonNota.tsx","../src/nps-dialog/atoms/NPSAvaliacaoButtonSubmit.tsx","../src/nps-dialog/contents/NPSAvaliacaoContent.tsx","../src/nps-dialog/nps.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport { TextField } from '@s_mart/form';\n\ninterface FeedbackProps {\n tipo: 'promotor' | 'detrator';\n sistemaNome: string;\n}\n\nconst Feedback: FC<FeedbackProps> = ({ tipo, sistemaNome }) => {\n return (\n <TextField\n name='feedback'\n placeholder={tipo === 'promotor' ? `Para mim o ${sistemaNome} é...` : 'Eu acho que...'}\n multiline\n size='large'\n minRows={2}\n />\n );\n};\n\nexport default Feedback;\n","import { colorPalette } from '@s_mart/tokens';\n\nimport { Button, Typography, useMediaQuery } from '@mui/material';\nimport { useFormContext, useWatch } from 'react-hook-form';\n\nimport type { FormValues } from '../nps.schema';\n\ninterface NotasProps {\n onSelecionarNota?: (nota: number) => void;\n}\n\nconst Notas = ({ onSelecionarNota }: NotasProps) => {\n const { control, setValue } = useFormContext<FormValues>();\n const maxWidth500 = useMediaQuery('(max-width: 500px)');\n\n const notaSelecionada = useWatch({ control, name: 'nota' });\n\n const handleClick = (nota: number) => {\n if (notaSelecionada === nota) return;\n\n setValue('nota', nota);\n onSelecionarNota?.(nota);\n };\n\n const poucoProvavel = (\n <Typography variant='bodyXS' sx={{ color: colorPalette.neutral[100] }}>\n Pouco provável\n </Typography>\n );\n\n return (\n <>\n {maxWidth500 && <div style={{ marginBottom: '0.5rem' }}>{poucoProvavel}</div>}\n\n <div style={{ display: 'flex', gap: '0.3rem', flexWrap: 'wrap', justifyContent: 'center' }}>\n {Array.from({ length: 11 }).map((_, index) => (\n <Button\n // biome-ignore lint/suspicious/noArrayIndexKey: Lista fixa de notas de 0 a 10, a ordem nunca muda\n key={index}\n variant={notaSelecionada === index ? 'contained' : 'outlined'}\n style={{ minWidth: '3rem' }}\n onClick={() => handleClick(index)}\n >\n {index}\n </Button>\n ))}\n </div>\n\n <div style={{ display: 'flex', justifyContent: 'space-between', marginTop: '0.5rem' }}>\n <span>{!maxWidth500 && poucoProvavel}</span>\n\n <Typography variant='bodyXS' sx={{ color: colorPalette.neutral[100] }}>\n Muito provável\n </Typography>\n </div>\n </>\n );\n};\n\nexport default Notas;\n","import { z } from 'zod';\n\nconst schema = z.object({\n nota: z.number(),\n feedback: z.string().optional(),\n autorizoPublicacao: z.coerce.boolean(),\n});\n\nexport type FormValues = z.infer<typeof schema>;\n\nexport default schema;\n","import { styled } from '@mui/material';\n\nimport { colorPalette } from '@s_mart/tokens';\n// Hack para evitar erro de importação do @mui/system e @emotion/styled, causado pelo symlink do pnpm\nimport type {} from '@mui/system';\nimport type {} from '@emotion/styled';\n\nexport const SPaper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: '1.5rem',\n\n padding: '1.5rem',\n borderRadius: Number.parseFloat(theme.shape.borderRadius.toString()) * 1.5,\n boxShadow: theme.shadows[6],\n border: `1px solid ${theme.palette.primary?.main}`,\n background: colorPalette.neutral[0],\n\n position: 'absolute',\n bottom: '1.5rem',\n right: '1.75rem',\n zIndex: 102,\n\n '@media (max-width: 650px)': {\n right: '1.25rem',\n left: '1.25rem',\n },\n}));\n","import { useState } from 'react';\n\nimport type { Steps, UseNpsProps } from './nps.types';\n\nconst useNps = ({ onEnviarNota, onNotification }: UseNpsProps) => {\n const [step, setStep] = useState<Steps>('selecionarNota');\n\n const handleEnviar = (nota: number, onSubmit: () => void) => {\n if (step === 'selecionarNota') {\n onEnviarNota?.(nota);\n\n if (nota >= 9) {\n setStep('feedbackPromotor');\n } else {\n setStep('feedbackDetrator');\n }\n } else {\n onSubmit();\n\n onNotification({\n variant: 'success',\n title: 'Avaliação enviada',\n message: 'Agradecemos muito pela sua avaliação.',\n duration: 5000,\n });\n }\n };\n\n return { step, handleEnviar };\n};\n\nexport default useNps;\n","import { LIcon } from '@s_mart/core';\nimport { Checkbox, Form } from '@s_mart/form';\nimport { lineTimes } from '@s_mart/regular-icons';\n\nimport { Backdrop, Button, IconButton, Typography, useTheme } from '@mui/material';\n\nimport Feedback from './feedback/feedback';\nimport Notas from './notas/notas';\nimport schema from './nps.schema';\nimport { SPaper } from './nps.styles';\nimport type { NPSProps, Steps } from './nps.types';\nimport useNps from './useNps';\n\nexport const NPS = ({\n onFinalizar,\n mostrarBackdrop,\n sistemaNome,\n onClose,\n shouldCloseOnBackdropClick,\n onSelecionarNota,\n paperStyle,\n ...rest\n}: NPSProps) => {\n const { step, handleEnviar } = useNps(rest);\n const theme = useTheme();\n\n const titles: Record<Steps, string> = {\n selecionarNota: `De 0 a 10, o quanto você recomendaria o ${sistemaNome}?`,\n feedbackDetrator: `Como podemos melhorar a sua experiência no ${sistemaNome}?`,\n feedbackPromotor: `O que você mais gosta no ${sistemaNome}?`,\n };\n\n return (\n <Form onSubmit={onFinalizar} schema={schema}>\n {({ watch, onSubmit }) => {\n const notaSelecionada = watch('nota');\n\n return (\n <>\n {!!mostrarBackdrop && (\n <Backdrop\n open\n onClick={shouldCloseOnBackdropClick ? onClose : undefined}\n style={{ zIndex: 99 }}\n />\n )}\n\n <SPaper style={paperStyle}>\n <div\n style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}\n >\n <Typography variant='titleSM' sx={{ color: theme.palette.grey[700] }}>\n {titles[step]}\n </Typography>\n\n <IconButton size='small' onClick={onClose}>\n <LIcon icon={lineTimes} removeMargin size='25px' />\n </IconButton>\n </div>\n\n <div>\n {step === 'selecionarNota' ? (\n <Notas onSelecionarNota={onSelecionarNota} />\n ) : (\n <Feedback\n tipo={step === 'feedbackPromotor' ? 'promotor' : 'detrator'}\n sistemaNome={sistemaNome}\n />\n )}\n </div>\n\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <div>\n {step === 'feedbackPromotor' && (\n <Checkbox\n name='autorizoPublicacao'\n label={\n <Typography variant='bodyXS'>\n Autorizo a publicação deste comentário no site e em redes sociais do{' '}\n {sistemaNome}\n </Typography>\n }\n />\n )}\n </div>\n\n <div>\n <Button\n disabled={notaSelecionada === undefined}\n onClick={() => handleEnviar(notaSelecionada, onSubmit)}\n >\n Enviar\n </Button>\n </div>\n </div>\n </SPaper>\n </>\n );\n }}\n </Form>\n );\n};\n","import type { NPSProps } from './types';\n\nexport const defaultSlotProps = {\n avaliacao: {\n title: 'O quanto você recomendaria o sistema?',\n },\n feedback: {\n title: 'Como podemos melhorar a sua experiência?',\n },\n dialog: {\n disableBackdropClick: true,\n closeIcon: true,\n },\n} satisfies NPSProps['slotProps'];\n","import { useCallback, useMemo, useState } from 'react';\nimport type { NPSEtapas, NotaValue, NPSProps } from './types';\nimport { mergeSlotProps, useMediaQuery, useTheme } from '@mui/material';\nimport { defaultSlotProps } from './static';\n\nexport function useNPS(props: NPSProps) {\n const [feedback, setFeedback] = useState('');\n const [nota, setNota] = useState<NotaValue>(null);\n const [etapa, setEtapa] = useState<NPSEtapas>('avaliacao');\n\n const theme = useTheme();\n const isDownSM = useMediaQuery(theme.breakpoints.down('sm'));\n\n const slotProps = useMemo(() => {\n return mergeSlotProps(props.slotProps, {\n ...defaultSlotProps,\n dialog: {\n fullScreen: isDownSM,\n ...defaultSlotProps.dialog,\n },\n }) satisfies typeof defaultSlotProps;\n }, [props.slotProps, isDownSM]);\n\n const handleChangeAvaliacao = (notaSelecionada: number | null) => {\n props.onChangeAvaliacao?.(notaSelecionada);\n setNota(notaSelecionada);\n };\n\n const handleClose = () => {\n props.onClose({ nota });\n\n setTimeout(() => {\n setNota(null);\n setFeedback('');\n setEtapa('avaliacao');\n }, 100);\n };\n\n const handleSubmit = useCallback(() => {\n props.onSubmit({ \n // biome-ignore lint/style/noNonNullAssertion: Avaliação não pode ser null, pois para fechar deve ser fechado somente na etapa de feedback\n nota: nota!, \n feedback: feedback.trim() \n });\n }, [props.onSubmit, nota, feedback]);\n\n const handleProximaEtapa = () => {\n setEtapa('feedback');\n props.onChangeEtapa?.('feedback');\n };\n\n return {\n feedback,\n setFeedback,\n nota,\n handleChangeAvaliacao,\n handleProximaEtapa,\n etapa,\n setEtapa,\n handleSubmit,\n handleClose,\n\n slotProps,\n };\n}\n","import { TextField, type TextFieldProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\n\nexport const NPSFeedbackTextField = (props: TextFieldProps) => {\n const { feedback, setFeedback } = useNPSContext();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setFeedback(e.target.value);\n props.onChange?.(e);\n };\n\n return <TextField autoFocus fullWidth rows={3} multiline {...props} value={feedback} onChange={handleChange} />;\n};\n","import { Button, type ButtonProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\n\nexport function NPSFeedBackButtonSubmit(props: ButtonProps) {\n const { feedback, handleSubmit } = useNPSContext();\n\n return <Button fullWidth disabled={!feedback.trim()} {...props} onClick={handleSubmit} />;\n}\n","import { Typography } from \"@mui/material\";\nimport type { PropsWithChildren } from \"react\";\n\nexport const NPSTitle = ({ children }: PropsWithChildren) => {\n return (\n <Typography variant='titleMD' sx={{\n fontSize: '18px'\n }}>\n {children}\n </Typography>\n );\n};\n","import { Dialog } from '@s_mart/core';\nimport type { FeedbackContentProps } from '../types';\nimport { NPSFeedbackTextField } from '../atoms/NPSFeedbackTextField';\nimport { NPSFeedBackButtonSubmit } from '../atoms/NPSFeedbackButtonSubmit';\nimport { NPSTitle } from '../atoms/NPSTitle';\n\nexport function NPSFeedbackContent(props: FeedbackContentProps) {\n return (\n <>\n <Dialog.Header>\n <NPSTitle>{props.title}</NPSTitle></Dialog.Header>\n <Dialog.Content>\n <NPSFeedbackTextField />\n </Dialog.Content>\n <Dialog.Footer>\n <NPSFeedBackButtonSubmit>Enviar</NPSFeedBackButtonSubmit>\n </Dialog.Footer>\n </>\n );\n}\n","import { Button, type ButtonProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\nimport type { NotaValue } from '../types';\n\ntype ButtonAvaliacaoProps = Omit<ButtonProps, 'children'> & { nota: number; notaSelecionada: NotaValue };\n\nexport const NPSAvaliacaoButtonNota = (props: ButtonAvaliacaoProps) => {\n const { handleChangeAvaliacao } = useNPSContext();\n\n const handleClick = () => handleChangeAvaliacao(props.notaSelecionada === props.nota ? null : props.nota);\n\n return (\n <Button\n sx={{ padding: 0, minWidth: '3rem' }}\n {...props}\n variant={props.nota === props.notaSelecionada ? 'contained' : 'outlined'}\n onClick={handleClick}\n >\n {props.nota}\n </Button>\n );\n};\n","import { Button, type ButtonProps } from '@mui/material';\nimport { useNPSContext } from '../nps';\n\nexport function NPSAvaliacaoButtonSubmit(props: ButtonProps) {\n const { nota: notaSelecionada, handleProximaEtapa } = useNPSContext();\n\n return <Button fullWidth disabled={notaSelecionada === null} {...props} onClick={handleProximaEtapa} />;\n}\n","import { styled } from '@mui/material';\nimport { Dialog } from '@s_mart/core';\nimport { NPSAvaliacaoButtonNota } from '../atoms/NPSAvaliacaoButtonNota';\nimport { useNPSContext } from '../nps';\nimport type { AvaliacaoContentProps } from '../types';\nimport { NPSAvaliacaoButtonSubmit } from '../atoms/NPSAvaliacaoButtonSubmit';\nimport { NPSTitle } from '../atoms/NPSTitle';\n\nexport function NPSAvaliacaoContent(props: AvaliacaoContentProps) {\n const { nota: notaSelecionada } = useNPSContext();\n\n return (\n <>\n <Dialog.Header>\n <NPSTitle>{props.title}</NPSTitle>\n </Dialog.Header>\n <Dialog.Content>\n <Container>\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={0} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={1} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={2} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={3} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={4} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={5} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={6} color='feedbackHard' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={7} color='feedbackMedium' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={8} color='feedbackMedium' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={9} color='feedbackVeryEasy' />\n <NPSAvaliacaoButtonNota notaSelecionada={notaSelecionada} nota={10} color='feedbackVeryEasy' />\n </Container>\n </Dialog.Content>\n <Dialog.Footer>\n <NPSAvaliacaoButtonSubmit>\n Enviar\n </NPSAvaliacaoButtonSubmit>\n </Dialog.Footer>\n </>\n );\n}\n\nconst Container = styled('div')({\n display: 'flex',\n gap: '0.25rem',\n flexWrap: 'wrap',\n justifyContent: 'center',\n paddingBlock: '0.25rem',\n});\n","import { Dialog } from '@s_mart/core';\nimport { createContext, useContext } from 'react';\nimport type { NPSContextType, NPSProps } from './types';\nimport { useNPS } from './useNPS';\nimport { NPSFeedbackContent } from './contents/NPSFeedbackContent';\nimport { NPSAvaliacaoContent } from './contents/NPSAvaliacaoContent';\nimport { styled } from '@mui/material';\n\nconst NPSContext = createContext<NPSContextType | null>(null);\n\nexport function NPS(props: NPSProps) {\n const {\n feedback,\n nota,\n setFeedback,\n handleChangeAvaliacao,\n handleClose,\n handleProximaEtapa,\n etapa,\n slotProps,\n handleSubmit,\n } = useNPS(props);\n\n return (\n <StyledDialog open={props.isOpen} onClose={handleClose} {...slotProps.dialog}>\n <NPSContext.Provider\n value={{\n handleSubmit,\n feedback,\n setFeedback,\n nota,\n handleChangeAvaliacao,\n handleProximaEtapa,\n etapa,\n }}\n >\n <>\n {etapa === 'avaliacao' && <NPSAvaliacaoContent {...slotProps.avaliacao} />}\n {etapa === 'feedback' && <NPSFeedbackContent {...slotProps.feedback} />}\n </>\n </NPSContext.Provider>\n </StyledDialog>\n );\n}\n\nexport const useNPSContext = () => {\n const context = useContext(NPSContext);\n if (!context) {\n throw new Error('useNPSContext must be used within a NPSProvider');\n }\n return context;\n};\n\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n [theme.breakpoints.down('sm')]: {\n '.MuiPaper-root': {\n position: 'absolute',\n bottom: 0,\n height: 'auto',\n },\n },\n}));\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@s_mart/nps",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.mjs",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"@emotion/styled": "^11.14.1",
|
|
16
16
|
"@mui/material": "^9.3.1",
|
|
17
17
|
"@mui/system": "^9.3.0",
|
|
18
|
-
"@s_mart/core": "16.
|
|
19
|
-
"@s_mart/form": "16.
|
|
20
|
-
"@s_mart/regular-icons": "16.
|
|
21
|
-
"@s_mart/tokens": "16.
|
|
18
|
+
"@s_mart/core": "16.1.1",
|
|
19
|
+
"@s_mart/form": "16.1.1",
|
|
20
|
+
"@s_mart/regular-icons": "16.1.1",
|
|
21
|
+
"@s_mart/tokens": "16.1.1",
|
|
22
22
|
"@types/react": "^19.2.18",
|
|
23
23
|
"@types/react-dom": "^19.2.5",
|
|
24
24
|
"react": "^19.2.8",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"@emotion/styled": "^11.13.0",
|
|
33
33
|
"@mui/material": "^9.0.0",
|
|
34
34
|
"@mui/system": "^9.0.0",
|
|
35
|
-
"@s_mart/core": "16.
|
|
36
|
-
"@s_mart/form": "16.
|
|
37
|
-
"@s_mart/regular-icons": "16.
|
|
38
|
-
"@s_mart/tokens": "16.
|
|
35
|
+
"@s_mart/core": "16.1.1",
|
|
36
|
+
"@s_mart/form": "16.1.1",
|
|
37
|
+
"@s_mart/regular-icons": "16.1.1",
|
|
38
|
+
"@s_mart/tokens": "16.1.1",
|
|
39
39
|
"@types/react": ">=18.3.12",
|
|
40
40
|
"@types/react-dom": ">=18.3.1",
|
|
41
41
|
"react": ">=18.3.1",
|