@servicetitan/anvil2 3.12.2 → 3.13.1

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 (277) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/{AiMark-Bf0x9FF3.js → AiMark-DkHvwBwf.js} +6 -5
  3. package/dist/{AiMark-Bf0x9FF3.js.map → AiMark-DkHvwBwf.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-S4D2DGx7.js → Alert-C7Y5DG99.js} +4 -4
  6. package/dist/{Alert-S4D2DGx7.js.map → Alert-C7Y5DG99.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-CGglhMfd.js → Announcement-CGTv6M31.js} +6 -5
  9. package/dist/Announcement-CGTv6M31.js.map +1 -0
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{AnvilProvider-Deh-Vgep.js → AnvilProvider-CgYBk3YP.js} +2 -2
  12. package/dist/{AnvilProvider-Deh-Vgep.js.map → AnvilProvider-CgYBk3YP.js.map} +1 -1
  13. package/dist/AnvilProvider.js +1 -1
  14. package/dist/{Avatar-lLiNUrxq.js → Avatar-D31JDNrs.js} +2 -2
  15. package/dist/{Avatar-lLiNUrxq.js.map → Avatar-D31JDNrs.js.map} +1 -1
  16. package/dist/{Avatar-ioIwH1KT.js → Avatar-DXI-w1Vi.js} +2 -2
  17. package/dist/{Avatar-ioIwH1KT.js.map → Avatar-DXI-w1Vi.js.map} +1 -1
  18. package/dist/Avatar.js +2 -2
  19. package/dist/{Breadcrumbs-CR1od1rZ.js → Breadcrumbs-d1lHjb_U.js} +2 -2
  20. package/dist/{Breadcrumbs-CR1od1rZ.js.map → Breadcrumbs-d1lHjb_U.js.map} +1 -1
  21. package/dist/Breadcrumbs.js +1 -1
  22. package/dist/{Calendar-DZnnO3m_.js → Calendar-DCyfWmSV.js} +2 -2
  23. package/dist/{Calendar-DZnnO3m_.js.map → Calendar-DCyfWmSV.js.map} +1 -1
  24. package/dist/{Calendar-B-K7eGua.js → Calendar-Db-cjtFN.js} +2 -2
  25. package/dist/{Calendar-B-K7eGua.js.map → Calendar-Db-cjtFN.js.map} +1 -1
  26. package/dist/Calendar.js +2 -2
  27. package/dist/{Checkbox-CXfrIo6I.js → Checkbox-BP2sw3SJ.js} +5 -5
  28. package/dist/{Checkbox-CXfrIo6I.js.map → Checkbox-BP2sw3SJ.js.map} +1 -1
  29. package/dist/{Checkbox-D5-HJC6_.js → Checkbox-CHVDkrNO.js} +2 -2
  30. package/dist/{Checkbox-D5-HJC6_.js.map → Checkbox-CHVDkrNO.js.map} +1 -1
  31. package/dist/Checkbox.js +1 -1
  32. package/dist/{Chip-DLK31FkK.js → Chip-B3pbD3hQ.js} +4 -4
  33. package/dist/{Chip-DLK31FkK.js.map → Chip-B3pbD3hQ.js.map} +1 -1
  34. package/dist/Chip.js +1 -1
  35. package/dist/Combobox.js +1 -1
  36. package/dist/{DataTable-CjvD9TbJ.js → DataTable-Cl_sbvzn.js} +52 -51
  37. package/dist/DataTable-Cl_sbvzn.js.map +1 -0
  38. package/dist/DataTable.css +96 -115
  39. package/dist/{DateFieldRange-8JO-rJm-.js → DateFieldRange-DCHAzabV.js} +4 -4
  40. package/dist/{DateFieldRange-8JO-rJm-.js.map → DateFieldRange-DCHAzabV.js.map} +1 -1
  41. package/dist/DateFieldRange.js +1 -1
  42. package/dist/{DateFieldSingle-CrTMTL9v.js → DateFieldSingle-TGaSOGki.js} +4 -4
  43. package/dist/{DateFieldSingle-CrTMTL9v.js.map → DateFieldSingle-TGaSOGki.js.map} +1 -1
  44. package/dist/DateFieldSingle.js +1 -1
  45. package/dist/{DateFieldYearless-Bo1V-4K2.js → DateFieldYearless-eKv8F4KX.js} +5 -5
  46. package/dist/{DateFieldYearless-Bo1V-4K2.js.map → DateFieldYearless-eKv8F4KX.js.map} +1 -1
  47. package/dist/DateFieldYearless.js +1 -1
  48. package/dist/{DateFieldYearlessRange-rj36AQhR.js → DateFieldYearlessRange-Cl2pWyFn.js} +4 -4
  49. package/dist/{DateFieldYearlessRange-rj36AQhR.js.map → DateFieldYearlessRange-Cl2pWyFn.js.map} +1 -1
  50. package/dist/DateFieldYearlessRange.js +1 -1
  51. package/dist/{DaysOfTheWeek-B39FZ-TR.js → DaysOfTheWeek-Dbgb0RsL.js} +4 -4
  52. package/dist/{DaysOfTheWeek-B39FZ-TR.js.map → DaysOfTheWeek-Dbgb0RsL.js.map} +1 -1
  53. package/dist/DaysOfTheWeek.js +1 -1
  54. package/dist/{Dialog-PcuDCqK7.js → Dialog-Clg6Kd96.js} +4 -4
  55. package/dist/{Dialog-PcuDCqK7.js.map → Dialog-Clg6Kd96.js.map} +1 -1
  56. package/dist/Dialog.js +1 -1
  57. package/dist/{Drawer-C73Ka9ra.js → Drawer-Mnne1lfM.js} +5 -5
  58. package/dist/{Drawer-C73Ka9ra.js.map → Drawer-Mnne1lfM.js.map} +1 -1
  59. package/dist/Drawer.js +1 -1
  60. package/dist/DrillDown.js +1 -1
  61. package/dist/{EditCard-CtWVEAsA.js → EditCard-NAN7IqhO.js} +2 -2
  62. package/dist/{EditCard-CtWVEAsA.js.map → EditCard-NAN7IqhO.js.map} +1 -1
  63. package/dist/EditCard.js +1 -1
  64. package/dist/{FieldLabel-BFJdJP_W.js → FieldLabel-DpYGFXmG.js} +3 -3
  65. package/dist/{FieldLabel-BFJdJP_W.js.map → FieldLabel-DpYGFXmG.js.map} +1 -1
  66. package/dist/FieldLabel.js +1 -1
  67. package/dist/{FieldMessage-mTGdycSA.js → FieldMessage-8c9yA_kw.js} +4 -4
  68. package/dist/{FieldMessage-mTGdycSA.js.map → FieldMessage-8c9yA_kw.js.map} +1 -1
  69. package/dist/FieldMessage.js +1 -1
  70. package/dist/{FilterBar-D2NDYqTs.js → FilterBar-Dhl_hi_5.js} +5 -5
  71. package/dist/{FilterBar-D2NDYqTs.js.map → FilterBar-Dhl_hi_5.js.map} +1 -1
  72. package/dist/FilterBar.js +1 -1
  73. package/dist/{Helper-Bq6Npkgh.js → Helper-BHpOgh7k.js} +2 -2
  74. package/dist/{Helper-Bq6Npkgh.js.map → Helper-BHpOgh7k.js.map} +1 -1
  75. package/dist/{InputMask-DJTXKPmK.js → InputMask-DkT6npDV.js} +3 -3
  76. package/dist/{InputMask-DJTXKPmK.js.map → InputMask-DkT6npDV.js.map} +1 -1
  77. package/dist/InputMask.js +1 -1
  78. package/dist/{ListView-CPDHEpD-.js → ListView-DeA9TBIT.js} +2 -2
  79. package/dist/{ListView-CPDHEpD-.js.map → ListView-DeA9TBIT.js.map} +1 -1
  80. package/dist/ListView.js +1 -1
  81. package/dist/{Listbox-Of-WaRWI.js → Listbox-qjgO_Hoo.js} +2 -2
  82. package/dist/{Listbox-Of-WaRWI.js.map → Listbox-qjgO_Hoo.js.map} +1 -1
  83. package/dist/Listbox.js +1 -1
  84. package/dist/{Menu-BMn1CSr1.js → Menu-CM0EndhK.js} +22 -11
  85. package/dist/Menu-CM0EndhK.js.map +1 -0
  86. package/dist/Menu.js +1 -1
  87. package/dist/MultiSelectField.js +1 -1
  88. package/dist/{MultiSelectFieldSync-CFw607cm.js → MultiSelectFieldSync-D_09Osn3.js} +58 -34
  89. package/dist/MultiSelectFieldSync-D_09Osn3.js.map +1 -0
  90. package/dist/MultiSelectMenu.js +1 -1
  91. package/dist/{MultiSelectMenuSync-C6afc80f.js → MultiSelectMenuSync-DkXlWa6p.js} +6 -5
  92. package/dist/{MultiSelectMenuSync-C6afc80f.js.map → MultiSelectMenuSync-DkXlWa6p.js.map} +1 -1
  93. package/dist/{NumberField-ASyiQu5l.js → NumberField-BWRgy-Xq.js} +4 -4
  94. package/dist/{NumberField-ASyiQu5l.js.map → NumberField-BWRgy-Xq.js.map} +1 -1
  95. package/dist/NumberField.js +1 -1
  96. package/dist/{Page-B5yLLq76.js → Page-B-Wjr7sP.js} +272 -112
  97. package/dist/Page-B-Wjr7sP.js.map +1 -0
  98. package/dist/Page.css +117 -74
  99. package/dist/Page.js +1 -1
  100. package/dist/{Pagination-BcW9WJ2b.js → Pagination-DRIKAkuE.js} +3 -3
  101. package/dist/{Pagination-BcW9WJ2b.js.map → Pagination-DRIKAkuE.js.map} +1 -1
  102. package/dist/Pagination.js +1 -1
  103. package/dist/{Popover-CjsE5FG0.js → Popover-CVroO0T0.js} +5 -5
  104. package/dist/Popover-CVroO0T0.js.map +1 -0
  105. package/dist/Popover.js +1 -1
  106. package/dist/{ProgressBar-C_HXy_Hx.js → ProgressBar-Cc6JQ2EH.js} +4 -5
  107. package/dist/{ProgressBar-C_HXy_Hx.js.map → ProgressBar-Cc6JQ2EH.js.map} +1 -1
  108. package/dist/ProgressBar.js +1 -1
  109. package/dist/{Radio-B5KxT85j.js → Radio-BWEUnuHt.js} +5 -5
  110. package/dist/{Radio-B5KxT85j.js.map → Radio-BWEUnuHt.js.map} +1 -1
  111. package/dist/{Radio-CBQpuxLP.js → Radio-CxPskh2k.js} +2 -2
  112. package/dist/{Radio-CBQpuxLP.js.map → Radio-CxPskh2k.js.map} +1 -1
  113. package/dist/Radio.js +1 -1
  114. package/dist/{RichTextEditor-C8V3BajN.js → RichTextEditor-B_8D0VD3.js} +10 -10
  115. package/dist/{RichTextEditor-C8V3BajN.js.map → RichTextEditor-B_8D0VD3.js.map} +1 -1
  116. package/dist/RichTextEditor.js +1 -1
  117. package/dist/{SavedFiltersButton-ClghkFdA.js → SavedFiltersButton-vZ38Mty8.js} +9 -9
  118. package/dist/{SavedFiltersButton-ClghkFdA.js.map → SavedFiltersButton-vZ38Mty8.js.map} +1 -1
  119. package/dist/SavedFiltersButton.js +1 -1
  120. package/dist/{SelectCard-DbWOdnuI.js → SelectCard-CLQ8X_Xv.js} +3 -3
  121. package/dist/{SelectCard-DbWOdnuI.js.map → SelectCard-CLQ8X_Xv.js.map} +1 -1
  122. package/dist/SelectCard.js +1 -1
  123. package/dist/SelectField.js +1 -1
  124. package/dist/{SelectFieldLabel-CujwhWLB.js → SelectFieldLabel-LzRCSbOL.js} +2 -2
  125. package/dist/{SelectFieldLabel-CujwhWLB.js.map → SelectFieldLabel-LzRCSbOL.js.map} +1 -1
  126. package/dist/{SelectFieldSync-BdYCHwPd.js → SelectFieldSync-klbql5_5.js} +6 -6
  127. package/dist/{SelectFieldSync-BdYCHwPd.js.map → SelectFieldSync-klbql5_5.js.map} +1 -1
  128. package/dist/SelectMenu.js +1 -1
  129. package/dist/{SelectMenuSync-DlqmXr04.js → SelectMenuSync-Bn_ksCG5.js} +4 -4
  130. package/dist/{SelectMenuSync-DlqmXr04.js.map → SelectMenuSync-Bn_ksCG5.js.map} +1 -1
  131. package/dist/{SelectOptions-Cz4mU7WG.js → SelectOptions-BjwYqKH3.js} +2 -2
  132. package/dist/{SelectOptions-Cz4mU7WG.js.map → SelectOptions-BjwYqKH3.js.map} +1 -1
  133. package/dist/{SelectTrigger-QkI2I04A.js → SelectTrigger-BO9QQqxo.js} +3 -3
  134. package/dist/{SelectTrigger-QkI2I04A.js.map → SelectTrigger-BO9QQqxo.js.map} +1 -1
  135. package/dist/SelectTrigger.js +1 -1
  136. package/dist/{SelectTriggerBase-C5C6JmDF.js → SelectTriggerBase-CeEaDrSV.js} +4 -4
  137. package/dist/{SelectTriggerBase-C5C6JmDF.js.map → SelectTriggerBase-CeEaDrSV.js.map} +1 -1
  138. package/dist/{StatusIcon-BwULopyH.js → StatusIcon-BqorkNJf.js} +13 -9
  139. package/dist/{StatusIcon-BwULopyH.js.map → StatusIcon-BqorkNJf.js.map} +1 -1
  140. package/dist/StatusIcon.css +16 -10
  141. package/dist/{Switch-MfbL3JVk.js → Switch-CZjpzkol.js} +3 -3
  142. package/dist/{Switch-MfbL3JVk.js.map → Switch-CZjpzkol.js.map} +1 -1
  143. package/dist/Switch.js +1 -1
  144. package/dist/Table.js +1 -1
  145. package/dist/{Text-CEJHoh0p.js → Text-DdNE3hPR.js} +2 -2
  146. package/dist/{Text-CEJHoh0p.js.map → Text-DdNE3hPR.js.map} +1 -1
  147. package/dist/Text.js +1 -1
  148. package/dist/{TextField-DWbDQfHY.js → TextField-DQ0i2nlz.js} +2 -2
  149. package/dist/{TextField-DWbDQfHY.js.map → TextField-DQ0i2nlz.js.map} +1 -1
  150. package/dist/{TextField-DTbZOxwI.js → TextField-DkM8v9DE.js} +4 -4
  151. package/dist/{TextField-DTbZOxwI.js.map → TextField-DkM8v9DE.js.map} +1 -1
  152. package/dist/TextField.js +1 -1
  153. package/dist/{Textarea-CSXwaDf6.js → Textarea-Cg5saqcU.js} +4 -4
  154. package/dist/{Textarea-CSXwaDf6.js.map → Textarea-Cg5saqcU.js.map} +1 -1
  155. package/dist/Textarea.js +1 -1
  156. package/dist/{ThemeProvider-BlEOL-sk.js → ThemeProvider-D4dbBfHd.js} +33 -24
  157. package/dist/ThemeProvider-D4dbBfHd.js.map +1 -0
  158. package/dist/ThemeProvider.js +1 -1
  159. package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
  160. package/dist/{TimeField-BZQP8KSf.js → TimeField-DVYSA-Az.js} +4 -4
  161. package/dist/{TimeField-BZQP8KSf.js.map → TimeField-DVYSA-Az.js.map} +1 -1
  162. package/dist/TimeField.js +1 -1
  163. package/dist/Toast.js +2 -2
  164. package/dist/{Toaster-C2z5rCrc.js → Toaster-BiPZIPzH.js} +59 -31
  165. package/dist/Toaster-BiPZIPzH.js.map +1 -0
  166. package/dist/{Toaster-B1xZq1bs.js → Toaster-D1a3ysMN.js} +41 -30
  167. package/dist/Toaster-D1a3ysMN.js.map +1 -0
  168. package/dist/{Toolbar-BDjgSnCU.js → Toolbar-DYu1UIoW.js} +5 -5
  169. package/dist/{Toolbar-BDjgSnCU.js.map → Toolbar-DYu1UIoW.js.map} +1 -1
  170. package/dist/{Toolbar-neulke7h.js → Toolbar-Dw_xAGRP.js} +4 -4
  171. package/dist/{Toolbar-neulke7h.js.map → Toolbar-Dw_xAGRP.js.map} +1 -1
  172. package/dist/Toolbar.js +2 -2
  173. package/dist/{ToolbarButtonToggle-C_Dq_qyS.js → ToolbarButtonToggle-0A61CKru.js} +2 -2
  174. package/dist/{ToolbarButtonToggle-C_Dq_qyS.js.map → ToolbarButtonToggle-0A61CKru.js.map} +1 -1
  175. package/dist/{Tooltip-CzrJgl98.js → Tooltip-hen6P8WV.js} +5 -5
  176. package/dist/Tooltip-hen6P8WV.js.map +1 -0
  177. package/dist/Tooltip.js +1 -1
  178. package/dist/TreeSelectField.js +1 -1
  179. package/dist/{TreeSelectFieldSync-D7ntJmDF.js → TreeSelectFieldSync-IFAs-lci.js} +6 -6
  180. package/dist/{TreeSelectFieldSync-D7ntJmDF.js.map → TreeSelectFieldSync-IFAs-lci.js.map} +1 -1
  181. package/dist/TreeSelectMenu.js +1 -1
  182. package/dist/{TreeSelectMenuSync-CTm2n1vJ.js → TreeSelectMenuSync-BATdOysJ.js} +5 -4
  183. package/dist/{TreeSelectMenuSync-CTm2n1vJ.js.map → TreeSelectMenuSync-BATdOysJ.js.map} +1 -1
  184. package/dist/{TypeaheadTextField-CEWM_N-N.js → TypeaheadTextField-BVtaGlCX.js} +3 -3
  185. package/dist/{TypeaheadTextField-CEWM_N-N.js.map → TypeaheadTextField-BVtaGlCX.js.map} +1 -1
  186. package/dist/TypeaheadTextField.js +1 -1
  187. package/dist/{YearlessDateInputWithPicker-D6N_mYDe.js → YearlessDateInputWithPicker-Cs2IQ0ma.js} +2 -2
  188. package/dist/{YearlessDateInputWithPicker-D6N_mYDe.js.map → YearlessDateInputWithPicker-Cs2IQ0ma.js.map} +1 -1
  189. package/dist/arrayIdsEqual-DnevhwqN.js +13 -0
  190. package/dist/arrayIdsEqual-DnevhwqN.js.map +1 -0
  191. package/dist/beta.js +17 -16
  192. package/dist/beta.js.map +1 -1
  193. package/dist/{bulkActionTypes-jKqcdwuO.js → bulkActionTypes-B683cPWf.js} +2 -2
  194. package/dist/{bulkActionTypes-jKqcdwuO.js.map → bulkActionTypes-B683cPWf.js.map} +1 -1
  195. package/dist/check_circle-C3DDoVXp.js +8 -0
  196. package/dist/check_circle-C3DDoVXp.js.map +1 -0
  197. package/dist/{confirmationTypes-CG7xl50f.js → confirmationTypes-DeRtO_Cw.js} +2 -13
  198. package/dist/confirmationTypes-DeRtO_Cw.js.map +1 -0
  199. package/dist/{filter-state-TEgOgQVy.js → filter-state-ClXbmO_I.js} +20 -20
  200. package/dist/{filter-state-TEgOgQVy.js.map → filter-state-ClXbmO_I.js.map} +1 -1
  201. package/dist/{index-BY2uMI6I.js → index-tWkeAVJW.js} +2 -2
  202. package/dist/{index-BY2uMI6I.js.map → index-tWkeAVJW.js.map} +1 -1
  203. package/dist/index.js +916 -58
  204. package/dist/index.js.map +1 -1
  205. package/dist/index2.css +407 -0
  206. package/dist/portalScopeClassNames--sU7fdKW.js +16 -0
  207. package/dist/portalScopeClassNames--sU7fdKW.js.map +1 -0
  208. package/dist/settings-Bsahaln8.js +10 -0
  209. package/dist/settings-Bsahaln8.js.map +1 -0
  210. package/dist/src/beta/components/Page/Page.d.ts +232 -0
  211. package/dist/src/beta/components/Page/Page.figma.d.ts +1 -0
  212. package/dist/src/beta/components/Page/PageContent.d.ts +24 -0
  213. package/dist/src/beta/components/Page/PageContext.d.ts +6 -0
  214. package/dist/src/beta/components/Page/PageFooter.d.ts +25 -0
  215. package/dist/src/beta/components/Page/PageHeader.d.ts +157 -0
  216. package/dist/src/beta/components/Page/PagePanel.d.ts +145 -0
  217. package/dist/src/beta/components/Page/PagePanelContent.d.ts +46 -0
  218. package/dist/src/beta/components/Page/PagePanelFooter.d.ts +34 -0
  219. package/dist/src/beta/components/Page/PagePanelHeader.d.ts +21 -0
  220. package/dist/src/beta/components/Page/PageSidebar.d.ts +57 -0
  221. package/dist/src/beta/components/Page/PageSidebarContext.d.ts +5 -0
  222. package/dist/src/beta/components/Page/PageSidebarHeader.d.ts +23 -0
  223. package/dist/src/beta/components/Page/index.d.ts +11 -0
  224. package/dist/src/beta/components/Page/internal/PagePanelContext.d.ts +11 -0
  225. package/dist/src/beta/components/Page/pageBreakpoint.d.ts +26 -0
  226. package/dist/src/beta/components/index.d.ts +1 -0
  227. package/dist/src/components/Page/Page.d.ts +8 -2
  228. package/dist/src/components/Page/PageHeader.d.ts +15 -2
  229. package/dist/src/components/Toast/Toaster.d.ts +5 -4
  230. package/dist/src/components/Toast/internal/Toaster.d.ts +21 -0
  231. package/dist/src/internal/components/StatusIcon/StatusIcon.d.ts +1 -1
  232. package/dist/src/internal/functions/portalScopeClassNames.d.ts +15 -0
  233. package/dist/src/internal/hooks/useCommitSelectionIfChanged.d.ts +20 -0
  234. package/dist/src/providers/ThemeProvider/internal/ThemeProviderContext.d.ts +8 -0
  235. package/dist/src/providers/ThemeProvider/themeToCssVars.d.ts +16 -0
  236. package/dist/{stripInlineMarkdown-BGdIj-cj.js → stripInlineMarkdown-Dz6vTyS_.js} +2 -2
  237. package/dist/{stripInlineMarkdown-BGdIj-cj.js.map → stripInlineMarkdown-Dz6vTyS_.js.map} +1 -1
  238. package/dist/{syncFilterUtils-9Pqeq8J4.js → syncFilterUtils-BbK2BCsr.js} +3 -3
  239. package/dist/{syncFilterUtils-9Pqeq8J4.js.map → syncFilterUtils-BbK2BCsr.js.map} +1 -1
  240. package/dist/{treeSync-tEqZxxHQ.js → treeSync-De2jGdy-.js} +3 -3
  241. package/dist/{treeSync-tEqZxxHQ.js.map → treeSync-De2jGdy-.js.map} +1 -1
  242. package/dist/{useDrilldown-D5iDWSx7.js → useDrilldown-BDKQkqA_.js} +3 -3
  243. package/dist/{useDrilldown-D5iDWSx7.js.map → useDrilldown-BDKQkqA_.js.map} +1 -1
  244. package/dist/{useInfiniteCombobox-DRd_Fp1w.js → useInfiniteCombobox-D7saAttF.js} +5 -5
  245. package/dist/{useInfiniteCombobox-DRd_Fp1w.js.map → useInfiniteCombobox-D7saAttF.js.map} +1 -1
  246. package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
  247. package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
  248. package/dist/{useInvalidateOnOptionsChange-CC_6sRp9.js → useInvalidateOnOptionsChange-DcYuWdMC.js} +8 -6
  249. package/dist/useInvalidateOnOptionsChange-DcYuWdMC.js.map +1 -0
  250. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  251. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  252. package/dist/usePrefersColorScheme-CwOF0TjZ.js +31 -0
  253. package/dist/usePrefersColorScheme-CwOF0TjZ.js.map +1 -0
  254. package/dist/usePrefersColorScheme.js +1 -1
  255. package/package.json +4 -4
  256. package/dist/Announcement-CGglhMfd.js.map +0 -1
  257. package/dist/DataTable-CjvD9TbJ.js.map +0 -1
  258. package/dist/Menu-BMn1CSr1.js.map +0 -1
  259. package/dist/MultiSelectFieldSync-CFw607cm.js.map +0 -1
  260. package/dist/Page-B5yLLq76.js.map +0 -1
  261. package/dist/Popover-CjsE5FG0.js.map +0 -1
  262. package/dist/ThemeProvider-BlEOL-sk.js.map +0 -1
  263. package/dist/Toaster-B1xZq1bs.js.map +0 -1
  264. package/dist/Toaster-C2z5rCrc.js.map +0 -1
  265. package/dist/Tooltip-CzrJgl98.js.map +0 -1
  266. package/dist/check_circle-CM0ukqXv.js +0 -6
  267. package/dist/check_circle-CM0ukqXv.js.map +0 -1
  268. package/dist/confirmationTypes-CG7xl50f.js.map +0 -1
  269. package/dist/error-DR_wWdYY.js +0 -6
  270. package/dist/error-DR_wWdYY.js.map +0 -1
  271. package/dist/portalScopeClassNames-BTyv0FY8.js +0 -7
  272. package/dist/portalScopeClassNames-BTyv0FY8.js.map +0 -1
  273. package/dist/useInvalidateOnOptionsChange-CC_6sRp9.js.map +0 -1
  274. package/dist/usePrefersColorScheme-_hT7dK7_.js +0 -31
  275. package/dist/usePrefersColorScheme-_hT7dK7_.js.map +0 -1
  276. package/dist/warning-c4Wj1rI4.js +0 -6
  277. package/dist/warning-c4Wj1rI4.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField-ASyiQu5l.js","sources":["../../hammer-icon/mdi/round/remove.svg","../src/components/NumberField/NumberField.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgRemove = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z\" }));\nexport default SvgRemove;\n","import {\n type ReactElement,\n forwardRef,\n isValidElement,\n type ComponentPropsWithoutRef,\n useId,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Spinner } from \"../Spinner\";\nimport textFieldStyles from \"../TextField/TextField.module.scss\";\nimport numberFieldStyles from \"./NumberField.module.scss\";\nimport { Helper, type HelperProps } from \"../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport type { LayoutUtilProps, Size, DataTrackingId } from \"../../types\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport IconAdd from \"@servicetitan/hammer-icon/mdi/round/add.svg\";\nimport IconRemove from \"@servicetitan/hammer-icon/mdi/round/remove.svg\";\nimport {\n useFocusWithin,\n useLayoutPropsUtil,\n useNumberField,\n} from \"../../internal/hooks\";\nimport {\n childrenToString,\n stripInlineMarkdown,\n warnOnce,\n} from \"../../internal/functions\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport type { FieldLabelProps } from \"../../internal/types\";\n\n/**\n * Props for the NumberField component.\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"prefix\" | \"type\" | \"inputMode\" | \"value\" | \"defaultValue\" | \"onFocus\" | \"onBlur\" | \"onChange\">\n * @extends LayoutUtilProps\n * @extends FieldLabelProps\n * @extends DataTrackingId\n */\nexport type NumberFieldProps = Omit<\n ComponentPropsWithoutRef<\"input\">,\n | \"size\"\n | \"prefix\"\n | \"type\"\n | \"inputMode\"\n | \"value\"\n | \"defaultValue\"\n | \"onFocus\"\n | \"onBlur\"\n | \"onChange\"\n> &\n LayoutUtilProps &\n FieldLabelProps & {\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n // TODO(v4.0.0): make label required\n /**\n * Label for the field.\n * Omitting `label` is deprecated — it will be required in v4.0.0. Use `hideLabel` to visually hide it.\n */\n label?: string;\n /**\n * When `true`, hides the visible label and moves it to `aria-label` on the input.\n * Requires `label` to be set — the label is always needed for accessibility.\n * @default false\n */\n hideLabel?: boolean;\n prefix?: string;\n suffix?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n description?: HelperProps[\"description\"];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n hint?: HelperProps[\"hint\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n loading?: boolean;\n disabled?: boolean;\n minValue?: number;\n maxValue?: number;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n step?: number;\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n hideControls?: boolean;\n /**\n * When `true`, applies a subdued primary background to the field to draw attention to it.\n * @default false\n */\n isHighlighted?: boolean;\n } & DataTrackingId;\n\n/**\n * NumberField component for entering numeric values, with optional\n * increment/decrement stepper controls.\n *\n * Features:\n * - Min/max value constraints and configurable `step`\n * - Fraction-digit formatting via `minimumFractionDigits`/`maximumFractionDigits`\n * - Optional `hideControls` to hide the +/- stepper buttons\n * - Label, hint, description, error, and warning messaging\n * - Loading state with spinner, and a highlighted-field variant\n * - Optional prefix/suffix content\n *\n * @example\n * <NumberField\n * label=\"Quantity\"\n * value={quantity}\n * onChange={setQuantity}\n * minValue={0}\n * maxValue={99}\n * />\n */\nexport const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n error,\n errorAriaLive: _errorAriaLive,\n defaultValue: defaultValueProp,\n value: valueProp,\n label,\n moreInfo,\n prefix,\n suffix,\n size,\n required,\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n id: idProp,\n description,\n hint,\n warning,\n loading,\n disabled,\n readOnly,\n labelProps,\n style,\n placeholder,\n minValue,\n maxValue,\n maximumFractionDigits = 0,\n minimumFractionDigits = 0,\n step = 1,\n hideControls = false,\n hideLabel = false,\n isHighlighted = false,\n ...rest\n } = componentProps;\n const numberFieldRef = useRef<HTMLDivElement>(null);\n\n const { props: wrapperProps } = useFocusWithin({\n onFocus: (e) => {\n onFocusProp?.(e);\n },\n onBlur: (e) => {\n onBlurProp?.(e);\n },\n });\n\n const { inputProps, inputRef, incrementButtonProps, decrementButtonProps } =\n useNumberField({\n minValue,\n maxValue,\n maximumFractionDigits,\n minimumFractionDigits,\n step,\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n label,\n readOnly,\n });\n\n const combinedInputRef = useMergeRefs([numberFieldRef, inputRef, ref]);\n\n const labelUid = useId();\n const id = idProp ?? labelUid;\n const prefixUid = useId();\n const suffixUid = useId();\n const helperUid = useId();\n const moreInfoUid = useId();\n\n warnDeprecatedErrorUsage(\"NumberField\", error);\n\n // TODO(v4.0.0): remove once label is required\n if (label === undefined) {\n warnOnce(\n \"NumberField: label will be required in v4.0.0. Use hideLabel to visually hide the label.\",\n );\n }\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const data = {\n label: childrenToString(props.label),\n prefix: childrenToString(props.prefix),\n suffix: childrenToString(props.suffix),\n description: childrenToString(props.description),\n size: props.size,\n minValue: props.minValue,\n maxValue: props.maxValue,\n step: props.step,\n maximumFractionDigits: props.maximumFractionDigits,\n minimumFractionDigits: props.minimumFractionDigits,\n };\n\n const trackingId = useTrackingId({\n name: \"NumberField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"], className)}\n data-anv=\"number-field\"\n style={styleCombined}\n {...wrapperProps}\n >\n {/* TODO(v4.0.0): simplify to !hideLabel once label is required */}\n {label && !hideLabel && (\n <FieldLabel\n moreInfo={moreInfo}\n moreInfoId={moreInfo ? moreInfoUid : undefined}\n required={required}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </FieldLabel>\n )}\n <div\n className={cx(textFieldStyles[\"input-wrapper\"], {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [textFieldStyles[\"highlight\"]]: isHighlighted,\n [numberFieldStyles[\"small\"]]: size === \"small\",\n [numberFieldStyles[\"large\"]]: size === \"large\",\n })}\n role=\"presentation\"\n onClick={() => numberFieldRef.current?.focus()}\n >\n {prefix ? (\n <div\n aria-hidden\n className={textFieldStyles[\"prefix\"]}\n id={`prefix${prefixUid}`}\n >\n {prefix}\n </div>\n ) : null}\n <input\n id={id}\n className={cx(textFieldStyles[\"input\"], {\n [textFieldStyles[\"error\"]]: error,\n })}\n data-tracking-id={trackingId}\n {...rest}\n {...inputProps}\n required={required}\n placeholder={placeholder}\n readOnly={readOnly}\n disabled={disabled}\n ref={combinedInputRef}\n aria-label={\n // TODO(v4.0.0): remove typeof check — label will always be string\n hideLabel && typeof label === \"string\"\n ? stripInlineMarkdown(label)\n : label\n ? undefined\n : placeholder\n }\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? !!error : undefined}\n />\n {loading ? (\n <div\n className={textFieldStyles[\"loading-spinner-wrapper\"]}\n data-testid=\"spinner\"\n >\n <Spinner size=\"small\" />\n </div>\n ) : null}\n {suffix ? (\n <div\n className={textFieldStyles[\"suffix\"]}\n aria-hidden\n id={`suffix${suffixUid}`}\n >\n {suffix}\n </div>\n ) : null}\n {!hideControls && !disabled && !readOnly && (\n <div className={numberFieldStyles[\"stepper-buttons\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n className={numberFieldStyles[\"stepper-button\"]}\n {...decrementButtonProps}\n >\n <Icon svg={IconRemove} />\n </Button>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n className={numberFieldStyles[\"stepper-button\"]}\n {...incrementButtonProps}\n >\n <Icon svg={IconAdd} />\n </Button>\n </div>\n )}\n </div>\n {hasHelperText ? (\n <Helper\n id={helperUid}\n hint={hint}\n showCounter={false}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n description={description}\n />\n ) : null}\n </div>\n );\n },\n);\n\nNumberField.displayName = \"NumberField\";\n"],"names":["IconRemove","IconAdd"],"mappings":"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"}
