@fibery/ui-kit 1.18.0 → 1.20.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 +9 -7
- package/src/a11y-color.ts +9 -6
- package/src/antd/styles.ts +6 -6
- package/src/back-button.tsx +1 -1
- package/src/{Button → button}/button.tsx +5 -5
- package/src/button.tsx +1 -1
- package/src/design-system.ts +83 -34
- package/src/emoji-picker/emoji-picker-content-with-color.tsx +4 -4
- package/src/emoji-picker/emoji-picker.tsx +2 -2
- package/src/emoji-picker/icon-emoji-picker.tsx +1 -1
- package/src/emoji-picker/primitives/category.tsx +3 -3
- package/src/emoji-picker/primitives/emoji.tsx +26 -3
- package/src/emoji-picker/primitives/footer.tsx +1 -1
- package/src/emoji-picker/primitives/header.tsx +1 -1
- package/src/emoji-picker/primitives/layout.ts +2 -2
- package/src/emoji-picker/primitives/search.tsx +6 -6
- package/src/emoji-picker/primitives/skin-tone.tsx +1 -1
- package/src/error-alert.tsx +4 -4
- package/src/form-field-loader.tsx +3 -3
- package/src/icons/Icon.tsx +2 -2
- package/src/icons/ast/AlertTriangle.ts +8 -0
- package/src/icons/ast/BellRinging.ts +1 -1
- package/src/icons/ast/Clock.ts +8 -0
- package/src/icons/ast/ClockAlarm.ts +8 -0
- package/src/icons/ast/Copy.ts +1 -1
- package/src/icons/ast/DragBlockHandleSingle.ts +8 -0
- package/src/icons/ast/ExtensionComments.ts +1 -1
- package/src/icons/ast/Eye.ts +8 -0
- package/src/icons/ast/Monitor.ts +8 -0
- package/src/icons/ast/NetworkAdd.ts +8 -0
- package/src/icons/ast/RemovePeople.ts +8 -0
- package/src/icons/ast/RicheditorCommentCreate.ts +1 -1
- package/src/icons/ast/RicheditorMarkTextBackgroundColor.ts +8 -0
- package/src/icons/ast/Success.ts +8 -0
- package/src/icons/ast/WarningTriangle.ts +8 -0
- package/src/icons/ast/index.tsx +11 -1
- package/src/icons/react/AlertTriangle.tsx +12 -0
- package/src/icons/react/Clock.tsx +12 -0
- package/src/icons/react/ClockAlarm.tsx +12 -0
- package/src/icons/react/DragBlockHandleSingle.tsx +12 -0
- package/src/icons/react/Eye.tsx +12 -0
- package/src/icons/react/Monitor.tsx +12 -0
- package/src/icons/react/NetworkAdd.tsx +12 -0
- package/src/icons/react/RemovePeople.tsx +12 -0
- package/src/icons/react/RicheditorMarkTextBackgroundColor.tsx +12 -0
- package/src/icons/react/Success.tsx +12 -0
- package/src/icons/react/WarningTriangle.tsx +12 -0
- package/src/icons/react/index.tsx +11 -1
- package/src/loaders.tsx +10 -10
- package/src/loading-sausage.tsx +2 -2
- package/src/media-query-utils.ts +1 -1
- package/src/{Select → select}/custom-select-partials/clear-indicator.tsx +1 -1
- package/src/{Select → select}/custom-select-partials/group-heading.tsx +2 -2
- package/src/{Select → select}/custom-select-partials/menu.tsx +9 -1
- package/src/{Select → select}/custom-select-partials/no-option-message.tsx +1 -1
- package/src/select/custom-select-partials/option.tsx +122 -0
- package/src/{Select → select}/index.tsx +40 -5
- package/src/{Select → select}/select-in-popover.tsx +14 -14
- package/src/{Select → select}/styles.ts +15 -9
- package/src/toast/primitives.tsx +46 -28
- package/src/toast/toast-action.tsx +28 -0
- package/src/toast/toast-provider.tsx +15 -0
- package/src/toast/toast-queue.ts +117 -0
- package/src/toast/toast.tsx +121 -0
- package/src/toast/toaster.tsx +35 -0
- package/src/toast/utils/toastify-item-name.ts +6 -0
- package/src/tooltip.tsx +2 -2
- package/src/Select/custom-select-partials/option.tsx +0 -92
- package/src/icons/ast/RicheditorMarkHighlight.ts +0 -8
- package/src/icons/react/RicheditorMarkHighlight.tsx +0 -12
- package/src/toast/index.tsx +0 -47
- /package/src/{Button → button}/actions-button-compact.tsx +0 -0
- /package/src/{Button → button}/actions-button.tsx +0 -0
- /package/src/{Button → button}/add-button.tsx +0 -0
- /package/src/{Button → button}/back-button.tsx +0 -0
- /package/src/{Button → button}/button-base.tsx +0 -0
- /package/src/{Button → button}/button-group.tsx +0 -0
- /package/src/{Button → button}/icon-button.tsx +0 -0
- /package/src/{Select → select}/custom-select-partials/drop-down-indicator.tsx +0 -0
- /package/src/{Select → select}/select-control-settings-context.tsx +0 -0
- /package/src/{Select → select}/select-loader.tsx +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fibery/ui-kit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"main": "index.ts",
|
|
5
5
|
"private": false,
|
|
6
6
|
"files": [
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"src/loaders.tsx",
|
|
18
18
|
"src/loading-sausage.tsx",
|
|
19
19
|
"src/icons/**/*.ts*",
|
|
20
|
-
"src/
|
|
20
|
+
"src/select",
|
|
21
21
|
"src/error-alert.tsx",
|
|
22
22
|
"src/pallete.ts",
|
|
23
23
|
"src/tooltip.tsx",
|
|
24
24
|
"src/back-button.tsx",
|
|
25
|
-
"src/
|
|
25
|
+
"src/button",
|
|
26
26
|
"src/emoji-picker/**/*.ts*",
|
|
27
27
|
"src/toast/**/*.ts*",
|
|
28
28
|
"src/a11y-color.ts"
|
|
@@ -48,11 +48,12 @@
|
|
|
48
48
|
"cmdk": "0.2.0",
|
|
49
49
|
"color-hash": "1.0.3",
|
|
50
50
|
"d3-shape": "1.3.7",
|
|
51
|
-
"date-fns": "
|
|
51
|
+
"date-fns": "2.29.2",
|
|
52
52
|
"invariant": "2.2.4",
|
|
53
53
|
"lodash": "4.17.21",
|
|
54
54
|
"md5": "2.2.1",
|
|
55
55
|
"moment": "2.29.4",
|
|
56
|
+
"popper-max-size-modifier": "0.2.0",
|
|
56
57
|
"prop-types": "15.7.2",
|
|
57
58
|
"rc-input-number": "7.3.11",
|
|
58
59
|
"rc-menu": "9.8.1",
|
|
@@ -67,8 +68,8 @@
|
|
|
67
68
|
"screenfull": "6.0.1",
|
|
68
69
|
"ua-parser-js": "0.7.24",
|
|
69
70
|
"@fibery/helpers": "1.2.0",
|
|
70
|
-
"@fibery/
|
|
71
|
-
"@fibery/
|
|
71
|
+
"@fibery/react": "1.3.0",
|
|
72
|
+
"@fibery/emoji-data": "2.2.1"
|
|
72
73
|
},
|
|
73
74
|
"peerDependencies": {
|
|
74
75
|
"react": "^18.2.0",
|
|
@@ -85,6 +86,7 @@
|
|
|
85
86
|
"@types/chroma-js": "2.1.3",
|
|
86
87
|
"@types/color-hash": "1.0.2",
|
|
87
88
|
"@types/invariant": "2.2.34",
|
|
89
|
+
"@types/jest": "27.0.1",
|
|
88
90
|
"@types/lodash": "4.14.172",
|
|
89
91
|
"@types/prop-types": "15.7.5",
|
|
90
92
|
"@types/react": "18.0.26",
|
|
@@ -101,7 +103,7 @@
|
|
|
101
103
|
"typescript": "5.1.6",
|
|
102
104
|
"unist-util-reduce": "0.2.2",
|
|
103
105
|
"@fibery/babel-preset": "7.3.0",
|
|
104
|
-
"@fibery/eslint-config": "8.
|
|
106
|
+
"@fibery/eslint-config": "8.5.0"
|
|
105
107
|
},
|
|
106
108
|
"jest": {
|
|
107
109
|
"testEnvironment": "jsdom",
|
package/src/a11y-color.ts
CHANGED
|
@@ -59,23 +59,26 @@ const checkColor = (colorValue: string) => {
|
|
|
59
59
|
* @return {string} - The closest hex color for `toMakeA11y` on `background`
|
|
60
60
|
*/
|
|
61
61
|
export function a11yColor(toMakeA11y: string, background: string, minimumContrast = 3.0) {
|
|
62
|
+
const key = toMakeA11y + background + minimumContrast;
|
|
63
|
+
if (cache.has(key)) {
|
|
64
|
+
return cache.get(key);
|
|
65
|
+
}
|
|
62
66
|
if (!checkColor(toMakeA11y) || !checkColor(background)) {
|
|
67
|
+
cache.put(key, toMakeA11y);
|
|
63
68
|
return toMakeA11y;
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
if (minimumContrast < 0 && minimumContrast > 21) {
|
|
67
72
|
throw new Error(`Minimum contrast must be a number between 0 and 21. It was ${minimumContrast}`);
|
|
68
73
|
}
|
|
69
|
-
const key = toMakeA11y + background + minimumContrast;
|
|
70
|
-
if (cache.has(key)) {
|
|
71
|
-
return cache.get(key);
|
|
72
|
-
}
|
|
73
74
|
const a11y = chroma(toMakeA11y);
|
|
74
75
|
const bg = chroma(background);
|
|
75
76
|
|
|
76
77
|
// Check the ratio straight away, if it passes return the value as hex
|
|
77
78
|
if (chroma.contrast(background, toMakeA11y) >= minimumContrast) {
|
|
78
|
-
|
|
79
|
+
const val = a11y.hex();
|
|
80
|
+
cache.put(key, val);
|
|
81
|
+
return val;
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
// Ratio didn't pass so we need to find the nearest color
|
|
@@ -142,6 +145,6 @@ export function a11yColor(toMakeA11y: string, background: string, minimumContras
|
|
|
142
145
|
minLightness = midLightness;
|
|
143
146
|
}
|
|
144
147
|
}
|
|
145
|
-
|
|
148
|
+
cache.put(key, foundColor);
|
|
146
149
|
return foundColor;
|
|
147
150
|
}
|
package/src/antd/styles.ts
CHANGED
|
@@ -27,8 +27,8 @@ export const inputOverrides = {
|
|
|
27
27
|
minHeight: layout.inputHeight,
|
|
28
28
|
paddingTop: 0,
|
|
29
29
|
paddingBottom: 0,
|
|
30
|
-
paddingLeft: space.
|
|
31
|
-
paddingRight: space.
|
|
30
|
+
paddingLeft: space.s12,
|
|
31
|
+
paddingRight: space.s12,
|
|
32
32
|
border: 0,
|
|
33
33
|
borderColor: colors.transparent,
|
|
34
34
|
transition: `box-shadow ${transition}`,
|
|
@@ -114,8 +114,8 @@ export const inputStyles = css`
|
|
|
114
114
|
"& .ant-input.ant-input-disabled": inputOverrides.disabled,
|
|
115
115
|
},
|
|
116
116
|
"& textarea.ant-input": {
|
|
117
|
-
paddingTop: space.
|
|
118
|
-
paddingBottom: space.
|
|
117
|
+
paddingTop: space.s8,
|
|
118
|
+
paddingBottom: space.s8,
|
|
119
119
|
},
|
|
120
120
|
"& .ant-select-disabled .ant-select-selection": {
|
|
121
121
|
backgroundColor: colors.transparent,
|
|
@@ -128,7 +128,7 @@ export const inputStyles = css`
|
|
|
128
128
|
"&& input::placeholder, && textarea::placeholder": {
|
|
129
129
|
color: themeVars.inputPlaceholderTextColor,
|
|
130
130
|
},
|
|
131
|
-
"& .ant-input-affix-wrapper .ant-input-prefix": {left: space.
|
|
132
|
-
"& .ant-input-affix-wrapper .ant-input:not(:first-child)": {paddingLeft: space.
|
|
131
|
+
"& .ant-input-affix-wrapper .ant-input-prefix": {left: space.s6},
|
|
132
|
+
"& .ant-input-affix-wrapper .ant-input:not(:first-child)": {paddingLeft: space.s6 + space.s24 + space.s8}, // Match TitlePreview spacing
|
|
133
133
|
}}
|
|
134
134
|
`;
|
package/src/back-button.tsx
CHANGED
|
@@ -119,11 +119,11 @@ const shortcutStyle = css`
|
|
|
119
119
|
...textStyles.small,
|
|
120
120
|
color: "currentColor",
|
|
121
121
|
borderRadius: border.radius4,
|
|
122
|
-
paddingLeft: space.
|
|
123
|
-
paddingRight: space.
|
|
124
|
-
paddingBottom: space.
|
|
125
|
-
marginRight: -space.
|
|
126
|
-
marginLeft: space.
|
|
122
|
+
paddingLeft: space.s4,
|
|
123
|
+
paddingRight: space.s4,
|
|
124
|
+
paddingBottom: space.s2,
|
|
125
|
+
marginRight: -space.s4,
|
|
126
|
+
marginLeft: space.s2,
|
|
127
127
|
opacity: opacity.opacity80,
|
|
128
128
|
display: "inline-block",
|
|
129
129
|
}}
|
package/src/button.tsx
CHANGED
package/src/design-system.ts
CHANGED
|
@@ -262,13 +262,16 @@ export const themeColors = {
|
|
|
262
262
|
getOpacities(slateDark.slate1).opacity40
|
|
263
263
|
}`,
|
|
264
264
|
],
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
265
|
+
colorBgListItemGeneral: [transparent, transparent],
|
|
266
|
+
colorBgListItemGeneralHover: [slate.slate3, slateDark.slate4],
|
|
267
|
+
colorBgListItemGeneralFocus: [slate.slate4, slateDark.slate6],
|
|
268
|
+
colorBgListItemGeneralSelected: [indigo.indigo3, indigoDark.indigo4],
|
|
269
|
+
colorBgListItemGeneralSelectedHover: [indigo.indigo4, indigoDark.indigo6],
|
|
270
|
+
colorBgListItemGeneralSelectedFocus: [indigo.indigo4, indigoDark.indigo6],
|
|
271
|
+
colorBgListItemGeneralDisabled: [transparent, transparent],
|
|
272
|
+
colorTextListItemGeneralDisabled: [slate.slate9, slateDark.slate9],
|
|
273
|
+
colorBgListItemGeneralSelectedDisabled: [indigo.indigo5, indigoDark.indigo5],
|
|
274
|
+
opacityListItemGeneralDisabled: [`${opacity.opacity40}`, `${opacity.opacity40}`],
|
|
272
275
|
|
|
273
276
|
// Search Items
|
|
274
277
|
colorBgSearchItemHover: [slate.slate4, slateDark.slate4],
|
|
@@ -308,13 +311,21 @@ export const themeColors = {
|
|
|
308
311
|
// Selected Entity Box State
|
|
309
312
|
colorBgEntityBoxSelected: [indigo.indigo2, indigoDark.indigo3],
|
|
310
313
|
shadowStrokeEntityBoxSelected: [
|
|
311
|
-
`0 0 0 1px ${indigo.indigo9}, 0 0 0 3px ${getOpacities(indigo.indigo9).opacity40}`,
|
|
314
|
+
`0 0 0 1px ${getOpacities(indigo.indigo9).opacity40}, 0 0 0 3px ${getOpacities(indigo.indigo9).opacity40}`,
|
|
312
315
|
`0 0 0 1px ${indigoDark.indigo9}, 0 0 0 3px ${getOpacities(indigoDark.indigo9).opacity40}`,
|
|
313
316
|
],
|
|
314
317
|
// :hover
|
|
315
318
|
colorBgEntityBoxSelectedHover: [indigo.indigo3, indigoDark.indigo3],
|
|
319
|
+
shadowStrokeEntityBoxSelectedHover: [
|
|
320
|
+
`0 0 0 1px ${getOpacities(indigo.indigo9).opacity60}, 0 0 0 3px ${getOpacities(indigo.indigo9).opacity40}`,
|
|
321
|
+
`0 0 0 1px ${indigoDark.indigo9}, 0 0 0 3px ${getOpacities(indigoDark.indigo9).opacity40}`,
|
|
322
|
+
],
|
|
316
323
|
//::drag
|
|
317
324
|
colorBgEntityBoxSelectedDrag: [indigo.indigo3, indigoDark.indigo3],
|
|
325
|
+
shadowStrokeEntityBoxSelectedDrag: [
|
|
326
|
+
`0 0 0 1px ${getOpacities(indigo.indigo9).opacity40}, 0 0 0 3px ${getOpacities(indigo.indigo9).opacity40}`,
|
|
327
|
+
`0 0 0 1px ${indigoDark.indigo9}, 0 0 0 3px ${getOpacities(indigoDark.indigo9).opacity40}`,
|
|
328
|
+
],
|
|
318
329
|
// Disabled Entity Box State (done)
|
|
319
330
|
opacityEntityBoxDisabled: [`${opacity.opacity65}`, `${opacity.opacity65}`],
|
|
320
331
|
// :hover
|
|
@@ -337,6 +348,11 @@ export const themeColors = {
|
|
|
337
348
|
`0 0 0 1px ${getOpacities(slateDark.slate2).opacity10}, 0 2px 4px -4px ${getOpacities(slateDark.slate2).opacity20}`,
|
|
338
349
|
],
|
|
339
350
|
|
|
351
|
+
colorBgMenuHeaderAvatar: [whiteA.whiteA0, slateDark.slate2],
|
|
352
|
+
shadowMenuHeaderAvatar: [
|
|
353
|
+
`0px 1px 4px ${getOpacities(slate.slate11).opacity10}, 0 0 0 1px ${getOpacities(slate.slate5).opacity50}`,
|
|
354
|
+
`0 0 0 1px ${getOpacities(slateDark.slate9).opacity20}`,
|
|
355
|
+
],
|
|
340
356
|
// Main Menu Items Styles and States
|
|
341
357
|
// Dragged
|
|
342
358
|
opacityMenuItemDragged: [`${opacity.opacity40}`, `${opacity.opacity40}`],
|
|
@@ -354,6 +370,8 @@ export const themeColors = {
|
|
|
354
370
|
colorBgMenuItemSelectedHover: [indigo.indigo6, indigoDark.indigo6],
|
|
355
371
|
// :focus, :focus:hover
|
|
356
372
|
colorBgMenuItemSelectedFocused: [indigo.indigo6, indigoDark.indigo6],
|
|
373
|
+
colorBgFieldEditorContainer: [slate.slate2, slateDark.slate3],
|
|
374
|
+
colorBgFieldEditorLinkEqualSign: [slate.slate6, slateDark.slate2],
|
|
357
375
|
allowedDropColor: [getOpacities(slate.slate3).opacity80, getOpacities(slateDark.slate3).opacity80],
|
|
358
376
|
relationViewBgColor: [slate.slate2, slateDark.slate3],
|
|
359
377
|
unitBg: [slate.slate3, slateDark.slate6],
|
|
@@ -396,10 +414,10 @@ export const themeColors = {
|
|
|
396
414
|
progressIconFill: [getOpacities(slate.slate12).opacity80, getOpacities(slateDark.slate12).opacity80],
|
|
397
415
|
progressIconDoneBg: [getOpacities(slate.slate12).opacity80, getOpacities(slateDark.slate12).opacity90],
|
|
398
416
|
progressIconDoneFill: [getOpacities(slate.slate1).opacity95, getOpacities(slateDark.slate1).opacity80],
|
|
399
|
-
instrumentsMenuBg: [getOpacities(whiteA.whiteA0).
|
|
417
|
+
instrumentsMenuBg: [getOpacities(whiteA.whiteA0).opacity95, getOpacities(slateDark.slate4).opacity95],
|
|
400
418
|
instrumentsMenuShadow: [
|
|
401
|
-
`0 0 0 1px ${getOpacities(slate.slate10).opacity10}, 0 2px
|
|
402
|
-
`
|
|
419
|
+
`0 0 0 1px ${getOpacities(slate.slate10).opacity10}, 0 2px 8px -6px ${getOpacities(slate.slate10).opacity30}`,
|
|
420
|
+
`0 0 0 1px ${getOpacities(slateDark.slate1).opacity10}, 0 2px 8px -6px ${getOpacities(slateDark.slate1).opacity40}`,
|
|
403
421
|
],
|
|
404
422
|
selectedColorBorder: [getOpacities(slate.slate6).opacity50, getOpacities(slate.slate6).opacity20],
|
|
405
423
|
formBg: [slate.slate2, slateDark.slate2],
|
|
@@ -411,9 +429,9 @@ export const themeColors = {
|
|
|
411
429
|
filterGroup1Bg: [slate.slate2, slateDark.slate6],
|
|
412
430
|
filterGroup2Bg: [slate.slate3, slateDark.slate7],
|
|
413
431
|
filterGroupBorder: [blackA.blackA3, whiteA.whiteA3],
|
|
414
|
-
colorBgNotificationHover: [slate.
|
|
415
|
-
colorBgNotificationSelected: [indigo.
|
|
416
|
-
colorBgNotificationSelectedHover: [indigo.
|
|
432
|
+
colorBgNotificationHover: [slate.slate3, slateDark.slate4],
|
|
433
|
+
colorBgNotificationSelected: [indigo.indigo3, indigoDark.indigo4],
|
|
434
|
+
colorBgNotificationSelectedHover: [indigo.indigo4, indigoDark.indigo6],
|
|
417
435
|
disabledInversedTextColor: [shades.opacity25, lights.opacity25],
|
|
418
436
|
danger: [red.red9, redDark.red10],
|
|
419
437
|
active: [red.red9, redDark.red10],
|
|
@@ -436,7 +454,7 @@ export const themeColors = {
|
|
|
436
454
|
richTextTableBorder: [blackA.blackA5, whiteA.whiteA7],
|
|
437
455
|
gridHeaderBgColor: [slate.slate2, slateDark.slate3],
|
|
438
456
|
gridHeaderHoverBgColor: [slate.slate3, slateDark.slate4],
|
|
439
|
-
gridHeaderTextColor: [slate.
|
|
457
|
+
gridHeaderTextColor: [slate.slate10, slateDark.slate11],
|
|
440
458
|
gridCellBgColor: [whiteA.whiteA0, slateDark.slate2],
|
|
441
459
|
gridCellBorderColor: [slate.slate5, slateDark.slate6],
|
|
442
460
|
gridPinnedCellBorderColor: [slate.slate8, slateDark.slate8],
|
|
@@ -448,7 +466,7 @@ export const themeColors = {
|
|
|
448
466
|
gridDisabledSelectedCellBgColor: [indigo.indigo4, indigoDark.indigo5],
|
|
449
467
|
gridActiveCellBorderColor: [indigo.indigo8, indigoDark.indigo9],
|
|
450
468
|
colorBgReactionsDefault: [slate.slate3, slateDark.slate6],
|
|
451
|
-
colorBgReactionsHover: [
|
|
469
|
+
colorBgReactionsHover: [whiteA.whiteA0, slateDark.slate2],
|
|
452
470
|
colorBorderReactionsHover: [slate.slate8, slateDark.slate9],
|
|
453
471
|
colorBgReactionsSelectedDefault: [indigo.indigo3, indigoDark.indigo8],
|
|
454
472
|
colorBorderReactionsSelectedDefault: [indigo.indigo8, indigoDark.indigo8],
|
|
@@ -456,6 +474,7 @@ export const themeColors = {
|
|
|
456
474
|
colorBorderReactionsSelectedHover: [indigo.indigo9, indigo.indigo10],
|
|
457
475
|
colorTextReactionsSelected: [indigo.indigo10, slateDark.slate12],
|
|
458
476
|
colorBgToastDefault: [slate.slate1, slateDark.slate1],
|
|
477
|
+
colorBgDbTabHover: [slate.slate3, slateDark.slate4],
|
|
459
478
|
} as const;
|
|
460
479
|
|
|
461
480
|
type ThemeDefs = typeof themeColors;
|
|
@@ -610,10 +629,24 @@ export const getLinkedHighlightBackgroundColor = _.memoize(
|
|
|
610
629
|
(themeMode, color) => `${themeMode}-${color}`
|
|
611
630
|
);
|
|
612
631
|
|
|
632
|
+
export const getLinkedHighlightDecorationBackgroundColor = _.memoize(
|
|
633
|
+
(themeColors: ThemeColors, color: string): string => {
|
|
634
|
+
switch (themeColors.mode) {
|
|
635
|
+
case "dark":
|
|
636
|
+
return makeChromaColor(color).alpha(0.9).luminance(0.5).darken(0.2).css();
|
|
637
|
+
case "light":
|
|
638
|
+
return makeChromaColor(color).alpha(0.9).luminance(0.5).css();
|
|
639
|
+
default:
|
|
640
|
+
return makeChromaColor(color).alpha(0.9).luminance(0.5).css();
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
(themeMode, color) => `${themeMode}-${color}`
|
|
644
|
+
);
|
|
645
|
+
|
|
613
646
|
export const getEnumBackgroundColor = _.memoize(
|
|
614
647
|
(mode: ThemeMode, color: string) => {
|
|
615
648
|
return getThemeValue(mode, {
|
|
616
|
-
light: a11yColor(getOpacities(color).
|
|
649
|
+
light: a11yColor(getOpacities(color).opacity15, lightColors.whiteColor, 1),
|
|
617
650
|
dark: a11yColor(getOpacities(color).opacity30, darkColors.menuBg, 1.3),
|
|
618
651
|
});
|
|
619
652
|
},
|
|
@@ -670,24 +703,42 @@ export const colors = {
|
|
|
670
703
|
} as const;
|
|
671
704
|
|
|
672
705
|
export const space = {
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
706
|
+
spaceAuto: "auto",
|
|
707
|
+
s0: 0,
|
|
708
|
+
s1: 1,
|
|
709
|
+
s2: 2,
|
|
710
|
+
s4: 4,
|
|
711
|
+
s6: 6,
|
|
712
|
+
s8: 8,
|
|
713
|
+
s10: 10,
|
|
714
|
+
s12: 12,
|
|
715
|
+
s14: 14,
|
|
716
|
+
s16: 16,
|
|
717
|
+
s20: 20,
|
|
718
|
+
s24: 24,
|
|
719
|
+
s28: 28,
|
|
720
|
+
s32: 32,
|
|
721
|
+
s36: 36,
|
|
722
|
+
s40: 40,
|
|
723
|
+
s44: 44,
|
|
724
|
+
s48: 48,
|
|
725
|
+
s56: 56,
|
|
726
|
+
s64: 64,
|
|
727
|
+
s80: 80,
|
|
728
|
+
s96: 96,
|
|
729
|
+
s112: 112,
|
|
730
|
+
s128: 128,
|
|
680
731
|
} as const;
|
|
681
732
|
/** Token for nested items spacing in nested trees */
|
|
682
|
-
export const spaceNestedTreeLevel =
|
|
733
|
+
export const spaceNestedTreeLevel = 28;
|
|
683
734
|
export const spaceNestedTreeInterval = 0;
|
|
684
735
|
export const layout = {
|
|
685
|
-
logoSize:
|
|
736
|
+
logoSize: 16,
|
|
686
737
|
menuDefaultWidth: 243,
|
|
687
|
-
menuMinWidth:
|
|
738
|
+
menuMinWidth: 47, //TODO: make dependency to itemHeight
|
|
688
739
|
menuMaxWidth: 480,
|
|
689
740
|
menuItemMinWidth: 80,
|
|
690
|
-
menuGroupHeaderIndent:
|
|
741
|
+
menuGroupHeaderIndent: 28, // I'm ok
|
|
691
742
|
menuItemLevelIndent: 24,
|
|
692
743
|
listItemHeight: 38,
|
|
693
744
|
itemHeight: 36,
|
|
@@ -695,7 +746,7 @@ export const layout = {
|
|
|
695
746
|
groupTitleHeight: 30,
|
|
696
747
|
menuItemHeight: 32,
|
|
697
748
|
newMenuItemHeight: 30, // I'm ok
|
|
698
|
-
viewHeaderHeight: space.
|
|
749
|
+
viewHeaderHeight: space.s12 * 7,
|
|
699
750
|
viewHeaderCompactHeight: 52,
|
|
700
751
|
columnMinWidth: 240,
|
|
701
752
|
columnWidths: {compact: 200, default: 240, list: 280, full: 320},
|
|
@@ -703,7 +754,7 @@ export const layout = {
|
|
|
703
754
|
typeEditorWidth: "30vw",
|
|
704
755
|
typeEditorMinWidth: 480,
|
|
705
756
|
viewSetupWidth: "30vw",
|
|
706
|
-
viewSetupMinWidth:
|
|
757
|
+
viewSetupMinWidth: 380,
|
|
707
758
|
inputHeight: 36, //TODO: merge input and item height?
|
|
708
759
|
timelineLineHeight: 46,
|
|
709
760
|
timelineGroupPadding: 6,
|
|
@@ -721,8 +772,6 @@ export const layout = {
|
|
|
721
772
|
unitHeight: 18,
|
|
722
773
|
} as const;
|
|
723
774
|
|
|
724
|
-
export const radius = 3;
|
|
725
|
-
|
|
726
775
|
export const border = {
|
|
727
776
|
radius0: 0,
|
|
728
777
|
radius1: 1,
|
|
@@ -947,7 +996,7 @@ export const textStyles = {
|
|
|
947
996
|
lineHeight: lineHeight.regular,
|
|
948
997
|
fontWeight: fontWeight.regular,
|
|
949
998
|
color: themeVars.textColor,
|
|
950
|
-
borderRadius:
|
|
999
|
+
borderRadius: border.radius6,
|
|
951
1000
|
},
|
|
952
1001
|
important: {
|
|
953
1002
|
fontFamily,
|
|
@@ -956,6 +1005,6 @@ export const textStyles = {
|
|
|
956
1005
|
fontWeight: fontWeight.regular,
|
|
957
1006
|
color: themeVars.textColor,
|
|
958
1007
|
border: `1px solid ${themeVars.active}`,
|
|
959
|
-
borderRadius:
|
|
1008
|
+
borderRadius: border.radius6,
|
|
960
1009
|
},
|
|
961
1010
|
} as const;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {css, cx} from "@linaria/core";
|
|
2
2
|
import {useState} from "react";
|
|
3
|
-
import {IconButton} from "../
|
|
4
|
-
import {CollapsibleContent, CollapsibleRoot, CollapsibleTrigger} from "../
|
|
5
|
-
import {ColorPicker} from "../
|
|
3
|
+
import {IconButton} from "../button/icon-button";
|
|
4
|
+
import {CollapsibleContent, CollapsibleRoot, CollapsibleTrigger} from "../collapsible";
|
|
5
|
+
import {ColorPicker} from "../color-picker";
|
|
6
6
|
import {useThemeMode} from "../theme-provider";
|
|
7
7
|
import {getIconColor, space} from "../design-system";
|
|
8
8
|
import ColorCoding from "../icons/react/ColorCoding";
|
|
@@ -14,7 +14,7 @@ import {EmojiPickerSearch} from "./primitives/search";
|
|
|
14
14
|
import {Tooltip} from "../tooltip";
|
|
15
15
|
|
|
16
16
|
const colorPickerWrapperCss = css`
|
|
17
|
-
padding-top: ${space.
|
|
17
|
+
padding-top: ${space.s12}px;
|
|
18
18
|
`;
|
|
19
19
|
|
|
20
20
|
const disableScrollCss = css`
|
|
@@ -61,10 +61,10 @@ export const EmojiPicker: React.FC<EmojiPickerProps> = ({
|
|
|
61
61
|
className={css`
|
|
62
62
|
position: absolute;
|
|
63
63
|
top: 4px;
|
|
64
|
-
right: ${space.
|
|
64
|
+
right: ${space.s12}px;
|
|
65
65
|
`}
|
|
66
66
|
style={{
|
|
67
|
-
right: space.
|
|
67
|
+
right: space.s12 + measureScrollbar(),
|
|
68
68
|
}}
|
|
69
69
|
>
|
|
70
70
|
<EmojiPickerSkinTone />
|
|
@@ -86,7 +86,7 @@ export const IconEmojiPicker: React.FC<IconEmojiPickerProps> = ({
|
|
|
86
86
|
onReset ? (
|
|
87
87
|
<div
|
|
88
88
|
className={css`
|
|
89
|
-
padding-right: ${space.
|
|
89
|
+
padding-right: ${space.s12}px;
|
|
90
90
|
`}
|
|
91
91
|
>
|
|
92
92
|
<Button Icon={EmojiDelete} size={":button-size/small"} onClick={onReset}>
|
|
@@ -2,7 +2,7 @@ import {Category, EmojiItem} from "@fibery/emoji-data";
|
|
|
2
2
|
import {css} from "@linaria/core";
|
|
3
3
|
import {memo} from "react";
|
|
4
4
|
import {useInView} from "react-intersection-observer";
|
|
5
|
-
import {IconButton} from "../../
|
|
5
|
+
import {IconButton} from "../../button/icon-button";
|
|
6
6
|
import {space, textStyles, themeVars} from "../../design-system";
|
|
7
7
|
import {Settings} from "../../icons/react";
|
|
8
8
|
import {useEmojiDataStoreSelector} from "../stores/emoji-data-store";
|
|
@@ -18,13 +18,13 @@ const categoryLabelCss = css`
|
|
|
18
18
|
${textStyles.heading6}
|
|
19
19
|
color: ${themeVars.accentTextColor};
|
|
20
20
|
background-color: ${themeVars.actionMenuBg};
|
|
21
|
-
padding: ${space.
|
|
21
|
+
padding: ${space.s12}px ${space.s6}px ${space.s4}px ${space.s6}px;
|
|
22
22
|
position: sticky;
|
|
23
23
|
top: 0;
|
|
24
24
|
|
|
25
25
|
display: flex;
|
|
26
26
|
align-items: center;
|
|
27
|
-
gap: ${space.
|
|
27
|
+
gap: ${space.s4}px;
|
|
28
28
|
|
|
29
29
|
z-index: 1;
|
|
30
30
|
`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {FC} from "react";
|
|
2
|
-
import {EmojiItem, EmojiSkin} from "@fibery/emoji-data";
|
|
2
|
+
import {EmojiItem, EmojiSkin, NativeEmoji} from "@fibery/emoji-data";
|
|
3
3
|
import {css, cx} from "@linaria/core";
|
|
4
4
|
import {themeVars} from "../../design-system";
|
|
5
5
|
import {useEmojiDataStoreSelector} from "../stores/emoji-data-store";
|
|
@@ -22,11 +22,13 @@ const emojiInlineImgCss = css`
|
|
|
22
22
|
height: 1em;
|
|
23
23
|
vertical-align: -0.1em;
|
|
24
24
|
object-fit: contain;
|
|
25
|
+
overflow: hidden;
|
|
25
26
|
`;
|
|
26
27
|
const emojiSizedImgCss = css`
|
|
27
28
|
width: 100%;
|
|
28
29
|
height: 100%;
|
|
29
30
|
object-fit: contain;
|
|
31
|
+
overflow: hidden;
|
|
30
32
|
`;
|
|
31
33
|
|
|
32
34
|
// This is needed to keep text-selection working for image based emojis Details: https://the.fibery.io/SoftDev/bug/Improve-selection-text-with-emojis-8963
|
|
@@ -43,9 +45,25 @@ export type EmojiProps = {
|
|
|
43
45
|
/** render emoji as native unicode if possible */
|
|
44
46
|
native?: boolean;
|
|
45
47
|
fallback?: "shortcode" | "hidden";
|
|
48
|
+
showTitle?: boolean;
|
|
46
49
|
};
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
function getTitle(emoji: EmojiItem) {
|
|
52
|
+
if ((emoji as NativeEmoji).native) {
|
|
53
|
+
return emoji.colons;
|
|
54
|
+
}
|
|
55
|
+
return `:${emoji.name}:`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const Emoji: FC<EmojiProps> = ({
|
|
59
|
+
emoji: idOrColons,
|
|
60
|
+
size,
|
|
61
|
+
version = 14,
|
|
62
|
+
fallback = "hidden",
|
|
63
|
+
skin,
|
|
64
|
+
native,
|
|
65
|
+
showTitle = false,
|
|
66
|
+
}) => {
|
|
49
67
|
const emoji = useEmojiDataStoreSelector((store) => store.get(idOrColons, {skin}));
|
|
50
68
|
|
|
51
69
|
if (!emoji) {
|
|
@@ -85,7 +103,12 @@ export const Emoji: FC<EmojiProps> = ({emoji: idOrColons, size, version = 14, fa
|
|
|
85
103
|
const style = size ? {fontSize: size, width: size, height: size} : {};
|
|
86
104
|
|
|
87
105
|
return (
|
|
88
|
-
<span
|
|
106
|
+
<span
|
|
107
|
+
style={style}
|
|
108
|
+
title={showTitle ? getTitle(emoji) : undefined}
|
|
109
|
+
className={cx(emojiWrapperCss, size && emojiWrapperSizedCss)}
|
|
110
|
+
aria-label={emoji.name}
|
|
111
|
+
>
|
|
89
112
|
{emojiNode}
|
|
90
113
|
</span>
|
|
91
114
|
);
|
|
@@ -3,7 +3,7 @@ import {space} from "../../design-system";
|
|
|
3
3
|
import {contentHorizontalPadding} from "./layout";
|
|
4
4
|
|
|
5
5
|
const pickerHeader = css`
|
|
6
|
-
padding: ${space.
|
|
6
|
+
padding: ${space.s6}px ${contentHorizontalPadding}px;
|
|
7
7
|
position: relative;
|
|
8
8
|
`;
|
|
9
9
|
export const EmojiPickerHeader: React.FC<React.PropsWithChildren> = ({children}) => {
|
|
@@ -2,7 +2,7 @@ import {EmojiItem} from "@fibery/emoji-data";
|
|
|
2
2
|
import {useComposedRefs} from "@fibery/react/src/use-composed-refs";
|
|
3
3
|
import {css, cx} from "@linaria/core";
|
|
4
4
|
import {startTransition, useId, useRef} from "react";
|
|
5
|
-
import {IconButton} from "../../
|
|
5
|
+
import {IconButton} from "../../button/icon-button";
|
|
6
6
|
import {border, space, textStyles, themeVars} from "../../design-system";
|
|
7
7
|
import Close from "../../icons/react/Close";
|
|
8
8
|
import Search from "../../icons/react/Search";
|
|
@@ -22,8 +22,8 @@ const searchCss = css`
|
|
|
22
22
|
|
|
23
23
|
display: flex;
|
|
24
24
|
align-items: center;
|
|
25
|
-
padding-left: ${space.
|
|
26
|
-
gap: ${space.
|
|
25
|
+
padding-left: ${space.s12}px;
|
|
26
|
+
gap: ${space.s2}px;
|
|
27
27
|
|
|
28
28
|
/* For screenreaders only, via https://stackoverflow.com/a/19758620 */
|
|
29
29
|
& .sr-only {
|
|
@@ -56,13 +56,13 @@ const searchInputCss = css`
|
|
|
56
56
|
`;
|
|
57
57
|
|
|
58
58
|
const searchIconCss = css`
|
|
59
|
-
padding: ${space.
|
|
59
|
+
padding: ${space.s2}px;
|
|
60
60
|
`;
|
|
61
61
|
|
|
62
62
|
const extraActionSlotCss = css`
|
|
63
63
|
background-color: var(--fibery-emoji-hover-color, ${themeVars.inputCopyBgColor});
|
|
64
|
-
border-top-right-radius: ${space.
|
|
65
|
-
border-bottom-right-radius: ${space.
|
|
64
|
+
border-top-right-radius: ${space.s6}px;
|
|
65
|
+
border-bottom-right-radius: ${space.s6}px;
|
|
66
66
|
`;
|
|
67
67
|
|
|
68
68
|
export type EmojiPickerSearchProps = {
|
|
@@ -5,7 +5,7 @@ import {textStyles, themeVars} from "../../design-system";
|
|
|
5
5
|
import {Emoji} from "./emoji";
|
|
6
6
|
import {useEmojiPickerCtx, useEmojiPickerI18N} from "./root";
|
|
7
7
|
import {useEmojiSkin, useSetEmojiSkin} from "./skin-provider";
|
|
8
|
-
import {IconButton} from "../../
|
|
8
|
+
import {IconButton} from "../../button/icon-button";
|
|
9
9
|
|
|
10
10
|
const skinToneWrapperCss = css`
|
|
11
11
|
display: flex;
|
package/src/error-alert.tsx
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {css} from "@linaria/core";
|
|
2
2
|
import {layout, border, space, textStyles, themeVars} from "./design-system";
|
|
3
|
-
import {Button} from "./
|
|
3
|
+
import {Button} from "./button/button";
|
|
4
4
|
import CloseIcon from "./icons/react/Close";
|
|
5
5
|
import {useTheme} from "./theme-provider";
|
|
6
6
|
|
|
7
7
|
const errorAlert = css`
|
|
8
8
|
background-color: ${themeVars.errorBgColor};
|
|
9
|
-
padding: ${space.
|
|
9
|
+
padding: ${space.s8}px ${space.s12}px;
|
|
10
10
|
min-height: ${layout.itemHeight}px;
|
|
11
11
|
border-radius: ${border.radius6}px;
|
|
12
12
|
display: flex;
|
|
13
|
-
gap: ${space.
|
|
13
|
+
gap: ${space.s6}px;
|
|
14
14
|
align-items: center;
|
|
15
15
|
`;
|
|
16
16
|
|
|
@@ -31,7 +31,7 @@ export function ErrorAlert({
|
|
|
31
31
|
onClose,
|
|
32
32
|
}: {
|
|
33
33
|
message: string;
|
|
34
|
-
description?:
|
|
34
|
+
description?: React.ReactNode;
|
|
35
35
|
closable?: boolean;
|
|
36
36
|
onClose?: () => void;
|
|
37
37
|
}): JSX.Element {
|
|
@@ -5,9 +5,9 @@ import {space, border, themeVars} from "./design-system";
|
|
|
5
5
|
|
|
6
6
|
const loaderStyle = css`
|
|
7
7
|
border-radius: ${border.radius6}px;
|
|
8
|
-
padding-top: ${space.
|
|
9
|
-
padding-bottom: ${space.
|
|
10
|
-
padding-left: ${space.
|
|
8
|
+
padding-top: ${space.s8}px;
|
|
9
|
+
padding-bottom: ${space.s8}px;
|
|
10
|
+
padding-left: ${space.s12}px;
|
|
11
11
|
padding-right: 0;
|
|
12
12
|
box-sizing: border-box;
|
|
13
13
|
border: none;
|