@xqmsg/ui-core 0.23.1 → 0.23.2

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 (190) hide show
  1. package/CHANGELOG.md +468 -0
  2. package/LICENSE +20 -20
  3. package/README.md +40 -40
  4. package/dist/{89793640b494d7ea.svg → 78c9d6fd7766410f.svg} +9 -9
  5. package/dist/components/input/index.d.ts +2 -2
  6. package/dist/ui-core.cjs.development.js.map +1 -1
  7. package/dist/ui-core.cjs.production.min.js.map +1 -1
  8. package/dist/ui-core.esm.js.map +1 -1
  9. package/package.json +118 -118
  10. package/src/components/banner/Banner.stories.tsx +100 -100
  11. package/src/components/banner/index.tsx +73 -73
  12. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +66 -66
  13. package/src/components/breadcrumbs/components/icon/index.tsx +38 -38
  14. package/src/components/breadcrumbs/components/label/index.tsx +20 -20
  15. package/src/components/breadcrumbs/index.tsx +48 -48
  16. package/src/components/button/Button.stories.tsx +140 -140
  17. package/src/components/button/google/GoogleButton.stories.tsx +23 -23
  18. package/src/components/button/google/index.tsx +29 -29
  19. package/src/components/button/index.tsx +51 -51
  20. package/src/components/button/microsoft/MicrosoftButton.stories.tsx +25 -25
  21. package/src/components/button/microsoft/index.tsx +29 -29
  22. package/src/components/button/spinner/SpinnerButton.stories.tsx +60 -60
  23. package/src/components/button/spinner/index.tsx +36 -36
  24. package/src/components/card/Card.stories.tsx +56 -56
  25. package/src/components/card/index.tsx +78 -78
  26. package/src/components/form/Form.stories.tsx +62 -62
  27. package/src/components/form/FormTypes.ts +20 -20
  28. package/src/components/form/hooks/useFormHandler.tsx +74 -74
  29. package/src/components/form/index.tsx +25 -25
  30. package/src/components/form/section/FormSection.stories.tsx +109 -109
  31. package/src/components/form/section/index.tsx +87 -87
  32. package/src/components/form/utils/formErrors.ts +34 -34
  33. package/src/components/icons/checkmark/checkmark.svg +3 -3
  34. package/src/components/icons/checkmark/index.tsx +13 -13
  35. package/src/components/icons/chevron/down/chevron-down.svg +3 -3
  36. package/src/components/icons/chevron/down/index.tsx +14 -14
  37. package/src/components/icons/chevron/right/chevron-right.svg +3 -3
  38. package/src/components/icons/chevron/right/index.tsx +13 -13
  39. package/src/components/icons/clock/clock.svg +3 -3
  40. package/src/components/icons/clock/index.tsx +13 -13
  41. package/src/components/icons/close/close.svg +3 -3
  42. package/src/components/icons/close/index.tsx +21 -21
  43. package/src/components/icons/dropdown/dropdown.svg +3 -3
  44. package/src/components/icons/dropdown/index.tsx +16 -16
  45. package/src/components/icons/error/error.svg +3 -3
  46. package/src/components/icons/error/index.tsx +13 -13
  47. package/src/components/icons/file/fill/file-fill.svg +4 -4
  48. package/src/components/icons/file/fill/index.tsx +13 -13
  49. package/src/components/icons/file/outline/file-outline.svg +3 -3
  50. package/src/components/icons/file/outline/index.tsx +13 -13
  51. package/src/components/icons/folder/add/fill/folder-add-fill.svg +3 -3
  52. package/src/components/icons/folder/add/fill/index.tsx +13 -13
  53. package/src/components/icons/folder/add/outline/folder-add-outline.svg +3 -3
  54. package/src/components/icons/folder/add/outline/index.tsx +15 -15
  55. package/src/components/icons/folder/fill/folder-fill-gradient.svg +33 -33
  56. package/src/components/icons/folder/fill/folder-fill.svg +4 -4
  57. package/src/components/icons/folder/fill/index.tsx +21 -21
  58. package/src/components/icons/folder/outline/folder-outline.svg +3 -3
  59. package/src/components/icons/folder/outline/index.tsx +13 -13
  60. package/src/components/icons/gear/GearIcon.tsx +36 -36
  61. package/src/components/icons/google/drive/index.tsx +13 -13
  62. package/src/components/icons/google/google.svg +13 -13
  63. package/src/components/icons/google/index.tsx +13 -13
  64. package/src/components/icons/group/group.svg +3 -3
  65. package/src/components/icons/group/index.tsx +13 -13
  66. package/src/components/icons/home/home.svg +3 -3
  67. package/src/components/icons/home/index.tsx +13 -13
  68. package/src/components/icons/image/image.svg +3 -3
  69. package/src/components/icons/image/index.tsx +13 -13
  70. package/src/components/icons/index.tsx +101 -101
  71. package/src/components/icons/link/index.tsx +13 -13
  72. package/src/components/icons/link/link.svg +4 -4
  73. package/src/components/icons/menu/index.tsx +13 -13
  74. package/src/components/icons/menu/menu.svg +3 -3
  75. package/src/components/icons/microsoft/index.tsx +13 -13
  76. package/src/components/icons/microsoft/microsoft.svg +9 -9
  77. package/src/components/icons/microsoft/onedrive/index.tsx +16 -16
  78. package/src/components/icons/neutral/index.tsx +14 -14
  79. package/src/components/icons/neutral/neutral.svg +3 -3
  80. package/src/components/icons/page/index.tsx +13 -13
  81. package/src/components/icons/page/page.svg +3 -3
  82. package/src/components/icons/positive/index.tsx +13 -13
  83. package/src/components/icons/positive/positive.svg +3 -3
  84. package/src/components/icons/question/index.tsx +13 -13
  85. package/src/components/icons/question/question.svg +3 -3
  86. package/src/components/icons/search/index.tsx +13 -13
  87. package/src/components/icons/search/search.svg +3 -3
  88. package/src/components/icons/services/index.tsx +13 -13
  89. package/src/components/icons/services/services.svg +3 -3
  90. package/src/components/icons/settings/index.tsx +14 -14
  91. package/src/components/icons/settings/settings.svg +6 -6
  92. package/src/components/icons/table/fill/index.tsx +13 -13
  93. package/src/components/icons/table/fill/table-fill.svg +3 -3
  94. package/src/components/icons/table/outline/index.tsx +13 -13
  95. package/src/components/icons/table/outline/table-outline.svg +3 -3
  96. package/src/components/icons/task/index.tsx +10 -10
  97. package/src/components/icons/task/task.svg +11 -11
  98. package/src/components/icons/trash/index.tsx +13 -13
  99. package/src/components/icons/trash/trash.svg +3 -3
  100. package/src/components/icons/vault/index.tsx +14 -14
  101. package/src/components/icons/video/index.tsx +13 -13
  102. package/src/components/icons/video/video.svg +3 -3
  103. package/src/components/icons/warning/index.tsx +13 -13
  104. package/src/components/icons/warning/warning.svg +3 -3
  105. package/src/components/icons/workspace/index.tsx +14 -14
  106. package/src/components/input/Input.stories.tsx +287 -287
  107. package/src/components/input/InputTypes.ts +77 -77
  108. package/src/components/input/StackedCheckbox/StackedCheckbox.tsx +44 -44
  109. package/src/components/input/StackedInput/StackedInput.tsx +60 -60
  110. package/src/components/input/StackedMultiSelect/index.tsx +349 -349
  111. package/src/components/input/StackedPilledInput/index.tsx +386 -386
  112. package/src/components/input/StackedRadio/StackedRadioGroup.tsx +38 -38
  113. package/src/components/input/StackedSelect/index.tsx +232 -232
  114. package/src/components/input/StackedSwitch/index.tsx +33 -33
  115. package/src/components/input/StackedTextarea/StackedTextarea.tsx +55 -55
  116. package/src/components/input/components/dropdown/index.tsx +111 -111
  117. package/src/components/input/components/label/index.tsx +35 -35
  118. package/src/components/input/components/token/Token.stories.tsx +25 -25
  119. package/src/components/input/components/token/index.tsx +45 -45
  120. package/src/components/input/index.tsx +298 -298
  121. package/src/components/layout/BorderedBox/index.tsx +30 -30
  122. package/src/components/layout/Layout.stories.tsx +40 -40
  123. package/src/components/layout/index.tsx +100 -100
  124. package/src/components/link/Link.stories.tsx +23 -23
  125. package/src/components/link/index.tsx +34 -34
  126. package/src/components/loading/LoadingIndicator.stories.tsx +45 -45
  127. package/src/components/loading/index.tsx +45 -45
  128. package/src/components/modal/Modal.stories.tsx +36 -36
  129. package/src/components/modal/components/action/index.tsx +37 -37
  130. package/src/components/modal/index.tsx +41 -41
  131. package/src/components/navigation/NavigationMenu.stories.tsx +85 -85
  132. package/src/components/navigation/components/header/index.tsx +27 -27
  133. package/src/components/navigation/components/items/index.tsx +76 -76
  134. package/src/components/navigation/index.tsx +87 -87
  135. package/src/components/select/index.tsx +140 -140
  136. package/src/components/table/Table.stories.tsx +63 -63
  137. package/src/components/table/TableTypes.ts +15 -15
  138. package/src/components/table/components/loading/index.tsx +45 -45
  139. package/src/components/table/components/text/index.tsx +23 -23
  140. package/src/components/table/empty/index.tsx +47 -47
  141. package/src/components/table/index.tsx +84 -84
  142. package/src/components/table/utils/generateTableColumns.ts +9 -9
  143. package/src/components/tabs/TabsWrapper.stories.tsx +85 -85
  144. package/src/components/tabs/index.tsx +39 -39
  145. package/src/components/text/Text.stories.tsx +59 -59
  146. package/src/components/text/index.tsx +16 -16
  147. package/src/components/toast/Toast.stories.tsx +52 -52
  148. package/src/components/toast/index.tsx +78 -78
  149. package/src/components/toolbar/Toolbar.stories.tsx +59 -59
  150. package/src/components/toolbar/components/actions/add/index.tsx +18 -18
  151. package/src/components/toolbar/components/actions/search/index.tsx +38 -38
  152. package/src/components/toolbar/components/actions/sort/index.tsx +49 -49
  153. package/src/components/toolbar/components/breadcrumbs/index.tsx +63 -63
  154. package/src/components/toolbar/components/breadcrumbs/item/index.tsx +72 -72
  155. package/src/components/toolbar/components/dropdown/index.tsx +107 -107
  156. package/src/components/toolbar/components/navigation/components/button/left/index.tsx +28 -28
  157. package/src/components/toolbar/components/navigation/components/button/left/left-arrow.svg +3 -3
  158. package/src/components/toolbar/components/navigation/components/button/right/index.tsx +27 -27
  159. package/src/components/toolbar/components/navigation/components/button/right/right-arrow.svg +3 -3
  160. package/src/components/toolbar/components/navigation/index.tsx +36 -36
  161. package/src/components/toolbar/index.tsx +55 -55
  162. package/src/hooks/useDeepEffect.tsx +22 -22
  163. package/src/hooks/useDidMountEffect.tsx +13 -13
  164. package/src/hooks/useOnOutsideClick.tsx +31 -31
  165. package/src/hooks/useToast.tsx +16 -16
  166. package/src/index.tsx +78 -78
  167. package/src/theme/components/alert.ts +60 -60
  168. package/src/theme/components/badge.ts +59 -59
  169. package/src/theme/components/button.ts +163 -163
  170. package/src/theme/components/checkbox.ts +28 -28
  171. package/src/theme/components/code.ts +16 -16
  172. package/src/theme/components/form-error.ts +31 -31
  173. package/src/theme/components/form-label.ts +17 -17
  174. package/src/theme/components/form.ts +29 -29
  175. package/src/theme/components/input.ts +65 -65
  176. package/src/theme/components/link.ts +118 -118
  177. package/src/theme/components/modal.ts +45 -45
  178. package/src/theme/components/select.ts +36 -36
  179. package/src/theme/components/switch.ts +89 -89
  180. package/src/theme/components/table.ts +42 -42
  181. package/src/theme/components/tabs.ts +255 -255
  182. package/src/theme/components/text.ts +93 -93
  183. package/src/theme/components/textarea.ts +42 -42
  184. package/src/theme/customXQChakraTheme.ts +54 -54
  185. package/src/theme/foundations/breakpoints.ts +18 -18
  186. package/src/theme/foundations/colors.ts +165 -165
  187. package/src/theme/foundations/shadows.ts +23 -23
  188. package/src/theme/foundations/typography.ts +62 -62
  189. package/src/theme/provider/index.tsx +21 -21
  190. package/src/theme/styles.ts +19 -19
