@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.
Files changed (133) hide show
  1. package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
  2. package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
  3. package/dist-cjs/packages/core/src/border-item/BorderItem.js +1 -0
  4. package/dist-cjs/packages/core/src/border-item/BorderItem.js.map +1 -1
  5. package/dist-cjs/packages/core/src/border-layout/BorderLayout.js +1 -0
  6. package/dist-cjs/packages/core/src/border-layout/BorderLayout.js.map +1 -1
  7. package/dist-cjs/packages/core/src/button/Button.js +1 -0
  8. package/dist-cjs/packages/core/src/button/Button.js.map +1 -1
  9. package/dist-cjs/packages/core/src/card/Card.css.js +1 -1
  10. package/dist-cjs/packages/core/src/card/Card.js +1 -0
  11. package/dist-cjs/packages/core/src/card/Card.js.map +1 -1
  12. package/dist-cjs/packages/core/src/flex-item/FlexItem.js +1 -0
  13. package/dist-cjs/packages/core/src/flex-item/FlexItem.js.map +1 -1
  14. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js +1 -0
  15. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js.map +1 -1
  16. package/dist-cjs/packages/core/src/grid-item/GridItem.js +1 -0
  17. package/dist-cjs/packages/core/src/grid-item/GridItem.js.map +1 -1
  18. package/dist-cjs/packages/core/src/grid-layout/GridLayout.js +1 -0
  19. package/dist-cjs/packages/core/src/grid-layout/GridLayout.js.map +1 -1
  20. package/dist-cjs/packages/core/src/index.js +12 -0
  21. package/dist-cjs/packages/core/src/index.js.map +1 -1
  22. package/dist-cjs/packages/core/src/link/Link.js +1 -0
  23. package/dist-cjs/packages/core/src/link/Link.js.map +1 -1
  24. package/dist-cjs/packages/core/src/panel/Panel.js +1 -0
  25. package/dist-cjs/packages/core/src/panel/Panel.js.map +1 -1
  26. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js +1 -0
  27. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js.map +1 -1
  28. package/dist-cjs/packages/core/src/spinner/Spinner.css.js +9 -0
  29. package/dist-cjs/packages/core/src/spinner/Spinner.css.js.map +1 -0
  30. package/dist-cjs/packages/core/src/spinner/Spinner.js +81 -0
  31. package/dist-cjs/packages/core/src/spinner/Spinner.js.map +1 -0
  32. package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +80 -0
  33. package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -0
  34. package/dist-cjs/packages/core/src/split-layout/SplitLayout.js +25 -0
  35. package/dist-cjs/packages/core/src/split-layout/SplitLayout.js.map +1 -0
  36. package/dist-cjs/packages/core/src/stack-layout/StackLayout.js +1 -0
  37. package/dist-cjs/packages/core/src/stack-layout/StackLayout.js.map +1 -1
  38. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js +1 -0
  39. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js.map +1 -1
  40. package/dist-cjs/packages/core/src/text/Display.js +1 -0
  41. package/dist-cjs/packages/core/src/text/Display.js.map +1 -1
  42. package/dist-cjs/packages/core/src/text/Text.css.js +1 -1
  43. package/dist-cjs/packages/core/src/text/Text.js +5 -2
  44. package/dist-cjs/packages/core/src/text/Text.js.map +1 -1
  45. package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js +9 -0
  46. package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js.map +1 -0
  47. package/dist-cjs/packages/core/src/tooltip/Tooltip.js +91 -0
  48. package/dist-cjs/packages/core/src/tooltip/Tooltip.js.map +1 -0
  49. package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js +94 -0
  50. package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -0
  51. package/dist-cjs/packages/core/src/tooltip/useTooltip.js +106 -0
  52. package/dist-cjs/packages/core/src/tooltip/useTooltip.js.map +1 -0
  53. package/dist-cjs/packages/core/src/utils/marginMiddleware.js.map +1 -1
  54. package/dist-cjs/packages/core/src/utils/useFloatingUI.js +38 -0
  55. package/dist-cjs/packages/core/src/utils/useFloatingUI.js.map +1 -0
  56. package/dist-cjs/packages/core/src/viewport/ViewportProvider.js +1 -0
  57. package/dist-cjs/packages/core/src/viewport/ViewportProvider.js.map +1 -1
  58. package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
  59. package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
  60. package/dist-es/packages/core/src/border-item/BorderItem.js +1 -0
  61. package/dist-es/packages/core/src/border-item/BorderItem.js.map +1 -1
  62. package/dist-es/packages/core/src/border-layout/BorderLayout.js +1 -0
  63. package/dist-es/packages/core/src/border-layout/BorderLayout.js.map +1 -1
  64. package/dist-es/packages/core/src/button/Button.js +1 -0
  65. package/dist-es/packages/core/src/button/Button.js.map +1 -1
  66. package/dist-es/packages/core/src/card/Card.css.js +1 -1
  67. package/dist-es/packages/core/src/card/Card.js +1 -0
  68. package/dist-es/packages/core/src/card/Card.js.map +1 -1
  69. package/dist-es/packages/core/src/flex-item/FlexItem.js +1 -0
  70. package/dist-es/packages/core/src/flex-item/FlexItem.js.map +1 -1
  71. package/dist-es/packages/core/src/flex-layout/FlexLayout.js +1 -0
  72. package/dist-es/packages/core/src/flex-layout/FlexLayout.js.map +1 -1
  73. package/dist-es/packages/core/src/grid-item/GridItem.js +1 -0
  74. package/dist-es/packages/core/src/grid-item/GridItem.js.map +1 -1
  75. package/dist-es/packages/core/src/grid-layout/GridLayout.js +1 -0
  76. package/dist-es/packages/core/src/grid-layout/GridLayout.js.map +1 -1
  77. package/dist-es/packages/core/src/index.js +5 -0
  78. package/dist-es/packages/core/src/index.js.map +1 -1
  79. package/dist-es/packages/core/src/link/Link.js +1 -0
  80. package/dist-es/packages/core/src/link/Link.js.map +1 -1
  81. package/dist-es/packages/core/src/panel/Panel.js +1 -0
  82. package/dist-es/packages/core/src/panel/Panel.js.map +1 -1
  83. package/dist-es/packages/core/src/salt-provider/SaltProvider.js +1 -0
  84. package/dist-es/packages/core/src/salt-provider/SaltProvider.js.map +1 -1
  85. package/dist-es/packages/core/src/spinner/Spinner.css.js +7 -0
  86. package/dist-es/packages/core/src/spinner/Spinner.css.js.map +1 -0
  87. package/dist-es/packages/core/src/spinner/Spinner.js +76 -0
  88. package/dist-es/packages/core/src/spinner/Spinner.js.map +1 -0
  89. package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +76 -0
  90. package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -0
  91. package/dist-es/packages/core/src/split-layout/SplitLayout.js +21 -0
  92. package/dist-es/packages/core/src/split-layout/SplitLayout.js.map +1 -0
  93. package/dist-es/packages/core/src/stack-layout/StackLayout.js +1 -0
  94. package/dist-es/packages/core/src/stack-layout/StackLayout.js.map +1 -1
  95. package/dist-es/packages/core/src/status-indicator/StatusIndicator.js +1 -0
  96. package/dist-es/packages/core/src/status-indicator/StatusIndicator.js.map +1 -1
  97. package/dist-es/packages/core/src/text/Display.js +1 -0
  98. package/dist-es/packages/core/src/text/Display.js.map +1 -1
  99. package/dist-es/packages/core/src/text/Text.css.js +1 -1
  100. package/dist-es/packages/core/src/text/Text.js +5 -2
  101. package/dist-es/packages/core/src/text/Text.js.map +1 -1
  102. package/dist-es/packages/core/src/tooltip/Tooltip.css.js +7 -0
  103. package/dist-es/packages/core/src/tooltip/Tooltip.css.js.map +1 -0
  104. package/dist-es/packages/core/src/tooltip/Tooltip.js +87 -0
  105. package/dist-es/packages/core/src/tooltip/Tooltip.js.map +1 -0
  106. package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js +90 -0
  107. package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -0
  108. package/dist-es/packages/core/src/tooltip/useTooltip.js +102 -0
  109. package/dist-es/packages/core/src/tooltip/useTooltip.js.map +1 -0
  110. package/dist-es/packages/core/src/utils/marginMiddleware.js.map +1 -1
  111. package/dist-es/packages/core/src/utils/useFloatingUI.js +33 -0
  112. package/dist-es/packages/core/src/utils/useFloatingUI.js.map +1 -0
  113. package/dist-es/packages/core/src/viewport/ViewportProvider.js +1 -0
  114. package/dist-es/packages/core/src/viewport/ViewportProvider.js.map +1 -1
  115. package/dist-types/border-item/BorderItem.d.ts +1 -1
  116. package/dist-types/index.d.ts +3 -0
  117. package/dist-types/link/Link.d.ts +2 -2
  118. package/dist-types/spinner/Spinner.d.ts +45 -0
  119. package/dist-types/spinner/index.d.ts +1 -0
  120. package/dist-types/spinner/svgSpinners/SpinnerSVG.d.ts +5 -0
  121. package/dist-types/split-layout/SplitLayout.d.ts +28 -0
  122. package/dist-types/split-layout/index.d.ts +1 -0
  123. package/dist-types/text/Display.d.ts +3 -3
  124. package/dist-types/text/Headings.d.ts +4 -4
  125. package/dist-types/text/Label.d.ts +1 -1
  126. package/dist-types/text/Text.d.ts +4 -0
  127. package/dist-types/tooltip/Tooltip.d.ts +47 -0
  128. package/dist-types/tooltip/index.d.ts +2 -0
  129. package/dist-types/tooltip/useAriaAnnounce.d.ts +9 -0
  130. package/dist-types/tooltip/useTooltip.d.ts +36 -0
  131. package/dist-types/utils/index.d.ts +1 -0
  132. package/dist-types/utils/useFloatingUI.d.ts +34 -0
  133. 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-dom-interactions\";\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;;;;"}
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":";;;;;;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;;;;"}
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 border layout
17
+ * Position in the Border Layout
18
18
  */
