@granto-umbrella/umbrella-components 3.0.34 → 3.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +165 -27
  2. package/dist/umbrella-components.css +1 -1
  3. package/dist/umbrella-components.es.js +33627 -28792
  4. package/dist/umbrella-components.umd.js +1169 -1908
  5. package/package.json +136 -106
  6. package/src/assets.d.ts +19 -19
  7. package/src/components/atoms/Badge/Badge.styles.ts +88 -86
  8. package/src/components/atoms/Badge/Badge.tsx +42 -44
  9. package/src/components/atoms/Badge/Badge.types.ts +15 -15
  10. package/src/components/atoms/Breadcrumb/Breadcrumb.styles.ts +43 -43
  11. package/src/components/atoms/Breadcrumb/Breadcrumb.tsx +46 -48
  12. package/src/components/atoms/Breadcrumb/Breadcrumb.types.ts +12 -12
  13. package/src/components/atoms/Button/Button.styles.ts +279 -280
  14. package/src/components/atoms/Button/Button.tsx +76 -76
  15. package/src/components/atoms/Button/Button.types.ts +28 -28
  16. package/src/components/atoms/Button/index.ts +1 -1
  17. package/src/components/atoms/Checkbox/Checkbox.styles.ts +72 -72
  18. package/src/components/atoms/Checkbox/Checkbox.tsx +36 -36
  19. package/src/components/atoms/Checkbox/Checkbox.types.ts +14 -14
  20. package/src/components/atoms/Checkbox/CheckboxGroup.tsx +30 -30
  21. package/src/components/atoms/Checkbox/CheckboxSelectAll.tsx +32 -32
  22. package/src/components/atoms/CodeInput/CodeInput.styles.tsx +38 -39
  23. package/src/components/atoms/CodeInput/CodeInput.tsx +13 -19
  24. package/src/components/atoms/CodeInput/CodeInput.types.ts +3 -3
  25. package/src/components/atoms/CodeInput/index.tsx +1 -1
  26. package/src/components/atoms/DropDownMenu/DropdownMenu.tsx +48 -48
  27. package/src/components/atoms/DropDownMenu/DropdownMenu.types.ts +15 -15
  28. package/src/components/atoms/DropDownMenu/index.tsx +5 -2
  29. package/src/components/atoms/ErrorMessage/ErrorMessage.styles.tsx +28 -28
  30. package/src/components/atoms/ErrorMessage/ErrorMessage.tsx +12 -12
  31. package/src/components/atoms/ErrorMessage/ErrorMessage.types.ts +6 -6
  32. package/src/components/atoms/ErrorMessage/index.tsx +1 -1
  33. package/src/components/atoms/Footer/Footer.styles.tsx +22 -22
  34. package/src/components/atoms/Footer/Footer.tsx +9 -9
  35. package/src/components/atoms/Footer/Footer.types.tsx +5 -5
  36. package/src/components/atoms/Footer/index.tsx +1 -1
  37. package/src/components/atoms/GenericContainer/GenericContainer.styles.tsx +21 -21
  38. package/src/components/atoms/GenericContainer/GenericContainer.tsx +9 -9
  39. package/src/components/atoms/GenericContainer/GenericContainer.types.ts +5 -5
  40. package/src/components/atoms/GenericContainer/index.tsx +1 -1
  41. package/src/components/atoms/Icon/Icon.styles.ts +11 -11
  42. package/src/components/atoms/Icon/Icon.tsx +22 -22
  43. package/src/components/atoms/Icon/Icon.types.ts +6 -6
  44. package/src/components/atoms/Icon/index.ts +1 -1
  45. package/src/components/atoms/Input/Input.styles.ts +106 -101
  46. package/src/components/atoms/Input/index.ts +1 -1
  47. package/src/components/atoms/Label/Label.tsx +16 -16
  48. package/src/components/atoms/Loading/Loading.styles.tsx +25 -25
  49. package/src/components/atoms/Loading/Loading.tsx +8 -8
  50. package/src/components/atoms/LogoContainer/LogoContainer.Types.tsx +5 -5
  51. package/src/components/atoms/LogoContainer/LogoContainer.styles.tsx +11 -11
  52. package/src/components/atoms/LogoContainer/LogoContainer.tsx +11 -11
  53. package/src/components/atoms/LogoContainer/index.tsx +1 -1
  54. package/src/components/atoms/ModalAviso/ModalAviso.styles.tsx +56 -56
  55. package/src/components/atoms/ModalAviso/ModalAviso.tsx +43 -37
  56. package/src/components/atoms/ModalAviso/ModalAviso.types.ts +5 -5
  57. package/src/components/atoms/ModalAviso/index.tsx +1 -1
  58. package/src/components/atoms/MultiSelect/MultiSelect.styles.tsx +100 -92
  59. package/src/components/atoms/MultiSelect/MultiSelect.tsx +346 -346
  60. package/src/components/atoms/MultiSelect/MultiSelect.types.ts +38 -38
  61. package/src/components/atoms/Pill/Pill.styles.ts +46 -46
  62. package/src/components/atoms/Pill/Pill.tsx +35 -36
  63. package/src/components/atoms/Pill/Pill.types.ts +14 -18
  64. package/src/components/atoms/RadioButton/RadioButton.styles.ts +44 -43
  65. package/src/components/atoms/RadioButton/RadioButton.tsx +31 -31
  66. package/src/components/atoms/ResendLink/ResendLink.styles.tsx +19 -20
  67. package/src/components/atoms/ResendLink/ResendLink.tsx +21 -21
  68. package/src/components/atoms/ResendLink/ResendLink.types.ts +8 -9
  69. package/src/components/atoms/ResendLink/index.tsx +1 -2
  70. package/src/components/atoms/Select/Select.styles.ts +153 -149
  71. package/src/components/atoms/Select/Select.tsx +52 -43
  72. package/src/components/atoms/Select/index.tsx +1 -1
  73. package/src/components/atoms/Subtitle/Subtitle.tsx +7 -7
  74. package/src/components/atoms/Subtitle/Subtitle.types.ts +5 -5
  75. package/src/components/atoms/Subtitle/index.tsx +1 -1
  76. package/src/components/atoms/Switch/Switch.tsx +25 -25
  77. package/src/components/atoms/TabBar/TabBar.styles.tsx +64 -57
  78. package/src/components/atoms/TabBar/index.tsx +2 -2
  79. package/src/components/atoms/Text/Text.styles.tsx +35 -35
  80. package/src/components/atoms/Text/Text.tsx +32 -31
  81. package/src/components/atoms/Text/Text.types.ts +8 -8
  82. package/src/components/atoms/Text/index.ts +1 -1
  83. package/src/components/atoms/Textarea/Textarea.styles.ts +52 -52
  84. package/src/components/atoms/Textarea/Textarea.tsx +31 -31
  85. package/src/components/atoms/Title/Title.tsx +7 -7
  86. package/src/components/atoms/Title/Title.types.ts +5 -5
  87. package/src/components/atoms/Title/index.tsx +1 -1
  88. package/src/components/molecules/BannerAjuda/BannerAjuda.styles.tsx +9 -9
  89. package/src/components/molecules/BannerAjuda/BannerAjuda.tsx +18 -19
  90. package/src/components/molecules/BannerAjuda/index.tsx +1 -1
  91. package/src/components/molecules/ButtonGroup/ButtonGroup.styles.ts +10 -10
  92. package/src/components/molecules/ButtonGroup/ButtonGroup.types.ts +22 -22
  93. package/src/components/molecules/Calendar/Calendar.styles.ts +143 -143
  94. package/src/components/molecules/Calendar/Calendar.tsx +31 -31
  95. package/src/components/molecules/CodeInputContainer/CodeInputContainer.styles.tsx +7 -7
  96. package/src/components/molecules/CodeInputContainer/CodeInputContainer.types.ts +13 -13
  97. package/src/components/molecules/CodeInputContainer/index.tsx +1 -3
  98. package/src/components/molecules/ExcludeModal/ExcludeModal.styles.tsx +123 -118
  99. package/src/components/molecules/ExcludeModal/ExcludeModal.tsx +48 -48
  100. package/src/components/molecules/ExcludeModal/ExcludeModal.types.ts +10 -10
  101. package/src/components/molecules/ExcludeModal/index.tsx +1 -1
  102. package/src/components/molecules/FieldSelector/FieldSelector.styles.ts +59 -0
  103. package/src/components/molecules/FieldSelector/FieldSelector.tsx +167 -0
  104. package/src/components/molecules/HighlightsCard/HighlightsCard.styles.tsx +67 -68
  105. package/src/components/molecules/HighlightsCard/HighlightsCard.tsx +35 -26
  106. package/src/components/molecules/HighlightsCard/HighlightsCard.types.ts +10 -10
  107. package/src/components/molecules/HighlightsCard/index.tsx +1 -1
  108. package/src/components/molecules/InsuranceCard/InsuranceCard.styles.tsx +237 -237
  109. package/src/components/molecules/InsuranceCard/index.tsx +1 -1
  110. package/src/components/molecules/PieChartComponent/PieChartComponent.styles.tsx +7 -8
  111. package/src/components/molecules/PieChartComponent/PieChartComponent.tsx +70 -73
  112. package/src/components/molecules/PieChartComponent/PieChartComponent.types.ts +11 -11
  113. package/src/components/molecules/PieChartComponent/index.tsx +1 -1
  114. package/src/components/molecules/Popover/Popover.styles.ts +66 -65
  115. package/src/components/molecules/Popover/Popover.tsx +23 -23
  116. package/src/components/molecules/RadioBoxGroup/RadioBoxGroup.styles.ts +11 -11
  117. package/src/components/molecules/RadioBoxGroup/RadioBoxGroup.tsx +43 -43
  118. package/src/components/molecules/RadioGroupField/RadioGroupField.styles.tsx +65 -64
  119. package/src/components/molecules/RadioGroupField/RadioGroupField.tsx +69 -69
  120. package/src/components/molecules/RadioGroupField/RadioGroupField.types.ts +17 -17
  121. package/src/components/molecules/RadioGroupField/index.tsx +1 -1
  122. package/src/components/molecules/RefuseModal/RefuseModal.styles.tsx +139 -139
  123. package/src/components/molecules/RefuseModal/RefuseModal.tsx +92 -76
  124. package/src/components/molecules/RefuseModal/RefuseModal.types.ts +15 -15
  125. package/src/components/molecules/RefuseModal/index.tsx +2 -2
  126. package/src/components/molecules/ResultsChart/ResultsChart.tsx +23 -19
  127. package/src/components/molecules/ResultsChart/ResultsChart.types.ts +3 -3
  128. package/src/components/molecules/ResultsChart/index.tsx +2 -2
  129. package/src/components/molecules/TabToggle/TabToggle.styles.ts +54 -54
  130. package/src/components/molecules/TabToggle/TabToggle.tsx +35 -35
  131. package/src/components/organisms/AlertDialog/AlertDialog.styles.tsx +61 -61
  132. package/src/components/organisms/AlertDialog/AlertDialog.tsx +70 -70
  133. package/src/components/organisms/Dialog/Dialog.styles.ts +107 -106
  134. package/src/components/organisms/Dialog/Dialog.tsx +69 -69
  135. package/src/components/organisms/DonutEmissionsChart/DonutEmissionsChart.styles.tsx +113 -113
  136. package/src/components/organisms/DonutEmissionsChart/DonutEmissionsChart.tsx +75 -71
  137. package/src/components/organisms/DonutEmissionsChart/DonutEmissionsChart.types.ts +9 -9
  138. package/src/components/organisms/DonutEmissionsChart/index.tsx +5 -2
  139. package/src/components/organisms/ExportExcelModal/ExportExcelModal.styles.ts +59 -0
  140. package/src/components/organisms/ExportExcelModal/ExportExcelModal.tsx +80 -0
  141. package/src/components/organisms/Form/Form.styles.ts +35 -35
  142. package/src/components/organisms/Form/Form.tsx +160 -160
  143. package/src/components/organisms/ListagemUltimasEmissoes/ListagemUltimasEmissoes.styles.tsx +115 -114
  144. package/src/components/organisms/ListagemUltimasEmissoes/ListagemUltimasEmissoes.tsx +89 -89
  145. package/src/components/organisms/ListagemUltimasEmissoes/ListagemUltimasEmissoes.types.ts +16 -16
  146. package/src/components/organisms/ListagemUltimasEmissoes/index.tsx +1 -1
  147. package/src/components/organisms/Navbar/Navbar.styles.tsx +243 -243
  148. package/src/global.d.ts +9 -9
  149. package/src/index.ts +4 -0
  150. package/src/lib/utils.ts +6 -6
  151. package/src/styles/tokens/borders.ts +17 -17
  152. package/src/styles/tokens/index.tsx +6 -6
  153. package/src/styles/tokens/radius.ts +22 -22
  154. package/src/styles/tokens/shadows.ts +22 -22
  155. package/src/styles/tokens/sizes.ts +60 -64
  156. package/src/types/radius.types.ts +1 -1
  157. package/src/types/shadows.types.ts +1 -1
  158. package/src/utils/renderHighlightsCard.tsx +21 -0
