mitre-form-component 0.0.49 → 0.1.0

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.cjs CHANGED
@@ -166,6 +166,53 @@ var opacityEffect = `
166
166
 
167
167
  // src/components/Form/styles.ts
168
168
  var import_styled_components = __toESM(require("styled-components"), 1);
169
+
170
+ // src/components/styles/theme.ts
171
+ var theme = {
172
+ colors: {
173
+ // Cores principais
174
+ red: "#e52e4d",
175
+ white: "#FFF",
176
+ black: "#2F2F2F",
177
+ black2: "#1E1E1E",
178
+ black3: "#353535",
179
+ alphaBlack: "#000000",
180
+ // Amarelos
181
+ yellow400: "#FFD789",
182
+ yellow500: "#F6C76B",
183
+ // Cinzas
184
+ gray40: "#F0F0F0",
185
+ gray45: "#767676",
186
+ gray50: "#686A69",
187
+ gray60: "#8F8F8F",
188
+ gray100: "#B6B6B6",
189
+ gray150: "#B9B9B9",
190
+ gray180: "#CECECE",
191
+ gray200: "#D2D2D2",
192
+ gray300: "#EBEBEB",
193
+ gray400: "#ECECEC",
194
+ gray500: "#F4F4F4",
195
+ gray550: "#6F6F6F",
196
+ gray600: "#686868",
197
+ gray700: "#535353",
198
+ gray800: "#9D9D9D",
199
+ // Verdes
200
+ green: "#57C06E",
201
+ green2: "#2DCE68",
202
+ // Azul
203
+ blue: "#007BFF",
204
+ // Transparente
205
+ transparent: "transparent"
206
+ },
207
+ shadows: {
208
+ shadow500: "0px 4px 8px rgba(91, 91, 91, 0.2)"
209
+ },
210
+ fonts: {
211
+ primary: '"Montserrat", sans-serif'
212
+ }
213
+ };
214
+
215
+ // src/components/Form/styles.ts
169
216
  var FormContainer = import_styled_components.default.div`
170
217
  ${flex("column")}
171
218
  align-items: stretch;
@@ -173,7 +220,7 @@ var FormContainer = import_styled_components.default.div`
173
220
  overflow-x: hidden;
174
221
  overflow-y: auto;
175
222
 
176
- background: ${(props) => props.$backgroundColor || "var(--gray-180)"};
223
+ background: ${(props) => props.$backgroundColor || theme.colors.gray180};
177
224
 
178
225
  padding: ${(props) => props.$innerPadding || "1rem"};
179
226
 
@@ -201,7 +248,7 @@ var ButtonContainer = import_styled_components.default.div`
201
248
 
