@salt-ds/core 1.0.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 (161) 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 +3 -6
  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 +3 -6
  6. package/dist-cjs/packages/core/src/border-layout/BorderLayout.js.map +1 -1
  7. package/dist-cjs/packages/core/src/button/Button.js +3 -6
  8. package/dist-cjs/packages/core/src/button/Button.js.map +1 -1
  9. package/dist-cjs/packages/core/src/card/Card.css.js +9 -0
  10. package/dist-cjs/packages/core/src/card/Card.css.js.map +1 -0
  11. package/dist-cjs/packages/core/src/card/Card.js +37 -0
  12. package/dist-cjs/packages/core/src/card/Card.js.map +1 -0
  13. package/dist-cjs/packages/core/src/flex-item/FlexItem.js +3 -6
  14. package/dist-cjs/packages/core/src/flex-item/FlexItem.js.map +1 -1
  15. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.css.js +1 -1
  16. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js +4 -10
  17. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js.map +1 -1
  18. package/dist-cjs/packages/core/src/flow-layout/FlowLayout.js +3 -2
  19. package/dist-cjs/packages/core/src/flow-layout/FlowLayout.js.map +1 -1
  20. package/dist-cjs/packages/core/src/grid-item/GridItem.js +3 -6
  21. package/dist-cjs/packages/core/src/grid-item/GridItem.js.map +1 -1
  22. package/dist-cjs/packages/core/src/grid-layout/GridLayout.js +3 -6
  23. package/dist-cjs/packages/core/src/grid-layout/GridLayout.js.map +1 -1
  24. package/dist-cjs/packages/core/src/index.js +16 -0
  25. package/dist-cjs/packages/core/src/index.js.map +1 -1
  26. package/dist-cjs/packages/core/src/link/Link.css.js +1 -1
  27. package/dist-cjs/packages/core/src/link/Link.js +3 -6
  28. package/dist-cjs/packages/core/src/link/Link.js.map +1 -1
  29. package/dist-cjs/packages/core/src/panel/Panel.css.js +9 -0
  30. package/dist-cjs/packages/core/src/panel/Panel.css.js.map +1 -0
  31. package/dist-cjs/packages/core/src/panel/Panel.js +26 -0
  32. package/dist-cjs/packages/core/src/panel/Panel.js.map +1 -0
  33. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js +4 -4
  34. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js.map +1 -1
  35. package/dist-cjs/packages/core/src/spinner/Spinner.css.js +9 -0
  36. package/dist-cjs/packages/core/src/spinner/Spinner.css.js.map +1 -0
  37. package/dist-cjs/packages/core/src/spinner/Spinner.js +81 -0
  38. package/dist-cjs/packages/core/src/spinner/Spinner.js.map +1 -0
  39. package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +80 -0
  40. package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -0
  41. package/dist-cjs/packages/core/src/split-layout/SplitLayout.js +25 -0
  42. package/dist-cjs/packages/core/src/split-layout/SplitLayout.js.map +1 -0
  43. package/dist-cjs/packages/core/src/stack-layout/StackLayout.css.js +9 -0
  44. package/dist-cjs/packages/core/src/stack-layout/StackLayout.css.js.map +1 -0
  45. package/dist-cjs/packages/core/src/stack-layout/StackLayout.js +38 -3
  46. package/dist-cjs/packages/core/src/stack-layout/StackLayout.js.map +1 -1
  47. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js +3 -6
  48. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js.map +1 -1
  49. package/dist-cjs/packages/core/src/text/Display.js +5 -8
  50. package/dist-cjs/packages/core/src/text/Display.js.map +1 -1
  51. package/dist-cjs/packages/core/src/text/Text.css.js +1 -1
  52. package/dist-cjs/packages/core/src/text/Text.js +7 -8
  53. package/dist-cjs/packages/core/src/text/Text.js.map +1 -1
  54. package/dist-cjs/packages/core/src/theme/Theme.js.map +1 -1
  55. package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js +9 -0
  56. package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js.map +1 -0
  57. package/dist-cjs/packages/core/src/tooltip/Tooltip.js +91 -0
  58. package/dist-cjs/packages/core/src/tooltip/Tooltip.js.map +1 -0
  59. package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js +94 -0
  60. package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -0
  61. package/dist-cjs/packages/core/src/tooltip/useTooltip.js +106 -0
  62. package/dist-cjs/packages/core/src/tooltip/useTooltip.js.map +1 -0
  63. package/dist-cjs/packages/core/src/utils/marginMiddleware.js.map +1 -1
  64. package/dist-cjs/packages/core/src/utils/useFloatingUI.js +38 -0
  65. package/dist-cjs/packages/core/src/utils/useFloatingUI.js.map +1 -0
  66. package/dist-cjs/packages/core/src/viewport/ViewportProvider.js +5 -1
  67. package/dist-cjs/packages/core/src/viewport/ViewportProvider.js.map +1 -1
  68. package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
  69. package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
  70. package/dist-es/packages/core/src/border-item/BorderItem.js +3 -2
  71. package/dist-es/packages/core/src/border-item/BorderItem.js.map +1 -1
  72. package/dist-es/packages/core/src/border-layout/BorderLayout.js +3 -2
  73. package/dist-es/packages/core/src/border-layout/BorderLayout.js.map +1 -1
  74. package/dist-es/packages/core/src/button/Button.js +3 -2
  75. package/dist-es/packages/core/src/button/Button.js.map +1 -1
  76. package/dist-es/packages/core/src/card/Card.css.js +7 -0
  77. package/dist-es/packages/core/src/card/Card.css.js.map +1 -0
  78. package/dist-es/packages/core/src/card/Card.js +33 -0
  79. package/dist-es/packages/core/src/card/Card.js.map +1 -0
  80. package/dist-es/packages/core/src/flex-item/FlexItem.js +3 -2
  81. package/dist-es/packages/core/src/flex-item/FlexItem.js.map +1 -1
  82. package/dist-es/packages/core/src/flex-layout/FlexLayout.css.js +1 -1
  83. package/dist-es/packages/core/src/flex-layout/FlexLayout.js +5 -7
  84. package/dist-es/packages/core/src/flex-layout/FlexLayout.js.map +1 -1
  85. package/dist-es/packages/core/src/flow-layout/FlowLayout.js +3 -2
  86. package/dist-es/packages/core/src/flow-layout/FlowLayout.js.map +1 -1
  87. package/dist-es/packages/core/src/grid-item/GridItem.js +3 -2
  88. package/dist-es/packages/core/src/grid-item/GridItem.js.map +1 -1
  89. package/dist-es/packages/core/src/grid-layout/GridLayout.js +3 -2
  90. package/dist-es/packages/core/src/grid-layout/GridLayout.js.map +1 -1
  91. package/dist-es/packages/core/src/index.js +7 -0
  92. package/dist-es/packages/core/src/index.js.map +1 -1
  93. package/dist-es/packages/core/src/link/Link.css.js +1 -1
  94. package/dist-es/packages/core/src/link/Link.js +3 -2
  95. package/dist-es/packages/core/src/link/Link.js.map +1 -1
  96. package/dist-es/packages/core/src/panel/Panel.css.js +7 -0
  97. package/dist-es/packages/core/src/panel/Panel.css.js.map +1 -0
  98. package/dist-es/packages/core/src/panel/Panel.js +22 -0
  99. package/dist-es/packages/core/src/panel/Panel.js.map +1 -0
  100. package/dist-es/packages/core/src/salt-provider/SaltProvider.js +4 -3
  101. package/dist-es/packages/core/src/salt-provider/SaltProvider.js.map +1 -1
  102. package/dist-es/packages/core/src/spinner/Spinner.css.js +7 -0
  103. package/dist-es/packages/core/src/spinner/Spinner.css.js.map +1 -0
  104. package/dist-es/packages/core/src/spinner/Spinner.js +76 -0
  105. package/dist-es/packages/core/src/spinner/Spinner.js.map +1 -0
  106. package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +76 -0
  107. package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -0
  108. package/dist-es/packages/core/src/split-layout/SplitLayout.js +21 -0
  109. package/dist-es/packages/core/src/split-layout/SplitLayout.js.map +1 -0
  110. package/dist-es/packages/core/src/stack-layout/StackLayout.css.js +7 -0
  111. package/dist-es/packages/core/src/stack-layout/StackLayout.css.js.map +1 -0
  112. package/dist-es/packages/core/src/stack-layout/StackLayout.js +38 -3
  113. package/dist-es/packages/core/src/stack-layout/StackLayout.js.map +1 -1
  114. package/dist-es/packages/core/src/status-indicator/StatusIndicator.js +3 -2
  115. package/dist-es/packages/core/src/status-indicator/StatusIndicator.js.map +1 -1
  116. package/dist-es/packages/core/src/text/Display.js +5 -4
  117. package/dist-es/packages/core/src/text/Display.js.map +1 -1
  118. package/dist-es/packages/core/src/text/Text.css.js +1 -1
  119. package/dist-es/packages/core/src/text/Text.js +7 -4
  120. package/dist-es/packages/core/src/text/Text.js.map +1 -1
  121. package/dist-es/packages/core/src/theme/Theme.js.map +1 -1
  122. package/dist-es/packages/core/src/tooltip/Tooltip.css.js +7 -0
  123. package/dist-es/packages/core/src/tooltip/Tooltip.css.js.map +1 -0
  124. package/dist-es/packages/core/src/tooltip/Tooltip.js +87 -0
  125. package/dist-es/packages/core/src/tooltip/Tooltip.js.map +1 -0
  126. package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js +90 -0
  127. package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -0
  128. package/dist-es/packages/core/src/tooltip/useTooltip.js +102 -0
  129. package/dist-es/packages/core/src/tooltip/useTooltip.js.map +1 -0
  130. package/dist-es/packages/core/src/utils/marginMiddleware.js.map +1 -1
  131. package/dist-es/packages/core/src/utils/useFloatingUI.js +33 -0
  132. package/dist-es/packages/core/src/utils/useFloatingUI.js.map +1 -0
  133. package/dist-es/packages/core/src/viewport/ViewportProvider.js +6 -2
  134. package/dist-es/packages/core/src/viewport/ViewportProvider.js.map +1 -1
  135. package/dist-types/border-item/BorderItem.d.ts +1 -1
  136. package/dist-types/card/Card.d.ts +18 -0
  137. package/dist-types/card/index.d.ts +1 -0
  138. package/dist-types/flex-layout/FlexLayout.d.ts +2 -0
  139. package/dist-types/flow-layout/FlowLayout.d.ts +7 -4
  140. package/dist-types/index.d.ts +5 -0
  141. package/dist-types/link/Link.d.ts +2 -2
  142. package/dist-types/panel/Panel.d.ts +20 -0
  143. package/dist-types/panel/index.d.ts +1 -0
  144. package/dist-types/spinner/Spinner.d.ts +45 -0
  145. package/dist-types/spinner/index.d.ts +1 -0
  146. package/dist-types/spinner/svgSpinners/SpinnerSVG.d.ts +5 -0
  147. package/dist-types/split-layout/SplitLayout.d.ts +28 -0
  148. package/dist-types/split-layout/index.d.ts +1 -0
  149. package/dist-types/stack-layout/StackLayout.d.ts +14 -6
  150. package/dist-types/text/Display.d.ts +3 -3
  151. package/dist-types/text/Headings.d.ts +4 -4
  152. package/dist-types/text/Label.d.ts +1 -1
  153. package/dist-types/text/Text.d.ts +4 -0
  154. package/dist-types/theme/Theme.d.ts +1 -1
  155. package/dist-types/tooltip/Tooltip.d.ts +47 -0
  156. package/dist-types/tooltip/index.d.ts +2 -0
  157. package/dist-types/tooltip/useAriaAnnounce.d.ts +9 -0
  158. package/dist-types/tooltip/useTooltip.d.ts +36 -0
  159. package/dist-types/utils/index.d.ts +1 -0
  160. package/dist-types/utils/useFloatingUI.d.ts +34 -0
  161. package/package.json +4 -3
