@impulse-ui-native/popover 6.3.1 → 7.0.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/README.md +20 -7
- package/dist/components/index.d.mts +5 -3
- package/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/popover-description.js +1 -3
- package/dist/components/popover-description.js.map +1 -1
- package/dist/components/popover-footer.d.mts +9 -0
- package/dist/components/popover-footer.js +32 -0
- package/dist/components/popover-footer.js.map +1 -0
- package/dist/components/popover-header.d.mts +9 -0
- package/dist/components/popover-header.js +31 -0
- package/dist/components/popover-header.js.map +1 -0
- package/dist/components/popover-root.d.mts +1 -1
- package/dist/components/popover-root.js +1 -3
- package/dist/components/popover-root.js.map +1 -1
- package/dist/components/popover-surface.js +8 -10
- package/dist/components/popover-surface.js.map +1 -1
- package/dist/components/popover-title.js +2 -3
- package/dist/components/popover-title.js.map +1 -1
- package/dist/components/popover.d.mts +1 -1
- package/dist/components/popover.js +21 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/tooltip.js +21 -2
- package/dist/components/tooltip.js.map +1 -1
- package/dist/hooks/use-popover-surface.hook.js +3 -3
- package/dist/hooks/use-popover-surface.hook.js.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/types/index.d.mts +1 -1
- package/dist/types/popover.types.d.mts +8 -6
- package/package.json +8 -7
package/README.md
CHANGED
|
@@ -35,17 +35,21 @@ import { Typography } from "@impulse-ui-native/primitives";
|
|
|
35
35
|
</Tooltip>;
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
All compound parts render supplied children. `Popover.Content` owns Portal rendering and carries popover context to the host, so `Title
|
|
38
|
+
All compound parts render supplied children. `Popover.Content` owns Portal rendering and carries popover context to the host, so `Close` can dismiss there. Header, Footer, Title, and Description use independent theme styling. Other app-local React providers around an anchor do not automatically move with it; put those providers above the host or inside Content.
|
|
39
39
|
|
|
40
|
-
The convenience form
|
|
40
|
+
The convenience form composes Trigger, Content, Header, Title, Close, and Footer:
|
|
41
41
|
|
|
42
42
|
```tsx
|
|
43
|
-
<Popover
|
|
44
|
-
<
|
|
43
|
+
<Popover
|
|
44
|
+
trigger={<Typography.Label>Details</Typography.Label>}
|
|
45
|
+
title="Project details"
|
|
46
|
+
>
|
|
45
47
|
<Popover.Description>Updated just now.</Popover.Description>
|
|
46
48
|
</Popover>
|
|
47
49
|
```
|
|
48
50
|
|
|
51
|
+
A truthy header replaces the generated title. The header includes a neutral X close icon by default; hideClose omits it. A truthy footer renders Popover.Footer with trailing, wrapping actions. Header and Footer are child-only View parts available for compound composition. Pass body content as children; triggerProps and contentProps continue to customize the trigger and positioned panel. Titles can wrap beside the close control instead of pushing it outside the header.
|
|
52
|
+
|
|
49
53
|
## Contract
|
|
50
54
|
|
|
51
55
|
- `open`, `defaultOpen` (false), and `onOpenChange` support controlled and uncontrolled state. Controlled consumers must apply requested changes.
|
|
@@ -54,11 +58,20 @@ The convenience form assembles Trigger and Content:
|
|
|
54
58
|
- Root `disabled` suppresses the overlay and blocks trigger changes. Trigger/Close `disabled` or `loading` blocks that part's interaction. Supply a single Trigger and Content per Root; use non-interactive visual children inside Trigger rather than nesting another pressable.
|
|
55
59
|
- Outside taps and Android Back request dismissal. Outside taps are consumed; there is no dim scrim. Content sizes naturally without internal scrolling. Keep popovers compact; use a sheet, dialog, or screen for larger content. Keyboard avoidance and nested overlay coordination are outside this initial API.
|
|
56
60
|
- Tooltip `duration` defaults to 3000ms from opening; zero persists until dismissal. Timers clean up on close/unmount. Supply strings/numbers for token-styled text or a React node for custom content.
|
|
57
|
-
-
|
|
58
|
-
-
|
|
61
|
+
- Popover uses one flat secondary surface with a subtle border and no default shadow. Override `components.popover` on ThemeProvider for geometry, typography, and panel styling. Tooltip owns its compact inverse styling through `components.popover.tooltip`, without a surface variant in Root or context.
|
|
62
|
+
- Popover content defaults to 320dp wide; Tooltip sizes to its content. Both are constrained to the available host width. Content spacing and width can be customized with primitive style props or `style`.
|
|
59
63
|
- Anchors and host bounds are measured on opening and polled every 100ms while open, following scrolling and layout changes. Only one measurement is in flight; slow native callbacks are allowed to finish. Closed overlays have no measurement timer. Content stays hidden until measured and when its anchor is outside the usable host bounds.
|
|
60
64
|
- Popover and Tooltip use rounded panels without arrows. Collision handling flips to the opposite side when it has more space, then shifts into safe-area bounds. Extremely large content can overlap the anchor after clamping.
|
|
61
65
|
|
|
62
66
|
## Exports and verification
|
|
63
67
|
|
|
64
|
-
`Popover`, `Tooltip`, and their prop
|
|
68
|
+
`Popover`, `Tooltip`, and their prop and placement types are available directly or through `@impulse-ui-native/toolkit`. Storybook covers composition, controlled state, disabled triggers, long-press, and edge placements. Use the on-device Storybook host to verify rendering and interaction on iOS and Android.
|
|
69
|
+
|
|
70
|
+
## Surface migration
|
|
71
|
+
|
|
72
|
+
The surface prop and PopoverSurface type have been removed. Move former
|
|
73
|
+
components.popover.surfaces.elevated customizations to the flat panel tokens
|
|
74
|
+
(backgroundColor, borderColor, borderWidth, borderRadius, paddingHorizontal,
|
|
75
|
+
and paddingVertical). Move inverse hint styling to components.popover.tooltip;
|
|
76
|
+
its text color is named color. Customize Popover.Content directly for custom
|
|
77
|
+
panel styling.
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
|
-
import { PopoverProps, PopoverRootProps, PopoverTriggerProps, PopoverContentProps, PopoverTitleProps, PopoverDescriptionProps, PopoverCloseProps } from '../types/popover.types.mjs';
|
|
3
|
+
import { PopoverProps, PopoverRootProps, PopoverTriggerProps, PopoverContentProps, PopoverHeaderProps, PopoverFooterProps, PopoverTitleProps, PopoverDescriptionProps, PopoverCloseProps } from '../types/popover.types.mjs';
|
|
4
4
|
export { Tooltip } from './tooltip.mjs';
|
|
5
5
|
import 'react-native';
|
|
6
6
|
import '@impulse-ui-native/primitives';
|
|
7
7
|
|
|
8
8
|
declare const Popover: react.NamedExoticComponent<PopoverProps> & {
|
|
9
|
-
readonly type: ({ trigger, triggerProps, contentProps, children, ...props }: PopoverProps) => react_jsx_runtime.JSX.Element;
|
|
9
|
+
readonly type: ({ trigger, triggerProps, contentProps, header, title, footer, hideClose, children, ...props }: PopoverProps) => react_jsx_runtime.JSX.Element;
|
|
10
10
|
} & {
|
|
11
|
-
Root: react.MemoExoticComponent<({ children, open: openProp, defaultOpen, onOpenChange, disabled, placement,
|
|
11
|
+
Root: react.MemoExoticComponent<({ children, open: openProp, defaultOpen, onOpenChange, disabled, placement, portalName, }: PopoverRootProps) => react_jsx_runtime.JSX.Element>;
|
|
12
12
|
Trigger: react.MemoExoticComponent<({ trigger, disabled, loading, onPress, onLongPress, ...props }: PopoverTriggerProps) => react_jsx_runtime.JSX.Element>;
|
|
13
13
|
Content: react.MemoExoticComponent<(props: PopoverContentProps) => react_jsx_runtime.JSX.Element | null>;
|
|
14
|
+
Header: react.MemoExoticComponent<({ style, ...props }: PopoverHeaderProps) => react_jsx_runtime.JSX.Element>;
|
|
15
|
+
Footer: react.MemoExoticComponent<({ style, ...props }: PopoverFooterProps) => react_jsx_runtime.JSX.Element>;
|
|
14
16
|
Title: react.MemoExoticComponent<(props: PopoverTitleProps) => react_jsx_runtime.JSX.Element>;
|
|
15
17
|
Description: react.MemoExoticComponent<(props: PopoverDescriptionProps) => react_jsx_runtime.JSX.Element>;
|
|
16
18
|
Close: react.MemoExoticComponent<({ disabled, loading, onPress, ...props }: PopoverCloseProps) => react_jsx_runtime.JSX.Element>;
|
package/dist/components/index.js
CHANGED
|
@@ -2,6 +2,8 @@ import { PopoverComponent } from "./popover";
|
|
|
2
2
|
import { PopoverClose } from "./popover-close";
|
|
3
3
|
import { PopoverContent } from "./popover-content";
|
|
4
4
|
import { PopoverDescription } from "./popover-description";
|
|
5
|
+
import { PopoverFooter } from "./popover-footer";
|
|
6
|
+
import { PopoverHeader } from "./popover-header";
|
|
5
7
|
import { PopoverRoot } from "./popover-root";
|
|
6
8
|
import { PopoverTitle } from "./popover-title";
|
|
7
9
|
import { PopoverTrigger } from "./popover-trigger";
|
|
@@ -9,6 +11,8 @@ const Popover = Object.assign(PopoverComponent, {
|
|
|
9
11
|
Root: PopoverRoot,
|
|
10
12
|
Trigger: PopoverTrigger,
|
|
11
13
|
Content: PopoverContent,
|
|
14
|
+
Header: PopoverHeader,
|
|
15
|
+
Footer: PopoverFooter,
|
|
12
16
|
Title: PopoverTitle,
|
|
13
17
|
Description: PopoverDescription,
|
|
14
18
|
Close: PopoverClose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["import { PopoverComponent } from \"./popover\";\nimport { PopoverClose } from \"./popover-close\";\nimport { PopoverContent } from \"./popover-content\";\nimport { PopoverDescription } from \"./popover-description\";\nimport { PopoverRoot } from \"./popover-root\";\nimport { PopoverTitle } from \"./popover-title\";\nimport { PopoverTrigger } from \"./popover-trigger\";\n\nexport const Popover = Object.assign(PopoverComponent, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Title: PopoverTitle,\n Description: PopoverDescription,\n Close: PopoverClose,\n});\n\nexport { Tooltip } from \"./tooltip\";\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAExB,MAAM,UAAU,OAAO,OAAO,kBAAkB;AAAA,EACrD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,OAAO;AACT,CAAC;AAED,SAAS,eAAe;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["import { PopoverComponent } from \"./popover\";\nimport { PopoverClose } from \"./popover-close\";\nimport { PopoverContent } from \"./popover-content\";\nimport { PopoverDescription } from \"./popover-description\";\nimport { PopoverFooter } from \"./popover-footer\";\nimport { PopoverHeader } from \"./popover-header\";\nimport { PopoverRoot } from \"./popover-root\";\nimport { PopoverTitle } from \"./popover-title\";\nimport { PopoverTrigger } from \"./popover-trigger\";\n\nexport const Popover = Object.assign(PopoverComponent, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Header: PopoverHeader,\n Footer: PopoverFooter,\n Title: PopoverTitle,\n Description: PopoverDescription,\n Close: PopoverClose,\n});\n\nexport { Tooltip } from \"./tooltip\";\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAExB,MAAM,UAAU,OAAO,OAAO,kBAAkB;AAAA,EACrD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,OAAO;AACT,CAAC;AAED,SAAS,eAAe;","names":[]}
|
|
@@ -2,14 +2,12 @@ import { jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { memo } from "react";
|
|
3
3
|
import { Typography } from "@impulse-ui-native/primitives";
|
|
4
4
|
import { useComponentsTokens } from "@impulse-ui-native/theme";
|
|
5
|
-
import { usePopoverContext } from "../hooks/use-popover-context.hook";
|
|
6
5
|
const PopoverDescription = memo(function PopoverDescription2(props) {
|
|
7
|
-
const { surface } = usePopoverContext();
|
|
8
6
|
const tokens = useComponentsTokens().popover;
|
|
9
7
|
return /* @__PURE__ */ jsx(
|
|
10
8
|
Typography.BodySmall,
|
|
11
9
|
{
|
|
12
|
-
color:
|
|
10
|
+
color: tokens.descriptionColor,
|
|
13
11
|
fontSize: tokens.descriptionFontSize,
|
|
14
12
|
lineHeight: tokens.descriptionLineHeight,
|
|
15
13
|
...props
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/popover-description.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { Typography } from \"@impulse-ui-native/primitives\";\nimport { useComponentsTokens } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverDescriptionProps } from \"../types\";\
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover-description.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { Typography } from \"@impulse-ui-native/primitives\";\nimport { useComponentsTokens } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverDescriptionProps } from \"../types\";\n\nexport const PopoverDescription = memo(function PopoverDescription(\n props: PopoverDescriptionProps,\n) {\n const tokens = useComponentsTokens().popover;\n\n return (\n <Typography.BodySmall\n color={tokens.descriptionColor}\n fontSize={tokens.descriptionFontSize}\n lineHeight={tokens.descriptionLineHeight}\n {...props}\n />\n );\n});\n"],"mappings":"AAaI;AAbJ,SAAS,YAAY;AAErB,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AAI7B,MAAM,qBAAqB,KAAK,SAASA,oBAC9C,OACA;AACA,QAAM,SAAS,oBAAoB,EAAE;AAErC,SACE;AAAA,IAAC,WAAW;AAAA,IAAX;AAAA,MACC,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,MACjB,YAAY,OAAO;AAAA,MAClB,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;","names":["PopoverDescription"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { PopoverFooterProps } from '../types/popover.types.mjs';
|
|
4
|
+
import 'react-native';
|
|
5
|
+
import '@impulse-ui-native/primitives';
|
|
6
|
+
|
|
7
|
+
declare const PopoverFooter: react.MemoExoticComponent<({ style, ...props }: PopoverFooterProps) => react_jsx_runtime.JSX.Element>;
|
|
8
|
+
|
|
9
|
+
export { PopoverFooter };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { StyleSheet } from "react-native";
|
|
4
|
+
import { View } from "@impulse-ui-native/primitives";
|
|
5
|
+
import { useStyleProps, useThemedStyles } from "@impulse-ui-native/theme";
|
|
6
|
+
const PopoverFooter = memo(function PopoverFooter2({
|
|
7
|
+
style,
|
|
8
|
+
...props
|
|
9
|
+
}) {
|
|
10
|
+
const extractedStyleProps = useStyleProps(props);
|
|
11
|
+
const styles = useThemedStyles(themedStyles);
|
|
12
|
+
const partStyle = useMemo(
|
|
13
|
+
() => [styles.part, extractedStyleProps, style],
|
|
14
|
+
[styles.part, extractedStyleProps, style]
|
|
15
|
+
);
|
|
16
|
+
return /* @__PURE__ */ jsx(View, { ...props, style: partStyle });
|
|
17
|
+
});
|
|
18
|
+
function themedStyles(theme) {
|
|
19
|
+
return StyleSheet.create({
|
|
20
|
+
part: {
|
|
21
|
+
flexDirection: "row",
|
|
22
|
+
alignItems: "center",
|
|
23
|
+
justifyContent: "flex-end",
|
|
24
|
+
flexWrap: "wrap",
|
|
25
|
+
gap: theme.components.popover.gap
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
PopoverFooter
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=popover-footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover-footer.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport type { AppTheme } from \"@impulse-ui-native/theme\";\nimport { View } from \"@impulse-ui-native/primitives\";\nimport { useStyleProps, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverFooterProps } from \"../types\";\n\nexport const PopoverFooter = memo(function PopoverFooter({\n style,\n ...props\n}: PopoverFooterProps) {\n const extractedStyleProps = useStyleProps(props);\n const styles = useThemedStyles(themedStyles);\n\n const partStyle = useMemo(\n () => [styles.part, extractedStyleProps, style],\n [styles.part, extractedStyleProps, style],\n );\n\n return <View {...props} style={partStyle} />;\n});\n\nfunction themedStyles(theme: AppTheme) {\n return StyleSheet.create({\n part: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flexWrap: \"wrap\",\n gap: theme.components.popover.gap,\n },\n });\n}\n"],"mappings":"AAqBS;AArBT,SAAS,MAAM,eAAe;AAC9B,SAAS,kBAAkB;AAG3B,SAAS,YAAY;AACrB,SAAS,eAAe,uBAAuB;AAIxC,MAAM,gBAAgB,KAAK,SAASA,eAAc;AAAA,EACvD;AAAA,EACA,GAAG;AACL,GAAuB;AACrB,QAAM,sBAAsB,cAAc,KAAK;AAC/C,QAAM,SAAS,gBAAgB,YAAY;AAE3C,QAAM,YAAY;AAAA,IAChB,MAAM,CAAC,OAAO,MAAM,qBAAqB,KAAK;AAAA,IAC9C,CAAC,OAAO,MAAM,qBAAqB,KAAK;AAAA,EAC1C;AAEA,SAAO,oBAAC,QAAM,GAAG,OAAO,OAAO,WAAW;AAC5C,CAAC;AAED,SAAS,aAAa,OAAiB;AACrC,SAAO,WAAW,OAAO;AAAA,IACvB,MAAM;AAAA,MACJ,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,KAAK,MAAM,WAAW,QAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AACH;","names":["PopoverFooter"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { PopoverHeaderProps } from '../types/popover.types.mjs';
|
|
4
|
+
import 'react-native';
|
|
5
|
+
import '@impulse-ui-native/primitives';
|
|
6
|
+
|
|
7
|
+
declare const PopoverHeader: react.MemoExoticComponent<({ style, ...props }: PopoverHeaderProps) => react_jsx_runtime.JSX.Element>;
|
|
8
|
+
|
|
9
|
+
export { PopoverHeader };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { StyleSheet } from "react-native";
|
|
4
|
+
import { View } from "@impulse-ui-native/primitives";
|
|
5
|
+
import { useStyleProps, useThemedStyles } from "@impulse-ui-native/theme";
|
|
6
|
+
const PopoverHeader = memo(function PopoverHeader2({
|
|
7
|
+
style,
|
|
8
|
+
...props
|
|
9
|
+
}) {
|
|
10
|
+
const extractedStyleProps = useStyleProps(props);
|
|
11
|
+
const styles = useThemedStyles(themedStyles);
|
|
12
|
+
const partStyle = useMemo(
|
|
13
|
+
() => [styles.part, extractedStyleProps, style],
|
|
14
|
+
[styles.part, extractedStyleProps, style]
|
|
15
|
+
);
|
|
16
|
+
return /* @__PURE__ */ jsx(View, { ...props, style: partStyle });
|
|
17
|
+
});
|
|
18
|
+
function themedStyles(theme) {
|
|
19
|
+
return StyleSheet.create({
|
|
20
|
+
part: {
|
|
21
|
+
flexDirection: "row",
|
|
22
|
+
alignItems: "center",
|
|
23
|
+
justifyContent: "space-between",
|
|
24
|
+
gap: theme.components.popover.gap
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
PopoverHeader
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=popover-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover-header.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport type { AppTheme } from \"@impulse-ui-native/theme\";\nimport { View } from \"@impulse-ui-native/primitives\";\nimport { useStyleProps, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverHeaderProps } from \"../types\";\n\nexport const PopoverHeader = memo(function PopoverHeader({\n style,\n ...props\n}: PopoverHeaderProps) {\n const extractedStyleProps = useStyleProps(props);\n const styles = useThemedStyles(themedStyles);\n\n const partStyle = useMemo(\n () => [styles.part, extractedStyleProps, style],\n [styles.part, extractedStyleProps, style],\n );\n\n return <View {...props} style={partStyle} />;\n});\n\nfunction themedStyles(theme: AppTheme) {\n return StyleSheet.create({\n part: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: theme.components.popover.gap,\n },\n });\n}\n"],"mappings":"AAqBS;AArBT,SAAS,MAAM,eAAe;AAC9B,SAAS,kBAAkB;AAG3B,SAAS,YAAY;AACrB,SAAS,eAAe,uBAAuB;AAIxC,MAAM,gBAAgB,KAAK,SAASA,eAAc;AAAA,EACvD;AAAA,EACA,GAAG;AACL,GAAuB;AACrB,QAAM,sBAAsB,cAAc,KAAK;AAC/C,QAAM,SAAS,gBAAgB,YAAY;AAE3C,QAAM,YAAY;AAAA,IAChB,MAAM,CAAC,OAAO,MAAM,qBAAqB,KAAK;AAAA,IAC9C,CAAC,OAAO,MAAM,qBAAqB,KAAK;AAAA,EAC1C;AAEA,SAAO,oBAAC,QAAM,GAAG,OAAO,OAAO,WAAW;AAC5C,CAAC;AAED,SAAS,aAAa,OAAiB;AACrC,SAAO,WAAW,OAAO;AAAA,IACvB,MAAM;AAAA,MACJ,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,KAAK,MAAM,WAAW,QAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AACH;","names":["PopoverHeader"]}
|
|
@@ -4,6 +4,6 @@ import { PopoverRootProps } from '../types/popover.types.mjs';
|
|
|
4
4
|
import 'react-native';
|
|
5
5
|
import '@impulse-ui-native/primitives';
|
|
6
6
|
|
|
7
|
-
declare const PopoverRoot: react.MemoExoticComponent<({ children, open: openProp, defaultOpen, onOpenChange, disabled, placement,
|
|
7
|
+
declare const PopoverRoot: react.MemoExoticComponent<({ children, open: openProp, defaultOpen, onOpenChange, disabled, placement, portalName, }: PopoverRootProps) => react_jsx_runtime.JSX.Element>;
|
|
8
8
|
|
|
9
9
|
export { PopoverRoot };
|
|
@@ -9,7 +9,6 @@ const PopoverRoot = memo(function PopoverRoot2({
|
|
|
9
9
|
onOpenChange,
|
|
10
10
|
disabled = false,
|
|
11
11
|
placement = "bottom",
|
|
12
|
-
surface = "elevated",
|
|
13
12
|
portalName
|
|
14
13
|
}) {
|
|
15
14
|
const anchorRef = useRef(null);
|
|
@@ -25,10 +24,9 @@ const PopoverRoot = memo(function PopoverRoot2({
|
|
|
25
24
|
setOpen,
|
|
26
25
|
anchorRef,
|
|
27
26
|
placement,
|
|
28
|
-
surface,
|
|
29
27
|
portalName
|
|
30
28
|
}),
|
|
31
|
-
[open, disabled, setOpen, placement,
|
|
29
|
+
[open, disabled, setOpen, placement, portalName]
|
|
32
30
|
);
|
|
33
31
|
return /* @__PURE__ */ jsx(PopoverContext.Provider, { value: context, children });
|
|
34
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/popover-root.tsx"],"sourcesContent":["import type { View } from \"react-native\";\nimport { memo, useMemo, useRef } from \"react\";\n\nimport { useControllableState } from \"@impulse-ui-native/core\";\n\nimport type { PopoverRootProps } from \"../types\";\nimport { PopoverContext } from \"../contexts/popover.context\";\n\nexport const PopoverRoot = memo(function PopoverRoot({\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n placement = \"bottom\",\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover-root.tsx"],"sourcesContent":["import type { View } from \"react-native\";\nimport { memo, useMemo, useRef } from \"react\";\n\nimport { useControllableState } from \"@impulse-ui-native/core\";\n\nimport type { PopoverRootProps } from \"../types\";\nimport { PopoverContext } from \"../contexts/popover.context\";\n\nexport const PopoverRoot = memo(function PopoverRoot({\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n placement = \"bottom\",\n portalName,\n}: PopoverRootProps) {\n const anchorRef = useRef<View>(null);\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const context = useMemo(\n () => ({\n open: open && !disabled,\n disabled,\n setOpen,\n anchorRef,\n placement,\n portalName,\n }),\n [open, disabled, setOpen, placement, portalName],\n );\n\n return (\n <PopoverContext.Provider value={context}>\n {children}\n </PopoverContext.Provider>\n );\n});\n"],"mappings":"AAsCI;AArCJ,SAAS,MAAM,SAAS,cAAc;AAEtC,SAAS,4BAA4B;AAGrC,SAAS,sBAAsB;AAExB,MAAM,cAAc,KAAK,SAASA,aAAY;AAAA,EACnD;AAAA,EACA,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF,GAAqB;AACnB,QAAM,YAAY,OAAa,IAAI;AAEnC,QAAM,CAAC,MAAM,OAAO,IAAI,qBAAqB;AAAA,IAC3C,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,MACL,MAAM,QAAQ,CAAC;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,MAAM,UAAU,SAAS,WAAW,UAAU;AAAA,EACjD;AAEA,SACE,oBAAC,eAAe,UAAf,EAAwB,OAAO,SAC7B,UACH;AAEJ,CAAC;","names":["PopoverRoot"]}
|
|
@@ -29,7 +29,6 @@ const PopoverSurfaceView = memo(function PopoverSurfaceView2({
|
|
|
29
29
|
/* @__PURE__ */ jsx(
|
|
30
30
|
View,
|
|
31
31
|
{
|
|
32
|
-
shadow: "sm",
|
|
33
32
|
...props,
|
|
34
33
|
pointerEvents: styleProps.ready ? "auto" : "none",
|
|
35
34
|
style: panelStyle,
|
|
@@ -41,9 +40,8 @@ const PopoverSurfaceView = memo(function PopoverSurfaceView2({
|
|
|
41
40
|
}
|
|
42
41
|
);
|
|
43
42
|
});
|
|
44
|
-
function themedStyles(theme, {
|
|
43
|
+
function themedStyles(theme, { bounds, host, position, ready }) {
|
|
45
44
|
const tokens = theme.components.popover;
|
|
46
|
-
const appearance = tokens.surfaces[surface];
|
|
47
45
|
return StyleSheet.create({
|
|
48
46
|
host: { ...StyleSheet.absoluteFill, zIndex: tokens.zIndexBase },
|
|
49
47
|
position: {
|
|
@@ -54,13 +52,13 @@ function themedStyles(theme, { surface, bounds, host, position, ready }) {
|
|
|
54
52
|
opacity: ready ? 1 : 0
|
|
55
53
|
},
|
|
56
54
|
panel: {
|
|
57
|
-
width:
|
|
58
|
-
backgroundColor:
|
|
59
|
-
borderColor:
|
|
60
|
-
borderWidth:
|
|
61
|
-
borderRadius:
|
|
62
|
-
paddingHorizontal:
|
|
63
|
-
paddingVertical:
|
|
55
|
+
width: tokens.maxWidth,
|
|
56
|
+
backgroundColor: tokens.backgroundColor,
|
|
57
|
+
borderColor: tokens.borderColor,
|
|
58
|
+
borderWidth: tokens.borderWidth,
|
|
59
|
+
borderRadius: tokens.borderRadius,
|
|
60
|
+
paddingHorizontal: tokens.paddingHorizontal,
|
|
61
|
+
paddingVertical: tokens.paddingVertical,
|
|
64
62
|
gap: tokens.gap
|
|
65
63
|
}
|
|
66
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/popover-surface.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport type { AppTheme } from \"@impulse-ui-native/theme\";\nimport { Pressable, View } from \"@impulse-ui-native/primitives\";\nimport { useStyleProps, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverContentProps } from \"../types\";\nimport type { PopoverSurfaceStyleProps } from \"../types/popover.types\";\nimport { usePopoverSurface } from \"../hooks/use-popover-surface.hook\";\n\nexport const PopoverSurfaceView = memo(function PopoverSurfaceView({\n children,\n style,\n onLayout,\n ...props\n}: PopoverContentProps) {\n const { hostRef, styleProps, close, handleLayout } =\n usePopoverSurface(onLayout);\n\n const extractedStyleProps = useStyleProps(props);\n const styles = useThemedStyles(themedStyles, styleProps, [styleProps]);\n\n const panelStyle = useMemo(\n () => [styles.panel, extractedStyleProps, style, styles.position],\n [styles.panel, extractedStyleProps, style, styles.position],\n );\n\n return (\n <View\n ref={hostRef}\n collapsable={false}\n pointerEvents=\"box-none\"\n style={styles.host}\n >\n <Pressable style={StyleSheet.absoluteFill} onPress={close} />\n <View\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover-surface.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport type { AppTheme } from \"@impulse-ui-native/theme\";\nimport { Pressable, View } from \"@impulse-ui-native/primitives\";\nimport { useStyleProps, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverContentProps } from \"../types\";\nimport type { PopoverSurfaceStyleProps } from \"../types/popover.types\";\nimport { usePopoverSurface } from \"../hooks/use-popover-surface.hook\";\n\nexport const PopoverSurfaceView = memo(function PopoverSurfaceView({\n children,\n style,\n onLayout,\n ...props\n}: PopoverContentProps) {\n const { hostRef, styleProps, close, handleLayout } =\n usePopoverSurface(onLayout);\n\n const extractedStyleProps = useStyleProps(props);\n const styles = useThemedStyles(themedStyles, styleProps, [styleProps]);\n\n const panelStyle = useMemo(\n () => [styles.panel, extractedStyleProps, style, styles.position],\n [styles.panel, extractedStyleProps, style, styles.position],\n );\n\n return (\n <View\n ref={hostRef}\n collapsable={false}\n pointerEvents=\"box-none\"\n style={styles.host}\n >\n <Pressable style={StyleSheet.absoluteFill} onPress={close} />\n <View\n {...props}\n pointerEvents={styleProps.ready ? \"auto\" : \"none\"}\n style={panelStyle}\n onLayout={handleLayout}\n >\n {children}\n </View>\n </View>\n );\n});\n\nfunction themedStyles(\n theme: AppTheme,\n { bounds, host, position, ready }: PopoverSurfaceStyleProps,\n) {\n const tokens = theme.components.popover;\n\n return StyleSheet.create({\n host: { ...StyleSheet.absoluteFill, zIndex: tokens.zIndexBase },\n\n position: {\n position: \"absolute\",\n left: (position?.x ?? bounds.x) - (host?.x ?? 0),\n top: (position?.y ?? bounds.y) - (host?.y ?? 0),\n maxWidth: Math.min(tokens.maxWidth, bounds.width),\n opacity: ready ? 1 : 0,\n },\n\n panel: {\n width: tokens.maxWidth,\n backgroundColor: tokens.backgroundColor,\n borderColor: tokens.borderColor,\n borderWidth: tokens.borderWidth,\n borderRadius: tokens.borderRadius,\n paddingHorizontal: tokens.paddingHorizontal,\n paddingVertical: tokens.paddingVertical,\n gap: tokens.gap,\n },\n });\n}\n"],"mappings":"AA6BI,SAME,KANF;AA7BJ,SAAS,MAAM,eAAe;AAC9B,SAAS,kBAAkB;AAG3B,SAAS,WAAW,YAAY;AAChC,SAAS,eAAe,uBAAuB;AAI/C,SAAS,yBAAyB;AAE3B,MAAM,qBAAqB,KAAK,SAASA,oBAAmB;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,QAAM,EAAE,SAAS,YAAY,OAAO,aAAa,IAC/C,kBAAkB,QAAQ;AAE5B,QAAM,sBAAsB,cAAc,KAAK;AAC/C,QAAM,SAAS,gBAAgB,cAAc,YAAY,CAAC,UAAU,CAAC;AAErE,QAAM,aAAa;AAAA,IACjB,MAAM,CAAC,OAAO,OAAO,qBAAqB,OAAO,OAAO,QAAQ;AAAA,IAChE,CAAC,OAAO,OAAO,qBAAqB,OAAO,OAAO,QAAQ;AAAA,EAC5D;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,aAAa;AAAA,MACb,eAAc;AAAA,MACd,OAAO,OAAO;AAAA,MAEd;AAAA,4BAAC,aAAU,OAAO,WAAW,cAAc,SAAS,OAAO;AAAA,QAC3D;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,eAAe,WAAW,QAAQ,SAAS;AAAA,YAC3C,OAAO;AAAA,YACP,UAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,SAAS,aACP,OACA,EAAE,QAAQ,MAAM,UAAU,MAAM,GAChC;AACA,QAAM,SAAS,MAAM,WAAW;AAEhC,SAAO,WAAW,OAAO;AAAA,IACvB,MAAM,EAAE,GAAG,WAAW,cAAc,QAAQ,OAAO,WAAW;AAAA,IAE9D,UAAU;AAAA,MACR,UAAU;AAAA,MACV,OAAO,UAAU,KAAK,OAAO,MAAM,MAAM,KAAK;AAAA,MAC9C,MAAM,UAAU,KAAK,OAAO,MAAM,MAAM,KAAK;AAAA,MAC7C,UAAU,KAAK,IAAI,OAAO,UAAU,OAAO,KAAK;AAAA,MAChD,SAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,IAEA,OAAO;AAAA,MACL,OAAO,OAAO;AAAA,MACd,iBAAiB,OAAO;AAAA,MACxB,aAAa,OAAO;AAAA,MACpB,aAAa,OAAO;AAAA,MACpB,cAAc,OAAO;AAAA,MACrB,mBAAmB,OAAO;AAAA,MAC1B,iBAAiB,OAAO;AAAA,MACxB,KAAK,OAAO;AAAA,IACd;AAAA,EACF,CAAC;AACH;","names":["PopoverSurfaceView"]}
|
|
@@ -2,16 +2,15 @@ import { jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { memo } from "react";
|
|
3
3
|
import { Typography } from "@impulse-ui-native/primitives";
|
|
4
4
|
import { useComponentsTokens } from "@impulse-ui-native/theme";
|
|
5
|
-
import { usePopoverContext } from "../hooks/use-popover-context.hook";
|
|
6
5
|
const PopoverTitle = memo(function PopoverTitle2(props) {
|
|
7
|
-
const { surface } = usePopoverContext();
|
|
8
6
|
const tokens = useComponentsTokens().popover;
|
|
9
7
|
return /* @__PURE__ */ jsx(
|
|
10
8
|
Typography.Title6,
|
|
11
9
|
{
|
|
12
|
-
color:
|
|
10
|
+
color: tokens.titleColor,
|
|
13
11
|
fontSize: tokens.titleFontSize,
|
|
14
12
|
lineHeight: tokens.titleLineHeight,
|
|
13
|
+
flexShrink: 1,
|
|
15
14
|
...props
|
|
16
15
|
}
|
|
17
16
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/popover-title.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { Typography } from \"@impulse-ui-native/primitives\";\nimport { useComponentsTokens } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverTitleProps } from \"../types\";\
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover-title.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { Typography } from \"@impulse-ui-native/primitives\";\nimport { useComponentsTokens } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverTitleProps } from \"../types\";\n\nexport const PopoverTitle = memo(function PopoverTitle(\n props: PopoverTitleProps,\n) {\n const tokens = useComponentsTokens().popover;\n\n return (\n <Typography.Title6\n color={tokens.titleColor}\n fontSize={tokens.titleFontSize}\n lineHeight={tokens.titleLineHeight}\n flexShrink={1}\n {...props}\n />\n );\n});\n"],"mappings":"AAaI;AAbJ,SAAS,YAAY;AAErB,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AAI7B,MAAM,eAAe,KAAK,SAASA,cACxC,OACA;AACA,QAAM,SAAS,oBAAoB,EAAE;AAErC,SACE;AAAA,IAAC,WAAW;AAAA,IAAX;AAAA,MACC,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,MACjB,YAAY,OAAO;AAAA,MACnB,YAAY;AAAA,MACX,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;","names":["PopoverTitle"]}
|
|
@@ -4,6 +4,6 @@ import { PopoverProps } from '../types/popover.types.mjs';
|
|
|
4
4
|
import 'react-native';
|
|
5
5
|
import '@impulse-ui-native/primitives';
|
|
6
6
|
|
|
7
|
-
declare const PopoverComponent: react.MemoExoticComponent<({ trigger, triggerProps, contentProps, children, ...props }: PopoverProps) => react_jsx_runtime.JSX.Element>;
|
|
7
|
+
declare const PopoverComponent: react.MemoExoticComponent<({ trigger, triggerProps, contentProps, header, title, footer, hideClose, children, ...props }: PopoverProps) => react_jsx_runtime.JSX.Element>;
|
|
8
8
|
|
|
9
9
|
export { PopoverComponent };
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo } from "react";
|
|
3
|
+
import { Icon } from "@impulse-ui-native/icon";
|
|
4
|
+
import { XIcon } from "@impulse-ui-native/icon/icons/x";
|
|
5
|
+
import { useColors } from "@impulse-ui-native/theme";
|
|
6
|
+
import { PopoverClose } from "./popover-close";
|
|
3
7
|
import { PopoverContent } from "./popover-content";
|
|
8
|
+
import { PopoverFooter } from "./popover-footer";
|
|
9
|
+
import { PopoverHeader } from "./popover-header";
|
|
4
10
|
import { PopoverRoot } from "./popover-root";
|
|
11
|
+
import { PopoverTitle } from "./popover-title";
|
|
5
12
|
import { PopoverTrigger } from "./popover-trigger";
|
|
6
13
|
const PopoverComponent = memo(function Popover({
|
|
7
14
|
trigger,
|
|
8
15
|
triggerProps,
|
|
9
16
|
contentProps,
|
|
17
|
+
header,
|
|
18
|
+
title,
|
|
19
|
+
footer,
|
|
20
|
+
hideClose = false,
|
|
10
21
|
children,
|
|
11
22
|
...props
|
|
12
23
|
}) {
|
|
24
|
+
const colors = useColors();
|
|
13
25
|
return /* @__PURE__ */ jsxs(PopoverRoot, { ...props, children: [
|
|
14
26
|
/* @__PURE__ */ jsx(PopoverTrigger, { ...triggerProps, children: trigger }),
|
|
15
|
-
/* @__PURE__ */
|
|
27
|
+
/* @__PURE__ */ jsxs(PopoverContent, { ...contentProps, children: [
|
|
28
|
+
header || title || !hideClose ? /* @__PURE__ */ jsxs(PopoverHeader, { children: [
|
|
29
|
+
header,
|
|
30
|
+
!header && title ? /* @__PURE__ */ jsx(PopoverTitle, { children: title }) : null,
|
|
31
|
+
!hideClose ? /* @__PURE__ */ jsx(PopoverClose, { marginLeft: "auto", children: /* @__PURE__ */ jsx(Icon, { icon: XIcon, size: "small", color: colors.text.tertiary }) }) : null
|
|
32
|
+
] }) : null,
|
|
33
|
+
children,
|
|
34
|
+
footer ? /* @__PURE__ */ jsx(PopoverFooter, { children: footer }) : null
|
|
35
|
+
] })
|
|
16
36
|
] });
|
|
17
37
|
});
|
|
18
38
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/popover.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport type { PopoverProps } from \"../types\";\nimport { PopoverContent } from \"./popover-content\";\nimport { PopoverRoot } from \"./popover-root\";\nimport { PopoverTrigger } from \"./popover-trigger\";\n\nexport const PopoverComponent = memo(function Popover({\n trigger,\n triggerProps,\n contentProps,\n children,\n ...props\n}: PopoverProps) {\n return (\n <PopoverRoot {...props}>\n <PopoverTrigger {...triggerProps}>{trigger}</PopoverTrigger>\n <PopoverContent {...contentProps}>{children}</PopoverContent>\n </PopoverRoot>\n );\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/components/popover.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { Icon } from \"@impulse-ui-native/icon\";\nimport { XIcon } from \"@impulse-ui-native/icon/icons/x\";\nimport { useColors } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverProps } from \"../types\";\nimport { PopoverClose } from \"./popover-close\";\nimport { PopoverContent } from \"./popover-content\";\nimport { PopoverFooter } from \"./popover-footer\";\nimport { PopoverHeader } from \"./popover-header\";\nimport { PopoverRoot } from \"./popover-root\";\nimport { PopoverTitle } from \"./popover-title\";\nimport { PopoverTrigger } from \"./popover-trigger\";\n\nexport const PopoverComponent = memo(function Popover({\n trigger,\n triggerProps,\n contentProps,\n header,\n title,\n footer,\n hideClose = false,\n children,\n ...props\n}: PopoverProps) {\n const colors = useColors();\n\n return (\n <PopoverRoot {...props}>\n <PopoverTrigger {...triggerProps}>{trigger}</PopoverTrigger>\n <PopoverContent {...contentProps}>\n {header || title || !hideClose ? (\n <PopoverHeader>\n {header}\n {!header && title ? <PopoverTitle>{title}</PopoverTitle> : null}\n {!hideClose ? (\n <PopoverClose marginLeft=\"auto\">\n <Icon icon={XIcon} size=\"small\" color={colors.text.tertiary} />\n </PopoverClose>\n ) : null}\n </PopoverHeader>\n ) : null}\n {children}\n {footer ? <PopoverFooter>{footer}</PopoverFooter> : null}\n </PopoverContent>\n </PopoverRoot>\n );\n});\n"],"mappings":"AA8BM,cAGI,YAHJ;AA9BN,SAAS,YAAY;AAErB,SAAS,YAAY;AACrB,SAAS,aAAa;AACtB,SAAS,iBAAiB;AAG1B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAExB,MAAM,mBAAmB,KAAK,SAAS,QAAQ;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,GAAiB;AACf,QAAM,SAAS,UAAU;AAEzB,SACE,qBAAC,eAAa,GAAG,OACf;AAAA,wBAAC,kBAAgB,GAAG,cAAe,mBAAQ;AAAA,IAC3C,qBAAC,kBAAgB,GAAG,cACjB;AAAA,gBAAU,SAAS,CAAC,YACnB,qBAAC,iBACE;AAAA;AAAA,QACA,CAAC,UAAU,QAAQ,oBAAC,gBAAc,iBAAM,IAAkB;AAAA,QAC1D,CAAC,YACA,oBAAC,gBAAa,YAAW,QACvB,8BAAC,QAAK,MAAM,OAAO,MAAK,SAAQ,OAAO,OAAO,KAAK,UAAU,GAC/D,IACE;AAAA,SACN,IACE;AAAA,MACH;AAAA,MACA,SAAS,oBAAC,iBAAe,kBAAO,IAAmB;AAAA,OACtD;AAAA,KACF;AAEJ,CAAC;","names":[]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo } from "react";
|
|
3
|
+
import { StyleSheet } from "react-native";
|
|
3
4
|
import {
|
|
4
5
|
useControllableState,
|
|
5
6
|
useEventCallback,
|
|
6
7
|
useTimer
|
|
7
8
|
} from "@impulse-ui-native/core";
|
|
9
|
+
import { useThemedStyles } from "@impulse-ui-native/theme";
|
|
8
10
|
import { TooltipDuration } from "../constants/popover.constants";
|
|
9
11
|
import { PopoverContent } from "./popover-content";
|
|
10
12
|
import { PopoverDescription } from "./popover-description";
|
|
@@ -27,6 +29,7 @@ const Tooltip = memo(function Tooltip2({
|
|
|
27
29
|
defaultProp: defaultOpen,
|
|
28
30
|
onChange: onOpenChange
|
|
29
31
|
});
|
|
32
|
+
const styles = useThemedStyles(themedStyles);
|
|
30
33
|
const dismiss = useEventCallback(() => setOpen(false));
|
|
31
34
|
useTimer({ enabled: open && !disabled, duration, callback: dismiss });
|
|
32
35
|
return /* @__PURE__ */ jsxs(
|
|
@@ -37,14 +40,30 @@ const Tooltip = memo(function Tooltip2({
|
|
|
37
40
|
onOpenChange: setOpen,
|
|
38
41
|
disabled,
|
|
39
42
|
placement,
|
|
40
|
-
surface: "inverse",
|
|
41
43
|
children: [
|
|
42
44
|
/* @__PURE__ */ jsx(PopoverTrigger, { trigger: "longPress", ...triggerProps, children }),
|
|
43
|
-
/* @__PURE__ */ jsx(PopoverContent, { children: typeof content === "string" || typeof content === "number" ? /* @__PURE__ */ jsx(PopoverDescription, { children: content }) : content })
|
|
45
|
+
/* @__PURE__ */ jsx(PopoverContent, { shadow: "sm", style: styles.content, children: typeof content === "string" || typeof content === "number" ? /* @__PURE__ */ jsx(PopoverDescription, { style: styles.description, children: content }) : content })
|
|
44
46
|
]
|
|
45
47
|
}
|
|
46
48
|
);
|
|
47
49
|
});
|
|
50
|
+
function themedStyles(theme) {
|
|
51
|
+
const tokens = theme.components.popover.tooltip;
|
|
52
|
+
return StyleSheet.create({
|
|
53
|
+
content: {
|
|
54
|
+
width: "auto",
|
|
55
|
+
backgroundColor: tokens.backgroundColor,
|
|
56
|
+
borderColor: tokens.backgroundColor,
|
|
57
|
+
borderWidth: 0,
|
|
58
|
+
borderRadius: tokens.borderRadius,
|
|
59
|
+
paddingHorizontal: tokens.paddingHorizontal,
|
|
60
|
+
paddingVertical: tokens.paddingVertical
|
|
61
|
+
},
|
|
62
|
+
description: {
|
|
63
|
+
color: tokens.color
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
48
67
|
export {
|
|
49
68
|
Tooltip
|
|
50
69
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport {\n useControllableState,\n useEventCallback,\n useTimer,\n} from \"@impulse-ui-native/core\";\n\nimport type { TooltipProps } from \"../types\";\nimport { TooltipDuration } from \"../constants/popover.constants\";\nimport { PopoverContent } from \"./popover-content\";\nimport { PopoverDescription } from \"./popover-description\";\nimport { PopoverRoot } from \"./popover-root\";\nimport { PopoverTrigger } from \"./popover-trigger\";\n\nexport const Tooltip = memo(function Tooltip({\n children,\n content,\n triggerProps,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled,\n placement = \"top\",\n duration = TooltipDuration,\n ...props\n}: TooltipProps) {\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const dismiss = useEventCallback(() => setOpen(false));\n\n useTimer({ enabled: open && !disabled, duration, callback: dismiss });\n\n return (\n <PopoverRoot\n {...props}\n open={open}\n onOpenChange={setOpen}\n disabled={disabled}\n placement={placement}\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport type { AppTheme } from \"@impulse-ui-native/theme\";\nimport {\n useControllableState,\n useEventCallback,\n useTimer,\n} from \"@impulse-ui-native/core\";\nimport { useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport type { TooltipProps } from \"../types\";\nimport { TooltipDuration } from \"../constants/popover.constants\";\nimport { PopoverContent } from \"./popover-content\";\nimport { PopoverDescription } from \"./popover-description\";\nimport { PopoverRoot } from \"./popover-root\";\nimport { PopoverTrigger } from \"./popover-trigger\";\n\nexport const Tooltip = memo(function Tooltip({\n children,\n content,\n triggerProps,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled,\n placement = \"top\",\n duration = TooltipDuration,\n ...props\n}: TooltipProps) {\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const styles = useThemedStyles(themedStyles);\n\n const dismiss = useEventCallback(() => setOpen(false));\n\n useTimer({ enabled: open && !disabled, duration, callback: dismiss });\n\n return (\n <PopoverRoot\n {...props}\n open={open}\n onOpenChange={setOpen}\n disabled={disabled}\n placement={placement}\n >\n <PopoverTrigger trigger=\"longPress\" {...triggerProps}>\n {children}\n </PopoverTrigger>\n <PopoverContent shadow=\"sm\" style={styles.content}>\n {typeof content === \"string\" || typeof content === \"number\" ? (\n <PopoverDescription style={styles.description}>\n {content}\n </PopoverDescription>\n ) : (\n content\n )}\n </PopoverContent>\n </PopoverRoot>\n );\n});\n\nfunction themedStyles(theme: AppTheme) {\n const tokens = theme.components.popover.tooltip;\n\n return StyleSheet.create({\n content: {\n width: \"auto\",\n backgroundColor: tokens.backgroundColor,\n borderColor: tokens.backgroundColor,\n borderWidth: 0,\n borderRadius: tokens.borderRadius,\n paddingHorizontal: tokens.paddingHorizontal,\n paddingVertical: tokens.paddingVertical,\n },\n description: {\n color: tokens.color,\n },\n });\n}\n"],"mappings":"AA2CI,SAOE,KAPF;AA3CJ,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAG3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB;AAGhC,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAExB,MAAM,UAAU,KAAK,SAASA,SAAQ;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,GAAG;AACL,GAAiB;AACf,QAAM,CAAC,MAAM,OAAO,IAAI,qBAAqB;AAAA,IAC3C,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,SAAS,gBAAgB,YAAY;AAE3C,QAAM,UAAU,iBAAiB,MAAM,QAAQ,KAAK,CAAC;AAErD,WAAS,EAAE,SAAS,QAAQ,CAAC,UAAU,UAAU,UAAU,QAAQ,CAAC;AAEpE,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MAEA;AAAA,4BAAC,kBAAe,SAAQ,aAAa,GAAG,cACrC,UACH;AAAA,QACA,oBAAC,kBAAe,QAAO,MAAK,OAAO,OAAO,SACvC,iBAAO,YAAY,YAAY,OAAO,YAAY,WACjD,oBAAC,sBAAmB,OAAO,OAAO,aAC/B,mBACH,IAEA,SAEJ;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,SAAS,aAAa,OAAiB;AACrC,QAAM,SAAS,MAAM,WAAW,QAAQ;AAExC,SAAO,WAAW,OAAO;AAAA,IACvB,SAAS;AAAA,MACP,OAAO;AAAA,MACP,iBAAiB,OAAO;AAAA,MACxB,aAAa,OAAO;AAAA,MACpB,aAAa;AAAA,MACb,cAAc,OAAO;AAAA,MACrB,mBAAmB,OAAO;AAAA,MAC1B,iBAAiB,OAAO;AAAA,IAC1B;AAAA,IACA,aAAa;AAAA,MACX,OAAO,OAAO;AAAA,IAChB;AAAA,EACF,CAAC;AACH;","names":["Tooltip"]}
|
|
@@ -5,7 +5,7 @@ import { getPopoverPosition } from "../utils/popover-position.utils";
|
|
|
5
5
|
import { usePopoverContext } from "./use-popover-context.hook";
|
|
6
6
|
import { usePopoverPosition } from "./use-popover-position.hook";
|
|
7
7
|
function usePopoverSurface(onLayout) {
|
|
8
|
-
const {
|
|
8
|
+
const { placement, setOpen } = usePopoverContext();
|
|
9
9
|
const [size, setSize] = useState({ width: 0, height: 0 });
|
|
10
10
|
const hostRef = useRef(null);
|
|
11
11
|
const tokens = useComponentsTokens().popover;
|
|
@@ -22,8 +22,8 @@ function usePopoverSurface(onLayout) {
|
|
|
22
22
|
);
|
|
23
23
|
const ready = visible && size.width > 0 && size.height > 0;
|
|
24
24
|
const styleProps = useMemo(
|
|
25
|
-
() => ({
|
|
26
|
-
[
|
|
25
|
+
() => ({ bounds, host: measurement?.host, position, ready }),
|
|
26
|
+
[bounds, measurement?.host, position, ready]
|
|
27
27
|
);
|
|
28
28
|
const close = useEventCallback(() => setOpen(false));
|
|
29
29
|
const handleLayout = useEventCallback((event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-popover-surface.hook.ts"],"sourcesContent":["import type { LayoutChangeEvent, View } from \"react-native\";\nimport { useMemo, useRef, useState } from \"react\";\n\nimport { useBackHandler, useEventCallback } from \"@impulse-ui-native/core\";\nimport { useComponentsTokens } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverContentProps } from \"../types\";\nimport type { PopoverSurfaceStyleProps } from \"../types/popover.types\";\nimport { getPopoverPosition } from \"../utils/popover-position.utils\";\nimport { usePopoverContext } from \"./use-popover-context.hook\";\nimport { usePopoverPosition } from \"./use-popover-position.hook\";\n\nexport function usePopoverSurface(onLayout: PopoverContentProps[\"onLayout\"]) {\n const {
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-popover-surface.hook.ts"],"sourcesContent":["import type { LayoutChangeEvent, View } from \"react-native\";\nimport { useMemo, useRef, useState } from \"react\";\n\nimport { useBackHandler, useEventCallback } from \"@impulse-ui-native/core\";\nimport { useComponentsTokens } from \"@impulse-ui-native/theme\";\n\nimport type { PopoverContentProps } from \"../types\";\nimport type { PopoverSurfaceStyleProps } from \"../types/popover.types\";\nimport { getPopoverPosition } from \"../utils/popover-position.utils\";\nimport { usePopoverContext } from \"./use-popover-context.hook\";\nimport { usePopoverPosition } from \"./use-popover-position.hook\";\n\nexport function usePopoverSurface(onLayout: PopoverContentProps[\"onLayout\"]) {\n const { placement, setOpen } = usePopoverContext();\n\n const [size, setSize] = useState({ width: 0, height: 0 });\n const hostRef = useRef<View>(null);\n\n const tokens = useComponentsTokens().popover;\n const { measurement, bounds, visible } = usePopoverPosition(hostRef);\n\n const position = useMemo(\n () =>\n measurement\n ? getPopoverPosition({\n anchor: measurement.anchor,\n bounds,\n ...size,\n placement,\n gap: tokens.gap,\n })\n : null,\n [measurement, bounds, size, placement, tokens.gap],\n );\n\n const ready = visible && size.width > 0 && size.height > 0;\n const styleProps = useMemo<PopoverSurfaceStyleProps>(\n () => ({ bounds, host: measurement?.host, position, ready }),\n [bounds, measurement?.host, position, ready],\n );\n\n const close = useEventCallback(() => setOpen(false));\n\n const handleLayout = useEventCallback((event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n\n setSize((previous) =>\n previous.width === width && previous.height === height\n ? previous\n : { width, height },\n );\n\n onLayout?.(event);\n });\n\n useBackHandler(() => {\n close();\n\n return true;\n });\n\n return { hostRef, styleProps, close, handleLayout };\n}\n"],"mappings":"AACA,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,SAAS,gBAAgB,wBAAwB;AACjD,SAAS,2BAA2B;AAIpC,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAAS,0BAA0B;AAE5B,SAAS,kBAAkB,UAA2C;AAC3E,QAAM,EAAE,WAAW,QAAQ,IAAI,kBAAkB;AAEjD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;AACxD,QAAM,UAAU,OAAa,IAAI;AAEjC,QAAM,SAAS,oBAAoB,EAAE;AACrC,QAAM,EAAE,aAAa,QAAQ,QAAQ,IAAI,mBAAmB,OAAO;AAEnE,QAAM,WAAW;AAAA,IACf,MACE,cACI,mBAAmB;AAAA,MACjB,QAAQ,YAAY;AAAA,MACpB;AAAA,MACA,GAAG;AAAA,MACH;AAAA,MACA,KAAK,OAAO;AAAA,IACd,CAAC,IACD;AAAA,IACN,CAAC,aAAa,QAAQ,MAAM,WAAW,OAAO,GAAG;AAAA,EACnD;AAEA,QAAM,QAAQ,WAAW,KAAK,QAAQ,KAAK,KAAK,SAAS;AACzD,QAAM,aAAa;AAAA,IACjB,OAAO,EAAE,QAAQ,MAAM,aAAa,MAAM,UAAU,MAAM;AAAA,IAC1D,CAAC,QAAQ,aAAa,MAAM,UAAU,KAAK;AAAA,EAC7C;AAEA,QAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK,CAAC;AAEnD,QAAM,eAAe,iBAAiB,CAAC,UAA6B;AAClE,UAAM,EAAE,OAAO,OAAO,IAAI,MAAM,YAAY;AAE5C;AAAA,MAAQ,CAAC,aACP,SAAS,UAAU,SAAS,SAAS,WAAW,SAC5C,WACA,EAAE,OAAO,OAAO;AAAA,IACtB;AAEA,eAAW,KAAK;AAAA,EAClB,CAAC;AAED,iBAAe,MAAM;AACnB,UAAM;AAEN,WAAO;AAAA,EACT,CAAC;AAED,SAAO,EAAE,SAAS,YAAY,OAAO,aAAa;AACpD;","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Popover } from './components/index.mjs';
|
|
2
|
-
export { PopoverCloseProps, PopoverContentProps, PopoverDescriptionProps, PopoverPlacement, PopoverProps, PopoverRootProps,
|
|
2
|
+
export { PopoverCloseProps, PopoverContentProps, PopoverDescriptionProps, PopoverFooterProps, PopoverHeaderProps, PopoverPlacement, PopoverProps, PopoverRootProps, PopoverTitleProps, PopoverTriggerProps, TooltipProps } from './types/popover.types.mjs';
|
|
3
3
|
export { Tooltip } from './components/tooltip.mjs';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'react';
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PopoverCloseProps, PopoverContentProps, PopoverDescriptionProps, PopoverPlacement, PopoverProps, PopoverRootProps,
|
|
1
|
+
export { PopoverCloseProps, PopoverContentProps, PopoverDescriptionProps, PopoverFooterProps, PopoverHeaderProps, PopoverPlacement, PopoverProps, PopoverRootProps, PopoverTitleProps, PopoverTriggerProps, TooltipProps } from './popover.types.mjs';
|
|
2
2
|
import 'react';
|
|
3
3
|
import 'react-native';
|
|
4
4
|
import '@impulse-ui-native/primitives';
|
|
@@ -3,29 +3,33 @@ import { View } from 'react-native';
|
|
|
3
3
|
import { PressableCoreProps, ViewProps, TextProps } from '@impulse-ui-native/primitives';
|
|
4
4
|
|
|
5
5
|
type PopoverPlacement = "top" | "bottom" | "left" | "right";
|
|
6
|
-
type PopoverSurface = "elevated" | "inverse";
|
|
7
6
|
interface PopoverRootProps extends PropsWithChildren {
|
|
8
7
|
open?: boolean;
|
|
9
8
|
defaultOpen?: boolean;
|
|
10
9
|
onOpenChange?: (open: boolean) => void;
|
|
11
10
|
disabled?: boolean;
|
|
12
11
|
placement?: PopoverPlacement;
|
|
13
|
-
surface?: PopoverSurface;
|
|
14
12
|
portalName?: string;
|
|
15
13
|
}
|
|
16
14
|
interface PopoverTriggerProps extends Omit<PressableCoreProps, "children">, PropsWithChildren {
|
|
17
15
|
trigger?: "press" | "longPress";
|
|
18
16
|
}
|
|
19
17
|
type PopoverContentProps = ViewProps;
|
|
18
|
+
type PopoverHeaderProps = ViewProps;
|
|
19
|
+
type PopoverFooterProps = ViewProps;
|
|
20
20
|
type PopoverTitleProps = TextProps;
|
|
21
21
|
type PopoverDescriptionProps = TextProps;
|
|
22
22
|
type PopoverCloseProps = Omit<PressableCoreProps, "children"> & PropsWithChildren;
|
|
23
23
|
interface PopoverProps extends PopoverRootProps {
|
|
24
|
+
title?: ReactNode;
|
|
25
|
+
header?: ReactNode;
|
|
26
|
+
footer?: ReactNode;
|
|
27
|
+
hideClose?: boolean;
|
|
24
28
|
trigger: ReactNode;
|
|
25
29
|
triggerProps?: PopoverTriggerProps;
|
|
26
30
|
contentProps?: PopoverContentProps;
|
|
27
31
|
}
|
|
28
|
-
interface TooltipProps extends
|
|
32
|
+
interface TooltipProps extends PopoverRootProps {
|
|
29
33
|
content: ReactNode;
|
|
30
34
|
triggerProps?: PopoverTriggerProps;
|
|
31
35
|
/** Milliseconds before dismissal. Zero keeps the hint open. */
|
|
@@ -37,7 +41,6 @@ interface PopoverContextValue {
|
|
|
37
41
|
setOpen: (open: boolean) => void;
|
|
38
42
|
anchorRef: RefObject<View | null>;
|
|
39
43
|
placement: PopoverPlacement;
|
|
40
|
-
surface: PopoverSurface;
|
|
41
44
|
portalName?: string;
|
|
42
45
|
}
|
|
43
46
|
interface PopoverRect {
|
|
@@ -60,11 +63,10 @@ interface PopoverPositionOptions {
|
|
|
60
63
|
gap: number;
|
|
61
64
|
}
|
|
62
65
|
interface PopoverSurfaceStyleProps {
|
|
63
|
-
surface: PopoverSurface;
|
|
64
66
|
bounds: PopoverRect;
|
|
65
67
|
host?: PopoverRect;
|
|
66
68
|
position: PopoverPosition | null;
|
|
67
69
|
ready: boolean;
|
|
68
70
|
}
|
|
69
71
|
|
|
70
|
-
export type { PopoverCloseProps, PopoverContentProps, PopoverContextValue, PopoverDescriptionProps, PopoverPlacement, PopoverPosition, PopoverPositionOptions, PopoverProps, PopoverRect, PopoverRootProps,
|
|
72
|
+
export type { PopoverCloseProps, PopoverContentProps, PopoverContextValue, PopoverDescriptionProps, PopoverFooterProps, PopoverHeaderProps, PopoverPlacement, PopoverPosition, PopoverPositionOptions, PopoverProps, PopoverRect, PopoverRootProps, PopoverSurfaceStyleProps, PopoverTitleProps, PopoverTriggerProps, TooltipProps };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@impulse-ui-native/popover",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Portal-rendered tooltips and compound anchored popovers for ImpulseUI Native.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -27,10 +27,11 @@
|
|
|
27
27
|
],
|
|
28
28
|
"sideEffects": false,
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@impulse-ui-native/
|
|
31
|
-
"@impulse-ui-native/
|
|
32
|
-
"@impulse-ui-native/
|
|
33
|
-
"@impulse-ui-native/
|
|
30
|
+
"@impulse-ui-native/icon": "7.0.0",
|
|
31
|
+
"@impulse-ui-native/primitives": "7.0.0",
|
|
32
|
+
"@impulse-ui-native/theme": "7.0.0",
|
|
33
|
+
"@impulse-ui-native/core": "7.0.0",
|
|
34
|
+
"@impulse-ui-native/portal": "7.0.0"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/react": "~19.2.14",
|
|
@@ -41,8 +42,8 @@
|
|
|
41
42
|
"react-native-safe-area-context": "~5.7.0",
|
|
42
43
|
"typescript": "~6.0.3",
|
|
43
44
|
"@impulse-ui-native/eslint-config": "1.0.0",
|
|
44
|
-
"@impulse-ui-native/
|
|
45
|
-
"@impulse-ui-native/
|
|
45
|
+
"@impulse-ui-native/tsconfig": "1.0.0",
|
|
46
|
+
"@impulse-ui-native/prettier-config": "1.0.0"
|
|
46
47
|
},
|
|
47
48
|
"peerDependencies": {
|
|
48
49
|
"react": ">=18",
|