@salt-ds/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +1 -0
  2. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js +31 -0
  3. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  4. package/dist-cjs/packages/core/src/aria-announcer/AriaAnnounce.js +22 -0
  5. package/dist-cjs/packages/core/src/aria-announcer/AriaAnnounce.js.map +1 -0
  6. package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerContext.js +12 -0
  7. package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerContext.js.map +1 -0
  8. package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerProvider.js +78 -0
  9. package/dist-cjs/packages/core/src/aria-announcer/AriaAnnouncerProvider.js.map +1 -0
  10. package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js +65 -0
  11. package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -0
  12. package/dist-cjs/packages/core/src/border-item/BorderItem.css.js +9 -0
  13. package/dist-cjs/packages/core/src/border-item/BorderItem.css.js.map +1 -0
  14. package/dist-cjs/packages/core/src/border-item/BorderItem.js +54 -0
  15. package/dist-cjs/packages/core/src/border-item/BorderItem.js.map +1 -0
  16. package/dist-cjs/packages/core/src/border-layout/BorderLayout.js +59 -0
  17. package/dist-cjs/packages/core/src/border-layout/BorderLayout.js.map +1 -0
  18. package/dist-cjs/packages/core/src/breakpoints/Breakpoints.js +15 -0
  19. package/dist-cjs/packages/core/src/breakpoints/Breakpoints.js.map +1 -0
  20. package/dist-cjs/packages/core/src/button/Button.css.js +9 -0
  21. package/dist-cjs/packages/core/src/button/Button.css.js.map +1 -0
  22. package/dist-cjs/packages/core/src/button/Button.js +60 -0
  23. package/dist-cjs/packages/core/src/button/Button.js.map +1 -0
  24. package/dist-cjs/packages/core/src/button/useButton.js +65 -0
  25. package/dist-cjs/packages/core/src/button/useButton.js.map +1 -0
  26. package/dist-cjs/packages/core/src/flex-item/FlexItem.css.js +9 -0
  27. package/dist-cjs/packages/core/src/flex-item/FlexItem.css.js.map +1 -0
  28. package/dist-cjs/packages/core/src/flex-item/FlexItem.js +56 -0
  29. package/dist-cjs/packages/core/src/flex-item/FlexItem.js.map +1 -0
  30. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.css.js +9 -0
  31. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.css.js.map +1 -0
  32. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js +77 -0
  33. package/dist-cjs/packages/core/src/flex-layout/FlexLayout.js.map +1 -0
  34. package/dist-cjs/packages/core/src/flow-layout/FlowLayout.js +21 -0
  35. package/dist-cjs/packages/core/src/flow-layout/FlowLayout.js.map +1 -0
  36. package/dist-cjs/packages/core/src/grid-item/GridItem.css.js +9 -0
  37. package/dist-cjs/packages/core/src/grid-item/GridItem.css.js.map +1 -0
  38. package/dist-cjs/packages/core/src/grid-item/GridItem.js +68 -0
  39. package/dist-cjs/packages/core/src/grid-item/GridItem.js.map +1 -0
  40. package/dist-cjs/packages/core/src/grid-layout/GridLayout.css.js +9 -0
  41. package/dist-cjs/packages/core/src/grid-layout/GridLayout.css.js.map +1 -0
  42. package/dist-cjs/packages/core/src/grid-layout/GridLayout.js +55 -0
  43. package/dist-cjs/packages/core/src/grid-layout/GridLayout.js.map +1 -0
  44. package/dist-cjs/packages/core/src/index.js +118 -0
  45. package/dist-cjs/packages/core/src/index.js.map +1 -0
  46. package/dist-cjs/packages/core/src/link/Link.css.js +9 -0
  47. package/dist-cjs/packages/core/src/link/Link.css.js.map +1 -0
  48. package/dist-cjs/packages/core/src/link/Link.js +60 -0
  49. package/dist-cjs/packages/core/src/link/Link.js.map +1 -0
  50. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.css.js +9 -0
  51. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.css.js.map +1 -0
  52. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js +158 -0
  53. package/dist-cjs/packages/core/src/salt-provider/SaltProvider.js.map +1 -0
  54. package/dist-cjs/packages/core/src/stack-layout/StackLayout.js +20 -0
  55. package/dist-cjs/packages/core/src/stack-layout/StackLayout.js.map +1 -0
  56. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.css.js +9 -0
  57. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.css.js.map +1 -0
  58. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js +47 -0
  59. package/dist-cjs/packages/core/src/status-indicator/StatusIndicator.js.map +1 -0
  60. package/dist-cjs/packages/core/src/status-indicator/ValidationStatus.js +13 -0
  61. package/dist-cjs/packages/core/src/status-indicator/ValidationStatus.js.map +1 -0
  62. package/dist-cjs/packages/core/src/text/Display.js +50 -0
  63. package/dist-cjs/packages/core/src/text/Display.js.map +1 -0
  64. package/dist-cjs/packages/core/src/text/Headings.js +54 -0
  65. package/dist-cjs/packages/core/src/text/Headings.js.map +1 -0
  66. package/dist-cjs/packages/core/src/text/Label.js +19 -0
  67. package/dist-cjs/packages/core/src/text/Label.js.map +1 -0
  68. package/dist-cjs/packages/core/src/text/Text.css.js +9 -0
  69. package/dist-cjs/packages/core/src/text/Text.css.js.map +1 -0
  70. package/dist-cjs/packages/core/src/text/Text.js +47 -0
  71. package/dist-cjs/packages/core/src/text/Text.js.map +1 -0
  72. package/dist-cjs/packages/core/src/theme/Density.js +8 -0
  73. package/dist-cjs/packages/core/src/theme/Density.js.map +1 -0
  74. package/dist-cjs/packages/core/src/theme/Mode.js +8 -0
  75. package/dist-cjs/packages/core/src/theme/Mode.js.map +1 -0
  76. package/dist-cjs/packages/core/src/theme/Theme.js +19 -0
  77. package/dist-cjs/packages/core/src/theme/Theme.js.map +1 -0
  78. package/dist-cjs/packages/core/src/utils/createChainedFunction.js +22 -0
  79. package/dist-cjs/packages/core/src/utils/createChainedFunction.js.map +1 -0
  80. package/dist-cjs/packages/core/src/utils/createContext.js +16 -0
  81. package/dist-cjs/packages/core/src/utils/createContext.js.map +1 -0
  82. package/dist-cjs/packages/core/src/utils/debounce.js +24 -0
  83. package/dist-cjs/packages/core/src/utils/debounce.js.map +1 -0
  84. package/dist-cjs/packages/core/src/utils/makePrefixer.js +8 -0
  85. package/dist-cjs/packages/core/src/utils/makePrefixer.js.map +1 -0
  86. package/dist-cjs/packages/core/src/utils/marginMiddleware.js +22 -0
  87. package/dist-cjs/packages/core/src/utils/marginMiddleware.js.map +1 -0
  88. package/dist-cjs/packages/core/src/utils/ownerDocument.js +10 -0
  89. package/dist-cjs/packages/core/src/utils/ownerDocument.js.map +1 -0
  90. package/dist-cjs/packages/core/src/utils/ownerWindow.js +13 -0
  91. package/dist-cjs/packages/core/src/utils/ownerWindow.js.map +1 -0
  92. package/dist-cjs/packages/core/src/utils/setRef.js +14 -0
  93. package/dist-cjs/packages/core/src/utils/setRef.js.map +1 -0
  94. package/dist-cjs/packages/core/src/utils/useControlled.js +60 -0
  95. package/dist-cjs/packages/core/src/utils/useControlled.js.map +1 -0
  96. package/dist-cjs/packages/core/src/utils/useForkRef.js +21 -0
  97. package/dist-cjs/packages/core/src/utils/useForkRef.js.map +1 -0
  98. package/dist-cjs/packages/core/src/utils/useId.js +55 -0
  99. package/dist-cjs/packages/core/src/utils/useId.js.map +1 -0
  100. package/dist-cjs/packages/core/src/utils/useIsFocusVisible.js +108 -0
  101. package/dist-cjs/packages/core/src/utils/useIsFocusVisible.js.map +1 -0
  102. package/dist-cjs/packages/core/src/utils/useIsomorphicLayoutEffect.js +10 -0
  103. package/dist-cjs/packages/core/src/utils/useIsomorphicLayoutEffect.js.map +1 -0
  104. package/dist-cjs/packages/core/src/utils/usePrevious.js +16 -0
  105. package/dist-cjs/packages/core/src/utils/usePrevious.js.map +1 -0
  106. package/dist-cjs/packages/core/src/utils/useResponsiveProp.js +71 -0
  107. package/dist-cjs/packages/core/src/utils/useResponsiveProp.js.map +1 -0
  108. package/dist-cjs/packages/core/src/viewport/ViewportProvider.js +43 -0
  109. package/dist-cjs/packages/core/src/viewport/ViewportProvider.js.map +1 -0
  110. package/dist-es/node_modules/style-inject/dist/style-inject.es.js +29 -0
  111. package/dist-es/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  112. package/dist-es/packages/core/src/aria-announcer/AriaAnnounce.js +18 -0
  113. package/dist-es/packages/core/src/aria-announcer/AriaAnnounce.js.map +1 -0
  114. package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerContext.js +8 -0
  115. package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerContext.js.map +1 -0
  116. package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerProvider.js +73 -0
  117. package/dist-es/packages/core/src/aria-announcer/AriaAnnouncerProvider.js.map +1 -0
  118. package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js +61 -0
  119. package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -0
  120. package/dist-es/packages/core/src/border-item/BorderItem.css.js +7 -0
  121. package/dist-es/packages/core/src/border-item/BorderItem.css.js.map +1 -0
  122. package/dist-es/packages/core/src/border-item/BorderItem.js +45 -0
  123. package/dist-es/packages/core/src/border-item/BorderItem.js.map +1 -0
  124. package/dist-es/packages/core/src/border-layout/BorderLayout.js +51 -0
  125. package/dist-es/packages/core/src/border-layout/BorderLayout.js.map +1 -0
  126. package/dist-es/packages/core/src/breakpoints/Breakpoints.js +11 -0
  127. package/dist-es/packages/core/src/breakpoints/Breakpoints.js.map +1 -0
  128. package/dist-es/packages/core/src/button/Button.css.js +7 -0
  129. package/dist-es/packages/core/src/button/Button.css.js.map +1 -0
  130. package/dist-es/packages/core/src/button/Button.js +51 -0
  131. package/dist-es/packages/core/src/button/Button.js.map +1 -0
  132. package/dist-es/packages/core/src/button/useButton.js +61 -0
  133. package/dist-es/packages/core/src/button/useButton.js.map +1 -0
  134. package/dist-es/packages/core/src/flex-item/FlexItem.css.js +7 -0
  135. package/dist-es/packages/core/src/flex-item/FlexItem.css.js.map +1 -0
  136. package/dist-es/packages/core/src/flex-item/FlexItem.js +47 -0
  137. package/dist-es/packages/core/src/flex-item/FlexItem.js.map +1 -0
  138. package/dist-es/packages/core/src/flex-layout/FlexLayout.css.js +7 -0
  139. package/dist-es/packages/core/src/flex-layout/FlexLayout.css.js.map +1 -0
  140. package/dist-es/packages/core/src/flex-layout/FlexLayout.js +67 -0
  141. package/dist-es/packages/core/src/flex-layout/FlexLayout.js.map +1 -0
  142. package/dist-es/packages/core/src/flow-layout/FlowLayout.js +17 -0
  143. package/dist-es/packages/core/src/flow-layout/FlowLayout.js.map +1 -0
  144. package/dist-es/packages/core/src/grid-item/GridItem.css.js +7 -0
  145. package/dist-es/packages/core/src/grid-item/GridItem.css.js.map +1 -0
  146. package/dist-es/packages/core/src/grid-item/GridItem.js +59 -0
  147. package/dist-es/packages/core/src/grid-item/GridItem.js.map +1 -0
  148. package/dist-es/packages/core/src/grid-layout/GridLayout.css.js +7 -0
  149. package/dist-es/packages/core/src/grid-layout/GridLayout.css.js.map +1 -0
  150. package/dist-es/packages/core/src/grid-layout/GridLayout.js +47 -0
  151. package/dist-es/packages/core/src/grid-layout/GridLayout.js.map +1 -0
  152. package/dist-es/packages/core/src/index.js +43 -0
  153. package/dist-es/packages/core/src/index.js.map +1 -0
  154. package/dist-es/packages/core/src/link/Link.css.js +7 -0
  155. package/dist-es/packages/core/src/link/Link.css.js.map +1 -0
  156. package/dist-es/packages/core/src/link/Link.js +52 -0
  157. package/dist-es/packages/core/src/link/Link.js.map +1 -0
  158. package/dist-es/packages/core/src/salt-provider/SaltProvider.css.js +7 -0
  159. package/dist-es/packages/core/src/salt-provider/SaltProvider.css.js.map +1 -0
  160. package/dist-es/packages/core/src/salt-provider/SaltProvider.js +142 -0
  161. package/dist-es/packages/core/src/salt-provider/SaltProvider.js.map +1 -0
  162. package/dist-es/packages/core/src/stack-layout/StackLayout.js +16 -0
  163. package/dist-es/packages/core/src/stack-layout/StackLayout.js.map +1 -0
  164. package/dist-es/packages/core/src/status-indicator/StatusIndicator.css.js +7 -0
  165. package/dist-es/packages/core/src/status-indicator/StatusIndicator.css.js.map +1 -0
  166. package/dist-es/packages/core/src/status-indicator/StatusIndicator.js +39 -0
  167. package/dist-es/packages/core/src/status-indicator/StatusIndicator.js.map +1 -0
  168. package/dist-es/packages/core/src/status-indicator/ValidationStatus.js +9 -0
  169. package/dist-es/packages/core/src/status-indicator/ValidationStatus.js.map +1 -0
  170. package/dist-es/packages/core/src/text/Display.js +40 -0
  171. package/dist-es/packages/core/src/text/Display.js.map +1 -0
  172. package/dist-es/packages/core/src/text/Headings.js +47 -0
  173. package/dist-es/packages/core/src/text/Headings.js.map +1 -0
  174. package/dist-es/packages/core/src/text/Label.js +15 -0
  175. package/dist-es/packages/core/src/text/Label.js.map +1 -0
  176. package/dist-es/packages/core/src/text/Text.css.js +7 -0
  177. package/dist-es/packages/core/src/text/Text.css.js.map +1 -0
  178. package/dist-es/packages/core/src/text/Text.js +39 -0
  179. package/dist-es/packages/core/src/text/Text.js.map +1 -0
  180. package/dist-es/packages/core/src/theme/Density.js +4 -0
  181. package/dist-es/packages/core/src/theme/Density.js.map +1 -0
  182. package/dist-es/packages/core/src/theme/Mode.js +4 -0
  183. package/dist-es/packages/core/src/theme/Mode.js.map +1 -0
  184. package/dist-es/packages/core/src/theme/Theme.js +15 -0
  185. package/dist-es/packages/core/src/theme/Theme.js.map +1 -0
  186. package/dist-es/packages/core/src/utils/createChainedFunction.js +18 -0
  187. package/dist-es/packages/core/src/utils/createChainedFunction.js.map +1 -0
  188. package/dist-es/packages/core/src/utils/createContext.js +12 -0
  189. package/dist-es/packages/core/src/utils/createContext.js.map +1 -0
  190. package/dist-es/packages/core/src/utils/debounce.js +20 -0
  191. package/dist-es/packages/core/src/utils/debounce.js.map +1 -0
  192. package/dist-es/packages/core/src/utils/makePrefixer.js +4 -0
  193. package/dist-es/packages/core/src/utils/makePrefixer.js.map +1 -0
  194. package/dist-es/packages/core/src/utils/marginMiddleware.js +18 -0
  195. package/dist-es/packages/core/src/utils/marginMiddleware.js.map +1 -0
  196. package/dist-es/packages/core/src/utils/ownerDocument.js +6 -0
  197. package/dist-es/packages/core/src/utils/ownerDocument.js.map +1 -0
  198. package/dist-es/packages/core/src/utils/ownerWindow.js +9 -0
  199. package/dist-es/packages/core/src/utils/ownerWindow.js.map +1 -0
  200. package/dist-es/packages/core/src/utils/setRef.js +10 -0
  201. package/dist-es/packages/core/src/utils/setRef.js.map +1 -0
  202. package/dist-es/packages/core/src/utils/useControlled.js +56 -0
  203. package/dist-es/packages/core/src/utils/useControlled.js.map +1 -0
  204. package/dist-es/packages/core/src/utils/useForkRef.js +17 -0
  205. package/dist-es/packages/core/src/utils/useForkRef.js.map +1 -0
  206. package/dist-es/packages/core/src/utils/useId.js +30 -0
  207. package/dist-es/packages/core/src/utils/useId.js.map +1 -0
  208. package/dist-es/packages/core/src/utils/useIsFocusVisible.js +103 -0
  209. package/dist-es/packages/core/src/utils/useIsFocusVisible.js.map +1 -0
  210. package/dist-es/packages/core/src/utils/useIsomorphicLayoutEffect.js +6 -0
  211. package/dist-es/packages/core/src/utils/useIsomorphicLayoutEffect.js.map +1 -0
  212. package/dist-es/packages/core/src/utils/usePrevious.js +12 -0
  213. package/dist-es/packages/core/src/utils/usePrevious.js.map +1 -0
  214. package/dist-es/packages/core/src/utils/useResponsiveProp.js +64 -0
  215. package/dist-es/packages/core/src/utils/useResponsiveProp.js.map +1 -0
  216. package/dist-es/packages/core/src/viewport/ViewportProvider.js +37 -0
  217. package/dist-es/packages/core/src/viewport/ViewportProvider.js.map +1 -0
  218. package/dist-types/aria-announcer/AriaAnnounce.d.ts +8 -0
  219. package/dist-types/aria-announcer/AriaAnnouncerContext.d.ts +6 -0
  220. package/dist-types/aria-announcer/AriaAnnouncerProvider.d.ts +10 -0
  221. package/dist-types/aria-announcer/index.d.ts +4 -0
  222. package/dist-types/aria-announcer/useAriaAnnouncer.d.ts +6 -0
  223. package/dist-types/border-item/BorderItem.d.ts +27 -0
  224. package/dist-types/border-item/index.d.ts +1 -0
  225. package/dist-types/border-layout/BorderLayout.d.ts +25 -0
  226. package/dist-types/border-layout/index.d.ts +1 -0
  227. package/dist-types/breakpoints/Breakpoints.d.ts +8 -0
  228. package/dist-types/breakpoints/index.d.ts +1 -0
  229. package/dist-types/button/Button.d.ts +20 -0
  230. package/dist-types/button/index.d.ts +2 -0
  231. package/dist-types/button/useButton.d.ts +22 -0
  232. package/dist-types/flex-item/FlexItem.d.ts +23 -0
  233. package/dist-types/flex-item/index.d.ts +1 -0
  234. package/dist-types/flex-layout/FlexLayout.d.ts +38 -0
  235. package/dist-types/flex-layout/index.d.ts +1 -0
  236. package/dist-types/flow-layout/FlowLayout.d.ts +17 -0
  237. package/dist-types/flow-layout/index.d.ts +1 -0
  238. package/dist-types/grid-item/GridItem.d.ts +27 -0
  239. package/dist-types/grid-item/index.d.ts +1 -0
  240. package/dist-types/grid-layout/GridLayout.d.ts +28 -0
  241. package/dist-types/grid-layout/index.d.ts +1 -0
  242. package/dist-types/index.d.ts +18 -0
  243. package/dist-types/link/Link.d.ts +14 -0
  244. package/dist-types/link/index.d.ts +1 -0
  245. package/dist-types/salt-provider/SaltProvider.d.ts +39 -0
  246. package/dist-types/salt-provider/index.d.ts +1 -0
  247. package/dist-types/stack-layout/StackLayout.d.ts +17 -0
  248. package/dist-types/stack-layout/index.d.ts +1 -0
  249. package/dist-types/status-indicator/StatusIndicator.d.ts +11 -0
  250. package/dist-types/status-indicator/ValidationStatus.d.ts +2 -0
  251. package/dist-types/status-indicator/index.d.ts +2 -0
  252. package/dist-types/text/Display.d.ts +5 -0
  253. package/dist-types/text/Headings.d.ts +6 -0
  254. package/dist-types/text/Label.d.ts +3 -0
  255. package/dist-types/text/Text.d.ts +20 -0
  256. package/dist-types/text/index.d.ts +4 -0
  257. package/dist-types/theme/Density.d.ts +2 -0
  258. package/dist-types/theme/Mode.d.ts +2 -0
  259. package/dist-types/theme/Theme.d.ts +3 -0
  260. package/dist-types/theme/index.d.ts +3 -0
  261. package/dist-types/utils/createChainedFunction.d.ts +3 -0
  262. package/dist-types/utils/createContext.d.ts +2 -0
  263. package/dist-types/utils/debounce.d.ts +4 -0
  264. package/dist-types/utils/index.d.ts +17 -0
  265. package/dist-types/utils/inferElementType.d.ts +2 -0
  266. package/dist-types/utils/makePrefixer.d.ts +2 -0
  267. package/dist-types/utils/marginMiddleware.d.ts +2 -0
  268. package/dist-types/utils/ownerDocument.d.ts +1 -0
  269. package/dist-types/utils/ownerWindow.d.ts +1 -0
  270. package/dist-types/utils/polymorphicTypes.d.ts +14 -0
  271. package/dist-types/utils/setRef.d.ts +2 -0
  272. package/dist-types/utils/useControlled.d.ts +24 -0
  273. package/dist-types/utils/useForkRef.d.ts +2 -0
  274. package/dist-types/utils/useId.d.ts +2 -0
  275. package/dist-types/utils/useIsFocusVisible.d.ts +8 -0
  276. package/dist-types/utils/useIsomorphicLayoutEffect.d.ts +2 -0
  277. package/dist-types/utils/usePrevious.d.ts +2 -0
  278. package/dist-types/utils/useResponsiveProp.d.ts +10 -0
  279. package/dist-types/viewport/ViewportProvider.d.ts +8 -0
  280. package/dist-types/viewport/index.d.ts +1 -0
  281. package/package.json +40 -0