1
+ {"version":3,"file":"NumberField-BWRgy-Xq.js","sources":["../../hammer-icon/mdi/round/remove.svg","../src/components/NumberField/NumberField.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgRemove = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z\" }));\nexport default SvgRemove;\n","import {\n type ReactElement,\n forwardRef,\n isValidElement,\n type ComponentPropsWithoutRef,\n useId,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Spinner } from \"../Spinner\";\nimport textFieldStyles from \"../TextField/TextField.module.scss\";\nimport numberFieldStyles from \"./NumberField.module.scss\";\nimport { Helper, type HelperProps } from \"../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../FieldMessage\";\nimport type { LayoutUtilProps, Size, DataTrackingId } from \"../../types\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport IconAdd from \"@servicetitan/hammer-icon/mdi/round/add.svg\";\nimport IconRemove from \"@servicetitan/hammer-icon/mdi/round/remove.svg\";\nimport {\n useFocusWithin,\n useLayoutPropsUtil,\n useNumberField,\n} from \"../../internal/hooks\";\nimport {\n childrenToString,\n stripInlineMarkdown,\n warnOnce,\n} from \"../../internal/functions\";\nimport { FieldLabel } from \"../FieldLabel\";\nimport type { FieldLabelProps } from \"../../internal/types\";\n\n/**\n * Props for the NumberField component.\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"prefix\" | \"type\" | \"inputMode\" | \"value\" | \"defaultValue\" | \"onFocus\" | \"onBlur\" | \"onChange\">\n * @extends LayoutUtilProps\n * @extends FieldLabelProps\n * @extends DataTrackingId\n */\nexport type NumberFieldProps = Omit<\n ComponentPropsWithoutRef<\"input\">,\n | \"size\"\n | \"prefix\"\n | \"type\"\n | \"inputMode\"\n | \"value\"\n | \"defaultValue\"\n | \"onFocus\"\n | \"onBlur\"\n | \"onChange\"\n> &\n LayoutUtilProps &\n FieldLabelProps & {\n /**\n * Error state for the field. Pass `true` to indicate error styling without a message.\n * Pass a string, string[], or ReactElement (deprecated) for error messages.\n */\n error?: boolean | string | ReactElement | string[];\n // TODO(v4.0.0): make label required\n /**\n * Label for the field.\n * Omitting `label` is deprecated — it will be required in v4.0.0. Use `hideLabel` to visually hide it.\n */\n label?: string;\n /**\n * When `true`, hides the visible label and moves it to `aria-label` on the input.\n * Requires `label` to be set — the label is always needed for accessibility.\n * @default false\n */\n hideLabel?: boolean;\n prefix?: string;\n suffix?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n description?: HelperProps[\"description\"];\n /**\n * @deprecated No longer used. Error messages always use `aria-live=\"assertive\"`.\n */\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n hint?: HelperProps[\"hint\"];\n /**\n * Warning message(s) to display. Supports a single string or an array of strings.\n */\n warning?: string | string[];\n loading?: boolean;\n disabled?: boolean;\n minValue?: number;\n maxValue?: number;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n step?: number;\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n hideControls?: boolean;\n /**\n * When `true`, applies a subdued primary background to the field to draw attention to it.\n * @default false\n */\n isHighlighted?: boolean;\n } & DataTrackingId;\n\n/**\n * NumberField component for entering numeric values, with optional\n * increment/decrement stepper controls.\n *\n * Features:\n * - Min/max value constraints and configurable `step`\n * - Fraction-digit formatting via `minimumFractionDigits`/`maximumFractionDigits`\n * - Optional `hideControls` to hide the +/- stepper buttons\n * - Label, hint, description, error, and warning messaging\n * - Loading state with spinner, and a highlighted-field variant\n * - Optional prefix/suffix content\n *\n * @example\n * <NumberField\n * label=\"Quantity\"\n * value={quantity}\n * onChange={setQuantity}\n * minValue={0}\n * maxValue={99}\n * />\n */\nexport const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n error,\n errorAriaLive: _errorAriaLive,\n defaultValue: defaultValueProp,\n value: valueProp,\n label,\n moreInfo,\n prefix,\n suffix,\n size,\n required,\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n id: idProp,\n description,\n hint,\n warning,\n loading,\n disabled,\n readOnly,\n labelProps,\n style,\n placeholder,\n minValue,\n maxValue,\n maximumFractionDigits = 0,\n minimumFractionDigits = 0,\n step = 1,\n hideControls = false,\n hideLabel = false,\n isHighlighted = false,\n ...rest\n } = componentProps;\n const numberFieldRef = useRef<HTMLDivElement>(null);\n\n const { props: wrapperProps } = useFocusWithin({\n onFocus: (e) => {\n onFocusProp?.(e);\n },\n onBlur: (e) => {\n onBlurProp?.(e);\n },\n });\n\n const { inputProps, inputRef, incrementButtonProps, decrementButtonProps } =\n useNumberField({\n minValue,\n maxValue,\n maximumFractionDigits,\n minimumFractionDigits,\n step,\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n label,\n readOnly,\n });\n\n const combinedInputRef = useMergeRefs([numberFieldRef, inputRef, ref]);\n\n const labelUid = useId();\n const id = idProp ?? labelUid;\n const prefixUid = useId();\n const suffixUid = useId();\n const helperUid = useId();\n const moreInfoUid = useId();\n\n warnDeprecatedErrorUsage(\"NumberField\", error);\n\n // TODO(v4.0.0): remove once label is required\n if (label === undefined) {\n warnOnce(\n \"NumberField: label will be required in v4.0.0. Use hideLabel to visually hide the label.\",\n );\n }\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const hasHelperText = hint || errorMessages || warning || description;\n\n const ariaDescribedBy =\n [hasHelperText && helperUid, moreInfo && moreInfoUid]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const data = {\n label: childrenToString(props.label),\n prefix: childrenToString(props.prefix),\n suffix: childrenToString(props.suffix),\n description: childrenToString(props.description),\n size: props.size,\n minValue: props.minValue,\n maxValue: props.maxValue,\n step: props.step,\n maximumFractionDigits: props.maximumFractionDigits,\n minimumFractionDigits: props.minimumFractionDigits,\n };\n\n const trackingId = useTrackingId({\n name: \"NumberField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"], className)}\n data-anv=\"number-field\"\n style={styleCombined}\n {...wrapperProps}\n >\n {/* TODO(v4.0.0): simplify to !hideLabel once label is required */}\n {label && !hideLabel && (\n <FieldLabel\n moreInfo={moreInfo}\n moreInfoId={moreInfo ? moreInfoUid : undefined}\n required={required}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </FieldLabel>\n )}\n <div\n className={cx(textFieldStyles[\"input-wrapper\"], {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [textFieldStyles[\"highlight\"]]: isHighlighted,\n [numberFieldStyles[\"small\"]]: size === \"small\",\n [numberFieldStyles[\"large\"]]: size === \"large\",\n })}\n role=\"presentation\"\n onClick={() => numberFieldRef.current?.focus()}\n >\n {prefix ? (\n <div\n aria-hidden\n className={textFieldStyles[\"prefix\"]}\n id={`prefix${prefixUid}`}\n >\n {prefix}\n </div>\n ) : null}\n <input\n id={id}\n className={cx(textFieldStyles[\"input\"], {\n [textFieldStyles[\"error\"]]: error,\n })}\n data-tracking-id={trackingId}\n {...rest}\n {...inputProps}\n required={required}\n placeholder={placeholder}\n readOnly={readOnly}\n disabled={disabled}\n ref={combinedInputRef}\n aria-label={\n // TODO(v4.0.0): remove typeof check — label will always be string\n hideLabel && typeof label === \"string\"\n ? stripInlineMarkdown(label)\n : label\n ? undefined\n : placeholder\n }\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? !!error : undefined}\n />\n {loading ? (\n <div\n className={textFieldStyles[\"loading-spinner-wrapper\"]}\n data-testid=\"spinner\"\n >\n <Spinner size=\"small\" />\n </div>\n ) : null}\n {suffix ? (\n <div\n className={textFieldStyles[\"suffix\"]}\n aria-hidden\n id={`suffix${suffixUid}`}\n >\n {suffix}\n </div>\n ) : null}\n {!hideControls && !disabled && !readOnly && (\n <div className={numberFieldStyles[\"stepper-buttons\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n className={numberFieldStyles[\"stepper-button\"]}\n {...decrementButtonProps}\n >\n <Icon svg={IconRemove} />\n </Button>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n className={numberFieldStyles[\"stepper-button\"]}\n {...incrementButtonProps}\n >\n <Icon svg={IconAdd} />\n </Button>\n </div>\n )}\n </div>\n {hasHelperText ? (\n <Helper\n id={helperUid}\n hint={hint}\n showCounter={false}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n description={description}\n />\n ) : null}\n </div>\n );\n },\n);\n\nNumberField.displayName = \"NumberField\";\n"],"names":["IconRemove","IconAdd"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { N as NumberField, N as default } from './NumberField-ASyiQu5l.js';
1
+ export { N as NumberField, N as default } from './NumberField-BWRgy-Xq.js';
2
2
  //# sourceMappingURL=NumberField.js.map
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
2
  import { createContext, forwardRef, useContext, useState, useLayoutEffect, useRef, useEffect, useMemo, useCallback } from 'react';
4
3
  import { c as cx } from './index-De1g9FRV.js';
5
- import { P as Popover, a as usePopoverContext } from './AiMark-Bf0x9FF3.js';
4
+ import { P as Popover, a as usePopoverContext } from './AiMark-DkHvwBwf.js';
5
+ import { S as SvgSegment, a as SvgChevronLeft, b as SvgSettings } from './settings-Bsahaln8.js';
6
6
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
7
7
  import { S as SvgKeyboardArrowUp } from './keyboard_arrow_up-CxzK6LAl.js';
8
8
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
@@ -10,7 +10,7 @@ import { b as BreakpointLg } from './primitive-BXgYQTTw.js';
10
10
  import { useTrackingId } from './useTrackingId.js';
11
11
  import { B as Button } from './Button-Dwh_Nd4l.js';
12
12
  import { I as Icon } from './Icon-B5zwN7GD.js';
13
- import { T as Tooltip } from './Tooltip-CzrJgl98.js';
13
+ import { T as Tooltip } from './Tooltip-hen6P8WV.js';
14
14
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
15
15
  import { F as Flex } from './Flex-CRF7gj0_.js';
16
16
  import { L as Layout } from './Layout-C2Q2hyLG.js';
@@ -19,35 +19,36 @@ import { S as SvgEdit } from './edit-DQOiktcu.js';
19
19
  import { S as SvgCheck } from './check-Cf67OWrZ.js';
20
20
  import { S as SvgClose } from './close-DZj38AEh.js';
21
21
  import { B as ButtonLink } from './ButtonLink-DOFAxNvC.js';
22
- import { B as Breadcrumbs } from './Breadcrumbs-CR1od1rZ.js';
23
- import { M as Menu } from './Menu-BMn1CSr1.js';
24
- import { T as TextField } from './TextField-DWbDQfHY.js';
25
- import { T as Text } from './Text-CEJHoh0p.js';
26
- import { C as Chip } from './Chip-DLK31FkK.js';
22
+ import { B as Breadcrumbs } from './Breadcrumbs-d1lHjb_U.js';
23
+ import { M as Menu } from './Menu-CM0EndhK.js';
24
+ import { T as TextField } from './TextField-DQ0i2nlz.js';
25
+ import { T as Text } from './Text-DdNE3hPR.js';
26
+ import { C as Chip } from './Chip-B3pbD3hQ.js';
27
27
  import { createPortal } from 'react-dom';
28
- import { D as Dialog } from './Dialog-PcuDCqK7.js';
28
+ import { D as Dialog } from './Dialog-Clg6Kd96.js';
29
29
  import { d as drillDownStyles, D as DrillDownContext } from './DrillDown.module-1VBKDZRA.js';
30
- import { u as useDrillDownContextState } from './useInitialFocus-BUxEDMEG.js';
30
+ import { u as useDrillDownContextState } from './useInitialFocus-BIvXK1Rp.js';
31
31
  import { u as useDrillDownContext } from './useDrillDownContext-D5_NjqY4.js';
32
32
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
33
33
 
34
- import './Page.css';const page = "_page_1a6ta_1";
35
- const container = "_container_1a6ta_29";
36
- const panel = "_panel_1a6ta_58";
37
- const open = "_open_1a6ta_58";
38
- const small = "_small_1a6ta_58";
39
- const medium = "_medium_1a6ta_61";
40
- const large = "_large_1a6ta_64";
41
- const sidebar = "_sidebar_1a6ta_67";
42
- const collapsed = "_collapsed_1a6ta_67";
43
- const content = "_content_1a6ta_77";
44
- const noPadding = "_noPadding_1a6ta_365";
45
- const header = "_header_1a6ta_442";
46
- const layout = "_layout_1a6ta_446";
47
- const title = "_title_1a6ta_454";
48
- const chips = "_chips_1a6ta_464";
49
- const actions = "_actions_1a6ta_468";
50
- const description = "_description_1a6ta_481";
34
+ import './Page.css';const page = "_page_1hgjb_1";
35
+ const container = "_container_1hgjb_29";
36
+ const panel = "_panel_1hgjb_58";
37
+ const open = "_open_1hgjb_58";
38
+ const small = "_small_1hgjb_58";
39
+ const medium = "_medium_1hgjb_61";
40
+ const large = "_large_1hgjb_64";
41
+ const sidebar = "_sidebar_1hgjb_67";
42
+ const collapsed = "_collapsed_1hgjb_67";
43
+ const content = "_content_1hgjb_77";
44
+ const noPadding = "_noPadding_1hgjb_366";
45
+ const sticky = "_sticky_1hgjb_432";
46
+ const header = "_header_1hgjb_498";
47
+ const layout = "_layout_1hgjb_502";
48
+ const title = "_title_1hgjb_510";
49
+ const chips = "_chips_1hgjb_520";
50
+ const actions = "_actions_1hgjb_524";
51
+ const description = "_description_1hgjb_537";
51
52
  const styles = {
52
53
  page: page,
53
54
  container: container,
@@ -59,39 +60,39 @@ const styles = {
59
60
  sidebar: sidebar,
60
61
  collapsed: collapsed,
61
62
  content: content,
62
- "content-footer": "_content-footer_1a6ta_77",
63
- "virtual-scroll-container": "_virtual-scroll-container_1a6ta_84",
64
- "content-wrapper": "_content-wrapper_1a6ta_92",
65
- "footer-slot": "_footer-slot_1a6ta_99",
66
- "content-inner": "_content-inner_1a6ta_109",
67
- "content-header-inner": "_content-header-inner_1a6ta_131",
68
- "sidebar-inner": "_sidebar-inner_1a6ta_195",
69
- "sidebar-header": "_sidebar-header_1a6ta_234",
70
- "sidebar-adaptive-trigger-container": "_sidebar-adaptive-trigger-container_1a6ta_256",
71
- "sidebar-adaptive-trigger": "_sidebar-adaptive-trigger_1a6ta_256",
72
- "sidebar-adaptive-trigger-icon": "_sidebar-adaptive-trigger-icon_1a6ta_277",
73
- "sidebar-adaptive-container": "_sidebar-adaptive-container_1a6ta_281",
74
- "sidebar-adaptive": "_sidebar-adaptive_1a6ta_256",
75
- "toggle-button-wrapper": "_toggle-button-wrapper_1a6ta_295",
76
- "toggle-button-tooltip": "_toggle-button-tooltip_1a6ta_304",
77
- "toggle-button": "_toggle-button_1a6ta_295",
63
+ "content-footer": "_content-footer_1hgjb_77",
64
+ "virtual-scroll-container": "_virtual-scroll-container_1hgjb_84",
65
+ "content-wrapper": "_content-wrapper_1hgjb_92",
66
+ "footer-slot": "_footer-slot_1hgjb_99",
67
+ "content-inner": "_content-inner_1hgjb_109",
68
+ "content-header-inner": "_content-header-inner_1hgjb_131",
69
+ "sidebar-inner": "_sidebar-inner_1hgjb_195",
70
+ "sidebar-header": "_sidebar-header_1hgjb_234",
71
+ "sidebar-adaptive-trigger-container": "_sidebar-adaptive-trigger-container_1hgjb_256",
72
+ "sidebar-adaptive-trigger": "_sidebar-adaptive-trigger_1hgjb_256",
73
+ "sidebar-adaptive-trigger-icon": "_sidebar-adaptive-trigger-icon_1hgjb_277",
74
+ "sidebar-adaptive-container": "_sidebar-adaptive-container_1hgjb_281",
75
+ "sidebar-adaptive": "_sidebar-adaptive_1hgjb_256",
76
+ "toggle-button-wrapper": "_toggle-button-wrapper_1hgjb_295",
77
+ "toggle-button-tooltip": "_toggle-button-tooltip_1hgjb_304",
78
+ "toggle-button": "_toggle-button_1hgjb_295",
78
79
  noPadding: noPadding,
79
- "panel-inner": "_panel-inner_1a6ta_365",
80
- "drilldown-open": "_drilldown-open_1a6ta_403",
80
+ "panel-header": "_panel-header_1hgjb_370",
81
+ "panel-content": "_panel-content_1hgjb_371",
82
+ "panel-footer": "_panel-footer_1hgjb_372",
83
+ "panel-inner": "_panel-inner_1hgjb_376",
84
+ "drilldown-open": "_drilldown-open_1hgjb_410",
85
+ sticky: sticky,
81
86
  header: header,
82
87
  layout: layout,
83
- "title-wrapper": "_title-wrapper_1a6ta_454",
88
+ "title-wrapper": "_title-wrapper_1hgjb_510",
84
89
  title: title,
85
- "preference-action": "_preference-action_1a6ta_461",
90
+ "preference-action": "_preference-action_1hgjb_517",
86
91
  chips: chips,
87
92
  actions: actions,
88
93
  description: description
89
94
  };
90
95
 
91
- const SvgSegment = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M10 18h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1zM3 7c0 .55.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1zm7 6h10c.55 0 1-.45 1-1s-.45-1-1-1H10c-.55 0-1 .45-1 1s.45 1 1 1z" }));
92
-
93
- const SvgChevronLeft = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M14.71 6.71a.996.996 0 0 0-1.41 0L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59a.996.996 0 1 0 1.41-1.41L10.83 12l3.88-3.88c.39-.39.38-1.03 0-1.41z" }));
94
-
95
96
  const PageSideBarContext = createContext(
96
97
  null
97
98
  );
@@ -240,8 +241,34 @@ const PageSidebarHeader = forwardRef(
240
241
  );
241
242
  PageSidebarHeader.displayName = "Page.SidebarHeader";
242
243
 
243
- const SvgSettings = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M19.5 12c0-.23-.01-.45-.03-.68l1.86-1.41c.4-.3.51-.86.26-1.3l-1.87-3.23a.987.987 0 0 0-1.25-.42l-2.15.91c-.37-.26-.76-.49-1.17-.68l-.29-2.31c-.06-.5-.49-.88-.99-.88h-3.73c-.51 0-.94.38-1 .88l-.29 2.31c-.41.19-.8.42-1.17.68l-2.15-.91c-.46-.2-1-.02-1.25.42L2.41 8.62c-.25.44-.14.99.26 1.3l1.86 1.41a7.343 7.343 0 0 0 0 1.35l-1.86 1.41c-.4.3-.51.86-.26 1.3l1.87 3.23c.25.44.79.62 1.25.42l2.15-.91c.37.26.76.49 1.17.68l.29 2.31c.06.5.49.88.99.88h3.73c.5 0 .93-.38.99-.88l.29-2.31c.41-.19.8-.42 1.17-.68l2.15.91c.46.2 1 .02 1.25-.42l1.87-3.23c.25-.44.14-.99-.26-1.3l-1.86-1.41c.03-.23.04-.45.04-.68zm-7.46 3.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z" }));
244
-
244
+ const renderMenuItems = (actions) => actions.map((action, index) => {
245
+ const icon = typeof action.icon === "function" ? action.icon : action.icon && "after" in action.icon ? action.icon.after : void 0;
246
+ return /* @__PURE__ */ jsx(
247
+ Menu.Item,
248
+ {
249
+ label: action.label,
250
+ onClick: action.onClick,
251
+ disabled: action.disabled,
252
+ icon,
253
+ className: action.className
254
+ },
255
+ index
256
+ );
257
+ });
258
+ const renderPrimaryMenuTrigger = (primary) => ({ ref, ...triggerProps }) => {
259
+ const { items: _items, label, ...buttonProps } = primary;
260
+ return /* @__PURE__ */ jsx(
261
+ Button,
262
+ {
263
+ appearance: "primary",
264
+ ...buttonProps,
265
+ icon: { after: SvgKeyboardArrowDown },
266
+ ...triggerProps,
267
+ ref,
268
+ children: label
269
+ }
270
+ );
271
+ };
245
272
  const PageHeader = forwardRef(
246
273
  (props, ref) => {
247
274
  const {
@@ -299,53 +326,37 @@ const PageHeader = forwardRef(
299
326
  ) }),
300
327
  /* @__PURE__ */ jsx(Tooltip.Content, { children: preferenceAction["aria-label"] })
301
328
  ] }));
