@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,18 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useEffect } from 'react';
3
+ import { useAriaAnnouncer } from './useAriaAnnouncer.js';
4
+
5
+ const AriaAnnounce = ({
6
+ announcement
7
+ }) => {
8
+ const { announce } = useAriaAnnouncer();
9
+ useEffect(() => {
10
+ if (announcement) {
11
+ announce(announcement);
12
+ }
13
+ }, [announce, announcement]);
14
+ return /* @__PURE__ */ jsx(Fragment, {});
15
+ };
16
+
17
+ export { AriaAnnounce };
18
+ //# sourceMappingURL=AriaAnnounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaAnnounce.js","sources":["../src/aria-announcer/AriaAnnounce.tsx"],"sourcesContent":["import { ComponentType, useEffect } from \"react\";\n\nimport { useAriaAnnouncer } from \"./useAriaAnnouncer\";\n\nexport interface AriaAnnounceProps {\n /**\n * String which will be announced by screen readers on change\n */\n announcement?: string;\n}\n\nexport const AriaAnnounce: ComponentType<AriaAnnounceProps> = ({\n announcement,\n}) => {\n const { announce } = useAriaAnnouncer();\n\n useEffect(() => {\n if (announcement) {\n announce(announcement);\n }\n }, [announce, announcement]);\n\n // If we return null here, react-docgen wouldn't be able to locate the component\n return <></>;\n};\n"],"names":[],"mappings":";;;;AAWO,MAAM,eAAiD,CAAC;AAAA,EAC7D,YAAA;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAEtC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,QAAA,CAAS,YAAY,CAAA,CAAA;AAAA,KACvB;AAAA,GACC,EAAA,CAAC,QAAU,EAAA,YAAY,CAAC,CAAA,CAAA;AAG3B,EAAA,uBAAS,GAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AACX;;;;"}
@@ -0,0 +1,8 @@
1
+ import { createContext } from 'react';
2
+
3
+ const AriaAnnouncerContext = createContext(
4
+ void 0
5
+ );
6
+
7
+ export { AriaAnnouncerContext };
8
+ //# sourceMappingURL=AriaAnnouncerContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaAnnouncerContext.js","sources":["../src/aria-announcer/AriaAnnouncerContext.ts"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type AnnounceFn = (announcement: string, delay?: number) => void;\n\nexport type AriaAnnouncer = {\n announce: AnnounceFn;\n};\n\nexport const AriaAnnouncerContext = createContext<AriaAnnouncer | undefined>(\n undefined\n);\n"],"names":[],"mappings":";;AAQO,MAAM,oBAAuB,GAAA,aAAA;AAAA,EAClC,KAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,73 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
3
+ import { AriaAnnouncerContext } from './AriaAnnouncerContext.js';
4
+
5
+ const ARIA_ANNOUNCE_DELAY = 150;
6
+ function AriaAnnouncerProvider({
7
+ children,
8
+ style
9
+ }) {
10
+ const [currentAnnouncement, setCurrentAnnouncement] = useState("");
11
+ const announcementsRef = useRef([]);
12
+ const isAnnouncingRef = useRef(false);
13
+ const mountedRef = useRef(true);
14
+ const announceAll = useCallback(() => {
15
+ isAnnouncingRef.current = true;
16
+ if (announcementsRef.current.length && mountedRef.current) {
17
+ setCurrentAnnouncement("");
18
+ requestAnimationFrame(() => {
19
+ if (mountedRef.current) {
20
+ const announcement = announcementsRef.current.shift();
21
+ setCurrentAnnouncement(announcement);
22
+ setTimeout(() => {
23
+ announceAll();
24
+ }, ARIA_ANNOUNCE_DELAY);
25
+ }
26
+ });
27
+ } else {
28
+ isAnnouncingRef.current = false;
29
+ }
30
+ }, []);
31
+ const announce = useCallback(
32
+ (announcement) => {
33
+ announcementsRef.current.push(announcement);
34
+ if (!isAnnouncingRef.current) {
35
+ announceAll();
36
+ }
37
+ },
38
+ [announceAll]
39
+ );
40
+ useEffect(
41
+ () => () => {
42
+ mountedRef.current = false;
43
+ },
44
+ []
45
+ );
46
+ const value = useMemo(() => ({ announce }), [announce]);
47
+ return /* @__PURE__ */ jsxs(AriaAnnouncerContext.Provider, {
48
+ value,
49
+ children: [
50
+ children,
51
+ /* @__PURE__ */ jsx("div", {
52
+ "aria-atomic": "true",
53
+ "aria-live": "assertive",
54
+ style: {
55
+ position: "absolute",
56
+ height: 1,
57
+ width: 1,
58
+ padding: 0,
59
+ margin: -1,
60
+ overflow: "hidden",
61
+ clip: "rect(0, 0, 0, 0)",
62
+ whiteSpace: "nowrap",
63
+ borderWidth: 0,
64
+ ...style
65
+ },
66
+ children: currentAnnouncement
67
+ })
68
+ ]
69
+ });
70
+ }
71
+
72
+ export { ARIA_ANNOUNCE_DELAY, AriaAnnouncerProvider };
73
+ //# sourceMappingURL=AriaAnnouncerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaAnnouncerProvider.js","sources":["../src/aria-announcer/AriaAnnouncerProvider.tsx"],"sourcesContent":["import {\n useState,\n useCallback,\n useRef,\n useMemo,\n useEffect,\n CSSProperties,\n ReactNode,\n} from \"react\";\n\nimport { AriaAnnouncerContext } from \"./AriaAnnouncerContext\";\n\nexport const ARIA_ANNOUNCE_DELAY = 150;\n\nexport interface AriaAnnouncerProviderProps {\n children?: ReactNode;\n /**\n * Style overrides for the aria-live element\n */\n style?: CSSProperties;\n}\n\nexport function AriaAnnouncerProvider({\n children,\n style,\n}: AriaAnnouncerProviderProps) {\n // announcement that gets rendered inside aria-live and read out by screen readers\n const [currentAnnouncement, setCurrentAnnouncement] = useState(\"\");\n // queue that stores all the requested announcements\n const announcementsRef = useRef<string[]>([]);\n // we use this variable to decide whether to start the announcement queue if one is not already in progress\n const isAnnouncingRef = useRef(false);\n // we need to keep track of the state of the component mount since all the async function calls\n // might trigger a setState after a component has been unmounted\n const mountedRef = useRef(true);\n\n // announceAll will get called recursively until all the announcements are rendered and cleared from the queue\n const announceAll = useCallback(() => {\n isAnnouncingRef.current = true;\n if (announcementsRef.current.length && mountedRef.current) {\n setCurrentAnnouncement(\"\");\n requestAnimationFrame(() => {\n if (mountedRef.current) {\n const announcement = announcementsRef.current.shift() as string;\n setCurrentAnnouncement(announcement);\n setTimeout(() => {\n announceAll();\n }, ARIA_ANNOUNCE_DELAY);\n }\n });\n } else {\n isAnnouncingRef.current = false;\n }\n }, []);\n\n const announce = useCallback(\n (announcement: string) => {\n announcementsRef.current.push(announcement);\n if (!isAnnouncingRef.current) {\n announceAll();\n }\n },\n [announceAll]\n );\n\n useEffect(\n () => () => {\n mountedRef.current = false;\n },\n []\n );\n\n const value = useMemo(() => ({ announce }), [announce]);\n return (\n <AriaAnnouncerContext.Provider value={value}>\n {children}\n <div\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n // hidden styling based on https://tailwindcss.com/docs/screen-readers\n style={{\n position: \"absolute\",\n height: 1,\n width: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n borderWidth: 0,\n ...style,\n }}\n >\n {currentAnnouncement}\n </div>\n </AriaAnnouncerContext.Provider>\n );\n}\n"],"names":[],"mappings":";;;;AAYO,MAAM,mBAAsB,GAAA,IAAA;AAU5B,SAAS,qBAAsB,CAAA;AAAA,EACpC,QAAA;AAAA,EACA,KAAA;AACF,CAA+B,EAAA;AAE7B,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AAEjE,EAAM,MAAA,gBAAA,GAAmB,MAAiB,CAAA,EAAE,CAAA,CAAA;AAE5C,EAAM,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA,CAAA;AAGpC,EAAM,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAG9B,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,eAAA,CAAgB,OAAU,GAAA,IAAA,CAAA;AAC1B,IAAA,IAAI,gBAAiB,CAAA,OAAA,CAAQ,MAAU,IAAA,UAAA,CAAW,OAAS,EAAA;AACzD,MAAA,sBAAA,CAAuB,EAAE,CAAA,CAAA;AACzB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,WAAW,OAAS,EAAA;AACtB,UAAM,MAAA,YAAA,GAAe,gBAAiB,CAAA,OAAA,CAAQ,KAAM,EAAA,CAAA;AACpD,UAAA,sBAAA,CAAuB,YAAY,CAAA,CAAA;AACnC,UAAA,UAAA,CAAW,MAAM;AACf,YAAY,WAAA,EAAA,CAAA;AAAA,aACX,mBAAmB,CAAA,CAAA;AAAA,SACxB;AAAA,OACD,CAAA,CAAA;AAAA,KACI,MAAA;AACL,MAAA,eAAA,CAAgB,OAAU,GAAA,KAAA,CAAA;AAAA,KAC5B;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,CAAC,YAAyB,KAAA;AACxB,MAAiB,gBAAA,CAAA,OAAA,CAAQ,KAAK,YAAY,CAAA,CAAA;AAC1C,MAAI,IAAA,CAAC,gBAAgB,OAAS,EAAA;AAC5B,QAAY,WAAA,EAAA,CAAA;AAAA,OACd;AAAA,KACF;AAAA,IACA,CAAC,WAAW,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,SAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,UAAA,CAAW,OAAU,GAAA,KAAA,CAAA;AAAA,KACvB;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,KAAA,GAAQ,QAAQ,OAAO,EAAE,UAAa,CAAA,EAAA,CAAC,QAAQ,CAAC,CAAA,CAAA;AACtD,EACE,uBAAA,IAAA,CAAC,qBAAqB,QAArB,EAAA;AAAA,IAA8B,KAAA;AAAA,IAC5B,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACA,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,aAAY,EAAA,MAAA;AAAA,QACZ,WAAU,EAAA,WAAA;AAAA,QAEV,KAAO,EAAA;AAAA,UACL,QAAU,EAAA,UAAA;AAAA,UACV,MAAQ,EAAA,CAAA;AAAA,UACR,KAAO,EAAA,CAAA;AAAA,UACP,OAAS,EAAA,CAAA;AAAA,UACT,MAAQ,EAAA,CAAA,CAAA;AAAA,UACR,QAAU,EAAA,QAAA;AAAA,UACV,IAAM,EAAA,kBAAA;AAAA,UACN,UAAY,EAAA,QAAA;AAAA,UACZ,WAAa,EAAA,CAAA;AAAA,UACb,GAAG,KAAA;AAAA,SACL;AAAA,QAEC,QAAA,EAAA,mBAAA;AAAA,OACH,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,61 @@
1
+ import { useContext, useRef, useCallback, useMemo, useEffect } from 'react';
2
+ import { debounce } from '../utils/debounce.js';
3
+ import '../utils/useId.js';
4
+ import '../salt-provider/SaltProvider.js';
5
+ import '../viewport/ViewportProvider.js';
6
+ import { AriaAnnouncerContext } from './AriaAnnouncerContext.js';
7
+
8
+ let warnedOnce = false;
9
+ const useAriaAnnouncer = ({
10
+ debounce: debounceInterval = 0
11
+ } = {}) => {
12
+ const context = useContext(AriaAnnouncerContext);
13
+ const mountedRef = useRef(true);
14
+ const baseAnnounce = useCallback(
15
+ (announcement, delay) => {
16
+ const isReactAnnouncerInstalled = context && context.announce;
17
+ if (process.env.NODE_ENV !== "production") {
18
+ if (isReactAnnouncerInstalled && warnedOnce) {
19
+ console.warn(
20
+ "useAriaAnnouncer is being used without an AriaAnnouncerProvider. Your application should be wrapped in an AriaAnnouncerProvider"
21
+ );
22
+ warnedOnce = true;
23
+ }
24
+ }
25
+ function makeAnnouncement() {
26
+ if (mountedRef.current) {
27
+ if (isReactAnnouncerInstalled) {
28
+ context.announce(announcement);
29
+ }
30
+ }
31
+ }
32
+ if (delay) {
33
+ setTimeout(makeAnnouncement, delay);
34
+ } else {
35
+ makeAnnouncement();
36
+ }
37
+ },
38
+ [context]
39
+ );
40
+ const announce = useMemo(
41
+ () => debounceInterval > 0 ? debounce(baseAnnounce, debounceInterval) : baseAnnounce,
42
+ [baseAnnounce, debounceInterval]
43
+ );
44
+ const ariaAnnouncer = useMemo(
45
+ () => ({
46
+ ...context,
47
+ announce
48
+ }),
49
+ [context, announce]
50
+ );
51
+ useEffect(
52
+ () => () => {
53
+ mountedRef.current = false;
54
+ },
55
+ []
56
+ );
57
+ return ariaAnnouncer;
58
+ };
59
+
60
+ export { useAriaAnnouncer };
61
+ //# sourceMappingURL=useAriaAnnouncer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAriaAnnouncer.js","sources":["../src/aria-announcer/useAriaAnnouncer.ts"],"sourcesContent":["import { useCallback, useContext, useEffect, useMemo, useRef } from \"react\";\nimport { debounce } from \"../utils\";\nimport { AriaAnnouncer, AriaAnnouncerContext } from \"./AriaAnnouncerContext\";\n\nexport type useAnnouncerOptions = {\n debounce?: number;\n};\nexport type useAriaAnnouncerHook = (\n options?: useAnnouncerOptions\n) => AriaAnnouncer;\n\nlet warnedOnce = false;\n\nexport const useAriaAnnouncer: useAriaAnnouncerHook = ({\n debounce: debounceInterval = 0,\n} = {}) => {\n const context = useContext(AriaAnnouncerContext);\n const mountedRef = useRef(true);\n const baseAnnounce = useCallback(\n (announcement: string, delay?: number) => {\n const isReactAnnouncerInstalled = context && context.announce;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (isReactAnnouncerInstalled && warnedOnce) {\n console.warn(\n \"useAriaAnnouncer is being used without an AriaAnnouncerProvider. Your application should be wrapped in an AriaAnnouncerProvider\"\n );\n warnedOnce = true;\n }\n }\n\n function makeAnnouncement() {\n if (mountedRef.current) {\n if (isReactAnnouncerInstalled) {\n context.announce(announcement);\n }\n }\n }\n\n if (delay) {\n setTimeout(makeAnnouncement, delay);\n } else {\n makeAnnouncement();\n }\n },\n [context]\n );\n\n const announce = useMemo(\n () =>\n debounceInterval > 0\n ? debounce(baseAnnounce, debounceInterval)\n : baseAnnounce,\n [baseAnnounce, debounceInterval]\n );\n\n const ariaAnnouncer = useMemo(\n () => ({\n ...context,\n announce,\n }),\n [context, announce]\n );\n\n useEffect(\n () => () => {\n mountedRef.current = false;\n },\n []\n );\n\n return ariaAnnouncer;\n};\n"],"names":[],"mappings":";;;;;;;AAWA,IAAI,UAAa,GAAA,KAAA,CAAA;AAEV,MAAM,mBAAyC,CAAC;AAAA,EACrD,UAAU,gBAAmB,GAAA,CAAA;AAC/B,CAAA,GAAI,EAAO,KAAA;AACT,EAAM,MAAA,OAAA,GAAU,WAAW,oBAAoB,CAAA,CAAA;AAC/C,EAAM,MAAA,UAAA,GAAa,OAAO,IAAI,CAAA,CAAA;AAC9B,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,cAAsB,KAAmB,KAAA;AACxC,MAAM,MAAA,yBAAA,GAA4B,WAAW,OAAQ,CAAA,QAAA,CAAA;AAErD,MAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,QAAA,IAAI,6BAA6B,UAAY,EAAA;AAC3C,UAAQ,OAAA,CAAA,IAAA;AAAA,YACN,iIAAA;AAAA,WACF,CAAA;AACA,UAAa,UAAA,GAAA,IAAA,CAAA;AAAA,SACf;AAAA,OACF;AAEA,MAAA,SAAS,gBAAmB,GAAA;AAC1B,QAAA,IAAI,WAAW,OAAS,EAAA;AACtB,UAAA,IAAI,yBAA2B,EAAA;AAC7B,YAAA,OAAA,CAAQ,SAAS,YAAY,CAAA,CAAA;AAAA,WAC/B;AAAA,SACF;AAAA,OACF;AAEA,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,UAAA,CAAW,kBAAkB,KAAK,CAAA,CAAA;AAAA,OAC7B,MAAA;AACL,QAAiB,gBAAA,EAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAA,MAAM,QAAW,GAAA,OAAA;AAAA,IACf,MACE,gBAAmB,GAAA,CAAA,GACf,QAAS,CAAA,YAAA,EAAc,gBAAgB,CACvC,GAAA,YAAA;AAAA,IACN,CAAC,cAAc,gBAAgB,CAAA;AAAA,GACjC,CAAA;AAEA,EAAA,MAAM,aAAgB,GAAA,OAAA;AAAA,IACpB,OAAO;AAAA,MACL,GAAG,OAAA;AAAA,MACH,QAAA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,SAAS,QAAQ,CAAA;AAAA,GACpB,CAAA;AAEA,EAAA,SAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,UAAA,CAAW,OAAU,GAAA,KAAA,CAAA;AAAA,KACvB;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAO,OAAA,aAAA,CAAA;AACT;;;;"}
@@ -0,0 +1,7 @@
1
+ import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = "/* Style applied to BorderItem when `sticky` positioning is on */\n.saltBorderItem-sticky {\n position: sticky;\n overflow: auto;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n";
4
+ styleInject(css_248z);
5
+
6
+ export { css_248z as default };
7
+ //# sourceMappingURL=BorderItem.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BorderItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,45 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import cx from 'classnames';
4
+ import { GridItem } from '../grid-item/GridItem.js';
5
+ import './BorderItem.css.js';
6
+ import { makePrefixer } from '../utils/makePrefixer.js';
7
+ import '../utils/useId.js';
8
+ import '../salt-provider/SaltProvider.js';
9
+ import '../viewport/ViewportProvider.js';
10
+
11
+ const BORDER_POSITION = [
12
+ "north",
13
+ "west",
14
+ "center",
15
+ "east",
16
+ "south"
17
+ ];
18
+ const withBaseName = makePrefixer("saltBorderItem");
19
+ const BorderItem = forwardRef(
20
+ ({
21
+ children,
22
+ className,
23
+ position,
24
+ sticky = false,
25
+ style,
26
+ ...rest
27
+ }, ref) => {
28
+ const gridItemStyles = {
29
+ ...style,
30
+ "--gridItem-gridArea": position
31
+ };
32
+ return /* @__PURE__ */ jsx(GridItem, {
33
+ ref,
34
+ className: cx(withBaseName(), className, "saltGridItem-area", {
35
+ [withBaseName("sticky")]: sticky
36
+ }),
37
+ style: gridItemStyles,
38
+ ...rest,
39
+ children
40
+ });
41
+ }
42
+ );
43
+
44
+ export { BORDER_POSITION, BorderItem };
45
+ //# sourceMappingURL=BorderItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BorderItem.js","sources":["../src/border-item/BorderItem.tsx"],"sourcesContent":["import { forwardRef, ElementType, ReactElement } from \"react\";\nimport cx from \"classnames\";\nimport { GridItem, GridItemProps } from \"../grid-item\";\nimport \"./BorderItem.css\";\nimport {\n makePrefixer,\n PolymorphicComponentPropWithRef,\n PolymorphicRef,\n} from \"../utils\";\n\nexport const BORDER_POSITION = [\n \"north\",\n \"west\",\n \"center\",\n \"east\",\n \"south\",\n] as const;\n\nexport type BorderPosition = typeof BORDER_POSITION[number];\n\nexport type BorderItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Aligns a grid item inside a cell along the inline (row) axis. Defaults to \"stretch\"\n */\n horizontalAlignment?: GridItemProps<T>[\"horizontalAlignment\"];\n /**\n * Aligns a grid item inside a cell along the block (column) axis. Defaults to \"stretch\"\n */\n verticalAlignment?: GridItemProps<T>[\"verticalAlignment\"];\n /**\n * Position in the border layout\n */\n position: BorderPosition;\n /**\n * Defines if the item should stick to the edges of its container. Defaults to \"false\"\n */\n sticky?: boolean;\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltBorderItem\");\n\ntype BorderItemComponent = <T extends ElementType = \"div\">(\n props: BorderItemProps<T>\n) => ReactElement | null;\n\nexport const BorderItem: BorderItemComponent = forwardRef(\n <T extends ElementType>(\n {\n children,\n className,\n position,\n sticky = false,\n style,\n ...rest\n }: BorderItemProps<T>,\n ref?: PolymorphicRef<T>\n ) => {\n const gridItemStyles = {\n ...style,\n \"--gridItem-gridArea\": position,\n };\n\n return (\n <GridItem\n ref={ref}\n className={cx(withBaseName(), className, \"saltGridItem-area\", {\n [withBaseName(\"sticky\")]: sticky,\n })}\n style={gridItemStyles}\n {...rest}\n >\n {children}\n </GridItem>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;AAUO,MAAM,eAAkB,GAAA;AAAA,EAC7B,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AACF,EAAA;AA2BA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA,CAAA;AAM3C,MAAM,UAAkC,GAAA,UAAA;AAAA,EAC7C,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAS,GAAA,KAAA;AAAA,IACT,KAAA;AAAA,IACG,GAAA,IAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,GAAG,KAAA;AAAA,MACH,qBAAuB,EAAA,QAAA;AAAA,KACzB,CAAA;AAEA,IAAA,uBACG,GAAA,CAAA,QAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,EAAA,CAAG,YAAa,EAAA,EAAG,WAAW,mBAAqB,EAAA;AAAA,QAC5D,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,OAC3B,CAAA;AAAA,MACD,KAAO,EAAA,cAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,51 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, Children, useEffect } from 'react';
3
+ import cx from 'classnames';
4
+ import { GridLayout } from '../grid-layout/GridLayout.js';
5
+ import { makePrefixer } from '../utils/makePrefixer.js';
6
+ import '../utils/useId.js';
7
+ import '../salt-provider/SaltProvider.js';
8
+ import '../viewport/ViewportProvider.js';
9
+
10
+ const withBaseName = makePrefixer("saltBorderLayout");
11
+ const numberOfColumns = 3;
12
+ const BorderLayout = forwardRef(
13
+ ({ children, className, gap, style, ...rest }, ref) => {
14
+ const borderAreas = Children.map(
15
+ children,
16
+ (child) => child.props.position
17
+ );
18
+ const topSection = borderAreas.includes("north") ? "north ".repeat(numberOfColumns) : "none ".repeat(numberOfColumns);
19
+ const leftSection = borderAreas.includes("west") ? "west" : "center";
20
+ const rightSection = borderAreas.includes("east") ? "east" : "center";
21
+ const midSection = `${leftSection} center ${rightSection}`;
22
+ const bottomSection = borderAreas.includes("south") ? "south ".repeat(numberOfColumns) : "none ".repeat(numberOfColumns);
23
+ const gridTemplateAreas = `"${topSection}" "${midSection}" "${bottomSection}"`;
24
+ const hasMainSection = borderAreas.includes("center");
25
+ useEffect(() => {
26
+ if (process.env.NODE_ENV !== "production") {
27
+ if (!hasMainSection) {
28
+ console.warn(
29
+ "No main section has been found. A main section should be provided."
30
+ );
31
+ }
32
+ }
33
+ }, [hasMainSection]);
34
+ const borderLayoutStyles = {
35
+ ...style,
36
+ "--gridLayout-gridTemplate": gridTemplateAreas
37
+ };
38
+ return /* @__PURE__ */ jsx(GridLayout, {
39
+ className: cx(withBaseName(), className, "saltGridLayout-area"),
40
+ columns: numberOfColumns,
41
+ gap: gap || 0,
42
+ style: borderLayoutStyles,
43
+ ref,
44
+ ...rest,
45
+ children
46
+ });
47
+ }
48
+ );
49
+
50
+ export { BorderLayout };
51
+ //# sourceMappingURL=BorderLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BorderLayout.js","sources":["../src/border-layout/BorderLayout.tsx"],"sourcesContent":["import {\n Children,\n forwardRef,\n ReactElement,\n useEffect,\n ElementType,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { GridLayout, GridLayoutProps } from \"../grid-layout\";\nimport {\n makePrefixer,\n PolymorphicRef,\n PolymorphicComponentPropWithRef,\n} from \"../utils\";\nimport { BorderItemProps } from \"../border-item\";\n\nexport type BorderLayoutProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Defines the size of the gutter between the columns and the rows by setting a density multiplier. Defaults to 0\n */\n gap?: GridLayoutProps<T>[\"gap\"];\n /**\n * Defines the size of the gutter between the columns by setting a density multiplier. Defaults to 0\n */\n columnGap?: GridLayoutProps<T>[\"columnGap\"];\n /**\n * Defines the size of the gutter between the rows by setting a density multiplier. Defaults to 0\n */\n rowGap?: GridLayoutProps<T>[\"rowGap\"];\n /**\n * Border item components to be rendered.\n */\n children: ReactElement<BorderItemProps<T>>[];\n }\n >;\n\nconst withBaseName = makePrefixer(\"saltBorderLayout\");\n\nconst numberOfColumns = 3;\n\ntype BorderLayoutComponent = <T extends ElementType = \"div\">(\n props: BorderLayoutProps<T>\n) => ReactElement | null;\n\nexport const BorderLayout: BorderLayoutComponent = forwardRef(\n <T extends ElementType>(\n { children, className, gap, style, ...rest }: BorderLayoutProps<T>,\n ref?: PolymorphicRef<T>\n ) => {\n const borderAreas = Children.map(\n children,\n (child: ReactElement<BorderItemProps<T>>) => child.props.position\n );\n\n const topSection = borderAreas.includes(\"north\")\n ? \"north \".repeat(numberOfColumns)\n : \"none \".repeat(numberOfColumns);\n\n const leftSection = borderAreas.includes(\"west\") ? \"west\" : \"center\";\n\n const rightSection = borderAreas.includes(\"east\") ? \"east\" : \"center\";\n\n const midSection = `${leftSection} center ${rightSection}`;\n\n const bottomSection = borderAreas.includes(\"south\")\n ? \"south \".repeat(numberOfColumns)\n : \"none \".repeat(numberOfColumns);\n\n const gridTemplateAreas = `\"${topSection}\" \"${midSection}\" \"${bottomSection}\"`;\n\n const hasMainSection = borderAreas.includes(\"center\");\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!hasMainSection) {\n console.warn(\n \"No main section has been found. A main section should be provided.\"\n );\n }\n }\n }, [hasMainSection]);\n\n const borderLayoutStyles = {\n ...style,\n \"--gridLayout-gridTemplate\": gridTemplateAreas,\n };\n\n return (\n <GridLayout\n className={cx(withBaseName(), className, \"saltGridLayout-area\")}\n columns={numberOfColumns}\n gap={gap || 0}\n style={borderLayoutStyles}\n ref={ref}\n {...rest}\n >\n {children}\n </GridLayout>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;AAwCA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAEpD,MAAM,eAAkB,GAAA,CAAA,CAAA;AAMjB,MAAM,YAAsC,GAAA,UAAA;AAAA,EACjD,CACE,EAAE,QAAU,EAAA,SAAA,EAAW,KAAK,KAAU,EAAA,GAAA,IAAA,IACtC,GACG,KAAA;AACH,IAAA,MAAM,cAAc,QAAS,CAAA,GAAA;AAAA,MAC3B,QAAA;AAAA,MACA,CAAC,KAA4C,KAAA,KAAA,CAAM,KAAM,CAAA,QAAA;AAAA,KAC3D,CAAA;AAEA,IAAM,MAAA,UAAA,GAAa,WAAY,CAAA,QAAA,CAAS,OAAO,CAAA,GAC3C,QAAS,CAAA,MAAA,CAAO,eAAe,CAAA,GAC/B,OAAQ,CAAA,MAAA,CAAO,eAAe,CAAA,CAAA;AAElC,IAAA,MAAM,WAAc,GAAA,WAAA,CAAY,QAAS,CAAA,MAAM,IAAI,MAAS,GAAA,QAAA,CAAA;AAE5D,IAAA,MAAM,YAAe,GAAA,WAAA,CAAY,QAAS,CAAA,MAAM,IAAI,MAAS,GAAA,QAAA,CAAA;AAE7D,IAAM,MAAA,UAAA,GAAa,GAAG,WAAsB,CAAA,QAAA,EAAA,YAAA,CAAA,CAAA,CAAA;AAE5C,IAAM,MAAA,aAAA,GAAgB,WAAY,CAAA,QAAA,CAAS,OAAO,CAAA,GAC9C,QAAS,CAAA,MAAA,CAAO,eAAe,CAAA,GAC/B,OAAQ,CAAA,MAAA,CAAO,eAAe,CAAA,CAAA;AAElC,IAAM,MAAA,iBAAA,GAAoB,CAAI,CAAA,EAAA,UAAA,CAAA,GAAA,EAAgB,UAAgB,CAAA,GAAA,EAAA,aAAA,CAAA,CAAA,CAAA,CAAA;AAE9D,IAAM,MAAA,cAAA,GAAiB,WAAY,CAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AAEpD,IAAA,SAAA,CAAU,MAAM;AACd,MAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,QAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,UAAQ,OAAA,CAAA,IAAA;AAAA,YACN,oEAAA;AAAA,WACF,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF,EAAG,CAAC,cAAc,CAAC,CAAA,CAAA;AAEnB,IAAA,MAAM,kBAAqB,GAAA;AAAA,MACzB,GAAG,KAAA;AAAA,MACH,2BAA6B,EAAA,iBAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,uBACG,GAAA,CAAA,UAAA,EAAA;AAAA,MACC,SAAW,EAAA,EAAA,CAAG,YAAa,EAAA,EAAG,WAAW,qBAAqB,CAAA;AAAA,MAC9D,OAAS,EAAA,eAAA;AAAA,MACT,KAAK,GAAO,IAAA,CAAA;AAAA,MACZ,KAAO,EAAA,kBAAA;AAAA,MACP,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,11 @@
1
+ const breakpoints = {
2
+ xs: 0,
3
+ sm: 600,
4
+ md: 960,
5
+ lg: 1280,
6
+ xl: 1920
7
+ };
8
+ const DEFAULT_BREAKPOINTS = breakpoints;
9
+
10
+ export { DEFAULT_BREAKPOINTS };
11
+ //# sourceMappingURL=Breakpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breakpoints.js","sources":["../src/breakpoints/Breakpoints.tsx"],"sourcesContent":["export type Breakpoints = {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n};\n\nconst breakpoints: Breakpoints = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n};\n\nexport const DEFAULT_BREAKPOINTS = breakpoints;\n"],"names":[],"mappings":"AAQA,MAAM,WAA2B,GAAA;AAAA,EAC/B,EAAI,EAAA,CAAA;AAAA,EACJ,EAAI,EAAA,GAAA;AAAA,EACJ,EAAI,EAAA,GAAA;AAAA,EACJ,EAAI,EAAA,IAAA;AAAA,EACJ,EAAI,EAAA,IAAA;AACN,CAAA,CAAA;AAEO,MAAM,mBAAsB,GAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = "/* Styles applied to the root element if variant=\"cta\" */\n.saltButton-cta {\n --button-background: var(--salt-actionable-cta-background);\n --button-background-active: var(--salt-actionable-cta-background-active);\n --button-background-disabled: var(--salt-actionable-cta-background-disabled);\n --button-background-hover: var(--salt-actionable-cta-background-hover);\n --button-fontWeight: var(--salt-actionable-cta-fontWeight);\n --button-text-color: var(--salt-actionable-cta-foreground);\n --button-text-color-active: var(--salt-actionable-cta-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-cta-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-cta-foreground-hover);\n}\n\n/* Icon API in \"CTA\" variant @ignore */\n.saltButton-cta {\n --saltIcon-color: var(--salt-actionable-cta-foreground);\n}\n.saltButton-cta:hover {\n --saltIcon-color: var(--salt-actionable-cta-foreground-hover);\n}\n.saltButton-cta:active,\n.saltButton-cta.saltButton-active {\n --saltIcon-color: var(--salt-actionable-cta-foreground-active);\n}\n.saltButton-cta.saltButton-disabled {\n --saltIcon-color: var(--salt-actionable-cta-foreground-disabled);\n}\n\n/* Styles applied to the root element if variant=\"primary\" (or no variant specified) */\n.saltButton-primary {\n --button-background: var(--salt-actionable-primary-background);\n --button-background-active: var(--salt-actionable-primary-background-active);\n --button-background-disabled: var(--salt-actionable-primary-background-disabled);\n --button-background-hover: var(--salt-actionable-primary-background-hover);\n --button-fontWeight: var(--salt-actionable-primary-fontWeight);\n --button-text-color: var(--salt-actionable-primary-foreground);\n --button-text-color-active: var(--salt-actionable-primary-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-primary-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-primary-foreground-hover);\n}\n\n/* Icon API in \"primary\" variant @ignore */\n.saltButton-primary {\n --saltIcon-color: var(--salt-actionable-primary-foreground);\n}\n.saltButton-primary:hover {\n --saltIcon-color: var(--salt-actionable-primary-foreground-hover);\n}\n.saltButton-primary:active,\n.saltButton-primary.saltButton-active {\n --saltIcon-color: var(--salt-actionable-primary-foreground-active);\n}\n.saltButton-primary.saltButton-disabled {\n --saltIcon-color: var(--salt-actionable-primary-foreground-disabled);\n}\n\n/* Styles applied to the root element if variant=\"secondary\" */\n.saltButton-secondary {\n --button-background: var(--salt-actionable-secondary-background);\n --button-background-active: var(--salt-actionable-secondary-background-active);\n --button-background-disabled: var(--salt-actionable-secondary-background-disabled);\n --button-background-hover: var(--salt-actionable-secondary-background-hover);\n --button-fontWeight: var(--salt-actionable-secondary-fontWeight);\n --button-text-color: var(--salt-actionable-secondary-foreground);\n --button-text-color-active: var(--salt-actionable-secondary-foreground-active);\n --button-text-color-disabled: var(--salt-actionable-secondary-foreground-disabled);\n --button-text-color-hover: var(--salt-actionable-secondary-foreground-hover);\n}\n\n/* Icon API in \"secondary\" variant @ignore */\n.saltButton-secondary {\n --saltIcon-color: var(--salt-actionable-secondary-foreground);\n}\n\n.saltButton-secondary:hover {\n --saltIcon-color: var(--salt-actionable-secondary-foreground-hover);\n}\n.saltButton-secondary:active,\n.saltButton-secondary.saltButton-active {\n --saltIcon-color: var(--salt-actionable-secondary-foreground-active);\n}\n.saltButton-secondary.saltButton-disabled {\n --saltIcon-color: var(--salt-actionable-secondary-foreground-disabled);\n}\n\n.saltButton {\n align-items: var(--saltButton-alignItems, center);\n appearance: none;\n background: var(--saltButton-background, var(--button-background));\n border-color: var(--saltButton-borderColor, transparent);\n border-style: var(--saltButton-borderStyle, solid);\n border-width: var(--saltButton-borderWidth, 0);\n border-radius: var(--saltButton-borderRadius, 0);\n color: var(--saltButton-text-color, var(--button-text-color));\n cursor: var(--saltButton-cursor, pointer);\n display: inline-flex;\n justify-content: var(--saltButton-justifyContent, center);\n font-size: var(--saltButton-fontSize, var(--salt-text-fontSize));\n font-family: var(--saltButton-fontFamily, var(--salt-text-fontFamily));\n line-height: var(--saltButton-lineHeight, var(--salt-text-lineHeight));\n letter-spacing: var(--saltButton-letterSpacing, var(--salt-actionable-letterSpacing));\n text-transform: var(--saltButton-textTransform, var(--salt-actionable-textTransform));\n padding: 0 var(--saltButton-padding, var(--salt-size-unit));\n margin: var(--saltButton-margin, 0);\n height: var(--saltButton-height, var(--salt-size-base));\n min-width: var(--saltButton-minWidth, unset);\n min-height: 0;\n position: relative;\n text-align: var(--saltButton-textAlign, var(--salt-actionable-textAlign));\n text-decoration: none;\n transition: none;\n user-select: none;\n width: var(--saltButton-width, auto);\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n /* Styles applied to align children*/\n font-weight: var(--saltButton-fontWeight, var(--button-fontWeight));\n white-space: pre;\n}\n\n/* Pseudo-class applied to the root element on focus */\n.saltButton:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n background: var(--saltButton-background-hover, var(--button-background-hover));\n color: var(--saltButton-text-color-hover, var(--button-text-color-hover));\n}\n\n/* Pseudo-class applied to the root element on focus when Button is active */\n.saltButton.saltButton-active:focus-visible,\n.saltButton:focus-visible(:active) {\n background: var(--saltButton-background-active-hover, var(--button-background));\n color: var(--saltButton-text-color-active-hover, var(--button-text-color));\n}\n\n/* Pseudo-class applied to the root element on hover when Button is not active or disabled */\n.saltButton:hover {\n background: var(--saltButton-background-hover, var(--button-background-hover));\n color: var(--saltButton-text-color-hover, var(--button-text-color-hover));\n}\n\n/* Pseudo-class applied to the root element when Button is active and not disabled */\n.saltButton:active,\n.saltButton.saltButton-active {\n background: var(--saltButton-background-active, var(--button-background-active));\n color: var(--saltButton-text-color-active, var(--button-text-color-active));\n}\n\n/* Pseudo-class applied to the root element if disabled={true} */\n.saltButton:disabled,\n.saltButton-disabled,\n /* Overrides to apply the disabled style when the button is focusable while also disabled */\n.saltButton-disabled:active,\n.saltButton-disabled:focus-visible,\n.saltButton-disabled:hover {\n background: var(--saltButton-background-disabled, var(--button-background-disabled));\n color: var(--saltButton-text-color-disabled, var(--button-text-color-disabled));\n cursor: var(--saltButton-cursor-disabled, var(--salt-actionable-cursor-disabled));\n}\n\n.saltButton[href] {\n display: inline-flex;\n}\n";
4
+ styleInject(css_248z);
5
+
6
+ export { css_248z as default };
7
+ //# sourceMappingURL=Button.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,51 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import cx from 'classnames';
4
+ import { makePrefixer } from '../utils/makePrefixer.js';
5
+ import '../utils/useId.js';
6
+ import '../salt-provider/SaltProvider.js';
7
+ import '../viewport/ViewportProvider.js';
8
+ import './Button.css.js';
9
+ import { useButton } from './useButton.js';
10
+
11
+ const withBaseName = makePrefixer("saltButton");
12
+ const ButtonVariantValues = ["primary", "secondary", "cta"];
13
+ const Button = forwardRef(
14
+ function Button2({
15
+ children,
16
+ className,
17
+ disabled,
18
+ focusableWhenDisabled,
19
+ onKeyUp,
20
+ onKeyDown,
21
+ onBlur,
22
+ onClick,
23
+ type = "button",
24
+ variant = "primary",
25
+ ...restProps
26
+ }, ref) {
27
+ const { active, buttonProps } = useButton({
28
+ disabled,
29
+ focusableWhenDisabled,
30
+ onKeyUp,
31
+ onKeyDown,
32
+ onBlur,
33
+ onClick
34
+ });
35
+ const { tabIndex, ...restButtonProps } = buttonProps;
36
+ return /* @__PURE__ */ jsx("button", {
37
+ ...restButtonProps,
38
+ className: cx(withBaseName(), className, withBaseName(variant), {
39
+ [withBaseName("disabled")]: disabled,
40
+ [withBaseName("active")]: active
41
+ }),
42
+ ...restProps,
43
+ ref,
44
+ type,
45
+ children
46
+ });
47
+ }
48
+ );
49
+
50
+ export { Button, ButtonVariantValues };
51
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../src/button/Button.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, ReactElement } from \"react\";\nimport cx from \"classnames\";\nimport { makePrefixer } from \"../utils\";\n\nimport \"./Button.css\";\nimport { useButton } from \"./useButton\";\n\nconst withBaseName = makePrefixer(\"saltButton\");\n\nexport const ButtonVariantValues = [\"primary\", \"secondary\", \"cta\"] as const;\nexport type ButtonVariant = typeof ButtonVariantValues[number];\n\nexport interface ButtonProps extends ComponentPropsWithoutRef<\"button\"> {\n /**\n * If `true`, the button will be disabled.\n */\n disabled?: boolean;\n /**\n * If `true`, the button will be focusable when disabled.\n */\n focusableWhenDisabled?: boolean;\n /**\n * The variant to use. Options are 'primary', 'secondary' and 'cta'.\n * 'primary' is the default value.\n */\n variant?: ButtonVariant;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n children,\n className,\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onBlur,\n onClick,\n type = \"button\",\n variant = \"primary\",\n ...restProps\n },\n ref?\n ): ReactElement<ButtonProps> {\n const { active, buttonProps } = useButton({\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onBlur,\n onClick,\n });\n // we do not want to spread tab index in this case because the button element\n // does not require tabindex=\"0\" attribute\n const { tabIndex, ...restButtonProps } = buttonProps;\n return (\n <button\n {...restButtonProps}\n className={cx(withBaseName(), className, withBaseName(variant), {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"active\")]: active,\n })}\n {...restProps}\n ref={ref}\n type={type}\n >\n {children}\n </button>\n );\n }\n);\n"],"names":["Button"],"mappings":";;;;;;;;;;AAOA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA,CAAA;AAEvC,MAAM,mBAAsB,GAAA,CAAC,SAAW,EAAA,WAAA,EAAa,KAAK,EAAA;AAmB1D,MAAM,MAAS,GAAA,UAAA;AAAA,EACpB,SAASA,OACP,CAAA;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,qBAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAO,GAAA,QAAA;AAAA,IACP,OAAU,GAAA,SAAA;AAAA,IACP,GAAA,SAAA;AAAA,KAEL,GAC2B,EAAA;AAC3B,IAAA,MAAM,EAAE,MAAA,EAAQ,WAAY,EAAA,GAAI,SAAU,CAAA;AAAA,MACxC,QAAA;AAAA,MACA,qBAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,EAAE,QAAa,EAAA,GAAA,eAAA,EAAoB,GAAA,WAAA,CAAA;AACzC,IAAA,uBACG,GAAA,CAAA,QAAA,EAAA;AAAA,MACE,GAAG,eAAA;AAAA,MACJ,WAAW,EAAG,CAAA,YAAA,IAAgB,SAAW,EAAA,YAAA,CAAa,OAAO,CAAG,EAAA;AAAA,QAC9D,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,OAC3B,CAAA;AAAA,MACA,GAAG,SAAA;AAAA,MACJ,GAAA;AAAA,MACA,IAAA;AAAA,MAEC,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,61 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ const useButton = ({
4
+ disabled,
5
+ focusableWhenDisabled,
6
+ onKeyUp,
7
+ onKeyDown,
8
+ onClick,
9
+ onBlur
10
+ }) => {
11
+ const [keyIsDown, setkeyIsDown] = useState("");
12
+ const [active, setActive] = useState(false);
13
+ const enter = "Enter";
14
+ const space = " ";
15
+ useEffect(() => {
16
+ const t = setTimeout(() => {
17
+ if (keyIsDown !== enter && keyIsDown !== space) {
18
+ setActive(false);
19
+ }
20
+ }, 0);
21
+ return () => {
22
+ clearTimeout(t);
23
+ };
24
+ }, [active, keyIsDown]);
25
+ const handleKeyUp = (event) => {
26
+ setkeyIsDown("");
27
+ setActive(false);
28
+ onKeyUp == null ? void 0 : onKeyUp(event);
29
+ };
30
+ const handleClick = (event) => {
31
+ setActive(true);
32
+ onClick == null ? void 0 : onClick(event);
33
+ };
34
+ const handleBlur = (event) => {
35
+ setActive(false);
36
+ onBlur == null ? void 0 : onBlur(event);
37
+ };
38
+ const handleKeyDown = (event) => {
39
+ if (event.key === enter || event.key === space) {
40
+ setkeyIsDown(event.key);
41
+ setActive(true);
42
+ }
43
+ onKeyDown == null ? void 0 : onKeyDown(event);
44
+ };
45
+ const buttonProps = {
46
+ "aria-disabled": disabled && focusableWhenDisabled ? true : void 0,
47
+ disabled: disabled && !focusableWhenDisabled,
48
+ tabIndex: disabled && !focusableWhenDisabled ? -1 : 0,
49
+ onBlur: handleBlur,
50
+ onClick: !disabled ? handleClick : void 0,
51
+ onKeyDown: handleKeyDown,
52
+ onKeyUp: handleKeyUp
53
+ };
54
+ return {
55
+ active,
56
+ buttonProps
57
+ };
58
+ };
59
+
60
+ export { useButton };
61
+ //# sourceMappingURL=useButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useButton.js","sources":["../src/button/useButton.ts"],"sourcesContent":["import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ButtonHookProps<T extends Element> {\n disabled?: boolean;\n focusableWhenDisabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface ButtonHookResult<T extends Element> {\n active: boolean;\n buttonProps: {\n \"aria-disabled\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useButton = <T extends Element>({\n disabled,\n focusableWhenDisabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: ButtonHookProps<T>): ButtonHookResult<T> => {\n const [keyIsDown, setkeyIsDown] = useState(\"\");\n const [active, setActive] = useState(false);\n\n const enter = \"Enter\";\n const space = \" \";\n\n useEffect(() => {\n const t = setTimeout(() => {\n // This key state check is to stop continual visual state change when using Enter Key, which the browser treats as both key and click events on a Button\n // This key state check also fixes Firefox Button where Space key is pressed but button fails to be in active state\n if (keyIsDown !== enter && keyIsDown !== space) {\n setActive(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(t);\n };\n }, [active, keyIsDown]);\n\n const handleKeyUp = (event: KeyboardEvent<T>) => {\n setkeyIsDown(\"\");\n setActive(false);\n onKeyUp?.(event);\n };\n\n const handleClick = (event: MouseEvent<T>) => {\n setActive(true);\n onClick?.(event);\n };\n\n const handleBlur = (event: FocusEvent<T>) => {\n setActive(false);\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<T>) => {\n if (event.key === enter || event.key === space) {\n setkeyIsDown(event.key);\n setActive(true);\n }\n\n onKeyDown?.(event);\n };\n\n const buttonProps = {\n \"aria-disabled\": disabled && focusableWhenDisabled ? true : undefined,\n disabled: disabled && !focusableWhenDisabled,\n tabIndex: disabled && !focusableWhenDisabled ? -1 : 0,\n onBlur: handleBlur,\n onClick: !disabled ? handleClick : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n };\n\n return {\n active,\n buttonProps,\n };\n};\n"],"names":[],"mappings":";;AA8BO,MAAM,YAAY,CAAoB;AAAA,EAC3C,QAAA;AAAA,EACA,qBAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AACF,CAA+C,KAAA;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE1C,EAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,EAAA,MAAM,KAAQ,GAAA,GAAA,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,CAAA,GAAI,WAAW,MAAM;AAGzB,MAAI,IAAA,SAAA,KAAc,KAAS,IAAA,SAAA,KAAc,KAAO,EAAA;AAC9C,QAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AAAA,OACjB;AAAA,OACC,CAAC,CAAA,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,CAAC,CAAA,CAAA;AAAA,KAChB,CAAA;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAC/C,IAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACf,IAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyB,KAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AACd,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAAyB,KAAA;AAC3C,IAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,IAAS,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACX,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAA4B,KAAA;AACjD,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,KAAS,IAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AAC9C,MAAA,YAAA,CAAa,MAAM,GAAG,CAAA,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AAAA,KAChB;AAEA,IAAY,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,eAAA,EAAiB,QAAY,IAAA,qBAAA,GAAwB,IAAO,GAAA,KAAA,CAAA;AAAA,IAC5D,QAAA,EAAU,YAAY,CAAC,qBAAA;AAAA,IACvB,QAAU,EAAA,QAAA,IAAY,CAAC,qBAAA,GAAwB,CAAK,CAAA,GAAA,CAAA;AAAA,IACpD,MAAQ,EAAA,UAAA;AAAA,IACR,OAAA,EAAS,CAAC,QAAA,GAAW,WAAc,GAAA,KAAA,CAAA;AAAA,IACnC,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA,WAAA;AAAA,GACX,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -0,0 +1,7 @@
1
+ import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = "/* Default variables applied to the root element */\n.saltFlexItem {\n --saltFlexItem-alignment: auto;\n --saltFlexItem-shrink: 1;\n --saltFlexItem-grow: 0;\n}\n\n/* Style applied to the root element */\n.saltFlexItem {\n position: relative;\n align-self: var(--saltFlexItem-alignment);\n flex-grow: var(--saltFlexItem-grow);\n flex-shrink: var(--saltFlexItem-shrink);\n}\n\n.saltFlexItem-stacked {\n flex-grow: 2;\n}\n";
4
+ styleInject(css_248z);
5
+
6
+ export { css_248z as default };
7
+ //# sourceMappingURL=FlexItem.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlexItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,47 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { makePrefixer } from '../utils/makePrefixer.js';
4
+ import '../utils/useId.js';
5
+ import { useResponsiveProp } from '../utils/useResponsiveProp.js';
6
+ import './FlexItem.css.js';
7
+ import cx from 'classnames';
8
+
9
+ const withBaseName = makePrefixer("saltFlexItem");
10
+ const FLEX_ITEM_ALIGNMENTS = [
11
+ "start",
12
+ "end",
13
+ "center",
14
+ "stretch"
15
+ ];
16
+ const FlexItem = forwardRef(
17
+ ({
18
+ as,
19
+ align,
20
+ children,
21
+ className,
22
+ shrink,
23
+ grow,
24
+ style,
25
+ ...rest
26
+ }, ref) => {
27
+ const Component = as || "div";
28
+ const flexItemShrink = useResponsiveProp(shrink, 1);
29
+ const flexItemGrow = useResponsiveProp(grow, 0);
30
+ const itemStyle = {
31
+ "--saltFlexItem-alignment": align,
32
+ "--saltFlexItem-shrink": flexItemShrink,
33
+ "--saltFlexItem-grow": flexItemGrow,
34
+ ...style
35
+ };
36
+ return /* @__PURE__ */ jsx(Component, {
37
+ className: cx(className, withBaseName()),
38
+ ref,
39
+ style: itemStyle,
40
+ ...rest,
41
+ children
42
+ });
43
+ }
44
+ );
45
+
46
+ export { FLEX_ITEM_ALIGNMENTS, FlexItem };
47
+ //# sourceMappingURL=FlexItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlexItem.js","sources":["../src/flex-item/FlexItem.tsx"],"sourcesContent":["import { forwardRef, ElementType, ReactElement } from \"react\";\nimport {\n makePrefixer,\n ResponsiveProp,\n useResponsiveProp,\n PolymorphicComponentPropWithRef,\n PolymorphicRef,\n} from \"../utils\";\nimport \"./FlexItem.css\";\nimport cx from \"classnames\";\n\nconst withBaseName = makePrefixer(\"saltFlexItem\");\nexport const FLEX_ITEM_ALIGNMENTS = [\n \"start\",\n \"end\",\n \"center\",\n \"stretch\",\n] as const;\n\nexport type flexItemAlignment = typeof FLEX_ITEM_ALIGNMENTS[number];\n\nexport type FlexItemProps<T extends ElementType> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * Allows the alignment specified by parent to be overridden for individual items, default is \"start\".\n */\n align?: flexItemAlignment;\n /**\n * Defines the ability for an item to shrink x times more compared to it's siblings, default is 1.\n\n */\n shrink?: ResponsiveProp<number>;\n /**\n * Defines the ability for an item to grow x times more compared to it's siblings, default is 0.\n */\n grow?: ResponsiveProp<number>;\n }\n >;\n\ntype FlexItemComponent = <T extends ElementType = \"div\">(\n props: FlexItemProps<T>\n) => ReactElement | null;\n\nexport const FlexItem: FlexItemComponent = forwardRef(\n <T extends ElementType = \"div\">(\n {\n as,\n align,\n children,\n className,\n shrink,\n grow,\n style,\n ...rest\n }: FlexItemProps<T>,\n ref?: PolymorphicRef<T>\n ) => {\n const Component = as || \"div\";\n const flexItemShrink = useResponsiveProp(shrink, 1);\n const flexItemGrow = useResponsiveProp(grow, 0);\n\n const itemStyle = {\n \"--saltFlexItem-alignment\": align,\n \"--saltFlexItem-shrink\": flexItemShrink,\n \"--saltFlexItem-grow\": flexItemGrow,\n ...style,\n };\n return (\n <Component\n className={cx(className, withBaseName())}\n ref={ref}\n style={itemStyle}\n {...rest}\n >\n {children}\n </Component>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,cAAc,CAAA,CAAA;AACzC,MAAM,oBAAuB,GAAA;AAAA,EAClC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AACF,EAAA;AA4BO,MAAM,QAA8B,GAAA,UAAA;AAAA,EACzC,CACE;AAAA,IACE,EAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACG,GAAA,IAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,YAAY,EAAM,IAAA,KAAA,CAAA;AACxB,IAAM,MAAA,cAAA,GAAiB,iBAAkB,CAAA,MAAA,EAAQ,CAAC,CAAA,CAAA;AAClD,IAAM,MAAA,YAAA,GAAe,iBAAkB,CAAA,IAAA,EAAM,CAAC,CAAA,CAAA;AAE9C,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,0BAA4B,EAAA,KAAA;AAAA,MAC5B,uBAAyB,EAAA,cAAA;AAAA,MACzB,qBAAuB,EAAA,YAAA;AAAA,MACvB,GAAG,KAAA;AAAA,KACL,CAAA;AACA,IAAA,uBACG,GAAA,CAAA,SAAA,EAAA;AAAA,MACC,SAAW,EAAA,EAAA,CAAG,SAAW,EAAA,YAAA,EAAc,CAAA;AAAA,MACvC,GAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,7 @@
1
+ import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = ".salt-density-touch {\n --flexLayout-gap-density-multiplier: 2;\n}\n\n/* Default variables applied to the root element */\n.saltFlexLayout {\n --flexLayout-gap-multiplier: var(--flexLayout-gap-density-multiplier, 3);\n --flexLayout-layout-display: flex;\n --flexLayout-direction: row;\n --flexLayout-wrap: nowrap;\n --flexLayout-justify: flex-start;\n --flexLayout-align: stretch;\n --flexLayout-separator: var(--salt-size-border);\n --flexLayout-gap: calc(var(--salt-size-unit) * var(--flexLayout-gap-multiplier));\n}\n\n/* Style applied to the root element */\n.saltFlexLayout {\n gap: var(--flexLayout-gap);\n display: var(--flexLayout-layout-display);\n flex-direction: var(--flexLayout-direction);\n flex-wrap: var(--flexLayout-wrap);\n justify-content: var(--flexLayout-justify);\n align-items: var(--flexLayout-align);\n}\n\n.saltFlexLayout-separator-wrapper {\n display: contents;\n}\n.saltFlexLayout-separator > *:not(:last-child)::after {\n position: relative;\n display: block;\n content: \"\";\n background-color: var(--salt-separable-secondary-borderColor);\n}\n\n/* Row separator */\n\n.saltFlexLayout-separator-row > .saltFlexLayout-separator-wrapper {\n height: 100%;\n}\n\n.saltFlexLayout-separator-row > *:not(:last-child)::after {\n width: var(--flexLayout-separator);\n top: 0;\n}\n.saltFlexLayout-separator-row-start > *:not(:last-child)::after {\n right: calc(var(--flexLayout-gap) * 1);\n}\n.saltFlexLayout-separator-row-center > *:not(:last-child)::after {\n right: 0;\n}\n.saltFlexLayout-separator-row-end > *:not(:last-child)::after {\n right: calc(var(--flexLayout-gap) * -1);\n}\n\n/* Column separator */\n.saltFlexLayout-separator-column > .saltFlexLayout-separator-wrapper {\n width: 100%;\n}\n\n.saltFlexLayout-separator-column > *:not(:last-child)::after {\n height: var(--flexLayout-separator);\n left: 0;\n width: 100%;\n}\n.saltFlexLayout-separator-column-start > *:not(:last-child)::after {\n bottom: calc(var(--flexLayout-gap) * 1);\n}\n.saltFlexLayout-separator-column-center > *:not(:last-child)::after {\n bottom: 0;\n}\n.saltFlexLayout-separator-column-end > *:not(:last-child)::after {\n bottom: calc(var(--flexLayout-gap) * -1);\n}\n";
4
+ styleInject(css_248z);
5
+
6
+ export { css_248z as default };
7
+ //# sourceMappingURL=FlexLayout.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlexLayout.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}