@salt-ds/lab 1.0.0-alpha.14 → 1.0.0-alpha.16

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 (287) hide show
  1. package/dist-cjs/badge/Badge.css.js +1 -1
  2. package/dist-cjs/badge/Badge.js +7 -23
  3. package/dist-cjs/badge/Badge.js.map +1 -1
  4. package/dist-cjs/combo-box-next/ComboBoxNext.css.js +6 -0
  5. package/dist-cjs/combo-box-next/ComboBoxNext.css.js.map +1 -0
  6. package/dist-cjs/combo-box-next/ComboBoxNext.js +177 -0
  7. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -0
  8. package/dist-cjs/combo-box-next/useComboBox.js +137 -0
  9. package/dist-cjs/combo-box-next/useComboBox.js.map +1 -0
  10. package/dist-cjs/combo-box-next/useComboboxPortal.js +69 -0
  11. package/dist-cjs/combo-box-next/useComboboxPortal.js.map +1 -0
  12. package/dist-cjs/combo-box-next/utils.js +40 -0
  13. package/dist-cjs/combo-box-next/utils.js.map +1 -0
  14. package/dist-cjs/content-status/ContentStatus.js +0 -2
  15. package/dist-cjs/content-status/ContentStatus.js.map +1 -1
  16. package/dist-cjs/content-status/internal/StatusIndicator.js +0 -2
  17. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  18. package/dist-cjs/dialog/Dialog.css.js +1 -1
  19. package/dist-cjs/dialog/Dialog.js +53 -56
  20. package/dist-cjs/dialog/Dialog.js.map +1 -1
  21. package/dist-cjs/dialog/DialogActions.css.js +1 -1
  22. package/dist-cjs/dialog/DialogActions.js +15 -17
  23. package/dist-cjs/dialog/DialogActions.js.map +1 -1
  24. package/dist-cjs/dialog/DialogCloseButton.css.js +6 -0
  25. package/dist-cjs/dialog/DialogCloseButton.css.js.map +1 -0
  26. package/dist-cjs/dialog/DialogCloseButton.js +39 -0
  27. package/dist-cjs/dialog/DialogCloseButton.js.map +1 -0
  28. package/dist-cjs/dialog/DialogContent.css.js +1 -1
  29. package/dist-cjs/dialog/DialogContent.js +20 -29
  30. package/dist-cjs/dialog/DialogContent.js.map +1 -1
  31. package/dist-cjs/dialog/{internal/DialogContext.js → DialogContext.js} +4 -0
  32. package/dist-cjs/dialog/DialogContext.js.map +1 -0
  33. package/dist-cjs/dialog/DialogTitle.css.js +1 -1
  34. package/dist-cjs/dialog/DialogTitle.js +40 -41
  35. package/dist-cjs/dialog/DialogTitle.js.map +1 -1
  36. package/dist-cjs/dialog/useDialog.js +31 -0
  37. package/dist-cjs/dialog/useDialog.js.map +1 -0
  38. package/dist-cjs/drawer/Drawer.css.js +1 -1
  39. package/dist-cjs/drawer/Drawer.js +39 -45
  40. package/dist-cjs/drawer/Drawer.js.map +1 -1
  41. package/dist-cjs/drawer/useDrawer.js +31 -0
  42. package/dist-cjs/drawer/useDrawer.js.map +1 -0
  43. package/dist-cjs/dropdown-next/DropdownNext.css.js +6 -0
  44. package/dist-cjs/dropdown-next/DropdownNext.css.js.map +1 -0
  45. package/dist-cjs/dropdown-next/DropdownNext.js +181 -0
  46. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -0
  47. package/dist-cjs/dropdown-next/useDropdownNext.js +169 -0
  48. package/dist-cjs/dropdown-next/useDropdownNext.js.map +1 -0
  49. package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
  50. package/dist-cjs/index.js +19 -13
  51. package/dist-cjs/index.js.map +1 -1
  52. package/dist-cjs/list/Highlighter.js +1 -1
  53. package/dist-cjs/list/Highlighter.js.map +1 -1
  54. package/dist-cjs/list-next/ListItemNext.css.js +1 -1
  55. package/dist-cjs/list-next/ListItemNext.js +17 -6
  56. package/dist-cjs/list-next/ListItemNext.js.map +1 -1
  57. package/dist-cjs/list-next/ListNext.js +21 -10
  58. package/dist-cjs/list-next/ListNext.js.map +1 -1
  59. package/dist-cjs/list-next/ListNextContext.js.map +1 -1
  60. package/dist-cjs/list-next/useList.js +96 -37
  61. package/dist-cjs/list-next/useList.js.map +1 -1
  62. package/dist-cjs/logo/Logo.css.js +1 -1
  63. package/dist-cjs/logo/LogoImage.css.js +6 -0
  64. package/dist-cjs/logo/LogoImage.css.js.map +1 -0
  65. package/dist-cjs/logo/LogoImage.js +9 -0
  66. package/dist-cjs/logo/LogoImage.js.map +1 -1
  67. package/dist-cjs/logo/LogoSeparator.css.js +1 -1
  68. package/dist-cjs/{nav-item/ExpansionButton.js → navigation-item/ExpansionIcon.js} +8 -13
  69. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -0
  70. package/dist-cjs/navigation-item/NavigationItem.css.js +6 -0
  71. package/dist-cjs/navigation-item/NavigationItem.css.js.map +1 -0
  72. package/dist-cjs/navigation-item/NavigationItem.js +96 -0
  73. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -0
  74. package/dist-cjs/progress/CircularProgress/CircularProgress.css.js +1 -1
  75. package/dist-cjs/progress/CircularProgress/CircularProgress.js +44 -51
  76. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  77. package/dist-cjs/progress/LinearProgress/LinearProgress.css.js +1 -1
  78. package/dist-cjs/progress/LinearProgress/LinearProgress.js +9 -49
  79. package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
  80. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.css.js +1 -1
  81. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js +5 -13
  82. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  83. package/dist-cjs/stepped-tracker/SteppedTracker.css.js +1 -1
  84. package/dist-cjs/stepped-tracker/SteppedTracker.js +0 -5
  85. package/dist-cjs/stepped-tracker/SteppedTracker.js.map +1 -1
  86. package/dist-cjs/stepped-tracker/SteppedTrackerContext.js +1 -7
  87. package/dist-cjs/stepped-tracker/SteppedTrackerContext.js.map +1 -1
  88. package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.css.js +1 -1
  89. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
  90. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +2 -14
  91. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  92. package/dist-cjs/switch/Switch.css.js +1 -1
  93. package/dist-cjs/switch/Switch.js +67 -72
  94. package/dist-cjs/switch/Switch.js.map +1 -1
  95. package/dist-cjs/toast-group/ToastGroup.css.js +6 -0
  96. package/dist-cjs/toast-group/ToastGroup.css.js.map +1 -0
  97. package/dist-cjs/toast-group/ToastGroup.js +32 -0
  98. package/dist-cjs/toast-group/ToastGroup.js.map +1 -0
  99. package/dist-es/badge/Badge.css.js +1 -1
  100. package/dist-es/badge/Badge.js +9 -25
  101. package/dist-es/badge/Badge.js.map +1 -1
  102. package/dist-es/combo-box-next/ComboBoxNext.css.js +4 -0
  103. package/dist-es/combo-box-next/ComboBoxNext.css.js.map +1 -0
  104. package/dist-es/combo-box-next/ComboBoxNext.js +173 -0
  105. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -0
  106. package/dist-es/combo-box-next/useComboBox.js +133 -0
  107. package/dist-es/combo-box-next/useComboBox.js.map +1 -0
  108. package/dist-es/combo-box-next/useComboboxPortal.js +65 -0
  109. package/dist-es/combo-box-next/useComboboxPortal.js.map +1 -0
  110. package/dist-es/combo-box-next/utils.js +35 -0
  111. package/dist-es/combo-box-next/utils.js.map +1 -0
  112. package/dist-es/content-status/ContentStatus.js +0 -2
  113. package/dist-es/content-status/ContentStatus.js.map +1 -1
  114. package/dist-es/content-status/internal/StatusIndicator.js +0 -2
  115. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  116. package/dist-es/dialog/Dialog.css.js +1 -1
  117. package/dist-es/dialog/Dialog.js +53 -56
  118. package/dist-es/dialog/Dialog.js.map +1 -1
  119. package/dist-es/dialog/DialogActions.css.js +1 -1
  120. package/dist-es/dialog/DialogActions.js +15 -17
  121. package/dist-es/dialog/DialogActions.js.map +1 -1
  122. package/dist-es/dialog/DialogCloseButton.css.js +4 -0
  123. package/dist-es/dialog/DialogCloseButton.css.js.map +1 -0
  124. package/dist-es/dialog/DialogCloseButton.js +31 -0
  125. package/dist-es/dialog/DialogCloseButton.js.map +1 -0
  126. package/dist-es/dialog/DialogContent.css.js +1 -1
  127. package/dist-es/dialog/DialogContent.js +20 -29
  128. package/dist-es/dialog/DialogContent.js.map +1 -1
  129. package/dist-es/dialog/DialogContext.js +9 -0
  130. package/dist-es/dialog/DialogContext.js.map +1 -0
  131. package/dist-es/dialog/DialogTitle.css.js +1 -1
  132. package/dist-es/dialog/DialogTitle.js +37 -42
  133. package/dist-es/dialog/DialogTitle.js.map +1 -1
  134. package/dist-es/dialog/useDialog.js +27 -0
  135. package/dist-es/dialog/useDialog.js.map +1 -0
  136. package/dist-es/drawer/Drawer.css.js +1 -1
  137. package/dist-es/drawer/Drawer.js +40 -46
  138. package/dist-es/drawer/Drawer.js.map +1 -1
  139. package/dist-es/drawer/useDrawer.js +27 -0
  140. package/dist-es/drawer/useDrawer.js.map +1 -0
  141. package/dist-es/dropdown-next/DropdownNext.css.js +4 -0
  142. package/dist-es/dropdown-next/DropdownNext.css.js.map +1 -0
  143. package/dist-es/dropdown-next/DropdownNext.js +177 -0
  144. package/dist-es/dropdown-next/DropdownNext.js.map +1 -0
  145. package/dist-es/dropdown-next/useDropdownNext.js +165 -0
  146. package/dist-es/dropdown-next/useDropdownNext.js.map +1 -0
  147. package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
  148. package/dist-es/index.js +9 -6
  149. package/dist-es/index.js.map +1 -1
  150. package/dist-es/list/Highlighter.js +1 -1
  151. package/dist-es/list/Highlighter.js.map +1 -1
  152. package/dist-es/list-next/ListItemNext.css.js +1 -1
  153. package/dist-es/list-next/ListItemNext.js +17 -6
  154. package/dist-es/list-next/ListItemNext.js.map +1 -1
  155. package/dist-es/list-next/ListNext.js +21 -10
  156. package/dist-es/list-next/ListNext.js.map +1 -1
  157. package/dist-es/list-next/ListNextContext.js.map +1 -1
  158. package/dist-es/list-next/useList.js +98 -39
  159. package/dist-es/list-next/useList.js.map +1 -1
  160. package/dist-es/logo/Logo.css.js +1 -1
  161. package/dist-es/logo/LogoImage.css.js +4 -0
  162. package/dist-es/logo/LogoImage.css.js.map +1 -0
  163. package/dist-es/logo/LogoImage.js +9 -0
  164. package/dist-es/logo/LogoImage.js.map +1 -1
  165. package/dist-es/logo/LogoSeparator.css.js +1 -1
  166. package/dist-es/navigation-item/ExpansionIcon.js +27 -0
  167. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -0
  168. package/dist-es/navigation-item/NavigationItem.css.js +4 -0
  169. package/dist-es/navigation-item/NavigationItem.css.js.map +1 -0
  170. package/dist-es/navigation-item/NavigationItem.js +92 -0
  171. package/dist-es/navigation-item/NavigationItem.js.map +1 -0
  172. package/dist-es/progress/CircularProgress/CircularProgress.css.js +1 -1
  173. package/dist-es/progress/CircularProgress/CircularProgress.js +45 -52
  174. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  175. package/dist-es/progress/LinearProgress/LinearProgress.css.js +1 -1
  176. package/dist-es/progress/LinearProgress/LinearProgress.js +9 -49
  177. package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
  178. package/dist-es/stepped-tracker/StepLabel/StepLabel.css.js +1 -1
  179. package/dist-es/stepped-tracker/StepLabel/StepLabel.js +7 -15
  180. package/dist-es/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  181. package/dist-es/stepped-tracker/SteppedTracker.css.js +1 -1
  182. package/dist-es/stepped-tracker/SteppedTracker.js +1 -6
  183. package/dist-es/stepped-tracker/SteppedTracker.js.map +1 -1
  184. package/dist-es/stepped-tracker/SteppedTrackerContext.js +1 -7
  185. package/dist-es/stepped-tracker/SteppedTrackerContext.js.map +1 -1
  186. package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.css.js +1 -1
  187. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js +1 -1
  188. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +3 -15
  189. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  190. package/dist-es/switch/Switch.css.js +1 -1
  191. package/dist-es/switch/Switch.js +70 -75
  192. package/dist-es/switch/Switch.js.map +1 -1
  193. package/dist-es/toast-group/ToastGroup.css.js +4 -0
  194. package/dist-es/toast-group/ToastGroup.css.js.map +1 -0
  195. package/dist-es/toast-group/ToastGroup.js +28 -0
  196. package/dist-es/toast-group/ToastGroup.js.map +1 -0
  197. package/dist-types/badge/Badge.d.ts +5 -16
  198. package/dist-types/combo-box-next/ComboBoxNext.d.ts +70 -0
  199. package/dist-types/combo-box-next/index.d.ts +1 -0
  200. package/dist-types/combo-box-next/useComboBox.d.ts +34 -0
  201. package/dist-types/combo-box-next/useComboboxPortal.d.ts +15 -0
  202. package/dist-types/combo-box-next/utils.d.ts +8 -0
  203. package/dist-types/content-status/internal/StatusIndicator.d.ts +2 -2
  204. package/dist-types/dialog/Dialog.d.ts +17 -12
  205. package/dist-types/dialog/DialogActions.d.ts +1 -3
  206. package/dist-types/dialog/DialogCloseButton.d.ts +3 -0
  207. package/dist-types/dialog/DialogContent.d.ts +1 -3
  208. package/dist-types/dialog/DialogContext.d.ts +9 -0
  209. package/dist-types/dialog/DialogTitle.d.ts +7 -8
  210. package/dist-types/dialog/index.d.ts +4 -2
  211. package/dist-types/dialog/useDialog.d.ts +27 -0
  212. package/dist-types/drawer/Drawer.d.ts +3 -12
  213. package/dist-types/drawer/index.d.ts +1 -0
  214. package/dist-types/drawer/useDrawer.d.ts +27 -0
  215. package/dist-types/dropdown-next/DropdownNext.d.ts +42 -0
  216. package/dist-types/dropdown-next/index.d.ts +1 -0
  217. package/dist-types/dropdown-next/useDropdownNext.d.ts +31 -0
  218. package/dist-types/index.d.ts +4 -3
  219. package/dist-types/list-next/ListItemNext.d.ts +6 -1
  220. package/dist-types/list-next/ListNext.d.ts +7 -2
  221. package/dist-types/list-next/ListNextContext.d.ts +4 -2
  222. package/dist-types/list-next/useList.d.ts +16 -9
  223. package/dist-types/navigation-item/ExpansionIcon.d.ts +3 -0
  224. package/dist-types/navigation-item/NavigationItem.d.ts +36 -0
  225. package/dist-types/navigation-item/index.d.ts +1 -0
  226. package/dist-types/progress/CircularProgress/CircularProgress.d.ts +1 -21
  227. package/dist-types/progress/LinearProgress/LinearProgress.d.ts +1 -26
  228. package/dist-types/stepped-tracker/StepLabel/StepLabel.d.ts +3 -5
  229. package/dist-types/stepped-tracker/SteppedTrackerContext.d.ts +1 -4
  230. package/dist-types/stepped-tracker/TrackerStep/index.d.ts +0 -1
  231. package/dist-types/switch/Switch.d.ts +43 -6
  232. package/dist-types/toast-group/ToastGroup.d.ts +5 -0
  233. package/dist-types/toast-group/index.d.ts +1 -0
  234. package/package.json +5 -5
  235. package/dist-cjs/control-label/ControlLabel.css.js +0 -6
  236. package/dist-cjs/control-label/ControlLabel.css.js.map +0 -1
  237. package/dist-cjs/control-label/ControlLabel.js +0 -48
  238. package/dist-cjs/control-label/ControlLabel.js.map +0 -1
  239. package/dist-cjs/dialog/internal/DialogContext.js.map +0 -1
  240. package/dist-cjs/multiline-input/MultilineInput.css.js +0 -6
  241. package/dist-cjs/multiline-input/MultilineInput.css.js.map +0 -1
  242. package/dist-cjs/multiline-input/MultilineInput.js +0 -162
  243. package/dist-cjs/multiline-input/MultilineInput.js.map +0 -1
  244. package/dist-cjs/nav-item/ExpansionButton.js.map +0 -1
  245. package/dist-cjs/nav-item/NavItem.css.js +0 -6
  246. package/dist-cjs/nav-item/NavItem.css.js.map +0 -1
  247. package/dist-cjs/nav-item/NavItem.js +0 -78
  248. package/dist-cjs/nav-item/NavItem.js.map +0 -1
  249. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js +0 -21
  250. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js.map +0 -1
  251. package/dist-cjs/stepped-tracker/useDetectTruncatedText.js +0 -71
  252. package/dist-cjs/stepped-tracker/useDetectTruncatedText.js.map +0 -1
  253. package/dist-cjs/switch/assets/CheckedIcon.js +0 -34
  254. package/dist-cjs/switch/assets/CheckedIcon.js.map +0 -1
  255. package/dist-es/control-label/ControlLabel.css.js +0 -4
  256. package/dist-es/control-label/ControlLabel.css.js.map +0 -1
  257. package/dist-es/control-label/ControlLabel.js +0 -43
  258. package/dist-es/control-label/ControlLabel.js.map +0 -1
  259. package/dist-es/dialog/internal/DialogContext.js +0 -6
  260. package/dist-es/dialog/internal/DialogContext.js.map +0 -1
  261. package/dist-es/multiline-input/MultilineInput.css.js +0 -4
  262. package/dist-es/multiline-input/MultilineInput.css.js.map +0 -1
  263. package/dist-es/multiline-input/MultilineInput.js +0 -158
  264. package/dist-es/multiline-input/MultilineInput.js.map +0 -1
  265. package/dist-es/nav-item/ExpansionButton.js +0 -32
  266. package/dist-es/nav-item/ExpansionButton.js.map +0 -1
  267. package/dist-es/nav-item/NavItem.css.js +0 -4
  268. package/dist-es/nav-item/NavItem.css.js.map +0 -1
  269. package/dist-es/nav-item/NavItem.js +0 -74
  270. package/dist-es/nav-item/NavItem.js.map +0 -1
  271. package/dist-es/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js +0 -16
  272. package/dist-es/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js.map +0 -1
  273. package/dist-es/stepped-tracker/useDetectTruncatedText.js +0 -69
  274. package/dist-es/stepped-tracker/useDetectTruncatedText.js.map +0 -1
  275. package/dist-es/switch/assets/CheckedIcon.js +0 -30
  276. package/dist-es/switch/assets/CheckedIcon.js.map +0 -1
  277. package/dist-types/control-label/ControlLabel.d.ts +0 -8
  278. package/dist-types/control-label/index.d.ts +0 -1
  279. package/dist-types/dialog/internal/DialogContext.d.ts +0 -6
  280. package/dist-types/multiline-input/MultilineInput.d.ts +0 -40
  281. package/dist-types/multiline-input/index.d.ts +0 -1
  282. package/dist-types/nav-item/ExpansionButton.d.ts +0 -3
  283. package/dist-types/nav-item/NavItem.d.ts +0 -17
  284. package/dist-types/nav-item/index.d.ts +0 -1
  285. package/dist-types/stepped-tracker/TrackerStep/TrackerStepTooltipContext.d.ts +0 -7
  286. package/dist-types/stepped-tracker/useDetectTruncatedText.d.ts +0 -11
  287. package/dist-types/switch/assets/CheckedIcon.d.ts +0 -4