@@ -0,0 +1,103 @@
1
+ import { useCallback, useRef } from 'react';
2
+
3
+ let hadKeyboardEvent = true;
4
+ let hadFocusVisibleRecently = false;
5
+ let hadFocusVisibleRecentlyTimeout;
6
+ const inputTypesWhitelist = {
7
+ text: true,
8
+ search: true,
9
+ url: true,
10
+ tel: true,
11
+ email: true,
12
+ password: true,
13
+ number: true,
14
+ date: true,
15
+ month: true,
16
+ week: true,
17
+ time: true,
18
+ datetime: true,
19
+ "datetime-local": true
20
+ };
21
+ function focusTriggersKeyboardModality(node) {
22
+ if (node.tagName === "INPUT" && inputTypesWhitelist[node.type] && !node.readOnly) {
23
+ return true;
24
+ }
25
+ if (node.tagName === "TEXTAREA" && !node.readOnly) {
26
+ return true;
27
+ }
28
+ return node.isContentEditable;
29
+ }
30
+ function handleKeyDown(event) {
31
+ if (event.metaKey || event.altKey || event.ctrlKey) {
32
+ return;
33
+ }
34
+ hadKeyboardEvent = true;
35
+ }
36
+ function handlePointerDown() {
37
+ hadKeyboardEvent = false;
38
+ }
39
+ function handleVisibilityChange() {
40
+ if (this.visibilityState === "hidden") {
41
+ if (hadFocusVisibleRecently) {
42
+ hadKeyboardEvent = true;
43
+ }
44
+ }
45
+ }
46
+ function prepare(doc) {
47
+ doc.addEventListener("keydown", handleKeyDown, true);
48
+ doc.addEventListener("mousedown", handlePointerDown, true);
49
+ doc.addEventListener("pointerdown", handlePointerDown, true);
50
+ doc.addEventListener("touchstart", handlePointerDown, true);
51
+ doc.addEventListener("visibilitychange", handleVisibilityChange, true);
52
+ }
53
+ function teardown(doc) {
54
+ doc.removeEventListener("keydown", handleKeyDown, true);
55
+ doc.removeEventListener("mousedown", handlePointerDown, true);
56
+ doc.removeEventListener("pointerdown", handlePointerDown, true);
57
+ doc.removeEventListener("touchstart", handlePointerDown, true);
58
+ doc.removeEventListener("visibilitychange", handleVisibilityChange, true);
59
+ }
60
+ function isFocusVisible(event) {
61
+ const { target } = event;
62
+ try {
63
+ return target.matches(":focus-visible");
64
+ } catch (error) {
65
+ }
66
+ return hadKeyboardEvent || focusTriggersKeyboardModality(target);
67
+ }
68
+ function useIsFocusVisible() {
69
+ const ref = useCallback((node) => {
70
+ if (node != null) {
71
+ prepare(node.ownerDocument);
72
+ }
73
+ }, []);
74
+ const isFocusVisibleRef = useRef(false);
75
+ function handleBlurVisible() {
76
+ if (isFocusVisibleRef.current) {
77
+ hadFocusVisibleRecently = true;
78
+ window.clearTimeout(hadFocusVisibleRecentlyTimeout);
79
+ hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {
80
+ hadFocusVisibleRecently = false;
81
+ }, 100);
82
+ isFocusVisibleRef.current = false;
83
+ return true;
84
+ }
85
+ return false;
86
+ }
87
+ function handleFocusVisible(event) {
88
+ if (isFocusVisible(event)) {
89
+ isFocusVisibleRef.current = true;
90
+ return true;
91
+ }
92
+ return false;
93
+ }
94
+ return {
95
+ isFocusVisibleRef,
96
+ onFocus: handleFocusVisible,
97
+ onBlur: handleBlurVisible,
98
+ ref
99
+ };
100
+ }
101
+
102
+ export { teardown, useIsFocusVisible };
103
+ //# sourceMappingURL=useIsFocusVisible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsFocusVisible.js","sources":["../src/utils/useIsFocusVisible.ts"],"sourcesContent":["// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport { useCallback, useRef, FocusEvent, MutableRefObject, Ref } from \"react\";\n\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nlet hadFocusVisibleRecentlyTimeout: number;\n\nconst inputTypesWhitelist: Record<string, boolean> = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n \"datetime-local\": true,\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node: HTMLElement) {\n if (\n node.tagName === \"INPUT\" &&\n inputTypesWhitelist[(node as HTMLInputElement).type] &&\n !(node as HTMLInputElement).readOnly\n ) {\n return true;\n }\n\n if (node.tagName === \"TEXTAREA\" && !(node as HTMLInputElement).readOnly) {\n return true;\n }\n\n return node.isContentEditable;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange(this: Document) {\n if (this.visibilityState === \"hidden\") {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc: Document) {\n doc.addEventListener(\"keydown\", handleKeyDown, true);\n doc.addEventListener(\"mousedown\", handlePointerDown, true);\n doc.addEventListener(\"pointerdown\", handlePointerDown, true);\n doc.addEventListener(\"touchstart\", handlePointerDown, true);\n doc.addEventListener(\"visibilitychange\", handleVisibilityChange, true);\n}\n\nexport function teardown(doc: Document): void {\n doc.removeEventListener(\"keydown\", handleKeyDown, true);\n doc.removeEventListener(\"mousedown\", handlePointerDown, true);\n doc.removeEventListener(\"pointerdown\", handlePointerDown, true);\n doc.removeEventListener(\"touchstart\", handlePointerDown, true);\n doc.removeEventListener(\"visibilitychange\", handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event: FocusEvent<HTMLElement>) {\n const { target } = event;\n try {\n return target.matches(\":focus-visible\");\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focused events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n\nexport function useIsFocusVisible<T extends HTMLElement = HTMLElement>(): {\n isFocusVisibleRef: MutableRefObject<boolean>;\n onBlur: () => void;\n onFocus: (event: FocusEvent<T>) => void;\n ref: Ref<T>;\n} {\n const ref = useCallback((node: T | null) => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n const isFocusVisibleRef = useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {\n hadFocusVisibleRecently = false;\n }, 100);\n\n isFocusVisibleRef.current = false;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event: FocusEvent<HTMLElement>) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { useLayoutEffect, useEffect } from 'react';
2
+
3
+ const useIsomorphicLayoutEffect = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined" ? useLayoutEffect : useEffect;
4
+
5
+ export { useIsomorphicLayoutEffect };
6
+ //# sourceMappingURL=useIsomorphicLayoutEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsomorphicLayoutEffect.js","sources":["../src/utils/useIsomorphicLayoutEffect.ts"],"sourcesContent":["import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect because we want\n// `connect` to perform sync updates to a ref to save the latest props after\n// a render is actually committed to the DOM.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n ? useLayoutEffect\n : useEffect;\n"],"names":[],"mappings":";;AAOO,MAAM,yBACX,GAAA,OAAO,MAAW,KAAA,WAAA,IAClB,OAAO,MAAA,CAAO,QAAa,KAAA,WAAA,IAC3B,OAAO,MAAA,CAAO,QAAS,CAAA,aAAA,KAAkB,cACrC,eACA,GAAA;;;;"}
@@ -0,0 +1,12 @@
1
+ import { useRef, useEffect } from 'react';
2
+
3
+ function usePrevious(value, deps = [], initialValue) {
4
+ const ref = useRef(initialValue);
5
+ useEffect(() => {
6
+ ref.current = value;
7
+ }, deps);
8
+ return ref.current;
9
+ }
10
+
11
+ export { usePrevious };
12
+ //# sourceMappingURL=usePrevious.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePrevious.js","sources":["../src/utils/usePrevious.ts"],"sourcesContent":["import { useRef, useEffect, DependencyList } from \"react\";\n\nexport function usePrevious<T>(\n value: T,\n deps: DependencyList = [],\n initialValue?: T\n): T | undefined {\n const ref = useRef<T | undefined>(initialValue);\n\n useEffect(() => {\n ref.current = value;\n }, deps); // eslint-disable-line react-hooks/exhaustive-deps\n return ref.current;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,WACd,CAAA,KAAA,EACA,IAAuB,GAAA,IACvB,YACe,EAAA;AACf,EAAM,MAAA,GAAA,GAAM,OAAsB,YAAY,CAAA,CAAA;AAE9C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,KAAA,CAAA;AAAA,KACb,IAAI,CAAA,CAAA;AACP,EAAA,OAAO,GAAI,CAAA,OAAA,CAAA;AACb;;;;"}
@@ -0,0 +1,64 @@
1
+ import { useBreakpoints } from '../salt-provider/SaltProvider.js';
2
+ import { useViewport } from '../viewport/ViewportProvider.js';
3
+
4
+ const getCurrentBreakpoint = (breakpoints, width) => {
5
+ const breakpointList = Object.entries(breakpoints);
6
+ const [currentBreakpoint] = breakpointList.reduce((acc, val) => {
7
+ const [, accWidth] = acc;
8
+ const [breakpoint, breakpointWidth] = val;
9
+ if (breakpointWidth < width && breakpointWidth > accWidth) {
10
+ return [breakpoint, breakpointWidth];
11
+ }
12
+ return [...acc];
13
+ }, breakpointList[0]);
14
+ return currentBreakpoint;
15
+ };
16
+ const useCurrentBreakpoint = () => {
17
+ const viewport = useViewport();
18
+ const breakpoints = useBreakpoints();
19
+ return getCurrentBreakpoint(breakpoints, viewport);
20
+ };
21
+ const useOrderedBreakpoints = () => {
22
+ const breakpoints = useBreakpoints();
23
+ const orderedBreakpoints = Object.entries(breakpoints).sort(([, a], [, b]) => a - b).map(([key]) => key);
24
+ return orderedBreakpoints;
25
+ };
26
+ const isObject = (value) => {
27
+ const type = typeof value;
28
+ return value !== null && (type === "object" || type === "function");
29
+ };
30
+ const hasBreakpointValues = (value, breakpoints) => {
31
+ return isObject(value) && Object.keys(value).every((key) => key in breakpoints);
32
+ };
33
+ const getResponsiveValue = (breakpointValues, breakpoints, viewport, defaultValue) => {
34
+ const value = Object.entries(breakpointValues).reduce(
35
+ (acc, val) => {
36
+ const [accWidth] = acc;
37
+ const [breakpoint, breakpointValue] = val;
38
+ const breakpointWidth = breakpoints[breakpoint];
39
+ if (breakpointWidth >= accWidth && breakpointWidth <= breakpoints[viewport]) {
40
+ return [breakpointWidth, breakpointValue];
41
+ }
42
+ return acc;
43
+ },
44
+ [0, defaultValue]
45
+ )[1];
46
+ return value;
47
+ };
48
+ const useResponsiveProp = (value, defaultValue) => {
49
+ const breakpoints = useBreakpoints();
50
+ const viewport = useViewport();
51
+ const currentViewport = getCurrentBreakpoint(breakpoints, viewport);
52
+ if (hasBreakpointValues(value, breakpoints)) {
53
+ return getResponsiveValue(
54
+ value,
55
+ breakpoints,
56
+ currentViewport,
57
+ defaultValue
58
+ );
59
+ }
60
+ return value;
61
+ };
62
+
63
+ export { getCurrentBreakpoint, useCurrentBreakpoint, useOrderedBreakpoints, useResponsiveProp };
64
+ //# sourceMappingURL=useResponsiveProp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResponsiveProp.js","sources":["../src/utils/useResponsiveProp.ts"],"sourcesContent":["import { Breakpoints } from \"../breakpoints\";\nimport { useBreakpoints } from \"../salt-provider\";\nimport { useViewport } from \"../viewport\";\n\ntype BreakpointProp<T> = {\n [K in keyof Breakpoints]?: T;\n};\n\nexport type ResponsiveProp<T> = T | BreakpointProp<T>;\n\nexport const getCurrentBreakpoint = (\n breakpoints: Breakpoints,\n width: number\n) => {\n const breakpointList = Object.entries(breakpoints);\n\n const [currentBreakpoint] = (\n breakpointList as [keyof Breakpoints, number][]\n ).reduce((acc, val) => {\n const [, accWidth] = acc;\n const [breakpoint, breakpointWidth] = val;\n if (breakpointWidth < width && breakpointWidth > accWidth) {\n return [breakpoint, breakpointWidth];\n }\n return [...acc];\n }, breakpointList[0] as [keyof Breakpoints, number]);\n\n return currentBreakpoint;\n};\n\nexport const useCurrentBreakpoint = () => {\n const viewport = useViewport();\n\n const breakpoints = useBreakpoints();\n\n return getCurrentBreakpoint(breakpoints, viewport);\n};\n\nexport const useOrderedBreakpoints = () => {\n const breakpoints = useBreakpoints();\n\n const orderedBreakpoints = Object.entries(breakpoints)\n .sort(([, a], [, b]) => a - b)\n .map(([key]) => key);\n\n return orderedBreakpoints;\n};\n\nconst isObject = <T>(\n value: T\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): value is Record<string | number | symbol, any> => {\n const type = typeof value;\n return value !== null && (type === \"object\" || type === \"function\");\n};\n\nconst hasBreakpointValues = <T>(\n value: ResponsiveProp<T>,\n breakpoints: Breakpoints\n): value is BreakpointProp<T> => {\n return (\n isObject(value) && Object.keys(value).every((key) => key in breakpoints)\n );\n};\n\nconst getResponsiveValue = <T>(\n breakpointValues: BreakpointProp<T>,\n breakpoints: Breakpoints,\n viewport: keyof Breakpoints,\n defaultValue: T\n) => {\n const value = Object.entries(breakpointValues).reduce<[number, T]>(\n (acc, val) => {\n const [accWidth] = acc;\n const [breakpoint, breakpointValue] = val;\n\n const breakpointWidth =\n breakpoints[breakpoint as keyof typeof breakpoints];\n\n if (\n breakpointWidth >= accWidth &&\n breakpointWidth <= breakpoints[viewport]\n ) {\n return [breakpointWidth, breakpointValue];\n }\n\n return acc;\n },\n [0, defaultValue]\n )[1];\n\n return value;\n};\n\nexport const useResponsiveProp = <T>(\n value: ResponsiveProp<T>,\n defaultValue: T\n) => {\n const breakpoints = useBreakpoints();\n const viewport = useViewport();\n\n const currentViewport = getCurrentBreakpoint(breakpoints, viewport);\n\n if (hasBreakpointValues(value, breakpoints)) {\n return getResponsiveValue(\n value,\n breakpoints,\n currentViewport,\n defaultValue\n );\n }\n return value;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createContext, useContext, useState, useLayoutEffect } from 'react';
3
+
4
+ const ViewportContext = createContext(null);
5
+ const ViewportProvider = ({ children }) => {
6
+ const existingViewport = useContext(ViewportContext);
7
+ const [viewport, setViewport] = useState(existingViewport);
8
+ const noExistingViewport = existingViewport === null;
9
+ const viewportValue = existingViewport || viewport || 0;
10
+ useLayoutEffect(() => {
11
+ let observer = null;
12
+ if (noExistingViewport) {
13
+ observer = new ResizeObserver(
14
+ (observerEntries) => {
15
+ setViewport(observerEntries[0].contentRect.width);
16
+ }
17
+ );
18
+ observer.observe(document.body);
19
+ }
20
+ return () => {
21
+ if (observer) {
22
+ observer.disconnect();
23
+ }
24
+ };
25
+ }, [noExistingViewport]);
26
+ return /* @__PURE__ */ jsx(ViewportContext.Provider, {
27
+ value: viewportValue,
28
+ children
29
+ });
30
+ };
31
+ const useViewport = () => {
32
+ const value = useContext(ViewportContext);
33
+ return value === null ? 0 : value;
34
+ };
35
+
36
+ export { ViewportContext, ViewportProvider, useViewport };
37
+ //# sourceMappingURL=ViewportProvider.js.map
@@ -0,0 +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;;;;"}
@@ -0,0 +1,8 @@
1
+ import { ComponentType } from "react";
2
+ export interface AriaAnnounceProps {
3
+ /**
4
+ * String which will be announced by screen readers on change
5
+ */
6
+ announcement?: string;
7
+ }
8
+ export declare const AriaAnnounce: ComponentType<AriaAnnounceProps>;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare type AnnounceFn = (announcement: string, delay?: number) => void;
3
+ export declare type AriaAnnouncer = {
4
+ announce: AnnounceFn;
5
+ };
6
+ export declare const AriaAnnouncerContext: import("react").Context<AriaAnnouncer | undefined>;
@@ -0,0 +1,10 @@
1
+ import { CSSProperties, ReactNode } from "react";
2
+ export declare const ARIA_ANNOUNCE_DELAY = 150;
3
+ export interface AriaAnnouncerProviderProps {
4
+ children?: ReactNode;
5
+ /**
6
+ * Style overrides for the aria-live element
7
+ */
8
+ style?: CSSProperties;
9
+ }
10
+ export declare function AriaAnnouncerProvider({ children, style, }: AriaAnnouncerProviderProps): JSX.Element;
@@ -0,0 +1,4 @@
1
+ export * from "./AriaAnnouncerContext";
2
+ export * from "./AriaAnnounce";
3
+ export * from "./AriaAnnouncerProvider";
4
+ export * from "./useAriaAnnouncer";
@@ -0,0 +1,6 @@
1
+ import { AriaAnnouncer } from "./AriaAnnouncerContext";
2
+ export declare type useAnnouncerOptions = {
3
+ debounce?: number;
4
+ };
5
+ export declare type useAriaAnnouncerHook = (options?: useAnnouncerOptions) => AriaAnnouncer;
6
+ export declare const useAriaAnnouncer: useAriaAnnouncerHook;
@@ -0,0 +1,27 @@
1
+ import { ElementType, ReactElement } from "react";
2
+ import { GridItemProps } from "../grid-item";
3
+ import "./BorderItem.css";
4
+ import { PolymorphicComponentPropWithRef } from "../utils";
5
+ export declare const BORDER_POSITION: readonly ["north", "west", "center", "east", "south"];
6
+ export declare type BorderPosition = typeof BORDER_POSITION[number];
7
+ export declare type BorderItemProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
8
+ /**
9
+ * Aligns a grid item inside a cell along the inline (row) axis. Defaults to "stretch"
10
+ */
11
+ horizontalAlignment?: GridItemProps<T>["horizontalAlignment"];
12
+ /**
13
+ * Aligns a grid item inside a cell along the block (column) axis. Defaults to "stretch"
14
+ */
15
+ verticalAlignment?: GridItemProps<T>["verticalAlignment"];
16
+ /**
17
+ * Position in the border layout
18
+ */
19
+ position: BorderPosition;
20
+ /**
21
+ * Defines if the item should stick to the edges of its container. Defaults to "false"
22
+ */
23
+ sticky?: boolean;
24
+ }>;
25
+ declare type BorderItemComponent = <T extends ElementType = "div">(props: BorderItemProps<T>) => ReactElement | null;
26
+ export declare const BorderItem: BorderItemComponent;
27
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./BorderItem";
@@ -0,0 +1,25 @@
1
+ import { ReactElement, ElementType } from "react";
2
+ import { GridLayoutProps } from "../grid-layout";
3
+ import { PolymorphicComponentPropWithRef } from "../utils";
4
+ import { BorderItemProps } from "../border-item";
5
+ export declare type BorderLayoutProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
6
+ /**
7
+ * Defines the size of the gutter between the columns and the rows by setting a density multiplier. Defaults to 0
8
+ */
9
+ gap?: GridLayoutProps<T>["gap"];
10
+ /**
11
+ * Defines the size of the gutter between the columns by setting a density multiplier. Defaults to 0
12
+ */
13
+ columnGap?: GridLayoutProps<T>["columnGap"];
14
+ /**
15
+ * Defines the size of the gutter between the rows by setting a density multiplier. Defaults to 0
16
+ */
17
+ rowGap?: GridLayoutProps<T>["rowGap"];
18
+ /**
19
+ * Border item components to be rendered.
20
+ */
21
+ children: ReactElement<BorderItemProps<T>>[];
22
+ }>;
23
+ declare type BorderLayoutComponent = <T extends ElementType = "div">(props: BorderLayoutProps<T>) => ReactElement | null;
24
+ export declare const BorderLayout: BorderLayoutComponent;
25
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./BorderLayout";
@@ -0,0 +1,8 @@
1
+ export declare type Breakpoints = {
2
+ xs: number;
3
+ sm: number;
4
+ md: number;
5
+ lg: number;
6
+ xl: number;
7
+ };
8
+ export declare const DEFAULT_BREAKPOINTS: Breakpoints;
@@ -0,0 +1 @@
1
+ export * from "./Breakpoints";
@@ -0,0 +1,20 @@
1
+ import { ComponentPropsWithoutRef } from "react";
2
+ import "./Button.css";
3
+ export declare const ButtonVariantValues: readonly ["primary", "secondary", "cta"];
4
+ export declare type ButtonVariant = typeof ButtonVariantValues[number];
5
+ export interface ButtonProps extends ComponentPropsWithoutRef<"button"> {
6
+ /**
7
+ * If `true`, the button will be disabled.
8
+ */
9
+ disabled?: boolean;
10
+ /**
11
+ * If `true`, the button will be focusable when disabled.
12
+ */
13
+ focusableWhenDisabled?: boolean;
14
+ /**
15
+ * The variant to use. Options are 'primary', 'secondary' and 'cta'.
16
+ * 'primary' is the default value.
17
+ */
18
+ variant?: ButtonVariant;
19
+ }
20
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,2 @@
1
+ export * from "./Button";
2
+ export * from "./useButton";
@@ -0,0 +1,22 @@
1
+ import { FocusEvent, KeyboardEvent, MouseEvent } from "react";
2
+ export interface ButtonHookProps<T extends Element> {
3
+ disabled?: boolean;
4
+ focusableWhenDisabled?: boolean;
5
+ onKeyUp?: (event: KeyboardEvent<T>) => void;
6
+ onKeyDown?: (event: KeyboardEvent<T>) => void;
7
+ onClick?: (event: MouseEvent<T>) => void;
8
+ onBlur?: (event: FocusEvent<T>) => void;
9
+ }
10
+ export interface ButtonHookResult<T extends Element> {
11
+ active: boolean;
12
+ buttonProps: {
13
+ "aria-disabled"?: boolean;
14
+ disabled?: boolean;
15
+ tabIndex: number;
16
+ onBlur: (event: FocusEvent<T>) => void;
17
+ onClick?: (event: MouseEvent<T>) => void;
18
+ onKeyDown: (event: KeyboardEvent<T>) => void;
19
+ onKeyUp: (event: KeyboardEvent<T>) => void;
20
+ };
21
+ }
22
+ export declare const useButton: <T extends Element>({ disabled, focusableWhenDisabled, onKeyUp, onKeyDown, onClick, onBlur, }: ButtonHookProps<T>) => ButtonHookResult<T>;
@@ -0,0 +1,23 @@
1
+ import { ElementType, ReactElement } from "react";
2
+ import { ResponsiveProp, PolymorphicComponentPropWithRef } from "../utils";
3
+ import "./FlexItem.css";
4
+ export declare const FLEX_ITEM_ALIGNMENTS: readonly ["start", "end", "center", "stretch"];
5
+ export declare type flexItemAlignment = typeof FLEX_ITEM_ALIGNMENTS[number];
6
+ export declare type FlexItemProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
7
+ /**
8
+ * Allows the alignment specified by parent to be overridden for individual items, default is "start".
9
+ */
10
+ align?: flexItemAlignment;
11
+ /**
12
+ * Defines the ability for an item to shrink x times more compared to it's siblings, default is 1.
13
+
14
+ */
15
+ shrink?: ResponsiveProp<number>;
16
+ /**
17
+ * Defines the ability for an item to grow x times more compared to it's siblings, default is 0.
18
+ */
19
+ grow?: ResponsiveProp<number>;
20
+ }>;
21
+ declare type FlexItemComponent = <T extends ElementType = "div">(props: FlexItemProps<T>) => ReactElement | null;
22
+ export declare const FlexItem: FlexItemComponent;
23
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./FlexItem";
@@ -0,0 +1,38 @@
1
+ import { ElementType, ReactElement } from "react";
2
+ import { ResponsiveProp, PolymorphicComponentPropWithRef } from "../utils";
3
+ import "./FlexLayout.css";
4
+ export declare type LayoutSeparator = "start" | "center" | "end";
5
+ export declare type LayoutDirection = "row" | "column";
6
+ export declare const FLEX_ALIGNMENT_BASE: readonly ["start", "end", "center"];
7
+ export declare const FLEX_CONTENT_ALIGNMENT_BASE: readonly ["start", "end", "center", "space-between", "space-around", "space-evenly"];
8
+ export declare type FlexAlignment = typeof FLEX_ALIGNMENT_BASE[number];
9
+ export declare type FlexContentAlignment = typeof FLEX_CONTENT_ALIGNMENT_BASE[number];
10
+ export declare type FlexLayoutProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
11
+ /**
12
+ * Defines the default behavior for how flex items are laid out along the cross axis on the current line, default is "stretch".
13
+ */
14
+ align?: FlexAlignment | "stretch" | "baseline";
15
+ /**
16
+ * Establishes the main-axis, defining the direction children are placed. Default is "row".
17
+ */
18
+ direction?: ResponsiveProp<LayoutDirection>;
19
+ /**
20
+ * Controls the space between items, default is 3.
21
+ */
22
+ gap?: ResponsiveProp<number>;
23
+ /**
24
+ * Defines the alignment along the main axis, default is "start".
25
+ */
26
+ justify?: FlexContentAlignment;
27
+ /**
28
+ * Adds a separator between elements if wrap is not active, default is false.
29
+ */
30
+ separators?: LayoutSeparator | true;
31
+ /**
32
+ * Allow the items to wrap as needed, default is false.
33
+ */
34
+ wrap?: ResponsiveProp<boolean>;
35
+ }>;
36
+ declare type FlexLayoutComponent = <T extends ElementType = "div">(props: FlexLayoutProps<T>) => ReactElement | null;
37
+ export declare const FlexLayout: FlexLayoutComponent;
38
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./FlexLayout";
@@ -0,0 +1,17 @@
1
+ import { ElementType, HTMLAttributes } from "react";
2
+ import { FlexLayoutProps } from "../flex-layout";
3
+ export interface FlowLayoutProps extends HTMLAttributes<HTMLDivElement> {
4
+ /**
5
+ * Defines the default behavior for how flex items are laid out along the cross axis on the current line, default is "stretch".
6
+ */
7
+ align?: FlexLayoutProps<ElementType>["align"];
8
+ /**
9
+ * Controls the space between items, default is 3.
10
+ */
11
+ gap?: FlexLayoutProps<ElementType>["gap"];
12
+ /**
13
+ * Defines the alignment along the main axis, default is "start"
14
+ */
15
+ justify?: FlexLayoutProps<ElementType>["justify"];
16
+ }
17
+ export declare const FlowLayout: import("react").ForwardRefExoticComponent<FlowLayoutProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from "./FlowLayout";
@@ -0,0 +1,27 @@
1
+ import { ElementType, ReactElement } from "react";
2
+ import { ResponsiveProp, PolymorphicComponentPropWithRef } from "../utils";
3
+ import "./GridItem.css";
4
+ export declare const GRID_ALIGNMENT_BASE: readonly ["start", "end", "center", "stretch"];
5
+ declare type GridAlignment = typeof GRID_ALIGNMENT_BASE[number];
6
+ declare type GridProperty = number | "auto";
7
+ export declare type GridItemProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
8
+ /**
9
+ * The item will span across the provided number of grid columns. Defaults to "auto"
10
+ */
11
+ colSpan?: ResponsiveProp<GridProperty>;
12
+ /**
13
+ * The item will span across the provided number of grid rows. Defaults to "auto"
14
+ */
15
+ rowSpan?: ResponsiveProp<GridProperty>;
16
+ /**
17
+ * Aligns a grid item inside a cell along the inline (row) axis. Defaults to "stretch"
18
+ */
19
+ horizontalAlignment?: GridAlignment;
20
+ /**
21
+ * Aligns a grid item inside a cell along the block (column) axis. Defaults to "stretch"
22
+ */
23
+ verticalAlignment?: GridAlignment;
24
+ }>;
25
+ declare type GridItemComponent = <T extends ElementType = "div">(props: GridItemProps<T>) => ReactElement | null;
26
+ export declare const GridItem: GridItemComponent;
27
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./GridItem";
@@ -0,0 +1,28 @@
1
+ import { ReactElement, ElementType } from "react";
2
+ import { ResponsiveProp, PolymorphicComponentPropWithRef } from "../utils";
3
+ import "./GridLayout.css";
4
+ export declare type GridLayoutProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, {
5
+ /**
6
+ * Number of columns to be displayed. Defaults to 12
7
+ */
8
+ columns?: ResponsiveProp<number>;
9
+ /**
10
+ * Number of rows to be displayed. Defaults to 1
11
+ */
12
+ rows?: ResponsiveProp<number>;
13
+ /**
14
+ * Defines the size of the gutter between the columns and the rows by setting a density multiplier. Defaults to 3
15
+ */
16
+ gap?: ResponsiveProp<number>;
17
+ /**
18
+ * Defines the size of the gutter between the columns by setting a density multiplier. Defaults to 1
19
+ */
20
+ columnGap?: ResponsiveProp<number>;
21
+ /**
22
+ * Defines the size of the gutter between the rows by setting a density multiplier. Defaults to 1
23
+ */
24
+ rowGap?: ResponsiveProp<number>;
25
+ }>;
26
+ declare type GridLayoutComponent = <T extends ElementType = "div">(props: GridLayoutProps<T>) => ReactElement | null;
27
+ export declare const GridLayout: GridLayoutComponent;
28
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./GridLayout";
@@ -0,0 +1,18 @@
1
+ export * from "./aria-announcer";
2
+ export * from "./border-item";
3
+ export * from "./border-layout";
4
+ export * from "./breakpoints";
5
+ export * from "./button";
6
+ export * from "./flex-item";
7
+ export * from "./flex-layout";
8
+ export * from "./flow-layout";
9
+ export * from "./grid-item";
10
+ export * from "./grid-layout";
11
+ export * from "./link";
12
+ export * from "./stack-layout";
13
+ export * from "./status-indicator";
14
+ export * from "./text";
15
+ export * from "./theme";
16
+ export * from "./salt-provider";
17
+ export * from "./utils";
18
+ export * from "./viewport";