@kollegioai/ui 0.1.0 → 0.1.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/dist/Button.d.mts +38 -0
- package/dist/Button.d.ts +38 -0
- package/dist/Button.js +18 -0
- package/dist/Button.js.map +1 -0
- package/dist/Button.mjs +3 -0
- package/dist/Button.mjs.map +1 -0
- package/dist/EllipsisMenu.d.mts +16 -0
- package/dist/EllipsisMenu.d.ts +16 -0
- package/dist/EllipsisMenu.js +22 -0
- package/dist/EllipsisMenu.js.map +1 -0
- package/dist/EllipsisMenu.mjs +3 -0
- package/dist/EllipsisMenu.mjs.map +1 -0
- package/dist/Tooltip.d.mts +48 -0
- package/dist/Tooltip.d.ts +48 -0
- package/dist/Tooltip.js +22 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tooltip.mjs +3 -0
- package/dist/Tooltip.mjs.map +1 -0
- package/dist/chunk-55KQFLN6.js +123 -0
- package/dist/chunk-55KQFLN6.js.map +1 -0
- package/dist/chunk-EBQK5NBX.js +213 -0
- package/dist/chunk-EBQK5NBX.js.map +1 -0
- package/dist/chunk-Q4T6BIJ6.js +184 -0
- package/dist/chunk-Q4T6BIJ6.js.map +1 -0
- package/dist/chunk-RFUSESWB.mjs +186 -0
- package/dist/chunk-RFUSESWB.mjs.map +1 -0
- package/dist/chunk-RYGUHPYX.mjs +181 -0
- package/dist/chunk-RYGUHPYX.mjs.map +1 -0
- package/dist/chunk-XVEIQDTK.mjs +119 -0
- package/dist/chunk-XVEIQDTK.mjs.map +1 -0
- package/dist/index.d.mts +6 -94
- package/dist/index.d.ts +6 -94
- package/dist/index.js +28 -516
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -486
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { ButtonProps } from '@chakra-ui/react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Variant set merged from both product apps:
|
|
7
|
+
* - client-src: primary, primaryStrong, accent, outline, secondary, ghost, oauth, logOut
|
|
8
|
+
* - counsellor: tertiary, light (its "secondary" mapped to `outline`)
|
|
9
|
+
*
|
|
10
|
+
* Components reference kollegio token NAMES (e.g. `backgroundPrimary`). The consuming
|
|
11
|
+
* app's Chakra `createSystem` must include the @kollegioai/tokens colors.
|
|
12
|
+
*/
|
|
13
|
+
type KollegioButtonVariant = 'primary' | 'primaryStrong' | 'accent' | 'outline' | 'secondary' | 'tertiary' | 'light' | 'ghost' | 'oauth' | 'logOut';
|
|
14
|
+
type KollegioButtonSize = 'sm' | 'md' | 'lg';
|
|
15
|
+
type KollegioButtonProps = Omit<ButtonProps, 'variant'> & {
|
|
16
|
+
variant?: KollegioButtonVariant;
|
|
17
|
+
/** Kollegio sizing preset — not Chakra's `size` prop. */
|
|
18
|
+
buttonSize?: KollegioButtonSize;
|
|
19
|
+
fullWidth?: boolean;
|
|
20
|
+
isLoading?: boolean;
|
|
21
|
+
leftIcon?: ReactNode;
|
|
22
|
+
rightIcon?: ReactNode;
|
|
23
|
+
/** iOS Safari: fire on touchend so fixed/mobile CTAs respond reliably. */
|
|
24
|
+
enableTouchEndClickFix?: boolean;
|
|
25
|
+
};
|
|
26
|
+
declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "variant"> & {
|
|
27
|
+
variant?: KollegioButtonVariant;
|
|
28
|
+
/** Kollegio sizing preset — not Chakra's `size` prop. */
|
|
29
|
+
buttonSize?: KollegioButtonSize;
|
|
30
|
+
fullWidth?: boolean;
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
leftIcon?: ReactNode;
|
|
33
|
+
rightIcon?: ReactNode;
|
|
34
|
+
/** iOS Safari: fire on touchend so fixed/mobile CTAs respond reliably. */
|
|
35
|
+
enableTouchEndClickFix?: boolean;
|
|
36
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
37
|
+
|
|
38
|
+
export { Button, type KollegioButtonProps, type KollegioButtonSize, type KollegioButtonVariant, Button as default };
|
package/dist/Button.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { ButtonProps } from '@chakra-ui/react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Variant set merged from both product apps:
|
|
7
|
+
* - client-src: primary, primaryStrong, accent, outline, secondary, ghost, oauth, logOut
|
|
8
|
+
* - counsellor: tertiary, light (its "secondary" mapped to `outline`)
|
|
9
|
+
*
|
|
10
|
+
* Components reference kollegio token NAMES (e.g. `backgroundPrimary`). The consuming
|
|
11
|
+
* app's Chakra `createSystem` must include the @kollegioai/tokens colors.
|
|
12
|
+
*/
|
|
13
|
+
type KollegioButtonVariant = 'primary' | 'primaryStrong' | 'accent' | 'outline' | 'secondary' | 'tertiary' | 'light' | 'ghost' | 'oauth' | 'logOut';
|
|
14
|
+
type KollegioButtonSize = 'sm' | 'md' | 'lg';
|
|
15
|
+
type KollegioButtonProps = Omit<ButtonProps, 'variant'> & {
|
|
16
|
+
variant?: KollegioButtonVariant;
|
|
17
|
+
/** Kollegio sizing preset — not Chakra's `size` prop. */
|
|
18
|
+
buttonSize?: KollegioButtonSize;
|
|
19
|
+
fullWidth?: boolean;
|
|
20
|
+
isLoading?: boolean;
|
|
21
|
+
leftIcon?: ReactNode;
|
|
22
|
+
rightIcon?: ReactNode;
|
|
23
|
+
/** iOS Safari: fire on touchend so fixed/mobile CTAs respond reliably. */
|
|
24
|
+
enableTouchEndClickFix?: boolean;
|
|
25
|
+
};
|
|
26
|
+
declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "variant"> & {
|
|
27
|
+
variant?: KollegioButtonVariant;
|
|
28
|
+
/** Kollegio sizing preset — not Chakra's `size` prop. */
|
|
29
|
+
buttonSize?: KollegioButtonSize;
|
|
30
|
+
fullWidth?: boolean;
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
leftIcon?: ReactNode;
|
|
33
|
+
rightIcon?: ReactNode;
|
|
34
|
+
/** iOS Safari: fire on touchend so fixed/mobile CTAs respond reliably. */
|
|
35
|
+
enableTouchEndClickFix?: boolean;
|
|
36
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
37
|
+
|
|
38
|
+
export { Button, type KollegioButtonProps, type KollegioButtonSize, type KollegioButtonVariant, Button as default };
|
package/dist/Button.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chunkQ4T6BIJ6_js = require('./chunk-Q4T6BIJ6.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "Button", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkQ4T6BIJ6_js.Button; }
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "default", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return chunkQ4T6BIJ6_js.Button_default; }
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=Button.js.map
|
|
18
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Button.js"}
|
package/dist/Button.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Button.mjs"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface EllipsisMenuProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
interface EllipsisMenuOptionProps {
|
|
8
|
+
text: string;
|
|
9
|
+
onClick: () => void;
|
|
10
|
+
color?: string;
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare const EllipsisMenu: ({ children }: EllipsisMenuProps) => react_jsx_runtime.JSX.Element;
|
|
14
|
+
declare const EllipsisMenuOption: ({ text, onClick, color, loading, }: EllipsisMenuOptionProps) => react_jsx_runtime.JSX.Element;
|
|
15
|
+
|
|
16
|
+
export { EllipsisMenu, EllipsisMenuOption, EllipsisMenu as default };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface EllipsisMenuProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
interface EllipsisMenuOptionProps {
|
|
8
|
+
text: string;
|
|
9
|
+
onClick: () => void;
|
|
10
|
+
color?: string;
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare const EllipsisMenu: ({ children }: EllipsisMenuProps) => react_jsx_runtime.JSX.Element;
|
|
14
|
+
declare const EllipsisMenuOption: ({ text, onClick, color, loading, }: EllipsisMenuOptionProps) => react_jsx_runtime.JSX.Element;
|
|
15
|
+
|
|
16
|
+
export { EllipsisMenu, EllipsisMenuOption, EllipsisMenu as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chunk55KQFLN6_js = require('./chunk-55KQFLN6.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "EllipsisMenu", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunk55KQFLN6_js.EllipsisMenu; }
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "EllipsisMenuOption", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return chunk55KQFLN6_js.EllipsisMenuOption; }
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "default", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return chunk55KQFLN6_js.EllipsisMenu_default; }
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=EllipsisMenu.js.map
|
|
22
|
+
//# sourceMappingURL=EllipsisMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"EllipsisMenu.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"EllipsisMenu.mjs"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Tooltip as Tooltip$1 } from '@chakra-ui/react';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
type TooltipPositioning = NonNullable<Tooltip$1.RootProps['positioning']>;
|
|
6
|
+
type TooltipPlacement = TooltipPositioning['placement'];
|
|
7
|
+
type TooltipOffset = TooltipPositioning['offset'];
|
|
8
|
+
interface TooltipProps extends Omit<Tooltip$1.RootProps, 'children' | 'open'> {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
showArrow?: boolean;
|
|
11
|
+
hasArrow?: boolean;
|
|
12
|
+
portalled?: boolean;
|
|
13
|
+
portalRef?: React.RefObject<HTMLElement | null>;
|
|
14
|
+
content?: React.ReactNode;
|
|
15
|
+
label?: React.ReactNode;
|
|
16
|
+
contentProps?: Tooltip$1.ContentProps;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
isDisabled?: boolean;
|
|
19
|
+
open?: boolean;
|
|
20
|
+
isOpen?: boolean;
|
|
21
|
+
placement?: TooltipPlacement;
|
|
22
|
+
offset?: TooltipOffset;
|
|
23
|
+
closeOnClick?: boolean;
|
|
24
|
+
fontSize?: Tooltip$1.ContentProps['fontSize'];
|
|
25
|
+
width?: Tooltip$1.ContentProps['width'];
|
|
26
|
+
w?: Tooltip$1.ContentProps['w'];
|
|
27
|
+
bg?: Tooltip$1.ContentProps['bg'];
|
|
28
|
+
color?: Tooltip$1.ContentProps['color'];
|
|
29
|
+
px?: Tooltip$1.ContentProps['px'];
|
|
30
|
+
py?: Tooltip$1.ContentProps['py'];
|
|
31
|
+
borderRadius?: Tooltip$1.ContentProps['borderRadius'];
|
|
32
|
+
boxShadow?: Tooltip$1.ContentProps['boxShadow'];
|
|
33
|
+
zIndex?: Tooltip$1.ContentProps['zIndex'];
|
|
34
|
+
alignSelf?: Tooltip$1.ContentProps['alignSelf'];
|
|
35
|
+
openOnClick?: boolean;
|
|
36
|
+
clickOpenDurationMs?: number;
|
|
37
|
+
fullWidthTrigger?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** Low-level Chakra v3 tooltip primitive. Prefer `Tooltip` (the markdown wrapper) for app usage. */
|
|
40
|
+
declare const TooltipPrimitive: React.ForwardRefExoticComponent<TooltipProps & React.RefAttributes<HTMLDivElement>>;
|
|
41
|
+
interface KollegioTooltipProps extends Omit<TooltipProps, 'content' | 'children'> {
|
|
42
|
+
label?: string;
|
|
43
|
+
children: React.ReactNode;
|
|
44
|
+
}
|
|
45
|
+
/** Brand tooltip: renders markdown `label`, tap-to-open on touch devices. */
|
|
46
|
+
declare const Tooltip: ({ label, children, ...props }: KollegioTooltipProps) => react_jsx_runtime.JSX.Element;
|
|
47
|
+
|
|
48
|
+
export { Tooltip, TooltipPrimitive, type TooltipProps, Tooltip as default };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Tooltip as Tooltip$1 } from '@chakra-ui/react';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
type TooltipPositioning = NonNullable<Tooltip$1.RootProps['positioning']>;
|
|
6
|
+
type TooltipPlacement = TooltipPositioning['placement'];
|
|
7
|
+
type TooltipOffset = TooltipPositioning['offset'];
|
|
8
|
+
interface TooltipProps extends Omit<Tooltip$1.RootProps, 'children' | 'open'> {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
showArrow?: boolean;
|
|
11
|
+
hasArrow?: boolean;
|
|
12
|
+
portalled?: boolean;
|
|
13
|
+
portalRef?: React.RefObject<HTMLElement | null>;
|
|
14
|
+
content?: React.ReactNode;
|
|
15
|
+
label?: React.ReactNode;
|
|
16
|
+
contentProps?: Tooltip$1.ContentProps;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
isDisabled?: boolean;
|
|
19
|
+
open?: boolean;
|
|
20
|
+
isOpen?: boolean;
|
|
21
|
+
placement?: TooltipPlacement;
|
|
22
|
+
offset?: TooltipOffset;
|
|
23
|
+
closeOnClick?: boolean;
|
|
24
|
+
fontSize?: Tooltip$1.ContentProps['fontSize'];
|
|
25
|
+
width?: Tooltip$1.ContentProps['width'];
|
|
26
|
+
w?: Tooltip$1.ContentProps['w'];
|
|
27
|
+
bg?: Tooltip$1.ContentProps['bg'];
|
|
28
|
+
color?: Tooltip$1.ContentProps['color'];
|
|
29
|
+
px?: Tooltip$1.ContentProps['px'];
|
|
30
|
+
py?: Tooltip$1.ContentProps['py'];
|
|
31
|
+
borderRadius?: Tooltip$1.ContentProps['borderRadius'];
|
|
32
|
+
boxShadow?: Tooltip$1.ContentProps['boxShadow'];
|
|
33
|
+
zIndex?: Tooltip$1.ContentProps['zIndex'];
|
|
34
|
+
alignSelf?: Tooltip$1.ContentProps['alignSelf'];
|
|
35
|
+
openOnClick?: boolean;
|
|
36
|
+
clickOpenDurationMs?: number;
|
|
37
|
+
fullWidthTrigger?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** Low-level Chakra v3 tooltip primitive. Prefer `Tooltip` (the markdown wrapper) for app usage. */
|
|
40
|
+
declare const TooltipPrimitive: React.ForwardRefExoticComponent<TooltipProps & React.RefAttributes<HTMLDivElement>>;
|
|
41
|
+
interface KollegioTooltipProps extends Omit<TooltipProps, 'content' | 'children'> {
|
|
42
|
+
label?: string;
|
|
43
|
+
children: React.ReactNode;
|
|
44
|
+
}
|
|
45
|
+
/** Brand tooltip: renders markdown `label`, tap-to-open on touch devices. */
|
|
46
|
+
declare const Tooltip: ({ label, children, ...props }: KollegioTooltipProps) => react_jsx_runtime.JSX.Element;
|
|
47
|
+
|
|
48
|
+
export { Tooltip, TooltipPrimitive, type TooltipProps, Tooltip as default };
|
package/dist/Tooltip.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chunkEBQK5NBX_js = require('./chunk-EBQK5NBX.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "Tooltip", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkEBQK5NBX_js.Tooltip; }
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "TooltipPrimitive", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return chunkEBQK5NBX_js.TooltipPrimitive; }
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, "default", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return chunkEBQK5NBX_js.Tooltip_default; }
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=Tooltip.js.map
|
|
22
|
+
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Tooltip.js"}
|
package/dist/Tooltip.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Tooltip.mjs"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react$1 = require('@chakra-ui/react');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
// src/EllipsisMenu.tsx
|
|
8
|
+
var DotsVerticalIcon = ({ size = 20 }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: size, height: size, viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9
|
+
"path",
|
|
10
|
+
{
|
|
11
|
+
d: "M10 10.833a.833.833 0 100-1.666.833.833 0 000 1.666zM10 5a.833.833 0 100-1.667A.833.833 0 0010 5zM10 16.667A.833.833 0 1010 15a.833.833 0 000 1.667z",
|
|
12
|
+
stroke: "currentColor",
|
|
13
|
+
strokeWidth: "1.667",
|
|
14
|
+
strokeLinecap: "round",
|
|
15
|
+
strokeLinejoin: "round"
|
|
16
|
+
}
|
|
17
|
+
) });
|
|
18
|
+
var EllipsisMenu = ({ children }) => {
|
|
19
|
+
const [showDropdown, setShowDropdown] = react.useState(false);
|
|
20
|
+
const menuRef = react.useRef(null);
|
|
21
|
+
react.useEffect(() => {
|
|
22
|
+
const handleClickOutside = (event) => {
|
|
23
|
+
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
24
|
+
setShowDropdown(false);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
if (showDropdown) {
|
|
28
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
29
|
+
} else {
|
|
30
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
31
|
+
}
|
|
32
|
+
return () => {
|
|
33
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
34
|
+
};
|
|
35
|
+
}, [showDropdown]);
|
|
36
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Box, { position: "relative", ref: menuRef, children: [
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
38
|
+
react$1.Box,
|
|
39
|
+
{
|
|
40
|
+
padding: "2px",
|
|
41
|
+
tabIndex: 0,
|
|
42
|
+
color: "contentPrimaryStrong",
|
|
43
|
+
onKeyDown: (e) => {
|
|
44
|
+
e.stopPropagation();
|
|
45
|
+
},
|
|
46
|
+
onClick: (event) => {
|
|
47
|
+
event.stopPropagation();
|
|
48
|
+
setShowDropdown(true);
|
|
49
|
+
},
|
|
50
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DotsVerticalIcon, {})
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
showDropdown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
+
react$1.VStack,
|
|
55
|
+
{
|
|
56
|
+
position: "absolute",
|
|
57
|
+
right: "10px",
|
|
58
|
+
top: "5px",
|
|
59
|
+
bg: "white",
|
|
60
|
+
rounded: "8px",
|
|
61
|
+
border: "1px solid",
|
|
62
|
+
borderColor: "borderSecondary",
|
|
63
|
+
zIndex: "10",
|
|
64
|
+
boxShadow: "0px 4px 4px rgba(0, 0, 0, 0.05)",
|
|
65
|
+
width: "216px",
|
|
66
|
+
gap: 0,
|
|
67
|
+
overflow: "scroll",
|
|
68
|
+
css: {
|
|
69
|
+
"&::-webkit-scrollbar": { display: "none" },
|
|
70
|
+
scrollbarWidth: "none",
|
|
71
|
+
msOverflowStyle: "none"
|
|
72
|
+
},
|
|
73
|
+
children: react.Children.map(children, (child) => {
|
|
74
|
+
if (!react.isValidElement(child)) {
|
|
75
|
+
return child;
|
|
76
|
+
}
|
|
77
|
+
const originalOnClick = child.props.onClick;
|
|
78
|
+
const handleClick = () => {
|
|
79
|
+
setShowDropdown(false);
|
|
80
|
+
if (typeof originalOnClick === "function") {
|
|
81
|
+
originalOnClick();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
return react.cloneElement(child, {
|
|
85
|
+
onClick: handleClick
|
|
86
|
+
});
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
] });
|
|
91
|
+
};
|
|
92
|
+
var EllipsisMenuOption = ({
|
|
93
|
+
text,
|
|
94
|
+
onClick,
|
|
95
|
+
color = "contentPrimaryStrong",
|
|
96
|
+
loading = false
|
|
97
|
+
}) => {
|
|
98
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Box, { display: "flex", justifyContent: "space-between", width: "100%", _hover: { background: "backgroundBase1" }, children: [
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
+
react$1.Text,
|
|
101
|
+
{
|
|
102
|
+
tabIndex: 0,
|
|
103
|
+
fontSize: "14px",
|
|
104
|
+
color: loading ? "contentPrimarySubtle" : color,
|
|
105
|
+
cursor: loading ? "not-allowed" : "pointer",
|
|
106
|
+
width: "full",
|
|
107
|
+
onClick,
|
|
108
|
+
textAlign: "start",
|
|
109
|
+
px: 2,
|
|
110
|
+
py: 1.5,
|
|
111
|
+
children: text
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
loading && /* @__PURE__ */ jsxRuntime.jsx(react$1.Spinner, { size: "sm", color: "contentPrimarySubtle", alignSelf: "center", mr: 2 })
|
|
115
|
+
] });
|
|
116
|
+
};
|
|
117
|
+
var EllipsisMenu_default = EllipsisMenu;
|
|
118
|
+
|
|
119
|
+
exports.EllipsisMenu = EllipsisMenu;
|
|
120
|
+
exports.EllipsisMenuOption = EllipsisMenuOption;
|
|
121
|
+
exports.EllipsisMenu_default = EllipsisMenu_default;
|
|
122
|
+
//# sourceMappingURL=chunk-55KQFLN6.js.map
|
|
123
|
+
//# sourceMappingURL=chunk-55KQFLN6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/EllipsisMenu.tsx"],"names":["jsx","useState","useRef","useEffect","jsxs","Box","VStack","Children","isValidElement","cloneElement","Text","Spinner"],"mappings":"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","file":"chunk-55KQFLN6.js","sourcesContent":["import { Box, Spinner, Text, VStack } from '@chakra-ui/react';\nimport {\n Children,\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nconst DotsVerticalIcon = ({ size = 20 }: { size?: number }) => (\n <svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 10.833a.833.833 0 100-1.666.833.833 0 000 1.666zM10 5a.833.833 0 100-1.667A.833.833 0 0010 5zM10 16.667A.833.833 0 1010 15a.833.833 0 000 1.667z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.667\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\ninterface EllipsisMenuProps {\n children: ReactNode;\n}\n\ninterface EllipsisMenuOptionProps {\n text: string;\n onClick: () => void;\n color?: string;\n loading?: boolean;\n}\n\nexport const EllipsisMenu = ({ children }: EllipsisMenuProps) => {\n const [showDropdown, setShowDropdown] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\n setShowDropdown(false);\n }\n };\n\n if (showDropdown) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [showDropdown]);\n\n return (\n <Box position={'relative'} ref={menuRef}>\n <Box\n padding={'2px'}\n tabIndex={0}\n color=\"contentPrimaryStrong\"\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onClick={(event) => {\n event.stopPropagation(); // Prevents parent click event\n setShowDropdown(true);\n }}\n >\n <DotsVerticalIcon />\n </Box>\n {showDropdown && (\n <VStack\n position=\"absolute\"\n right=\"10px\"\n top=\"5px\"\n bg=\"white\"\n rounded=\"8px\"\n border=\"1px solid\"\n borderColor={'borderSecondary'}\n zIndex=\"10\"\n boxShadow=\"0px 4px 4px rgba(0, 0, 0, 0.05)\"\n width={'216px'}\n gap={0}\n overflow={'scroll'}\n css={{\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n >\n {Children.map(children, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const originalOnClick = (child.props as { onClick?: () => void }).onClick;\n\n const handleClick = () => {\n setShowDropdown(false);\n if (typeof originalOnClick === 'function') {\n originalOnClick();\n }\n };\n\n return cloneElement(child as ReactElement<{ onClick?: () => void }>, {\n onClick: handleClick,\n });\n })}\n </VStack>\n )}\n </Box>\n );\n};\n\nexport const EllipsisMenuOption = ({\n text,\n onClick,\n color = 'contentPrimaryStrong',\n loading = false,\n}: EllipsisMenuOptionProps) => {\n return (\n <Box display={'flex'} justifyContent={'space-between'} width={'100%'} _hover={{ background: 'backgroundBase1' }}>\n <Text\n tabIndex={0}\n fontSize=\"14px\"\n color={loading ? 'contentPrimarySubtle' : color}\n cursor={loading ? 'not-allowed' : 'pointer'}\n width={'full'}\n onClick={onClick}\n textAlign={'start'}\n px={2}\n py={1.5}\n >\n {text}\n </Text>\n {loading && <Spinner size=\"sm\" color=\"contentPrimarySubtle\" alignSelf=\"center\" mr={2} />}\n </Box>\n );\n};\n\nexport default EllipsisMenu;\n"]}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('@chakra-ui/react');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var ReactMarkdown = require('react-markdown');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
29
|
+
var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
|
|
30
|
+
|
|
31
|
+
// src/Tooltip.tsx
|
|
32
|
+
var TooltipPrimitive = React__namespace.forwardRef(function TooltipPrimitive2(props, ref) {
|
|
33
|
+
const {
|
|
34
|
+
showArrow,
|
|
35
|
+
hasArrow,
|
|
36
|
+
children,
|
|
37
|
+
disabled,
|
|
38
|
+
isDisabled,
|
|
39
|
+
portalled = true,
|
|
40
|
+
content,
|
|
41
|
+
label,
|
|
42
|
+
contentProps,
|
|
43
|
+
portalRef,
|
|
44
|
+
open,
|
|
45
|
+
isOpen,
|
|
46
|
+
placement,
|
|
47
|
+
offset,
|
|
48
|
+
closeOnClick,
|
|
49
|
+
fontSize,
|
|
50
|
+
width,
|
|
51
|
+
w,
|
|
52
|
+
bg,
|
|
53
|
+
color,
|
|
54
|
+
px,
|
|
55
|
+
py,
|
|
56
|
+
borderRadius,
|
|
57
|
+
boxShadow,
|
|
58
|
+
zIndex,
|
|
59
|
+
alignSelf,
|
|
60
|
+
openOnClick,
|
|
61
|
+
clickOpenDurationMs = 900,
|
|
62
|
+
fullWidthTrigger = false,
|
|
63
|
+
openDelay = 0,
|
|
64
|
+
closeDelay = 0,
|
|
65
|
+
...rest
|
|
66
|
+
} = props;
|
|
67
|
+
const shouldOpenTooltipOnClick = typeof window !== "undefined" && (navigator.maxTouchPoints > 0 || window.matchMedia?.("(pointer: coarse)")?.matches === true || window.matchMedia?.("(hover: none)")?.matches === true);
|
|
68
|
+
const resolvedOpenOnClick = openOnClick ?? shouldOpenTooltipOnClick;
|
|
69
|
+
const [manualOpen, setManualOpen] = React__namespace.useState(false);
|
|
70
|
+
const manualOpenTimeoutRef = React__namespace.useRef(null);
|
|
71
|
+
const triggerRef = React__namespace.useRef(null);
|
|
72
|
+
const contentRef = React__namespace.useRef(null);
|
|
73
|
+
const clearManualOpenTimeout = React__namespace.useCallback(() => {
|
|
74
|
+
if (manualOpenTimeoutRef.current !== null) {
|
|
75
|
+
window.clearTimeout(manualOpenTimeoutRef.current);
|
|
76
|
+
manualOpenTimeoutRef.current = null;
|
|
77
|
+
}
|
|
78
|
+
}, []);
|
|
79
|
+
React__namespace.useEffect(
|
|
80
|
+
() => () => {
|
|
81
|
+
clearManualOpenTimeout();
|
|
82
|
+
},
|
|
83
|
+
[clearManualOpenTimeout]
|
|
84
|
+
);
|
|
85
|
+
React__namespace.useEffect(() => {
|
|
86
|
+
if (!resolvedOpenOnClick || !manualOpen) return;
|
|
87
|
+
const onPointerDownCapture = (e) => {
|
|
88
|
+
const t = e.target;
|
|
89
|
+
if (!(t instanceof Node)) return;
|
|
90
|
+
if (triggerRef.current?.contains(t)) return;
|
|
91
|
+
if (contentRef.current?.contains(t)) return;
|
|
92
|
+
setManualOpen(false);
|
|
93
|
+
clearManualOpenTimeout();
|
|
94
|
+
};
|
|
95
|
+
document.addEventListener("pointerdown", onPointerDownCapture, true);
|
|
96
|
+
return () => document.removeEventListener("pointerdown", onPointerDownCapture, true);
|
|
97
|
+
}, [clearManualOpenTimeout, manualOpen, resolvedOpenOnClick]);
|
|
98
|
+
const isTooltipDisabled = disabled ?? isDisabled ?? false;
|
|
99
|
+
if (isTooltipDisabled) {
|
|
100
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
101
|
+
}
|
|
102
|
+
const tooltipContent = content ?? label;
|
|
103
|
+
if (!tooltipContent) {
|
|
104
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
105
|
+
}
|
|
106
|
+
const positioning = placement !== void 0 || offset !== void 0 ? {
|
|
107
|
+
...rest.positioning ?? {},
|
|
108
|
+
...placement !== void 0 ? { placement } : {},
|
|
109
|
+
...offset !== void 0 ? { offset } : {}
|
|
110
|
+
} : rest.positioning;
|
|
111
|
+
const mergedContentProps = {
|
|
112
|
+
fontSize,
|
|
113
|
+
width,
|
|
114
|
+
w,
|
|
115
|
+
bg,
|
|
116
|
+
color,
|
|
117
|
+
px,
|
|
118
|
+
py,
|
|
119
|
+
borderRadius,
|
|
120
|
+
boxShadow,
|
|
121
|
+
zIndex,
|
|
122
|
+
alignSelf,
|
|
123
|
+
...contentProps
|
|
124
|
+
};
|
|
125
|
+
const openTooltipOnClick = () => {
|
|
126
|
+
if (!resolvedOpenOnClick) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
setManualOpen(true);
|
|
130
|
+
clearManualOpenTimeout();
|
|
131
|
+
manualOpenTimeoutRef.current = window.setTimeout(() => {
|
|
132
|
+
setManualOpen(false);
|
|
133
|
+
manualOpenTimeoutRef.current = null;
|
|
134
|
+
}, clickOpenDurationMs);
|
|
135
|
+
};
|
|
136
|
+
const triggerChild = /* @__PURE__ */ jsxRuntime.jsx(
|
|
137
|
+
"span",
|
|
138
|
+
{
|
|
139
|
+
ref: triggerRef,
|
|
140
|
+
onClick: resolvedOpenOnClick ? openTooltipOnClick : void 0,
|
|
141
|
+
style: {
|
|
142
|
+
display: fullWidthTrigger ? "flex" : "inline-flex",
|
|
143
|
+
width: fullWidthTrigger ? "100%" : void 0,
|
|
144
|
+
alignItems: "center",
|
|
145
|
+
justifyContent: "center",
|
|
146
|
+
minWidth: resolvedOpenOnClick && !fullWidthTrigger ? 44 : void 0,
|
|
147
|
+
minHeight: resolvedOpenOnClick && !fullWidthTrigger ? 44 : void 0,
|
|
148
|
+
cursor: "pointer",
|
|
149
|
+
WebkitTapHighlightColor: "transparent",
|
|
150
|
+
color: "var(--chakra-colors-contentPrimaryStrong)"
|
|
151
|
+
},
|
|
152
|
+
children
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
const rootProps = {
|
|
156
|
+
...rest,
|
|
157
|
+
open: isOpen ?? open ?? (manualOpen ? true : void 0),
|
|
158
|
+
openDelay,
|
|
159
|
+
closeDelay,
|
|
160
|
+
positioning,
|
|
161
|
+
...closeOnClick === false ? { closeOnPointerDown: false } : {}
|
|
162
|
+
};
|
|
163
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Tooltip.Root, { ...rootProps, children: [
|
|
164
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Tooltip.Trigger, { asChild: true, children: triggerChild }),
|
|
165
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: /* @__PURE__ */ jsxRuntime.jsx(react.Tooltip.Positioner, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
166
|
+
react.Tooltip.Content,
|
|
167
|
+
{
|
|
168
|
+
ref: (node) => {
|
|
169
|
+
contentRef.current = node;
|
|
170
|
+
if (typeof ref === "function") ref(node);
|
|
171
|
+
else if (ref) ref.current = node;
|
|
172
|
+
},
|
|
173
|
+
...mergedContentProps,
|
|
174
|
+
children: [
|
|
175
|
+
(showArrow || hasArrow) && /* @__PURE__ */ jsxRuntime.jsx(react.Tooltip.Arrow, { children: /* @__PURE__ */ jsxRuntime.jsx(react.Tooltip.ArrowTip, {}) }),
|
|
176
|
+
tooltipContent
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
) }) })
|
|
180
|
+
] });
|
|
181
|
+
});
|
|
182
|
+
var Tooltip = ({ label, children, ...props }) => {
|
|
183
|
+
const isTouch = react.useBreakpointValue({ base: true, lg: false }) ?? true;
|
|
184
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
+
TooltipPrimitive,
|
|
186
|
+
{
|
|
187
|
+
openOnClick: isTouch,
|
|
188
|
+
clickOpenDurationMs: isTouch ? 2500 : void 0,
|
|
189
|
+
content: label ? /* @__PURE__ */ jsxRuntime.jsx(react.VStack, { align: "start", gap: 2, maxW: "280px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
190
|
+
ReactMarkdown__default.default,
|
|
191
|
+
{
|
|
192
|
+
components: {
|
|
193
|
+
p: ({ children: children2 }) => /* @__PURE__ */ jsxRuntime.jsx(react.Text, { color: "inherit", children: children2 }),
|
|
194
|
+
strong: ({ children: children2 }) => /* @__PURE__ */ jsxRuntime.jsx(react.Text, { color: "inherit", display: "block", asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("b", { children: children2 }) }),
|
|
195
|
+
ul: ({ children: children2 }) => /* @__PURE__ */ jsxRuntime.jsx(react.VStack, { as: "ul", align: "start", gap: 1, pl: 4, children: children2 }),
|
|
196
|
+
li: ({ children: children2 }) => /* @__PURE__ */ jsxRuntime.jsx(react.Text, { color: "inherit", as: "li", ml: 2, fontSize: "sm", lineHeight: "short", children: children2 }),
|
|
197
|
+
a: ({ href, children: children2 }) => /* @__PURE__ */ jsxRuntime.jsx(react.Link, { href: href ?? "#", target: "_blank", color: "blue.200", children: children2 })
|
|
198
|
+
},
|
|
199
|
+
children: label
|
|
200
|
+
}
|
|
201
|
+
) }) : null,
|
|
202
|
+
...props,
|
|
203
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "span", display: "inline-block", cursor: "default", _hover: { cursor: "pointer" }, children }) })
|
|
204
|
+
}
|
|
205
|
+
);
|
|
206
|
+
};
|
|
207
|
+
var Tooltip_default = Tooltip;
|
|
208
|
+
|
|
209
|
+
exports.Tooltip = Tooltip;
|
|
210
|
+
exports.TooltipPrimitive = TooltipPrimitive;
|
|
211
|
+
exports.Tooltip_default = Tooltip_default;
|
|
212
|
+
//# sourceMappingURL=chunk-EBQK5NBX.js.map
|
|
213
|
+
//# sourceMappingURL=chunk-EBQK5NBX.js.map
|