@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.
Files changed (100) hide show
  1. package/.oxlintrc.json +24 -0
  2. package/CHANGELOG.md +20 -0
  3. package/eslint.config.mjs +1 -1
  4. package/jest.config.cjs +36 -0
  5. package/package.json +12 -52
  6. package/src/@types/css.d.ts +1 -0
  7. package/src/actions-menu/actions-menu-checkbox-item.tsx +74 -0
  8. package/src/actions-menu/contexts/actions-menu-context.tsx +1 -0
  9. package/src/actions-menu/index.tsx +1 -0
  10. package/src/animated-number.tsx +2 -2
  11. package/src/antd/AutoComplete.d.ts +1 -0
  12. package/src/app-icon-with-fallback.tsx +4 -4
  13. package/src/app-icon.tsx +4 -4
  14. package/src/appIcons.json +1227 -1227
  15. package/src/avatar.tsx +44 -5
  16. package/src/box.tsx +10 -17
  17. package/src/button/make-button-colors.ts +13 -13
  18. package/src/checkbox.tsx +3 -3
  19. package/src/collapsible-section.tsx +1 -1
  20. package/src/context-menu/index.tsx +4 -0
  21. package/src/date-picker/date-range-picker.tsx +1 -1
  22. package/src/date-picker/relative-date-picker.tsx +3 -0
  23. package/src/date-picker/single-date-picker.tsx +10 -9
  24. package/src/design-system/alpha.ts +9 -0
  25. package/src/design-system/colors-css.test.ts +1 -9
  26. package/src/design-system/colors-css.ts +1 -1
  27. package/src/design-system/colors.ts +351 -313
  28. package/src/design-system/layout.ts +1 -1
  29. package/src/design-system/theme.ts +4 -1
  30. package/src/design-system/vars.test.ts +4 -0
  31. package/src/design-system.test.ts +1 -0
  32. package/src/design-system.ts +1 -1
  33. package/src/dropdown-menu/index.tsx +4 -0
  34. package/src/emoji-picker/primitives/emoji.tsx +12 -0
  35. package/src/emoji-picker/primitives/grid.tsx +100 -104
  36. package/src/emoji.tsx +1 -0
  37. package/src/file-item.tsx +308 -265
  38. package/src/icons/ast/AddDatabase.ts +1 -1
  39. package/src/icons/ast/AddIntegration.ts +1 -1
  40. package/src/icons/ast/ArrowsRightLeft.ts +1 -1
  41. package/src/icons/ast/ChatBubble.ts +1 -1
  42. package/src/icons/ast/ChatFloat.ts +1 -1
  43. package/src/icons/ast/ChatSidebar.ts +1 -1
  44. package/src/icons/ast/Clean.ts +1 -1
  45. package/src/icons/ast/Create.ts +1 -1
  46. package/src/icons/ast/ItemsTimeline.ts +1 -1
  47. package/src/icons/ast/Key.ts +1 -1
  48. package/src/icons/ast/NetworkAdd.ts +1 -1
  49. package/src/icons/ast/Print.ts +1 -1
  50. package/src/icons/ast/Success.ts +1 -1
  51. package/src/icons/ast/SuggestIntegration.ts +1 -1
  52. package/src/icons/ast/WarningTriangle.ts +1 -1
  53. package/src/icons/ast/Windows.ts +1 -1
  54. package/src/icons/svg/add-database.svg +1 -1
  55. package/src/icons/svg/add-integration.svg +1 -1
  56. package/src/icons/svg/arrows-right-left.svg +1 -1
  57. package/src/icons/svg/chat-bubble.svg +1 -1
  58. package/src/icons/svg/chat-float.svg +1 -1
  59. package/src/icons/svg/chat-sidebar.svg +3 -3
  60. package/src/icons/svg/clean.svg +1 -1
  61. package/src/icons/svg/create.svg +1 -1
  62. package/src/icons/svg/items-timeline.svg +1 -1
  63. package/src/icons/svg/key.svg +1 -1
  64. package/src/icons/svg/network-add.svg +1 -1
  65. package/src/icons/svg/print.svg +1 -1
  66. package/src/icons/svg/success.svg +1 -1
  67. package/src/icons/svg/suggest-integration.svg +1 -1
  68. package/src/icons/svg/warning-triangle.svg +1 -1
  69. package/src/icons/svg/windows.svg +1 -1
  70. package/src/images-gallery/images-gallery.tsx +24 -0
  71. package/src/lists/actions-menu-row-surface.tsx +2 -1
  72. package/src/logo.tsx +14 -13
  73. package/src/modal-menu/index.tsx +1 -0
  74. package/src/modal-menu/modal-menu-checkbox-item.tsx +50 -0
  75. package/src/online-users.tsx +45 -46
  76. package/src/palettes/slate-arch.colors-snapshot.test.ts +7 -7
  77. package/src/palettes/slate-user.colors-snapshot.test.ts +11 -11
  78. package/src/palettes/warm-arch.colors-snapshot.test.ts +7 -7
  79. package/src/palettes/warm-user.colors-snapshot.test.ts +7 -7
  80. package/src/popover/index.tsx +91 -203
  81. package/src/popover/popover-old.tsx +113 -0
  82. package/src/popover/popup-modifiers-context.ts +1 -1
  83. package/src/scale-generator.ts +2 -2
  84. package/src/select/components/clear-indicator.tsx +1 -1
  85. package/src/select/components/drop-down-indicator.tsx +2 -2
  86. package/src/select/components/group-heading.tsx +2 -2
  87. package/src/select/components/menu-list-virtualized.tsx +1 -1
  88. package/src/select/components/option.tsx +1 -1
  89. package/src/select/index.tsx +34 -37
  90. package/src/select/select-in-popover.tsx +34 -202
  91. package/src/select/select.tsx +5 -4
  92. package/src/select/styles.ts +3 -0
  93. package/src/thematic-state.ts +1 -1
  94. package/src/theme-provider.tsx +14 -2
  95. package/src/theme-styles.ts +14 -7
  96. package/src/toggle-button/toggle-button.tsx +48 -35
  97. package/src/tree-utils.test.ts +166 -0
  98. package/src/tree-utils.ts +107 -0
  99. package/src/file-item/use-register-in-image-gallery.tsx +0 -70
  100. 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
