@salt-ds/core 1.1.0 → 1.2.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/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
- package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-cjs/packages/core/src/border-item/BorderItem.js +1 -0
- package/dist-cjs/packages/core/src/border-item/BorderItem.js.map +1 -1
- package/dist-cjs/packages/core/src/border-layout/BorderLayout.js +1 -0
- package/dist-cjs/packages/core/src/border-layout/BorderLayout.js.map +1 -1
- package/dist-cjs/packages/core/src/button/Button.js +1 -0
- package/dist-cjs/packages/core/src/button/Button.js.map +1 -1
- package/dist-cjs/packages/core/src/card/Card.css.js +1 -1
- package/dist-cjs/packages/core/src/card/Card.js +1 -0
- package/dist-cjs/packages/core/src/card/Card.js.map +1 -1
- package/dist-cjs/packages/core/src/flex-item/FlexItem.js +1 -0
- package/dist-cjs/packages/core/src/flex-item/FlexItem.js.map +1 -1
- package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js +1 -0
- package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js.map +1 -1
- package/dist-cjs/packages/core/src/grid-item/GridItem.js +1 -0
- package/dist-cjs/packages/core/src/grid-item/GridItem.js.map +1 -1
- package/dist-cjs/packages/core/src/grid-layout/GridLayout.js +1 -0
- package/dist-cjs/packages/core/src/grid-layout/GridLayout.js.map +1 -1
- package/dist-cjs/packages/core/src/index.js +12 -0
- package/dist-cjs/packages/core/src/index.js.map +1 -1
- package/dist-cjs/packages/core/src/link/Link.js +1 -0
- package/dist-cjs/packages/core/src/link/Link.js.map +1 -1
- package/dist-cjs/packages/core/src/panel/Panel.js +1 -0
- package/dist-cjs/packages/core/src/panel/Panel.js.map +1 -1
- package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js +1 -0
- package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js.map +1 -1
- package/dist-cjs/packages/core/src/spinner/Spinner.css.js +9 -0
- package/dist-cjs/packages/core/src/spinner/Spinner.css.js.map +1 -0
- package/dist-cjs/packages/core/src/spinner/Spinner.js +81 -0
- package/dist-cjs/packages/core/src/spinner/Spinner.js.map +1 -0
- package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +80 -0
- package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -0
- package/dist-cjs/packages/core/src/split-layout/SplitLayout.js +25 -0
- package/dist-cjs/packages/core/src/split-layout/SplitLayout.js.map +1 -0
- package/dist-cjs/packages/core/src/stack-layout/StackLayout.js +1 -0
- package/dist-cjs/packages/core/src/stack-layout/StackLayout.js.map +1 -1
- package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js +1 -0
- package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js.map +1 -1
- package/dist-cjs/packages/core/src/text/Display.js +1 -0
- package/dist-cjs/packages/core/src/text/Display.js.map +1 -1
- package/dist-cjs/packages/core/src/text/Text.css.js +1 -1
- package/dist-cjs/packages/core/src/text/Text.js +5 -2
- package/dist-cjs/packages/core/src/text/Text.js.map +1 -1
- package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js +9 -0
- package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js.map +1 -0
- package/dist-cjs/packages/core/src/tooltip/Tooltip.js +91 -0
- package/dist-cjs/packages/core/src/tooltip/Tooltip.js.map +1 -0
- package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js +94 -0
- package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -0
- package/dist-cjs/packages/core/src/tooltip/useTooltip.js +106 -0
- package/dist-cjs/packages/core/src/tooltip/useTooltip.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/marginMiddleware.js.map +1 -1
- package/dist-cjs/packages/core/src/utils/useFloatingUI.js +38 -0
- package/dist-cjs/packages/core/src/utils/useFloatingUI.js.map +1 -0
- package/dist-cjs/packages/core/src/viewport/ViewportProvider.js +1 -0
- package/dist-cjs/packages/core/src/viewport/ViewportProvider.js.map +1 -1
- package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
- package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-es/packages/core/src/border-item/BorderItem.js +1 -0
- package/dist-es/packages/core/src/border-item/BorderItem.js.map +1 -1
- package/dist-es/packages/core/src/border-layout/BorderLayout.js +1 -0
- package/dist-es/packages/core/src/border-layout/BorderLayout.js.map +1 -1
- package/dist-es/packages/core/src/button/Button.js +1 -0
- package/dist-es/packages/core/src/button/Button.js.map +1 -1
- package/dist-es/packages/core/src/card/Card.css.js +1 -1
- package/dist-es/packages/core/src/card/Card.js +1 -0
- package/dist-es/packages/core/src/card/Card.js.map +1 -1
- package/dist-es/packages/core/src/flex-item/FlexItem.js +1 -0
- package/dist-es/packages/core/src/flex-item/FlexItem.js.map +1 -1
- package/dist-es/packages/core/src/flex-layout/FlexLayout.js +1 -0
- package/dist-es/packages/core/src/flex-layout/FlexLayout.js.map +1 -1
- package/dist-es/packages/core/src/grid-item/GridItem.js +1 -0
- package/dist-es/packages/core/src/grid-item/GridItem.js.map +1 -1
- package/dist-es/packages/core/src/grid-layout/GridLayout.js +1 -0
- package/dist-es/packages/core/src/grid-layout/GridLayout.js.map +1 -1
- package/dist-es/packages/core/src/index.js +5 -0
- package/dist-es/packages/core/src/index.js.map +1 -1
- package/dist-es/packages/core/src/link/Link.js +1 -0
- package/dist-es/packages/core/src/link/Link.js.map +1 -1
- package/dist-es/packages/core/src/panel/Panel.js +1 -0
- package/dist-es/packages/core/src/panel/Panel.js.map +1 -1
- package/dist-es/packages/core/src/salt-provider/SaltProvider.js +1 -0
- package/dist-es/packages/core/src/salt-provider/SaltProvider.js.map +1 -1
- package/dist-es/packages/core/src/spinner/Spinner.css.js +7 -0
- package/dist-es/packages/core/src/spinner/Spinner.css.js.map +1 -0
- package/dist-es/packages/core/src/spinner/Spinner.js +76 -0
- package/dist-es/packages/core/src/spinner/Spinner.js.map +1 -0
- package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +76 -0
- package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -0
- package/dist-es/packages/core/src/split-layout/SplitLayout.js +21 -0
- package/dist-es/packages/core/src/split-layout/SplitLayout.js.map +1 -0
- package/dist-es/packages/core/src/stack-layout/StackLayout.js +1 -0
- package/dist-es/packages/core/src/stack-layout/StackLayout.js.map +1 -1
- package/dist-es/packages/core/src/status-indicator/StatusIndicator.js +1 -0
- package/dist-es/packages/core/src/status-indicator/StatusIndicator.js.map +1 -1
- package/dist-es/packages/core/src/text/Display.js +1 -0
- package/dist-es/packages/core/src/text/Display.js.map +1 -1
- package/dist-es/packages/core/src/text/Text.css.js +1 -1
- package/dist-es/packages/core/src/text/Text.js +5 -2
- package/dist-es/packages/core/src/text/Text.js.map +1 -1
- package/dist-es/packages/core/src/tooltip/Tooltip.css.js +7 -0
- package/dist-es/packages/core/src/tooltip/Tooltip.css.js.map +1 -0
- package/dist-es/packages/core/src/tooltip/Tooltip.js +87 -0
- package/dist-es/packages/core/src/tooltip/Tooltip.js.map +1 -0
- package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js +90 -0
- package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -0
- package/dist-es/packages/core/src/tooltip/useTooltip.js +102 -0
- package/dist-es/packages/core/src/tooltip/useTooltip.js.map +1 -0
- package/dist-es/packages/core/src/utils/marginMiddleware.js.map +1 -1
- package/dist-es/packages/core/src/utils/useFloatingUI.js +33 -0
- package/dist-es/packages/core/src/utils/useFloatingUI.js.map +1 -0
- package/dist-es/packages/core/src/viewport/ViewportProvider.js +1 -0
- package/dist-es/packages/core/src/viewport/ViewportProvider.js.map +1 -1
- package/dist-types/border-item/BorderItem.d.ts +1 -1
- package/dist-types/index.d.ts +3 -0
- package/dist-types/link/Link.d.ts +2 -2
- package/dist-types/spinner/Spinner.d.ts +45 -0
- package/dist-types/spinner/index.d.ts +1 -0
- package/dist-types/spinner/svgSpinners/SpinnerSVG.d.ts +5 -0
- package/dist-types/split-layout/SplitLayout.d.ts +28 -0
- package/dist-types/split-layout/index.d.ts +1 -0
- package/dist-types/text/Display.d.ts +3 -3
- package/dist-types/text/Headings.d.ts +4 -4
- package/dist-types/text/Label.d.ts +1 -1
- package/dist-types/text/Text.d.ts +4 -0
- package/dist-types/tooltip/Tooltip.d.ts +47 -0
- package/dist-types/tooltip/index.d.ts +2 -0
- package/dist-types/tooltip/useAriaAnnounce.d.ts +9 -0
- package/dist-types/tooltip/useTooltip.d.ts +36 -0
- package/dist-types/utils/index.d.ts +1 -0
- package/dist-types/utils/useFloatingUI.d.ts +34 -0
- package/package.json +2 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { offset, flip, shift, limitShift, arrow, useInteractions, useHover, safePolygon, useFocus, useRole, useDismiss } from '@floating-ui/react';
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { useControlled } from '../utils/useControlled.js';
|
|
4
|
+
import { useFloatingUI } from '../utils/useFloatingUI.js';
|
|
5
|
+
import '../utils/useId.js';
|
|
6
|
+
import '../salt-provider/SaltProvider.js';
|
|
7
|
+
import '../viewport/ViewportProvider.js';
|
|
8
|
+
import { useAriaAnnounce } from './useAriaAnnounce.js';
|
|
9
|
+
|
|
10
|
+
function useTooltip(props) {
|
|
11
|
+
const {
|
|
12
|
+
enterDelay,
|
|
13
|
+
leaveDelay,
|
|
14
|
+
open: openProp,
|
|
15
|
+
onOpenChange,
|
|
16
|
+
placement: placementProp,
|
|
17
|
+
disableHoverListener,
|
|
18
|
+
disableFocusListener
|
|
19
|
+
} = props || {};
|
|
20
|
+
const arrowRef = useRef(null);
|
|
21
|
+
const [open, setOpen] = useControlled({
|
|
22
|
+
controlled: openProp,
|
|
23
|
+
default: false,
|
|
24
|
+
name: "Tooltip",
|
|
25
|
+
state: "open"
|
|
26
|
+
});
|
|
27
|
+
const handleOpenChange = (open2) => {
|
|
28
|
+
setOpen(open2);
|
|
29
|
+
onOpenChange == null ? void 0 : onOpenChange(open2);
|
|
30
|
+
};
|
|
31
|
+
const {
|
|
32
|
+
floating,
|
|
33
|
+
reference,
|
|
34
|
+
x,
|
|
35
|
+
y,
|
|
36
|
+
strategy,
|
|
37
|
+
middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },
|
|
38
|
+
placement,
|
|
39
|
+
context
|
|
40
|
+
} = useFloatingUI({
|
|
41
|
+
open,
|
|
42
|
+
onOpenChange: handleOpenChange,
|
|
43
|
+
placement: placementProp,
|
|
44
|
+
middleware: [
|
|
45
|
+
offset(8),
|
|
46
|
+
flip(),
|
|
47
|
+
shift({ limiter: limitShift() }),
|
|
48
|
+
arrow({ element: arrowRef })
|
|
49
|
+
]
|
|
50
|
+
});
|
|
51
|
+
const { getReferenceProps, getFloatingProps } = useInteractions([
|
|
52
|
+
useHover(context, {
|
|
53
|
+
delay: {
|
|
54
|
+
open: enterDelay,
|
|
55
|
+
close: leaveDelay
|
|
56
|
+
},
|
|
57
|
+
enabled: !disableHoverListener,
|
|
58
|
+
handleClose: safePolygon()
|
|
59
|
+
}),
|
|
60
|
+
useFocus(context, { enabled: !disableFocusListener }),
|
|
61
|
+
useRole(context, { role: "tooltip" }),
|
|
62
|
+
useDismiss(context),
|
|
63
|
+
useAriaAnnounce(context, {
|
|
64
|
+
delay: {
|
|
65
|
+
open: enterDelay,
|
|
66
|
+
close: leaveDelay
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
]);
|
|
70
|
+
const arrowProps = {
|
|
71
|
+
ref: arrowRef,
|
|
72
|
+
style: {
|
|
73
|
+
left: arrowX ? `${arrowX}px` : "",
|
|
74
|
+
top: arrowY ? `${arrowY}px` : ""
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const getTooltipProps = () => {
|
|
78
|
+
return getFloatingProps({
|
|
79
|
+
"data-placement": placement,
|
|
80
|
+
ref: floating,
|
|
81
|
+
style: {
|
|
82
|
+
top: y != null ? y : "",
|
|
83
|
+
left: x != null ? x : "",
|
|
84
|
+
position: strategy
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const getTriggerProps = () => getReferenceProps({
|
|
89
|
+
ref: reference
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
arrowProps,
|
|
93
|
+
open,
|
|
94
|
+
floating,
|
|
95
|
+
reference,
|
|
96
|
+
getTooltipProps,
|
|
97
|
+
getTriggerProps
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export { useTooltip };
|
|
102
|
+
//# sourceMappingURL=useTooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTooltip.js","sources":["../src/tooltip/useTooltip.ts"],"sourcesContent":["import {\n arrow,\n flip,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n limitShift,\n} from \"@floating-ui/react\";\nimport { HTMLProps, useRef } from \"react\";\nimport { useControlled, UseFloatingUIProps, useFloatingUI } from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\n /**\n * Do not respond to focus events.\n */\n disableFocusListener?: boolean;\n /**\n * Do not respond to hover events.\n */\n disableHoverListener?: boolean;\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n */\n enterDelay?: number;\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n */\n leaveDelay?: number;\n}\n\nexport function useTooltip(props?: UseTooltipProps) {\n const {\n enterDelay,\n leaveDelay,\n open: openProp,\n onOpenChange,\n placement: placementProp,\n disableHoverListener,\n disableFocusListener,\n } = props || {};\n\n const arrowRef = useRef<HTMLDivElement | null>(null);\n\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: false,\n name: \"Tooltip\",\n state: \"open\",\n });\n const handleOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChange?.(open);\n };\n\n const {\n floating,\n reference,\n x,\n y,\n strategy,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n placement,\n context,\n } = useFloatingUI({\n open,\n onOpenChange: handleOpenChange,\n placement: placementProp,\n middleware: [\n offset(8),\n flip(),\n shift({ limiter: limitShift() }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n enabled: !disableHoverListener,\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !disableFocusListener }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context),\n useAriaAnnounce(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n }),\n ]);\n\n const arrowProps = {\n ref: arrowRef,\n style: {\n left: arrowX ? `${arrowX}px` : \"\",\n top: arrowY ? `${arrowY}px` : \"\",\n },\n };\n\n const getTooltipProps = (): HTMLProps<HTMLDivElement> => {\n return getFloatingProps({\n // @ts-ignore\n \"data-placement\": placement,\n ref: floating,\n style: {\n top: y ?? \"\",\n left: x ?? \"\",\n position: strategy,\n },\n });\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n });\n\n return {\n arrowProps,\n open,\n floating,\n reference,\n getTooltipProps,\n getTriggerProps,\n };\n}\n"],"names":["open"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginMiddleware.js","sources":["../src/utils/marginMiddleware.ts"],"sourcesContent":["import { Middleware } from \"@floating-ui/core\";\nimport { MiddlewareArguments } from \"@floating-ui/react
|
|
1
|
+
{"version":3,"file":"marginMiddleware.js","sources":["../src/utils/marginMiddleware.ts"],"sourcesContent":["import { Middleware } from \"@floating-ui/core\";\nimport { MiddlewareArguments } from \"@floating-ui/react\";\n\nexport const margin = (value = 0): Middleware => ({\n name: \"margin\",\n options: value,\n fn(middlewareArguments: MiddlewareArguments) {\n const { x, y, elements } = middlewareArguments;\n\n if (elements.floating.children.length > 0) {\n const rootChildElement = elements.floating.children[0] as HTMLElement;\n rootChildElement.style.setProperty(\"margin\", value.toString());\n }\n return {\n x: x,\n y: y,\n };\n },\n});\n"],"names":[],"mappings":"AAGa,MAAA,MAAA,GAAS,CAAC,KAAA,GAAQ,CAAmB,MAAA;AAAA,EAChD,IAAM,EAAA,QAAA;AAAA,EACN,OAAS,EAAA,KAAA;AAAA,EACT,GAAG,mBAA0C,EAAA;AAC3C,IAAA,MAAM,EAAE,CAAA,EAAG,CAAG,EAAA,QAAA,EAAa,GAAA,mBAAA,CAAA;AAE3B,IAAA,IAAI,QAAS,CAAA,QAAA,CAAS,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA;AACzC,MAAM,MAAA,gBAAA,GAAmB,QAAS,CAAA,QAAA,CAAS,QAAS,CAAA,CAAA,CAAA,CAAA;AACpD,MAAA,gBAAA,CAAiB,KAAM,CAAA,WAAA,CAAY,QAAU,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAAA,KAC/D;AACA,IAAO,OAAA;AAAA,MACL,CAAA;AAAA,MACA,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { flip, shift, limitShift, useFloating, autoUpdate } from '@floating-ui/react';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_FLOATING_UI_MIDDLEWARE = [
|
|
4
|
+
flip(),
|
|
5
|
+
shift({ limiter: limitShift() })
|
|
6
|
+
];
|
|
7
|
+
function useFloatingUI(props) {
|
|
8
|
+
const {
|
|
9
|
+
placement,
|
|
10
|
+
strategy,
|
|
11
|
+
middleware = DEFAULT_FLOATING_UI_MIDDLEWARE,
|
|
12
|
+
open = false,
|
|
13
|
+
onOpenChange
|
|
14
|
+
} = props;
|
|
15
|
+
const { reference, floating, refs, update, ...rest } = useFloating({
|
|
16
|
+
placement,
|
|
17
|
+
strategy,
|
|
18
|
+
middleware,
|
|
19
|
+
open,
|
|
20
|
+
onOpenChange,
|
|
21
|
+
whileElementsMounted: autoUpdate
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
reference,
|
|
25
|
+
floating,
|
|
26
|
+
refs,
|
|
27
|
+
update,
|
|
28
|
+
...rest
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { DEFAULT_FLOATING_UI_MIDDLEWARE, useFloatingUI };
|
|
33
|
+
//# sourceMappingURL=useFloatingUI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFloatingUI.js","sources":["../src/utils/useFloatingUI.tsx"],"sourcesContent":["import type { Middleware, Placement, Strategy } from \"@floating-ui/react\";\nimport {\n autoUpdate,\n flip,\n limitShift,\n shift,\n useFloating,\n} from \"@floating-ui/react\";\n\nexport type UseFloatingUIProps = {\n /**\n * Set position relative to trigger\n */\n placement?: Placement;\n strategy?: Strategy;\n middleware?: Middleware[];\n /**\n * Set visible state. Defaults to false\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes\n */\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const DEFAULT_FLOATING_UI_MIDDLEWARE = [\n flip(),\n shift({ limiter: limitShift() }),\n];\n\nexport function useFloatingUI(\n props: UseFloatingUIProps\n): ReturnType<typeof useFloating> {\n const {\n placement,\n strategy,\n middleware = DEFAULT_FLOATING_UI_MIDDLEWARE,\n open = false,\n onOpenChange,\n } = props;\n\n const { reference, floating, refs, update, ...rest } = useFloating({\n placement,\n strategy,\n middleware,\n open,\n onOpenChange,\n whileElementsMounted: autoUpdate,\n });\n\n return {\n reference,\n floating,\n refs,\n update,\n ...rest,\n };\n}\n"],"names":[],"mappings":";;AA0BO,MAAM,8BAAiC,GAAA;AAAA,EAC5C,IAAK,EAAA;AAAA,EACL,KAAM,CAAA,EAAE,OAAS,EAAA,UAAA,IAAc,CAAA;AACjC,EAAA;AAEO,SAAS,cACd,KACgC,EAAA;AAChC,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAa,GAAA,8BAAA;AAAA,IACb,IAAO,GAAA,KAAA;AAAA,IACP,YAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,MAAM,MAAW,EAAA,GAAA,IAAA,KAAS,WAAY,CAAA;AAAA,IACjE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAA;AAAA,IACA,oBAAsB,EAAA,UAAA;AAAA,GACvB,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAG,IAAA;AAAA,GACL,CAAA;AACF;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { createContext, useContext, useState } from 'react';
|
|
3
|
+
import '../utils/useFloatingUI.js';
|
|
3
4
|
import '../utils/useId.js';
|
|
4
5
|
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect.js';
|
|
5
6
|
import '../salt-provider/SaltProvider.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import { createContext, useState, useContext, ReactNode } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useIsomorphicLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import { createContext, useState, useContext, ReactNode } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useIsomorphicLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":[],"mappings":";;;;;;;AAGM,MAAA,eAAA,GAAkB,cAA6B,IAAI,EAAA;AAMzD,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AAEhE,EAAM,MAAA,gBAAA,GAAmB,WAAW,eAAe,CAAA,CAAA;AACnD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,gBAAgB,CAAA,CAAA;AAEzD,EAAA,MAAM,qBAAqB,gBAAqB,KAAA,IAAA,CAAA;AAChD,EAAM,MAAA,aAAA,GAAgB,oBAAoB,QAAY,IAAA,CAAA,CAAA;AAEtD,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,QAAkC,GAAA,IAAA,CAAA;AAEtC,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,QAAA,GAAW,IAAI,cAAA;AAAA,QACb,CAAC,eAA2C,KAAA;AAC1C,UAAY,WAAA,CAAA,eAAA,CAAgB,CAAG,CAAA,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAAA,SAClD;AAAA,OACF,CAAA;AAEA,MAAS,QAAA,CAAA,OAAA,CAAQ,SAAS,IAAI,CAAA,CAAA;AAAA,KAChC;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EACE,uBAAA,GAAA,CAAC,gBAAgB,QAAhB,EAAA;AAAA,IAAyB,KAAO,EAAA,aAAA;AAAA,IAC9B,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,cAAc,MAAc;AAChC,EAAM,MAAA,KAAA,GAAQ,WAAW,eAAe,CAAA,CAAA;AACxC,EAAO,OAAA,KAAA,KAAU,OAAO,CAAI,GAAA,KAAA,CAAA;AAC9B;;;;"}
|
|
@@ -14,7 +14,7 @@ export declare type BorderItemProps<T extends ElementType> = PolymorphicComponen
|
|
|
14
14
|
*/
|
|
15
15
|
verticalAlignment?: GridItemProps<T>["verticalAlignment"];
|
|
16
16
|
/**
|
|
17
|
-
* Position in the
|
|
17
|
+
* Position in the Border Layout
|
|
18
18
|
*/
|
|
19
19
|
position: BorderPosition;
|
|
20
20
|
/**
|
package/dist-types/index.d.ts
CHANGED
|
@@ -11,10 +11,13 @@ export * from "./grid-item";
|
|
|
11
11
|
export * from "./grid-layout";
|
|
12
12
|
export * from "./link";
|
|
13
13
|
export * from "./panel";
|
|
14
|
+
export * from "./spinner";
|
|
14
15
|
export * from "./stack-layout";
|
|
15
16
|
export * from "./status-indicator";
|
|
16
17
|
export * from "./text";
|
|
17
18
|
export * from "./theme";
|
|
18
19
|
export * from "./salt-provider";
|
|
20
|
+
export * from "./split-layout";
|
|
21
|
+
export * from "./tooltip";
|
|
19
22
|
export * from "./utils";
|
|
20
23
|
export * from "./viewport";
|
|
@@ -8,7 +8,7 @@ import "./Link.css";
|
|
|
8
8
|
* @example
|
|
9
9
|
* <LinkExample to="#link">Action</LinkExample>
|
|
10
10
|
*/
|
|
11
|
-
export interface LinkProps extends Omit<TextProps<"a">, "as"> {
|
|
11
|
+
export interface LinkProps extends Omit<TextProps<"a">, "as" | "disabled"> {
|
|
12
12
|
IconComponent?: ComponentType<IconProps>;
|
|
13
13
|
}
|
|
14
|
-
export declare const Link: import("react").ForwardRefExoticComponent<
|
|
14
|
+
export declare const Link: import("react").ForwardRefExoticComponent<Omit<LinkProps, "ref"> & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { HTMLAttributes } from "react";
|
|
2
|
+
import "./Spinner.css";
|
|
3
|
+
/**
|
|
4
|
+
* Spinner component, provides an indeterminate loading indicator
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <Spinner size="default | large" />
|
|
8
|
+
*/
|
|
9
|
+
export declare const SpinnerSizeValues: readonly ["default", "large"];
|
|
10
|
+
export declare type SpinnerSize = typeof SpinnerSizeValues[number];
|
|
11
|
+
export interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
/**
|
|
13
|
+
* Determines the interval on which the component will continue to announce the aria-label. Defaults to 5000ms (5s)
|
|
14
|
+
*/
|
|
15
|
+
announcerInterval?: number;
|
|
16
|
+
/**
|
|
17
|
+
* * Determines the interval after which the component will stop announcing the aria-label. Defaults to 20000ms (20s)
|
|
18
|
+
*/
|
|
19
|
+
announcerTimeout?: number;
|
|
20
|
+
/**
|
|
21
|
+
* The className(s) of the component
|
|
22
|
+
*/
|
|
23
|
+
className?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Determines the message to be announced by the component when it unmounts. Set to null if not needed.
|
|
26
|
+
*/
|
|
27
|
+
completionAnnouncement?: string | null;
|
|
28
|
+
/**
|
|
29
|
+
* If true, built in aria announcer will be inactive
|
|
30
|
+
*/
|
|
31
|
+
disableAnnouncer?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* The prop for the role attribute of the component
|
|
34
|
+
*/
|
|
35
|
+
role?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Determines the size of the spinner. Must be one of: 'default', 'large'.
|
|
38
|
+
*/
|
|
39
|
+
size?: SpinnerSize;
|
|
40
|
+
/**
|
|
41
|
+
* The ids of the SvgSpinner components
|
|
42
|
+
*/
|
|
43
|
+
id?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Spinner";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ElementType, ReactElement, ReactNode } from "react";
|
|
2
|
+
import { FlexLayoutProps } from "../flex-layout";
|
|
3
|
+
import { PolymorphicComponentPropWithRef } from "../utils";
|
|
4
|
+
export declare type SplitLayoutProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
|
|
5
|
+
/**
|
|
6
|
+
* Defines the default behavior for how flex items are laid out along the cross axis on the current line.
|
|
7
|
+
*/
|
|
8
|
+
align?: FlexLayoutProps<ElementType>["align"];
|
|
9
|
+
/**
|
|
10
|
+
* Establishes the main-axis, defining the direction children are placed. Default is "row".
|
|
11
|
+
*/
|
|
12
|
+
direction?: FlexLayoutProps<ElementType>["direction"];
|
|
13
|
+
/**
|
|
14
|
+
* End component to be rendered.
|
|
15
|
+
*/
|
|
16
|
+
endItem?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Controls the space between left and right items.
|
|
19
|
+
*/
|
|
20
|
+
gap?: FlexLayoutProps<ElementType>["gap"];
|
|
21
|
+
/**
|
|
22
|
+
* Start component to be rendered.
|
|
23
|
+
*/
|
|
24
|
+
startItem?: ReactNode;
|
|
25
|
+
}>;
|
|
26
|
+
declare type SplitLayoutComponent = <T extends ElementType = "div">(props: SplitLayoutProps<T>) => ReactElement | null;
|
|
27
|
+
export declare const SplitLayout: SplitLayoutComponent;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./SplitLayout";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TextProps } from "./Text";
|
|
3
|
-
export declare const Display1: import("react").ForwardRefExoticComponent<
|
|
4
|
-
export declare const Display2: import("react").ForwardRefExoticComponent<
|
|
5
|
-
export declare const Display3: import("react").ForwardRefExoticComponent<
|
|
3
|
+
export declare const Display1: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"span">, "as">, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
4
|
+
export declare const Display2: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"span">, "as">, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
5
|
+
export declare const Display3: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"span">, "as">, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TextProps } from "./Text";
|
|
3
|
-
export declare const H1: import("react").ForwardRefExoticComponent<
|
|
4
|
-
export declare const H2: import("react").ForwardRefExoticComponent<
|
|
5
|
-
export declare const H3: import("react").ForwardRefExoticComponent<
|
|
6
|
-
export declare const H4: import("react").ForwardRefExoticComponent<
|
|
3
|
+
export declare const H1: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"h1">, "as">, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
4
|
+
export declare const H2: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"h2">, "as">, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
5
|
+
export declare const H3: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"h3">, "as">, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
6
|
+
export declare const H4: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"h4">, "as">, "ref"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TextProps } from "./Text";
|
|
3
|
-
export declare const Label: import("react").ForwardRefExoticComponent<
|
|
3
|
+
export declare const Label: import("react").ForwardRefExoticComponent<Omit<Omit<TextProps<"label">, "as">, "ref"> & import("react").RefAttributes<HTMLLabelElement>>;
|
|
@@ -2,6 +2,10 @@ import { PolymorphicComponentPropWithRef } from "../utils";
|
|
|
2
2
|
import { ElementType, ReactElement } from "react";
|
|
3
3
|
import "./Text.css";
|
|
4
4
|
export declare type TextProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
|
|
5
|
+
/**
|
|
6
|
+
* Applies disabled styling when true
|
|
7
|
+
*/
|
|
8
|
+
disabled?: boolean;
|
|
5
9
|
/**
|
|
6
10
|
* Apply text truncation by mentioning number of rows to be displayed
|
|
7
11
|
*/
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import { ValidationStatus } from "../status-indicator";
|
|
3
|
+
import { UseFloatingUIProps } from "../utils";
|
|
4
|
+
import "./Tooltip.css";
|
|
5
|
+
export interface TooltipProps extends HTMLAttributes<HTMLDivElement>, Pick<UseFloatingUIProps, "open" | "onOpenChange" | "placement"> {
|
|
6
|
+
/**
|
|
7
|
+
* The children will be the tooltip's trigger.
|
|
8
|
+
*/
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Whether to hide the tooltip arrow. Defaults to `false`.
|
|
12
|
+
*/
|
|
13
|
+
hideArrow?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether to hide the state icon within the tooltip. Defaults to `false`.
|
|
16
|
+
*/
|
|
17
|
+
hideIcon?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Content displayed inside the tooltip. Can be a string or a React component.
|
|
20
|
+
*/
|
|
21
|
+
content: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* A string to determine the current status of the tooltip. Defaults to 'info'.
|
|
24
|
+
*/
|
|
25
|
+
status?: ValidationStatus;
|
|
26
|
+
/**
|
|
27
|
+
* Delay in milliseconds before the tooltip is shown
|
|
28
|
+
*/
|
|
29
|
+
enterDelay?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Delay in milliseconds before the tooltip is hidden
|
|
32
|
+
*/
|
|
33
|
+
leaveDelay?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Option to not display the tooltip. Can be used in conditional situations like text truncation.
|
|
36
|
+
*/
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Option to remove the hover listener
|
|
40
|
+
*/
|
|
41
|
+
disableHoverListener?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Option to remove the focus listener
|
|
44
|
+
*/
|
|
45
|
+
disableFocusListener?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ElementProps, FloatingContext } from "@floating-ui/react";
|
|
2
|
+
declare type Props = {
|
|
3
|
+
delay?: number | Partial<{
|
|
4
|
+
open: number;
|
|
5
|
+
close: number;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
export declare const useAriaAnnounce: (context: FloatingContext, { delay }: Props) => ElementProps;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { HTMLProps } from "react";
|
|
2
|
+
import { UseFloatingUIProps } from "../utils";
|
|
3
|
+
export interface UseTooltipProps extends Partial<Pick<UseFloatingUIProps, "onOpenChange" | "open" | "placement">> {
|
|
4
|
+
/**
|
|
5
|
+
* Do not respond to focus events.
|
|
6
|
+
*/
|
|
7
|
+
disableFocusListener?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Do not respond to hover events.
|
|
10
|
+
*/
|
|
11
|
+
disableHoverListener?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* The number of milliseconds to wait before showing the tooltip.
|
|
14
|
+
* This prop won't impact the enter touch delay (`enterTouchDelay`).
|
|
15
|
+
*/
|
|
16
|
+
enterDelay?: number;
|
|
17
|
+
/**
|
|
18
|
+
* The number of milliseconds to wait before hiding the tooltip.
|
|
19
|
+
* This prop won't impact the leave touch delay (`leaveTouchDelay`).
|
|
20
|
+
*/
|
|
21
|
+
leaveDelay?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function useTooltip(props?: UseTooltipProps): {
|
|
24
|
+
arrowProps: {
|
|
25
|
+
ref: import("react").MutableRefObject<HTMLDivElement | null>;
|
|
26
|
+
style: {
|
|
27
|
+
left: string;
|
|
28
|
+
top: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
open: boolean;
|
|
32
|
+
floating: (node: HTMLElement | null) => void;
|
|
33
|
+
reference: (node: import("@floating-ui/react").ReferenceType | null) => void;
|
|
34
|
+
getTooltipProps: () => HTMLProps<HTMLDivElement>;
|
|
35
|
+
getTriggerProps: () => Record<string, unknown>;
|
|
36
|
+
};
|
|
@@ -9,6 +9,7 @@ export * from "./ownerWindow";
|
|
|
9
9
|
export * from "./polymorphicTypes";
|
|
10
10
|
export * from "./setRef";
|
|
11
11
|
export * from "./useControlled";
|
|
12
|
+
export * from "./useFloatingUI";
|
|
12
13
|
export * from "./useForkRef";
|
|
13
14
|
export * from "./useId";
|
|
14
15
|
export * from "./useIsFocusVisible";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Middleware, Placement, Strategy } from "@floating-ui/react";
|
|
2
|
+
import { useFloating } from "@floating-ui/react";
|
|
3
|
+
export declare type UseFloatingUIProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Set position relative to trigger
|
|
6
|
+
*/
|
|
7
|
+
placement?: Placement;
|
|
8
|
+
strategy?: Strategy;
|
|
9
|
+
middleware?: Middleware[];
|
|
10
|
+
/**
|
|
11
|
+
* Set visible state. Defaults to false
|
|
12
|
+
*/
|
|
13
|
+
open?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Callback function triggered when open state changes
|
|
16
|
+
*/
|
|
17
|
+
onOpenChange?: (open: boolean) => void;
|
|
18
|
+
};
|
|
19
|
+
export declare const DEFAULT_FLOATING_UI_MIDDLEWARE: {
|
|
20
|
+
name: string;
|
|
21
|
+
options?: any;
|
|
22
|
+
fn: (state: {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
initialPlacement: Placement;
|
|
26
|
+
placement: Placement;
|
|
27
|
+
strategy: Strategy;
|
|
28
|
+
middlewareData: import("@floating-ui/react").MiddlewareData;
|
|
29
|
+
rects: import("@floating-ui/react").ElementRects;
|
|
30
|
+
platform: import("@floating-ui/core").Platform;
|
|
31
|
+
elements: import("@floating-ui/react").Elements;
|
|
32
|
+
}) => import("@floating-ui/react").MiddlewareReturn | Promise<import("@floating-ui/react").MiddlewareReturn>;
|
|
33
|
+
}[];
|
|
34
|
+
export declare function useFloatingUI(props: UseFloatingUIProps): ReturnType<typeof useFloating>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salt-ds/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist-cjs/packages/core/src/index.js",
|
|
6
6
|
"sideEffects": [
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"module": "dist-es/packages/core/src/index.js",
|
|
24
24
|
"typings": "dist-types/index.d.ts",
|
|
25
25
|
"dependencies": {
|
|
26
|
+
"@floating-ui/react": "^0.19.0",
|
|
26
27
|
"clsx": "^1.2.1",
|
|
27
28
|
"@salt-ds/icons": "1.1.0"
|
|
28
29
|
},
|