@addev-be/ui 0.20.5 → 0.21.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/package.json +2 -2
- package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +6 -6
- package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +4 -4
- package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +6 -6
- package/src/components/data/DataGrid/styles.ts +23 -22
- package/src/components/data/SqlRequestForeignList/styles.ts +2 -2
- package/src/components/data/SqlRequestGrid/filters/styles.ts +6 -6
- package/src/components/forms/Button.tsx +3 -3
- package/src/components/forms/Form/styles.ts +12 -12
- package/src/components/forms/styles.ts +3 -3
- package/src/components/layout/Dropdown/styles.ts +2 -2
- package/src/components/layout/Modal/styles.ts +3 -3
- package/src/components/search/styles.ts +5 -5
- package/src/components/ui/Card/styles.ts +4 -4
- package/src/components/ui/ContextMenu/styles.ts +11 -11
- package/src/components/ui/Label.tsx +4 -4
- package/src/components/ui/Message/index.tsx +1 -1
- package/src/components/ui/TabsView/TabsView.tsx +11 -2
- package/src/components/ui/TabsView/styles.ts +13 -6
- package/src/hooks/useMutableState.ts +9 -11
- package/src/providers/ThemeProvider/ThemeProvider.ts +12 -9
- package/src/providers/ThemeProvider/defaultTheme.ts +1 -0
- package/src/providers/ThemeProvider/helpers.ts +13 -0
- package/src/providers/ThemeProvider/types.ts +1 -1
- package/src/providers/UiProviders/index.tsx +11 -3
- package/src/providers/UiProviders/styles.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@addev-be/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"watch": "tsc -b --watch",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"update-version": "../../node/update-version.mjs"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@addev-be/framework-utils": "^0.
|
|
23
|
+
"@addev-be/framework-utils": "^0.21.0",
|
|
24
24
|
"@types/lodash": "^4",
|
|
25
25
|
"@types/react": "^18.3.3",
|
|
26
26
|
"@types/react-dom": "^18.3.0",
|
|
@@ -34,12 +34,12 @@ export const ColumnsList = styled.ul.attrs({
|
|
|
34
34
|
flex-direction: column;
|
|
35
35
|
flex: 1;
|
|
36
36
|
overflow: auto;
|
|
37
|
-
border: 1px solid var(--color-
|
|
37
|
+
border: 1px solid var(--color-base-200);
|
|
38
38
|
margin: 0;
|
|
39
|
-
background-color: var(--color-
|
|
39
|
+
background-color: var(--color-base-50);
|
|
40
40
|
|
|
41
41
|
& > li:not(:last-child) {
|
|
42
|
-
border-bottom: 1px solid var(--color-
|
|
42
|
+
border-bottom: 1px solid var(--color-base-100);
|
|
43
43
|
}
|
|
44
44
|
`;
|
|
45
45
|
|
|
@@ -66,17 +66,17 @@ export const ColumnItem = styled.li.attrs({
|
|
|
66
66
|
width: var(--space-6);
|
|
67
67
|
height: var(--space-6);
|
|
68
68
|
border-radius: var(--rounded-full);
|
|
69
|
-
background-color: var(--color-
|
|
69
|
+
background-color: var(--color-base-200);
|
|
70
70
|
border: none;
|
|
71
71
|
align-items: center;
|
|
72
72
|
justify-content: center;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
&:hover {
|
|
76
|
-
background-color: var(--color-
|
|
76
|
+
background-color: var(--color-base-100);
|
|
77
77
|
button {
|
|
78
78
|
display: flex;
|
|
79
|
-
background-color: var(--color-
|
|
79
|
+
background-color: var(--color-base-300);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
`;
|
|
@@ -8,7 +8,7 @@ export const EditableCellContainer = styled.div<{
|
|
|
8
8
|
${dataGridCellCss}
|
|
9
9
|
padding: 1px 4px 0px 4px;
|
|
10
10
|
overflow: visible;
|
|
11
|
-
background-color: var(--color-
|
|
11
|
+
background-color: var(--color-base-0);
|
|
12
12
|
|
|
13
13
|
& input,
|
|
14
14
|
& select {
|
|
@@ -21,12 +21,12 @@ export const EditableCellContainer = styled.div<{
|
|
|
21
21
|
font-weight: inherit;
|
|
22
22
|
text-align: ${({ $textAlign = 'left' }) => $textAlign};
|
|
23
23
|
|
|
24
|
-
border: 1px solid var(--color-
|
|
24
|
+
border: 1px solid var(--color-base-300);
|
|
25
25
|
padding: var(--space-1) var(--space-2);
|
|
26
26
|
|
|
27
|
-
color: var(--color-
|
|
27
|
+
color: var(--color-base-900);
|
|
28
28
|
&::placeholder {
|
|
29
|
-
color: var(--color-
|
|
29
|
+
color: var(--color-base-400);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
border: none;
|
|
@@ -16,7 +16,7 @@ export const InputContainer = styled.div.attrs({
|
|
|
16
16
|
left: var(--space-4);
|
|
17
17
|
display: flex;
|
|
18
18
|
align-items: center;
|
|
19
|
-
fill: var(--color-
|
|
19
|
+
fill: var(--color-base-400);
|
|
20
20
|
width: var(--space-4);
|
|
21
21
|
height: var(--space-4);
|
|
22
22
|
}
|
|
@@ -34,10 +34,10 @@ export const CheckboxesContainer = styled.div.attrs({
|
|
|
34
34
|
padding: var(--space-2);
|
|
35
35
|
margin: var(--space-1);
|
|
36
36
|
margin-bottom: 0;
|
|
37
|
-
border: 1px solid var(--color-
|
|
37
|
+
border: 1px solid var(--color-base-300);
|
|
38
38
|
border-radius: var(--rounded-md);
|
|
39
39
|
box-shadow: var(--shadow-inner);
|
|
40
|
-
background-color: var(--color-
|
|
40
|
+
background-color: var(--color-base-0);
|
|
41
41
|
height: 20em;
|
|
42
42
|
overflow-y: hidden;
|
|
43
43
|
white-space: nowrap;
|
|
@@ -46,7 +46,7 @@ export const CheckboxesContainer = styled.div.attrs({
|
|
|
46
46
|
export const Separator = styled.div.attrs({
|
|
47
47
|
className: 'Separator',
|
|
48
48
|
})`
|
|
49
|
-
border-top: 1px solid var(--color-
|
|
49
|
+
border-top: 1px solid var(--color-base-200);
|
|
50
50
|
margin: var(--space-1) 0;
|
|
51
51
|
`;
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@ export const FilterValueContainer = styled.div.attrs({
|
|
|
61
61
|
align-items: center;
|
|
62
62
|
cursor: pointer;
|
|
63
63
|
&:hover {
|
|
64
|
-
background-color: var(--color-
|
|
64
|
+
background-color: var(--color-base-50);
|
|
65
65
|
}
|
|
66
66
|
`;
|
|
67
67
|
|
|
@@ -72,7 +72,7 @@ export const FilterValuesScrollerContainer = styled.div.attrs({
|
|
|
72
72
|
}>`
|
|
73
73
|
display: block;
|
|
74
74
|
font-size: var(--text-base);
|
|
75
|
-
background-color: var(--color-
|
|
75
|
+
background-color: var(--color-base-0);
|
|
76
76
|
overflow-y: scroll;
|
|
77
77
|
overflow-x: hidden;
|
|
78
78
|
height: 100%;
|
|
@@ -17,6 +17,7 @@ export const DataGridWrapper = styled.div<SpaceProps>`
|
|
|
17
17
|
flex-direction: column;
|
|
18
18
|
overflow: hidden;
|
|
19
19
|
width: 100%;
|
|
20
|
+
height: 100%;
|
|
20
21
|
|
|
21
22
|
${space}
|
|
22
23
|
`;
|
|
@@ -38,10 +39,10 @@ export const DataGridResizeGrip = styled.div<{ $headerColor?: ThemeColor }>`
|
|
|
38
39
|
}
|
|
39
40
|
`
|
|
40
41
|
: css`
|
|
41
|
-
background-color: var(--color-
|
|
42
|
+
background-color: var(--color-base-400);
|
|
42
43
|
&:hover,
|
|
43
44
|
&.active {
|
|
44
|
-
background-color: var(--color-
|
|
45
|
+
background-color: var(--color-base-500);
|
|
45
46
|
}
|
|
46
47
|
`}
|
|
47
48
|
|
|
@@ -95,10 +96,10 @@ export const DataGridHeaderCellContainer = styled.div<DataGridHeaderCellContaine
|
|
|
95
96
|
}
|
|
96
97
|
`
|
|
97
98
|
: css`
|
|
98
|
-
background-color: var(--color-
|
|
99
|
-
color: var(--color-
|
|
99
|
+
background-color: var(--color-base-200);
|
|
100
|
+
color: var(--color-base-950);
|
|
100
101
|
&:hover {
|
|
101
|
-
background-color: var(--color-
|
|
102
|
+
background-color: var(--color-base-300);
|
|
102
103
|
}
|
|
103
104
|
`}
|
|
104
105
|
|
|
@@ -137,9 +138,9 @@ export const dataGridCellCss = css<DataGridCellFCProps>`
|
|
|
137
138
|
text-overflow: ellipsis;
|
|
138
139
|
user-select: ${({ $userSelect }) => ($userSelect ? 'text' : 'none')};
|
|
139
140
|
white-space: nowrap;
|
|
140
|
-
border-right: 1px solid var(--color-
|
|
141
|
-
border-bottom: 1px solid var(--color-
|
|
142
|
-
background-color: ${({ $color = '
|
|
141
|
+
border-right: 1px solid var(--color-base-200);
|
|
142
|
+
border-bottom: 1px solid var(--color-base-200);
|
|
143
|
+
background-color: ${({ $color = 'base' }) => `var(--color-${$color}-50)`};
|
|
143
144
|
text-align: ${({ $textAlign = 'left' }) => $textAlign};
|
|
144
145
|
`;
|
|
145
146
|
|
|
@@ -151,7 +152,7 @@ DataGridCell.displayName = 'DataGridCell';
|
|
|
151
152
|
export const DataGridHeaderTitle = styled.div`
|
|
152
153
|
white-space: normal;
|
|
153
154
|
font-weight: var(--font-bold);
|
|
154
|
-
color: var(--color-
|
|
155
|
+
color: var(--color-base-900);
|
|
155
156
|
height: auto;
|
|
156
157
|
`;
|
|
157
158
|
|
|
@@ -193,7 +194,7 @@ export const DataGridContainer = styled.div<{
|
|
|
193
194
|
display: grid;
|
|
194
195
|
width: 100%;
|
|
195
196
|
height: 100%;
|
|
196
|
-
background-color: var(--color-
|
|
197
|
+
background-color: var(--color-base-50);
|
|
197
198
|
font-size: var(--text-base);
|
|
198
199
|
overflow: scroll;
|
|
199
200
|
grid-template-rows: ${({
|
|
@@ -233,7 +234,7 @@ export const DataGridContainer = styled.div<{
|
|
|
233
234
|
.map((w) => (typeof w === 'number' ? `${w}px` : w))
|
|
234
235
|
.join(' + ')})`
|
|
235
236
|
};
|
|
236
|
-
background-color: var(--color-
|
|
237
|
+
background-color: var(--color-base-200);
|
|
237
238
|
z-index: 1;
|
|
238
239
|
}`
|
|
239
240
|
)}
|
|
@@ -251,7 +252,7 @@ export const DataGridContainer = styled.div<{
|
|
|
251
252
|
.map((w) => (typeof w === 'number' ? `${w}px` : w))
|
|
252
253
|
.join(' + ')})`
|
|
253
254
|
};
|
|
254
|
-
background-color: var(--color-
|
|
255
|
+
background-color: var(--color-base-50);
|
|
255
256
|
z-index: 1;
|
|
256
257
|
}`
|
|
257
258
|
)}
|
|
@@ -285,15 +286,15 @@ const dataGridHeaderOrFooterRowCss = css<DataGridHeaderOrFooterRowProps>`
|
|
|
285
286
|
color: var(--color-${$headerColor}-900);
|
|
286
287
|
`
|
|
287
288
|
: css`
|
|
288
|
-
background-color: var(--color-
|
|
289
|
-
color: var(--color-
|
|
289
|
+
background-color: var(--color-base-200);
|
|
290
|
+
color: var(--color-base-900);
|
|
290
291
|
`}
|
|
291
292
|
|
|
292
293
|
${DataGridHeaderCellContainer}:first-child {
|
|
293
|
-
border-left: 1px solid var(--color-
|
|
294
|
+
border-left: 1px solid var(--color-base-300);
|
|
294
295
|
}
|
|
295
296
|
${DataGridHeaderCellContainer}:last-child {
|
|
296
|
-
border-left: 1px solid var(--color-
|
|
297
|
+
border-left: 1px solid var(--color-base-300);
|
|
297
298
|
}
|
|
298
299
|
`;
|
|
299
300
|
|
|
@@ -305,7 +306,7 @@ export const DataGridHeaderRow = styled.div.attrs<DataGridHeaderOrFooterRowProps
|
|
|
305
306
|
})
|
|
306
307
|
)`
|
|
307
308
|
${dataGridHeaderOrFooterRowCss}
|
|
308
|
-
border-top: 1px solid var(--color-
|
|
309
|
+
border-top: 1px solid var(--color-base-300);
|
|
309
310
|
top: 0;
|
|
310
311
|
`;
|
|
311
312
|
DataGridHeaderRow.displayName = 'DataGridHeaderRow';
|
|
@@ -318,7 +319,7 @@ export const DataGridFooterRow = styled.div.attrs<DataGridHeaderOrFooterRowProps
|
|
|
318
319
|
})
|
|
319
320
|
)`
|
|
320
321
|
${dataGridHeaderOrFooterRowCss}
|
|
321
|
-
border-bottom: 1px solid var(--color-
|
|
322
|
+
border-bottom: 1px solid var(--color-base-300);
|
|
322
323
|
bottom: 0;
|
|
323
324
|
`;
|
|
324
325
|
DataGridFooterRow.displayName = 'DataGridFooterRow';
|
|
@@ -331,10 +332,10 @@ export const DataGridRow = styled.div<DataGridRowProps>`
|
|
|
331
332
|
display: contents;
|
|
332
333
|
|
|
333
334
|
${DataGridCell}:first-child {
|
|
334
|
-
border-left: 1px solid var(--color-
|
|
335
|
+
border-left: 1px solid var(--color-base-300);
|
|
335
336
|
}
|
|
336
337
|
${DataGridCell}:last-child {
|
|
337
|
-
border-left: 1px solid var(--color-
|
|
338
|
+
border-left: 1px solid var(--color-base-300);
|
|
338
339
|
}
|
|
339
340
|
|
|
340
341
|
&:hover > ${DataGridCell} {
|
|
@@ -360,7 +361,7 @@ export const LoadingCell = styled(DataGridCell)`
|
|
|
360
361
|
box-sizing: border-box;
|
|
361
362
|
|
|
362
363
|
&.animate-pulse > div {
|
|
363
|
-
background-color: var(--color-
|
|
364
|
+
background-color: var(--color-base-200);
|
|
364
365
|
border-radius: var(--rounded-full);
|
|
365
366
|
width: 100%;
|
|
366
367
|
height: 100%;
|
|
@@ -381,7 +382,7 @@ const selectionCellStyle = css`
|
|
|
381
382
|
height: var(--space-4);
|
|
382
383
|
width: var(--space-4);
|
|
383
384
|
border-radius: var(--rounded-sm);
|
|
384
|
-
border: 1px solid var(--color-
|
|
385
|
+
border: 1px solid var(--color-base-300);
|
|
385
386
|
color: var(--color-primary-600);
|
|
386
387
|
}
|
|
387
388
|
`;
|
|
@@ -7,7 +7,7 @@ export const SqlRequestForeignListInput = styled.div<{ $readOnly?: boolean }>`
|
|
|
7
7
|
padding: 0;
|
|
8
8
|
position: relative;
|
|
9
9
|
cursor: pointer;
|
|
10
|
-
background-color: var(--color-
|
|
10
|
+
background-color: var(--color-base-0);
|
|
11
11
|
|
|
12
12
|
& > svg {
|
|
13
13
|
position: absolute;
|
|
@@ -17,7 +17,7 @@ export const SqlRequestForeignListInput = styled.div<{ $readOnly?: boolean }>`
|
|
|
17
17
|
pointer-events: none;
|
|
18
18
|
width: var(--space-4);
|
|
19
19
|
height: var(--space-4);
|
|
20
|
-
fill: var(--color-
|
|
20
|
+
fill: var(--color-base-900);
|
|
21
21
|
}
|
|
22
22
|
`;
|
|
23
23
|
|
|
@@ -18,8 +18,8 @@ export const FiltersSidebarContainer = styled.div`
|
|
|
18
18
|
z-index: 1;
|
|
19
19
|
overflow-y: auto;
|
|
20
20
|
box-sizing: border-box;
|
|
21
|
-
background-color: var(--color-
|
|
22
|
-
border-right: 1px solid var(--color-
|
|
21
|
+
background-color: var(--color-base-50);
|
|
22
|
+
border-right: 1px solid var(--color-base-300);
|
|
23
23
|
box-shadow: var(--shadow-sm);
|
|
24
24
|
|
|
25
25
|
& > ${MenuContainer} {
|
|
@@ -43,7 +43,7 @@ export const FiltersSidebarHeader = styled.div`
|
|
|
43
43
|
position: sticky;
|
|
44
44
|
top: 0;
|
|
45
45
|
z-index: 1;
|
|
46
|
-
background-color: var(--color-
|
|
46
|
+
background-color: var(--color-base-50);
|
|
47
47
|
|
|
48
48
|
display: flex;
|
|
49
49
|
justify-content: space-between;
|
|
@@ -52,7 +52,7 @@ export const FiltersSidebarHeader = styled.div`
|
|
|
52
52
|
padding: var(--space-2);
|
|
53
53
|
|
|
54
54
|
padding-bottom: var(--space-2);
|
|
55
|
-
border-bottom: 1px solid var(--color-
|
|
55
|
+
border-bottom: 1px solid var(--color-base-300);
|
|
56
56
|
|
|
57
57
|
h3 {
|
|
58
58
|
margin: 0;
|
|
@@ -64,11 +64,11 @@ export const FiltersSidebarFilter = styled.div`
|
|
|
64
64
|
display: flex;
|
|
65
65
|
align-items: center;
|
|
66
66
|
padding: var(--space-4) var(--space-2);
|
|
67
|
-
border-bottom: 1px solid var(--color-
|
|
67
|
+
border-bottom: 1px solid var(--color-base-300);
|
|
68
68
|
cursor: pointer;
|
|
69
69
|
|
|
70
70
|
&:hover {
|
|
71
|
-
background-color: var(--color-
|
|
71
|
+
background-color: var(--color-base-100);
|
|
72
72
|
}
|
|
73
73
|
svg {
|
|
74
74
|
margin-left: auto;
|
|
@@ -33,7 +33,7 @@ export const StyledButton = styled.button.withConfig({
|
|
|
33
33
|
font-family: var(--font-sans);
|
|
34
34
|
cursor: pointer;
|
|
35
35
|
|
|
36
|
-
${({ $color = '
|
|
36
|
+
${({ $color = 'base', $bordered = false }) => {
|
|
37
37
|
const colorWithIntensity = getColorWithIntensity($color);
|
|
38
38
|
const colorName = getColor(colorWithIntensity);
|
|
39
39
|
const intensity = getIntensity(colorWithIntensity);
|
|
@@ -111,8 +111,8 @@ export const Button = forwardRef<
|
|
|
111
111
|
icon: Icon,
|
|
112
112
|
className,
|
|
113
113
|
rounded = false,
|
|
114
|
-
color = '
|
|
115
|
-
bordered =
|
|
114
|
+
color = 'base',
|
|
115
|
+
bordered = true,
|
|
116
116
|
...props
|
|
117
117
|
},
|
|
118
118
|
ref
|
|
@@ -8,7 +8,7 @@ export const FormGroupContainer = styled.fieldset<{
|
|
|
8
8
|
}>`
|
|
9
9
|
display: flex;
|
|
10
10
|
flex-direction: column;
|
|
11
|
-
background: var(--color-
|
|
11
|
+
background: var(--color-base-100);
|
|
12
12
|
border-radius: var(--rounded-md);
|
|
13
13
|
box-shadow: var(--shadow-md);
|
|
14
14
|
|
|
@@ -24,8 +24,8 @@ export const FormGroupContainer = styled.fieldset<{
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
margin: 0;
|
|
27
|
-
border: 1px solid var(--color-
|
|
28
|
-
border-left: 8px solid ${({ color = '
|
|
27
|
+
border: 1px solid var(--color-base-300);
|
|
28
|
+
border-left: 8px solid ${({ color = 'base' }) => `var(--color-${color})`};
|
|
29
29
|
`;
|
|
30
30
|
|
|
31
31
|
export const FormGroupHeader = styled.div`
|
|
@@ -43,7 +43,7 @@ export const FormGroupHeader = styled.div`
|
|
|
43
43
|
margin: 0;
|
|
44
44
|
font-size: var(--text-sm);
|
|
45
45
|
font-weight: var(--font-normal);
|
|
46
|
-
color: var(--color-
|
|
46
|
+
color: var(--color-base-500);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
& > svg {
|
|
@@ -57,8 +57,8 @@ export const inputCss = css`
|
|
|
57
57
|
font-size: var(--text-lg);
|
|
58
58
|
|
|
59
59
|
border: none;
|
|
60
|
-
color: var(--color-
|
|
61
|
-
background: var(--color-
|
|
60
|
+
color: var(--color-base-900);
|
|
61
|
+
background: var(--color-base-0);
|
|
62
62
|
|
|
63
63
|
box-sizing: border-box;
|
|
64
64
|
width: 100%;
|
|
@@ -73,7 +73,7 @@ export const inputCss = css`
|
|
|
73
73
|
`;
|
|
74
74
|
|
|
75
75
|
export const FormRowLabel = styled.span`
|
|
76
|
-
color: var(--color-
|
|
76
|
+
color: var(--color-base-500);
|
|
77
77
|
font-size: var(--text-base);
|
|
78
78
|
padding: var(--space-1) 0;
|
|
79
79
|
display: flex;
|
|
@@ -86,7 +86,7 @@ export const FormRowLabel = styled.span`
|
|
|
86
86
|
& > svg {
|
|
87
87
|
width: var(--space-4);
|
|
88
88
|
height: var(--space-4);
|
|
89
|
-
fill: var(--color-
|
|
89
|
+
fill: var(--color-base-500);
|
|
90
90
|
flex-shrink: 0;
|
|
91
91
|
}
|
|
92
92
|
`;
|
|
@@ -126,8 +126,8 @@ export const FormRowContainer = styled.label<{
|
|
|
126
126
|
padding: var(--space-1) var(--space-2);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
border: 1px solid var(--color-
|
|
130
|
-
background: var(--color-
|
|
129
|
+
border: 1px solid var(--color-base-200);
|
|
130
|
+
background: var(--color-base-0);
|
|
131
131
|
&:focus-within {
|
|
132
132
|
outline: 2px solid var(--color-primary-500);
|
|
133
133
|
z-index: 1;
|
|
@@ -141,7 +141,7 @@ export const FormRowContainer = styled.label<{
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
& + & {
|
|
144
|
-
border-top: 1px solid var(--color-
|
|
144
|
+
border-top: 1px solid var(--color-base-300);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
& > div > select,
|
|
@@ -149,7 +149,7 @@ export const FormRowContainer = styled.label<{
|
|
|
149
149
|
& > div > input,
|
|
150
150
|
& > div > textarea {
|
|
151
151
|
background: none;
|
|
152
|
-
color: var(--color-
|
|
152
|
+
color: var(--color-base-900);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
`;
|
|
@@ -5,9 +5,9 @@ import { NumericFormat } from 'react-number-format';
|
|
|
5
5
|
export const inputStyle = css`
|
|
6
6
|
font-family: var(--font-sans);
|
|
7
7
|
font-size: inherit;
|
|
8
|
-
color: var(--color-
|
|
9
|
-
background-color: var(--color-
|
|
10
|
-
border: 1px solid var(--color-
|
|
8
|
+
color: var(--color-base-900);
|
|
9
|
+
background-color: var(--color-base-50);
|
|
10
|
+
border: 1px solid var(--color-base-300);
|
|
11
11
|
border-radius: var(--rounded-md);
|
|
12
12
|
padding: var(--space-1);
|
|
13
13
|
width: 100%;
|
|
@@ -25,10 +25,10 @@ export type DropdownContainerProps = {
|
|
|
25
25
|
export const DropdownContainer = styled.div.attrs({
|
|
26
26
|
className: 'DropdownContainer',
|
|
27
27
|
})<DropdownContainerProps>`
|
|
28
|
-
background: var(--color-
|
|
28
|
+
background: var(--color-base-0);
|
|
29
29
|
border-radius: var(--rounded-md);
|
|
30
30
|
box-shadow: var(--shadow-lg);
|
|
31
|
-
outline: 1px solid var(--color-
|
|
31
|
+
outline: 1px solid var(--color-base-200);
|
|
32
32
|
|
|
33
33
|
position: absolute;
|
|
34
34
|
z-index: 1001;
|
|
@@ -28,7 +28,7 @@ export type ModalContainerProps = {
|
|
|
28
28
|
export const ModalContainer = styled.div.attrs({
|
|
29
29
|
className: 'ModalContainer',
|
|
30
30
|
})<ModalContainerProps>`
|
|
31
|
-
background: var(--color-
|
|
31
|
+
background: var(--color-base-100);
|
|
32
32
|
border-radius: var(--rounded-lg);
|
|
33
33
|
box-shadow: var(--shadow-lg);
|
|
34
34
|
display: flex;
|
|
@@ -68,7 +68,7 @@ export const ModalHeader = styled.div.attrs({ className: 'ModalHeader' })`
|
|
|
68
68
|
font-weight: bold;
|
|
69
69
|
font-size: var(--text-lg);
|
|
70
70
|
padding: var(--space-2);
|
|
71
|
-
background-color: var(--color-
|
|
71
|
+
background-color: var(--color-base-200);
|
|
72
72
|
padding: var(--space-4);
|
|
73
73
|
`;
|
|
74
74
|
|
|
@@ -108,7 +108,7 @@ export const ModalFooter = styled.div.attrs({ className: 'ModalFooter' })`
|
|
|
108
108
|
flex-direction: row;
|
|
109
109
|
justify-content: space-between;
|
|
110
110
|
padding: var(--space-2);
|
|
111
|
-
background-color: var(--color-
|
|
111
|
+
background-color: var(--color-base-200);
|
|
112
112
|
padding: var(--space-4);
|
|
113
113
|
`;
|
|
114
114
|
|
|
@@ -25,7 +25,7 @@ export const QuickSearchResultsListContainer = styled.div.attrs({
|
|
|
25
25
|
display: flex;
|
|
26
26
|
flex-direction: column;
|
|
27
27
|
padding: var(--space-2);
|
|
28
|
-
border-right: 1px solid var(--color-
|
|
28
|
+
border-right: 1px solid var(--color-base-200);
|
|
29
29
|
flex: 1;
|
|
30
30
|
overflow: auto;
|
|
31
31
|
`;
|
|
@@ -42,7 +42,7 @@ export const QuickSearchResultsTitle = styled.div.attrs({
|
|
|
42
42
|
font-size: var(--text-sm);
|
|
43
43
|
text-transform: uppercase;
|
|
44
44
|
letter-spacing: 0.1em;
|
|
45
|
-
color: var(--color-
|
|
45
|
+
color: var(--color-base-500);
|
|
46
46
|
`;
|
|
47
47
|
|
|
48
48
|
export const QuickSearchResultsItem = styled.div.attrs({
|
|
@@ -52,7 +52,7 @@ export const QuickSearchResultsItem = styled.div.attrs({
|
|
|
52
52
|
cursor: pointer;
|
|
53
53
|
border-radius: 4px;
|
|
54
54
|
&:hover {
|
|
55
|
-
background-color: var(--color-
|
|
55
|
+
background-color: var(--color-base-100);
|
|
56
56
|
}
|
|
57
57
|
`;
|
|
58
58
|
|
|
@@ -69,7 +69,7 @@ export const QuickSearchResultsDetailsDivider = styled.hr`
|
|
|
69
69
|
margin: var(--space-2) 0;
|
|
70
70
|
height: 1px;
|
|
71
71
|
border: none;
|
|
72
|
-
background-color: var(--color-
|
|
72
|
+
background-color: var(--color-base-200);
|
|
73
73
|
`;
|
|
74
74
|
|
|
75
75
|
export const QuickSearchResultDetailsTitle = styled.div.attrs({
|
|
@@ -92,5 +92,5 @@ export const QuickSearchResultsDetailsTerm = styled.dt.attrs({
|
|
|
92
92
|
text-transform: uppercase;
|
|
93
93
|
font-size: var(--text-sm);
|
|
94
94
|
font-weight: bold;
|
|
95
|
-
color: var(--color-
|
|
95
|
+
color: var(--color-base-500);
|
|
96
96
|
`;
|
|
@@ -5,11 +5,11 @@ export const CardContainer = styled.div.attrs({
|
|
|
5
5
|
})`
|
|
6
6
|
display: flex;
|
|
7
7
|
flex-direction: column;
|
|
8
|
-
background-color: var(--color-
|
|
8
|
+
background-color: var(--color-base-0);
|
|
9
9
|
border-radius: var(--rounded-md);
|
|
10
10
|
box-shadow: var(--shadow-md);
|
|
11
11
|
padding: var(--space-4);
|
|
12
|
-
border: 1px solid var(--color-
|
|
12
|
+
border: 1px solid var(--color-base-100);
|
|
13
13
|
`;
|
|
14
14
|
|
|
15
15
|
export const CardHeader = styled.div.attrs({
|
|
@@ -19,7 +19,7 @@ export const CardHeader = styled.div.attrs({
|
|
|
19
19
|
flex-direction: row;
|
|
20
20
|
align-items: center;
|
|
21
21
|
padding-bottom: var(--space-2);
|
|
22
|
-
border-bottom: 1px solid var(--color-
|
|
22
|
+
border-bottom: 1px solid var(--color-base-200);
|
|
23
23
|
margin-bottom: var(--space-2);
|
|
24
24
|
gap: var(--space-2);
|
|
25
25
|
`;
|
|
@@ -31,7 +31,7 @@ export const CardFooter = styled.div.attrs({
|
|
|
31
31
|
flex-direction: row;
|
|
32
32
|
align-items: center;
|
|
33
33
|
padding-top: var(--space-2);
|
|
34
|
-
border-top: 1px solid var(--color-
|
|
34
|
+
border-top: 1px solid var(--color-base-200);
|
|
35
35
|
margin-top: var(--space-2);
|
|
36
36
|
gap: var(--space-2);
|
|
37
37
|
`;
|
|
@@ -4,13 +4,13 @@ import { ThemeColor } from '../../../providers/ThemeProvider/types';
|
|
|
4
4
|
|
|
5
5
|
const menuContainerCss = css`
|
|
6
6
|
position: absolute;
|
|
7
|
-
color: var(--color-
|
|
7
|
+
color: var(--color-base-900);
|
|
8
8
|
border-radius: var(--rounded-md);
|
|
9
9
|
padding: var(--space-1) 0;
|
|
10
10
|
box-shadow: var(--shadow-lg);
|
|
11
|
-
background-color: var(--color-
|
|
11
|
+
background-color: var(--color-base-100);
|
|
12
12
|
min-width: 20em;
|
|
13
|
-
outline: 1px solid var(--color-
|
|
13
|
+
outline: 1px solid var(--color-base-200);
|
|
14
14
|
display: flex;
|
|
15
15
|
flex-direction: column;
|
|
16
16
|
`;
|
|
@@ -63,30 +63,30 @@ export const MenuItemContainer = styled.div.attrs({
|
|
|
63
63
|
top: 50%;
|
|
64
64
|
transform: translateY(-50%);
|
|
65
65
|
border: 4px solid transparent;
|
|
66
|
-
border-left-color: var(--color-
|
|
66
|
+
border-left-color: var(--color-base-600);
|
|
67
67
|
}
|
|
68
68
|
`}
|
|
69
69
|
|
|
70
70
|
${({ $color, disabled }) =>
|
|
71
71
|
disabled
|
|
72
72
|
? css`
|
|
73
|
-
color: var(--color-
|
|
74
|
-
background-color: var(--color-
|
|
73
|
+
color: var(--color-base-300);
|
|
74
|
+
background-color: var(--color-base-100);
|
|
75
75
|
cursor: default;
|
|
76
76
|
`
|
|
77
77
|
: $color
|
|
78
78
|
? css`
|
|
79
79
|
color: var(--color-${$color}-600);
|
|
80
|
-
background-color: var(--color-
|
|
80
|
+
background-color: var(--color-base-100);
|
|
81
81
|
&:hover {
|
|
82
82
|
background-color: var(--color-${$color}-200);
|
|
83
83
|
}
|
|
84
84
|
`
|
|
85
85
|
: css`
|
|
86
|
-
color: var(--color-
|
|
87
|
-
background-color: var(--color-
|
|
86
|
+
color: var(--color-base-900);
|
|
87
|
+
background-color: var(--color-base-100);
|
|
88
88
|
&:hover {
|
|
89
|
-
background-color: var(--color-
|
|
89
|
+
background-color: var(--color-base-200);
|
|
90
90
|
}
|
|
91
91
|
`}
|
|
92
92
|
|
|
@@ -114,6 +114,6 @@ MenuItemContainer.displayName = 'MenuItemContainer';
|
|
|
114
114
|
export const Divider = styled.div.attrs({
|
|
115
115
|
className: 'Divider',
|
|
116
116
|
})`
|
|
117
|
-
border-top: 1px solid var(--color-
|
|
117
|
+
border-top: 1px solid var(--color-base-200);
|
|
118
118
|
margin: var(--space-1) 0;
|
|
119
119
|
`;
|
|
@@ -22,10 +22,10 @@ export const StyledLabel = styled.span.withConfig({
|
|
|
22
22
|
}
|
|
23
23
|
`
|
|
24
24
|
: css`
|
|
25
|
-
background-color: var(--color-
|
|
26
|
-
color: var(--color-
|
|
25
|
+
background-color: var(--color-base-100);
|
|
26
|
+
color: var(--color-base-700);
|
|
27
27
|
svg {
|
|
28
|
-
fill: var(--color-
|
|
28
|
+
fill: var(--color-base-700);
|
|
29
29
|
}
|
|
30
30
|
`}
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ export const StyledLabel = styled.span.withConfig({
|
|
|
33
33
|
bordered
|
|
34
34
|
? css`
|
|
35
35
|
border: 1px solid
|
|
36
|
-
${color ? `var(--color-${color}-200)` : 'var(--color-
|
|
36
|
+
${color ? `var(--color-${color}-200)` : 'var(--color-base-200)'};
|
|
37
37
|
`
|
|
38
38
|
: 'border: none;'}
|
|
39
39
|
|
|
@@ -44,7 +44,7 @@ const colorsMap: Record<
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
export const Message: FC<MessageProps> = ({ children, title, type }) => {
|
|
47
|
-
const { iconComponent: Icon, baseColor = '
|
|
47
|
+
const { iconComponent: Icon, baseColor = 'base' } = colorsMap[type];
|
|
48
48
|
return (
|
|
49
49
|
<styles.MessageContainer $baseColor={baseColor}>
|
|
50
50
|
<Icon className="MessageIcon" />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC, useState } from 'react';
|
|
1
|
+
import { FC, useEffect, useState } from 'react';
|
|
2
2
|
import { TabContentContainer, TabsViewContainer } from './styles';
|
|
3
3
|
|
|
4
4
|
import { Tab } from './types';
|
|
@@ -7,12 +7,21 @@ import { TabsList } from './TabsList';
|
|
|
7
7
|
type TabsViewProps = {
|
|
8
8
|
tabs: Tab[];
|
|
9
9
|
overflow?: boolean;
|
|
10
|
+
onSelectedTabChanged?: (tab: Tab, index: number) => void;
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
export const TabsView: FC<TabsViewProps> = ({
|
|
13
|
+
export const TabsView: FC<TabsViewProps> = ({
|
|
14
|
+
tabs,
|
|
15
|
+
overflow = false,
|
|
16
|
+
onSelectedTabChanged,
|
|
17
|
+
}) => {
|
|
13
18
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
14
19
|
const activeTab = tabs[activeIndex];
|
|
15
20
|
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
onSelectedTabChanged?.(tabs[activeIndex], activeIndex);
|
|
23
|
+
}, [activeIndex, tabs, onSelectedTabChanged]);
|
|
24
|
+
|
|
16
25
|
return (
|
|
17
26
|
<TabsViewContainer>
|
|
18
27
|
<TabsList
|
|
@@ -32,15 +32,20 @@ export const TabContainer = styled.div<{
|
|
|
32
32
|
gap: var(--space-2);
|
|
33
33
|
cursor: pointer;
|
|
34
34
|
padding: 0 var(--space-2);
|
|
35
|
+
color: var(--color-base-800);
|
|
36
|
+
|
|
37
|
+
svg {
|
|
38
|
+
height: var(--space-4);
|
|
39
|
+
width: var(--space-4);
|
|
40
|
+
fill: var(--color-base-800);
|
|
41
|
+
}
|
|
35
42
|
|
|
36
43
|
${({ $color = 'primary' }) => css`
|
|
37
44
|
&:hover {
|
|
38
45
|
color: var(--color-${getColorWithIntensity($color, 500)});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
height: var(--space-4);
|
|
43
|
-
width: var(--space-4);
|
|
46
|
+
svg {
|
|
47
|
+
fill: var(--color-${getColorWithIntensity($color, 500)});
|
|
48
|
+
}
|
|
44
49
|
}
|
|
45
50
|
`};
|
|
46
51
|
|
|
@@ -49,7 +54,9 @@ export const TabContainer = styled.div<{
|
|
|
49
54
|
css`
|
|
50
55
|
border-bottom: var(--space-0_5) solid;
|
|
51
56
|
color: var(--color-${getColorWithIntensity($color, 500)});
|
|
52
|
-
|
|
57
|
+
svg {
|
|
58
|
+
fill: var(--color-${getColorWithIntensity($color, 500)});
|
|
59
|
+
}
|
|
53
60
|
`}
|
|
54
61
|
`;
|
|
55
62
|
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useCallback, useState } from 'react';
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
3
2
|
|
|
4
3
|
import { DeepPartial } from '../typings';
|
|
4
|
+
import { defaultsDeep } from 'lodash';
|
|
5
5
|
|
|
6
6
|
export const useMutableState = <T>(initialValue: T | (() => T) = {} as T) => {
|
|
7
7
|
const [value, setValue] = useState<T>(initialValue);
|
|
8
8
|
|
|
9
|
-
const setPartialValue = useCallback(
|
|
10
|
-
(
|
|
11
|
-
|
|
12
|
-
const newValue = merge(oldValue, partialValue);
|
|
13
|
-
setValue(() => newValue);
|
|
14
|
-
},
|
|
15
|
-
[value]
|
|
16
|
-
);
|
|
9
|
+
const setPartialValue = useCallback((partialValue: DeepPartial<T>) => {
|
|
10
|
+
setValue((value) => defaultsDeep({}, partialValue, value));
|
|
11
|
+
}, []);
|
|
17
12
|
|
|
18
|
-
return
|
|
13
|
+
return useMemo(
|
|
14
|
+
() => [value, setValue, setPartialValue] as const,
|
|
15
|
+
[setPartialValue, value]
|
|
16
|
+
);
|
|
19
17
|
};
|
|
@@ -4,6 +4,7 @@ import styled from 'styled-components';
|
|
|
4
4
|
|
|
5
5
|
type ThemeProviderProps = {
|
|
6
6
|
$theme?: Theme;
|
|
7
|
+
$darkTheme?: Theme;
|
|
7
8
|
$darkMode?: boolean;
|
|
8
9
|
};
|
|
9
10
|
|
|
@@ -40,16 +41,18 @@ const getThemeColorsCss = (colors: Theme['colors'], darkMode = false) => {
|
|
|
40
41
|
|
|
41
42
|
export const ThemeProvider = styled.div<ThemeProviderProps>`
|
|
42
43
|
display: contents;
|
|
43
|
-
${({ $theme = {}, $darkMode }) => {
|
|
44
|
+
${({ $theme = {}, $darkTheme, $darkMode }) => {
|
|
45
|
+
const theme = $darkMode ? $darkTheme ?? $theme : $theme;
|
|
46
|
+
const darkMode = !$darkTheme && $darkMode;
|
|
44
47
|
return [
|
|
45
|
-
getThemeColorsCss(
|
|
46
|
-
getThemeValuesCss('font',
|
|
47
|
-
getThemeValuesCss('text',
|
|
48
|
-
getThemeValuesCss('weight',
|
|
49
|
-
getThemeValuesCss('space',
|
|
50
|
-
getThemeValuesCss('size',
|
|
51
|
-
getThemeValuesCss('rounded',
|
|
52
|
-
getThemeValuesCss('shadow',
|
|
48
|
+
getThemeColorsCss(theme.colors, darkMode),
|
|
49
|
+
getThemeValuesCss('font', theme.fonts),
|
|
50
|
+
getThemeValuesCss('text', theme.texts),
|
|
51
|
+
getThemeValuesCss('weight', theme.weights),
|
|
52
|
+
getThemeValuesCss('space', theme.spaces),
|
|
53
|
+
getThemeValuesCss('size', theme.sizes),
|
|
54
|
+
getThemeValuesCss('rounded', theme.rounded),
|
|
55
|
+
getThemeValuesCss('shadow', theme.shadows),
|
|
53
56
|
].join('');
|
|
54
57
|
}}
|
|
55
58
|
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
|
+
Theme,
|
|
2
3
|
ThemeColor,
|
|
3
4
|
ThemeColorIntensity,
|
|
4
5
|
ThemeColorWithIntensity,
|
|
5
6
|
} from './types';
|
|
6
7
|
|
|
8
|
+
import { DeepPartial } from '../../typings';
|
|
9
|
+
import { defaultTheme } from './defaultTheme';
|
|
10
|
+
import { defaultsDeep } from 'lodash';
|
|
11
|
+
|
|
12
|
+
export const extendTheme = (
|
|
13
|
+
base: Theme,
|
|
14
|
+
override?: DeepPartial<Theme>
|
|
15
|
+
): Theme => defaultsDeep({}, override, base);
|
|
16
|
+
|
|
17
|
+
export const extendDefaultTheme = (override?: DeepPartial<Theme>): Theme =>
|
|
18
|
+
extendTheme(defaultTheme, override);
|
|
19
|
+
|
|
7
20
|
export const getColor = (
|
|
8
21
|
colorWithIntensity: ThemeColorWithIntensity
|
|
9
22
|
): ThemeColor => {
|
|
@@ -14,12 +14,15 @@ import {
|
|
|
14
14
|
|
|
15
15
|
import { PortalsProvider } from '../PortalsProvider';
|
|
16
16
|
import { SettingsProvider } from '../SettingsProvider';
|
|
17
|
+
import { Theme } from '../ThemeProvider/types';
|
|
17
18
|
import { ThemeProvider } from '../ThemeProvider/ThemeProvider';
|
|
18
19
|
import { TrackingProvider } from '../TrackingProvider';
|
|
19
20
|
import { defaultTheme } from '../ThemeProvider/defaultTheme';
|
|
20
21
|
|
|
21
22
|
export type UiProvidersProps = PropsWithChildren<{
|
|
22
|
-
|
|
23
|
+
theme?: Theme;
|
|
24
|
+
darkTheme?: Theme;
|
|
25
|
+
darkMode?: boolean;
|
|
23
26
|
}>;
|
|
24
27
|
|
|
25
28
|
export type UiContextType = {
|
|
@@ -32,7 +35,12 @@ export const UiContext = createContext<UiContextType>({
|
|
|
32
35
|
getElementScreenRect: () => new DOMRect(),
|
|
33
36
|
});
|
|
34
37
|
|
|
35
|
-
export const UiProviders: FC<UiProvidersProps> = ({
|
|
38
|
+
export const UiProviders: FC<UiProvidersProps> = ({
|
|
39
|
+
theme = defaultTheme,
|
|
40
|
+
darkTheme,
|
|
41
|
+
darkMode,
|
|
42
|
+
children,
|
|
43
|
+
}) => {
|
|
36
44
|
const rootRef = useRef<HTMLDivElement | null>(null);
|
|
37
45
|
|
|
38
46
|
const getElementScreenRect = useCallback((element: HTMLElement) => {
|
|
@@ -53,7 +61,7 @@ export const UiProviders: FC<UiProvidersProps> = ({ $darkMode, children }) => {
|
|
|
53
61
|
);
|
|
54
62
|
|
|
55
63
|
return (
|
|
56
|
-
<ThemeProvider $theme={
|
|
64
|
+
<ThemeProvider $theme={theme} $darkTheme={darkTheme} $darkMode={darkMode}>
|
|
57
65
|
<UiContext.Provider value={value}>
|
|
58
66
|
<styles.Root ref={rootRef}>
|
|
59
67
|
<SettingsProvider>
|