@@ -0,0 +1,87 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { clsx } from 'clsx';
3
+ import { forwardRef, isValidElement, cloneElement } from 'react';
4
+ import { StatusIndicator } from '../status-indicator/StatusIndicator.js';
5
+ import { makePrefixer } from '../utils/makePrefixer.js';
6
+ import '../utils/useFloatingUI.js';
7
+ import { useForkRef } from '../utils/useForkRef.js';
8
+ import '../utils/useId.js';
9
+ import '../salt-provider/SaltProvider.js';
10
+ import '../viewport/ViewportProvider.js';
11
+ import { useTooltip } from './useTooltip.js';
12
+ import './Tooltip.css.js';
13
+
14
+ const withBaseName = makePrefixer("saltTooltip");
15
+ const Tooltip = forwardRef(
16
+ function Tooltip2(props, ref) {
17
+ const {
18
+ children,
19
+ className,
20
+ disabled,
21
+ hideArrow = false,
22
+ hideIcon = false,
23
+ open: openProp,
24
+ content,
25
+ status = "info",
26
+ placement = "right",
27
+ enterDelay = 300,
28
+ leaveDelay = 0,
29
+ ...rest
30
+ } = props;
31
+ const hookProps = {
32
+ open: openProp,
33
+ placement,
34
+ enterDelay,
35
+ leaveDelay,
36
+ ...rest
37
+ };
38
+ const {
39
+ arrowProps,
40
+ open,
41
+ floating,
42
+ reference,
43
+ getTriggerProps,
44
+ getTooltipProps
45
+ } = useTooltip(hookProps);
46
+ const triggerRef = useForkRef(
47
+ isValidElement(children) ? children.ref : null,
48
+ reference
49
+ );
50
+ return /* @__PURE__ */ jsxs(Fragment, {
51
+ children: [
52
+ open && !disabled && /* @__PURE__ */ jsxs("div", {
53
+ className: clsx(withBaseName(), withBaseName(status), className),
54
+ ref: floating,
55
+ ...getTooltipProps(),
56
+ children: [
57
+ /* @__PURE__ */ jsxs("div", {
58
+ className: withBaseName("container"),
59
+ children: [
60
+ !hideIcon && /* @__PURE__ */ jsx(StatusIndicator, {
61
+ status,
62
+ size: 1,
63
+ className: withBaseName("icon")
64
+ }),
65
+ /* @__PURE__ */ jsx("span", {
66
+ className: withBaseName("content"),
67
+ children: content
68
+ })
69
+ ]
70
+ }),
71
+ !hideArrow && /* @__PURE__ */ jsx("div", {
72
+ className: withBaseName("arrow"),
73
+ ...arrowProps
74
+ })
75
+ ]
76
+ }),
77
+ isValidElement(children) && cloneElement(children, {
78
+ ...getTriggerProps(),
79
+ ref: triggerRef
80
+ })
81
+ ]
82
+ });
83
+ }
84
+ );
85
+
86
+ export { Tooltip };
87
+ //# sourceMappingURL=Tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sources":["../src/tooltip/Tooltip.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n cloneElement,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n} from \"react\";\nimport { StatusIndicator, ValidationStatus } from \"../status-indicator\";\nimport { UseFloatingUIProps, makePrefixer, useForkRef } from \"../utils\";\nimport { useTooltip, UseTooltipProps } from \"./useTooltip\";\nimport \"./Tooltip.css\";\n\nconst withBaseName = makePrefixer(\"saltTooltip\");\n\nexport interface TooltipProps\n extends HTMLAttributes<HTMLDivElement>,\n Pick<UseFloatingUIProps, \"open\" | \"onOpenChange\" | \"placement\"> {\n /**\n * The children will be the tooltip's trigger.\n */\n children: ReactNode;\n /**\n * Whether to hide the tooltip arrow. Defaults to `false`.\n */\n hideArrow?: boolean;\n /**\n * Whether to hide the state icon within the tooltip. Defaults to `false`.\n */\n hideIcon?: boolean;\n /**\n * Content displayed inside the tooltip. Can be a string or a React component.\n */\n content: ReactNode;\n /**\n * A string to determine the current status of the tooltip. Defaults to 'info'.\n */\n status?: ValidationStatus;\n /**\n * Delay in milliseconds before the tooltip is shown\n */\n enterDelay?: number;\n /**\n * Delay in milliseconds before the tooltip is hidden\n */\n leaveDelay?: number;\n /**\n * Option to not display the tooltip. Can be used in conditional situations like text truncation.\n */\n disabled?: boolean;\n /**\n * Option to remove the hover listener\n */\n disableHoverListener?: boolean;\n /**\n * Option to remove the focus listener\n */\n disableFocusListener?: boolean;\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(props, ref) {\n const {\n children,\n className,\n disabled,\n hideArrow = false,\n hideIcon = false,\n open: openProp,\n content,\n status = \"info\",\n placement = \"right\",\n enterDelay = 300,\n leaveDelay = 0,\n ...rest\n } = props;\n\n const hookProps: UseTooltipProps = {\n open: openProp,\n placement,\n enterDelay,\n leaveDelay,\n ...rest,\n };\n\n const {\n arrowProps,\n open,\n floating,\n reference,\n getTriggerProps,\n getTooltipProps,\n } = useTooltip(hookProps);\n\n const triggerRef = useForkRef(\n // @ts-ignore\n isValidElement(children) ? children.ref : null,\n reference\n );\n\n return (\n <>\n {open && !disabled && (\n <div\n className={clsx(withBaseName(), withBaseName(status), className)}\n ref={floating}\n {...getTooltipProps()}\n >\n <div className={withBaseName(\"container\")}>\n {!hideIcon && (\n <StatusIndicator\n status={status}\n size={1}\n className={withBaseName(\"icon\")}\n />\n )}\n <span className={withBaseName(\"content\")}>{content}</span>\n </div>\n {!hideArrow && (\n <div className={withBaseName(\"arrow\")} {...arrowProps} />\n )}\n </div>\n )}\n\n {isValidElement(children) &&\n cloneElement(children, {\n ...getTriggerProps(),\n ref: triggerRef,\n })}\n </>\n );\n }\n);\n"],"names":["Tooltip"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,YAAA,GAAe,aAAa,aAAa,CAAA,CAAA;AA+CxC,MAAM,OAAU,GAAA,UAAA;AAAA,EACrB,SAASA,QAAQ,CAAA,KAAA,EAAO,GAAK,EAAA;AAC3B,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAY,GAAA,KAAA;AAAA,MACZ,QAAW,GAAA,KAAA;AAAA,MACX,IAAM,EAAA,QAAA;AAAA,MACN,OAAA;AAAA,MACA,MAAS,GAAA,MAAA;AAAA,MACT,SAAY,GAAA,OAAA;AAAA,MACZ,UAAa,GAAA,GAAA;AAAA,MACb,UAAa,GAAA,CAAA;AAAA,MACV,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,SAA6B,GAAA;AAAA,MACjC,IAAM,EAAA,QAAA;AAAA,MACN,SAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAG,IAAA;AAAA,KACL,CAAA;AAEA,IAAM,MAAA;AAAA,MACJ,UAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,KACF,GAAI,WAAW,SAAS,CAAA,CAAA;AAExB,IAAA,MAAM,UAAa,GAAA,UAAA;AAAA,MAEjB,cAAe,CAAA,QAAQ,CAAI,GAAA,QAAA,CAAS,GAAM,GAAA,IAAA;AAAA,MAC1C,SAAA;AAAA,KACF,CAAA;AAEA,IACE,uBAAA,IAAA,CAAA,QAAA,EAAA;AAAA,MACG,QAAA,EAAA;AAAA,QAAQ,IAAA,IAAA,CAAC,4BACP,IAAA,CAAA,KAAA,EAAA;AAAA,UACC,WAAW,IAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,MAAM,GAAG,SAAS,CAAA;AAAA,UAC/D,GAAK,EAAA,QAAA;AAAA,UACJ,GAAG,eAAgB,EAAA;AAAA,UAEpB,QAAA,EAAA;AAAA,4BAAC,IAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,cACrC,QAAA,EAAA;AAAA,gBAAA,CAAC,4BACC,GAAA,CAAA,eAAA,EAAA;AAAA,kBACC,MAAA;AAAA,kBACA,IAAM,EAAA,CAAA;AAAA,kBACN,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,iBAChC,CAAA;AAAA,gCAED,GAAA,CAAA,MAAA,EAAA;AAAA,kBAAK,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,kBAAI,QAAA,EAAA,OAAA;AAAA,iBAAQ,CAAA;AAAA,eAAA;AAAA,aACrD,CAAA;AAAA,YACC,CAAC,6BACC,GAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAAI,GAAG,UAAA;AAAA,aAAY,CAAA;AAAA,WAAA;AAAA,SAE3D,CAAA;AAAA,QAGD,cAAe,CAAA,QAAQ,CACtB,IAAA,YAAA,CAAa,QAAU,EAAA;AAAA,UACrB,GAAG,eAAgB,EAAA;AAAA,UACnB,GAAK,EAAA,UAAA;AAAA,SACN,CAAA;AAAA,OAAA;AAAA,KACL,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,90 @@
1
+ import { useRef, useEffect } from 'react';
2
+ import '../aria-announcer/AriaAnnouncerContext.js';
3
+ import 'react/jsx-runtime';
4
+ import { useAriaAnnouncer } from '../aria-announcer/useAriaAnnouncer.js';
5
+ import '../utils/useFloatingUI.js';
6
+ import '../utils/useId.js';
7
+ import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect.js';
8
+ import '../salt-provider/SaltProvider.js';
9
+ import '../viewport/ViewportProvider.js';
10
+
11
+ function getDocument(floating) {
12
+ var _a;
13
+ return (_a = floating == null ? void 0 : floating.ownerDocument) != null ? _a : document;
14
+ }
15
+ function getWindow(value) {
16
+ var _a;
17
+ return (_a = getDocument(value).defaultView) != null ? _a : window;
18
+ }
19
+ function isElement(value) {
20
+ return value ? value instanceof getWindow(value).Element : false;
21
+ }
22
+ function getDelay(value, prop, pointerType) {
23
+ if (pointerType && pointerType !== "mouse") {
24
+ return 0;
25
+ }
26
+ if (typeof value === "number") {
27
+ return value;
28
+ }
29
+ return value == null ? void 0 : value[prop];
30
+ }
31
+ const useAriaAnnounce = (context, { delay = 0 }) => {
32
+ const { open, dataRef, refs } = context;
33
+ const pointerTypeRef = useRef();
34
+ const timeoutRef = useRef();
35
+ const blockMouseMoveRef = useRef(true);
36
+ const { announce } = useAriaAnnouncer();
37
+ useIsomorphicLayoutEffect(() => {
38
+ if (!open) {
39
+ pointerTypeRef.current = void 0;
40
+ }
41
+ });
42
+ useEffect(() => {
43
+ const reference = refs.reference.current;
44
+ function announceFloating() {
45
+ var _a;
46
+ const tooltipContent = (_a = refs.floating.current) == null ? void 0 : _a.innerText;
47
+ if (tooltipContent) {
48
+ announce(tooltipContent);
49
+ }
50
+ }
51
+ function onMouseEnter(event) {
52
+ clearTimeout(timeoutRef.current);
53
+ if (open) {
54
+ return;
55
+ }
56
+ blockMouseMoveRef.current = false;
57
+ dataRef.current.openEvent = event;
58
+ if (delay) {
59
+ timeoutRef.current = window.setTimeout(() => {
60
+ announceFloating();
61
+ }, getDelay(delay, "open", pointerTypeRef.current));
62
+ } else {
63
+ announceFloating();
64
+ }
65
+ }
66
+ if (isElement(reference)) {
67
+ reference.addEventListener("mouseenter", onMouseEnter);
68
+ return () => {
69
+ reference.removeEventListener("mouseenter", onMouseEnter);
70
+ };
71
+ }
72
+ }, [dataRef, delay, open, refs.reference, refs.floating, announce]);
73
+ function setPointerRef(event) {
74
+ pointerTypeRef.current = event.pointerType;
75
+ }
76
+ return {
77
+ reference: {
78
+ onPointerDown: setPointerRef,
79
+ onPointerEnter: setPointerRef
80
+ },
81
+ floating: {
82
+ onMouseEnter() {
83
+ clearTimeout(timeoutRef.current);
84
+ }
85
+ }
86
+ };
87
+ };
88
+
89
+ export { useAriaAnnounce };
90
+ //# sourceMappingURL=useAriaAnnounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAriaAnnounce.js","sources":["../src/tooltip/useAriaAnnounce.ts"],"sourcesContent":["import type { ElementProps, FloatingContext } from \"@floating-ui/react\";\nimport { PointerEvent, useEffect, useRef } from \"react\";\nimport { useAriaAnnouncer } from \"../aria-announcer\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nfunction getDocument(floating: HTMLElement | null) {\n return floating?.ownerDocument ?? document;\n}\n\n// TODO: Check whether can be anything more restrictive than `any`\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getWindow(value: any) {\n return getDocument(value).defaultView ?? window;\n}\n\nfunction isElement(value: unknown): value is HTMLElement {\n return value ? value instanceof getWindow(value).Element : false;\n}\n\nfunction getDelay(\n value: Props[\"delay\"],\n prop: \"open\" | \"close\",\n pointerType?: PointerEvent[\"pointerType\"]\n) {\n if (pointerType && pointerType !== \"mouse\") {\n return 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n return value?.[prop];\n}\n\ntype Props = {\n delay?: number | Partial<{ open: number; close: number }>;\n};\n\nexport const useAriaAnnounce = (\n context: FloatingContext,\n { delay = 0 }: Props\n): ElementProps => {\n const { open, dataRef, refs } = context;\n\n const pointerTypeRef = useRef<PointerEvent[\"pointerType\"]>();\n const timeoutRef = useRef<number>();\n const blockMouseMoveRef = useRef(true);\n const { announce } = useAriaAnnouncer();\n\n useIsomorphicLayoutEffect(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n }\n });\n\n useEffect(() => {\n const reference = refs.reference.current;\n function announceFloating() {\n const tooltipContent = refs.floating.current?.innerText;\n\n if (tooltipContent) {\n announce(tooltipContent);\n }\n }\n\n function onMouseEnter(event: MouseEvent) {\n clearTimeout(timeoutRef.current);\n\n if (open) {\n return;\n }\n\n blockMouseMoveRef.current = false;\n dataRef.current.openEvent = event;\n\n if (delay) {\n timeoutRef.current = window.setTimeout(() => {\n announceFloating();\n }, getDelay(delay, \"open\", pointerTypeRef.current));\n } else {\n announceFloating();\n }\n }\n\n if (isElement(reference)) {\n reference.addEventListener(\"mouseenter\", onMouseEnter);\n return () => {\n reference.removeEventListener(\"mouseenter\", onMouseEnter);\n };\n }\n }, [dataRef, delay, open, refs.reference, refs.floating, announce]);\n\n function setPointerRef(event: PointerEvent) {\n pointerTypeRef.current = event.pointerType;\n }\n\n return {\n reference: {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n },\n floating: {\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n },\n };\n};\n"],"names":[],"mappings":"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"}
@@ -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":";;;;;;;;;AAyCO,SAAS,WAAW,KAAyB,EAAA;AAClD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAM,EAAA,QAAA;AAAA,IACN,YAAA;AAAA,IACA,SAAW,EAAA,aAAA;AAAA,IACX,oBAAA;AAAA,IACA,oBAAA;AAAA,GACF,GAAI,SAAS,EAAC,CAAA;AAEd,EAAM,MAAA,QAAA,GAAW,OAA8B,IAAI,CAAA,CAAA;AAEnD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,aAAc,CAAA;AAAA,IACpC,UAAY,EAAA,QAAA;AAAA,IACZ,OAAS,EAAA,KAAA;AAAA,IACT,IAAM,EAAA,SAAA;AAAA,IACN,KAAO,EAAA,MAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAM,MAAA,gBAAA,GAAmB,CAACA,KAAkB,KAAA;AAC1C,IAAA,OAAA,CAAQA,KAAI,CAAA,CAAA;AACZ,IAAeA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAAA,GACjB,CAAA;AAEA,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA,EAAgB,EAAE,KAAA,EAAO,EAAE,CAAA,EAAG,QAAQ,CAAG,EAAA,MAAA,EAAW,GAAA,EAAG,EAAA;AAAA,IACvD,SAAA;AAAA,IACA,OAAA;AAAA,MACE,aAAc,CAAA;AAAA,IAChB,IAAA;AAAA,IACA,YAAc,EAAA,gBAAA;AAAA,IACd,SAAW,EAAA,aAAA;AAAA,IACX,UAAY,EAAA;AAAA,MACV,OAAO,CAAC,CAAA;AAAA,MACR,IAAK,EAAA;AAAA,MACL,KAAM,CAAA,EAAE,OAAS,EAAA,UAAA,IAAc,CAAA;AAAA,MAC/B,KAAM,CAAA,EAAE,OAAS,EAAA,QAAA,EAAU,CAAA;AAAA,KAC7B;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAiB,EAAA,GAAI,eAAgB,CAAA;AAAA,IAC9D,SAAS,OAAS,EAAA;AAAA,MAChB,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,KAAO,EAAA,UAAA;AAAA,OACT;AAAA,MACA,SAAS,CAAC,oBAAA;AAAA,MACV,aAAa,WAAY,EAAA;AAAA,KAC1B,CAAA;AAAA,IACD,SAAS,OAAS,EAAA,EAAE,OAAS,EAAA,CAAC,sBAAsB,CAAA;AAAA,IACpD,OAAQ,CAAA,OAAA,EAAS,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,IACpC,WAAW,OAAO,CAAA;AAAA,IAClB,gBAAgB,OAAS,EAAA;AAAA,MACvB,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,KAAO,EAAA,UAAA;AAAA,OACT;AAAA,KACD,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,GAAK,EAAA,QAAA;AAAA,IACL,KAAO,EAAA;AAAA,MACL,IAAA,EAAM,MAAS,GAAA,CAAA,EAAG,MAAa,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,MAC/B,GAAA,EAAK,MAAS,GAAA,CAAA,EAAG,MAAa,CAAA,EAAA,CAAA,GAAA,EAAA;AAAA,KAChC;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAiC;AACvD,IAAA,OAAO,gBAAiB,CAAA;AAAA,MAEtB,gBAAkB,EAAA,SAAA;AAAA,MAClB,GAAK,EAAA,QAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACL,KAAK,CAAK,IAAA,IAAA,GAAA,CAAA,GAAA,EAAA;AAAA,QACV,MAAM,CAAK,IAAA,IAAA,GAAA,CAAA,GAAA,EAAA;AAAA,QACX,QAAU,EAAA,QAAA;AAAA,OACZ;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,MACtB,iBAAkB,CAAA;AAAA,IAChB,GAAK,EAAA,SAAA;AAAA,GACN,CAAA,CAAA;AAEH,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -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,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { createContext, useContext, useState, useLayoutEffect } from 'react';
2
+ import { createContext, useContext, useState } from 'react';
3
+ import '../utils/useFloatingUI.js';
4
+ import '../utils/useId.js';
5
+ import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect.js';
6
+ import '../salt-provider/SaltProvider.js';
3
7
 
