@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 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 { colorPalette as h } from "@s_mart/tokens";
6
- import { useFormContext as g, useWatch as _ } from "react-hook-form";
7
- import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
8
- import { createContext as x, useCallback as S, useContext as C, useMemo as w, useState as T } from "react";
9
- import { z as E } from "zod";
10
- //#region src/nps-popover/notas/notas.tsx
11
- var D = ({ onSelecionarNota: e }) => {
12
- let { control: t, setValue: n } = g(), r = p("(max-width: 500px)"), i = _({
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__ */ y(u, {
23
+ }, o = /* @__PURE__ */ g(u, {
18
24
  variant: "bodyXS",
19
- color: h.neutral[100],
25
+ sx: { color: v.neutral[100] },
20
26
  children: "Pouco provável"
21
27
  });
22
- return /* @__PURE__ */ b(v, { children: [
23
- r && /* @__PURE__ */ y("div", {
28
+ return /* @__PURE__ */ _(h, { children: [
29
+ r && /* @__PURE__ */ g("div", {
24
30
  style: { marginBottom: "0.5rem" },
25
31
  children: o
26
32
  }),
27
- /* @__PURE__ */ y("div", {
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__ */ y(s, {
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__ */ b("div", {
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__ */ y("span", { children: !r && o }), /* @__PURE__ */ y(u, {
53
+ children: [/* @__PURE__ */ g("span", { children: !r && o }), /* @__PURE__ */ g(u, {
48
54
  variant: "bodyXS",
49
- color: h.neutral[100],
55
+ sx: { color: v.neutral[100] },
50
56
  children: "Muito provável"
51
57
  })]
52
58
  })
53
59
  ] });
54
- }, O = ({ tipo: e, sistemaNome: t }) => /* @__PURE__ */ y(i, {
55
- name: "feedback",
56
- placeholder: e === "promotor" ? `Para mim o ${t} é...` : "Eu acho que...",
57
- multiline: !0,
58
- size: "large",
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: h.neutral[0],
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
- })), A = ({ onEnviarNota: e, onNotification: t }) => {
78
- let [n, r] = T("selecionarNota");
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
- }, j = E.object({
91
- nota: E.number(),
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__ */ y(r, {
100
+ return /* @__PURE__ */ g(r, {
101
101
  onSubmit: e,
102
- schema: j,
102
+ schema: k,
103
103
  children: ({ watch: e, onSubmit: r }) => {
104
104
  let m = e("nota");
105
- return /* @__PURE__ */ b(v, { children: [!!i && /* @__PURE__ */ y(o, {
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__ */ b(k, {
110
- style: h,
109
+ }), /* @__PURE__ */ _(A, {
110
+ style: v,
111
111
  children: [
112
- /* @__PURE__ */ b("div", {
112
+ /* @__PURE__ */ _("div", {
113
113
  style: {
114
114
  display: "flex",
115
115
  justifyContent: "space-between",
116
116
  alignItems: "center"
117
117
  },
118
- children: [/* @__PURE__ */ y(u, {
118
+ children: [/* @__PURE__ */ g(u, {
119
119
  variant: "titleSM",
120
- color: S.palette.grey[700],
121
- children: C[_]
122
- }), /* @__PURE__ */ y(c, {
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__ */ y(t, {
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__ */ y("div", { children: _ === "selecionarNota" ? /* @__PURE__ */ y(D, { onSelecionarNota: p }) : /* @__PURE__ */ y(O, {
133
- tipo: _ === "feedbackPromotor" ? "promotor" : "detrator",
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__ */ b("div", {
136
+ /* @__PURE__ */ _("div", {
137
137
  style: {
138
138
  display: "flex",
139
139
  justifyContent: "space-between"
140
140
  },
141
- children: [/* @__PURE__ */ y("div", { children: _ === "feedbackPromotor" && /* @__PURE__ */ y(n, {
141
+ children: [/* @__PURE__ */ g("div", { children: b === "feedbackPromotor" && /* @__PURE__ */ g(n, {
142
142
  name: "autorizoPublicacao",
143
- label: /* @__PURE__ */ b(u, {
143
+ label: /* @__PURE__ */ _(u, {
144
144
  variant: "bodyXS",
145
- children: ["Autorizo a publicação deste comentário no site e em redes sociais do ", l]
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__ */ y("div", { children: /* @__PURE__ */ y(s, {
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] = T(""), [r, i] = T(null), [a, o] = T("avaliacao"), s = m(), c = p(s.breakpoints.down("sm")), l = w(() => d(e.slotProps, {
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: S(() => {
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__ */ y(l, {
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__ */ y(s, {
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__ */ y(u, {
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__ */ b(v, { children: [
243
- /* @__PURE__ */ y(e.Header, { children: /* @__PURE__ */ y(L, { children: t.title }) }),
244
- /* @__PURE__ */ y(e.Content, { children: /* @__PURE__ */ y(F, {}) }),
245
- /* @__PURE__ */ y(e.Footer, { children: /* @__PURE__ */ y(I, { children: "Enviar" }) })
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__ */ y(s, {
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__ */ y(s, {
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__ */ b(v, { children: [
279
- /* @__PURE__ */ y(e.Header, { children: /* @__PURE__ */ y(L, { children: t.title }) }),
280
- /* @__PURE__ */ y(e.Content, { children: /* @__PURE__ */ b(H, { children: [
281
- /* @__PURE__ */ y(z, {
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__ */ y(z, {
290
+ /* @__PURE__ */ g(z, {
287
291
  notaSelecionada: n,
288
292
  nota: 1,
289
293
  color: "feedbackHard"
290
294
  }),
291
- /* @__PURE__ */ y(z, {
295
+ /* @__PURE__ */ g(z, {
292
296
  notaSelecionada: n,
293
297
  nota: 2,
294
298
  color: "feedbackHard"
295
299
  }),
296
- /* @__PURE__ */ y(z, {
300
+ /* @__PURE__ */ g(z, {
297
301
  notaSelecionada: n,
298
302
  nota: 3,
299
303
  color: "feedbackHard"
300
304
  }),
301
- /* @__PURE__ */ y(z, {
305
+ /* @__PURE__ */ g(z, {
302
306
  notaSelecionada: n,
303
307
  nota: 4,
304
308
  color: "feedbackHard"
305
309
  }),
306
- /* @__PURE__ */ y(z, {
310
+ /* @__PURE__ */ g(z, {
307
311
  notaSelecionada: n,
308
312
  nota: 5,
309
313
  color: "feedbackHard"
310
314
  }),
311
- /* @__PURE__ */ y(z, {
315
+ /* @__PURE__ */ g(z, {
312
316
  notaSelecionada: n,
313
317
  nota: 6,
314
318
  color: "feedbackHard"
315
319
  }),
316
- /* @__PURE__ */ y(z, {
320
+ /* @__PURE__ */ g(z, {
317
321
  notaSelecionada: n,
318
322
  nota: 7,
319
323
  color: "feedbackMedium"
320
324
  }),
321
- /* @__PURE__ */ y(z, {
325
+ /* @__PURE__ */ g(z, {
322
326
  notaSelecionada: n,
323
327
  nota: 8,
324
328
  color: "feedbackMedium"
325
329
  }),
326
- /* @__PURE__ */ y(z, {
330
+ /* @__PURE__ */ g(z, {
327
331
  notaSelecionada: n,
328
332
  nota: 9,
329
333
  color: "feedbackVeryEasy"
330
334
  }),
331
- /* @__PURE__ */ y(z, {
335
+ /* @__PURE__ */ g(z, {
332
336
  notaSelecionada: n,
333
337
  nota: 10,
334
338
  color: "feedbackVeryEasy"
335
339
  })
336
340
  ] }) }),
337
- /* @__PURE__ */ y(e.Footer, { children: /* @__PURE__ */ y(B, { children: "Enviar" }) })
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 = x(null);
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__ */ y(K, {
353
+ return /* @__PURE__ */ g(K, {
350
354
  open: e.isOpen,
351
355
  onClose: a,
352
356
  ...c.dialog,
353
- children: /* @__PURE__ */ y(U.Provider, {
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__ */ b(v, { children: [s === "avaliacao" && /* @__PURE__ */ y(V, { ...c.avaliacao }), s === "feedback" && /* @__PURE__ */ y(R, { ...c.feedback })] })
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 = C(U);
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": {
@@ -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.0.0",
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.0.0",
19
- "@s_mart/form": "16.0.0",
20
- "@s_mart/regular-icons": "16.0.0",
21
- "@s_mart/tokens": "16.0.0",
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.0.0",
36
- "@s_mart/form": "16.0.0",
37
- "@s_mart/regular-icons": "16.0.0",
38
- "@s_mart/tokens": "16.0.0",
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",