@@ -1,255 +1,255 @@
1
- import { getColor, mode } from '@chakra-ui/theme-tools';
2
- import colors from '../foundations/colors';
3
-
4
- const parts = ['root', 'tablist', 'tab', 'tabpanel', 'indicator'];
5
-
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- type Dict = Record<string, any>;
8
-
9
- function baseStyleRoot(props: Dict) {
10
- const { orientation } = props;
11
- return {
12
- display: orientation === 'vertical' ? 'flex' : 'block',
13
- };
14
- }
15
-
16
- function baseStyleTab(props: Dict) {
17
- const { isFitted } = props;
18
-
19
- return {
20
- flex: isFitted ? 1 : undefined,
21
- transition: 'all 0.2s',
22
- _focus: {
23
- zIndex: 1,
24
- boxShadow: 'outline',
25
- },
26
- };
27
- }
28
-
29
- function baseStyleTablist(props: Dict) {
30
- const { align = 'start', orientation } = props;
31
-
32
- const alignments: Record<string, string> = {
33
- end: 'flex-end',
34
- center: 'center',
35
- start: 'flex-start',
36
- };
37
-
38
- return {
39
- justifyContent: alignments[align],
40
- flexDirection: orientation === 'vertical' ? 'column' : 'row',
41
- };
42
- }
43
-
44
- const baseStyleTabpanel = { p: 4 };
45
-
46
- const baseStyle = (props: Dict) => {
47
- return {
48
- root: baseStyleRoot(props),
49
- tab: baseStyleTab(props),
50
- tablist: baseStyleTablist(props),
51
- tabpanel: baseStyleTabpanel,
52
- };
53
- };
54
-
55
- const sizes = {
56
- sm: {
57
- tab: {
58
- py: '0.25rem',
59
- px: 6,
60
- fontSize: '0.85rem',
61
- },
62
- },
63
- md: {
64
- tab: {
65
- fontSize: '1rem',
66
- py: '0.75rem',
67
- px: 6,
68
- },
69
- },
70
- lg: {
71
- tab: {
72
- fontSize: { base: '1rem', sm: '1.15rem' },
73
- py: '0.75rem',
74
- px: 6,
75
- },
76
- },
77
- };
78
-
79
- function variantLine(props: Dict) {
80
- const { colorScheme: c, orientation } = props;
81
- const isVertical = orientation === 'vertical';
82
- const borderProp = isVertical ? 'borderLeft' : 'borderBottom';
83
- const marginProp = isVertical ? 'ml' : 'mb';
84
-
85
- const _selected = {
86
- color: mode(`${c}.600`, `${c}.300`)(props),
87
- _after: {
88
- content: '""',
89
- display: 'block',
90
- position: 'absolute',
91
- bottom: '-1px',
92
- left: 0,
93
- right: 0,
94
- height: '3px',
95
- bg: 'currentColor',
96
- },
97
- };
98
-
99
- return {
100
- tablist: {
101
- [borderProp]: '1px solid',
102
- borderColor: 'gray.100',
103
- },
104
- tab: {
105
- position: 'relative',
106
- [borderProp]: 0,
107
- borderColor: 'transparent',
108
- [marginProp]: 0,
109
- // set by React Router NavLink component
110
- '&.active': _selected,
111
- _selected,
112
- _active: {
113
- bg: mode(`${c}.50`, 'whiteAlpha.300')(props),
114
- },
115
- _disabled: {
116
- opacity: 0.4,
117
- cursor: 'not-allowed',
118
- },
119
- },
120
- };
121
- }
122
-
123
- function variantEnclosed(props: Dict) {
124
- const { colorScheme: c } = props;
125
- return {
126
- tab: {
127
- borderTopRadius: 'md',
128
- border: '1px solid',
129
- borderColor: 'transparent',
130
- mb: '-1px',
131
- _selected: {
132
- color: mode(`${c}.600`, `${c}.300`)(props),
133
- borderColor: 'inherit',
134
- borderBottomColor: mode(`white`, `gray.800`)(props),
135
- },
136
- },
137
- tablist: {
138
- mb: '-1px',
139
- borderBottom: '1px solid',
140
- borderColor: 'gray.100',
141
- },
142
- };
143
- }
144
-
145
- function variantEnclosedColored(props: Dict) {
146
- const { colorScheme: c } = props;
147
- return {
148
- tab: {
149
- border: '1px solid',
150
- borderColor: 'inherit',
151
- bg: mode(`gray.50`, `whiteAlpha.50`)(props),
152
- mb: '-1px',
153
- _notLast: {
154
- mr: '-1px',
155
- },
156
- _selected: {
157
- bg: mode(`#fff`, 'gray.800')(props),
158
- color: mode(`${c}.600`, `${c}.300`)(props),
159
- borderColor: 'inherit',
160
- borderTopColor: 'currentColor',
161
- borderBottomColor: 'transparent',
162
- },
163
- },
164
- tablist: {
165
- mb: '-1px',
166
- borderBottom: '1px solid',
167
- borderColor: 'gray.100',
168
- },
169
- };
170
- }
171
-
172
- function variantSoftRounded(props: Dict) {
173
- const { colorScheme: c, theme } = props;
174
- return {
175
- tab: {
176
- borderRadius: 'full',
177
- fontWeight: 'semibold',
178
- color: 'gray.600',
179
- _selected: {
180
- color: getColor(theme, `${c}.700`),
181
- bg: getColor(theme, `${c}.100`),
182
- },
183
- },
184
- };
185
- }
186
-
187
- function variantSolidRounded(props: Dict) {
188
- const { colorScheme: c } = props;
189
- return {
190
- tab: {
191
- borderRadius: 'full',
192
- fontWeight: 'semibold',
193
- color: mode('gray.600', 'inherit')(props),
194
- _selected: {
195
- color: mode(`#fff`, 'gray.800')(props),
196
- bg: mode(`${c}.600`, `${c}.300`)(props),
197
- },
198
- },
199
- };
200
- }
201
-
202
- const variantUnstyled = {};
203
-
204
- const variantSimple = {
205
- tab: {
206
- position: 'relative',
207
- borderColor: 'transparent',
208
- '&.active': {
209
- color: colors.fill.action,
210
- bg: 'transparent',
211
- borderBottom: `1px solid ${colors.fill.action}`,
212
- },
213
- _selected: {
214
- color: colors.fill.action,
215
- bg: 'transparent',
216
- _after: {
217
- content: '""',
218
- display: 'block',
219
- position: 'absolute',
220
- bottom: '-1px',
221
- left: 0,
222
- right: 0,
223
- height: '3px',
224
- bg: 'currentColor',
225
- },
226
- },
227
- _active: {
228
- bg: 'transparent',
229
- },
230
- },
231
- };
232
-
233
- const variants = {
234
- line: variantLine,
235
- enclosed: variantEnclosed,
236
- 'enclosed-colored': variantEnclosedColored,
237
- 'soft-rounded': variantSoftRounded,
238
- 'solid-rounded': variantSolidRounded,
239
- unstyled: variantUnstyled,
240
- simple: variantSimple,
241
- };
242
-
243
- const defaultProps = {
244
- size: 'md',
245
- variant: 'line',
246
- colorScheme: 'blue',
247
- };
248
-
249
- export default {
250
- parts,
251
- baseStyle,
252
- sizes,
253
- variants,
254
- defaultProps,
255
- };
1
+ import { getColor, mode } from '@chakra-ui/theme-tools';
2
+ import colors from '../foundations/colors';
3
+
4
+ const parts = ['root', 'tablist', 'tab', 'tabpanel', 'indicator'];
5
+
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ type Dict = Record<string, any>;
8
+
9
+ function baseStyleRoot(props: Dict) {
10
+ const { orientation } = props;
11
+ return {
12
+ display: orientation === 'vertical' ? 'flex' : 'block',
13
+ };
14
+ }
15
+
16
+ function baseStyleTab(props: Dict) {
17
+ const { isFitted } = props;
18
+
19
+ return {
20
+ flex: isFitted ? 1 : undefined,
21
+ transition: 'all 0.2s',
22
+ _focus: {
23
+ zIndex: 1,
24
+ boxShadow: 'outline',
25
+ },
26
+ };
27
+ }
28
+
29
+ function baseStyleTablist(props: Dict) {
30
+ const { align = 'start', orientation } = props;
31
+
32
+ const alignments: Record<string, string> = {
33
+ end: 'flex-end',
34
+ center: 'center',
35
+ start: 'flex-start',
36
+ };
37
+
38
+ return {
39
+ justifyContent: alignments[align],
40
+ flexDirection: orientation === 'vertical' ? 'column' : 'row',
41
+ };
42
+ }
43
+
44
+ const baseStyleTabpanel = { p: 4 };
45
+
46
+ const baseStyle = (props: Dict) => {
47
+ return {
48
+ root: baseStyleRoot(props),
49
+ tab: baseStyleTab(props),
50
+ tablist: baseStyleTablist(props),
51
+ tabpanel: baseStyleTabpanel,
52
+ };
53
+ };
54
+
55
+ const sizes = {
56
+ sm: {
57
+ tab: {
58
+ py: '0.25rem',
59
+ px: 6,
60
+ fontSize: '0.85rem',
61
+ },
62
+ },
63
+ md: {
64
+ tab: {
65
+ fontSize: '1rem',
66
+ py: '0.75rem',
67
+ px: 6,
68
+ },
69
+ },
70
+ lg: {
71
+ tab: {
72
+ fontSize: { base: '1rem', sm: '1.15rem' },
73
+ py: '0.75rem',
74
+ px: 6,
75
+ },
76
+ },
77
+ };
78
+
79
+ function variantLine(props: Dict) {
80
+ const { colorScheme: c, orientation } = props;
81
+ const isVertical = orientation === 'vertical';
82
+ const borderProp = isVertical ? 'borderLeft' : 'borderBottom';
83
+ const marginProp = isVertical ? 'ml' : 'mb';
84
+
85
+ const _selected = {
86
+ color: mode(`${c}.600`, `${c}.300`)(props),
87
+ _after: {
88
+ content: '""',
89
+ display: 'block',
90
+ position: 'absolute',
91
+ bottom: '-1px',
92
+ left: 0,
93
+ right: 0,
94
+ height: '3px',
95
+ bg: 'currentColor',
96
+ },
97
+ };
98
+
99
+ return {
100
+ tablist: {
101
+ [borderProp]: '1px solid',
102
+ borderColor: 'gray.100',
103
+ },
104
+ tab: {
105
+ position: 'relative',
106
+ [borderProp]: 0,
107
+ borderColor: 'transparent',
108
+ [marginProp]: 0,
109
+ // set by React Router NavLink component
110
+ '&.active': _selected,
111
+ _selected,
112
+ _active: {
113
+ bg: mode(`${c}.50`, 'whiteAlpha.300')(props),
114
+ },
115
+ _disabled: {
116
+ opacity: 0.4,
117
+ cursor: 'not-allowed',
118
+ },
119
+ },
120
+ };
121
+ }
122
+
123
+ function variantEnclosed(props: Dict) {
124
+ const { colorScheme: c } = props;
125
+ return {
126
+ tab: {
127
+ borderTopRadius: 'md',
128
+ border: '1px solid',
129
+ borderColor: 'transparent',
130
+ mb: '-1px',
131
+ _selected: {
132
+ color: mode(`${c}.600`, `${c}.300`)(props),
133
+ borderColor: 'inherit',
134
+ borderBottomColor: mode(`white`, `gray.800`)(props),
135
+ },
136
+ },
137
+ tablist: {
138
+ mb: '-1px',
139
+ borderBottom: '1px solid',
140
+ borderColor: 'gray.100',
141
+ },
142
+ };
143
+ }
144
+
145
+ function variantEnclosedColored(props: Dict) {
146
+ const { colorScheme: c } = props;
147
+ return {
148
+ tab: {
149
+ border: '1px solid',
150
+ borderColor: 'inherit',
151
+ bg: mode(`gray.50`, `whiteAlpha.50`)(props),
152
+ mb: '-1px',
153
+ _notLast: {
154
+ mr: '-1px',
155
+ },
156
+ _selected: {
157
+ bg: mode(`#fff`, 'gray.800')(props),
158
+ color: mode(`${c}.600`, `${c}.300`)(props),
159
+ borderColor: 'inherit',
160
+ borderTopColor: 'currentColor',
161
+ borderBottomColor: 'transparent',
162
+ },
163
+ },
164
+ tablist: {
165
+ mb: '-1px',
166
+ borderBottom: '1px solid',
167
+ borderColor: 'gray.100',
168
+ },
169
+ };
170
+ }
171
+
172
+ function variantSoftRounded(props: Dict) {
173
+ const { colorScheme: c, theme } = props;
174
+ return {
175
+ tab: {
176
+ borderRadius: 'full',
177
+ fontWeight: 'semibold',
178
+ color: 'gray.600',
179
+ _selected: {
180
+ color: getColor(theme, `${c}.700`),
181
+ bg: getColor(theme, `${c}.100`),
182
+ },
183
+ },
184
+ };
185
+ }
186
+
187
+ function variantSolidRounded(props: Dict) {
188
+ const { colorScheme: c } = props;
189
+ return {
190
+ tab: {
191
+ borderRadius: 'full',
192
+ fontWeight: 'semibold',
193
+ color: mode('gray.600', 'inherit')(props),
194
+ _selected: {
195
+ color: mode(`#fff`, 'gray.800')(props),
196
+ bg: mode(`${c}.600`, `${c}.300`)(props),
197
+ },
198
+ },
199
+ };
200
+ }
201
+
202
+ const variantUnstyled = {};
203
+
204
+ const variantSimple = {
205
+ tab: {
206
+ position: 'relative',
207
+ borderColor: 'transparent',
208
+ '&.active': {
209
+ color: colors.fill.action,
210
+ bg: 'transparent',
211
+ borderBottom: `1px solid ${colors.fill.action}`,
212
+ },
213
+ _selected: {
214
+ color: colors.fill.action,
215
+ bg: 'transparent',
216
+ _after: {
217
+ content: '""',
218
+ display: 'block',
219
+ position: 'absolute',
220
+ bottom: '-1px',
221
+ left: 0,
222
+ right: 0,
223
+ height: '3px',
224
+ bg: 'currentColor',
225
+ },
226
+ },
227
+ _active: {
228
+ bg: 'transparent',
229
+ },
230
+ },
231
+ };
232
+
233
+ const variants = {
234
+ line: variantLine,
235
+ enclosed: variantEnclosed,
236
+ 'enclosed-colored': variantEnclosedColored,
237
+ 'soft-rounded': variantSoftRounded,
238
+ 'solid-rounded': variantSolidRounded,
239
+ unstyled: variantUnstyled,
240
+ simple: variantSimple,
241
+ };
242
+
243
+ const defaultProps = {
244
+ size: 'md',
245
+ variant: 'line',
246
+ colorScheme: 'blue',
247
+ };
248
+
249
+ export default {
250
+ parts,
251
+ baseStyle,
252
+ sizes,
253
+ variants,
254
+ defaultProps,
255
+ };