4
8
  const ViewportContext = createContext(null);
5
9
  const ViewportProvider = ({ children }) => {
@@ -7,7 +11,7 @@ const ViewportProvider = ({ children }) => {
7
11
  const [viewport, setViewport] = useState(existingViewport);
8
12
  const noExistingViewport = existingViewport === null;
9
13
  const viewportValue = existingViewport || viewport || 0;
10
- useLayoutEffect(() => {
14
+ useIsomorphicLayoutEffect(() => {
11
15
  let observer = null;
12
16
  if (noExistingViewport) {
13
17
  observer = new ResizeObserver(
@@ -1 +1 @@
1
- {"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import {\n createContext,\n useLayoutEffect,\n useState,\n useContext,\n ReactNode,\n} from \"react\";\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 useLayoutEffect(() => {\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":";;;AAQM,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,eAAA,CAAgB,MAAM;AACpB,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
  /**
@@ -0,0 +1,18 @@
1
+ import { ComponentPropsWithoutRef } from "react";
2
+ import "./Card.css";
3
+ export interface CardProps extends ComponentPropsWithoutRef<"div"> {
4
+ /**
5
+ * If `true`, the card will be disabled.
6
+ */
7
+ disabled?: boolean;
8
+ /**
9
+ * If `true`, interactive styles will be applied to `Card`. These styles give prominence to certain content
10
+ * on the page.
11
+ */
12
+ interactable?: boolean;
13
+ }
14
+ /**
15
+ * Card component is a sheet if material that serves as an entry point to more detailed information.
16
+ * Cards display content composed of different elements whose size or supported actions vary.
17
+ */
18
+ export declare const Card: import("react").ForwardRefExoticComponent<CardProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from "./Card";
@@ -25,6 +25,8 @@ export declare type FlexLayoutProps<T extends ElementType> = PolymorphicComponen
25
25
  */
26
26
  justify?: FlexContentAlignment;
27
27
  /**
28
+ * **Deprecated:** For separators see `StackLayout` component instead.
29
+ *
28
30
  * Adds a separator between elements if wrap is not active, default is false.
29
31
  */
30
32
  separators?: LayoutSeparator | true;
@@ -1,6 +1,7 @@
1
- import { ElementType, HTMLAttributes } from "react";
1
+ import { ElementType, ReactElement } from "react";
2
2
  import { FlexLayoutProps } from "../flex-layout";
3
- export interface FlowLayoutProps extends HTMLAttributes<HTMLDivElement> {
3
+ import { PolymorphicComponentPropWithRef } from "../utils";
4
+ export declare type FlowLayoutProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
4
5
  /**
5
6
  * Defines the default behavior for how flex items are laid out along the cross axis on the current line, default is "stretch".
6
7
  */
@@ -13,5 +14,7 @@ export interface FlowLayoutProps extends HTMLAttributes<HTMLDivElement> {
13
14
  * Defines the alignment along the main axis, default is "start"
14
15
  */
15
16
  justify?: FlexLayoutProps<ElementType>["justify"];
16
- }
17
- export declare const FlowLayout: import("react").ForwardRefExoticComponent<FlowLayoutProps & import("react").RefAttributes<HTMLDivElement>>;
17
+ }>;
18
+ declare type FlowLayoutComponent = <T extends ElementType = "div">(props: FlowLayoutProps<T>) => ReactElement | null;
19
+ export declare const FlowLayout: FlowLayoutComponent;
20
+ export {};
@@ -3,16 +3,21 @@ export * from "./border-item";
3
3
  export * from "./border-layout";
4
4
  export * from "./breakpoints";
5
5
  export * from "./button";
6
+ export * from "./card";
6
7
  export * from "./flex-item";
7
8
  export * from "./flex-layout";
8
9
  export * from "./flow-layout";
9
10
  export * from "./grid-item";
10
11
  export * from "./grid-layout";
11
12
  export * from "./link";
13
+ export * from "./panel";
14
+ export * from "./spinner";
12
15
  export * from "./stack-layout";
13
16
  export * from "./status-indicator";
14
17
  export * from "./text";
15
18
  export * from "./theme";
16
19
  export * from "./salt-provider";
20
+ export * from "./split-layout";
21
+ export * from "./tooltip";
17
22
  export * from "./utils";
18
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,20 @@
1
+ import { HTMLAttributes } from "react";
2
+ import "./Panel.css";
3
+ /**
4
+ * Panel component that acts as wrapper around a node
5
+ *
6
+ * @example
7
+ * const PanelExample = () => (
8
+ * <Panel>
9
+ * <p>This is a panel around some text.</p>
10
+ * </Panel>
11
+ * );
12
+ *
13
+ */
14
+ export interface PanelProps extends HTMLAttributes<HTMLDivElement> {
15
+ /**
16
+ * Styling variant; defaults to "primary".
17
+ */
18
+ variant?: "primary" | "secondary";
19
+ }
20
+ export declare const Panel: import("react").ForwardRefExoticComponent<PanelProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from "./Panel";
@@ -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";