19
19
  position: BorderPosition;
20
20
  /**
@@ -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<Pick<LinkProps, "slot" | "style" | "title" | "download" | "href" | "hrefLang" | "media" | "ping" | "rel" | "target" | "type" | "referrerPolicy" | "className" | "color" | "id" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "variant" | "maxRows" | "styleAs" | "IconComponent"> & import("react").RefAttributes<HTMLAnchorElement>>;
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,5 @@
1
+ import { SVGAttributes } from "react";
2
+ export declare const SpinnerSVG: (props: {
3
+ id: string;
4
+ rest?: Omit<SVGAttributes<SVGSVGElement>, "id">;
5
+ }) => JSX.Element;
@@ -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<Pick<Omit<TextProps<"span">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLSpanElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLSpanElement>>;
4
- export declare const Display2: import("react").ForwardRefExoticComponent<Pick<Omit<TextProps<"span">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLSpanElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLSpanElement>>;
5
- export declare const Display3: import("react").ForwardRefExoticComponent<Pick<Omit<TextProps<"span">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLSpanElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLSpanElement>>;
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<Pick<Omit<TextProps<"h1">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLHeadingElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLHeadingElement>>;
4
- export declare const H2: import("react").ForwardRefExoticComponent<Pick<Omit<TextProps<"h2">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLHeadingElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLHeadingElement>>;
5
- export declare const H3: import("react").ForwardRefExoticComponent<Pick<Omit<TextProps<"h3">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLHeadingElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLHeadingElement>>;
6
- export declare const H4: import("react").ForwardRefExoticComponent<Pick<Omit<TextProps<"h4">, "as">, "key" | keyof import("react").HTMLAttributes<HTMLHeadingElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLHeadingElement>>;
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<Pick<Omit<TextProps<"label">, "as">, "key" | keyof import("react").LabelHTMLAttributes<HTMLLabelElement> | "variant" | "maxRows" | "styleAs"> & import("react").RefAttributes<HTMLLabelElement>>;
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,2 @@
1
+ export * from "./Tooltip";
2
+ export * from "./useTooltip";
@@ -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.1.0",
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
  },