@@ -12,7 +12,6 @@ const withBaseName = core.makePrefixer("saltContentStatus");
12
12
  function StatusIndicator({
13
13
  status = "info",
14
14
  disableAnnouncer,
15
- unit,
16
15
  value,
17
16
  title,
18
17
  message,
@@ -31,7 +30,6 @@ function StatusIndicator({
31
30
  withBaseName("determinateLoading"),
32
31
  circularProgressClassName
33
32
  ),
34
- unit,
35
33
  value,
36
34
  ...restCircularProgressProps
37
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"StatusIndicator.js","sources":["../src/content-status/internal/StatusIndicator.tsx"],"sourcesContent":["import {\n makePrefixer,\n StatusIndicator as BaseStatusIndicator,\n StatusIndicatorProps as BaseStatusIndicatorProps,\n Spinner,\n SpinnerProps,\n} from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { clsx } from \"clsx\";\n\nimport { CircularProgress, CircularProgressProps } from \"../../progress\";\n\nexport interface StatusIndicatorProps\n extends Pick<SpinnerProps, \"disableAnnouncer\">,\n Pick<CircularProgressProps, \"unit\" | \"value\"> {\n title?: string;\n message?: string;\n CircularProgressProps?: Partial<CircularProgressProps>;\n SpinnerProps?: Partial<SpinnerProps>;\n id?: string;\n status?: BaseStatusIndicatorProps[\"status\"] | \"loading\";\n}\n\nconst withBaseName = makePrefixer(\"saltContentStatus\");\n\nexport function StatusIndicator({\n status = \"info\",\n disableAnnouncer,\n unit,\n value,\n title,\n message,\n CircularProgressProps: {\n className: circularProgressClassName,\n ...restCircularProgressProps\n } = {},\n SpinnerProps: { className: spinnerClassName, ...restSpinnerProps } = {},\n id,\n}: StatusIndicatorProps): ReactElement {\n if (status === \"loading\") {\n if (value !== undefined) {\n return (\n <CircularProgress\n aria-label={title || message}\n className={clsx(\n withBaseName(\"determinateLoading\"),\n circularProgressClassName\n )}\n unit={unit}\n value={value}\n {...restCircularProgressProps}\n />\n );\n }\n return (\n <Spinner\n className={clsx(withBaseName(\"indeterminateLoading\"), spinnerClassName)}\n // Announcement of the content status is more useful than completion announcement from spinner\n completionAnnouncement={null}\n data-testid={`spinner-${id!}`}\n disableAnnouncer={disableAnnouncer}\n {...restSpinnerProps}\n />\n );\n }\n\n return (\n <BaseStatusIndicator\n status={status}\n data-jpmui-test={`icon-${status}-${id!}`}\n size={2}\n />\n );\n}\n"],"names":["makePrefixer","jsx","CircularProgress","clsx","Spinner","BaseStatusIndicator"],"mappings":";;;;;;;;;;AAuBA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,SAAS,eAAgB,CAAA;AAAA,EAC9B,MAAS,GAAA,MAAA;AAAA,EACT,gBAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAuB,EAAA;AAAA,IACrB,SAAW,EAAA,yBAAA;AAAA,IACR,GAAA,yBAAA;AAAA,MACD,EAAC;AAAA,EACL,cAAc,EAAE,SAAA,EAAW,gBAAqB,EAAA,GAAA,gBAAA,KAAqB,EAAC;AAAA,EACtE,EAAA;AACF,CAAuC,EAAA;AACrC,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,MAAA,uBACGC,cAAA,CAAAC,iCAAA,EAAA;AAAA,QACC,cAAY,KAAS,IAAA,OAAA;AAAA,QACrB,SAAW,EAAAC,SAAA;AAAA,UACT,aAAa,oBAAoB,CAAA;AAAA,UACjC,yBAAA;AAAA,SACF;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACC,GAAG,yBAAA;AAAA,OACN,CAAA,CAAA;AAAA,KAEJ;AACA,IAAA,uBACGF,cAAA,CAAAG,YAAA,EAAA;AAAA,MACC,SAAW,EAAAD,SAAA,CAAK,YAAa,CAAA,sBAAsB,GAAG,gBAAgB,CAAA;AAAA,MAEtE,sBAAwB,EAAA,IAAA;AAAA,MACxB,eAAa,CAAW,QAAA,EAAA,EAAA,CAAA,CAAA;AAAA,MACxB,gBAAA;AAAA,MACC,GAAG,gBAAA;AAAA,KACN,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,uBACGF,cAAA,CAAAI,oBAAA,EAAA;AAAA,IACC,MAAA;AAAA,IACA,iBAAA,EAAiB,QAAQ,MAAU,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAA,IACnC,IAAM,EAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"StatusIndicator.js","sources":["../src/content-status/internal/StatusIndicator.tsx"],"sourcesContent":["import {\n makePrefixer,\n StatusIndicator as BaseStatusIndicator,\n StatusIndicatorProps as BaseStatusIndicatorProps,\n Spinner,\n SpinnerProps,\n} from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { clsx } from \"clsx\";\n\nimport { CircularProgress, CircularProgressProps } from \"../../progress\";\n\nexport interface StatusIndicatorProps\n extends Pick<SpinnerProps, \"disableAnnouncer\">,\n Pick<CircularProgressProps, \"value\"> {\n title?: string;\n message?: string;\n CircularProgressProps?: Partial<CircularProgressProps>;\n SpinnerProps?: Partial<SpinnerProps>;\n id?: string;\n status?: BaseStatusIndicatorProps[\"status\"] | \"loading\";\n}\n\nconst withBaseName = makePrefixer(\"saltContentStatus\");\n\nexport function StatusIndicator({\n status = \"info\",\n disableAnnouncer,\n value,\n title,\n message,\n CircularProgressProps: {\n className: circularProgressClassName,\n ...restCircularProgressProps\n } = {},\n SpinnerProps: { className: spinnerClassName, ...restSpinnerProps } = {},\n id,\n}: StatusIndicatorProps): ReactElement {\n if (status === \"loading\") {\n if (value !== undefined) {\n return (\n <CircularProgress\n aria-label={title || message}\n className={clsx(\n withBaseName(\"determinateLoading\"),\n circularProgressClassName\n )}\n value={value}\n {...restCircularProgressProps}\n />\n );\n }\n return (\n <Spinner\n className={clsx(withBaseName(\"indeterminateLoading\"), spinnerClassName)}\n // Announcement of the content status is more useful than completion announcement from spinner\n completionAnnouncement={null}\n data-testid={`spinner-${id!}`}\n disableAnnouncer={disableAnnouncer}\n {...restSpinnerProps}\n />\n );\n }\n\n return (\n <BaseStatusIndicator\n status={status}\n data-jpmui-test={`icon-${status}-${id!}`}\n size={2}\n />\n );\n}\n"],"names":["makePrefixer","jsx","CircularProgress","clsx","Spinner","BaseStatusIndicator"],"mappings":";;;;;;;;;;AAuBA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,SAAS,eAAgB,CAAA;AAAA,EAC9B,MAAS,GAAA,MAAA;AAAA,EACT,gBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAuB,EAAA;AAAA,IACrB,SAAW,EAAA,yBAAA;AAAA,IACR,GAAA,yBAAA;AAAA,MACD,EAAC;AAAA,EACL,cAAc,EAAE,SAAA,EAAW,gBAAqB,EAAA,GAAA,gBAAA,KAAqB,EAAC;AAAA,EACtE,EAAA;AACF,CAAuC,EAAA;AACrC,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,MAAA,uBACGC,cAAA,CAAAC,iCAAA,EAAA;AAAA,QACC,cAAY,KAAS,IAAA,OAAA;AAAA,QACrB,SAAW,EAAAC,SAAA;AAAA,UACT,aAAa,oBAAoB,CAAA;AAAA,UACjC,yBAAA;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QACC,GAAG,yBAAA;AAAA,OACN,CAAA,CAAA;AAAA,KAEJ;AACA,IAAA,uBACGF,cAAA,CAAAG,YAAA,EAAA;AAAA,MACC,SAAW,EAAAD,SAAA,CAAK,YAAa,CAAA,sBAAsB,GAAG,gBAAgB,CAAA;AAAA,MAEtE,sBAAwB,EAAA,IAAA;AAAA,MACxB,eAAa,CAAW,QAAA,EAAA,EAAA,CAAA,CAAA;AAAA,MACxB,gBAAA;AAAA,MACC,GAAG,gBAAA;AAAA,KACN,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,uBACGF,cAAA,CAAAI,oBAAA,EAAA;AAAA,IACC,MAAA;AAAA,IACA,iBAAA,EAAiB,QAAQ,MAAU,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAA,IACnC,IAAM,EAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAEJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltDialog {\n --dialog-background: var(--saltDialog-background, var(--salt-container-primary-background));\n --dialog-borderBottomWidth: var(--saltDialog-borderBottomWidth, 2px);\n --dialog-borderColor: var(--saltDialog-borderColor, var(--salt-container-primary-borderColor));\n --dialog-borderStyle: var(--saltDialog-borderStyle, var(--salt-container-borderStyle));\n --dialog-borderWidth: var(--saltDialog-borderColor, var(--salt-size-border));\n --dialog-boxShadow: var(--saltDialog-boxShadow, var(--salt-overlayable-shadow-modal));\n --dialog-margin: var(--saltDialog-margin, var(--salt-size-container-spacing));\n --dialog-padding: var(--saltDialog-padding, var(--salt-size-container-spacing));\n}\n\n.saltDialog {\n background: var(--dialog-background);\n border-color: var(--dialog-borderColor);\n border-width: var(--dialog-borderWidth);\n border-style: var(--dialog-borderStyle);\n border-bottom-width: var(--dialog-borderBottomWidth);\n display: flex;\n flex-direction: column;\n inset: 0; /* what does this do ? */\n max-height: 100%;\n max-width: 100%;\n overflow: auto;\n padding: var(--dialog-padding);\n position: relative;\n box-shadow: var(--saltDialog-boxShadow, var(--dialog-boxShadow));\n margin: var(--saltDialog-margin, var(--dialog-margin));\n}\n";
3
+ var css_248z = "/* Styles applied to Dialog component */\n.saltDialog {\n position: relative;\n display: flex;\n flex-direction: column;\n padding-top: var(--salt-spacing-300);\n padding-bottom: var(--salt-spacing-300);\n background: var(--salt-container-primary-background);\n max-height: 100%;\n max-width: 100%;\n box-shadow: var(--salt-overlayable-shadow-modal);\n z-index: calc(var(--salt-zIndex-appHeader) - 1);\n overflow-y: auto;\n}\n\n.salt-density-high {\n --saltDialog-minWidth: 240px;\n}\n\n.salt-density-medium {\n --saltDialog-minWidth: 320px;\n}\n\n.salt-density-low {\n --saltDialog-minWidth: 400px;\n}\n\n.salt-density-touch {\n --saltDialog-minWidth: 480px;\n}\n\n/* Styles applied to Dialog background overlay */\n.saltDialog-overlay {\n background: var(--salt-overlayable-background);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--salt-spacing-100);\n z-index: var(--salt-zIndex-modal);\n}\n\n/* Styles applied to Dialog when any status prop is applied */\n.saltDialog-withStatus {\n border-width: var(--salt-size-border);\n border-style: var(--salt-container-borderStyle);\n}\n\n/* Styles applied to Dialog when a status=\"info\" */\n.saltDialog-info {\n border-color: var(--salt-status-info-borderColor);\n}\n\n/* Styles applied to Dialog when a status=\"error\" */\n.saltDialog-error {\n border-color: var(--salt-status-error-borderColor);\n}\n\n/* Styles applied to Dialog when a status=\"warning\" */\n.saltDialog-warning {\n border-color: var(--salt-status-warning-borderColor);\n}\n\n/* Styles applied to Dialog when a status=\"success\" */\n.saltDialog-success {\n border-color: var(--salt-status-success-borderColor);\n}\n\n/* Styles applied when the component mounts */\n.saltDialog.saltDialog-enterAnimation {\n animation: var(--salt-animation-fade-in-center);\n}\n\n/* Styles applied when the component unmounts */\n.saltDialog.saltDialog-exitAnimation {\n animation: var(--salt-animation-fade-out-back);\n}\n\n@media screen and (min-width: 480px) {\n .saltDialog {\n min-width: var(--saltDialog-minWidth);\n }\n\n .saltDialog-overlay {\n padding: var(--salt-spacing-400);\n }\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Dialog.css.js.map
@@ -3,85 +3,82 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var core = require('@salt-ds/core');
7
- var clsx = require('clsx');
8
6
  var React = require('react');
9
- var DialogContext = require('./internal/DialogContext.js');
10
- var Scrim = require('../scrim/Scrim.js');
11
- require('../scrim/ScrimContext.js');
12
- var WindowContext = require('../window/WindowContext.js');
13
- require('../window/ElectronWindow.js');
14
- var Portal = require('../portal/Portal.js');
7
+ var clsx = require('clsx');
8
+ var react = require('@floating-ui/react');
9
+ var core = require('@salt-ds/core');
15
10
  var window = require('@salt-ds/window');
16
11
  var styles = require('@salt-ds/styles');
12
+ var useDialog = require('./useDialog.js');
17
13
  var Dialog$1 = require('./Dialog.css.js');
14
+ var DialogContext = require('./DialogContext.js');
18
15
 
19
16
  const withBaseName = core.makePrefixer("saltDialog");
20
17
  const Dialog = React.forwardRef(function Dialog2(props, ref) {
21
18
  const {
22
- autoFocusRef,
23
19
  children,
24
20
  className,
25
- height,
26
- id,
27
- onClose,
28
- open: openProp,
21
+ open = true,
22
+ onOpenChange,
29
23
  status,
30
- width,
31
- enableBackdropClick,
32
- disablePortal,
24
+ initialFocus,
33
25
  ...rest
34
26
  } = props;
27
+ const dialogId = core.useId() || "dialog";
35
28
  const targetWindow = window.useWindow();
36
29
  styles.useComponentCssInjection({
37
30
  testId: "salt-dialog",
38
31
  css: Dialog$1,
39
32
  window: targetWindow
40
33
  });
41
- const Window = WindowContext.useWindow();
42
- const [open, setOpen] = React.useState(openProp);
34
+ const [showComponent, setShowComponent] = React.useState(false);
35
+ const { floating, context, getFloatingProps } = useDialog.useDialog({
36
+ open,
37
+ onOpenChange
38
+ });
39
+ const floatingRef = core.useForkRef(floating, ref);
43
40
  React.useEffect(() => {
44
- setOpen(openProp);
45
- }, [openProp]);
46
- const dialogId = core.useId();
47
- const handleClose = React.useCallback(() => {
48
- onClose == null ? void 0 : onClose();
49
- setOpen(false);
50
- }, [onClose, setOpen]);
51
- const handleBackdropClick = React.useCallback(() => {
52
- if (enableBackdropClick) {
53
- handleClose();
41
+ if (open && !showComponent) {
42
+ setShowComponent(true);
54
43
  }
55
- }, [enableBackdropClick, handleClose]);
56
- const contentElementRef = React.useRef(null);
57
- const setContentElement = React.useCallback((node) => {
58
- contentElementRef.current = node;
59
- }, []);
60
- if (!open) {
61
- return null;
62
- }
63
- return /* @__PURE__ */ jsxRuntime.jsx(DialogContext.DialogContext.Provider, {
64
- value: { status, dialogId, setContentElement },
65
- children: /* @__PURE__ */ jsxRuntime.jsx(Portal.Portal, {
66
- disablePortal,
67
- children: /* @__PURE__ */ jsxRuntime.jsx(Scrim.Scrim, {
68
- autoFocusRef,
69
- fallbackFocusRef: contentElementRef,
70
- open,
71
- closeWithEscape: true,
72
- onBackDropClick: handleBackdropClick,
73
- onClose: handleClose,
74
- "aria-labelledby": `${dialogId}-heading`,
75
- "aria-describedby": `${dialogId}-body`,
76
- children: /* @__PURE__ */ jsxRuntime.jsx(Window, {
77
- id,
44
+ }, [open, showComponent]);
45
+ const contextValue = React.useMemo(
46
+ () => ({ dialogId, status }),
47
+ [dialogId, status]
48
+ );
49
+ return /* @__PURE__ */ jsxRuntime.jsx(react.FloatingPortal, {
50
+ children: showComponent && /* @__PURE__ */ jsxRuntime.jsx(react.FloatingOverlay, {
51
+ className: withBaseName("overlay"),
52
+ lockScroll: true,
53
+ children: /* @__PURE__ */ jsxRuntime.jsx(react.FloatingFocusManager, {
54
+ context,
55
+ modal: true,
56
+ initialFocus,
57
+ children: /* @__PURE__ */ jsxRuntime.jsx(DialogContext.DialogContext.Provider, {
58
+ value: contextValue,
78
59
  children: /* @__PURE__ */ jsxRuntime.jsx("div", {
60
+ id: dialogId,
61
+ className: clsx.clsx(
62
+ withBaseName(),
63
+ {
64
+ [withBaseName("enterAnimation")]: open,
65
+ [withBaseName("exitAnimation")]: !open,
66
+ [withBaseName("withStatus")]: status,
67
+ [withBaseName(status)]: status
68
+ },
69
+ className
70
+ ),
71
+ onAnimationEnd: () => {
72
+ if (!open && showComponent) {
73
+ setShowComponent(false);
74
+ }
75
+ },
76
+ ref: floatingRef,
77
+ "aria-labelledby": `${dialogId}-heading`,
78
+ "aria-describedby": `${dialogId}-description`,
79
+ "aria-modal": "true",
80
+ ...getFloatingProps(),
79
81
  ...rest,
80
- className: clsx.clsx(withBaseName(), className, {
81
- [withBaseName("infoShadow")]: status === "info"
82
- }),
83
- style: { width },
84
- ref,
85
82
  children
86
83
  })
87
84
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../src/dialog/Dialog.tsx"],"sourcesContent":["import { makePrefixer, useId, ValidationStatus } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n HTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { DialogContext } from \"./internal/DialogContext\";\nimport { Scrim, ScrimProps } from \"../scrim\";\nimport { useWindow as usePortalWindow } from \"../window\";\nimport { Portal } from \"../portal\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport dialogCss from \"./Dialog.css\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n autoFocusRef?: ScrimProps[\"autoFocusRef\"];\n height?: string | number;\n onClose?: () => void;\n open?: boolean;\n status?: ValidationStatus;\n width?: string | number;\n enableBackdropClick?: boolean;\n disablePortal?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltDialog\");\n\n/**\n * The Dialog is a window that contains text and interactive components.\n * By default, Dialog is non-modal, but supports modal behaviour as well.\n */\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(function Dialog(\n props,\n ref\n) {\n const {\n autoFocusRef,\n children,\n className,\n height,\n id,\n onClose,\n open: openProp,\n status,\n width,\n enableBackdropClick,\n disablePortal,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog\",\n css: dialogCss,\n window: targetWindow,\n });\n\n const Window = usePortalWindow();\n const [open, setOpen] = useState(openProp);\n\n useEffect(() => {\n setOpen(openProp);\n }, [openProp]);\n\n const dialogId = useId();\n\n const handleClose = useCallback(() => {\n onClose?.();\n setOpen(false);\n }, [onClose, setOpen]);\n\n const handleBackdropClick = useCallback(() => {\n if (enableBackdropClick) {\n handleClose();\n }\n }, [enableBackdropClick, handleClose]);\n\n const contentElementRef = useRef<HTMLDivElement | null>(null);\n\n const setContentElement = useCallback((node: HTMLDivElement) => {\n contentElementRef.current = node;\n }, []);\n\n if (!open) {\n return null;\n }\n\n return (\n <DialogContext.Provider value={{ status, dialogId, setContentElement }}>\n <Portal disablePortal={disablePortal}>\n <Scrim\n autoFocusRef={autoFocusRef}\n fallbackFocusRef={contentElementRef}\n open={open}\n closeWithEscape\n onBackDropClick={handleBackdropClick}\n onClose={handleClose}\n aria-labelledby={`${dialogId}-heading`}\n aria-describedby={`${dialogId}-body`}\n >\n <Window id={id}>\n <div\n {...rest}\n className={clsx(withBaseName(), className, {\n [withBaseName(\"infoShadow\")]: status === \"info\",\n })}\n style={{ width }}\n ref={ref}\n >\n {children}\n </div>\n </Window>\n </Scrim>\n </Portal>\n </DialogContext.Provider>\n );\n});\n"],"names":["makePrefixer","forwardRef","Dialog","useWindow","useComponentCssInjection","dialogCss","usePortalWindow","useState","useEffect","useId","useCallback","useRef","jsx","DialogContext","Portal","Scrim","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","sources":["../src/dialog/Dialog.tsx"],"sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n useEffect,\n useMemo,\n useState,\n ComponentProps,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n} from \"@floating-ui/react\";\nimport {\n makePrefixer,\n useForkRef,\n useId,\n ValidationStatus,\n} from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport { useDialog } from \"./useDialog\";\nimport dialogCss from \"./Dialog.css\";\nimport { DialogContext } from \"./DialogContext\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Display or hide the component.\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Status indicator\n * */\n status?: ValidationStatus;\n /**\n * Which element to initially focus. Can be either a number (tabbable index as specified by the order) or a ref.\n * Default value is 0 (first tabbable element).\n * */\n initialFocus?: ComponentProps<typeof FloatingFocusManager>[\"initialFocus\"];\n}\n\nconst withBaseName = makePrefixer(\"saltDialog\");\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(function Dialog(\n props,\n ref\n) {\n const {\n children,\n className,\n open = true,\n onOpenChange,\n status,\n initialFocus,\n ...rest\n } = props;\n const dialogId = useId() || \"dialog\";\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog\",\n css: dialogCss,\n window: targetWindow,\n });\n\n const [showComponent, setShowComponent] = useState(false);\n\n const { floating, context, getFloatingProps } = useDialog({\n open,\n onOpenChange,\n });\n\n const floatingRef = useForkRef<HTMLDivElement>(floating, ref);\n\n useEffect(() => {\n if (open && !showComponent) {\n setShowComponent(true);\n }\n }, [open, showComponent]);\n\n const contextValue = useMemo(\n () => ({ dialogId, status }),\n [dialogId, status]\n );\n\n return (\n <FloatingPortal>\n {showComponent && (\n <FloatingOverlay className={withBaseName(\"overlay\")} lockScroll>\n <FloatingFocusManager\n context={context}\n modal\n initialFocus={initialFocus}\n >\n <DialogContext.Provider value={contextValue}>\n <div\n id={dialogId}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"enterAnimation\")]: open,\n [withBaseName(\"exitAnimation\")]: !open,\n [withBaseName(\"withStatus\")]: status,\n [withBaseName(status as string)]: status,\n },\n className\n )}\n onAnimationEnd={() => {\n if (!open && showComponent) {\n setShowComponent(false);\n }\n }}\n ref={floatingRef}\n aria-labelledby={`${dialogId}-heading`}\n aria-describedby={`${dialogId}-description`}\n aria-modal=\"true\"\n {...getFloatingProps()}\n {...rest}\n >\n {children}\n </div>\n </DialogContext.Provider>\n </FloatingFocusManager>\n </FloatingOverlay>\n )}\n </FloatingPortal>\n );\n});\n"],"names":["makePrefixer","forwardRef","Dialog","useId","useWindow","useComponentCssInjection","dialogCss","useState","useDialog","useForkRef","useEffect","useMemo","jsx","FloatingPortal","FloatingOverlay","FloatingFocusManager","DialogContext","clsx"],"mappings":";;;;;;;;;;;;;;;AA+CA,MAAM,YAAA,GAAeA,kBAAa,YAAY,CAAA,CAAA;AAEvC,MAAM,MAAS,GAAAC,gBAAA,CAAwC,SAASC,OAAAA,CACrE,OACA,GACA,EAAA;AACA,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAO,GAAA,IAAA;AAAA,IACP,YAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAM,MAAA,QAAA,GAAWC,YAAW,IAAA,QAAA,CAAA;AAC5B,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,eAAS,KAAK,CAAA,CAAA;AAExD,EAAA,MAAM,EAAE,QAAA,EAAU,OAAS,EAAA,gBAAA,KAAqBC,mBAAU,CAAA;AAAA,IACxD,IAAA;AAAA,IACA,YAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,WAAA,GAAcC,eAA2B,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAE5D,EAAAC,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,IAAA,IAAQ,CAAC,aAAe,EAAA;AAC1B,MAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AAAA,KACvB;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,aAAa,CAAC,CAAA,CAAA;AAExB,EAAA,MAAM,YAAe,GAAAC,aAAA;AAAA,IACnB,OAAO,EAAE,QAAA,EAAU,MAAO,EAAA,CAAA;AAAA,IAC1B,CAAC,UAAU,MAAM,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,uBACGC,cAAA,CAAAC,oBAAA,EAAA;AAAA,IACE,2CACED,cAAA,CAAAE,qBAAA,EAAA;AAAA,MAAgB,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MAAG,UAAU,EAAA,IAAA;AAAA,MAC7D,QAAC,kBAAAF,cAAA,CAAAG,0BAAA,EAAA;AAAA,QACC,OAAA;AAAA,QACA,KAAK,EAAA,IAAA;AAAA,QACL,YAAA;AAAA,QAEA,QAAA,kBAAAH,cAAA,CAACI,4BAAc,QAAd,EAAA;AAAA,UAAuB,KAAO,EAAA,YAAA;AAAA,UAC7B,QAAC,kBAAAJ,cAAA,CAAA,KAAA,EAAA;AAAA,YACC,EAAI,EAAA,QAAA;AAAA,YACJ,SAAW,EAAAK,SAAA;AAAA,cACT,YAAa,EAAA;AAAA,cACb;AAAA,gBACE,CAAC,YAAa,CAAA,gBAAgB,CAAI,GAAA,IAAA;AAAA,gBAClC,CAAC,YAAA,CAAa,eAAe,CAAA,GAAI,CAAC,IAAA;AAAA,gBAClC,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,MAAA;AAAA,gBAC9B,CAAC,YAAa,CAAA,MAAgB,CAAI,GAAA,MAAA;AAAA,eACpC;AAAA,cACA,SAAA;AAAA,aACF;AAAA,YACA,gBAAgB,MAAM;AACpB,cAAI,IAAA,CAAC,QAAQ,aAAe,EAAA;AAC1B,gBAAA,gBAAA,CAAiB,KAAK,CAAA,CAAA;AAAA,eACxB;AAAA,aACF;AAAA,YACA,GAAK,EAAA,WAAA;AAAA,YACL,mBAAiB,CAAG,EAAA,QAAA,CAAA,QAAA,CAAA;AAAA,YACpB,oBAAkB,CAAG,EAAA,QAAA,CAAA,YAAA,CAAA;AAAA,YACrB,YAAW,EAAA,MAAA;AAAA,YACV,GAAG,gBAAiB,EAAA;AAAA,YACpB,GAAG,IAAA;AAAA,YAEH,QAAA;AAAA,WACH,CAAA;AAAA,SACF,CAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "";
3
+ var css_248z = ".saltDialogActions {\n padding: var(--salt-spacing-300);\n padding-bottom: 0;\n display: flex;\n justify-content: flex-end;\n gap: var(--salt-spacing-100);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=DialogActions.css.js.map
@@ -11,23 +11,21 @@ var styles = require('@salt-ds/styles');
11
11
  var DialogActions$1 = require('./DialogActions.css.js');
12
12
 
13
13
  const withBaseName = core.makePrefixer("saltDialogActions");
14
- const DialogActions = React.forwardRef(
15
- function DialogActions2(props, ref) {
16
- const targetWindow = window.useWindow();
17
- styles.useComponentCssInjection({
18
- testId: "salt-dialog-actions",
19
- css: DialogActions$1,
20
- window: targetWindow
21
- });
22
- const { className, children, ...rest } = props;
23
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
24
- ...rest,
25
- className: clsx.clsx(withBaseName(), className),
26
- ref,
27
- children
28
- });
29
- }
30
- );
14
+ const DialogActions = React.forwardRef(function DialogActions2(props, ref) {
15
+ const { children, className, ...rest } = props;
16
+ const targetWindow = window.useWindow();
17
+ styles.useComponentCssInjection({
18
+ testId: "salt-dialog-actions",
19
+ css: DialogActions$1,
20
+ window: targetWindow
21
+ });
22
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
23
+ className: clsx.clsx(withBaseName(), className),
24
+ ...rest,
25
+ ref,
26
+ children
27
+ });
28
+ });
31
29
 
32
30
  exports.DialogActions = DialogActions;
33
31
  //# sourceMappingURL=DialogActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogActions.js","sources":["../src/dialog/DialogActions.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport dialogActionsCss from \"./DialogActions.css\";\n\nexport interface DialogActionsProps extends HTMLAttributes<HTMLDivElement> {}\n\nconst withBaseName = makePrefixer(\"saltDialogActions\");\n\nexport const DialogActions = forwardRef<HTMLDivElement, DialogActionsProps>(\n function DialogActions(props, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-actions\",\n css: dialogActionsCss,\n window: targetWindow,\n });\n const { className, children, ...rest } = props;\n\n return (\n <div {...rest} className={clsx(withBaseName(), className)} ref={ref}>\n {children}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","DialogActions","useWindow","useComponentCssInjection","dialogActionsCss","jsx","clsx"],"mappings":";;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AACD,IAAA,MAAM,EAAE,SAAA,EAAW,QAAa,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAEzC,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MAAK,GAAG,IAAA;AAAA,MAAM,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MAAG,GAAA;AAAA,MACxD,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"DialogActions.js","sources":["../src/dialog/DialogActions.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport dialogActionsCss from \"./DialogActions.css\";\n\nconst withBaseName = makePrefixer(\"saltDialogActions\");\n\nexport const DialogActions = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(function DialogActions(props, ref) {\n const { children, className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-actions\",\n css: dialogActionsCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} {...rest} ref={ref}>\n {children}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","DialogActions","useWindow","useComponentCssInjection","dialogActionsCss","jsx","clsx"],"mappings":";;;;;;;;;;;;AAQA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA,CAG3B,SAASC,cAAAA,CAAc,OAAO,GAAK,EAAA;AACnC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAEzC,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,qBAAA;AAAA,IACR,GAAK,EAAAC,eAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IAAI,GAAG,IAAA;AAAA,IAAM,GAAA;AAAA,IACxD,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltButton.saltDialogCloseButton {\n position: absolute;\n top: 0;\n right: 0;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=DialogCloseButton.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogCloseButton.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var clsx = require('clsx');
8
+ var core = require('@salt-ds/core');
9
+ var window = require('@salt-ds/window');
10
+ var styles = require('@salt-ds/styles');
11
+ var icons = require('@salt-ds/icons');
12
+ var DialogCloseButton$1 = require('./DialogCloseButton.css.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
17
+
18
+ const withBaseName = core.makePrefixer("saltDialogCloseButton");
19
+ const DialogCloseButton = React.forwardRef(
20
+ function DialogCloseButton2({ className, ...rest }, ref) {
21
+ const targetWindow = window.useWindow();
22
+ styles.useComponentCssInjection({
23
+ testId: "salt-dialog-close-button",
24
+ css: DialogCloseButton$1,
25
+ window: targetWindow
26
+ });
27
+ return /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
28
+ ref,
29
+ "aria-label": "Close dialog",
30
+ variant: "secondary",
31
+ className: clsx__default["default"](withBaseName(), className),
32
+ ...rest,
33
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, {})
34
+ });
35
+ }
36
+ );
37
+
38
+ exports.DialogCloseButton = DialogCloseButton;
39
+ //# sourceMappingURL=DialogCloseButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogCloseButton.js","sources":["../src/dialog/DialogCloseButton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport clsx from \"clsx\";\nimport { Button, ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { CloseIcon } from \"@salt-ds/icons\";\n\nimport dialogCloseButtonCss from \"./DialogCloseButton.css\";\n\nconst withBaseName = makePrefixer(\"saltDialogCloseButton\");\n\nexport const DialogCloseButton = forwardRef<HTMLButtonElement, ButtonProps>(\n function DialogCloseButton({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-close-button\",\n css: dialogCloseButtonCss,\n window: targetWindow,\n });\n\n return (\n <Button\n ref={ref}\n aria-label=\"Close dialog\"\n variant=\"secondary\"\n className={clsx(withBaseName(), className)}\n {...rest}\n >\n <CloseIcon />\n </Button>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","DialogCloseButton","useWindow","useComponentCssInjection","dialogCloseButtonCss","jsx","Button","clsx","CloseIcon"],"mappings":";;;;;;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,uBAAuB,CAAA,CAAA;AAElD,MAAM,iBAAoB,GAAAC,gBAAA;AAAA,EAC/B,SAASC,kBAAkB,CAAA,EAAE,SAAc,EAAA,GAAA,IAAA,IAAQ,GAAK,EAAA;AACtD,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,0BAAA;AAAA,MACR,GAAK,EAAAC,mBAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,uBACGC,cAAA,CAAAC,WAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,YAAW,EAAA,cAAA;AAAA,MACX,OAAQ,EAAA,WAAA;AAAA,MACR,SAAW,EAAAC,wBAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG,IAAA;AAAA,MAEJ,yCAACC,eAAU,EAAA,EAAA,CAAA;AAAA,KACb,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltDialogContent {\n --dialog-content-fontSize: var(--saltDialog-content-fontSize, var(--salt-text-fontSize));\n --dialog-content-lineHeight: var(--saltDialog-content-lineHeight, var(--salt-text-lineHeight));\n --dialog-content-paddingTop: var(--saltDialog-content-paddingTop, calc(var(--salt-size-unit) * 2));\n --dialog-content-paddingBottom: var(--saltDialog-content-paddingBottom, var(--salt-size-container-spacing));\n --dialog-content-minHeight: var(--saltDialog-content-minHeight, var(--dialog-content-fontSize));\n --dialog-content-color: var(--saltDialog-content-color, var(--salt-text-primary-foreground));\n}\n\n.saltDialogContent {\n flex: 1 1 auto;\n overflow: visible;\n font-weight: var(--salt-text-fontWeight);\n font-size: var(--dialog-content-fontSize);\n padding-top: var(--dialog-content-paddingTop);\n padding-bottom: var(--dialog-content-paddingBottom);\n min-height: var(--dialog-content-minHeight);\n line-height: var(--dialog-content-lineHeight);\n color: var(--dialog-content-color);\n}\n\n.saltDialogContent-leftGutter {\n padding-left: 32px;\n}\n";
3
+ var css_248z = ".saltDialogContent {\n color: var(--salt-text-primary-foreground);\n padding-inline: var(--salt-spacing-300);\n flex: 1 1 auto;\n min-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n overflow-y: auto;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=DialogContent.css.js.map
@@ -3,41 +3,32 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var core = require('@salt-ds/core');
7
- var clsx = require('clsx');
8
6
  var React = require('react');
9
- var DialogContext = require('./internal/DialogContext.js');
7
+ var clsx = require('clsx');
8
+ var core = require('@salt-ds/core');
10
9
  var window = require('@salt-ds/window');
11
10
  var styles = require('@salt-ds/styles');
12
11
  var DialogContent$1 = require('./DialogContent.css.js');
12
+ var DialogContext = require('./DialogContext.js');
13
13
 
14
14
  const withBaseName = core.makePrefixer("saltDialogContent");
15
- const DialogContent = React.forwardRef(
16
- function DialogContent2(props, ref) {
17
- const targetWindow = window.useWindow();
18
- styles.useComponentCssInjection({
19
- testId: "salt-dialog-content",
20
- css: DialogContent$1,
21
- window: targetWindow
22
- });
23
- const { children, className, ...rest } = props;
24
- const { status, dialogId, setContentElement } = React.useContext(DialogContext.DialogContext);
25
- const handleRef = core.useForkRef(ref, setContentElement);
26
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
27
- ...rest,
28
- className: clsx.clsx(
29
- withBaseName(),
30
- {
31
- [withBaseName("leftGutter")]: !!status
32
- },
33
- className
34
- ),
35
- id: `${dialogId}-body`,
36
- ref: handleRef,
37
- children
38
- });
39
- }
40
- );
15
+ const DialogContent = React.forwardRef(function DialogContent2(props, ref) {
16
+ const { children, className, ...rest } = props;
17
+ const { dialogId } = DialogContext.useDialogContext();
18
+ const targetWindow = window.useWindow();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-dialog-content",
21
+ css: DialogContent$1,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
25
+ id: `${dialogId}-description`,
26
+ className: clsx.clsx(withBaseName(), className),
27
+ ...rest,
28
+ ref,
29
+ children
30
+ });
31
+ });
41
32
 
42
33
  exports.DialogContent = DialogContent;
43
34
  //# sourceMappingURL=DialogContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogContent.js","sources":["../src/dialog/DialogContent.tsx"],"sourcesContent":["import { makePrefixer, useForkRef } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, useContext } from \"react\";\nimport { DialogContext } from \"./internal/DialogContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport dialogContentCss from \"./DialogContent.css\";\n\nexport interface DialogContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nconst withBaseName = makePrefixer(\"saltDialogContent\");\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n function DialogContent(props, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-content\",\n css: dialogContentCss,\n window: targetWindow,\n });\n\n const { children, className, ...rest } = props;\n const { status, dialogId, setContentElement } = useContext(DialogContext);\n\n const handleRef = useForkRef(ref, setContentElement);\n\n return (\n <div\n {...rest}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"leftGutter\")]: !!status,\n },\n className\n )}\n id={`${dialogId}-body`}\n ref={handleRef}\n >\n {children}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","DialogContent","useWindow","useComponentCssInjection","dialogContentCss","useContext","DialogContext","useForkRef","jsx","clsx"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AACzC,IAAA,MAAM,EAAE,MAAQ,EAAA,QAAA,EAAU,iBAAkB,EAAA,GAAIC,iBAAWC,2BAAa,CAAA,CAAA;AAExE,IAAM,MAAA,SAAA,GAAYC,eAAW,CAAA,GAAA,EAAK,iBAAiB,CAAA,CAAA;AAEnD,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAA,CAAa,YAAY,CAAA,GAAI,CAAC,CAAC,MAAA;AAAA,SAClC;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACA,IAAI,CAAG,EAAA,QAAA,CAAA,KAAA,CAAA;AAAA,MACP,GAAK,EAAA,SAAA;AAAA,MAEJ,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"DialogContent.js","sources":["../src/dialog/DialogContent.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport dialogContentCss from \"./DialogContent.css\";\nimport { useDialogContext } from \"./DialogContext\";\n\nconst withBaseName = makePrefixer(\"saltDialogContent\");\n\nexport const DialogContent = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(function DialogContent(props, ref) {\n const { children, className, ...rest } = props;\n const { dialogId } = useDialogContext();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-content\",\n css: dialogContentCss,\n window: targetWindow,\n });\n\n return (\n <div\n id={`${dialogId!}-description`}\n className={clsx(withBaseName(), className)}\n {...rest}\n ref={ref}\n >\n {children}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","DialogContent","useDialogContext","useWindow","useComponentCssInjection","dialogContentCss","jsx","clsx"],"mappings":";;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA,CAG3B,SAASC,cAAAA,CAAc,OAAO,GAAK,EAAA;AACnC,EAAA,MAAM,EAAE,QAAA,EAAU,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AACzC,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIC,8BAAiB,EAAA,CAAA;AAEtC,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,qBAAA;AAAA,IACR,GAAK,EAAAC,eAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,IAAI,CAAG,EAAA,QAAA,CAAA,YAAA,CAAA;AAAA,IACP,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACxC,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -5,6 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
 
7
7
  const DialogContext = React.createContext({});
8
+ const useDialogContext = () => {
9
+ return React.useContext(DialogContext);
10
+ };
8
11
 
9
12
  exports.DialogContext = DialogContext;
13
+ exports.useDialogContext = useDialogContext;
10
14
  //# sourceMappingURL=DialogContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogContext.js","sources":["../src/dialog/DialogContext.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ValidationStatus } from \"@salt-ds/core\";\n\nexport const DialogContext = createContext<{\n dialogId?: string;\n status?: ValidationStatus;\n}>({});\n\nexport const useDialogContext = () => {\n return useContext(DialogContext);\n};\n"],"names":["createContext","useContext"],"mappings":";;;;;;AAGa,MAAA,aAAA,GAAgBA,mBAG1B,CAAA,EAAE,EAAA;AAEE,MAAM,mBAAmB,MAAM;AACpC,EAAA,OAAOC,iBAAW,aAAa,CAAA,CAAA;AACjC;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltDialogTitle {\n --dialog-closeButton-padding: var(--saltDialog-closeButton-padding, var(--salt-size-unit));\n --dialog-closeButton-offset: var(--saltDialog-closeButton-offset, calc(var(--dialog-padding) * -1));\n\n --dialog-title-icon-marginRight: var(--saltDialog-title-icon-marginRight, var(--salt-spacing-100));\n}\n\n.saltDialogTitle {\n display: flex;\n flex: 0 0 auto;\n min-height: 16px;\n position: relative;\n margin: 0;\n}\n\n.saltDialogTitle-close {\n position: absolute;\n padding-top: var(--dialog-closeButton-padding);\n padding-bottom: var(--dialog-closeButton-padding);\n right: var(--dialog-closeButton-offset);\n top: var(--dialog-closeButton-offset);\n}\n\n.saltDialogTitle .saltDialogTitle-statusIndicator {\n min-height: var(--salt-text-h1-lineHeight);\n margin-right: var(--dialog-title-icon-marginRight);\n}\n\n.saltDialogTitle-text {\n margin: 0;\n}\n";
3
+ var css_248z = "/* Styles applied to the root element */\n.saltDialogTitle {\n display: flex;\n gap: var(--salt-spacing-100);\n padding-bottom: var(--salt-spacing-100);\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n margin: 0;\n}\n\n/* Styles applied to the status indicator icon overriding its default size */\n.saltDialogTitle .saltStatusIndicator.saltIcon {\n --icon-size: var(--salt-text-h2-lineHeight);\n}\n\n/* Styles applied to DialogTitle when accent={true} */\n.saltDialogTitle-withAccent {\n position: relative;\n}\n\n.saltDialogTitle-withAccent::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n bottom: var(--salt-spacing-100);\n width: var(--salt-size-accent);\n background: var(--salt-accent-background);\n}\n\n.saltDialogTitle-error::before {\n background: var(--salt-status-error-borderColor);\n}\n\n.saltDialogTitle-info::before {\n background: var(--salt-status-info-borderColor);\n}\n\n.saltDialogTitle-success::before {\n background: var(--salt-status-success-borderColor);\n}\n\n.saltDialogTitle-warning::before {\n background: var(--salt-status-warning-borderColor);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=DialogTitle.css.js.map
@@ -3,53 +3,52 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var core = require('@salt-ds/core');
7
- var icons = require('@salt-ds/icons');
8
6
  var clsx = require('clsx');
9
- var React = require('react');
10
- var DialogContext = require('./internal/DialogContext.js');
7
+ var core = require('@salt-ds/core');
8
+ var DialogContext = require('./DialogContext.js');
11
9
  var window = require('@salt-ds/window');
12
10
  var styles = require('@salt-ds/styles');
13
11
  var DialogTitle$1 = require('./DialogTitle.css.js');
14
12
 
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
16
+
15
17
  const withBaseName = core.makePrefixer("saltDialogTitle");
16
- const DialogTitle = React.forwardRef(
17
- function DialogTitle2(props, ref) {
18
- const targetWindow = window.useWindow();
19
- styles.useComponentCssInjection({
20
- testId: "salt-dialog-title",
21
- css: DialogTitle$1,
22
- window: targetWindow
23
- });
24
- const { children, className, onClose, ...rest } = props;
25
- const { status, dialogId } = React.useContext(DialogContext.DialogContext);
26
- return /* @__PURE__ */ jsxRuntime.jsxs("div", {
27
- className: clsx.clsx(withBaseName(), className),
28
- ref,
29
- ...rest,
30
- children: [
31
- onClose && /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
32
- className: withBaseName("close"),
33
- onClick: onClose,
34
- variant: "secondary",
35
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, {
36
- "aria-label": "close dialog",
37
- className: withBaseName("closeIcon")
38
- })
39
- }),
40
- status && /* @__PURE__ */ jsxRuntime.jsx(core.StatusIndicator, {
41
- className: withBaseName("statusIndicator"),
42
- status
43
- }),
44
- /* @__PURE__ */ jsxRuntime.jsx(core.H1, {
45
- id: `${dialogId}-heading`,
46
- className: withBaseName("text"),
47
- children
48
- })
49
- ]
50
- });
51
- }
52
- );
18
+ const DialogTitle = ({
19
+ children,
20
+ className,
21
+ accent,
22
+ status: statusProp,
23
+ ...rest
24
+ }) => {
25
+ const { dialogId, status: statusContext } = DialogContext.useDialogContext();
26
+ const targetWindow = window.useWindow();
27
+ styles.useComponentCssInjection({
28
+ testId: "salt-dialog-title",
29
+ css: DialogTitle$1,
30
+ window: targetWindow
31
+ });
32
+ const status = statusProp || statusContext;
33
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.H2, {
34
+ id: `${dialogId}-heading`,
35
+ className: clsx__default["default"](
36
+ withBaseName(),
37
+ {
38
+ [withBaseName("withAccent")]: accent && !status,
39
+ [withBaseName(status)]: !!status
40
+ },
41
+ className
42
+ ),
43
+ ...rest,
44
+ children: [
45
+ status && /* @__PURE__ */ jsxRuntime.jsx(core.StatusIndicator, {
46
+ status
47
+ }),
48
+ children
49
+ ]
50
+ });
51
+ };
53
52
 
54
53
  exports.DialogTitle = DialogTitle;
55
54
  //# sourceMappingURL=DialogTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialogTitle.js","sources":["../src/dialog/DialogTitle.tsx"],"sourcesContent":["import { Button, H1, makePrefixer, StatusIndicator } from \"@salt-ds/core\";\nimport { CloseIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, SyntheticEvent, useContext } from \"react\";\nimport { DialogContext } from \"./internal/DialogContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport dialogTitleCss from \"./DialogTitle.css\";\n\nexport interface DialogTitleProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Disable the built-in ARIA heading attributes.\n */\n disableAria?: boolean;\n onClose?: (event: SyntheticEvent) => void;\n}\n\nconst withBaseName = makePrefixer(\"saltDialogTitle\");\n\nexport const DialogTitle = forwardRef<HTMLDivElement, DialogTitleProps>(\n function DialogTitle(props, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-title\",\n css: dialogTitleCss,\n window: targetWindow,\n });\n\n const { children, className, onClose, ...rest } = props;\n const { status, dialogId } = useContext(DialogContext);\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n {onClose && (\n <Button\n className={withBaseName(\"close\")}\n onClick={onClose}\n variant=\"secondary\"\n >\n <CloseIcon\n aria-label=\"close dialog\"\n className={withBaseName(\"closeIcon\")}\n />\n </Button>\n )}\n {status && (\n <StatusIndicator\n className={withBaseName(\"statusIndicator\")}\n status={status}\n />\n )}\n <H1 id={`${dialogId}-heading`} className={withBaseName(\"text\")}>\n {children}\n </H1>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","DialogTitle","useWindow","useComponentCssInjection","dialogTitleCss","useContext","DialogContext","jsxs","clsx","jsx","Button","CloseIcon","StatusIndicator","H1"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA,CAAA;AAE5C,MAAM,WAAc,GAAAC,gBAAA;AAAA,EACzB,SAASC,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,aAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,OAAA,EAAA,GAAY,MAAS,GAAA,KAAA,CAAA;AAClD,IAAA,MAAM,EAAE,MAAA,EAAQ,QAAS,EAAA,GAAIC,iBAAWC,2BAAa,CAAA,CAAA;AAErD,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MAAG,GAAA;AAAA,MAAW,GAAG,IAAA;AAAA,MAC5D,QAAA,EAAA;AAAA,QAAA,OAAA,oBACEC,cAAA,CAAAC,WAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,OAAS,EAAA,OAAA;AAAA,UACT,OAAQ,EAAA,WAAA;AAAA,UAER,QAAC,kBAAAD,cAAA,CAAAE,eAAA,EAAA;AAAA,YACC,YAAW,EAAA,cAAA;AAAA,YACX,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,WACrC,CAAA;AAAA,SACF,CAAA;AAAA,QAED,0BACEF,cAAA,CAAAG,oBAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,UACzC,MAAA;AAAA,SACF,CAAA;AAAA,wBAEDH,cAAA,CAAAI,OAAA,EAAA;AAAA,UAAG,IAAI,CAAG,EAAA,QAAA,CAAA,QAAA,CAAA;AAAA,UAAoB,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC1D,QAAA;AAAA,SACH,CAAA;AAAA,OAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"DialogTitle.js","sources":["../src/dialog/DialogTitle.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef } from \"react\";\nimport clsx from \"clsx\";\nimport {\n H2,\n StatusIndicator,\n ValidationStatus,\n makePrefixer,\n} from \"@salt-ds/core\";\nimport { useDialogContext } from \"./DialogContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport dialogTitleCss from \"./DialogTitle.css\";\n\nconst withBaseName = makePrefixer(\"saltDialogTitle\");\n\ninterface DialogTitleProps extends ComponentPropsWithoutRef<\"h2\"> {\n status?: ValidationStatus;\n accent?: boolean;\n}\n\nexport const DialogTitle = ({\n children,\n className,\n accent,\n status: statusProp,\n ...rest\n}: DialogTitleProps) => {\n const { dialogId, status: statusContext } = useDialogContext();\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dialog-title\",\n css: dialogTitleCss,\n window: targetWindow,\n });\n\n const status = statusProp || statusContext;\n\n return (\n <H2\n id={`${dialogId!}-heading`}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"withAccent\")]: accent && !status,\n [withBaseName(status!)]: !!status,\n },\n className\n )}\n {...rest}\n >\n {status && <StatusIndicator status={status} />}\n {children}\n </H2>\n );\n};\n"],"names":["makePrefixer","useDialogContext","useWindow","useComponentCssInjection","dialogTitleCss","jsxs","H2","clsx","jsx","StatusIndicator"],"mappings":";;;;;;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA,CAAA;AAO5C,MAAM,cAAc,CAAC;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAQ,EAAA,UAAA;AAAA,EACL,GAAA,IAAA;AACL,CAAwB,KAAA;AACtB,EAAA,MAAM,EAAE,QAAA,EAAU,MAAQ,EAAA,aAAA,KAAkBC,8BAAiB,EAAA,CAAA;AAC7D,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,UAAc,IAAA,aAAA,CAAA;AAE7B,EAAA,uBACGC,eAAA,CAAAC,OAAA,EAAA;AAAA,IACC,IAAI,CAAG,EAAA,QAAA,CAAA,QAAA,CAAA;AAAA,IACP,SAAW,EAAAC,wBAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAA,CAAa,YAAY,CAAA,GAAI,UAAU,CAAC,MAAA;AAAA,QACzC,CAAC,YAAA,CAAa,MAAO,CAAA,GAAI,CAAC,CAAC,MAAA;AAAA,OAC7B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,MAAA,oBAAWC,cAAA,CAAAC,oBAAA,EAAA;AAAA,QAAgB,MAAA;AAAA,OAAgB,CAAA;AAAA,MAC3C,QAAA;AAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}