202
249
  button {
203
250
  ${opacityEffect}
204
- color: var(--black);
251
+ color: ${theme.colors.black};
205
252
  font-weight: 600;
206
253
  border: none;
207
254
  border-radius: 8px;
@@ -220,26 +267,26 @@ var Form = import_styled_components.default.form`
220
267
  }
221
268
 
222
269
  p {
223
- font-family: "Montserrat", sans-serif;
270
+ font-family: ${theme.fonts.primary};
224
271
  font-style: italic;
225
272
  font-weight: 200;
226
273
  font-size: 0.8rem;
227
- color: ${(props) => props.$textColor || "var(--black)"};
274
+ color: ${(props) => props.$textColor || theme.colors.black};
228
275
  text-align: start;
229
276
  }
230
277
 
231
278
  a {
232
- font-family: "Montserrat", sans-serif;
279
+ font-family: ${theme.fonts.primary};
233
280
  font-style: italic;
234
281
  font-weight: 200;
235
282
  font-size: 0.8rem;
236
- color: ${(props) => props.$textColor || "var(--black)"};
283
+ color: ${(props) => props.$textColor || theme.colors.black};
237
284
  }
238
285
 
239
286
  h6 {
240
287
  text-align: start;
241
288
  margin-left: 10px;
242
- color: ${(props) => props.$textColor || "var(--black)"};
289
+ color: ${(props) => props.$textColor || theme.colors.black};
243
290
  }
244
291
 
245
292
  & > div {
@@ -251,88 +298,36 @@ var Title = import_styled_components.default.h2`
251
298
  font-weight: 700;
252
299
  line-height: 24px;
253
300
  letter-spacing: 0em;
254
- color: ${(props) => props.$textColor || "var(--black)"};
301
+ color: ${(props) => props.$textColor || theme.colors.black};
255
302
  `;
256
- var Text = import_styled_components.default.p`
303
+ var Subtitle = import_styled_components.default.p`
257
304
  font-size: 1rem;
258
305
  font-weight: 400;
259
306
  line-height: 23px;
260
307
  letter-spacing: 0em;
261
308
  margin-top: 10px;
262
- color: ${(props) => props.$textColor || "var(--black)"};
309
+ color: ${(props) => props.$textColor || theme.colors.black};
263
310
  `;
264
311
 
265
- // src/components/styles/global.ts
266
- var import_styled_components2 = require("styled-components");
267
- var import_react2 = require("react");
268
- var GlobalStyles = import_styled_components2.createGlobalStyle`
269
- :root {
270
- --red: #e52e4d;
271
- --white: #FFF;
272
- --black: #2F2F2F;
273
- --black-2:#1E1E1E;
274
- --alphaBlack: #000000;
275
- --black-2:#1E1E1E;
276
- --black-3:#353535;
277
-
278
- --yellow-400:#FFD789;
279
- --yellow-500: #F6C76B;
280
- --gray-40:#F0F0F0;
281
- --gray-45:#767676;
282
- --gray-50: #686A69;
283
- --gray-60: #8F8F8F;
284
- --gray-100: #B6B6B6;
285
- --gray-150: #B9B9B9;
286
- --gray-180: #CECECE;
287
- --gray-200: #D2D2D2;
288
- --gray-300: #EBEBEB;
289
- --gray-400: #ECECEC;
290
- --gray-500: #F4F4F4;
291
- --gray-550:#6F6F6F;
292
- --gray-600:#686868;
293
- --gray-700: #535353;
294
- --gray-800:#9D9D9D;
295
- --shadow-500: 0px 4px 8px rgba(91, 91, 91, 0.2);
296
- --green:#57C06E;
297
- --green-2:#2DCE68;
298
- --blue:#007BFF;
299
-
300
- --transparent: transparent;
301
- }
302
-
312
+ // src/components/styles/ComponentWrapper.tsx
313
+ var import_styled_components2 = __toESM(require("styled-components"), 1);
314
+ var ComponentWrapper = import_styled_components2.default.div`
315
+ /* Reset CSS scoped apenas ao componente */
303
316
  * {
304
- margin: 0;
305
- padding: 0;
306
317
  box-sizing: border-box;
307
318
  }
308
-
309
- html {
310
- scroll-behavior: smooth;
311
-
312
- @media (max-width: 1080px) {
313
- font-size: 93.75%;
314
- }
315
- @media (max-width: 720px) {
316
- font-size: 87.5%;
317
- }
318
- }
319
-
320
- body {
321
- background: var(--white);
322
- -webkit-font-smoothing: antialiased;
323
- }
324
-
325
- body, input, textarea, select, button {
326
- font-family: "Montserrat", sans-serif;
327
- font-weight: 400;
328
- }
329
-
330
- h1, h2, h3, h4, h5, h6, strong {
331
- font-weight: 600;
332
- }
333
-
319
+
320
+ /* Fonte aplicada apenas ao componente */
321
+ font-family: ${theme.fonts.primary};
322
+
323
+ /* Estilos necessários apenas neste escopo */
334
324
  button {
335
325
  cursor: pointer;
326
+ font-family: ${theme.fonts.primary};
327
+ }
328
+
329
+ input, textarea, select {
330
+ font-family: ${theme.fonts.primary};
336
331
  }
337
332
 
338
333
  [disabled] {
@@ -340,90 +335,42 @@ var GlobalStyles = import_styled_components2.createGlobalStyle`
340
335
  cursor: not-allowed;
341
336
  }
342
337
 
343
- .hidden {
344
- overflow: hidden;
345
- }
346
-
338
+ /* Scrollbar customizada apenas para este componente */
347
339
  ::-webkit-scrollbar {
348
340
  -webkit-appearance: none;
349
- background: var(--gray-500);
341
+ background: ${theme.colors.gray500};
350
342
  width: 6px;
351
343
  height: 10px;
352
344
  }
353
345
 
354
346
  ::-webkit-scrollbar-thumb {
355
- background-color: var(--gray-50);
356
- }
357
-
358
- .aligncenter {
359
- text-align: center;
360
- }
361
-
362
- .width-190px {
363
- width:190px;
364
- }
365
-
366
- .hidden-content {
367
- display:none !important;
368
- }
369
-
370
- .global-margin-bottom {
371
- margin-bottom:20px;
372
- }
373
-
374
- .background-light-gray {
375
- background:#F4F4F4;
376
- }
377
-
378
- .full-width-and-height {
379
- height:100%;
380
- width:100%;
381
- }
382
-
383
- .flex-direction-column {
384
- flex-direction:column;
385
- }
386
-
387
- .bold {
388
- font-weight:700;
347
+ background-color: ${theme.colors.gray50};
389
348
  }
390
-
391
- .margin-center-x {
392
- margin:0 auto;
393
- }
394
-
395
- .border-none {
396
- border:none;
397
- }
398
-
399
- .text-center {
400
- text-align:center;
401
- }
402
-
403
- .relative {
404
- position:relative;
405
- }
406
-
407
- /* accessibility */
408
- body ._access-menu p._text-center{
409
- font-family: "Montserrat", sans-serif;
410
- font-style: italic;
411
- font-size: 1.2rem!important;
412
- margin-top: 6px;
413
- margin-bottom: 3px;
414
- }
415
-
416
349
  `;
417
- var FontLoader = () => {
350
+
351
+ // src/components/styles/FontLoader.tsx
352
+ var import_react2 = require("react");
353
+ var useMontserratFont = () => {
418
354
  (0, import_react2.useEffect)(() => {
419
- const link = document.createElement("link");
420
- link.href = "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap";
421
- link.rel = "stylesheet";
422
- document.head.appendChild(link);
355
+ const existingLink = document.querySelector('link[data-mitre-form-font="montserrat"]');
356
+ if (!existingLink) {
357
+ const link = document.createElement("link");
358
+ link.rel = "preconnect";
359
+ link.href = "https://fonts.googleapis.com";
360
+ document.head.appendChild(link);
361
+ const link2 = document.createElement("link");
362
+ link2.rel = "preconnect";
363
+ link2.href = "https://fonts.gstatic.com";
364
+ link2.crossOrigin = "anonymous";
365
+ document.head.appendChild(link2);
366
+ const link3 = document.createElement("link");
367
+ link3.rel = "stylesheet";
368
+ link3.href = "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap";
369
+ link3.dataset.mitreFormFont = "montserrat";
370
+ document.head.appendChild(link3);
371
+ }
423
372
  }, []);
424
- return null;
425
373
  };
426
- var global_default = FontLoader;
427
374
 
428
375
  // src/components/Input/index.tsx
429
376
  var import_react3 = require("react");
@@ -469,53 +416,53 @@ function date(e) {
469
416
  // src/components/Input/styles.ts
470
417
  var import_styled_components3 = __toESM(require("styled-components"), 1);
471
418
  var FormLabel = import_styled_components3.default.label`
472
- font-family: "Montserrat", sans-serif;
419
+ font-family: ${theme.fonts.primary};
473
420
  font-style: normal;
474
421
  font-weight: 500;
475
422
  font-size: 1rem;
476
- color: ${(props) => props.$textColor || "var(--black)"};
423
+ color: ${(props) => props.$textColor || theme.colors.black};
477
424
  display: block;
478
425
  margin-bottom: 0.5rem;
479
426
  text-align: left;
480
427
  `;
481
428
  var Input = import_styled_components3.default.input`
482
- font-family: "Montserrat", sans-serif;
429
+ font-family: ${theme.fonts.primary};
483
430
  font-style: normal;
484
431
  font-weight: 500;
485
432
  font-size: 1rem;
486
433
  line-height: 1.5rem;
487
- background: ${(props) => props.$backgroundColor || "var(--white)"};
488
- color: ${(props) => props.$textColor || "var(--black)"};
434
+ background: ${(props) => props.$backgroundColor || theme.colors.white};
435
+ color: ${(props) => props.$textColor || theme.colors.black};
489
436
  padding: 0.5rem;
490
437
  border-radius: 0.125rem;
491
- border: 1px solid ${(props) => props.$borderColor || "transparent"};
438
+ border: 1px solid ${(props) => props.$borderColor || theme.colors.transparent};
492
439
  display: block;
493
440
  height: 3.125rem;
494
441
  width: 100%;
495
442
 
496
443
  &:focus {
497
444
  border-radius: 0.125rem;
498
- border: 2px solid ${(props) => props.$focusBorderColor || "var(--yellow-500)"};
445
+ border: 2px solid ${(props) => props.$focusBorderColor || theme.colors.yellow500};
499
446
  outline: none;
500
447
  }
501
448
 
502
449
  &::placeholder {
503
450
  font-size: 1rem;
504
451
  line-height: 1.5rem;
505
- color: ${(props) => props.$placeholderColor || "var(--gray-100)"};
452
+ color: ${(props) => props.$placeholderColor || theme.colors.gray100};
506
453
  font-weight: 800;
507
454
  }
508
455
 
509
456
  /* Autofill styles */
510
457
  &:-webkit-autofill {
511
- background: ${(props) => props.$backgroundColor || "var(--white)"} !important;
512
- color: ${(props) => props.$textColor || "var(--black)"} !important;
513
- -webkit-text-fill-color: ${(props) => props.$textColor || "var(--black)"} !important;
458
+ background: ${(props) => props.$backgroundColor || theme.colors.white} !important;
459
+ color: ${(props) => props.$textColor || theme.colors.black} !important;
460
+ -webkit-text-fill-color: ${(props) => props.$textColor || theme.colors.black} !important;
514
461
  transition: background-color 5000s ease-in-out 0s; /* Prevent flashing */
515
462
  }
516
463
 
517
464
  &:-webkit-autofill::first-line {
518
- font-family: "Montserrat", sans-serif;
465
+ font-family: ${theme.fonts.primary};
519
466
  font-size: 1rem;
520
467
  font-weight: 500;
521
468
  }
@@ -523,7 +470,7 @@ var Input = import_styled_components3.default.input`
523
470
  var FormErrorMessage = import_styled_components3.default.small`
524
471
  font-size: 0.75rem;
525
472
  line-height: 1.125rem;
526
- color: var(--red);
473
+ color: ${theme.colors.red};
527
474
  margin-top: 0.25rem;
528
475
  display: block;
529
476
  `;
@@ -532,23 +479,23 @@ var FormControl = import_styled_components3.default.div.withConfig({
532
479
  })`
533
480
  ${FormLabel} {
534
481
  ${(props) => props.isInvalid && import_styled_components3.css`
535
- color: var(--red);
482
+ color: ${theme.colors.red};
536
483
  `};
537
484
  }
538
485
 
539
486
  ${Input} {
540
487
  ${(props) => props.isInvalid && import_styled_components3.css`
541
- border: 1px solid var(--red);
488
+ border: 1px solid ${theme.colors.red};
542
489
 
543
490
  &:not(:focus)::placeholder {
544
- color: var(--red);
491
+ color: ${theme.colors.red};
545
492
  font-weight: 600;
546
493
  }
547
494
  `};
548
495
 
549
496
  &:focus {
550
497
  ${(props) => props.isInvalid && import_styled_components3.css`
551
- border: 1px solid var(--red);
498
+ border: 1px solid ${theme.colors.red};
552
499
  `};
553
500
  }
554
501
  }
@@ -632,8 +579,8 @@ var Icon = import_styled_components4.default.span`
632
579
  opacity: 0;
633
580
  margin-right: 0.625rem;
634
581
  `;
635
- var Text2 = import_styled_components4.default.span`
636
- font-family: "Montserrat", sans-serif;
582
+ var Text = import_styled_components4.default.span`
583
+ font-family: ${theme.fonts.primary};
637
584
  font-size: 1rem;
638
585
  line-height: 1.5rem;
639
586
  margin-bottom: -2px;
@@ -641,7 +588,7 @@ var Text2 = import_styled_components4.default.span`
641
588
  transition: all 0.25s ease;
642
589
  `;
643
590
  var TextSubmitting = import_styled_components4.default.span`
644
- font-family: "Montserrat", sans-serif;
591
+ font-family: ${theme.fonts.primary};
645
592
  font-weight: 400;
646
593
  font-size: 1rem;
647
594
 
@@ -654,10 +601,10 @@ var LoadingIcon = import_styled_components4.default.span.withConfig({
654
601
 
655
602
  width: 1rem;
656
603
  height: 1rem;
657
- border: 0.125rem solid var(--white);
604
+ border: 0.125rem solid ${theme.colors.white};
658
605
  border-radius: 50%;
659
606
  animation: loadingAnimation 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
660
- border-color: var(--white) transparent transparent transparent;
607
+ border-color: ${theme.colors.white} transparent transparent transparent;
661
608
 
662
609
  margin-right: ${(props) => props.hasText ? "0.625rem" : "0"};
663
610
 
@@ -701,7 +648,7 @@ var Button = import_styled_components4.default.button.withConfig({
701
648
  display: ${(props) => props?.hasIcon ? "block" : ""};
702
649
  }
703
650
 
704
- ${Text2} {
651
+ ${Text} {
705
652
  transform: ${(props) => props?.hasIcon ? "translate3d(-4.5px, 0px, 0px)" : "unset"};
706
653
 
707
654
  @media print, screen and (min-width: 40em) {
@@ -721,12 +668,12 @@ var Button = import_styled_components4.default.button.withConfig({
721
668
  transform: translate3d(0px, 0px, 0px);
722
669
  }
723
670
 
724
- ${Text2} {
671
+ ${Text} {
725
672
  transform: ${(props) => props?.hasIcon ? "translate3d(-5px, 0px, 0px)" : "unset"};
726
673
  }
727
674
  }
728
675
 
729
- ${Text2} {
676
+ ${Text} {
730
677
  ${(props) => props.isSubmitting && !props.hasSubmittingMessage && import_styled_components4.css`
731
678
  transform: unset;
732
679
  opacity: 0;
@@ -751,7 +698,7 @@ function Button2({
751
698
  isSubmitting = false,
752
699
  submittingMessage = "",
753
700
  disabled = false,
754
- color = "var(--black)",
701
+ color = "#2F2F2F",
755
702
  ...rest
756
703
  }) {
757
704
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
@@ -767,7 +714,7 @@ function Button2({
767
714
  children: [
768
715
  icon && !isSubmitting && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Icon, { "data-testid": "button-icon", children: icon }),
769
716
  isSubmitting && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(LoadingIcon, { hasText: submittingMessage.length > 0 }),
770
- (!isSubmitting || submittingMessage.length === 0) && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text2, { className: "text", children }),
717
+ (!isSubmitting || submittingMessage.length === 0) && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Text, { className: "text", children }),
771
718
  isSubmitting && submittingMessage.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(TextSubmitting, { children: submittingMessage })
772
719
  ]
773
720
  }
@@ -789,35 +736,35 @@ var fadeOut = import_styled_components5.keyframes`
789
736
  `;
790
737
  var typeStyles = {
791
738
  error: import_styled_components5.css`
792
- background-color: var(--red);
793
- border: 1px solid var(--red);
794
- color: var(--white);
739
+ background-color: ${theme.colors.red};
740
+ border: 1px solid ${theme.colors.red};
741
+ color: ${theme.colors.white};
795
742
  svg {
796
- color: var(--white);
743
+ color: ${theme.colors.white};
797
744
  }
798
745
  `,
799
746
  warning: import_styled_components5.css`
800
- background-color: var(--yellow-500);
801
- border: 1px solid var(--yellow-400);
802
- color: var(--black);
747
+ background-color: ${theme.colors.yellow500};
748
+ border: 1px solid ${theme.colors.yellow400};
749
+ color: ${theme.colors.black};
803
750
  svg {
804
- color: var(--black);
751
+ color: ${theme.colors.black};
805
752
  }
806
753
  `,
807
754
  info: import_styled_components5.css`
808
- background-color: var(--blue);
809
- border: 1px solid var(--blue);
810
- color: var(--white);
755
+ background-color: ${theme.colors.blue};
756
+ border: 1px solid ${theme.colors.blue};
757
+ color: ${theme.colors.white};
811
758
  svg {
812
- color: var(--white);
759
+ color: ${theme.colors.white};
813
760
  }
814
761
  `,
815
762
  success: import_styled_components5.css`
816
- background-color: var(--green);
817
- border: 1px solid var(--green-2);
818
- color: var(--white);
763
+ background-color: ${theme.colors.green};
764
+ border: 1px solid ${theme.colors.green2};
765
+ color: ${theme.colors.white};
819
766
  svg {
820
- color: var(--white);
767
+ color: ${theme.colors.white};
821
768
  }
822
769
  `
823
770
  };
@@ -834,7 +781,7 @@ var AlertContainer = import_styled_components5.default.div`
834
781
  animation-fill-mode: forwards;
835
782
  align-items: center;
836
783
  gap: 0.5rem;
837
- box-shadow: var(--shadow-500);
784
+ box-shadow: ${theme.shadows.shadow500};
838
785
  border-radius: 0.5rem;
839
786
  font-size: 1rem;
840
787
  font-weight: 500;
@@ -914,11 +861,11 @@ var import_styled_components6 = __toESM(require("styled-components"), 1);
914
861
  var import_react_international_phone = require("react-international-phone");
915
862
  var import_style = require("react-international-phone/style.css");
916
863
  var FormLabel2 = import_styled_components6.default.label`
917
- font-family: "Montserrat", sans-serif;
864
+ font-family: ${theme.fonts.primary};
918
865
  font-style: normal;
919
866
  font-weight: 500;
920
867
  font-size: 1rem;
921
- color: ${(props) => props.$textColor || "var(--black)"};
868
+ color: ${(props) => props.$textColor || theme.colors.black};
922
869
  display: block;
923
870
  margin-bottom: 0.5rem;
924
871
  text-align: left;
@@ -926,18 +873,18 @@ var FormLabel2 = import_styled_components6.default.label`
926
873
  var StyledPhoneInput = (0, import_styled_components6.default)(import_react_international_phone.PhoneInput)`
927
874
  width: 100%;
928
875
  height: 3.125rem;
929
- background: ${(props) => props.$backgroundColor || "var(--white)"};
930
- font-family: "Montserrat", sans-serif;
931
- border: 1px solid ${(props) => props.$borderColor || "transparent"};
876
+ background: ${(props) => props.$backgroundColor || theme.colors.white};
877
+ font-family: ${theme.fonts.primary};
878
+ border: 1px solid ${(props) => props.$borderColor || theme.colors.transparent};
932
879
  border-radius: 0.125rem;
933
880
 
934
881
  &:focus-within {
935
882
  border-radius: 0.125rem;
936
- border: 2px solid ${(props) => props.$focusBorderColor || "var(--yellow-500)"};
883
+ border: 2px solid ${(props) => props.$focusBorderColor || theme.colors.yellow500};
937
884
  outline: none;
938
885
 
939
886
  .react-international-phone-country-selector-button {
940
- border-right: 1px solid ${(props) => props.$focusBorderColor || "var(--yellow-500)"};
887
+ border-right: 1px solid ${(props) => props.$focusBorderColor || theme.colors.yellow500};
941
888
  }
942
889
  }
943
890
 
@@ -948,27 +895,27 @@ var StyledPhoneInput = (0, import_styled_components6.default)(import_react_inter
948
895
  display: flex;
949
896
  align-items: center;
950
897
  overflow: hidden;
951
- font-family: "Montserrat", sans-serif;
898
+ font-family: ${theme.fonts.primary};
952
899
  font-size: 1rem;
953
900
  font-weight: 500;
954
- color: ${(props) => props.$textColor || "var(--black)"};
955
- background: ${(props) => props.$backgroundColor || "var(--white)"};
901
+ color: ${(props) => props.$textColor || theme.colors.black};
902
+ background: ${(props) => props.$backgroundColor || theme.colors.white};
956
903
  }
957
904
 
958
905
  /* Style for the country selector button */
959
906
  .react-international-phone-country-selector-button {
960
907
  height: 100%;
961
- background: ${(props) => props.$backgroundColor || "var(--white)"};
908
+ background: ${(props) => props.$backgroundColor || theme.colors.white};
962
909
  display: flex;
963
910
  align-items: center;
964
911
  justify-content: center;
965
- font-family: "Montserrat", sans-serif;
912
+ font-family: ${theme.fonts.primary};
966
913
  font-size: 1rem;
967
914
  font-weight: 500;
968
915
  cursor: pointer;
969
916
  outline: none;
970
917
  border: none;
971
- border-right: 1px solid ${(props) => props.$borderColor || "var(--transparent)"};
918
+ border-right: 1px solid ${(props) => props.$borderColor || theme.colors.transparent};
972
919
  }
973
920
 
974
921
  /* Style for the input itself */
@@ -977,13 +924,13 @@ var StyledPhoneInput = (0, import_styled_components6.default)(import_react_inter
977
924
  height: 100%;
978
925
  padding: 0 0.5rem;
979
926
  margin: 0;
980
- background: ${(props) => props.$backgroundColor || "var(--white)"};
981
- font-family: "Montserrat", sans-serif;
927
+ background: ${(props) => props.$backgroundColor || theme.colors.white};
928
+ font-family: ${theme.fonts.primary};
982
929
  font-style: normal;
983
930
  font-weight: 500;
984
931
  font-size: 1rem;
985
932
  line-height: 1.5rem;
986
- color: ${(props) => props.$textColor || "var(--black)"};
933
+ color: ${(props) => props.$textColor || theme.colors.black};
987
934
  outline: none;
988
935
  border: none;
989
936
  border-radius: 0.125rem;
@@ -991,18 +938,18 @@ var StyledPhoneInput = (0, import_styled_components6.default)(import_react_inter
991
938
  &::placeholder {
992
939
  font-size: 1rem;
993
940
  line-height: 1.5rem;
994
- color: ${(props) => props.$placeholderColor || "var(--gray-100)"};
941
+ color: ${(props) => props.$placeholderColor || theme.colors.gray100};
995
942
  font-weight: 800;
996
943
  }
997
944
 
998
945
  &:-webkit-autofill {
999
- background: ${(props) => props.$backgroundColor || "var(--white)"} !important;
1000
- -webkit-text-fill-color: ${(props) => props.$textColor || "var(--black)"} !important;
946
+ background: ${(props) => props.$backgroundColor || theme.colors.white} !important;
947
+ -webkit-text-fill-color: ${(props) => props.$textColor || theme.colors.black} !important;
1001
948
  transition: background-color 5000s ease-in-out 0s;
1002
949
  }
1003
950
 
1004
951
  &:-webkit-autofill::first-line {
1005
- font-family: "Montserrat", sans-serif;
952
+ font-family: ${theme.fonts.primary};
1006
953
  font-size: 1rem;
1007
954
  font-weight: 500;
1008
955
  }
@@ -1011,7 +958,7 @@ var StyledPhoneInput = (0, import_styled_components6.default)(import_react_inter
1011
958
  var FormErrorMessage2 = import_styled_components6.default.small`
1012
959
  font-size: 0.75rem;
1013
960
  line-height: 1.125rem;
1014
- color: var(--red);
961
+ color: ${theme.colors.red};
1015
962
  margin-top: 0.25rem;
1016
963
  display: block;
1017
964
  `;
@@ -1020,26 +967,26 @@ var FormControl2 = import_styled_components6.default.div.withConfig({
1020
967
  })`
1021
968
  ${FormLabel2} {
1022
969
  ${(props) => props.isInvalid && import_styled_components6.css`
1023
- color: var(--red);
970
+ color: ${theme.colors.red};
1024
971
  `};
1025
972
  }
1026
973
 
1027
974
  ${StyledPhoneInput} {
1028
975
  ${(props) => props.isInvalid && import_styled_components6.css`
1029
- border: 1px solid var(--red);
976
+ border: 1px solid ${theme.colors.red};
1030
977
 
1031
978
  &:not(:focus)::placeholder {
1032
- color: var(--red);
979
+ color: ${theme.colors.red};
1033
980
  font-weight: 600;
1034
981
  }
1035
982
  `};
1036
983
 
1037
984
  .react-international-phone-input-container {
1038
985
  ${(props) => props.isInvalid && import_styled_components6.css`
1039
- border: 1px solid var(--red);
986
+ border: 1px solid ${theme.colors.red};
1040
987
 
1041
988
  &:not(:focus)::placeholder {
1042
- color: var(--red);
989
+ color: ${theme.colors.red};
1043
990
  font-weight: 600;
1044
991
  }
1045
992
  `};
@@ -1047,7 +994,7 @@ var FormControl2 = import_styled_components6.default.div.withConfig({
1047
994
 
1048
995
  .react-international-phone-country-selector-button {
1049
996
  ${(props) => props.isInvalid && import_styled_components6.css`
1050
- border-right: 1px solid var(--red);
997
+ border-right: 1px solid ${theme.colors.red};
1051
998
  `};
1052
999
  }
1053
1000
  }
@@ -1116,26 +1063,26 @@ var import_react6 = require("react");
1116
1063
  // src/components/ProductSelect/styles.ts
1117
1064
  var import_styled_components7 = __toESM(require("styled-components"), 1);
1118
1065
  var FormLabel3 = import_styled_components7.default.label`
1119
- font-family: "Montserrat", sans-serif;
1066
+ font-family: ${theme.fonts.primary};
1120
1067
  font-style: normal;
1121
1068
  font-weight: 500;
1122
1069
  font-size: 1rem;
1123
- color: ${(props) => props.$textColor || "var(--black)"};
1070
+ color: ${(props) => props.$textColor || theme.colors.black};
1124
1071
  display: block;
1125
1072
  margin-bottom: 0.5rem;
1126
1073
  text-align: left;
1127
1074
  `;
1128
1075
  var Select = import_styled_components7.default.select`
1129
- font-family: "Montserrat", sans-serif;
1076
+ font-family: ${theme.fonts.primary};
1130
1077
  font-style: normal;
1131
1078
  font-weight: 500;
1132
1079
  font-size: 1rem;
1133
1080
  line-height: 1.5rem;
1134
- background: ${(props) => props.$backgroundColor || "var(--white)"};
1135
- color: ${(props) => props.$textColor || "var(--black)"};
1081
+ background: ${(props) => props.$backgroundColor || theme.colors.white};
1082
+ color: ${(props) => props.$textColor || theme.colors.black};
1136
1083
  padding: 0.5rem 3rem 0.5rem 0.5rem; /* Aumentado padding-right para 3rem */
1137
1084
  border-radius: 0.125rem;
1138
- border: 1px solid ${(props) => props.$borderColor || "transparent"};
1085
+ border: 1px solid ${(props) => props.$borderColor || theme.colors.transparent};
1139
1086
  display: block;
1140
1087
  height: 3.125rem;
1141
1088
  width: 100%;
@@ -1154,26 +1101,26 @@ var Select = import_styled_components7.default.select`
1154
1101
 
1155
1102
  &:focus {
1156
1103
  border-radius: 0.125rem;
1157
- border: 2px solid ${(props) => props.$focusBorderColor || "var(--yellow-500)"};
1104
+ border: 2px solid ${(props) => props.$focusBorderColor || theme.colors.yellow500};
1158
1105
  outline: none;
1159
1106
  }
1160
1107
 
1161
1108
  /* Estilo para option disabled (placeholder) */
1162
1109
  option:disabled {
1163
- color: var(--gray-100);
1110
+ color: ${theme.colors.gray100};
1164
1111
  font-weight: 800;
1165
1112
  }
1166
1113
 
1167
1114
  /* Estilo para options normais */
1168
1115
  option:not(:disabled) {
1169
- color: ${(props) => props.$textColor || "var(--black)"};
1116
+ color: ${(props) => props.$textColor || theme.colors.black};
1170
1117
  font-weight: 500;
1171
1118
  }
1172
1119
  `;
1173
1120
  var FormErrorMessage3 = import_styled_components7.default.small`
1174
1121
  font-size: 0.75rem;
1175
1122
  line-height: 1.125rem;
1176
- color: var(--red);
1123
+ color: ${theme.colors.red};
1177
1124
  margin-top: 0.25rem;
1178
1125
  display: block;
1179
1126
  `;
@@ -1182,18 +1129,18 @@ var FormControl3 = import_styled_components7.default.div.withConfig({
1182
1129
  })`
1183
1130
  ${FormLabel3} {
1184
1131
  ${(props) => props.isInvalid && import_styled_components7.css`
1185
- color: var(--red);
1132
+ color: ${theme.colors.red};
1186
1133
  `};
1187
1134
  }
1188
1135
 
1189
1136
  ${Select} {
1190
1137
  ${(props) => props.isInvalid && import_styled_components7.css`
1191
- border: 1px solid var(--red);
1138
+ border: 1px solid ${theme.colors.red};
1192
1139
  `};
1193
1140
 
1194
1141
  &:focus {
1195
1142
  ${(props) => props.isInvalid && import_styled_components7.css`
1196
- border: 1px solid var(--red);
1143
+ border: 1px solid ${theme.colors.red};
1197
1144
  `};
1198
1145
  }
1199
1146
  }
@@ -1276,17 +1223,22 @@ var MitreFormComponent = import_react7.default.forwardRef(({
1276
1223
  apiUrl,
1277
1224
  apiToken,
1278
1225
  showHeader = true,
1279
- backgroundColor = "var(--gray-180)",
1280
- textColor = "var(--black)",
1281
- buttonBackgroundColor = "#F6C76B",
1282
- buttonTextColor = "var(--black)",
1226
+ title = "Atendimento por mensagem",
1227
+ subtitle = "Informe seus dados e retornaremos a mensagem.",
1228
+ backgroundColor = theme.colors.gray180,
1229
+ textColor = theme.colors.black,
1230
+ buttonBackgroundColor = theme.colors.yellow500,
1231
+ buttonTextColor = theme.colors.black,
1283
1232
  innerPadding = "1rem",
1284
- inputBackgroundColor = "var(--white)",
1285
- inputBorderColor = "var(--transparent)",
1286
- inputFocusBorderColor = "var(--yellow-500)",
1287
- inputPlaceholderColor = "var(--gray-100)",
1288
- inputTextColor = "var(--black)"
1233
+ inputBackgroundColor = theme.colors.white,
1234
+ inputBorderColor = theme.colors.transparent,
1235
+ inputFocusBorderColor = theme.colors.yellow500,
1236
+ inputPlaceholderColor = theme.colors.gray100,
1237
+ inputTextColor = theme.colors.black,
1238
+ onSuccess,
1239
+ onError
1289
1240
  }, ref) => {
1241
+ useMontserratFont();
1290
1242
  const [loading, setIsLoading] = (0, import_react7.useState)(false);
1291
1243
  const { error, handleError, clearError } = useError();
1292
1244
  const [successMessage, setSuccessMessage] = (0, import_react7.useState)("");
@@ -1384,7 +1336,6 @@ var MitreFormComponent = import_react7.default.forwardRef(({
1384
1336
  utm_medium: utm.utm_medium,
1385
1337
  utm_term: utm.utm_term
1386
1338
  };
1387
- console.log("requestBody = " + JSON.stringify(requestBody));
1388
1339
  const response = await fetch(`${apiUrl}/leads`, {
1389
1340
  method: "POST",
1390
1341
  headers: {
@@ -1394,31 +1345,29 @@ var MitreFormComponent = import_react7.default.forwardRef(({
1394
1345
  body: JSON.stringify(requestBody)
1395
1346
  });
1396
1347
  if (!response.ok) {
1397
- console.log("response = " + JSON.stringify(response));
1398
1348
  throw new Error("Falha ao enviar a mensagem!");
1399
1349
  }
1350
+ const responseData = await response.json();
1351
+ const leadId = responseData.leadId || responseData.id || "";
1400
1352
  setSuccessMessage("Mensagem enviada com sucesso!");
1401
1353
  resetForm();
1354
+ onSuccess?.(requestBody, leadId);
1402
1355
  } catch (err) {
1356
+ const error2 = err instanceof Error ? err : new Error("Erro desconhecido");
1403
1357
  handleError(err);
1358
+ onError?.(error2);
1404
1359
  } finally {
1405
1360
  setIsLoading(false);
1406
1361
  }
1407
1362
  };
1408
1363
  if (productsValidationError) {
1409
1364
  console.error("Erro na valida\xE7\xE3o dos produtos:", productsValidationError);
1410
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
1411
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(global_default, {}),
1412
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GlobalStyles, {}),
1413
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FormContainer, { $backgroundColor: backgroundColor, $innerPadding: innerPadding, ref, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(HeaderContainer, { children: [
1414
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Title, { $textColor: textColor, children: "Erro no carregamento do formul\xE1rio!" }),
1415
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Text, { $textColor: textColor, children: "N\xE3o foi poss\xEDvel carregar o formul\xE1rio. Tente novamente mais tarde." })
1416
- ] }) })
1417
- ] });
1365
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ComponentWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FormContainer, { $backgroundColor: backgroundColor, $innerPadding: innerPadding, ref, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(HeaderContainer, { children: [
1366
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Title, { $textColor: textColor, children: "Erro no carregamento do formul\xE1rio!" }),
1367
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Subtitle, { $textColor: textColor, children: "N\xE3o foi poss\xEDvel carregar o formul\xE1rio. Tente novamente mais tarde." })
1368
+ ] }) }) });
1418
1369
  }
1419
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
1420
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(global_default, {}),
1421
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GlobalStyles, {}),
1370
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(ComponentWrapper, { children: [
1422
1371
  error && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1423
1372
  Alert,
1424
1373
  {
@@ -1441,8 +1390,8 @@ var MitreFormComponent = import_react7.default.forwardRef(({
1441
1390
  ),
1442
1391
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(FormContainer, { $backgroundColor: backgroundColor, $innerPadding: innerPadding, ref, children: [
1443
1392
  showHeader && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(HeaderContainer, { children: [
1444
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Title, { $textColor: textColor, children: "Atendimento por mensagem" }),
1445
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Text, { $textColor: textColor, children: "Informe seus dados e retornaremos a mensagem." })
1393
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Title, { $textColor: textColor, children: title }),
1394
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Subtitle, { $textColor: textColor, children: subtitle })
1446
1395
  ] }),
1447
1396
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Form, { $textColor: textColor, onSubmit: handleSubmit(sendMessage), noValidate: true, children: [
1448
1397
  products.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(