@stenajs-webui/tooltip 23.15.2 → 23.15.3

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/index.es.js CHANGED
@@ -1,11 +1,11 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._floating_1glwr_1{display:flex;flex-direction:row;align-items:center;background:#fff;color:#fff;border-radius:var(--swui-border-radius);padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2);box-shadow:var(--swui-shadow-popover)}._floating_1glwr_1._disablePadding_1glwr_11{padding:0}._iconWrapper_1glwr_16{--current-bg-color: transparent;--current-border-color: var(--lhds-color-ui-50);--current-icon-color: var(--lhds-color-ui-50);display:inline-flex;flex-direction:row;white-space:nowrap;background-color:var(--current-bg-color);border:1px solid var(--current-border-color);border-radius:var(--swui-border-radius);padding:calc(var(--swui-metrics-spacing) * .5);align-items:flex-start}._iconWrapper_1glwr_16 svg{color:var(--current-icon-color)}._iconWrapper_1glwr_16._info_1glwr_36{--current-border-color: var(--lhds-color-blue-300);--current-bg-color: var(--lhds-color-blue-100);--current-icon-color: var(--lhds-color-blue-700)}._iconWrapper_1glwr_16._warning_1glwr_42{--current-border-color: var(--lhds-color-orange-300);--current-bg-color: var(--lhds-color-orange-100);--current-icon-color: var(--lhds-color-orange-700)}._iconWrapper_1glwr_16._error_1glwr_48{--current-border-color: var(--lhds-color-red-300);--current-bg-color: var(--lhds-color-red-100);--current-icon-color: var(--lhds-color-red-700)}._floating_15fk9_1{display:flex;align-items:center;background:#333;color:#fff;border-radius:var(--swui-border-radius);padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2);width:-webkit-fit-content;width:fit-content}._floating_15fk9_1._withIcon_15fk9_10{padding:calc(var(--swui-metrics-spacing) * .5);padding-right:calc(var(--swui-metrics-indent) * 2)}._iconWrapper_15fk9_16{--current-bg-color: transparent;--current-border-color: var(--lhds-color-ui-50);--current-icon-color: var(--lhds-color-ui-50);display:inline-flex;flex-direction:row;white-space:nowrap;background-color:var(--current-bg-color);border:1px solid var(--current-border-color);border-radius:var(--swui-border-radius);padding:calc(var(--swui-metrics-spacing) * .5);align-items:flex-start}._iconWrapper_15fk9_16 svg{color:var(--current-icon-color)}._iconWrapper_15fk9_16._info_15fk9_36{--current-border-color: var(--lhds-color-blue-300);--current-bg-color: var(--lhds-color-blue-100);--current-icon-color: var(--lhds-color-blue-700)}._iconWrapper_15fk9_16._warning_15fk9_42{--current-border-color: var(--lhds-color-orange-300);--current-bg-color: var(--lhds-color-orange-100);--current-icon-color: var(--lhds-color-orange-700)}._iconWrapper_15fk9_16._error_15fk9_48{--current-border-color: var(--lhds-color-red-300);--current-bg-color: var(--lhds-color-red-100);--current-icon-color: var(--lhds-color-red-700)}")),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
2
  import { jsxs as r, jsx as e, Fragment as C } from "react/jsx-runtime";
3
- import { Column as _e, Text as Z, Space as O, Row as q } from "@stenajs-webui/core";
3
+ import { Column as _e, Text as Z, Space as N, Row as q } from "@stenajs-webui/core";
4
4
  import { FlatButton as we, PrimaryButton as ye, Spinner as Ie, Icon as Re, stenaExclamationTriangle as Pe, stenaExclamationCircle as ve, stenaInfoCircle as Fe } from "@stenajs-webui/elements";
5
- import { useRef as H, useCallback as k, useState as ee } from "react";
6
- import { useFloatingParentNodeId as ne, FloatingTree as te, useFloatingNodeId as oe, useFloating as S, autoUpdate as E, offset as M, flip as $, shift as G, arrow as j, useTransitionStyles as D, useDismiss as se, useRole as ie, useInteractions as z, FloatingNode as le, FloatingPortal as B, FloatingFocusManager as re, FloatingArrow as U, useFocus as Ce, useClick as be, useHover as ce, safePolygon as xe } from "@floating-ui/react";
5
+ import { useRef as S, useCallback as O, useState as ee } from "react";
6
+ import { useFloatingParentNodeId as ne, FloatingTree as te, useFloatingNodeId as oe, useFloating as H, autoUpdate as E, offset as M, flip as $, shift as G, arrow as D, useTransitionStyles as j, useDismiss as se, useRole as ie, useInteractions as z, FloatingNode as le, FloatingPortal as B, FloatingFocusManager as re, FloatingArrow as U, useFocus as Ce, useClick as be, useHover as ce, safePolygon as xe } from "@floating-ui/react";
7
7
  import b from "classnames";
8
- import { cssColor as Te } from "@stenajs-webui/theme";
8
+ import { cssColor as Ae } from "@stenajs-webui/theme";
9
9
  const Ve = ({
10
10
  text: n = "Are you sure?",
11
11
  yesLabel: t = "Yes",
@@ -16,10 +16,10 @@ const Ve = ({
16
16
  }) => /* @__PURE__ */ r(_e, { position: "relative", children: [
17
17
  /* @__PURE__ */ r("div", { style: { opacity: d ? 0 : 1 }, children: [
18
18
  /* @__PURE__ */ e(Z, { children: n }),
19
- /* @__PURE__ */ e(O, {}),
19
+ /* @__PURE__ */ e(N, {}),
20
20
  /* @__PURE__ */ r(q, { justifyContent: "flex-end", alignItems: "center", children: [
21
21
  /* @__PURE__ */ e(we, { label: o, onClick: a }),
22
- /* @__PURE__ */ e(O, {}),
22
+ /* @__PURE__ */ e(N, {}),
23
23
  /* @__PURE__ */ e(ye, { label: t, onClick: s })
24
24
  ] })
25
25
  ] }),
@@ -36,10 +36,10 @@ const Ve = ({
36
36
  children: /* @__PURE__ */ e(Ie, { size: "small" })
37
37
  }
38
38
  )
39
- ] }), We = "_floating_1glwr_1", Ae = "_disablePadding_1glwr_11", R = {
40
- floating: We,
41
- disablePadding: Ae
42
- }, Ne = 12, J = 8, Oe = 2, Xe = ({
39
+ ] }), Te = "_floating_1glwr_1", We = "_disablePadding_1glwr_11", R = {
40
+ floating: Te,
41
+ disablePadding: We
42
+ }, ke = 12, J = 8, Ne = 2, Xe = ({
43
43
  children: n,
44
44
  ...t
45
45
  }) => ne() == null ? /* @__PURE__ */ e(te, { children: /* @__PURE__ */ e(K, { ...t, children: n }) }) : /* @__PURE__ */ e(K, { ...t, children: n }), K = ({
@@ -56,30 +56,30 @@ const Ve = ({
56
56
  appendTo: p,
57
57
  zIndex: h
58
58
  }) => {
59
- const g = oe(), c = H(null), u = k(
60
- (A) => {
61
- A || f();
59
+ const g = oe(), c = S(null), u = O(
60
+ (W) => {
61
+ W || f();
62
62
  },
63
63
  [f]
64
- ), { refs: m, floatingStyles: _, context: i } = S({
64
+ ), { refs: m, floatingStyles: _, context: i } = H({
65
65
  nodeId: g,
66
66
  open: d,
67
67
  onOpenChange: u,
68
68
  placement: t,
69
69
  middleware: [
70
- M(J + Oe),
70
+ M(J + Ne),
71
71
  $({ padding: 5 }),
72
72
  G({ padding: 5 }),
73
- j({ element: c })
73
+ D({ element: c })
74
74
  ],
75
75
  whileElementsMounted: E
76
- }), { isMounted: P, styles: x } = D(i, {
76
+ }), { isMounted: P, styles: x } = j(i, {
77
77
  initial: {
78
78
  opacity: 0
79
79
  }
80
- }), v = se(i), T = ie(i), { getReferenceProps: l, getFloatingProps: W } = z([
80
+ }), v = se(i), A = ie(i), { getReferenceProps: l, getFloatingProps: T } = z([
81
81
  v,
82
- T
82
+ A
83
83
  ]);
84
84
  return /* @__PURE__ */ r(C, { children: [
85
85
  a({ ref: m.setReference, ...l() }),
@@ -96,7 +96,7 @@ const Ve = ({
96
96
  {
97
97
  ref: m.setFloating,
98
98
  style: { zIndex: h, ..._ },
99
- ...W(),
99
+ ...T(),
100
100
  children: /* @__PURE__ */ r(
101
101
  "div",
102
102
  {
@@ -112,7 +112,7 @@ const Ve = ({
112
112
  {
113
113
  ref: c,
114
114
  context: i,
115
- width: Ne,
115
+ width: ke,
116
116
  height: J,
117
117
  fill: "white"
118
118
  }
@@ -125,7 +125,7 @@ const Ve = ({
125
125
  }
126
126
  ) }) })
127
127
  ] });
128
- }, ke = 12, L = 8, He = 2, Ze = ({ children: n, ...t }) => ne() == null ? /* @__PURE__ */ e(te, { children: /* @__PURE__ */ e(Q, { ...t, children: n }) }) : /* @__PURE__ */ e(Q, { ...t, children: n }), Q = ({
128
+ }, Oe = 12, L = 8, Se = 2, Ze = ({ children: n, ...t }) => ne() == null ? /* @__PURE__ */ e(te, { children: /* @__PURE__ */ e(Q, { ...t, children: n }) }) : /* @__PURE__ */ e(Q, { ...t, children: n }), Q = ({
129
129
  children: n,
130
130
  variant: t,
131
131
  trigger: o = "hover",
@@ -142,12 +142,12 @@ const Ve = ({
142
142
  onOpened: c,
143
143
  onClosed: u
144
144
  }) => {
145
- const [m, _] = ee(!1), i = oe(), P = H(null), x = k(
145
+ const [m, _] = ee(!1), i = oe(), P = S(null), x = O(
146
146
  (Y) => {
147
147
  _(Y), Y ? c?.() : u?.();
148
148
  },
149
149
  [u, c]
150
- ), { refs: v, floatingStyles: T, context: l } = S({
150
+ ), { refs: v, floatingStyles: A, context: l } = H({
151
151
  nodeId: i,
152
152
  open: m,
153
153
  onOpenChange: x,
@@ -156,20 +156,20 @@ const Ve = ({
156
156
  reference: h
157
157
  },
158
158
  middleware: [
159
- M(L + He),
160
- $({ padding: 5 }),
159
+ M(L + Se),
160
+ $({ padding: 5, fallbackAxisSideDirection: "start" }),
161
161
  G({ padding: 5 }),
162
- j({ element: P })
162
+ D({ element: P })
163
163
  ],
164
164
  whileElementsMounted: E
165
- }), { isMounted: W, styles: A } = D(l, {
165
+ }), { isMounted: T, styles: W } = j(l, {
166
166
  initial: {
167
167
  opacity: 0
168
168
  }
169
- }), ae = k(() => {
169
+ }), ae = O(() => {
170
170
  _(!1);
171
- }, []), de = se(l), fe = ie(l), pe = Ce(l, { enabled: N(o, "focus") }), he = be(l, { enabled: N(o, "click") }), ge = ce(l, {
172
- enabled: N(o, "hover"),
171
+ }, []), de = se(l), fe = ie(l), pe = Ce(l, { enabled: k(o, "focus") }), he = be(l, { enabled: k(o, "click") }), ge = ce(l, {
172
+ enabled: k(o, "hover"),
173
173
  handleClose: xe(),
174
174
  restMs: 100
175
175
  }), { getReferenceProps: ue, getFloatingProps: me } = z([
@@ -181,7 +181,7 @@ const Ve = ({
181
181
  ]);
182
182
  return /* @__PURE__ */ r(C, { children: [
183
183
  d({ ref: v.setReference, ...ue() }),
184
- /* @__PURE__ */ e(le, { id: i, children: W && /* @__PURE__ */ e(B, { root: p, children: /* @__PURE__ */ e(
184
+ /* @__PURE__ */ e(le, { id: i, children: T && /* @__PURE__ */ e(B, { root: p, children: /* @__PURE__ */ e(
185
185
  re,
186
186
  {
187
187
  context: l,
@@ -193,12 +193,12 @@ const Ve = ({
193
193
  "div",
194
194
  {
195
195
  ref: v.setFloating,
196
- style: { zIndex: g, ...T },
196
+ style: { zIndex: g, ...A },
197
197
  ...me(),
198
198
  children: /* @__PURE__ */ r(
199
199
  "div",
200
200
  {
201
- style: A,
201
+ style: W,
202
202
  className: b(
203
203
  R.floating,
204
204
  f && R.disablePadding,
@@ -211,7 +211,7 @@ const Ve = ({
211
211
  {
212
212
  ref: P,
213
213
  context: l,
214
- width: ke,
214
+ width: Oe,
215
215
  height: L,
216
216
  fill: "white"
217
217
  }
@@ -224,14 +224,14 @@ const Ve = ({
224
224
  }
225
225
  ) }) })
226
226
  ] });
227
- }, N = (n, t) => typeof n == "string" ? n === t : n.includes(t), Se = "_floating_15fk9_1", Ee = "_withIcon_15fk9_10", Me = "_iconWrapper_15fk9_16", $e = "_info_15fk9_36", Ge = "_warning_15fk9_42", je = "_error_15fk9_48", F = {
228
- floating: Se,
227
+ }, k = (n, t) => typeof n == "string" ? n === t : n.includes(t), He = "_floating_15fk9_1", Ee = "_withIcon_15fk9_10", Me = "_iconWrapper_15fk9_16", $e = "_info_15fk9_36", Ge = "_warning_15fk9_42", De = "_error_15fk9_48", F = {
228
+ floating: He,
229
229
  withIcon: Ee,
230
230
  iconWrapper: Me,
231
231
  info: $e,
232
232
  warning: Ge,
233
- error: je
234
- }, De = {
233
+ error: De
234
+ }, je = {
235
235
  info: Fe,
236
236
  warning: ve,
237
237
  error: Pe
@@ -245,7 +245,7 @@ const Ve = ({
245
245
  appendTo: f,
246
246
  zIndex: w
247
247
  }) => {
248
- const [y, I] = ee(!1), p = H(null), { refs: h, floatingStyles: g, context: c } = S({
248
+ const [y, I] = ee(!1), p = S(null), { refs: h, floatingStyles: g, context: c } = H({
249
249
  placement: o,
250
250
  open: t ?? y,
251
251
  onOpenChange: I,
@@ -253,10 +253,10 @@ const Ve = ({
253
253
  M(V + Be),
254
254
  $({ padding: 5 }),
255
255
  G({ padding: 5 }),
256
- j({ element: p })
256
+ D({ element: p })
257
257
  ],
258
258
  whileElementsMounted: E
259
- }), { isMounted: u, styles: m } = D(c, {
259
+ }), { isMounted: u, styles: m } = j(c, {
260
260
  initial: {
261
261
  opacity: 0
262
262
  }
@@ -280,10 +280,10 @@ const Ve = ({
280
280
  F.iconWrapper,
281
281
  F[s]
282
282
  ),
283
- children: /* @__PURE__ */ e(Re, { icon: De[s], size: 16 })
283
+ children: /* @__PURE__ */ e(Re, { icon: je[s], size: 16 })
284
284
  }
285
285
  ),
286
- /* @__PURE__ */ e(O, {}),
286
+ /* @__PURE__ */ e(N, {}),
287
287
  /* @__PURE__ */ e(X, { label: a })
288
288
  ] }) : /* @__PURE__ */ e(X, { label: a }),
289
289
  /* @__PURE__ */ e(
@@ -300,7 +300,7 @@ const Ve = ({
300
300
  }
301
301
  ) }) })
302
302
  ] });
303
- }, X = ({ label: n }) => /* @__PURE__ */ e(Z, { color: Te("--lhds-color-ui-50"), size: "small", variant: "bold", children: n });
303
+ }, X = ({ label: n }) => /* @__PURE__ */ e(Z, { color: Ae("--lhds-color-ui-50"), size: "small", variant: "bold", children: n });
304
304
  export {
305
305
  Ve as ActionPrompt,
306
306
  Xe as ControlledPopover,
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/components/popover/ControlledPopover.tsx","../src/components/popover/Popover.tsx","../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode, useCallback, useRef } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"./Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface ControlledPopoverProps extends PropsWithChildren {\n open: boolean;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n onRequestClose: () => void;\n placement?: Placement;\n hideArrow?: boolean;\n disablePadding?: boolean;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.MutableRefObject<HTMLElement | null>;\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const ControlledPopover: React.FC<ControlledPopoverProps> = ({\n children,\n ...props\n}) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n </FloatingTree>\n );\n }\n\n return (\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n );\n};\n\nconst ControlledPopoverComponent: React.FC<ControlledPopoverProps> = ({\n children,\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n open,\n onRequestClose,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n zIndex,\n}) => {\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onRequestClose();\n }\n },\n [onRequestClose],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open,\n onOpenChange,\n placement,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n )}\n >\n {children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n","import {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport * as React from \"react\";\nimport { ReactNode, useCallback, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"../popover/Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport type PopoverTheme = \"light\" | \"dark\";\nexport type PopoverTrigger = \"click\" | \"hover\" | \"focus\";\n\nexport type PopoverChildren =\n | ReactNode\n | ((args: PopoverChildrenArgs) => ReactNode);\n\nexport interface PopoverChildrenArgs {\n onRequestClose: () => void;\n}\n\ntype TriggerProp = PopoverTrigger | Array<PopoverTrigger>;\n\nexport interface PopoverProps {\n children?: PopoverChildren;\n placement?: Placement;\n trigger?: TriggerProp;\n hideArrow?: boolean;\n disablePadding?: boolean;\n variant?: PopoverVariant;\n theme?: PopoverTheme;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.RefObject<HTMLElement | null>;\n /**\n * Portal target. Do not use ref to hold this, use useState instead with default null.\n * Floating UI will then wait for it to be set.\n * https://floating-ui.com/docs/FloatingPortal\n */\n appendTo?: HTMLElement | null | undefined;\n /**\n * Anchor target.\n * This allows you to control the position of the popover manually, and is normally not needed.\n * Do not use ref to hold this, use useState instead with default null.\n * From the docs:\n * \"The elements must be held in state (not plain refs) to ensure that they are reactive.\"\n * https://floating-ui.com/docs/useFloating#elements\n *\n * When using this, you must manually set props on anchor elements that are provided by Floating UI.\n * Please see these docs for more information:\n * https://floating-ui.com/docs/useInteractions#external-reference\n */\n anchor?: HTMLElement | null | undefined;\n zIndex?: number;\n onOpened?: () => void;\n onClosed?: () => void;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Popover: React.FC<PopoverProps> = ({ children, ...props }) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <PopoverComponent {...props}>{children}</PopoverComponent>\n </FloatingTree>\n );\n }\n\n return <PopoverComponent {...props}>{children}</PopoverComponent>;\n};\n\nconst PopoverComponent: React.FC<PopoverProps> = ({\n children,\n variant,\n trigger = \"hover\",\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n anchor,\n zIndex,\n onOpened,\n onClosed,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n\n if (open) {\n onOpened?.();\n } else {\n onClosed?.();\n }\n },\n [onClosed, onOpened],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange,\n placement,\n elements: {\n reference: anchor,\n },\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const onRequestClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n const onFocus = useFocus(context, { enabled: hasTrigger(trigger, \"focus\") });\n const onClick = useClick(context, { enabled: hasTrigger(trigger, \"click\") });\n const onHover = useHover(context, {\n enabled: hasTrigger(trigger, \"hover\"),\n handleClose: safePolygon(),\n restMs: 100,\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n onFocus,\n onClick,\n onHover,\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n variant && moduleStyles.withIcon,\n )}\n >\n {typeof children === \"function\"\n ? children({ onRequestClose })\n : children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n\nconst hasTrigger = (\n triggerProp: TriggerProp,\n triggerToCheck: PopoverTrigger,\n): boolean => {\n if (typeof triggerProp === \"string\") {\n return triggerProp === triggerToCheck;\n }\n return triggerProp.includes(triggerToCheck);\n};\n","import { Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CSSProperties, PropsWithChildren, useRef, useState } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingPortal,\n offset,\n shift,\n useFloating,\n useHover,\n useInteractions,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport moduleStyles from \"./Tooltip.module.css\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport cx from \"classnames\";\nimport {\n Icon,\n stenaExclamationCircle,\n stenaExclamationTriangle,\n stenaInfoCircle,\n} from \"@stenajs-webui/elements\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface TooltipProps extends PropsWithChildren {\n placement?: Placement;\n visible?: boolean;\n label: string;\n variant?: TooltipVariant;\n maxWidth?: CSSProperties[\"maxWidth\"];\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\ntype TooltipVariant = \"info\" | \"warning\" | \"error\";\n\nconst variantIcons = {\n info: stenaInfoCircle,\n warning: stenaExclamationCircle,\n error: stenaExclamationTriangle,\n};\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n visible,\n placement,\n label,\n variant,\n maxWidth = \"500px\",\n appendTo,\n zIndex,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const arrowRef = useRef(null);\n\n const { refs, floatingStyles, context } = useFloating({\n placement: placement,\n open: visible ?? isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const hover = useHover(context);\n\n const { getReferenceProps } = useInteractions([hover]);\n\n return (\n <>\n <div ref={refs.setReference} {...getReferenceProps()}>\n {children}\n </div>\n\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <div ref={refs.setFloating} style={{ zIndex, ...floatingStyles }}>\n <div\n style={{ maxWidth, ...styles }}\n className={cx(\n moduleStyles.floating,\n variant && moduleStyles.withIcon,\n )}\n >\n {variant ? (\n <>\n <div\n className={cx(\n moduleStyles.iconWrapper,\n moduleStyles[variant],\n )}\n >\n <Icon icon={variantIcons[variant]} size={16} />\n </div>\n <Space />\n <TooltipText label={label} />\n </>\n ) : (\n <TooltipText label={label} />\n )}\n\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"#333\"}\n />\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nconst TooltipText: React.FC<{ label: string }> = ({ label }) => (\n <Text color={cssColor(\"--lhds-color-ui-50\")} size={\"small\"} variant={\"bold\"}>\n {label}\n </Text>\n);\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","jsxs","Column","jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","ARROW_WIDTH","ARROW_HEIGHT","GAP","ControlledPopover","children","props","useFloatingParentNodeId","FloatingTree","ControlledPopoverComponent","placement","hideArrow","renderTrigger","disablePadding","open","onRequestClose","restoreFocus","returnFocus","initialFocus","appendTo","zIndex","nodeId","useFloatingNodeId","arrowRef","useRef","onOpenChange","useCallback","refs","floatingStyles","context","useFloating","offset","flip","shift","arrow","autoUpdate","isMounted","transitionStyles","useTransitionStyles","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","Fragment","FloatingNode","FloatingPortal","FloatingFocusManager","cx","moduleStyles","FloatingArrow","Popover","PopoverComponent","variant","trigger","anchor","onOpened","onClosed","isOpen","setIsOpen","useState","onFocus","useFocus","hasTrigger","onClick","useClick","onHover","useHover","safePolygon","triggerProp","triggerToCheck","variantIcons","stenaInfoCircle","stenaExclamationCircle","stenaExclamationTriangle","Tooltip","visible","label","maxWidth","styles","hover","Icon","TooltipText","cssColor"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/components/popover/ControlledPopover.tsx","../src/components/popover/Popover.tsx","../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode, useCallback, useRef } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"./Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface ControlledPopoverProps extends PropsWithChildren {\n open: boolean;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n onRequestClose: () => void;\n placement?: Placement;\n hideArrow?: boolean;\n disablePadding?: boolean;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.MutableRefObject<HTMLElement | null>;\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const ControlledPopover: React.FC<ControlledPopoverProps> = ({\n children,\n ...props\n}) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n </FloatingTree>\n );\n }\n\n return (\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n );\n};\n\nconst ControlledPopoverComponent: React.FC<ControlledPopoverProps> = ({\n children,\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n open,\n onRequestClose,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n zIndex,\n}) => {\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onRequestClose();\n }\n },\n [onRequestClose],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open,\n onOpenChange,\n placement,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n )}\n >\n {children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n","import {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport * as React from \"react\";\nimport { ReactNode, useCallback, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"../popover/Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport type PopoverTheme = \"light\" | \"dark\";\nexport type PopoverTrigger = \"click\" | \"hover\" | \"focus\";\n\nexport type PopoverChildren =\n | ReactNode\n | ((args: PopoverChildrenArgs) => ReactNode);\n\nexport interface PopoverChildrenArgs {\n onRequestClose: () => void;\n}\n\ntype TriggerProp = PopoverTrigger | Array<PopoverTrigger>;\n\nexport interface PopoverProps {\n children?: PopoverChildren;\n placement?: Placement;\n trigger?: TriggerProp;\n hideArrow?: boolean;\n disablePadding?: boolean;\n variant?: PopoverVariant;\n theme?: PopoverTheme;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.RefObject<HTMLElement | null>;\n /**\n * Portal target. Do not use ref to hold this, use useState instead with default null.\n * Floating UI will then wait for it to be set.\n * https://floating-ui.com/docs/FloatingPortal\n */\n appendTo?: HTMLElement | null | undefined;\n /**\n * Anchor target.\n * This allows you to control the position of the popover manually, and is normally not needed.\n * Do not use ref to hold this, use useState instead with default null.\n * From the docs:\n * \"The elements must be held in state (not plain refs) to ensure that they are reactive.\"\n * https://floating-ui.com/docs/useFloating#elements\n *\n * When using this, you must manually set props on anchor elements that are provided by Floating UI.\n * Please see these docs for more information:\n * https://floating-ui.com/docs/useInteractions#external-reference\n */\n anchor?: HTMLElement | null | undefined;\n zIndex?: number;\n onOpened?: () => void;\n onClosed?: () => void;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Popover: React.FC<PopoverProps> = ({ children, ...props }) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <PopoverComponent {...props}>{children}</PopoverComponent>\n </FloatingTree>\n );\n }\n\n return <PopoverComponent {...props}>{children}</PopoverComponent>;\n};\n\nconst PopoverComponent: React.FC<PopoverProps> = ({\n children,\n variant,\n trigger = \"hover\",\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n anchor,\n zIndex,\n onOpened,\n onClosed,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n\n if (open) {\n onOpened?.();\n } else {\n onClosed?.();\n }\n },\n [onClosed, onOpened],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange,\n placement,\n elements: {\n reference: anchor,\n },\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5, fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const onRequestClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n const onFocus = useFocus(context, { enabled: hasTrigger(trigger, \"focus\") });\n const onClick = useClick(context, { enabled: hasTrigger(trigger, \"click\") });\n const onHover = useHover(context, {\n enabled: hasTrigger(trigger, \"hover\"),\n handleClose: safePolygon(),\n restMs: 100,\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n onFocus,\n onClick,\n onHover,\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n variant && moduleStyles.withIcon,\n )}\n >\n {typeof children === \"function\"\n ? children({ onRequestClose })\n : children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n\nconst hasTrigger = (\n triggerProp: TriggerProp,\n triggerToCheck: PopoverTrigger,\n): boolean => {\n if (typeof triggerProp === \"string\") {\n return triggerProp === triggerToCheck;\n }\n return triggerProp.includes(triggerToCheck);\n};\n","import { Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CSSProperties, PropsWithChildren, useRef, useState } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingPortal,\n offset,\n shift,\n useFloating,\n useHover,\n useInteractions,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport moduleStyles from \"./Tooltip.module.css\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport cx from \"classnames\";\nimport {\n Icon,\n stenaExclamationCircle,\n stenaExclamationTriangle,\n stenaInfoCircle,\n} from \"@stenajs-webui/elements\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface TooltipProps extends PropsWithChildren {\n placement?: Placement;\n visible?: boolean;\n label: string;\n variant?: TooltipVariant;\n maxWidth?: CSSProperties[\"maxWidth\"];\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\ntype TooltipVariant = \"info\" | \"warning\" | \"error\";\n\nconst variantIcons = {\n info: stenaInfoCircle,\n warning: stenaExclamationCircle,\n error: stenaExclamationTriangle,\n};\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n visible,\n placement,\n label,\n variant,\n maxWidth = \"500px\",\n appendTo,\n zIndex,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const arrowRef = useRef(null);\n\n const { refs, floatingStyles, context } = useFloating({\n placement: placement,\n open: visible ?? isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const hover = useHover(context);\n\n const { getReferenceProps } = useInteractions([hover]);\n\n return (\n <>\n <div ref={refs.setReference} {...getReferenceProps()}>\n {children}\n </div>\n\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <div ref={refs.setFloating} style={{ zIndex, ...floatingStyles }}>\n <div\n style={{ maxWidth, ...styles }}\n className={cx(\n moduleStyles.floating,\n variant && moduleStyles.withIcon,\n )}\n >\n {variant ? (\n <>\n <div\n className={cx(\n moduleStyles.iconWrapper,\n moduleStyles[variant],\n )}\n >\n <Icon icon={variantIcons[variant]} size={16} />\n </div>\n <Space />\n <TooltipText label={label} />\n </>\n ) : (\n <TooltipText label={label} />\n )}\n\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"#333\"}\n />\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nconst TooltipText: React.FC<{ label: string }> = ({ label }) => (\n <Text color={cssColor(\"--lhds-color-ui-50\")} size={\"small\"} variant={\"bold\"}>\n {label}\n </Text>\n);\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","jsxs","Column","jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","ARROW_WIDTH","ARROW_HEIGHT","GAP","ControlledPopover","children","props","useFloatingParentNodeId","FloatingTree","ControlledPopoverComponent","placement","hideArrow","renderTrigger","disablePadding","open","onRequestClose","restoreFocus","returnFocus","initialFocus","appendTo","zIndex","nodeId","useFloatingNodeId","arrowRef","useRef","onOpenChange","useCallback","refs","floatingStyles","context","useFloating","offset","flip","shift","arrow","autoUpdate","isMounted","transitionStyles","useTransitionStyles","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","Fragment","FloatingNode","FloatingPortal","FloatingFocusManager","cx","moduleStyles","FloatingArrow","Popover","PopoverComponent","variant","trigger","anchor","onOpened","onClosed","isOpen","setIsOpen","useState","onFocus","useFocus","hasTrigger","onClick","useClick","onHover","useHover","safePolygon","triggerProp","triggerToCheck","variantIcons","stenaInfoCircle","stenaExclamationCircle","stenaExclamationTriangle","Tooltip","visible","label","maxWidth","styles","hover","Icon","TooltipText","cssColor"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode("._floating_1glwr_1{display:flex;flex-direction:row;align-items:center;background:#fff;color:#fff;border-radius:var(--swui-border-radius);padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2);box-shadow:var(--swui-shadow-popover)}._floating_1glwr_1._disablePadding_1glwr_11{padding:0}._iconWrapper_1glwr_16{--current-bg-color: transparent;--current-border-color: var(--lhds-color-ui-50);--current-icon-color: var(--lhds-color-ui-50);display:inline-flex;flex-direction:row;white-space:nowrap;background-color:var(--current-bg-color);border:1px solid var(--current-border-color);border-radius:var(--swui-border-radius);padding:calc(var(--swui-metrics-spacing) * .5);align-items:flex-start}._iconWrapper_1glwr_16 svg{color:var(--current-icon-color)}._iconWrapper_1glwr_16._info_1glwr_36{--current-border-color: var(--lhds-color-blue-300);--current-bg-color: var(--lhds-color-blue-100);--current-icon-color: var(--lhds-color-blue-700)}._iconWrapper_1glwr_16._warning_1glwr_42{--current-border-color: var(--lhds-color-orange-300);--current-bg-color: var(--lhds-color-orange-100);--current-icon-color: var(--lhds-color-orange-700)}._iconWrapper_1glwr_16._error_1glwr_48{--current-border-color: var(--lhds-color-red-300);--current-bg-color: var(--lhds-color-red-100);--current-icon-color: var(--lhds-color-red-700)}._floating_15fk9_1{display:flex;align-items:center;background:#333;color:#fff;border-radius:var(--swui-border-radius);padding:var(--swui-metrics-spacing) calc(var(--swui-metrics-indent) * 2);width:-webkit-fit-content;width:fit-content}._floating_15fk9_1._withIcon_15fk9_10{padding:calc(var(--swui-metrics-spacing) * .5);padding-right:calc(var(--swui-metrics-indent) * 2)}._iconWrapper_15fk9_16{--current-bg-color: transparent;--current-border-color: var(--lhds-color-ui-50);--current-icon-color: var(--lhds-color-ui-50);display:inline-flex;flex-direction:row;white-space:nowrap;background-color:var(--current-bg-color);border:1px solid var(--current-border-color);border-radius:var(--swui-border-radius);padding:calc(var(--swui-metrics-spacing) * .5);align-items:flex-start}._iconWrapper_15fk9_16 svg{color:var(--current-icon-color)}._iconWrapper_15fk9_16._info_15fk9_36{--current-border-color: var(--lhds-color-blue-300);--current-bg-color: var(--lhds-color-blue-100);--current-icon-color: var(--lhds-color-blue-700)}._iconWrapper_15fk9_16._warning_15fk9_42{--current-border-color: var(--lhds-color-orange-300);--current-bg-color: var(--lhds-color-orange-100);--current-icon-color: var(--lhds-color-orange-700)}._iconWrapper_15fk9_16._error_15fk9_48{--current-border-color: var(--lhds-color-red-300);--current-bg-color: var(--lhds-color-red-100);--current-icon-color: var(--lhds-color-red-700)}")),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),f=require("@stenajs-webui/core"),g=require("@stenajs-webui/elements"),u=require("react"),e=require("@floating-ui/react"),T=require("classnames"),L=require("@stenajs-webui/theme"),Q=({text:t="Are you sure?",yesLabel:s="Yes",noLabel:o="No",onNo:c,onYes:i,loading:d})=>n.jsxs(f.Column,{position:"relative",children:[n.jsxs("div",{style:{opacity:d?0:1},children:[n.jsx(f.Text,{children:t}),n.jsx(f.Space,{}),n.jsxs(f.Row,{justifyContent:"flex-end",alignItems:"center",children:[n.jsx(g.FlatButton,{label:o,onClick:c}),n.jsx(f.Space,{}),n.jsx(g.PrimaryButton,{label:s,onClick:i})]})]}),d&&n.jsx(f.Row,{justifyContent:"center",alignItems:"center",left:0,top:0,width:"100%",height:"100%",position:"absolute",children:n.jsx(g.Spinner,{size:"small"})})]}),V="_floating_1glwr_1",X="_disablePadding_1glwr_11",R={floating:V,disablePadding:X},Z=12,W=8,ee=2,ne=({children:t,...s})=>e.useFloatingParentNodeId()==null?n.jsx(e.FloatingTree,{children:n.jsx(H,{...s,children:t})}):n.jsx(H,{...s,children:t}),H=({children:t,placement:s="bottom",hideArrow:o,renderTrigger:c,disablePadding:i,open:d,onRequestClose:p,restoreFocus:F,returnFocus:I,initialFocus:_,appendTo:h,zIndex:x})=>{const j=e.useFloatingNodeId(),a=u.useRef(null),m=u.useCallback(N=>{N||p()},[p]),{refs:w,floatingStyles:y,context:l}=e.useFloating({nodeId:j,open:d,onOpenChange:m,placement:s,middleware:[e.offset(W+ee),e.flip({padding:5}),e.shift({padding:5}),e.arrow({element:a})],whileElementsMounted:e.autoUpdate}),{isMounted:P,styles:b}=e.useTransitionStyles(l,{initial:{opacity:0}}),v=e.useDismiss(l),S=e.useRole(l),{getReferenceProps:r,getFloatingProps:A}=e.useInteractions([v,S]);return n.jsxs(n.Fragment,{children:[c({ref:w.setReference,...r()}),n.jsx(e.FloatingNode,{id:j,children:P&&n.jsx(e.FloatingPortal,{root:h,children:n.jsx(e.FloatingFocusManager,{context:l,modal:!1,restoreFocus:F,returnFocus:I,initialFocus:_,children:n.jsx("div",{ref:w.setFloating,style:{zIndex:x,...y},...A(),children:n.jsxs("div",{style:b,className:T(R.floating,i&&R.disablePadding),children:[t,!o&&n.jsx(e.FloatingArrow,{ref:a,context:l,width:Z,height:W,fill:"white"})]})})})})})]})},te=12,M=8,se=2,oe=({children:t,...s})=>e.useFloatingParentNodeId()==null?n.jsx(e.FloatingTree,{children:n.jsx($,{...s,children:t})}):n.jsx($,{...s,children:t}),$=({children:t,variant:s,trigger:o="hover",placement:c="bottom",hideArrow:i,renderTrigger:d,disablePadding:p,restoreFocus:F,returnFocus:I,initialFocus:_,appendTo:h,anchor:x,zIndex:j,onOpened:a,onClosed:m})=>{const[w,y]=u.useState(!1),l=e.useFloatingNodeId(),P=u.useRef(null),b=u.useCallback(O=>{y(O),O?a?.():m?.()},[m,a]),{refs:v,floatingStyles:S,context:r}=e.useFloating({nodeId:l,open:w,onOpenChange:b,placement:c,elements:{reference:x},middleware:[e.offset(M+se),e.flip({padding:5}),e.shift({padding:5}),e.arrow({element:P})],whileElementsMounted:e.autoUpdate}),{isMounted:A,styles:N}=e.useTransitionStyles(r,{initial:{opacity:0}}),G=u.useCallback(()=>{y(!1)},[]),D=e.useDismiss(r),z=e.useRole(r),U=e.useFocus(r,{enabled:k(o,"focus")}),B=e.useClick(r,{enabled:k(o,"click")}),Y=e.useHover(r,{enabled:k(o,"hover"),handleClose:e.safePolygon(),restMs:100}),{getReferenceProps:J,getFloatingProps:K}=e.useInteractions([U,B,Y,D,z]);return n.jsxs(n.Fragment,{children:[d({ref:v.setReference,...J()}),n.jsx(e.FloatingNode,{id:l,children:A&&n.jsx(e.FloatingPortal,{root:h,children:n.jsx(e.FloatingFocusManager,{context:r,modal:!1,restoreFocus:F,returnFocus:I,initialFocus:_,children:n.jsx("div",{ref:v.setFloating,style:{zIndex:j,...S},...K(),children:n.jsxs("div",{style:N,className:T(R.floating,p&&R.disablePadding,s&&R.withIcon),children:[typeof t=="function"?t({onRequestClose:G}):t,!i&&n.jsx(e.FloatingArrow,{ref:P,context:r,width:te,height:M,fill:"white"})]})})})})})]})},k=(t,s)=>typeof t=="string"?t===s:t.includes(s),ie="_floating_15fk9_1",le="_withIcon_15fk9_10",re="_iconWrapper_15fk9_16",ae="_info_15fk9_36",ce="_warning_15fk9_42",de="_error_15fk9_48",C={floating:ie,withIcon:le,iconWrapper:re,info:ae,warning:ce,error:de},fe={info:g.stenaInfoCircle,warning:g.stenaExclamationCircle,error:g.stenaExclamationTriangle},ue=12,E=8,ge=2,pe=({children:t,visible:s,placement:o,label:c,variant:i,maxWidth:d="500px",appendTo:p,zIndex:F})=>{const[I,_]=u.useState(!1),h=u.useRef(null),{refs:x,floatingStyles:j,context:a}=e.useFloating({placement:o,open:s??I,onOpenChange:_,middleware:[e.offset(E+ge),e.flip({padding:5}),e.shift({padding:5}),e.arrow({element:h})],whileElementsMounted:e.autoUpdate}),{isMounted:m,styles:w}=e.useTransitionStyles(a,{initial:{opacity:0}}),y=e.useHover(a),{getReferenceProps:l}=e.useInteractions([y]);return n.jsxs(n.Fragment,{children:[n.jsx("div",{ref:x.setReference,...l(),children:t}),m&&n.jsx(e.FloatingPortal,{root:p,children:n.jsx("div",{ref:x.setFloating,style:{zIndex:F,...j},children:n.jsxs("div",{style:{maxWidth:d,...w},className:T(C.floating,i&&C.withIcon),children:[i?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:T(C.iconWrapper,C[i]),children:n.jsx(g.Icon,{icon:fe[i],size:16})}),n.jsx(f.Space,{}),n.jsx(q,{label:c})]}):n.jsx(q,{label:c}),n.jsx(e.FloatingArrow,{ref:h,context:a,width:ue,height:E,fill:"#333"})]})})})]})},q=({label:t})=>n.jsx(f.Text,{color:L.cssColor("--lhds-color-ui-50"),size:"small",variant:"bold",children:t});exports.ActionPrompt=Q;exports.ControlledPopover=ne;exports.Popover=oe;exports.Tooltip=pe;
2
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),f=require("@stenajs-webui/core"),g=require("@stenajs-webui/elements"),u=require("react"),e=require("@floating-ui/react"),b=require("classnames"),L=require("@stenajs-webui/theme"),Q=({text:t="Are you sure?",yesLabel:s="Yes",noLabel:o="No",onNo:c,onYes:i,loading:d})=>n.jsxs(f.Column,{position:"relative",children:[n.jsxs("div",{style:{opacity:d?0:1},children:[n.jsx(f.Text,{children:t}),n.jsx(f.Space,{}),n.jsxs(f.Row,{justifyContent:"flex-end",alignItems:"center",children:[n.jsx(g.FlatButton,{label:o,onClick:c}),n.jsx(f.Space,{}),n.jsx(g.PrimaryButton,{label:s,onClick:i})]})]}),d&&n.jsx(f.Row,{justifyContent:"center",alignItems:"center",left:0,top:0,width:"100%",height:"100%",position:"absolute",children:n.jsx(g.Spinner,{size:"small"})})]}),V="_floating_1glwr_1",X="_disablePadding_1glwr_11",R={floating:V,disablePadding:X},Z=12,W=8,ee=2,ne=({children:t,...s})=>e.useFloatingParentNodeId()==null?n.jsx(e.FloatingTree,{children:n.jsx(H,{...s,children:t})}):n.jsx(H,{...s,children:t}),H=({children:t,placement:s="bottom",hideArrow:o,renderTrigger:c,disablePadding:i,open:d,onRequestClose:p,restoreFocus:F,returnFocus:I,initialFocus:_,appendTo:h,zIndex:x})=>{const j=e.useFloatingNodeId(),a=u.useRef(null),m=u.useCallback(N=>{N||p()},[p]),{refs:w,floatingStyles:y,context:l}=e.useFloating({nodeId:j,open:d,onOpenChange:m,placement:s,middleware:[e.offset(W+ee),e.flip({padding:5}),e.shift({padding:5}),e.arrow({element:a})],whileElementsMounted:e.autoUpdate}),{isMounted:P,styles:S}=e.useTransitionStyles(l,{initial:{opacity:0}}),v=e.useDismiss(l),T=e.useRole(l),{getReferenceProps:r,getFloatingProps:A}=e.useInteractions([v,T]);return n.jsxs(n.Fragment,{children:[c({ref:w.setReference,...r()}),n.jsx(e.FloatingNode,{id:j,children:P&&n.jsx(e.FloatingPortal,{root:h,children:n.jsx(e.FloatingFocusManager,{context:l,modal:!1,restoreFocus:F,returnFocus:I,initialFocus:_,children:n.jsx("div",{ref:w.setFloating,style:{zIndex:x,...y},...A(),children:n.jsxs("div",{style:S,className:b(R.floating,i&&R.disablePadding),children:[t,!o&&n.jsx(e.FloatingArrow,{ref:a,context:l,width:Z,height:W,fill:"white"})]})})})})})]})},te=12,M=8,se=2,oe=({children:t,...s})=>e.useFloatingParentNodeId()==null?n.jsx(e.FloatingTree,{children:n.jsx($,{...s,children:t})}):n.jsx($,{...s,children:t}),$=({children:t,variant:s,trigger:o="hover",placement:c="bottom",hideArrow:i,renderTrigger:d,disablePadding:p,restoreFocus:F,returnFocus:I,initialFocus:_,appendTo:h,anchor:x,zIndex:j,onOpened:a,onClosed:m})=>{const[w,y]=u.useState(!1),l=e.useFloatingNodeId(),P=u.useRef(null),S=u.useCallback(O=>{y(O),O?a?.():m?.()},[m,a]),{refs:v,floatingStyles:T,context:r}=e.useFloating({nodeId:l,open:w,onOpenChange:S,placement:c,elements:{reference:x},middleware:[e.offset(M+se),e.flip({padding:5,fallbackAxisSideDirection:"start"}),e.shift({padding:5}),e.arrow({element:P})],whileElementsMounted:e.autoUpdate}),{isMounted:A,styles:N}=e.useTransitionStyles(r,{initial:{opacity:0}}),D=u.useCallback(()=>{y(!1)},[]),G=e.useDismiss(r),z=e.useRole(r),U=e.useFocus(r,{enabled:k(o,"focus")}),B=e.useClick(r,{enabled:k(o,"click")}),Y=e.useHover(r,{enabled:k(o,"hover"),handleClose:e.safePolygon(),restMs:100}),{getReferenceProps:J,getFloatingProps:K}=e.useInteractions([U,B,Y,G,z]);return n.jsxs(n.Fragment,{children:[d({ref:v.setReference,...J()}),n.jsx(e.FloatingNode,{id:l,children:A&&n.jsx(e.FloatingPortal,{root:h,children:n.jsx(e.FloatingFocusManager,{context:r,modal:!1,restoreFocus:F,returnFocus:I,initialFocus:_,children:n.jsx("div",{ref:v.setFloating,style:{zIndex:j,...T},...K(),children:n.jsxs("div",{style:N,className:b(R.floating,p&&R.disablePadding,s&&R.withIcon),children:[typeof t=="function"?t({onRequestClose:D}):t,!i&&n.jsx(e.FloatingArrow,{ref:P,context:r,width:te,height:M,fill:"white"})]})})})})})]})},k=(t,s)=>typeof t=="string"?t===s:t.includes(s),ie="_floating_15fk9_1",le="_withIcon_15fk9_10",re="_iconWrapper_15fk9_16",ae="_info_15fk9_36",ce="_warning_15fk9_42",de="_error_15fk9_48",C={floating:ie,withIcon:le,iconWrapper:re,info:ae,warning:ce,error:de},fe={info:g.stenaInfoCircle,warning:g.stenaExclamationCircle,error:g.stenaExclamationTriangle},ue=12,E=8,ge=2,pe=({children:t,visible:s,placement:o,label:c,variant:i,maxWidth:d="500px",appendTo:p,zIndex:F})=>{const[I,_]=u.useState(!1),h=u.useRef(null),{refs:x,floatingStyles:j,context:a}=e.useFloating({placement:o,open:s??I,onOpenChange:_,middleware:[e.offset(E+ge),e.flip({padding:5}),e.shift({padding:5}),e.arrow({element:h})],whileElementsMounted:e.autoUpdate}),{isMounted:m,styles:w}=e.useTransitionStyles(a,{initial:{opacity:0}}),y=e.useHover(a),{getReferenceProps:l}=e.useInteractions([y]);return n.jsxs(n.Fragment,{children:[n.jsx("div",{ref:x.setReference,...l(),children:t}),m&&n.jsx(e.FloatingPortal,{root:p,children:n.jsx("div",{ref:x.setFloating,style:{zIndex:F,...j},children:n.jsxs("div",{style:{maxWidth:d,...w},className:b(C.floating,i&&C.withIcon),children:[i?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:b(C.iconWrapper,C[i]),children:n.jsx(g.Icon,{icon:fe[i],size:16})}),n.jsx(f.Space,{}),n.jsx(q,{label:c})]}):n.jsx(q,{label:c}),n.jsx(e.FloatingArrow,{ref:h,context:a,width:ue,height:E,fill:"#333"})]})})})]})},q=({label:t})=>n.jsx(f.Text,{color:L.cssColor("--lhds-color-ui-50"),size:"small",variant:"bold",children:t});exports.ActionPrompt=Q;exports.ControlledPopover=ne;exports.Popover=oe;exports.Tooltip=pe;
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/components/popover/ControlledPopover.tsx","../src/components/popover/Popover.tsx","../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode, useCallback, useRef } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"./Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface ControlledPopoverProps extends PropsWithChildren {\n open: boolean;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n onRequestClose: () => void;\n placement?: Placement;\n hideArrow?: boolean;\n disablePadding?: boolean;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.MutableRefObject<HTMLElement | null>;\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const ControlledPopover: React.FC<ControlledPopoverProps> = ({\n children,\n ...props\n}) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n </FloatingTree>\n );\n }\n\n return (\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n );\n};\n\nconst ControlledPopoverComponent: React.FC<ControlledPopoverProps> = ({\n children,\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n open,\n onRequestClose,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n zIndex,\n}) => {\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onRequestClose();\n }\n },\n [onRequestClose],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open,\n onOpenChange,\n placement,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n )}\n >\n {children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n","import {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport * as React from \"react\";\nimport { ReactNode, useCallback, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"../popover/Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport type PopoverTheme = \"light\" | \"dark\";\nexport type PopoverTrigger = \"click\" | \"hover\" | \"focus\";\n\nexport type PopoverChildren =\n | ReactNode\n | ((args: PopoverChildrenArgs) => ReactNode);\n\nexport interface PopoverChildrenArgs {\n onRequestClose: () => void;\n}\n\ntype TriggerProp = PopoverTrigger | Array<PopoverTrigger>;\n\nexport interface PopoverProps {\n children?: PopoverChildren;\n placement?: Placement;\n trigger?: TriggerProp;\n hideArrow?: boolean;\n disablePadding?: boolean;\n variant?: PopoverVariant;\n theme?: PopoverTheme;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.RefObject<HTMLElement | null>;\n /**\n * Portal target. Do not use ref to hold this, use useState instead with default null.\n * Floating UI will then wait for it to be set.\n * https://floating-ui.com/docs/FloatingPortal\n */\n appendTo?: HTMLElement | null | undefined;\n /**\n * Anchor target.\n * This allows you to control the position of the popover manually, and is normally not needed.\n * Do not use ref to hold this, use useState instead with default null.\n * From the docs:\n * \"The elements must be held in state (not plain refs) to ensure that they are reactive.\"\n * https://floating-ui.com/docs/useFloating#elements\n *\n * When using this, you must manually set props on anchor elements that are provided by Floating UI.\n * Please see these docs for more information:\n * https://floating-ui.com/docs/useInteractions#external-reference\n */\n anchor?: HTMLElement | null | undefined;\n zIndex?: number;\n onOpened?: () => void;\n onClosed?: () => void;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Popover: React.FC<PopoverProps> = ({ children, ...props }) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <PopoverComponent {...props}>{children}</PopoverComponent>\n </FloatingTree>\n );\n }\n\n return <PopoverComponent {...props}>{children}</PopoverComponent>;\n};\n\nconst PopoverComponent: React.FC<PopoverProps> = ({\n children,\n variant,\n trigger = \"hover\",\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n anchor,\n zIndex,\n onOpened,\n onClosed,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n\n if (open) {\n onOpened?.();\n } else {\n onClosed?.();\n }\n },\n [onClosed, onOpened],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange,\n placement,\n elements: {\n reference: anchor,\n },\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const onRequestClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n const onFocus = useFocus(context, { enabled: hasTrigger(trigger, \"focus\") });\n const onClick = useClick(context, { enabled: hasTrigger(trigger, \"click\") });\n const onHover = useHover(context, {\n enabled: hasTrigger(trigger, \"hover\"),\n handleClose: safePolygon(),\n restMs: 100,\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n onFocus,\n onClick,\n onHover,\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n variant && moduleStyles.withIcon,\n )}\n >\n {typeof children === \"function\"\n ? children({ onRequestClose })\n : children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n\nconst hasTrigger = (\n triggerProp: TriggerProp,\n triggerToCheck: PopoverTrigger,\n): boolean => {\n if (typeof triggerProp === \"string\") {\n return triggerProp === triggerToCheck;\n }\n return triggerProp.includes(triggerToCheck);\n};\n","import { Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CSSProperties, PropsWithChildren, useRef, useState } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingPortal,\n offset,\n shift,\n useFloating,\n useHover,\n useInteractions,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport moduleStyles from \"./Tooltip.module.css\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport cx from \"classnames\";\nimport {\n Icon,\n stenaExclamationCircle,\n stenaExclamationTriangle,\n stenaInfoCircle,\n} from \"@stenajs-webui/elements\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface TooltipProps extends PropsWithChildren {\n placement?: Placement;\n visible?: boolean;\n label: string;\n variant?: TooltipVariant;\n maxWidth?: CSSProperties[\"maxWidth\"];\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\ntype TooltipVariant = \"info\" | \"warning\" | \"error\";\n\nconst variantIcons = {\n info: stenaInfoCircle,\n warning: stenaExclamationCircle,\n error: stenaExclamationTriangle,\n};\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n visible,\n placement,\n label,\n variant,\n maxWidth = \"500px\",\n appendTo,\n zIndex,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const arrowRef = useRef(null);\n\n const { refs, floatingStyles, context } = useFloating({\n placement: placement,\n open: visible ?? isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const hover = useHover(context);\n\n const { getReferenceProps } = useInteractions([hover]);\n\n return (\n <>\n <div ref={refs.setReference} {...getReferenceProps()}>\n {children}\n </div>\n\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <div ref={refs.setFloating} style={{ zIndex, ...floatingStyles }}>\n <div\n style={{ maxWidth, ...styles }}\n className={cx(\n moduleStyles.floating,\n variant && moduleStyles.withIcon,\n )}\n >\n {variant ? (\n <>\n <div\n className={cx(\n moduleStyles.iconWrapper,\n moduleStyles[variant],\n )}\n >\n <Icon icon={variantIcons[variant]} size={16} />\n </div>\n <Space />\n <TooltipText label={label} />\n </>\n ) : (\n <TooltipText label={label} />\n )}\n\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"#333\"}\n />\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nconst TooltipText: React.FC<{ label: string }> = ({ label }) => (\n <Text color={cssColor(\"--lhds-color-ui-50\")} size={\"small\"} variant={\"bold\"}>\n {label}\n </Text>\n);\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","jsxs","Column","jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","ARROW_WIDTH","ARROW_HEIGHT","GAP","ControlledPopover","children","props","useFloatingParentNodeId","FloatingTree","ControlledPopoverComponent","placement","hideArrow","renderTrigger","disablePadding","open","onRequestClose","restoreFocus","returnFocus","initialFocus","appendTo","zIndex","nodeId","useFloatingNodeId","arrowRef","useRef","onOpenChange","useCallback","refs","floatingStyles","context","useFloating","offset","flip","shift","arrow","autoUpdate","isMounted","transitionStyles","useTransitionStyles","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","Fragment","FloatingNode","FloatingPortal","FloatingFocusManager","cx","moduleStyles","FloatingArrow","Popover","PopoverComponent","variant","trigger","anchor","onOpened","onClosed","isOpen","setIsOpen","useState","onFocus","useFocus","hasTrigger","onClick","useClick","onHover","useHover","safePolygon","triggerProp","triggerToCheck","variantIcons","stenaInfoCircle","stenaExclamationCircle","stenaExclamationTriangle","Tooltip","visible","label","maxWidth","styles","hover","Icon","TooltipText","cssColor"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/popover/ActionPrompt.tsx","../src/components/popover/ControlledPopover.tsx","../src/components/popover/Popover.tsx","../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import { Column, Row, Space, Text } from \"@stenajs-webui/core\";\nimport { FlatButton, Spinner, PrimaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\n\nexport interface ActionPromptProps {\n text?: string;\n yesLabel?: string;\n noLabel?: string;\n onYes?: () => void;\n onNo?: () => void;\n loading?: boolean;\n}\n\nexport const ActionPrompt: React.FC<ActionPromptProps> = ({\n text = \"Are you sure?\",\n yesLabel = \"Yes\",\n noLabel = \"No\",\n onNo,\n onYes,\n loading,\n}) => {\n return (\n <Column position={\"relative\"}>\n <div style={{ opacity: loading ? 0 : 1 }}>\n <Text>{text}</Text>\n <Space />\n <Row justifyContent={\"flex-end\"} alignItems={\"center\"}>\n <FlatButton label={noLabel} onClick={onNo} />\n <Space />\n <PrimaryButton label={yesLabel} onClick={onYes} />\n </Row>\n </div>\n {loading && (\n <Row\n justifyContent={\"center\"}\n alignItems={\"center\"}\n left={0}\n top={0}\n width={\"100%\"}\n height={\"100%\"}\n position={\"absolute\"}\n >\n <Spinner size={\"small\"} />\n </Row>\n )}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode, useCallback, useRef } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"./Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface ControlledPopoverProps extends PropsWithChildren {\n open: boolean;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n onRequestClose: () => void;\n placement?: Placement;\n hideArrow?: boolean;\n disablePadding?: boolean;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.MutableRefObject<HTMLElement | null>;\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const ControlledPopover: React.FC<ControlledPopoverProps> = ({\n children,\n ...props\n}) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n </FloatingTree>\n );\n }\n\n return (\n <ControlledPopoverComponent {...props}>\n {children}\n </ControlledPopoverComponent>\n );\n};\n\nconst ControlledPopoverComponent: React.FC<ControlledPopoverProps> = ({\n children,\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n open,\n onRequestClose,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n zIndex,\n}) => {\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onRequestClose();\n }\n },\n [onRequestClose],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open,\n onOpenChange,\n placement,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n )}\n >\n {children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n","import {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport * as React from \"react\";\nimport { ReactNode, useCallback, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport moduleStyles from \"../popover/Popover.module.css\";\nimport { Placement } from \"../../types/Placement\";\n\nexport type PopoverVariant =\n | \"standard\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"outlined\";\n\nexport type PopoverTheme = \"light\" | \"dark\";\nexport type PopoverTrigger = \"click\" | \"hover\" | \"focus\";\n\nexport type PopoverChildren =\n | ReactNode\n | ((args: PopoverChildrenArgs) => ReactNode);\n\nexport interface PopoverChildrenArgs {\n onRequestClose: () => void;\n}\n\ntype TriggerProp = PopoverTrigger | Array<PopoverTrigger>;\n\nexport interface PopoverProps {\n children?: PopoverChildren;\n placement?: Placement;\n trigger?: TriggerProp;\n hideArrow?: boolean;\n disablePadding?: boolean;\n variant?: PopoverVariant;\n theme?: PopoverTheme;\n renderTrigger: (props: Record<string, unknown>) => ReactNode;\n restoreFocus?: boolean;\n returnFocus?: boolean;\n initialFocus?: number | React.RefObject<HTMLElement | null>;\n /**\n * Portal target. Do not use ref to hold this, use useState instead with default null.\n * Floating UI will then wait for it to be set.\n * https://floating-ui.com/docs/FloatingPortal\n */\n appendTo?: HTMLElement | null | undefined;\n /**\n * Anchor target.\n * This allows you to control the position of the popover manually, and is normally not needed.\n * Do not use ref to hold this, use useState instead with default null.\n * From the docs:\n * \"The elements must be held in state (not plain refs) to ensure that they are reactive.\"\n * https://floating-ui.com/docs/useFloating#elements\n *\n * When using this, you must manually set props on anchor elements that are provided by Floating UI.\n * Please see these docs for more information:\n * https://floating-ui.com/docs/useInteractions#external-reference\n */\n anchor?: HTMLElement | null | undefined;\n zIndex?: number;\n onOpened?: () => void;\n onClosed?: () => void;\n}\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Popover: React.FC<PopoverProps> = ({ children, ...props }) => {\n const parentNodeId = useFloatingParentNodeId();\n\n if (parentNodeId == null) {\n return (\n <FloatingTree>\n <PopoverComponent {...props}>{children}</PopoverComponent>\n </FloatingTree>\n );\n }\n\n return <PopoverComponent {...props}>{children}</PopoverComponent>;\n};\n\nconst PopoverComponent: React.FC<PopoverProps> = ({\n children,\n variant,\n trigger = \"hover\",\n placement = \"bottom\",\n hideArrow,\n renderTrigger,\n disablePadding,\n restoreFocus,\n returnFocus,\n initialFocus,\n appendTo,\n anchor,\n zIndex,\n onOpened,\n onClosed,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const nodeId = useFloatingNodeId();\n\n const arrowRef = useRef(null);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n\n if (open) {\n onOpened?.();\n } else {\n onClosed?.();\n }\n },\n [onClosed, onOpened],\n );\n\n const { refs, floatingStyles, context } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange,\n placement,\n elements: {\n reference: anchor,\n },\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5, fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const onRequestClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const dismiss = useDismiss(context);\n const role = useRole(context);\n const onFocus = useFocus(context, { enabled: hasTrigger(trigger, \"focus\") });\n const onClick = useClick(context, { enabled: hasTrigger(trigger, \"click\") });\n const onHover = useHover(context, {\n enabled: hasTrigger(trigger, \"hover\"),\n handleClose: safePolygon(),\n restMs: 100,\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n onFocus,\n onClick,\n onHover,\n dismiss,\n role,\n ]);\n\n return (\n <>\n {renderTrigger({ ref: refs.setReference, ...getReferenceProps() })}\n\n <FloatingNode id={nodeId}>\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <FloatingFocusManager\n context={context}\n modal={false}\n restoreFocus={restoreFocus}\n returnFocus={returnFocus}\n initialFocus={initialFocus}\n >\n <div\n ref={refs.setFloating}\n style={{ zIndex, ...floatingStyles }}\n {...getFloatingProps()}\n >\n <div\n style={transitionStyles}\n className={cx(\n moduleStyles.floating,\n disablePadding && moduleStyles.disablePadding,\n variant && moduleStyles.withIcon,\n )}\n >\n {typeof children === \"function\"\n ? children({ onRequestClose })\n : children}\n {!hideArrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"white\"}\n />\n )}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n </>\n );\n};\n\nconst hasTrigger = (\n triggerProp: TriggerProp,\n triggerToCheck: PopoverTrigger,\n): boolean => {\n if (typeof triggerProp === \"string\") {\n return triggerProp === triggerToCheck;\n }\n return triggerProp.includes(triggerToCheck);\n};\n","import { Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { CSSProperties, PropsWithChildren, useRef, useState } from \"react\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingPortal,\n offset,\n shift,\n useFloating,\n useHover,\n useInteractions,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport moduleStyles from \"./Tooltip.module.css\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport cx from \"classnames\";\nimport {\n Icon,\n stenaExclamationCircle,\n stenaExclamationTriangle,\n stenaInfoCircle,\n} from \"@stenajs-webui/elements\";\nimport { Placement } from \"../../types/Placement\";\n\nexport interface TooltipProps extends PropsWithChildren {\n placement?: Placement;\n visible?: boolean;\n label: string;\n variant?: TooltipVariant;\n maxWidth?: CSSProperties[\"maxWidth\"];\n appendTo?: HTMLElement | null | React.MutableRefObject<HTMLElement | null>;\n zIndex?: number;\n}\n\ntype TooltipVariant = \"info\" | \"warning\" | \"error\";\n\nconst variantIcons = {\n info: stenaInfoCircle,\n warning: stenaExclamationCircle,\n error: stenaExclamationTriangle,\n};\n\nconst ARROW_WIDTH = 12;\nconst ARROW_HEIGHT = 8;\nconst GAP = 2;\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n visible,\n placement,\n label,\n variant,\n maxWidth = \"500px\",\n appendTo,\n zIndex,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const arrowRef = useRef(null);\n\n const { refs, floatingStyles, context } = useFloating({\n placement: placement,\n open: visible ?? isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(ARROW_HEIGHT + GAP),\n flip({ padding: 5 }),\n shift({ padding: 5 }),\n arrow({ element: arrowRef }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { isMounted, styles } = useTransitionStyles(context, {\n initial: {\n opacity: 0,\n },\n });\n\n const hover = useHover(context);\n\n const { getReferenceProps } = useInteractions([hover]);\n\n return (\n <>\n <div ref={refs.setReference} {...getReferenceProps()}>\n {children}\n </div>\n\n {isMounted && (\n <FloatingPortal root={appendTo}>\n <div ref={refs.setFloating} style={{ zIndex, ...floatingStyles }}>\n <div\n style={{ maxWidth, ...styles }}\n className={cx(\n moduleStyles.floating,\n variant && moduleStyles.withIcon,\n )}\n >\n {variant ? (\n <>\n <div\n className={cx(\n moduleStyles.iconWrapper,\n moduleStyles[variant],\n )}\n >\n <Icon icon={variantIcons[variant]} size={16} />\n </div>\n <Space />\n <TooltipText label={label} />\n </>\n ) : (\n <TooltipText label={label} />\n )}\n\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={ARROW_WIDTH}\n height={ARROW_HEIGHT}\n fill={\"#333\"}\n />\n </div>\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nconst TooltipText: React.FC<{ label: string }> = ({ label }) => (\n <Text color={cssColor(\"--lhds-color-ui-50\")} size={\"small\"} variant={\"bold\"}>\n {label}\n </Text>\n);\n"],"names":["ActionPrompt","text","yesLabel","noLabel","onNo","onYes","loading","jsxs","Column","jsx","Text","Space","Row","FlatButton","PrimaryButton","Spinner","ARROW_WIDTH","ARROW_HEIGHT","GAP","ControlledPopover","children","props","useFloatingParentNodeId","FloatingTree","ControlledPopoverComponent","placement","hideArrow","renderTrigger","disablePadding","open","onRequestClose","restoreFocus","returnFocus","initialFocus","appendTo","zIndex","nodeId","useFloatingNodeId","arrowRef","useRef","onOpenChange","useCallback","refs","floatingStyles","context","useFloating","offset","flip","shift","arrow","autoUpdate","isMounted","transitionStyles","useTransitionStyles","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","Fragment","FloatingNode","FloatingPortal","FloatingFocusManager","cx","moduleStyles","FloatingArrow","Popover","PopoverComponent","variant","trigger","anchor","onOpened","onClosed","isOpen","setIsOpen","useState","onFocus","useFocus","hasTrigger","onClick","useClick","onHover","useHover","safePolygon","triggerProp","triggerToCheck","variantIcons","stenaInfoCircle","stenaExclamationCircle","stenaExclamationTriangle","Tooltip","visible","label","maxWidth","styles","hover","Icon","TooltipText","cssColor"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/tooltip",
3
- "version": "23.15.2",
3
+ "version": "23.15.3",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "mattias800",
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@floating-ui/react": "^0.27.3",
39
- "@stenajs-webui/core": "23.15.2",
40
- "@stenajs-webui/elements": "23.15.2",
41
- "@stenajs-webui/theme": "23.15.2",
39
+ "@stenajs-webui/core": "23.15.3",
40
+ "@stenajs-webui/elements": "23.15.3",
41
+ "@stenajs-webui/theme": "23.15.3",
42
42
  "classnames": "^2.5.1"
43
43
  },
44
44
  "peerDependencies": {
@@ -60,7 +60,7 @@
60
60
  "files": [
61
61
  "dist"
62
62
  ],
63
- "gitHead": "e987926782fab20a1828f6815c509255617f8f48",
63
+ "gitHead": "e785af885633700e1800b98a158e5d023551bf28",
64
64
  "publishConfig": {
65
65
  "access": "public"
66
66
  }