329
+ const secondaryActions = actions?.secondary ?? [];
330
+ const primaryAction = actions?.primary;
331
+ const collapseSecondary = secondaryActions.length >= 3 || secondaryActions.length >= 2 && !!primaryAction;
302
332
  const actionItems = actions && /* @__PURE__ */ jsxs(Flex, { justifyContent: "flex-end", className: styles.actions, children: [
303
- actions.primary && (!actions.secondary || actions.secondary.length === 0) && /* @__PURE__ */ jsx(Button, { appearance: "primary", ...actions.primary, children: actions.primary.label }),
304
- !!actions.secondary?.length && actions.secondary.length < 3 && !actions.primary && actions.secondary.map((action, index) => /* @__PURE__ */ jsx(Button, { appearance: "secondary", ...action, children: action.label }, index)),
305
- actions.primary && !!actions.secondary?.length && actions.secondary.length === 1 && /* @__PURE__ */ jsxs(Fragment, { children: [
306
- /* @__PURE__ */ jsx(Button, { appearance: "secondary", ...actions.secondary[0], children: actions.secondary[0].label }),
307
- /* @__PURE__ */ jsx(Button, { appearance: "primary", ...actions.primary, children: actions.primary.label })
308
- ] }),
309
- !!actions.secondary?.length && (actions.secondary.length >= 3 || actions.secondary.length >= 2 && actions.primary) && /* @__PURE__ */ jsxs(Fragment, { children: [
310
- /* @__PURE__ */ jsx(
311
- Menu,
312
- {
313
- trigger: ({ ref: ref2, ...rest2 }) => /* @__PURE__ */ jsxs(Tooltip, { children: [
314
- /* @__PURE__ */ jsx(
315
- Tooltip.Trigger,
316
- {
317
- ref: ref2,
318
- children: /* @__PURE__ */ jsx(
319
- Button,
320
- {
321
- appearance: "secondary",
322
- icon: SvgMoreVert,
323
- "aria-label": "More actions",
324
- ...rest2
325
- }
326
- )
327
- }
328
- ),
329
- /* @__PURE__ */ jsx(Tooltip.Content, { children: "More actions" })
330
- ] }),
331
- children: actions.secondary.map((action, index) => {
332
- const icon = typeof action.icon === "function" ? action.icon : action.icon && "after" in action.icon ? action.icon.after : void 0;
333
- return /* @__PURE__ */ jsx(
334
- Menu.Item,
335
- {
336
- label: action.label,
337
- onClick: action.onClick,
338
- disabled: action.disabled,
339
- icon,
340
- className: action.className
341
- },
342
- index
343
- );
344
- })
345
- }
346
- ),
347
- actions.primary && /* @__PURE__ */ jsx(Button, { appearance: "primary", ...actions.primary, children: actions.primary.label })
348
- ] })
333
+ collapseSecondary ? /* @__PURE__ */ jsx(
334
+ Menu,
335
+ {
336
+ trigger: ({ ref: ref2, ...rest2 }) => /* @__PURE__ */ jsxs(Tooltip, { children: [
337
+ /* @__PURE__ */ jsx(Tooltip.Trigger, { children: /* @__PURE__ */ jsx(
338
+ Button,
339
+ {
340
+ appearance: "secondary",
341
+ icon: SvgMoreVert,
342
+ "aria-label": "More actions",
343
+ ...rest2,
344
+ ref: ref2
345
+ }
346
+ ) }),
347
+ /* @__PURE__ */ jsx(Tooltip.Content, { children: "More actions" })
348
+ ] }),
349
+ children: renderMenuItems(secondaryActions)
350
+ }
351
+ ) : secondaryActions.map((action, index) => /* @__PURE__ */ jsx(Button, { appearance: "secondary", ...action, children: action.label }, index)),
352
+ primaryAction && ("items" in primaryAction ? /* @__PURE__ */ jsx(
353
+ Menu,
354
+ {
355
+ label: primaryAction.label,
356
+ trigger: renderPrimaryMenuTrigger(primaryAction),
357
+ children: renderMenuItems(primaryAction.items)
358
+ }
359
+ ) : /* @__PURE__ */ jsx(Button, { appearance: "primary", ...primaryAction, children: primaryAction.label }))
349
360
  ] });