@@ -1,4 +1,4 @@
1
- import baseConfig from "@fibery/eslint-config";
1
+ import baseConfig from "../../eslint.config.mjs";
2
2
 
3
3
  export default [
4
4
  ...baseConfig,
@@ -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": "1.42.0",
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.1",
50
- "@fibery/helpers": "1.5.0",
51
- "@fibery/react": "1.5.0"
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": "5.9.3",
79
+ "typescript": "6.0.0-beta",
83
80
  "unist-util-reduce": "0.2.2",
84
- "@fibery/babel-preset": "7.4.1",
85
- "@fibery/eslint-config": "9.0.0"
81
+ "@fibery/babel-preset": "7.4.2"
86
82
  },
87
- "jest": {
88
- "testEnvironment": "jsdom",
89
- "coveragePathIgnorePatterns": [
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": "eslint .",
91
+ "lint": "../../scripts/lint.sh",
132
92
  "generate-icons": "node scripts/generate-icons.mjs",
133
- "typecheck": "tsc --noEmit"
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
+ });
@@ -4,6 +4,7 @@ import {ActionsMenuConfirmationProps} from "../actions-menu-confirmation";
4
4
 
5
5
  type MenuPrimitive = {
6
6
  Item: React.ElementType;
7
+ CheckboxItem: React.ElementType;
7
8
  Label: React.ElementType;
8
9
  Group: React.ElementType;
9
10
  Separator: React.ElementType;
@@ -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";
@@ -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
- ? Math.round(currentValue)
23
- : parseFloat(currentValue.toFixed(fixed));
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) {
@@ -1 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1
2
  export const AntAutoComplete: FunctionComponent<any>;
@@ -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 {getOpacities, iconSize, layout} from "./design-system";
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(getOpacities(color).opacity95, theme.menuBg, 5),
133
- light: a11yColor(getOpacities(color).opacity95, theme.whiteColor, 3),
134
- light2: a11yColor(getOpacities(color).opacity95, theme.menuBg, 5),
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 {border, getOpacities} from "./design-system";
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(getOpacities(color).opacity95, theme.menuBg, 5),
21
- light: a11yColor(getOpacities(color).opacity95, theme.whiteColor, 3),
22
- light2: a11yColor(getOpacities(color).opacity95, theme.menuBg, 5),
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);