@@ -1,149 +1,153 @@
1
- import styled from 'styled-components';
2
- import Select from 'react-select';
3
- import {
4
- semanticSizes,
5
- semanticShadows,
6
- primitiveSizes,
7
- typographyTokens,
8
- semanticBorders,
9
- semanticColors,
10
- semanticRadius,
11
- } from '../../../styles/tokens/index';
12
-
13
- export const Container = styled.div`
14
- display: flex;
15
- flex-direction: column;
16
- gap: ${primitiveSizes.size.x1};
17
- width: 100%;
18
- `;
19
-
20
- export const Label = styled.label`
21
- display: flex;
22
- justify-content: space-between;
23
- align-items: center;
24
- font-size: ${typographyTokens.fontSizes.labelS};
25
- color: ${semanticColors.global.text.subtitle.enabled};
26
- font-weight: ${typographyTokens.fontWeights.medium};
27
- `;
28
-
29
- export const SupportingText = styled.span<{ $error?: boolean }>`
30
- font-size: ${typographyTokens.fontSizes.captionM};
31
- color: ${({ $error }) =>
32
- $error
33
- ? semanticColors.global.text.feedback.strong.error
34
- : semanticColors.global.text.subtitle.enabled};
35
- `;
36
-
37
- export const CustomSelect = styled(Select).attrs({
38
- classNamePrefix: 'react-select',
39
- })<{
40
- $size?: keyof typeof semanticSizes.global.padding;
41
- $error?: boolean;
42
- }>`
43
- .react-select__control {
44
- background: ${semanticColors.base.background};
45
- border: ${semanticBorders.global.sm} solid
46
- ${({ $error }) =>
47
- $error
48
- ? semanticColors.global.border.danger.enabled
49
- : semanticColors.global.border.medium};
50
- border-radius: ${semanticRadius.global.radius.md};
51
- transition: border-color 0.2s, box-shadow 0.2s;
52
- min-height: ${primitiveSizes.size.x12};
53
-
54
- &:hover {
55
- border-color: ${({ $error }) =>
56
- $error
57
- ? semanticColors.danger.border.hover
58
- : semanticColors.branding.border.hover};
59
- }
60
-
61
- &:focus-within {
62
- border-color: ${({ $error }) =>
63
- $error
64
- ? semanticColors.danger.border.enabled
65
- : semanticColors.branding.border.enabled};
66
- box-shadow: ${semanticShadows.shadow.md};
67
- }
68
-
69
- &.react-select__control--is-disabled {
70
- background: ${semanticColors.global.surface.disabled};
71
- border-color: ${semanticColors.global.border.strong};
72
- color: ${semanticColors.global.text.onSurface.enabled};
73
- cursor: not-allowed;
74
- }
75
- }
76
-
77
- .react-select__value-container {
78
- padding: ${({ $size = 'md' }) => semanticSizes.global.padding[$size]};
79
- font-size: ${typographyTokens.fontSizes.labelM};
80
- color: ${semanticColors.base.text};
81
- }
82
-
83
- .react-select__placeholder {
84
- color: ${semanticColors.global.text.onSurface.subtitle};
85
- font-size: ${typographyTokens.fontSizes.labelM};
86
- }
87
-
88
- .react-select__menu {
89
- background: ${semanticColors.base.background};
90
- border-radius: ${semanticRadius.global.radius.md};
91
- box-shadow: ${semanticShadows.shadow.lg};
92
- border: ${semanticBorders.global.sm} solid
93
- ${semanticColors.global.border.default};
94
- z-index: 1000;
95
- }
96
-
97
- .react-select__option {
98
- padding: ${({ $size = 'md' }) => semanticSizes.global.padding[$size]};
99
- font-size: ${typographyTokens.fontSizes.labelM};
100
- cursor: pointer;
101
- transition: background 0.2s, color 0.2s;
102
- color: ${semanticColors.base.text};
103
-
104
- &:hover {
105
- background: ${semanticColors.branding.surface.hover};
106
- color: ${semanticColors.branding.text.onSurfaceAccent.enabled};
107
- }
108
-
109
- &:active {
110
- background: ${semanticColors.branding.surface.pressed};
111
- color: ${semanticColors.branding.text.onSurfaceAccent.enabled};
112
- }
113
- }
114
-
115
- .react-select__option--is-selected {
116
- background: ${semanticColors.branding.surface.enabled};
117
- color: ${semanticColors.branding.text.onSurfaceAccent.enabled};
118
- font-weight: ${typographyTokens.fontWeights.semibold};
119
-
120
- &:hover {
121
- background: ${semanticColors.branding.surface.hover};
122
- }
123
- }
124
-
125
- .react-select__option--is-focused {
126
- background: ${semanticColors.neutral[100]};
127
- color: ${semanticColors.base.text};
128
- }
129
-
130
- .react-select__indicator-separator {
131
- background-color: ${semanticColors.global.border.medium};
132
- }
133
-
134
- .react-select__dropdown-indicator {
135
- color: ${semanticColors.global.text.onSurface.enabled};
136
-
137
- &:hover {
138
- color: ${semanticColors.branding.text.accent.enabled};
139
- }
140
- }
141
-
142
- .react-select__clear-indicator {
143
- color: ${semanticColors.global.text.onSurface.enabled};
144
-
145
- &:hover {
146
- color: ${semanticColors.danger.text.enabled};
147
- }
148
- }
149
- `;
1
+ import styled from 'styled-components';
2
+ import Select from 'react-select';
3
+ import {
4
+ semanticSizes,
5
+ semanticShadows,
6
+ primitiveSizes,
7
+ typographyTokens,
8
+ semanticBorders,
9
+ semanticColors,
10
+ semanticRadius,
11
+ } from '../../../styles/tokens/index';
12
+
13
+ export const Container = styled.div`
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: ${primitiveSizes.size.x1};
17
+ width: 100%;
18
+ `;
19
+
20
+ export const Label = styled.label`
21
+ display: flex;
22
+ justify-content: space-between;
23
+ align-items: center;
24
+ font-size: ${typographyTokens.fontSizes.labelS};
25
+ color: ${semanticColors.global.text.subtitle.enabled};
26
+ font-weight: ${typographyTokens.fontWeights.medium};
27
+ `;
28
+
29
+ export const SupportingText = styled.span<{ $error?: boolean }>`
30
+ font-size: ${typographyTokens.fontSizes.captionM};
31
+ color: ${({ $error }) =>
32
+ $error
33
+ ? semanticColors.global.text.feedback.strong.error
34
+ : semanticColors.global.text.subtitle.enabled};
35
+ `;
36
+
37
+ export const CustomSelect = styled(Select).attrs({
38
+ classNamePrefix: 'react-select',
39
+ })<{
40
+ $size?: keyof typeof semanticSizes.global.padding;
41
+ $error?: boolean;
42
+ }>`
43
+ .react-select__control {
44
+ background: ${semanticColors.base.background};
45
+ border: ${semanticBorders.global.sm} solid
46
+ ${({ $error }) =>
47
+ $error
48
+ ? semanticColors.global.border.danger.enabled
49
+ : semanticColors.global.border.medium};
50
+ border-radius: ${semanticRadius.global.radius.md};
51
+ transition:
52
+ border-color 0.2s,
53
+ box-shadow 0.2s;
54
+ min-height: ${primitiveSizes.size.x12};
55
+
56
+ &:hover {
57
+ border-color: ${({ $error }) =>
58
+ $error
59
+ ? semanticColors.danger.border.hover
60
+ : semanticColors.branding.border.hover};
61
+ }
62
+
63
+ &:focus-within {
64
+ border-color: ${({ $error }) =>
65
+ $error
66
+ ? semanticColors.danger.border.enabled
67
+ : semanticColors.branding.border.enabled};
68
+ box-shadow: ${semanticShadows.shadow.md};
69
+ }
70
+
71
+ &.react-select__control--is-disabled {
72
+ background: ${semanticColors.global.surface.disabled};
73
+ border-color: ${semanticColors.global.border.strong};
74
+ color: ${semanticColors.global.text.onSurface.enabled};
75
+ cursor: not-allowed;
76
+ }
77
+ }
78
+
79
+ .react-select__value-container {
80
+ padding: ${({ $size = 'md' }) => semanticSizes.global.padding[$size]};
81
+ font-size: ${typographyTokens.fontSizes.labelM};
82
+ color: ${semanticColors.base.text};
83
+ }
84
+
85
+ .react-select__placeholder {
86
+ color: ${semanticColors.global.text.onSurface.subtitle};
87
+ font-size: ${typographyTokens.fontSizes.labelM};
88
+ }
89
+
90
+ .react-select__menu {
91
+ background: ${semanticColors.base.background};
92
+ border-radius: ${semanticRadius.global.radius.md};
93
+ box-shadow: ${semanticShadows.shadow.lg};
94
+ border: ${semanticBorders.global.sm} solid
95
+ ${semanticColors.global.border.default};
96
+ z-index: 1000;
97
+ }
98
+
99
+ .react-select__option {
100
+ padding: ${({ $size = 'md' }) => semanticSizes.global.padding[$size]};
101
+ font-size: ${typographyTokens.fontSizes.labelM};
102
+ cursor: pointer;
103
+ transition:
104
+ background 0.2s,
105
+ color 0.2s;
106
+ color: ${semanticColors.base.text};
107
+
108
+ &:hover {
109
+ background: ${semanticColors.branding.surface.hover};
110
+ color: ${semanticColors.branding.text.onSurfaceAccent.enabled};
111
+ }
112
+
113
+ &:active {
114
+ background: ${semanticColors.branding.surface.pressed};
115
+ color: ${semanticColors.branding.text.onSurfaceAccent.enabled};
116
+ }
117
+ }
118
+
119
+ .react-select__option--is-selected {
120
+ background: ${semanticColors.branding.surface.enabled};
121
+ color: ${semanticColors.branding.text.onSurfaceAccent.enabled};
122
+ font-weight: ${typographyTokens.fontWeights.semibold};
123
+
124
+ &:hover {
125
+ background: ${semanticColors.branding.surface.hover};
126
+ }
127
+ }
128
+
129
+ .react-select__option--is-focused {
130
+ background: ${semanticColors.neutral[100]};
131
+ color: ${semanticColors.base.text};
132
+ }
133
+
134
+ .react-select__indicator-separator {
135
+ background-color: ${semanticColors.global.border.medium};
136
+ }
137
+
138
+ .react-select__dropdown-indicator {
139
+ color: ${semanticColors.global.text.onSurface.enabled};
140
+
141
+ &:hover {
142
+ color: ${semanticColors.branding.text.accent.enabled};
143
+ }
144
+ }
145
+
146
+ .react-select__clear-indicator {
147
+ color: ${semanticColors.global.text.onSurface.enabled};
148
+
149
+ &:hover {
150
+ color: ${semanticColors.danger.text.enabled};
151
+ }
152
+ }
153
+ `;
@@ -1,43 +1,52 @@
1
- "use client"
2
-
3
- import type React from "react"
4
- import { Container, Label, SupportingText, CustomSelect } from "./Select.styles"
5
- import type { SelectProps } from "./Select.types"
6
-
7
- interface Option {
8
- label: string
9
- value: string
10
- }
11
-
12
- const Select: React.FC<SelectProps> = ({
13
- label,
14
- supportingText,
15
- options,
16
- placeholder,
17
- onChange,
18
- value,
19
- testId,
20
- size = "md",
21
- disabled = false,
22
- error = false,
23
- }) => {
24
- return (
25
- <Container data-testid={testId} id={testId}>
26
- {label && <Label>{label}</Label>}
27
- <CustomSelect
28
- $size={size}
29
- $error={error}
30
- classNamePrefix="react-select"
31
- options={options}
32
- placeholder={placeholder || "Selecione"}
33
- onChange={(newValue, actionMeta) => onChange && onChange(newValue as Option | null, actionMeta)}
34
- value={value}
35
- isSearchable
36
- isDisabled={disabled}
37
- />
38
- {supportingText && <SupportingText $error={error}>{supportingText}</SupportingText>}
39
- </Container>
40
- )
41
- }
42
-
43
- export default Select
1
+ 'use client';
2
+
3
+ import type React from 'react';
4
+ import {
5
+ Container,
6
+ Label,
7
+ SupportingText,
8
+ CustomSelect,
9
+ } from './Select.styles';
10
+ import type { SelectProps } from './Select.types';
11
+
12
+ interface Option {
13
+ label: string;
14
+ value: string;
15
+ }
16
+
17
+ const Select: React.FC<SelectProps> = ({
18
+ label,
19
+ supportingText,
20
+ options,
21
+ placeholder,
22
+ onChange,
23
+ value,
24
+ testId,
25
+ size = 'md',
26
+ disabled = false,
27
+ error = false,
28
+ }) => {
29
+ return (
30
+ <Container data-testid={testId} id={testId}>
31
+ {label && <Label>{label}</Label>}
32
+ <CustomSelect
33
+ $size={size}
34
+ $error={error}
35
+ classNamePrefix="react-select"
36
+ options={options}
37
+ placeholder={placeholder || 'Selecione'}
38
+ onChange={(newValue, actionMeta) =>
39
+ onChange && onChange(newValue as Option | null, actionMeta)
40
+ }
41
+ value={value}
42
+ isSearchable
43
+ isDisabled={disabled}
44
+ />
45
+ {supportingText && (
46
+ <SupportingText $error={error}>{supportingText}</SupportingText>
47
+ )}
48
+ </Container>
49
+ );
50
+ };
51
+
52
+ export default Select;
@@ -1 +1 @@
1
- export { default } from "./Select";
1
+ export { default } from './Select';
@@ -1,7 +1,7 @@
1
- import React from "react";
2
- import { Container } from "./Subtitle.styles";
3
- import { SubtitleProps } from "./Subtitle.types";
4
-
5
- export const Subtitle: React.FC<SubtitleProps> = ({ children }) => {
6
- return <Container>{children}</Container>;
7
- };
1
+ import React from 'react';
2
+ import { Container } from './Subtitle.styles';
3
+ import { SubtitleProps } from './Subtitle.types';
4
+
5
+ export const Subtitle: React.FC<SubtitleProps> = ({ children }) => {
6
+ return <Container>{children}</Container>;
7
+ };
@@ -1,5 +1,5 @@
1
- import React from "react";
2
-
3
- export interface SubtitleProps {
4
- children: React.ReactNode;
5
- }
1
+ import React from 'react';
2
+
3
+ export interface SubtitleProps {
4
+ children: React.ReactNode;
5
+ }
@@ -1 +1 @@
1
- export { Subtitle } from "./Subtitle";
1
+ export { Subtitle } from './Subtitle';
@@ -1,25 +1,25 @@
1
- import React from "react";
2
- import { SwitchWrapper, SwitchInput, SwitchLabel } from "./Switch.styles";
3
-
4
- interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement> {
5
- label?: string;
6
- testId?: string;
7
- text?: string;
8
- }
9
-
10
- export const Switch: React.FC<SwitchProps> = ({
11
- label,
12
- text,
13
- testId,
14
- ...props
15
- }) => {
16
- return (
17
- <SwitchWrapper>
18
- {label && <SwitchLabel>{label}</SwitchLabel>}
19
- <SwitchInput data-testid={testId} id={testId} {...props} />
20
- {text && <SwitchLabel>{text}</SwitchLabel>}
21
- </SwitchWrapper>
22
- );
23
- };
24
-
25
- export default Switch;
1
+ import React from 'react';
2
+ import { SwitchWrapper, SwitchInput, SwitchLabel } from './Switch.styles';
3
+
4
+ interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement> {
5
+ label?: string;
6
+ testId?: string;
7
+ text?: string;
8
+ }
9
+
10
+ export const Switch: React.FC<SwitchProps> = ({
11
+ label,
12
+ text,
13
+ testId,
14
+ ...props
15
+ }) => {
16
+ return (
17
+ <SwitchWrapper>
18
+ {label && <SwitchLabel>{label}</SwitchLabel>}
19
+ <SwitchInput data-testid={testId} id={testId} {...props} />
20
+ {text && <SwitchLabel>{text}</SwitchLabel>}
21
+ </SwitchWrapper>
22
+ );
23
+ };
24
+
25
+ export default Switch;
@@ -1,57 +1,64 @@
1
- import styled, { css } from "styled-components"
2
- import { semanticColors, semanticSizes, semanticBorders, typographyTokens } from "../../../styles/tokens"
3
-
4
- export const Wrapper = styled.nav`
5
- display: flex;
6
- width: 100%;
7
- align-items: center;
8
- border-bottom: ${semanticBorders.global.lg} solid ${semanticColors.global.border.medium};
9
- `
10
-
11
- export const Tab = styled.button<{ $active: boolean }>`
12
- display: flex;
13
- height: ${semanticSizes.global.spacings.lg};
14
- padding: ${semanticSizes.global.padding.lg} ${semanticSizes.global.padding["3xl"]};
15
- justify-content: center;
16
- align-items: center;
17
- gap: ${semanticSizes.global.gap.sm};
18
- background: none;
19
- border: none;
20
- cursor: pointer;
21
- font-family: ${typographyTokens.fontFamily.base};
22
- font-size: ${typographyTokens.fontSizes.bodyM};
23
- font-weight: ${typographyTokens.fontWeights.regular};
24
- line-height: ${typographyTokens.lineHeights.bodyM};
25
- color: ${semanticColors.global.text.onSurface.subtitle};
26
- margin-bottom: calc(-1 * ${semanticBorders.global.lg});
27
- border-bottom: ${semanticBorders.global.lg} solid transparent;
28
-
29
- & + & {
30
- margin-left: ${semanticSizes.global.padding.lg};
31
- }
32
-
33
- ${(p) =>
34
- p.$active &&
35
- css`
36
- border-bottom-color: ${semanticColors.branding.border.enabled};
37
- color: ${semanticColors.branding.text.accent.enabled};
38
- `}
39
-
40
- &:hover:not(:disabled) {
41
- color: ${semanticColors.branding.text.accent.hover};
42
- ${(p) =>
43
- p.$active &&
44
- css`
45
- border-bottom-color: ${semanticColors.branding.border.hover};
46
- `}
47
- }
48
-
49
- &:focus {
50
- outline: none;
51
- }
52
- `
53
-
54
- export const Count = styled.span`
55
- font-weight: ${typographyTokens.fontWeights.medium};
56
- color: inherit;
57
- `
1
+ import styled, { css } from 'styled-components';
2
+ import {
3
+ semanticColors,
4
+ semanticSizes,
5
+ semanticBorders,
6
+ typographyTokens,
7
+ } from '../../../styles/tokens';
8
+
9
+ export const Wrapper = styled.nav`
10
+ display: flex;
11
+ width: 100%;
12
+ align-items: center;
13
+ border-bottom: ${semanticBorders.global.lg} solid
14
+ ${semanticColors.global.border.medium};
15
+ `;
16
+
17
+ export const Tab = styled.button<{ $active: boolean }>`
18
+ display: flex;
19
+ height: ${semanticSizes.global.spacings.lg};
20
+ padding: ${semanticSizes.global.padding.lg}
21
+ ${semanticSizes.global.padding['3xl']};
22
+ justify-content: center;
23
+ align-items: center;
24
+ gap: ${semanticSizes.global.gap.sm};
25
+ background: none;
26
+ border: none;
27
+ cursor: pointer;
28
+ font-family: ${typographyTokens.fontFamily.base};
29
+ font-size: ${typographyTokens.fontSizes.bodyM};
30
+ font-weight: ${typographyTokens.fontWeights.regular};
31
+ line-height: ${typographyTokens.lineHeights.bodyM};
32
+ color: ${semanticColors.global.text.onSurface.subtitle};
33
+ margin-bottom: calc(-1 * ${semanticBorders.global.lg});
34
+ border-bottom: ${semanticBorders.global.lg} solid transparent;
35
+
36
+ & + & {
37
+ margin-left: ${semanticSizes.global.padding.lg};
38
+ }
39
+
40
+ ${(p) =>
41
+ p.$active &&
42
+ css`
43
+ border-bottom-color: ${semanticColors.branding.border.enabled};
44
+ color: ${semanticColors.branding.text.accent.enabled};
45
+ `}
46
+
47
+ &:hover:not(:disabled) {
48
+ color: ${semanticColors.branding.text.accent.hover};
49
+ ${(p) =>
50
+ p.$active &&
51
+ css`
52
+ border-bottom-color: ${semanticColors.branding.border.hover};
53
+ `}
54
+ }
55
+
56
+ &:focus {
57
+ outline: none;
58
+ }
59
+ `;
60
+
61
+ export const Count = styled.span`
62
+ font-weight: ${typographyTokens.fontWeights.medium};
63
+ color: inherit;
64
+ `;
@@ -1,2 +1,2 @@
1
- export { TabBar } from './TabBar';
2
- export type { TabBarProps, TabItem } from './TabBar.types';
1
+ export { TabBar } from './TabBar';
2
+ export type { TabBarProps, TabItem } from './TabBar.types';