350
361
  const headerClassName = cx(styles.content, styles.header, className);
351
362
  const headerContentClassName = cx(
@@ -554,9 +565,86 @@ const PageContent = forwardRef(
554
565
  );
555
566
  PageContent.displayName = "PageContent";
556
567
 
568
+ const PagePanelContext = createContext({});
569
+
570
+ const PagePanelHeader = forwardRef(
571
+ (props, ref) => {
572
+ const { className, children, ...rest } = props;
573
+ const { headerRef } = useContext(PagePanelContext);
574
+ const classNames = cx(styles["panel-header"], className);
575
+ return /* @__PURE__ */ jsx(
576
+ "header",
577
+ {
578
+ className: classNames,
579
+ "data-anv": "page-panel-header",
580
+ ref: useMergeRefs([ref, headerRef]),
581
+ ...rest,
582
+ children
583
+ }
584
+ );
585
+ }
586
+ );
587
+ PagePanelHeader.displayName = "PagePanelHeader";
588
+
589
+ const PagePanelContent = forwardRef(
590
+ (props, ref) => {
591
+ const { className, children, sticky = false, style, ...rest } = props;
592
+ const { headerRef } = useContext(PagePanelContext);
593
+ const [headerHeight, setHeaderHeight] = useState(0);
594
+ useEffect(() => {
595
+ const headerElement = headerRef?.current;
596
+ if (!sticky || !headerElement) return;
597
+ const updateHeight = () => {
598
+ setHeaderHeight(headerElement.offsetHeight || 0);
599
+ };
600
+ updateHeight();
601
+ const resizeObserver = new ResizeObserver(updateHeight);
602
+ resizeObserver.observe(headerElement);
603
+ return () => resizeObserver.disconnect();
604
+ }, [sticky, headerRef]);
605
+ const contentClassNames = cx(styles["panel-content"], className, {
606
+ [styles["sticky"]]: sticky
607
+ });
608
+ const stickyStyle = sticky ? { top: `${headerHeight}px` } : void 0;
609
+ return /* @__PURE__ */ jsx(
610
+ "div",
611
+ {
612
+ className: contentClassNames,
613
+ "data-anv": "page-panel-content",
614
+ ref,
615
+ style: { ...stickyStyle, ...style },
616
+ ...rest,
617
+ children
618
+ }
619
+ );
620
+ }
621
+ );
622
+ PagePanelContent.displayName = "PagePanelContent";
623
+
624
+ const PagePanelFooter = forwardRef(
625
+ (props, ref) => {
626
+ const { className, children, sticky = false, ...rest } = props;
627
+ const classNames = cx(styles["panel-footer"], className, {
628
+ [styles["sticky"]]: sticky
629
+ });
630
+ return /* @__PURE__ */ jsx(
631
+ "footer",
632
+ {
633
+ className: classNames,
634
+ "data-anv": "page-panel-footer",
635
+ ref,
636
+ ...rest,
637
+ children
638
+ }
639
+ );
640
+ }
641
+ );
642
+ PagePanelFooter.displayName = "PagePanelFooter";
643
+
557
644
  const PagePanelInner = ({
558
645
  style,
559
646
  open,
647
+ hostedInDialog,
560
648
  children
561
649
  }) => {
562
650
  const { index } = useDrillDownContext();
@@ -567,14 +655,17 @@ const PagePanelInner = ({
567
655
  "div",
568
656
  {
569
657
  className: classNames,
570
- tabIndex: typeof open !== "undefined" && open ? 0 : -1,
571
- style: { ...style, overflowY: index === void 0 ? "auto" : "hidden" },
572
- children: /* @__PURE__ */ jsx("div", { children })
658
+ tabIndex: hostedInDialog ? void 0 : typeof open !== "undefined" && open ? 0 : -1,
659
+ style: {
660
+ ...style,
661
+ ...hostedInDialog ? {} : { overflowY: index === void 0 ? "auto" : "hidden" }
662
+ },
663
+ children
573
664
  }
574
665
  );
575
666
  };
576
- const PagePanel = forwardRef(
577
- (props, ref) => {
667
+ const PagePanel = Object.assign(
668
+ forwardRef((props, ref) => {
578
669
  const {
579
670
  children,
580
671
  open,
@@ -587,6 +678,7 @@ const PagePanel = forwardRef(
587
678
  ...rest
588
679
  } = props;
589
680
  const [isMobile, setIsMobile] = useState(false);
681
+ const headerRef = useRef(null);
590
682
  const classNames = cx(
591
683
  [styles.panel, drillDownStyles.panel],
592
684
  [styles[size]],
@@ -641,7 +733,7 @@ const PagePanel = forwardRef(
641
733
  open,
642
734
  defaultDrillDownIndex,
643
735
  onDrillDownContextChange,
644
- children: /* @__PURE__ */ jsx(Dialog.Content, { children: /* @__PURE__ */ jsx(
736
+ children: /* @__PURE__ */ jsx(Dialog.Content, { children: /* @__PURE__ */ jsx(PagePanelContext.Provider, { value: { headerRef }, children: /* @__PURE__ */ jsx(
645
737
  "div",
646
738
  {
647
739
  className: classNames,
@@ -649,13 +741,13 @@ const PagePanel = forwardRef(
649
741
  "aria-disabled": !open,
650
742
  ref,
651
743
  ...rest,
652
- children
744
+ children: /* @__PURE__ */ jsx(PagePanelInner, { style, open, hostedInDialog: true, children })
653
745
  }
654
- ) })
746
+ ) }) })
655
747
  }
656
748
  );
657
749
  }
658
- return /* @__PURE__ */ jsx(DrillDownContext.Provider, { value: drillDownContextProviderValue, children: /* @__PURE__ */ jsx(
750
+ return /* @__PURE__ */ jsx(DrillDownContext.Provider, { value: drillDownContextProviderValue, children: /* @__PURE__ */ jsx(PagePanelContext.Provider, { value: { headerRef }, children: /* @__PURE__ */ jsx(
659
751
  "div",
660
752
  {
661
753
  className: classNames,
@@ -665,7 +757,66 @@ const PagePanel = forwardRef(
665
757
  ...rest,
666
758
  children: /* @__PURE__ */ jsx(PagePanelInner, { style, open, children })
667
759
  }
668
- ) });
760
+ ) }) });
761
+ }),
762
+ {
763
+ /**
764
+ * Header component for the panel that stays pinned to the top of the panel's scrollable area.
765
+ *
766
+ * Features:
767
+ * - Sticky positioning at the top of the panel's scrollable content
768
+ * - Proper semantic HTML structure
769
+ * - Consistent padding and styling with the design system
770
+ * - Supports all standard header element props
771
+ *
772
+ * @example
773
+ * <Page.Panel.Header>
774
+ * <Text variant="headline" el="h3">Panel Title</Text>
775
+ * </Page.Panel.Header>
776
+ */
777
+ Header: PagePanelHeader,
778
+ /**
779
+ * Content container for the panel that holds the main scrollable content area.
780
+ *
781
+ * Features:
782
+ * - Grows to fill the space between the panel's header and footer
783
+ * - Scrolls independently of the header and footer once content overflows
784
+ * - Optional sticky positioning below the header, for a second sticky region (e.g. a filter bar)
785
+ * - Proper semantic HTML structure
786
+ * - Consistent padding and styling with the design system
787
+ * - Supports all standard div element props
788
+ *
789
+ * @example
790
+ * <Page.Panel.Content>
791
+ * <Text>Panel content goes here</Text>
792
+ * </Page.Panel.Content>
793
+ *
794
+ * @example
795
+ * // A second, sticky Content region acting as a sub-header below Page.Panel.Header
796
+ * <Page.Panel.Content sticky>
797
+ * <TextField placeholder="Filter results..." />
798
+ * </Page.Panel.Content>
799
+ * <Page.Panel.Content>
800
+ * <Text>Scrollable results</Text>
801
+ * </Page.Panel.Content>
802
+ */
803
+ Content: PagePanelContent,
804
+ /**
805
+ * Footer component for the panel that displays action buttons and controls.
806
+ *
807
+ * Features:
808
+ * - Flex layout that right-aligns action buttons and wraps on overflow
809
+ * - Optional sticky positioning at the bottom of the panel
810
+ * - Proper semantic HTML structure
811
+ * - Consistent padding and styling with the design system
812
+ * - Supports all standard footer element props
813
+ *
814
+ * @example
815
+ * <Page.Panel.Footer sticky>
816
+ * <Button appearance="primary" onClick={handleSave}>Save</Button>
817
+ * </Page.Panel.Footer>
818
+ */
819
+ Footer: PagePanelFooter
669
820
  }
670
821
  );
671
822
  PagePanel.displayName = "PagePanel";
@@ -837,11 +988,20 @@ const Page = Object.assign(
837
988
  * - Automatic mobile dialog conversion
838
989
  * - Keyboard navigation and accessibility support
839
990
  * - Smooth animations and transitions
991
+ * - Compound component structure with Header, Content, and Footer
992
+ * - Sticky header and optional sticky footer around a scrollable content area
840
993
  *
841
994
  * @example
842
995
  * <Page.Panel open={isOpen} size="medium">
843
- * <Text variant="headline" el="h3">Panel Content</Text>
844
- * <Button onClick={() => setIsOpen(false)}>Close</Button>
996
+ * <Page.Panel.Header>
997
+ * <Text variant="headline" el="h3">Panel Title</Text>
998
+ * </Page.Panel.Header>
999
+ * <Page.Panel.Content>
1000
+ * <Text>Panel content</Text>
1001
+ * </Page.Panel.Content>
1002
+ * <Page.Panel.Footer>
1003
+ * <Button onClick={() => setIsOpen(false)}>Close</Button>
1004
+ * </Page.Panel.Footer>
845
1005
  * </Page.Panel>
846
1006
  */
847
1007
  Panel: PagePanel,
@@ -866,4 +1026,4 @@ const Page = Object.assign(
866
1026
  Page.displayName = "Page";
867
1027
 
868
1028
  export { Page as P };
869
- //# sourceMappingURL=Page-B5yLLq76.js.map
1029
+ //# sourceMappingURL=Page-B-Wjr7sP.js.map