@fibery/ui-kit 1.42.0 → 2.0.1
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/.oxlintrc.json +24 -0
- package/CHANGELOG.md +20 -0
- package/eslint.config.mjs +1 -1
- package/jest.config.cjs +36 -0
- package/package.json +12 -52
- package/src/@types/css.d.ts +1 -0
- package/src/actions-menu/actions-menu-checkbox-item.tsx +74 -0
- package/src/actions-menu/contexts/actions-menu-context.tsx +1 -0
- package/src/actions-menu/index.tsx +1 -0
- package/src/animated-number.tsx +2 -2
- package/src/antd/AutoComplete.d.ts +1 -0
- package/src/app-icon-with-fallback.tsx +4 -4
- package/src/app-icon.tsx +4 -4
- package/src/appIcons.json +1227 -1227
- package/src/avatar.tsx +44 -5
- package/src/box.tsx +10 -17
- package/src/button/make-button-colors.ts +13 -13
- package/src/checkbox.tsx +3 -3
- package/src/collapsible-section.tsx +1 -1
- package/src/context-menu/index.tsx +4 -0
- package/src/date-picker/date-range-picker.tsx +1 -1
- package/src/date-picker/relative-date-picker.tsx +3 -0
- package/src/date-picker/single-date-picker.tsx +10 -9
- package/src/design-system/alpha.ts +9 -0
- package/src/design-system/colors-css.test.ts +1 -9
- package/src/design-system/colors-css.ts +1 -1
- package/src/design-system/colors.ts +351 -313
- package/src/design-system/layout.ts +1 -1
- package/src/design-system/theme.ts +4 -1
- package/src/design-system/vars.test.ts +4 -0
- package/src/design-system.test.ts +1 -0
- package/src/design-system.ts +1 -1
- package/src/dropdown-menu/index.tsx +4 -0
- package/src/emoji-picker/primitives/emoji.tsx +12 -0
- package/src/emoji-picker/primitives/grid.tsx +100 -104
- package/src/emoji.tsx +1 -0
- package/src/file-item.tsx +308 -265
- package/src/icons/ast/AddDatabase.ts +1 -1
- package/src/icons/ast/AddIntegration.ts +1 -1
- package/src/icons/ast/ArrowsRightLeft.ts +1 -1
- package/src/icons/ast/ChatBubble.ts +1 -1
- package/src/icons/ast/ChatFloat.ts +1 -1
- package/src/icons/ast/ChatSidebar.ts +1 -1
- package/src/icons/ast/Clean.ts +1 -1
- package/src/icons/ast/Create.ts +1 -1
- package/src/icons/ast/ItemsTimeline.ts +1 -1
- package/src/icons/ast/Key.ts +1 -1
- package/src/icons/ast/NetworkAdd.ts +1 -1
- package/src/icons/ast/Print.ts +1 -1
- package/src/icons/ast/Success.ts +1 -1
- package/src/icons/ast/SuggestIntegration.ts +1 -1
- package/src/icons/ast/WarningTriangle.ts +1 -1
- package/src/icons/ast/Windows.ts +1 -1
- package/src/icons/svg/add-database.svg +1 -1
- package/src/icons/svg/add-integration.svg +1 -1
- package/src/icons/svg/arrows-right-left.svg +1 -1
- package/src/icons/svg/chat-bubble.svg +1 -1
- package/src/icons/svg/chat-float.svg +1 -1
- package/src/icons/svg/chat-sidebar.svg +3 -3
- package/src/icons/svg/clean.svg +1 -1
- package/src/icons/svg/create.svg +1 -1
- package/src/icons/svg/items-timeline.svg +1 -1
- package/src/icons/svg/key.svg +1 -1
- package/src/icons/svg/network-add.svg +1 -1
- package/src/icons/svg/print.svg +1 -1
- package/src/icons/svg/success.svg +1 -1
- package/src/icons/svg/suggest-integration.svg +1 -1
- package/src/icons/svg/warning-triangle.svg +1 -1
- package/src/icons/svg/windows.svg +1 -1
- package/src/images-gallery/images-gallery.tsx +24 -0
- package/src/lists/actions-menu-row-surface.tsx +2 -1
- package/src/logo.tsx +14 -13
- package/src/modal-menu/index.tsx +1 -0
- package/src/modal-menu/modal-menu-checkbox-item.tsx +50 -0
- package/src/online-users.tsx +45 -46
- package/src/palettes/slate-arch.colors-snapshot.test.ts +7 -7
- package/src/palettes/slate-user.colors-snapshot.test.ts +11 -11
- package/src/palettes/warm-arch.colors-snapshot.test.ts +7 -7
- package/src/palettes/warm-user.colors-snapshot.test.ts +7 -7
- package/src/popover/index.tsx +91 -203
- package/src/popover/popover-old.tsx +113 -0
- package/src/popover/popup-modifiers-context.ts +1 -1
- package/src/scale-generator.ts +2 -2
- package/src/select/components/clear-indicator.tsx +1 -1
- package/src/select/components/drop-down-indicator.tsx +2 -2
- package/src/select/components/group-heading.tsx +2 -2
- package/src/select/components/menu-list-virtualized.tsx +1 -1
- package/src/select/components/option.tsx +1 -1
- package/src/select/index.tsx +34 -37
- package/src/select/select-in-popover.tsx +34 -202
- package/src/select/select.tsx +5 -4
- package/src/select/styles.ts +3 -0
- package/src/thematic-state.ts +1 -1
- package/src/theme-provider.tsx +14 -2
- package/src/theme-styles.ts +14 -7
- package/src/toggle-button/toggle-button.tsx +48 -35
- package/src/tree-utils.test.ts +166 -0
- package/src/tree-utils.ts +107 -0
- package/src/file-item/use-register-in-image-gallery.tsx +0 -70
- package/src/file-item-2.tsx +0 -357
package/.oxlintrc.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../node_modules/oxlint/configuration_schema.json",
|
|
3
|
+
"extends": ["../../.oxlintrc.json"],
|
|
4
|
+
"rules": {
|
|
5
|
+
"no-restricted-imports": [
|
|
6
|
+
"error",
|
|
7
|
+
{
|
|
8
|
+
"patterns": [
|
|
9
|
+
{
|
|
10
|
+
"group": ["@fibery/ui-kit/*"]
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"overrides": [
|
|
17
|
+
{
|
|
18
|
+
"files": ["src/icons/**/*"],
|
|
19
|
+
"rules": {
|
|
20
|
+
"unicorn/filename-case": "off"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @fibery/ui-kit
|
|
2
2
|
|
|
3
|
+
## 2.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [7091c2b]
|
|
8
|
+
- @fibery/emoji-data@2.7.3
|
|
9
|
+
|
|
10
|
+
## 2.0.0
|
|
11
|
+
|
|
12
|
+
### Major Changes
|
|
13
|
+
|
|
14
|
+
- 99bfef2: helpers/types
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [99bfef2]
|
|
19
|
+
- @fibery/helpers@2.0.0
|
|
20
|
+
- @fibery/emoji-data@2.7.2
|
|
21
|
+
- @fibery/react@1.5.1
|
|
22
|
+
|
|
3
23
|
## 1.42.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
package/eslint.config.mjs
CHANGED
package/jest.config.cjs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** @type {import('@jest/schemas').InitialOptions} */
|
|
2
|
+
const config = {
|
|
3
|
+
collectCoverageFrom: ["src/**/*.{js,jsx,ts,tsx}", "!src/**/*.d.ts"],
|
|
4
|
+
coveragePathIgnorePatterns: ["/node_modules/"],
|
|
5
|
+
coverageReporters: ["text", "cobertura"],
|
|
6
|
+
moduleNameMapper: {
|
|
7
|
+
"\\.(css)$": "<rootDir>/src/__mocks__/styleMock.js",
|
|
8
|
+
},
|
|
9
|
+
setupFilesAfterEnv: ["<rootDir>/config/jest/testFrameworkSetup.js"],
|
|
10
|
+
testEnvironment: "jsdom",
|
|
11
|
+
testEnvironmentOptions: {
|
|
12
|
+
customExportConditions: ["@fibery/source"],
|
|
13
|
+
},
|
|
14
|
+
transform: {
|
|
15
|
+
"^.+\\.(js|jsx|ts|tsx)$": [
|
|
16
|
+
"@swc/jest",
|
|
17
|
+
{
|
|
18
|
+
jsc: {
|
|
19
|
+
parser: {
|
|
20
|
+
syntax: "typescript",
|
|
21
|
+
tsx: true,
|
|
22
|
+
decorators: true,
|
|
23
|
+
dynamicImport: true,
|
|
24
|
+
},
|
|
25
|
+
transform: {
|
|
26
|
+
react: {
|
|
27
|
+
runtime: "automatic",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
module.exports = config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fibery/ui-kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"dependencies": {
|
|
@@ -46,13 +46,9 @@
|
|
|
46
46
|
"react-virtuoso": "4.18.1",
|
|
47
47
|
"screenfull": "6.0.2",
|
|
48
48
|
"tabbable": "5.2.1",
|
|
49
|
-
"@fibery/emoji-data": "2.7.
|
|
50
|
-
"@fibery/helpers": "
|
|
51
|
-
"@fibery/react": "1.5.
|
|
52
|
-
},
|
|
53
|
-
"peerDependencies": {
|
|
54
|
-
"react": "18.3.1",
|
|
55
|
-
"react-dom": "18.3.1"
|
|
49
|
+
"@fibery/emoji-data": "2.7.3",
|
|
50
|
+
"@fibery/helpers": "2.0.0",
|
|
51
|
+
"@fibery/react": "1.5.1"
|
|
56
52
|
},
|
|
57
53
|
"devDependencies": {
|
|
58
54
|
"@babel/core": "7.28.5",
|
|
@@ -69,6 +65,7 @@
|
|
|
69
65
|
"@types/prop-types": "15.7.5",
|
|
70
66
|
"@types/react": "18.3.12",
|
|
71
67
|
"@types/react-dom": "18.3.1",
|
|
68
|
+
"@typescript/native-preview": "7.0.0-dev.20260225.1",
|
|
72
69
|
"@wyw-in-js/babel-preset": "0.5.5",
|
|
73
70
|
"csstype": "3.0.8",
|
|
74
71
|
"fs-extra": "10.0.0",
|
|
@@ -79,57 +76,20 @@
|
|
|
79
76
|
"react-dom": "18.3.1",
|
|
80
77
|
"svg-parser": "2.0.4",
|
|
81
78
|
"svgo": "2.8.0",
|
|
82
|
-
"typescript": "
|
|
79
|
+
"typescript": "6.0.0-beta",
|
|
83
80
|
"unist-util-reduce": "0.2.2",
|
|
84
|
-
"@fibery/babel-preset": "7.4.
|
|
85
|
-
"@fibery/eslint-config": "9.0.0"
|
|
81
|
+
"@fibery/babel-preset": "7.4.2"
|
|
86
82
|
},
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"/node_modules/"
|
|
91
|
-
],
|
|
92
|
-
"collectCoverageFrom": [
|
|
93
|
-
"src/**/*.{js,jsx,ts,tsx}",
|
|
94
|
-
"!src/**/*.d.ts"
|
|
95
|
-
],
|
|
96
|
-
"coverageReporters": [
|
|
97
|
-
"text",
|
|
98
|
-
"cobertura"
|
|
99
|
-
],
|
|
100
|
-
"moduleNameMapper": {
|
|
101
|
-
"\\.(css)$": "<rootDir>/src/__mocks__/styleMock.js"
|
|
102
|
-
},
|
|
103
|
-
"transform": {
|
|
104
|
-
"^.+\\.(js|jsx|ts|tsx)$": [
|
|
105
|
-
"@swc/jest",
|
|
106
|
-
{
|
|
107
|
-
"jsc": {
|
|
108
|
-
"parser": {
|
|
109
|
-
"syntax": "typescript",
|
|
110
|
-
"tsx": true,
|
|
111
|
-
"decorators": true,
|
|
112
|
-
"dynamicImport": true
|
|
113
|
-
},
|
|
114
|
-
"transform": {
|
|
115
|
-
"react": {
|
|
116
|
-
"runtime": "automatic"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
]
|
|
122
|
-
},
|
|
123
|
-
"setupFilesAfterEnv": [
|
|
124
|
-
"<rootDir>/config/jest/testFrameworkSetup.js"
|
|
125
|
-
]
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"react": "18.3.1",
|
|
85
|
+
"react-dom": "18.3.1"
|
|
126
86
|
},
|
|
127
87
|
"scripts": {
|
|
128
88
|
"test": "TZ=Europe/Minsk jest",
|
|
129
89
|
"test:ci": "pnpm run test --reporters=default --reporters=jest-junit",
|
|
130
90
|
"test:coverage": "pnpm run test --coverage --coverageDirectory=${JEST_COVERAGE_RESULT_DIR:-$(pwd)}/coverage/ui-kit --reporters=default --reporters=jest-junit",
|
|
131
|
-
"lint": "
|
|
91
|
+
"lint": "../../scripts/lint.sh",
|
|
132
92
|
"generate-icons": "node scripts/generate-icons.mjs",
|
|
133
|
-
"typecheck": "
|
|
93
|
+
"typecheck": "../../scripts/typecheck.sh"
|
|
134
94
|
}
|
|
135
95
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare module "*.css" {}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {stopPropagation} from "@fibery/react/src/stop-propagation";
|
|
2
|
+
import {css, cx} from "@linaria/core";
|
|
3
|
+
import {FunctionComponent, memo, ReactNode} from "react";
|
|
4
|
+
import {layoutVars, space, themeVars} from "../design-system";
|
|
5
|
+
import CheckedIcon from "../icons/react/Checked";
|
|
6
|
+
import {IconBaseProps} from "../icons/types";
|
|
7
|
+
import {mobileRootSelector} from "../mobile-styles";
|
|
8
|
+
import {useIsPhone} from "../use-is-phone";
|
|
9
|
+
import {useActionsMenuContext} from "./contexts/actions-menu-context";
|
|
10
|
+
|
|
11
|
+
const rowCss = css`
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
min-height: ${layoutVars.menuItemHeight};
|
|
15
|
+
gap: ${space.s6}px;
|
|
16
|
+
${mobileRootSelector} & {
|
|
17
|
+
gap: ${space.s8}px;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
const rowContentCss = css`
|
|
22
|
+
flex-grow: 1;
|
|
23
|
+
`;
|
|
24
|
+
|
|
25
|
+
const cornerCss = css`
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
export type ActionsMenuCheckboxItemProps = {
|
|
31
|
+
checked: boolean;
|
|
32
|
+
onCheckedChange: (checked: boolean) => void;
|
|
33
|
+
Icon?: FunctionComponent<IconBaseProps>;
|
|
34
|
+
iconColor?: string;
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
children: ReactNode;
|
|
37
|
+
className?: string;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const ActionsMenuCheckboxItem: React.FC<ActionsMenuCheckboxItemProps> = memo(function ActionsMenuCheckboxItem({
|
|
41
|
+
checked,
|
|
42
|
+
onCheckedChange,
|
|
43
|
+
Icon,
|
|
44
|
+
iconColor,
|
|
45
|
+
disabled,
|
|
46
|
+
children,
|
|
47
|
+
className,
|
|
48
|
+
}) {
|
|
49
|
+
const {MenuPrimitive} = useActionsMenuContext();
|
|
50
|
+
const isPhone = useIsPhone();
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<MenuPrimitive.CheckboxItem
|
|
54
|
+
checked={checked}
|
|
55
|
+
onCheckedChange={onCheckedChange}
|
|
56
|
+
onClick={stopPropagation}
|
|
57
|
+
className={cx(rowCss, className)}
|
|
58
|
+
disabled={disabled}
|
|
59
|
+
>
|
|
60
|
+
{Icon && (
|
|
61
|
+
<div className={cornerCss}>
|
|
62
|
+
<Icon
|
|
63
|
+
color={`var(--actions-menu-item-icon-color, ${iconColor ?? themeVars.iconColor})`}
|
|
64
|
+
iconSize={isPhone ? 20 : 18}
|
|
65
|
+
/>
|
|
66
|
+
</div>
|
|
67
|
+
)}
|
|
68
|
+
<div className={rowContentCss}>{children}</div>
|
|
69
|
+
<div className={cornerCss}>
|
|
70
|
+
{checked && <CheckedIcon iconSize={isPhone ? 20 : 18} color={themeVars.textColor} />}
|
|
71
|
+
</div>
|
|
72
|
+
</MenuPrimitive.CheckboxItem>
|
|
73
|
+
);
|
|
74
|
+
});
|
|
@@ -3,6 +3,7 @@ import {$TSFixMe} from "../tsfixme";
|
|
|
3
3
|
|
|
4
4
|
export {ActionsMenu} from "./actions-menu";
|
|
5
5
|
export {ActionsMenuItem} from "./actions-menu-item";
|
|
6
|
+
export {ActionsMenuCheckboxItem} from "./actions-menu-checkbox-item";
|
|
6
7
|
export {AsyncActionsMenuItem} from "./async-actions-menu-item";
|
|
7
8
|
export {ActionsMenuSubMenu} from "./actions-menu-sub-menu";
|
|
8
9
|
export {useActionsMenuContext} from "./contexts/actions-menu-context";
|
package/src/animated-number.tsx
CHANGED
|
@@ -19,8 +19,8 @@ export function AnimatedNumber({children, speed = 300, fps = 12, fixed, format}:
|
|
|
19
19
|
fixed === undefined
|
|
20
20
|
? currentValue
|
|
21
21
|
: fixed === 0
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
? Math.round(currentValue)
|
|
23
|
+
: parseFloat(currentValue.toFixed(fixed));
|
|
24
24
|
useEffect(() => {
|
|
25
25
|
let timeout: number | undefined;
|
|
26
26
|
if (step < 0 ? currentValue > children : currentValue < children && currentValue !== children) {
|
|
@@ -3,7 +3,7 @@ import fromPairs from "lodash/fromPairs";
|
|
|
3
3
|
import {FC, lazy, Suspense} from "react";
|
|
4
4
|
import {a11yColor} from "./a11y-color";
|
|
5
5
|
import {AppIconWrapper} from "./app-icon-wrapper";
|
|
6
|
-
import {
|
|
6
|
+
import {alpha, iconSize, layout} from "./design-system";
|
|
7
7
|
import {Icon} from "./icons/Icon";
|
|
8
8
|
import {useTheme} from "./theme-provider";
|
|
9
9
|
import {useIsPhone} from "./use-is-phone";
|
|
@@ -129,9 +129,9 @@ export const AppIcon: FC<AppIconProps> = ({icon, color, isSelected, ...rest}) =>
|
|
|
129
129
|
const defaultIconSize = isPhone ? layout.mobileSidebarIconSize : layout.newMenuIconSize;
|
|
130
130
|
const {iconSize = defaultIconSize, containerSize = defaultIconSize} = rest;
|
|
131
131
|
const iconColor = theme.select({
|
|
132
|
-
dark: a11yColor(
|
|
133
|
-
light: a11yColor(
|
|
134
|
-
light2: a11yColor(
|
|
132
|
+
dark: a11yColor(alpha(color, 0.95), theme.menuBg, 5),
|
|
133
|
+
light: a11yColor(alpha(color, 0.95), theme.whiteColor, 3),
|
|
134
|
+
light2: a11yColor(alpha(color, 0.95), theme.menuBg, 5),
|
|
135
135
|
});
|
|
136
136
|
|
|
137
137
|
const bgColor = theme.fns.getAppIconBackground(color);
|
package/src/app-icon.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import cx from "classnames";
|
|
|
3
3
|
import {FC} from "react";
|
|
4
4
|
import {a11yColor} from "./a11y-color";
|
|
5
5
|
import {AppIconWithFallback} from "./app-icon-with-fallback";
|
|
6
|
-
import {
|
|
6
|
+
import {alpha, border} from "./design-system";
|
|
7
7
|
import {useTheme} from "./theme-provider";
|
|
8
8
|
|
|
9
9
|
interface AppIconProps {
|
|
@@ -17,9 +17,9 @@ interface AppIconProps {
|
|
|
17
17
|
export const AppIcon: FC<AppIconProps> = ({color, icon, containerSize = 54, iconSize = 36, className}) => {
|
|
18
18
|
const theme = useTheme();
|
|
19
19
|
const iconColor = theme.select({
|
|
20
|
-
dark: a11yColor(
|
|
21
|
-
light: a11yColor(
|
|
22
|
-
light2: a11yColor(
|
|
20
|
+
dark: a11yColor(alpha(color, 0.95), theme.menuBg, 5),
|
|
21
|
+
light: a11yColor(alpha(color, 0.95), theme.whiteColor, 3),
|
|
22
|
+
light2: a11yColor(alpha(color, 0.95), theme.menuBg, 5),
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
const bgColor = theme.fns.getAppIconBackground(color);
|